@galacean/effects-plugin-gui 2.10.0-alpha.5 → 2.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/controls/base-button.d.ts +2 -3
- package/dist/controls/button.d.ts +2 -3
- package/dist/controls/color-picker.d.ts +3 -4
- package/dist/controls/color-rect.d.ts +2 -3
- package/dist/controls/label.d.ts +2 -3
- package/dist/controls/line-edit.d.ts +2 -3
- package/dist/controls/menu-button.d.ts +3 -4
- package/dist/controls/nine-patch-rect.d.ts +2 -3
- package/dist/controls/popup-menu.d.ts +2 -3
- package/dist/controls/progress-bar.d.ts +2 -3
- package/dist/controls/slider.d.ts +2 -3
- package/dist/controls/text-edit.d.ts +2 -3
- package/dist/controls/texture-rect.d.ts +2 -3
- package/dist/core/control.d.ts +2 -3
- package/dist/core/index.d.ts +0 -1
- package/dist/core/theme.d.ts +3 -4
- package/dist/index.d.ts +0 -1
- package/dist/index.js +5 -5
- package/dist/index.js.map +1 -1
- package/dist/index.min.js +2 -2
- package/dist/index.min.js.map +1 -1
- package/dist/index.mjs +5 -5
- package/dist/index.mjs.map +1 -1
- package/dist/layout/aspect-ratio-container.d.ts +2 -2
- package/dist/layout/box-container.d.ts +2 -3
- package/dist/layout/center-container.d.ts +2 -2
- package/dist/layout/grid-container.d.ts +2 -2
- package/dist/scroll/range.d.ts +2 -3
- package/dist/scroll/scroll-bar.d.ts +2 -3
- package/dist/scroll/scroll-container.d.ts +2 -3
- package/package.json +2 -2
- package/dist/core/data.d.ts +0 -88
- package/dist/data.d.ts +0 -147
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":["../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_set_prototype_of.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_inherits.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_is_native_reflect_construct.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_construct.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_get_prototype_of.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_is_native_function.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_wrap_native_super.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_assert_this_initialized.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_create_class.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_instanceof.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_array_like_to_array.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_unsupported_iterable_to_array.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_create_for_of_iterator_helper_loose.js","../src/core/enums.ts","../../../node_modules/.pnpm/tslib@2.8.1/node_modules/tslib/tslib.es6.mjs","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_extends.js","../src/core/theme.ts","../src/core/control.ts","../src/core/roots.ts","../src/components/gui-window-component.ts","../src/components/ui-canvas.ts","../src/plugin/gui-plugin.ts","../src/components/ui-control.ts","../src/layout/enums.ts","../src/layout/utils.ts","../src/layout/box-container.ts","../src/layout/grid-container.ts","../src/layout/margin-container.ts","../src/layout/center-container.ts","../src/layout/aspect-ratio-container.ts","../src/layout/panel-container.ts","../src/layout/separator.ts","../src/scroll/enums.ts","../src/scroll/range.ts","../src/scroll/scroll-bar.ts","../src/scroll/scroll-container.ts","../src/theme/default-theme.ts","../src/controls/enums.ts","../src/controls/label.ts","../src/controls/texture-rect.ts","../src/controls/nine-patch-rect.ts","../src/controls/color-rect.ts","../src/controls/panel.ts","../src/controls/base-button.ts","../src/controls/button.ts","../src/controls/checkbox.ts","../src/controls/check-button.ts","../src/controls/slider.ts","../src/controls/progress-bar.ts","../src/controls/text-input.ts","../src/controls/line-edit.ts","../src/controls/text-edit.ts","../src/controls/popup.ts","../src/controls/popup-menu.ts","../src/controls/menu-button.ts","../src/controls/color-picker.ts","../src/index.ts"],"sourcesContent":["function _set_prototype_of(o, p) {\n _set_prototype_of = Object.setPrototypeOf || function setPrototypeOf(o, p) {\n o.__proto__ = p;\n\n return o;\n };\n\n return _set_prototype_of(o, p);\n}\nexport { _set_prototype_of as _ };\n","import { _ as _set_prototype_of } from \"./_set_prototype_of.js\";\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } });\n\n if (superClass) _set_prototype_of(subClass, superClass);\n}\nexport { _inherits as _ };\n","function _is_native_reflect_construct() {\n // Since Reflect.construct can't be properly polyfilled, some\n // implementations (e.g. core-js@2) don't set the correct internal slots.\n // Those polyfills don't allow us to subclass built-ins, so we need to\n // use our fallback implementation.\n try {\n // If the internal slots aren't set, this throws an error similar to\n // TypeError: this is not a Boolean object.\n var result = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {}));\n } catch (_) {}\n return (_is_native_reflect_construct = function() {\n return !!result;\n })();\n}\n\nexport { _is_native_reflect_construct as _ };\n","import { _ as _is_native_reflect_construct } from \"./_is_native_reflect_construct.js\";\nimport { _ as _set_prototype_of } from \"./_set_prototype_of.js\";\nfunction _construct(Parent, args, Class) {\n if (_is_native_reflect_construct()) _construct = Reflect.construct;\n else {\n _construct = function construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n\n if (Class) _set_prototype_of(instance, Class.prototype);\n\n return instance;\n };\n }\n\n return _construct.apply(null, arguments);\n}\nexport { _construct as _ };\n","function _get_prototype_of(o) {\n _get_prototype_of = Object.setPrototypeOf ? Object.getPrototypeOf : function getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n\n return _get_prototype_of(o);\n}\nexport { _get_prototype_of as _ };\n","function _is_native_function(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}\nexport { _is_native_function as _ };\n","import { _ as _construct } from \"./_construct.js\";\nimport { _ as _get_prototype_of } from \"./_get_prototype_of.js\";\nimport { _ as _is_native_function } from \"./_is_native_function.js\";\nimport { _ as _set_prototype_of } from \"./_set_prototype_of.js\";\n\nfunction _wrap_native_super(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n _wrap_native_super = function(Class) {\n if (Class === null || !_is_native_function(Class)) return Class;\n if (typeof Class !== \"function\") throw new TypeError(\"Super expression must either be null or a function\");\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n _cache.set(Class, Wrapper);\n }\n\n function Wrapper() {\n return _construct(Class, arguments, _get_prototype_of(this).constructor);\n }\n Wrapper.prototype = Object.create(Class.prototype, { constructor: { value: Wrapper, enumerable: false, writable: true, configurable: true } });\n\n return _set_prototype_of(Wrapper, Class);\n };\n\n return _wrap_native_super(Class);\n}\nexport { _wrap_native_super as _ };\n","function _assert_this_initialized(self) {\n if (self === void 0) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n\n return self;\n}\nexport { _assert_this_initialized as _ };\n","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n\n if (\"value\" in descriptor) descriptor.writable = true;\n\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nfunction _create_class(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n\n return Constructor;\n}\nexport { _create_class as _ };\n","function _instanceof(left, right) {\n if (right != null && typeof Symbol !== \"undefined\" && right[Symbol.hasInstance]) {\n return !!right[Symbol.hasInstance](left);\n } else return left instanceof right;\n}\nexport { _instanceof as _ };\n","function _array_like_to_array(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n}\nexport { _array_like_to_array as _ };\n","import { _ as _array_like_to_array } from \"./_array_like_to_array.js\";\n\nfunction _unsupported_iterable_to_array(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _array_like_to_array(o, minLen);\n\n var n = Object.prototype.toString.call(o).slice(8, -1);\n\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(n);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);\n}\nexport { _unsupported_iterable_to_array as _ };\n","import { _ as _unsupported_iterable_to_array } from \"./_unsupported_iterable_to_array.js\";\n\nfunction _create_for_of_iterator_helper_loose(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n\n if (it) return (it = it.call(o)).next.bind(it);\n // Fallback for engines without symbol support\n if (Array.isArray(o) || (it = _unsupported_iterable_to_array(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n\n var i = 0;\n\n return function() {\n if (i >= o.length) return { done: true };\n\n return { done: false, value: o[i++] };\n };\n }\n\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nexport { _create_for_of_iterator_helper_loose as _ };\n","export enum MouseFilter {\n Stop,\n Pass,\n Ignore,\n}\n\nexport enum MouseBehaviorRecursive {\n Inherited,\n Disabled,\n Enabled,\n}\n\nexport enum FocusMode {\n None,\n Click,\n All,\n Accessibility,\n}\n\nexport enum FocusBehaviorRecursive {\n Inherited,\n Disabled,\n Enabled,\n}\n\nexport enum CursorShape {\n Arrow,\n Ibeam,\n PointingHand,\n Cross,\n Wait,\n Busy,\n Drag,\n CanDrop,\n Forbidden,\n Vsize,\n Hsize,\n Bdiagsize,\n Fdiagsize,\n Move,\n Vsplit,\n Hsplit,\n Help,\n}\n\n/** A preset cursor shape or a complete CSS cursor value. */\nexport type CursorStyle = CursorShape | string;\n","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nvar ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n var r, s = 0;\n function next() {\n while (r = env.stack.pop()) {\n try {\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n if (r.dispose) {\n var result = r.dispose.call(r.value);\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n else s |= 1;\n }\n catch (e) {\n fail(e);\n }\n }\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\n });\n }\n return path;\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __esDecorate,\n __runInitializers,\n __propKey,\n __setFunctionName,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n __rewriteRelativeImportExtension,\n};\n","function _extends() {\n _extends = Object.assign || function assign(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) if (Object.prototype.hasOwnProperty.call(source, key)) target[key] = source[key];\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\nexport { _extends as _ };\n","import { EventEmitter, math } from '@galacean/effects';\nimport type {\n Engine,\n EventEmitterListener,\n FontStyle,\n FontWeight,\n Graphics,\n Texture,\n} from '@galacean/effects';\nimport type {\n StyleBoxData,\n StyleBoxMarginsData,\n ThemeData,\n ThemeFontData,\n ThemeItemCollectionData,\n} from './data';\n\ntype Color = math.Color;\ntype Vector2 = math.Vector2;\nconst Color = math.Color;\nconst Vector2 = math.Vector2;\n\nexport enum ThemeItemType {\n Color = 'color',\n Constant = 'constant',\n Font = 'font',\n FontSize = 'fontSize',\n Icon = 'icon',\n StyleBox = 'styleBox',\n}\n\nexport interface ThemeFont {\n family: string,\n weight: FontWeight,\n style: FontStyle,\n}\n\nexport interface StyleBoxMargins {\n left: number,\n top: number,\n right: number,\n bottom: number,\n}\n\nexport interface StyleBoxRect {\n x: number,\n y: number,\n width: number,\n height: number,\n}\n\nexport enum PatchStretchMode {\n Stretch,\n Tile,\n TileFit,\n}\n\nexport type ThemeValue = Color | number | ThemeFont | Texture | StyleBox | null;\n\nexport interface ThemeItemDefinition<T extends ThemeValue = ThemeValue> {\n type: ThemeItemType,\n defaultValue: T,\n affectsLayout?: boolean,\n}\n\nexport type ThemeItemDefinitions = Record<string, ThemeItemDefinition>;\n\ntype StyleBoxEvent = { changed: [styleBox: StyleBox] };\ntype ThemeEvent = { changed: [theme: Theme, affectsLayout: boolean] };\ntype RegisteredThemeType = { baseType: string | null, definitions: ThemeItemDefinitions };\n\nconst ZERO_MARGINS: StyleBoxMargins = { left: 0, top: 0, right: 0, bottom: 0 };\n\nfunction cloneMargins (value: StyleBoxMargins): StyleBoxMargins {\n return { left: value.left, top: value.top, right: value.right, bottom: value.bottom };\n}\n\nfunction marginsFromData (data?: StyleBoxMarginsData): StyleBoxMargins {\n return {\n left: data?.left ?? 0,\n top: data?.top ?? 0,\n right: data?.right ?? 0,\n bottom: data?.bottom ?? 0,\n };\n}\n\nfunction finite (name: string, value: number): number {\n if (!Number.isFinite(value)) {\n throw new RangeError(`${name} must be finite.`);\n }\n\n return value;\n}\n\nfunction nonNegative (name: string, value: number): number {\n return Math.max(0, finite(name, value));\n}\n\nfunction cloneFont (value: ThemeFont): ThemeFont {\n return { family: value.family, weight: value.weight, style: value.style };\n}\n\nfunction fontFromData (value: ThemeFontData): ThemeFont {\n return { family: value.family, weight: value.weight ?? 'normal', style: value.style ?? 'normal' };\n}\n\nexport function cloneThemeValue<T extends ThemeValue> (value: T): T {\n if (value instanceof Color) {\n return value.clone() as T;\n }\n if (value && typeof value === 'object' && 'family' in value && 'weight' in value && 'style' in value) {\n return cloneFont(value) as T;\n }\n\n return value;\n}\n\n/** Drawable box resource used for rendering and content measurement. */\nexport abstract class StyleBox {\n private readonly eventEmitter = new EventEmitter<StyleBoxEvent>();\n private contentMargins = cloneMargins(ZERO_MARGINS);\n private readOnly = false;\n\n on (eventName: 'changed', listener: EventEmitterListener<StyleBoxEvent['changed']>): void {\n this.eventEmitter.on(eventName, listener);\n }\n\n off (eventName: 'changed', listener: EventEmitterListener<StyleBoxEvent['changed']>): void {\n this.eventEmitter.off(eventName, listener);\n }\n\n getContentMargins (): StyleBoxMargins { return cloneMargins(this.contentMargins); }\n\n get isReadOnly (): boolean { return this.readOnly; }\n\n /** @internal Makes a native fallback StyleBox immutable. */\n makeReadOnly (): this {\n this.readOnly = true;\n\n return this;\n }\n\n setContentMargins (left: number, top: number, right: number, bottom: number): void {\n this.assertMutable();\n const next = {\n left: nonNegative('StyleBox left content margin', left),\n top: nonNegative('StyleBox top content margin', top),\n right: nonNegative('StyleBox right content margin', right),\n bottom: nonNegative('StyleBox bottom content margin', bottom),\n };\n\n if (Object.keys(next).some(key => next[key as keyof StyleBoxMargins] !== this.contentMargins[key as keyof StyleBoxMargins])) {\n this.contentMargins = next;\n this.notifyChanged();\n }\n }\n\n getMinimumSize (): Vector2 {\n return new Vector2(\n this.contentMargins.left + this.contentMargins.right,\n this.contentMargins.top + this.contentMargins.bottom,\n );\n }\n\n abstract draw (graphics: Graphics, rect: StyleBoxRect): void;\n\n protected notifyChanged (): void { this.eventEmitter.emit('changed', this); }\n protected assertMutable (): void {\n if (this.readOnly) {throw new Error('Native fallback StyleBoxes are read-only.');}\n }\n}\n\nexport class StyleBoxEmpty extends StyleBox {\n static readonly shared = new StyleBoxEmpty().makeReadOnly();\n override draw (): void {}\n}\n\nexport class StyleBoxFlat extends StyleBox {\n private backgroundColor = Color.CLEAR.clone();\n private borderColor = Color.CLEAR.clone();\n private borderWidths = cloneMargins(ZERO_MARGINS);\n private cornerRadii = cloneMargins(ZERO_MARGINS);\n\n getBackgroundColor (): Color { return this.backgroundColor.clone(); }\n getBorderColor (): Color { return this.borderColor.clone(); }\n getBorderWidths (): StyleBoxMargins { return cloneMargins(this.borderWidths); }\n getCornerRadii (): StyleBoxMargins { return cloneMargins(this.cornerRadii); }\n\n setBackgroundColor (value: Color): void {\n this.assertMutable();\n if (!this.backgroundColor.equals(value)) {\n this.backgroundColor.copyFrom(value);\n this.notifyChanged();\n }\n }\n\n setBorderColor (value: Color): void {\n this.assertMutable();\n if (!this.borderColor.equals(value)) {\n this.borderColor.copyFrom(value);\n this.notifyChanged();\n }\n }\n\n setBorderWidths (left: number, top: number, right: number, bottom: number): void {\n this.assertMutable();\n const next = {\n left: nonNegative('StyleBoxFlat left border width', left),\n top: nonNegative('StyleBoxFlat top border width', top),\n right: nonNegative('StyleBoxFlat right border width', right),\n bottom: nonNegative('StyleBoxFlat bottom border width', bottom),\n };\n\n if (Object.keys(next).some(key => next[key as keyof StyleBoxMargins] !== this.borderWidths[key as keyof StyleBoxMargins])) {\n this.borderWidths = next;\n this.notifyChanged();\n }\n }\n\n setCornerRadii (topLeft: number, topRight: number, bottomRight: number, bottomLeft: number): void {\n this.assertMutable();\n const next = {\n left: nonNegative('StyleBoxFlat top-left corner radius', topLeft),\n top: nonNegative('StyleBoxFlat top-right corner radius', topRight),\n right: nonNegative('StyleBoxFlat bottom-right corner radius', bottomRight),\n bottom: nonNegative('StyleBoxFlat bottom-left corner radius', bottomLeft),\n };\n\n if (Object.keys(next).some(key => next[key as keyof StyleBoxMargins] !== this.cornerRadii[key as keyof StyleBoxMargins])) {\n this.cornerRadii = next;\n this.notifyChanged();\n }\n }\n\n override draw (graphics: Graphics, rect: StyleBoxRect): void {\n if (rect.width <= 0 || rect.height <= 0) {\n return;\n }\n if (this.hasRoundedCorners()) {\n this.drawRounded(graphics, rect);\n\n return;\n }\n graphics.fillRectangle(rect.x, rect.y, rect.width, rect.height, this.backgroundColor);\n const border = this.borderWidths;\n\n if (border.top > 0) {graphics.fillRectangle(rect.x, rect.y, rect.width, Math.min(border.top, rect.height), this.borderColor);}\n if (border.bottom > 0) {\n const height = Math.min(border.bottom, rect.height);\n\n graphics.fillRectangle(rect.x, rect.y + rect.height - height, rect.width, height, this.borderColor);\n }\n if (border.left > 0) {graphics.fillRectangle(rect.x, rect.y, Math.min(border.left, rect.width), rect.height, this.borderColor);}\n if (border.right > 0) {\n const width = Math.min(border.right, rect.width);\n\n graphics.fillRectangle(rect.x + rect.width - width, rect.y, width, rect.height, this.borderColor);\n }\n }\n\n private hasRoundedCorners (): boolean {\n const radii = this.cornerRadii;\n\n return radii.left > 0 || radii.top > 0 || radii.right > 0 || radii.bottom > 0;\n }\n\n private drawRounded (graphics: Graphics, rect: StyleBoxRect): void {\n const border = adaptBorderWidths(this.borderWidths, rect.width, rect.height);\n const radii = adaptCornerRadii(this.cornerRadii, border, rect.width, rect.height);\n const hasBorder = border.left > 0 || border.top > 0 || border.right > 0 || border.bottom > 0;\n\n if (!hasBorder) {\n drawRoundedFill(graphics, rect, radii, this.backgroundColor);\n\n return;\n }\n const inner = {\n x: rect.x + border.left,\n y: rect.y + border.top,\n width: Math.max(0, rect.width - border.left - border.right),\n height: Math.max(0, rect.height - border.top - border.bottom),\n };\n\n if (inner.width <= 0 || inner.height <= 0) {\n drawRoundedFill(graphics, rect, radii, this.borderColor);\n\n return;\n }\n const innerRadii = {\n left: Math.max(0, radii.left - Math.min(border.left, border.top)),\n top: Math.max(0, radii.top - Math.min(border.right, border.top)),\n right: Math.max(0, radii.right - Math.min(border.right, border.bottom)),\n bottom: Math.max(0, radii.bottom - Math.min(border.left, border.bottom)),\n };\n\n drawRoundedRing(graphics, rect, radii, inner, innerRadii, this.borderColor);\n drawRoundedFill(graphics, inner, innerRadii, this.backgroundColor);\n }\n}\n\nfunction adaptBorderWidths (border: StyleBoxMargins, width: number, height: number): StyleBoxMargins {\n const adapted = createInfiniteMargins();\n\n adaptMarginPair('top', 'bottom', adapted, border, height, height, height);\n adaptMarginPair('left', 'right', adapted, border, width, width, width);\n\n return adapted;\n}\n\nfunction adaptCornerRadii (\n radii: StyleBoxMargins,\n border: StyleBoxMargins,\n width: number,\n height: number,\n): StyleBoxMargins {\n const adapted = createInfiniteMargins();\n\n adaptMarginPair('top', 'right', adapted, radii, height, height - border.bottom, height - border.top);\n adaptMarginPair('left', 'bottom', adapted, radii, height, height - border.bottom, height - border.top);\n adaptMarginPair('left', 'top', adapted, radii, width, width - border.right, width - border.left);\n adaptMarginPair('bottom', 'right', adapted, radii, width, width - border.right, width - border.left);\n\n return adapted;\n}\n\nfunction adaptMarginPair (\n first: keyof StyleBoxMargins,\n second: keyof StyleBoxMargins,\n adapted: StyleBoxMargins,\n source: StyleBoxMargins,\n available: number,\n firstMaximum: number,\n secondMaximum: number,\n): void {\n const sum = source[first] + source[second];\n const factor = sum > 0 ? Math.min(1, available / sum) : 1;\n\n adapted[first] = Math.min(source[first] * factor, firstMaximum, adapted[first]);\n adapted[second] = Math.min(source[second] * factor, secondMaximum, adapted[second]);\n}\n\nfunction createInfiniteMargins (): StyleBoxMargins {\n return {\n left: Number.POSITIVE_INFINITY,\n top: Number.POSITIVE_INFINITY,\n right: Number.POSITIVE_INFINITY,\n bottom: Number.POSITIVE_INFINITY,\n };\n}\n\nfunction drawRoundedFill (\n graphics: Graphics,\n rect: StyleBoxRect,\n radii: StyleBoxMargins,\n color: Color,\n): void {\n const points = getRoundedPoints(rect, radii);\n const centerX = rect.x + rect.width * 0.5;\n const centerY = rect.y + rect.height * 0.5;\n\n for (let index = 0; index < points.length; index++) {\n const current = points[index];\n const next = points[(index + 1) % points.length];\n\n graphics.fillTriangle(centerX, centerY, current[0], current[1], next[0], next[1], color);\n }\n}\n\nfunction drawRoundedRing (\n graphics: Graphics,\n outerRect: StyleBoxRect,\n outerRadii: StyleBoxMargins,\n innerRect: StyleBoxRect,\n innerRadii: StyleBoxMargins,\n color: Color,\n): void {\n const outer = getRoundedPoints(outerRect, outerRadii);\n const inner = getRoundedPoints(innerRect, innerRadii);\n\n for (let index = 0; index < outer.length; index++) {\n const next = (index + 1) % outer.length;\n\n graphics.fillTriangle(\n outer[index][0], outer[index][1], outer[next][0], outer[next][1],\n inner[index][0], inner[index][1], color,\n );\n graphics.fillTriangle(\n outer[next][0], outer[next][1], inner[next][0], inner[next][1],\n inner[index][0], inner[index][1], color,\n );\n }\n}\n\nfunction getRoundedPoints (rect: StyleBoxRect, radii: StyleBoxMargins): Array<[number, number]> {\n const points: Array<[number, number]> = [];\n const segments = 5;\n const corners: Array<[number, number, number, number]> = [\n [rect.x + radii.left, rect.y + radii.left, radii.left, Math.PI],\n [rect.x + rect.width - radii.top, rect.y + radii.top, radii.top, Math.PI * 1.5],\n [rect.x + rect.width - radii.right, rect.y + rect.height - radii.right, radii.right, 0],\n [rect.x + radii.bottom, rect.y + rect.height - radii.bottom, radii.bottom, Math.PI * 0.5],\n ];\n\n for (const [cx, cy, radius, start] of corners) {\n for (let index = 0; index <= segments; index++) {\n const angle = start + index / segments * Math.PI * 0.5;\n\n points.push([cx + Math.cos(angle) * radius, cy + Math.sin(angle) * radius]);\n }\n }\n\n return points;\n}\n\nexport class StyleBoxTexture extends StyleBox {\n private _texture: Texture | null = null;\n private sourceRect: StyleBoxRect | null = null;\n private patchMargins = cloneMargins(ZERO_MARGINS);\n private tint = Color.WHITE.clone();\n private _horizontalAxisStretchMode = PatchStretchMode.Stretch;\n private _verticalAxisStretchMode = PatchStretchMode.Stretch;\n private _drawCenter = true;\n\n get texture (): Texture | null { return this._texture; }\n set texture (value: Texture | null) {\n this.assertMutable();\n if (this._texture !== value) {\n this._texture = value;\n this.notifyChanged();\n }\n }\n\n get horizontalAxisStretchMode (): PatchStretchMode { return this._horizontalAxisStretchMode; }\n set horizontalAxisStretchMode (value: PatchStretchMode) {\n this.assertMutable();\n if (this._horizontalAxisStretchMode !== value) {\n this._horizontalAxisStretchMode = value;\n this.notifyChanged();\n }\n }\n\n get verticalAxisStretchMode (): PatchStretchMode { return this._verticalAxisStretchMode; }\n set verticalAxisStretchMode (value: PatchStretchMode) {\n this.assertMutable();\n if (this._verticalAxisStretchMode !== value) {\n this._verticalAxisStretchMode = value;\n this.notifyChanged();\n }\n }\n\n get drawCenter (): boolean { return this._drawCenter; }\n set drawCenter (value: boolean) {\n this.assertMutable();\n if (this._drawCenter !== value) {\n this._drawCenter = value;\n this.notifyChanged();\n }\n }\n\n getSourceRect (): StyleBoxRect | null { return this.sourceRect ? { ...this.sourceRect } : null; }\n getPatchMargins (): StyleBoxMargins { return cloneMargins(this.patchMargins); }\n getTint (): Color { return this.tint.clone(); }\n\n setSourceRect (x: number, y: number, width: number, height: number): void {\n this.assertMutable();\n this.sourceRect = {\n x: finite('StyleBoxTexture source x', x),\n y: finite('StyleBoxTexture source y', y),\n width: nonNegative('StyleBoxTexture source width', width),\n height: nonNegative('StyleBoxTexture source height', height),\n };\n this.notifyChanged();\n }\n\n clearSourceRect (): void {\n this.assertMutable();\n if (this.sourceRect) {\n this.sourceRect = null;\n this.notifyChanged();\n }\n }\n\n setPatchMargins (left: number, top: number, right: number, bottom: number): void {\n this.assertMutable();\n this.patchMargins = {\n left: nonNegative('StyleBoxTexture left patch margin', left),\n top: nonNegative('StyleBoxTexture top patch margin', top),\n right: nonNegative('StyleBoxTexture right patch margin', right),\n bottom: nonNegative('StyleBoxTexture bottom patch margin', bottom),\n };\n this.notifyChanged();\n }\n\n setTint (value: Color): void {\n this.assertMutable();\n if (!this.tint.equals(value)) {\n this.tint.copyFrom(value);\n this.notifyChanged();\n }\n }\n\n override draw (graphics: Graphics, rect: StyleBoxRect): void {\n const texture = this.texture;\n\n if (!texture || rect.width <= 0 || rect.height <= 0) {return;}\n const source = this.sourceRect ?? { x: 0, y: 0, width: texture.width, height: texture.height };\n\n graphics.drawNinePatch(rect.x, rect.y, rect.width, rect.height, texture, {\n sourceX: source.x,\n sourceY: source.y,\n sourceWidth: source.width,\n sourceHeight: source.height,\n marginLeft: this.patchMargins.left,\n marginTop: this.patchMargins.top,\n marginRight: this.patchMargins.right,\n marginBottom: this.patchMargins.bottom,\n horizontalMode: this.horizontalAxisStretchMode,\n verticalMode: this.verticalAxisStretchMode,\n drawCenter: this.drawCenter,\n }, this.tint);\n }\n}\n\n/** Registry for stable control type inheritance and immutable native defaults. */\nexport class ThemeRegistry {\n private static readonly types = new Map<string, RegisteredThemeType>();\n\n static registerType (type: string, baseType: string | null, definitions: ThemeItemDefinitions = {}): void {\n if (!type) {throw new Error('Theme type names cannot be empty.');}\n if (baseType === type) {throw new Error(`Theme type ${type} cannot inherit itself.`);}\n if (baseType && !this.types.has(baseType)) {throw new Error(`Unknown base theme type: ${baseType}.`);}\n if (baseType && this.getTypeChain(baseType).includes(type)) {\n throw new Error(`Theme type inheritance cycle detected at ${type}.`);\n }\n const previous = this.types.get(type);\n\n if (previous && previous.baseType !== baseType) {\n throw new Error(`Theme type ${type} is already registered with base ${previous.baseType ?? '<none>'}.`);\n }\n const storedDefinitions: ThemeItemDefinitions = { ...(previous?.definitions ?? {}) };\n\n for (const name of Object.keys(definitions)) {\n if (storedDefinitions[name]) {\n throw new Error(`Theme item ${type}.${name} is already registered.`);\n }\n const definition = definitions[name];\n const defaultValue = cloneThemeValue(definition.defaultValue);\n\n if (defaultValue instanceof StyleBox) {defaultValue.makeReadOnly();}\n storedDefinitions[name] = { ...definition, defaultValue };\n }\n this.types.set(type, { baseType, definitions: storedDefinitions });\n }\n\n static hasType (type: string): boolean { return this.types.has(type); }\n\n static getTypeChain (type: string): string[] {\n const result: string[] = [];\n const visited = new Set<string>();\n let current: string | null = type;\n\n while (current && !visited.has(current)) {\n result.push(current);\n visited.add(current);\n current = this.types.get(current)?.baseType ?? null;\n }\n\n return result;\n }\n\n static getDefault (type: string, itemType: ThemeItemType, name: string): ThemeValue | undefined {\n const definition = this.types.get(type)?.definitions[name];\n\n return definition?.type === itemType ? cloneThemeValue(definition.defaultValue) : undefined;\n }\n\n static getItemDefinition (type: string, itemType: ThemeItemType, name: string): ThemeItemDefinition | undefined {\n for (const dependency of this.getTypeChain(type)) {\n const definition = this.types.get(dependency)?.definitions[name];\n\n if (definition?.type === itemType) {return definition;}\n }\n\n return undefined;\n }\n\n static affectsLayout (type: string, itemType: ThemeItemType, name: string): boolean {\n const definition = this.getItemDefinition(type, itemType, name);\n\n if (definition) {return definition.affectsLayout ?? false;}\n\n return itemType === ThemeItemType.Constant\n || itemType === ThemeItemType.Font\n || itemType === ThemeItemType.FontSize\n || itemType === ThemeItemType.StyleBox;\n }\n\n static getItemDefinitions (type: string, includeInherited = true): ThemeItemDefinitions {\n const result: ThemeItemDefinitions = {};\n const chain = includeInherited ? this.getTypeChain(type).reverse() : [type];\n\n for (const dependency of chain) {\n const definitions = this.types.get(dependency)?.definitions ?? {};\n\n for (const name of Object.keys(definitions)) {\n const definition = definitions[name];\n\n result[name] = { ...definition, defaultValue: cloneThemeValue(definition.defaultValue) };\n }\n }\n\n return result;\n }\n}\n\nexport class Theme {\n private readonly eventEmitter = new EventEmitter<ThemeEvent>();\n private readonly values = new Map<string, Map<ThemeItemType, Map<string, ThemeValue>>>();\n private readonly variations = new Map<string, string>();\n private readonly styleBoxReferences = new Map<StyleBox, number>();\n private batchDepth = 0;\n private changePending = false;\n private layoutChangePending = false;\n private readonly styleBoxChanged = () => this.notifyChanged(true);\n\n on (eventName: 'changed', listener: EventEmitterListener<ThemeEvent['changed']>): void {\n this.eventEmitter.on(eventName, listener);\n }\n\n off (eventName: 'changed', listener: EventEmitterListener<ThemeEvent['changed']>): void {\n this.eventEmitter.off(eventName, listener);\n }\n\n batch<T> (callback: () => T): T {\n this.batchDepth++;\n try {\n return callback();\n } finally {\n this.batchDepth--;\n if (this.batchDepth === 0 && this.changePending) {\n this.changePending = false;\n const affectsLayout = this.layoutChangePending;\n\n this.layoutChangePending = false;\n this.eventEmitter.emit('changed', this, affectsLayout);\n }\n }\n }\n\n setTypeVariation (variation: string, baseType: string): void {\n if (!variation || !baseType || variation === baseType) {throw new Error('Theme variations require distinct non-empty names.');}\n if (ThemeRegistry.hasType(variation)) {\n throw new Error(`Theme variation ${variation} conflicts with a registered control type.`);\n }\n if (!ThemeRegistry.hasType(baseType) && !this.variations.has(baseType)) {\n throw new Error(`Unknown theme variation base type: ${baseType}.`);\n }\n let current: string | undefined = baseType;\n\n while (current) {\n if (current === variation) {throw new Error(`Theme variation cycle detected at ${variation}.`);}\n current = this.variations.get(current);\n }\n if (this.variations.get(variation) !== baseType) {\n this.variations.set(variation, baseType);\n this.notifyChanged(true);\n }\n }\n\n clearTypeVariation (variation: string): void {\n for (const [dependent, base] of this.variations) {\n if (dependent !== variation && base === variation) {\n throw new Error(`Theme variation ${variation} is still used by ${dependent}.`);\n }\n }\n if (this.variations.delete(variation)) {this.notifyChanged(true);}\n }\n\n hasTypeVariation (variation: string): boolean { return this.variations.has(variation); }\n getTypeVariationBase (variation: string): string | undefined { return this.variations.get(variation); }\n\n getTypeDependencies (variation: string): string[] {\n const result: string[] = [];\n const visited = new Set<string>();\n let current = variation;\n\n while (!visited.has(current)) {\n result.push(current);\n visited.add(current);\n const base = this.variations.get(current);\n\n if (!base) {\n result.push(...ThemeRegistry.getTypeChain(current).slice(1));\n\n return result;\n }\n current = base;\n }\n\n throw new Error(`Theme variation cycle detected at ${variation}.`);\n }\n\n setColor (type: string, name: string, value: Color): void { this.setItem(type, ThemeItemType.Color, name, value); }\n getColor (type: string, name: string): Color | undefined { return this.getItem(type, ThemeItemType.Color, name) as Color | undefined; }\n hasColor (type: string, name: string): boolean { return this.hasItem(type, ThemeItemType.Color, name); }\n clearColor (type: string, name: string): void { this.clearItem(type, ThemeItemType.Color, name); }\n setConstant (type: string, name: string, value: number): void { this.setItem(type, ThemeItemType.Constant, name, finite(name, value)); }\n getConstant (type: string, name: string): number | undefined { return this.getItem(type, ThemeItemType.Constant, name) as number | undefined; }\n hasConstant (type: string, name: string): boolean { return this.hasItem(type, ThemeItemType.Constant, name); }\n clearConstant (type: string, name: string): void { this.clearItem(type, ThemeItemType.Constant, name); }\n setFont (type: string, name: string, value: ThemeFont): void { this.setItem(type, ThemeItemType.Font, name, value); }\n getFont (type: string, name: string): ThemeFont | undefined { return this.getItem(type, ThemeItemType.Font, name) as ThemeFont | undefined; }\n hasFont (type: string, name: string): boolean { return this.hasItem(type, ThemeItemType.Font, name); }\n clearFont (type: string, name: string): void { this.clearItem(type, ThemeItemType.Font, name); }\n setFontSize (type: string, name: string, value: number): void {\n if (!Number.isFinite(value) || value <= 0) {throw new RangeError(`${name} must be a positive finite font size.`);}\n this.setItem(type, ThemeItemType.FontSize, name, value);\n }\n getFontSize (type: string, name: string): number | undefined { return this.getItem(type, ThemeItemType.FontSize, name) as number | undefined; }\n hasFontSize (type: string, name: string): boolean { return this.hasItem(type, ThemeItemType.FontSize, name); }\n clearFontSize (type: string, name: string): void { this.clearItem(type, ThemeItemType.FontSize, name); }\n setIcon (type: string, name: string, value: Texture | null): void { this.setItem(type, ThemeItemType.Icon, name, value); }\n getIcon (type: string, name: string): Texture | null | undefined { return this.getItem(type, ThemeItemType.Icon, name) as Texture | null | undefined; }\n hasIcon (type: string, name: string): boolean { return this.hasItem(type, ThemeItemType.Icon, name); }\n clearIcon (type: string, name: string): void { this.clearItem(type, ThemeItemType.Icon, name); }\n setStyleBox (type: string, name: string, value: StyleBox): void { this.setItem(type, ThemeItemType.StyleBox, name, value); }\n getStyleBox (type: string, name: string): StyleBox | undefined { return this.getItem(type, ThemeItemType.StyleBox, name) as StyleBox | undefined; }\n hasStyleBox (type: string, name: string): boolean { return this.hasItem(type, ThemeItemType.StyleBox, name); }\n clearStyleBox (type: string, name: string): void { this.clearItem(type, ThemeItemType.StyleBox, name); }\n\n hasItem (type: string, itemType: ThemeItemType, name: string): boolean {\n return this.values.get(type)?.get(itemType)?.has(name) ?? false;\n }\n\n getItem (type: string, itemType: ThemeItemType, name: string): ThemeValue | undefined {\n const value = this.values.get(type)?.get(itemType)?.get(name);\n\n return value === undefined ? undefined : cloneThemeValue(value);\n }\n\n clearItem (type: string, itemType: ThemeItemType, name: string): void {\n const categories = this.values.get(type);\n const items = categories?.get(itemType);\n const previous = items?.get(name);\n\n if (!items?.delete(name)) {return;}\n if (items.size === 0) {categories?.delete(itemType);}\n if (categories?.size === 0) {this.values.delete(type);}\n if (previous instanceof StyleBox) {this.releaseStyleBox(previous);}\n this.notifyChanged(this.affectsLayout(type, itemType, name));\n }\n\n clear (): void {\n if (this.values.size === 0 && this.variations.size === 0) {return;}\n for (const styleBox of this.styleBoxReferences.keys()) {\n styleBox.off('changed', this.styleBoxChanged);\n }\n this.styleBoxReferences.clear();\n this.values.clear();\n this.variations.clear();\n this.notifyChanged(true);\n }\n\n static fromData (engine: Engine, data: ThemeData): Theme {\n const theme = new Theme();\n\n theme.batch(() => {\n const variations = data.variations ?? {};\n const remaining = new Map<string, string>();\n\n for (const variation of Object.keys(variations)) {remaining.set(variation, variations[variation]);}\n\n while (remaining.size > 0) {\n let progressed = false;\n\n for (const [variation, base] of remaining) {\n if (ThemeRegistry.hasType(base) || theme.hasTypeVariation(base)) {\n theme.setTypeVariation(variation, base);\n remaining.delete(variation);\n progressed = true;\n }\n }\n if (!progressed) {throw new Error('Theme data contains an unknown or cyclic variation.');}\n }\n for (const type of Object.keys(data.types)) {theme.setCollectionFromData(engine, type, data.types[type]);}\n });\n\n return theme;\n }\n\n private setCollectionFromData (engine: Engine, type: string, data: ThemeItemCollectionData): void {\n const colors = data.colors ?? {};\n const constants = data.constants ?? {};\n const fonts = data.fonts ?? {};\n const fontSizes = data.fontSizes ?? {};\n const icons = data.icons ?? {};\n const styleBoxes = data.styleBoxes ?? {};\n\n for (const name of Object.keys(colors)) {\n const value = colors[name];\n\n this.setColor(type, name, new Color(value.r, value.g, value.b, value.a));\n }\n for (const name of Object.keys(constants)) {this.setConstant(type, name, constants[name]);}\n for (const name of Object.keys(fonts)) {this.setFont(type, name, fontFromData(fonts[name]));}\n for (const name of Object.keys(fontSizes)) {this.setFontSize(type, name, fontSizes[name]);}\n for (const name of Object.keys(icons)) {\n const value = icons[name];\n\n this.setIcon(type, name, value ? engine.findObject<Texture>(value) : null);\n }\n for (const name of Object.keys(styleBoxes)) {this.setStyleBox(type, name, styleBoxFromData(engine, styleBoxes[name]));}\n }\n\n private setItem (type: string, itemType: ThemeItemType, name: string, value: ThemeValue): void {\n if (!type || !name) {throw new Error('Theme type and item names cannot be empty.');}\n let categories = this.values.get(type);\n\n if (!categories) {this.values.set(type, categories = new Map());}\n let items = categories.get(itemType);\n\n if (!items) {categories.set(itemType, items = new Map());}\n const previous = items.get(name);\n\n if (previous instanceof StyleBox) {this.releaseStyleBox(previous);}\n const stored = cloneThemeValue(value);\n\n items.set(name, stored);\n if (stored instanceof StyleBox) {this.retainStyleBox(stored);}\n this.notifyChanged(this.affectsLayout(type, itemType, name));\n }\n\n private retainStyleBox (styleBox: StyleBox): void {\n const count = this.styleBoxReferences.get(styleBox) ?? 0;\n\n if (count === 0) {styleBox.on('changed', this.styleBoxChanged);}\n this.styleBoxReferences.set(styleBox, count + 1);\n }\n\n private releaseStyleBox (styleBox: StyleBox): void {\n const count = this.styleBoxReferences.get(styleBox) ?? 0;\n\n if (count <= 1) {\n styleBox.off('changed', this.styleBoxChanged);\n this.styleBoxReferences.delete(styleBox);\n } else {this.styleBoxReferences.set(styleBox, count - 1);}\n }\n\n private notifyChanged (affectsLayout: boolean): void {\n if (this.batchDepth > 0) {\n this.changePending = true;\n this.layoutChangePending ||= affectsLayout;\n } else {this.eventEmitter.emit('changed', this, affectsLayout);}\n }\n\n private affectsLayout (type: string, itemType: ThemeItemType, name: string): boolean {\n for (const dependency of this.getTypeDependencies(type)) {\n const definition = ThemeRegistry.getItemDefinition(dependency, itemType, name);\n\n if (definition) {return definition.affectsLayout ?? false;}\n }\n\n return itemType === ThemeItemType.Constant\n || itemType === ThemeItemType.Font\n || itemType === ThemeItemType.FontSize\n || itemType === ThemeItemType.StyleBox;\n }\n}\n\nexport function styleBoxFromData (engine: Engine, data: StyleBoxData): StyleBox {\n let styleBox: StyleBox;\n\n if (data.type === 'flat') {\n const flat = new StyleBoxFlat();\n\n if (data.backgroundColor) {flat.setBackgroundColor(new Color(data.backgroundColor.r, data.backgroundColor.g, data.backgroundColor.b, data.backgroundColor.a));}\n if (data.borderColor) {flat.setBorderColor(new Color(data.borderColor.r, data.borderColor.g, data.borderColor.b, data.borderColor.a));}\n const border = marginsFromData(data.borderWidths);\n\n flat.setBorderWidths(border.left, border.top, border.right, border.bottom);\n const corners = marginsFromData(data.cornerRadii);\n\n flat.setCornerRadii(corners.left, corners.top, corners.right, corners.bottom);\n styleBox = flat;\n } else if (data.type === 'texture') {\n const texture = new StyleBoxTexture();\n\n texture.texture = data.texture ? engine.findObject<Texture>(data.texture) : null;\n if (data.sourceRect) {texture.setSourceRect(data.sourceRect.position[0], data.sourceRect.position[1], data.sourceRect.size[0], data.sourceRect.size[1]);}\n const patch = marginsFromData(data.patchMargins);\n\n texture.setPatchMargins(patch.left, patch.top, patch.right, patch.bottom);\n texture.horizontalAxisStretchMode = data.horizontalAxisStretchMode ?? PatchStretchMode.Stretch;\n texture.verticalAxisStretchMode = data.verticalAxisStretchMode ?? PatchStretchMode.Stretch;\n texture.drawCenter = data.drawCenter ?? true;\n if (data.tint) {texture.setTint(new Color(data.tint.r, data.tint.g, data.tint.b, data.tint.a));}\n styleBox = texture;\n } else {styleBox = new StyleBoxEmpty();}\n const content = marginsFromData(data.contentMargins);\n\n styleBox.setContentMargins(content.left, content.top, content.right, content.bottom);\n\n return styleBox;\n}\n\nexport const themeFallbacks = {\n color: Color.CLEAR.clone(),\n constant: 0,\n font: { family: 'sans-serif', weight: 'normal', style: 'normal' } as ThemeFont,\n fontSize: 14,\n icon: null as Texture | null,\n styleBox: StyleBoxEmpty.shared,\n};\n","import { math } from '@galacean/effects';\nimport type {\n Engine,\n EventEmitterListener,\n FontStyle,\n FontWeight,\n InputEventKey,\n InputEventMouseButton,\n InputEventMouseMotion,\n InputEventScreenDrag,\n InputEventScreenTouch,\n NinePatchDrawOptions,\n TextMeasurement,\n Texture,\n TextureRegion,\n VFXItem,\n} from '@galacean/effects';\nimport {\n effectsClass,\n EventEmitter,\n} from '@galacean/effects';\nimport type { UIControl } from '../components/ui-control';\nimport type { ControlData, ThemeItemCollectionData } from './data';\nimport type { CursorStyle } from './enums';\nimport {\n CursorShape,\n FocusBehaviorRecursive,\n FocusMode,\n MouseBehaviorRecursive,\n MouseFilter,\n} from './enums';\nimport {\n cloneThemeValue,\n StyleBox,\n styleBoxFromData,\n themeFallbacks,\n ThemeItemType,\n ThemeRegistry,\n} from './theme';\nimport type { Theme, ThemeFont, ThemeValue } from './theme';\n\ntype Color = math.Color;\ntype Matrix3 = math.Matrix3;\ntype Vector2 = math.Vector2;\nconst Color = math.Color;\nconst Matrix3 = math.Matrix3;\nconst Vector2 = math.Vector2;\n\nexport type Rect = {\n position: Vector2,\n size: Vector2,\n};\n\n/** Bit flags that describe how a Control uses space assigned by a Container. */\nexport enum SizeFlags {\n ShrinkBegin = 0,\n Fill = 1,\n Expand = 2,\n ShrinkCenter = 4,\n ShrinkEnd = 8,\n ExpandFill = Fill | Expand,\n}\n\n/** Direction in which a Control grows when a minimum size makes its requested rectangle larger. */\nexport enum GrowDirection {\n Begin,\n End,\n Both,\n}\n\nexport type LayoutPreset =\n | 'topLeft' | 'topRight' | 'bottomLeft' | 'bottomRight'\n | 'centerLeft' | 'centerTop' | 'centerRight' | 'centerBottom'\n | 'center'\n | 'leftWide' | 'topWide' | 'rightWide' | 'bottomWide'\n | 'vcenterWide' | 'hcenterWide'\n | 'fullRect';\n\nexport type ControlEvent = {\n locationChanged: [control: Control],\n sizeChanged: [control: Control],\n parentChanged: [control: Control],\n minimumSizeChanged: [control: Control],\n desiredSizeChanged: [control: Control],\n maximumSizeChanged: [control: Control],\n sizeFlagsChanged: [control: Control],\n visibilityChanged: [control: Control],\n enabledChanged: [control: Control],\n themeChanged: [control: Control, affectsLayout: boolean],\n};\n\ntype ThemeCacheEntry = { found: boolean, value: ThemeValue };\n\nconst enum MeasurementChange {\n Minimum = 1,\n Desired = 2,\n Maximum = 4,\n All = Minimum | Desired | Maximum,\n}\n\nexport type RootControlEvent = ControlEvent & {\n guiFocusChanged: [control: Control | null],\n};\n\nfunction normalizeMeasuredMinimum (value: Vector2): Vector2 {\n if (!Number.isFinite(value.x) || !Number.isFinite(value.y)) {\n throw new RangeError('Control minimum and desired sizes must be finite.');\n }\n\n return new Vector2(Math.max(0, value.x), Math.max(0, value.y));\n}\n\nfunction normalizeMeasuredMaximum (value: Vector2): Vector2 {\n if (!Number.isFinite(value.x) || !Number.isFinite(value.y)) {\n throw new RangeError('Control maximum sizes must be finite.');\n }\n\n return new Vector2(value.x < 0 ? -1 : value.x, value.y < 0 ? -1 : value.y);\n}\n\nfunction combineMaximum (measured: number, custom: number): number {\n if (measured < 0) {\n return custom;\n }\n if (custom < 0) {\n return measured;\n }\n\n return Math.min(measured, custom);\n}\n\nfunction clampToMaximum (value: number, maximum: number): number {\n return maximum < 0 ? value : Math.min(value, maximum);\n}\n\nconst ANCHOR_PRESET_TABLE: Record<LayoutPreset, [number, number, number, number]> = {\n topLeft: [0, 0, 0, 0],\n topRight: [1, 0, 1, 0],\n bottomLeft: [0, 1, 0, 1],\n bottomRight: [1, 1, 1, 1],\n centerLeft: [0, 0.5, 0, 0.5],\n centerTop: [0.5, 0, 0.5, 0],\n centerRight: [1, 0.5, 1, 0.5],\n centerBottom: [0.5, 1, 0.5, 1],\n center: [0.5, 0.5, 0.5, 0.5],\n leftWide: [0, 0, 0, 1],\n topWide: [0, 0, 1, 0],\n rightWide: [1, 0, 1, 1],\n bottomWide: [0, 1, 1, 1],\n vcenterWide: [0.5, 0, 0.5, 1],\n hcenterWide: [0, 0.5, 1, 0.5],\n fullRect: [0, 0, 1, 1],\n};\n\n/**\n * A drawable GUI object. Controls form a tree independent from the VFXItem\n * scene tree. UIControl is the bridge between both trees.\n */\n@effectsClass('Control')\nexport class Control {\n static readonly themeType: string = 'Control';\n readonly engine: Engine;\n /** Scene-tree bridge that owns this GUI object, if any. */\n owner: UIControl | null = null;\n readonly children: Control[] = [];\n readonly position = new Vector2();\n readonly size = new Vector2(1, 1);\n readonly anchorMin = new Vector2();\n readonly anchorMax = new Vector2();\n readonly offsetMin = new Vector2();\n readonly offsetMax = new Vector2(1, 1);\n readonly pivot = new Vector2(0.5, 0.5);\n readonly scale = new Vector2(1, 1);\n readonly shear = new Vector2();\n mouseForcePassScrollEvents = true;\n clipContents = false;\n\n private _parent: Control | null = null;\n private _visible = true;\n private _enabled = true;\n private _mouseFilter = MouseFilter.Stop;\n private _mouseBehaviorRecursive = MouseBehaviorRecursive.Inherited;\n private _focusMode = FocusMode.None;\n private _focusBehaviorRecursive = FocusBehaviorRecursive.Inherited;\n private _defaultCursorShape: CursorStyle = CursorShape.Arrow;\n private _rotation = 0;\n private transformDirty = true;\n private readonly cachedTransform = new Matrix3();\n private readonly eventEmitter = new EventEmitter<ControlEvent>();\n private disposed = false;\n private readonly customMinimumSize = new Vector2();\n private readonly customMaximumSize = new Vector2(-1, -1);\n private minimumSizeCache: Vector2 | null = null;\n private desiredSizeCache: Vector2 | null = null;\n private maximumSizeCache: Vector2 | null = null;\n private pendingMeasurementChanges = 0;\n private _horizontalSizeFlags = SizeFlags.Fill;\n private _verticalSizeFlags = SizeFlags.Fill;\n private _stretchRatio = 1;\n private _horizontalGrowDirection = GrowDirection.End;\n private _verticalGrowDirection = GrowDirection.End;\n private _theme: Theme | null = null;\n private themeOwnerNode: Control | null = null;\n private _themeTypeVariation = '';\n private readonly themeOverrides = new Map<ThemeItemType, Map<string, ThemeValue>>();\n private readonly themeCache = new Map<string, ThemeCacheEntry>();\n private readonly overrideStyleBoxReferences = new Map<StyleBox, number>();\n private readonly attachedThemeChanged = (_theme: Theme, affectsLayout: boolean) => {\n this.propagateThemeChanged(affectsLayout);\n };\n private readonly overrideStyleBoxChanged = () => this.propagateThemeChanged(true, false);\n\n constructor (engine: Engine) {\n this.engine = engine;\n }\n\n get parent (): Control | null {\n return this._parent;\n }\n\n set parent (value: Control | null) {\n if (value === this._parent) {\n return;\n }\n const previousRoot = this.root;\n\n if (this._parent?.hasThemeOwnerNode()) {\n this.propagateThemeOwner(null, false, true);\n }\n this._parent?.removeChildInternal(this);\n this._parent = value;\n value?.addChildInternal(this);\n if (value?.hasThemeOwnerNode()) {\n this.propagateThemeOwner(value.getThemeOwnerNode(), false, true);\n }\n this.updateLayout();\n const nextRoot = this.root;\n\n if (nextRoot) {\n this.propagateThemeChanged(true);\n }\n if (previousRoot && previousRoot !== nextRoot) {\n previousRoot.controlRemoved(this);\n }\n if (nextRoot && previousRoot !== nextRoot) {\n this.queuePendingLayouts();\n this.queuePendingMeasurements(nextRoot);\n }\n if (previousRoot !== nextRoot) {\n this.notifyRootChanged(previousRoot, nextRoot);\n }\n nextRoot?.controlTreeChanged();\n this.eventEmitter.emit('parentChanged', this);\n }\n\n /** Scene item exposed through the optional UIControl bridge. */\n get item (): VFXItem | null {\n return this.owner?.item ?? null;\n }\n\n get indexInParent (): number {\n return this.parent?.getChildIndex(this) ?? -1;\n }\n\n set indexInParent (value: number) {\n this.parent?.changeChildIndex(this, value);\n }\n\n get visible (): boolean {\n return this._visible;\n }\n\n set visible (value: boolean) {\n if (this._visible !== value) {\n this._visible = value;\n this.root?.controlStateChanged(this);\n this.eventEmitter.emit('visibilityChanged', this);\n }\n }\n\n get visibleInHierarchy (): boolean {\n return this.visible && (this.parent?.visibleInHierarchy ?? true);\n }\n\n get enabled (): boolean {\n return this._enabled;\n }\n\n set enabled (value: boolean) {\n if (this._enabled !== value) {\n this._enabled = value;\n this.root?.controlStateChanged(this);\n this.eventEmitter.emit('enabledChanged', this);\n }\n }\n\n get enabledInHierarchy (): boolean {\n return this.enabled && (this.parent?.enabledInHierarchy ?? true);\n }\n\n get mouseFilter (): MouseFilter {\n return this._mouseFilter;\n }\n\n set mouseFilter (value: MouseFilter) {\n if (this._mouseFilter !== value) {\n this._mouseFilter = value;\n this.root?.controlStateChanged(this);\n }\n }\n\n get mouseBehaviorRecursive (): MouseBehaviorRecursive {\n return this._mouseBehaviorRecursive;\n }\n\n set mouseBehaviorRecursive (value: MouseBehaviorRecursive) {\n if (this._mouseBehaviorRecursive !== value) {\n this._mouseBehaviorRecursive = value;\n this.root?.controlStateChanged(this);\n }\n }\n\n get focusMode (): FocusMode {\n return this._focusMode;\n }\n\n set focusMode (value: FocusMode) {\n if (this._focusMode !== value) {\n this._focusMode = value;\n this.root?.controlStateChanged(this);\n }\n }\n\n get focusBehaviorRecursive (): FocusBehaviorRecursive {\n return this._focusBehaviorRecursive;\n }\n\n set focusBehaviorRecursive (value: FocusBehaviorRecursive) {\n if (this._focusBehaviorRecursive !== value) {\n this._focusBehaviorRecursive = value;\n this.root?.controlStateChanged(this);\n }\n }\n\n get defaultCursorShape (): CursorStyle {\n return this._defaultCursorShape;\n }\n\n set defaultCursorShape (value: CursorStyle) {\n if (this._defaultCursorShape === value) {\n return;\n }\n this._defaultCursorShape = value;\n this.root?.updateMouseCursorState();\n }\n\n get location (): Vector2 {\n return this.position;\n }\n\n set location (value: Vector2) {\n this.setPosition(value.x, value.y);\n }\n\n get rotation (): number {\n return this._rotation;\n }\n\n get x (): number {\n return this.position.x;\n }\n\n set x (value: number) {\n this.setPosition(value, this.position.y);\n }\n\n get y (): number {\n return this.position.y;\n }\n\n set y (value: number) {\n this.setPosition(this.position.x, value);\n }\n\n get width (): number {\n return this.size.x;\n }\n\n set width (value: number) {\n this.setSize(value, this.size.y);\n }\n\n get height (): number {\n return this.size.y;\n }\n\n set height (value: number) {\n this.setSize(this.size.x, value);\n }\n\n get horizontalSizeFlags (): SizeFlags {\n return this._horizontalSizeFlags;\n }\n\n set horizontalSizeFlags (value: SizeFlags) {\n this.setSizeFlags(value, this._verticalSizeFlags);\n }\n\n get verticalSizeFlags (): SizeFlags {\n return this._verticalSizeFlags;\n }\n\n set verticalSizeFlags (value: SizeFlags) {\n this.setSizeFlags(this._horizontalSizeFlags, value);\n }\n\n get stretchRatio (): number {\n return this._stretchRatio;\n }\n\n set stretchRatio (value: number) {\n if (!Number.isFinite(value) || value <= 0) {\n throw new RangeError('Control stretchRatio must be a finite number greater than zero.');\n }\n if (this._stretchRatio !== value) {\n this._stretchRatio = value;\n this.eventEmitter.emit('sizeFlagsChanged', this);\n }\n }\n\n get horizontalGrowDirection (): GrowDirection {\n return this._horizontalGrowDirection;\n }\n\n set horizontalGrowDirection (value: GrowDirection) {\n this.assertGrowDirection(value);\n if (this._horizontalGrowDirection !== value) {\n this._horizontalGrowDirection = value;\n this.updateLayout();\n }\n }\n\n get verticalGrowDirection (): GrowDirection {\n return this._verticalGrowDirection;\n }\n\n set verticalGrowDirection (value: GrowDirection) {\n this.assertGrowDirection(value);\n if (this._verticalGrowDirection !== value) {\n this._verticalGrowDirection = value;\n this.updateLayout();\n }\n }\n\n get root (): RootControl | null {\n return this instanceof RootControl ? this : this.parent?.root ?? null;\n }\n\n get isDisposed (): boolean {\n return this.disposed;\n }\n\n /** Theme applied to this Control and inherited by its descendants. */\n get theme (): Theme | null {\n return this._theme;\n }\n\n set theme (value: Theme | null) {\n if (this._theme === value) {return;}\n this._theme?.off('changed', this.attachedThemeChanged);\n this._theme = value;\n if (value) {\n this.propagateThemeOwner(this, !!this.root, true);\n value.on('changed', this.attachedThemeChanged);\n } else {\n this.propagateThemeOwner(this.parent?.getThemeOwnerNode() ?? null, !!this.root, true);\n }\n }\n\n /** Returns the nearest Theme currently inherited by this Control. */\n getInheritedTheme (): Theme | null {\n return this.themeOwnerNode?.theme ?? null;\n }\n\n /** Returns the Control that owns the first Theme in this Control's inheritance chain. */\n getThemeOwnerNode (): Control | null {\n return this.themeOwnerNode;\n }\n\n /** Returns whether this Control is affected by a Theme in its Control ancestry. */\n hasThemeOwnerNode (): boolean {\n return this.themeOwnerNode !== null;\n }\n\n /** Optional named type variation resolved before this Control's native theme type. */\n get themeTypeVariation (): string {\n return this._themeTypeVariation;\n }\n\n set themeTypeVariation (value: string) {\n const normalized = value.trim();\n\n if (this._themeTypeVariation !== normalized) {\n this._themeTypeVariation = normalized;\n this.propagateThemeChanged(true, false);\n }\n }\n\n /** Stable theme type declared by the closest Control class that provides one. */\n getThemeType (): string {\n return (this.constructor as typeof Control).themeType;\n }\n\n getThemeColor (name: string, themeType?: string): Color {\n return cloneThemeValue(this.resolveThemeItem(ThemeItemType.Color, name, themeType).value as Color);\n }\n\n getThemeConstant (name: string, themeType?: string): number {\n return this.resolveThemeItem(ThemeItemType.Constant, name, themeType).value as number;\n }\n\n getThemeFont (name: string, themeType?: string): ThemeFont {\n return cloneThemeValue(this.resolveThemeItem(ThemeItemType.Font, name, themeType).value as ThemeFont);\n }\n\n getThemeFontSize (name: string, themeType?: string): number {\n return this.resolveThemeItem(ThemeItemType.FontSize, name, themeType).value as number;\n }\n\n getThemeIcon (name: string, themeType?: string): Texture | null {\n return this.resolveThemeItem(ThemeItemType.Icon, name, themeType).value as Texture | null;\n }\n\n getThemeStyleBox (name: string, themeType?: string): StyleBox {\n return this.resolveThemeItem(ThemeItemType.StyleBox, name, themeType).value as StyleBox;\n }\n\n hasThemeColor (name: string, themeType?: string): boolean {\n return this.resolveThemeItem(ThemeItemType.Color, name, themeType).found;\n }\n\n hasThemeConstant (name: string, themeType?: string): boolean {\n return this.resolveThemeItem(ThemeItemType.Constant, name, themeType).found;\n }\n\n hasThemeFont (name: string, themeType?: string): boolean {\n return this.resolveThemeItem(ThemeItemType.Font, name, themeType).found;\n }\n\n hasThemeFontSize (name: string, themeType?: string): boolean {\n return this.resolveThemeItem(ThemeItemType.FontSize, name, themeType).found;\n }\n\n hasThemeIcon (name: string, themeType?: string): boolean {\n return this.resolveThemeItem(ThemeItemType.Icon, name, themeType).found;\n }\n\n hasThemeStyleBox (name: string, themeType?: string): boolean {\n return this.resolveThemeItem(ThemeItemType.StyleBox, name, themeType).found;\n }\n\n setThemeColorOverride (name: string, value: Color): void {\n this.setThemeOverride(ThemeItemType.Color, name, value);\n }\n\n setThemeConstantOverride (name: string, value: number): void {\n if (!Number.isFinite(value)) {throw new RangeError(`${name} must be finite.`);}\n this.setThemeOverride(ThemeItemType.Constant, name, value);\n }\n\n setThemeFontOverride (name: string, value: ThemeFont): void {\n this.setThemeOverride(ThemeItemType.Font, name, value);\n }\n\n setThemeFontSizeOverride (name: string, value: number): void {\n if (!Number.isFinite(value) || value <= 0) {throw new RangeError(`${name} must be a positive finite font size.`);}\n this.setThemeOverride(ThemeItemType.FontSize, name, value);\n }\n\n setThemeIconOverride (name: string, value: Texture | null): void {\n this.setThemeOverride(ThemeItemType.Icon, name, value);\n }\n\n setThemeStyleBoxOverride (name: string, value: StyleBox): void {\n this.setThemeOverride(ThemeItemType.StyleBox, name, value);\n }\n\n removeThemeColorOverride (name: string): void { this.removeThemeOverride(ThemeItemType.Color, name); }\n removeThemeConstantOverride (name: string): void { this.removeThemeOverride(ThemeItemType.Constant, name); }\n removeThemeFontOverride (name: string): void { this.removeThemeOverride(ThemeItemType.Font, name); }\n removeThemeFontSizeOverride (name: string): void { this.removeThemeOverride(ThemeItemType.FontSize, name); }\n removeThemeIconOverride (name: string): void { this.removeThemeOverride(ThemeItemType.Icon, name); }\n removeThemeStyleBoxOverride (name: string): void { this.removeThemeOverride(ThemeItemType.StyleBox, name); }\n\n hasThemeColorOverride (name: string): boolean { return this.hasThemeOverride(ThemeItemType.Color, name); }\n hasThemeConstantOverride (name: string): boolean { return this.hasThemeOverride(ThemeItemType.Constant, name); }\n hasThemeFontOverride (name: string): boolean { return this.hasThemeOverride(ThemeItemType.Font, name); }\n hasThemeFontSizeOverride (name: string): boolean { return this.hasThemeOverride(ThemeItemType.FontSize, name); }\n hasThemeIconOverride (name: string): boolean { return this.hasThemeOverride(ThemeItemType.Icon, name); }\n hasThemeStyleBoxOverride (name: string): boolean { return this.hasThemeOverride(ThemeItemType.StyleBox, name); }\n\n clearThemeOverrides (): void {\n if (this.themeOverrides.size === 0) {return;}\n let affectsLayout = false;\n\n for (const [itemType, items] of this.themeOverrides) {\n for (const [name, value] of items) {\n if (value instanceof StyleBox) {this.releaseOverrideStyleBox(value);}\n affectsLayout ||= ThemeRegistry.affectsLayout(this.getThemeType(), itemType, name);\n }\n }\n this.themeOverrides.clear();\n this.propagateThemeChanged(affectsLayout, false);\n }\n\n hasFocus (visibleOnly = false): boolean {\n return this.root?.guiControlHasFocus(this, visibleOnly) ?? false;\n }\n\n drawStyleBox (styleBox: StyleBox, x: number, y: number, width: number, height: number): void {\n styleBox.draw(this.engine.graphics, { x, y, width, height });\n }\n\n on<E extends keyof ControlEvent> (\n eventName: E,\n listener: EventEmitterListener<ControlEvent[E]>,\n ): void {\n this.eventEmitter.on(eventName, listener);\n }\n\n off<E extends keyof ControlEvent> (\n eventName: E,\n listener: EventEmitterListener<ControlEvent[E]>,\n ): void {\n this.eventEmitter.off(eventName, listener);\n }\n\n addChild<T extends Control> (child: T): T {\n child.parent = this;\n\n return child;\n }\n\n removeChild (child: Control): void {\n if (child.parent === this) {\n child.parent = null;\n }\n }\n\n getChildIndex (child: Control): number {\n return this.children.indexOf(child);\n }\n\n /** @internal */\n changeChildIndex (child: Control, newIndex: number): void {\n const oldIndex = this.children.indexOf(child);\n\n if (oldIndex === newIndex || oldIndex === -1) {\n return;\n }\n this.children.splice(oldIndex, 1);\n if (newIndex < 0 || newIndex >= this.children.length) {\n this.children.push(child);\n } else {\n this.children.splice(newIndex, 0, child);\n }\n this.root?.controlTreeChanged();\n }\n\n /** @internal */\n addChildInternal (child: Control): void {\n if (!this.children.includes(child)) {\n this.children.push(child);\n }\n }\n\n /** @internal */\n removeChildInternal (child: Control): void {\n const index = this.children.indexOf(child);\n\n if (index !== -1) {\n this.children.splice(index, 1);\n }\n }\n\n setPosition (x: number, y: number, keepOffsets = false): void {\n if (this.position.x === x && this.position.y === y) {\n return;\n }\n const rect = { position: new Vector2(x, y), size: this.size.clone() };\n\n if (keepOffsets && this.parent) {\n this.computeAnchors(rect, this.getParentRect());\n } else {\n this.computeOffsets(rect, this.getParentRect());\n }\n this.updateLayout();\n }\n\n setSize (width: number, height: number): void {\n if (this.size.x === width && this.size.y === height) {\n return;\n }\n const rect = { position: this.position.clone(), size: new Vector2(width, height) };\n\n this.computeOffsets(rect, this.getParentRect());\n this.updateLayout();\n }\n\n /** Atomically replaces the local rectangle while preserving the current anchors. */\n setRect (rect: Rect): void {\n const nextRect = {\n position: rect.position.clone(),\n size: rect.size.clone(),\n };\n\n this.computeOffsets(nextRect, this.getParentRect());\n this.updateLayout();\n }\n\n setSizeFlags (horizontal: SizeFlags, vertical: SizeFlags): void {\n if (!Number.isInteger(horizontal) || horizontal < SizeFlags.ShrinkBegin\n || !Number.isInteger(vertical) || vertical < SizeFlags.ShrinkBegin) {\n throw new RangeError('Control size flags must be non-negative integers.');\n }\n if (this._horizontalSizeFlags !== horizontal || this._verticalSizeFlags !== vertical) {\n this._horizontalSizeFlags = horizontal;\n this._verticalSizeFlags = vertical;\n this.eventEmitter.emit('sizeFlagsChanged', this);\n }\n }\n\n /** Intrinsic minimum size supplied by a subclass. */\n getMinimumSize (): Vector2 {\n return new Vector2();\n }\n\n /** Intrinsic preferred size supplied by a subclass. */\n getDesiredSize (): Vector2 {\n return new Vector2();\n }\n\n /** Intrinsic maximum size supplied by a subclass. Negative components are unbounded. */\n getMaximumSize (): Vector2 {\n return new Vector2(-1, -1);\n }\n\n getCombinedMinimumSize (): Vector2 {\n const measured = this.getCachedMinimumSize();\n\n return new Vector2(\n Math.max(measured.x, this.customMinimumSize.x),\n Math.max(measured.y, this.customMinimumSize.y),\n );\n }\n\n getCombinedMaximumSize (): Vector2 {\n const measured = this.getCachedMaximumSize();\n\n return new Vector2(\n combineMaximum(measured.x, this.customMaximumSize.x),\n combineMaximum(measured.y, this.customMaximumSize.y),\n );\n }\n\n /** Minimum size after resolving a conflicting maximum; the maximum wins. */\n getBoundMinimumSize (): Vector2 {\n const minimum = this.getCombinedMinimumSize();\n const maximum = this.getCombinedMaximumSize();\n\n return new Vector2(\n clampToMaximum(minimum.x, maximum.x),\n clampToMaximum(minimum.y, maximum.y),\n );\n }\n\n /** Desired size clamped to the resolved minimum and maximum constraints. */\n getBoundDesiredSize (): Vector2 {\n const minimum = this.getBoundMinimumSize();\n const maximum = this.getCombinedMaximumSize();\n const desired = this.getCachedDesiredSize();\n\n return new Vector2(\n Math.max(minimum.x, clampToMaximum(desired.x, maximum.x)),\n Math.max(minimum.y, clampToMaximum(desired.y, maximum.y)),\n );\n }\n\n setCustomMinimumSize (width: number, height: number): void {\n const next = normalizeMeasuredMinimum(new Vector2(width, height));\n\n if (this.customMinimumSize.x !== next.x || this.customMinimumSize.y !== next.y) {\n this.customMinimumSize.copyFrom(next);\n this.updateMinimumSize();\n }\n }\n\n setCustomMaximumSize (width: number, height: number): void {\n const next = normalizeMeasuredMaximum(new Vector2(width, height));\n\n if (this.customMaximumSize.x !== next.x || this.customMaximumSize.y !== next.y) {\n this.customMaximumSize.copyFrom(next);\n this.updateMaximumSize();\n }\n }\n\n updateMinimumSize (): void {\n this.invalidateMeasurementChanges(MeasurementChange.Minimum);\n }\n\n updateDesiredSize (): void {\n this.invalidateMeasurementChanges(MeasurementChange.Desired);\n }\n\n updateMaximumSize (): void {\n this.invalidateMeasurementChanges(MeasurementChange.Maximum);\n }\n\n /** @internal */\n invokeMeasurementChanges (): void {\n if (this.disposed || this.pendingMeasurementChanges === 0) {return;}\n const changes = this.pendingMeasurementChanges;\n\n this.pendingMeasurementChanges = 0;\n if ((changes & (MeasurementChange.Minimum | MeasurementChange.Maximum)) !== 0) {\n this.updateLayout();\n }\n if ((changes & MeasurementChange.Minimum) !== 0) {\n this.eventEmitter.emit('minimumSizeChanged', this);\n }\n if ((changes & MeasurementChange.Desired) !== 0) {\n this.eventEmitter.emit('desiredSizeChanged', this);\n }\n if ((changes & MeasurementChange.Maximum) !== 0) {\n this.eventEmitter.emit('maximumSizeChanged', this);\n }\n }\n\n protected invalidateMeasurementChanges (changes: number): void {\n const root = this.root;\n let changed = false;\n\n if ((changes & MeasurementChange.Minimum) !== 0) {\n changed ||= this.minimumSizeCache !== null\n || (!!root && (this.pendingMeasurementChanges & MeasurementChange.Minimum) === 0);\n this.minimumSizeCache = null;\n }\n if ((changes & MeasurementChange.Desired) !== 0) {\n changed ||= this.desiredSizeCache !== null\n || (!!root && (this.pendingMeasurementChanges & MeasurementChange.Desired) === 0);\n this.desiredSizeCache = null;\n }\n if ((changes & MeasurementChange.Maximum) !== 0) {\n changed ||= this.maximumSizeCache !== null\n || (!!root && (this.pendingMeasurementChanges & MeasurementChange.Maximum) === 0);\n this.maximumSizeCache = null;\n }\n if (root) {\n this.scheduleMeasurementChanges(changes, root);\n } else {\n if ((changes & (MeasurementChange.Minimum | MeasurementChange.Maximum)) !== 0) {\n this.updateLayout();\n }\n if ((changes & MeasurementChange.Minimum) !== 0) {\n this.eventEmitter.emit('minimumSizeChanged', this);\n }\n if ((changes & MeasurementChange.Desired) !== 0) {\n this.eventEmitter.emit('desiredSizeChanged', this);\n }\n if ((changes & MeasurementChange.Maximum) !== 0) {\n this.eventEmitter.emit('maximumSizeChanged', this);\n }\n }\n if (changed && this.parent instanceof Container) {\n this.parent.invalidateMeasurementsFromChild();\n }\n }\n\n setScale (x: number, y: number): void {\n if (this.scale.x !== x || this.scale.y !== y) {\n this.scale.set(x, y);\n this.markTransformDirty();\n }\n }\n\n setRotation (degrees: number): void {\n if (this._rotation !== degrees) {\n this._rotation = degrees;\n this.markTransformDirty();\n }\n }\n\n setShear (x: number, y: number): void {\n if (this.shear.x !== x || this.shear.y !== y) {\n this.shear.set(x, y);\n this.markTransformDirty();\n }\n }\n\n setPivot (x: number, y: number): void {\n if (this.pivot.x !== x || this.pivot.y !== y) {\n this.pivot.set(x, y);\n this.markTransformDirty();\n }\n }\n\n setAnchorMin (x: number, y: number): void {\n if (this.anchorMin.x !== x || this.anchorMin.y !== y) {\n this.anchorMin.set(x, y);\n this.updateLayout();\n }\n }\n\n setAnchorMax (x: number, y: number): void {\n if (this.anchorMax.x !== x || this.anchorMax.y !== y) {\n this.anchorMax.set(x, y);\n this.updateLayout();\n }\n }\n\n setOffsetMin (x: number, y: number): void {\n if (this.offsetMin.x !== x || this.offsetMin.y !== y) {\n this.offsetMin.set(x, y);\n this.updateLayout();\n }\n }\n\n setOffsetMax (x: number, y: number): void {\n if (this.offsetMax.x !== x || this.offsetMax.y !== y) {\n this.offsetMax.set(x, y);\n this.updateLayout();\n }\n }\n\n getRect (): Rect {\n return {\n position: this.position.clone(),\n size: this.size.clone(),\n };\n }\n\n getTransform2D (): Matrix3 {\n if (this.transformDirty) {\n const radians = this._rotation * Math.PI / 180;\n const sin = Math.sin(radians);\n const cos = Math.cos(radians);\n const shearX = Math.tan(Math.max(-89, Math.min(89, this.shear.x)) * Math.PI / 180);\n const shearY = Math.tan(Math.max(-89, Math.min(89, this.shear.y)) * Math.PI / 180);\n const a = this.scale.x * (cos - sin * shearY);\n const b = this.scale.x * (sin + cos * shearY);\n const c = this.scale.y * (cos * shearX - sin);\n const d = this.scale.y * (sin * shearX + cos);\n const pivotX = this.pivot.x * this.size.x;\n const pivotY = this.pivot.y * this.size.y;\n const tx = this.position.x + pivotX - a * pivotX - c * pivotY;\n const ty = this.position.y + pivotY - b * pivotX - d * pivotY;\n\n this.cachedTransform.set(a, b, 0, c, d, 0, tx, ty, 1);\n this.transformDirty = false;\n }\n\n return this.cachedTransform;\n }\n\n setAnchorsPreset (preset: LayoutPreset, keepOffsets = true): void {\n const [minX, minY, maxX, maxY] = ANCHOR_PRESET_TABLE[preset];\n\n if (keepOffsets) {\n this.anchorMin.set(minX, minY);\n this.anchorMax.set(maxX, maxY);\n } else {\n const rect = this.getRect();\n\n this.anchorMin.set(minX, minY);\n this.anchorMax.set(maxX, maxY);\n this.computeOffsets(rect, this.getParentRect());\n }\n this.updateLayout();\n }\n\n setOffsetsPreset (preset: LayoutPreset, margin = 0): void {\n if (!this.parent) {\n return;\n }\n const parentSize = this.parent.size;\n const width = this.size.x;\n const height = this.size.y;\n const a = this.anchorMin;\n const b = this.anchorMax;\n let minX = 0, maxX = 0, minY = 0, maxY = 0;\n\n // Left edge.\n switch (preset) {\n case 'topLeft': case 'bottomLeft': case 'centerLeft':\n case 'topWide': case 'bottomWide': case 'leftWide': case 'hcenterWide': case 'fullRect':\n minX = margin - a.x * parentSize.x;\n\n break;\n case 'centerTop': case 'centerBottom': case 'center': case 'vcenterWide':\n minX = 0.5 * parentSize.x - width / 2 - a.x * parentSize.x;\n\n break;\n default:\n minX = parentSize.x - margin - width - a.x * parentSize.x;\n\n break;\n }\n switch (preset) {\n case 'topLeft': case 'bottomLeft': case 'centerLeft': case 'leftWide':\n maxX = margin + width - b.x * parentSize.x;\n\n break;\n case 'centerTop': case 'centerBottom': case 'center': case 'vcenterWide':\n maxX = 0.5 * parentSize.x + width / 2 - b.x * parentSize.x;\n\n break;\n default:\n maxX = parentSize.x - margin - b.x * parentSize.x;\n\n break;\n }\n // Top edge.\n switch (preset) {\n case 'topLeft': case 'topRight': case 'centerTop':\n case 'leftWide': case 'rightWide': case 'topWide': case 'vcenterWide': case 'fullRect':\n minY = margin - a.y * parentSize.y;\n\n break;\n case 'centerLeft': case 'centerRight': case 'center': case 'hcenterWide':\n minY = 0.5 * parentSize.y - height / 2 - a.y * parentSize.y;\n\n break;\n default:\n minY = parentSize.y - margin - height - a.y * parentSize.y;\n\n break;\n }\n // Bottom edge.\n switch (preset) {\n case 'topLeft': case 'topRight': case 'centerTop': case 'topWide':\n maxY = margin + height - b.y * parentSize.y;\n\n break;\n case 'centerLeft': case 'centerRight': case 'center': case 'hcenterWide':\n maxY = 0.5 * parentSize.y + height / 2 - b.y * parentSize.y;\n\n break;\n default:\n maxY = parentSize.y - margin - b.y * parentSize.y;\n\n break;\n }\n this.offsetMin.set(minX, minY);\n this.offsetMax.set(maxX, maxY);\n this.updateLayout();\n }\n\n setAnchorsAndOffsetsPreset (preset: LayoutPreset, margin = 0): void {\n this.setAnchorsPreset(preset, false);\n this.setOffsetsPreset(preset, margin);\n }\n\n getGlobalTransform2D (): Matrix3 {\n const local = this.getTransform2D();\n\n return this.parent\n ? new Matrix3().multiplyMatrices(this.parent.getGlobalTransform2D(), local)\n : local.clone();\n }\n\n hasPoint (point: Vector2): boolean {\n return point.x >= 0 && point.y >= 0 && point.x <= this.size.x && point.y <= this.size.y;\n }\n\n /** Whether input at a position in this Control's space may reach a direct child. */\n intersectsChildContent (child: Control, position: Vector2): boolean {\n return true;\n }\n\n getEffectiveMouseFilter (): MouseFilter {\n return this.enabledInHierarchy && this.isMouseRecursiveEnabled() ? this.mouseFilter : MouseFilter.Ignore;\n }\n\n getFocusModeWithOverride (): FocusMode {\n return this.enabledInHierarchy && this.isFocusRecursiveEnabled() ? this.focusMode : FocusMode.None;\n }\n\n getCursorShape (position: Vector2): CursorStyle {\n return this.defaultCursorShape;\n }\n\n focus (hideFocus = false): void {\n this.root?.grabControlFocus(this, hideFocus);\n }\n\n grabFocus (hideFocus = false): void {\n this.focus(hideFocus);\n }\n\n grabClickFocus (): void {\n this.root?.grabControlClickFocus(this);\n }\n\n releaseFocus (): void {\n this.root?.releaseControlFocus(this);\n }\n\n warpMouse (position: Vector2): void {\n const matrix = this.getGlobalTransform2D().elements;\n\n this.root?.warpControlMouse(new Vector2(\n matrix[0] * position.x + matrix[3] * position.y + matrix[6],\n matrix[1] * position.x + matrix[4] * position.y + matrix[7],\n ));\n }\n\n /** Converts a window-space position into this control's local coordinates. */\n makePositionLocal (position: Vector2): Vector2 {\n const transform = this.getGlobalTransform2D().clone();\n\n if (Math.abs(transform.determinant()) < 1e-12) {\n return new Vector2();\n }\n const elements = transform.invert().elements;\n\n return new Vector2(\n elements[0] * position.x + elements[3] * position.y + elements[6],\n elements[1] * position.x + elements[4] * position.y + elements[7],\n );\n }\n\n /** Gets the current mouse position transformed into this control's coordinates. */\n getLocalMousePosition (): Vector2 {\n const root = this.root;\n\n return root ? this.makePositionLocal(root.getMousePosition()) : new Vector2();\n }\n\n update (deltaTime: number): void {\n for (const child of this.children.slice()) {\n if (child.enabled && !child.isDisposed) {\n child.update(deltaTime);\n }\n }\n }\n\n draw (): void {\n // OVERRIDE\n }\n\n onDestroy (): void {}\n\n drawInternal (): void {\n if (!this.visibleInHierarchy || this.disposed) {\n return;\n }\n const graphics = this.engine.graphics;\n\n graphics.pushTransform(this.getTransform2D());\n this.draw();\n this.drawChildren();\n graphics.popTransform();\n }\n\n drawLine (x1: number, y1: number, x2: number, y2: number, color?: Color, thickness?: number): void {\n this.engine.graphics.drawLine(x1, y1, x2, y2, color, thickness);\n }\n\n drawPolyline (points: number[], color?: Color, thickness?: number): void {\n this.engine.graphics.drawLines(points, color, thickness);\n }\n\n drawBezier (\n x1: number, y1: number, x2: number, y2: number,\n x3: number, y3: number, x4: number, y4: number,\n color?: Color, thickness?: number,\n ): void {\n this.engine.graphics.drawBezier(x1, y1, x2, y2, x3, y3, x4, y4, color, thickness);\n }\n\n drawTriangle (\n x1: number, y1: number, x2: number, y2: number, x3: number, y3: number,\n color?: Color, thickness?: number,\n ): void {\n this.engine.graphics.drawTriangle(x1, y1, x2, y2, x3, y3, color, thickness);\n }\n\n drawRect (x: number, y: number, width: number, height: number, color?: Color, thickness?: number): void {\n this.engine.graphics.drawRectangle(x, y, width, height, color, thickness);\n }\n\n drawCircle (cx: number, cy: number, radius: number, color?: Color, thickness?: number): void {\n this.engine.graphics.drawCircle(cx, cy, radius, color, thickness);\n }\n\n fillTriangle (\n x1: number, y1: number, x2: number, y2: number, x3: number, y3: number, color?: Color,\n ): void {\n this.engine.graphics.fillTriangle(x1, y1, x2, y2, x3, y3, color);\n }\n\n fillRect (x: number, y: number, width: number, height: number, color?: Color): void {\n this.engine.graphics.fillRectangle(x, y, width, height, color);\n }\n\n fillCircle (cx: number, cy: number, radius: number, color?: Color): void {\n this.engine.graphics.fillCircle(cx, cy, radius, color);\n }\n\n drawTexture (\n x: number, y: number, width: number, height: number,\n texture: Texture, region?: TextureRegion, color?: Color,\n ): void {\n this.engine.graphics.drawTexture(x, y, width, height, texture, region, color);\n }\n\n drawNinePatch (\n x: number, y: number, width: number, height: number,\n texture: Texture, options: NinePatchDrawOptions, color?: Color,\n ): void {\n this.engine.graphics.drawNinePatch(x, y, width, height, texture, options, color);\n }\n\n drawText (\n x: number, y: number, text: string, fontSize: number, color?: Color,\n fontFamily?: string, fontWeight?: FontWeight, fontStyle?: FontStyle,\n ): void {\n this.engine.graphics.drawText(x, y, text, fontSize, color, fontFamily, fontWeight, fontStyle);\n }\n\n measureText (\n text: string, fontSize: number,\n fontFamily?: string, fontWeight?: FontWeight, fontStyle?: FontStyle,\n ): TextMeasurement {\n return this.engine.graphics.measureText(text, fontSize, fontFamily, fontWeight, fontStyle);\n }\n\n onMouseEnter (location: Vector2): void {}\n onMouseMove (event: InputEventMouseMotion): void {}\n onMouseLeave (): void {}\n onMouseWheel (event: InputEventMouseButton): void {}\n onMouseDown (event: InputEventMouseButton): void {}\n onMouseUp (event: InputEventMouseButton): void {}\n onTouchDown (event: InputEventScreenTouch): void {}\n onTouchMove (event: InputEventScreenDrag): void {}\n onTouchUp (event: InputEventScreenTouch): void {}\n onKeyDown (event: InputEventKey): void {}\n onKeyUp (event: InputEventKey): void {}\n onGotFocus (): void {}\n onLostFocus (): void {}\n onScrollBegin (): void {}\n onScrollEnd (): void {}\n /** @internal */\n onPopupOpened (): void {}\n /** @internal */\n onPopupClosed (): void {}\n\n /** @internal */\n invokeGetDragData (position: Vector2): unknown {\n return this.getDragData(position);\n }\n\n /** @internal */\n invokeCanDropData (position: Vector2, data: unknown): boolean {\n return this.canDropData(position, data);\n }\n\n /** @internal */\n invokeDropData (position: Vector2, data: unknown): void {\n this.dropData(position, data);\n }\n\n dispose (): void {\n if (this.disposed) {\n return;\n }\n for (const child of this.children.slice()) {\n child.dispose();\n }\n this._theme?.off('changed', this.attachedThemeChanged);\n this._theme = null;\n for (const styleBox of this.overrideStyleBoxReferences.keys()) {\n styleBox.off('changed', this.overrideStyleBoxChanged);\n }\n this.overrideStyleBoxReferences.clear();\n this.themeOverrides.clear();\n this.themeCache.clear();\n this.pendingMeasurementChanges = 0;\n this.disposed = true;\n this.onDestroy();\n this.parent = null;\n this.owner = null;\n }\n\n /** @internal */\n updateLayout (): void {\n const parentSize = this.parent?.size ?? new Vector2();\n const left = this.offsetMin.x + this.anchorMin.x * parentSize.x;\n const top = this.offsetMin.y + this.anchorMin.y * parentSize.y;\n const right = this.offsetMax.x + this.anchorMax.x * parentSize.x;\n const bottom = this.offsetMax.y + this.anchorMax.y * parentSize.y;\n\n const minimum = this.getBoundMinimumSize();\n const maximum = this.getCombinedMaximumSize();\n const horizontal = this.resolveBoundedAxis(left, right - left, minimum.x, maximum.x, this.horizontalGrowDirection);\n const vertical = this.resolveBoundedAxis(top, bottom - top, minimum.y, maximum.y, this.verticalGrowDirection);\n\n this.applyBounds(horizontal.position, vertical.position, horizontal.size, vertical.size);\n }\n\n protected drawChildren (): void {\n const graphics = this.engine.graphics;\n\n if (this.clipContents) {\n graphics.pushClipRect(0, 0, this.width, this.height);\n }\n for (const child of this.children) {\n child.drawInternal();\n }\n if (this.clipContents) {\n graphics.popClipRect();\n }\n }\n\n protected onThemeChanged (affectsLayout: boolean): void {\n if (affectsLayout) {\n this.updateMinimumSize();\n this.updateDesiredSize();\n if (this instanceof Container) {this.queueSort();}\n }\n }\n\n protected onRootChanged (previousRoot: RootControl | null, nextRoot: RootControl | null): void {}\n protected getDragData (position: Vector2): unknown { return null; }\n protected canDropData (position: Vector2, data: unknown): boolean { return false; }\n protected dropData (position: Vector2, data: unknown): void {}\n\n private getThemeDependencies (theme: Theme, explicitType?: string): string[] {\n const nativeType = this.getThemeType();\n const requestedType = explicitType ?? (this.themeTypeVariation || nativeType);\n\n if (theme.hasTypeVariation(requestedType)) {return theme.getTypeDependencies(requestedType);}\n if (!explicitType && this.themeTypeVariation) {\n return [this.themeTypeVariation, ...ThemeRegistry.getTypeChain(nativeType)];\n }\n\n return ThemeRegistry.getTypeChain(requestedType);\n }\n\n private getFallbackThemeDependencies (explicitType?: string): string[] {\n const nativeType = this.getThemeType();\n const requestedType = explicitType ?? (this.themeTypeVariation || nativeType);\n\n for (let owner = this.themeOwnerNode; owner; owner = owner.parent?.themeOwnerNode ?? null) {\n if (owner.theme?.hasTypeVariation(requestedType)) {\n return owner.theme.getTypeDependencies(requestedType);\n }\n }\n if (!explicitType && this.themeTypeVariation) {\n return [this.themeTypeVariation, ...ThemeRegistry.getTypeChain(nativeType)];\n }\n\n return ThemeRegistry.getTypeChain(requestedType);\n }\n\n private resolveThemeItem (itemType: ThemeItemType, name: string, explicitType?: string): ThemeCacheEntry {\n const cacheKey = `${itemType}\\u0000${explicitType ?? ''}\\u0000${name}`;\n const cached = this.themeCache.get(cacheKey);\n\n if (cached) {return { found: cached.found, value: cloneThemeValue(cached.value) };}\n const nativeType = this.getThemeType();\n const queryMatchesCurrentType = !explicitType\n || explicitType === nativeType\n || (!!this.themeTypeVariation && explicitType === this.themeTypeVariation);\n const override = queryMatchesCurrentType ? this.themeOverrides.get(itemType)?.get(name) : undefined;\n let found = override !== undefined;\n let value = override;\n\n if (!found) {\n for (let owner = this.themeOwnerNode; owner && !found; owner = owner.parent?.themeOwnerNode ?? null) {\n const theme = owner.theme;\n\n if (!theme) {continue;}\n for (const dependency of this.getThemeDependencies(theme, explicitType)) {\n const candidate = theme.getItem(dependency, itemType, name);\n\n if (candidate !== undefined) {\n value = candidate;\n found = true;\n\n break;\n }\n }\n }\n }\n if (!found) {\n for (const dependency of this.getFallbackThemeDependencies(explicitType)) {\n const candidate = ThemeRegistry.getDefault(dependency, itemType, name);\n\n if (candidate !== undefined) {\n value = candidate;\n found = true;\n\n break;\n }\n }\n }\n if (!found) {value = this.getThemeFallback(itemType);}\n const entry = { found, value: cloneThemeValue(value as ThemeValue) };\n\n this.themeCache.set(cacheKey, entry);\n\n return { found: entry.found, value: cloneThemeValue(entry.value) };\n }\n\n private getThemeFallback (itemType: ThemeItemType): ThemeValue {\n switch (itemType) {\n case ThemeItemType.Color: return themeFallbacks.color;\n case ThemeItemType.Constant: return themeFallbacks.constant;\n case ThemeItemType.Font: return themeFallbacks.font;\n case ThemeItemType.FontSize: return themeFallbacks.fontSize;\n case ThemeItemType.Icon: return themeFallbacks.icon;\n case ThemeItemType.StyleBox: return themeFallbacks.styleBox;\n }\n }\n\n private setThemeOverride (itemType: ThemeItemType, name: string, value: ThemeValue): void {\n if (!name) {throw new Error('Theme override item names cannot be empty.');}\n let items = this.themeOverrides.get(itemType);\n\n if (!items) {this.themeOverrides.set(itemType, items = new Map());}\n const previous = items.get(name);\n\n if (previous instanceof StyleBox) {this.releaseOverrideStyleBox(previous);}\n const stored = cloneThemeValue(value);\n\n items.set(name, stored);\n if (stored instanceof StyleBox) {this.retainOverrideStyleBox(stored);}\n this.propagateThemeChanged(ThemeRegistry.affectsLayout(this.getThemeType(), itemType, name), false);\n }\n\n private removeThemeOverride (itemType: ThemeItemType, name: string): void {\n const items = this.themeOverrides.get(itemType);\n const previous = items?.get(name);\n\n if (!items?.delete(name)) {return;}\n if (items.size === 0) {this.themeOverrides.delete(itemType);}\n if (previous instanceof StyleBox) {this.releaseOverrideStyleBox(previous);}\n this.propagateThemeChanged(ThemeRegistry.affectsLayout(this.getThemeType(), itemType, name), false);\n }\n\n private hasThemeOverride (itemType: ThemeItemType, name: string): boolean {\n return this.themeOverrides.get(itemType)?.has(name) ?? false;\n }\n\n private retainOverrideStyleBox (styleBox: StyleBox): void {\n const count = this.overrideStyleBoxReferences.get(styleBox) ?? 0;\n\n if (count === 0) {styleBox.on('changed', this.overrideStyleBoxChanged);}\n this.overrideStyleBoxReferences.set(styleBox, count + 1);\n }\n\n private releaseOverrideStyleBox (styleBox: StyleBox): void {\n const count = this.overrideStyleBoxReferences.get(styleBox) ?? 0;\n\n if (count <= 1) {\n styleBox.off('changed', this.overrideStyleBoxChanged);\n this.overrideStyleBoxReferences.delete(styleBox);\n } else {this.overrideStyleBoxReferences.set(styleBox, count - 1);}\n }\n\n private propagateThemeChanged (affectsLayout: boolean, includeChildren = true): void {\n if (this.disposed) {return;}\n this.themeCache.clear();\n if (this.root) {\n this.onThemeChanged(affectsLayout);\n this.eventEmitter.emit('themeChanged', this, affectsLayout);\n }\n if (includeChildren) {\n for (const child of this.children) {child.propagateThemeChanged(affectsLayout);}\n }\n }\n\n private propagateThemeOwner (ownerNode: Control | null, notify: boolean, assign: boolean): void {\n let assignToControl = assign;\n\n if (this !== ownerNode && this.theme) {\n assignToControl = false;\n }\n if (assignToControl) {\n this.themeOwnerNode = ownerNode;\n }\n this.themeCache.clear();\n if (notify && this.root) {\n this.onThemeChanged(true);\n this.eventEmitter.emit('themeChanged', this, true);\n }\n for (const child of this.children) {\n child.propagateThemeOwner(ownerNode, notify, assignToControl);\n }\n }\n\n private scheduleMeasurementChanges (changes: MeasurementChange, root: RootControl): void {\n const pending = changes & ~this.pendingMeasurementChanges;\n\n if (pending === 0) {return;}\n this.pendingMeasurementChanges |= pending;\n root.queueMeasurementChange(this);\n }\n\n private applyBounds (x: number, y: number, width: number, height: number): void {\n const locationChanged = this.position.x !== x || this.position.y !== y;\n const sizeChanged = this.size.x !== width || this.size.y !== height;\n\n if (!locationChanged && !sizeChanged) {\n return;\n }\n this.position.set(x, y);\n this.size.set(width, height);\n this.markTransformDirty();\n if (locationChanged) {\n this.eventEmitter.emit('locationChanged', this);\n }\n if (sizeChanged) {\n this.eventEmitter.emit('sizeChanged', this);\n if (!(this instanceof Container)) {\n for (const child of this.children.slice()) {\n child.updateLayout();\n }\n }\n }\n }\n\n private markTransformDirty (): void {\n this.transformDirty = true;\n }\n\n private getCachedMinimumSize (): Vector2 {\n this.minimumSizeCache ??= normalizeMeasuredMinimum(this.getMinimumSize());\n\n return this.minimumSizeCache.clone();\n }\n\n private getCachedDesiredSize (): Vector2 {\n this.desiredSizeCache ??= normalizeMeasuredMinimum(this.getDesiredSize());\n\n return this.desiredSizeCache.clone();\n }\n\n private getCachedMaximumSize (): Vector2 {\n this.maximumSizeCache ??= normalizeMeasuredMaximum(this.getMaximumSize());\n\n return this.maximumSizeCache.clone();\n }\n\n private resolveBoundedAxis (\n position: number,\n requestedSize: number,\n minimumSize: number,\n maximumSize: number,\n growDirection: GrowDirection,\n ): { position: number, size: number } {\n const finiteSize = Number.isFinite(requestedSize) ? requestedSize : 0;\n const size = Math.max(minimumSize, clampToMaximum(finiteSize, maximumSize));\n const difference = size - finiteSize;\n let adjustedPosition = Number.isFinite(position) ? position : 0;\n\n if (growDirection === GrowDirection.Begin) {\n adjustedPosition -= difference;\n } else if (growDirection === GrowDirection.Both) {\n adjustedPosition -= difference / 2;\n }\n\n return { position: adjustedPosition, size };\n }\n\n private assertGrowDirection (value: GrowDirection): void {\n if (!Number.isInteger(value) || value < GrowDirection.Begin || value > GrowDirection.Both) {\n throw new RangeError('Invalid Control grow direction.');\n }\n }\n\n private queuePendingLayouts (): void {\n if (this instanceof Container) {\n this.queueSort();\n }\n for (const child of this.children) {\n child.queuePendingLayouts();\n }\n }\n\n private queuePendingMeasurements (root: RootControl): void {\n if (this.pendingMeasurementChanges !== 0) {\n root.queueMeasurementChange(this);\n }\n for (const child of this.children) {\n child.queuePendingMeasurements(root);\n }\n }\n\n private notifyRootChanged (previousRoot: RootControl | null, nextRoot: RootControl | null): void {\n this.onRootChanged(previousRoot, nextRoot);\n for (const child of this.children) {\n child.notifyRootChanged(previousRoot, nextRoot);\n }\n }\n\n private getParentRect (): Rect {\n return {\n position: new Vector2(),\n size: this.parent?.size.clone() ?? new Vector2(),\n };\n }\n\n private computeOffsets (rect: Rect, parentRect: Rect): void {\n this.offsetMin.set(\n rect.position.x - parentRect.position.x - this.anchorMin.x * parentRect.size.x,\n rect.position.y - parentRect.position.y - this.anchorMin.y * parentRect.size.y,\n );\n this.offsetMax.set(\n rect.position.x + rect.size.x - parentRect.position.x - this.anchorMax.x * parentRect.size.x,\n rect.position.y + rect.size.y - parentRect.position.y - this.anchorMax.y * parentRect.size.y,\n );\n }\n\n private computeAnchors (rect: Rect, parentRect: Rect): void {\n if (parentRect.size.x !== 0) {\n this.anchorMin.x = (rect.position.x - parentRect.position.x - this.offsetMin.x) / parentRect.size.x;\n this.anchorMax.x = (rect.position.x + rect.size.x - parentRect.position.x - this.offsetMax.x) / parentRect.size.x;\n }\n if (parentRect.size.y !== 0) {\n this.anchorMin.y = (rect.position.y - parentRect.position.y - this.offsetMin.y) / parentRect.size.y;\n this.anchorMax.y = (rect.position.y + rect.size.y - parentRect.position.y - this.offsetMax.y) / parentRect.size.y;\n }\n }\n\n private isMouseRecursiveEnabled (): boolean {\n if (this.mouseBehaviorRecursive === MouseBehaviorRecursive.Inherited) {\n return this.parent?.isMouseRecursiveEnabled() ?? true;\n }\n\n return this.mouseBehaviorRecursive === MouseBehaviorRecursive.Enabled;\n }\n\n private isFocusRecursiveEnabled (): boolean {\n if (this.focusBehaviorRecursive === FocusBehaviorRecursive.Inherited) {\n return this.parent?.isFocusRecursiveEnabled() ?? true;\n }\n\n return this.focusBehaviorRecursive === FocusBehaviorRecursive.Enabled;\n }\n\n fromData (data: ControlData): void {\n if (data.anchorMin !== undefined) {\n this.setAnchorMin(...data.anchorMin);\n }\n if (data.anchorMax !== undefined) {\n this.setAnchorMax(...data.anchorMax);\n }\n if (data.offsetMin !== undefined) {\n this.setOffsetMin(...data.offsetMin);\n }\n if (data.offsetMax !== undefined) {\n this.setOffsetMax(...data.offsetMax);\n }\n if (data.pivot !== undefined) {\n this.setPivot(...data.pivot);\n }\n if (data.scale !== undefined) {\n this.setScale(...data.scale);\n }\n if (data.shear !== undefined) {\n this.setShear(...data.shear);\n }\n if (data.rotation !== undefined) {\n this.setRotation(data.rotation);\n }\n if (data.customMinimumSize !== undefined) {\n this.setCustomMinimumSize(...data.customMinimumSize);\n }\n if (data.customMaximumSize !== undefined) {\n this.setCustomMaximumSize(...data.customMaximumSize);\n }\n if (data.horizontalSizeFlags !== undefined || data.verticalSizeFlags !== undefined) {\n this.setSizeFlags(\n data.horizontalSizeFlags ?? this.horizontalSizeFlags,\n data.verticalSizeFlags ?? this.verticalSizeFlags,\n );\n }\n if (data.stretchRatio !== undefined) {\n this.stretchRatio = data.stretchRatio;\n }\n if (data.horizontalGrowDirection !== undefined) {\n this.horizontalGrowDirection = data.horizontalGrowDirection;\n }\n if (data.verticalGrowDirection !== undefined) {\n this.verticalGrowDirection = data.verticalGrowDirection;\n }\n if (data.mouseFilter !== undefined) {\n this.mouseFilter = data.mouseFilter;\n }\n if (data.mouseBehaviorRecursive !== undefined) {\n this.mouseBehaviorRecursive = data.mouseBehaviorRecursive;\n }\n if (data.mouseForcePassScrollEvents !== undefined) {\n this.mouseForcePassScrollEvents = data.mouseForcePassScrollEvents;\n }\n if (data.focusMode !== undefined) {\n this.focusMode = data.focusMode;\n }\n if (data.focusBehaviorRecursive !== undefined) {\n this.focusBehaviorRecursive = data.focusBehaviorRecursive;\n }\n if (data.defaultCursorShape !== undefined) {\n this.defaultCursorShape = data.defaultCursorShape;\n }\n if (data.clipContents !== undefined) {\n this.clipContents = data.clipContents;\n }\n if (data.themeTypeVariation !== undefined) {\n this.themeTypeVariation = data.themeTypeVariation;\n }\n if (data.themeOverrides !== undefined) {\n this.clearThemeOverrides();\n this.applyThemeOverridesFromData(data.themeOverrides);\n }\n }\n\n private applyThemeOverridesFromData (data: ThemeItemCollectionData): void {\n for (const name of Object.keys(data.colors ?? {})) {\n const value = data.colors![name];\n\n this.setThemeColorOverride(name, new Color(value.r, value.g, value.b, value.a));\n }\n for (const name of Object.keys(data.constants ?? {})) {\n this.setThemeConstantOverride(name, data.constants![name]);\n }\n for (const name of Object.keys(data.fonts ?? {})) {\n const value = data.fonts![name];\n\n this.setThemeFontOverride(name, {\n family: value.family,\n weight: value.weight ?? 'normal',\n style: value.style ?? 'normal',\n });\n }\n for (const name of Object.keys(data.fontSizes ?? {})) {\n this.setThemeFontSizeOverride(name, data.fontSizes![name]);\n }\n for (const name of Object.keys(data.icons ?? {})) {\n const value = data.icons![name];\n\n this.setThemeIconOverride(name, value ? this.engine.findObject<Texture>(value) : null);\n }\n for (const name of Object.keys(data.styleBoxes ?? {})) {\n this.setThemeStyleBoxOverride(name, styleBoxFromData(this.engine, data.styleBoxes![name]));\n }\n }\n}\n\n/**\n * A Control that automatically measures and arranges its child Controls.\n * Concrete layout algorithms live in GUI plugin packages.\n */\n@effectsClass('Container')\nexport class Container extends Control {\n static override readonly themeType: string = 'Container';\n private sortPending = false;\n private readonly childLayoutChanged = () => this.invalidateMeasurementsAndQueueSort();\n private readonly ownSizeChanged = () => this.queueSort();\n\n constructor (engine: Engine) {\n super(engine);\n this.on('sizeChanged', this.ownSizeChanged);\n }\n\n /** Defers and coalesces a layout pass until the GUI update phase. */\n queueSort (): void {\n const root = this.root;\n\n if (!root || this.sortPending) {\n return;\n }\n this.sortPending = true;\n root.queueLayout(this);\n }\n\n /** @internal */\n invokeSortChildren (): void {\n if (!this.sortPending || this.isDisposed) {\n return;\n }\n this.sortChildren();\n this.sortPending = false;\n }\n\n override changeChildIndex (child: Control, newIndex: number): void {\n const previousIndex = this.getChildIndex(child);\n\n super.changeChildIndex(child, newIndex);\n if (previousIndex !== this.getChildIndex(child)) {\n this.invalidateMeasurementsAndQueueSort();\n }\n }\n\n override addChildInternal (child: Control): void {\n const wasChild = this.children.includes(child);\n\n super.addChildInternal(child);\n if (!wasChild) {\n this.bindChild(child);\n this.invalidateMeasurementsAndQueueSort();\n }\n }\n\n override removeChildInternal (child: Control): void {\n const wasChild = this.children.includes(child);\n\n if (wasChild) {\n this.unbindChild(child);\n }\n super.removeChildInternal(child);\n if (wasChild) {\n this.invalidateMeasurementsAndQueueSort();\n }\n }\n\n override dispose (): void {\n this.off('sizeChanged', this.ownSizeChanged);\n for (const child of this.children.slice()) {\n this.unbindChild(child);\n }\n super.dispose();\n }\n\n /**\n * Applies size flags and strict container geometry to a child. Automatic\n * layout owns anchors, rotation, scale and shear; pivot is intentionally kept.\n */\n fitChildInRect (child: Control, rect: Rect): void {\n const minimum = child.getBoundMinimumSize();\n const desired = child.getBoundDesiredSize();\n const maximum = child.getCombinedMaximumSize();\n const horizontal = this.fitAxis(\n rect.position.x,\n rect.size.x,\n minimum.x,\n desired.x,\n maximum.x,\n child.horizontalSizeFlags,\n );\n const vertical = this.fitAxis(\n rect.position.y,\n rect.size.y,\n minimum.y,\n desired.y,\n maximum.y,\n child.verticalSizeFlags,\n );\n\n child.anchorMin.set(0, 0);\n child.anchorMax.set(0, 0);\n child.setRotation(0);\n child.setScale(1, 1);\n child.setShear(0, 0);\n child.setRect({\n position: new Vector2(horizontal.position, vertical.position),\n size: new Vector2(horizontal.size, vertical.size),\n });\n }\n\n /** Returns direct children that participate in layout. Disabled children still participate. */\n protected getLayoutChildren (): Control[] {\n return this.children.filter(child => child.visible && !child.isDisposed);\n }\n\n protected sortChildren (): void {}\n\n private bindChild (child: Control): void {\n child.on('sizeFlagsChanged', this.childLayoutChanged);\n child.on('visibilityChanged', this.childLayoutChanged);\n }\n\n private unbindChild (child: Control): void {\n child.off('sizeFlagsChanged', this.childLayoutChanged);\n child.off('visibilityChanged', this.childLayoutChanged);\n }\n\n private invalidateMeasurementsAndQueueSort (): void {\n this.invalidateMeasurementsFromChild();\n }\n\n /** @internal */\n invalidateMeasurementsFromChild (): void {\n this.invalidateMeasurementChanges(MeasurementChange.All);\n this.queueSort();\n }\n\n private fitAxis (\n position: number,\n available: number,\n minimum: number,\n desired: number,\n maximum: number,\n flags: SizeFlags,\n ): { position: number, size: number } {\n const wantsFill = (flags & SizeFlags.Fill) !== 0;\n let size = wantsFill ? available : Math.min(available, desired);\n\n size = Math.max(minimum, clampToMaximum(size, maximum));\n const remaining = available - size;\n let adjustedPosition = position;\n\n if ((flags & SizeFlags.ShrinkEnd) !== 0) {\n adjustedPosition += remaining;\n } else if ((flags & SizeFlags.ShrinkCenter) !== 0) {\n adjustedPosition += remaining / 2;\n }\n\n return { position: adjustedPosition, size };\n }\n}\n\n/** Base class for GUI tree roots and input dispatchers. */\nexport abstract class RootControl extends Control {\n protected readonly rootEventEmitter = new EventEmitter<RootControlEvent>();\n\n override on<E extends keyof RootControlEvent> (\n eventName: E,\n listener: EventEmitterListener<RootControlEvent[E]>,\n ): void {\n if (eventName === 'guiFocusChanged') {\n this.rootEventEmitter.on(eventName, listener);\n } else {\n super.on(eventName, listener as never);\n }\n }\n\n override off<E extends keyof RootControlEvent> (\n eventName: E,\n listener: EventEmitterListener<RootControlEvent[E]>,\n ): void {\n if (eventName === 'guiFocusChanged') {\n this.rootEventEmitter.off(eventName, listener);\n } else {\n super.off(eventName, listener as never);\n }\n }\n\n abstract queueLayout (container: Container): void;\n abstract queueMeasurementChange (control: Control): void;\n abstract getMousePosition (): Vector2;\n abstract guiGetFocusOwner (): Control | null;\n abstract guiControlHasFocus (control: Control, visibleOnly?: boolean): boolean;\n abstract guiIsDragging (): boolean;\n abstract guiGetDragData (): unknown;\n abstract guiIsDragSuccessful (): boolean;\n abstract guiCancelDrag (): void;\n abstract cancelPointerInput (): void;\n abstract cancelPointerPress (control: Control, touchIndex: number): void;\n abstract grabControlFocus (control: Control, hideFocus?: boolean): void;\n abstract grabControlClickFocus (control: Control): void;\n abstract releaseControlFocus (control?: Control): void;\n abstract warpControlMouse (position: Vector2): void;\n abstract updateMouseCursorState (): void;\n abstract controlStateChanged (control: Control): void;\n abstract controlRemoved (control: Control): void;\n abstract controlTreeChanged (): void;\n abstract popupControl (control: Control, source: Control | null, position: Vector2): void;\n abstract closePopupControl (control: Control): void;\n}\n\nThemeRegistry.registerType(Control.themeType, null);\nThemeRegistry.registerType(Container.themeType, Control.themeType);\n","import type { UICanvas } from '../components/ui-canvas';\nimport {\n InputEvent,\n InputEventKey,\n InputEventMouse,\n InputEventMouseButton,\n InputEventMouseMotion,\n InputEventScreenDrag,\n InputEventScreenTouch,\n MouseButton,\n MouseButtonMask,\n math,\n} from '@galacean/effects';\nimport type {\n Engine,\n} from '@galacean/effects';\nimport {\n CursorShape,\n FocusMode,\n MouseBehaviorRecursive,\n MouseFilter,\n} from './enums';\nimport type { CursorStyle } from './enums';\nimport type { Container } from './control';\nimport { Control, RootControl } from './control';\nimport type { Theme } from './theme';\n\ntype Matrix3 = math.Matrix3;\ntype Vector2 = math.Vector2;\nconst Matrix3 = math.Matrix3;\nconst Vector2 = math.Vector2;\n\nconst cursorNames: Record<CursorShape, string> = {\n [CursorShape.Arrow]: 'default',\n [CursorShape.Ibeam]: 'text',\n [CursorShape.PointingHand]: 'pointer',\n [CursorShape.Cross]: 'crosshair',\n [CursorShape.Wait]: 'wait',\n [CursorShape.Busy]: 'progress',\n [CursorShape.Drag]: 'grab',\n [CursorShape.CanDrop]: 'copy',\n [CursorShape.Forbidden]: 'not-allowed',\n [CursorShape.Vsize]: 'ns-resize',\n [CursorShape.Hsize]: 'ew-resize',\n [CursorShape.Bdiagsize]: 'nesw-resize',\n [CursorShape.Fdiagsize]: 'nwse-resize',\n [CursorShape.Move]: 'move',\n [CursorShape.Vsplit]: 'row-resize',\n [CursorShape.Hsplit]: 'col-resize',\n [CursorShape.Help]: 'help',\n};\n\nfunction getButtonMask (button: MouseButton): number {\n switch (button) {\n case MouseButton.Left: return MouseButtonMask.Left;\n case MouseButton.Right: return MouseButtonMask.Right;\n case MouseButton.Middle: return MouseButtonMask.Middle;\n case MouseButton.Xbutton1: return MouseButtonMask.Xbutton1;\n case MouseButton.Xbutton2: return MouseButtonMask.Xbutton2;\n default: return MouseButtonMask.None;\n }\n}\n\nfunction isWheelButton (button: MouseButton): boolean {\n return button >= MouseButton.WheelUp && button <= MouseButton.WheelRight;\n}\n\ntype GUIState = {\n mouseFocus: Control | null,\n mouseClickGrabber: Control | null,\n mouseFocusMask: number,\n mouseOver: Control | null,\n mouseOverHierarchy: Control[],\n touchFocus: Map<number, Control>,\n keyFocus: Control | null,\n hideFocus: boolean,\n dragAccum: Vector2,\n dragAttempted: boolean,\n dragging: boolean,\n dragData: unknown,\n dragMouseOver: Control | null,\n dragSuccessful: boolean,\n lastMousePosition: Vector2,\n sendingMouseEnterExit: boolean,\n mouseOverUpdatePending: boolean,\n};\n\ntype PopupState = {\n control: Control,\n restoreFocus: Control | null,\n restoreFocusHidden: boolean,\n originalTheme: Theme | null,\n};\n\nclass PopupLayer extends Control {\n closeTop?: () => void;\n\n constructor (engine: Engine) {\n super(engine);\n this.mouseFilter = MouseFilter.Stop;\n this.visible = false;\n }\n\n override onMouseDown (event: InputEventMouseButton): void {\n if (event.buttonIndex === MouseButton.Left || event.buttonIndex === MouseButton.Right) {\n this.closeTop?.();\n event.accept();\n }\n }\n}\n\n/** CanvasLayer-like boundary for a single UICanvas GUI tree. */\nexport class CanvasRootControl extends Control {\n readonly canvas: UICanvas;\n\n constructor (engine: Engine, canvas: UICanvas) {\n super(engine);\n this.canvas = canvas;\n this.mouseFilter = MouseFilter.Ignore;\n this.setSize(engine.canvas.width, engine.canvas.height);\n }\n\n get inputDisabled (): boolean {\n return !this.canvas.receivesEvents || !this.canvas.enabled || !this.canvas.item?.isActive;\n }\n}\n\n/** Global ordered collection of UICanvas roots. */\nexport class CanvasContainer extends Control {\n constructor (engine: Engine) {\n super(engine);\n this.mouseFilter = MouseFilter.Ignore;\n this.setSize(engine.canvas.width, engine.canvas.height);\n }\n\n sortCanvases (): void {\n this.children.sort((left, right) =>\n (left as CanvasRootControl).canvas.order - (right as CanvasRootControl).canvas.order);\n }\n\n override addChildInternal (child: Control): void {\n super.addChildInternal(child);\n child.setSize(this.width, this.height);\n this.sortCanvases();\n }\n\n protected override drawChildren (): void {\n this.sortCanvases();\n const graphics = this.engine.graphics;\n\n if (this.clipContents) {\n graphics.pushClipRect(0, 0, this.width, this.height);\n }\n for (const child of this.children) {\n const root = child as CanvasRootControl;\n\n if (root.canvas.isVisible) {\n root.drawInternal();\n }\n }\n if (this.clipContents) {\n graphics.popClipRect();\n }\n }\n\n}\n\n/** Engine window GUI root. Routes events across all UICanvas roots. */\nexport class WindowRootControl extends RootControl {\n readonly canvases: CanvasContainer;\n private readonly popupLayer: PopupLayer;\n private readonly popupStack: PopupState[] = [];\n dragThreshold = 10;\n private lastInput: InputEvent | null = null;\n private readonly dirtyContainers = new Set<Container>();\n private readonly dirtyMeasurements = new Set<Control>();\n private readonly gui: GUIState = {\n mouseFocus: null,\n mouseClickGrabber: null,\n mouseFocusMask: MouseButtonMask.None,\n mouseOver: null,\n mouseOverHierarchy: [],\n touchFocus: new Map(),\n keyFocus: null,\n hideFocus: false,\n dragAccum: new Vector2(),\n dragAttempted: false,\n dragging: false,\n dragData: null,\n dragMouseOver: null,\n dragSuccessful: false,\n lastMousePosition: new Vector2(Number.NEGATIVE_INFINITY, Number.NEGATIVE_INFINITY),\n sendingMouseEnterExit: false,\n mouseOverUpdatePending: false,\n };\n\n constructor (engine: Engine) {\n super(engine);\n this.mouseFilter = MouseFilter.Ignore;\n this.setSize(engine.canvas.width, engine.canvas.height);\n this.canvases = new CanvasContainer(engine);\n this.canvases.parent = this;\n this.popupLayer = new PopupLayer(engine);\n this.popupLayer.setAnchorMax(1, 1);\n this.popupLayer.setOffsetMax(0, 0);\n this.popupLayer.closeTop = () => {\n const top = this.popupStack[this.popupStack.length - 1];\n\n if (top) {this.closePopupControl(top.control);}\n };\n this.popupLayer.parent = this;\n }\n\n pushInput (event: InputEvent): void {\n this.lastInput = event;\n this.cleanupInternalState();\n this.processGUIInput(event);\n this.postGrabClickFocus();\n }\n\n isInputHandled (): boolean {\n return this.lastInput?.isAccepted() ?? false;\n }\n\n override getMousePosition (): Vector2 {\n return this.gui.lastMousePosition.clone();\n }\n\n override guiGetFocusOwner (): Control | null {\n return this.isFocusTargetUsable(this.gui.keyFocus) ? this.gui.keyFocus : null;\n }\n\n override guiControlHasFocus (control: Control, visibleOnly = false): boolean {\n return this.guiGetFocusOwner() === control && (!visibleOnly || !this.gui.hideFocus);\n }\n\n guiReleaseFocus (): void {\n this.releaseControlFocus();\n }\n\n override guiIsDragging (): boolean {\n return this.gui.dragging;\n }\n\n override guiGetDragData (): unknown {\n return this.gui.dragData;\n }\n\n override guiIsDragSuccessful (): boolean {\n return this.gui.dragSuccessful;\n }\n\n override guiCancelDrag (): void {\n this.endDragging(false);\n }\n\n override grabControlFocus (control: Control, hideFocus = false): void {\n if (!this.isFocusTargetUsable(control)) {\n return;\n }\n if (this.gui.keyFocus === control) {\n this.gui.hideFocus = hideFocus;\n\n return;\n }\n const previous = this.gui.keyFocus;\n\n this.gui.keyFocus = control;\n this.gui.hideFocus = hideFocus;\n if (previous && !previous.isDisposed) {\n previous.onLostFocus();\n }\n control.onGotFocus();\n this.notifyFocusOwnerChanged(control);\n }\n\n override grabControlClickFocus (control: Control): void {\n if (this.isControlValid(control)) {\n this.gui.mouseClickGrabber = control;\n queueMicrotask(() => this.postGrabClickFocus());\n }\n }\n\n override releaseControlFocus (control?: Control): void {\n const previous = this.gui.keyFocus;\n\n if (!previous || (control && previous !== control)) {\n return;\n }\n this.gui.keyFocus = null;\n this.gui.hideFocus = false;\n if (!previous.isDisposed) {\n previous.onLostFocus();\n }\n this.notifyFocusOwnerChanged(null);\n }\n\n override warpControlMouse (position: Vector2): void {\n this.gui.lastMousePosition.copyFrom(position);\n this.updateMouseOver(position);\n this.updateMouseCursorState();\n }\n\n override updateMouseCursorState (): void {\n const position = this.gui.lastMousePosition;\n const target = this.isControlUsable(this.gui.mouseFocus)\n ? this.gui.mouseFocus\n : this.isControlUsable(this.gui.mouseOver)\n ? this.gui.mouseOver\n : null;\n\n this.updateCursor(target, position);\n }\n\n override controlStateChanged (control: Control): void {\n if (!this.isControlUsable(control)) {\n this.dropControlState(control);\n }\n this.updateMouseOverHierarchy();\n }\n\n override controlRemoved (control: Control): void {\n this.dropControlState(control);\n this.cleanupInternalState();\n this.updateMouseOverHierarchy();\n }\n\n override controlTreeChanged (): void {\n this.updateMouseOverHierarchy();\n }\n\n override popupControl (control: Control, source: Control | null, position: Vector2): void {\n this.closePopupControl(control);\n const originalTheme = control.theme;\n const focusOwner = this.guiGetFocusOwner();\n const restoreFocus = source ?? focusOwner;\n const restoreFocusHidden = restoreFocus === focusOwner && !!restoreFocus && !restoreFocus.hasFocus(true);\n\n if (!originalTheme) {control.theme = source?.getInheritedTheme() ?? null;}\n const desired = control.getBoundDesiredSize();\n const width = Math.max(control.width, desired.x);\n const height = Math.max(control.height, desired.y);\n\n control.setSize(width, height);\n control.setPosition(\n Math.max(0, Math.min(position.x, this.width - width)),\n Math.max(0, Math.min(position.y, this.height - height)),\n );\n control.parent = this.popupLayer;\n control.visible = true;\n this.popupLayer.visible = true;\n this.popupStack.push({ control, restoreFocus, restoreFocusHidden, originalTheme });\n control.onPopupOpened();\n control.grabFocus();\n }\n\n override closePopupControl (control: Control): void {\n const index = this.popupStack.findIndex(state => state.control === control);\n\n if (index === -1) {return;}\n const removed = this.popupStack.splice(index);\n\n for (let removedIndex = removed.length - 1; removedIndex >= 0; removedIndex--) {\n const state = removed[removedIndex];\n\n state.control.visible = false;\n state.control.parent = null;\n state.control.theme = state.originalTheme;\n state.control.onPopupClosed();\n }\n this.popupLayer.visible = this.popupStack.length > 0;\n const { restoreFocus: restore, restoreFocusHidden } = removed[0];\n\n if (restore && !restore.isDisposed && restore.root === this) {restore.grabFocus(restoreFocusHidden);}\n }\n\n override queueLayout (container: Container): void {\n if (!container.isDisposed) {\n this.dirtyContainers.add(container);\n }\n }\n\n override queueMeasurementChange (control: Control): void {\n if (!control.isDisposed) {\n this.dirtyMeasurements.add(control);\n }\n }\n\n override cancelPointerInput (): void {\n this.dropMouseFocus();\n this.dropMouseOver();\n this.gui.touchFocus.clear();\n this.endDragging(false);\n this.releaseControlFocus();\n }\n\n onCanvasBlur (): void {\n const target = this.gui.mouseFocus;\n const mask = this.gui.mouseFocusMask;\n\n this.dropMouseFocus();\n if (!target || target.isDisposed) {\n return;\n }\n for (const button of [MouseButton.Left, MouseButton.Right, MouseButton.Middle]) {\n if ((mask & getButtonMask(button)) === 0) {\n continue;\n }\n const event = new InputEventMouseButton();\n const position = target.makePositionLocal(this.gui.lastMousePosition);\n\n event.device = InputEvent.deviceIdInternal;\n event.buttonIndex = button;\n event.pressed = false;\n event.position.copyFrom(position);\n event.globalPosition.copyFrom(position);\n this.callControlInput(target, event);\n }\n }\n\n override cancelPointerPress (control: Control, touchIndex: number): void {\n if (!this.isControlValid(control)) {\n return;\n }\n if (this.controlBelongsToSubtree(this.gui.mouseFocus, control)) {\n this.gui.mouseFocus = control;\n }\n if (this.controlBelongsToSubtree(this.gui.mouseClickGrabber, control)) {\n this.gui.mouseClickGrabber = null;\n }\n if (this.controlBelongsToSubtree(this.gui.touchFocus.get(touchIndex) ?? null, control)) {\n this.gui.touchFocus.set(touchIndex, control);\n }\n this.endDragging(false);\n }\n\n resize (width: number, height: number): void {\n this.setSize(width, height);\n this.canvases.setSize(width, height);\n for (const root of this.canvases.children as CanvasRootControl[]) {\n root.setSize(width, height);\n }\n this.popupLayer.setSize(width, height);\n }\n\n render (): void {\n this.flushLayout();\n if (this.canvases.children.length === 0) {\n return;\n }\n this.engine.graphics.begin();\n this.drawInternal();\n this.engine.graphics.end();\n }\n\n override update (deltaTime: number): void {\n if (this.gui.mouseOverUpdatePending) {\n this.gui.mouseOverUpdatePending = false;\n this.updateMouseOverHierarchy();\n }\n super.update(deltaTime);\n this.flushLayout();\n }\n\n override dispose (): void {\n this.cancelPointerInput();\n this.dirtyContainers.clear();\n this.dirtyMeasurements.clear();\n for (const state of this.popupStack.splice(0)) {\n state.control.parent = null;\n state.control.theme = state.originalTheme;\n state.control.onPopupClosed();\n }\n super.dispose();\n }\n\n private flushLayout (): void {\n let round = 0;\n\n while (this.dirtyMeasurements.size > 0 || this.dirtyContainers.size > 0) {\n if (round++ >= 32) {\n this.dirtyMeasurements.clear();\n this.dirtyContainers.clear();\n throw new Error('GUI layout did not converge after 32 rounds.');\n }\n if (this.dirtyMeasurements.size > 0) {\n const measurements = Array.from(this.dirtyMeasurements);\n\n this.dirtyMeasurements.clear();\n measurements.sort((left, right) => this.getControlDepth(right) - this.getControlDepth(left));\n for (const control of measurements) {\n if (control.root === this && !control.isDisposed) {\n control.invokeMeasurementChanges();\n }\n }\n continue;\n }\n const batch = Array.from(this.dirtyContainers);\n\n this.dirtyContainers.clear();\n batch.sort((left, right) => this.getControlDepth(left) - this.getControlDepth(right));\n for (const container of batch) {\n if (container.root === this && !container.isDisposed) {\n container.invokeSortChildren();\n }\n }\n }\n }\n\n private getControlDepth (control: Control): number {\n let depth = 0;\n let parent = control.parent;\n\n while (parent) {\n depth++;\n parent = parent.parent;\n }\n\n return depth;\n }\n\n private processGUIInput (event: InputEvent): void {\n if (event instanceof InputEventKey) {\n const target = this.guiGetFocusOwner();\n\n if (target) {\n this.callGUIInput(target, event);\n }\n } else if (event instanceof InputEventMouse) {\n this.gui.lastMousePosition.copyFrom(event.globalPosition);\n const target = this.updateMouseOver(event.globalPosition);\n\n if (event instanceof InputEventMouseButton) {\n this.processMouseButton(event, target);\n } else if (event instanceof InputEventMouseMotion) {\n this.processMouseMotion(event, target);\n }\n } else if (event instanceof InputEventScreenTouch) {\n this.processScreenTouch(event);\n } else if (event instanceof InputEventScreenDrag) {\n this.processScreenDrag(event);\n }\n }\n\n private processMouseButton (event: InputEventMouseButton, mouseOver: Control | null): void {\n if (isWheelButton(event.buttonIndex)) {\n if (mouseOver) {\n this.callGUIInput(mouseOver, event);\n }\n\n return;\n }\n const mask = getButtonMask(event.buttonIndex);\n\n if (event.isPressed()) {\n const target = this.gui.mouseFocusMask !== 0\n ? this.gui.mouseFocus\n : mouseOver;\n\n this.gui.mouseFocus = target;\n if (!target) {\n if (event.buttonIndex === MouseButton.Left && this.gui.keyFocus) {\n this.gui.hideFocus = true;\n }\n\n return;\n }\n this.gui.mouseFocusMask |= mask;\n if (event.buttonIndex === MouseButton.Left) {\n this.gui.dragAccum.setZero();\n this.gui.dragAttempted = false;\n this.findClickFocus(target);\n }\n this.callGUIInput(target, event);\n } else {\n if (event.buttonIndex === MouseButton.Left && this.gui.dragging) {\n this.finishDrop(event.globalPosition);\n }\n this.gui.mouseFocusMask &= ~mask;\n const target = this.gui.mouseFocus;\n\n if (this.gui.mouseFocusMask === 0) {\n this.gui.mouseFocus = null;\n }\n if (this.isControlUsable(target)) {\n this.callGUIInput(target, event);\n }\n }\n }\n\n private processMouseMotion (event: InputEventMouseMotion, mouseOver: Control | null): void {\n if (!this.gui.dragging && !this.gui.dragAttempted && this.gui.mouseFocus &&\n (this.gui.mouseFocusMask & MouseButtonMask.Left) !== 0) {\n this.gui.dragAccum.add(event.relative);\n if (this.gui.dragAccum.length() > this.dragThreshold) {\n const origin = event.globalPosition.clone().subtract(this.gui.dragAccum);\n\n this.beginDragging(this.gui.mouseFocus, origin);\n this.gui.dragAttempted = true;\n }\n }\n const target = this.isControlUsable(this.gui.mouseFocus)\n ? this.gui.mouseFocus\n : mouseOver;\n\n if (target) {\n this.callGUIInput(target, event);\n }\n if (this.gui.dragging) {\n this.gui.dragMouseOver = this.findDropTarget(mouseOver, event.globalPosition);\n }\n this.updateCursor(target, event.globalPosition);\n }\n\n private processScreenTouch (event: InputEventScreenTouch): void {\n let target: Control | null;\n\n if (event.isPressed()) {\n target = this.findInputControl(event.position);\n if (target) {\n this.gui.touchFocus.set(event.index, target);\n }\n } else {\n target = this.gui.touchFocus.get(event.index) ?? null;\n this.gui.touchFocus.delete(event.index);\n }\n if (this.isControlUsable(target)) {\n this.callGUIInput(target, event);\n }\n }\n\n private processScreenDrag (event: InputEventScreenDrag): void {\n const target = this.gui.touchFocus.get(event.index) ?? this.findInputControl(event.position);\n\n if (this.isControlUsable(target)) {\n this.callGUIInput(target, event);\n }\n }\n\n private callGUIInput (target: Control, event: InputEvent): void {\n let current: Control | null = target;\n const pointerEvent = event instanceof InputEventMouse || event instanceof InputEventScreenTouch ||\n event instanceof InputEventScreenDrag;\n\n while (current && current !== this && this.isControlUsable(current)) {\n const filter = current.getEffectiveMouseFilter();\n\n if (filter !== MouseFilter.Ignore) {\n const localEvent = event.xformedBy(this.getGlobalInverse(current));\n\n this.callControlInput(current, localEvent);\n if (localEvent.isAccepted()) {\n event.accept();\n }\n }\n const forcePassWheel = event instanceof InputEventMouseButton && isWheelButton(event.buttonIndex) &&\n current.mouseForcePassScrollEvents;\n const forcePassTouch = (event instanceof InputEventScreenTouch || event instanceof InputEventScreenDrag) &&\n current.mouseForcePassScrollEvents;\n\n if (event.isAccepted() || (filter === MouseFilter.Stop && pointerEvent && !forcePassWheel && !forcePassTouch)) {\n event.accept();\n\n return;\n }\n current = current.parent;\n }\n }\n\n private callControlInput (control: Control, event: InputEvent): void {\n if (event instanceof InputEventMouseButton) {\n if (isWheelButton(event.buttonIndex)) {\n control.onMouseWheel(event);\n } else if (event.isPressed()) {\n control.onMouseDown(event);\n } else {\n control.onMouseUp(event);\n }\n } else if (event instanceof InputEventMouseMotion) {\n control.onMouseMove(event);\n } else if (event instanceof InputEventScreenTouch) {\n if (event.isPressed()) {\n control.onTouchDown(event);\n } else {\n control.onTouchUp(event);\n }\n } else if (event instanceof InputEventScreenDrag) {\n control.onTouchMove(event);\n } else if (event instanceof InputEventKey) {\n if (event.isPressed()) {\n control.onKeyDown(event);\n } else if (event.isReleased()) {\n control.onKeyUp(event);\n }\n }\n }\n\n private findInputControl (position: Vector2): Control | null {\n if (this.popupLayer.visible) {\n return this.findControlAtPosition(this.popupLayer, position) ?? this.popupLayer;\n }\n this.canvases.sortCanvases();\n\n return this.findControlAtPosition(this.canvases, position, true);\n }\n\n private findControlAtPosition (\n container: Control,\n positionInParent: Vector2,\n skipSelf = false,\n parentEnabled = true,\n parentMouseEnabled = true,\n ): Control | null {\n if (!container.visible || container.isDisposed ||\n (container instanceof CanvasRootControl && (!container.canvas.isVisible || container.inputDisabled))) {\n return null;\n }\n const localPosition = this.toControlLocal(container, positionInParent);\n\n if (!localPosition) {\n return null;\n }\n const enabled = parentEnabled && container.enabled;\n const mouseEnabled = container.mouseBehaviorRecursive === MouseBehaviorRecursive.Inherited\n ? parentMouseEnabled\n : container.mouseBehaviorRecursive === MouseBehaviorRecursive.Enabled;\n\n if (container.clipContents && !container.hasPoint(localPosition)) {\n return null;\n }\n for (let index = container.children.length - 1; index >= 0; index--) {\n const child = container.children[index];\n\n if (!container.intersectsChildContent(child, localPosition)) {\n continue;\n }\n const found = this.findControlAtPosition(child, localPosition, false, enabled, mouseEnabled);\n\n if (found) {\n return found;\n }\n }\n if (!skipSelf && enabled && mouseEnabled && container.mouseFilter !== MouseFilter.Ignore &&\n container.hasPoint(localPosition)) {\n return container;\n }\n\n return null;\n }\n\n private toControlLocal (control: Control, positionInParent: Vector2): Vector2 | null {\n const elements = control.getTransform2D().elements;\n const determinant = elements[0] * elements[4] - elements[1] * elements[3];\n\n if (Math.abs(determinant) < 1e-12) {\n return null;\n }\n const x = positionInParent.x - elements[6];\n const y = positionInParent.y - elements[7];\n\n return new Vector2(\n (elements[4] * x - elements[3] * y) / determinant,\n (elements[0] * y - elements[1] * x) / determinant,\n );\n }\n\n private updateMouseOver (position: Vector2): Control | null {\n if (this.gui.sendingMouseEnterExit) {\n this.gui.mouseOverUpdatePending = true;\n\n return this.gui.mouseOver;\n }\n this.gui.mouseOverUpdatePending = false;\n const target = this.findInputControl(position);\n const next = this.buildHoverHierarchy(target);\n\n this.applyMouseOver(target, next, position);\n\n return this.isControlUsable(target) ? target : null;\n }\n\n private updateMouseOverHierarchy (): void {\n const current = this.gui.mouseOver;\n\n if (!current || this.gui.mouseOverHierarchy.length === 0) {\n return;\n }\n if (this.gui.sendingMouseEnterExit) {\n this.gui.mouseOverUpdatePending = true;\n\n return;\n }\n if (!this.isControlUsable(current)) {\n this.dropMouseOver();\n\n return;\n }\n const next = this.buildHoverHierarchy(current);\n const target = current.getEffectiveMouseFilter() === MouseFilter.Ignore ? null : current;\n\n this.applyMouseOver(target, next, this.gui.lastMousePosition);\n }\n\n private applyMouseOver (target: Control | null, next: Control[], position: Vector2): void {\n const previous = this.gui.mouseOverHierarchy;\n let common = 0;\n\n while (common < previous.length && common < next.length && previous[common] === next[common]) {\n common++;\n }\n this.gui.mouseOver = target;\n this.gui.mouseOverHierarchy = next;\n this.gui.sendingMouseEnterExit = true;\n for (let index = previous.length - 1; index >= common; index--) {\n if (!previous[index].isDisposed) {\n previous[index].onMouseLeave();\n }\n }\n for (let index = common; index < next.length; index++) {\n next[index].onMouseEnter(this.toLocal(next[index], position));\n }\n this.gui.sendingMouseEnterExit = false;\n }\n\n private buildHoverHierarchy (target: Control | null): Control[] {\n const hierarchy: Control[] = [];\n let current = target;\n\n while (current && current !== this) {\n const filter = current.getEffectiveMouseFilter();\n\n if (filter !== MouseFilter.Ignore) {\n hierarchy.push(current);\n }\n if (filter === MouseFilter.Stop) {\n break;\n }\n current = current.parent;\n }\n hierarchy.reverse();\n\n return hierarchy;\n }\n\n private findClickFocus (target: Control): void {\n let current: Control | null = target;\n\n while (current && current !== this) {\n const mode = current.getFocusModeWithOverride();\n\n if (mode === FocusMode.Click || mode === FocusMode.All) {\n this.grabControlFocus(current, true);\n\n return;\n }\n if (current.getEffectiveMouseFilter() === MouseFilter.Stop) {\n return;\n }\n current = current.parent;\n }\n }\n\n private beginDragging (source: Control, position: Vector2): void {\n let current: Control | null = source;\n\n while (current && current !== this) {\n const data = current.invokeGetDragData(this.toLocal(current, position));\n\n if (data !== null && data !== undefined) {\n this.gui.dragging = true;\n this.gui.dragData = data;\n this.gui.mouseFocus = null;\n this.gui.mouseFocusMask = MouseButtonMask.None;\n\n return;\n }\n if (current.getEffectiveMouseFilter() === MouseFilter.Stop) {\n return;\n }\n current = current.parent;\n }\n }\n\n private finishDrop (position: Vector2): void {\n const target = this.findDropTarget(this.findInputControl(position), position);\n\n if (target) {\n target.invokeDropData(this.toLocal(target, position), this.gui.dragData);\n }\n this.endDragging(!!target);\n }\n\n private findDropTarget (target: Control | null, position: Vector2): Control | null {\n let current = target;\n\n while (current && current !== this) {\n if (current.invokeCanDropData(this.toLocal(current, position), this.gui.dragData)) {\n return current;\n }\n if (current.getEffectiveMouseFilter() === MouseFilter.Stop) {\n return null;\n }\n current = current.parent;\n }\n\n return null;\n }\n\n private endDragging (successful: boolean): void {\n this.gui.dragSuccessful = successful;\n this.gui.dragging = false;\n this.gui.dragData = null;\n this.gui.dragMouseOver = null;\n }\n\n private updateCursor (target: Control | null, position: Vector2): void {\n let current = target;\n let cursor: CursorStyle = CursorShape.Arrow;\n\n while (current && current !== this) {\n const candidate = current.getCursorShape(this.toLocal(current, position));\n\n if (candidate !== CursorShape.Arrow) {\n cursor = candidate;\n\n break;\n }\n if (current.getEffectiveMouseFilter() === MouseFilter.Stop) {\n break;\n }\n current = current.parent;\n }\n this.engine.canvas.style.cursor = typeof cursor === 'string' ? cursor : cursorNames[cursor];\n }\n\n private postGrabClickFocus (): void {\n const target = this.gui.mouseClickGrabber;\n\n this.gui.mouseClickGrabber = null;\n if (this.isControlUsable(target)) {\n this.gui.mouseFocus = target;\n }\n }\n\n private cleanupInternalState (): void {\n if (!this.isControlUsable(this.gui.mouseFocus)) {\n this.dropMouseFocus();\n }\n if (this.gui.keyFocus && !this.isFocusTargetUsable(this.gui.keyFocus)) {\n this.releaseControlFocus(this.gui.keyFocus);\n }\n for (const [index, control] of this.gui.touchFocus) {\n if (!this.isControlUsable(control)) {\n this.gui.touchFocus.delete(index);\n }\n }\n }\n\n private dropMouseFocus (): void {\n this.gui.mouseFocus = null;\n this.gui.mouseFocusMask = MouseButtonMask.None;\n }\n\n private dropMouseOver (): void {\n if (this.gui.sendingMouseEnterExit) {\n this.gui.mouseOverUpdatePending = true;\n\n return;\n }\n for (let index = this.gui.mouseOverHierarchy.length - 1; index >= 0; index--) {\n const control = this.gui.mouseOverHierarchy[index];\n\n if (!control.isDisposed) {\n control.onMouseLeave();\n }\n }\n this.gui.mouseOver = null;\n this.gui.mouseOverHierarchy = [];\n }\n\n private dropControlState (control: Control): void {\n if (this.controlBelongsToSubtree(this.gui.mouseFocus, control)) {\n this.dropMouseFocus();\n }\n if (this.controlBelongsToSubtree(this.gui.mouseClickGrabber, control)) {\n this.gui.mouseClickGrabber = null;\n }\n if (this.controlBelongsToSubtree(this.gui.keyFocus, control)) {\n this.releaseControlFocus(this.gui.keyFocus ?? undefined);\n }\n if (this.controlBelongsToSubtree(this.gui.mouseOver, control)) {\n this.dropMouseOver();\n }\n if (this.controlBelongsToSubtree(this.gui.dragMouseOver, control)) {\n this.gui.dragMouseOver = null;\n }\n for (const [index, target] of this.gui.touchFocus) {\n if (this.controlBelongsToSubtree(target, control)) {\n this.gui.touchFocus.delete(index);\n }\n }\n }\n\n private getGlobalInverse (control: Control): Matrix3 {\n const transform = control.getGlobalTransform2D().clone();\n\n return Math.abs(transform.determinant()) < 1e-12 ? new Matrix3() : transform.invert();\n }\n\n private toLocal (control: Control, position: Vector2): Vector2 {\n const elements = this.getGlobalInverse(control).elements;\n\n return new Vector2(\n elements[0] * position.x + elements[3] * position.y + elements[6],\n elements[1] * position.x + elements[4] * position.y + elements[7],\n );\n }\n\n private controlBelongsToSubtree (control: Control | null, subtree: Control): boolean {\n let current = control;\n\n while (current) {\n if (current === subtree) {\n return true;\n }\n current = current.parent;\n }\n\n return false;\n }\n\n private isControlValid (control: Control | null): control is Control {\n return !!control && !control.isDisposed && control.root === this;\n }\n\n private isControlUsable (control: Control | null): control is Control {\n if (!this.isControlValid(control) || !control.visibleInHierarchy || !control.enabledInHierarchy) {\n return false;\n }\n const root = this.findCanvasRoot(control);\n\n return !root || !root.inputDisabled;\n }\n\n private findCanvasRoot (control: Control): CanvasRootControl | null {\n let current: Control | null = control;\n\n while (current && current !== this) {\n if (current instanceof CanvasRootControl) {\n return current;\n }\n current = current.parent;\n }\n\n return null;\n }\n\n private notifyFocusOwnerChanged (control: Control | null): void {\n this.rootEventEmitter.emit('guiFocusChanged', control);\n }\n\n private isFocusTargetUsable (control: Control | null): control is Control {\n return this.isControlUsable(control) && control.getFocusModeWithOverride() !== FocusMode.None;\n }\n}\n","import { Component } from '@galacean/effects';\nimport type { Engine, InputEvent } from '@galacean/effects';\nimport { WindowRootControl } from '../core/roots';\n\n/** Engine-level owner for the GUI window root and its runtime subscriptions. */\nexport class GUIWindowComponent extends Component {\n readonly windowRoot: WindowRootControl;\n private disposed = false;\n\n private readonly updateWindowRoot = (deltaTime: number): void => {\n this.windowRoot.update(deltaTime);\n };\n\n private readonly renderWindowRoot = (): void => {\n this.windowRoot.render();\n };\n\n private readonly resizeWindowRoot = (): void => {\n const rect = this.engine.canvas.getBoundingClientRect();\n const width = rect.width || this.engine.canvas.width;\n const height = rect.height || this.engine.canvas.height;\n\n this.windowRoot.resize(width, height);\n };\n\n private readonly pushInput = (event: InputEvent): void => {\n if (!event.isAccepted()) {\n this.windowRoot.pushInput(event);\n }\n };\n\n private readonly onCanvasBlur = (): void => {\n this.windowRoot.onCanvasBlur();\n };\n\n constructor (engine: Engine) {\n super(engine);\n this.windowRoot = new WindowRootControl(engine);\n engine.on('update', this.updateWindowRoot);\n engine.on('postrender', this.renderWindowRoot);\n engine.on('resize', this.resizeWindowRoot);\n engine.eventSystem.on('input', this.pushInput);\n engine.eventSystem.on('canvasBlur', this.onCanvasBlur);\n this.resizeWindowRoot();\n }\n\n override dispose (): void {\n if (this.disposed) {\n return;\n }\n this.disposed = true;\n this.engine.off('update', this.updateWindowRoot);\n this.engine.off('postrender', this.renderWindowRoot);\n this.engine.off('resize', this.resizeWindowRoot);\n this.engine.eventSystem.off('input', this.pushInput);\n this.engine.eventSystem.off('canvasBlur', this.onCanvasBlur);\n this.windowRoot.dispose();\n super.dispose();\n }\n}\n","import { Component } from '@galacean/effects';\nimport type { Engine } from '@galacean/effects';\nimport { CanvasRootControl } from '../core/roots';\nimport { GUIWindowComponent } from './gui-window-component';\n\nexport enum CanvasRenderMode {\n ScreenSpace = 0,\n CameraSpace = 1,\n WorldSpace = 2,\n WorldSpaceFaceCamera = 3,\n}\n\n/** Canvas-layer boundary attached to a VFXItem. Input state remains owned by the window root. */\nexport class UICanvas extends Component {\n readonly rootControl: CanvasRootControl;\n renderMode = CanvasRenderMode.ScreenSpace;\n receivesEvents = true;\n private _order = 0;\n private registered = false;\n\n constructor (engine: Engine) {\n super(engine);\n this.rootControl = new CanvasRootControl(engine, this);\n }\n\n get order (): number {\n return this._order;\n }\n\n set order (value: number) {\n if (this._order !== value) {\n this._order = value;\n this.engine.root.getComponent(GUIWindowComponent).windowRoot.canvases.sortCanvases();\n }\n }\n\n get isVisible (): boolean {\n return this.renderMode === CanvasRenderMode.ScreenSpace && this.enabled &&\n !!this.item?.isActive;\n }\n\n override onEnable (): void {\n this.register();\n }\n\n override onDisable (): void {\n this.unregister();\n }\n\n override onDestroy (): void {\n this.destroyCanvas();\n }\n\n override dispose (): void {\n this.destroyCanvas();\n super.dispose();\n }\n\n private register (): void {\n if (!this.registered) {\n const guiWindow = this.engine.root.getComponent(GUIWindowComponent);\n\n this.rootControl.parent = guiWindow.windowRoot.canvases;\n this.registered = true;\n }\n }\n\n private unregister (): void {\n if (this.registered) {\n this.rootControl.parent = null;\n this.registered = false;\n }\n }\n\n private destroyCanvas (): void {\n this.unregister();\n if (!this.rootControl.isDisposed) {\n this.rootControl.dispose();\n }\n }\n\n}\n","import { Plugin } from '@galacean/effects';\nimport type { Composition, Engine } from '@galacean/effects';\nimport { GUIWindowComponent } from '../components/gui-window-component';\nimport { UICanvas } from '../components/ui-canvas';\n\nexport class GUIPlugin extends Plugin {\n override order = 0;\n override name = 'gui';\n\n override onEngineCreated (engine: Engine): void {\n engine.root.addComponent(GUIWindowComponent);\n }\n\n override onCompositionCreating (composition: Composition): void {\n composition.sceneRoot.addComponent(UICanvas);\n }\n}\n","import { Component, effectsClass, getClass } from '@galacean/effects';\nimport type { Constructor, Engine, Transform, spec } from '@galacean/effects';\nimport { Container } from '../core/control';\nimport type { Control } from '../core/control';\nimport type { UIControlData } from '../core/data';\nimport { UICanvas } from './ui-canvas';\n\n/**\n * Scene-tree bridge for a GUI Control. The VFXItem tree owns lifecycle and\n * serialization while the Control tree owns layout, drawing and input.\n */\n@effectsClass('UIControl')\nexport class UIControl extends Component {\n static fallbackParentGetDelegate?: (control: UIControl) => Control | null;\n\n private controlNode: Control | null = null;\n private linkedItemTransform: Transform | null = null;\n private linkedControl: Control | null = null;\n private syncingLocation = false;\n private readonly itemTransformChanged = () => this.syncItemLocationToControl();\n private readonly controlLocationChanged = () => this.syncControlLocationToItem();\n\n constructor (engine: Engine) {\n super(engine);\n }\n\n get control (): Control | null {\n return this.controlNode;\n }\n\n set control (value: Control | null) {\n if (value === this.controlNode) {\n return;\n }\n this.attachControl(value);\n }\n\n get hasControl (): boolean {\n return this.controlNode !== null;\n }\n\n override onAwake (): void {\n this.syncControl();\n }\n\n override onEnable (): void {\n if (this.controlNode) {\n this.controlNode.visible = this.item.isActive;\n this.controlNode.enabled = true;\n }\n }\n\n override onDisable (): void {\n if (this.controlNode) {\n this.controlNode.visible = this.item.isActive;\n this.controlNode.enabled = false;\n }\n }\n\n override onParentChanged (): void {\n this.syncControl();\n }\n\n override onOrderInParentChanged (): void {\n this.syncControlOrder();\n }\n\n override onDestroy (): void {\n this.disposeControl();\n }\n\n override dispose (): void {\n this.disposeControl();\n super.dispose();\n }\n\n /** Unlinks the GUI object without disposing or modifying it. */\n unlinkControl (): void {\n if (this.controlNode) {\n this.unbindLocationSync();\n this.controlNode = null;\n }\n }\n\n private attachControl (value: Control | null): void {\n if (value?.owner && value.owner !== this && value.owner.control === value) {\n throw new Error('A Control can only be owned by one UIControl.');\n }\n this.disposeControl();\n if (value) {\n this.controlNode = value;\n value.owner = this;\n this.syncControl();\n }\n }\n\n private disposeControl (): void {\n const control = this.controlNode;\n\n if (control) {\n this.unbindLocationSync();\n this.controlNode = null;\n control.dispose();\n }\n }\n\n private syncControl (): void {\n const control = this.controlNode;\n\n if (!control || !this.item) {\n return;\n }\n this.syncingLocation = true;\n control.visible = this.item.isActive;\n control.enabled = this.enabled;\n control.parent = this.resolveParent();\n this.syncControlOrder();\n this.copyItemLocationToControl();\n this.syncingLocation = false;\n this.bindLocationSync();\n }\n\n private syncControlOrder (): void {\n if (this.controlNode && this.item) {\n this.controlNode.indexInParent = this.item.orderInParent;\n }\n }\n\n private resolveParent (): Control | null {\n const parentItem = this.item.parent;\n\n if (!parentItem) {\n return UIControl.fallbackParentGetDelegate?.(this) ?? null;\n }\n const uiControl = parentItem.getComponent(UIControl);\n\n if (uiControl?.control) {\n return uiControl.control;\n }\n const canvas = parentItem.getComponent(UICanvas);\n\n return canvas?.rootControl ?? UIControl.fallbackParentGetDelegate?.(this) ?? null;\n }\n\n private bindLocationSync (): void {\n const itemTransform = this.item.transform;\n const control = this.controlNode;\n\n if (this.linkedItemTransform === itemTransform && this.linkedControl === control) {\n return;\n }\n this.unbindLocationSync();\n if (control) {\n this.linkedItemTransform = itemTransform;\n this.linkedControl = control;\n itemTransform.on('changed', this.itemTransformChanged);\n control.on('locationChanged', this.controlLocationChanged);\n }\n }\n\n private unbindLocationSync (): void {\n this.linkedItemTransform?.off('changed', this.itemTransformChanged);\n this.linkedControl?.off('locationChanged', this.controlLocationChanged);\n this.linkedItemTransform = null;\n this.linkedControl = null;\n }\n\n private syncItemLocationToControl (): void {\n if (this.syncingLocation || !this.controlNode) {\n return;\n }\n this.syncingLocation = true;\n this.copyItemLocationToControl();\n this.syncingLocation = false;\n }\n\n private syncControlLocationToItem (): void {\n const control = this.controlNode;\n\n if (!this.syncingLocation && control && this.item) {\n const source = control.location;\n const target = this.item.transform.position;\n\n if (source.x !== target.x || source.y !== target.y) {\n this.syncingLocation = true;\n this.item.transform.setPosition(source.x, source.y, target.z);\n this.syncingLocation = false;\n }\n }\n }\n\n private copyItemLocationToControl (): void {\n const control = this.controlNode;\n\n // Automatic layout owns the local X/Y rectangle. Keep the reverse sync so\n // layout results still update the scene item transform.\n if (control && !(control.parent instanceof Container)) {\n const source = this.item.transform.position;\n const target = control.location;\n\n if (source.x !== target.x || source.y !== target.y) {\n control.setPosition(source.x, source.y);\n }\n }\n }\n\n override fromData (data: spec.ComponentData): void {\n super.fromData(data);\n const serialized = (data as UIControlData).control;\n const Constructor = getClass(serialized.type) as Constructor<Control>;\n const control = new Constructor(this.engine);\n\n this.attachControl(control);\n this.syncingLocation = true;\n control.fromData(serialized.data);\n this.syncingLocation = false;\n this.syncControlLocationToItem();\n }\n}\n","export enum Orientation {\n Horizontal,\n Vertical,\n}\n\nexport enum LayoutAlignment {\n Begin,\n Center,\n End,\n}\n\nexport enum AspectRatioStretchMode {\n WidthControlsHeight,\n HeightControlsWidth,\n Fit,\n Cover,\n}\n","const EPSILON = 1e-7;\n\nexport function assertFinite (name: string, value: number): void {\n if (!Number.isFinite(value)) {\n throw new RangeError(`${name} must be finite.`);\n }\n}\n\nexport function assertEnumValue (name: string, value: number, maximum: number): void {\n if (!Number.isInteger(value) || value < 0 || value > maximum) {\n throw new RangeError(`Invalid ${name}.`);\n }\n}\n\nexport function sum (values: number[]): number {\n return values.reduce((total, value) => total + value, 0);\n}\n\n/**\n * Grows slots by weight, removing capped slots and redistributing their\n * unused share. Fractional pixels are accumulated and the last slot absorbs\n * the remaining numerical error when the supplied space is integral.\n */\nexport function growSlots (\n sizes: number[],\n ceilings: number[],\n weights: number[],\n extra: number,\n integerPixels: boolean,\n): number {\n let remaining = Math.max(0, extra);\n let active = sizes.map((_, index) => index).filter(index =>\n weights[index] > 0 && (ceilings[index] < 0 || sizes[index] < ceilings[index] - EPSILON));\n\n while (remaining > EPSILON && active.length > 0) {\n const totalWeight = active.reduce((total, index) => total + weights[index], 0);\n let capped = false;\n\n for (const index of active) {\n const ceiling = ceilings[index];\n const share = remaining * weights[index] / totalWeight;\n\n if (ceiling >= 0 && sizes[index] + share > ceiling + EPSILON) {\n const growth = Math.max(0, ceiling - sizes[index]);\n\n sizes[index] = ceiling;\n remaining -= growth;\n active = active.filter(value => value !== index);\n capped = true;\n\n break;\n }\n }\n if (capped) {\n continue;\n }\n\n let assigned = 0;\n let pixelError = 0;\n\n for (let activeIndex = 0; activeIndex < active.length; activeIndex++) {\n const index = active[activeIndex];\n let growth = activeIndex === active.length - 1\n ? remaining - assigned\n : remaining * weights[index] / totalWeight;\n\n if (integerPixels && activeIndex !== active.length - 1) {\n const exactGrowth = growth + pixelError;\n\n growth = Math.floor(exactGrowth);\n pixelError = exactGrowth - growth;\n }\n sizes[index] += growth;\n assigned += growth;\n }\n remaining = 0;\n }\n\n return remaining;\n}\n\nexport function alignmentOffset (alignment: number, remaining: number): number {\n if (alignment === 1) {\n return remaining / 2;\n }\n if (alignment === 2) {\n return remaining;\n }\n\n return 0;\n}\n","import {\n effectsClass,\n math,\n} from '@galacean/effects';\nimport type { Engine } from '@galacean/effects';\nimport { Container, SizeFlags } from '../core/control';\nimport type { Control } from '../core/control';\nimport type { BoxContainerData } from '../data';\nimport { LayoutAlignment, Orientation } from './enums';\nimport { alignmentOffset, assertEnumValue, growSlots, sum } from './utils';\n\n/** Places visible children in a single horizontal or vertical row. */\nexport class BoxContainer extends Container {\n static override readonly themeType: string = 'BoxContainer';\n private _orientation = Orientation.Horizontal;\n private _alignment = LayoutAlignment.Begin;\n private _reverse = false;\n\n get orientation (): Orientation {\n return this._orientation;\n }\n\n set orientation (value: Orientation) {\n assertEnumValue('BoxContainer orientation', value, Orientation.Vertical);\n if (this._orientation !== value) {\n this._orientation = value;\n this.invalidateMeasurement();\n }\n }\n\n get alignment (): LayoutAlignment {\n return this._alignment;\n }\n\n set alignment (value: LayoutAlignment) {\n assertEnumValue('BoxContainer alignment', value, LayoutAlignment.End);\n if (this._alignment !== value) {\n this._alignment = value;\n this.queueSort();\n }\n }\n\n get reverse (): boolean {\n return this._reverse;\n }\n\n set reverse (value: boolean) {\n if (this._reverse !== value) {\n this._reverse = value;\n this.queueSort();\n }\n }\n\n override getMinimumSize (): math.Vector2 {\n return this.measureChildren(false);\n }\n\n override getDesiredSize (): math.Vector2 {\n return this.measureChildren(true);\n }\n\n protected override sortChildren (): void {\n const children = this.getLayoutChildren();\n\n if (this.reverse) {\n children.reverse();\n }\n if (children.length === 0) {\n return;\n }\n\n const horizontal = this.orientation === Orientation.Horizontal;\n const availableMain = horizontal ? this.size.x : this.size.y;\n const availableCross = horizontal ? this.size.y : this.size.x;\n const separation = this.getThemeConstant('separation');\n const gapTotal = separation * (children.length - 1);\n const slotSpace = availableMain - gapTotal;\n const minimums = children.map(child => this.getMainSize(child.getBoundMinimumSize()));\n const desired = children.map(child => this.getMainSize(child.getBoundDesiredSize()));\n const maximums = children.map(child => this.getMainSize(child.getCombinedMaximumSize()));\n const sizes = minimums.slice();\n const integerPixels = Number.isInteger(slotSpace)\n && minimums.every(Number.isInteger)\n && desired.every(Number.isInteger)\n && maximums.every(value => value < 0 || Number.isInteger(value));\n let extra = Math.max(0, slotSpace - sum(sizes));\n\n extra = growSlots(\n sizes,\n desired,\n desired.map((value, index) => Math.max(0, value - sizes[index])),\n extra,\n integerPixels,\n );\n growSlots(\n sizes,\n maximums,\n children.map(child => this.isMainExpanded(child) ? child.stretchRatio : 0),\n extra,\n integerPixels,\n );\n\n const usedMain = sum(sizes) + gapTotal;\n let cursor = alignmentOffset(this.alignment, Math.max(0, availableMain - usedMain));\n\n for (let index = 0; index < children.length; index++) {\n const mainSize = sizes[index];\n const position = horizontal ? new math.Vector2(cursor, 0) : new math.Vector2(0, cursor);\n const size = horizontal\n ? new math.Vector2(mainSize, availableCross)\n : new math.Vector2(availableCross, mainSize);\n\n this.fitChildInRect(children[index], { position, size });\n cursor += mainSize + separation;\n }\n }\n\n private measureChildren (useDesired: boolean): math.Vector2 {\n const children = this.getLayoutChildren();\n let main = 0;\n let cross = 0;\n\n for (const child of children) {\n const childSize = useDesired ? child.getBoundDesiredSize() : child.getBoundMinimumSize();\n\n main += this.getMainSize(childSize);\n cross = Math.max(cross, this.getCrossSize(childSize));\n }\n if (children.length > 1) {\n main += this.getThemeConstant('separation') * (children.length - 1);\n }\n\n return this.orientation === Orientation.Horizontal\n ? new math.Vector2(main, cross)\n : new math.Vector2(cross, main);\n }\n\n private getMainSize (size: math.Vector2): number {\n return this.orientation === Orientation.Horizontal ? size.x : size.y;\n }\n\n private getCrossSize (size: math.Vector2): number {\n return this.orientation === Orientation.Horizontal ? size.y : size.x;\n }\n\n private isMainExpanded (child: Control): boolean {\n const flags = this.orientation === Orientation.Horizontal\n ? child.horizontalSizeFlags\n : child.verticalSizeFlags;\n\n return (flags & SizeFlags.Expand) !== 0;\n }\n\n private invalidateMeasurement (): void {\n this.updateMinimumSize();\n this.updateDesiredSize();\n this.queueSort();\n }\n\n override fromData (data: BoxContainerData): void {\n super.fromData(data);\n if (data.alignment !== undefined) {\n this.alignment = data.alignment;\n }\n if (data.reverse !== undefined) {\n this.reverse = data.reverse;\n }\n }\n}\n\n@effectsClass('HBoxContainer')\nexport class HBoxContainer extends BoxContainer {\n static override readonly themeType: string = 'HBoxContainer';\n constructor (engine: Engine) {\n super(engine);\n this.orientation = Orientation.Horizontal;\n }\n}\n\n@effectsClass('VBoxContainer')\nexport class VBoxContainer extends BoxContainer {\n static override readonly themeType: string = 'VBoxContainer';\n constructor (engine: Engine) {\n super(engine);\n this.orientation = Orientation.Vertical;\n }\n}\n","import { effectsClass, math } from '@galacean/effects';\nimport { Container, SizeFlags } from '../core/control';\nimport type { Control } from '../core/control';\nimport type { GridContainerData } from '../data';\nimport { growSlots, sum } from './utils';\n\ntype TrackMetrics = {\n minimum: number[],\n desired: number[],\n maximum: number[],\n expanded: boolean[],\n};\n\n/** Places visible children in LTR row-major cells without spanning. */\n@effectsClass('GridContainer')\nexport class GridContainer extends Container {\n static override readonly themeType: string = 'GridContainer';\n private _columns = 1;\n\n get columns (): number {\n return this._columns;\n }\n\n set columns (value: number) {\n if (!Number.isInteger(value) || value < 1) {\n throw new RangeError('GridContainer columns must be an integer greater than zero.');\n }\n if (this._columns !== value) {\n this._columns = value;\n this.invalidateMeasurement();\n }\n }\n\n override getMinimumSize (): math.Vector2 {\n return this.measureGrid(false);\n }\n\n override getDesiredSize (): math.Vector2 {\n return this.measureGrid(true);\n }\n\n protected override sortChildren (): void {\n const children = this.getLayoutChildren();\n\n if (children.length === 0) {\n return;\n }\n const columnCount = Math.min(this.columns, children.length);\n const rowCount = Math.ceil(children.length / this.columns);\n const columnMetrics = this.collectTrackMetrics(children, columnCount, true);\n const rowMetrics = this.collectTrackMetrics(children, rowCount, false);\n const horizontalSeparation = this.getThemeConstant('horizontalSeparation');\n const verticalSeparation = this.getThemeConstant('verticalSeparation');\n const columnSizes = this.allocateTracks(columnMetrics, this.size.x, horizontalSeparation);\n const rowSizes = this.allocateTracks(rowMetrics, this.size.y, verticalSeparation);\n const columnPositions = this.getTrackPositions(columnSizes, horizontalSeparation);\n const rowPositions = this.getTrackPositions(rowSizes, verticalSeparation);\n\n for (let index = 0; index < children.length; index++) {\n const column = index % this.columns;\n const row = Math.floor(index / this.columns);\n\n this.fitChildInRect(children[index], {\n position: new math.Vector2(columnPositions[column], rowPositions[row]),\n size: new math.Vector2(columnSizes[column], rowSizes[row]),\n });\n }\n }\n\n private measureGrid (useDesired: boolean): math.Vector2 {\n const children = this.getLayoutChildren();\n\n if (children.length === 0) {\n return new math.Vector2();\n }\n const columnCount = Math.min(this.columns, children.length);\n const rowCount = Math.ceil(children.length / this.columns);\n const columns = this.collectTrackMetrics(children, columnCount, true);\n const rows = this.collectTrackMetrics(children, rowCount, false);\n const columnSizes = useDesired ? columns.desired : columns.minimum;\n const rowSizes = useDesired ? rows.desired : rows.minimum;\n\n return new math.Vector2(\n sum(columnSizes) + this.getThemeConstant('horizontalSeparation') * Math.max(0, columnCount - 1),\n sum(rowSizes) + this.getThemeConstant('verticalSeparation') * Math.max(0, rowCount - 1),\n );\n }\n\n private collectTrackMetrics (children: Control[], count: number, horizontal: boolean): TrackMetrics {\n const minimum = new Array<number>(count).fill(0);\n const desired = new Array<number>(count).fill(0);\n const maximum = new Array<number>(count).fill(0);\n const unbounded = new Array<boolean>(count).fill(false);\n const expanded = new Array<boolean>(count).fill(false);\n\n for (let index = 0; index < children.length; index++) {\n const child = children[index];\n const track = horizontal ? index % this.columns : Math.floor(index / this.columns);\n const childMinimum = child.getBoundMinimumSize();\n const childDesired = child.getBoundDesiredSize();\n const childMaximum = child.getCombinedMaximumSize();\n const minimumValue = horizontal ? childMinimum.x : childMinimum.y;\n const desiredValue = horizontal ? childDesired.x : childDesired.y;\n const maximumValue = horizontal ? childMaximum.x : childMaximum.y;\n const flags = horizontal ? child.horizontalSizeFlags : child.verticalSizeFlags;\n\n minimum[track] = Math.max(minimum[track], minimumValue);\n desired[track] = Math.max(desired[track], desiredValue);\n if (maximumValue < 0) {\n unbounded[track] = true;\n } else {\n maximum[track] = Math.max(maximum[track], maximumValue);\n }\n expanded[track] ||= (flags & SizeFlags.Expand) !== 0;\n }\n for (let index = 0; index < count; index++) {\n maximum[index] = unbounded[index] ? -1 : Math.max(minimum[index], maximum[index]);\n }\n\n return { minimum, desired, maximum, expanded };\n }\n\n private allocateTracks (metrics: TrackMetrics, available: number, separation: number): number[] {\n const sizes = metrics.minimum.slice();\n const trackSpace = available - separation * Math.max(0, sizes.length - 1);\n const integerPixels = Number.isInteger(trackSpace)\n && metrics.minimum.every(Number.isInteger)\n && metrics.desired.every(Number.isInteger)\n && metrics.maximum.every(value => value < 0 || Number.isInteger(value));\n let extra = Math.max(0, trackSpace - sum(sizes));\n\n extra = growSlots(\n sizes,\n metrics.desired,\n metrics.desired.map((value, index) => Math.max(0, value - sizes[index])),\n extra,\n integerPixels,\n );\n growSlots(\n sizes,\n metrics.maximum,\n metrics.expanded.map(value => value ? 1 : 0),\n extra,\n integerPixels,\n );\n\n return sizes;\n }\n\n private getTrackPositions (sizes: number[], separation: number): number[] {\n const positions: number[] = [];\n let cursor = 0;\n\n for (const size of sizes) {\n positions.push(cursor);\n cursor += size + separation;\n }\n\n return positions;\n }\n\n private invalidateMeasurement (): void {\n this.updateMinimumSize();\n this.updateDesiredSize();\n this.queueSort();\n }\n\n override fromData (data: GridContainerData): void {\n super.fromData(data);\n if (data.columns !== undefined) {\n this.columns = data.columns;\n }\n }\n}\n","import { effectsClass, math } from '@galacean/effects';\nimport { Container } from '../core/control';\n\n/** Adds four independent margins around every visible child. */\n@effectsClass('MarginContainer')\nexport class MarginContainer extends Container {\n static override readonly themeType: string = 'MarginContainer';\n\n override getMinimumSize (): math.Vector2 {\n return this.measureChildren(false);\n }\n\n override getDesiredSize (): math.Vector2 {\n return this.measureChildren(true);\n }\n\n protected override sortChildren (): void {\n const left = this.getThemeConstant('marginLeft');\n const top = this.getThemeConstant('marginTop');\n const right = this.getThemeConstant('marginRight');\n const bottom = this.getThemeConstant('marginBottom');\n const rect = {\n position: new math.Vector2(left, top),\n size: new math.Vector2(\n this.size.x - left - right,\n this.size.y - top - bottom,\n ),\n };\n\n for (const child of this.getLayoutChildren()) {\n this.fitChildInRect(child, rect);\n }\n }\n\n private measureChildren (useDesired: boolean): math.Vector2 {\n let width = 0;\n let height = 0;\n\n for (const child of this.getLayoutChildren()) {\n const size = useDesired ? child.getBoundDesiredSize() : child.getBoundMinimumSize();\n\n width = Math.max(width, size.x);\n height = Math.max(height, size.y);\n }\n\n const left = this.getThemeConstant('marginLeft');\n const top = this.getThemeConstant('marginTop');\n const right = this.getThemeConstant('marginRight');\n const bottom = this.getThemeConstant('marginBottom');\n\n return new math.Vector2(\n width + left + right,\n height + top + bottom,\n );\n }\n}\n","import { effectsClass, math } from '@galacean/effects';\nimport { Container } from '../core/control';\nimport type { CenterContainerData } from '../data';\n\n/** Centers children at their bound minimum size. */\n@effectsClass('CenterContainer')\nexport class CenterContainer extends Container {\n static override readonly themeType: string = 'CenterContainer';\n private _useTopLeft = false;\n\n get useTopLeft (): boolean {\n return this._useTopLeft;\n }\n\n set useTopLeft (value: boolean) {\n if (this._useTopLeft !== value) {\n this._useTopLeft = value;\n this.updateMinimumSize();\n this.updateDesiredSize();\n this.queueSort();\n }\n }\n\n override getMinimumSize (): math.Vector2 {\n return this.measureChildren(false);\n }\n\n override getDesiredSize (): math.Vector2 {\n return this.measureChildren(true);\n }\n\n protected override sortChildren (): void {\n for (const child of this.getLayoutChildren()) {\n const childSize = child.getBoundMinimumSize();\n const position = this.useTopLeft\n ? new math.Vector2(Math.floor(-childSize.x / 2), Math.floor(-childSize.y / 2))\n : new math.Vector2(\n Math.floor((this.size.x - childSize.x) / 2),\n Math.floor((this.size.y - childSize.y) / 2),\n );\n\n this.fitChildInRect(child, { position, size: childSize });\n }\n }\n\n private measureChildren (useDesired: boolean): math.Vector2 {\n if (this.useTopLeft) {\n return new math.Vector2();\n }\n let width = 0;\n let height = 0;\n\n for (const child of this.getLayoutChildren()) {\n const size = useDesired ? child.getBoundDesiredSize() : child.getBoundMinimumSize();\n\n width = Math.max(width, size.x);\n height = Math.max(height, size.y);\n }\n\n return new math.Vector2(width, height);\n }\n\n override fromData (data: CenterContainerData): void {\n super.fromData(data);\n if (data.useTopLeft !== undefined) {\n this.useTopLeft = data.useTopLeft;\n }\n }\n}\n","import { effectsClass, math } from '@galacean/effects';\nimport { Container } from '../core/control';\nimport type { AspectRatioContainerData } from '../data';\nimport { AspectRatioStretchMode, LayoutAlignment } from './enums';\nimport { assertEnumValue, assertFinite } from './utils';\n\n/** Fits every visible child into the same rectangle with a fixed width/height ratio. */\n@effectsClass('AspectRatioContainer')\nexport class AspectRatioContainer extends Container {\n static override readonly themeType: string = 'AspectRatioContainer';\n private _ratio = 1;\n private _stretchMode = AspectRatioStretchMode.Fit;\n private _horizontalAlignment = LayoutAlignment.Center;\n private _verticalAlignment = LayoutAlignment.Center;\n\n get ratio (): number {\n return this._ratio;\n }\n\n set ratio (value: number) {\n assertFinite('AspectRatioContainer ratio', value);\n if (value <= 0) {\n throw new RangeError('AspectRatioContainer ratio must be greater than zero.');\n }\n if (this._ratio !== value) {\n this._ratio = value;\n this.queueSort();\n }\n }\n\n get stretchMode (): AspectRatioStretchMode {\n return this._stretchMode;\n }\n\n set stretchMode (value: AspectRatioStretchMode) {\n assertEnumValue('AspectRatioContainer stretchMode', value, AspectRatioStretchMode.Cover);\n if (this._stretchMode !== value) {\n this._stretchMode = value;\n this.queueSort();\n }\n }\n\n get horizontalAlignment (): LayoutAlignment {\n return this._horizontalAlignment;\n }\n\n set horizontalAlignment (value: LayoutAlignment) {\n assertEnumValue('AspectRatioContainer horizontalAlignment', value, LayoutAlignment.End);\n if (this._horizontalAlignment !== value) {\n this._horizontalAlignment = value;\n this.queueSort();\n }\n }\n\n get verticalAlignment (): LayoutAlignment {\n return this._verticalAlignment;\n }\n\n set verticalAlignment (value: LayoutAlignment) {\n assertEnumValue('AspectRatioContainer verticalAlignment', value, LayoutAlignment.End);\n if (this._verticalAlignment !== value) {\n this._verticalAlignment = value;\n this.queueSort();\n }\n }\n\n override getMinimumSize (): math.Vector2 {\n return this.measureChildren(false);\n }\n\n override getDesiredSize (): math.Vector2 {\n return this.measureChildren(true);\n }\n\n protected override sortChildren (): void {\n for (const child of this.getLayoutChildren()) {\n const childMinimum = child.getBoundMinimumSize();\n const baseWidth = this.ratio;\n const baseHeight = 1;\n let scale: number;\n\n switch (this.stretchMode) {\n case AspectRatioStretchMode.WidthControlsHeight:\n scale = this.size.x / baseWidth;\n\n break;\n case AspectRatioStretchMode.HeightControlsWidth:\n scale = this.size.y / baseHeight;\n\n break;\n case AspectRatioStretchMode.Cover:\n scale = Math.max(this.size.x / baseWidth, this.size.y / baseHeight);\n\n break;\n default:\n scale = Math.min(this.size.x / baseWidth, this.size.y / baseHeight);\n\n break;\n }\n const childSize = new math.Vector2(\n Math.max(childMinimum.x, baseWidth * scale),\n Math.max(childMinimum.y, baseHeight * scale),\n );\n const position = new math.Vector2(\n this.getAlignedOffset(this.horizontalAlignment, this.size.x - childSize.x),\n this.getAlignedOffset(this.verticalAlignment, this.size.y - childSize.y),\n );\n\n this.fitChildInRect(child, { position, size: childSize });\n }\n }\n\n private measureChildren (useDesired: boolean): math.Vector2 {\n let width = 0;\n let height = 0;\n\n for (const child of this.getLayoutChildren()) {\n const size = useDesired ? child.getBoundDesiredSize() : child.getBoundMinimumSize();\n\n width = Math.max(width, size.x);\n height = Math.max(height, size.y);\n }\n\n return new math.Vector2(width, height);\n }\n\n private getAlignedOffset (alignment: LayoutAlignment, remaining: number): number {\n if (alignment === LayoutAlignment.Center) {\n return remaining / 2;\n }\n if (alignment === LayoutAlignment.End) {\n return remaining;\n }\n\n return 0;\n }\n\n override fromData (data: AspectRatioContainerData): void {\n super.fromData(data);\n if (data.ratio !== undefined) {\n this.ratio = data.ratio;\n }\n if (data.stretchMode !== undefined) {\n this.stretchMode = data.stretchMode;\n }\n if (data.horizontalAlignment !== undefined) {\n this.horizontalAlignment = data.horizontalAlignment;\n }\n if (data.verticalAlignment !== undefined) {\n this.verticalAlignment = data.verticalAlignment;\n }\n }\n}\n","import { effectsClass, math } from '@galacean/effects';\nimport { Container } from '../core/control';\n\n@effectsClass('PanelContainer')\nexport class PanelContainer extends Container {\n static override readonly themeType: string = 'PanelContainer';\n\n override getMinimumSize (): math.Vector2 {\n return this.measureChildren(false);\n }\n\n override getDesiredSize (): math.Vector2 {\n return this.measureChildren(true);\n }\n\n override draw (): void {\n this.drawStyleBox(this.getThemeStyleBox('panel'), 0, 0, this.width, this.height);\n }\n\n protected override sortChildren (): void {\n const margins = this.getThemeStyleBox('panel').getContentMargins();\n const rect = {\n position: new math.Vector2(margins.left, margins.top),\n size: new math.Vector2(\n Math.max(0, this.width - margins.left - margins.right),\n Math.max(0, this.height - margins.top - margins.bottom),\n ),\n };\n\n for (const child of this.getLayoutChildren()) {\n this.fitChildInRect(child, rect);\n }\n }\n\n private measureChildren (desired: boolean): math.Vector2 {\n let width = 0;\n let height = 0;\n\n for (const child of this.getLayoutChildren()) {\n const size = desired ? child.getBoundDesiredSize() : child.getBoundMinimumSize();\n\n width = Math.max(width, size.x);\n height = Math.max(height, size.y);\n }\n const margins = this.getThemeStyleBox('panel').getContentMargins();\n\n return new math.Vector2(\n width + margins.left + margins.right,\n height + margins.top + margins.bottom,\n );\n }\n}\n","import { effectsClass, math } from '@galacean/effects';\nimport type { Engine } from '@galacean/effects';\nimport { Control } from '../core/control';\nimport { MouseFilter } from '../core/enums';\n\nabstract class Separator extends Control {\n constructor (engine: Engine, private readonly vertical: boolean) {\n super(engine);\n this.mouseFilter = MouseFilter.Ignore;\n }\n\n override getMinimumSize (): math.Vector2 {\n const minimum = this.getThemeStyleBox('separator').getMinimumSize();\n const thickness = Math.max(0, this.getThemeConstant('separation'));\n\n return this.vertical\n ? new math.Vector2(Math.max(minimum.x, thickness), minimum.y)\n : new math.Vector2(minimum.x, Math.max(minimum.y, thickness));\n }\n\n override getDesiredSize (): math.Vector2 {\n return this.getMinimumSize();\n }\n\n override draw (): void {\n const minimum = this.getMinimumSize();\n const width = this.vertical ? minimum.x : this.width;\n const height = this.vertical ? this.height : minimum.y;\n\n this.drawStyleBox(\n this.getThemeStyleBox('separator'),\n (this.width - width) * 0.5,\n (this.height - height) * 0.5,\n width,\n height,\n );\n }\n}\n\n@effectsClass('HSeparator')\nexport class HSeparator extends Separator {\n static override readonly themeType: string = 'HSeparator';\n\n constructor (engine: Engine) {\n super(engine, false);\n }\n}\n\n@effectsClass('VSeparator')\nexport class VSeparator extends Separator {\n static override readonly themeType: string = 'VSeparator';\n\n constructor (engine: Engine) {\n super(engine, true);\n }\n}\n","export enum ScrollMode {\n Disabled,\n Auto,\n ShowAlways,\n ShowNever,\n Reserve,\n MaximizeFirst,\n}\n","import { EventEmitter } from '@galacean/effects';\nimport type { Engine, EventEmitterListener } from '@galacean/effects';\nimport { Control } from '../core/control';\nimport type { ControlEvent } from '../core/control';\nimport type { RangeData } from '../data';\n\nexport type RangeEvent = ControlEvent & {\n changed: [],\n valueChanged: [value: number],\n};\n\ntype SharedRange = {\n value: number,\n minValue: number,\n maxValue: number,\n step: number,\n page: number,\n exponentialRatio: boolean,\n allowGreater: boolean,\n allowLesser: boolean,\n owners: Set<Range>,\n};\n\n/** Numeric value model shared by scroll bars and future slider controls. */\nexport class Range extends Control {\n static override readonly themeType: string = 'Range';\n private shared: SharedRange;\n private _rounded = false;\n private suppressSignals = false;\n private readonly rangeEventEmitter = new EventEmitter<RangeEvent>();\n\n constructor (engine: Engine) {\n super(engine);\n this.shared = createSharedRange();\n this.shared.owners.add(this);\n }\n\n get minValue (): number {\n return this.shared.minValue;\n }\n\n set minValue (value: number) {\n this.setMinValue(value);\n }\n\n get maxValue (): number {\n return this.shared.maxValue;\n }\n\n set maxValue (value: number) {\n this.setMaxValue(value);\n }\n\n get step (): number {\n return this.shared.step;\n }\n\n set step (value: number) {\n this.setStep(value);\n }\n\n get page (): number {\n return this.shared.page;\n }\n\n set page (value: number) {\n this.setPage(value);\n }\n\n get value (): number {\n return this.shared.value;\n }\n\n set value (value: number) {\n this.setValue(value);\n }\n\n get ratio (): number {\n return this.getAsRatio();\n }\n\n set ratio (value: number) {\n this.setAsRatio(value);\n }\n\n get exponentialRatio (): boolean {\n return this.shared.exponentialRatio;\n }\n\n set exponentialRatio (value: boolean) {\n this.shared.exponentialRatio = value;\n }\n\n get rounded (): boolean {\n return this._rounded;\n }\n\n set rounded (value: boolean) {\n this._rounded = value;\n }\n\n get allowGreater (): boolean {\n return this.shared.allowGreater;\n }\n\n set allowGreater (value: boolean) {\n this.shared.allowGreater = value;\n }\n\n get allowLesser (): boolean {\n return this.shared.allowLesser;\n }\n\n set allowLesser (value: boolean) {\n this.shared.allowLesser = value;\n }\n\n override on<E extends keyof RangeEvent> (\n eventName: E,\n listener: EventEmitterListener<RangeEvent[E]>,\n ): void {\n if (eventName === 'changed' || eventName === 'valueChanged') {\n this.rangeEventEmitter.on(eventName, listener);\n } else {\n super.on(eventName, listener as never);\n }\n }\n\n override off<E extends keyof RangeEvent> (\n eventName: E,\n listener: EventEmitterListener<RangeEvent[E]>,\n ): void {\n if (eventName === 'changed' || eventName === 'valueChanged') {\n this.rangeEventEmitter.off(eventName, listener);\n } else {\n super.off(eventName, listener as never);\n }\n }\n\n setValue (value: number): void {\n const previous = this.shared.value;\n\n this.shared.value = this.calculateValue(value);\n if (!valuesEqual(previous, this.shared.value)) {\n this.notifyValueChanged();\n }\n }\n\n setValueNoSignal (value: number): void {\n const previous = this.shared.value;\n\n this.shared.value = this.calculateValue(value);\n if (!valuesEqual(previous, this.shared.value)) {\n for (const owner of this.shared.owners) {\n owner.valueChanged(this.shared.value);\n }\n }\n }\n\n setMinValue (value: number): void {\n assertFinite('Range minValue', value);\n if (this.shared.minValue === value) {\n return;\n }\n this.shared.minValue = value;\n this.shared.maxValue = Math.max(this.shared.maxValue, value);\n this.shared.page = clamp(this.shared.page, 0, this.shared.maxValue - value);\n this.setValue(this.shared.value);\n this.notifyChanged();\n }\n\n setMaxValue (value: number): void {\n assertFinite('Range maxValue', value);\n const maximum = Math.max(value, this.shared.minValue);\n\n if (this.shared.maxValue === maximum) {\n return;\n }\n this.shared.maxValue = maximum;\n this.shared.page = clamp(this.shared.page, 0, maximum - this.shared.minValue);\n this.setValue(this.shared.value);\n this.notifyChanged();\n }\n\n setStep (value: number): void {\n assertFinite('Range step', value);\n if (this.shared.step === value) {\n return;\n }\n this.shared.step = value;\n this.notifyChanged();\n }\n\n setPage (value: number): void {\n assertFinite('Range page', value);\n const page = clamp(value, 0, this.shared.maxValue - this.shared.minValue);\n\n if (this.shared.page === page) {\n return;\n }\n this.shared.page = page;\n this.setValue(this.shared.value);\n this.notifyChanged();\n }\n\n setAsRatio (ratio: number): void {\n assertFinite('Range ratio', ratio);\n const normalized = clamp(ratio, 0, 1);\n let value: number;\n\n if (this.shared.exponentialRatio && this.shared.minValue >= 0 && this.shared.maxValue > 0) {\n const minimum = this.shared.minValue === 0 ? 0 : Math.log2(this.shared.minValue);\n const maximum = Math.log2(this.shared.maxValue);\n\n value = 2 ** (minimum + (maximum - minimum) * normalized);\n } else {\n const span = this.shared.maxValue - this.shared.minValue;\n\n value = this.shared.minValue + span * normalized;\n if (this.shared.step > 0) {\n value = this.shared.minValue + Math.round(span * normalized / this.shared.step) * this.shared.step;\n }\n }\n this.setValue(clamp(value, this.shared.minValue, this.shared.maxValue));\n }\n\n getAsRatio (): number {\n const span = this.shared.maxValue - this.shared.minValue;\n\n if (span === 0) {\n return 1;\n }\n const value = clamp(this.shared.value, this.shared.minValue, this.shared.maxValue);\n\n if (this.shared.exponentialRatio && this.shared.minValue >= 0 && this.shared.maxValue > 0) {\n if (value <= 0) {\n return 0;\n }\n const minimum = this.shared.minValue === 0 ? 0 : Math.log2(this.shared.minValue);\n const maximum = Math.log2(this.shared.maxValue);\n\n return clamp((Math.log2(value) - minimum) / (maximum - minimum), 0, 1);\n }\n\n return clamp((value - this.shared.minValue) / span, 0, 1);\n }\n\n share (range: Range): void {\n if (range === this) {\n return;\n }\n range.attachShared(this.shared);\n range.rangeEventEmitter.emit('changed');\n range.rangeEventEmitter.emit('valueChanged', range.value);\n }\n\n unshare (): void {\n const previous = this.shared;\n const shared = createSharedRange();\n\n shared.value = previous.value;\n shared.minValue = previous.minValue;\n shared.maxValue = previous.maxValue;\n shared.step = previous.step;\n shared.page = previous.page;\n shared.exponentialRatio = previous.exponentialRatio;\n shared.allowGreater = previous.allowGreater;\n shared.allowLesser = previous.allowLesser;\n this.attachShared(shared);\n }\n\n override dispose (): void {\n this.shared.owners.delete(this);\n super.dispose();\n }\n\n protected valueChanged (value: number): void {}\n\n private calculateValue (value: number): number {\n if (Number.isNaN(value)) {\n return value;\n }\n assertFinite('Range value', value);\n let calculated = value;\n\n if (this.shared.step > 0) {\n calculated = snapFrom(this.shared.minValue, calculated, this.shared.step);\n }\n if (this._rounded) {\n calculated = Math.round(calculated);\n }\n if (!this.shared.allowGreater) {\n calculated = Math.min(calculated, this.shared.maxValue - this.shared.page);\n }\n if (!this.shared.allowLesser) {\n calculated = Math.max(calculated, this.shared.minValue);\n }\n\n return calculated;\n }\n\n private attachShared (shared: SharedRange): void {\n if (this.shared === shared) {\n return;\n }\n this.shared.owners.delete(this);\n this.shared = shared;\n shared.owners.add(this);\n }\n\n private notifyValueChanged (): void {\n for (const owner of this.shared.owners) {\n owner.valueChanged(this.shared.value);\n if (!this.suppressSignals) {\n owner.rangeEventEmitter.emit('valueChanged', this.shared.value);\n }\n }\n }\n\n private notifyChanged (): void {\n for (const owner of this.shared.owners) {\n if (!this.suppressSignals) {\n owner.rangeEventEmitter.emit('changed');\n }\n }\n }\n\n override fromData (data: RangeData): void {\n this.suppressSignals = true;\n super.fromData(data);\n if (data.allowGreater !== undefined) {\n this.allowGreater = data.allowGreater;\n }\n if (data.allowLesser !== undefined) {\n this.allowLesser = data.allowLesser;\n }\n if (data.exponentialRatio !== undefined) {\n this.exponentialRatio = data.exponentialRatio;\n }\n if (data.rounded !== undefined) {\n this.rounded = data.rounded;\n }\n if (data.minValue !== undefined) {\n this.setMinValue(data.minValue);\n }\n if (data.maxValue !== undefined) {\n this.setMaxValue(data.maxValue);\n }\n if (data.step !== undefined) {\n this.setStep(data.step);\n }\n if (data.page !== undefined) {\n this.setPage(data.page);\n }\n if (data.value !== undefined) {\n this.setValueNoSignal(data.value);\n }\n this.suppressSignals = false;\n }\n}\n\nfunction createSharedRange (): SharedRange {\n return {\n value: 0,\n minValue: 0,\n maxValue: 100,\n step: 1,\n page: 0,\n exponentialRatio: false,\n allowGreater: false,\n allowLesser: false,\n owners: new Set(),\n };\n}\n\nfunction snapFrom (minimum: number, value: number, step: number): number {\n return Number((minimum + Math.round((value - minimum) / step) * step).toPrecision(15));\n}\n\nfunction valuesEqual (left: number, right: number): boolean {\n return left === right || (Number.isNaN(left) && Number.isNaN(right));\n}\n\nfunction clamp (value: number, minimum: number, maximum: number): number {\n return Math.min(maximum, Math.max(minimum, value));\n}\n\nfunction assertFinite (name: string, value: number): void {\n if (!Number.isFinite(value)) {\n throw new RangeError(`${name} must be finite.`);\n }\n}\n","import {\n EventEmitter,\n MouseButton,\n effectsClass,\n math,\n} from '@galacean/effects';\nimport { FocusMode } from '../core/enums';\nimport type {\n Engine,\n EventEmitterListener,\n InputEventKey,\n InputEventMouseButton,\n InputEventMouseMotion,\n} from '@galacean/effects';\nimport { Orientation } from '../layout/enums';\nimport { Range } from './range';\nimport type { RangeEvent } from './range';\nimport type { ScrollBarData } from '../data';\n\nexport type ScrollBarEvent = RangeEvent & {\n scrolling: [],\n};\n\ntype Highlight = 'none' | 'decrement' | 'track' | 'increment';\n\ntype GrabberRect = {\n x: number,\n y: number,\n width: number,\n height: number,\n};\n\nconst PAGE_DIVISOR = 8;\n\n/** A horizontal or vertical range scroll bar. */\nexport class ScrollBar extends Range {\n static override readonly themeType: string = 'ScrollBar';\n static readonly pageDivisor = PAGE_DIVISOR;\n\n private readonly scrollBarEventEmitter = new EventEmitter<ScrollBarEvent>();\n private _orientation: Orientation;\n private _customStep = -1;\n private highlight: Highlight = 'none';\n private decrementActive = false;\n private incrementActive = false;\n private dragging = false;\n private dragPosition = 0;\n private dragRatio = 0;\n\n constructor (engine: Engine, orientation = Orientation.Vertical) {\n super(engine);\n\n this._orientation = orientation;\n this.step = 0;\n this.focusMode = FocusMode.Accessibility;\n }\n\n get orientation (): Orientation {\n return this._orientation;\n }\n\n set orientation (value: Orientation) {\n if (value !== Orientation.Horizontal && value !== Orientation.Vertical) {\n throw new RangeError('Invalid ScrollBar orientation.');\n }\n if (this._orientation !== value) {\n this._orientation = value;\n this.updateMinimumSize();\n }\n }\n\n get customStep (): number {\n return this._customStep;\n }\n\n set customStep (value: number) {\n if (!Number.isFinite(value)) {\n throw new RangeError('ScrollBar customStep must be finite.');\n }\n this._customStep = value;\n }\n\n override on<E extends keyof ScrollBarEvent> (\n eventName: E,\n listener: EventEmitterListener<ScrollBarEvent[E]>,\n ): void {\n if (eventName === 'scrolling') {\n this.scrollBarEventEmitter.on(eventName, listener);\n } else {\n super.on(eventName, listener as never);\n }\n }\n\n override off<E extends keyof ScrollBarEvent> (\n eventName: E,\n listener: EventEmitterListener<ScrollBarEvent[E]>,\n ): void {\n if (eventName === 'scrolling') {\n this.scrollBarEventEmitter.off(eventName, listener);\n } else {\n super.off(eventName, listener as never);\n }\n }\n\n scroll (amount: number): void {\n this.scrollTo(this.value + amount);\n }\n\n scrollTo (position: number): void {\n const previous = this.value;\n\n this.setValue(position);\n if (previous !== this.value) {\n this.scrollBarEventEmitter.emit('scrolling');\n }\n }\n\n override getMinimumSize (): math.Vector2 {\n const decrementSize = this.getButtonAxisSize(false);\n const incrementSize = this.getButtonAxisSize(true);\n const incrementCrossSize = this.getButtonCrossSize(true);\n const scrollMinimum = this.getThemeStyleBox('scroll').getMinimumSize();\n const grabberMinimum = this.getGrabberMinimumSize();\n\n return this.orientation === Orientation.Horizontal\n ? new math.Vector2(\n decrementSize + incrementSize + scrollMinimum.x + grabberMinimum,\n Math.max(incrementCrossSize, scrollMinimum.y) + this.getCrossStartPadding() + this.getCrossEndPadding(),\n )\n : new math.Vector2(\n Math.max(incrementCrossSize, scrollMinimum.x) + this.getCrossStartPadding() + this.getCrossEndPadding(),\n decrementSize + incrementSize + scrollMinimum.y + grabberMinimum,\n );\n }\n\n override draw (): void {\n const horizontal = this.orientation === Orientation.Horizontal;\n const axisSize = horizontal ? this.width : this.height;\n const decrementState = this.decrementActive\n ? 'Pressed'\n : this.highlight === 'decrement' ? 'Highlight' : '';\n const incrementState = this.incrementActive\n ? 'Pressed'\n : this.highlight === 'increment' ? 'Highlight' : '';\n const decrementSize = this.getButtonAxisSize(false, decrementState);\n const incrementSize = this.getButtonAxisSize(true, incrementState);\n const trackLength = Math.max(0, axisSize - decrementSize - incrementSize);\n const grabber = this.getGrabberRect();\n const grabberStyle = this.dragging\n ? 'grabberPressed'\n : this.highlight === 'track' ? 'grabberHighlight' : 'grabber';\n const scrollStyle = this.hasFocus(true) ? 'scrollFocus' : 'scroll';\n\n if (horizontal) {\n this.drawButtonIcon(false, decrementState, 0, 0);\n this.drawStyleBox(this.getThemeStyleBox(scrollStyle), decrementSize, 0, trackLength, this.height);\n this.drawButtonIcon(true, incrementState, axisSize - incrementSize, 0);\n } else {\n this.drawButtonIcon(false, decrementState, 0, 0);\n this.drawStyleBox(this.getThemeStyleBox(scrollStyle), 0, decrementSize, this.width, trackLength);\n this.drawButtonIcon(true, incrementState, 0, axisSize - incrementSize);\n }\n this.drawStyleBox(this.getThemeStyleBox(grabberStyle), grabber.x, grabber.y, grabber.width, grabber.height);\n }\n\n override onMouseEnter (location: math.Vector2): void {\n this.updateHighlight(this.getAxis(location));\n }\n\n override onMouseMove (event: InputEventMouseMotion): void {\n const position = this.getAxis(event.position);\n\n if (this.dragging) {\n const area = this.getAreaSize();\n\n if (area > 0) {\n const previous = this.value;\n\n this.setAsRatio(this.dragRatio + (position - this.dragPosition) / area);\n if (previous !== this.value) {\n this.scrollBarEventEmitter.emit('scrolling');\n }\n }\n\n return;\n }\n this.updateHighlight(position);\n }\n\n override onMouseLeave (): void {\n if (!this.dragging) {\n this.highlight = 'none';\n }\n }\n\n override onMouseDown (event: InputEventMouseButton): void {\n if (event.buttonIndex !== MouseButton.Left) {\n return;\n }\n const position = this.getAxis(event.position);\n const total = this.getAxisSize();\n const grabberOffset = this.getGrabberOffset();\n const grabberSize = this.getGrabberSize();\n const decrementSize = this.getButtonAxisSize(false);\n const incrementSize = this.getButtonAxisSize(true);\n const trackPosition = position - decrementSize - this.getTrackStartMargin();\n\n if (position < decrementSize) {\n this.decrementActive = true;\n this.scroll(-this.getIncrement());\n } else if (position > total - incrementSize) {\n this.incrementActive = true;\n this.scroll(this.getIncrement());\n } else if (trackPosition < grabberOffset) {\n this.scroll(-this.getPageIncrement());\n } else if (trackPosition < grabberOffset + grabberSize) {\n this.dragging = true;\n this.dragPosition = position;\n this.dragRatio = this.getAsRatio();\n } else {\n this.scroll(this.getPageIncrement());\n }\n event.accept();\n }\n\n override onMouseUp (event: InputEventMouseButton): void {\n if (event.buttonIndex !== MouseButton.Left) {\n return;\n }\n this.decrementActive = false;\n this.incrementActive = false;\n this.dragging = false;\n this.updateHighlight(this.getAxis(event.position));\n }\n\n override onMouseWheel (event: InputEventMouseButton): void {\n if (event.buttonIndex !== MouseButton.WheelUp && event.buttonIndex !== MouseButton.WheelDown) {\n return;\n }\n const previous = this.value;\n const direction = event.buttonIndex === MouseButton.WheelUp ? -1 : 1;\n const wheelIncrement = this.page > 0\n ? this.page / PAGE_DIVISOR\n : (this.maxValue - this.minValue) / 16;\n const amount = Math.max(wheelIncrement * event.factor, Math.max(0, this.step));\n\n this.scroll(direction * amount);\n if (this.value !== previous) {\n event.accept();\n }\n }\n\n override onKeyDown (event: InputEventKey): void {\n let target: number | undefined;\n const increment = this.getIncrement();\n\n if ((this.orientation === Orientation.Horizontal && event.keycode === 'ArrowLeft') ||\n (this.orientation === Orientation.Vertical && event.keycode === 'ArrowUp')) {\n target = this.value - increment;\n } else if ((this.orientation === Orientation.Horizontal && event.keycode === 'ArrowRight') ||\n (this.orientation === Orientation.Vertical && event.keycode === 'ArrowDown')) {\n target = this.value + increment;\n } else if (event.keycode === 'Home') {\n target = this.minValue;\n } else if (event.keycode === 'End') {\n target = this.maxValue;\n }\n if (target !== undefined) {\n const previous = this.value;\n\n this.scrollTo(target);\n if (this.value !== previous) {\n event.accept();\n }\n }\n }\n\n override onScrollBegin (): void {\n this.decrementActive = false;\n this.incrementActive = false;\n this.dragging = false;\n }\n\n private getAxis (position: math.Vector2): number {\n return this.orientation === Orientation.Horizontal ? position.x : position.y;\n }\n\n private getAxisSize (): number {\n return this.orientation === Orientation.Horizontal ? this.width : this.height;\n }\n\n private getIncrement (): number {\n return this.customStep >= 0 ? this.customStep : this.step;\n }\n\n private getPageIncrement (): number {\n return this.page > 0 ? this.page : (this.maxValue - this.minValue) / 16;\n }\n\n private getTrackSize (): number {\n return Math.max(0, this.getAxisSize() - this.getButtonAxisSize(false) - this.getButtonAxisSize(true));\n }\n\n private getAreaSize (): number {\n const scrollMinimum = this.getThemeStyleBox('scroll').getMinimumSize();\n const scrollAxisMinimum = this.orientation === Orientation.Horizontal ? scrollMinimum.x : scrollMinimum.y;\n\n return Math.max(0, this.getTrackSize() - scrollAxisMinimum - this.getGrabberMinimumSize());\n }\n\n private getGrabberSize (): number {\n const range = this.maxValue - this.minValue;\n\n if (range <= 0) {\n return 0;\n }\n\n return Math.min(\n this.getTrackSize(),\n this.getGrabberMinimumSize() + Math.max(0, this.page) / range * this.getAreaSize(),\n );\n }\n\n private getGrabberMinimumSize (): number {\n const minimum = this.getThemeStyleBox('grabber').getMinimumSize();\n\n return this.orientation === Orientation.Horizontal ? minimum.x : minimum.y;\n }\n\n private getGrabberOffset (): number {\n return this.getAreaSize() * this.getAsRatio();\n }\n\n private getGrabberRect (): GrabberRect {\n const offset = this.getButtonAxisSize(false) + this.getTrackStartMargin() + this.getGrabberOffset();\n const size = this.getGrabberSize();\n const crossStart = this.getCrossStartPadding();\n const crossSize = Math.max(0, (this.orientation === Orientation.Horizontal ? this.height : this.width)\n - crossStart - this.getCrossEndPadding());\n\n return this.orientation === Orientation.Horizontal\n ? { x: offset, y: crossStart, width: size, height: crossSize }\n : { x: crossStart, y: offset, width: crossSize, height: size };\n }\n\n private getTrackStartMargin (): number {\n const margins = this.getThemeStyleBox('scroll').getContentMargins();\n\n return this.orientation === Orientation.Horizontal ? margins.left : margins.top;\n }\n\n private getCrossStartPadding (): number {\n return Math.max(0, this.getThemeConstant(\n this.orientation === Orientation.Horizontal ? 'paddingTop' : 'paddingLeft',\n ));\n }\n\n private getCrossEndPadding (): number {\n return Math.max(0, this.getThemeConstant(\n this.orientation === Orientation.Horizontal ? 'paddingBottom' : 'paddingRight',\n ));\n }\n\n private updateHighlight (position: number): void {\n const total = this.getAxisSize();\n const decrementSize = this.getButtonAxisSize(false);\n const incrementSize = this.getButtonAxisSize(true);\n\n if (position < 0 || position > total) {\n this.highlight = 'none';\n } else if (position < decrementSize) {\n this.highlight = 'decrement';\n } else if (position > total - incrementSize) {\n this.highlight = 'increment';\n } else {\n this.highlight = 'track';\n }\n }\n\n private drawButtonIcon (\n increment: boolean,\n state: '' | 'Highlight' | 'Pressed',\n x: number,\n y: number,\n ): void {\n const icon = this.getButtonIcon(increment, state);\n\n if (icon) {\n this.drawTexture(x, y, icon.width, icon.height, icon);\n }\n }\n\n private getButtonIcon (increment: boolean, state: '' | 'Highlight' | 'Pressed' = '') {\n const name = increment ? 'increment' : 'decrement';\n\n return this.getThemeIcon(`${name}${state}`) ?? this.getThemeIcon(name);\n }\n\n private getButtonAxisSize (increment: boolean, state: '' | 'Highlight' | 'Pressed' = ''): number {\n const icon = this.getButtonIcon(increment, state);\n\n return icon ? this.orientation === Orientation.Horizontal ? icon.width : icon.height : 0;\n }\n\n private getButtonCrossSize (increment: boolean): number {\n const icon = this.getButtonIcon(increment);\n\n return icon ? this.orientation === Orientation.Horizontal ? icon.height : icon.width : 0;\n }\n\n override fromData (data: ScrollBarData): void {\n super.fromData(data);\n if (data.customStep !== undefined) {\n this.customStep = data.customStep;\n }\n }\n}\n\n@effectsClass('HScrollBar')\nexport class HScrollBar extends ScrollBar {\n static override readonly themeType: string = 'HScrollBar';\n constructor (engine: Engine) {\n super(engine, Orientation.Horizontal);\n }\n}\n\n@effectsClass('VScrollBar')\nexport class VScrollBar extends ScrollBar {\n static override readonly themeType: string = 'VScrollBar';\n constructor (engine: Engine) {\n super(engine, Orientation.Vertical);\n }\n}\n","import {\n EventEmitter,\n MouseButton,\n effectsClass,\n math,\n} from '@galacean/effects';\nimport type {\n Engine,\n EventEmitterListener,\n InputEventMouseButton,\n InputEventScreenDrag,\n InputEventScreenTouch,\n} from '@galacean/effects';\nimport { Container, SizeFlags } from '../core/control';\nimport type { Control, ControlEvent, RootControl } from '../core/control';\nimport { FocusMode } from '../core/enums';\nimport { ScrollMode } from './enums';\nimport { HScrollBar, ScrollBar, VScrollBar } from './scroll-bar';\nimport type { ScrollContainerData } from '../data';\n\nexport type ScrollContainerEvent = ControlEvent & {\n scrollStarted: [],\n scrollEnded: [],\n};\n\ntype ScrollLayout = {\n horizontalVisible: boolean,\n verticalVisible: boolean,\n horizontalReserved: boolean,\n verticalReserved: boolean,\n viewportWidth: number,\n viewportHeight: number,\n};\n\nconst INERTIA_DECELERATION = 1000;\n\n/** Clips and scrolls its content children using two internal Range scroll bars. */\n@effectsClass('ScrollContainer')\nexport class ScrollContainer extends Container {\n static override readonly themeType: string = 'ScrollContainer';\n private readonly scrollContainerEventEmitter = new EventEmitter<ScrollContainerEvent>();\n private readonly horizontalBar: HScrollBar;\n private readonly verticalBar: VScrollBar;\n private _horizontalScrollMode = ScrollMode.Auto;\n private _verticalScrollMode = ScrollMode.Auto;\n private _scrollHorizontalByDefault = false;\n private _deadzone = 0;\n private _followFocus = false;\n private focusRoot: RootControl | null = null;\n private touchIndex: number | null = null;\n private touchDecelerating = false;\n private beyondDeadzone = false;\n private readonly dragSpeed = new math.Vector2();\n private readonly dragAccum = new math.Vector2();\n private readonly dragFrom = new math.Vector2();\n private readonly lastDragAccum = new math.Vector2();\n private motionSampleTime = 0;\n private viewportWidth = 0;\n private viewportHeight = 0;\n\n private readonly scrollMoved = () => this.queueSort();\n private readonly controlStateChanged = () => {\n if (!this.visibleInHierarchy || !this.enabledInHierarchy) {\n this.cancelTouchDrag();\n }\n };\n private readonly focusOwnerChanged = (control: Control | null) => {\n if (this.followFocus && control && this.isContentDescendant(control)) {\n this.ensureControlVisible(control);\n }\n };\n\n constructor (engine: Engine) {\n super(engine);\n this.horizontalBar = new HScrollBar(engine);\n this.verticalBar = new VScrollBar(engine);\n this.horizontalBar.focusMode = FocusMode.None;\n this.verticalBar.focusMode = FocusMode.None;\n this.clipContents = true;\n this.addChild(this.horizontalBar);\n this.addChild(this.verticalBar);\n this.horizontalBar.on('valueChanged', this.scrollMoved);\n this.verticalBar.on('valueChanged', this.scrollMoved);\n this.on('visibilityChanged', this.controlStateChanged);\n this.on('enabledChanged', this.controlStateChanged);\n }\n\n get hScroll (): number {\n return this.horizontalBar.value;\n }\n\n set hScroll (value: number) {\n this.horizontalBar.setValue(value);\n this.cancelTouchDrag();\n }\n\n get vScroll (): number {\n return this.verticalBar.value;\n }\n\n set vScroll (value: number) {\n this.verticalBar.setValue(value);\n this.cancelTouchDrag();\n }\n\n get horizontalScrollMode (): ScrollMode {\n return this._horizontalScrollMode;\n }\n\n set horizontalScrollMode (value: ScrollMode) {\n assertScrollMode(value);\n if (this._horizontalScrollMode !== value) {\n this._horizontalScrollMode = value;\n this.invalidateScrollLayout();\n }\n }\n\n get verticalScrollMode (): ScrollMode {\n return this._verticalScrollMode;\n }\n\n set verticalScrollMode (value: ScrollMode) {\n assertScrollMode(value);\n if (this._verticalScrollMode !== value) {\n this._verticalScrollMode = value;\n this.invalidateScrollLayout();\n }\n }\n\n get horizontalCustomStep (): number {\n return this.horizontalBar.customStep;\n }\n\n set horizontalCustomStep (value: number) {\n this.horizontalBar.customStep = value;\n }\n\n get verticalCustomStep (): number {\n return this.verticalBar.customStep;\n }\n\n set verticalCustomStep (value: number) {\n this.verticalBar.customStep = value;\n }\n\n get scrollHorizontalByDefault (): boolean {\n return this._scrollHorizontalByDefault;\n }\n\n set scrollHorizontalByDefault (value: boolean) {\n this._scrollHorizontalByDefault = value;\n }\n\n get deadzone (): number {\n return this._deadzone;\n }\n\n set deadzone (value: number) {\n if (!Number.isFinite(value) || value < 0) {\n throw new RangeError('ScrollContainer deadzone must be a non-negative finite number.');\n }\n this._deadzone = value;\n }\n\n get followFocus (): boolean {\n return this._followFocus;\n }\n\n set followFocus (value: boolean) {\n this._followFocus = value;\n }\n\n override on<E extends keyof ScrollContainerEvent> (\n eventName: E,\n listener: EventEmitterListener<ScrollContainerEvent[E]>,\n ): void {\n if (eventName === 'scrollStarted' || eventName === 'scrollEnded') {\n this.scrollContainerEventEmitter.on(eventName, listener);\n } else {\n super.on(eventName, listener as never);\n }\n }\n\n override off<E extends keyof ScrollContainerEvent> (\n eventName: E,\n listener: EventEmitterListener<ScrollContainerEvent[E]>,\n ): void {\n if (eventName === 'scrollStarted' || eventName === 'scrollEnded') {\n this.scrollContainerEventEmitter.off(eventName, listener);\n } else {\n super.off(eventName, listener as never);\n }\n }\n\n getHScrollBar (): HScrollBar {\n return this.horizontalBar;\n }\n\n getVScrollBar (): VScrollBar {\n return this.verticalBar;\n }\n\n override intersectsChildContent (child: Control, position: math.Vector2): boolean {\n if (child === this.horizontalBar || child === this.verticalBar) {\n return true;\n }\n const transform = this.getGlobalTransform2D().elements;\n const globalPosition = new math.Vector2(\n transform[0] * position.x + transform[3] * position.y + transform[6],\n transform[1] * position.x + transform[4] * position.y + transform[7],\n );\n\n if (this.verticalBar.visible && this.verticalBar.enabledInHierarchy &&\n this.verticalBar.hasPoint(this.verticalBar.makePositionLocal(globalPosition))) {\n return false;\n }\n if (this.horizontalBar.visible && this.horizontalBar.enabledInHierarchy &&\n this.horizontalBar.hasPoint(this.horizontalBar.makePositionLocal(globalPosition))) {\n return false;\n }\n\n return true;\n }\n\n ensureControlVisible (control: Control): void {\n if (!this.isContentDescendant(control)) {\n throw new Error('ScrollContainer can only reveal a descendant content control.');\n }\n const transform = control.getGlobalTransform2D().elements;\n const corners = [\n [0, 0],\n [control.width, 0],\n [0, control.height],\n [control.width, control.height],\n ];\n let left = Infinity;\n let top = Infinity;\n let right = -Infinity;\n let bottom = -Infinity;\n\n for (const corner of corners) {\n const global = new math.Vector2(\n transform[0] * corner[0] + transform[3] * corner[1] + transform[6],\n transform[1] * corner[0] + transform[4] * corner[1] + transform[7],\n );\n const local = this.makePositionLocal(global);\n\n left = Math.min(left, local.x);\n top = Math.min(top, local.y);\n right = Math.max(right, local.x);\n bottom = Math.max(bottom, local.y);\n }\n const horizontalDifference = Math.max(Math.min(left, 0), right - this.viewportWidth);\n const verticalDifference = Math.max(Math.min(top, 0), bottom - this.viewportHeight);\n\n this.horizontalBar.setValue(this.horizontalBar.value + horizontalDifference);\n this.verticalBar.setValue(this.verticalBar.value + verticalDifference);\n }\n\n override getMinimumSize (): math.Vector2 {\n return this.measureContent(false);\n }\n\n override getDesiredSize (): math.Vector2 {\n return this.measureContent(true);\n }\n\n override onMouseWheel (event: InputEventMouseButton): void {\n const previousHorizontal = this.horizontalBar.value;\n const previousVertical = this.verticalBar.value;\n const horizontalEnabled = this.horizontalScrollMode !== ScrollMode.Disabled;\n const verticalEnabled = this.verticalScrollMode !== ScrollMode.Disabled;\n const swapAxes = this.scrollHorizontalByDefault !== event.shiftPressed;\n const verticalHidden = !this.verticalBar.visible && this.verticalScrollMode !== ScrollMode.ShowNever;\n const horizontalHidden = !this.horizontalBar.visible && this.horizontalScrollMode !== ScrollMode.ShowNever;\n const horizontalAmount = this.horizontalBar.page / ScrollBar.pageDivisor * event.factor;\n const verticalAmount = this.verticalBar.page / ScrollBar.pageDivisor * event.factor;\n\n if (event.buttonIndex === MouseButton.WheelUp) {\n if ((horizontalEnabled && swapAxes) || verticalHidden) {\n this.horizontalBar.scroll(-horizontalAmount);\n } else if (verticalEnabled) {\n this.verticalBar.scroll(-verticalAmount);\n }\n } else if (event.buttonIndex === MouseButton.WheelDown) {\n if ((horizontalEnabled && swapAxes) || verticalHidden) {\n this.horizontalBar.scroll(horizontalAmount);\n } else if (verticalEnabled) {\n this.verticalBar.scroll(verticalAmount);\n }\n } else if (event.buttonIndex === MouseButton.WheelLeft) {\n if ((verticalEnabled && swapAxes) || horizontalHidden) {\n this.verticalBar.scroll(-verticalAmount);\n } else if (horizontalEnabled) {\n this.horizontalBar.scroll(-horizontalAmount);\n }\n } else if (event.buttonIndex === MouseButton.WheelRight) {\n if ((verticalEnabled && swapAxes) || horizontalHidden) {\n this.verticalBar.scroll(verticalAmount);\n } else if (horizontalEnabled) {\n this.horizontalBar.scroll(horizontalAmount);\n }\n }\n if (previousHorizontal !== this.horizontalBar.value || previousVertical !== this.verticalBar.value) {\n event.accept();\n }\n }\n\n override onTouchDown (event: InputEventScreenTouch): void {\n if (this.touchIndex !== null) {\n this.cancelTouchDrag();\n }\n this.touchIndex = event.index;\n this.touchDecelerating = false;\n this.beyondDeadzone = false;\n this.dragSpeed.set(0, 0);\n this.dragAccum.set(0, 0);\n this.lastDragAccum.set(0, 0);\n this.dragFrom.set(this.horizontalBar.value, this.verticalBar.value);\n this.motionSampleTime = 0;\n }\n\n override onTouchMove (event: InputEventScreenDrag): void {\n if (this.touchIndex !== event.index || this.touchDecelerating) {\n return;\n }\n const previousHorizontal = this.horizontalBar.value;\n const previousVertical = this.verticalBar.value;\n\n this.dragAccum.x -= event.relative.x;\n this.dragAccum.y -= event.relative.y;\n const horizontalEnabled = this.horizontalScrollMode !== ScrollMode.Disabled;\n const verticalEnabled = this.verticalScrollMode !== ScrollMode.Disabled;\n const exceedsDeadzone = this.beyondDeadzone ||\n (horizontalEnabled && Math.abs(this.dragAccum.x) > this.deadzone) ||\n (verticalEnabled && Math.abs(this.dragAccum.y) > this.deadzone);\n\n if (exceedsDeadzone) {\n if (!this.beyondDeadzone) {\n this.beyondDeadzone = true;\n this.dragAccum.set(-event.relative.x, -event.relative.y);\n this.notifyContentScroll(true);\n this.scrollContainerEventEmitter.emit('scrollStarted');\n this.root?.cancelPointerPress(this, event.index);\n }\n if (horizontalEnabled) {\n this.horizontalBar.scrollTo(this.dragFrom.x + this.dragAccum.x);\n } else {\n this.dragAccum.x = 0;\n }\n if (verticalEnabled) {\n this.verticalBar.scrollTo(this.dragFrom.y + this.dragAccum.y);\n } else {\n this.dragAccum.y = 0;\n }\n }\n if (previousHorizontal !== this.horizontalBar.value || previousVertical !== this.verticalBar.value) {\n event.accept();\n }\n }\n\n override onTouchUp (event: InputEventScreenTouch): void {\n if (this.touchIndex !== event.index) {\n return;\n }\n if (event.canceled || (this.dragSpeed.x === 0 && this.dragSpeed.y === 0)) {\n this.cancelTouchDrag();\n } else {\n this.touchDecelerating = true;\n }\n }\n\n override update (deltaTime: number): void {\n const seconds = Math.max(0, deltaTime) / 1000;\n\n if (!this.visibleInHierarchy || !this.enabledInHierarchy) {\n this.cancelTouchDrag();\n } else if (this.touchIndex !== null) {\n if (this.touchDecelerating) {\n this.updateInertia(seconds);\n } else if (this.beyondDeadzone) {\n this.updateDragVelocity(seconds);\n }\n }\n super.update(deltaTime);\n }\n\n override dispose (): void {\n this.horizontalBar.off('valueChanged', this.scrollMoved);\n this.verticalBar.off('valueChanged', this.scrollMoved);\n this.off('visibilityChanged', this.controlStateChanged);\n this.off('enabledChanged', this.controlStateChanged);\n this.focusRoot?.off('guiFocusChanged', this.focusOwnerChanged);\n this.focusRoot = null;\n this.cancelTouchDrag();\n super.dispose();\n }\n\n protected override drawChildren (): void {\n const graphics = this.engine.graphics;\n\n if (this.clipContents) {\n graphics.pushClipRect(0, 0, this.viewportWidth, this.viewportHeight);\n }\n try {\n for (const child of this.children) {\n if (child !== this.horizontalBar && child !== this.verticalBar) {\n child.drawInternal();\n }\n }\n } finally {\n if (this.clipContents) {\n graphics.popClipRect();\n }\n }\n this.verticalBar.drawInternal();\n this.horizontalBar.drawInternal();\n }\n\n protected override getLayoutChildren (): Control[] {\n return super.getLayoutChildren().filter(child => child !== this.horizontalBar && child !== this.verticalBar);\n }\n\n protected override onRootChanged (previousRoot: RootControl | null, nextRoot: RootControl | null): void {\n if (previousRoot === nextRoot) {\n return;\n }\n this.focusRoot?.off('guiFocusChanged', this.focusOwnerChanged);\n this.focusRoot = nextRoot;\n this.focusRoot?.on('guiFocusChanged', this.focusOwnerChanged);\n }\n\n protected override sortChildren (): void {\n const contentSize = this.getLargestContentSize(false);\n const layout = this.resolveLayout(contentSize);\n\n this.viewportWidth = layout.viewportWidth;\n this.viewportHeight = layout.viewportHeight;\n this.horizontalBar.visible = layout.horizontalVisible;\n this.verticalBar.visible = layout.verticalVisible;\n this.horizontalBar.setMaxValue(Math.max(contentSize.x, layout.viewportWidth));\n this.horizontalBar.setPage(layout.viewportWidth);\n this.verticalBar.setMaxValue(Math.max(contentSize.y, layout.viewportHeight));\n this.verticalBar.setPage(layout.viewportHeight);\n this.horizontalBar.setRect({\n position: new math.Vector2(0, this.height - this.horizontalBar.getBoundMinimumSize().y),\n size: new math.Vector2(layout.viewportWidth, this.horizontalBar.getBoundMinimumSize().y),\n });\n this.verticalBar.setRect({\n position: new math.Vector2(this.width - this.verticalBar.getBoundMinimumSize().x, 0),\n size: new math.Vector2(this.verticalBar.getBoundMinimumSize().x, layout.viewportHeight),\n });\n\n for (const child of this.getLayoutChildren()) {\n const minimum = child.getBoundMinimumSize();\n const maximum = child.getCombinedMaximumSize();\n let width = (child.horizontalSizeFlags & SizeFlags.Expand) !== 0\n ? Math.max(layout.viewportWidth, minimum.x)\n : minimum.x;\n let height = (child.verticalSizeFlags & SizeFlags.Expand) !== 0\n ? Math.max(layout.viewportHeight, minimum.y)\n : minimum.y;\n\n if (maximum.x >= 0) {\n width = Math.min(width, maximum.x);\n }\n if (maximum.y >= 0) {\n height = Math.min(height, maximum.y);\n }\n this.fitChildInRect(child, {\n position: new math.Vector2(\n Math.floor(-this.horizontalBar.value),\n Math.floor(-this.verticalBar.value),\n ),\n size: new math.Vector2(width, height),\n });\n }\n }\n\n private measureContent (useDesired: boolean): math.Vector2 {\n const content = this.getLargestContentSize(useDesired);\n const layout = this.resolveLayout(content);\n const maximum = this.getCombinedMaximumSize();\n const minimum = new math.Vector2();\n const horizontalConstrained = this.horizontalScrollMode === ScrollMode.Disabled ||\n this.horizontalScrollMode === ScrollMode.MaximizeFirst;\n const verticalConstrained = this.verticalScrollMode === ScrollMode.Disabled ||\n this.verticalScrollMode === ScrollMode.MaximizeFirst;\n\n if (this.horizontalScrollMode === ScrollMode.Disabled) {\n minimum.x = content.x;\n } else if (this.horizontalScrollMode === ScrollMode.MaximizeFirst) {\n minimum.x = maximum.x >= 0 ? Math.min(content.x, maximum.x) : content.x;\n }\n if (this.verticalScrollMode === ScrollMode.Disabled) {\n minimum.y = content.y;\n } else if (this.verticalScrollMode === ScrollMode.MaximizeFirst) {\n minimum.y = maximum.y >= 0 ? Math.min(content.y, maximum.y) : content.y;\n }\n if (horizontalConstrained && layout.verticalReserved) {\n minimum.x += this.verticalBar.getBoundMinimumSize().x;\n }\n if (verticalConstrained && layout.horizontalReserved) {\n minimum.y += this.horizontalBar.getBoundMinimumSize().y;\n }\n\n return minimum;\n }\n\n private getLargestContentSize (useDesired: boolean): math.Vector2 {\n const size = new math.Vector2();\n\n for (const child of this.getLayoutChildren()) {\n const childSize = useDesired ? child.getBoundDesiredSize() : child.getBoundMinimumSize();\n\n size.x = Math.max(size.x, childSize.x);\n size.y = Math.max(size.y, childSize.y);\n }\n\n return size;\n }\n\n private resolveLayout (content: math.Vector2): ScrollLayout {\n const horizontalSize = this.horizontalBar.getBoundMinimumSize().y;\n const verticalSize = this.verticalBar.getBoundMinimumSize().x;\n let horizontalVisible = this.horizontalScrollMode === ScrollMode.ShowAlways;\n let verticalVisible = this.verticalScrollMode === ScrollMode.ShowAlways;\n let horizontalReserved = horizontalVisible || this.horizontalScrollMode === ScrollMode.Reserve;\n let verticalReserved = verticalVisible || this.verticalScrollMode === ScrollMode.Reserve;\n\n for (let index = 0; index < 4; index++) {\n const viewportWidth = Math.max(0, this.width - (verticalReserved ? verticalSize : 0));\n const viewportHeight = Math.max(0, this.height - (horizontalReserved ? horizontalSize : 0));\n\n horizontalVisible = shouldShowBar(this.horizontalScrollMode, content.x, viewportWidth);\n verticalVisible = shouldShowBar(this.verticalScrollMode, content.y, viewportHeight);\n const nextHorizontalReserved = horizontalVisible || this.horizontalScrollMode === ScrollMode.Reserve;\n const nextVerticalReserved = verticalVisible || this.verticalScrollMode === ScrollMode.Reserve;\n\n if (horizontalReserved === nextHorizontalReserved && verticalReserved === nextVerticalReserved) {\n break;\n }\n horizontalReserved = nextHorizontalReserved;\n verticalReserved = nextVerticalReserved;\n }\n\n return {\n horizontalVisible,\n verticalVisible,\n horizontalReserved,\n verticalReserved,\n viewportWidth: Math.max(0, this.width - (verticalReserved ? verticalSize : 0)),\n viewportHeight: Math.max(0, this.height - (horizontalReserved ? horizontalSize : 0)),\n };\n }\n\n private invalidateScrollLayout (): void {\n this.updateMinimumSize();\n this.updateDesiredSize();\n this.queueSort();\n }\n\n private isContentDescendant (control: Control): boolean {\n let current: Control | null = control;\n\n while (current && current.parent !== this) {\n current = current.parent;\n }\n\n return !!current && current !== this.horizontalBar && current !== this.verticalBar && current.parent === this;\n }\n\n private notifyContentScroll (begin: boolean): void {\n const notify = (control: Control) => {\n if (begin) {\n control.onScrollBegin();\n } else {\n control.onScrollEnd();\n }\n for (const child of control.children) {\n notify(child);\n }\n };\n\n for (const child of this.getLayoutChildren()) {\n notify(child);\n }\n }\n\n private updateDragVelocity (seconds: number): void {\n if (seconds <= 0) {\n return;\n }\n this.motionSampleTime += seconds;\n if (this.motionSampleTime >= 0.1 || (this.dragSpeed.x === 0 && this.dragSpeed.y === 0)) {\n this.dragSpeed.set(\n (this.dragAccum.x - this.lastDragAccum.x) / this.motionSampleTime,\n (this.dragAccum.y - this.lastDragAccum.y) / this.motionSampleTime,\n );\n this.lastDragAccum.copyFrom(this.dragAccum);\n this.motionSampleTime = 0;\n }\n }\n\n private updateInertia (seconds: number): void {\n if (seconds <= 0) {\n return;\n }\n const previousHorizontal = this.horizontalBar.value;\n const previousVertical = this.verticalBar.value;\n\n if (this.horizontalScrollMode !== ScrollMode.Disabled) {\n this.horizontalBar.scrollTo(previousHorizontal + this.dragSpeed.x * seconds);\n } else {\n this.dragSpeed.x = 0;\n }\n if (this.verticalScrollMode !== ScrollMode.Disabled) {\n this.verticalBar.scrollTo(previousVertical + this.dragSpeed.y * seconds);\n } else {\n this.dragSpeed.y = 0;\n }\n if (this.horizontalBar.value === previousHorizontal && this.dragSpeed.x !== 0) {\n this.dragSpeed.x = 0;\n } else {\n this.dragSpeed.x = decelerate(this.dragSpeed.x, INERTIA_DECELERATION * seconds);\n }\n if (this.verticalBar.value === previousVertical && this.dragSpeed.y !== 0) {\n this.dragSpeed.y = 0;\n } else {\n this.dragSpeed.y = decelerate(this.dragSpeed.y, INERTIA_DECELERATION * seconds);\n }\n if (this.dragSpeed.x === 0 && this.dragSpeed.y === 0) {\n this.cancelTouchDrag();\n }\n }\n\n private cancelTouchDrag (): void {\n const notifyEnd = this.beyondDeadzone;\n\n this.touchIndex = null;\n this.touchDecelerating = false;\n this.beyondDeadzone = false;\n this.dragSpeed.set(0, 0);\n this.dragAccum.set(0, 0);\n this.dragFrom.set(0, 0);\n this.lastDragAccum.set(0, 0);\n this.motionSampleTime = 0;\n if (notifyEnd) {\n this.notifyContentScroll(false);\n this.scrollContainerEventEmitter.emit('scrollEnded');\n }\n }\n\n override fromData (data: ScrollContainerData): void {\n super.fromData(data);\n if (data.horizontalScrollMode !== undefined) {\n this.horizontalScrollMode = data.horizontalScrollMode;\n }\n if (data.verticalScrollMode !== undefined) {\n this.verticalScrollMode = data.verticalScrollMode;\n }\n if (data.horizontalCustomStep !== undefined) {\n this.horizontalCustomStep = data.horizontalCustomStep;\n }\n if (data.verticalCustomStep !== undefined) {\n this.verticalCustomStep = data.verticalCustomStep;\n }\n if (data.scrollHorizontalByDefault !== undefined) {\n this.scrollHorizontalByDefault = data.scrollHorizontalByDefault;\n }\n if (data.deadzone !== undefined) {\n this.deadzone = data.deadzone;\n }\n if (data.followFocus !== undefined) {\n this.followFocus = data.followFocus;\n }\n if (data.hScroll !== undefined) {\n this.horizontalBar.setValueNoSignal(data.hScroll);\n }\n if (data.vScroll !== undefined) {\n this.verticalBar.setValueNoSignal(data.vScroll);\n }\n }\n}\n\nfunction shouldShowBar (mode: ScrollMode, contentSize: number, viewportSize: number): boolean {\n if (mode === ScrollMode.ShowAlways) {\n return true;\n }\n if (mode === ScrollMode.Auto || mode === ScrollMode.Reserve || mode === ScrollMode.MaximizeFirst) {\n return contentSize > viewportSize;\n }\n\n return false;\n}\n\nfunction decelerate (value: number, amount: number): number {\n if (Math.abs(value) <= amount) {\n return 0;\n }\n\n return value - Math.sign(value) * amount;\n}\n\nfunction assertScrollMode (value: ScrollMode): void {\n if (!Number.isInteger(value) || value < ScrollMode.Disabled || value > ScrollMode.MaximizeFirst) {\n throw new RangeError('Invalid ScrollContainer scroll mode.');\n }\n}\n","import {\n math,\n} from '@galacean/effects';\nimport {\n StyleBoxEmpty,\n StyleBoxFlat,\n ThemeItemType,\n ThemeRegistry,\n} from '../core/theme';\nimport type { StyleBox, ThemeItemDefinitions } from '../core/theme';\n\nconst palette = {\n text: new math.Color(0.92, 0.94, 0.98, 1),\n disabledText: new math.Color(0.55, 0.58, 0.64, 1),\n panel: new math.Color(0.10, 0.12, 0.16, 0.96),\n border: new math.Color(0.28, 0.32, 0.40, 1),\n normal: new math.Color(0.22, 0.25, 0.31, 1),\n hover: new math.Color(0.30, 0.34, 0.42, 1),\n pressed: new math.Color(0.16, 0.19, 0.25, 1),\n disabled: new math.Color(0.16, 0.18, 0.22, 0.75),\n accent: new math.Color(0.25, 0.58, 0.92, 1),\n accentHover: new math.Color(0.34, 0.67, 1, 1),\n track: new math.Color(0.12, 0.14, 0.18, 0.82),\n clear: new math.Color(0, 0, 0, 0),\n white: new math.Color(1, 1, 1, 1),\n};\n\nfunction flat (\n background: math.Color,\n border = palette.clear,\n borderWidth = 0,\n contentHorizontal = 0,\n contentVertical = 0,\n): StyleBoxFlat {\n const style = new StyleBoxFlat();\n\n style.setBackgroundColor(background);\n style.setBorderColor(border);\n style.setBorderWidths(borderWidth, borderWidth, borderWidth, borderWidth);\n style.setContentMargins(contentHorizontal, contentVertical, contentHorizontal, contentVertical);\n\n return style;\n}\n\nfunction empty (contentHorizontal = 0, contentVertical = 0): StyleBoxEmpty {\n const style = new StyleBoxEmpty();\n\n style.setContentMargins(contentHorizontal, contentVertical, contentHorizontal, contentVertical);\n\n return style;\n}\n\nfunction style (value: StyleBox): { type: ThemeItemType.StyleBox, defaultValue: StyleBox, affectsLayout: true } {\n return { type: ThemeItemType.StyleBox, defaultValue: value, affectsLayout: true };\n}\n\nfunction color (value: math.Color) {\n return { type: ThemeItemType.Color, defaultValue: value } as const;\n}\n\nfunction constant (value: number, affectsLayout = true) {\n return { type: ThemeItemType.Constant, defaultValue: value, affectsLayout } as const;\n}\n\nconst fontItems: ThemeItemDefinitions = {\n font: {\n type: ThemeItemType.Font,\n defaultValue: { family: 'sans-serif', weight: 'normal', style: 'normal' },\n affectsLayout: true,\n },\n fontSize: { type: ThemeItemType.FontSize, defaultValue: 14, affectsLayout: true },\n};\n\nThemeRegistry.registerType('Control', null, fontItems);\nThemeRegistry.registerType('Container', 'Control');\nThemeRegistry.registerType('Label', 'Control', {\n fontColor: color(palette.text),\n lineSpacing: constant(0),\n});\nThemeRegistry.registerType('BaseButton', 'Control');\nThemeRegistry.registerType('Button', 'BaseButton', {\n normal: style(flat(palette.normal, palette.border, 1, 8, 4)),\n hover: style(flat(palette.hover, palette.border, 1, 8, 4)),\n pressed: style(flat(palette.pressed, palette.border, 1, 8, 4)),\n hoverPressed: style(flat(palette.pressed, palette.accent, 1, 8, 4)),\n disabled: style(flat(palette.disabled, palette.border, 1, 8, 4)),\n focus: style(flat(palette.clear, palette.accentHover, 1)),\n fontColor: color(palette.text),\n fontFocusColor: color(palette.text),\n fontHoverColor: color(palette.text),\n fontPressedColor: color(palette.text),\n fontHoverPressedColor: color(palette.text),\n fontDisabledColor: color(palette.disabledText),\n iconTint: color(palette.white),\n iconFocusTint: color(palette.white),\n iconHoverTint: color(palette.white),\n iconPressedTint: color(palette.white),\n iconHoverPressedTint: color(palette.white),\n iconDisabledTint: color(palette.disabledText),\n icon: { type: ThemeItemType.Icon, defaultValue: null, affectsLayout: true },\n iconSeparation: constant(4),\n alignToLargestStyleBox: constant(0),\n});\nThemeRegistry.registerType('Checkbox', 'Button', {\n normal: style(empty(4, 4)),\n hover: style(empty(4, 4)),\n pressed: style(empty(4, 4)),\n hoverPressed: style(empty(4, 4)),\n disabled: style(empty(4, 4)),\n checked: { type: ThemeItemType.Icon, defaultValue: null, affectsLayout: true },\n unchecked: { type: ThemeItemType.Icon, defaultValue: null, affectsLayout: true },\n checkedDisabled: { type: ThemeItemType.Icon, defaultValue: null, affectsLayout: true },\n uncheckedDisabled: { type: ThemeItemType.Icon, defaultValue: null, affectsLayout: true },\n radioChecked: { type: ThemeItemType.Icon, defaultValue: null, affectsLayout: true },\n radioUnchecked: { type: ThemeItemType.Icon, defaultValue: null, affectsLayout: true },\n radioCheckedDisabled: { type: ThemeItemType.Icon, defaultValue: null, affectsLayout: true },\n radioUncheckedDisabled: { type: ThemeItemType.Icon, defaultValue: null, affectsLayout: true },\n checkedColor: color(palette.white),\n uncheckedColor: color(palette.white),\n checkedDisabledColor: color(palette.disabledText),\n markColor: color(palette.accent),\n markDisabledColor: color(palette.disabledText),\n markUncheckedColor: color(new math.Color(0.88, 0.88, 0.88, 0.2)),\n markUncheckedDisabledColor: color(new math.Color(0.5, 0.5, 0.5, 0.2)),\n markOutlineColor: color(palette.border),\n markSize: constant(16),\n markSeparation: constant(8),\n checkVOffset: constant(0),\n});\nThemeRegistry.registerType('CheckButton', 'Button', {\n normal: style(empty(6, 4)),\n hover: style(empty(6, 4)),\n pressed: style(empty(6, 4)),\n hoverPressed: style(empty(6, 4)),\n disabled: style(empty(6, 4)),\n checked: { type: ThemeItemType.Icon, defaultValue: null, affectsLayout: true },\n unchecked: { type: ThemeItemType.Icon, defaultValue: null, affectsLayout: true },\n checkedDisabled: { type: ThemeItemType.Icon, defaultValue: null, affectsLayout: true },\n uncheckedDisabled: { type: ThemeItemType.Icon, defaultValue: null, affectsLayout: true },\n buttonCheckedColor: color(palette.white),\n buttonUncheckedColor: color(palette.white),\n switchColor: color(palette.accent),\n switchDisabledColor: color(palette.disabledText),\n switchOffColor: color(palette.border),\n switchKnobColor: color(palette.text),\n switchWidth: constant(28),\n switchHeight: constant(14),\n switchSeparation: constant(6),\n checkVOffset: constant(0),\n});\nThemeRegistry.registerType('Panel', 'Control', {\n panel: style(flat(palette.panel, palette.border, 1)),\n});\nThemeRegistry.registerType('PanelContainer', 'Container', {\n panel: style(flat(palette.panel, palette.border, 1, 4, 4)),\n});\nThemeRegistry.registerType('Separator', 'Control', {\n separator: style(flat(palette.border)),\n separation: constant(1),\n});\nThemeRegistry.registerType('HSeparator', 'Separator');\nThemeRegistry.registerType('VSeparator', 'Separator');\nThemeRegistry.registerType('TextInput', 'Control', {\n normal: style(flat(palette.track, palette.border, 1, 6, 4)),\n readOnly: style(flat(palette.disabled, palette.border, 1, 6, 4)),\n focus: style(flat(palette.clear, palette.accentHover, 1)),\n fontColor: color(palette.text),\n fontReadOnlyColor: color(palette.disabledText),\n fontPlaceholderColor: color(palette.disabledText),\n selectionColor: color(new math.Color(palette.accent.r, palette.accent.g, palette.accent.b, 0.45)),\n caretColor: color(palette.text),\n caretWidth: constant(1, false),\n});\nThemeRegistry.registerType('LineEdit', 'TextInput');\nThemeRegistry.registerType('TextEdit', 'TextInput');\nThemeRegistry.registerType('Popup', 'PanelContainer', {\n panel: style(flat(palette.panel, palette.border, 1, 6, 6)),\n});\nThemeRegistry.registerType('PopupPanel', 'Popup');\nThemeRegistry.registerType('PopupMenu', 'Popup', {\n hover: style(flat(palette.hover)),\n separator: style(flat(palette.border)),\n fontColor: color(palette.text),\n fontDisabledColor: color(palette.disabledText),\n checkColor: color(palette.accent),\n itemHeight: constant(28),\n separatorHeight: constant(9),\n horizontalPadding: constant(8),\n iconWidth: constant(20),\n});\nThemeRegistry.registerType('MenuButton', 'Button');\nThemeRegistry.registerType('OptionButton', 'MenuButton', {\n arrow: { type: ThemeItemType.Icon, defaultValue: null, affectsLayout: true },\n arrowSize: constant(12),\n arrowMargin: constant(4),\n hSeparation: constant(4),\n modulateArrow: constant(1),\n});\nThemeRegistry.registerType('ColorPickerButton', 'Button', {\n swatchBorderColor: color(palette.border),\n});\nThemeRegistry.registerType('Range', 'Control');\nThemeRegistry.registerType('ProgressBar', 'Range', {\n background: style(flat(palette.track)),\n fill: style(flat(palette.accent)),\n fontColor: color(palette.text),\n});\nThemeRegistry.registerType('Slider', 'Range', {\n track: style(flat(palette.track)),\n fill: style(flat(palette.accent)),\n fillHighlight: style(flat(palette.accentHover)),\n grabber: style(flat(palette.normal, palette.border, 1)),\n grabberHighlight: style(flat(palette.accentHover, palette.border, 1)),\n grabberDisabled: style(flat(palette.disabled, palette.border, 1)),\n trackThickness: constant(4),\n grabberSize: constant(14),\n});\nThemeRegistry.registerType('HSlider', 'Slider');\nThemeRegistry.registerType('VSlider', 'Slider');\nThemeRegistry.registerType('ScrollBar', 'Range', {\n scroll: style(flat(palette.track)),\n scrollFocus: style(flat(palette.track, palette.accentHover, 1)),\n grabber: style(flat(palette.disabledText, palette.clear, 0, 4, 4)),\n grabberHighlight: style(flat(palette.accent, palette.clear, 0, 4, 4)),\n grabberPressed: style(flat(palette.accentHover, palette.clear, 0, 4, 4)),\n decrement: { type: ThemeItemType.Icon, defaultValue: null, affectsLayout: true },\n decrementHighlight: { type: ThemeItemType.Icon, defaultValue: null },\n decrementPressed: { type: ThemeItemType.Icon, defaultValue: null },\n increment: { type: ThemeItemType.Icon, defaultValue: null, affectsLayout: true },\n incrementHighlight: { type: ThemeItemType.Icon, defaultValue: null },\n incrementPressed: { type: ThemeItemType.Icon, defaultValue: null },\n paddingLeft: constant(0),\n paddingTop: constant(0),\n paddingRight: constant(0),\n paddingBottom: constant(0),\n});\nThemeRegistry.registerType('HScrollBar', 'ScrollBar', {\n scroll: style(flat(palette.track, palette.clear, 0, 0, 4)),\n});\nThemeRegistry.registerType('VScrollBar', 'ScrollBar', {\n scroll: style(flat(palette.track, palette.clear, 0, 4, 0)),\n});\nThemeRegistry.registerType('BoxContainer', 'Container', { separation: constant(0) });\nThemeRegistry.registerType('HBoxContainer', 'BoxContainer');\nThemeRegistry.registerType('VBoxContainer', 'BoxContainer');\nThemeRegistry.registerType('ColorPicker', 'VBoxContainer');\nThemeRegistry.registerType('GridContainer', 'Container', {\n horizontalSeparation: constant(0),\n verticalSeparation: constant(0),\n});\nThemeRegistry.registerType('MarginContainer', 'Container', {\n marginLeft: constant(0),\n marginTop: constant(0),\n marginRight: constant(0),\n marginBottom: constant(0),\n});\nThemeRegistry.registerType('CenterContainer', 'Container');\nThemeRegistry.registerType('AspectRatioContainer', 'Container');\nThemeRegistry.registerType('ScrollContainer', 'Container');\nThemeRegistry.registerType('ColorRect', 'Control');\nThemeRegistry.registerType('TextureRect', 'Control');\nThemeRegistry.registerType('NinePatchRect', 'Control');\n\n// Keep an explicit empty style available to themes that want to remove a layer.\nThemeRegistry.registerType('Control', null, {\n empty: style(StyleBoxEmpty.shared),\n});\n","export enum HorizontalAlignment {\n Left,\n Center,\n Right,\n Fill,\n}\n\nexport enum VerticalAlignment {\n Top,\n Center,\n Bottom,\n Fill,\n}\n\nexport enum AutowrapMode {\n Off,\n Arbitrary,\n Word,\n WordSmart,\n}\n\nexport enum TextOverflow {\n Visible,\n Clip,\n Ellipsis,\n}\n\nexport enum TextureExpandMode {\n KeepSize,\n IgnoreSize,\n FitWidth,\n FitWidthProportional,\n FitHeight,\n FitHeightProportional,\n}\n\nexport enum TextureStretchMode {\n Scale,\n Tile,\n Keep,\n KeepCentered,\n KeepAspect,\n KeepAspectCentered,\n KeepAspectCovered,\n}\n\nexport enum AxisStretchMode {\n Stretch,\n Tile,\n TileFit,\n}\n\nexport enum Side {\n Left,\n Top,\n Right,\n Bottom,\n}\n\nexport enum ButtonDrawMode {\n Normal,\n Pressed,\n Hover,\n Disabled,\n HoverPressed,\n}\n\nexport enum ButtonActionMode {\n Press,\n Release,\n}\n\nexport enum ProgressFillMode {\n BeginToEnd,\n EndToBegin,\n TopToBottom,\n BottomToTop,\n}\n","import {\n effectsClass,\n math,\n} from '@galacean/effects';\nimport type { Engine, TextMeasurement } from '@galacean/effects';\nimport { Control } from '../core/control';\nimport { MouseFilter } from '../core/enums';\nimport type { LabelData } from '../data';\nimport { AutowrapMode, HorizontalAlignment, TextOverflow, VerticalAlignment } from './enums';\n\ntype TextLine = {\n text: string,\n measurement: TextMeasurement,\n};\n\ntype TextLayout = {\n lines: TextLine[],\n lineHeight: number,\n width: number,\n height: number,\n};\n\n@effectsClass('Label')\nexport class Label extends Control {\n static override readonly themeType: string = 'Label';\n private _text = '';\n private _horizontalAlignment = HorizontalAlignment.Left;\n private _verticalAlignment = VerticalAlignment.Top;\n private _autowrapMode = AutowrapMode.Off;\n private _textOverflow = TextOverflow.Visible;\n private layoutDirty = true;\n private layoutWidth = Number.NaN;\n private layout: TextLayout | null = null;\n\n constructor (engine: Engine, text = '') {\n super(engine);\n\n this._text = text;\n this.mouseFilter = MouseFilter.Ignore;\n }\n\n get text (): string {\n return this._text;\n }\n\n set text (value: string) {\n if (this._text !== value) {\n this._text = value;\n this.invalidateTextLayout();\n }\n }\n\n get horizontalAlignment (): HorizontalAlignment {\n return this._horizontalAlignment;\n }\n\n set horizontalAlignment (value: HorizontalAlignment) {\n if (this._horizontalAlignment !== value) {\n this._horizontalAlignment = value;\n this.layoutDirty = true;\n }\n }\n\n get verticalAlignment (): VerticalAlignment {\n return this._verticalAlignment;\n }\n\n set verticalAlignment (value: VerticalAlignment) {\n if (this._verticalAlignment !== value) {\n this._verticalAlignment = value;\n this.layoutDirty = true;\n }\n }\n\n get autowrapMode (): AutowrapMode {\n return this._autowrapMode;\n }\n\n set autowrapMode (value: AutowrapMode) {\n if (this._autowrapMode !== value) {\n this._autowrapMode = value;\n this.invalidateTextLayout();\n }\n }\n\n get textOverflow (): TextOverflow {\n return this._textOverflow;\n }\n\n set textOverflow (value: TextOverflow) {\n if (this._textOverflow !== value) {\n this._textOverflow = value;\n this.layoutDirty = true;\n this.updateMinimumSize();\n }\n }\n\n override getMinimumSize (): math.Vector2 {\n const natural = this.createNaturalLayout();\n\n if (this.autowrapMode === AutowrapMode.Off) {\n return new math.Vector2(\n this.textOverflow === TextOverflow.Visible ? natural.width : 0,\n natural.height,\n );\n }\n\n const width = this.getMinimumLineWidth();\n const paragraphCount = Math.max(1, this._text.split('\\n').length);\n\n return new math.Vector2(\n width,\n natural.lineHeight * paragraphCount + this.getThemeConstant('lineSpacing') * Math.max(0, paragraphCount - 1),\n );\n }\n\n override getDesiredSize (): math.Vector2 {\n const layout = this.createNaturalLayout();\n\n return new math.Vector2(layout.width, layout.height);\n }\n\n override draw (): void {\n const layout = this.getTextLayout(this.width);\n const clipped = this.textOverflow !== TextOverflow.Visible;\n const gap = this.getVerticalGap(layout);\n let y = this.getTextStartY(layout, gap);\n\n if (clipped) {\n this.engine.graphics.pushClipRect(0, 0, this.width, this.height);\n }\n try {\n for (let i = 0; i < layout.lines.length; i++) {\n const source = layout.lines[i];\n const line = this.textOverflow === TextOverflow.Ellipsis\n ? this.ellipsize(source, this.width)\n : source;\n const fill = this.horizontalAlignment === HorizontalAlignment.Fill && i < layout.lines.length - 1;\n\n if (fill && countFillSpaces(line.text) > 0 && line.measurement.width < this.width) {\n this.drawFilledLine(line, y);\n } else {\n this.drawThemedText(this.getTextStartX(line.measurement.width), y, line.text);\n }\n y += layout.lineHeight + this.getThemeConstant('lineSpacing') + gap;\n }\n } finally {\n if (clipped) {\n this.engine.graphics.popClipRect();\n }\n }\n }\n\n private invalidateTextLayout (): void {\n this.layoutDirty = true;\n this.updateMinimumSize();\n this.updateDesiredSize();\n }\n\n protected override onThemeChanged (affectsLayout: boolean): void {\n if (affectsLayout) {this.layoutDirty = true;}\n super.onThemeChanged(affectsLayout);\n }\n\n private measure (text: string): TextMeasurement {\n const font = this.getThemeFont('font');\n\n return this.measureText(text, this.getThemeFontSize('fontSize'), font.family, font.weight, font.style);\n }\n\n private getTextLayout (width: number): TextLayout {\n const constrainedWidth = this.autowrapMode === AutowrapMode.Off ? Number.POSITIVE_INFINITY : Math.max(0, width);\n\n if (this.layoutDirty || this.layoutWidth !== constrainedWidth || !this.layout) {\n this.layout = this.createLayout(constrainedWidth);\n this.layoutWidth = constrainedWidth;\n this.layoutDirty = false;\n }\n\n return this.layout;\n }\n\n private createNaturalLayout (): TextLayout {\n return this.createLayout(Number.POSITIVE_INFINITY);\n }\n\n private createLayout (width: number): TextLayout {\n const lines: TextLine[] = [];\n const paragraphs = this.text.split('\\n');\n const emptyMeasurement = this.measure('');\n\n for (const paragraph of paragraphs) {\n if (this.autowrapMode === AutowrapMode.Off || !Number.isFinite(width)) {\n lines.push({ text: paragraph, measurement: this.measure(paragraph) });\n } else {\n lines.push(...this.wrapParagraph(paragraph, width));\n }\n }\n if (lines.length === 0) {\n lines.push({ text: '', measurement: emptyMeasurement });\n }\n\n const lineHeight = lines[0]?.measurement.lineHeight ?? emptyMeasurement.lineHeight;\n const maximumWidth = lines.reduce((value, line) => Math.max(value, line.measurement.width), 0);\n const height = lineHeight * lines.length + this.getThemeConstant('lineSpacing') * Math.max(0, lines.length - 1);\n\n return { lines, lineHeight, width: maximumWidth, height };\n }\n\n private wrapParagraph (paragraph: string, width: number): TextLine[] {\n const characters = Array.from(paragraph);\n\n if (characters.length === 0) {\n return [{ text: '', measurement: this.measure('') }];\n }\n if (width <= 0) {\n return characters.map(text => ({ text, measurement: this.measure(text) }));\n }\n\n const measurement = this.measure(paragraph);\n const lines: TextLine[] = [];\n let start = 0;\n\n while (start < characters.length) {\n let cursorWidth = 0;\n let breakEnd = -1;\n let breakNext = -1;\n let index = start;\n\n for (; index < characters.length; index++) {\n const character = characters[index];\n const advance = measurement.advances[index] ?? 0;\n\n if (cursorWidth + advance > width && index > start) {\n break;\n }\n cursorWidth += advance;\n if (isBreakSpace(character)) {\n breakEnd = index;\n breakNext = index + 1;\n } else if (isCJKLike(character)) {\n breakEnd = index + 1;\n breakNext = index + 1;\n }\n if (cursorWidth > width) {\n index++;\n\n break;\n }\n }\n\n if (index >= characters.length) {\n const text = characters.slice(start).join('');\n\n lines.push({ text, measurement: this.measure(text) });\n\n break;\n }\n\n let end: number;\n let next: number;\n\n if (this.autowrapMode !== AutowrapMode.Arbitrary && breakEnd > start) {\n end = breakEnd;\n next = breakNext;\n } else if (this.autowrapMode === AutowrapMode.Word) {\n end = this.findWordEnd(characters, index);\n next = end;\n } else {\n end = Math.max(start + 1, index);\n next = end;\n }\n\n const text = characters.slice(start, end).join('').replace(/[\\t \\u00a0]+$/, '');\n\n lines.push({ text, measurement: this.measure(text) });\n start = skipBreakSpaces(characters, Math.max(next, start + 1));\n }\n\n return lines;\n }\n\n private findWordEnd (characters: string[], start: number): number {\n for (let i = Math.max(1, start); i < characters.length; i++) {\n if (isBreakSpace(characters[i]) || isCJKLike(characters[i])) {\n return isBreakSpace(characters[i]) ? i : i + 1;\n }\n }\n\n return characters.length;\n }\n\n private getMinimumLineWidth (): number {\n const paragraphs = this.text.split('\\n');\n let width = 0;\n\n if (this.autowrapMode === AutowrapMode.Arbitrary || this.autowrapMode === AutowrapMode.WordSmart) {\n for (const paragraph of paragraphs) {\n for (const character of Array.from(paragraph)) {\n width = Math.max(width, this.measure(character).width);\n }\n }\n\n return width;\n }\n\n for (const paragraph of paragraphs) {\n let segment = '';\n\n for (const character of Array.from(paragraph)) {\n if (isBreakSpace(character) || isCJKLike(character)) {\n width = Math.max(width, this.measure(segment).width, this.measure(character).width);\n segment = '';\n } else {\n segment += character;\n }\n }\n width = Math.max(width, this.measure(segment).width);\n }\n\n return width;\n }\n\n private getTextStartX (lineWidth: number): number {\n if (this.horizontalAlignment === HorizontalAlignment.Center) {\n return (this.width - lineWidth) * 0.5;\n }\n if (this.horizontalAlignment === HorizontalAlignment.Right) {\n return this.width - lineWidth;\n }\n\n return 0;\n }\n\n private getTextStartY (layout: TextLayout, gap: number): number {\n const height = layout.height + gap * Math.max(0, layout.lines.length - 1);\n\n if (this.verticalAlignment === VerticalAlignment.Center) {\n return (this.height - height) * 0.5;\n }\n if (this.verticalAlignment === VerticalAlignment.Bottom) {\n return this.height - height;\n }\n\n return 0;\n }\n\n private getVerticalGap (layout: TextLayout): number {\n if (this.verticalAlignment !== VerticalAlignment.Fill || layout.lines.length < 2) {\n return 0;\n }\n\n return Math.max(0, (this.height - layout.height) / (layout.lines.length - 1));\n }\n\n private ellipsize (line: TextLine, width: number): TextLine {\n if (line.measurement.width <= width) {\n return line;\n }\n\n const ellipsis = '…';\n const ellipsisMeasurement = this.measure(ellipsis);\n\n if (ellipsisMeasurement.width > width) {\n return { text: '', measurement: this.measure('') };\n }\n\n const characters = Array.from(line.text);\n let used = ellipsisMeasurement.width;\n let count = 0;\n\n for (; count < characters.length; count++) {\n const advance = line.measurement.advances[count] ?? 0;\n\n if (used + advance > width) {\n break;\n }\n used += advance;\n }\n\n const text = characters.slice(0, count).join('') + ellipsis;\n\n return { text, measurement: this.measure(text) };\n }\n\n private drawFilledLine (line: TextLine, y: number): void {\n const characters = Array.from(line.text);\n const spaces = countFillSpaces(line.text);\n const extra = spaces > 0 ? (this.width - line.measurement.width) / spaces : 0;\n let x = 0;\n\n for (let i = 0; i < characters.length; i++) {\n const character = characters[i];\n\n this.drawThemedText(x, y, character);\n x += line.measurement.advances[i] ?? 0;\n if (isBreakSpace(character)) {\n x += extra;\n }\n }\n }\n\n private drawThemedText (x: number, y: number, text: string): void {\n const font = this.getThemeFont('font');\n\n this.drawText(\n x,\n y,\n text,\n this.getThemeFontSize('fontSize'),\n this.getThemeColor('fontColor'),\n font.family,\n font.weight,\n font.style,\n );\n }\n\n override fromData (data: LabelData): void {\n super.fromData(data);\n if (data.text !== undefined) {\n this.text = data.text;\n }\n if (data.horizontalAlignment !== undefined) {\n this.horizontalAlignment = data.horizontalAlignment;\n }\n if (data.verticalAlignment !== undefined) {\n this.verticalAlignment = data.verticalAlignment;\n }\n if (data.autowrapMode !== undefined) {\n this.autowrapMode = data.autowrapMode;\n }\n if (data.textOverflow !== undefined) {\n this.textOverflow = data.textOverflow;\n }\n }\n}\n\nfunction isBreakSpace (character: string): boolean {\n return character === ' ' || character === '\\t' || character === '\\u00a0';\n}\n\nfunction isCJKLike (character: string): boolean {\n const codePoint = character.codePointAt(0) ?? 0;\n\n return (codePoint >= 0x3400 && codePoint <= 0x4dbf)\n || (codePoint >= 0x4e00 && codePoint <= 0x9fff)\n || (codePoint >= 0xf900 && codePoint <= 0xfaff)\n || (codePoint >= 0x20000 && codePoint <= 0x2fa1f)\n || (codePoint >= 0x3040 && codePoint <= 0x30ff)\n || (codePoint >= 0xac00 && codePoint <= 0xd7af);\n}\n\nfunction skipBreakSpaces (characters: string[], start: number): number {\n let index = start;\n\n while (index < characters.length && isBreakSpace(characters[index])) {\n index++;\n }\n\n return index;\n}\n\nfunction countFillSpaces (text: string): number {\n return Array.from(text).reduce((count, character) => count + (isBreakSpace(character) ? 1 : 0), 0);\n}\n","import {\n effectsClass,\n math,\n} from '@galacean/effects';\nimport type { Engine, Texture, TextureRegion } from '@galacean/effects';\nimport { Control } from '../core/control';\nimport { MouseFilter } from '../core/enums';\nimport type { TextureRectData } from '../data';\nimport { TextureExpandMode, TextureStretchMode } from './enums';\n\nconst FULL_REGION: TextureRegion = { u0: 0, v0: 0, u1: 1, v1: 1 };\n\n@effectsClass('TextureRect')\nexport class TextureRect extends Control {\n static override readonly themeType: string = 'TextureRect';\n private _texture: Texture | null = null;\n private _expandMode = TextureExpandMode.KeepSize;\n private _stretchMode = TextureStretchMode.Scale;\n\n flipH = false;\n flipV = false;\n tint = new math.Color(1, 1, 1, 1);\n\n constructor (engine: Engine, texture: Texture | null = null) {\n super(engine);\n this._texture = texture;\n this.mouseFilter = MouseFilter.Ignore;\n this.on('sizeChanged', () => this.controlSizeChanged());\n }\n\n get texture (): Texture | null {\n return this._texture;\n }\n\n set texture (value: Texture | null) {\n if (this._texture !== value) {\n this._texture = value;\n this.updateMinimumSize();\n this.updateDesiredSize();\n }\n }\n\n get expandMode (): TextureExpandMode {\n return this._expandMode;\n }\n\n set expandMode (value: TextureExpandMode) {\n if (this._expandMode !== value) {\n this._expandMode = value;\n this.updateMinimumSize();\n }\n }\n\n get stretchMode (): TextureStretchMode {\n return this._stretchMode;\n }\n\n set stretchMode (value: TextureStretchMode) {\n this._stretchMode = value;\n }\n\n override getMinimumSize (): math.Vector2 {\n const width = this.texture?.width ?? 0;\n const height = this.texture?.height ?? 0;\n\n switch (this.expandMode) {\n case TextureExpandMode.KeepSize:\n return new math.Vector2(width, height);\n case TextureExpandMode.IgnoreSize:\n return new math.Vector2();\n case TextureExpandMode.FitWidth:\n return new math.Vector2(height, 0);\n case TextureExpandMode.FitWidthProportional:\n return new math.Vector2(height > 0 ? this.height * width / height : 0, 0);\n case TextureExpandMode.FitHeight:\n return new math.Vector2(0, width);\n case TextureExpandMode.FitHeightProportional:\n return new math.Vector2(0, width > 0 ? this.width * height / width : 0);\n default:\n return new math.Vector2();\n }\n }\n\n override getDesiredSize (): math.Vector2 {\n return new math.Vector2(this.texture?.width ?? 0, this.texture?.height ?? 0);\n }\n\n override draw (): void {\n const texture = this.texture;\n\n if (!texture || texture.width <= 0 || texture.height <= 0 || this.width <= 0 || this.height <= 0) {\n return;\n }\n\n switch (this.stretchMode) {\n case TextureStretchMode.Scale:\n this.drawRegion(0, 0, this.width, this.height, FULL_REGION);\n\n break;\n case TextureStretchMode.Tile:\n this.drawTiled(texture.width, texture.height);\n\n break;\n case TextureStretchMode.Keep:\n this.drawRegion(0, 0, texture.width, texture.height, FULL_REGION);\n\n break;\n case TextureStretchMode.KeepCentered:\n this.drawRegion(\n (this.width - texture.width) * 0.5, (this.height - texture.height) * 0.5,\n texture.width, texture.height, FULL_REGION,\n );\n\n break;\n case TextureStretchMode.KeepAspect:\n this.drawAspect(false);\n\n break;\n case TextureStretchMode.KeepAspectCentered:\n this.drawAspect(true);\n\n break;\n case TextureStretchMode.KeepAspectCovered:\n this.drawCovered();\n\n break;\n }\n }\n\n private drawAspect (centered: boolean): void {\n const texture = this.texture;\n\n if (!texture) {\n return;\n }\n const scale = Math.min(this.width / texture.width, this.height / texture.height);\n const width = texture.width * scale;\n const height = texture.height * scale;\n const x = centered ? (this.width - width) * 0.5 : 0;\n const y = centered ? (this.height - height) * 0.5 : 0;\n\n this.drawRegion(x, y, width, height, FULL_REGION);\n }\n\n private drawCovered (): void {\n const texture = this.texture;\n\n if (!texture) {\n return;\n }\n const sourceRatio = texture.width / texture.height;\n const destinationRatio = this.width / this.height;\n let region = FULL_REGION;\n\n if (sourceRatio > destinationRatio) {\n const visible = destinationRatio / sourceRatio;\n const margin = (1 - visible) * 0.5;\n\n region = { u0: margin, v0: 0, u1: 1 - margin, v1: 1 };\n } else if (sourceRatio < destinationRatio) {\n const visible = sourceRatio / destinationRatio;\n const margin = (1 - visible) * 0.5;\n\n region = { u0: 0, v0: margin, u1: 1, v1: 1 - margin };\n }\n this.drawRegion(0, 0, this.width, this.height, region);\n }\n\n private drawTiled (tileWidth: number, tileHeight: number): void {\n for (let y = 0; y < this.height; y += tileHeight) {\n const height = Math.min(tileHeight, this.height - y);\n const verticalRatio = height / tileHeight;\n\n for (let x = 0; x < this.width; x += tileWidth) {\n const width = Math.min(tileWidth, this.width - x);\n const horizontalRatio = width / tileWidth;\n\n this.drawRegion(x, y, width, height, {\n u0: 0,\n v0: 1 - verticalRatio,\n u1: horizontalRatio,\n v1: 1,\n });\n }\n }\n }\n\n private drawRegion (x: number, y: number, width: number, height: number, region: TextureRegion): void {\n const texture = this.texture;\n\n if (!texture || width <= 0 || height <= 0) {\n return;\n }\n this.drawTexture(x, y, width, height, texture, {\n u0: this.flipH ? region.u1 : region.u0,\n v0: this.flipV ? region.v1 : region.v0,\n u1: this.flipH ? region.u0 : region.u1,\n v1: this.flipV ? region.v0 : region.v1,\n }, this.tint);\n }\n\n private controlSizeChanged (): void {\n if (this.expandMode === TextureExpandMode.FitWidthProportional\n || this.expandMode === TextureExpandMode.FitHeightProportional) {\n this.updateMinimumSize();\n }\n }\n\n override fromData (data: TextureRectData): void {\n super.fromData(data);\n if (data.texture !== undefined) {\n this.texture = data.texture ? this.engine.findObject<Texture>(data.texture) : null;\n }\n if (data.expandMode !== undefined) {\n this.expandMode = data.expandMode;\n }\n if (data.stretchMode !== undefined) {\n this.stretchMode = data.stretchMode;\n }\n if (data.flipH !== undefined) {\n this.flipH = data.flipH;\n }\n if (data.flipV !== undefined) {\n this.flipV = data.flipV;\n }\n if (data.tint !== undefined) {\n this.tint.copyFrom(data.tint);\n }\n }\n}\n","import {\n EventEmitter,\n effectsClass,\n math,\n} from '@galacean/effects';\nimport type {\n Engine,\n EventEmitterListener,\n Texture,\n} from '@galacean/effects';\nimport { Control } from '../core/control';\nimport type { ControlEvent, Rect } from '../core/control';\nimport { MouseFilter } from '../core/enums';\nimport { AxisStretchMode, Side } from './enums';\nimport type { NinePatchRectData } from '../data';\n\nexport type NinePatchRectEvent = ControlEvent & {\n textureChanged: [texture: Texture | null],\n};\n\n@effectsClass('NinePatchRect')\nexport class NinePatchRect extends Control {\n static override readonly themeType: string = 'NinePatchRect';\n private readonly ninePatchEventEmitter = new EventEmitter<NinePatchRectEvent>();\n private readonly patchMargins = [0, 0, 0, 0];\n private _texture: Texture | null = null;\n private _regionRect: Rect;\n\n drawCenter = true;\n horizontalAxisStretchMode = AxisStretchMode.Stretch;\n verticalAxisStretchMode = AxisStretchMode.Stretch;\n tint = new math.Color(1, 1, 1, 1);\n\n constructor (engine: Engine, texture: Texture | null = null) {\n super(engine);\n this._texture = texture;\n this._regionRect = {\n position: new math.Vector2(),\n size: new math.Vector2(),\n };\n this.mouseFilter = MouseFilter.Ignore;\n }\n\n get texture (): Texture | null {\n return this._texture;\n }\n\n set texture (value: Texture | null) {\n if (this._texture !== value) {\n this._texture = value;\n this.updateDesiredSize();\n this.ninePatchEventEmitter.emit('textureChanged', value);\n }\n }\n\n get regionRect (): Rect {\n return {\n position: this._regionRect.position.clone(),\n size: this._regionRect.size.clone(),\n };\n }\n\n set regionRect (value: Rect) {\n this.setRegionRect(value.position.x, value.position.y, value.size.x, value.size.y);\n }\n\n override on<E extends keyof NinePatchRectEvent> (\n eventName: E,\n listener: EventEmitterListener<NinePatchRectEvent[E]>,\n ): void {\n if (eventName === 'textureChanged') {\n this.ninePatchEventEmitter.on(eventName, listener);\n } else {\n super.on(eventName, listener as never);\n }\n }\n\n override off<E extends keyof NinePatchRectEvent> (\n eventName: E,\n listener: EventEmitterListener<NinePatchRectEvent[E]>,\n ): void {\n if (eventName === 'textureChanged') {\n this.ninePatchEventEmitter.off(eventName, listener);\n } else {\n super.off(eventName, listener as never);\n }\n }\n\n setRegionRect (x: number, y: number, width: number, height: number): void {\n if (![x, y, width, height].every(Number.isFinite) || width < 0 || height < 0) {\n throw new RangeError('NinePatchRect region must be finite and non-negative.');\n }\n this._regionRect.position.set(x, y);\n this._regionRect.size.set(width, height);\n this.updateDesiredSize();\n }\n\n setPatchMargin (side: Side, value: number): void {\n if (!Number.isFinite(value) || value < 0) {\n throw new RangeError('NinePatchRect patch margin must be finite and non-negative.');\n }\n if (this.patchMargins[side] !== value) {\n this.patchMargins[side] = value;\n this.updateMinimumSize();\n }\n }\n\n getPatchMargin (side: Side): number {\n return this.patchMargins[side] ?? 0;\n }\n\n override getMinimumSize (): math.Vector2 {\n return new math.Vector2(\n this.getPatchMargin(Side.Left) + this.getPatchMargin(Side.Right),\n this.getPatchMargin(Side.Top) + this.getPatchMargin(Side.Bottom),\n );\n }\n\n override getDesiredSize (): math.Vector2 {\n const source = this.getSourceRect();\n\n return new math.Vector2(source.size.x, source.size.y);\n }\n\n override draw (): void {\n const texture = this.texture;\n\n if (!texture || this.width <= 0 || this.height <= 0) {\n return;\n }\n\n const source = this.getSourceRect();\n\n this.drawNinePatch(0, 0, this.width, this.height, texture, {\n sourceX: source.position.x,\n sourceY: source.position.y,\n sourceWidth: source.size.x,\n sourceHeight: source.size.y,\n marginLeft: this.getPatchMargin(Side.Left),\n marginTop: this.getPatchMargin(Side.Top),\n marginRight: this.getPatchMargin(Side.Right),\n marginBottom: this.getPatchMargin(Side.Bottom),\n horizontalMode: this.horizontalAxisStretchMode,\n verticalMode: this.verticalAxisStretchMode,\n drawCenter: this.drawCenter,\n }, this.tint);\n }\n\n private getSourceRect (): Rect {\n const texture = this.texture;\n\n if (!texture) {\n return { position: new math.Vector2(), size: new math.Vector2() };\n }\n if (this._regionRect.size.x > 0 && this._regionRect.size.y > 0) {\n return this.regionRect;\n }\n\n return {\n position: new math.Vector2(),\n size: new math.Vector2(texture.width, texture.height),\n };\n }\n\n override fromData (data: NinePatchRectData): void {\n super.fromData(data);\n if (data.texture !== undefined) {\n this.texture = data.texture ? this.engine.findObject<Texture>(data.texture) : null;\n }\n if (data.regionRect !== undefined) {\n this.setRegionRect(\n data.regionRect.position[0], data.regionRect.position[1],\n data.regionRect.size[0], data.regionRect.size[1],\n );\n }\n if (data.patchMarginLeft !== undefined) {\n this.setPatchMargin(Side.Left, data.patchMarginLeft);\n }\n if (data.patchMarginTop !== undefined) {\n this.setPatchMargin(Side.Top, data.patchMarginTop);\n }\n if (data.patchMarginRight !== undefined) {\n this.setPatchMargin(Side.Right, data.patchMarginRight);\n }\n if (data.patchMarginBottom !== undefined) {\n this.setPatchMargin(Side.Bottom, data.patchMarginBottom);\n }\n if (data.drawCenter !== undefined) {\n this.drawCenter = data.drawCenter;\n }\n if (data.horizontalAxisStretchMode !== undefined) {\n this.horizontalAxisStretchMode = data.horizontalAxisStretchMode;\n }\n if (data.verticalAxisStretchMode !== undefined) {\n this.verticalAxisStretchMode = data.verticalAxisStretchMode;\n }\n if (data.tint !== undefined) {\n this.tint.copyFrom(data.tint);\n }\n }\n}\n","import { effectsClass, math } from '@galacean/effects';\nimport type { Engine } from '@galacean/effects';\nimport { Control } from '../core/control';\nimport { MouseFilter } from '../core/enums';\nimport type { ColorRectData } from '../data';\n\n@effectsClass('ColorRect')\nexport class ColorRect extends Control {\n static override readonly themeType: string = 'ColorRect';\n color = new math.Color(1, 1, 1, 1);\n\n constructor (engine: Engine) {\n super(engine);\n this.mouseFilter = MouseFilter.Ignore;\n }\n\n override draw (): void {\n this.fillRect(0, 0, this.width, this.height, this.color);\n }\n\n override fromData (data: ColorRectData): void {\n super.fromData(data);\n if (data.color !== undefined) {\n this.color.copyFrom(data.color);\n }\n }\n}\n","import { effectsClass } from '@galacean/effects';\nimport type { Engine, math } from '@galacean/effects';\nimport { Control } from '../core/control';\nimport { MouseFilter } from '../core/enums';\n\n@effectsClass('Panel')\nexport class Panel extends Control {\n static override readonly themeType: string = 'Panel';\n\n constructor (engine: Engine) {\n super(engine);\n this.mouseFilter = MouseFilter.Stop;\n }\n\n override draw (): void {\n this.drawStyleBox(this.getThemeStyleBox('panel'), 0, 0, this.width, this.height);\n }\n\n override getMinimumSize (): math.Vector2 {\n return this.getThemeStyleBox('panel').getMinimumSize();\n }\n\n override getDesiredSize (): math.Vector2 {\n return this.getMinimumSize();\n }\n}\n","import {\n EventEmitter,\n MouseButton,\n MouseButtonMask,\n} from '@galacean/effects';\nimport type {\n Engine,\n EventEmitterListener,\n InputEventKey,\n InputEventMouseButton,\n InputEventMouseMotion,\n InputEventScreenDrag,\n InputEventScreenTouch,\n} from '@galacean/effects';\nimport { Control } from '../core/control';\nimport type { ControlEvent, RootControl } from '../core/control';\nimport { FocusMode, MouseFilter } from '../core/enums';\nimport { ButtonActionMode, ButtonDrawMode } from './enums';\nimport type { BaseButtonData } from '../data';\n\nexport type BaseButtonEvent = ControlEvent & {\n buttonDown: [],\n buttonUp: [],\n pressed: [],\n toggled: [pressed: boolean],\n};\n\nexport type ButtonGroupEvent = {\n pressed: [button: BaseButton],\n};\n\nexport class ButtonGroup {\n /** @internal */\n static updateButton (\n button: BaseButton,\n previous: ButtonGroup | null,\n next: ButtonGroup | null,\n ): void {\n previous?.buttons.delete(button);\n if (next) {\n next.buttons.add(button);\n if (button.buttonPressed) {\n for (const peer of next.buttons) {\n if (peer !== button) {\n peer.setPressedFromGroup(false, false);\n }\n }\n }\n }\n }\n\n private readonly buttons = new Set<BaseButton>();\n private readonly eventEmitter = new EventEmitter<ButtonGroupEvent>();\n\n allowUnpress = false;\n\n on<E extends keyof ButtonGroupEvent> (\n eventName: E,\n listener: EventEmitterListener<ButtonGroupEvent[E]>,\n ): void {\n this.eventEmitter.on(eventName, listener);\n }\n\n off<E extends keyof ButtonGroupEvent> (\n eventName: E,\n listener: EventEmitterListener<ButtonGroupEvent[E]>,\n ): void {\n this.eventEmitter.off(eventName, listener);\n }\n\n getPressedButton (): BaseButton | null {\n for (const button of this.buttons) {\n if (button.buttonPressed) {\n return button;\n }\n }\n\n return null;\n }\n\n getButtons (): BaseButton[] {\n return Array.from(this.buttons);\n }\n\n select (button: BaseButton, signal: boolean, emitPressed = false): boolean {\n if (!this.buttons.has(button)) {\n return false;\n }\n if (button.buttonPressed && !this.allowUnpress) {\n if (emitPressed) {\n this.eventEmitter.emit('pressed', button);\n }\n\n return false;\n }\n\n const next = !button.buttonPressed;\n\n if (next) {\n for (const peer of this.buttons) {\n if (peer !== button) {\n peer.setPressedFromGroup(false, signal);\n }\n }\n }\n button.setPressedFromGroup(next, signal);\n if (emitPressed) {\n this.eventEmitter.emit('pressed', button);\n }\n\n return true;\n }\n}\n\nexport class BaseButton extends Control {\n static override readonly themeType: string = 'BaseButton';\n private readonly buttonEventEmitter = new EventEmitter<BaseButtonEvent>();\n private _disabled = false;\n private _toggleMode = false;\n private _buttonPressed = false;\n private _buttonMask = MouseButtonMask.Left;\n private _buttonGroup: ButtonGroup | null = null;\n private hovered = false;\n private pressing = false;\n private pressInside = false;\n private mousePressing = false;\n private keyboardPressing = false;\n private touchIndex = -1;\n private readonly controlStateChanged = () => {\n if (!this.visible || !this.enabled) {\n this.cancelPress();\n }\n };\n\n actionMode = ButtonActionMode.Release;\n keepPressedOutside = false;\n\n constructor (engine: Engine) {\n super(engine);\n this.focusMode = FocusMode.All;\n this.mouseFilter = MouseFilter.Stop;\n this.on('visibilityChanged', this.controlStateChanged);\n this.on('enabledChanged', this.controlStateChanged);\n }\n\n get disabled (): boolean {\n return this._disabled;\n }\n\n set disabled (value: boolean) {\n if (this._disabled !== value) {\n this._disabled = value;\n if (value) {\n this.cancelPress();\n }\n this.root?.controlStateChanged(this);\n }\n }\n\n get toggleMode (): boolean {\n return this._toggleMode;\n }\n\n set toggleMode (value: boolean) {\n this._toggleMode = value;\n }\n\n get buttonPressed (): boolean {\n return this._buttonPressed;\n }\n\n set buttonPressed (value: boolean) {\n this.setPressed(value, true);\n }\n\n get buttonMask (): MouseButtonMask {\n return this._buttonMask;\n }\n\n set buttonMask (value: MouseButtonMask) {\n this._buttonMask = value;\n }\n\n get buttonGroup (): ButtonGroup | null {\n return this._buttonGroup;\n }\n\n set buttonGroup (value: ButtonGroup | null) {\n if (this._buttonGroup !== value) {\n const previous = this._buttonGroup;\n\n this._buttonGroup = value;\n ButtonGroup.updateButton(this, previous, value);\n }\n }\n\n override on<E extends keyof BaseButtonEvent> (\n eventName: E,\n listener: EventEmitterListener<BaseButtonEvent[E]>,\n ): void {\n if (eventName === 'buttonDown' || eventName === 'buttonUp'\n || eventName === 'pressed' || eventName === 'toggled') {\n this.buttonEventEmitter.on(eventName, listener);\n } else {\n super.on(eventName, listener as never);\n }\n }\n\n override off<E extends keyof BaseButtonEvent> (\n eventName: E,\n listener: EventEmitterListener<BaseButtonEvent[E]>,\n ): void {\n if (eventName === 'buttonDown' || eventName === 'buttonUp'\n || eventName === 'pressed' || eventName === 'toggled') {\n this.buttonEventEmitter.off(eventName, listener);\n } else {\n super.off(eventName, listener as never);\n }\n }\n\n setPressedNoSignal (value: boolean): void {\n this.setPressed(value, false);\n }\n\n isHovered (): boolean {\n return this.hovered;\n }\n\n isPressing (): boolean {\n return this.pressing && (this.pressInside || this.keepPressedOutside);\n }\n\n getDrawMode (): ButtonDrawMode {\n if (this.disabled || !this.enabledInHierarchy) {\n return ButtonDrawMode.Disabled;\n }\n if (!this.pressing && this.hovered) {\n return this.buttonPressed ? ButtonDrawMode.HoverPressed : ButtonDrawMode.Hover;\n }\n\n let pressed = this.buttonPressed;\n\n if (this.pressing) {\n pressed = this.pressInside || this.keepPressedOutside;\n if (this.buttonPressed) {\n pressed = !pressed;\n }\n }\n\n return pressed ? ButtonDrawMode.Pressed : ButtonDrawMode.Normal;\n }\n\n override getEffectiveMouseFilter (): MouseFilter {\n return this.disabled ? MouseFilter.Ignore : super.getEffectiveMouseFilter();\n }\n\n override getFocusModeWithOverride (): FocusMode {\n return this.disabled ? FocusMode.None : super.getFocusModeWithOverride();\n }\n\n override onMouseEnter (): void {\n this.hovered = true;\n if (this.mousePressing) {\n this.pressInside = true;\n }\n }\n\n override onMouseMove (event: InputEventMouseMotion): void {\n this.hovered = this.hasPoint(event.position);\n if (this.mousePressing) {\n this.pressInside = this.hovered;\n }\n }\n\n override onMouseLeave (): void {\n this.hovered = false;\n if (this.mousePressing) {\n this.pressInside = false;\n }\n }\n\n override onMouseDown (event: InputEventMouseButton): void {\n if (this.disabled || !hasButton(this.buttonMask, event.buttonIndex)) {\n return;\n }\n this.mousePressing = true;\n this.beginPress(true);\n event.accept();\n }\n\n override onMouseUp (event: InputEventMouseButton): void {\n if (!this.mousePressing || !hasButton(this.buttonMask, event.buttonIndex)) {\n return;\n }\n const activate = !event.canceled && (this.keepPressedOutside || this.hasPoint(event.position));\n\n this.mousePressing = false;\n this.finishPress(activate);\n event.accept();\n }\n\n override onTouchDown (event: InputEventScreenTouch): void {\n if (this.disabled || this.touchIndex !== -1) {\n return;\n }\n this.touchIndex = event.index;\n this.beginPress(true);\n event.accept();\n }\n\n override onTouchMove (event: InputEventScreenDrag): void {\n if (event.index === this.touchIndex) {\n this.pressInside = this.hasPoint(event.position);\n event.accept();\n }\n }\n\n override onTouchUp (event: InputEventScreenTouch): void {\n if (event.index !== this.touchIndex) {\n return;\n }\n const activate = !event.canceled && (this.keepPressedOutside || this.hasPoint(event.position));\n\n this.touchIndex = -1;\n this.finishPress(activate);\n event.accept();\n }\n\n override onKeyDown (event: InputEventKey): void {\n if (this.disabled || event.echo || this.keyboardPressing || !isActivationKey(event.keycode)) {\n return;\n }\n this.keyboardPressing = true;\n this.beginPress(true);\n event.accept();\n }\n\n override onKeyUp (event: InputEventKey): void {\n if (!this.keyboardPressing || !isActivationKey(event.keycode)) {\n return;\n }\n this.keyboardPressing = false;\n this.finishPress(true);\n event.accept();\n }\n\n override onLostFocus (): void {\n this.cancelPress();\n }\n\n override onScrollBegin (): void {\n this.cancelPress();\n }\n\n override onDestroy (): void {\n this.off('visibilityChanged', this.controlStateChanged);\n this.off('enabledChanged', this.controlStateChanged);\n this.buttonGroup = null;\n this.cancelPress();\n }\n\n setPressedFromGroup (value: boolean, signal: boolean): void {\n this.setPressedDirect(value, signal);\n }\n\n protected override onRootChanged (previousRoot: RootControl | null, nextRoot: RootControl | null): void {\n if (!nextRoot) {\n this.cancelPress();\n }\n }\n\n private setPressed (value: boolean, signal: boolean): void {\n if (this.buttonGroup && value) {\n if (!this.buttonPressed) {\n this.buttonGroup.select(this, signal);\n }\n\n return;\n }\n this.setPressedDirect(value, signal);\n }\n\n private setPressedDirect (value: boolean, signal: boolean): void {\n if (this._buttonPressed !== value) {\n this._buttonPressed = value;\n if (signal) {\n this.buttonEventEmitter.emit('toggled', value);\n }\n }\n }\n\n private beginPress (inside: boolean): void {\n if (this.pressing) {\n return;\n }\n this.pressing = true;\n this.pressInside = inside;\n this.buttonEventEmitter.emit('buttonDown');\n if (this.actionMode === ButtonActionMode.Press) {\n this.activate();\n }\n }\n\n private finishPress (activate: boolean): void {\n if (!this.pressing) {\n return;\n }\n this.pressing = false;\n this.pressInside = false;\n this.buttonEventEmitter.emit('buttonUp');\n if (activate && this.actionMode === ButtonActionMode.Release) {\n this.activate();\n }\n }\n\n private cancelPress (): void {\n const wasPressing = this.pressing;\n\n this.pressing = false;\n this.pressInside = false;\n this.mousePressing = false;\n this.keyboardPressing = false;\n this.touchIndex = -1;\n if (wasPressing) {\n this.buttonEventEmitter.emit('buttonUp');\n }\n }\n\n private activate (): void {\n if (this.toggleMode) {\n if (this.buttonGroup) {\n if (!this.buttonGroup.select(this, true, true) && !this.buttonPressed) {\n return;\n }\n } else {\n this.setPressedDirect(!this.buttonPressed, true);\n }\n }\n this.buttonEventEmitter.emit('pressed');\n }\n\n override fromData (data: BaseButtonData): void {\n super.fromData(data);\n if (data.disabled !== undefined) {\n this.disabled = data.disabled;\n }\n if (data.toggleMode !== undefined) {\n this.toggleMode = data.toggleMode;\n }\n if (data.buttonPressed !== undefined) {\n this.setPressedNoSignal(data.buttonPressed);\n }\n if (data.buttonMask !== undefined) {\n this.buttonMask = data.buttonMask;\n }\n if (data.actionMode !== undefined) {\n this.actionMode = data.actionMode;\n }\n if (data.keepPressedOutside !== undefined) {\n this.keepPressedOutside = data.keepPressedOutside;\n }\n }\n}\n\nfunction hasButton (mask: MouseButtonMask, button: MouseButton): boolean {\n switch (button) {\n case MouseButton.Left:\n return (mask & MouseButtonMask.Left) !== 0;\n case MouseButton.Right:\n return (mask & MouseButtonMask.Right) !== 0;\n case MouseButton.Middle:\n return (mask & MouseButtonMask.Middle) !== 0;\n case MouseButton.Xbutton1:\n return (mask & MouseButtonMask.Xbutton1) !== 0;\n case MouseButton.Xbutton2:\n return (mask & MouseButtonMask.Xbutton2) !== 0;\n default:\n return false;\n }\n}\n\nfunction isActivationKey (keycode: string): boolean {\n return keycode === 'Enter' || keycode === 'Space' || keycode === ' ';\n}\n","import { effectsClass, math } from '@galacean/effects';\nimport type { Engine, Texture } from '@galacean/effects';\nimport type { ButtonData } from '../data';\nimport { BaseButton } from './base-button';\nimport { ButtonDrawMode, HorizontalAlignment, VerticalAlignment } from './enums';\n\nexport type ContentInsets = {\n left: number,\n top: number,\n right: number,\n bottom: number,\n};\n\n@effectsClass('Button')\nexport class Button extends BaseButton {\n static override readonly themeType: string = 'Button';\n private _text = '';\n private _icon: Texture | null | undefined;\n\n flat = false;\n clipText = false;\n expandIcon = false;\n textAlignment = HorizontalAlignment.Center;\n iconAlignment = HorizontalAlignment.Left;\n iconVerticalAlignment = VerticalAlignment.Center;\n\n constructor (engine: Engine, text = '') {\n super(engine);\n\n this._text = text;\n }\n\n get text (): string {\n return this._text;\n }\n\n set text (value: string) {\n if (this._text !== value) {\n this._text = value;\n this.updateMinimumSize();\n this.updateDesiredSize();\n }\n }\n\n get icon (): Texture | null {\n return this._icon === undefined ? this.getThemeIcon('icon') : this._icon;\n }\n\n set icon (value: Texture | null) {\n if (this._icon !== value) {\n this._icon = value;\n this.updateMinimumSize();\n this.updateDesiredSize();\n }\n }\n\n override getMinimumSize (): math.Vector2 {\n return this.measureButton();\n }\n\n override getDesiredSize (): math.Vector2 {\n return this.measureButton();\n }\n\n override draw (): void {\n const mode = this.getDrawMode();\n const styleBox = this.getThemeStyleBox(this.getStyleBoxName(mode));\n\n if (!this.flat) {\n this.drawStyleBox(styleBox, 0, 0, this.width, this.height);\n }\n if (this.hasFocus(true)) {\n this.drawStyleBox(this.getThemeStyleBox('focus'), 0, 0, this.width, this.height);\n }\n this.drawDecoration(mode);\n this.drawContent(mode, this.getContentInsets());\n }\n\n protected getContentInsets (): ContentInsets {\n return this.getBaseContentInsets();\n }\n\n protected getNormalContentInsets (): ContentInsets {\n return this.getThemeStyleBox('normal').getContentMargins();\n }\n\n protected drawDecoration (mode: ButtonDrawMode): void {}\n\n private measureButton (): math.Vector2 {\n const font = this.getThemeFont('font');\n const text = this.measureText(\n this.text, this.getThemeFontSize('fontSize'), font.family, font.weight, font.style,\n );\n const hasText = this.text.length > 0;\n const iconWidth = this.expandIcon ? 0 : this.icon?.width ?? 0;\n const iconHeight = this.expandIcon ? 0 : this.icon?.height ?? 0;\n const textWidth = this.clipText ? 0 : text.width;\n const textHeight = hasText ? text.lineHeight : 0;\n const separation = hasText && iconWidth > 0 && this.iconAlignment !== HorizontalAlignment.Center\n ? Math.max(0, this.getThemeConstant('iconSeparation'))\n : 0;\n const insets = this.getContentInsets();\n const contentWidth = this.iconAlignment === HorizontalAlignment.Center\n ? Math.max(iconWidth, textWidth)\n : iconWidth + separation + textWidth;\n const contentHeight = this.iconVerticalAlignment === VerticalAlignment.Center\n ? Math.max(iconHeight, textHeight)\n : iconHeight + textHeight;\n\n return new math.Vector2(\n insets.left + contentWidth + insets.right,\n insets.top + contentHeight + insets.bottom,\n );\n }\n\n private getStyleBoxName (mode: ButtonDrawMode): string {\n switch (mode) {\n case ButtonDrawMode.Disabled: return 'disabled';\n case ButtonDrawMode.HoverPressed: return 'hoverPressed';\n case ButtonDrawMode.Pressed: return 'pressed';\n case ButtonDrawMode.Hover: return 'hover';\n default: return 'normal';\n }\n }\n\n private drawContent (mode: ButtonDrawMode, insets: ContentInsets): void {\n const left = insets.left;\n const top = insets.top;\n const width = Math.max(0, this.width - insets.left - insets.right);\n const height = Math.max(0, this.height - insets.top - insets.bottom);\n const hasText = this.text.length > 0;\n const separation = this.icon && hasText && this.iconAlignment !== HorizontalAlignment.Center\n ? Math.max(0, this.getThemeConstant('iconSeparation'))\n : 0;\n const font = this.getThemeFont('font');\n const fontSize = this.getThemeFontSize('fontSize');\n const naturalText = this.measureText(this.text, fontSize, font.family, font.weight, font.style);\n const iconWidth = !this.clipText && hasText && this.iconAlignment !== HorizontalAlignment.Center\n ? Math.max(0, width - naturalText.width - separation)\n : width;\n const iconHeight = hasText && this.iconVerticalAlignment !== VerticalAlignment.Center\n ? Math.max(0, height - naturalText.lineHeight)\n : height;\n const iconSize = this.getIconSize(iconWidth, iconHeight);\n const reservedIconWidth = this.icon && this.iconAlignment !== HorizontalAlignment.Center\n ? iconSize.x + separation\n : 0;\n const textWidth = Math.max(0, width - reservedIconWidth);\n const sourceText = this.clipText ? this.ellipsizeText(this.text, textWidth) : this.text;\n const text = this.measureText(sourceText, fontSize, font.family, font.weight, font.style);\n let iconX = left;\n let textAreaX = left + reservedIconWidth;\n\n if (this.icon && this.iconAlignment === HorizontalAlignment.Right) {\n iconX = left + width - iconSize.x;\n textAreaX = left;\n } else if (this.icon && this.iconAlignment === HorizontalAlignment.Center) {\n iconX = left + (width - iconSize.x) * 0.5;\n textAreaX = left;\n }\n\n const textX = this.getAlignedX(textAreaX, textWidth, text.width, this.textAlignment);\n const textAreaY = this.icon && this.iconVerticalAlignment === VerticalAlignment.Top\n ? top + iconSize.y\n : top;\n const textHeight = Math.max(0, height - (this.icon && this.iconVerticalAlignment !== VerticalAlignment.Center\n ? iconSize.y\n : 0));\n const textY = textAreaY + (textHeight - text.lineHeight) * 0.5;\n\n if (this.clipText) {\n this.engine.graphics.pushClipRect(left, top, width, height);\n }\n try {\n if (this.icon) {\n const iconY = this.getAlignedY(top, height, iconSize.y, this.iconVerticalAlignment);\n\n this.drawTexture(iconX, iconY, iconSize.x, iconSize.y, this.icon, undefined, this.getIconTint(mode));\n }\n this.drawText(\n textX, textY, sourceText, fontSize,\n this.getFontColor(mode),\n font.family, font.weight, font.style,\n );\n } finally {\n if (this.clipText) {\n this.engine.graphics.popClipRect();\n }\n }\n }\n\n private getFontColor (mode: ButtonDrawMode): math.Color {\n switch (mode) {\n case ButtonDrawMode.Disabled: return this.getThemeColor('fontDisabledColor');\n case ButtonDrawMode.HoverPressed: return this.getThemeColor('fontHoverPressedColor');\n case ButtonDrawMode.Pressed: return this.getThemeColor('fontPressedColor');\n case ButtonDrawMode.Hover: return this.getThemeColor('fontHoverColor');\n default: return this.hasFocus(true)\n ? this.getThemeColor('fontFocusColor')\n : this.getThemeColor('fontColor');\n }\n }\n\n private getIconTint (mode: ButtonDrawMode): math.Color {\n switch (mode) {\n case ButtonDrawMode.Disabled: return this.getThemeColor('iconDisabledTint');\n case ButtonDrawMode.HoverPressed: return this.getThemeColor('iconHoverPressedTint');\n case ButtonDrawMode.Pressed: return this.getThemeColor('iconPressedTint');\n case ButtonDrawMode.Hover: return this.getThemeColor('iconHoverTint');\n default: return this.hasFocus(true)\n ? this.getThemeColor('iconFocusTint')\n : this.getThemeColor('iconTint');\n }\n }\n\n protected getBaseContentInsets (): ContentInsets {\n if (!this.getThemeConstant('alignToLargestStyleBox')) {\n return this.getThemeStyleBox(this.getStyleBoxName(this.getDrawMode())).getContentMargins();\n }\n const result: ContentInsets = { left: 0, top: 0, right: 0, bottom: 0 };\n\n for (const name of ['normal', 'hover', 'pressed', 'hoverPressed', 'disabled']) {\n const margin = this.getThemeStyleBox(name).getContentMargins();\n\n result.left = Math.max(result.left, margin.left);\n result.top = Math.max(result.top, margin.top);\n result.right = Math.max(result.right, margin.right);\n result.bottom = Math.max(result.bottom, margin.bottom);\n }\n\n return result;\n }\n\n private getIconSize (width: number, height: number): math.Vector2 {\n const icon = this.icon;\n\n if (!icon) {\n return new math.Vector2();\n }\n if (!this.expandIcon || icon.width <= 0 || icon.height <= 0) {\n return new math.Vector2(icon.width, icon.height);\n }\n const scale = Math.min(width / icon.width, height / icon.height);\n\n return new math.Vector2(icon.width * scale, icon.height * scale);\n }\n\n private getAlignedX (start: number, width: number, contentWidth: number, alignment: HorizontalAlignment): number {\n if (alignment === HorizontalAlignment.Center || alignment === HorizontalAlignment.Fill) {\n return start + (width - contentWidth) * 0.5;\n }\n if (alignment === HorizontalAlignment.Right) {\n return start + width - contentWidth;\n }\n\n return start;\n }\n\n private getAlignedY (start: number, height: number, contentHeight: number, alignment: VerticalAlignment): number {\n if (alignment === VerticalAlignment.Center || alignment === VerticalAlignment.Fill) {\n return start + (height - contentHeight) * 0.5;\n }\n if (alignment === VerticalAlignment.Bottom) {\n return start + height - contentHeight;\n }\n\n return start;\n }\n\n private ellipsizeText (text: string, width: number): string {\n const font = this.getThemeFont('font');\n const fontSize = this.getThemeFontSize('fontSize');\n const measurement = this.measureText(text, fontSize, font.family, font.weight, font.style);\n\n if (measurement.width <= width) {\n return text;\n }\n const ellipsis = '…';\n const ellipsisWidth = this.measureText(ellipsis, fontSize, font.family, font.weight, font.style).width;\n const characters = Array.from(text);\n let used = ellipsisWidth;\n let count = 0;\n\n if (ellipsisWidth > width) {\n return '';\n }\n while (count < characters.length && used + (measurement.advances[count] ?? 0) <= width) {\n used += measurement.advances[count] ?? 0;\n count++;\n }\n\n return characters.slice(0, count).join('') + ellipsis;\n }\n\n override fromData (data: ButtonData): void {\n super.fromData(data);\n if (data.text !== undefined) {\n this.text = data.text;\n }\n if (data.icon !== undefined) {\n this.icon = data.icon ? this.engine.findObject<Texture>(data.icon) : null;\n }\n if (data.flat !== undefined) {\n this.flat = data.flat;\n }\n if (data.clipText !== undefined) {\n this.clipText = data.clipText;\n }\n if (data.expandIcon !== undefined) {\n this.expandIcon = data.expandIcon;\n }\n if (data.textAlignment !== undefined) {\n this.textAlignment = data.textAlignment;\n }\n if (data.iconAlignment !== undefined) {\n this.iconAlignment = data.iconAlignment;\n }\n if (data.iconVerticalAlignment !== undefined) {\n this.iconVerticalAlignment = data.iconVerticalAlignment;\n }\n }\n}\n","import { effectsClass } from '@galacean/effects';\nimport type { Engine, math } from '@galacean/effects';\nimport { Button } from './button';\nimport type { ContentInsets } from './button';\nimport { HorizontalAlignment } from './enums';\n\nconst CHECK_ICON_GRID_SIZE = 16;\n\n@effectsClass('Checkbox')\nexport class Checkbox extends Button {\n static override readonly themeType: string = 'Checkbox';\n\n constructor (engine: Engine, text = '') {\n super(engine, text);\n this.toggleMode = true;\n this.textAlignment = HorizontalAlignment.Left;\n }\n\n protected override getContentInsets (): ContentInsets {\n const insets = super.getContentInsets();\n const separation = this.text ? Math.max(0, this.getThemeConstant('markSeparation')) : 0;\n\n return {\n ...insets,\n left: insets.left + this.getMarkSize().width + separation,\n };\n }\n\n protected override drawDecoration (): void {\n const markSize = this.getThemeConstant('markSize');\n const iconSize = this.getMarkSize();\n const x = this.getNormalContentInsets().left;\n const yOffset = this.getThemeConstant('checkVOffset');\n const y = Math.floor((this.height - iconSize.height) * 0.5) + yOffset;\n const radio = !!this.buttonGroup;\n const iconName = this.disabled || !this.enabledInHierarchy\n ? radio\n ? this.buttonPressed ? 'radioCheckedDisabled' : 'radioUncheckedDisabled'\n : this.buttonPressed ? 'checkedDisabled' : 'uncheckedDisabled'\n : radio\n ? this.buttonPressed ? 'radioChecked' : 'radioUnchecked'\n : this.buttonPressed ? 'checked' : 'unchecked';\n const icon = this.getThemeIcon(iconName);\n\n if (icon) {\n this.drawTexture(\n x, y, icon.width, icon.height, icon, undefined,\n this.getThemeColor(this.buttonPressed ? 'checkedColor' : 'uncheckedColor'),\n );\n\n return;\n }\n const fallbackY = Math.floor((this.height - markSize) * 0.5) + yOffset;\n const centerX = x + markSize * 0.5;\n const centerY = fallbackY + markSize * 0.5;\n const disabled = this.disabled || !this.enabledInHierarchy;\n const markColor = disabled\n ? this.getThemeColor('markDisabledColor')\n : this.getThemeColor('markColor');\n const uncheckedColor = disabled\n ? this.getThemeColor('markUncheckedDisabledColor')\n : this.getThemeColor('markUncheckedColor');\n const checkedColor = disabled\n ? this.getThemeColor('checkedDisabledColor')\n : this.getThemeColor('checkedColor');\n const scale = markSize / CHECK_ICON_GRID_SIZE;\n\n if (this.buttonGroup) {\n if (this.buttonPressed) {\n this.fillCircle(centerX, centerY, 7 * scale, markColor);\n this.fillCircle(centerX, centerY, 4 * scale, checkedColor);\n } else {\n this.fillCircle(centerX, centerY, 7 * scale, uncheckedColor);\n }\n } else {\n this.fillRoundedMark(x + scale, fallbackY + scale, 14 * scale, 2.33 * scale, this.buttonPressed\n ? markColor\n : uncheckedColor);\n if (this.buttonPressed) {\n this.fillCheckMark(x, fallbackY, scale, checkedColor);\n }\n }\n }\n\n private fillRoundedMark (x: number, y: number, size: number, radius: number, color: math.Color): void {\n const points: Array<[number, number]> = [];\n const segments = 4;\n const corners: Array<[number, number, number]> = [\n [x + radius, y + radius, Math.PI],\n [x + size - radius, y + radius, Math.PI * 1.5],\n [x + size - radius, y + size - radius, 0],\n [x + radius, y + size - radius, Math.PI * 0.5],\n ];\n\n for (const [centerX, centerY, start] of corners) {\n for (let index = 0; index <= segments; index++) {\n const angle = start + index / segments * Math.PI * 0.5;\n\n points.push([centerX + Math.cos(angle) * radius, centerY + Math.sin(angle) * radius]);\n }\n }\n const centerX = x + size * 0.5;\n const centerY = y + size * 0.5;\n\n for (let index = 0; index < points.length; index++) {\n const current = points[index];\n const next = points[(index + 1) % points.length];\n\n this.fillTriangle(centerX, centerY, current[0], current[1], next[0], next[1], color);\n }\n }\n\n private fillCheckMark (x: number, y: number, scale: number, color: math.Color): void {\n const point = (px: number, py: number): [number, number] => [x + px * scale, y + py * scale];\n const top = point(11.5, 3.734);\n const inner = point(5.89, 9.346);\n const leftInner = point(4.185, 7.665);\n const left = point(2.685, 9.164);\n const bottom = point(5.889, 12.344);\n const right = point(13, 5.235);\n\n this.fillTriangle(leftInner[0], leftInner[1], left[0], left[1], bottom[0], bottom[1], color);\n this.fillTriangle(leftInner[0], leftInner[1], bottom[0], bottom[1], inner[0], inner[1], color);\n this.fillTriangle(top[0], top[1], inner[0], inner[1], bottom[0], bottom[1], color);\n this.fillTriangle(top[0], top[1], bottom[0], bottom[1], right[0], right[1], color);\n }\n\n private getMarkSize (): { width: number, height: number } {\n let width = 0;\n let height = 0;\n\n for (const name of [\n 'checked', 'unchecked', 'checkedDisabled', 'uncheckedDisabled',\n 'radioChecked', 'radioUnchecked', 'radioCheckedDisabled', 'radioUncheckedDisabled',\n ]) {\n const icon = this.getThemeIcon(name);\n\n width = Math.max(width, icon?.width ?? 0);\n height = Math.max(height, icon?.height ?? 0);\n }\n if (width <= 0 && height <= 0) {\n const fallback = this.getThemeConstant('markSize');\n\n return { width: fallback, height: fallback };\n }\n\n return { width, height };\n }\n}\n","import { effectsClass } from '@galacean/effects';\nimport type { Engine } from '@galacean/effects';\nimport { Button } from './button';\nimport type { ContentInsets } from './button';\nimport { HorizontalAlignment } from './enums';\n\n@effectsClass('CheckButton')\nexport class CheckButton extends Button {\n static override readonly themeType: string = 'CheckButton';\n\n constructor (engine: Engine, text = '') {\n super(engine, text);\n this.toggleMode = true;\n this.textAlignment = HorizontalAlignment.Left;\n }\n\n protected override getContentInsets (): ContentInsets {\n const insets = super.getContentInsets();\n const separation = this.text ? Math.max(0, this.getThemeConstant('switchSeparation')) : 0;\n\n return {\n ...insets,\n right: insets.right + this.getSwitchSize().width + separation,\n };\n }\n\n protected override drawDecoration (): void {\n const switchWidth = this.getThemeConstant('switchWidth');\n const switchHeight = this.getThemeConstant('switchHeight');\n const switchSize = this.getSwitchSize();\n const x = this.width - this.getNormalContentInsets().right - switchSize.width;\n const yOffset = this.getThemeConstant('checkVOffset');\n const y = (this.height - switchSize.height) * 0.5 + yOffset;\n const radius = switchHeight * 0.5;\n const iconName = this.disabled || !this.enabledInHierarchy\n ? this.buttonPressed ? 'checkedDisabled' : 'uncheckedDisabled'\n : this.buttonPressed ? 'checked' : 'unchecked';\n const icon = this.getThemeIcon(iconName);\n\n if (icon) {\n this.drawTexture(\n x, y, icon.width, icon.height, icon, undefined,\n this.getThemeColor(this.buttonPressed ? 'buttonCheckedColor' : 'buttonUncheckedColor'),\n );\n\n return;\n }\n const fallbackX = this.width - this.getNormalContentInsets().right - switchWidth;\n const fallbackY = (this.height - switchHeight) * 0.5 + yOffset;\n const activeColor = this.disabled || !this.enabledInHierarchy\n ? this.getThemeColor('switchDisabledColor')\n : this.getThemeColor('switchColor');\n const trackColor = this.buttonPressed ? activeColor : this.getThemeColor('switchOffColor');\n const knobX = this.buttonPressed ? fallbackX + switchWidth - radius : fallbackX + radius;\n\n this.fillRect(fallbackX + radius, fallbackY, switchWidth - switchHeight, switchHeight, trackColor);\n this.fillCircle(fallbackX + radius, fallbackY + radius, radius, trackColor);\n this.fillCircle(fallbackX + switchWidth - radius, fallbackY + radius, radius, trackColor);\n this.fillCircle(knobX, fallbackY + radius, radius - 2, this.getThemeColor('switchKnobColor'));\n }\n\n private getSwitchSize (): { width: number, height: number } {\n let width = 0;\n let height = 0;\n\n const names = this.disabled || !this.enabledInHierarchy\n ? ['checkedDisabled', 'uncheckedDisabled']\n : ['checked', 'unchecked'];\n\n for (const name of names) {\n const icon = this.getThemeIcon(name);\n\n width = Math.max(width, icon?.width ?? 0);\n height = Math.max(height, icon?.height ?? 0);\n }\n if (width <= 0 && height <= 0) {\n return {\n width: this.getThemeConstant('switchWidth'),\n height: this.getThemeConstant('switchHeight'),\n };\n }\n\n return { width, height };\n }\n}\n","import {\n EventEmitter,\n MouseButton,\n effectsClass,\n math,\n} from '@galacean/effects';\nimport type {\n Engine,\n EventEmitterListener,\n InputEventKey,\n InputEventMouseButton,\n InputEventMouseMotion,\n InputEventScreenDrag,\n InputEventScreenTouch,\n} from '@galacean/effects';\nimport type { RootControl } from '../core/control';\nimport { FocusMode, MouseFilter } from '../core/enums';\nimport { Orientation } from '../layout/enums';\nimport { Range } from '../scroll/range';\nimport type { RangeEvent } from '../scroll/range';\nimport type { SliderData } from '../data';\n\nexport type SliderEvent = RangeEvent & {\n dragStarted: [],\n dragEnded: [valueChanged: boolean],\n};\n\ntype GrabberRect = {\n x: number,\n y: number,\n width: number,\n height: number,\n};\n\nexport class Slider extends Range {\n static override readonly themeType: string = 'Slider';\n private readonly sliderEventEmitter = new EventEmitter<SliderEvent>();\n private _orientation: Orientation;\n private _editable = true;\n private dragging = false;\n private hovered = false;\n private dragPosition = 0;\n private dragRatio = 0;\n private dragInitialValue = 0;\n private touchIndex = -1;\n\n scrollable = true;\n\n constructor (engine: Engine, orientation = Orientation.Horizontal) {\n super(engine);\n\n this._orientation = orientation;\n this.focusMode = FocusMode.All;\n this.mouseFilter = MouseFilter.Stop;\n }\n\n get orientation (): Orientation {\n return this._orientation;\n }\n\n get editable (): boolean {\n return this._editable;\n }\n\n set editable (value: boolean) {\n if (this._editable !== value) {\n this._editable = value;\n if (!value) {\n this.endDrag();\n }\n }\n }\n\n set orientation (value: Orientation) {\n if (value !== Orientation.Horizontal && value !== Orientation.Vertical) {\n throw new RangeError('Invalid Slider orientation.');\n }\n if (this._orientation !== value) {\n this._orientation = value;\n this.updateMinimumSize();\n }\n }\n\n override on<E extends keyof SliderEvent> (\n eventName: E,\n listener: EventEmitterListener<SliderEvent[E]>,\n ): void {\n if (eventName === 'dragStarted' || eventName === 'dragEnded') {\n this.sliderEventEmitter.on(eventName, listener);\n } else {\n super.on(eventName, listener as never);\n }\n }\n\n override off<E extends keyof SliderEvent> (\n eventName: E,\n listener: EventEmitterListener<SliderEvent[E]>,\n ): void {\n if (eventName === 'dragStarted' || eventName === 'dragEnded') {\n this.sliderEventEmitter.off(eventName, listener);\n } else {\n super.off(eventName, listener as never);\n }\n }\n\n override getMinimumSize (): math.Vector2 {\n const grabberSize = this.getThemeConstant('grabberSize');\n const thickness = Math.max(grabberSize, this.getThemeConstant('trackThickness'));\n\n return this.orientation === Orientation.Horizontal\n ? new math.Vector2(grabberSize, thickness)\n : new math.Vector2(thickness, grabberSize);\n }\n\n override draw (): void {\n const grabber = this.getGrabberRect();\n const highlighted = this.editable && (this.hovered || this.hasFocus(true));\n const grabberStyle = !this.editable\n ? 'grabberDisabled'\n : highlighted ? 'grabberHighlight' : 'grabber';\n const fillStyle = highlighted ? 'fillHighlight' : 'fill';\n const trackThickness = this.getThemeConstant('trackThickness');\n\n if (this.orientation === Orientation.Horizontal) {\n const centerY = (this.height - trackThickness) * 0.5;\n const fillWidth = grabber.x + grabber.width * 0.5;\n\n this.drawStyleBox(this.getThemeStyleBox('track'), 0, centerY, this.width, trackThickness);\n this.drawStyleBox(this.getThemeStyleBox(fillStyle), 0, centerY, fillWidth, trackThickness);\n } else {\n const centerX = (this.width - trackThickness) * 0.5;\n const fillY = grabber.y + grabber.height * 0.5;\n\n this.drawStyleBox(this.getThemeStyleBox('track'), centerX, 0, trackThickness, this.height);\n this.drawStyleBox(this.getThemeStyleBox(fillStyle), centerX, fillY, trackThickness, this.height - fillY);\n }\n this.drawStyleBox(this.getThemeStyleBox(grabberStyle), grabber.x, grabber.y, grabber.width, grabber.height);\n }\n\n override onMouseEnter (): void {\n this.hovered = true;\n }\n\n override onMouseMove (event: InputEventMouseMotion): void {\n this.hovered = this.hasPoint(event.position);\n if (this.dragging) {\n this.updateDrag(this.getAxis(event.position));\n event.accept();\n }\n }\n\n override onMouseLeave (): void {\n this.hovered = false;\n }\n\n override onMouseDown (event: InputEventMouseButton): void {\n if (!this.editable || event.buttonIndex !== MouseButton.Left) {\n return;\n }\n this.beginDrag(this.getAxis(event.position), this.getGrabberRect(), event.position);\n event.accept();\n }\n\n override onMouseUp (event: InputEventMouseButton): void {\n if (event.buttonIndex === MouseButton.Left && this.dragging) {\n this.endDrag();\n event.accept();\n }\n }\n\n override onTouchDown (event: InputEventScreenTouch): void {\n if (!this.editable || this.touchIndex !== -1) {\n return;\n }\n this.touchIndex = event.index;\n this.beginDrag(this.getAxis(event.position), this.getGrabberRect(), event.position);\n event.accept();\n }\n\n override onTouchMove (event: InputEventScreenDrag): void {\n if (this.dragging && event.index === this.touchIndex) {\n this.updateDrag(this.getAxis(event.position));\n event.accept();\n }\n }\n\n override onTouchUp (event: InputEventScreenTouch): void {\n if (event.index === this.touchIndex) {\n this.touchIndex = -1;\n this.endDrag();\n event.accept();\n }\n }\n\n override onMouseWheel (event: InputEventMouseButton): void {\n if (!this.editable || !this.scrollable) {\n return;\n }\n\n let direction = 0;\n\n if (event.buttonIndex === MouseButton.WheelUp || event.buttonIndex === MouseButton.WheelRight) {\n direction = 1;\n } else if (event.buttonIndex === MouseButton.WheelDown || event.buttonIndex === MouseButton.WheelLeft) {\n direction = -1;\n }\n if (direction !== 0) {\n const previous = this.value;\n\n this.value += direction * this.getIncrement() * event.factor;\n if (previous !== this.value) {\n event.accept();\n }\n }\n }\n\n override onKeyDown (event: InputEventKey): void {\n if (!this.editable) {\n return;\n }\n const increment = this.getIncrement();\n let target: number | undefined;\n\n if ((this.orientation === Orientation.Horizontal && event.keycode === 'ArrowLeft')\n || (this.orientation === Orientation.Vertical && event.keycode === 'ArrowDown')) {\n target = this.value - increment;\n } else if ((this.orientation === Orientation.Horizontal && event.keycode === 'ArrowRight')\n || (this.orientation === Orientation.Vertical && event.keycode === 'ArrowUp')) {\n target = this.value + increment;\n } else if (event.keycode === 'Home') {\n target = this.minValue;\n } else if (event.keycode === 'End') {\n target = this.maxValue;\n }\n\n if (target !== undefined) {\n const previous = this.value;\n\n this.value = target;\n if (previous !== this.value) {\n event.accept();\n }\n }\n }\n\n override onScrollBegin (): void {\n this.endDrag();\n }\n\n protected override onRootChanged (previousRoot: RootControl | null, nextRoot: RootControl | null): void {\n if (!nextRoot) {\n this.endDrag();\n }\n }\n\n private beginDrag (position: number, grabber: GrabberRect, point: math.Vector2): void {\n const insideGrabber = point.x >= grabber.x && point.x <= grabber.x + grabber.width\n && point.y >= grabber.y && point.y <= grabber.y + grabber.height;\n\n const initialValue = this.value;\n\n if (!insideGrabber) {\n this.setAsRatio(this.getRatioAt(position));\n }\n this.dragging = true;\n this.dragPosition = position;\n this.dragRatio = this.getAsRatio();\n this.dragInitialValue = initialValue;\n this.sliderEventEmitter.emit('dragStarted');\n }\n\n private updateDrag (position: number): void {\n const area = this.getUsableLength();\n\n if (area <= 0) {\n return;\n }\n const direction = this.orientation === Orientation.Horizontal ? 1 : -1;\n\n this.setAsRatio(this.dragRatio + direction * (position - this.dragPosition) / area);\n }\n\n private endDrag (): void {\n if (!this.dragging) {\n return;\n }\n const changed = this.value !== this.dragInitialValue;\n\n this.dragging = false;\n this.touchIndex = -1;\n this.sliderEventEmitter.emit('dragEnded', changed);\n }\n\n private getAxis (position: math.Vector2): number {\n return this.orientation === Orientation.Horizontal ? position.x : position.y;\n }\n\n private getAxisSize (): number {\n return this.orientation === Orientation.Horizontal ? this.width : this.height;\n }\n\n private getUsableLength (): number {\n return Math.max(0, this.getAxisSize() - this.getThemeConstant('grabberSize'));\n }\n\n private getRatioAt (position: number): number {\n const area = this.getUsableLength();\n const normalized = area > 0 ? (position - this.getThemeConstant('grabberSize') * 0.5) / area : 0;\n\n return this.orientation === Orientation.Horizontal ? normalized : 1 - normalized;\n }\n\n private getIncrement (): number {\n return this.step > 0 ? this.step : Math.max(0, this.maxValue - this.minValue) / 100;\n }\n\n private getGrabberRect (): GrabberRect {\n const grabberSize = this.getThemeConstant('grabberSize');\n const offset = this.getUsableLength() * this.getAsRatio();\n\n return this.orientation === Orientation.Horizontal\n ? { x: offset, y: (this.height - grabberSize) * 0.5, width: grabberSize, height: grabberSize }\n : { x: (this.width - grabberSize) * 0.5, y: this.getUsableLength() - offset, width: grabberSize, height: grabberSize };\n }\n\n override fromData (data: SliderData): void {\n super.fromData(data);\n if (data.editable !== undefined) {\n this.editable = data.editable;\n }\n if (data.scrollable !== undefined) {\n this.scrollable = data.scrollable;\n }\n }\n\n}\n\n@effectsClass('HSlider')\nexport class HSlider extends Slider {\n static override readonly themeType: string = 'HSlider';\n constructor (engine: Engine) {\n super(engine, Orientation.Horizontal);\n }\n}\n\n@effectsClass('VSlider')\nexport class VSlider extends Slider {\n static override readonly themeType: string = 'VSlider';\n constructor (engine: Engine) {\n super(engine, Orientation.Vertical);\n }\n}\n","import {\n effectsClass,\n math,\n} from '@galacean/effects';\nimport type { Engine } from '@galacean/effects';\nimport { MouseFilter } from '../core/enums';\nimport { Range } from '../scroll/range';\nimport { ProgressFillMode } from './enums';\nimport type { ProgressBarData } from '../data';\n\n@effectsClass('ProgressBar')\nexport class ProgressBar extends Range {\n static override readonly themeType: string = 'ProgressBar';\n private _showPercentage = true;\n private _fillMode = ProgressFillMode.BeginToEnd;\n\n constructor (engine: Engine) {\n super(engine);\n\n this.step = 0.01;\n this.mouseFilter = MouseFilter.Ignore;\n }\n\n get showPercentage (): boolean {\n return this._showPercentage;\n }\n\n set showPercentage (value: boolean) {\n if (this._showPercentage !== value) {\n this._showPercentage = value;\n this.updateMinimumSize();\n this.updateDesiredSize();\n }\n }\n\n get fillMode (): ProgressFillMode {\n return this._fillMode;\n }\n\n set fillMode (value: ProgressFillMode) {\n this._fillMode = value;\n }\n\n override getMinimumSize (): math.Vector2 {\n const background = this.getThemeStyleBox('background').getMinimumSize();\n const fill = this.getThemeStyleBox('fill').getMinimumSize();\n const styleMinimum = new math.Vector2(Math.max(background.x, fill.x), Math.max(background.y, fill.y));\n\n if (!this.showPercentage) {\n return new math.Vector2(Math.max(1, styleMinimum.x), Math.max(1, styleMinimum.y));\n }\n const font = this.getThemeFont('font');\n const text = this.measureText(\n '100%', this.getThemeFontSize('fontSize'), font.family, font.weight, font.style,\n );\n\n return new math.Vector2(styleMinimum.x, Math.max(background.y + text.lineHeight, styleMinimum.y));\n }\n\n override getDesiredSize (): math.Vector2 {\n const minimum = this.getMinimumSize();\n\n return new math.Vector2(Math.max(120, minimum.x), minimum.y);\n }\n\n override draw (): void {\n const ratio = this.getAsRatio();\n const fillStyle = this.getThemeStyleBox('fill');\n const fillMinimum = fillStyle.getMinimumSize();\n\n this.drawStyleBox(this.getThemeStyleBox('background'), 0, 0, this.width, this.height);\n switch (this.fillMode) {\n case ProgressFillMode.BeginToEnd: {\n const progress = Math.round(ratio * (this.width - fillMinimum.x));\n\n if (progress > 0) {\n this.drawStyleBox(fillStyle, 0, 0, progress + fillMinimum.x, this.height);\n }\n\n break;\n }\n case ProgressFillMode.EndToBegin: {\n const progress = Math.round(ratio * (this.width - fillMinimum.x));\n\n if (progress > 0) {\n const remaining = Math.round((1 - ratio) * (this.width - fillMinimum.x));\n\n this.drawStyleBox(fillStyle, remaining, 0, progress + fillMinimum.x, this.height);\n }\n\n break;\n }\n case ProgressFillMode.TopToBottom: {\n const progress = Math.round(ratio * (this.height - fillMinimum.y));\n\n if (progress > 0) {\n this.drawStyleBox(fillStyle, 0, 0, this.width, progress + fillMinimum.y);\n }\n\n break;\n }\n case ProgressFillMode.BottomToTop: {\n const progress = Math.round(ratio * (this.height - fillMinimum.y));\n\n if (progress > 0) {\n const remaining = Math.round((1 - ratio) * (this.height - fillMinimum.y));\n\n this.drawStyleBox(fillStyle, 0, remaining, this.width, progress + fillMinimum.y);\n }\n\n break;\n }\n }\n\n if (this.showPercentage) {\n const text = `${Math.round(ratio * 100)}%`;\n const font = this.getThemeFont('font');\n const fontSize = this.getThemeFontSize('fontSize');\n const measurement = this.measureText(text, fontSize, font.family, font.weight, font.style);\n\n this.drawText(\n (this.width - measurement.width) * 0.5,\n (this.height - measurement.lineHeight) * 0.5,\n text, fontSize, this.getThemeColor('fontColor'), font.family, font.weight, font.style,\n );\n }\n }\n\n override fromData (data: ProgressBarData): void {\n super.fromData(data);\n if (data.showPercentage !== undefined) {\n this.showPercentage = data.showPercentage;\n }\n if (data.fillMode !== undefined) {\n this.fillMode = data.fillMode;\n }\n }\n\n}\n","import {\n EventEmitter,\n MouseButton,\n MouseButtonMask,\n} from '@galacean/effects';\nimport type {\n Engine,\n EventEmitterListener,\n InputEventKey,\n InputEventMouseButton,\n InputEventMouseMotion,\n\n math } from '@galacean/effects';\nimport { Control } from '../core/control';\nimport type { ControlEvent } from '../core/control';\nimport { CursorShape, FocusMode, MouseFilter } from '../core/enums';\n\ntype EditSnapshot = {\n text: string,\n selectionStart: number,\n selectionEnd: number,\n};\n\nexport type TextInputEvent = ControlEvent & {\n textChanged: [text: string],\n textSubmitted: [text: string],\n};\n\nexport abstract class TextInput extends Control {\n static override readonly themeType: string = 'TextInput';\n protected abstract readonly multiline: boolean;\n private readonly textEventEmitter = new EventEmitter<TextInputEvent>();\n private _text = '';\n private _placeholderText = '';\n private _editable = true;\n private _maxLength = 0;\n private selectionStart = 0;\n private selectionEnd = 0;\n private selectionAnchor = 0;\n private selecting = false;\n private selectingWords = false;\n private wordSelectionStart = 0;\n private wordSelectionEnd = 0;\n private textarea: HTMLTextAreaElement | null = null;\n private textareaFocusTimer: ReturnType<typeof setTimeout> | null = null;\n private composing = false;\n private readonly undoStack: EditSnapshot[] = [];\n private readonly redoStack: EditSnapshot[] = [];\n\n constructor (engine: Engine) {\n super(engine);\n this.focusMode = FocusMode.All;\n this.mouseFilter = MouseFilter.Stop;\n this.defaultCursorShape = CursorShape.Ibeam;\n }\n\n get text (): string { return this._text; }\n set text (value: string) { this.setText(value, false); }\n\n get placeholderText (): string { return this._placeholderText; }\n set placeholderText (value: string) {\n if (this._placeholderText !== value) {\n this._placeholderText = value;\n this.updateMinimumSize();\n this.updateDesiredSize();\n }\n }\n\n get editable (): boolean { return this._editable; }\n set editable (value: boolean) {\n if (this._editable !== value) {\n this._editable = value;\n if (this.textarea) {this.textarea.readOnly = !value;}\n this.updateMinimumSize();\n }\n }\n\n get maxLength (): number { return this._maxLength; }\n set maxLength (value: number) {\n this._maxLength = Math.max(0, Math.floor(value));\n if (this._maxLength > 0 && this._text.length > this._maxLength) {\n this.setText(this._text.slice(0, this._maxLength), false);\n }\n if (this.textarea) {\n if (this._maxLength > 0) {this.textarea.maxLength = this._maxLength;} else {this.textarea.removeAttribute('maxlength');}\n }\n }\n\n get caretColumn (): number { return this.selectionEnd; }\n set caretColumn (value: number) { this.setSelection(value, value); }\n\n get hasSelection (): boolean { return this.selectionStart !== this.selectionEnd; }\n\n override on<E extends keyof TextInputEvent> (\n eventName: E,\n listener: EventEmitterListener<TextInputEvent[E]>,\n ): void {\n if (eventName === 'textChanged' || eventName === 'textSubmitted') {\n this.textEventEmitter.on(eventName, listener);\n } else {\n super.on(eventName, listener as never);\n }\n }\n\n override off<E extends keyof TextInputEvent> (\n eventName: E,\n listener: EventEmitterListener<TextInputEvent[E]>,\n ): void {\n if (eventName === 'textChanged' || eventName === 'textSubmitted') {\n this.textEventEmitter.off(eventName, listener);\n } else {\n super.off(eventName, listener as never);\n }\n }\n\n selectAll (): void { this.setSelection(0, this._text.length); }\n deselect (): void { this.setSelection(this.selectionEnd, this.selectionEnd); }\n getSelectedText (): string {\n const start = Math.min(this.selectionStart, this.selectionEnd);\n const end = Math.max(this.selectionStart, this.selectionEnd);\n\n return this._text.slice(start, end);\n }\n\n setSelection (start: number, end = start): void {\n this.selectionStart = Math.max(0, Math.min(this._text.length, Math.floor(start)));\n this.selectionEnd = Math.max(0, Math.min(this._text.length, Math.floor(end)));\n this.selectionAnchor = this.selectionStart;\n this.syncTextareaSelection();\n }\n\n override onMouseDown (event: InputEventMouseButton): void {\n if (event.buttonIndex !== MouseButton.Left) {return;}\n this.grabFocus(true);\n this.cancelTextareaFocus();\n const index = this.getCharacterIndex(event.position);\n\n if (event.doubleClick) {\n const [start, end] = this.getWordRange(index);\n\n this.wordSelectionStart = start;\n this.wordSelectionEnd = end;\n this.setSelection(start, end);\n this.selectingWords = true;\n this.selecting = true;\n } else if (event.shiftPressed) {\n this.moveCaret(index, true);\n this.selectingWords = false;\n this.selecting = true;\n } else {\n this.selectionAnchor = index;\n this.setSelection(index, index);\n this.selectingWords = false;\n this.selecting = true;\n }\n event.accept();\n }\n\n override onMouseMove (event: InputEventMouseMotion): void {\n if (!this.selecting || (event.buttonMask & MouseButtonMask.Left) === 0) {return;}\n const index = this.getCharacterIndex(event.position);\n\n if (this.selectingWords) {\n const [start, end] = this.getWordRange(index);\n\n if (index < this.wordSelectionStart) {\n this.setSelection(this.wordSelectionEnd, start);\n } else {\n this.setSelection(this.wordSelectionStart, end);\n }\n } else {\n this.setSelection(this.selectionAnchor, index);\n }\n event.accept();\n }\n\n override onMouseUp (event: InputEventMouseButton): void {\n if (event.buttonIndex === MouseButton.Left && this.selecting) {\n this.selecting = false;\n this.selectingWords = false;\n this.focusTextarea();\n event.accept();\n }\n }\n\n override onKeyDown (event: InputEventKey): void {\n const command = event.ctrlPressed || event.metaPressed;\n\n if (command && event.keycode.toLowerCase() === 'a') {\n this.selectAll();\n event.accept();\n\n return;\n }\n if (command && event.keycode.toLowerCase() === 'c') {\n this.copySelection();\n event.accept();\n\n return;\n }\n if (command && event.keycode.toLowerCase() === 'x' && this.editable) {\n this.copySelection();\n this.replaceSelection('');\n event.accept();\n\n return;\n }\n if (command && event.keycode.toLowerCase() === 'v' && this.editable) {\n this.pasteClipboard();\n event.accept();\n\n return;\n }\n if (command && event.keycode.toLowerCase() === 'z' && this.editable) {\n if (event.shiftPressed) {this.redo();} else {this.undo();}\n event.accept();\n\n return;\n }\n if (command && event.keycode.toLowerCase() === 'y' && this.editable) {\n this.redo();\n event.accept();\n\n return;\n }\n if (event.keycode === 'ArrowLeft' || event.keycode === 'ArrowRight') {\n const direction = event.keycode === 'ArrowLeft' ? -1 : 1;\n const next = direction < 0\n ? getPreviousCharacterIndex(this._text, this.selectionEnd)\n : getNextCharacterIndex(this._text, this.selectionEnd);\n\n this.moveCaret(next, event.shiftPressed);\n event.accept();\n\n return;\n }\n if (event.keycode === 'Home' || event.keycode === 'End') {\n const next = event.keycode === 'Home' ? this.getLineStart(this.selectionEnd) : this.getLineEnd(this.selectionEnd);\n\n this.moveCaret(next, event.shiftPressed);\n event.accept();\n\n return;\n }\n if (!this.editable) {return;}\n if (event.keycode === 'Backspace') {\n this.erase(-1);\n event.accept();\n\n return;\n }\n if (event.keycode === 'Delete') {\n this.erase(1);\n event.accept();\n\n return;\n }\n if (event.keycode === 'Enter') {\n if (this.multiline) {this.replaceSelection('\\n');} else {this.submit();}\n event.accept();\n\n return;\n }\n if (!command && !event.altPressed && event.unicode >= 32) {\n this.replaceSelection(String.fromCodePoint(event.unicode));\n event.accept();\n }\n }\n\n override onGotFocus (): void {\n this.activateTextarea();\n }\n\n override onLostFocus (): void {\n this.selecting = false;\n this.selectingWords = false;\n this.removeTextarea();\n }\n\n override onDestroy (): void {\n this.removeTextarea();\n }\n\n protected getDisplayText (): string {\n return this._text;\n }\n\n protected getSelectionRange (): [number, number] {\n return [Math.min(this.selectionStart, this.selectionEnd), Math.max(this.selectionStart, this.selectionEnd)];\n }\n\n protected moveCaret (index: number, extendSelection: boolean): void {\n const next = Math.max(0, Math.min(this._text.length, Math.floor(index)));\n\n if (extendSelection) {\n this.selectionStart = this.selectionAnchor;\n this.selectionEnd = next;\n this.syncTextareaSelection();\n } else {\n this.setSelection(next, next);\n }\n }\n\n protected getTextFont () {\n return this.getThemeFont('font');\n }\n\n protected getTextFontSize (): number {\n return this.getThemeFontSize('fontSize');\n }\n\n protected getTextColor (): math.Color {\n if (!this.editable) {return this.getThemeColor('fontReadOnlyColor');}\n if (this._text.length === 0) {return this.getThemeColor('fontPlaceholderColor');}\n\n return this.getThemeColor('fontColor');\n }\n\n protected getTextStyleBox () {\n return this.getThemeStyleBox(this.editable ? 'normal' : 'readOnly');\n }\n\n protected drawTextBackground (): void {\n this.drawStyleBox(this.getTextStyleBox(), 0, 0, this.width, this.height);\n if (this.hasFocus(true)) {\n this.drawStyleBox(this.getThemeStyleBox('focus'), 0, 0, this.width, this.height);\n }\n }\n\n protected drawSelection (x: number, y: number, width: number, height: number): void {\n if (width > 0) {this.fillRect(x, y, width, height, this.getThemeColor('selectionColor'));}\n }\n\n protected drawCaret (x: number, y: number, height: number): void {\n if (this.hasFocus() && !this.hasSelection) {\n this.fillRect(x, y, Math.max(1, this.getThemeConstant('caretWidth')), height, this.getThemeColor('caretColor'));\n }\n }\n\n protected abstract getCharacterIndex (position: math.Vector2): number;\n protected onTextValueChanged (): void {}\n\n private setText (value: string, signal: boolean): void {\n const limited = this._maxLength > 0 ? value.slice(0, this._maxLength) : value;\n\n if (this._text === limited) {return;}\n this._text = limited;\n this.selectionStart = Math.min(this.selectionStart, limited.length);\n this.selectionEnd = Math.min(this.selectionEnd, limited.length);\n this.onTextValueChanged();\n if (this.textarea && this.textarea.value !== limited) {this.textarea.value = limited;}\n this.updateMinimumSize();\n this.updateDesiredSize();\n if (signal) {this.textEventEmitter.emit('textChanged', limited);}\n }\n\n private replaceSelection (value: string): void {\n if (!this.editable) {return;}\n const [start, end] = this.getSelectionRange();\n\n this.pushUndo();\n const allowed = this._maxLength > 0\n ? value.slice(0, Math.max(0, this._maxLength - (this._text.length - (end - start))))\n : value;\n const next = `${this._text.slice(0, start)}${allowed}${this._text.slice(end)}`;\n const caret = start + allowed.length;\n\n this.setText(next, true);\n this.setSelection(caret, caret);\n this.redoStack.length = 0;\n }\n\n private erase (direction: number): void {\n if (this.hasSelection) {\n this.replaceSelection('');\n\n return;\n }\n const caret = this.selectionEnd;\n const start = direction < 0 ? getPreviousCharacterIndex(this._text, caret) : caret;\n const end = direction < 0 ? caret : getNextCharacterIndex(this._text, caret);\n\n if (start === end) {return;}\n this.setSelection(start, end);\n this.replaceSelection('');\n }\n\n private getLineStart (index: number): number {\n return this.multiline ? this._text.lastIndexOf('\\n', Math.max(0, index - 1)) + 1 : 0;\n }\n\n private getLineEnd (index: number): number {\n if (!this.multiline) {return this._text.length;}\n const end = this._text.indexOf('\\n', index);\n\n return end === -1 ? this._text.length : end;\n }\n\n private submit (): void {\n this.textEventEmitter.emit('textSubmitted', this._text);\n this.releaseFocus();\n }\n\n private pushUndo (): void {\n const snapshot = this.snapshot();\n const previous = this.undoStack[this.undoStack.length - 1];\n\n if (!previous || previous.text !== snapshot.text || previous.selectionStart !== snapshot.selectionStart\n || previous.selectionEnd !== snapshot.selectionEnd) {\n this.undoStack.push(snapshot);\n if (this.undoStack.length > 100) {this.undoStack.shift();}\n }\n }\n\n private undo (): void {\n const snapshot = this.undoStack.pop();\n\n if (!snapshot) {return;}\n this.redoStack.push(this.snapshot());\n this.restore(snapshot);\n }\n\n private redo (): void {\n const snapshot = this.redoStack.pop();\n\n if (!snapshot) {return;}\n this.undoStack.push(this.snapshot());\n this.restore(snapshot);\n }\n\n private snapshot (): EditSnapshot {\n return { text: this._text, selectionStart: this.selectionStart, selectionEnd: this.selectionEnd };\n }\n\n private restore (snapshot: EditSnapshot): void {\n this.setText(snapshot.text, true);\n this.setSelection(snapshot.selectionStart, snapshot.selectionEnd);\n }\n\n private copySelection (): void {\n const value = this.getSelectedText();\n\n if (value && typeof navigator !== 'undefined' && navigator.clipboard) {\n void navigator.clipboard.writeText(value);\n }\n }\n\n private pasteClipboard (): void {\n if (typeof navigator !== 'undefined' && navigator.clipboard) {\n void navigator.clipboard.readText().then(value => this.replaceSelection(value));\n }\n }\n\n private getWordRange (index: number): [number, number] {\n if (this._text.length === 0) {return [0, 0];}\n const position = Math.max(0, Math.min(this._text.length - 1, index));\n\n for (const match of this._text.matchAll(/[\\p{L}\\p{N}_]+|\\s+|[^\\p{L}\\p{N}_\\s]+/gu)) {\n const start = match.index;\n const end = start + match[0].length;\n\n if (position >= start && position < end) {return [start, end];}\n }\n\n return [position, position + 1];\n }\n\n private activateTextarea (): void {\n if (typeof document === 'undefined' || this.textarea) {return;}\n const textarea = document.createElement('textarea');\n\n textarea.value = this._text;\n textarea.readOnly = !this.editable;\n if (this._maxLength > 0) {textarea.maxLength = this._maxLength;}\n textarea.wrap = this.multiline ? 'soft' : 'off';\n textarea.setAttribute('aria-hidden', 'true');\n textarea.style.cssText = 'position:fixed;left:-10000px;top:0;width:1px;height:1px;opacity:0;pointer-events:none;';\n textarea.addEventListener('beforeinput', this.onBeforeInput);\n textarea.addEventListener('input', this.onTextareaInput);\n textarea.addEventListener('select', this.onTextareaSelect);\n textarea.addEventListener('compositionstart', this.onCompositionStart);\n textarea.addEventListener('compositionend', this.onCompositionEnd);\n textarea.addEventListener('keydown', this.onTextareaKeyDown);\n textarea.addEventListener('blur', this.onTextareaBlur);\n document.body.appendChild(textarea);\n this.textarea = textarea;\n this.syncTextareaSelection();\n this.scheduleTextareaFocus();\n }\n\n private removeTextarea (): void {\n this.cancelTextareaFocus();\n const textarea = this.textarea;\n\n if (!textarea) {return;}\n this.textarea = null;\n textarea.removeEventListener('beforeinput', this.onBeforeInput);\n textarea.removeEventListener('input', this.onTextareaInput);\n textarea.removeEventListener('select', this.onTextareaSelect);\n textarea.removeEventListener('compositionstart', this.onCompositionStart);\n textarea.removeEventListener('compositionend', this.onCompositionEnd);\n textarea.removeEventListener('keydown', this.onTextareaKeyDown);\n textarea.removeEventListener('blur', this.onTextareaBlur);\n textarea.remove();\n this.composing = false;\n }\n\n private syncTextareaSelection (): void {\n if (!this.textarea) {return;}\n const start = Math.min(this.selectionStart, this.selectionEnd);\n const end = Math.max(this.selectionStart, this.selectionEnd);\n\n this.textarea.setSelectionRange(start, end, this.selectionEnd < this.selectionStart ? 'backward' : 'forward');\n }\n\n private scheduleTextareaFocus (): void {\n this.cancelTextareaFocus();\n this.textareaFocusTimer = setTimeout(() => {\n this.textareaFocusTimer = null;\n this.focusTextarea();\n });\n }\n\n private cancelTextareaFocus (): void {\n if (this.textareaFocusTimer !== null) {\n clearTimeout(this.textareaFocusTimer);\n this.textareaFocusTimer = null;\n }\n }\n\n private focusTextarea (): void {\n if (this.textarea && this.hasFocus() && document.activeElement !== this.textarea) {\n this.textarea.focus({ preventScroll: true });\n }\n }\n\n private readonly onBeforeInput = (): void => {\n this.pushUndo();\n };\n\n private readonly onTextareaInput = (): void => {\n if (!this.textarea) {return;}\n this.setText(this.textarea.value, true);\n this.selectionStart = this.textarea.selectionStart;\n this.selectionEnd = this.textarea.selectionEnd;\n if (!this.composing) {this.redoStack.length = 0;}\n };\n\n private readonly onTextareaSelect = (): void => {\n if (!this.textarea) {return;}\n if (this.textarea.selectionDirection === 'backward') {\n this.selectionStart = this.textarea.selectionEnd;\n this.selectionEnd = this.textarea.selectionStart;\n } else {\n this.selectionStart = this.textarea.selectionStart;\n this.selectionEnd = this.textarea.selectionEnd;\n }\n this.selectionAnchor = this.selectionStart;\n };\n\n private readonly onCompositionStart = (): void => { this.composing = true; };\n private readonly onCompositionEnd = (): void => { this.composing = false; };\n\n private readonly onTextareaKeyDown = (event: KeyboardEvent): void => {\n if (event.key === 'Enter' && !this.multiline && !event.isComposing) {\n event.preventDefault();\n this.submit();\n }\n };\n\n private readonly onTextareaBlur = (): void => {\n if (this.textarea && this.hasFocus()) {this.releaseFocus();}\n };\n}\n\nfunction getPreviousCharacterIndex (value: string, index: number): number {\n const previous = Math.max(0, index - 1);\n\n if (previous > 0 && isLowSurrogate(value.charCodeAt(previous)) && isHighSurrogate(value.charCodeAt(previous - 1))) {\n return previous - 1;\n }\n\n return previous;\n}\n\nfunction getNextCharacterIndex (value: string, index: number): number {\n if (index >= value.length) {return value.length;}\n\n return Math.min(\n value.length,\n index + (isHighSurrogate(value.charCodeAt(index)) && isLowSurrogate(value.charCodeAt(index + 1)) ? 2 : 1),\n );\n}\n\nfunction isHighSurrogate (value: number): boolean {\n return value >= 0xd800 && value <= 0xdbff;\n}\n\nfunction isLowSurrogate (value: number): boolean {\n return value >= 0xdc00 && value <= 0xdfff;\n}\n","import { effectsClass, math } from '@galacean/effects';\nimport type { Engine } from '@galacean/effects';\nimport type { LineEditData } from '../data';\nimport { HorizontalAlignment } from './enums';\nimport { TextInput } from './text-input';\n\n@effectsClass('LineEdit')\nexport class LineEdit extends TextInput {\n static override readonly themeType: string = 'LineEdit';\n protected readonly multiline = false;\n alignment = HorizontalAlignment.Left;\n private scrollOffset = 0;\n private _secret = false;\n private _secretCharacter = '•';\n\n constructor (engine: Engine, text = '') {\n super(engine);\n this.text = text;\n }\n\n get secret (): boolean { return this._secret; }\n set secret (value: boolean) {\n if (this._secret !== value) {\n this._secret = value;\n this.updateDesiredSize();\n }\n }\n\n get secretCharacter (): string { return this._secretCharacter; }\n set secretCharacter (value: string) {\n const character = Array.from(value)[0] ?? '';\n\n if (this._secretCharacter !== character) {\n this._secretCharacter = character;\n this.updateDesiredSize();\n }\n }\n\n override getMinimumSize (): math.Vector2 {\n const style = this.getTextStyleBox();\n const margins = style.getContentMargins();\n const font = this.getTextFont();\n const measurement = this.measureText('M', this.getTextFontSize(), font.family, font.weight, font.style);\n\n return new math.Vector2(margins.left + margins.right + 24, margins.top + margins.bottom + measurement.lineHeight);\n }\n\n override getDesiredSize (): math.Vector2 {\n const style = this.getTextStyleBox();\n const margins = style.getContentMargins();\n const font = this.getTextFont();\n const display = this.getVisibleText() || this.placeholderText;\n const measurement = this.measureText(display, this.getTextFontSize(), font.family, font.weight, font.style);\n\n return new math.Vector2(\n margins.left + margins.right + measurement.width,\n margins.top + margins.bottom + measurement.lineHeight,\n );\n }\n\n override draw (): void {\n this.drawTextBackground();\n const style = this.getTextStyleBox();\n const margins = style.getContentMargins();\n const contentWidth = Math.max(0, this.width - margins.left - margins.right);\n const display = this.getVisibleText();\n const shown = display || this.placeholderText;\n const font = this.getTextFont();\n const fontSize = this.getTextFontSize();\n const full = this.measureText(shown, fontSize, font.family, font.weight, font.style);\n const textY = margins.top + Math.max(0, (this.height - margins.top - margins.bottom - full.lineHeight) * 0.5);\n\n this.updateScrollOffset(contentWidth);\n const textX = this.getAlignedTextX(full.width, contentWidth, margins.left) - this.scrollOffset;\n\n this.engine.graphics.pushClipRect(margins.left, margins.top, contentWidth, Math.max(0, this.height - margins.top - margins.bottom));\n if (display) {\n const [selectionStart, selectionEnd] = this.getSelectionRange();\n const prefix = this.measurePrefix(selectionStart);\n const selected = this.measurePrefix(selectionEnd) - prefix;\n\n this.drawSelection(textX + prefix, textY, selected, full.lineHeight);\n }\n this.drawText(textX, textY, shown, fontSize, this.getTextColor(), font.family, font.weight, font.style);\n if (display) {\n this.drawCaret(textX + this.measurePrefix(this.caretColumn), textY, full.lineHeight);\n } else {\n this.drawCaret(textX, textY, full.lineHeight);\n }\n this.engine.graphics.popClipRect();\n }\n\n protected override getDisplayText (): string {\n return this.getVisibleText();\n }\n\n protected override getCharacterIndex (position: math.Vector2): number {\n const style = this.getTextStyleBox();\n const margins = style.getContentMargins();\n const contentWidth = Math.max(0, this.width - margins.left - margins.right);\n const fullWidth = this.measurePrefix(this.text.length);\n const origin = this.getAlignedTextX(fullWidth, contentWidth, margins.left) - this.scrollOffset;\n const x = position.x - origin;\n\n if (x <= 0) {return 0;}\n const boundaries = getCharacterBoundaries(this.text);\n\n for (let index = 1; index < boundaries.length; index++) {\n const previous = this.measurePrefix(boundaries[index - 1]);\n const next = this.measurePrefix(boundaries[index]);\n\n if (x < (previous + next) * 0.5) {return boundaries[index - 1];}\n }\n\n return this.text.length;\n }\n\n private getVisibleText (): string {\n return this.secret\n ? (this.secretCharacter || '•').repeat(Array.from(this.text).length)\n : this.text;\n }\n\n private measurePrefix (column: number): number {\n const font = this.getTextFont();\n const prefix = this.text.slice(0, column);\n const visiblePrefix = this.secret\n ? (this.secretCharacter || '•').repeat(Array.from(prefix).length)\n : prefix;\n\n return this.measureText(\n visiblePrefix, this.getTextFontSize(), font.family, font.weight, font.style,\n ).width;\n }\n\n private updateScrollOffset (width: number): void {\n if (!this.hasFocus()) {\n this.scrollOffset = 0;\n\n return;\n }\n const caret = this.measurePrefix(this.caretColumn);\n\n if (caret - this.scrollOffset > width) {this.scrollOffset = caret - width;}\n if (caret < this.scrollOffset) {this.scrollOffset = caret;}\n }\n\n private getAlignedTextX (textWidth: number, contentWidth: number, left: number): number {\n if (this.alignment === HorizontalAlignment.Center) {return left + (contentWidth - textWidth) * 0.5;}\n if (this.alignment === HorizontalAlignment.Right) {return left + contentWidth - textWidth;}\n\n return left;\n }\n\n override fromData (data: LineEditData): void {\n super.fromData(data);\n if (data.text !== undefined) {this.text = data.text;}\n if (data.placeholderText !== undefined) {this.placeholderText = data.placeholderText;}\n if (data.editable !== undefined) {this.editable = data.editable;}\n if (data.maxLength !== undefined) {this.maxLength = data.maxLength;}\n if (data.secret !== undefined) {this.secret = data.secret;}\n if (data.secretCharacter !== undefined) {this.secretCharacter = data.secretCharacter;}\n if (data.alignment !== undefined) {this.alignment = data.alignment;}\n }\n}\n\nfunction getCharacterBoundaries (value: string): number[] {\n const boundaries = [0];\n let offset = 0;\n\n for (const character of value) {\n offset += character.length;\n boundaries.push(offset);\n }\n\n return boundaries;\n}\n","import {\n MouseButton,\n effectsClass,\n math,\n} from '@galacean/effects';\nimport type { Engine, InputEventKey, InputEventMouseButton } from '@galacean/effects';\nimport type { TextEditData } from '../data';\nimport { TextInput } from './text-input';\n\n@effectsClass('TextEdit')\nexport class TextEdit extends TextInput {\n static override readonly themeType: string = 'TextEdit';\n protected readonly multiline = true;\n private scrollLine = 0;\n\n constructor (engine: Engine, text = '') {\n super(engine);\n this.text = text;\n }\n\n override getMinimumSize (): math.Vector2 {\n const margins = this.getTextStyleBox().getContentMargins();\n const font = this.getTextFont();\n const line = this.measureText('M', this.getTextFontSize(), font.family, font.weight, font.style);\n\n return new math.Vector2(margins.left + margins.right + 48, margins.top + margins.bottom + line.lineHeight * 2);\n }\n\n override getDesiredSize (): math.Vector2 {\n const margins = this.getTextStyleBox().getContentMargins();\n const font = this.getTextFont();\n const fontSize = this.getTextFontSize();\n const lines = (this.text || this.placeholderText).split('\\n');\n let width = 0;\n let lineHeight = this.measureText('M', fontSize, font.family, font.weight, font.style).lineHeight;\n\n for (const line of lines) {\n const measurement = this.measureText(line, fontSize, font.family, font.weight, font.style);\n\n width = Math.max(width, measurement.width);\n lineHeight = Math.max(lineHeight, measurement.lineHeight);\n }\n\n return new math.Vector2(\n margins.left + margins.right + width,\n margins.top + margins.bottom + lineHeight * Math.max(2, lines.length),\n );\n }\n\n override draw (): void {\n this.drawTextBackground();\n const margins = this.getTextStyleBox().getContentMargins();\n const font = this.getTextFont();\n const fontSize = this.getTextFontSize();\n const source = this.text || this.placeholderText;\n const lines = source.split('\\n');\n\n this.scrollLine = Math.max(0, Math.min(lines.length - 1, this.scrollLine));\n const lineHeight = this.measureText('M', fontSize, font.family, font.weight, font.style).lineHeight;\n const [selectionStart, selectionEnd] = this.getSelectionRange();\n let textIndex = lines.slice(0, this.scrollLine).reduce((total, line) => total + line.length + 1, 0);\n\n this.engine.graphics.pushClipRect(\n margins.left, margins.top,\n Math.max(0, this.width - margins.left - margins.right),\n Math.max(0, this.height - margins.top - margins.bottom),\n );\n for (let lineIndex = this.scrollLine; lineIndex < lines.length; lineIndex++) {\n const line = lines[lineIndex];\n const y = margins.top + (lineIndex - this.scrollLine) * lineHeight;\n\n if (y >= this.height - margins.bottom) {break;}\n if (this.text) {\n const lineStart = textIndex;\n const lineEnd = lineStart + line.length;\n const selectedStart = Math.max(lineStart, selectionStart);\n const selectedEnd = Math.min(lineEnd, selectionEnd);\n\n if (selectedStart < selectedEnd) {\n const prefix = this.measureLine(line.slice(0, selectedStart - lineStart));\n const selected = this.measureLine(line.slice(selectedStart - lineStart, selectedEnd - lineStart));\n\n this.drawSelection(margins.left + prefix, y, selected, lineHeight);\n }\n }\n this.drawText(margins.left, y, line, fontSize, this.getTextColor(), font.family, font.weight, font.style);\n if (this.text && this.caretColumn >= textIndex && this.caretColumn <= textIndex + line.length) {\n this.drawCaret(margins.left + this.measureLine(line.slice(0, this.caretColumn - textIndex)), y, lineHeight);\n }\n textIndex += line.length + 1;\n }\n this.engine.graphics.popClipRect();\n }\n\n override onMouseWheel (event: InputEventMouseButton): void {\n const lines = this.text.split('\\n').length;\n\n if (event.buttonIndex === MouseButton.WheelUp) {\n this.scrollLine = Math.max(0, this.scrollLine - Math.max(1, Math.round(event.factor)));\n event.accept();\n } else if (event.buttonIndex === MouseButton.WheelDown) {\n this.scrollLine = Math.min(Math.max(0, lines - 1), this.scrollLine + Math.max(1, Math.round(event.factor)));\n event.accept();\n }\n }\n\n override onKeyDown (event: InputEventKey): void {\n if (event.keycode === 'ArrowUp' || event.keycode === 'ArrowDown') {\n const next = this.getVerticalCaretIndex(event.keycode === 'ArrowUp' ? -1 : 1);\n\n this.moveCaret(next, event.shiftPressed);\n this.ensureCaretLineVisible();\n event.accept();\n\n return;\n }\n super.onKeyDown(event);\n }\n\n protected override getCharacterIndex (position: math.Vector2): number {\n const margins = this.getTextStyleBox().getContentMargins();\n const font = this.getTextFont();\n const lineHeight = this.measureText(\n 'M', this.getTextFontSize(), font.family, font.weight, font.style,\n ).lineHeight;\n const lines = this.text.split('\\n');\n const lineIndex = Math.max(0, Math.min(lines.length - 1, Math.floor((position.y - margins.top) / lineHeight) + this.scrollLine));\n const line = lines[lineIndex];\n let index = lines.slice(0, lineIndex).reduce((total, value) => total + value.length + 1, 0);\n const x = position.x - margins.left;\n\n for (let column = 1; column <= line.length; column++) {\n const previous = this.measureLine(line.slice(0, column - 1));\n const next = this.measureLine(line.slice(0, column));\n\n if (x < (previous + next) * 0.5) {return index + column - 1;}\n }\n index += line.length;\n\n return index;\n }\n\n private measureLine (value: string): number {\n const font = this.getTextFont();\n\n return this.measureText(value, this.getTextFontSize(), font.family, font.weight, font.style).width;\n }\n\n private getVerticalCaretIndex (direction: number): number {\n const lines = this.text.split('\\n');\n const caret = this.caretColumn;\n let lineStart = 0;\n let lineIndex = 0;\n\n for (; lineIndex < lines.length - 1; lineIndex++) {\n const lineEnd = lineStart + lines[lineIndex].length;\n\n if (caret <= lineEnd) {break;}\n lineStart = lineEnd + 1;\n }\n const column = caret - lineStart;\n const targetLine = Math.max(0, Math.min(lines.length - 1, lineIndex + direction));\n let targetStart = 0;\n\n for (let index = 0; index < targetLine; index++) {targetStart += lines[index].length + 1;}\n\n return targetStart + Math.min(column, lines[targetLine].length);\n }\n\n private ensureCaretLineVisible (): void {\n const margins = this.getTextStyleBox().getContentMargins();\n const font = this.getTextFont();\n const lineHeight = this.measureText(\n 'M', this.getTextFontSize(), font.family, font.weight, font.style,\n ).lineHeight;\n const visibleLines = Math.max(1, Math.floor((this.height - margins.top - margins.bottom) / lineHeight));\n const caretLine = this.text.slice(0, this.caretColumn).split('\\n').length - 1;\n\n if (caretLine < this.scrollLine) {this.scrollLine = caretLine;} else if (caretLine >= this.scrollLine + visibleLines) {this.scrollLine = caretLine - visibleLines + 1;}\n }\n\n protected override onTextValueChanged (): void {\n const lineCount = this.text.split('\\n').length;\n const caretLine = this.text.slice(0, this.caretColumn).split('\\n').length - 1;\n\n this.scrollLine = Math.max(0, Math.min(lineCount - 1, this.scrollLine));\n if (caretLine < this.scrollLine) {this.scrollLine = caretLine;}\n }\n\n override fromData (data: TextEditData): void {\n super.fromData(data);\n if (data.text !== undefined) {this.text = data.text;}\n if (data.placeholderText !== undefined) {this.placeholderText = data.placeholderText;}\n if (data.editable !== undefined) {this.editable = data.editable;}\n if (data.maxLength !== undefined) {this.maxLength = data.maxLength;}\n }\n}\n","import { EventEmitter, effectsClass } from '@galacean/effects';\nimport type {\n Engine,\n EventEmitterListener,\n InputEventKey,\n math } from '@galacean/effects';\nimport { FocusMode } from '../core/enums';\nimport type { Control } from '../core/control';\nimport { PanelContainer } from '../layout/panel-container';\n\nexport type PopupEvent = {\n popupOpened: [],\n popupClosed: [],\n};\n\nexport abstract class Popup extends PanelContainer {\n static override readonly themeType: string = 'Popup';\n private readonly popupEventEmitter = new EventEmitter<PopupEvent>();\n\n constructor (engine: Engine) {\n super(engine);\n this.visible = false;\n this.focusMode = FocusMode.All;\n }\n\n onPopup<E extends keyof PopupEvent> (\n eventName: E,\n listener: EventEmitterListener<PopupEvent[E]>,\n ): void {\n this.popupEventEmitter.on(eventName, listener);\n }\n\n offPopup<E extends keyof PopupEvent> (\n eventName: E,\n listener: EventEmitterListener<PopupEvent[E]>,\n ): void {\n this.popupEventEmitter.off(eventName, listener);\n }\n\n popup (position: math.Vector2, source: Control | null = null): void {\n const root = source?.root ?? this.root;\n\n root?.popupControl(this, source, position);\n }\n\n hidePopup (): void {\n this.root?.closePopupControl(this);\n }\n\n override onKeyDown (event: InputEventKey): void {\n if (event.keycode === 'Escape') {\n this.hidePopup();\n event.accept();\n }\n }\n\n override onPopupOpened (): void {\n this.popupEventEmitter.emit('popupOpened');\n }\n\n override onPopupClosed (): void {\n this.popupEventEmitter.emit('popupClosed');\n }\n\n override onDestroy (): void {\n this.root?.closePopupControl(this);\n }\n}\n\n@effectsClass('PopupPanel')\nexport class PopupPanel extends Popup {\n static override readonly themeType: string = 'PopupPanel';\n}\n","import {\n EventEmitter,\n MouseButton,\n effectsClass,\n math,\n} from '@galacean/effects';\nimport type {\n EventEmitterListener,\n InputEventKey,\n InputEventMouseButton,\n InputEventMouseMotion,\n Texture,\n} from '@galacean/effects';\nimport type { PopupMenuData } from '../data';\nimport type { ControlEvent } from '../core/control';\nimport { Popup } from './popup';\n\nexport type PopupMenuItemId = number | string;\n\nexport type PopupMenuItem = {\n id: PopupMenuItemId,\n text: string,\n icon?: Texture | null,\n disabled?: boolean,\n separator?: boolean,\n checked?: boolean,\n};\n\nexport type PopupMenuEvent = ControlEvent & {\n idPressed: [id: PopupMenuItemId],\n};\n\n@effectsClass('PopupMenu')\nexport class PopupMenu extends Popup {\n static override readonly themeType: string = 'PopupMenu';\n private readonly menuEventEmitter = new EventEmitter<PopupMenuEvent>();\n private readonly items: PopupMenuItem[] = [];\n private hoveredIndex = -1;\n\n override on<E extends keyof PopupMenuEvent> (\n eventName: E,\n listener: EventEmitterListener<PopupMenuEvent[E]>,\n ): void {\n if (eventName === 'idPressed') {\n this.menuEventEmitter.on(eventName, listener);\n } else {\n super.on(eventName as never, listener as never);\n }\n }\n\n override off<E extends keyof PopupMenuEvent> (\n eventName: E,\n listener: EventEmitterListener<PopupMenuEvent[E]>,\n ): void {\n if (eventName === 'idPressed') {\n this.menuEventEmitter.off(eventName, listener);\n } else {\n super.off(eventName as never, listener as never);\n }\n }\n\n addItem (text: string, id: PopupMenuItemId = this.items.length, icon: Texture | null = null): void {\n this.items.push({ id, text, icon });\n this.updateMinimumSize();\n this.updateDesiredSize();\n }\n\n addSeparator (text = ''): void {\n this.items.push({ id: `separator-${this.items.length}`, text, separator: true, disabled: true });\n this.updateMinimumSize();\n this.updateDesiredSize();\n }\n\n clear (): void {\n this.items.length = 0;\n this.hoveredIndex = -1;\n this.updateMinimumSize();\n this.updateDesiredSize();\n }\n\n getItemCount (): number { return this.items.length; }\n getItem (index: number): PopupMenuItem | undefined {\n const item = this.items[index];\n\n return item ? { ...item } : undefined;\n }\n\n setItemDisabled (index: number, disabled: boolean): void {\n if (this.items[index]) {this.items[index].disabled = disabled;}\n }\n\n setItemChecked (index: number, checked: boolean): void {\n if (this.items[index]) {this.items[index].checked = checked;}\n }\n\n override getMinimumSize (): math.Vector2 {\n const panel = this.getThemeStyleBox('panel').getContentMargins();\n const font = this.getThemeFont('font');\n const fontSize = this.getThemeFontSize('fontSize');\n const itemHeight = this.getThemeConstant('itemHeight');\n let width = this.getThemeConstant('horizontalPadding') * 2;\n let height = 0;\n\n for (const item of this.items) {\n if (item.separator) {\n height += this.getThemeConstant('separatorHeight');\n } else {\n width = Math.max(width, this.measureText(item.text, fontSize, font.family, font.weight, font.style).width\n + this.getThemeConstant('horizontalPadding') * 2 + this.getThemeConstant('iconWidth'));\n height += itemHeight;\n }\n }\n\n return new math.Vector2(width + panel.left + panel.right, height + panel.top + panel.bottom);\n }\n\n override getDesiredSize (): math.Vector2 {\n return this.getMinimumSize();\n }\n\n override draw (): void {\n super.draw();\n const panel = this.getThemeStyleBox('panel').getContentMargins();\n const font = this.getThemeFont('font');\n const fontSize = this.getThemeFontSize('fontSize');\n const itemHeight = this.getThemeConstant('itemHeight');\n const padding = this.getThemeConstant('horizontalPadding');\n const iconWidth = this.getThemeConstant('iconWidth');\n let y = panel.top;\n\n for (let index = 0; index < this.items.length; index++) {\n const item = this.items[index];\n\n if (item.separator) {\n const height = this.getThemeConstant('separatorHeight');\n\n this.drawStyleBox(\n this.getThemeStyleBox('separator'), panel.left + padding, y + height * 0.5,\n Math.max(0, this.width - panel.left - panel.right - padding * 2), 1,\n );\n y += height;\n continue;\n }\n if (index === this.hoveredIndex && !item.disabled) {\n this.drawStyleBox(\n this.getThemeStyleBox('hover'), panel.left, y,\n Math.max(0, this.width - panel.left - panel.right), itemHeight,\n );\n }\n if (item.checked) {\n this.drawText(panel.left + padding, y + 2, '✓', fontSize, this.getThemeColor('checkColor'),\n font.family, font.weight, font.style);\n }\n if (item.icon) {\n const iconSize = Math.min(itemHeight - 4, iconWidth);\n\n this.drawTexture(panel.left + padding, y + (itemHeight - iconSize) * 0.5, iconSize, iconSize, item.icon);\n }\n const measurement = this.measureText(item.text, fontSize, font.family, font.weight, font.style);\n\n this.drawText(\n panel.left + padding + iconWidth,\n y + (itemHeight - measurement.lineHeight) * 0.5,\n item.text,\n fontSize,\n this.getThemeColor(item.disabled ? 'fontDisabledColor' : 'fontColor'),\n font.family,\n font.weight,\n font.style,\n );\n y += itemHeight;\n }\n }\n\n override onMouseMove (event: InputEventMouseMotion): void {\n this.hoveredIndex = this.getIndexAt(event.position.y);\n }\n\n override onMouseLeave (): void {\n this.hoveredIndex = -1;\n }\n\n override onMouseDown (event: InputEventMouseButton): void {\n if (event.buttonIndex !== MouseButton.Left) {return;}\n const index = this.getIndexAt(event.position.y);\n\n if (this.activateIndex(index)) {event.accept();}\n }\n\n override onKeyDown (event: InputEventKey): void {\n if (event.keycode === 'ArrowDown' || event.keycode === 'ArrowUp') {\n this.hoveredIndex = this.findEnabledIndex(this.hoveredIndex, event.keycode === 'ArrowDown' ? 1 : -1);\n event.accept();\n\n return;\n }\n if (event.keycode === 'Enter' || event.keycode === 'Space' || event.keycode === ' ') {\n if (this.activateIndex(this.hoveredIndex)) {event.accept();}\n\n return;\n }\n super.onKeyDown(event);\n }\n\n override onPopupOpened (): void {\n this.hoveredIndex = this.findEnabledIndex(-1, 1);\n super.onPopupOpened();\n }\n\n private getIndexAt (positionY: number): number {\n const panel = this.getThemeStyleBox('panel').getContentMargins();\n const itemHeight = this.getThemeConstant('itemHeight');\n let y = panel.top;\n\n for (let index = 0; index < this.items.length; index++) {\n const height = this.items[index].separator ? this.getThemeConstant('separatorHeight') : itemHeight;\n\n if (positionY >= y && positionY < y + height) {return index;}\n y += height;\n }\n\n return -1;\n }\n\n private activateIndex (index: number): boolean {\n const item = this.items[index];\n\n if (!item || item.disabled || item.separator) {return false;}\n this.menuEventEmitter.emit('idPressed', item.id);\n this.hidePopup();\n\n return true;\n }\n\n private findEnabledIndex (origin: number, direction: number): number {\n if (this.items.length === 0) {return -1;}\n let index = origin < 0 && direction < 0 ? this.items.length : origin;\n\n for (let count = 0; count < this.items.length; count++) {\n index = (index + direction + this.items.length) % this.items.length;\n const item = this.items[index];\n\n if (!item.disabled && !item.separator) {return index;}\n }\n\n return -1;\n }\n\n override fromData (data: PopupMenuData): void {\n super.fromData(data);\n if (data.items !== undefined) {\n this.clear();\n for (const item of data.items) {\n if (item.separator) {\n this.addSeparator(item.text);\n } else {\n this.addItem(item.text, item.id);\n const index = this.items.length - 1;\n\n this.setItemDisabled(index, item.disabled ?? false);\n this.setItemChecked(index, item.checked ?? false);\n }\n }\n }\n }\n}\n","import { EventEmitter, effectsClass, math } from '@galacean/effects';\nimport type { Engine, EventEmitterListener } from '@galacean/effects';\nimport { FocusMode } from '../core/enums';\nimport type { MenuButtonData, OptionButtonData } from '../data';\nimport { Button } from './button';\nimport type { ContentInsets } from './button';\nimport { ButtonDrawMode, HorizontalAlignment } from './enums';\nimport type { PopupMenuEvent, PopupMenuItemId } from './popup-menu';\nimport { PopupMenu } from './popup-menu';\n\nconst OPTION_ARROW_GRID_SIZE = 12;\n\n@effectsClass('MenuButton')\nexport class MenuButton extends Button {\n static override readonly themeType: string = 'MenuButton';\n readonly popupMenu: PopupMenu;\n private readonly openMenu = () => this.showPopup();\n\n constructor (engine: Engine, text = '') {\n super(engine, text);\n this.focusMode = FocusMode.Accessibility;\n this.popupMenu = new PopupMenu(engine);\n this.on('pressed', this.openMenu);\n }\n\n showPopup (): void {\n const transform = this.getGlobalTransform2D().elements;\n\n this.popupMenu.setSize(Math.max(this.width, this.popupMenu.getBoundDesiredSize().x), this.popupMenu.getBoundDesiredSize().y);\n this.popupMenu.popup(new math.Vector2(transform[6], transform[7] + this.height), this);\n }\n\n override onDestroy (): void {\n this.off('pressed', this.openMenu);\n this.popupMenu.dispose();\n super.onDestroy();\n }\n\n override fromData (data: MenuButtonData): void {\n super.fromData(data);\n if (data.items !== undefined) {this.popupMenu.fromData({ items: data.items });}\n }\n}\n\nexport type OptionButtonEvent = {\n itemSelected: [id: PopupMenuItemId],\n};\n\n@effectsClass('OptionButton')\nexport class OptionButton extends MenuButton {\n static override readonly themeType: string = 'OptionButton';\n private readonly optionEventEmitter = new EventEmitter<OptionButtonEvent>();\n private _selected = -1;\n private readonly menuSelected = (id: PopupMenuItemId) => this.selectId(id, true);\n\n constructor (engine: Engine) {\n super(engine);\n this.focusMode = FocusMode.All;\n this.textAlignment = HorizontalAlignment.Left;\n this.popupMenu.on('idPressed', this.menuSelected as EventEmitterListener<PopupMenuEvent['idPressed']>);\n }\n\n protected override getContentInsets (): ContentInsets {\n const insets = super.getContentInsets();\n const arrow = this.getThemeIcon('arrow');\n const arrowWidth = arrow?.width ?? this.getThemeConstant('arrowSize');\n\n return {\n ...insets,\n right: insets.right + arrowWidth + Math.max(0, this.getThemeConstant('hSeparation')),\n };\n }\n\n protected override drawDecoration (mode: ButtonDrawMode): void {\n const arrow = this.getThemeIcon('arrow');\n const size = arrow?.width ?? this.getThemeConstant('arrowSize');\n const height = arrow?.height ?? size;\n const margin = this.getThemeConstant('arrowMargin');\n const x = Math.max(0, this.width - margin - size);\n const y = Math.floor(Math.abs(this.height - height) * 0.5);\n const color = this.getArrowColor(mode);\n\n if (arrow) {\n this.drawTexture(x, y, size, height, arrow, undefined, color);\n\n return;\n }\n const scale = size / OPTION_ARROW_GRID_SIZE;\n const startX = x + 2 * scale;\n const startY = y + 4 * scale;\n const middleX = x + 6 * scale;\n const middleY = y + 8 * scale;\n const endX = x + 10 * scale;\n const thickness = 2 * scale;\n const radius = thickness * 0.5;\n\n this.drawLine(startX, startY, middleX, middleY, color, thickness);\n this.drawLine(middleX, middleY, endX, startY, color, thickness);\n this.fillCircle(startX, startY, radius, color);\n this.fillCircle(middleX, middleY, radius, color);\n this.fillCircle(endX, startY, radius, color);\n }\n\n private getArrowColor (mode: ButtonDrawMode): math.Color {\n if (this.getThemeConstant('modulateArrow') === 0) {\n return this.getThemeColor('iconTint');\n }\n switch (mode) {\n case ButtonDrawMode.Pressed: return this.getThemeColor('fontPressedColor');\n case ButtonDrawMode.Hover: return this.getThemeColor('fontHoverColor');\n case ButtonDrawMode.HoverPressed: return this.getThemeColor('fontHoverPressedColor');\n case ButtonDrawMode.Disabled: return this.getThemeColor('fontDisabledColor');\n default: return this.hasFocus(true)\n ? this.getThemeColor('fontFocusColor')\n : this.getThemeColor('fontColor');\n }\n }\n\n get selected (): number { return this._selected; }\n set selected (value: number) { this.select(value, false); }\n\n onOption<E extends keyof OptionButtonEvent> (\n eventName: E,\n listener: EventEmitterListener<OptionButtonEvent[E]>,\n ): void {\n this.optionEventEmitter.on(eventName, listener);\n }\n\n offOption<E extends keyof OptionButtonEvent> (\n eventName: E,\n listener: EventEmitterListener<OptionButtonEvent[E]>,\n ): void {\n this.optionEventEmitter.off(eventName, listener);\n }\n\n addItem (text: string, id: PopupMenuItemId = this.popupMenu.getItemCount()): void {\n this.popupMenu.addItem(text, id);\n if (this._selected === -1) {this.select(0, false);}\n }\n\n clear (): void {\n this.popupMenu.clear();\n this._selected = -1;\n this.text = '';\n }\n\n select (index: number, signal = true): void {\n const item = this.popupMenu.getItem(index);\n\n if (!item || item.disabled || item.separator) {return;}\n this._selected = index;\n this.text = item.text;\n if (signal) {this.optionEventEmitter.emit('itemSelected', item.id);}\n }\n\n selectId (id: PopupMenuItemId, signal = true): void {\n for (let index = 0; index < this.popupMenu.getItemCount(); index++) {\n if (this.popupMenu.getItem(index)?.id === id) {\n this.select(index, signal);\n\n return;\n }\n }\n }\n\n override onDestroy (): void {\n this.popupMenu.off('idPressed', this.menuSelected as EventEmitterListener<PopupMenuEvent['idPressed']>);\n super.onDestroy();\n }\n\n override fromData (data: OptionButtonData): void {\n super.fromData(data);\n if (data.selected !== undefined) {this.select(data.selected, false);}\n }\n}\n","import {\n EventEmitter,\n MouseButton,\n effectsClass,\n math,\n} from '@galacean/effects';\nimport type {\n Engine,\n EventEmitterListener,\n InputEventMouseButton,\n InputEventMouseMotion,\n} from '@galacean/effects';\nimport type { ColorPickerButtonData, ColorPickerData } from '../data';\nimport { Control, SizeFlags } from '../core/control';\nimport type { ControlEvent } from '../core/control';\nimport { MouseFilter } from '../core/enums';\nimport { GridContainer } from '../layout/grid-container';\nimport { VBoxContainer } from '../layout/box-container';\nimport { HSlider } from './slider';\nimport { Label } from './label';\nimport { LineEdit } from './line-edit';\nimport { PopupPanel } from './popup';\nimport { Button } from './button';\nimport type { ContentInsets } from './button';\nimport type { ButtonDrawMode } from './enums';\nimport type { BaseButtonEvent } from './base-button';\n\ntype HSV = { h: number, s: number, v: number };\n\nexport type ColorPickerEvent = ControlEvent & {\n colorChanged: [color: math.Color],\n};\n\nexport type ColorPickerButtonEvent = BaseButtonEvent & {\n colorChanged: [color: math.Color],\n};\n\nclass ColorPlane extends Control {\n hue = 0;\n saturation = 1;\n value = 1;\n changed?: (saturation: number, value: number) => void;\n private dragging = false;\n\n constructor (engine: Engine) {\n super(engine);\n this.mouseFilter = MouseFilter.Stop;\n this.setCustomMinimumSize(180, 120);\n }\n\n override draw (): void {\n const columns = 20;\n const rows = 12;\n\n for (let row = 0; row < rows; row++) {\n for (let column = 0; column < columns; column++) {\n const saturation = column / (columns - 1);\n const value = 1 - row / (rows - 1);\n\n this.fillRect(\n column * this.width / columns,\n row * this.height / rows,\n this.width / columns + 1,\n this.height / rows + 1,\n hsvToColor(this.hue, saturation, value, 1),\n );\n }\n }\n const x = this.saturation * this.width;\n const y = (1 - this.value) * this.height;\n\n this.drawCircle(x, y, 5, new math.Color(0, 0, 0, 1), 3);\n this.drawCircle(x, y, 4, new math.Color(1, 1, 1, 1), 1);\n }\n\n override onMouseDown (event: InputEventMouseButton): void {\n if (event.buttonIndex === MouseButton.Left) {\n this.dragging = true;\n this.updateValue(event.position);\n event.accept();\n }\n }\n\n override onMouseMove (event: InputEventMouseMotion): void {\n if (this.dragging) {\n this.updateValue(event.position);\n event.accept();\n }\n }\n\n override onMouseUp (event: InputEventMouseButton): void {\n if (event.buttonIndex === MouseButton.Left && this.dragging) {\n this.dragging = false;\n this.updateValue(event.position);\n event.accept();\n }\n }\n\n private updateValue (position: math.Vector2): void {\n this.saturation = clamp01(position.x / Math.max(1, this.width));\n this.value = 1 - clamp01(position.y / Math.max(1, this.height));\n this.changed?.(this.saturation, this.value);\n }\n}\n\nclass HueBar extends Control {\n value = 0;\n changed?: (value: number) => void;\n private dragging = false;\n\n constructor (engine: Engine) {\n super(engine);\n this.mouseFilter = MouseFilter.Stop;\n this.setCustomMinimumSize(180, 18);\n }\n\n override draw (): void {\n const count = 24;\n\n for (let index = 0; index < count; index++) {\n this.fillRect(\n index * this.width / count, 0, this.width / count + 1, this.height,\n hsvToColor(index / (count - 1), 1, 1, 1),\n );\n }\n this.drawLine(this.value * this.width, 0, this.value * this.width, this.height,\n new math.Color(1, 1, 1, 1), 2);\n }\n\n override onMouseDown (event: InputEventMouseButton): void {\n if (event.buttonIndex === MouseButton.Left) {\n this.dragging = true;\n this.updateValue(event.position.x);\n event.accept();\n }\n }\n\n override onMouseMove (event: InputEventMouseMotion): void {\n if (this.dragging) {\n this.updateValue(event.position.x);\n event.accept();\n }\n }\n\n override onMouseUp (event: InputEventMouseButton): void {\n if (event.buttonIndex === MouseButton.Left && this.dragging) {\n this.dragging = false;\n this.updateValue(event.position.x);\n event.accept();\n }\n }\n\n private updateValue (position: number): void {\n this.value = clamp01(position / Math.max(1, this.width));\n this.changed?.(this.value);\n }\n}\n\n@effectsClass('ColorPicker')\nexport class ColorPicker extends VBoxContainer {\n static override readonly themeType: string = 'ColorPicker';\n private readonly colorEventEmitter = new EventEmitter<ColorPickerEvent>();\n private readonly plane: ColorPlane;\n private readonly hueBar: HueBar;\n private readonly alphaSlider: HSlider;\n private readonly channelFields: LineEdit[] = [];\n private readonly hexField: LineEdit;\n private readonly currentColor = new math.Color(1, 1, 1, 1);\n private syncing = false;\n private _editAlpha = true;\n\n constructor (engine: Engine) {\n super(engine);\n this.setThemeConstantOverride('separation', 6);\n this.plane = new ColorPlane(engine);\n this.plane.setSizeFlags(SizeFlags.ExpandFill, SizeFlags.ExpandFill);\n this.plane.parent = this;\n this.hueBar = new HueBar(engine);\n this.hueBar.setSizeFlags(SizeFlags.ExpandFill, SizeFlags.Fill);\n this.hueBar.parent = this;\n this.alphaSlider = new HSlider(engine);\n this.alphaSlider.minValue = 0;\n this.alphaSlider.maxValue = 1;\n this.alphaSlider.step = 0.01;\n this.alphaSlider.setCustomMinimumSize(180, 18);\n this.alphaSlider.parent = this;\n const channels = new GridContainer(engine);\n\n channels.columns = 4;\n channels.setThemeConstantOverride('horizontalSeparation', 4);\n channels.setThemeConstantOverride('verticalSeparation', 4);\n channels.parent = this;\n for (const name of ['R', 'G', 'B', 'A']) {\n const index = this.channelFields.length;\n const row = new VBoxContainer(engine);\n const label = new Label(engine, name);\n const field = new LineEdit(engine);\n\n row.setThemeConstantOverride('separation', 2);\n label.parent = row;\n field.parent = row;\n row.parent = channels;\n field.on('textSubmitted', value => this.submitChannel(index, value));\n this.channelFields.push(field);\n }\n this.hexField = new LineEdit(engine);\n this.hexField.placeholderText = '#RRGGBBAA';\n this.hexField.parent = this;\n this.hexField.on('textSubmitted', value => this.submitHex(value));\n this.plane.changed = (saturation, value) => {\n const hsv = colorToHsv(this.currentColor);\n\n this.setColor(hsvToColor(hsv.h, saturation, value, this.currentColor.a), true);\n };\n this.hueBar.changed = hue => {\n const hsv = colorToHsv(this.currentColor);\n\n this.setColor(hsvToColor(hue, hsv.s, hsv.v, this.currentColor.a), true);\n };\n this.alphaSlider.on('valueChanged', value => {\n if (!this.syncing) {\n this.setColor(new math.Color(this.currentColor.r, this.currentColor.g, this.currentColor.b, value), true);\n }\n });\n this.syncEditors();\n }\n\n get color (): math.Color { return this.currentColor.clone(); }\n set color (value: math.Color) { this.setColor(value, false); }\n get editAlpha (): boolean { return this._editAlpha; }\n set editAlpha (value: boolean) {\n if (this._editAlpha !== value) {\n this._editAlpha = value;\n this.syncEditors();\n }\n }\n\n override on<E extends keyof ColorPickerEvent> (\n eventName: E,\n listener: EventEmitterListener<ColorPickerEvent[E]>,\n ): void {\n if (eventName === 'colorChanged') {\n this.colorEventEmitter.on(eventName, listener);\n } else {\n super.on(eventName, listener as never);\n }\n }\n\n override off<E extends keyof ColorPickerEvent> (\n eventName: E,\n listener: EventEmitterListener<ColorPickerEvent[E]>,\n ): void {\n if (eventName === 'colorChanged') {\n this.colorEventEmitter.off(eventName, listener);\n } else {\n super.off(eventName, listener as never);\n }\n }\n\n setColor (value: math.Color, signal = false): void {\n if (this.currentColor.equals(value)) {return;}\n this.currentColor.copyFrom(value);\n this.syncEditors();\n if (signal) {this.colorEventEmitter.emit('colorChanged', this.currentColor.clone());}\n }\n\n private syncEditors (): void {\n this.syncing = true;\n const hsv = colorToHsv(this.currentColor);\n\n this.plane.hue = hsv.h;\n this.plane.saturation = hsv.s;\n this.plane.value = hsv.v;\n this.hueBar.value = hsv.h;\n this.alphaSlider.setValueNoSignal(this.currentColor.a);\n const values = [this.currentColor.r, this.currentColor.g, this.currentColor.b, this.currentColor.a];\n\n for (let index = 0; index < this.channelFields.length; index++) {\n this.channelFields[index].text = String(Math.round(values[index] * 255));\n this.channelFields[index].editable = index < 3 || this._editAlpha;\n }\n this.hexField.text = colorToHex(this.currentColor, this._editAlpha);\n this.alphaSlider.visible = this._editAlpha;\n this.syncing = false;\n }\n\n private submitChannel (index: number, value: string): void {\n const number = Number(value);\n\n if (!Number.isFinite(number)) {return;}\n const channels = [this.currentColor.r, this.currentColor.g, this.currentColor.b, this.currentColor.a];\n\n channels[index] = clamp01(number / 255);\n this.setColor(new math.Color(channels[0], channels[1], channels[2], channels[3]), true);\n }\n\n private submitHex (value: string): void {\n const parsed = colorFromHex(value, 1);\n\n if (parsed) {\n if (!this._editAlpha) {parsed.a = this.currentColor.a;}\n this.setColor(parsed, true);\n }\n }\n\n override fromData (data: ColorPickerData): void {\n super.fromData(data);\n if (data.color !== undefined) {\n this.currentColor.copyFrom(data.color);\n this.syncEditors();\n }\n if (data.editAlpha !== undefined) {\n this.editAlpha = data.editAlpha;\n this.syncEditors();\n }\n }\n}\n\n@effectsClass('ColorPickerButton')\nexport class ColorPickerButton extends Button {\n static override readonly themeType: string = 'ColorPickerButton';\n readonly picker: ColorPicker;\n readonly popupPanel: PopupPanel;\n private readonly colorEventEmitter = new EventEmitter<ColorPickerButtonEvent>();\n private readonly openPicker = () => this.showPicker();\n\n constructor (engine: Engine) {\n super(engine);\n this.popupPanel = new PopupPanel(engine);\n this.picker = new ColorPicker(engine);\n this.picker.setCustomMinimumSize(250, 330);\n this.picker.parent = this.popupPanel;\n this.picker.on('colorChanged', color => this.colorEventEmitter.emit('colorChanged', color));\n this.on('pressed', this.openPicker);\n }\n\n get color (): math.Color { return this.picker.color; }\n set color (value: math.Color) { this.picker.color = value; }\n get editAlpha (): boolean { return this.picker.editAlpha; }\n set editAlpha (value: boolean) {\n this.picker.editAlpha = value;\n }\n\n override on<E extends keyof ColorPickerButtonEvent> (\n eventName: E,\n listener: EventEmitterListener<ColorPickerButtonEvent[E]>,\n ): void {\n if (eventName === 'colorChanged') {\n this.colorEventEmitter.on(eventName, listener);\n } else {\n super.on(eventName, listener as never);\n }\n }\n\n override off<E extends keyof ColorPickerButtonEvent> (\n eventName: E,\n listener: EventEmitterListener<ColorPickerButtonEvent[E]>,\n ): void {\n if (eventName === 'colorChanged') {\n this.colorEventEmitter.off(eventName, listener);\n } else {\n super.off(eventName, listener as never);\n }\n }\n\n showPicker (): void {\n const transform = this.getGlobalTransform2D().elements;\n\n this.popupPanel.setSize(270, 350);\n this.popupPanel.popup(new math.Vector2(transform[6], transform[7] + this.height), this);\n }\n\n protected override getContentInsets (): ContentInsets {\n const base = super.getContentInsets();\n\n return { ...base, left: base.left + Math.max(18, this.height - base.top - base.bottom) + 6 };\n }\n\n protected override drawDecoration (_mode: ButtonDrawMode): void {\n const margins = this.getNormalContentInsets();\n const size = Math.max(12, this.height - margins.top - margins.bottom);\n\n this.fillRect(margins.left, (this.height - size) * 0.5, size, size, this.picker.color);\n this.drawRect(margins.left + 0.5, (this.height - size) * 0.5 + 0.5, size - 1, size - 1,\n this.getThemeColor('swatchBorderColor'), 1);\n }\n\n override onDestroy (): void {\n this.off('pressed', this.openPicker);\n this.popupPanel.dispose();\n super.onDestroy();\n }\n\n override fromData (data: ColorPickerButtonData): void {\n super.fromData(data);\n if (data.color !== undefined) {this.picker.fromData({ color: data.color });}\n if (data.editAlpha !== undefined) {this.editAlpha = data.editAlpha;}\n }\n}\n\nfunction clamp01 (value: number): number {\n return Math.max(0, Math.min(1, value));\n}\n\nfunction colorToHsv (color: math.Color): HSV {\n const max = Math.max(color.r, color.g, color.b);\n const min = Math.min(color.r, color.g, color.b);\n const delta = max - min;\n let hue = 0;\n\n if (delta > 0) {\n if (max === color.r) {hue = ((color.g - color.b) / delta) % 6;} else if (max === color.g) {hue = (color.b - color.r) / delta + 2;} else {hue = (color.r - color.g) / delta + 4;}\n hue /= 6;\n if (hue < 0) {hue += 1;}\n }\n\n return { h: hue, s: max === 0 ? 0 : delta / max, v: max };\n}\n\nfunction hsvToColor (hue: number, saturation: number, value: number, alpha: number): math.Color {\n const section = Math.floor(hue * 6);\n const fraction = hue * 6 - section;\n const p = value * (1 - saturation);\n const q = value * (1 - fraction * saturation);\n const t = value * (1 - (1 - fraction) * saturation);\n\n switch (section % 6) {\n case 0: return new math.Color(value, t, p, alpha);\n case 1: return new math.Color(q, value, p, alpha);\n case 2: return new math.Color(p, value, t, alpha);\n case 3: return new math.Color(p, q, value, alpha);\n case 4: return new math.Color(t, p, value, alpha);\n default: return new math.Color(value, p, q, alpha);\n }\n}\n\nfunction colorToHex (color: math.Color, alpha: boolean): string {\n const values = [color.r, color.g, color.b, color.a].map(value => {\n return Math.round(clamp01(value) * 255).toString(16).padStart(2, '0').toUpperCase();\n });\n\n return `#${values.slice(0, alpha ? 4 : 3).join('')}`;\n}\n\nfunction colorFromHex (value: string, fallbackAlpha: number): math.Color | null {\n const source = value.trim().replace('#', '');\n\n if (!/^[0-9a-fA-F]{6}([0-9a-fA-F]{2})?$/.test(source)) {return null;}\n const number = Number.parseInt(source, 16);\n const hasAlpha = source.length === 8;\n\n return new math.Color(\n ((number >> (hasAlpha ? 24 : 16)) & 0xff) / 255,\n ((number >> (hasAlpha ? 16 : 8)) & 0xff) / 255,\n ((number >> (hasAlpha ? 8 : 0)) & 0xff) / 255,\n hasAlpha ? (number & 0xff) / 255 : fallbackAlpha,\n );\n}\n","import { registerPlugin } from '@galacean/effects';\nimport { GUIPlugin } from './plugin';\n\nexport * from './core';\nexport * from './components';\nexport * from './data';\nexport * from './layout/enums';\nexport * from './layout/box-container';\nexport * from './layout/grid-container';\nexport * from './layout/margin-container';\nexport * from './layout/center-container';\nexport * from './layout/aspect-ratio-container';\nexport * from './layout/panel-container';\nexport * from './layout/separator';\nexport * from './scroll/enums';\nexport * from './scroll/range';\nexport * from './scroll/scroll-bar';\nexport * from './scroll/scroll-container';\nexport * from './theme';\nexport * from './controls';\nexport * from './plugin';\n\nregisterPlugin('gui', GUIPlugin);\n\n/** GUI plugin package version. Importing this package registers the GUI runtime and native fallback theme. */\nexport const version = __VERSION__;\n"],"names":["_set_prototype_of","o","p","Object","setPrototypeOf","__proto__","_inherits","subClass","superClass","TypeError","prototype","create","constructor","value","writable","configurable","_is_native_reflect_construct","result","Boolean","valueOf","call","Reflect","construct","_","_construct","Parent","args","Class","a","push","apply","Constructor","Function","bind","instance","arguments","_get_prototype_of","getPrototypeOf","_is_native_function","fn","toString","indexOf","_wrap_native_super","_cache","Map","undefined","has","get","set","Wrapper","enumerable","_assert_this_initialized","self","ReferenceError","_defineProperties","target","props","i","length","descriptor","defineProperty","key","_create_class","protoProps","staticProps","_instanceof","left","right","Symbol","hasInstance","_array_like_to_array","arr","len","arr2","Array","_unsupported_iterable_to_array","minLen","n","slice","name","from","test","_create_for_of_iterator_helper_loose","allowArrayLike","it","iterator","next","isArray","done","MouseFilter","MouseBehaviorRecursive","FocusMode","FocusBehaviorRecursive","CursorShape","__decorate","decorators","desc","c","r","getOwnPropertyDescriptor","d","decorate","SuppressedError","error","suppressed","message","e","Error","_extends","assign","source","hasOwnProperty","Color","math","Vector2","ThemeItemType","PatchStretchMode","ZERO_MARGINS","top","bottom","cloneMargins","marginsFromData","data","finite","Number","isFinite","RangeError","nonNegative","Math","max","cloneFont","family","weight","style","fontFromData","cloneThemeValue","clone","StyleBox","eventEmitter","EventEmitter","contentMargins","readOnly","on","eventName","listener","off","getContentMargins","makeReadOnly","setContentMargins","assertMutable","keys","some","notifyChanged","getMinimumSize","emit","isReadOnly","StyleBoxEmpty","draw","shared","StyleBoxFlat","backgroundColor","CLEAR","borderColor","borderWidths","cornerRadii","getBackgroundColor","getBorderColor","getBorderWidths","getCornerRadii","setBackgroundColor","equals","copyFrom","setBorderColor","setBorderWidths","setCornerRadii","topLeft","topRight","bottomRight","bottomLeft","graphics","rect","width","height","hasRoundedCorners","drawRounded","fillRectangle","x","y","border","min","radii","adaptBorderWidths","adaptCornerRadii","hasBorder","drawRoundedFill","inner","innerRadii","drawRoundedRing","adapted","createInfiniteMargins","adaptMarginPair","first","second","available","firstMaximum","secondMaximum","sum","factor","POSITIVE_INFINITY","color","points","getRoundedPoints","centerX","centerY","index","current","fillTriangle","outerRect","outerRadii","innerRect","outer","segments","corners","PI","cx","cy","radius","start","angle","cos","sin","StyleBoxTexture","_texture","sourceRect","patchMargins","tint","WHITE","_horizontalAxisStretchMode","_verticalAxisStretchMode","_drawCenter","getSourceRect","getPatchMargins","getTint","setSourceRect","clearSourceRect","setPatchMargins","setTint","texture","drawNinePatch","sourceX","sourceY","sourceWidth","sourceHeight","marginLeft","marginTop","marginRight","marginBottom","horizontalMode","horizontalAxisStretchMode","verticalMode","verticalAxisStretchMode","drawCenter","ThemeRegistry","registerType","type","baseType","definitions","types","getTypeChain","includes","previous","storedDefinitions","definition","defaultValue","hasType","visited","Set","add","getDefault","itemType","getItemDefinition","dependency","affectsLayout","getItemDefinitions","includeInherited","chain","reverse","Theme","values","variations","styleBoxReferences","batchDepth","changePending","layoutChangePending","styleBoxChanged","batch","callback","setTypeVariation","variation","clearTypeVariation","dependent","base","delete","hasTypeVariation","getTypeVariationBase","getTypeDependencies","setColor","setItem","getColor","getItem","hasColor","hasItem","clearColor","clearItem","setConstant","getConstant","hasConstant","clearConstant","setFont","getFont","hasFont","clearFont","setFontSize","getFontSize","hasFontSize","clearFontSize","setIcon","getIcon","hasIcon","clearIcon","setStyleBox","getStyleBox","hasStyleBox","clearStyleBox","categories","items","size","releaseStyleBox","clear","styleBox","setCollectionFromData","engine","colors","constants","fonts","fontSizes","icons","styleBoxes","g","b","findObject","styleBoxFromData","stored","retainStyleBox","count","fromData","theme","remaining","progressed","flat","position","patch","content","themeFallbacks","constant","font","fontSize","icon","Matrix3","SizeFlags","GrowDirection","normalizeMeasuredMinimum","normalizeMeasuredMaximum","combineMaximum","measured","custom","clampToMaximum","maximum","ANCHOR_PRESET_TABLE","centerLeft","centerTop","centerRight","centerBottom","center","leftWide","topWide","rightWide","bottomWide","vcenterWide","hcenterWide","fullRect","Control","owner","children","anchorMin","anchorMax","offsetMin","offsetMax","pivot","scale","shear","mouseForcePassScrollEvents","clipContents","_parent","_visible","_enabled","_mouseFilter","Stop","_mouseBehaviorRecursive","Inherited","_focusMode","None","_focusBehaviorRecursive","_defaultCursorShape","Arrow","_rotation","transformDirty","cachedTransform","disposed","customMinimumSize","customMaximumSize","minimumSizeCache","desiredSizeCache","maximumSizeCache","pendingMeasurementChanges","_horizontalSizeFlags","_verticalSizeFlags","_stretchRatio","_horizontalGrowDirection","_verticalGrowDirection","_theme","themeOwnerNode","_themeTypeVariation","themeOverrides","themeCache","overrideStyleBoxReferences","attachedThemeChanged","propagateThemeChanged","overrideStyleBoxChanged","getInheritedTheme","getThemeOwnerNode","hasThemeOwnerNode","getThemeType","themeType","getThemeColor","resolveThemeItem","getThemeConstant","Constant","getThemeFont","Font","getThemeFontSize","FontSize","getThemeIcon","Icon","getThemeStyleBox","hasThemeColor","found","hasThemeConstant","hasThemeFont","hasThemeFontSize","hasThemeIcon","hasThemeStyleBox","setThemeColorOverride","setThemeOverride","setThemeConstantOverride","setThemeFontOverride","setThemeFontSizeOverride","setThemeIconOverride","setThemeStyleBoxOverride","removeThemeColorOverride","removeThemeOverride","removeThemeConstantOverride","removeThemeFontOverride","removeThemeFontSizeOverride","removeThemeIconOverride","removeThemeStyleBoxOverride","hasThemeColorOverride","hasThemeOverride","hasThemeConstantOverride","hasThemeFontOverride","hasThemeFontSizeOverride","hasThemeIconOverride","hasThemeStyleBoxOverride","clearThemeOverrides","releaseOverrideStyleBox","hasFocus","visibleOnly","root","guiControlHasFocus","drawStyleBox","addChild","child","parent","removeChild","getChildIndex","changeChildIndex","newIndex","oldIndex","splice","controlTreeChanged","addChildInternal","removeChildInternal","setPosition","keepOffsets","computeAnchors","getParentRect","computeOffsets","updateLayout","setSize","setRect","nextRect","setSizeFlags","horizontal","vertical","isInteger","getDesiredSize","getMaximumSize","getCombinedMinimumSize","getCachedMinimumSize","getCombinedMaximumSize","getCachedMaximumSize","getBoundMinimumSize","minimum","getBoundDesiredSize","desired","getCachedDesiredSize","setCustomMinimumSize","updateMinimumSize","setCustomMaximumSize","updateMaximumSize","invalidateMeasurementChanges","updateDesiredSize","invokeMeasurementChanges","changes","MeasurementChange","changed","scheduleMeasurementChanges","Container","invalidateMeasurementsFromChild","setScale","markTransformDirty","setRotation","degrees","setShear","setPivot","setAnchorMin","setAnchorMax","setOffsetMin","setOffsetMax","getRect","getTransform2D","radians","shearX","tan","shearY","pivotX","pivotY","tx","ty","setAnchorsPreset","preset","minX","minY","maxX","maxY","setOffsetsPreset","margin","parentSize","setAnchorsAndOffsetsPreset","getGlobalTransform2D","local","multiplyMatrices","hasPoint","point","intersectsChildContent","getEffectiveMouseFilter","enabledInHierarchy","isMouseRecursiveEnabled","mouseFilter","Ignore","getFocusModeWithOverride","isFocusRecursiveEnabled","focusMode","getCursorShape","defaultCursorShape","focus","hideFocus","grabControlFocus","grabFocus","grabClickFocus","grabControlClickFocus","releaseFocus","releaseControlFocus","warpMouse","matrix","elements","warpControlMouse","makePositionLocal","transform","abs","determinant","invert","getLocalMousePosition","getMousePosition","update","deltaTime","enabled","isDisposed","onDestroy","drawInternal","visibleInHierarchy","pushTransform","drawChildren","popTransform","drawLine","x1","y1","x2","y2","thickness","drawPolyline","drawLines","drawBezier","x3","y3","x4","y4","drawTriangle","drawRect","drawRectangle","drawCircle","fillRect","fillCircle","drawTexture","region","options","drawText","text","fontFamily","fontWeight","fontStyle","measureText","onMouseEnter","location","onMouseMove","event","onMouseLeave","onMouseWheel","onMouseDown","onMouseUp","onTouchDown","onTouchMove","onTouchUp","onKeyDown","onKeyUp","onGotFocus","onLostFocus","onScrollBegin","onScrollEnd","onPopupOpened","onPopupClosed","invokeGetDragData","getDragData","invokeCanDropData","canDropData","invokeDropData","dropData","dispose","resolveBoundedAxis","horizontalGrowDirection","verticalGrowDirection","applyBounds","pushClipRect","popClipRect","onThemeChanged","queueSort","onRootChanged","previousRoot","nextRoot","getThemeDependencies","explicitType","nativeType","requestedType","themeTypeVariation","getFallbackThemeDependencies","cacheKey","cached","queryMatchesCurrentType","override","candidate","getThemeFallback","entry","retainOverrideStyleBox","includeChildren","propagateThemeOwner","ownerNode","notify","assignToControl","pending","queueMeasurementChange","locationChanged","sizeChanged","requestedSize","minimumSize","maximumSize","growDirection","finiteSize","difference","adjustedPosition","assertGrowDirection","queuePendingLayouts","queuePendingMeasurements","notifyRootChanged","parentRect","mouseBehaviorRecursive","Enabled","focusBehaviorRecursive","rotation","horizontalSizeFlags","verticalSizeFlags","stretchRatio","applyThemeOverridesFromData","controlRemoved","item","indexInParent","visible","controlStateChanged","updateMouseCursorState","RootControl","normalized","trim","effectsClass","sortPending","childLayoutChanged","invalidateMeasurementsAndQueueSort","ownSizeChanged","queueLayout","invokeSortChildren","sortChildren","previousIndex","wasChild","bindChild","unbindChild","fitChildInRect","fitAxis","getLayoutChildren","filter","flags","wantsFill","rootEventEmitter","cursorNames","Ibeam","PointingHand","Cross","Wait","Busy","Drag","CanDrop","Forbidden","Vsize","Hsize","Bdiagsize","Fdiagsize","Move","Vsplit","Hsplit","Help","getButtonMask","button","MouseButton","Left","MouseButtonMask","Right","Middle","Xbutton1","Xbutton2","isWheelButton","WheelUp","WheelRight","PopupLayer","buttonIndex","closeTop","accept","CanvasRootControl","canvas","inputDisabled","receivesEvents","isActive","CanvasContainer","sortCanvases","sort","order","isVisible","WindowRootControl","popupStack","dragThreshold","lastInput","dirtyContainers","dirtyMeasurements","gui","mouseFocus","mouseClickGrabber","mouseFocusMask","mouseOver","mouseOverHierarchy","touchFocus","keyFocus","dragAccum","dragAttempted","dragging","dragData","dragMouseOver","dragSuccessful","lastMousePosition","NEGATIVE_INFINITY","sendingMouseEnterExit","mouseOverUpdatePending","canvases","popupLayer","closePopupControl","control","pushInput","cleanupInternalState","processGUIInput","postGrabClickFocus","isInputHandled","isAccepted","guiGetFocusOwner","isFocusTargetUsable","guiReleaseFocus","guiIsDragging","guiGetDragData","guiIsDragSuccessful","guiCancelDrag","endDragging","notifyFocusOwnerChanged","isControlValid","queueMicrotask","updateMouseOver","isControlUsable","updateCursor","dropControlState","updateMouseOverHierarchy","popupControl","originalTheme","focusOwner","restoreFocus","restoreFocusHidden","findIndex","state","removed","removedIndex","restore","container","cancelPointerInput","dropMouseFocus","dropMouseOver","onCanvasBlur","mask","InputEventMouseButton","device","InputEvent","deviceIdInternal","pressed","globalPosition","callControlInput","cancelPointerPress","touchIndex","controlBelongsToSubtree","resize","render","flushLayout","begin","end","round","measurements","getControlDepth","depth","InputEventKey","callGUIInput","InputEventMouse","processMouseButton","InputEventMouseMotion","processMouseMotion","InputEventScreenTouch","processScreenTouch","InputEventScreenDrag","processScreenDrag","isPressed","setZero","findClickFocus","finishDrop","relative","origin","subtract","beginDragging","findDropTarget","findInputControl","pointerEvent","localEvent","xformedBy","getGlobalInverse","forcePassWheel","forcePassTouch","isReleased","findControlAtPosition","positionInParent","skipSelf","parentEnabled","parentMouseEnabled","localPosition","toControlLocal","mouseEnabled","buildHoverHierarchy","applyMouseOver","common","toLocal","hierarchy","mode","Click","All","successful","cursor","subtree","findCanvasRoot","GUIWindowComponent","updateWindowRoot","windowRoot","renderWindowRoot","resizeWindowRoot","getBoundingClientRect","eventSystem","Component","CanvasRenderMode","UICanvas","renderMode","_order","registered","rootControl","onEnable","register","onDisable","unregister","destroyCanvas","guiWindow","getComponent","GUIPlugin","onEngineCreated","addComponent","onCompositionCreating","composition","sceneRoot","Plugin","UIControl","controlNode","linkedItemTransform","linkedControl","syncingLocation","itemTransformChanged","syncItemLocationToControl","controlLocationChanged","syncControlLocationToItem","onAwake","syncControl","onParentChanged","onOrderInParentChanged","syncControlOrder","disposeControl","unlinkControl","unbindLocationSync","attachControl","resolveParent","copyItemLocationToControl","bindLocationSync","orderInParent","parentItem","fallbackParentGetDelegate","uiControl","itemTransform","z","serialized","getClass","hasControl","Orientation","LayoutAlignment","AspectRatioStretchMode","EPSILON","assertFinite","assertEnumValue","reduce","total","growSlots","sizes","ceilings","weights","extra","integerPixels","ceiling","share","totalWeight","growth","active","capped","assigned","pixelError","activeIndex","exactGrowth","floor","map","alignmentOffset","alignment","BoxContainer","_orientation","Horizontal","_alignment","Begin","_reverse","measureChildren","orientation","availableMain","availableCross","separation","gapTotal","slotSpace","minimums","getMainSize","maximums","every","isMainExpanded","usedMain","mainSize","useDesired","main","cross","childSize","getCrossSize","Expand","invalidateMeasurement","Vertical","End","HBoxContainer","VBoxContainer","GridContainer","_columns","measureGrid","columnCount","columns","rowCount","ceil","columnMetrics","collectTrackMetrics","rowMetrics","horizontalSeparation","verticalSeparation","columnSizes","allocateTracks","rowSizes","columnPositions","getTrackPositions","rowPositions","column","row","rows","fill","unbounded","expanded","track","childMinimum","childDesired","childMaximum","minimumValue","desiredValue","maximumValue","metrics","trackSpace","positions","MarginContainer","CenterContainer","_useTopLeft","useTopLeft","AspectRatioContainer","_ratio","_stretchMode","Fit","_horizontalAlignment","Center","_verticalAlignment","baseWidth","ratio","baseHeight","stretchMode","WidthControlsHeight","HeightControlsWidth","Cover","getAlignedOffset","horizontalAlignment","verticalAlignment","PanelContainer","margins","Separator","HSeparator","VSeparator","ScrollMode","Range","_rounded","suppressSignals","rangeEventEmitter","createSharedRange","owners","setValue","calculateValue","valuesEqual","notifyValueChanged","setValueNoSignal","valueChanged","setMinValue","minValue","maxValue","page","clamp","setMaxValue","setStep","step","setPage","setAsRatio","exponentialRatio","log2","span","getAsRatio","range","attachShared","unshare","allowGreater","allowLesser","isNaN","calculated","snapFrom","rounded","toPrecision","PAGE_DIVISOR","ScrollBar","scrollBarEventEmitter","_customStep","highlight","decrementActive","incrementActive","dragPosition","dragRatio","Accessibility","scroll","amount","scrollTo","decrementSize","getButtonAxisSize","incrementSize","incrementCrossSize","getButtonCrossSize","scrollMinimum","grabberMinimum","getGrabberMinimumSize","getCrossStartPadding","getCrossEndPadding","axisSize","decrementState","incrementState","trackLength","grabber","getGrabberRect","grabberStyle","scrollStyle","drawButtonIcon","updateHighlight","getAxis","area","getAreaSize","getAxisSize","grabberOffset","getGrabberOffset","grabberSize","getGrabberSize","trackPosition","getTrackStartMargin","getIncrement","getPageIncrement","WheelDown","direction","wheelIncrement","increment","keycode","customStep","getTrackSize","scrollAxisMinimum","offset","crossStart","crossSize","getButtonIcon","pageDivisor","HScrollBar","VScrollBar","INERTIA_DECELERATION","ScrollContainer","scrollContainerEventEmitter","_horizontalScrollMode","Auto","_verticalScrollMode","_scrollHorizontalByDefault","_deadzone","_followFocus","focusRoot","touchDecelerating","beyondDeadzone","dragSpeed","dragFrom","lastDragAccum","motionSampleTime","viewportWidth","viewportHeight","scrollMoved","cancelTouchDrag","focusOwnerChanged","followFocus","isContentDescendant","ensureControlVisible","horizontalBar","verticalBar","getHScrollBar","getVScrollBar","Infinity","corner","global","horizontalDifference","verticalDifference","measureContent","previousHorizontal","previousVertical","horizontalEnabled","horizontalScrollMode","Disabled","verticalEnabled","verticalScrollMode","swapAxes","scrollHorizontalByDefault","shiftPressed","verticalHidden","ShowNever","horizontalHidden","horizontalAmount","verticalAmount","WheelLeft","exceedsDeadzone","deadzone","notifyContentScroll","canceled","seconds","updateInertia","updateDragVelocity","contentSize","getLargestContentSize","layout","resolveLayout","horizontalVisible","verticalVisible","horizontalConstrained","MaximizeFirst","verticalConstrained","verticalReserved","horizontalReserved","horizontalSize","verticalSize","ShowAlways","Reserve","shouldShowBar","nextHorizontalReserved","nextVerticalReserved","invalidateScrollLayout","decelerate","notifyEnd","horizontalCustomStep","verticalCustomStep","hScroll","vScroll","assertScrollMode","viewportSize","sign","palette","disabledText","panel","normal","hover","disabled","accent","accentHover","white","background","borderWidth","contentHorizontal","contentVertical","empty","fontItems","fontColor","lineSpacing","hoverPressed","fontFocusColor","fontHoverColor","fontPressedColor","fontHoverPressedColor","fontDisabledColor","iconTint","iconFocusTint","iconHoverTint","iconPressedTint","iconHoverPressedTint","iconDisabledTint","iconSeparation","alignToLargestStyleBox","checked","unchecked","checkedDisabled","uncheckedDisabled","radioChecked","radioUnchecked","radioCheckedDisabled","radioUncheckedDisabled","checkedColor","uncheckedColor","checkedDisabledColor","markColor","markDisabledColor","markUncheckedColor","markUncheckedDisabledColor","markOutlineColor","markSize","markSeparation","checkVOffset","buttonCheckedColor","buttonUncheckedColor","switchColor","switchDisabledColor","switchOffColor","switchKnobColor","switchWidth","switchHeight","switchSeparation","separator","fontReadOnlyColor","fontPlaceholderColor","selectionColor","caretColor","caretWidth","checkColor","itemHeight","separatorHeight","horizontalPadding","iconWidth","arrow","arrowSize","arrowMargin","hSeparation","modulateArrow","swatchBorderColor","fillHighlight","grabberHighlight","grabberDisabled","trackThickness","scrollFocus","grabberPressed","decrement","decrementHighlight","decrementPressed","incrementHighlight","incrementPressed","paddingLeft","paddingTop","paddingRight","paddingBottom","HorizontalAlignment","VerticalAlignment","AutowrapMode","TextOverflow","TextureExpandMode","TextureStretchMode","AxisStretchMode","Side","ButtonDrawMode","ButtonActionMode","ProgressFillMode","Label","_text","Top","_autowrapMode","Off","_textOverflow","Visible","layoutDirty","layoutWidth","NaN","natural","createNaturalLayout","autowrapMode","textOverflow","getMinimumLineWidth","paragraphCount","split","lineHeight","getTextLayout","clipped","gap","getVerticalGap","getTextStartY","lines","line","Ellipsis","ellipsize","Fill","countFillSpaces","measurement","drawFilledLine","drawThemedText","getTextStartX","invalidateTextLayout","measure","constrainedWidth","createLayout","paragraphs","emptyMeasurement","paragraph","wrapParagraph","maximumWidth","characters","cursorWidth","breakEnd","breakNext","character","advance","advances","isBreakSpace","isCJKLike","join","Arbitrary","Word","findWordEnd","replace","skipBreakSpaces","WordSmart","segment","lineWidth","Bottom","ellipsis","ellipsisMeasurement","used","spaces","codePoint","codePointAt","FULL_REGION","u0","v0","u1","v1","TextureRect","_expandMode","KeepSize","Scale","flipH","flipV","controlSizeChanged","expandMode","IgnoreSize","FitWidth","FitWidthProportional","FitHeight","FitHeightProportional","drawRegion","Tile","drawTiled","Keep","KeepCentered","KeepAspect","drawAspect","KeepAspectCentered","KeepAspectCovered","drawCovered","centered","sourceRatio","destinationRatio","tileWidth","tileHeight","verticalRatio","horizontalRatio","NinePatchRect","ninePatchEventEmitter","Stretch","_regionRect","setRegionRect","setPatchMargin","side","getPatchMargin","regionRect","patchMarginLeft","patchMarginTop","patchMarginRight","patchMarginBottom","ColorRect","Panel","ButtonGroup","buttons","allowUnpress","getPressedButton","buttonPressed","getButtons","select","signal","emitPressed","peer","setPressedFromGroup","updateButton","BaseButton","buttonEventEmitter","_disabled","_toggleMode","_buttonPressed","_buttonMask","_buttonGroup","hovered","pressing","pressInside","mousePressing","keyboardPressing","cancelPress","actionMode","Release","keepPressedOutside","setPressedNoSignal","setPressed","isHovered","isPressing","getDrawMode","HoverPressed","Hover","Pressed","Normal","hasButton","buttonMask","beginPress","activate","finishPress","echo","isActivationKey","buttonGroup","setPressedDirect","inside","Press","wasPressing","toggleMode","Button","clipText","expandIcon","textAlignment","iconAlignment","iconVerticalAlignment","measureButton","getStyleBoxName","drawDecoration","drawContent","getContentInsets","getBaseContentInsets","getNormalContentInsets","hasText","iconHeight","textWidth","textHeight","insets","contentWidth","contentHeight","naturalText","iconSize","getIconSize","reservedIconWidth","sourceText","ellipsizeText","iconX","textAreaX","textX","getAlignedX","textAreaY","textY","iconY","getAlignedY","getIconTint","getFontColor","ellipsisWidth","_icon","CHECK_ICON_GRID_SIZE","Checkbox","getMarkSize","yOffset","radio","iconName","fallbackY","fillRoundedMark","fillCheckMark","px","py","leftInner","fallback","CheckButton","getSwitchSize","switchSize","fallbackX","activeColor","trackColor","knobX","names","Slider","sliderEventEmitter","_editable","dragInitialValue","scrollable","highlighted","editable","fillStyle","fillWidth","fillY","updateDrag","beginDrag","endDrag","insideGrabber","initialValue","getRatioAt","getUsableLength","HSlider","VSlider","ProgressBar","_showPercentage","_fillMode","BeginToEnd","styleMinimum","showPercentage","fillMinimum","fillMode","progress","EndToBegin","TopToBottom","BottomToTop","TextInput","textEventEmitter","_placeholderText","_maxLength","selectionStart","selectionEnd","selectionAnchor","selecting","selectingWords","wordSelectionStart","wordSelectionEnd","textarea","textareaFocusTimer","composing","undoStack","redoStack","onBeforeInput","pushUndo","onTextareaInput","setText","onTextareaSelect","selectionDirection","onCompositionStart","onCompositionEnd","onTextareaKeyDown","multiline","isComposing","preventDefault","submit","onTextareaBlur","selectAll","setSelection","deselect","getSelectedText","syncTextareaSelection","cancelTextareaFocus","getCharacterIndex","doubleClick","getWordRange","moveCaret","focusTextarea","command","ctrlPressed","metaPressed","toLowerCase","copySelection","replaceSelection","pasteClipboard","redo","undo","getPreviousCharacterIndex","getNextCharacterIndex","getLineStart","getLineEnd","erase","altPressed","unicode","String","fromCodePoint","activateTextarea","removeTextarea","getDisplayText","getSelectionRange","extendSelection","getTextFont","getTextFontSize","getTextColor","getTextStyleBox","drawTextBackground","drawSelection","drawCaret","hasSelection","onTextValueChanged","limited","allowed","caret","lastIndexOf","snapshot","shift","pop","navigator","clipboard","writeText","readText","then","matchAll","match","document","createElement","maxLength","wrap","setAttribute","cssText","addEventListener","body","appendChild","scheduleTextareaFocus","removeEventListener","remove","setSelectionRange","setTimeout","clearTimeout","activeElement","preventScroll","placeholderText","removeAttribute","caretColumn","isLowSurrogate","charCodeAt","isHighSurrogate","LineEdit","scrollOffset","_secret","_secretCharacter","display","getVisibleText","shown","full","updateScrollOffset","getAlignedTextX","prefix","measurePrefix","selected","fullWidth","boundaries","getCharacterBoundaries","secret","secretCharacter","repeat","visiblePrefix","TextEdit","scrollLine","textIndex","lineIndex","lineStart","lineEnd","selectedStart","selectedEnd","measureLine","getVerticalCaretIndex","ensureCaretLineVisible","targetLine","targetStart","visibleLines","caretLine","lineCount","Popup","popupEventEmitter","onPopup","offPopup","popup","hidePopup","PopupPanel","PopupMenu","menuEventEmitter","hoveredIndex","addItem","id","addSeparator","getItemCount","setItemDisabled","setItemChecked","padding","getIndexAt","activateIndex","findEnabledIndex","positionY","OPTION_ARROW_GRID_SIZE","MenuButton","openMenu","showPopup","popupMenu","OptionButton","optionEventEmitter","_selected","menuSelected","selectId","arrowWidth","getArrowColor","startX","startY","middleX","middleY","endX","onOption","offOption","ColorPlane","hue","saturation","hsvToColor","updateValue","clamp01","HueBar","ColorPicker","channelFields","label","field","channels","submitChannel","colorEventEmitter","currentColor","syncing","_editAlpha","plane","ExpandFill","hueBar","alphaSlider","hexField","submitHex","hsv","colorToHsv","h","s","v","syncEditors","colorToHex","number","parsed","colorFromHex","editAlpha","ColorPickerButton","openPicker","showPicker","popupPanel","picker","_mode","delta","alpha","section","fraction","q","t","padStart","toUpperCase","fallbackAlpha","parseInt","hasAlpha","registerPlugin","version"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_set_prototype_of.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_inherits.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_is_native_reflect_construct.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_construct.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_get_prototype_of.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_is_native_function.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_wrap_native_super.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_assert_this_initialized.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_create_class.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_instanceof.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_array_like_to_array.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_unsupported_iterable_to_array.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_create_for_of_iterator_helper_loose.js","../src/core/enums.ts","../../../node_modules/.pnpm/tslib@2.8.1/node_modules/tslib/tslib.es6.mjs","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_extends.js","../src/core/theme.ts","../src/core/control.ts","../src/core/roots.ts","../src/components/gui-window-component.ts","../src/components/ui-canvas.ts","../src/plugin/gui-plugin.ts","../src/components/ui-control.ts","../src/layout/enums.ts","../src/layout/utils.ts","../src/layout/box-container.ts","../src/layout/grid-container.ts","../src/layout/margin-container.ts","../src/layout/center-container.ts","../src/layout/aspect-ratio-container.ts","../src/layout/panel-container.ts","../src/layout/separator.ts","../src/scroll/enums.ts","../src/scroll/range.ts","../src/scroll/scroll-bar.ts","../src/scroll/scroll-container.ts","../src/theme/default-theme.ts","../src/controls/enums.ts","../src/controls/label.ts","../src/controls/texture-rect.ts","../src/controls/nine-patch-rect.ts","../src/controls/color-rect.ts","../src/controls/panel.ts","../src/controls/base-button.ts","../src/controls/button.ts","../src/controls/checkbox.ts","../src/controls/check-button.ts","../src/controls/slider.ts","../src/controls/progress-bar.ts","../src/controls/text-input.ts","../src/controls/line-edit.ts","../src/controls/text-edit.ts","../src/controls/popup.ts","../src/controls/popup-menu.ts","../src/controls/menu-button.ts","../src/controls/color-picker.ts","../src/index.ts"],"sourcesContent":["function _set_prototype_of(o, p) {\n _set_prototype_of = Object.setPrototypeOf || function setPrototypeOf(o, p) {\n o.__proto__ = p;\n\n return o;\n };\n\n return _set_prototype_of(o, p);\n}\nexport { _set_prototype_of as _ };\n","import { _ as _set_prototype_of } from \"./_set_prototype_of.js\";\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } });\n\n if (superClass) _set_prototype_of(subClass, superClass);\n}\nexport { _inherits as _ };\n","function _is_native_reflect_construct() {\n // Since Reflect.construct can't be properly polyfilled, some\n // implementations (e.g. core-js@2) don't set the correct internal slots.\n // Those polyfills don't allow us to subclass built-ins, so we need to\n // use our fallback implementation.\n try {\n // If the internal slots aren't set, this throws an error similar to\n // TypeError: this is not a Boolean object.\n var result = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {}));\n } catch (_) {}\n return (_is_native_reflect_construct = function() {\n return !!result;\n })();\n}\n\nexport { _is_native_reflect_construct as _ };\n","import { _ as _is_native_reflect_construct } from \"./_is_native_reflect_construct.js\";\nimport { _ as _set_prototype_of } from \"./_set_prototype_of.js\";\nfunction _construct(Parent, args, Class) {\n if (_is_native_reflect_construct()) _construct = Reflect.construct;\n else {\n _construct = function construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n\n if (Class) _set_prototype_of(instance, Class.prototype);\n\n return instance;\n };\n }\n\n return _construct.apply(null, arguments);\n}\nexport { _construct as _ };\n","function _get_prototype_of(o) {\n _get_prototype_of = Object.setPrototypeOf ? Object.getPrototypeOf : function getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n\n return _get_prototype_of(o);\n}\nexport { _get_prototype_of as _ };\n","function _is_native_function(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}\nexport { _is_native_function as _ };\n","import { _ as _construct } from \"./_construct.js\";\nimport { _ as _get_prototype_of } from \"./_get_prototype_of.js\";\nimport { _ as _is_native_function } from \"./_is_native_function.js\";\nimport { _ as _set_prototype_of } from \"./_set_prototype_of.js\";\n\nfunction _wrap_native_super(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n _wrap_native_super = function(Class) {\n if (Class === null || !_is_native_function(Class)) return Class;\n if (typeof Class !== \"function\") throw new TypeError(\"Super expression must either be null or a function\");\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n _cache.set(Class, Wrapper);\n }\n\n function Wrapper() {\n return _construct(Class, arguments, _get_prototype_of(this).constructor);\n }\n Wrapper.prototype = Object.create(Class.prototype, { constructor: { value: Wrapper, enumerable: false, writable: true, configurable: true } });\n\n return _set_prototype_of(Wrapper, Class);\n };\n\n return _wrap_native_super(Class);\n}\nexport { _wrap_native_super as _ };\n","function _assert_this_initialized(self) {\n if (self === void 0) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n\n return self;\n}\nexport { _assert_this_initialized as _ };\n","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n\n if (\"value\" in descriptor) descriptor.writable = true;\n\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nfunction _create_class(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n\n return Constructor;\n}\nexport { _create_class as _ };\n","function _instanceof(left, right) {\n if (right != null && typeof Symbol !== \"undefined\" && right[Symbol.hasInstance]) {\n return !!right[Symbol.hasInstance](left);\n } else return left instanceof right;\n}\nexport { _instanceof as _ };\n","function _array_like_to_array(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n}\nexport { _array_like_to_array as _ };\n","import { _ as _array_like_to_array } from \"./_array_like_to_array.js\";\n\nfunction _unsupported_iterable_to_array(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _array_like_to_array(o, minLen);\n\n var n = Object.prototype.toString.call(o).slice(8, -1);\n\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(n);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);\n}\nexport { _unsupported_iterable_to_array as _ };\n","import { _ as _unsupported_iterable_to_array } from \"./_unsupported_iterable_to_array.js\";\n\nfunction _create_for_of_iterator_helper_loose(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n\n if (it) return (it = it.call(o)).next.bind(it);\n // Fallback for engines without symbol support\n if (Array.isArray(o) || (it = _unsupported_iterable_to_array(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n\n var i = 0;\n\n return function() {\n if (i >= o.length) return { done: true };\n\n return { done: false, value: o[i++] };\n };\n }\n\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nexport { _create_for_of_iterator_helper_loose as _ };\n","export enum MouseFilter {\n Stop,\n Pass,\n Ignore,\n}\n\nexport enum MouseBehaviorRecursive {\n Inherited,\n Disabled,\n Enabled,\n}\n\nexport enum FocusMode {\n None,\n Click,\n All,\n Accessibility,\n}\n\nexport enum FocusBehaviorRecursive {\n Inherited,\n Disabled,\n Enabled,\n}\n\nexport enum CursorShape {\n Arrow,\n Ibeam,\n PointingHand,\n Cross,\n Wait,\n Busy,\n Drag,\n CanDrop,\n Forbidden,\n Vsize,\n Hsize,\n Bdiagsize,\n Fdiagsize,\n Move,\n Vsplit,\n Hsplit,\n Help,\n}\n\n/** A preset cursor shape or a complete CSS cursor value. */\nexport type CursorStyle = CursorShape | string;\n","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nvar ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n var r, s = 0;\n function next() {\n while (r = env.stack.pop()) {\n try {\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n if (r.dispose) {\n var result = r.dispose.call(r.value);\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n else s |= 1;\n }\n catch (e) {\n fail(e);\n }\n }\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\n });\n }\n return path;\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __esDecorate,\n __runInitializers,\n __propKey,\n __setFunctionName,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n __rewriteRelativeImportExtension,\n};\n","function _extends() {\n _extends = Object.assign || function assign(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) if (Object.prototype.hasOwnProperty.call(source, key)) target[key] = source[key];\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\nexport { _extends as _ };\n","import { EventEmitter, math } from '@galacean/effects';\nimport type {\n Engine,\n EventEmitterListener,\n FontStyle,\n FontWeight,\n Graphics,\n Texture,\n spec,\n} from '@galacean/effects';\n\ntype Color = math.Color;\ntype Vector2 = math.Vector2;\nconst Color = math.Color;\nconst Vector2 = math.Vector2;\n\nexport enum ThemeItemType {\n Color = 'color',\n Constant = 'constant',\n Font = 'font',\n FontSize = 'fontSize',\n Icon = 'icon',\n StyleBox = 'styleBox',\n}\n\nexport interface ThemeFont {\n family: string,\n weight: FontWeight,\n style: FontStyle,\n}\n\nexport interface StyleBoxMargins {\n left: number,\n top: number,\n right: number,\n bottom: number,\n}\n\nexport interface StyleBoxRect {\n x: number,\n y: number,\n width: number,\n height: number,\n}\n\nexport enum PatchStretchMode {\n Stretch,\n Tile,\n TileFit,\n}\n\nexport type ThemeValue = Color | number | ThemeFont | Texture | StyleBox | null;\n\nexport interface ThemeItemDefinition<T extends ThemeValue = ThemeValue> {\n type: ThemeItemType,\n defaultValue: T,\n affectsLayout?: boolean,\n}\n\nexport type ThemeItemDefinitions = Record<string, ThemeItemDefinition>;\n\ntype StyleBoxEvent = { changed: [styleBox: StyleBox] };\ntype ThemeEvent = { changed: [theme: Theme, affectsLayout: boolean] };\ntype RegisteredThemeType = { baseType: string | null, definitions: ThemeItemDefinitions };\n\nconst ZERO_MARGINS: StyleBoxMargins = { left: 0, top: 0, right: 0, bottom: 0 };\n\nfunction cloneMargins (value: StyleBoxMargins): StyleBoxMargins {\n return { left: value.left, top: value.top, right: value.right, bottom: value.bottom };\n}\n\nfunction marginsFromData (data?: spec.StyleBoxMarginsData): StyleBoxMargins {\n return {\n left: data?.left ?? 0,\n top: data?.top ?? 0,\n right: data?.right ?? 0,\n bottom: data?.bottom ?? 0,\n };\n}\n\nfunction finite (name: string, value: number): number {\n if (!Number.isFinite(value)) {\n throw new RangeError(`${name} must be finite.`);\n }\n\n return value;\n}\n\nfunction nonNegative (name: string, value: number): number {\n return Math.max(0, finite(name, value));\n}\n\nfunction cloneFont (value: ThemeFont): ThemeFont {\n return { family: value.family, weight: value.weight, style: value.style };\n}\n\nfunction fontFromData (value: spec.ThemeFontData): ThemeFont {\n return { family: value.family, weight: value.weight ?? 'normal', style: value.style ?? 'normal' };\n}\n\nexport function cloneThemeValue<T extends ThemeValue> (value: T): T {\n if (value instanceof Color) {\n return value.clone() as T;\n }\n if (value && typeof value === 'object' && 'family' in value && 'weight' in value && 'style' in value) {\n return cloneFont(value) as T;\n }\n\n return value;\n}\n\n/** Drawable box resource used for rendering and content measurement. */\nexport abstract class StyleBox {\n private readonly eventEmitter = new EventEmitter<StyleBoxEvent>();\n private contentMargins = cloneMargins(ZERO_MARGINS);\n private readOnly = false;\n\n on (eventName: 'changed', listener: EventEmitterListener<StyleBoxEvent['changed']>): void {\n this.eventEmitter.on(eventName, listener);\n }\n\n off (eventName: 'changed', listener: EventEmitterListener<StyleBoxEvent['changed']>): void {\n this.eventEmitter.off(eventName, listener);\n }\n\n getContentMargins (): StyleBoxMargins { return cloneMargins(this.contentMargins); }\n\n get isReadOnly (): boolean { return this.readOnly; }\n\n /** @internal Makes a native fallback StyleBox immutable. */\n makeReadOnly (): this {\n this.readOnly = true;\n\n return this;\n }\n\n setContentMargins (left: number, top: number, right: number, bottom: number): void {\n this.assertMutable();\n const next = {\n left: nonNegative('StyleBox left content margin', left),\n top: nonNegative('StyleBox top content margin', top),\n right: nonNegative('StyleBox right content margin', right),\n bottom: nonNegative('StyleBox bottom content margin', bottom),\n };\n\n if (Object.keys(next).some(key => next[key as keyof StyleBoxMargins] !== this.contentMargins[key as keyof StyleBoxMargins])) {\n this.contentMargins = next;\n this.notifyChanged();\n }\n }\n\n getMinimumSize (): Vector2 {\n return new Vector2(\n this.contentMargins.left + this.contentMargins.right,\n this.contentMargins.top + this.contentMargins.bottom,\n );\n }\n\n abstract draw (graphics: Graphics, rect: StyleBoxRect): void;\n\n protected notifyChanged (): void { this.eventEmitter.emit('changed', this); }\n protected assertMutable (): void {\n if (this.readOnly) {throw new Error('Native fallback StyleBoxes are read-only.');}\n }\n}\n\nexport class StyleBoxEmpty extends StyleBox {\n static readonly shared = new StyleBoxEmpty().makeReadOnly();\n override draw (): void {}\n}\n\nexport class StyleBoxFlat extends StyleBox {\n private backgroundColor = Color.CLEAR.clone();\n private borderColor = Color.CLEAR.clone();\n private borderWidths = cloneMargins(ZERO_MARGINS);\n private cornerRadii = cloneMargins(ZERO_MARGINS);\n\n getBackgroundColor (): Color { return this.backgroundColor.clone(); }\n getBorderColor (): Color { return this.borderColor.clone(); }\n getBorderWidths (): StyleBoxMargins { return cloneMargins(this.borderWidths); }\n getCornerRadii (): StyleBoxMargins { return cloneMargins(this.cornerRadii); }\n\n setBackgroundColor (value: Color): void {\n this.assertMutable();\n if (!this.backgroundColor.equals(value)) {\n this.backgroundColor.copyFrom(value);\n this.notifyChanged();\n }\n }\n\n setBorderColor (value: Color): void {\n this.assertMutable();\n if (!this.borderColor.equals(value)) {\n this.borderColor.copyFrom(value);\n this.notifyChanged();\n }\n }\n\n setBorderWidths (left: number, top: number, right: number, bottom: number): void {\n this.assertMutable();\n const next = {\n left: nonNegative('StyleBoxFlat left border width', left),\n top: nonNegative('StyleBoxFlat top border width', top),\n right: nonNegative('StyleBoxFlat right border width', right),\n bottom: nonNegative('StyleBoxFlat bottom border width', bottom),\n };\n\n if (Object.keys(next).some(key => next[key as keyof StyleBoxMargins] !== this.borderWidths[key as keyof StyleBoxMargins])) {\n this.borderWidths = next;\n this.notifyChanged();\n }\n }\n\n setCornerRadii (topLeft: number, topRight: number, bottomRight: number, bottomLeft: number): void {\n this.assertMutable();\n const next = {\n left: nonNegative('StyleBoxFlat top-left corner radius', topLeft),\n top: nonNegative('StyleBoxFlat top-right corner radius', topRight),\n right: nonNegative('StyleBoxFlat bottom-right corner radius', bottomRight),\n bottom: nonNegative('StyleBoxFlat bottom-left corner radius', bottomLeft),\n };\n\n if (Object.keys(next).some(key => next[key as keyof StyleBoxMargins] !== this.cornerRadii[key as keyof StyleBoxMargins])) {\n this.cornerRadii = next;\n this.notifyChanged();\n }\n }\n\n override draw (graphics: Graphics, rect: StyleBoxRect): void {\n if (rect.width <= 0 || rect.height <= 0) {\n return;\n }\n if (this.hasRoundedCorners()) {\n this.drawRounded(graphics, rect);\n\n return;\n }\n graphics.fillRectangle(rect.x, rect.y, rect.width, rect.height, this.backgroundColor);\n const border = this.borderWidths;\n\n if (border.top > 0) {graphics.fillRectangle(rect.x, rect.y, rect.width, Math.min(border.top, rect.height), this.borderColor);}\n if (border.bottom > 0) {\n const height = Math.min(border.bottom, rect.height);\n\n graphics.fillRectangle(rect.x, rect.y + rect.height - height, rect.width, height, this.borderColor);\n }\n if (border.left > 0) {graphics.fillRectangle(rect.x, rect.y, Math.min(border.left, rect.width), rect.height, this.borderColor);}\n if (border.right > 0) {\n const width = Math.min(border.right, rect.width);\n\n graphics.fillRectangle(rect.x + rect.width - width, rect.y, width, rect.height, this.borderColor);\n }\n }\n\n private hasRoundedCorners (): boolean {\n const radii = this.cornerRadii;\n\n return radii.left > 0 || radii.top > 0 || radii.right > 0 || radii.bottom > 0;\n }\n\n private drawRounded (graphics: Graphics, rect: StyleBoxRect): void {\n const border = adaptBorderWidths(this.borderWidths, rect.width, rect.height);\n const radii = adaptCornerRadii(this.cornerRadii, border, rect.width, rect.height);\n const hasBorder = border.left > 0 || border.top > 0 || border.right > 0 || border.bottom > 0;\n\n if (!hasBorder) {\n drawRoundedFill(graphics, rect, radii, this.backgroundColor);\n\n return;\n }\n const inner = {\n x: rect.x + border.left,\n y: rect.y + border.top,\n width: Math.max(0, rect.width - border.left - border.right),\n height: Math.max(0, rect.height - border.top - border.bottom),\n };\n\n if (inner.width <= 0 || inner.height <= 0) {\n drawRoundedFill(graphics, rect, radii, this.borderColor);\n\n return;\n }\n const innerRadii = {\n left: Math.max(0, radii.left - Math.min(border.left, border.top)),\n top: Math.max(0, radii.top - Math.min(border.right, border.top)),\n right: Math.max(0, radii.right - Math.min(border.right, border.bottom)),\n bottom: Math.max(0, radii.bottom - Math.min(border.left, border.bottom)),\n };\n\n drawRoundedRing(graphics, rect, radii, inner, innerRadii, this.borderColor);\n drawRoundedFill(graphics, inner, innerRadii, this.backgroundColor);\n }\n}\n\nfunction adaptBorderWidths (border: StyleBoxMargins, width: number, height: number): StyleBoxMargins {\n const adapted = createInfiniteMargins();\n\n adaptMarginPair('top', 'bottom', adapted, border, height, height, height);\n adaptMarginPair('left', 'right', adapted, border, width, width, width);\n\n return adapted;\n}\n\nfunction adaptCornerRadii (\n radii: StyleBoxMargins,\n border: StyleBoxMargins,\n width: number,\n height: number,\n): StyleBoxMargins {\n const adapted = createInfiniteMargins();\n\n adaptMarginPair('top', 'right', adapted, radii, height, height - border.bottom, height - border.top);\n adaptMarginPair('left', 'bottom', adapted, radii, height, height - border.bottom, height - border.top);\n adaptMarginPair('left', 'top', adapted, radii, width, width - border.right, width - border.left);\n adaptMarginPair('bottom', 'right', adapted, radii, width, width - border.right, width - border.left);\n\n return adapted;\n}\n\nfunction adaptMarginPair (\n first: keyof StyleBoxMargins,\n second: keyof StyleBoxMargins,\n adapted: StyleBoxMargins,\n source: StyleBoxMargins,\n available: number,\n firstMaximum: number,\n secondMaximum: number,\n): void {\n const sum = source[first] + source[second];\n const factor = sum > 0 ? Math.min(1, available / sum) : 1;\n\n adapted[first] = Math.min(source[first] * factor, firstMaximum, adapted[first]);\n adapted[second] = Math.min(source[second] * factor, secondMaximum, adapted[second]);\n}\n\nfunction createInfiniteMargins (): StyleBoxMargins {\n return {\n left: Number.POSITIVE_INFINITY,\n top: Number.POSITIVE_INFINITY,\n right: Number.POSITIVE_INFINITY,\n bottom: Number.POSITIVE_INFINITY,\n };\n}\n\nfunction drawRoundedFill (\n graphics: Graphics,\n rect: StyleBoxRect,\n radii: StyleBoxMargins,\n color: Color,\n): void {\n const points = getRoundedPoints(rect, radii);\n const centerX = rect.x + rect.width * 0.5;\n const centerY = rect.y + rect.height * 0.5;\n\n for (let index = 0; index < points.length; index++) {\n const current = points[index];\n const next = points[(index + 1) % points.length];\n\n graphics.fillTriangle(centerX, centerY, current[0], current[1], next[0], next[1], color);\n }\n}\n\nfunction drawRoundedRing (\n graphics: Graphics,\n outerRect: StyleBoxRect,\n outerRadii: StyleBoxMargins,\n innerRect: StyleBoxRect,\n innerRadii: StyleBoxMargins,\n color: Color,\n): void {\n const outer = getRoundedPoints(outerRect, outerRadii);\n const inner = getRoundedPoints(innerRect, innerRadii);\n\n for (let index = 0; index < outer.length; index++) {\n const next = (index + 1) % outer.length;\n\n graphics.fillTriangle(\n outer[index][0], outer[index][1], outer[next][0], outer[next][1],\n inner[index][0], inner[index][1], color,\n );\n graphics.fillTriangle(\n outer[next][0], outer[next][1], inner[next][0], inner[next][1],\n inner[index][0], inner[index][1], color,\n );\n }\n}\n\nfunction getRoundedPoints (rect: StyleBoxRect, radii: StyleBoxMargins): Array<[number, number]> {\n const points: Array<[number, number]> = [];\n const segments = 5;\n const corners: Array<[number, number, number, number]> = [\n [rect.x + radii.left, rect.y + radii.left, radii.left, Math.PI],\n [rect.x + rect.width - radii.top, rect.y + radii.top, radii.top, Math.PI * 1.5],\n [rect.x + rect.width - radii.right, rect.y + rect.height - radii.right, radii.right, 0],\n [rect.x + radii.bottom, rect.y + rect.height - radii.bottom, radii.bottom, Math.PI * 0.5],\n ];\n\n for (const [cx, cy, radius, start] of corners) {\n for (let index = 0; index <= segments; index++) {\n const angle = start + index / segments * Math.PI * 0.5;\n\n points.push([cx + Math.cos(angle) * radius, cy + Math.sin(angle) * radius]);\n }\n }\n\n return points;\n}\n\nexport class StyleBoxTexture extends StyleBox {\n private _texture: Texture | null = null;\n private sourceRect: StyleBoxRect | null = null;\n private patchMargins = cloneMargins(ZERO_MARGINS);\n private tint = Color.WHITE.clone();\n private _horizontalAxisStretchMode = PatchStretchMode.Stretch;\n private _verticalAxisStretchMode = PatchStretchMode.Stretch;\n private _drawCenter = true;\n\n get texture (): Texture | null { return this._texture; }\n set texture (value: Texture | null) {\n this.assertMutable();\n if (this._texture !== value) {\n this._texture = value;\n this.notifyChanged();\n }\n }\n\n get horizontalAxisStretchMode (): PatchStretchMode { return this._horizontalAxisStretchMode; }\n set horizontalAxisStretchMode (value: PatchStretchMode) {\n this.assertMutable();\n if (this._horizontalAxisStretchMode !== value) {\n this._horizontalAxisStretchMode = value;\n this.notifyChanged();\n }\n }\n\n get verticalAxisStretchMode (): PatchStretchMode { return this._verticalAxisStretchMode; }\n set verticalAxisStretchMode (value: PatchStretchMode) {\n this.assertMutable();\n if (this._verticalAxisStretchMode !== value) {\n this._verticalAxisStretchMode = value;\n this.notifyChanged();\n }\n }\n\n get drawCenter (): boolean { return this._drawCenter; }\n set drawCenter (value: boolean) {\n this.assertMutable();\n if (this._drawCenter !== value) {\n this._drawCenter = value;\n this.notifyChanged();\n }\n }\n\n getSourceRect (): StyleBoxRect | null { return this.sourceRect ? { ...this.sourceRect } : null; }\n getPatchMargins (): StyleBoxMargins { return cloneMargins(this.patchMargins); }\n getTint (): Color { return this.tint.clone(); }\n\n setSourceRect (x: number, y: number, width: number, height: number): void {\n this.assertMutable();\n this.sourceRect = {\n x: finite('StyleBoxTexture source x', x),\n y: finite('StyleBoxTexture source y', y),\n width: nonNegative('StyleBoxTexture source width', width),\n height: nonNegative('StyleBoxTexture source height', height),\n };\n this.notifyChanged();\n }\n\n clearSourceRect (): void {\n this.assertMutable();\n if (this.sourceRect) {\n this.sourceRect = null;\n this.notifyChanged();\n }\n }\n\n setPatchMargins (left: number, top: number, right: number, bottom: number): void {\n this.assertMutable();\n this.patchMargins = {\n left: nonNegative('StyleBoxTexture left patch margin', left),\n top: nonNegative('StyleBoxTexture top patch margin', top),\n right: nonNegative('StyleBoxTexture right patch margin', right),\n bottom: nonNegative('StyleBoxTexture bottom patch margin', bottom),\n };\n this.notifyChanged();\n }\n\n setTint (value: Color): void {\n this.assertMutable();\n if (!this.tint.equals(value)) {\n this.tint.copyFrom(value);\n this.notifyChanged();\n }\n }\n\n override draw (graphics: Graphics, rect: StyleBoxRect): void {\n const texture = this.texture;\n\n if (!texture || rect.width <= 0 || rect.height <= 0) {return;}\n const source = this.sourceRect ?? { x: 0, y: 0, width: texture.width, height: texture.height };\n\n graphics.drawNinePatch(rect.x, rect.y, rect.width, rect.height, texture, {\n sourceX: source.x,\n sourceY: source.y,\n sourceWidth: source.width,\n sourceHeight: source.height,\n marginLeft: this.patchMargins.left,\n marginTop: this.patchMargins.top,\n marginRight: this.patchMargins.right,\n marginBottom: this.patchMargins.bottom,\n horizontalMode: this.horizontalAxisStretchMode,\n verticalMode: this.verticalAxisStretchMode,\n drawCenter: this.drawCenter,\n }, this.tint);\n }\n}\n\n/** Registry for stable control type inheritance and immutable native defaults. */\nexport class ThemeRegistry {\n private static readonly types = new Map<string, RegisteredThemeType>();\n\n static registerType (type: string, baseType: string | null, definitions: ThemeItemDefinitions = {}): void {\n if (!type) {throw new Error('Theme type names cannot be empty.');}\n if (baseType === type) {throw new Error(`Theme type ${type} cannot inherit itself.`);}\n if (baseType && !this.types.has(baseType)) {throw new Error(`Unknown base theme type: ${baseType}.`);}\n if (baseType && this.getTypeChain(baseType).includes(type)) {\n throw new Error(`Theme type inheritance cycle detected at ${type}.`);\n }\n const previous = this.types.get(type);\n\n if (previous && previous.baseType !== baseType) {\n throw new Error(`Theme type ${type} is already registered with base ${previous.baseType ?? '<none>'}.`);\n }\n const storedDefinitions: ThemeItemDefinitions = { ...(previous?.definitions ?? {}) };\n\n for (const name of Object.keys(definitions)) {\n if (storedDefinitions[name]) {\n throw new Error(`Theme item ${type}.${name} is already registered.`);\n }\n const definition = definitions[name];\n const defaultValue = cloneThemeValue(definition.defaultValue);\n\n if (defaultValue instanceof StyleBox) {defaultValue.makeReadOnly();}\n storedDefinitions[name] = { ...definition, defaultValue };\n }\n this.types.set(type, { baseType, definitions: storedDefinitions });\n }\n\n static hasType (type: string): boolean { return this.types.has(type); }\n\n static getTypeChain (type: string): string[] {\n const result: string[] = [];\n const visited = new Set<string>();\n let current: string | null = type;\n\n while (current && !visited.has(current)) {\n result.push(current);\n visited.add(current);\n current = this.types.get(current)?.baseType ?? null;\n }\n\n return result;\n }\n\n static getDefault (type: string, itemType: ThemeItemType, name: string): ThemeValue | undefined {\n const definition = this.types.get(type)?.definitions[name];\n\n return definition?.type === itemType ? cloneThemeValue(definition.defaultValue) : undefined;\n }\n\n static getItemDefinition (type: string, itemType: ThemeItemType, name: string): ThemeItemDefinition | undefined {\n for (const dependency of this.getTypeChain(type)) {\n const definition = this.types.get(dependency)?.definitions[name];\n\n if (definition?.type === itemType) {return definition;}\n }\n\n return undefined;\n }\n\n static affectsLayout (type: string, itemType: ThemeItemType, name: string): boolean {\n const definition = this.getItemDefinition(type, itemType, name);\n\n if (definition) {return definition.affectsLayout ?? false;}\n\n return itemType === ThemeItemType.Constant\n || itemType === ThemeItemType.Font\n || itemType === ThemeItemType.FontSize\n || itemType === ThemeItemType.StyleBox;\n }\n\n static getItemDefinitions (type: string, includeInherited = true): ThemeItemDefinitions {\n const result: ThemeItemDefinitions = {};\n const chain = includeInherited ? this.getTypeChain(type).reverse() : [type];\n\n for (const dependency of chain) {\n const definitions = this.types.get(dependency)?.definitions ?? {};\n\n for (const name of Object.keys(definitions)) {\n const definition = definitions[name];\n\n result[name] = { ...definition, defaultValue: cloneThemeValue(definition.defaultValue) };\n }\n }\n\n return result;\n }\n}\n\nexport class Theme {\n private readonly eventEmitter = new EventEmitter<ThemeEvent>();\n private readonly values = new Map<string, Map<ThemeItemType, Map<string, ThemeValue>>>();\n private readonly variations = new Map<string, string>();\n private readonly styleBoxReferences = new Map<StyleBox, number>();\n private batchDepth = 0;\n private changePending = false;\n private layoutChangePending = false;\n private readonly styleBoxChanged = () => this.notifyChanged(true);\n\n on (eventName: 'changed', listener: EventEmitterListener<ThemeEvent['changed']>): void {\n this.eventEmitter.on(eventName, listener);\n }\n\n off (eventName: 'changed', listener: EventEmitterListener<ThemeEvent['changed']>): void {\n this.eventEmitter.off(eventName, listener);\n }\n\n batch<T> (callback: () => T): T {\n this.batchDepth++;\n try {\n return callback();\n } finally {\n this.batchDepth--;\n if (this.batchDepth === 0 && this.changePending) {\n this.changePending = false;\n const affectsLayout = this.layoutChangePending;\n\n this.layoutChangePending = false;\n this.eventEmitter.emit('changed', this, affectsLayout);\n }\n }\n }\n\n setTypeVariation (variation: string, baseType: string): void {\n if (!variation || !baseType || variation === baseType) {throw new Error('Theme variations require distinct non-empty names.');}\n if (ThemeRegistry.hasType(variation)) {\n throw new Error(`Theme variation ${variation} conflicts with a registered control type.`);\n }\n if (!ThemeRegistry.hasType(baseType) && !this.variations.has(baseType)) {\n throw new Error(`Unknown theme variation base type: ${baseType}.`);\n }\n let current: string | undefined = baseType;\n\n while (current) {\n if (current === variation) {throw new Error(`Theme variation cycle detected at ${variation}.`);}\n current = this.variations.get(current);\n }\n if (this.variations.get(variation) !== baseType) {\n this.variations.set(variation, baseType);\n this.notifyChanged(true);\n }\n }\n\n clearTypeVariation (variation: string): void {\n for (const [dependent, base] of this.variations) {\n if (dependent !== variation && base === variation) {\n throw new Error(`Theme variation ${variation} is still used by ${dependent}.`);\n }\n }\n if (this.variations.delete(variation)) {this.notifyChanged(true);}\n }\n\n hasTypeVariation (variation: string): boolean { return this.variations.has(variation); }\n getTypeVariationBase (variation: string): string | undefined { return this.variations.get(variation); }\n\n getTypeDependencies (variation: string): string[] {\n const result: string[] = [];\n const visited = new Set<string>();\n let current = variation;\n\n while (!visited.has(current)) {\n result.push(current);\n visited.add(current);\n const base = this.variations.get(current);\n\n if (!base) {\n result.push(...ThemeRegistry.getTypeChain(current).slice(1));\n\n return result;\n }\n current = base;\n }\n\n throw new Error(`Theme variation cycle detected at ${variation}.`);\n }\n\n setColor (type: string, name: string, value: Color): void { this.setItem(type, ThemeItemType.Color, name, value); }\n getColor (type: string, name: string): Color | undefined { return this.getItem(type, ThemeItemType.Color, name) as Color | undefined; }\n hasColor (type: string, name: string): boolean { return this.hasItem(type, ThemeItemType.Color, name); }\n clearColor (type: string, name: string): void { this.clearItem(type, ThemeItemType.Color, name); }\n setConstant (type: string, name: string, value: number): void { this.setItem(type, ThemeItemType.Constant, name, finite(name, value)); }\n getConstant (type: string, name: string): number | undefined { return this.getItem(type, ThemeItemType.Constant, name) as number | undefined; }\n hasConstant (type: string, name: string): boolean { return this.hasItem(type, ThemeItemType.Constant, name); }\n clearConstant (type: string, name: string): void { this.clearItem(type, ThemeItemType.Constant, name); }\n setFont (type: string, name: string, value: ThemeFont): void { this.setItem(type, ThemeItemType.Font, name, value); }\n getFont (type: string, name: string): ThemeFont | undefined { return this.getItem(type, ThemeItemType.Font, name) as ThemeFont | undefined; }\n hasFont (type: string, name: string): boolean { return this.hasItem(type, ThemeItemType.Font, name); }\n clearFont (type: string, name: string): void { this.clearItem(type, ThemeItemType.Font, name); }\n setFontSize (type: string, name: string, value: number): void {\n if (!Number.isFinite(value) || value <= 0) {throw new RangeError(`${name} must be a positive finite font size.`);}\n this.setItem(type, ThemeItemType.FontSize, name, value);\n }\n getFontSize (type: string, name: string): number | undefined { return this.getItem(type, ThemeItemType.FontSize, name) as number | undefined; }\n hasFontSize (type: string, name: string): boolean { return this.hasItem(type, ThemeItemType.FontSize, name); }\n clearFontSize (type: string, name: string): void { this.clearItem(type, ThemeItemType.FontSize, name); }\n setIcon (type: string, name: string, value: Texture | null): void { this.setItem(type, ThemeItemType.Icon, name, value); }\n getIcon (type: string, name: string): Texture | null | undefined { return this.getItem(type, ThemeItemType.Icon, name) as Texture | null | undefined; }\n hasIcon (type: string, name: string): boolean { return this.hasItem(type, ThemeItemType.Icon, name); }\n clearIcon (type: string, name: string): void { this.clearItem(type, ThemeItemType.Icon, name); }\n setStyleBox (type: string, name: string, value: StyleBox): void { this.setItem(type, ThemeItemType.StyleBox, name, value); }\n getStyleBox (type: string, name: string): StyleBox | undefined { return this.getItem(type, ThemeItemType.StyleBox, name) as StyleBox | undefined; }\n hasStyleBox (type: string, name: string): boolean { return this.hasItem(type, ThemeItemType.StyleBox, name); }\n clearStyleBox (type: string, name: string): void { this.clearItem(type, ThemeItemType.StyleBox, name); }\n\n hasItem (type: string, itemType: ThemeItemType, name: string): boolean {\n return this.values.get(type)?.get(itemType)?.has(name) ?? false;\n }\n\n getItem (type: string, itemType: ThemeItemType, name: string): ThemeValue | undefined {\n const value = this.values.get(type)?.get(itemType)?.get(name);\n\n return value === undefined ? undefined : cloneThemeValue(value);\n }\n\n clearItem (type: string, itemType: ThemeItemType, name: string): void {\n const categories = this.values.get(type);\n const items = categories?.get(itemType);\n const previous = items?.get(name);\n\n if (!items?.delete(name)) {return;}\n if (items.size === 0) {categories?.delete(itemType);}\n if (categories?.size === 0) {this.values.delete(type);}\n if (previous instanceof StyleBox) {this.releaseStyleBox(previous);}\n this.notifyChanged(this.affectsLayout(type, itemType, name));\n }\n\n clear (): void {\n if (this.values.size === 0 && this.variations.size === 0) {return;}\n for (const styleBox of this.styleBoxReferences.keys()) {\n styleBox.off('changed', this.styleBoxChanged);\n }\n this.styleBoxReferences.clear();\n this.values.clear();\n this.variations.clear();\n this.notifyChanged(true);\n }\n\n static fromData (engine: Engine, data: spec.ThemeData): Theme {\n const theme = new Theme();\n\n theme.batch(() => {\n const variations = data.variations ?? {};\n const remaining = new Map<string, string>();\n\n for (const variation of Object.keys(variations)) {remaining.set(variation, variations[variation]);}\n\n while (remaining.size > 0) {\n let progressed = false;\n\n for (const [variation, base] of remaining) {\n if (ThemeRegistry.hasType(base) || theme.hasTypeVariation(base)) {\n theme.setTypeVariation(variation, base);\n remaining.delete(variation);\n progressed = true;\n }\n }\n if (!progressed) {throw new Error('Theme data contains an unknown or cyclic variation.');}\n }\n for (const type of Object.keys(data.types)) {theme.setCollectionFromData(engine, type, data.types[type]);}\n });\n\n return theme;\n }\n\n private setCollectionFromData (engine: Engine, type: string, data: spec.ThemeItemCollectionData): void {\n const colors = data.colors ?? {};\n const constants = data.constants ?? {};\n const fonts = data.fonts ?? {};\n const fontSizes = data.fontSizes ?? {};\n const icons = data.icons ?? {};\n const styleBoxes = data.styleBoxes ?? {};\n\n for (const name of Object.keys(colors)) {\n const value = colors[name];\n\n this.setColor(type, name, new Color(value.r, value.g, value.b, value.a));\n }\n for (const name of Object.keys(constants)) {this.setConstant(type, name, constants[name]);}\n for (const name of Object.keys(fonts)) {this.setFont(type, name, fontFromData(fonts[name]));}\n for (const name of Object.keys(fontSizes)) {this.setFontSize(type, name, fontSizes[name]);}\n for (const name of Object.keys(icons)) {\n const value = icons[name];\n\n this.setIcon(type, name, value ? engine.findObject<Texture>(value) : null);\n }\n for (const name of Object.keys(styleBoxes)) {this.setStyleBox(type, name, styleBoxFromData(engine, styleBoxes[name]));}\n }\n\n private setItem (type: string, itemType: ThemeItemType, name: string, value: ThemeValue): void {\n if (!type || !name) {throw new Error('Theme type and item names cannot be empty.');}\n let categories = this.values.get(type);\n\n if (!categories) {this.values.set(type, categories = new Map());}\n let items = categories.get(itemType);\n\n if (!items) {categories.set(itemType, items = new Map());}\n const previous = items.get(name);\n\n if (previous instanceof StyleBox) {this.releaseStyleBox(previous);}\n const stored = cloneThemeValue(value);\n\n items.set(name, stored);\n if (stored instanceof StyleBox) {this.retainStyleBox(stored);}\n this.notifyChanged(this.affectsLayout(type, itemType, name));\n }\n\n private retainStyleBox (styleBox: StyleBox): void {\n const count = this.styleBoxReferences.get(styleBox) ?? 0;\n\n if (count === 0) {styleBox.on('changed', this.styleBoxChanged);}\n this.styleBoxReferences.set(styleBox, count + 1);\n }\n\n private releaseStyleBox (styleBox: StyleBox): void {\n const count = this.styleBoxReferences.get(styleBox) ?? 0;\n\n if (count <= 1) {\n styleBox.off('changed', this.styleBoxChanged);\n this.styleBoxReferences.delete(styleBox);\n } else {this.styleBoxReferences.set(styleBox, count - 1);}\n }\n\n private notifyChanged (affectsLayout: boolean): void {\n if (this.batchDepth > 0) {\n this.changePending = true;\n this.layoutChangePending ||= affectsLayout;\n } else {this.eventEmitter.emit('changed', this, affectsLayout);}\n }\n\n private affectsLayout (type: string, itemType: ThemeItemType, name: string): boolean {\n for (const dependency of this.getTypeDependencies(type)) {\n const definition = ThemeRegistry.getItemDefinition(dependency, itemType, name);\n\n if (definition) {return definition.affectsLayout ?? false;}\n }\n\n return itemType === ThemeItemType.Constant\n || itemType === ThemeItemType.Font\n || itemType === ThemeItemType.FontSize\n || itemType === ThemeItemType.StyleBox;\n }\n}\n\nexport function styleBoxFromData (engine: Engine, data: spec.StyleBoxData): StyleBox {\n let styleBox: StyleBox;\n\n if (data.type === 'flat') {\n const flat = new StyleBoxFlat();\n\n if (data.backgroundColor) {flat.setBackgroundColor(new Color(data.backgroundColor.r, data.backgroundColor.g, data.backgroundColor.b, data.backgroundColor.a));}\n if (data.borderColor) {flat.setBorderColor(new Color(data.borderColor.r, data.borderColor.g, data.borderColor.b, data.borderColor.a));}\n const border = marginsFromData(data.borderWidths);\n\n flat.setBorderWidths(border.left, border.top, border.right, border.bottom);\n const corners = marginsFromData(data.cornerRadii);\n\n flat.setCornerRadii(corners.left, corners.top, corners.right, corners.bottom);\n styleBox = flat;\n } else if (data.type === 'texture') {\n const texture = new StyleBoxTexture();\n\n texture.texture = data.texture ? engine.findObject<Texture>(data.texture) : null;\n if (data.sourceRect) {texture.setSourceRect(data.sourceRect.position[0], data.sourceRect.position[1], data.sourceRect.size[0], data.sourceRect.size[1]);}\n const patch = marginsFromData(data.patchMargins);\n\n texture.setPatchMargins(patch.left, patch.top, patch.right, patch.bottom);\n texture.horizontalAxisStretchMode = data.horizontalAxisStretchMode ?? PatchStretchMode.Stretch;\n texture.verticalAxisStretchMode = data.verticalAxisStretchMode ?? PatchStretchMode.Stretch;\n texture.drawCenter = data.drawCenter ?? true;\n if (data.tint) {texture.setTint(new Color(data.tint.r, data.tint.g, data.tint.b, data.tint.a));}\n styleBox = texture;\n } else {styleBox = new StyleBoxEmpty();}\n const content = marginsFromData(data.contentMargins);\n\n styleBox.setContentMargins(content.left, content.top, content.right, content.bottom);\n\n return styleBox;\n}\n\nexport const themeFallbacks = {\n color: Color.CLEAR.clone(),\n constant: 0,\n font: { family: 'sans-serif', weight: 'normal', style: 'normal' } as ThemeFont,\n fontSize: 14,\n icon: null as Texture | null,\n styleBox: StyleBoxEmpty.shared,\n};\n","import { math } from '@galacean/effects';\nimport type {\n Engine,\n EventEmitterListener,\n FontStyle,\n FontWeight,\n InputEventKey,\n InputEventMouseButton,\n InputEventMouseMotion,\n InputEventScreenDrag,\n InputEventScreenTouch,\n NinePatchDrawOptions,\n TextMeasurement,\n Texture,\n TextureRegion,\n VFXItem,\n spec,\n} from '@galacean/effects';\nimport {\n effectsClass,\n EventEmitter,\n} from '@galacean/effects';\nimport type { UIControl } from '../components/ui-control';\nimport type { CursorStyle } from './enums';\nimport {\n CursorShape,\n FocusBehaviorRecursive,\n FocusMode,\n MouseBehaviorRecursive,\n MouseFilter,\n} from './enums';\nimport {\n cloneThemeValue,\n StyleBox,\n styleBoxFromData,\n themeFallbacks,\n ThemeItemType,\n ThemeRegistry,\n} from './theme';\nimport type { Theme, ThemeFont, ThemeValue } from './theme';\n\ntype Color = math.Color;\ntype Matrix3 = math.Matrix3;\ntype Vector2 = math.Vector2;\nconst Color = math.Color;\nconst Matrix3 = math.Matrix3;\nconst Vector2 = math.Vector2;\n\nexport type Rect = {\n position: Vector2,\n size: Vector2,\n};\n\n/** Bit flags that describe how a Control uses space assigned by a Container. */\nexport enum SizeFlags {\n ShrinkBegin = 0,\n Fill = 1,\n Expand = 2,\n ShrinkCenter = 4,\n ShrinkEnd = 8,\n ExpandFill = Fill | Expand,\n}\n\n/** Direction in which a Control grows when a minimum size makes its requested rectangle larger. */\nexport enum GrowDirection {\n Begin,\n End,\n Both,\n}\n\nexport type LayoutPreset =\n | 'topLeft' | 'topRight' | 'bottomLeft' | 'bottomRight'\n | 'centerLeft' | 'centerTop' | 'centerRight' | 'centerBottom'\n | 'center'\n | 'leftWide' | 'topWide' | 'rightWide' | 'bottomWide'\n | 'vcenterWide' | 'hcenterWide'\n | 'fullRect';\n\nexport type ControlEvent = {\n locationChanged: [control: Control],\n sizeChanged: [control: Control],\n parentChanged: [control: Control],\n minimumSizeChanged: [control: Control],\n desiredSizeChanged: [control: Control],\n maximumSizeChanged: [control: Control],\n sizeFlagsChanged: [control: Control],\n visibilityChanged: [control: Control],\n enabledChanged: [control: Control],\n themeChanged: [control: Control, affectsLayout: boolean],\n};\n\ntype ThemeCacheEntry = { found: boolean, value: ThemeValue };\n\nconst enum MeasurementChange {\n Minimum = 1,\n Desired = 2,\n Maximum = 4,\n All = Minimum | Desired | Maximum,\n}\n\nexport type RootControlEvent = ControlEvent & {\n guiFocusChanged: [control: Control | null],\n};\n\nfunction normalizeMeasuredMinimum (value: Vector2): Vector2 {\n if (!Number.isFinite(value.x) || !Number.isFinite(value.y)) {\n throw new RangeError('Control minimum and desired sizes must be finite.');\n }\n\n return new Vector2(Math.max(0, value.x), Math.max(0, value.y));\n}\n\nfunction normalizeMeasuredMaximum (value: Vector2): Vector2 {\n if (!Number.isFinite(value.x) || !Number.isFinite(value.y)) {\n throw new RangeError('Control maximum sizes must be finite.');\n }\n\n return new Vector2(value.x < 0 ? -1 : value.x, value.y < 0 ? -1 : value.y);\n}\n\nfunction combineMaximum (measured: number, custom: number): number {\n if (measured < 0) {\n return custom;\n }\n if (custom < 0) {\n return measured;\n }\n\n return Math.min(measured, custom);\n}\n\nfunction clampToMaximum (value: number, maximum: number): number {\n return maximum < 0 ? value : Math.min(value, maximum);\n}\n\nconst ANCHOR_PRESET_TABLE: Record<LayoutPreset, [number, number, number, number]> = {\n topLeft: [0, 0, 0, 0],\n topRight: [1, 0, 1, 0],\n bottomLeft: [0, 1, 0, 1],\n bottomRight: [1, 1, 1, 1],\n centerLeft: [0, 0.5, 0, 0.5],\n centerTop: [0.5, 0, 0.5, 0],\n centerRight: [1, 0.5, 1, 0.5],\n centerBottom: [0.5, 1, 0.5, 1],\n center: [0.5, 0.5, 0.5, 0.5],\n leftWide: [0, 0, 0, 1],\n topWide: [0, 0, 1, 0],\n rightWide: [1, 0, 1, 1],\n bottomWide: [0, 1, 1, 1],\n vcenterWide: [0.5, 0, 0.5, 1],\n hcenterWide: [0, 0.5, 1, 0.5],\n fullRect: [0, 0, 1, 1],\n};\n\n/**\n * A drawable GUI object. Controls form a tree independent from the VFXItem\n * scene tree. UIControl is the bridge between both trees.\n */\n@effectsClass('Control')\nexport class Control {\n static readonly themeType: string = 'Control';\n readonly engine: Engine;\n /** Scene-tree bridge that owns this GUI object, if any. */\n owner: UIControl | null = null;\n readonly children: Control[] = [];\n readonly position = new Vector2();\n readonly size = new Vector2(1, 1);\n readonly anchorMin = new Vector2();\n readonly anchorMax = new Vector2();\n readonly offsetMin = new Vector2();\n readonly offsetMax = new Vector2(1, 1);\n readonly pivot = new Vector2(0.5, 0.5);\n readonly scale = new Vector2(1, 1);\n readonly shear = new Vector2();\n mouseForcePassScrollEvents = true;\n clipContents = false;\n\n private _parent: Control | null = null;\n private _visible = true;\n private _enabled = true;\n private _mouseFilter = MouseFilter.Stop;\n private _mouseBehaviorRecursive = MouseBehaviorRecursive.Inherited;\n private _focusMode = FocusMode.None;\n private _focusBehaviorRecursive = FocusBehaviorRecursive.Inherited;\n private _defaultCursorShape: CursorStyle = CursorShape.Arrow;\n private _rotation = 0;\n private transformDirty = true;\n private readonly cachedTransform = new Matrix3();\n private readonly eventEmitter = new EventEmitter<ControlEvent>();\n private disposed = false;\n private readonly customMinimumSize = new Vector2();\n private readonly customMaximumSize = new Vector2(-1, -1);\n private minimumSizeCache: Vector2 | null = null;\n private desiredSizeCache: Vector2 | null = null;\n private maximumSizeCache: Vector2 | null = null;\n private pendingMeasurementChanges = 0;\n private _horizontalSizeFlags = SizeFlags.Fill;\n private _verticalSizeFlags = SizeFlags.Fill;\n private _stretchRatio = 1;\n private _horizontalGrowDirection = GrowDirection.End;\n private _verticalGrowDirection = GrowDirection.End;\n private _theme: Theme | null = null;\n private themeOwnerNode: Control | null = null;\n private _themeTypeVariation = '';\n private readonly themeOverrides = new Map<ThemeItemType, Map<string, ThemeValue>>();\n private readonly themeCache = new Map<string, ThemeCacheEntry>();\n private readonly overrideStyleBoxReferences = new Map<StyleBox, number>();\n private readonly attachedThemeChanged = (_theme: Theme, affectsLayout: boolean) => {\n this.propagateThemeChanged(affectsLayout);\n };\n private readonly overrideStyleBoxChanged = () => this.propagateThemeChanged(true, false);\n\n constructor (engine: Engine) {\n this.engine = engine;\n }\n\n get parent (): Control | null {\n return this._parent;\n }\n\n set parent (value: Control | null) {\n if (value === this._parent) {\n return;\n }\n const previousRoot = this.root;\n\n if (this._parent?.hasThemeOwnerNode()) {\n this.propagateThemeOwner(null, false, true);\n }\n this._parent?.removeChildInternal(this);\n this._parent = value;\n value?.addChildInternal(this);\n if (value?.hasThemeOwnerNode()) {\n this.propagateThemeOwner(value.getThemeOwnerNode(), false, true);\n }\n this.updateLayout();\n const nextRoot = this.root;\n\n if (nextRoot) {\n this.propagateThemeChanged(true);\n }\n if (previousRoot && previousRoot !== nextRoot) {\n previousRoot.controlRemoved(this);\n }\n if (nextRoot && previousRoot !== nextRoot) {\n this.queuePendingLayouts();\n this.queuePendingMeasurements(nextRoot);\n }\n if (previousRoot !== nextRoot) {\n this.notifyRootChanged(previousRoot, nextRoot);\n }\n nextRoot?.controlTreeChanged();\n this.eventEmitter.emit('parentChanged', this);\n }\n\n /** Scene item exposed through the optional UIControl bridge. */\n get item (): VFXItem | null {\n return this.owner?.item ?? null;\n }\n\n get indexInParent (): number {\n return this.parent?.getChildIndex(this) ?? -1;\n }\n\n set indexInParent (value: number) {\n this.parent?.changeChildIndex(this, value);\n }\n\n get visible (): boolean {\n return this._visible;\n }\n\n set visible (value: boolean) {\n if (this._visible !== value) {\n this._visible = value;\n this.root?.controlStateChanged(this);\n this.eventEmitter.emit('visibilityChanged', this);\n }\n }\n\n get visibleInHierarchy (): boolean {\n return this.visible && (this.parent?.visibleInHierarchy ?? true);\n }\n\n get enabled (): boolean {\n return this._enabled;\n }\n\n set enabled (value: boolean) {\n if (this._enabled !== value) {\n this._enabled = value;\n this.root?.controlStateChanged(this);\n this.eventEmitter.emit('enabledChanged', this);\n }\n }\n\n get enabledInHierarchy (): boolean {\n return this.enabled && (this.parent?.enabledInHierarchy ?? true);\n }\n\n get mouseFilter (): MouseFilter {\n return this._mouseFilter;\n }\n\n set mouseFilter (value: MouseFilter) {\n if (this._mouseFilter !== value) {\n this._mouseFilter = value;\n this.root?.controlStateChanged(this);\n }\n }\n\n get mouseBehaviorRecursive (): MouseBehaviorRecursive {\n return this._mouseBehaviorRecursive;\n }\n\n set mouseBehaviorRecursive (value: MouseBehaviorRecursive) {\n if (this._mouseBehaviorRecursive !== value) {\n this._mouseBehaviorRecursive = value;\n this.root?.controlStateChanged(this);\n }\n }\n\n get focusMode (): FocusMode {\n return this._focusMode;\n }\n\n set focusMode (value: FocusMode) {\n if (this._focusMode !== value) {\n this._focusMode = value;\n this.root?.controlStateChanged(this);\n }\n }\n\n get focusBehaviorRecursive (): FocusBehaviorRecursive {\n return this._focusBehaviorRecursive;\n }\n\n set focusBehaviorRecursive (value: FocusBehaviorRecursive) {\n if (this._focusBehaviorRecursive !== value) {\n this._focusBehaviorRecursive = value;\n this.root?.controlStateChanged(this);\n }\n }\n\n get defaultCursorShape (): CursorStyle {\n return this._defaultCursorShape;\n }\n\n set defaultCursorShape (value: CursorStyle) {\n if (this._defaultCursorShape === value) {\n return;\n }\n this._defaultCursorShape = value;\n this.root?.updateMouseCursorState();\n }\n\n get location (): Vector2 {\n return this.position;\n }\n\n set location (value: Vector2) {\n this.setPosition(value.x, value.y);\n }\n\n get rotation (): number {\n return this._rotation;\n }\n\n get x (): number {\n return this.position.x;\n }\n\n set x (value: number) {\n this.setPosition(value, this.position.y);\n }\n\n get y (): number {\n return this.position.y;\n }\n\n set y (value: number) {\n this.setPosition(this.position.x, value);\n }\n\n get width (): number {\n return this.size.x;\n }\n\n set width (value: number) {\n this.setSize(value, this.size.y);\n }\n\n get height (): number {\n return this.size.y;\n }\n\n set height (value: number) {\n this.setSize(this.size.x, value);\n }\n\n get horizontalSizeFlags (): SizeFlags {\n return this._horizontalSizeFlags;\n }\n\n set horizontalSizeFlags (value: SizeFlags) {\n this.setSizeFlags(value, this._verticalSizeFlags);\n }\n\n get verticalSizeFlags (): SizeFlags {\n return this._verticalSizeFlags;\n }\n\n set verticalSizeFlags (value: SizeFlags) {\n this.setSizeFlags(this._horizontalSizeFlags, value);\n }\n\n get stretchRatio (): number {\n return this._stretchRatio;\n }\n\n set stretchRatio (value: number) {\n if (!Number.isFinite(value) || value <= 0) {\n throw new RangeError('Control stretchRatio must be a finite number greater than zero.');\n }\n if (this._stretchRatio !== value) {\n this._stretchRatio = value;\n this.eventEmitter.emit('sizeFlagsChanged', this);\n }\n }\n\n get horizontalGrowDirection (): GrowDirection {\n return this._horizontalGrowDirection;\n }\n\n set horizontalGrowDirection (value: GrowDirection) {\n this.assertGrowDirection(value);\n if (this._horizontalGrowDirection !== value) {\n this._horizontalGrowDirection = value;\n this.updateLayout();\n }\n }\n\n get verticalGrowDirection (): GrowDirection {\n return this._verticalGrowDirection;\n }\n\n set verticalGrowDirection (value: GrowDirection) {\n this.assertGrowDirection(value);\n if (this._verticalGrowDirection !== value) {\n this._verticalGrowDirection = value;\n this.updateLayout();\n }\n }\n\n get root (): RootControl | null {\n return this instanceof RootControl ? this : this.parent?.root ?? null;\n }\n\n get isDisposed (): boolean {\n return this.disposed;\n }\n\n /** Theme applied to this Control and inherited by its descendants. */\n get theme (): Theme | null {\n return this._theme;\n }\n\n set theme (value: Theme | null) {\n if (this._theme === value) {return;}\n this._theme?.off('changed', this.attachedThemeChanged);\n this._theme = value;\n if (value) {\n this.propagateThemeOwner(this, !!this.root, true);\n value.on('changed', this.attachedThemeChanged);\n } else {\n this.propagateThemeOwner(this.parent?.getThemeOwnerNode() ?? null, !!this.root, true);\n }\n }\n\n /** Returns the nearest Theme currently inherited by this Control. */\n getInheritedTheme (): Theme | null {\n return this.themeOwnerNode?.theme ?? null;\n }\n\n /** Returns the Control that owns the first Theme in this Control's inheritance chain. */\n getThemeOwnerNode (): Control | null {\n return this.themeOwnerNode;\n }\n\n /** Returns whether this Control is affected by a Theme in its Control ancestry. */\n hasThemeOwnerNode (): boolean {\n return this.themeOwnerNode !== null;\n }\n\n /** Optional named type variation resolved before this Control's native theme type. */\n get themeTypeVariation (): string {\n return this._themeTypeVariation;\n }\n\n set themeTypeVariation (value: string) {\n const normalized = value.trim();\n\n if (this._themeTypeVariation !== normalized) {\n this._themeTypeVariation = normalized;\n this.propagateThemeChanged(true, false);\n }\n }\n\n /** Stable theme type declared by the closest Control class that provides one. */\n getThemeType (): string {\n return (this.constructor as typeof Control).themeType;\n }\n\n getThemeColor (name: string, themeType?: string): Color {\n return cloneThemeValue(this.resolveThemeItem(ThemeItemType.Color, name, themeType).value as Color);\n }\n\n getThemeConstant (name: string, themeType?: string): number {\n return this.resolveThemeItem(ThemeItemType.Constant, name, themeType).value as number;\n }\n\n getThemeFont (name: string, themeType?: string): ThemeFont {\n return cloneThemeValue(this.resolveThemeItem(ThemeItemType.Font, name, themeType).value as ThemeFont);\n }\n\n getThemeFontSize (name: string, themeType?: string): number {\n return this.resolveThemeItem(ThemeItemType.FontSize, name, themeType).value as number;\n }\n\n getThemeIcon (name: string, themeType?: string): Texture | null {\n return this.resolveThemeItem(ThemeItemType.Icon, name, themeType).value as Texture | null;\n }\n\n getThemeStyleBox (name: string, themeType?: string): StyleBox {\n return this.resolveThemeItem(ThemeItemType.StyleBox, name, themeType).value as StyleBox;\n }\n\n hasThemeColor (name: string, themeType?: string): boolean {\n return this.resolveThemeItem(ThemeItemType.Color, name, themeType).found;\n }\n\n hasThemeConstant (name: string, themeType?: string): boolean {\n return this.resolveThemeItem(ThemeItemType.Constant, name, themeType).found;\n }\n\n hasThemeFont (name: string, themeType?: string): boolean {\n return this.resolveThemeItem(ThemeItemType.Font, name, themeType).found;\n }\n\n hasThemeFontSize (name: string, themeType?: string): boolean {\n return this.resolveThemeItem(ThemeItemType.FontSize, name, themeType).found;\n }\n\n hasThemeIcon (name: string, themeType?: string): boolean {\n return this.resolveThemeItem(ThemeItemType.Icon, name, themeType).found;\n }\n\n hasThemeStyleBox (name: string, themeType?: string): boolean {\n return this.resolveThemeItem(ThemeItemType.StyleBox, name, themeType).found;\n }\n\n setThemeColorOverride (name: string, value: Color): void {\n this.setThemeOverride(ThemeItemType.Color, name, value);\n }\n\n setThemeConstantOverride (name: string, value: number): void {\n if (!Number.isFinite(value)) {throw new RangeError(`${name} must be finite.`);}\n this.setThemeOverride(ThemeItemType.Constant, name, value);\n }\n\n setThemeFontOverride (name: string, value: ThemeFont): void {\n this.setThemeOverride(ThemeItemType.Font, name, value);\n }\n\n setThemeFontSizeOverride (name: string, value: number): void {\n if (!Number.isFinite(value) || value <= 0) {throw new RangeError(`${name} must be a positive finite font size.`);}\n this.setThemeOverride(ThemeItemType.FontSize, name, value);\n }\n\n setThemeIconOverride (name: string, value: Texture | null): void {\n this.setThemeOverride(ThemeItemType.Icon, name, value);\n }\n\n setThemeStyleBoxOverride (name: string, value: StyleBox): void {\n this.setThemeOverride(ThemeItemType.StyleBox, name, value);\n }\n\n removeThemeColorOverride (name: string): void { this.removeThemeOverride(ThemeItemType.Color, name); }\n removeThemeConstantOverride (name: string): void { this.removeThemeOverride(ThemeItemType.Constant, name); }\n removeThemeFontOverride (name: string): void { this.removeThemeOverride(ThemeItemType.Font, name); }\n removeThemeFontSizeOverride (name: string): void { this.removeThemeOverride(ThemeItemType.FontSize, name); }\n removeThemeIconOverride (name: string): void { this.removeThemeOverride(ThemeItemType.Icon, name); }\n removeThemeStyleBoxOverride (name: string): void { this.removeThemeOverride(ThemeItemType.StyleBox, name); }\n\n hasThemeColorOverride (name: string): boolean { return this.hasThemeOverride(ThemeItemType.Color, name); }\n hasThemeConstantOverride (name: string): boolean { return this.hasThemeOverride(ThemeItemType.Constant, name); }\n hasThemeFontOverride (name: string): boolean { return this.hasThemeOverride(ThemeItemType.Font, name); }\n hasThemeFontSizeOverride (name: string): boolean { return this.hasThemeOverride(ThemeItemType.FontSize, name); }\n hasThemeIconOverride (name: string): boolean { return this.hasThemeOverride(ThemeItemType.Icon, name); }\n hasThemeStyleBoxOverride (name: string): boolean { return this.hasThemeOverride(ThemeItemType.StyleBox, name); }\n\n clearThemeOverrides (): void {\n if (this.themeOverrides.size === 0) {return;}\n let affectsLayout = false;\n\n for (const [itemType, items] of this.themeOverrides) {\n for (const [name, value] of items) {\n if (value instanceof StyleBox) {this.releaseOverrideStyleBox(value);}\n affectsLayout ||= ThemeRegistry.affectsLayout(this.getThemeType(), itemType, name);\n }\n }\n this.themeOverrides.clear();\n this.propagateThemeChanged(affectsLayout, false);\n }\n\n hasFocus (visibleOnly = false): boolean {\n return this.root?.guiControlHasFocus(this, visibleOnly) ?? false;\n }\n\n drawStyleBox (styleBox: StyleBox, x: number, y: number, width: number, height: number): void {\n styleBox.draw(this.engine.graphics, { x, y, width, height });\n }\n\n on<E extends keyof ControlEvent> (\n eventName: E,\n listener: EventEmitterListener<ControlEvent[E]>,\n ): void {\n this.eventEmitter.on(eventName, listener);\n }\n\n off<E extends keyof ControlEvent> (\n eventName: E,\n listener: EventEmitterListener<ControlEvent[E]>,\n ): void {\n this.eventEmitter.off(eventName, listener);\n }\n\n addChild<T extends Control> (child: T): T {\n child.parent = this;\n\n return child;\n }\n\n removeChild (child: Control): void {\n if (child.parent === this) {\n child.parent = null;\n }\n }\n\n getChildIndex (child: Control): number {\n return this.children.indexOf(child);\n }\n\n /** @internal */\n changeChildIndex (child: Control, newIndex: number): void {\n const oldIndex = this.children.indexOf(child);\n\n if (oldIndex === newIndex || oldIndex === -1) {\n return;\n }\n this.children.splice(oldIndex, 1);\n if (newIndex < 0 || newIndex >= this.children.length) {\n this.children.push(child);\n } else {\n this.children.splice(newIndex, 0, child);\n }\n this.root?.controlTreeChanged();\n }\n\n /** @internal */\n addChildInternal (child: Control): void {\n if (!this.children.includes(child)) {\n this.children.push(child);\n }\n }\n\n /** @internal */\n removeChildInternal (child: Control): void {\n const index = this.children.indexOf(child);\n\n if (index !== -1) {\n this.children.splice(index, 1);\n }\n }\n\n setPosition (x: number, y: number, keepOffsets = false): void {\n if (this.position.x === x && this.position.y === y) {\n return;\n }\n const rect = { position: new Vector2(x, y), size: this.size.clone() };\n\n if (keepOffsets && this.parent) {\n this.computeAnchors(rect, this.getParentRect());\n } else {\n this.computeOffsets(rect, this.getParentRect());\n }\n this.updateLayout();\n }\n\n setSize (width: number, height: number): void {\n if (this.size.x === width && this.size.y === height) {\n return;\n }\n const rect = { position: this.position.clone(), size: new Vector2(width, height) };\n\n this.computeOffsets(rect, this.getParentRect());\n this.updateLayout();\n }\n\n /** Atomically replaces the local rectangle while preserving the current anchors. */\n setRect (rect: Rect): void {\n const nextRect = {\n position: rect.position.clone(),\n size: rect.size.clone(),\n };\n\n this.computeOffsets(nextRect, this.getParentRect());\n this.updateLayout();\n }\n\n setSizeFlags (horizontal: SizeFlags, vertical: SizeFlags): void {\n if (!Number.isInteger(horizontal) || horizontal < SizeFlags.ShrinkBegin\n || !Number.isInteger(vertical) || vertical < SizeFlags.ShrinkBegin) {\n throw new RangeError('Control size flags must be non-negative integers.');\n }\n if (this._horizontalSizeFlags !== horizontal || this._verticalSizeFlags !== vertical) {\n this._horizontalSizeFlags = horizontal;\n this._verticalSizeFlags = vertical;\n this.eventEmitter.emit('sizeFlagsChanged', this);\n }\n }\n\n /** Intrinsic minimum size supplied by a subclass. */\n getMinimumSize (): Vector2 {\n return new Vector2();\n }\n\n /** Intrinsic preferred size supplied by a subclass. */\n getDesiredSize (): Vector2 {\n return new Vector2();\n }\n\n /** Intrinsic maximum size supplied by a subclass. Negative components are unbounded. */\n getMaximumSize (): Vector2 {\n return new Vector2(-1, -1);\n }\n\n getCombinedMinimumSize (): Vector2 {\n const measured = this.getCachedMinimumSize();\n\n return new Vector2(\n Math.max(measured.x, this.customMinimumSize.x),\n Math.max(measured.y, this.customMinimumSize.y),\n );\n }\n\n getCombinedMaximumSize (): Vector2 {\n const measured = this.getCachedMaximumSize();\n\n return new Vector2(\n combineMaximum(measured.x, this.customMaximumSize.x),\n combineMaximum(measured.y, this.customMaximumSize.y),\n );\n }\n\n /** Minimum size after resolving a conflicting maximum; the maximum wins. */\n getBoundMinimumSize (): Vector2 {\n const minimum = this.getCombinedMinimumSize();\n const maximum = this.getCombinedMaximumSize();\n\n return new Vector2(\n clampToMaximum(minimum.x, maximum.x),\n clampToMaximum(minimum.y, maximum.y),\n );\n }\n\n /** Desired size clamped to the resolved minimum and maximum constraints. */\n getBoundDesiredSize (): Vector2 {\n const minimum = this.getBoundMinimumSize();\n const maximum = this.getCombinedMaximumSize();\n const desired = this.getCachedDesiredSize();\n\n return new Vector2(\n Math.max(minimum.x, clampToMaximum(desired.x, maximum.x)),\n Math.max(minimum.y, clampToMaximum(desired.y, maximum.y)),\n );\n }\n\n setCustomMinimumSize (width: number, height: number): void {\n const next = normalizeMeasuredMinimum(new Vector2(width, height));\n\n if (this.customMinimumSize.x !== next.x || this.customMinimumSize.y !== next.y) {\n this.customMinimumSize.copyFrom(next);\n this.updateMinimumSize();\n }\n }\n\n setCustomMaximumSize (width: number, height: number): void {\n const next = normalizeMeasuredMaximum(new Vector2(width, height));\n\n if (this.customMaximumSize.x !== next.x || this.customMaximumSize.y !== next.y) {\n this.customMaximumSize.copyFrom(next);\n this.updateMaximumSize();\n }\n }\n\n updateMinimumSize (): void {\n this.invalidateMeasurementChanges(MeasurementChange.Minimum);\n }\n\n updateDesiredSize (): void {\n this.invalidateMeasurementChanges(MeasurementChange.Desired);\n }\n\n updateMaximumSize (): void {\n this.invalidateMeasurementChanges(MeasurementChange.Maximum);\n }\n\n /** @internal */\n invokeMeasurementChanges (): void {\n if (this.disposed || this.pendingMeasurementChanges === 0) {return;}\n const changes = this.pendingMeasurementChanges;\n\n this.pendingMeasurementChanges = 0;\n if ((changes & (MeasurementChange.Minimum | MeasurementChange.Maximum)) !== 0) {\n this.updateLayout();\n }\n if ((changes & MeasurementChange.Minimum) !== 0) {\n this.eventEmitter.emit('minimumSizeChanged', this);\n }\n if ((changes & MeasurementChange.Desired) !== 0) {\n this.eventEmitter.emit('desiredSizeChanged', this);\n }\n if ((changes & MeasurementChange.Maximum) !== 0) {\n this.eventEmitter.emit('maximumSizeChanged', this);\n }\n }\n\n protected invalidateMeasurementChanges (changes: number): void {\n const root = this.root;\n let changed = false;\n\n if ((changes & MeasurementChange.Minimum) !== 0) {\n changed ||= this.minimumSizeCache !== null\n || (!!root && (this.pendingMeasurementChanges & MeasurementChange.Minimum) === 0);\n this.minimumSizeCache = null;\n }\n if ((changes & MeasurementChange.Desired) !== 0) {\n changed ||= this.desiredSizeCache !== null\n || (!!root && (this.pendingMeasurementChanges & MeasurementChange.Desired) === 0);\n this.desiredSizeCache = null;\n }\n if ((changes & MeasurementChange.Maximum) !== 0) {\n changed ||= this.maximumSizeCache !== null\n || (!!root && (this.pendingMeasurementChanges & MeasurementChange.Maximum) === 0);\n this.maximumSizeCache = null;\n }\n if (root) {\n this.scheduleMeasurementChanges(changes, root);\n } else {\n if ((changes & (MeasurementChange.Minimum | MeasurementChange.Maximum)) !== 0) {\n this.updateLayout();\n }\n if ((changes & MeasurementChange.Minimum) !== 0) {\n this.eventEmitter.emit('minimumSizeChanged', this);\n }\n if ((changes & MeasurementChange.Desired) !== 0) {\n this.eventEmitter.emit('desiredSizeChanged', this);\n }\n if ((changes & MeasurementChange.Maximum) !== 0) {\n this.eventEmitter.emit('maximumSizeChanged', this);\n }\n }\n if (changed && this.parent instanceof Container) {\n this.parent.invalidateMeasurementsFromChild();\n }\n }\n\n setScale (x: number, y: number): void {\n if (this.scale.x !== x || this.scale.y !== y) {\n this.scale.set(x, y);\n this.markTransformDirty();\n }\n }\n\n setRotation (degrees: number): void {\n if (this._rotation !== degrees) {\n this._rotation = degrees;\n this.markTransformDirty();\n }\n }\n\n setShear (x: number, y: number): void {\n if (this.shear.x !== x || this.shear.y !== y) {\n this.shear.set(x, y);\n this.markTransformDirty();\n }\n }\n\n setPivot (x: number, y: number): void {\n if (this.pivot.x !== x || this.pivot.y !== y) {\n this.pivot.set(x, y);\n this.markTransformDirty();\n }\n }\n\n setAnchorMin (x: number, y: number): void {\n if (this.anchorMin.x !== x || this.anchorMin.y !== y) {\n this.anchorMin.set(x, y);\n this.updateLayout();\n }\n }\n\n setAnchorMax (x: number, y: number): void {\n if (this.anchorMax.x !== x || this.anchorMax.y !== y) {\n this.anchorMax.set(x, y);\n this.updateLayout();\n }\n }\n\n setOffsetMin (x: number, y: number): void {\n if (this.offsetMin.x !== x || this.offsetMin.y !== y) {\n this.offsetMin.set(x, y);\n this.updateLayout();\n }\n }\n\n setOffsetMax (x: number, y: number): void {\n if (this.offsetMax.x !== x || this.offsetMax.y !== y) {\n this.offsetMax.set(x, y);\n this.updateLayout();\n }\n }\n\n getRect (): Rect {\n return {\n position: this.position.clone(),\n size: this.size.clone(),\n };\n }\n\n getTransform2D (): Matrix3 {\n if (this.transformDirty) {\n const radians = this._rotation * Math.PI / 180;\n const sin = Math.sin(radians);\n const cos = Math.cos(radians);\n const shearX = Math.tan(Math.max(-89, Math.min(89, this.shear.x)) * Math.PI / 180);\n const shearY = Math.tan(Math.max(-89, Math.min(89, this.shear.y)) * Math.PI / 180);\n const a = this.scale.x * (cos - sin * shearY);\n const b = this.scale.x * (sin + cos * shearY);\n const c = this.scale.y * (cos * shearX - sin);\n const d = this.scale.y * (sin * shearX + cos);\n const pivotX = this.pivot.x * this.size.x;\n const pivotY = this.pivot.y * this.size.y;\n const tx = this.position.x + pivotX - a * pivotX - c * pivotY;\n const ty = this.position.y + pivotY - b * pivotX - d * pivotY;\n\n this.cachedTransform.set(a, b, 0, c, d, 0, tx, ty, 1);\n this.transformDirty = false;\n }\n\n return this.cachedTransform;\n }\n\n setAnchorsPreset (preset: LayoutPreset, keepOffsets = true): void {\n const [minX, minY, maxX, maxY] = ANCHOR_PRESET_TABLE[preset];\n\n if (keepOffsets) {\n this.anchorMin.set(minX, minY);\n this.anchorMax.set(maxX, maxY);\n } else {\n const rect = this.getRect();\n\n this.anchorMin.set(minX, minY);\n this.anchorMax.set(maxX, maxY);\n this.computeOffsets(rect, this.getParentRect());\n }\n this.updateLayout();\n }\n\n setOffsetsPreset (preset: LayoutPreset, margin = 0): void {\n if (!this.parent) {\n return;\n }\n const parentSize = this.parent.size;\n const width = this.size.x;\n const height = this.size.y;\n const a = this.anchorMin;\n const b = this.anchorMax;\n let minX = 0, maxX = 0, minY = 0, maxY = 0;\n\n // Left edge.\n switch (preset) {\n case 'topLeft': case 'bottomLeft': case 'centerLeft':\n case 'topWide': case 'bottomWide': case 'leftWide': case 'hcenterWide': case 'fullRect':\n minX = margin - a.x * parentSize.x;\n\n break;\n case 'centerTop': case 'centerBottom': case 'center': case 'vcenterWide':\n minX = 0.5 * parentSize.x - width / 2 - a.x * parentSize.x;\n\n break;\n default:\n minX = parentSize.x - margin - width - a.x * parentSize.x;\n\n break;\n }\n switch (preset) {\n case 'topLeft': case 'bottomLeft': case 'centerLeft': case 'leftWide':\n maxX = margin + width - b.x * parentSize.x;\n\n break;\n case 'centerTop': case 'centerBottom': case 'center': case 'vcenterWide':\n maxX = 0.5 * parentSize.x + width / 2 - b.x * parentSize.x;\n\n break;\n default:\n maxX = parentSize.x - margin - b.x * parentSize.x;\n\n break;\n }\n // Top edge.\n switch (preset) {\n case 'topLeft': case 'topRight': case 'centerTop':\n case 'leftWide': case 'rightWide': case 'topWide': case 'vcenterWide': case 'fullRect':\n minY = margin - a.y * parentSize.y;\n\n break;\n case 'centerLeft': case 'centerRight': case 'center': case 'hcenterWide':\n minY = 0.5 * parentSize.y - height / 2 - a.y * parentSize.y;\n\n break;\n default:\n minY = parentSize.y - margin - height - a.y * parentSize.y;\n\n break;\n }\n // Bottom edge.\n switch (preset) {\n case 'topLeft': case 'topRight': case 'centerTop': case 'topWide':\n maxY = margin + height - b.y * parentSize.y;\n\n break;\n case 'centerLeft': case 'centerRight': case 'center': case 'hcenterWide':\n maxY = 0.5 * parentSize.y + height / 2 - b.y * parentSize.y;\n\n break;\n default:\n maxY = parentSize.y - margin - b.y * parentSize.y;\n\n break;\n }\n this.offsetMin.set(minX, minY);\n this.offsetMax.set(maxX, maxY);\n this.updateLayout();\n }\n\n setAnchorsAndOffsetsPreset (preset: LayoutPreset, margin = 0): void {\n this.setAnchorsPreset(preset, false);\n this.setOffsetsPreset(preset, margin);\n }\n\n getGlobalTransform2D (): Matrix3 {\n const local = this.getTransform2D();\n\n return this.parent\n ? new Matrix3().multiplyMatrices(this.parent.getGlobalTransform2D(), local)\n : local.clone();\n }\n\n hasPoint (point: Vector2): boolean {\n return point.x >= 0 && point.y >= 0 && point.x <= this.size.x && point.y <= this.size.y;\n }\n\n /** Whether input at a position in this Control's space may reach a direct child. */\n intersectsChildContent (child: Control, position: Vector2): boolean {\n return true;\n }\n\n getEffectiveMouseFilter (): MouseFilter {\n return this.enabledInHierarchy && this.isMouseRecursiveEnabled() ? this.mouseFilter : MouseFilter.Ignore;\n }\n\n getFocusModeWithOverride (): FocusMode {\n return this.enabledInHierarchy && this.isFocusRecursiveEnabled() ? this.focusMode : FocusMode.None;\n }\n\n getCursorShape (position: Vector2): CursorStyle {\n return this.defaultCursorShape;\n }\n\n focus (hideFocus = false): void {\n this.root?.grabControlFocus(this, hideFocus);\n }\n\n grabFocus (hideFocus = false): void {\n this.focus(hideFocus);\n }\n\n grabClickFocus (): void {\n this.root?.grabControlClickFocus(this);\n }\n\n releaseFocus (): void {\n this.root?.releaseControlFocus(this);\n }\n\n warpMouse (position: Vector2): void {\n const matrix = this.getGlobalTransform2D().elements;\n\n this.root?.warpControlMouse(new Vector2(\n matrix[0] * position.x + matrix[3] * position.y + matrix[6],\n matrix[1] * position.x + matrix[4] * position.y + matrix[7],\n ));\n }\n\n /** Converts a window-space position into this control's local coordinates. */\n makePositionLocal (position: Vector2): Vector2 {\n const transform = this.getGlobalTransform2D().clone();\n\n if (Math.abs(transform.determinant()) < 1e-12) {\n return new Vector2();\n }\n const elements = transform.invert().elements;\n\n return new Vector2(\n elements[0] * position.x + elements[3] * position.y + elements[6],\n elements[1] * position.x + elements[4] * position.y + elements[7],\n );\n }\n\n /** Gets the current mouse position transformed into this control's coordinates. */\n getLocalMousePosition (): Vector2 {\n const root = this.root;\n\n return root ? this.makePositionLocal(root.getMousePosition()) : new Vector2();\n }\n\n update (deltaTime: number): void {\n for (const child of this.children.slice()) {\n if (child.enabled && !child.isDisposed) {\n child.update(deltaTime);\n }\n }\n }\n\n draw (): void {\n // OVERRIDE\n }\n\n onDestroy (): void {}\n\n drawInternal (): void {\n if (!this.visibleInHierarchy || this.disposed) {\n return;\n }\n const graphics = this.engine.graphics;\n\n graphics.pushTransform(this.getTransform2D());\n this.draw();\n this.drawChildren();\n graphics.popTransform();\n }\n\n drawLine (x1: number, y1: number, x2: number, y2: number, color?: Color, thickness?: number): void {\n this.engine.graphics.drawLine(x1, y1, x2, y2, color, thickness);\n }\n\n drawPolyline (points: number[], color?: Color, thickness?: number): void {\n this.engine.graphics.drawLines(points, color, thickness);\n }\n\n drawBezier (\n x1: number, y1: number, x2: number, y2: number,\n x3: number, y3: number, x4: number, y4: number,\n color?: Color, thickness?: number,\n ): void {\n this.engine.graphics.drawBezier(x1, y1, x2, y2, x3, y3, x4, y4, color, thickness);\n }\n\n drawTriangle (\n x1: number, y1: number, x2: number, y2: number, x3: number, y3: number,\n color?: Color, thickness?: number,\n ): void {\n this.engine.graphics.drawTriangle(x1, y1, x2, y2, x3, y3, color, thickness);\n }\n\n drawRect (x: number, y: number, width: number, height: number, color?: Color, thickness?: number): void {\n this.engine.graphics.drawRectangle(x, y, width, height, color, thickness);\n }\n\n drawCircle (cx: number, cy: number, radius: number, color?: Color, thickness?: number): void {\n this.engine.graphics.drawCircle(cx, cy, radius, color, thickness);\n }\n\n fillTriangle (\n x1: number, y1: number, x2: number, y2: number, x3: number, y3: number, color?: Color,\n ): void {\n this.engine.graphics.fillTriangle(x1, y1, x2, y2, x3, y3, color);\n }\n\n fillRect (x: number, y: number, width: number, height: number, color?: Color): void {\n this.engine.graphics.fillRectangle(x, y, width, height, color);\n }\n\n fillCircle (cx: number, cy: number, radius: number, color?: Color): void {\n this.engine.graphics.fillCircle(cx, cy, radius, color);\n }\n\n drawTexture (\n x: number, y: number, width: number, height: number,\n texture: Texture, region?: TextureRegion, color?: Color,\n ): void {\n this.engine.graphics.drawTexture(x, y, width, height, texture, region, color);\n }\n\n drawNinePatch (\n x: number, y: number, width: number, height: number,\n texture: Texture, options: NinePatchDrawOptions, color?: Color,\n ): void {\n this.engine.graphics.drawNinePatch(x, y, width, height, texture, options, color);\n }\n\n drawText (\n x: number, y: number, text: string, fontSize: number, color?: Color,\n fontFamily?: string, fontWeight?: FontWeight, fontStyle?: FontStyle,\n ): void {\n this.engine.graphics.drawText(x, y, text, fontSize, color, fontFamily, fontWeight, fontStyle);\n }\n\n measureText (\n text: string, fontSize: number,\n fontFamily?: string, fontWeight?: FontWeight, fontStyle?: FontStyle,\n ): TextMeasurement {\n return this.engine.graphics.measureText(text, fontSize, fontFamily, fontWeight, fontStyle);\n }\n\n onMouseEnter (location: Vector2): void {}\n onMouseMove (event: InputEventMouseMotion): void {}\n onMouseLeave (): void {}\n onMouseWheel (event: InputEventMouseButton): void {}\n onMouseDown (event: InputEventMouseButton): void {}\n onMouseUp (event: InputEventMouseButton): void {}\n onTouchDown (event: InputEventScreenTouch): void {}\n onTouchMove (event: InputEventScreenDrag): void {}\n onTouchUp (event: InputEventScreenTouch): void {}\n onKeyDown (event: InputEventKey): void {}\n onKeyUp (event: InputEventKey): void {}\n onGotFocus (): void {}\n onLostFocus (): void {}\n onScrollBegin (): void {}\n onScrollEnd (): void {}\n /** @internal */\n onPopupOpened (): void {}\n /** @internal */\n onPopupClosed (): void {}\n\n /** @internal */\n invokeGetDragData (position: Vector2): unknown {\n return this.getDragData(position);\n }\n\n /** @internal */\n invokeCanDropData (position: Vector2, data: unknown): boolean {\n return this.canDropData(position, data);\n }\n\n /** @internal */\n invokeDropData (position: Vector2, data: unknown): void {\n this.dropData(position, data);\n }\n\n dispose (): void {\n if (this.disposed) {\n return;\n }\n for (const child of this.children.slice()) {\n child.dispose();\n }\n this._theme?.off('changed', this.attachedThemeChanged);\n this._theme = null;\n for (const styleBox of this.overrideStyleBoxReferences.keys()) {\n styleBox.off('changed', this.overrideStyleBoxChanged);\n }\n this.overrideStyleBoxReferences.clear();\n this.themeOverrides.clear();\n this.themeCache.clear();\n this.pendingMeasurementChanges = 0;\n this.disposed = true;\n this.onDestroy();\n this.parent = null;\n this.owner = null;\n }\n\n /** @internal */\n updateLayout (): void {\n const parentSize = this.parent?.size ?? new Vector2();\n const left = this.offsetMin.x + this.anchorMin.x * parentSize.x;\n const top = this.offsetMin.y + this.anchorMin.y * parentSize.y;\n const right = this.offsetMax.x + this.anchorMax.x * parentSize.x;\n const bottom = this.offsetMax.y + this.anchorMax.y * parentSize.y;\n\n const minimum = this.getBoundMinimumSize();\n const maximum = this.getCombinedMaximumSize();\n const horizontal = this.resolveBoundedAxis(left, right - left, minimum.x, maximum.x, this.horizontalGrowDirection);\n const vertical = this.resolveBoundedAxis(top, bottom - top, minimum.y, maximum.y, this.verticalGrowDirection);\n\n this.applyBounds(horizontal.position, vertical.position, horizontal.size, vertical.size);\n }\n\n protected drawChildren (): void {\n const graphics = this.engine.graphics;\n\n if (this.clipContents) {\n graphics.pushClipRect(0, 0, this.width, this.height);\n }\n for (const child of this.children) {\n child.drawInternal();\n }\n if (this.clipContents) {\n graphics.popClipRect();\n }\n }\n\n protected onThemeChanged (affectsLayout: boolean): void {\n if (affectsLayout) {\n this.updateMinimumSize();\n this.updateDesiredSize();\n if (this instanceof Container) {this.queueSort();}\n }\n }\n\n protected onRootChanged (previousRoot: RootControl | null, nextRoot: RootControl | null): void {}\n protected getDragData (position: Vector2): unknown { return null; }\n protected canDropData (position: Vector2, data: unknown): boolean { return false; }\n protected dropData (position: Vector2, data: unknown): void {}\n\n private getThemeDependencies (theme: Theme, explicitType?: string): string[] {\n const nativeType = this.getThemeType();\n const requestedType = explicitType ?? (this.themeTypeVariation || nativeType);\n\n if (theme.hasTypeVariation(requestedType)) {return theme.getTypeDependencies(requestedType);}\n if (!explicitType && this.themeTypeVariation) {\n return [this.themeTypeVariation, ...ThemeRegistry.getTypeChain(nativeType)];\n }\n\n return ThemeRegistry.getTypeChain(requestedType);\n }\n\n private getFallbackThemeDependencies (explicitType?: string): string[] {\n const nativeType = this.getThemeType();\n const requestedType = explicitType ?? (this.themeTypeVariation || nativeType);\n\n for (let owner = this.themeOwnerNode; owner; owner = owner.parent?.themeOwnerNode ?? null) {\n if (owner.theme?.hasTypeVariation(requestedType)) {\n return owner.theme.getTypeDependencies(requestedType);\n }\n }\n if (!explicitType && this.themeTypeVariation) {\n return [this.themeTypeVariation, ...ThemeRegistry.getTypeChain(nativeType)];\n }\n\n return ThemeRegistry.getTypeChain(requestedType);\n }\n\n private resolveThemeItem (itemType: ThemeItemType, name: string, explicitType?: string): ThemeCacheEntry {\n const cacheKey = `${itemType}\\u0000${explicitType ?? ''}\\u0000${name}`;\n const cached = this.themeCache.get(cacheKey);\n\n if (cached) {return { found: cached.found, value: cloneThemeValue(cached.value) };}\n const nativeType = this.getThemeType();\n const queryMatchesCurrentType = !explicitType\n || explicitType === nativeType\n || (!!this.themeTypeVariation && explicitType === this.themeTypeVariation);\n const override = queryMatchesCurrentType ? this.themeOverrides.get(itemType)?.get(name) : undefined;\n let found = override !== undefined;\n let value = override;\n\n if (!found) {\n for (let owner = this.themeOwnerNode; owner && !found; owner = owner.parent?.themeOwnerNode ?? null) {\n const theme = owner.theme;\n\n if (!theme) {continue;}\n for (const dependency of this.getThemeDependencies(theme, explicitType)) {\n const candidate = theme.getItem(dependency, itemType, name);\n\n if (candidate !== undefined) {\n value = candidate;\n found = true;\n\n break;\n }\n }\n }\n }\n if (!found) {\n for (const dependency of this.getFallbackThemeDependencies(explicitType)) {\n const candidate = ThemeRegistry.getDefault(dependency, itemType, name);\n\n if (candidate !== undefined) {\n value = candidate;\n found = true;\n\n break;\n }\n }\n }\n if (!found) {value = this.getThemeFallback(itemType);}\n const entry = { found, value: cloneThemeValue(value as ThemeValue) };\n\n this.themeCache.set(cacheKey, entry);\n\n return { found: entry.found, value: cloneThemeValue(entry.value) };\n }\n\n private getThemeFallback (itemType: ThemeItemType): ThemeValue {\n switch (itemType) {\n case ThemeItemType.Color: return themeFallbacks.color;\n case ThemeItemType.Constant: return themeFallbacks.constant;\n case ThemeItemType.Font: return themeFallbacks.font;\n case ThemeItemType.FontSize: return themeFallbacks.fontSize;\n case ThemeItemType.Icon: return themeFallbacks.icon;\n case ThemeItemType.StyleBox: return themeFallbacks.styleBox;\n }\n }\n\n private setThemeOverride (itemType: ThemeItemType, name: string, value: ThemeValue): void {\n if (!name) {throw new Error('Theme override item names cannot be empty.');}\n let items = this.themeOverrides.get(itemType);\n\n if (!items) {this.themeOverrides.set(itemType, items = new Map());}\n const previous = items.get(name);\n\n if (previous instanceof StyleBox) {this.releaseOverrideStyleBox(previous);}\n const stored = cloneThemeValue(value);\n\n items.set(name, stored);\n if (stored instanceof StyleBox) {this.retainOverrideStyleBox(stored);}\n this.propagateThemeChanged(ThemeRegistry.affectsLayout(this.getThemeType(), itemType, name), false);\n }\n\n private removeThemeOverride (itemType: ThemeItemType, name: string): void {\n const items = this.themeOverrides.get(itemType);\n const previous = items?.get(name);\n\n if (!items?.delete(name)) {return;}\n if (items.size === 0) {this.themeOverrides.delete(itemType);}\n if (previous instanceof StyleBox) {this.releaseOverrideStyleBox(previous);}\n this.propagateThemeChanged(ThemeRegistry.affectsLayout(this.getThemeType(), itemType, name), false);\n }\n\n private hasThemeOverride (itemType: ThemeItemType, name: string): boolean {\n return this.themeOverrides.get(itemType)?.has(name) ?? false;\n }\n\n private retainOverrideStyleBox (styleBox: StyleBox): void {\n const count = this.overrideStyleBoxReferences.get(styleBox) ?? 0;\n\n if (count === 0) {styleBox.on('changed', this.overrideStyleBoxChanged);}\n this.overrideStyleBoxReferences.set(styleBox, count + 1);\n }\n\n private releaseOverrideStyleBox (styleBox: StyleBox): void {\n const count = this.overrideStyleBoxReferences.get(styleBox) ?? 0;\n\n if (count <= 1) {\n styleBox.off('changed', this.overrideStyleBoxChanged);\n this.overrideStyleBoxReferences.delete(styleBox);\n } else {this.overrideStyleBoxReferences.set(styleBox, count - 1);}\n }\n\n private propagateThemeChanged (affectsLayout: boolean, includeChildren = true): void {\n if (this.disposed) {return;}\n this.themeCache.clear();\n if (this.root) {\n this.onThemeChanged(affectsLayout);\n this.eventEmitter.emit('themeChanged', this, affectsLayout);\n }\n if (includeChildren) {\n for (const child of this.children) {child.propagateThemeChanged(affectsLayout);}\n }\n }\n\n private propagateThemeOwner (ownerNode: Control | null, notify: boolean, assign: boolean): void {\n let assignToControl = assign;\n\n if (this !== ownerNode && this.theme) {\n assignToControl = false;\n }\n if (assignToControl) {\n this.themeOwnerNode = ownerNode;\n }\n this.themeCache.clear();\n if (notify && this.root) {\n this.onThemeChanged(true);\n this.eventEmitter.emit('themeChanged', this, true);\n }\n for (const child of this.children) {\n child.propagateThemeOwner(ownerNode, notify, assignToControl);\n }\n }\n\n private scheduleMeasurementChanges (changes: MeasurementChange, root: RootControl): void {\n const pending = changes & ~this.pendingMeasurementChanges;\n\n if (pending === 0) {return;}\n this.pendingMeasurementChanges |= pending;\n root.queueMeasurementChange(this);\n }\n\n private applyBounds (x: number, y: number, width: number, height: number): void {\n const locationChanged = this.position.x !== x || this.position.y !== y;\n const sizeChanged = this.size.x !== width || this.size.y !== height;\n\n if (!locationChanged && !sizeChanged) {\n return;\n }\n this.position.set(x, y);\n this.size.set(width, height);\n this.markTransformDirty();\n if (locationChanged) {\n this.eventEmitter.emit('locationChanged', this);\n }\n if (sizeChanged) {\n this.eventEmitter.emit('sizeChanged', this);\n if (!(this instanceof Container)) {\n for (const child of this.children.slice()) {\n child.updateLayout();\n }\n }\n }\n }\n\n private markTransformDirty (): void {\n this.transformDirty = true;\n }\n\n private getCachedMinimumSize (): Vector2 {\n this.minimumSizeCache ??= normalizeMeasuredMinimum(this.getMinimumSize());\n\n return this.minimumSizeCache.clone();\n }\n\n private getCachedDesiredSize (): Vector2 {\n this.desiredSizeCache ??= normalizeMeasuredMinimum(this.getDesiredSize());\n\n return this.desiredSizeCache.clone();\n }\n\n private getCachedMaximumSize (): Vector2 {\n this.maximumSizeCache ??= normalizeMeasuredMaximum(this.getMaximumSize());\n\n return this.maximumSizeCache.clone();\n }\n\n private resolveBoundedAxis (\n position: number,\n requestedSize: number,\n minimumSize: number,\n maximumSize: number,\n growDirection: GrowDirection,\n ): { position: number, size: number } {\n const finiteSize = Number.isFinite(requestedSize) ? requestedSize : 0;\n const size = Math.max(minimumSize, clampToMaximum(finiteSize, maximumSize));\n const difference = size - finiteSize;\n let adjustedPosition = Number.isFinite(position) ? position : 0;\n\n if (growDirection === GrowDirection.Begin) {\n adjustedPosition -= difference;\n } else if (growDirection === GrowDirection.Both) {\n adjustedPosition -= difference / 2;\n }\n\n return { position: adjustedPosition, size };\n }\n\n private assertGrowDirection (value: GrowDirection): void {\n if (!Number.isInteger(value) || value < GrowDirection.Begin || value > GrowDirection.Both) {\n throw new RangeError('Invalid Control grow direction.');\n }\n }\n\n private queuePendingLayouts (): void {\n if (this instanceof Container) {\n this.queueSort();\n }\n for (const child of this.children) {\n child.queuePendingLayouts();\n }\n }\n\n private queuePendingMeasurements (root: RootControl): void {\n if (this.pendingMeasurementChanges !== 0) {\n root.queueMeasurementChange(this);\n }\n for (const child of this.children) {\n child.queuePendingMeasurements(root);\n }\n }\n\n private notifyRootChanged (previousRoot: RootControl | null, nextRoot: RootControl | null): void {\n this.onRootChanged(previousRoot, nextRoot);\n for (const child of this.children) {\n child.notifyRootChanged(previousRoot, nextRoot);\n }\n }\n\n private getParentRect (): Rect {\n return {\n position: new Vector2(),\n size: this.parent?.size.clone() ?? new Vector2(),\n };\n }\n\n private computeOffsets (rect: Rect, parentRect: Rect): void {\n this.offsetMin.set(\n rect.position.x - parentRect.position.x - this.anchorMin.x * parentRect.size.x,\n rect.position.y - parentRect.position.y - this.anchorMin.y * parentRect.size.y,\n );\n this.offsetMax.set(\n rect.position.x + rect.size.x - parentRect.position.x - this.anchorMax.x * parentRect.size.x,\n rect.position.y + rect.size.y - parentRect.position.y - this.anchorMax.y * parentRect.size.y,\n );\n }\n\n private computeAnchors (rect: Rect, parentRect: Rect): void {\n if (parentRect.size.x !== 0) {\n this.anchorMin.x = (rect.position.x - parentRect.position.x - this.offsetMin.x) / parentRect.size.x;\n this.anchorMax.x = (rect.position.x + rect.size.x - parentRect.position.x - this.offsetMax.x) / parentRect.size.x;\n }\n if (parentRect.size.y !== 0) {\n this.anchorMin.y = (rect.position.y - parentRect.position.y - this.offsetMin.y) / parentRect.size.y;\n this.anchorMax.y = (rect.position.y + rect.size.y - parentRect.position.y - this.offsetMax.y) / parentRect.size.y;\n }\n }\n\n private isMouseRecursiveEnabled (): boolean {\n if (this.mouseBehaviorRecursive === MouseBehaviorRecursive.Inherited) {\n return this.parent?.isMouseRecursiveEnabled() ?? true;\n }\n\n return this.mouseBehaviorRecursive === MouseBehaviorRecursive.Enabled;\n }\n\n private isFocusRecursiveEnabled (): boolean {\n if (this.focusBehaviorRecursive === FocusBehaviorRecursive.Inherited) {\n return this.parent?.isFocusRecursiveEnabled() ?? true;\n }\n\n return this.focusBehaviorRecursive === FocusBehaviorRecursive.Enabled;\n }\n\n fromData (data: spec.ControlData): void {\n if (data.anchorMin !== undefined) {\n this.setAnchorMin(...data.anchorMin);\n }\n if (data.anchorMax !== undefined) {\n this.setAnchorMax(...data.anchorMax);\n }\n if (data.offsetMin !== undefined) {\n this.setOffsetMin(...data.offsetMin);\n }\n if (data.offsetMax !== undefined) {\n this.setOffsetMax(...data.offsetMax);\n }\n if (data.pivot !== undefined) {\n this.setPivot(...data.pivot);\n }\n if (data.scale !== undefined) {\n this.setScale(...data.scale);\n }\n if (data.shear !== undefined) {\n this.setShear(...data.shear);\n }\n if (data.rotation !== undefined) {\n this.setRotation(data.rotation);\n }\n if (data.customMinimumSize !== undefined) {\n this.setCustomMinimumSize(...data.customMinimumSize);\n }\n if (data.customMaximumSize !== undefined) {\n this.setCustomMaximumSize(...data.customMaximumSize);\n }\n if (data.horizontalSizeFlags !== undefined || data.verticalSizeFlags !== undefined) {\n this.setSizeFlags(\n data.horizontalSizeFlags ?? this.horizontalSizeFlags,\n data.verticalSizeFlags ?? this.verticalSizeFlags,\n );\n }\n if (data.stretchRatio !== undefined) {\n this.stretchRatio = data.stretchRatio;\n }\n if (data.horizontalGrowDirection !== undefined) {\n this.horizontalGrowDirection = data.horizontalGrowDirection;\n }\n if (data.verticalGrowDirection !== undefined) {\n this.verticalGrowDirection = data.verticalGrowDirection;\n }\n if (data.mouseFilter !== undefined) {\n this.mouseFilter = data.mouseFilter;\n }\n if (data.mouseBehaviorRecursive !== undefined) {\n this.mouseBehaviorRecursive = data.mouseBehaviorRecursive;\n }\n if (data.mouseForcePassScrollEvents !== undefined) {\n this.mouseForcePassScrollEvents = data.mouseForcePassScrollEvents;\n }\n if (data.focusMode !== undefined) {\n this.focusMode = data.focusMode;\n }\n if (data.focusBehaviorRecursive !== undefined) {\n this.focusBehaviorRecursive = data.focusBehaviorRecursive;\n }\n if (data.defaultCursorShape !== undefined) {\n this.defaultCursorShape = data.defaultCursorShape;\n }\n if (data.clipContents !== undefined) {\n this.clipContents = data.clipContents;\n }\n if (data.themeTypeVariation !== undefined) {\n this.themeTypeVariation = data.themeTypeVariation;\n }\n if (data.themeOverrides !== undefined) {\n this.clearThemeOverrides();\n this.applyThemeOverridesFromData(data.themeOverrides);\n }\n }\n\n private applyThemeOverridesFromData (data: spec.ThemeItemCollectionData): void {\n for (const name of Object.keys(data.colors ?? {})) {\n const value = data.colors![name];\n\n this.setThemeColorOverride(name, new Color(value.r, value.g, value.b, value.a));\n }\n for (const name of Object.keys(data.constants ?? {})) {\n this.setThemeConstantOverride(name, data.constants![name]);\n }\n for (const name of Object.keys(data.fonts ?? {})) {\n const value = data.fonts![name];\n\n this.setThemeFontOverride(name, {\n family: value.family,\n weight: value.weight ?? 'normal',\n style: value.style ?? 'normal',\n });\n }\n for (const name of Object.keys(data.fontSizes ?? {})) {\n this.setThemeFontSizeOverride(name, data.fontSizes![name]);\n }\n for (const name of Object.keys(data.icons ?? {})) {\n const value = data.icons![name];\n\n this.setThemeIconOverride(name, value ? this.engine.findObject<Texture>(value) : null);\n }\n for (const name of Object.keys(data.styleBoxes ?? {})) {\n this.setThemeStyleBoxOverride(name, styleBoxFromData(this.engine, data.styleBoxes![name]));\n }\n }\n}\n\n/**\n * A Control that automatically measures and arranges its child Controls.\n * Concrete layout algorithms live in GUI plugin packages.\n */\n@effectsClass('Container')\nexport class Container extends Control {\n static override readonly themeType: string = 'Container';\n private sortPending = false;\n private readonly childLayoutChanged = () => this.invalidateMeasurementsAndQueueSort();\n private readonly ownSizeChanged = () => this.queueSort();\n\n constructor (engine: Engine) {\n super(engine);\n this.on('sizeChanged', this.ownSizeChanged);\n }\n\n /** Defers and coalesces a layout pass until the GUI update phase. */\n queueSort (): void {\n const root = this.root;\n\n if (!root || this.sortPending) {\n return;\n }\n this.sortPending = true;\n root.queueLayout(this);\n }\n\n /** @internal */\n invokeSortChildren (): void {\n if (!this.sortPending || this.isDisposed) {\n return;\n }\n this.sortChildren();\n this.sortPending = false;\n }\n\n override changeChildIndex (child: Control, newIndex: number): void {\n const previousIndex = this.getChildIndex(child);\n\n super.changeChildIndex(child, newIndex);\n if (previousIndex !== this.getChildIndex(child)) {\n this.invalidateMeasurementsAndQueueSort();\n }\n }\n\n override addChildInternal (child: Control): void {\n const wasChild = this.children.includes(child);\n\n super.addChildInternal(child);\n if (!wasChild) {\n this.bindChild(child);\n this.invalidateMeasurementsAndQueueSort();\n }\n }\n\n override removeChildInternal (child: Control): void {\n const wasChild = this.children.includes(child);\n\n if (wasChild) {\n this.unbindChild(child);\n }\n super.removeChildInternal(child);\n if (wasChild) {\n this.invalidateMeasurementsAndQueueSort();\n }\n }\n\n override dispose (): void {\n this.off('sizeChanged', this.ownSizeChanged);\n for (const child of this.children.slice()) {\n this.unbindChild(child);\n }\n super.dispose();\n }\n\n /**\n * Applies size flags and strict container geometry to a child. Automatic\n * layout owns anchors, rotation, scale and shear; pivot is intentionally kept.\n */\n fitChildInRect (child: Control, rect: Rect): void {\n const minimum = child.getBoundMinimumSize();\n const desired = child.getBoundDesiredSize();\n const maximum = child.getCombinedMaximumSize();\n const horizontal = this.fitAxis(\n rect.position.x,\n rect.size.x,\n minimum.x,\n desired.x,\n maximum.x,\n child.horizontalSizeFlags,\n );\n const vertical = this.fitAxis(\n rect.position.y,\n rect.size.y,\n minimum.y,\n desired.y,\n maximum.y,\n child.verticalSizeFlags,\n );\n\n child.anchorMin.set(0, 0);\n child.anchorMax.set(0, 0);\n child.setRotation(0);\n child.setScale(1, 1);\n child.setShear(0, 0);\n child.setRect({\n position: new Vector2(horizontal.position, vertical.position),\n size: new Vector2(horizontal.size, vertical.size),\n });\n }\n\n /** Returns direct children that participate in layout. Disabled children still participate. */\n protected getLayoutChildren (): Control[] {\n return this.children.filter(child => child.visible && !child.isDisposed);\n }\n\n protected sortChildren (): void {}\n\n private bindChild (child: Control): void {\n child.on('sizeFlagsChanged', this.childLayoutChanged);\n child.on('visibilityChanged', this.childLayoutChanged);\n }\n\n private unbindChild (child: Control): void {\n child.off('sizeFlagsChanged', this.childLayoutChanged);\n child.off('visibilityChanged', this.childLayoutChanged);\n }\n\n private invalidateMeasurementsAndQueueSort (): void {\n this.invalidateMeasurementsFromChild();\n }\n\n /** @internal */\n invalidateMeasurementsFromChild (): void {\n this.invalidateMeasurementChanges(MeasurementChange.All);\n this.queueSort();\n }\n\n private fitAxis (\n position: number,\n available: number,\n minimum: number,\n desired: number,\n maximum: number,\n flags: SizeFlags,\n ): { position: number, size: number } {\n const wantsFill = (flags & SizeFlags.Fill) !== 0;\n let size = wantsFill ? available : Math.min(available, desired);\n\n size = Math.max(minimum, clampToMaximum(size, maximum));\n const remaining = available - size;\n let adjustedPosition = position;\n\n if ((flags & SizeFlags.ShrinkEnd) !== 0) {\n adjustedPosition += remaining;\n } else if ((flags & SizeFlags.ShrinkCenter) !== 0) {\n adjustedPosition += remaining / 2;\n }\n\n return { position: adjustedPosition, size };\n }\n}\n\n/** Base class for GUI tree roots and input dispatchers. */\nexport abstract class RootControl extends Control {\n protected readonly rootEventEmitter = new EventEmitter<RootControlEvent>();\n\n override on<E extends keyof RootControlEvent> (\n eventName: E,\n listener: EventEmitterListener<RootControlEvent[E]>,\n ): void {\n if (eventName === 'guiFocusChanged') {\n this.rootEventEmitter.on(eventName, listener);\n } else {\n super.on(eventName, listener as never);\n }\n }\n\n override off<E extends keyof RootControlEvent> (\n eventName: E,\n listener: EventEmitterListener<RootControlEvent[E]>,\n ): void {\n if (eventName === 'guiFocusChanged') {\n this.rootEventEmitter.off(eventName, listener);\n } else {\n super.off(eventName, listener as never);\n }\n }\n\n abstract queueLayout (container: Container): void;\n abstract queueMeasurementChange (control: Control): void;\n abstract getMousePosition (): Vector2;\n abstract guiGetFocusOwner (): Control | null;\n abstract guiControlHasFocus (control: Control, visibleOnly?: boolean): boolean;\n abstract guiIsDragging (): boolean;\n abstract guiGetDragData (): unknown;\n abstract guiIsDragSuccessful (): boolean;\n abstract guiCancelDrag (): void;\n abstract cancelPointerInput (): void;\n abstract cancelPointerPress (control: Control, touchIndex: number): void;\n abstract grabControlFocus (control: Control, hideFocus?: boolean): void;\n abstract grabControlClickFocus (control: Control): void;\n abstract releaseControlFocus (control?: Control): void;\n abstract warpControlMouse (position: Vector2): void;\n abstract updateMouseCursorState (): void;\n abstract controlStateChanged (control: Control): void;\n abstract controlRemoved (control: Control): void;\n abstract controlTreeChanged (): void;\n abstract popupControl (control: Control, source: Control | null, position: Vector2): void;\n abstract closePopupControl (control: Control): void;\n}\n\nThemeRegistry.registerType(Control.themeType, null);\nThemeRegistry.registerType(Container.themeType, Control.themeType);\n","import type { UICanvas } from '../components/ui-canvas';\nimport {\n InputEvent,\n InputEventKey,\n InputEventMouse,\n InputEventMouseButton,\n InputEventMouseMotion,\n InputEventScreenDrag,\n InputEventScreenTouch,\n MouseButton,\n MouseButtonMask,\n math,\n} from '@galacean/effects';\nimport type {\n Engine,\n} from '@galacean/effects';\nimport {\n CursorShape,\n FocusMode,\n MouseBehaviorRecursive,\n MouseFilter,\n} from './enums';\nimport type { CursorStyle } from './enums';\nimport type { Container } from './control';\nimport { Control, RootControl } from './control';\nimport type { Theme } from './theme';\n\ntype Matrix3 = math.Matrix3;\ntype Vector2 = math.Vector2;\nconst Matrix3 = math.Matrix3;\nconst Vector2 = math.Vector2;\n\nconst cursorNames: Record<CursorShape, string> = {\n [CursorShape.Arrow]: 'default',\n [CursorShape.Ibeam]: 'text',\n [CursorShape.PointingHand]: 'pointer',\n [CursorShape.Cross]: 'crosshair',\n [CursorShape.Wait]: 'wait',\n [CursorShape.Busy]: 'progress',\n [CursorShape.Drag]: 'grab',\n [CursorShape.CanDrop]: 'copy',\n [CursorShape.Forbidden]: 'not-allowed',\n [CursorShape.Vsize]: 'ns-resize',\n [CursorShape.Hsize]: 'ew-resize',\n [CursorShape.Bdiagsize]: 'nesw-resize',\n [CursorShape.Fdiagsize]: 'nwse-resize',\n [CursorShape.Move]: 'move',\n [CursorShape.Vsplit]: 'row-resize',\n [CursorShape.Hsplit]: 'col-resize',\n [CursorShape.Help]: 'help',\n};\n\nfunction getButtonMask (button: MouseButton): number {\n switch (button) {\n case MouseButton.Left: return MouseButtonMask.Left;\n case MouseButton.Right: return MouseButtonMask.Right;\n case MouseButton.Middle: return MouseButtonMask.Middle;\n case MouseButton.Xbutton1: return MouseButtonMask.Xbutton1;\n case MouseButton.Xbutton2: return MouseButtonMask.Xbutton2;\n default: return MouseButtonMask.None;\n }\n}\n\nfunction isWheelButton (button: MouseButton): boolean {\n return button >= MouseButton.WheelUp && button <= MouseButton.WheelRight;\n}\n\ntype GUIState = {\n mouseFocus: Control | null,\n mouseClickGrabber: Control | null,\n mouseFocusMask: number,\n mouseOver: Control | null,\n mouseOverHierarchy: Control[],\n touchFocus: Map<number, Control>,\n keyFocus: Control | null,\n hideFocus: boolean,\n dragAccum: Vector2,\n dragAttempted: boolean,\n dragging: boolean,\n dragData: unknown,\n dragMouseOver: Control | null,\n dragSuccessful: boolean,\n lastMousePosition: Vector2,\n sendingMouseEnterExit: boolean,\n mouseOverUpdatePending: boolean,\n};\n\ntype PopupState = {\n control: Control,\n restoreFocus: Control | null,\n restoreFocusHidden: boolean,\n originalTheme: Theme | null,\n};\n\nclass PopupLayer extends Control {\n closeTop?: () => void;\n\n constructor (engine: Engine) {\n super(engine);\n this.mouseFilter = MouseFilter.Stop;\n this.visible = false;\n }\n\n override onMouseDown (event: InputEventMouseButton): void {\n if (event.buttonIndex === MouseButton.Left || event.buttonIndex === MouseButton.Right) {\n this.closeTop?.();\n event.accept();\n }\n }\n}\n\n/** CanvasLayer-like boundary for a single UICanvas GUI tree. */\nexport class CanvasRootControl extends Control {\n readonly canvas: UICanvas;\n\n constructor (engine: Engine, canvas: UICanvas) {\n super(engine);\n this.canvas = canvas;\n this.mouseFilter = MouseFilter.Ignore;\n this.setSize(engine.canvas.width, engine.canvas.height);\n }\n\n get inputDisabled (): boolean {\n return !this.canvas.receivesEvents || !this.canvas.enabled || !this.canvas.item?.isActive;\n }\n}\n\n/** Global ordered collection of UICanvas roots. */\nexport class CanvasContainer extends Control {\n constructor (engine: Engine) {\n super(engine);\n this.mouseFilter = MouseFilter.Ignore;\n this.setSize(engine.canvas.width, engine.canvas.height);\n }\n\n sortCanvases (): void {\n this.children.sort((left, right) =>\n (left as CanvasRootControl).canvas.order - (right as CanvasRootControl).canvas.order);\n }\n\n override addChildInternal (child: Control): void {\n super.addChildInternal(child);\n child.setSize(this.width, this.height);\n this.sortCanvases();\n }\n\n protected override drawChildren (): void {\n this.sortCanvases();\n const graphics = this.engine.graphics;\n\n if (this.clipContents) {\n graphics.pushClipRect(0, 0, this.width, this.height);\n }\n for (const child of this.children) {\n const root = child as CanvasRootControl;\n\n if (root.canvas.isVisible) {\n root.drawInternal();\n }\n }\n if (this.clipContents) {\n graphics.popClipRect();\n }\n }\n\n}\n\n/** Engine window GUI root. Routes events across all UICanvas roots. */\nexport class WindowRootControl extends RootControl {\n readonly canvases: CanvasContainer;\n private readonly popupLayer: PopupLayer;\n private readonly popupStack: PopupState[] = [];\n dragThreshold = 10;\n private lastInput: InputEvent | null = null;\n private readonly dirtyContainers = new Set<Container>();\n private readonly dirtyMeasurements = new Set<Control>();\n private readonly gui: GUIState = {\n mouseFocus: null,\n mouseClickGrabber: null,\n mouseFocusMask: MouseButtonMask.None,\n mouseOver: null,\n mouseOverHierarchy: [],\n touchFocus: new Map(),\n keyFocus: null,\n hideFocus: false,\n dragAccum: new Vector2(),\n dragAttempted: false,\n dragging: false,\n dragData: null,\n dragMouseOver: null,\n dragSuccessful: false,\n lastMousePosition: new Vector2(Number.NEGATIVE_INFINITY, Number.NEGATIVE_INFINITY),\n sendingMouseEnterExit: false,\n mouseOverUpdatePending: false,\n };\n\n constructor (engine: Engine) {\n super(engine);\n this.mouseFilter = MouseFilter.Ignore;\n this.setSize(engine.canvas.width, engine.canvas.height);\n this.canvases = new CanvasContainer(engine);\n this.canvases.parent = this;\n this.popupLayer = new PopupLayer(engine);\n this.popupLayer.setAnchorMax(1, 1);\n this.popupLayer.setOffsetMax(0, 0);\n this.popupLayer.closeTop = () => {\n const top = this.popupStack[this.popupStack.length - 1];\n\n if (top) {this.closePopupControl(top.control);}\n };\n this.popupLayer.parent = this;\n }\n\n pushInput (event: InputEvent): void {\n this.lastInput = event;\n this.cleanupInternalState();\n this.processGUIInput(event);\n this.postGrabClickFocus();\n }\n\n isInputHandled (): boolean {\n return this.lastInput?.isAccepted() ?? false;\n }\n\n override getMousePosition (): Vector2 {\n return this.gui.lastMousePosition.clone();\n }\n\n override guiGetFocusOwner (): Control | null {\n return this.isFocusTargetUsable(this.gui.keyFocus) ? this.gui.keyFocus : null;\n }\n\n override guiControlHasFocus (control: Control, visibleOnly = false): boolean {\n return this.guiGetFocusOwner() === control && (!visibleOnly || !this.gui.hideFocus);\n }\n\n guiReleaseFocus (): void {\n this.releaseControlFocus();\n }\n\n override guiIsDragging (): boolean {\n return this.gui.dragging;\n }\n\n override guiGetDragData (): unknown {\n return this.gui.dragData;\n }\n\n override guiIsDragSuccessful (): boolean {\n return this.gui.dragSuccessful;\n }\n\n override guiCancelDrag (): void {\n this.endDragging(false);\n }\n\n override grabControlFocus (control: Control, hideFocus = false): void {\n if (!this.isFocusTargetUsable(control)) {\n return;\n }\n if (this.gui.keyFocus === control) {\n this.gui.hideFocus = hideFocus;\n\n return;\n }\n const previous = this.gui.keyFocus;\n\n this.gui.keyFocus = control;\n this.gui.hideFocus = hideFocus;\n if (previous && !previous.isDisposed) {\n previous.onLostFocus();\n }\n control.onGotFocus();\n this.notifyFocusOwnerChanged(control);\n }\n\n override grabControlClickFocus (control: Control): void {\n if (this.isControlValid(control)) {\n this.gui.mouseClickGrabber = control;\n queueMicrotask(() => this.postGrabClickFocus());\n }\n }\n\n override releaseControlFocus (control?: Control): void {\n const previous = this.gui.keyFocus;\n\n if (!previous || (control && previous !== control)) {\n return;\n }\n this.gui.keyFocus = null;\n this.gui.hideFocus = false;\n if (!previous.isDisposed) {\n previous.onLostFocus();\n }\n this.notifyFocusOwnerChanged(null);\n }\n\n override warpControlMouse (position: Vector2): void {\n this.gui.lastMousePosition.copyFrom(position);\n this.updateMouseOver(position);\n this.updateMouseCursorState();\n }\n\n override updateMouseCursorState (): void {\n const position = this.gui.lastMousePosition;\n const target = this.isControlUsable(this.gui.mouseFocus)\n ? this.gui.mouseFocus\n : this.isControlUsable(this.gui.mouseOver)\n ? this.gui.mouseOver\n : null;\n\n this.updateCursor(target, position);\n }\n\n override controlStateChanged (control: Control): void {\n if (!this.isControlUsable(control)) {\n this.dropControlState(control);\n }\n this.updateMouseOverHierarchy();\n }\n\n override controlRemoved (control: Control): void {\n this.dropControlState(control);\n this.cleanupInternalState();\n this.updateMouseOverHierarchy();\n }\n\n override controlTreeChanged (): void {\n this.updateMouseOverHierarchy();\n }\n\n override popupControl (control: Control, source: Control | null, position: Vector2): void {\n this.closePopupControl(control);\n const originalTheme = control.theme;\n const focusOwner = this.guiGetFocusOwner();\n const restoreFocus = source ?? focusOwner;\n const restoreFocusHidden = restoreFocus === focusOwner && !!restoreFocus && !restoreFocus.hasFocus(true);\n\n if (!originalTheme) {control.theme = source?.getInheritedTheme() ?? null;}\n const desired = control.getBoundDesiredSize();\n const width = Math.max(control.width, desired.x);\n const height = Math.max(control.height, desired.y);\n\n control.setSize(width, height);\n control.setPosition(\n Math.max(0, Math.min(position.x, this.width - width)),\n Math.max(0, Math.min(position.y, this.height - height)),\n );\n control.parent = this.popupLayer;\n control.visible = true;\n this.popupLayer.visible = true;\n this.popupStack.push({ control, restoreFocus, restoreFocusHidden, originalTheme });\n control.onPopupOpened();\n control.grabFocus();\n }\n\n override closePopupControl (control: Control): void {\n const index = this.popupStack.findIndex(state => state.control === control);\n\n if (index === -1) {return;}\n const removed = this.popupStack.splice(index);\n\n for (let removedIndex = removed.length - 1; removedIndex >= 0; removedIndex--) {\n const state = removed[removedIndex];\n\n state.control.visible = false;\n state.control.parent = null;\n state.control.theme = state.originalTheme;\n state.control.onPopupClosed();\n }\n this.popupLayer.visible = this.popupStack.length > 0;\n const { restoreFocus: restore, restoreFocusHidden } = removed[0];\n\n if (restore && !restore.isDisposed && restore.root === this) {restore.grabFocus(restoreFocusHidden);}\n }\n\n override queueLayout (container: Container): void {\n if (!container.isDisposed) {\n this.dirtyContainers.add(container);\n }\n }\n\n override queueMeasurementChange (control: Control): void {\n if (!control.isDisposed) {\n this.dirtyMeasurements.add(control);\n }\n }\n\n override cancelPointerInput (): void {\n this.dropMouseFocus();\n this.dropMouseOver();\n this.gui.touchFocus.clear();\n this.endDragging(false);\n this.releaseControlFocus();\n }\n\n onCanvasBlur (): void {\n const target = this.gui.mouseFocus;\n const mask = this.gui.mouseFocusMask;\n\n this.dropMouseFocus();\n if (!target || target.isDisposed) {\n return;\n }\n for (const button of [MouseButton.Left, MouseButton.Right, MouseButton.Middle]) {\n if ((mask & getButtonMask(button)) === 0) {\n continue;\n }\n const event = new InputEventMouseButton();\n const position = target.makePositionLocal(this.gui.lastMousePosition);\n\n event.device = InputEvent.deviceIdInternal;\n event.buttonIndex = button;\n event.pressed = false;\n event.position.copyFrom(position);\n event.globalPosition.copyFrom(position);\n this.callControlInput(target, event);\n }\n }\n\n override cancelPointerPress (control: Control, touchIndex: number): void {\n if (!this.isControlValid(control)) {\n return;\n }\n if (this.controlBelongsToSubtree(this.gui.mouseFocus, control)) {\n this.gui.mouseFocus = control;\n }\n if (this.controlBelongsToSubtree(this.gui.mouseClickGrabber, control)) {\n this.gui.mouseClickGrabber = null;\n }\n if (this.controlBelongsToSubtree(this.gui.touchFocus.get(touchIndex) ?? null, control)) {\n this.gui.touchFocus.set(touchIndex, control);\n }\n this.endDragging(false);\n }\n\n resize (width: number, height: number): void {\n this.setSize(width, height);\n this.canvases.setSize(width, height);\n for (const root of this.canvases.children as CanvasRootControl[]) {\n root.setSize(width, height);\n }\n this.popupLayer.setSize(width, height);\n }\n\n render (): void {\n this.flushLayout();\n if (this.canvases.children.length === 0) {\n return;\n }\n this.engine.graphics.begin();\n this.drawInternal();\n this.engine.graphics.end();\n }\n\n override update (deltaTime: number): void {\n if (this.gui.mouseOverUpdatePending) {\n this.gui.mouseOverUpdatePending = false;\n this.updateMouseOverHierarchy();\n }\n super.update(deltaTime);\n this.flushLayout();\n }\n\n override dispose (): void {\n this.cancelPointerInput();\n this.dirtyContainers.clear();\n this.dirtyMeasurements.clear();\n for (const state of this.popupStack.splice(0)) {\n state.control.parent = null;\n state.control.theme = state.originalTheme;\n state.control.onPopupClosed();\n }\n super.dispose();\n }\n\n private flushLayout (): void {\n let round = 0;\n\n while (this.dirtyMeasurements.size > 0 || this.dirtyContainers.size > 0) {\n if (round++ >= 32) {\n this.dirtyMeasurements.clear();\n this.dirtyContainers.clear();\n throw new Error('GUI layout did not converge after 32 rounds.');\n }\n if (this.dirtyMeasurements.size > 0) {\n const measurements = Array.from(this.dirtyMeasurements);\n\n this.dirtyMeasurements.clear();\n measurements.sort((left, right) => this.getControlDepth(right) - this.getControlDepth(left));\n for (const control of measurements) {\n if (control.root === this && !control.isDisposed) {\n control.invokeMeasurementChanges();\n }\n }\n continue;\n }\n const batch = Array.from(this.dirtyContainers);\n\n this.dirtyContainers.clear();\n batch.sort((left, right) => this.getControlDepth(left) - this.getControlDepth(right));\n for (const container of batch) {\n if (container.root === this && !container.isDisposed) {\n container.invokeSortChildren();\n }\n }\n }\n }\n\n private getControlDepth (control: Control): number {\n let depth = 0;\n let parent = control.parent;\n\n while (parent) {\n depth++;\n parent = parent.parent;\n }\n\n return depth;\n }\n\n private processGUIInput (event: InputEvent): void {\n if (event instanceof InputEventKey) {\n const target = this.guiGetFocusOwner();\n\n if (target) {\n this.callGUIInput(target, event);\n }\n } else if (event instanceof InputEventMouse) {\n this.gui.lastMousePosition.copyFrom(event.globalPosition);\n const target = this.updateMouseOver(event.globalPosition);\n\n if (event instanceof InputEventMouseButton) {\n this.processMouseButton(event, target);\n } else if (event instanceof InputEventMouseMotion) {\n this.processMouseMotion(event, target);\n }\n } else if (event instanceof InputEventScreenTouch) {\n this.processScreenTouch(event);\n } else if (event instanceof InputEventScreenDrag) {\n this.processScreenDrag(event);\n }\n }\n\n private processMouseButton (event: InputEventMouseButton, mouseOver: Control | null): void {\n if (isWheelButton(event.buttonIndex)) {\n if (mouseOver) {\n this.callGUIInput(mouseOver, event);\n }\n\n return;\n }\n const mask = getButtonMask(event.buttonIndex);\n\n if (event.isPressed()) {\n const target = this.gui.mouseFocusMask !== 0\n ? this.gui.mouseFocus\n : mouseOver;\n\n this.gui.mouseFocus = target;\n if (!target) {\n if (event.buttonIndex === MouseButton.Left && this.gui.keyFocus) {\n this.gui.hideFocus = true;\n }\n\n return;\n }\n this.gui.mouseFocusMask |= mask;\n if (event.buttonIndex === MouseButton.Left) {\n this.gui.dragAccum.setZero();\n this.gui.dragAttempted = false;\n this.findClickFocus(target);\n }\n this.callGUIInput(target, event);\n } else {\n if (event.buttonIndex === MouseButton.Left && this.gui.dragging) {\n this.finishDrop(event.globalPosition);\n }\n this.gui.mouseFocusMask &= ~mask;\n const target = this.gui.mouseFocus;\n\n if (this.gui.mouseFocusMask === 0) {\n this.gui.mouseFocus = null;\n }\n if (this.isControlUsable(target)) {\n this.callGUIInput(target, event);\n }\n }\n }\n\n private processMouseMotion (event: InputEventMouseMotion, mouseOver: Control | null): void {\n if (!this.gui.dragging && !this.gui.dragAttempted && this.gui.mouseFocus &&\n (this.gui.mouseFocusMask & MouseButtonMask.Left) !== 0) {\n this.gui.dragAccum.add(event.relative);\n if (this.gui.dragAccum.length() > this.dragThreshold) {\n const origin = event.globalPosition.clone().subtract(this.gui.dragAccum);\n\n this.beginDragging(this.gui.mouseFocus, origin);\n this.gui.dragAttempted = true;\n }\n }\n const target = this.isControlUsable(this.gui.mouseFocus)\n ? this.gui.mouseFocus\n : mouseOver;\n\n if (target) {\n this.callGUIInput(target, event);\n }\n if (this.gui.dragging) {\n this.gui.dragMouseOver = this.findDropTarget(mouseOver, event.globalPosition);\n }\n this.updateCursor(target, event.globalPosition);\n }\n\n private processScreenTouch (event: InputEventScreenTouch): void {\n let target: Control | null;\n\n if (event.isPressed()) {\n target = this.findInputControl(event.position);\n if (target) {\n this.gui.touchFocus.set(event.index, target);\n }\n } else {\n target = this.gui.touchFocus.get(event.index) ?? null;\n this.gui.touchFocus.delete(event.index);\n }\n if (this.isControlUsable(target)) {\n this.callGUIInput(target, event);\n }\n }\n\n private processScreenDrag (event: InputEventScreenDrag): void {\n const target = this.gui.touchFocus.get(event.index) ?? this.findInputControl(event.position);\n\n if (this.isControlUsable(target)) {\n this.callGUIInput(target, event);\n }\n }\n\n private callGUIInput (target: Control, event: InputEvent): void {\n let current: Control | null = target;\n const pointerEvent = event instanceof InputEventMouse || event instanceof InputEventScreenTouch ||\n event instanceof InputEventScreenDrag;\n\n while (current && current !== this && this.isControlUsable(current)) {\n const filter = current.getEffectiveMouseFilter();\n\n if (filter !== MouseFilter.Ignore) {\n const localEvent = event.xformedBy(this.getGlobalInverse(current));\n\n this.callControlInput(current, localEvent);\n if (localEvent.isAccepted()) {\n event.accept();\n }\n }\n const forcePassWheel = event instanceof InputEventMouseButton && isWheelButton(event.buttonIndex) &&\n current.mouseForcePassScrollEvents;\n const forcePassTouch = (event instanceof InputEventScreenTouch || event instanceof InputEventScreenDrag) &&\n current.mouseForcePassScrollEvents;\n\n if (event.isAccepted() || (filter === MouseFilter.Stop && pointerEvent && !forcePassWheel && !forcePassTouch)) {\n event.accept();\n\n return;\n }\n current = current.parent;\n }\n }\n\n private callControlInput (control: Control, event: InputEvent): void {\n if (event instanceof InputEventMouseButton) {\n if (isWheelButton(event.buttonIndex)) {\n control.onMouseWheel(event);\n } else if (event.isPressed()) {\n control.onMouseDown(event);\n } else {\n control.onMouseUp(event);\n }\n } else if (event instanceof InputEventMouseMotion) {\n control.onMouseMove(event);\n } else if (event instanceof InputEventScreenTouch) {\n if (event.isPressed()) {\n control.onTouchDown(event);\n } else {\n control.onTouchUp(event);\n }\n } else if (event instanceof InputEventScreenDrag) {\n control.onTouchMove(event);\n } else if (event instanceof InputEventKey) {\n if (event.isPressed()) {\n control.onKeyDown(event);\n } else if (event.isReleased()) {\n control.onKeyUp(event);\n }\n }\n }\n\n private findInputControl (position: Vector2): Control | null {\n if (this.popupLayer.visible) {\n return this.findControlAtPosition(this.popupLayer, position) ?? this.popupLayer;\n }\n this.canvases.sortCanvases();\n\n return this.findControlAtPosition(this.canvases, position, true);\n }\n\n private findControlAtPosition (\n container: Control,\n positionInParent: Vector2,\n skipSelf = false,\n parentEnabled = true,\n parentMouseEnabled = true,\n ): Control | null {\n if (!container.visible || container.isDisposed ||\n (container instanceof CanvasRootControl && (!container.canvas.isVisible || container.inputDisabled))) {\n return null;\n }\n const localPosition = this.toControlLocal(container, positionInParent);\n\n if (!localPosition) {\n return null;\n }\n const enabled = parentEnabled && container.enabled;\n const mouseEnabled = container.mouseBehaviorRecursive === MouseBehaviorRecursive.Inherited\n ? parentMouseEnabled\n : container.mouseBehaviorRecursive === MouseBehaviorRecursive.Enabled;\n\n if (container.clipContents && !container.hasPoint(localPosition)) {\n return null;\n }\n for (let index = container.children.length - 1; index >= 0; index--) {\n const child = container.children[index];\n\n if (!container.intersectsChildContent(child, localPosition)) {\n continue;\n }\n const found = this.findControlAtPosition(child, localPosition, false, enabled, mouseEnabled);\n\n if (found) {\n return found;\n }\n }\n if (!skipSelf && enabled && mouseEnabled && container.mouseFilter !== MouseFilter.Ignore &&\n container.hasPoint(localPosition)) {\n return container;\n }\n\n return null;\n }\n\n private toControlLocal (control: Control, positionInParent: Vector2): Vector2 | null {\n const elements = control.getTransform2D().elements;\n const determinant = elements[0] * elements[4] - elements[1] * elements[3];\n\n if (Math.abs(determinant) < 1e-12) {\n return null;\n }\n const x = positionInParent.x - elements[6];\n const y = positionInParent.y - elements[7];\n\n return new Vector2(\n (elements[4] * x - elements[3] * y) / determinant,\n (elements[0] * y - elements[1] * x) / determinant,\n );\n }\n\n private updateMouseOver (position: Vector2): Control | null {\n if (this.gui.sendingMouseEnterExit) {\n this.gui.mouseOverUpdatePending = true;\n\n return this.gui.mouseOver;\n }\n this.gui.mouseOverUpdatePending = false;\n const target = this.findInputControl(position);\n const next = this.buildHoverHierarchy(target);\n\n this.applyMouseOver(target, next, position);\n\n return this.isControlUsable(target) ? target : null;\n }\n\n private updateMouseOverHierarchy (): void {\n const current = this.gui.mouseOver;\n\n if (!current || this.gui.mouseOverHierarchy.length === 0) {\n return;\n }\n if (this.gui.sendingMouseEnterExit) {\n this.gui.mouseOverUpdatePending = true;\n\n return;\n }\n if (!this.isControlUsable(current)) {\n this.dropMouseOver();\n\n return;\n }\n const next = this.buildHoverHierarchy(current);\n const target = current.getEffectiveMouseFilter() === MouseFilter.Ignore ? null : current;\n\n this.applyMouseOver(target, next, this.gui.lastMousePosition);\n }\n\n private applyMouseOver (target: Control | null, next: Control[], position: Vector2): void {\n const previous = this.gui.mouseOverHierarchy;\n let common = 0;\n\n while (common < previous.length && common < next.length && previous[common] === next[common]) {\n common++;\n }\n this.gui.mouseOver = target;\n this.gui.mouseOverHierarchy = next;\n this.gui.sendingMouseEnterExit = true;\n for (let index = previous.length - 1; index >= common; index--) {\n if (!previous[index].isDisposed) {\n previous[index].onMouseLeave();\n }\n }\n for (let index = common; index < next.length; index++) {\n next[index].onMouseEnter(this.toLocal(next[index], position));\n }\n this.gui.sendingMouseEnterExit = false;\n }\n\n private buildHoverHierarchy (target: Control | null): Control[] {\n const hierarchy: Control[] = [];\n let current = target;\n\n while (current && current !== this) {\n const filter = current.getEffectiveMouseFilter();\n\n if (filter !== MouseFilter.Ignore) {\n hierarchy.push(current);\n }\n if (filter === MouseFilter.Stop) {\n break;\n }\n current = current.parent;\n }\n hierarchy.reverse();\n\n return hierarchy;\n }\n\n private findClickFocus (target: Control): void {\n let current: Control | null = target;\n\n while (current && current !== this) {\n const mode = current.getFocusModeWithOverride();\n\n if (mode === FocusMode.Click || mode === FocusMode.All) {\n this.grabControlFocus(current, true);\n\n return;\n }\n if (current.getEffectiveMouseFilter() === MouseFilter.Stop) {\n return;\n }\n current = current.parent;\n }\n }\n\n private beginDragging (source: Control, position: Vector2): void {\n let current: Control | null = source;\n\n while (current && current !== this) {\n const data = current.invokeGetDragData(this.toLocal(current, position));\n\n if (data !== null && data !== undefined) {\n this.gui.dragging = true;\n this.gui.dragData = data;\n this.gui.mouseFocus = null;\n this.gui.mouseFocusMask = MouseButtonMask.None;\n\n return;\n }\n if (current.getEffectiveMouseFilter() === MouseFilter.Stop) {\n return;\n }\n current = current.parent;\n }\n }\n\n private finishDrop (position: Vector2): void {\n const target = this.findDropTarget(this.findInputControl(position), position);\n\n if (target) {\n target.invokeDropData(this.toLocal(target, position), this.gui.dragData);\n }\n this.endDragging(!!target);\n }\n\n private findDropTarget (target: Control | null, position: Vector2): Control | null {\n let current = target;\n\n while (current && current !== this) {\n if (current.invokeCanDropData(this.toLocal(current, position), this.gui.dragData)) {\n return current;\n }\n if (current.getEffectiveMouseFilter() === MouseFilter.Stop) {\n return null;\n }\n current = current.parent;\n }\n\n return null;\n }\n\n private endDragging (successful: boolean): void {\n this.gui.dragSuccessful = successful;\n this.gui.dragging = false;\n this.gui.dragData = null;\n this.gui.dragMouseOver = null;\n }\n\n private updateCursor (target: Control | null, position: Vector2): void {\n let current = target;\n let cursor: CursorStyle = CursorShape.Arrow;\n\n while (current && current !== this) {\n const candidate = current.getCursorShape(this.toLocal(current, position));\n\n if (candidate !== CursorShape.Arrow) {\n cursor = candidate;\n\n break;\n }\n if (current.getEffectiveMouseFilter() === MouseFilter.Stop) {\n break;\n }\n current = current.parent;\n }\n this.engine.canvas.style.cursor = typeof cursor === 'string' ? cursor : cursorNames[cursor];\n }\n\n private postGrabClickFocus (): void {\n const target = this.gui.mouseClickGrabber;\n\n this.gui.mouseClickGrabber = null;\n if (this.isControlUsable(target)) {\n this.gui.mouseFocus = target;\n }\n }\n\n private cleanupInternalState (): void {\n if (!this.isControlUsable(this.gui.mouseFocus)) {\n this.dropMouseFocus();\n }\n if (this.gui.keyFocus && !this.isFocusTargetUsable(this.gui.keyFocus)) {\n this.releaseControlFocus(this.gui.keyFocus);\n }\n for (const [index, control] of this.gui.touchFocus) {\n if (!this.isControlUsable(control)) {\n this.gui.touchFocus.delete(index);\n }\n }\n }\n\n private dropMouseFocus (): void {\n this.gui.mouseFocus = null;\n this.gui.mouseFocusMask = MouseButtonMask.None;\n }\n\n private dropMouseOver (): void {\n if (this.gui.sendingMouseEnterExit) {\n this.gui.mouseOverUpdatePending = true;\n\n return;\n }\n for (let index = this.gui.mouseOverHierarchy.length - 1; index >= 0; index--) {\n const control = this.gui.mouseOverHierarchy[index];\n\n if (!control.isDisposed) {\n control.onMouseLeave();\n }\n }\n this.gui.mouseOver = null;\n this.gui.mouseOverHierarchy = [];\n }\n\n private dropControlState (control: Control): void {\n if (this.controlBelongsToSubtree(this.gui.mouseFocus, control)) {\n this.dropMouseFocus();\n }\n if (this.controlBelongsToSubtree(this.gui.mouseClickGrabber, control)) {\n this.gui.mouseClickGrabber = null;\n }\n if (this.controlBelongsToSubtree(this.gui.keyFocus, control)) {\n this.releaseControlFocus(this.gui.keyFocus ?? undefined);\n }\n if (this.controlBelongsToSubtree(this.gui.mouseOver, control)) {\n this.dropMouseOver();\n }\n if (this.controlBelongsToSubtree(this.gui.dragMouseOver, control)) {\n this.gui.dragMouseOver = null;\n }\n for (const [index, target] of this.gui.touchFocus) {\n if (this.controlBelongsToSubtree(target, control)) {\n this.gui.touchFocus.delete(index);\n }\n }\n }\n\n private getGlobalInverse (control: Control): Matrix3 {\n const transform = control.getGlobalTransform2D().clone();\n\n return Math.abs(transform.determinant()) < 1e-12 ? new Matrix3() : transform.invert();\n }\n\n private toLocal (control: Control, position: Vector2): Vector2 {\n const elements = this.getGlobalInverse(control).elements;\n\n return new Vector2(\n elements[0] * position.x + elements[3] * position.y + elements[6],\n elements[1] * position.x + elements[4] * position.y + elements[7],\n );\n }\n\n private controlBelongsToSubtree (control: Control | null, subtree: Control): boolean {\n let current = control;\n\n while (current) {\n if (current === subtree) {\n return true;\n }\n current = current.parent;\n }\n\n return false;\n }\n\n private isControlValid (control: Control | null): control is Control {\n return !!control && !control.isDisposed && control.root === this;\n }\n\n private isControlUsable (control: Control | null): control is Control {\n if (!this.isControlValid(control) || !control.visibleInHierarchy || !control.enabledInHierarchy) {\n return false;\n }\n const root = this.findCanvasRoot(control);\n\n return !root || !root.inputDisabled;\n }\n\n private findCanvasRoot (control: Control): CanvasRootControl | null {\n let current: Control | null = control;\n\n while (current && current !== this) {\n if (current instanceof CanvasRootControl) {\n return current;\n }\n current = current.parent;\n }\n\n return null;\n }\n\n private notifyFocusOwnerChanged (control: Control | null): void {\n this.rootEventEmitter.emit('guiFocusChanged', control);\n }\n\n private isFocusTargetUsable (control: Control | null): control is Control {\n return this.isControlUsable(control) && control.getFocusModeWithOverride() !== FocusMode.None;\n }\n}\n","import { Component } from '@galacean/effects';\nimport type { Engine, InputEvent } from '@galacean/effects';\nimport { WindowRootControl } from '../core/roots';\n\n/** Engine-level owner for the GUI window root and its runtime subscriptions. */\nexport class GUIWindowComponent extends Component {\n readonly windowRoot: WindowRootControl;\n private disposed = false;\n\n private readonly updateWindowRoot = (deltaTime: number): void => {\n this.windowRoot.update(deltaTime);\n };\n\n private readonly renderWindowRoot = (): void => {\n this.windowRoot.render();\n };\n\n private readonly resizeWindowRoot = (): void => {\n const rect = this.engine.canvas.getBoundingClientRect();\n const width = rect.width || this.engine.canvas.width;\n const height = rect.height || this.engine.canvas.height;\n\n this.windowRoot.resize(width, height);\n };\n\n private readonly pushInput = (event: InputEvent): void => {\n if (!event.isAccepted()) {\n this.windowRoot.pushInput(event);\n }\n };\n\n private readonly onCanvasBlur = (): void => {\n this.windowRoot.onCanvasBlur();\n };\n\n constructor (engine: Engine) {\n super(engine);\n this.windowRoot = new WindowRootControl(engine);\n engine.on('update', this.updateWindowRoot);\n engine.on('postrender', this.renderWindowRoot);\n engine.on('resize', this.resizeWindowRoot);\n engine.eventSystem.on('input', this.pushInput);\n engine.eventSystem.on('canvasBlur', this.onCanvasBlur);\n this.resizeWindowRoot();\n }\n\n override dispose (): void {\n if (this.disposed) {\n return;\n }\n this.disposed = true;\n this.engine.off('update', this.updateWindowRoot);\n this.engine.off('postrender', this.renderWindowRoot);\n this.engine.off('resize', this.resizeWindowRoot);\n this.engine.eventSystem.off('input', this.pushInput);\n this.engine.eventSystem.off('canvasBlur', this.onCanvasBlur);\n this.windowRoot.dispose();\n super.dispose();\n }\n}\n","import { Component } from '@galacean/effects';\nimport type { Engine } from '@galacean/effects';\nimport { CanvasRootControl } from '../core/roots';\nimport { GUIWindowComponent } from './gui-window-component';\n\nexport enum CanvasRenderMode {\n ScreenSpace = 0,\n CameraSpace = 1,\n WorldSpace = 2,\n WorldSpaceFaceCamera = 3,\n}\n\n/** Canvas-layer boundary attached to a VFXItem. Input state remains owned by the window root. */\nexport class UICanvas extends Component {\n readonly rootControl: CanvasRootControl;\n renderMode = CanvasRenderMode.ScreenSpace;\n receivesEvents = true;\n private _order = 0;\n private registered = false;\n\n constructor (engine: Engine) {\n super(engine);\n this.rootControl = new CanvasRootControl(engine, this);\n }\n\n get order (): number {\n return this._order;\n }\n\n set order (value: number) {\n if (this._order !== value) {\n this._order = value;\n this.engine.root.getComponent(GUIWindowComponent).windowRoot.canvases.sortCanvases();\n }\n }\n\n get isVisible (): boolean {\n return this.renderMode === CanvasRenderMode.ScreenSpace && this.enabled &&\n !!this.item?.isActive;\n }\n\n override onEnable (): void {\n this.register();\n }\n\n override onDisable (): void {\n this.unregister();\n }\n\n override onDestroy (): void {\n this.destroyCanvas();\n }\n\n override dispose (): void {\n this.destroyCanvas();\n super.dispose();\n }\n\n private register (): void {\n if (!this.registered) {\n const guiWindow = this.engine.root.getComponent(GUIWindowComponent);\n\n this.rootControl.parent = guiWindow.windowRoot.canvases;\n this.registered = true;\n }\n }\n\n private unregister (): void {\n if (this.registered) {\n this.rootControl.parent = null;\n this.registered = false;\n }\n }\n\n private destroyCanvas (): void {\n this.unregister();\n if (!this.rootControl.isDisposed) {\n this.rootControl.dispose();\n }\n }\n\n}\n","import { Plugin } from '@galacean/effects';\nimport type { Composition, Engine } from '@galacean/effects';\nimport { GUIWindowComponent } from '../components/gui-window-component';\nimport { UICanvas } from '../components/ui-canvas';\n\nexport class GUIPlugin extends Plugin {\n override order = 0;\n override name = 'gui';\n\n override onEngineCreated (engine: Engine): void {\n engine.root.addComponent(GUIWindowComponent);\n }\n\n override onCompositionCreating (composition: Composition): void {\n composition.sceneRoot.addComponent(UICanvas);\n }\n}\n","import { Component, effectsClass, getClass } from '@galacean/effects';\nimport type { Constructor, Engine, Transform, spec } from '@galacean/effects';\nimport { Container } from '../core/control';\nimport type { Control } from '../core/control';\nimport { UICanvas } from './ui-canvas';\n\n/**\n * Scene-tree bridge for a GUI Control. The VFXItem tree owns lifecycle and\n * serialization while the Control tree owns layout, drawing and input.\n */\n@effectsClass('UIControl')\nexport class UIControl extends Component {\n static fallbackParentGetDelegate?: (control: UIControl) => Control | null;\n\n private controlNode: Control | null = null;\n private linkedItemTransform: Transform | null = null;\n private linkedControl: Control | null = null;\n private syncingLocation = false;\n private readonly itemTransformChanged = () => this.syncItemLocationToControl();\n private readonly controlLocationChanged = () => this.syncControlLocationToItem();\n\n constructor (engine: Engine) {\n super(engine);\n }\n\n get control (): Control | null {\n return this.controlNode;\n }\n\n set control (value: Control | null) {\n if (value === this.controlNode) {\n return;\n }\n this.attachControl(value);\n }\n\n get hasControl (): boolean {\n return this.controlNode !== null;\n }\n\n override onAwake (): void {\n this.syncControl();\n }\n\n override onEnable (): void {\n if (this.controlNode) {\n this.controlNode.visible = this.item.isActive;\n this.controlNode.enabled = true;\n }\n }\n\n override onDisable (): void {\n if (this.controlNode) {\n this.controlNode.visible = this.item.isActive;\n this.controlNode.enabled = false;\n }\n }\n\n override onParentChanged (): void {\n this.syncControl();\n }\n\n override onOrderInParentChanged (): void {\n this.syncControlOrder();\n }\n\n override onDestroy (): void {\n this.disposeControl();\n }\n\n override dispose (): void {\n this.disposeControl();\n super.dispose();\n }\n\n /** Unlinks the GUI object without disposing or modifying it. */\n unlinkControl (): void {\n if (this.controlNode) {\n this.unbindLocationSync();\n this.controlNode = null;\n }\n }\n\n private attachControl (value: Control | null): void {\n if (value?.owner && value.owner !== this && value.owner.control === value) {\n throw new Error('A Control can only be owned by one UIControl.');\n }\n this.disposeControl();\n if (value) {\n this.controlNode = value;\n value.owner = this;\n this.syncControl();\n }\n }\n\n private disposeControl (): void {\n const control = this.controlNode;\n\n if (control) {\n this.unbindLocationSync();\n this.controlNode = null;\n control.dispose();\n }\n }\n\n private syncControl (): void {\n const control = this.controlNode;\n\n if (!control || !this.item) {\n return;\n }\n this.syncingLocation = true;\n control.visible = this.item.isActive;\n control.enabled = this.enabled;\n control.parent = this.resolveParent();\n this.syncControlOrder();\n this.copyItemLocationToControl();\n this.syncingLocation = false;\n this.bindLocationSync();\n }\n\n private syncControlOrder (): void {\n if (this.controlNode && this.item) {\n this.controlNode.indexInParent = this.item.orderInParent;\n }\n }\n\n private resolveParent (): Control | null {\n const parentItem = this.item.parent;\n\n if (!parentItem) {\n return UIControl.fallbackParentGetDelegate?.(this) ?? null;\n }\n const uiControl = parentItem.getComponent(UIControl);\n\n if (uiControl?.control) {\n return uiControl.control;\n }\n const canvas = parentItem.getComponent(UICanvas);\n\n return canvas?.rootControl ?? UIControl.fallbackParentGetDelegate?.(this) ?? null;\n }\n\n private bindLocationSync (): void {\n const itemTransform = this.item.transform;\n const control = this.controlNode;\n\n if (this.linkedItemTransform === itemTransform && this.linkedControl === control) {\n return;\n }\n this.unbindLocationSync();\n if (control) {\n this.linkedItemTransform = itemTransform;\n this.linkedControl = control;\n itemTransform.on('changed', this.itemTransformChanged);\n control.on('locationChanged', this.controlLocationChanged);\n }\n }\n\n private unbindLocationSync (): void {\n this.linkedItemTransform?.off('changed', this.itemTransformChanged);\n this.linkedControl?.off('locationChanged', this.controlLocationChanged);\n this.linkedItemTransform = null;\n this.linkedControl = null;\n }\n\n private syncItemLocationToControl (): void {\n if (this.syncingLocation || !this.controlNode) {\n return;\n }\n this.syncingLocation = true;\n this.copyItemLocationToControl();\n this.syncingLocation = false;\n }\n\n private syncControlLocationToItem (): void {\n const control = this.controlNode;\n\n if (!this.syncingLocation && control && this.item) {\n const source = control.location;\n const target = this.item.transform.position;\n\n if (source.x !== target.x || source.y !== target.y) {\n this.syncingLocation = true;\n this.item.transform.setPosition(source.x, source.y, target.z);\n this.syncingLocation = false;\n }\n }\n }\n\n private copyItemLocationToControl (): void {\n const control = this.controlNode;\n\n // Automatic layout owns the local X/Y rectangle. Keep the reverse sync so\n // layout results still update the scene item transform.\n if (control && !(control.parent instanceof Container)) {\n const source = this.item.transform.position;\n const target = control.location;\n\n if (source.x !== target.x || source.y !== target.y) {\n control.setPosition(source.x, source.y);\n }\n }\n }\n\n override fromData (data: spec.ComponentData): void {\n super.fromData(data);\n const uiControlData = data as spec.UIControlData;\n const Constructor = getClass(uiControlData.control) as Constructor<Control>;\n const control = new Constructor(this.engine);\n\n this.attachControl(control);\n this.syncingLocation = true;\n control.fromData(uiControlData.data);\n this.syncingLocation = false;\n this.syncControlLocationToItem();\n }\n}\n","export enum Orientation {\n Horizontal,\n Vertical,\n}\n\nexport enum LayoutAlignment {\n Begin,\n Center,\n End,\n}\n\nexport enum AspectRatioStretchMode {\n WidthControlsHeight,\n HeightControlsWidth,\n Fit,\n Cover,\n}\n","const EPSILON = 1e-7;\n\nexport function assertFinite (name: string, value: number): void {\n if (!Number.isFinite(value)) {\n throw new RangeError(`${name} must be finite.`);\n }\n}\n\nexport function assertEnumValue (name: string, value: number, maximum: number): void {\n if (!Number.isInteger(value) || value < 0 || value > maximum) {\n throw new RangeError(`Invalid ${name}.`);\n }\n}\n\nexport function sum (values: number[]): number {\n return values.reduce((total, value) => total + value, 0);\n}\n\n/**\n * Grows slots by weight, removing capped slots and redistributing their\n * unused share. Fractional pixels are accumulated and the last slot absorbs\n * the remaining numerical error when the supplied space is integral.\n */\nexport function growSlots (\n sizes: number[],\n ceilings: number[],\n weights: number[],\n extra: number,\n integerPixels: boolean,\n): number {\n let remaining = Math.max(0, extra);\n let active = sizes.map((_, index) => index).filter(index =>\n weights[index] > 0 && (ceilings[index] < 0 || sizes[index] < ceilings[index] - EPSILON));\n\n while (remaining > EPSILON && active.length > 0) {\n const totalWeight = active.reduce((total, index) => total + weights[index], 0);\n let capped = false;\n\n for (const index of active) {\n const ceiling = ceilings[index];\n const share = remaining * weights[index] / totalWeight;\n\n if (ceiling >= 0 && sizes[index] + share > ceiling + EPSILON) {\n const growth = Math.max(0, ceiling - sizes[index]);\n\n sizes[index] = ceiling;\n remaining -= growth;\n active = active.filter(value => value !== index);\n capped = true;\n\n break;\n }\n }\n if (capped) {\n continue;\n }\n\n let assigned = 0;\n let pixelError = 0;\n\n for (let activeIndex = 0; activeIndex < active.length; activeIndex++) {\n const index = active[activeIndex];\n let growth = activeIndex === active.length - 1\n ? remaining - assigned\n : remaining * weights[index] / totalWeight;\n\n if (integerPixels && activeIndex !== active.length - 1) {\n const exactGrowth = growth + pixelError;\n\n growth = Math.floor(exactGrowth);\n pixelError = exactGrowth - growth;\n }\n sizes[index] += growth;\n assigned += growth;\n }\n remaining = 0;\n }\n\n return remaining;\n}\n\nexport function alignmentOffset (alignment: number, remaining: number): number {\n if (alignment === 1) {\n return remaining / 2;\n }\n if (alignment === 2) {\n return remaining;\n }\n\n return 0;\n}\n","import {\n effectsClass,\n math,\n} from '@galacean/effects';\nimport type { Engine, spec } from '@galacean/effects';\nimport { Container, SizeFlags } from '../core/control';\nimport type { Control } from '../core/control';\nimport { LayoutAlignment, Orientation } from './enums';\nimport { alignmentOffset, assertEnumValue, growSlots, sum } from './utils';\n\n/** Places visible children in a single horizontal or vertical row. */\nexport class BoxContainer extends Container {\n static override readonly themeType: string = 'BoxContainer';\n private _orientation = Orientation.Horizontal;\n private _alignment = LayoutAlignment.Begin;\n private _reverse = false;\n\n get orientation (): Orientation {\n return this._orientation;\n }\n\n set orientation (value: Orientation) {\n assertEnumValue('BoxContainer orientation', value, Orientation.Vertical);\n if (this._orientation !== value) {\n this._orientation = value;\n this.invalidateMeasurement();\n }\n }\n\n get alignment (): LayoutAlignment {\n return this._alignment;\n }\n\n set alignment (value: LayoutAlignment) {\n assertEnumValue('BoxContainer alignment', value, LayoutAlignment.End);\n if (this._alignment !== value) {\n this._alignment = value;\n this.queueSort();\n }\n }\n\n get reverse (): boolean {\n return this._reverse;\n }\n\n set reverse (value: boolean) {\n if (this._reverse !== value) {\n this._reverse = value;\n this.queueSort();\n }\n }\n\n override getMinimumSize (): math.Vector2 {\n return this.measureChildren(false);\n }\n\n override getDesiredSize (): math.Vector2 {\n return this.measureChildren(true);\n }\n\n protected override sortChildren (): void {\n const children = this.getLayoutChildren();\n\n if (this.reverse) {\n children.reverse();\n }\n if (children.length === 0) {\n return;\n }\n\n const horizontal = this.orientation === Orientation.Horizontal;\n const availableMain = horizontal ? this.size.x : this.size.y;\n const availableCross = horizontal ? this.size.y : this.size.x;\n const separation = this.getThemeConstant('separation');\n const gapTotal = separation * (children.length - 1);\n const slotSpace = availableMain - gapTotal;\n const minimums = children.map(child => this.getMainSize(child.getBoundMinimumSize()));\n const desired = children.map(child => this.getMainSize(child.getBoundDesiredSize()));\n const maximums = children.map(child => this.getMainSize(child.getCombinedMaximumSize()));\n const sizes = minimums.slice();\n const integerPixels = Number.isInteger(slotSpace)\n && minimums.every(Number.isInteger)\n && desired.every(Number.isInteger)\n && maximums.every(value => value < 0 || Number.isInteger(value));\n let extra = Math.max(0, slotSpace - sum(sizes));\n\n extra = growSlots(\n sizes,\n desired,\n desired.map((value, index) => Math.max(0, value - sizes[index])),\n extra,\n integerPixels,\n );\n growSlots(\n sizes,\n maximums,\n children.map(child => this.isMainExpanded(child) ? child.stretchRatio : 0),\n extra,\n integerPixels,\n );\n\n const usedMain = sum(sizes) + gapTotal;\n let cursor = alignmentOffset(this.alignment, Math.max(0, availableMain - usedMain));\n\n for (let index = 0; index < children.length; index++) {\n const mainSize = sizes[index];\n const position = horizontal ? new math.Vector2(cursor, 0) : new math.Vector2(0, cursor);\n const size = horizontal\n ? new math.Vector2(mainSize, availableCross)\n : new math.Vector2(availableCross, mainSize);\n\n this.fitChildInRect(children[index], { position, size });\n cursor += mainSize + separation;\n }\n }\n\n private measureChildren (useDesired: boolean): math.Vector2 {\n const children = this.getLayoutChildren();\n let main = 0;\n let cross = 0;\n\n for (const child of children) {\n const childSize = useDesired ? child.getBoundDesiredSize() : child.getBoundMinimumSize();\n\n main += this.getMainSize(childSize);\n cross = Math.max(cross, this.getCrossSize(childSize));\n }\n if (children.length > 1) {\n main += this.getThemeConstant('separation') * (children.length - 1);\n }\n\n return this.orientation === Orientation.Horizontal\n ? new math.Vector2(main, cross)\n : new math.Vector2(cross, main);\n }\n\n private getMainSize (size: math.Vector2): number {\n return this.orientation === Orientation.Horizontal ? size.x : size.y;\n }\n\n private getCrossSize (size: math.Vector2): number {\n return this.orientation === Orientation.Horizontal ? size.y : size.x;\n }\n\n private isMainExpanded (child: Control): boolean {\n const flags = this.orientation === Orientation.Horizontal\n ? child.horizontalSizeFlags\n : child.verticalSizeFlags;\n\n return (flags & SizeFlags.Expand) !== 0;\n }\n\n private invalidateMeasurement (): void {\n this.updateMinimumSize();\n this.updateDesiredSize();\n this.queueSort();\n }\n\n override fromData (data: spec.BoxContainerData): void {\n super.fromData(data);\n if (data.alignment !== undefined) {\n this.alignment = data.alignment;\n }\n if (data.reverse !== undefined) {\n this.reverse = data.reverse;\n }\n }\n}\n\n@effectsClass('HBoxContainer')\nexport class HBoxContainer extends BoxContainer {\n static override readonly themeType: string = 'HBoxContainer';\n constructor (engine: Engine) {\n super(engine);\n this.orientation = Orientation.Horizontal;\n }\n}\n\n@effectsClass('VBoxContainer')\nexport class VBoxContainer extends BoxContainer {\n static override readonly themeType: string = 'VBoxContainer';\n constructor (engine: Engine) {\n super(engine);\n this.orientation = Orientation.Vertical;\n }\n}\n","import { effectsClass, math } from '@galacean/effects';\nimport type { spec } from '@galacean/effects';\nimport { Container, SizeFlags } from '../core/control';\nimport type { Control } from '../core/control';\nimport { growSlots, sum } from './utils';\n\ntype TrackMetrics = {\n minimum: number[],\n desired: number[],\n maximum: number[],\n expanded: boolean[],\n};\n\n/** Places visible children in LTR row-major cells without spanning. */\n@effectsClass('GridContainer')\nexport class GridContainer extends Container {\n static override readonly themeType: string = 'GridContainer';\n private _columns = 1;\n\n get columns (): number {\n return this._columns;\n }\n\n set columns (value: number) {\n if (!Number.isInteger(value) || value < 1) {\n throw new RangeError('GridContainer columns must be an integer greater than zero.');\n }\n if (this._columns !== value) {\n this._columns = value;\n this.invalidateMeasurement();\n }\n }\n\n override getMinimumSize (): math.Vector2 {\n return this.measureGrid(false);\n }\n\n override getDesiredSize (): math.Vector2 {\n return this.measureGrid(true);\n }\n\n protected override sortChildren (): void {\n const children = this.getLayoutChildren();\n\n if (children.length === 0) {\n return;\n }\n const columnCount = Math.min(this.columns, children.length);\n const rowCount = Math.ceil(children.length / this.columns);\n const columnMetrics = this.collectTrackMetrics(children, columnCount, true);\n const rowMetrics = this.collectTrackMetrics(children, rowCount, false);\n const horizontalSeparation = this.getThemeConstant('horizontalSeparation');\n const verticalSeparation = this.getThemeConstant('verticalSeparation');\n const columnSizes = this.allocateTracks(columnMetrics, this.size.x, horizontalSeparation);\n const rowSizes = this.allocateTracks(rowMetrics, this.size.y, verticalSeparation);\n const columnPositions = this.getTrackPositions(columnSizes, horizontalSeparation);\n const rowPositions = this.getTrackPositions(rowSizes, verticalSeparation);\n\n for (let index = 0; index < children.length; index++) {\n const column = index % this.columns;\n const row = Math.floor(index / this.columns);\n\n this.fitChildInRect(children[index], {\n position: new math.Vector2(columnPositions[column], rowPositions[row]),\n size: new math.Vector2(columnSizes[column], rowSizes[row]),\n });\n }\n }\n\n private measureGrid (useDesired: boolean): math.Vector2 {\n const children = this.getLayoutChildren();\n\n if (children.length === 0) {\n return new math.Vector2();\n }\n const columnCount = Math.min(this.columns, children.length);\n const rowCount = Math.ceil(children.length / this.columns);\n const columns = this.collectTrackMetrics(children, columnCount, true);\n const rows = this.collectTrackMetrics(children, rowCount, false);\n const columnSizes = useDesired ? columns.desired : columns.minimum;\n const rowSizes = useDesired ? rows.desired : rows.minimum;\n\n return new math.Vector2(\n sum(columnSizes) + this.getThemeConstant('horizontalSeparation') * Math.max(0, columnCount - 1),\n sum(rowSizes) + this.getThemeConstant('verticalSeparation') * Math.max(0, rowCount - 1),\n );\n }\n\n private collectTrackMetrics (children: Control[], count: number, horizontal: boolean): TrackMetrics {\n const minimum = new Array<number>(count).fill(0);\n const desired = new Array<number>(count).fill(0);\n const maximum = new Array<number>(count).fill(0);\n const unbounded = new Array<boolean>(count).fill(false);\n const expanded = new Array<boolean>(count).fill(false);\n\n for (let index = 0; index < children.length; index++) {\n const child = children[index];\n const track = horizontal ? index % this.columns : Math.floor(index / this.columns);\n const childMinimum = child.getBoundMinimumSize();\n const childDesired = child.getBoundDesiredSize();\n const childMaximum = child.getCombinedMaximumSize();\n const minimumValue = horizontal ? childMinimum.x : childMinimum.y;\n const desiredValue = horizontal ? childDesired.x : childDesired.y;\n const maximumValue = horizontal ? childMaximum.x : childMaximum.y;\n const flags = horizontal ? child.horizontalSizeFlags : child.verticalSizeFlags;\n\n minimum[track] = Math.max(minimum[track], minimumValue);\n desired[track] = Math.max(desired[track], desiredValue);\n if (maximumValue < 0) {\n unbounded[track] = true;\n } else {\n maximum[track] = Math.max(maximum[track], maximumValue);\n }\n expanded[track] ||= (flags & SizeFlags.Expand) !== 0;\n }\n for (let index = 0; index < count; index++) {\n maximum[index] = unbounded[index] ? -1 : Math.max(minimum[index], maximum[index]);\n }\n\n return { minimum, desired, maximum, expanded };\n }\n\n private allocateTracks (metrics: TrackMetrics, available: number, separation: number): number[] {\n const sizes = metrics.minimum.slice();\n const trackSpace = available - separation * Math.max(0, sizes.length - 1);\n const integerPixels = Number.isInteger(trackSpace)\n && metrics.minimum.every(Number.isInteger)\n && metrics.desired.every(Number.isInteger)\n && metrics.maximum.every(value => value < 0 || Number.isInteger(value));\n let extra = Math.max(0, trackSpace - sum(sizes));\n\n extra = growSlots(\n sizes,\n metrics.desired,\n metrics.desired.map((value, index) => Math.max(0, value - sizes[index])),\n extra,\n integerPixels,\n );\n growSlots(\n sizes,\n metrics.maximum,\n metrics.expanded.map(value => value ? 1 : 0),\n extra,\n integerPixels,\n );\n\n return sizes;\n }\n\n private getTrackPositions (sizes: number[], separation: number): number[] {\n const positions: number[] = [];\n let cursor = 0;\n\n for (const size of sizes) {\n positions.push(cursor);\n cursor += size + separation;\n }\n\n return positions;\n }\n\n private invalidateMeasurement (): void {\n this.updateMinimumSize();\n this.updateDesiredSize();\n this.queueSort();\n }\n\n override fromData (data: spec.GridContainerData): void {\n super.fromData(data);\n if (data.columns !== undefined) {\n this.columns = data.columns;\n }\n }\n}\n","import { effectsClass, math } from '@galacean/effects';\nimport { Container } from '../core/control';\n\n/** Adds four independent margins around every visible child. */\n@effectsClass('MarginContainer')\nexport class MarginContainer extends Container {\n static override readonly themeType: string = 'MarginContainer';\n\n override getMinimumSize (): math.Vector2 {\n return this.measureChildren(false);\n }\n\n override getDesiredSize (): math.Vector2 {\n return this.measureChildren(true);\n }\n\n protected override sortChildren (): void {\n const left = this.getThemeConstant('marginLeft');\n const top = this.getThemeConstant('marginTop');\n const right = this.getThemeConstant('marginRight');\n const bottom = this.getThemeConstant('marginBottom');\n const rect = {\n position: new math.Vector2(left, top),\n size: new math.Vector2(\n this.size.x - left - right,\n this.size.y - top - bottom,\n ),\n };\n\n for (const child of this.getLayoutChildren()) {\n this.fitChildInRect(child, rect);\n }\n }\n\n private measureChildren (useDesired: boolean): math.Vector2 {\n let width = 0;\n let height = 0;\n\n for (const child of this.getLayoutChildren()) {\n const size = useDesired ? child.getBoundDesiredSize() : child.getBoundMinimumSize();\n\n width = Math.max(width, size.x);\n height = Math.max(height, size.y);\n }\n\n const left = this.getThemeConstant('marginLeft');\n const top = this.getThemeConstant('marginTop');\n const right = this.getThemeConstant('marginRight');\n const bottom = this.getThemeConstant('marginBottom');\n\n return new math.Vector2(\n width + left + right,\n height + top + bottom,\n );\n }\n}\n","import { effectsClass, math } from '@galacean/effects';\nimport type { spec } from '@galacean/effects';\nimport { Container } from '../core/control';\n\n/** Centers children at their bound minimum size. */\n@effectsClass('CenterContainer')\nexport class CenterContainer extends Container {\n static override readonly themeType: string = 'CenterContainer';\n private _useTopLeft = false;\n\n get useTopLeft (): boolean {\n return this._useTopLeft;\n }\n\n set useTopLeft (value: boolean) {\n if (this._useTopLeft !== value) {\n this._useTopLeft = value;\n this.updateMinimumSize();\n this.updateDesiredSize();\n this.queueSort();\n }\n }\n\n override getMinimumSize (): math.Vector2 {\n return this.measureChildren(false);\n }\n\n override getDesiredSize (): math.Vector2 {\n return this.measureChildren(true);\n }\n\n protected override sortChildren (): void {\n for (const child of this.getLayoutChildren()) {\n const childSize = child.getBoundMinimumSize();\n const position = this.useTopLeft\n ? new math.Vector2(Math.floor(-childSize.x / 2), Math.floor(-childSize.y / 2))\n : new math.Vector2(\n Math.floor((this.size.x - childSize.x) / 2),\n Math.floor((this.size.y - childSize.y) / 2),\n );\n\n this.fitChildInRect(child, { position, size: childSize });\n }\n }\n\n private measureChildren (useDesired: boolean): math.Vector2 {\n if (this.useTopLeft) {\n return new math.Vector2();\n }\n let width = 0;\n let height = 0;\n\n for (const child of this.getLayoutChildren()) {\n const size = useDesired ? child.getBoundDesiredSize() : child.getBoundMinimumSize();\n\n width = Math.max(width, size.x);\n height = Math.max(height, size.y);\n }\n\n return new math.Vector2(width, height);\n }\n\n override fromData (data: spec.CenterContainerData): void {\n super.fromData(data);\n if (data.useTopLeft !== undefined) {\n this.useTopLeft = data.useTopLeft;\n }\n }\n}\n","import { effectsClass, math } from '@galacean/effects';\nimport type { spec } from '@galacean/effects';\nimport { Container } from '../core/control';\nimport { AspectRatioStretchMode, LayoutAlignment } from './enums';\nimport { assertEnumValue, assertFinite } from './utils';\n\n/** Fits every visible child into the same rectangle with a fixed width/height ratio. */\n@effectsClass('AspectRatioContainer')\nexport class AspectRatioContainer extends Container {\n static override readonly themeType: string = 'AspectRatioContainer';\n private _ratio = 1;\n private _stretchMode = AspectRatioStretchMode.Fit;\n private _horizontalAlignment = LayoutAlignment.Center;\n private _verticalAlignment = LayoutAlignment.Center;\n\n get ratio (): number {\n return this._ratio;\n }\n\n set ratio (value: number) {\n assertFinite('AspectRatioContainer ratio', value);\n if (value <= 0) {\n throw new RangeError('AspectRatioContainer ratio must be greater than zero.');\n }\n if (this._ratio !== value) {\n this._ratio = value;\n this.queueSort();\n }\n }\n\n get stretchMode (): AspectRatioStretchMode {\n return this._stretchMode;\n }\n\n set stretchMode (value: AspectRatioStretchMode) {\n assertEnumValue('AspectRatioContainer stretchMode', value, AspectRatioStretchMode.Cover);\n if (this._stretchMode !== value) {\n this._stretchMode = value;\n this.queueSort();\n }\n }\n\n get horizontalAlignment (): LayoutAlignment {\n return this._horizontalAlignment;\n }\n\n set horizontalAlignment (value: LayoutAlignment) {\n assertEnumValue('AspectRatioContainer horizontalAlignment', value, LayoutAlignment.End);\n if (this._horizontalAlignment !== value) {\n this._horizontalAlignment = value;\n this.queueSort();\n }\n }\n\n get verticalAlignment (): LayoutAlignment {\n return this._verticalAlignment;\n }\n\n set verticalAlignment (value: LayoutAlignment) {\n assertEnumValue('AspectRatioContainer verticalAlignment', value, LayoutAlignment.End);\n if (this._verticalAlignment !== value) {\n this._verticalAlignment = value;\n this.queueSort();\n }\n }\n\n override getMinimumSize (): math.Vector2 {\n return this.measureChildren(false);\n }\n\n override getDesiredSize (): math.Vector2 {\n return this.measureChildren(true);\n }\n\n protected override sortChildren (): void {\n for (const child of this.getLayoutChildren()) {\n const childMinimum = child.getBoundMinimumSize();\n const baseWidth = this.ratio;\n const baseHeight = 1;\n let scale: number;\n\n switch (this.stretchMode) {\n case AspectRatioStretchMode.WidthControlsHeight:\n scale = this.size.x / baseWidth;\n\n break;\n case AspectRatioStretchMode.HeightControlsWidth:\n scale = this.size.y / baseHeight;\n\n break;\n case AspectRatioStretchMode.Cover:\n scale = Math.max(this.size.x / baseWidth, this.size.y / baseHeight);\n\n break;\n default:\n scale = Math.min(this.size.x / baseWidth, this.size.y / baseHeight);\n\n break;\n }\n const childSize = new math.Vector2(\n Math.max(childMinimum.x, baseWidth * scale),\n Math.max(childMinimum.y, baseHeight * scale),\n );\n const position = new math.Vector2(\n this.getAlignedOffset(this.horizontalAlignment, this.size.x - childSize.x),\n this.getAlignedOffset(this.verticalAlignment, this.size.y - childSize.y),\n );\n\n this.fitChildInRect(child, { position, size: childSize });\n }\n }\n\n private measureChildren (useDesired: boolean): math.Vector2 {\n let width = 0;\n let height = 0;\n\n for (const child of this.getLayoutChildren()) {\n const size = useDesired ? child.getBoundDesiredSize() : child.getBoundMinimumSize();\n\n width = Math.max(width, size.x);\n height = Math.max(height, size.y);\n }\n\n return new math.Vector2(width, height);\n }\n\n private getAlignedOffset (alignment: LayoutAlignment, remaining: number): number {\n if (alignment === LayoutAlignment.Center) {\n return remaining / 2;\n }\n if (alignment === LayoutAlignment.End) {\n return remaining;\n }\n\n return 0;\n }\n\n override fromData (data: spec.AspectRatioContainerData): void {\n super.fromData(data);\n if (data.ratio !== undefined) {\n this.ratio = data.ratio;\n }\n if (data.stretchMode !== undefined) {\n this.stretchMode = data.stretchMode;\n }\n if (data.horizontalAlignment !== undefined) {\n this.horizontalAlignment = data.horizontalAlignment;\n }\n if (data.verticalAlignment !== undefined) {\n this.verticalAlignment = data.verticalAlignment;\n }\n }\n}\n","import { effectsClass, math } from '@galacean/effects';\nimport { Container } from '../core/control';\n\n@effectsClass('PanelContainer')\nexport class PanelContainer extends Container {\n static override readonly themeType: string = 'PanelContainer';\n\n override getMinimumSize (): math.Vector2 {\n return this.measureChildren(false);\n }\n\n override getDesiredSize (): math.Vector2 {\n return this.measureChildren(true);\n }\n\n override draw (): void {\n this.drawStyleBox(this.getThemeStyleBox('panel'), 0, 0, this.width, this.height);\n }\n\n protected override sortChildren (): void {\n const margins = this.getThemeStyleBox('panel').getContentMargins();\n const rect = {\n position: new math.Vector2(margins.left, margins.top),\n size: new math.Vector2(\n Math.max(0, this.width - margins.left - margins.right),\n Math.max(0, this.height - margins.top - margins.bottom),\n ),\n };\n\n for (const child of this.getLayoutChildren()) {\n this.fitChildInRect(child, rect);\n }\n }\n\n private measureChildren (desired: boolean): math.Vector2 {\n let width = 0;\n let height = 0;\n\n for (const child of this.getLayoutChildren()) {\n const size = desired ? child.getBoundDesiredSize() : child.getBoundMinimumSize();\n\n width = Math.max(width, size.x);\n height = Math.max(height, size.y);\n }\n const margins = this.getThemeStyleBox('panel').getContentMargins();\n\n return new math.Vector2(\n width + margins.left + margins.right,\n height + margins.top + margins.bottom,\n );\n }\n}\n","import { effectsClass, math } from '@galacean/effects';\nimport type { Engine } from '@galacean/effects';\nimport { Control } from '../core/control';\nimport { MouseFilter } from '../core/enums';\n\nabstract class Separator extends Control {\n constructor (engine: Engine, private readonly vertical: boolean) {\n super(engine);\n this.mouseFilter = MouseFilter.Ignore;\n }\n\n override getMinimumSize (): math.Vector2 {\n const minimum = this.getThemeStyleBox('separator').getMinimumSize();\n const thickness = Math.max(0, this.getThemeConstant('separation'));\n\n return this.vertical\n ? new math.Vector2(Math.max(minimum.x, thickness), minimum.y)\n : new math.Vector2(minimum.x, Math.max(minimum.y, thickness));\n }\n\n override getDesiredSize (): math.Vector2 {\n return this.getMinimumSize();\n }\n\n override draw (): void {\n const minimum = this.getMinimumSize();\n const width = this.vertical ? minimum.x : this.width;\n const height = this.vertical ? this.height : minimum.y;\n\n this.drawStyleBox(\n this.getThemeStyleBox('separator'),\n (this.width - width) * 0.5,\n (this.height - height) * 0.5,\n width,\n height,\n );\n }\n}\n\n@effectsClass('HSeparator')\nexport class HSeparator extends Separator {\n static override readonly themeType: string = 'HSeparator';\n\n constructor (engine: Engine) {\n super(engine, false);\n }\n}\n\n@effectsClass('VSeparator')\nexport class VSeparator extends Separator {\n static override readonly themeType: string = 'VSeparator';\n\n constructor (engine: Engine) {\n super(engine, true);\n }\n}\n","export enum ScrollMode {\n Disabled,\n Auto,\n ShowAlways,\n ShowNever,\n Reserve,\n MaximizeFirst,\n}\n","import { EventEmitter } from '@galacean/effects';\nimport type { Engine, EventEmitterListener, spec } from '@galacean/effects';\nimport { Control } from '../core/control';\nimport type { ControlEvent } from '../core/control';\n\nexport type RangeEvent = ControlEvent & {\n changed: [],\n valueChanged: [value: number],\n};\n\ntype SharedRange = {\n value: number,\n minValue: number,\n maxValue: number,\n step: number,\n page: number,\n exponentialRatio: boolean,\n allowGreater: boolean,\n allowLesser: boolean,\n owners: Set<Range>,\n};\n\n/** Numeric value model shared by scroll bars and future slider controls. */\nexport class Range extends Control {\n static override readonly themeType: string = 'Range';\n private shared: SharedRange;\n private _rounded = false;\n private suppressSignals = false;\n private readonly rangeEventEmitter = new EventEmitter<RangeEvent>();\n\n constructor (engine: Engine) {\n super(engine);\n this.shared = createSharedRange();\n this.shared.owners.add(this);\n }\n\n get minValue (): number {\n return this.shared.minValue;\n }\n\n set minValue (value: number) {\n this.setMinValue(value);\n }\n\n get maxValue (): number {\n return this.shared.maxValue;\n }\n\n set maxValue (value: number) {\n this.setMaxValue(value);\n }\n\n get step (): number {\n return this.shared.step;\n }\n\n set step (value: number) {\n this.setStep(value);\n }\n\n get page (): number {\n return this.shared.page;\n }\n\n set page (value: number) {\n this.setPage(value);\n }\n\n get value (): number {\n return this.shared.value;\n }\n\n set value (value: number) {\n this.setValue(value);\n }\n\n get ratio (): number {\n return this.getAsRatio();\n }\n\n set ratio (value: number) {\n this.setAsRatio(value);\n }\n\n get exponentialRatio (): boolean {\n return this.shared.exponentialRatio;\n }\n\n set exponentialRatio (value: boolean) {\n this.shared.exponentialRatio = value;\n }\n\n get rounded (): boolean {\n return this._rounded;\n }\n\n set rounded (value: boolean) {\n this._rounded = value;\n }\n\n get allowGreater (): boolean {\n return this.shared.allowGreater;\n }\n\n set allowGreater (value: boolean) {\n this.shared.allowGreater = value;\n }\n\n get allowLesser (): boolean {\n return this.shared.allowLesser;\n }\n\n set allowLesser (value: boolean) {\n this.shared.allowLesser = value;\n }\n\n override on<E extends keyof RangeEvent> (\n eventName: E,\n listener: EventEmitterListener<RangeEvent[E]>,\n ): void {\n if (eventName === 'changed' || eventName === 'valueChanged') {\n this.rangeEventEmitter.on(eventName, listener);\n } else {\n super.on(eventName, listener as never);\n }\n }\n\n override off<E extends keyof RangeEvent> (\n eventName: E,\n listener: EventEmitterListener<RangeEvent[E]>,\n ): void {\n if (eventName === 'changed' || eventName === 'valueChanged') {\n this.rangeEventEmitter.off(eventName, listener);\n } else {\n super.off(eventName, listener as never);\n }\n }\n\n setValue (value: number): void {\n const previous = this.shared.value;\n\n this.shared.value = this.calculateValue(value);\n if (!valuesEqual(previous, this.shared.value)) {\n this.notifyValueChanged();\n }\n }\n\n setValueNoSignal (value: number): void {\n const previous = this.shared.value;\n\n this.shared.value = this.calculateValue(value);\n if (!valuesEqual(previous, this.shared.value)) {\n for (const owner of this.shared.owners) {\n owner.valueChanged(this.shared.value);\n }\n }\n }\n\n setMinValue (value: number): void {\n assertFinite('Range minValue', value);\n if (this.shared.minValue === value) {\n return;\n }\n this.shared.minValue = value;\n this.shared.maxValue = Math.max(this.shared.maxValue, value);\n this.shared.page = clamp(this.shared.page, 0, this.shared.maxValue - value);\n this.setValue(this.shared.value);\n this.notifyChanged();\n }\n\n setMaxValue (value: number): void {\n assertFinite('Range maxValue', value);\n const maximum = Math.max(value, this.shared.minValue);\n\n if (this.shared.maxValue === maximum) {\n return;\n }\n this.shared.maxValue = maximum;\n this.shared.page = clamp(this.shared.page, 0, maximum - this.shared.minValue);\n this.setValue(this.shared.value);\n this.notifyChanged();\n }\n\n setStep (value: number): void {\n assertFinite('Range step', value);\n if (this.shared.step === value) {\n return;\n }\n this.shared.step = value;\n this.notifyChanged();\n }\n\n setPage (value: number): void {\n assertFinite('Range page', value);\n const page = clamp(value, 0, this.shared.maxValue - this.shared.minValue);\n\n if (this.shared.page === page) {\n return;\n }\n this.shared.page = page;\n this.setValue(this.shared.value);\n this.notifyChanged();\n }\n\n setAsRatio (ratio: number): void {\n assertFinite('Range ratio', ratio);\n const normalized = clamp(ratio, 0, 1);\n let value: number;\n\n if (this.shared.exponentialRatio && this.shared.minValue >= 0 && this.shared.maxValue > 0) {\n const minimum = this.shared.minValue === 0 ? 0 : Math.log2(this.shared.minValue);\n const maximum = Math.log2(this.shared.maxValue);\n\n value = 2 ** (minimum + (maximum - minimum) * normalized);\n } else {\n const span = this.shared.maxValue - this.shared.minValue;\n\n value = this.shared.minValue + span * normalized;\n if (this.shared.step > 0) {\n value = this.shared.minValue + Math.round(span * normalized / this.shared.step) * this.shared.step;\n }\n }\n this.setValue(clamp(value, this.shared.minValue, this.shared.maxValue));\n }\n\n getAsRatio (): number {\n const span = this.shared.maxValue - this.shared.minValue;\n\n if (span === 0) {\n return 1;\n }\n const value = clamp(this.shared.value, this.shared.minValue, this.shared.maxValue);\n\n if (this.shared.exponentialRatio && this.shared.minValue >= 0 && this.shared.maxValue > 0) {\n if (value <= 0) {\n return 0;\n }\n const minimum = this.shared.minValue === 0 ? 0 : Math.log2(this.shared.minValue);\n const maximum = Math.log2(this.shared.maxValue);\n\n return clamp((Math.log2(value) - minimum) / (maximum - minimum), 0, 1);\n }\n\n return clamp((value - this.shared.minValue) / span, 0, 1);\n }\n\n share (range: Range): void {\n if (range === this) {\n return;\n }\n range.attachShared(this.shared);\n range.rangeEventEmitter.emit('changed');\n range.rangeEventEmitter.emit('valueChanged', range.value);\n }\n\n unshare (): void {\n const previous = this.shared;\n const shared = createSharedRange();\n\n shared.value = previous.value;\n shared.minValue = previous.minValue;\n shared.maxValue = previous.maxValue;\n shared.step = previous.step;\n shared.page = previous.page;\n shared.exponentialRatio = previous.exponentialRatio;\n shared.allowGreater = previous.allowGreater;\n shared.allowLesser = previous.allowLesser;\n this.attachShared(shared);\n }\n\n override dispose (): void {\n this.shared.owners.delete(this);\n super.dispose();\n }\n\n protected valueChanged (value: number): void {}\n\n private calculateValue (value: number): number {\n if (Number.isNaN(value)) {\n return value;\n }\n assertFinite('Range value', value);\n let calculated = value;\n\n if (this.shared.step > 0) {\n calculated = snapFrom(this.shared.minValue, calculated, this.shared.step);\n }\n if (this._rounded) {\n calculated = Math.round(calculated);\n }\n if (!this.shared.allowGreater) {\n calculated = Math.min(calculated, this.shared.maxValue - this.shared.page);\n }\n if (!this.shared.allowLesser) {\n calculated = Math.max(calculated, this.shared.minValue);\n }\n\n return calculated;\n }\n\n private attachShared (shared: SharedRange): void {\n if (this.shared === shared) {\n return;\n }\n this.shared.owners.delete(this);\n this.shared = shared;\n shared.owners.add(this);\n }\n\n private notifyValueChanged (): void {\n for (const owner of this.shared.owners) {\n owner.valueChanged(this.shared.value);\n if (!this.suppressSignals) {\n owner.rangeEventEmitter.emit('valueChanged', this.shared.value);\n }\n }\n }\n\n private notifyChanged (): void {\n for (const owner of this.shared.owners) {\n if (!this.suppressSignals) {\n owner.rangeEventEmitter.emit('changed');\n }\n }\n }\n\n override fromData (data: spec.RangeData): void {\n this.suppressSignals = true;\n super.fromData(data);\n if (data.allowGreater !== undefined) {\n this.allowGreater = data.allowGreater;\n }\n if (data.allowLesser !== undefined) {\n this.allowLesser = data.allowLesser;\n }\n if (data.exponentialRatio !== undefined) {\n this.exponentialRatio = data.exponentialRatio;\n }\n if (data.rounded !== undefined) {\n this.rounded = data.rounded;\n }\n if (data.minValue !== undefined) {\n this.setMinValue(data.minValue);\n }\n if (data.maxValue !== undefined) {\n this.setMaxValue(data.maxValue);\n }\n if (data.step !== undefined) {\n this.setStep(data.step);\n }\n if (data.page !== undefined) {\n this.setPage(data.page);\n }\n if (data.value !== undefined) {\n this.setValueNoSignal(data.value);\n }\n this.suppressSignals = false;\n }\n}\n\nfunction createSharedRange (): SharedRange {\n return {\n value: 0,\n minValue: 0,\n maxValue: 100,\n step: 1,\n page: 0,\n exponentialRatio: false,\n allowGreater: false,\n allowLesser: false,\n owners: new Set(),\n };\n}\n\nfunction snapFrom (minimum: number, value: number, step: number): number {\n return Number((minimum + Math.round((value - minimum) / step) * step).toPrecision(15));\n}\n\nfunction valuesEqual (left: number, right: number): boolean {\n return left === right || (Number.isNaN(left) && Number.isNaN(right));\n}\n\nfunction clamp (value: number, minimum: number, maximum: number): number {\n return Math.min(maximum, Math.max(minimum, value));\n}\n\nfunction assertFinite (name: string, value: number): void {\n if (!Number.isFinite(value)) {\n throw new RangeError(`${name} must be finite.`);\n }\n}\n","import {\n EventEmitter,\n MouseButton,\n effectsClass,\n math,\n} from '@galacean/effects';\nimport { FocusMode } from '../core/enums';\nimport type {\n Engine,\n EventEmitterListener,\n InputEventKey,\n InputEventMouseButton,\n InputEventMouseMotion,\n spec,\n} from '@galacean/effects';\nimport { Orientation } from '../layout/enums';\nimport { Range } from './range';\nimport type { RangeEvent } from './range';\n\nexport type ScrollBarEvent = RangeEvent & {\n scrolling: [],\n};\n\ntype Highlight = 'none' | 'decrement' | 'track' | 'increment';\n\ntype GrabberRect = {\n x: number,\n y: number,\n width: number,\n height: number,\n};\n\nconst PAGE_DIVISOR = 8;\n\n/** A horizontal or vertical range scroll bar. */\nexport class ScrollBar extends Range {\n static override readonly themeType: string = 'ScrollBar';\n static readonly pageDivisor = PAGE_DIVISOR;\n\n private readonly scrollBarEventEmitter = new EventEmitter<ScrollBarEvent>();\n private _orientation: Orientation;\n private _customStep = -1;\n private highlight: Highlight = 'none';\n private decrementActive = false;\n private incrementActive = false;\n private dragging = false;\n private dragPosition = 0;\n private dragRatio = 0;\n\n constructor (engine: Engine, orientation = Orientation.Vertical) {\n super(engine);\n\n this._orientation = orientation;\n this.step = 0;\n this.focusMode = FocusMode.Accessibility;\n }\n\n get orientation (): Orientation {\n return this._orientation;\n }\n\n set orientation (value: Orientation) {\n if (value !== Orientation.Horizontal && value !== Orientation.Vertical) {\n throw new RangeError('Invalid ScrollBar orientation.');\n }\n if (this._orientation !== value) {\n this._orientation = value;\n this.updateMinimumSize();\n }\n }\n\n get customStep (): number {\n return this._customStep;\n }\n\n set customStep (value: number) {\n if (!Number.isFinite(value)) {\n throw new RangeError('ScrollBar customStep must be finite.');\n }\n this._customStep = value;\n }\n\n override on<E extends keyof ScrollBarEvent> (\n eventName: E,\n listener: EventEmitterListener<ScrollBarEvent[E]>,\n ): void {\n if (eventName === 'scrolling') {\n this.scrollBarEventEmitter.on(eventName, listener);\n } else {\n super.on(eventName, listener as never);\n }\n }\n\n override off<E extends keyof ScrollBarEvent> (\n eventName: E,\n listener: EventEmitterListener<ScrollBarEvent[E]>,\n ): void {\n if (eventName === 'scrolling') {\n this.scrollBarEventEmitter.off(eventName, listener);\n } else {\n super.off(eventName, listener as never);\n }\n }\n\n scroll (amount: number): void {\n this.scrollTo(this.value + amount);\n }\n\n scrollTo (position: number): void {\n const previous = this.value;\n\n this.setValue(position);\n if (previous !== this.value) {\n this.scrollBarEventEmitter.emit('scrolling');\n }\n }\n\n override getMinimumSize (): math.Vector2 {\n const decrementSize = this.getButtonAxisSize(false);\n const incrementSize = this.getButtonAxisSize(true);\n const incrementCrossSize = this.getButtonCrossSize(true);\n const scrollMinimum = this.getThemeStyleBox('scroll').getMinimumSize();\n const grabberMinimum = this.getGrabberMinimumSize();\n\n return this.orientation === Orientation.Horizontal\n ? new math.Vector2(\n decrementSize + incrementSize + scrollMinimum.x + grabberMinimum,\n Math.max(incrementCrossSize, scrollMinimum.y) + this.getCrossStartPadding() + this.getCrossEndPadding(),\n )\n : new math.Vector2(\n Math.max(incrementCrossSize, scrollMinimum.x) + this.getCrossStartPadding() + this.getCrossEndPadding(),\n decrementSize + incrementSize + scrollMinimum.y + grabberMinimum,\n );\n }\n\n override draw (): void {\n const horizontal = this.orientation === Orientation.Horizontal;\n const axisSize = horizontal ? this.width : this.height;\n const decrementState = this.decrementActive\n ? 'Pressed'\n : this.highlight === 'decrement' ? 'Highlight' : '';\n const incrementState = this.incrementActive\n ? 'Pressed'\n : this.highlight === 'increment' ? 'Highlight' : '';\n const decrementSize = this.getButtonAxisSize(false, decrementState);\n const incrementSize = this.getButtonAxisSize(true, incrementState);\n const trackLength = Math.max(0, axisSize - decrementSize - incrementSize);\n const grabber = this.getGrabberRect();\n const grabberStyle = this.dragging\n ? 'grabberPressed'\n : this.highlight === 'track' ? 'grabberHighlight' : 'grabber';\n const scrollStyle = this.hasFocus(true) ? 'scrollFocus' : 'scroll';\n\n if (horizontal) {\n this.drawButtonIcon(false, decrementState, 0, 0);\n this.drawStyleBox(this.getThemeStyleBox(scrollStyle), decrementSize, 0, trackLength, this.height);\n this.drawButtonIcon(true, incrementState, axisSize - incrementSize, 0);\n } else {\n this.drawButtonIcon(false, decrementState, 0, 0);\n this.drawStyleBox(this.getThemeStyleBox(scrollStyle), 0, decrementSize, this.width, trackLength);\n this.drawButtonIcon(true, incrementState, 0, axisSize - incrementSize);\n }\n this.drawStyleBox(this.getThemeStyleBox(grabberStyle), grabber.x, grabber.y, grabber.width, grabber.height);\n }\n\n override onMouseEnter (location: math.Vector2): void {\n this.updateHighlight(this.getAxis(location));\n }\n\n override onMouseMove (event: InputEventMouseMotion): void {\n const position = this.getAxis(event.position);\n\n if (this.dragging) {\n const area = this.getAreaSize();\n\n if (area > 0) {\n const previous = this.value;\n\n this.setAsRatio(this.dragRatio + (position - this.dragPosition) / area);\n if (previous !== this.value) {\n this.scrollBarEventEmitter.emit('scrolling');\n }\n }\n\n return;\n }\n this.updateHighlight(position);\n }\n\n override onMouseLeave (): void {\n if (!this.dragging) {\n this.highlight = 'none';\n }\n }\n\n override onMouseDown (event: InputEventMouseButton): void {\n if (event.buttonIndex !== MouseButton.Left) {\n return;\n }\n const position = this.getAxis(event.position);\n const total = this.getAxisSize();\n const grabberOffset = this.getGrabberOffset();\n const grabberSize = this.getGrabberSize();\n const decrementSize = this.getButtonAxisSize(false);\n const incrementSize = this.getButtonAxisSize(true);\n const trackPosition = position - decrementSize - this.getTrackStartMargin();\n\n if (position < decrementSize) {\n this.decrementActive = true;\n this.scroll(-this.getIncrement());\n } else if (position > total - incrementSize) {\n this.incrementActive = true;\n this.scroll(this.getIncrement());\n } else if (trackPosition < grabberOffset) {\n this.scroll(-this.getPageIncrement());\n } else if (trackPosition < grabberOffset + grabberSize) {\n this.dragging = true;\n this.dragPosition = position;\n this.dragRatio = this.getAsRatio();\n } else {\n this.scroll(this.getPageIncrement());\n }\n event.accept();\n }\n\n override onMouseUp (event: InputEventMouseButton): void {\n if (event.buttonIndex !== MouseButton.Left) {\n return;\n }\n this.decrementActive = false;\n this.incrementActive = false;\n this.dragging = false;\n this.updateHighlight(this.getAxis(event.position));\n }\n\n override onMouseWheel (event: InputEventMouseButton): void {\n if (event.buttonIndex !== MouseButton.WheelUp && event.buttonIndex !== MouseButton.WheelDown) {\n return;\n }\n const previous = this.value;\n const direction = event.buttonIndex === MouseButton.WheelUp ? -1 : 1;\n const wheelIncrement = this.page > 0\n ? this.page / PAGE_DIVISOR\n : (this.maxValue - this.minValue) / 16;\n const amount = Math.max(wheelIncrement * event.factor, Math.max(0, this.step));\n\n this.scroll(direction * amount);\n if (this.value !== previous) {\n event.accept();\n }\n }\n\n override onKeyDown (event: InputEventKey): void {\n let target: number | undefined;\n const increment = this.getIncrement();\n\n if ((this.orientation === Orientation.Horizontal && event.keycode === 'ArrowLeft') ||\n (this.orientation === Orientation.Vertical && event.keycode === 'ArrowUp')) {\n target = this.value - increment;\n } else if ((this.orientation === Orientation.Horizontal && event.keycode === 'ArrowRight') ||\n (this.orientation === Orientation.Vertical && event.keycode === 'ArrowDown')) {\n target = this.value + increment;\n } else if (event.keycode === 'Home') {\n target = this.minValue;\n } else if (event.keycode === 'End') {\n target = this.maxValue;\n }\n if (target !== undefined) {\n const previous = this.value;\n\n this.scrollTo(target);\n if (this.value !== previous) {\n event.accept();\n }\n }\n }\n\n override onScrollBegin (): void {\n this.decrementActive = false;\n this.incrementActive = false;\n this.dragging = false;\n }\n\n private getAxis (position: math.Vector2): number {\n return this.orientation === Orientation.Horizontal ? position.x : position.y;\n }\n\n private getAxisSize (): number {\n return this.orientation === Orientation.Horizontal ? this.width : this.height;\n }\n\n private getIncrement (): number {\n return this.customStep >= 0 ? this.customStep : this.step;\n }\n\n private getPageIncrement (): number {\n return this.page > 0 ? this.page : (this.maxValue - this.minValue) / 16;\n }\n\n private getTrackSize (): number {\n return Math.max(0, this.getAxisSize() - this.getButtonAxisSize(false) - this.getButtonAxisSize(true));\n }\n\n private getAreaSize (): number {\n const scrollMinimum = this.getThemeStyleBox('scroll').getMinimumSize();\n const scrollAxisMinimum = this.orientation === Orientation.Horizontal ? scrollMinimum.x : scrollMinimum.y;\n\n return Math.max(0, this.getTrackSize() - scrollAxisMinimum - this.getGrabberMinimumSize());\n }\n\n private getGrabberSize (): number {\n const range = this.maxValue - this.minValue;\n\n if (range <= 0) {\n return 0;\n }\n\n return Math.min(\n this.getTrackSize(),\n this.getGrabberMinimumSize() + Math.max(0, this.page) / range * this.getAreaSize(),\n );\n }\n\n private getGrabberMinimumSize (): number {\n const minimum = this.getThemeStyleBox('grabber').getMinimumSize();\n\n return this.orientation === Orientation.Horizontal ? minimum.x : minimum.y;\n }\n\n private getGrabberOffset (): number {\n return this.getAreaSize() * this.getAsRatio();\n }\n\n private getGrabberRect (): GrabberRect {\n const offset = this.getButtonAxisSize(false) + this.getTrackStartMargin() + this.getGrabberOffset();\n const size = this.getGrabberSize();\n const crossStart = this.getCrossStartPadding();\n const crossSize = Math.max(0, (this.orientation === Orientation.Horizontal ? this.height : this.width)\n - crossStart - this.getCrossEndPadding());\n\n return this.orientation === Orientation.Horizontal\n ? { x: offset, y: crossStart, width: size, height: crossSize }\n : { x: crossStart, y: offset, width: crossSize, height: size };\n }\n\n private getTrackStartMargin (): number {\n const margins = this.getThemeStyleBox('scroll').getContentMargins();\n\n return this.orientation === Orientation.Horizontal ? margins.left : margins.top;\n }\n\n private getCrossStartPadding (): number {\n return Math.max(0, this.getThemeConstant(\n this.orientation === Orientation.Horizontal ? 'paddingTop' : 'paddingLeft',\n ));\n }\n\n private getCrossEndPadding (): number {\n return Math.max(0, this.getThemeConstant(\n this.orientation === Orientation.Horizontal ? 'paddingBottom' : 'paddingRight',\n ));\n }\n\n private updateHighlight (position: number): void {\n const total = this.getAxisSize();\n const decrementSize = this.getButtonAxisSize(false);\n const incrementSize = this.getButtonAxisSize(true);\n\n if (position < 0 || position > total) {\n this.highlight = 'none';\n } else if (position < decrementSize) {\n this.highlight = 'decrement';\n } else if (position > total - incrementSize) {\n this.highlight = 'increment';\n } else {\n this.highlight = 'track';\n }\n }\n\n private drawButtonIcon (\n increment: boolean,\n state: '' | 'Highlight' | 'Pressed',\n x: number,\n y: number,\n ): void {\n const icon = this.getButtonIcon(increment, state);\n\n if (icon) {\n this.drawTexture(x, y, icon.width, icon.height, icon);\n }\n }\n\n private getButtonIcon (increment: boolean, state: '' | 'Highlight' | 'Pressed' = '') {\n const name = increment ? 'increment' : 'decrement';\n\n return this.getThemeIcon(`${name}${state}`) ?? this.getThemeIcon(name);\n }\n\n private getButtonAxisSize (increment: boolean, state: '' | 'Highlight' | 'Pressed' = ''): number {\n const icon = this.getButtonIcon(increment, state);\n\n return icon ? this.orientation === Orientation.Horizontal ? icon.width : icon.height : 0;\n }\n\n private getButtonCrossSize (increment: boolean): number {\n const icon = this.getButtonIcon(increment);\n\n return icon ? this.orientation === Orientation.Horizontal ? icon.height : icon.width : 0;\n }\n\n override fromData (data: spec.ScrollBarData): void {\n super.fromData(data);\n if (data.customStep !== undefined) {\n this.customStep = data.customStep;\n }\n }\n}\n\n@effectsClass('HScrollBar')\nexport class HScrollBar extends ScrollBar {\n static override readonly themeType: string = 'HScrollBar';\n constructor (engine: Engine) {\n super(engine, Orientation.Horizontal);\n }\n}\n\n@effectsClass('VScrollBar')\nexport class VScrollBar extends ScrollBar {\n static override readonly themeType: string = 'VScrollBar';\n constructor (engine: Engine) {\n super(engine, Orientation.Vertical);\n }\n}\n","import {\n EventEmitter,\n MouseButton,\n effectsClass,\n math,\n} from '@galacean/effects';\nimport type {\n Engine,\n EventEmitterListener,\n InputEventMouseButton,\n InputEventScreenDrag,\n InputEventScreenTouch,\n spec,\n} from '@galacean/effects';\nimport { Container, SizeFlags } from '../core/control';\nimport type { Control, ControlEvent, RootControl } from '../core/control';\nimport { FocusMode } from '../core/enums';\nimport { ScrollMode } from './enums';\nimport { HScrollBar, ScrollBar, VScrollBar } from './scroll-bar';\n\nexport type ScrollContainerEvent = ControlEvent & {\n scrollStarted: [],\n scrollEnded: [],\n};\n\ntype ScrollLayout = {\n horizontalVisible: boolean,\n verticalVisible: boolean,\n horizontalReserved: boolean,\n verticalReserved: boolean,\n viewportWidth: number,\n viewportHeight: number,\n};\n\nconst INERTIA_DECELERATION = 1000;\n\n/** Clips and scrolls its content children using two internal Range scroll bars. */\n@effectsClass('ScrollContainer')\nexport class ScrollContainer extends Container {\n static override readonly themeType: string = 'ScrollContainer';\n private readonly scrollContainerEventEmitter = new EventEmitter<ScrollContainerEvent>();\n private readonly horizontalBar: HScrollBar;\n private readonly verticalBar: VScrollBar;\n private _horizontalScrollMode = ScrollMode.Auto;\n private _verticalScrollMode = ScrollMode.Auto;\n private _scrollHorizontalByDefault = false;\n private _deadzone = 0;\n private _followFocus = false;\n private focusRoot: RootControl | null = null;\n private touchIndex: number | null = null;\n private touchDecelerating = false;\n private beyondDeadzone = false;\n private readonly dragSpeed = new math.Vector2();\n private readonly dragAccum = new math.Vector2();\n private readonly dragFrom = new math.Vector2();\n private readonly lastDragAccum = new math.Vector2();\n private motionSampleTime = 0;\n private viewportWidth = 0;\n private viewportHeight = 0;\n\n private readonly scrollMoved = () => this.queueSort();\n private readonly controlStateChanged = () => {\n if (!this.visibleInHierarchy || !this.enabledInHierarchy) {\n this.cancelTouchDrag();\n }\n };\n private readonly focusOwnerChanged = (control: Control | null) => {\n if (this.followFocus && control && this.isContentDescendant(control)) {\n this.ensureControlVisible(control);\n }\n };\n\n constructor (engine: Engine) {\n super(engine);\n this.horizontalBar = new HScrollBar(engine);\n this.verticalBar = new VScrollBar(engine);\n this.horizontalBar.focusMode = FocusMode.None;\n this.verticalBar.focusMode = FocusMode.None;\n this.clipContents = true;\n this.addChild(this.horizontalBar);\n this.addChild(this.verticalBar);\n this.horizontalBar.on('valueChanged', this.scrollMoved);\n this.verticalBar.on('valueChanged', this.scrollMoved);\n this.on('visibilityChanged', this.controlStateChanged);\n this.on('enabledChanged', this.controlStateChanged);\n }\n\n get hScroll (): number {\n return this.horizontalBar.value;\n }\n\n set hScroll (value: number) {\n this.horizontalBar.setValue(value);\n this.cancelTouchDrag();\n }\n\n get vScroll (): number {\n return this.verticalBar.value;\n }\n\n set vScroll (value: number) {\n this.verticalBar.setValue(value);\n this.cancelTouchDrag();\n }\n\n get horizontalScrollMode (): ScrollMode {\n return this._horizontalScrollMode;\n }\n\n set horizontalScrollMode (value: ScrollMode) {\n assertScrollMode(value);\n if (this._horizontalScrollMode !== value) {\n this._horizontalScrollMode = value;\n this.invalidateScrollLayout();\n }\n }\n\n get verticalScrollMode (): ScrollMode {\n return this._verticalScrollMode;\n }\n\n set verticalScrollMode (value: ScrollMode) {\n assertScrollMode(value);\n if (this._verticalScrollMode !== value) {\n this._verticalScrollMode = value;\n this.invalidateScrollLayout();\n }\n }\n\n get horizontalCustomStep (): number {\n return this.horizontalBar.customStep;\n }\n\n set horizontalCustomStep (value: number) {\n this.horizontalBar.customStep = value;\n }\n\n get verticalCustomStep (): number {\n return this.verticalBar.customStep;\n }\n\n set verticalCustomStep (value: number) {\n this.verticalBar.customStep = value;\n }\n\n get scrollHorizontalByDefault (): boolean {\n return this._scrollHorizontalByDefault;\n }\n\n set scrollHorizontalByDefault (value: boolean) {\n this._scrollHorizontalByDefault = value;\n }\n\n get deadzone (): number {\n return this._deadzone;\n }\n\n set deadzone (value: number) {\n if (!Number.isFinite(value) || value < 0) {\n throw new RangeError('ScrollContainer deadzone must be a non-negative finite number.');\n }\n this._deadzone = value;\n }\n\n get followFocus (): boolean {\n return this._followFocus;\n }\n\n set followFocus (value: boolean) {\n this._followFocus = value;\n }\n\n override on<E extends keyof ScrollContainerEvent> (\n eventName: E,\n listener: EventEmitterListener<ScrollContainerEvent[E]>,\n ): void {\n if (eventName === 'scrollStarted' || eventName === 'scrollEnded') {\n this.scrollContainerEventEmitter.on(eventName, listener);\n } else {\n super.on(eventName, listener as never);\n }\n }\n\n override off<E extends keyof ScrollContainerEvent> (\n eventName: E,\n listener: EventEmitterListener<ScrollContainerEvent[E]>,\n ): void {\n if (eventName === 'scrollStarted' || eventName === 'scrollEnded') {\n this.scrollContainerEventEmitter.off(eventName, listener);\n } else {\n super.off(eventName, listener as never);\n }\n }\n\n getHScrollBar (): HScrollBar {\n return this.horizontalBar;\n }\n\n getVScrollBar (): VScrollBar {\n return this.verticalBar;\n }\n\n override intersectsChildContent (child: Control, position: math.Vector2): boolean {\n if (child === this.horizontalBar || child === this.verticalBar) {\n return true;\n }\n const transform = this.getGlobalTransform2D().elements;\n const globalPosition = new math.Vector2(\n transform[0] * position.x + transform[3] * position.y + transform[6],\n transform[1] * position.x + transform[4] * position.y + transform[7],\n );\n\n if (this.verticalBar.visible && this.verticalBar.enabledInHierarchy &&\n this.verticalBar.hasPoint(this.verticalBar.makePositionLocal(globalPosition))) {\n return false;\n }\n if (this.horizontalBar.visible && this.horizontalBar.enabledInHierarchy &&\n this.horizontalBar.hasPoint(this.horizontalBar.makePositionLocal(globalPosition))) {\n return false;\n }\n\n return true;\n }\n\n ensureControlVisible (control: Control): void {\n if (!this.isContentDescendant(control)) {\n throw new Error('ScrollContainer can only reveal a descendant content control.');\n }\n const transform = control.getGlobalTransform2D().elements;\n const corners = [\n [0, 0],\n [control.width, 0],\n [0, control.height],\n [control.width, control.height],\n ];\n let left = Infinity;\n let top = Infinity;\n let right = -Infinity;\n let bottom = -Infinity;\n\n for (const corner of corners) {\n const global = new math.Vector2(\n transform[0] * corner[0] + transform[3] * corner[1] + transform[6],\n transform[1] * corner[0] + transform[4] * corner[1] + transform[7],\n );\n const local = this.makePositionLocal(global);\n\n left = Math.min(left, local.x);\n top = Math.min(top, local.y);\n right = Math.max(right, local.x);\n bottom = Math.max(bottom, local.y);\n }\n const horizontalDifference = Math.max(Math.min(left, 0), right - this.viewportWidth);\n const verticalDifference = Math.max(Math.min(top, 0), bottom - this.viewportHeight);\n\n this.horizontalBar.setValue(this.horizontalBar.value + horizontalDifference);\n this.verticalBar.setValue(this.verticalBar.value + verticalDifference);\n }\n\n override getMinimumSize (): math.Vector2 {\n return this.measureContent(false);\n }\n\n override getDesiredSize (): math.Vector2 {\n return this.measureContent(true);\n }\n\n override onMouseWheel (event: InputEventMouseButton): void {\n const previousHorizontal = this.horizontalBar.value;\n const previousVertical = this.verticalBar.value;\n const horizontalEnabled = this.horizontalScrollMode !== ScrollMode.Disabled;\n const verticalEnabled = this.verticalScrollMode !== ScrollMode.Disabled;\n const swapAxes = this.scrollHorizontalByDefault !== event.shiftPressed;\n const verticalHidden = !this.verticalBar.visible && this.verticalScrollMode !== ScrollMode.ShowNever;\n const horizontalHidden = !this.horizontalBar.visible && this.horizontalScrollMode !== ScrollMode.ShowNever;\n const horizontalAmount = this.horizontalBar.page / ScrollBar.pageDivisor * event.factor;\n const verticalAmount = this.verticalBar.page / ScrollBar.pageDivisor * event.factor;\n\n if (event.buttonIndex === MouseButton.WheelUp) {\n if ((horizontalEnabled && swapAxes) || verticalHidden) {\n this.horizontalBar.scroll(-horizontalAmount);\n } else if (verticalEnabled) {\n this.verticalBar.scroll(-verticalAmount);\n }\n } else if (event.buttonIndex === MouseButton.WheelDown) {\n if ((horizontalEnabled && swapAxes) || verticalHidden) {\n this.horizontalBar.scroll(horizontalAmount);\n } else if (verticalEnabled) {\n this.verticalBar.scroll(verticalAmount);\n }\n } else if (event.buttonIndex === MouseButton.WheelLeft) {\n if ((verticalEnabled && swapAxes) || horizontalHidden) {\n this.verticalBar.scroll(-verticalAmount);\n } else if (horizontalEnabled) {\n this.horizontalBar.scroll(-horizontalAmount);\n }\n } else if (event.buttonIndex === MouseButton.WheelRight) {\n if ((verticalEnabled && swapAxes) || horizontalHidden) {\n this.verticalBar.scroll(verticalAmount);\n } else if (horizontalEnabled) {\n this.horizontalBar.scroll(horizontalAmount);\n }\n }\n if (previousHorizontal !== this.horizontalBar.value || previousVertical !== this.verticalBar.value) {\n event.accept();\n }\n }\n\n override onTouchDown (event: InputEventScreenTouch): void {\n if (this.touchIndex !== null) {\n this.cancelTouchDrag();\n }\n this.touchIndex = event.index;\n this.touchDecelerating = false;\n this.beyondDeadzone = false;\n this.dragSpeed.set(0, 0);\n this.dragAccum.set(0, 0);\n this.lastDragAccum.set(0, 0);\n this.dragFrom.set(this.horizontalBar.value, this.verticalBar.value);\n this.motionSampleTime = 0;\n }\n\n override onTouchMove (event: InputEventScreenDrag): void {\n if (this.touchIndex !== event.index || this.touchDecelerating) {\n return;\n }\n const previousHorizontal = this.horizontalBar.value;\n const previousVertical = this.verticalBar.value;\n\n this.dragAccum.x -= event.relative.x;\n this.dragAccum.y -= event.relative.y;\n const horizontalEnabled = this.horizontalScrollMode !== ScrollMode.Disabled;\n const verticalEnabled = this.verticalScrollMode !== ScrollMode.Disabled;\n const exceedsDeadzone = this.beyondDeadzone ||\n (horizontalEnabled && Math.abs(this.dragAccum.x) > this.deadzone) ||\n (verticalEnabled && Math.abs(this.dragAccum.y) > this.deadzone);\n\n if (exceedsDeadzone) {\n if (!this.beyondDeadzone) {\n this.beyondDeadzone = true;\n this.dragAccum.set(-event.relative.x, -event.relative.y);\n this.notifyContentScroll(true);\n this.scrollContainerEventEmitter.emit('scrollStarted');\n this.root?.cancelPointerPress(this, event.index);\n }\n if (horizontalEnabled) {\n this.horizontalBar.scrollTo(this.dragFrom.x + this.dragAccum.x);\n } else {\n this.dragAccum.x = 0;\n }\n if (verticalEnabled) {\n this.verticalBar.scrollTo(this.dragFrom.y + this.dragAccum.y);\n } else {\n this.dragAccum.y = 0;\n }\n }\n if (previousHorizontal !== this.horizontalBar.value || previousVertical !== this.verticalBar.value) {\n event.accept();\n }\n }\n\n override onTouchUp (event: InputEventScreenTouch): void {\n if (this.touchIndex !== event.index) {\n return;\n }\n if (event.canceled || (this.dragSpeed.x === 0 && this.dragSpeed.y === 0)) {\n this.cancelTouchDrag();\n } else {\n this.touchDecelerating = true;\n }\n }\n\n override update (deltaTime: number): void {\n const seconds = Math.max(0, deltaTime) / 1000;\n\n if (!this.visibleInHierarchy || !this.enabledInHierarchy) {\n this.cancelTouchDrag();\n } else if (this.touchIndex !== null) {\n if (this.touchDecelerating) {\n this.updateInertia(seconds);\n } else if (this.beyondDeadzone) {\n this.updateDragVelocity(seconds);\n }\n }\n super.update(deltaTime);\n }\n\n override dispose (): void {\n this.horizontalBar.off('valueChanged', this.scrollMoved);\n this.verticalBar.off('valueChanged', this.scrollMoved);\n this.off('visibilityChanged', this.controlStateChanged);\n this.off('enabledChanged', this.controlStateChanged);\n this.focusRoot?.off('guiFocusChanged', this.focusOwnerChanged);\n this.focusRoot = null;\n this.cancelTouchDrag();\n super.dispose();\n }\n\n protected override drawChildren (): void {\n const graphics = this.engine.graphics;\n\n if (this.clipContents) {\n graphics.pushClipRect(0, 0, this.viewportWidth, this.viewportHeight);\n }\n try {\n for (const child of this.children) {\n if (child !== this.horizontalBar && child !== this.verticalBar) {\n child.drawInternal();\n }\n }\n } finally {\n if (this.clipContents) {\n graphics.popClipRect();\n }\n }\n this.verticalBar.drawInternal();\n this.horizontalBar.drawInternal();\n }\n\n protected override getLayoutChildren (): Control[] {\n return super.getLayoutChildren().filter(child => child !== this.horizontalBar && child !== this.verticalBar);\n }\n\n protected override onRootChanged (previousRoot: RootControl | null, nextRoot: RootControl | null): void {\n if (previousRoot === nextRoot) {\n return;\n }\n this.focusRoot?.off('guiFocusChanged', this.focusOwnerChanged);\n this.focusRoot = nextRoot;\n this.focusRoot?.on('guiFocusChanged', this.focusOwnerChanged);\n }\n\n protected override sortChildren (): void {\n const contentSize = this.getLargestContentSize(false);\n const layout = this.resolveLayout(contentSize);\n\n this.viewportWidth = layout.viewportWidth;\n this.viewportHeight = layout.viewportHeight;\n this.horizontalBar.visible = layout.horizontalVisible;\n this.verticalBar.visible = layout.verticalVisible;\n this.horizontalBar.setMaxValue(Math.max(contentSize.x, layout.viewportWidth));\n this.horizontalBar.setPage(layout.viewportWidth);\n this.verticalBar.setMaxValue(Math.max(contentSize.y, layout.viewportHeight));\n this.verticalBar.setPage(layout.viewportHeight);\n this.horizontalBar.setRect({\n position: new math.Vector2(0, this.height - this.horizontalBar.getBoundMinimumSize().y),\n size: new math.Vector2(layout.viewportWidth, this.horizontalBar.getBoundMinimumSize().y),\n });\n this.verticalBar.setRect({\n position: new math.Vector2(this.width - this.verticalBar.getBoundMinimumSize().x, 0),\n size: new math.Vector2(this.verticalBar.getBoundMinimumSize().x, layout.viewportHeight),\n });\n\n for (const child of this.getLayoutChildren()) {\n const minimum = child.getBoundMinimumSize();\n const maximum = child.getCombinedMaximumSize();\n let width = (child.horizontalSizeFlags & SizeFlags.Expand) !== 0\n ? Math.max(layout.viewportWidth, minimum.x)\n : minimum.x;\n let height = (child.verticalSizeFlags & SizeFlags.Expand) !== 0\n ? Math.max(layout.viewportHeight, minimum.y)\n : minimum.y;\n\n if (maximum.x >= 0) {\n width = Math.min(width, maximum.x);\n }\n if (maximum.y >= 0) {\n height = Math.min(height, maximum.y);\n }\n this.fitChildInRect(child, {\n position: new math.Vector2(\n Math.floor(-this.horizontalBar.value),\n Math.floor(-this.verticalBar.value),\n ),\n size: new math.Vector2(width, height),\n });\n }\n }\n\n private measureContent (useDesired: boolean): math.Vector2 {\n const content = this.getLargestContentSize(useDesired);\n const layout = this.resolveLayout(content);\n const maximum = this.getCombinedMaximumSize();\n const minimum = new math.Vector2();\n const horizontalConstrained = this.horizontalScrollMode === ScrollMode.Disabled ||\n this.horizontalScrollMode === ScrollMode.MaximizeFirst;\n const verticalConstrained = this.verticalScrollMode === ScrollMode.Disabled ||\n this.verticalScrollMode === ScrollMode.MaximizeFirst;\n\n if (this.horizontalScrollMode === ScrollMode.Disabled) {\n minimum.x = content.x;\n } else if (this.horizontalScrollMode === ScrollMode.MaximizeFirst) {\n minimum.x = maximum.x >= 0 ? Math.min(content.x, maximum.x) : content.x;\n }\n if (this.verticalScrollMode === ScrollMode.Disabled) {\n minimum.y = content.y;\n } else if (this.verticalScrollMode === ScrollMode.MaximizeFirst) {\n minimum.y = maximum.y >= 0 ? Math.min(content.y, maximum.y) : content.y;\n }\n if (horizontalConstrained && layout.verticalReserved) {\n minimum.x += this.verticalBar.getBoundMinimumSize().x;\n }\n if (verticalConstrained && layout.horizontalReserved) {\n minimum.y += this.horizontalBar.getBoundMinimumSize().y;\n }\n\n return minimum;\n }\n\n private getLargestContentSize (useDesired: boolean): math.Vector2 {\n const size = new math.Vector2();\n\n for (const child of this.getLayoutChildren()) {\n const childSize = useDesired ? child.getBoundDesiredSize() : child.getBoundMinimumSize();\n\n size.x = Math.max(size.x, childSize.x);\n size.y = Math.max(size.y, childSize.y);\n }\n\n return size;\n }\n\n private resolveLayout (content: math.Vector2): ScrollLayout {\n const horizontalSize = this.horizontalBar.getBoundMinimumSize().y;\n const verticalSize = this.verticalBar.getBoundMinimumSize().x;\n let horizontalVisible = this.horizontalScrollMode === ScrollMode.ShowAlways;\n let verticalVisible = this.verticalScrollMode === ScrollMode.ShowAlways;\n let horizontalReserved = horizontalVisible || this.horizontalScrollMode === ScrollMode.Reserve;\n let verticalReserved = verticalVisible || this.verticalScrollMode === ScrollMode.Reserve;\n\n for (let index = 0; index < 4; index++) {\n const viewportWidth = Math.max(0, this.width - (verticalReserved ? verticalSize : 0));\n const viewportHeight = Math.max(0, this.height - (horizontalReserved ? horizontalSize : 0));\n\n horizontalVisible = shouldShowBar(this.horizontalScrollMode, content.x, viewportWidth);\n verticalVisible = shouldShowBar(this.verticalScrollMode, content.y, viewportHeight);\n const nextHorizontalReserved = horizontalVisible || this.horizontalScrollMode === ScrollMode.Reserve;\n const nextVerticalReserved = verticalVisible || this.verticalScrollMode === ScrollMode.Reserve;\n\n if (horizontalReserved === nextHorizontalReserved && verticalReserved === nextVerticalReserved) {\n break;\n }\n horizontalReserved = nextHorizontalReserved;\n verticalReserved = nextVerticalReserved;\n }\n\n return {\n horizontalVisible,\n verticalVisible,\n horizontalReserved,\n verticalReserved,\n viewportWidth: Math.max(0, this.width - (verticalReserved ? verticalSize : 0)),\n viewportHeight: Math.max(0, this.height - (horizontalReserved ? horizontalSize : 0)),\n };\n }\n\n private invalidateScrollLayout (): void {\n this.updateMinimumSize();\n this.updateDesiredSize();\n this.queueSort();\n }\n\n private isContentDescendant (control: Control): boolean {\n let current: Control | null = control;\n\n while (current && current.parent !== this) {\n current = current.parent;\n }\n\n return !!current && current !== this.horizontalBar && current !== this.verticalBar && current.parent === this;\n }\n\n private notifyContentScroll (begin: boolean): void {\n const notify = (control: Control) => {\n if (begin) {\n control.onScrollBegin();\n } else {\n control.onScrollEnd();\n }\n for (const child of control.children) {\n notify(child);\n }\n };\n\n for (const child of this.getLayoutChildren()) {\n notify(child);\n }\n }\n\n private updateDragVelocity (seconds: number): void {\n if (seconds <= 0) {\n return;\n }\n this.motionSampleTime += seconds;\n if (this.motionSampleTime >= 0.1 || (this.dragSpeed.x === 0 && this.dragSpeed.y === 0)) {\n this.dragSpeed.set(\n (this.dragAccum.x - this.lastDragAccum.x) / this.motionSampleTime,\n (this.dragAccum.y - this.lastDragAccum.y) / this.motionSampleTime,\n );\n this.lastDragAccum.copyFrom(this.dragAccum);\n this.motionSampleTime = 0;\n }\n }\n\n private updateInertia (seconds: number): void {\n if (seconds <= 0) {\n return;\n }\n const previousHorizontal = this.horizontalBar.value;\n const previousVertical = this.verticalBar.value;\n\n if (this.horizontalScrollMode !== ScrollMode.Disabled) {\n this.horizontalBar.scrollTo(previousHorizontal + this.dragSpeed.x * seconds);\n } else {\n this.dragSpeed.x = 0;\n }\n if (this.verticalScrollMode !== ScrollMode.Disabled) {\n this.verticalBar.scrollTo(previousVertical + this.dragSpeed.y * seconds);\n } else {\n this.dragSpeed.y = 0;\n }\n if (this.horizontalBar.value === previousHorizontal && this.dragSpeed.x !== 0) {\n this.dragSpeed.x = 0;\n } else {\n this.dragSpeed.x = decelerate(this.dragSpeed.x, INERTIA_DECELERATION * seconds);\n }\n if (this.verticalBar.value === previousVertical && this.dragSpeed.y !== 0) {\n this.dragSpeed.y = 0;\n } else {\n this.dragSpeed.y = decelerate(this.dragSpeed.y, INERTIA_DECELERATION * seconds);\n }\n if (this.dragSpeed.x === 0 && this.dragSpeed.y === 0) {\n this.cancelTouchDrag();\n }\n }\n\n private cancelTouchDrag (): void {\n const notifyEnd = this.beyondDeadzone;\n\n this.touchIndex = null;\n this.touchDecelerating = false;\n this.beyondDeadzone = false;\n this.dragSpeed.set(0, 0);\n this.dragAccum.set(0, 0);\n this.dragFrom.set(0, 0);\n this.lastDragAccum.set(0, 0);\n this.motionSampleTime = 0;\n if (notifyEnd) {\n this.notifyContentScroll(false);\n this.scrollContainerEventEmitter.emit('scrollEnded');\n }\n }\n\n override fromData (data: spec.ScrollContainerData): void {\n super.fromData(data);\n if (data.horizontalScrollMode !== undefined) {\n this.horizontalScrollMode = data.horizontalScrollMode;\n }\n if (data.verticalScrollMode !== undefined) {\n this.verticalScrollMode = data.verticalScrollMode;\n }\n if (data.horizontalCustomStep !== undefined) {\n this.horizontalCustomStep = data.horizontalCustomStep;\n }\n if (data.verticalCustomStep !== undefined) {\n this.verticalCustomStep = data.verticalCustomStep;\n }\n if (data.scrollHorizontalByDefault !== undefined) {\n this.scrollHorizontalByDefault = data.scrollHorizontalByDefault;\n }\n if (data.deadzone !== undefined) {\n this.deadzone = data.deadzone;\n }\n if (data.followFocus !== undefined) {\n this.followFocus = data.followFocus;\n }\n if (data.hScroll !== undefined) {\n this.horizontalBar.setValueNoSignal(data.hScroll);\n }\n if (data.vScroll !== undefined) {\n this.verticalBar.setValueNoSignal(data.vScroll);\n }\n }\n}\n\nfunction shouldShowBar (mode: ScrollMode, contentSize: number, viewportSize: number): boolean {\n if (mode === ScrollMode.ShowAlways) {\n return true;\n }\n if (mode === ScrollMode.Auto || mode === ScrollMode.Reserve || mode === ScrollMode.MaximizeFirst) {\n return contentSize > viewportSize;\n }\n\n return false;\n}\n\nfunction decelerate (value: number, amount: number): number {\n if (Math.abs(value) <= amount) {\n return 0;\n }\n\n return value - Math.sign(value) * amount;\n}\n\nfunction assertScrollMode (value: ScrollMode): void {\n if (!Number.isInteger(value) || value < ScrollMode.Disabled || value > ScrollMode.MaximizeFirst) {\n throw new RangeError('Invalid ScrollContainer scroll mode.');\n }\n}\n","import {\n math,\n} from '@galacean/effects';\nimport {\n StyleBoxEmpty,\n StyleBoxFlat,\n ThemeItemType,\n ThemeRegistry,\n} from '../core/theme';\nimport type { StyleBox, ThemeItemDefinitions } from '../core/theme';\n\nconst palette = {\n text: new math.Color(0.92, 0.94, 0.98, 1),\n disabledText: new math.Color(0.55, 0.58, 0.64, 1),\n panel: new math.Color(0.10, 0.12, 0.16, 0.96),\n border: new math.Color(0.28, 0.32, 0.40, 1),\n normal: new math.Color(0.22, 0.25, 0.31, 1),\n hover: new math.Color(0.30, 0.34, 0.42, 1),\n pressed: new math.Color(0.16, 0.19, 0.25, 1),\n disabled: new math.Color(0.16, 0.18, 0.22, 0.75),\n accent: new math.Color(0.25, 0.58, 0.92, 1),\n accentHover: new math.Color(0.34, 0.67, 1, 1),\n track: new math.Color(0.12, 0.14, 0.18, 0.82),\n clear: new math.Color(0, 0, 0, 0),\n white: new math.Color(1, 1, 1, 1),\n};\n\nfunction flat (\n background: math.Color,\n border = palette.clear,\n borderWidth = 0,\n contentHorizontal = 0,\n contentVertical = 0,\n): StyleBoxFlat {\n const style = new StyleBoxFlat();\n\n style.setBackgroundColor(background);\n style.setBorderColor(border);\n style.setBorderWidths(borderWidth, borderWidth, borderWidth, borderWidth);\n style.setContentMargins(contentHorizontal, contentVertical, contentHorizontal, contentVertical);\n\n return style;\n}\n\nfunction empty (contentHorizontal = 0, contentVertical = 0): StyleBoxEmpty {\n const style = new StyleBoxEmpty();\n\n style.setContentMargins(contentHorizontal, contentVertical, contentHorizontal, contentVertical);\n\n return style;\n}\n\nfunction style (value: StyleBox): { type: ThemeItemType.StyleBox, defaultValue: StyleBox, affectsLayout: true } {\n return { type: ThemeItemType.StyleBox, defaultValue: value, affectsLayout: true };\n}\n\nfunction color (value: math.Color) {\n return { type: ThemeItemType.Color, defaultValue: value } as const;\n}\n\nfunction constant (value: number, affectsLayout = true) {\n return { type: ThemeItemType.Constant, defaultValue: value, affectsLayout } as const;\n}\n\nconst fontItems: ThemeItemDefinitions = {\n font: {\n type: ThemeItemType.Font,\n defaultValue: { family: 'sans-serif', weight: 'normal', style: 'normal' },\n affectsLayout: true,\n },\n fontSize: { type: ThemeItemType.FontSize, defaultValue: 14, affectsLayout: true },\n};\n\nThemeRegistry.registerType('Control', null, fontItems);\nThemeRegistry.registerType('Container', 'Control');\nThemeRegistry.registerType('Label', 'Control', {\n fontColor: color(palette.text),\n lineSpacing: constant(0),\n});\nThemeRegistry.registerType('BaseButton', 'Control');\nThemeRegistry.registerType('Button', 'BaseButton', {\n normal: style(flat(palette.normal, palette.border, 1, 8, 4)),\n hover: style(flat(palette.hover, palette.border, 1, 8, 4)),\n pressed: style(flat(palette.pressed, palette.border, 1, 8, 4)),\n hoverPressed: style(flat(palette.pressed, palette.accent, 1, 8, 4)),\n disabled: style(flat(palette.disabled, palette.border, 1, 8, 4)),\n focus: style(flat(palette.clear, palette.accentHover, 1)),\n fontColor: color(palette.text),\n fontFocusColor: color(palette.text),\n fontHoverColor: color(palette.text),\n fontPressedColor: color(palette.text),\n fontHoverPressedColor: color(palette.text),\n fontDisabledColor: color(palette.disabledText),\n iconTint: color(palette.white),\n iconFocusTint: color(palette.white),\n iconHoverTint: color(palette.white),\n iconPressedTint: color(palette.white),\n iconHoverPressedTint: color(palette.white),\n iconDisabledTint: color(palette.disabledText),\n icon: { type: ThemeItemType.Icon, defaultValue: null, affectsLayout: true },\n iconSeparation: constant(4),\n alignToLargestStyleBox: constant(0),\n});\nThemeRegistry.registerType('Checkbox', 'Button', {\n normal: style(empty(4, 4)),\n hover: style(empty(4, 4)),\n pressed: style(empty(4, 4)),\n hoverPressed: style(empty(4, 4)),\n disabled: style(empty(4, 4)),\n checked: { type: ThemeItemType.Icon, defaultValue: null, affectsLayout: true },\n unchecked: { type: ThemeItemType.Icon, defaultValue: null, affectsLayout: true },\n checkedDisabled: { type: ThemeItemType.Icon, defaultValue: null, affectsLayout: true },\n uncheckedDisabled: { type: ThemeItemType.Icon, defaultValue: null, affectsLayout: true },\n radioChecked: { type: ThemeItemType.Icon, defaultValue: null, affectsLayout: true },\n radioUnchecked: { type: ThemeItemType.Icon, defaultValue: null, affectsLayout: true },\n radioCheckedDisabled: { type: ThemeItemType.Icon, defaultValue: null, affectsLayout: true },\n radioUncheckedDisabled: { type: ThemeItemType.Icon, defaultValue: null, affectsLayout: true },\n checkedColor: color(palette.white),\n uncheckedColor: color(palette.white),\n checkedDisabledColor: color(palette.disabledText),\n markColor: color(palette.accent),\n markDisabledColor: color(palette.disabledText),\n markUncheckedColor: color(new math.Color(0.88, 0.88, 0.88, 0.2)),\n markUncheckedDisabledColor: color(new math.Color(0.5, 0.5, 0.5, 0.2)),\n markOutlineColor: color(palette.border),\n markSize: constant(16),\n markSeparation: constant(8),\n checkVOffset: constant(0),\n});\nThemeRegistry.registerType('CheckButton', 'Button', {\n normal: style(empty(6, 4)),\n hover: style(empty(6, 4)),\n pressed: style(empty(6, 4)),\n hoverPressed: style(empty(6, 4)),\n disabled: style(empty(6, 4)),\n checked: { type: ThemeItemType.Icon, defaultValue: null, affectsLayout: true },\n unchecked: { type: ThemeItemType.Icon, defaultValue: null, affectsLayout: true },\n checkedDisabled: { type: ThemeItemType.Icon, defaultValue: null, affectsLayout: true },\n uncheckedDisabled: { type: ThemeItemType.Icon, defaultValue: null, affectsLayout: true },\n buttonCheckedColor: color(palette.white),\n buttonUncheckedColor: color(palette.white),\n switchColor: color(palette.accent),\n switchDisabledColor: color(palette.disabledText),\n switchOffColor: color(palette.border),\n switchKnobColor: color(palette.text),\n switchWidth: constant(28),\n switchHeight: constant(14),\n switchSeparation: constant(6),\n checkVOffset: constant(0),\n});\nThemeRegistry.registerType('Panel', 'Control', {\n panel: style(flat(palette.panel, palette.border, 1)),\n});\nThemeRegistry.registerType('PanelContainer', 'Container', {\n panel: style(flat(palette.panel, palette.border, 1, 4, 4)),\n});\nThemeRegistry.registerType('Separator', 'Control', {\n separator: style(flat(palette.border)),\n separation: constant(1),\n});\nThemeRegistry.registerType('HSeparator', 'Separator');\nThemeRegistry.registerType('VSeparator', 'Separator');\nThemeRegistry.registerType('TextInput', 'Control', {\n normal: style(flat(palette.track, palette.border, 1, 6, 4)),\n readOnly: style(flat(palette.disabled, palette.border, 1, 6, 4)),\n focus: style(flat(palette.clear, palette.accentHover, 1)),\n fontColor: color(palette.text),\n fontReadOnlyColor: color(palette.disabledText),\n fontPlaceholderColor: color(palette.disabledText),\n selectionColor: color(new math.Color(palette.accent.r, palette.accent.g, palette.accent.b, 0.45)),\n caretColor: color(palette.text),\n caretWidth: constant(1, false),\n});\nThemeRegistry.registerType('LineEdit', 'TextInput');\nThemeRegistry.registerType('TextEdit', 'TextInput');\nThemeRegistry.registerType('Popup', 'PanelContainer', {\n panel: style(flat(palette.panel, palette.border, 1, 6, 6)),\n});\nThemeRegistry.registerType('PopupPanel', 'Popup');\nThemeRegistry.registerType('PopupMenu', 'Popup', {\n hover: style(flat(palette.hover)),\n separator: style(flat(palette.border)),\n fontColor: color(palette.text),\n fontDisabledColor: color(palette.disabledText),\n checkColor: color(palette.accent),\n itemHeight: constant(28),\n separatorHeight: constant(9),\n horizontalPadding: constant(8),\n iconWidth: constant(20),\n});\nThemeRegistry.registerType('MenuButton', 'Button');\nThemeRegistry.registerType('OptionButton', 'MenuButton', {\n arrow: { type: ThemeItemType.Icon, defaultValue: null, affectsLayout: true },\n arrowSize: constant(12),\n arrowMargin: constant(4),\n hSeparation: constant(4),\n modulateArrow: constant(1),\n});\nThemeRegistry.registerType('ColorPickerButton', 'Button', {\n swatchBorderColor: color(palette.border),\n});\nThemeRegistry.registerType('Range', 'Control');\nThemeRegistry.registerType('ProgressBar', 'Range', {\n background: style(flat(palette.track)),\n fill: style(flat(palette.accent)),\n fontColor: color(palette.text),\n});\nThemeRegistry.registerType('Slider', 'Range', {\n track: style(flat(palette.track)),\n fill: style(flat(palette.accent)),\n fillHighlight: style(flat(palette.accentHover)),\n grabber: style(flat(palette.normal, palette.border, 1)),\n grabberHighlight: style(flat(palette.accentHover, palette.border, 1)),\n grabberDisabled: style(flat(palette.disabled, palette.border, 1)),\n trackThickness: constant(4),\n grabberSize: constant(14),\n});\nThemeRegistry.registerType('HSlider', 'Slider');\nThemeRegistry.registerType('VSlider', 'Slider');\nThemeRegistry.registerType('ScrollBar', 'Range', {\n scroll: style(flat(palette.track)),\n scrollFocus: style(flat(palette.track, palette.accentHover, 1)),\n grabber: style(flat(palette.disabledText, palette.clear, 0, 4, 4)),\n grabberHighlight: style(flat(palette.accent, palette.clear, 0, 4, 4)),\n grabberPressed: style(flat(palette.accentHover, palette.clear, 0, 4, 4)),\n decrement: { type: ThemeItemType.Icon, defaultValue: null, affectsLayout: true },\n decrementHighlight: { type: ThemeItemType.Icon, defaultValue: null },\n decrementPressed: { type: ThemeItemType.Icon, defaultValue: null },\n increment: { type: ThemeItemType.Icon, defaultValue: null, affectsLayout: true },\n incrementHighlight: { type: ThemeItemType.Icon, defaultValue: null },\n incrementPressed: { type: ThemeItemType.Icon, defaultValue: null },\n paddingLeft: constant(0),\n paddingTop: constant(0),\n paddingRight: constant(0),\n paddingBottom: constant(0),\n});\nThemeRegistry.registerType('HScrollBar', 'ScrollBar', {\n scroll: style(flat(palette.track, palette.clear, 0, 0, 4)),\n});\nThemeRegistry.registerType('VScrollBar', 'ScrollBar', {\n scroll: style(flat(palette.track, palette.clear, 0, 4, 0)),\n});\nThemeRegistry.registerType('BoxContainer', 'Container', { separation: constant(0) });\nThemeRegistry.registerType('HBoxContainer', 'BoxContainer');\nThemeRegistry.registerType('VBoxContainer', 'BoxContainer');\nThemeRegistry.registerType('ColorPicker', 'VBoxContainer');\nThemeRegistry.registerType('GridContainer', 'Container', {\n horizontalSeparation: constant(0),\n verticalSeparation: constant(0),\n});\nThemeRegistry.registerType('MarginContainer', 'Container', {\n marginLeft: constant(0),\n marginTop: constant(0),\n marginRight: constant(0),\n marginBottom: constant(0),\n});\nThemeRegistry.registerType('CenterContainer', 'Container');\nThemeRegistry.registerType('AspectRatioContainer', 'Container');\nThemeRegistry.registerType('ScrollContainer', 'Container');\nThemeRegistry.registerType('ColorRect', 'Control');\nThemeRegistry.registerType('TextureRect', 'Control');\nThemeRegistry.registerType('NinePatchRect', 'Control');\n\n// Keep an explicit empty style available to themes that want to remove a layer.\nThemeRegistry.registerType('Control', null, {\n empty: style(StyleBoxEmpty.shared),\n});\n","export enum HorizontalAlignment {\n Left,\n Center,\n Right,\n Fill,\n}\n\nexport enum VerticalAlignment {\n Top,\n Center,\n Bottom,\n Fill,\n}\n\nexport enum AutowrapMode {\n Off,\n Arbitrary,\n Word,\n WordSmart,\n}\n\nexport enum TextOverflow {\n Visible,\n Clip,\n Ellipsis,\n}\n\nexport enum TextureExpandMode {\n KeepSize,\n IgnoreSize,\n FitWidth,\n FitWidthProportional,\n FitHeight,\n FitHeightProportional,\n}\n\nexport enum TextureStretchMode {\n Scale,\n Tile,\n Keep,\n KeepCentered,\n KeepAspect,\n KeepAspectCentered,\n KeepAspectCovered,\n}\n\nexport enum AxisStretchMode {\n Stretch,\n Tile,\n TileFit,\n}\n\nexport enum Side {\n Left,\n Top,\n Right,\n Bottom,\n}\n\nexport enum ButtonDrawMode {\n Normal,\n Pressed,\n Hover,\n Disabled,\n HoverPressed,\n}\n\nexport enum ButtonActionMode {\n Press,\n Release,\n}\n\nexport enum ProgressFillMode {\n BeginToEnd,\n EndToBegin,\n TopToBottom,\n BottomToTop,\n}\n","import {\n effectsClass,\n math,\n} from '@galacean/effects';\nimport type { Engine, TextMeasurement, spec } from '@galacean/effects';\nimport { Control } from '../core/control';\nimport { MouseFilter } from '../core/enums';\nimport { AutowrapMode, HorizontalAlignment, TextOverflow, VerticalAlignment } from './enums';\n\ntype TextLine = {\n text: string,\n measurement: TextMeasurement,\n};\n\ntype TextLayout = {\n lines: TextLine[],\n lineHeight: number,\n width: number,\n height: number,\n};\n\n@effectsClass('Label')\nexport class Label extends Control {\n static override readonly themeType: string = 'Label';\n private _text = '';\n private _horizontalAlignment = HorizontalAlignment.Left;\n private _verticalAlignment = VerticalAlignment.Top;\n private _autowrapMode = AutowrapMode.Off;\n private _textOverflow = TextOverflow.Visible;\n private layoutDirty = true;\n private layoutWidth = Number.NaN;\n private layout: TextLayout | null = null;\n\n constructor (engine: Engine, text = '') {\n super(engine);\n\n this._text = text;\n this.mouseFilter = MouseFilter.Ignore;\n }\n\n get text (): string {\n return this._text;\n }\n\n set text (value: string) {\n if (this._text !== value) {\n this._text = value;\n this.invalidateTextLayout();\n }\n }\n\n get horizontalAlignment (): HorizontalAlignment {\n return this._horizontalAlignment;\n }\n\n set horizontalAlignment (value: HorizontalAlignment) {\n if (this._horizontalAlignment !== value) {\n this._horizontalAlignment = value;\n this.layoutDirty = true;\n }\n }\n\n get verticalAlignment (): VerticalAlignment {\n return this._verticalAlignment;\n }\n\n set verticalAlignment (value: VerticalAlignment) {\n if (this._verticalAlignment !== value) {\n this._verticalAlignment = value;\n this.layoutDirty = true;\n }\n }\n\n get autowrapMode (): AutowrapMode {\n return this._autowrapMode;\n }\n\n set autowrapMode (value: AutowrapMode) {\n if (this._autowrapMode !== value) {\n this._autowrapMode = value;\n this.invalidateTextLayout();\n }\n }\n\n get textOverflow (): TextOverflow {\n return this._textOverflow;\n }\n\n set textOverflow (value: TextOverflow) {\n if (this._textOverflow !== value) {\n this._textOverflow = value;\n this.layoutDirty = true;\n this.updateMinimumSize();\n }\n }\n\n override getMinimumSize (): math.Vector2 {\n const natural = this.createNaturalLayout();\n\n if (this.autowrapMode === AutowrapMode.Off) {\n return new math.Vector2(\n this.textOverflow === TextOverflow.Visible ? natural.width : 0,\n natural.height,\n );\n }\n\n const width = this.getMinimumLineWidth();\n const paragraphCount = Math.max(1, this._text.split('\\n').length);\n\n return new math.Vector2(\n width,\n natural.lineHeight * paragraphCount + this.getThemeConstant('lineSpacing') * Math.max(0, paragraphCount - 1),\n );\n }\n\n override getDesiredSize (): math.Vector2 {\n const layout = this.createNaturalLayout();\n\n return new math.Vector2(layout.width, layout.height);\n }\n\n override draw (): void {\n const layout = this.getTextLayout(this.width);\n const clipped = this.textOverflow !== TextOverflow.Visible;\n const gap = this.getVerticalGap(layout);\n let y = this.getTextStartY(layout, gap);\n\n if (clipped) {\n this.engine.graphics.pushClipRect(0, 0, this.width, this.height);\n }\n try {\n for (let i = 0; i < layout.lines.length; i++) {\n const source = layout.lines[i];\n const line = this.textOverflow === TextOverflow.Ellipsis\n ? this.ellipsize(source, this.width)\n : source;\n const fill = this.horizontalAlignment === HorizontalAlignment.Fill && i < layout.lines.length - 1;\n\n if (fill && countFillSpaces(line.text) > 0 && line.measurement.width < this.width) {\n this.drawFilledLine(line, y);\n } else {\n this.drawThemedText(this.getTextStartX(line.measurement.width), y, line.text);\n }\n y += layout.lineHeight + this.getThemeConstant('lineSpacing') + gap;\n }\n } finally {\n if (clipped) {\n this.engine.graphics.popClipRect();\n }\n }\n }\n\n private invalidateTextLayout (): void {\n this.layoutDirty = true;\n this.updateMinimumSize();\n this.updateDesiredSize();\n }\n\n protected override onThemeChanged (affectsLayout: boolean): void {\n if (affectsLayout) {this.layoutDirty = true;}\n super.onThemeChanged(affectsLayout);\n }\n\n private measure (text: string): TextMeasurement {\n const font = this.getThemeFont('font');\n\n return this.measureText(text, this.getThemeFontSize('fontSize'), font.family, font.weight, font.style);\n }\n\n private getTextLayout (width: number): TextLayout {\n const constrainedWidth = this.autowrapMode === AutowrapMode.Off ? Number.POSITIVE_INFINITY : Math.max(0, width);\n\n if (this.layoutDirty || this.layoutWidth !== constrainedWidth || !this.layout) {\n this.layout = this.createLayout(constrainedWidth);\n this.layoutWidth = constrainedWidth;\n this.layoutDirty = false;\n }\n\n return this.layout;\n }\n\n private createNaturalLayout (): TextLayout {\n return this.createLayout(Number.POSITIVE_INFINITY);\n }\n\n private createLayout (width: number): TextLayout {\n const lines: TextLine[] = [];\n const paragraphs = this.text.split('\\n');\n const emptyMeasurement = this.measure('');\n\n for (const paragraph of paragraphs) {\n if (this.autowrapMode === AutowrapMode.Off || !Number.isFinite(width)) {\n lines.push({ text: paragraph, measurement: this.measure(paragraph) });\n } else {\n lines.push(...this.wrapParagraph(paragraph, width));\n }\n }\n if (lines.length === 0) {\n lines.push({ text: '', measurement: emptyMeasurement });\n }\n\n const lineHeight = lines[0]?.measurement.lineHeight ?? emptyMeasurement.lineHeight;\n const maximumWidth = lines.reduce((value, line) => Math.max(value, line.measurement.width), 0);\n const height = lineHeight * lines.length + this.getThemeConstant('lineSpacing') * Math.max(0, lines.length - 1);\n\n return { lines, lineHeight, width: maximumWidth, height };\n }\n\n private wrapParagraph (paragraph: string, width: number): TextLine[] {\n const characters = Array.from(paragraph);\n\n if (characters.length === 0) {\n return [{ text: '', measurement: this.measure('') }];\n }\n if (width <= 0) {\n return characters.map(text => ({ text, measurement: this.measure(text) }));\n }\n\n const measurement = this.measure(paragraph);\n const lines: TextLine[] = [];\n let start = 0;\n\n while (start < characters.length) {\n let cursorWidth = 0;\n let breakEnd = -1;\n let breakNext = -1;\n let index = start;\n\n for (; index < characters.length; index++) {\n const character = characters[index];\n const advance = measurement.advances[index] ?? 0;\n\n if (cursorWidth + advance > width && index > start) {\n break;\n }\n cursorWidth += advance;\n if (isBreakSpace(character)) {\n breakEnd = index;\n breakNext = index + 1;\n } else if (isCJKLike(character)) {\n breakEnd = index + 1;\n breakNext = index + 1;\n }\n if (cursorWidth > width) {\n index++;\n\n break;\n }\n }\n\n if (index >= characters.length) {\n const text = characters.slice(start).join('');\n\n lines.push({ text, measurement: this.measure(text) });\n\n break;\n }\n\n let end: number;\n let next: number;\n\n if (this.autowrapMode !== AutowrapMode.Arbitrary && breakEnd > start) {\n end = breakEnd;\n next = breakNext;\n } else if (this.autowrapMode === AutowrapMode.Word) {\n end = this.findWordEnd(characters, index);\n next = end;\n } else {\n end = Math.max(start + 1, index);\n next = end;\n }\n\n const text = characters.slice(start, end).join('').replace(/[\\t \\u00a0]+$/, '');\n\n lines.push({ text, measurement: this.measure(text) });\n start = skipBreakSpaces(characters, Math.max(next, start + 1));\n }\n\n return lines;\n }\n\n private findWordEnd (characters: string[], start: number): number {\n for (let i = Math.max(1, start); i < characters.length; i++) {\n if (isBreakSpace(characters[i]) || isCJKLike(characters[i])) {\n return isBreakSpace(characters[i]) ? i : i + 1;\n }\n }\n\n return characters.length;\n }\n\n private getMinimumLineWidth (): number {\n const paragraphs = this.text.split('\\n');\n let width = 0;\n\n if (this.autowrapMode === AutowrapMode.Arbitrary || this.autowrapMode === AutowrapMode.WordSmart) {\n for (const paragraph of paragraphs) {\n for (const character of Array.from(paragraph)) {\n width = Math.max(width, this.measure(character).width);\n }\n }\n\n return width;\n }\n\n for (const paragraph of paragraphs) {\n let segment = '';\n\n for (const character of Array.from(paragraph)) {\n if (isBreakSpace(character) || isCJKLike(character)) {\n width = Math.max(width, this.measure(segment).width, this.measure(character).width);\n segment = '';\n } else {\n segment += character;\n }\n }\n width = Math.max(width, this.measure(segment).width);\n }\n\n return width;\n }\n\n private getTextStartX (lineWidth: number): number {\n if (this.horizontalAlignment === HorizontalAlignment.Center) {\n return (this.width - lineWidth) * 0.5;\n }\n if (this.horizontalAlignment === HorizontalAlignment.Right) {\n return this.width - lineWidth;\n }\n\n return 0;\n }\n\n private getTextStartY (layout: TextLayout, gap: number): number {\n const height = layout.height + gap * Math.max(0, layout.lines.length - 1);\n\n if (this.verticalAlignment === VerticalAlignment.Center) {\n return (this.height - height) * 0.5;\n }\n if (this.verticalAlignment === VerticalAlignment.Bottom) {\n return this.height - height;\n }\n\n return 0;\n }\n\n private getVerticalGap (layout: TextLayout): number {\n if (this.verticalAlignment !== VerticalAlignment.Fill || layout.lines.length < 2) {\n return 0;\n }\n\n return Math.max(0, (this.height - layout.height) / (layout.lines.length - 1));\n }\n\n private ellipsize (line: TextLine, width: number): TextLine {\n if (line.measurement.width <= width) {\n return line;\n }\n\n const ellipsis = '…';\n const ellipsisMeasurement = this.measure(ellipsis);\n\n if (ellipsisMeasurement.width > width) {\n return { text: '', measurement: this.measure('') };\n }\n\n const characters = Array.from(line.text);\n let used = ellipsisMeasurement.width;\n let count = 0;\n\n for (; count < characters.length; count++) {\n const advance = line.measurement.advances[count] ?? 0;\n\n if (used + advance > width) {\n break;\n }\n used += advance;\n }\n\n const text = characters.slice(0, count).join('') + ellipsis;\n\n return { text, measurement: this.measure(text) };\n }\n\n private drawFilledLine (line: TextLine, y: number): void {\n const characters = Array.from(line.text);\n const spaces = countFillSpaces(line.text);\n const extra = spaces > 0 ? (this.width - line.measurement.width) / spaces : 0;\n let x = 0;\n\n for (let i = 0; i < characters.length; i++) {\n const character = characters[i];\n\n this.drawThemedText(x, y, character);\n x += line.measurement.advances[i] ?? 0;\n if (isBreakSpace(character)) {\n x += extra;\n }\n }\n }\n\n private drawThemedText (x: number, y: number, text: string): void {\n const font = this.getThemeFont('font');\n\n this.drawText(\n x,\n y,\n text,\n this.getThemeFontSize('fontSize'),\n this.getThemeColor('fontColor'),\n font.family,\n font.weight,\n font.style,\n );\n }\n\n override fromData (data: spec.LabelData): void {\n super.fromData(data);\n if (data.text !== undefined) {\n this.text = data.text;\n }\n if (data.horizontalAlignment !== undefined) {\n this.horizontalAlignment = data.horizontalAlignment;\n }\n if (data.verticalAlignment !== undefined) {\n this.verticalAlignment = data.verticalAlignment;\n }\n if (data.autowrapMode !== undefined) {\n this.autowrapMode = data.autowrapMode;\n }\n if (data.textOverflow !== undefined) {\n this.textOverflow = data.textOverflow;\n }\n }\n}\n\nfunction isBreakSpace (character: string): boolean {\n return character === ' ' || character === '\\t' || character === '\\u00a0';\n}\n\nfunction isCJKLike (character: string): boolean {\n const codePoint = character.codePointAt(0) ?? 0;\n\n return (codePoint >= 0x3400 && codePoint <= 0x4dbf)\n || (codePoint >= 0x4e00 && codePoint <= 0x9fff)\n || (codePoint >= 0xf900 && codePoint <= 0xfaff)\n || (codePoint >= 0x20000 && codePoint <= 0x2fa1f)\n || (codePoint >= 0x3040 && codePoint <= 0x30ff)\n || (codePoint >= 0xac00 && codePoint <= 0xd7af);\n}\n\nfunction skipBreakSpaces (characters: string[], start: number): number {\n let index = start;\n\n while (index < characters.length && isBreakSpace(characters[index])) {\n index++;\n }\n\n return index;\n}\n\nfunction countFillSpaces (text: string): number {\n return Array.from(text).reduce((count, character) => count + (isBreakSpace(character) ? 1 : 0), 0);\n}\n","import {\n effectsClass,\n math,\n} from '@galacean/effects';\nimport type { Engine, Texture, TextureRegion, spec } from '@galacean/effects';\nimport { Control } from '../core/control';\nimport { MouseFilter } from '../core/enums';\nimport { TextureExpandMode, TextureStretchMode } from './enums';\n\nconst FULL_REGION: TextureRegion = { u0: 0, v0: 0, u1: 1, v1: 1 };\n\n@effectsClass('TextureRect')\nexport class TextureRect extends Control {\n static override readonly themeType: string = 'TextureRect';\n private _texture: Texture | null = null;\n private _expandMode = TextureExpandMode.KeepSize;\n private _stretchMode = TextureStretchMode.Scale;\n\n flipH = false;\n flipV = false;\n tint = new math.Color(1, 1, 1, 1);\n\n constructor (engine: Engine, texture: Texture | null = null) {\n super(engine);\n this._texture = texture;\n this.mouseFilter = MouseFilter.Ignore;\n this.on('sizeChanged', () => this.controlSizeChanged());\n }\n\n get texture (): Texture | null {\n return this._texture;\n }\n\n set texture (value: Texture | null) {\n if (this._texture !== value) {\n this._texture = value;\n this.updateMinimumSize();\n this.updateDesiredSize();\n }\n }\n\n get expandMode (): TextureExpandMode {\n return this._expandMode;\n }\n\n set expandMode (value: TextureExpandMode) {\n if (this._expandMode !== value) {\n this._expandMode = value;\n this.updateMinimumSize();\n }\n }\n\n get stretchMode (): TextureStretchMode {\n return this._stretchMode;\n }\n\n set stretchMode (value: TextureStretchMode) {\n this._stretchMode = value;\n }\n\n override getMinimumSize (): math.Vector2 {\n const width = this.texture?.width ?? 0;\n const height = this.texture?.height ?? 0;\n\n switch (this.expandMode) {\n case TextureExpandMode.KeepSize:\n return new math.Vector2(width, height);\n case TextureExpandMode.IgnoreSize:\n return new math.Vector2();\n case TextureExpandMode.FitWidth:\n return new math.Vector2(height, 0);\n case TextureExpandMode.FitWidthProportional:\n return new math.Vector2(height > 0 ? this.height * width / height : 0, 0);\n case TextureExpandMode.FitHeight:\n return new math.Vector2(0, width);\n case TextureExpandMode.FitHeightProportional:\n return new math.Vector2(0, width > 0 ? this.width * height / width : 0);\n default:\n return new math.Vector2();\n }\n }\n\n override getDesiredSize (): math.Vector2 {\n return new math.Vector2(this.texture?.width ?? 0, this.texture?.height ?? 0);\n }\n\n override draw (): void {\n const texture = this.texture;\n\n if (!texture || texture.width <= 0 || texture.height <= 0 || this.width <= 0 || this.height <= 0) {\n return;\n }\n\n switch (this.stretchMode) {\n case TextureStretchMode.Scale:\n this.drawRegion(0, 0, this.width, this.height, FULL_REGION);\n\n break;\n case TextureStretchMode.Tile:\n this.drawTiled(texture.width, texture.height);\n\n break;\n case TextureStretchMode.Keep:\n this.drawRegion(0, 0, texture.width, texture.height, FULL_REGION);\n\n break;\n case TextureStretchMode.KeepCentered:\n this.drawRegion(\n (this.width - texture.width) * 0.5, (this.height - texture.height) * 0.5,\n texture.width, texture.height, FULL_REGION,\n );\n\n break;\n case TextureStretchMode.KeepAspect:\n this.drawAspect(false);\n\n break;\n case TextureStretchMode.KeepAspectCentered:\n this.drawAspect(true);\n\n break;\n case TextureStretchMode.KeepAspectCovered:\n this.drawCovered();\n\n break;\n }\n }\n\n private drawAspect (centered: boolean): void {\n const texture = this.texture;\n\n if (!texture) {\n return;\n }\n const scale = Math.min(this.width / texture.width, this.height / texture.height);\n const width = texture.width * scale;\n const height = texture.height * scale;\n const x = centered ? (this.width - width) * 0.5 : 0;\n const y = centered ? (this.height - height) * 0.5 : 0;\n\n this.drawRegion(x, y, width, height, FULL_REGION);\n }\n\n private drawCovered (): void {\n const texture = this.texture;\n\n if (!texture) {\n return;\n }\n const sourceRatio = texture.width / texture.height;\n const destinationRatio = this.width / this.height;\n let region = FULL_REGION;\n\n if (sourceRatio > destinationRatio) {\n const visible = destinationRatio / sourceRatio;\n const margin = (1 - visible) * 0.5;\n\n region = { u0: margin, v0: 0, u1: 1 - margin, v1: 1 };\n } else if (sourceRatio < destinationRatio) {\n const visible = sourceRatio / destinationRatio;\n const margin = (1 - visible) * 0.5;\n\n region = { u0: 0, v0: margin, u1: 1, v1: 1 - margin };\n }\n this.drawRegion(0, 0, this.width, this.height, region);\n }\n\n private drawTiled (tileWidth: number, tileHeight: number): void {\n for (let y = 0; y < this.height; y += tileHeight) {\n const height = Math.min(tileHeight, this.height - y);\n const verticalRatio = height / tileHeight;\n\n for (let x = 0; x < this.width; x += tileWidth) {\n const width = Math.min(tileWidth, this.width - x);\n const horizontalRatio = width / tileWidth;\n\n this.drawRegion(x, y, width, height, {\n u0: 0,\n v0: 1 - verticalRatio,\n u1: horizontalRatio,\n v1: 1,\n });\n }\n }\n }\n\n private drawRegion (x: number, y: number, width: number, height: number, region: TextureRegion): void {\n const texture = this.texture;\n\n if (!texture || width <= 0 || height <= 0) {\n return;\n }\n this.drawTexture(x, y, width, height, texture, {\n u0: this.flipH ? region.u1 : region.u0,\n v0: this.flipV ? region.v1 : region.v0,\n u1: this.flipH ? region.u0 : region.u1,\n v1: this.flipV ? region.v0 : region.v1,\n }, this.tint);\n }\n\n private controlSizeChanged (): void {\n if (this.expandMode === TextureExpandMode.FitWidthProportional\n || this.expandMode === TextureExpandMode.FitHeightProportional) {\n this.updateMinimumSize();\n }\n }\n\n override fromData (data: spec.TextureRectData): void {\n super.fromData(data);\n if (data.texture !== undefined) {\n this.texture = data.texture ? this.engine.findObject<Texture>(data.texture) : null;\n }\n if (data.expandMode !== undefined) {\n this.expandMode = data.expandMode;\n }\n if (data.stretchMode !== undefined) {\n this.stretchMode = data.stretchMode;\n }\n if (data.flipH !== undefined) {\n this.flipH = data.flipH;\n }\n if (data.flipV !== undefined) {\n this.flipV = data.flipV;\n }\n if (data.tint !== undefined) {\n this.tint.copyFrom(data.tint);\n }\n }\n}\n","import {\n EventEmitter,\n effectsClass,\n math,\n} from '@galacean/effects';\nimport type {\n Engine,\n EventEmitterListener,\n Texture,\n spec,\n} from '@galacean/effects';\nimport { Control } from '../core/control';\nimport type { ControlEvent, Rect } from '../core/control';\nimport { MouseFilter } from '../core/enums';\nimport { AxisStretchMode, Side } from './enums';\n\nexport type NinePatchRectEvent = ControlEvent & {\n textureChanged: [texture: Texture | null],\n};\n\n@effectsClass('NinePatchRect')\nexport class NinePatchRect extends Control {\n static override readonly themeType: string = 'NinePatchRect';\n private readonly ninePatchEventEmitter = new EventEmitter<NinePatchRectEvent>();\n private readonly patchMargins = [0, 0, 0, 0];\n private _texture: Texture | null = null;\n private _regionRect: Rect;\n\n drawCenter = true;\n horizontalAxisStretchMode = AxisStretchMode.Stretch;\n verticalAxisStretchMode = AxisStretchMode.Stretch;\n tint = new math.Color(1, 1, 1, 1);\n\n constructor (engine: Engine, texture: Texture | null = null) {\n super(engine);\n this._texture = texture;\n this._regionRect = {\n position: new math.Vector2(),\n size: new math.Vector2(),\n };\n this.mouseFilter = MouseFilter.Ignore;\n }\n\n get texture (): Texture | null {\n return this._texture;\n }\n\n set texture (value: Texture | null) {\n if (this._texture !== value) {\n this._texture = value;\n this.updateDesiredSize();\n this.ninePatchEventEmitter.emit('textureChanged', value);\n }\n }\n\n get regionRect (): Rect {\n return {\n position: this._regionRect.position.clone(),\n size: this._regionRect.size.clone(),\n };\n }\n\n set regionRect (value: Rect) {\n this.setRegionRect(value.position.x, value.position.y, value.size.x, value.size.y);\n }\n\n override on<E extends keyof NinePatchRectEvent> (\n eventName: E,\n listener: EventEmitterListener<NinePatchRectEvent[E]>,\n ): void {\n if (eventName === 'textureChanged') {\n this.ninePatchEventEmitter.on(eventName, listener);\n } else {\n super.on(eventName, listener as never);\n }\n }\n\n override off<E extends keyof NinePatchRectEvent> (\n eventName: E,\n listener: EventEmitterListener<NinePatchRectEvent[E]>,\n ): void {\n if (eventName === 'textureChanged') {\n this.ninePatchEventEmitter.off(eventName, listener);\n } else {\n super.off(eventName, listener as never);\n }\n }\n\n setRegionRect (x: number, y: number, width: number, height: number): void {\n if (![x, y, width, height].every(Number.isFinite) || width < 0 || height < 0) {\n throw new RangeError('NinePatchRect region must be finite and non-negative.');\n }\n this._regionRect.position.set(x, y);\n this._regionRect.size.set(width, height);\n this.updateDesiredSize();\n }\n\n setPatchMargin (side: Side, value: number): void {\n if (!Number.isFinite(value) || value < 0) {\n throw new RangeError('NinePatchRect patch margin must be finite and non-negative.');\n }\n if (this.patchMargins[side] !== value) {\n this.patchMargins[side] = value;\n this.updateMinimumSize();\n }\n }\n\n getPatchMargin (side: Side): number {\n return this.patchMargins[side] ?? 0;\n }\n\n override getMinimumSize (): math.Vector2 {\n return new math.Vector2(\n this.getPatchMargin(Side.Left) + this.getPatchMargin(Side.Right),\n this.getPatchMargin(Side.Top) + this.getPatchMargin(Side.Bottom),\n );\n }\n\n override getDesiredSize (): math.Vector2 {\n const source = this.getSourceRect();\n\n return new math.Vector2(source.size.x, source.size.y);\n }\n\n override draw (): void {\n const texture = this.texture;\n\n if (!texture || this.width <= 0 || this.height <= 0) {\n return;\n }\n\n const source = this.getSourceRect();\n\n this.drawNinePatch(0, 0, this.width, this.height, texture, {\n sourceX: source.position.x,\n sourceY: source.position.y,\n sourceWidth: source.size.x,\n sourceHeight: source.size.y,\n marginLeft: this.getPatchMargin(Side.Left),\n marginTop: this.getPatchMargin(Side.Top),\n marginRight: this.getPatchMargin(Side.Right),\n marginBottom: this.getPatchMargin(Side.Bottom),\n horizontalMode: this.horizontalAxisStretchMode,\n verticalMode: this.verticalAxisStretchMode,\n drawCenter: this.drawCenter,\n }, this.tint);\n }\n\n private getSourceRect (): Rect {\n const texture = this.texture;\n\n if (!texture) {\n return { position: new math.Vector2(), size: new math.Vector2() };\n }\n if (this._regionRect.size.x > 0 && this._regionRect.size.y > 0) {\n return this.regionRect;\n }\n\n return {\n position: new math.Vector2(),\n size: new math.Vector2(texture.width, texture.height),\n };\n }\n\n override fromData (data: spec.NinePatchRectData): void {\n super.fromData(data);\n if (data.texture !== undefined) {\n this.texture = data.texture ? this.engine.findObject<Texture>(data.texture) : null;\n }\n if (data.regionRect !== undefined) {\n this.setRegionRect(\n data.regionRect.position[0], data.regionRect.position[1],\n data.regionRect.size[0], data.regionRect.size[1],\n );\n }\n if (data.patchMarginLeft !== undefined) {\n this.setPatchMargin(Side.Left, data.patchMarginLeft);\n }\n if (data.patchMarginTop !== undefined) {\n this.setPatchMargin(Side.Top, data.patchMarginTop);\n }\n if (data.patchMarginRight !== undefined) {\n this.setPatchMargin(Side.Right, data.patchMarginRight);\n }\n if (data.patchMarginBottom !== undefined) {\n this.setPatchMargin(Side.Bottom, data.patchMarginBottom);\n }\n if (data.drawCenter !== undefined) {\n this.drawCenter = data.drawCenter;\n }\n if (data.horizontalAxisStretchMode !== undefined) {\n this.horizontalAxisStretchMode = data.horizontalAxisStretchMode;\n }\n if (data.verticalAxisStretchMode !== undefined) {\n this.verticalAxisStretchMode = data.verticalAxisStretchMode;\n }\n if (data.tint !== undefined) {\n this.tint.copyFrom(data.tint);\n }\n }\n}\n","import { effectsClass, math } from '@galacean/effects';\nimport type { Engine, spec } from '@galacean/effects';\nimport { Control } from '../core/control';\nimport { MouseFilter } from '../core/enums';\n\n@effectsClass('ColorRect')\nexport class ColorRect extends Control {\n static override readonly themeType: string = 'ColorRect';\n color = new math.Color(1, 1, 1, 1);\n\n constructor (engine: Engine) {\n super(engine);\n this.mouseFilter = MouseFilter.Ignore;\n }\n\n override draw (): void {\n this.fillRect(0, 0, this.width, this.height, this.color);\n }\n\n override fromData (data: spec.ColorRectData): void {\n super.fromData(data);\n if (data.color !== undefined) {\n this.color.copyFrom(data.color);\n }\n }\n}\n","import { effectsClass } from '@galacean/effects';\nimport type { Engine, math } from '@galacean/effects';\nimport { Control } from '../core/control';\nimport { MouseFilter } from '../core/enums';\n\n@effectsClass('Panel')\nexport class Panel extends Control {\n static override readonly themeType: string = 'Panel';\n\n constructor (engine: Engine) {\n super(engine);\n this.mouseFilter = MouseFilter.Stop;\n }\n\n override draw (): void {\n this.drawStyleBox(this.getThemeStyleBox('panel'), 0, 0, this.width, this.height);\n }\n\n override getMinimumSize (): math.Vector2 {\n return this.getThemeStyleBox('panel').getMinimumSize();\n }\n\n override getDesiredSize (): math.Vector2 {\n return this.getMinimumSize();\n }\n}\n","import {\n EventEmitter,\n MouseButton,\n MouseButtonMask,\n} from '@galacean/effects';\nimport type {\n Engine,\n EventEmitterListener,\n InputEventKey,\n InputEventMouseButton,\n InputEventMouseMotion,\n InputEventScreenDrag,\n InputEventScreenTouch,\n spec,\n} from '@galacean/effects';\nimport { Control } from '../core/control';\nimport type { ControlEvent, RootControl } from '../core/control';\nimport { FocusMode, MouseFilter } from '../core/enums';\nimport { ButtonActionMode, ButtonDrawMode } from './enums';\n\nexport type BaseButtonEvent = ControlEvent & {\n buttonDown: [],\n buttonUp: [],\n pressed: [],\n toggled: [pressed: boolean],\n};\n\nexport type ButtonGroupEvent = {\n pressed: [button: BaseButton],\n};\n\nexport class ButtonGroup {\n /** @internal */\n static updateButton (\n button: BaseButton,\n previous: ButtonGroup | null,\n next: ButtonGroup | null,\n ): void {\n previous?.buttons.delete(button);\n if (next) {\n next.buttons.add(button);\n if (button.buttonPressed) {\n for (const peer of next.buttons) {\n if (peer !== button) {\n peer.setPressedFromGroup(false, false);\n }\n }\n }\n }\n }\n\n private readonly buttons = new Set<BaseButton>();\n private readonly eventEmitter = new EventEmitter<ButtonGroupEvent>();\n\n allowUnpress = false;\n\n on<E extends keyof ButtonGroupEvent> (\n eventName: E,\n listener: EventEmitterListener<ButtonGroupEvent[E]>,\n ): void {\n this.eventEmitter.on(eventName, listener);\n }\n\n off<E extends keyof ButtonGroupEvent> (\n eventName: E,\n listener: EventEmitterListener<ButtonGroupEvent[E]>,\n ): void {\n this.eventEmitter.off(eventName, listener);\n }\n\n getPressedButton (): BaseButton | null {\n for (const button of this.buttons) {\n if (button.buttonPressed) {\n return button;\n }\n }\n\n return null;\n }\n\n getButtons (): BaseButton[] {\n return Array.from(this.buttons);\n }\n\n select (button: BaseButton, signal: boolean, emitPressed = false): boolean {\n if (!this.buttons.has(button)) {\n return false;\n }\n if (button.buttonPressed && !this.allowUnpress) {\n if (emitPressed) {\n this.eventEmitter.emit('pressed', button);\n }\n\n return false;\n }\n\n const next = !button.buttonPressed;\n\n if (next) {\n for (const peer of this.buttons) {\n if (peer !== button) {\n peer.setPressedFromGroup(false, signal);\n }\n }\n }\n button.setPressedFromGroup(next, signal);\n if (emitPressed) {\n this.eventEmitter.emit('pressed', button);\n }\n\n return true;\n }\n}\n\nexport class BaseButton extends Control {\n static override readonly themeType: string = 'BaseButton';\n private readonly buttonEventEmitter = new EventEmitter<BaseButtonEvent>();\n private _disabled = false;\n private _toggleMode = false;\n private _buttonPressed = false;\n private _buttonMask = MouseButtonMask.Left;\n private _buttonGroup: ButtonGroup | null = null;\n private hovered = false;\n private pressing = false;\n private pressInside = false;\n private mousePressing = false;\n private keyboardPressing = false;\n private touchIndex = -1;\n private readonly controlStateChanged = () => {\n if (!this.visible || !this.enabled) {\n this.cancelPress();\n }\n };\n\n actionMode = ButtonActionMode.Release;\n keepPressedOutside = false;\n\n constructor (engine: Engine) {\n super(engine);\n this.focusMode = FocusMode.All;\n this.mouseFilter = MouseFilter.Stop;\n this.on('visibilityChanged', this.controlStateChanged);\n this.on('enabledChanged', this.controlStateChanged);\n }\n\n get disabled (): boolean {\n return this._disabled;\n }\n\n set disabled (value: boolean) {\n if (this._disabled !== value) {\n this._disabled = value;\n if (value) {\n this.cancelPress();\n }\n this.root?.controlStateChanged(this);\n }\n }\n\n get toggleMode (): boolean {\n return this._toggleMode;\n }\n\n set toggleMode (value: boolean) {\n this._toggleMode = value;\n }\n\n get buttonPressed (): boolean {\n return this._buttonPressed;\n }\n\n set buttonPressed (value: boolean) {\n this.setPressed(value, true);\n }\n\n get buttonMask (): MouseButtonMask {\n return this._buttonMask;\n }\n\n set buttonMask (value: MouseButtonMask) {\n this._buttonMask = value;\n }\n\n get buttonGroup (): ButtonGroup | null {\n return this._buttonGroup;\n }\n\n set buttonGroup (value: ButtonGroup | null) {\n if (this._buttonGroup !== value) {\n const previous = this._buttonGroup;\n\n this._buttonGroup = value;\n ButtonGroup.updateButton(this, previous, value);\n }\n }\n\n override on<E extends keyof BaseButtonEvent> (\n eventName: E,\n listener: EventEmitterListener<BaseButtonEvent[E]>,\n ): void {\n if (eventName === 'buttonDown' || eventName === 'buttonUp'\n || eventName === 'pressed' || eventName === 'toggled') {\n this.buttonEventEmitter.on(eventName, listener);\n } else {\n super.on(eventName, listener as never);\n }\n }\n\n override off<E extends keyof BaseButtonEvent> (\n eventName: E,\n listener: EventEmitterListener<BaseButtonEvent[E]>,\n ): void {\n if (eventName === 'buttonDown' || eventName === 'buttonUp'\n || eventName === 'pressed' || eventName === 'toggled') {\n this.buttonEventEmitter.off(eventName, listener);\n } else {\n super.off(eventName, listener as never);\n }\n }\n\n setPressedNoSignal (value: boolean): void {\n this.setPressed(value, false);\n }\n\n isHovered (): boolean {\n return this.hovered;\n }\n\n isPressing (): boolean {\n return this.pressing && (this.pressInside || this.keepPressedOutside);\n }\n\n getDrawMode (): ButtonDrawMode {\n if (this.disabled || !this.enabledInHierarchy) {\n return ButtonDrawMode.Disabled;\n }\n if (!this.pressing && this.hovered) {\n return this.buttonPressed ? ButtonDrawMode.HoverPressed : ButtonDrawMode.Hover;\n }\n\n let pressed = this.buttonPressed;\n\n if (this.pressing) {\n pressed = this.pressInside || this.keepPressedOutside;\n if (this.buttonPressed) {\n pressed = !pressed;\n }\n }\n\n return pressed ? ButtonDrawMode.Pressed : ButtonDrawMode.Normal;\n }\n\n override getEffectiveMouseFilter (): MouseFilter {\n return this.disabled ? MouseFilter.Ignore : super.getEffectiveMouseFilter();\n }\n\n override getFocusModeWithOverride (): FocusMode {\n return this.disabled ? FocusMode.None : super.getFocusModeWithOverride();\n }\n\n override onMouseEnter (): void {\n this.hovered = true;\n if (this.mousePressing) {\n this.pressInside = true;\n }\n }\n\n override onMouseMove (event: InputEventMouseMotion): void {\n this.hovered = this.hasPoint(event.position);\n if (this.mousePressing) {\n this.pressInside = this.hovered;\n }\n }\n\n override onMouseLeave (): void {\n this.hovered = false;\n if (this.mousePressing) {\n this.pressInside = false;\n }\n }\n\n override onMouseDown (event: InputEventMouseButton): void {\n if (this.disabled || !hasButton(this.buttonMask, event.buttonIndex)) {\n return;\n }\n this.mousePressing = true;\n this.beginPress(true);\n event.accept();\n }\n\n override onMouseUp (event: InputEventMouseButton): void {\n if (!this.mousePressing || !hasButton(this.buttonMask, event.buttonIndex)) {\n return;\n }\n const activate = !event.canceled && (this.keepPressedOutside || this.hasPoint(event.position));\n\n this.mousePressing = false;\n this.finishPress(activate);\n event.accept();\n }\n\n override onTouchDown (event: InputEventScreenTouch): void {\n if (this.disabled || this.touchIndex !== -1) {\n return;\n }\n this.touchIndex = event.index;\n this.beginPress(true);\n event.accept();\n }\n\n override onTouchMove (event: InputEventScreenDrag): void {\n if (event.index === this.touchIndex) {\n this.pressInside = this.hasPoint(event.position);\n event.accept();\n }\n }\n\n override onTouchUp (event: InputEventScreenTouch): void {\n if (event.index !== this.touchIndex) {\n return;\n }\n const activate = !event.canceled && (this.keepPressedOutside || this.hasPoint(event.position));\n\n this.touchIndex = -1;\n this.finishPress(activate);\n event.accept();\n }\n\n override onKeyDown (event: InputEventKey): void {\n if (this.disabled || event.echo || this.keyboardPressing || !isActivationKey(event.keycode)) {\n return;\n }\n this.keyboardPressing = true;\n this.beginPress(true);\n event.accept();\n }\n\n override onKeyUp (event: InputEventKey): void {\n if (!this.keyboardPressing || !isActivationKey(event.keycode)) {\n return;\n }\n this.keyboardPressing = false;\n this.finishPress(true);\n event.accept();\n }\n\n override onLostFocus (): void {\n this.cancelPress();\n }\n\n override onScrollBegin (): void {\n this.cancelPress();\n }\n\n override onDestroy (): void {\n this.off('visibilityChanged', this.controlStateChanged);\n this.off('enabledChanged', this.controlStateChanged);\n this.buttonGroup = null;\n this.cancelPress();\n }\n\n setPressedFromGroup (value: boolean, signal: boolean): void {\n this.setPressedDirect(value, signal);\n }\n\n protected override onRootChanged (previousRoot: RootControl | null, nextRoot: RootControl | null): void {\n if (!nextRoot) {\n this.cancelPress();\n }\n }\n\n private setPressed (value: boolean, signal: boolean): void {\n if (this.buttonGroup && value) {\n if (!this.buttonPressed) {\n this.buttonGroup.select(this, signal);\n }\n\n return;\n }\n this.setPressedDirect(value, signal);\n }\n\n private setPressedDirect (value: boolean, signal: boolean): void {\n if (this._buttonPressed !== value) {\n this._buttonPressed = value;\n if (signal) {\n this.buttonEventEmitter.emit('toggled', value);\n }\n }\n }\n\n private beginPress (inside: boolean): void {\n if (this.pressing) {\n return;\n }\n this.pressing = true;\n this.pressInside = inside;\n this.buttonEventEmitter.emit('buttonDown');\n if (this.actionMode === ButtonActionMode.Press) {\n this.activate();\n }\n }\n\n private finishPress (activate: boolean): void {\n if (!this.pressing) {\n return;\n }\n this.pressing = false;\n this.pressInside = false;\n this.buttonEventEmitter.emit('buttonUp');\n if (activate && this.actionMode === ButtonActionMode.Release) {\n this.activate();\n }\n }\n\n private cancelPress (): void {\n const wasPressing = this.pressing;\n\n this.pressing = false;\n this.pressInside = false;\n this.mousePressing = false;\n this.keyboardPressing = false;\n this.touchIndex = -1;\n if (wasPressing) {\n this.buttonEventEmitter.emit('buttonUp');\n }\n }\n\n private activate (): void {\n if (this.toggleMode) {\n if (this.buttonGroup) {\n if (!this.buttonGroup.select(this, true, true) && !this.buttonPressed) {\n return;\n }\n } else {\n this.setPressedDirect(!this.buttonPressed, true);\n }\n }\n this.buttonEventEmitter.emit('pressed');\n }\n\n override fromData (data: spec.BaseButtonData): void {\n super.fromData(data);\n if (data.disabled !== undefined) {\n this.disabled = data.disabled;\n }\n if (data.toggleMode !== undefined) {\n this.toggleMode = data.toggleMode;\n }\n if (data.buttonPressed !== undefined) {\n this.setPressedNoSignal(data.buttonPressed);\n }\n if (data.buttonMask !== undefined) {\n this.buttonMask = data.buttonMask;\n }\n if (data.actionMode !== undefined) {\n this.actionMode = data.actionMode;\n }\n if (data.keepPressedOutside !== undefined) {\n this.keepPressedOutside = data.keepPressedOutside;\n }\n }\n}\n\nfunction hasButton (mask: MouseButtonMask, button: MouseButton): boolean {\n switch (button) {\n case MouseButton.Left:\n return (mask & MouseButtonMask.Left) !== 0;\n case MouseButton.Right:\n return (mask & MouseButtonMask.Right) !== 0;\n case MouseButton.Middle:\n return (mask & MouseButtonMask.Middle) !== 0;\n case MouseButton.Xbutton1:\n return (mask & MouseButtonMask.Xbutton1) !== 0;\n case MouseButton.Xbutton2:\n return (mask & MouseButtonMask.Xbutton2) !== 0;\n default:\n return false;\n }\n}\n\nfunction isActivationKey (keycode: string): boolean {\n return keycode === 'Enter' || keycode === 'Space' || keycode === ' ';\n}\n","import { effectsClass, math } from '@galacean/effects';\nimport type { Engine, Texture, spec } from '@galacean/effects';\nimport { BaseButton } from './base-button';\nimport { ButtonDrawMode, HorizontalAlignment, VerticalAlignment } from './enums';\n\nexport type ContentInsets = {\n left: number,\n top: number,\n right: number,\n bottom: number,\n};\n\n@effectsClass('Button')\nexport class Button extends BaseButton {\n static override readonly themeType: string = 'Button';\n private _text = '';\n private _icon: Texture | null | undefined;\n\n flat = false;\n clipText = false;\n expandIcon = false;\n textAlignment = HorizontalAlignment.Center;\n iconAlignment = HorizontalAlignment.Left;\n iconVerticalAlignment = VerticalAlignment.Center;\n\n constructor (engine: Engine, text = '') {\n super(engine);\n\n this._text = text;\n }\n\n get text (): string {\n return this._text;\n }\n\n set text (value: string) {\n if (this._text !== value) {\n this._text = value;\n this.updateMinimumSize();\n this.updateDesiredSize();\n }\n }\n\n get icon (): Texture | null {\n return this._icon === undefined ? this.getThemeIcon('icon') : this._icon;\n }\n\n set icon (value: Texture | null) {\n if (this._icon !== value) {\n this._icon = value;\n this.updateMinimumSize();\n this.updateDesiredSize();\n }\n }\n\n override getMinimumSize (): math.Vector2 {\n return this.measureButton();\n }\n\n override getDesiredSize (): math.Vector2 {\n return this.measureButton();\n }\n\n override draw (): void {\n const mode = this.getDrawMode();\n const styleBox = this.getThemeStyleBox(this.getStyleBoxName(mode));\n\n if (!this.flat) {\n this.drawStyleBox(styleBox, 0, 0, this.width, this.height);\n }\n if (this.hasFocus(true)) {\n this.drawStyleBox(this.getThemeStyleBox('focus'), 0, 0, this.width, this.height);\n }\n this.drawDecoration(mode);\n this.drawContent(mode, this.getContentInsets());\n }\n\n protected getContentInsets (): ContentInsets {\n return this.getBaseContentInsets();\n }\n\n protected getNormalContentInsets (): ContentInsets {\n return this.getThemeStyleBox('normal').getContentMargins();\n }\n\n protected drawDecoration (mode: ButtonDrawMode): void {}\n\n private measureButton (): math.Vector2 {\n const font = this.getThemeFont('font');\n const text = this.measureText(\n this.text, this.getThemeFontSize('fontSize'), font.family, font.weight, font.style,\n );\n const hasText = this.text.length > 0;\n const iconWidth = this.expandIcon ? 0 : this.icon?.width ?? 0;\n const iconHeight = this.expandIcon ? 0 : this.icon?.height ?? 0;\n const textWidth = this.clipText ? 0 : text.width;\n const textHeight = hasText ? text.lineHeight : 0;\n const separation = hasText && iconWidth > 0 && this.iconAlignment !== HorizontalAlignment.Center\n ? Math.max(0, this.getThemeConstant('iconSeparation'))\n : 0;\n const insets = this.getContentInsets();\n const contentWidth = this.iconAlignment === HorizontalAlignment.Center\n ? Math.max(iconWidth, textWidth)\n : iconWidth + separation + textWidth;\n const contentHeight = this.iconVerticalAlignment === VerticalAlignment.Center\n ? Math.max(iconHeight, textHeight)\n : iconHeight + textHeight;\n\n return new math.Vector2(\n insets.left + contentWidth + insets.right,\n insets.top + contentHeight + insets.bottom,\n );\n }\n\n private getStyleBoxName (mode: ButtonDrawMode): string {\n switch (mode) {\n case ButtonDrawMode.Disabled: return 'disabled';\n case ButtonDrawMode.HoverPressed: return 'hoverPressed';\n case ButtonDrawMode.Pressed: return 'pressed';\n case ButtonDrawMode.Hover: return 'hover';\n default: return 'normal';\n }\n }\n\n private drawContent (mode: ButtonDrawMode, insets: ContentInsets): void {\n const left = insets.left;\n const top = insets.top;\n const width = Math.max(0, this.width - insets.left - insets.right);\n const height = Math.max(0, this.height - insets.top - insets.bottom);\n const hasText = this.text.length > 0;\n const separation = this.icon && hasText && this.iconAlignment !== HorizontalAlignment.Center\n ? Math.max(0, this.getThemeConstant('iconSeparation'))\n : 0;\n const font = this.getThemeFont('font');\n const fontSize = this.getThemeFontSize('fontSize');\n const naturalText = this.measureText(this.text, fontSize, font.family, font.weight, font.style);\n const iconWidth = !this.clipText && hasText && this.iconAlignment !== HorizontalAlignment.Center\n ? Math.max(0, width - naturalText.width - separation)\n : width;\n const iconHeight = hasText && this.iconVerticalAlignment !== VerticalAlignment.Center\n ? Math.max(0, height - naturalText.lineHeight)\n : height;\n const iconSize = this.getIconSize(iconWidth, iconHeight);\n const reservedIconWidth = this.icon && this.iconAlignment !== HorizontalAlignment.Center\n ? iconSize.x + separation\n : 0;\n const textWidth = Math.max(0, width - reservedIconWidth);\n const sourceText = this.clipText ? this.ellipsizeText(this.text, textWidth) : this.text;\n const text = this.measureText(sourceText, fontSize, font.family, font.weight, font.style);\n let iconX = left;\n let textAreaX = left + reservedIconWidth;\n\n if (this.icon && this.iconAlignment === HorizontalAlignment.Right) {\n iconX = left + width - iconSize.x;\n textAreaX = left;\n } else if (this.icon && this.iconAlignment === HorizontalAlignment.Center) {\n iconX = left + (width - iconSize.x) * 0.5;\n textAreaX = left;\n }\n\n const textX = this.getAlignedX(textAreaX, textWidth, text.width, this.textAlignment);\n const textAreaY = this.icon && this.iconVerticalAlignment === VerticalAlignment.Top\n ? top + iconSize.y\n : top;\n const textHeight = Math.max(0, height - (this.icon && this.iconVerticalAlignment !== VerticalAlignment.Center\n ? iconSize.y\n : 0));\n const textY = textAreaY + (textHeight - text.lineHeight) * 0.5;\n\n if (this.clipText) {\n this.engine.graphics.pushClipRect(left, top, width, height);\n }\n try {\n if (this.icon) {\n const iconY = this.getAlignedY(top, height, iconSize.y, this.iconVerticalAlignment);\n\n this.drawTexture(iconX, iconY, iconSize.x, iconSize.y, this.icon, undefined, this.getIconTint(mode));\n }\n this.drawText(\n textX, textY, sourceText, fontSize,\n this.getFontColor(mode),\n font.family, font.weight, font.style,\n );\n } finally {\n if (this.clipText) {\n this.engine.graphics.popClipRect();\n }\n }\n }\n\n private getFontColor (mode: ButtonDrawMode): math.Color {\n switch (mode) {\n case ButtonDrawMode.Disabled: return this.getThemeColor('fontDisabledColor');\n case ButtonDrawMode.HoverPressed: return this.getThemeColor('fontHoverPressedColor');\n case ButtonDrawMode.Pressed: return this.getThemeColor('fontPressedColor');\n case ButtonDrawMode.Hover: return this.getThemeColor('fontHoverColor');\n default: return this.hasFocus(true)\n ? this.getThemeColor('fontFocusColor')\n : this.getThemeColor('fontColor');\n }\n }\n\n private getIconTint (mode: ButtonDrawMode): math.Color {\n switch (mode) {\n case ButtonDrawMode.Disabled: return this.getThemeColor('iconDisabledTint');\n case ButtonDrawMode.HoverPressed: return this.getThemeColor('iconHoverPressedTint');\n case ButtonDrawMode.Pressed: return this.getThemeColor('iconPressedTint');\n case ButtonDrawMode.Hover: return this.getThemeColor('iconHoverTint');\n default: return this.hasFocus(true)\n ? this.getThemeColor('iconFocusTint')\n : this.getThemeColor('iconTint');\n }\n }\n\n protected getBaseContentInsets (): ContentInsets {\n if (!this.getThemeConstant('alignToLargestStyleBox')) {\n return this.getThemeStyleBox(this.getStyleBoxName(this.getDrawMode())).getContentMargins();\n }\n const result: ContentInsets = { left: 0, top: 0, right: 0, bottom: 0 };\n\n for (const name of ['normal', 'hover', 'pressed', 'hoverPressed', 'disabled']) {\n const margin = this.getThemeStyleBox(name).getContentMargins();\n\n result.left = Math.max(result.left, margin.left);\n result.top = Math.max(result.top, margin.top);\n result.right = Math.max(result.right, margin.right);\n result.bottom = Math.max(result.bottom, margin.bottom);\n }\n\n return result;\n }\n\n private getIconSize (width: number, height: number): math.Vector2 {\n const icon = this.icon;\n\n if (!icon) {\n return new math.Vector2();\n }\n if (!this.expandIcon || icon.width <= 0 || icon.height <= 0) {\n return new math.Vector2(icon.width, icon.height);\n }\n const scale = Math.min(width / icon.width, height / icon.height);\n\n return new math.Vector2(icon.width * scale, icon.height * scale);\n }\n\n private getAlignedX (start: number, width: number, contentWidth: number, alignment: HorizontalAlignment): number {\n if (alignment === HorizontalAlignment.Center || alignment === HorizontalAlignment.Fill) {\n return start + (width - contentWidth) * 0.5;\n }\n if (alignment === HorizontalAlignment.Right) {\n return start + width - contentWidth;\n }\n\n return start;\n }\n\n private getAlignedY (start: number, height: number, contentHeight: number, alignment: VerticalAlignment): number {\n if (alignment === VerticalAlignment.Center || alignment === VerticalAlignment.Fill) {\n return start + (height - contentHeight) * 0.5;\n }\n if (alignment === VerticalAlignment.Bottom) {\n return start + height - contentHeight;\n }\n\n return start;\n }\n\n private ellipsizeText (text: string, width: number): string {\n const font = this.getThemeFont('font');\n const fontSize = this.getThemeFontSize('fontSize');\n const measurement = this.measureText(text, fontSize, font.family, font.weight, font.style);\n\n if (measurement.width <= width) {\n return text;\n }\n const ellipsis = '…';\n const ellipsisWidth = this.measureText(ellipsis, fontSize, font.family, font.weight, font.style).width;\n const characters = Array.from(text);\n let used = ellipsisWidth;\n let count = 0;\n\n if (ellipsisWidth > width) {\n return '';\n }\n while (count < characters.length && used + (measurement.advances[count] ?? 0) <= width) {\n used += measurement.advances[count] ?? 0;\n count++;\n }\n\n return characters.slice(0, count).join('') + ellipsis;\n }\n\n override fromData (data: spec.ButtonData): void {\n super.fromData(data);\n if (data.text !== undefined) {\n this.text = data.text;\n }\n if (data.icon !== undefined) {\n this.icon = data.icon ? this.engine.findObject<Texture>(data.icon) : null;\n }\n if (data.flat !== undefined) {\n this.flat = data.flat;\n }\n if (data.clipText !== undefined) {\n this.clipText = data.clipText;\n }\n if (data.expandIcon !== undefined) {\n this.expandIcon = data.expandIcon;\n }\n if (data.textAlignment !== undefined) {\n this.textAlignment = data.textAlignment;\n }\n if (data.iconAlignment !== undefined) {\n this.iconAlignment = data.iconAlignment;\n }\n if (data.iconVerticalAlignment !== undefined) {\n this.iconVerticalAlignment = data.iconVerticalAlignment;\n }\n }\n}\n","import { effectsClass } from '@galacean/effects';\nimport type { Engine, math } from '@galacean/effects';\nimport { Button } from './button';\nimport type { ContentInsets } from './button';\nimport { HorizontalAlignment } from './enums';\n\nconst CHECK_ICON_GRID_SIZE = 16;\n\n@effectsClass('Checkbox')\nexport class Checkbox extends Button {\n static override readonly themeType: string = 'Checkbox';\n\n constructor (engine: Engine, text = '') {\n super(engine, text);\n this.toggleMode = true;\n this.textAlignment = HorizontalAlignment.Left;\n }\n\n protected override getContentInsets (): ContentInsets {\n const insets = super.getContentInsets();\n const separation = this.text ? Math.max(0, this.getThemeConstant('markSeparation')) : 0;\n\n return {\n ...insets,\n left: insets.left + this.getMarkSize().width + separation,\n };\n }\n\n protected override drawDecoration (): void {\n const markSize = this.getThemeConstant('markSize');\n const iconSize = this.getMarkSize();\n const x = this.getNormalContentInsets().left;\n const yOffset = this.getThemeConstant('checkVOffset');\n const y = Math.floor((this.height - iconSize.height) * 0.5) + yOffset;\n const radio = !!this.buttonGroup;\n const iconName = this.disabled || !this.enabledInHierarchy\n ? radio\n ? this.buttonPressed ? 'radioCheckedDisabled' : 'radioUncheckedDisabled'\n : this.buttonPressed ? 'checkedDisabled' : 'uncheckedDisabled'\n : radio\n ? this.buttonPressed ? 'radioChecked' : 'radioUnchecked'\n : this.buttonPressed ? 'checked' : 'unchecked';\n const icon = this.getThemeIcon(iconName);\n\n if (icon) {\n this.drawTexture(\n x, y, icon.width, icon.height, icon, undefined,\n this.getThemeColor(this.buttonPressed ? 'checkedColor' : 'uncheckedColor'),\n );\n\n return;\n }\n const fallbackY = Math.floor((this.height - markSize) * 0.5) + yOffset;\n const centerX = x + markSize * 0.5;\n const centerY = fallbackY + markSize * 0.5;\n const disabled = this.disabled || !this.enabledInHierarchy;\n const markColor = disabled\n ? this.getThemeColor('markDisabledColor')\n : this.getThemeColor('markColor');\n const uncheckedColor = disabled\n ? this.getThemeColor('markUncheckedDisabledColor')\n : this.getThemeColor('markUncheckedColor');\n const checkedColor = disabled\n ? this.getThemeColor('checkedDisabledColor')\n : this.getThemeColor('checkedColor');\n const scale = markSize / CHECK_ICON_GRID_SIZE;\n\n if (this.buttonGroup) {\n if (this.buttonPressed) {\n this.fillCircle(centerX, centerY, 7 * scale, markColor);\n this.fillCircle(centerX, centerY, 4 * scale, checkedColor);\n } else {\n this.fillCircle(centerX, centerY, 7 * scale, uncheckedColor);\n }\n } else {\n this.fillRoundedMark(x + scale, fallbackY + scale, 14 * scale, 2.33 * scale, this.buttonPressed\n ? markColor\n : uncheckedColor);\n if (this.buttonPressed) {\n this.fillCheckMark(x, fallbackY, scale, checkedColor);\n }\n }\n }\n\n private fillRoundedMark (x: number, y: number, size: number, radius: number, color: math.Color): void {\n const points: Array<[number, number]> = [];\n const segments = 4;\n const corners: Array<[number, number, number]> = [\n [x + radius, y + radius, Math.PI],\n [x + size - radius, y + radius, Math.PI * 1.5],\n [x + size - radius, y + size - radius, 0],\n [x + radius, y + size - radius, Math.PI * 0.5],\n ];\n\n for (const [centerX, centerY, start] of corners) {\n for (let index = 0; index <= segments; index++) {\n const angle = start + index / segments * Math.PI * 0.5;\n\n points.push([centerX + Math.cos(angle) * radius, centerY + Math.sin(angle) * radius]);\n }\n }\n const centerX = x + size * 0.5;\n const centerY = y + size * 0.5;\n\n for (let index = 0; index < points.length; index++) {\n const current = points[index];\n const next = points[(index + 1) % points.length];\n\n this.fillTriangle(centerX, centerY, current[0], current[1], next[0], next[1], color);\n }\n }\n\n private fillCheckMark (x: number, y: number, scale: number, color: math.Color): void {\n const point = (px: number, py: number): [number, number] => [x + px * scale, y + py * scale];\n const top = point(11.5, 3.734);\n const inner = point(5.89, 9.346);\n const leftInner = point(4.185, 7.665);\n const left = point(2.685, 9.164);\n const bottom = point(5.889, 12.344);\n const right = point(13, 5.235);\n\n this.fillTriangle(leftInner[0], leftInner[1], left[0], left[1], bottom[0], bottom[1], color);\n this.fillTriangle(leftInner[0], leftInner[1], bottom[0], bottom[1], inner[0], inner[1], color);\n this.fillTriangle(top[0], top[1], inner[0], inner[1], bottom[0], bottom[1], color);\n this.fillTriangle(top[0], top[1], bottom[0], bottom[1], right[0], right[1], color);\n }\n\n private getMarkSize (): { width: number, height: number } {\n let width = 0;\n let height = 0;\n\n for (const name of [\n 'checked', 'unchecked', 'checkedDisabled', 'uncheckedDisabled',\n 'radioChecked', 'radioUnchecked', 'radioCheckedDisabled', 'radioUncheckedDisabled',\n ]) {\n const icon = this.getThemeIcon(name);\n\n width = Math.max(width, icon?.width ?? 0);\n height = Math.max(height, icon?.height ?? 0);\n }\n if (width <= 0 && height <= 0) {\n const fallback = this.getThemeConstant('markSize');\n\n return { width: fallback, height: fallback };\n }\n\n return { width, height };\n }\n}\n","import { effectsClass } from '@galacean/effects';\nimport type { Engine } from '@galacean/effects';\nimport { Button } from './button';\nimport type { ContentInsets } from './button';\nimport { HorizontalAlignment } from './enums';\n\n@effectsClass('CheckButton')\nexport class CheckButton extends Button {\n static override readonly themeType: string = 'CheckButton';\n\n constructor (engine: Engine, text = '') {\n super(engine, text);\n this.toggleMode = true;\n this.textAlignment = HorizontalAlignment.Left;\n }\n\n protected override getContentInsets (): ContentInsets {\n const insets = super.getContentInsets();\n const separation = this.text ? Math.max(0, this.getThemeConstant('switchSeparation')) : 0;\n\n return {\n ...insets,\n right: insets.right + this.getSwitchSize().width + separation,\n };\n }\n\n protected override drawDecoration (): void {\n const switchWidth = this.getThemeConstant('switchWidth');\n const switchHeight = this.getThemeConstant('switchHeight');\n const switchSize = this.getSwitchSize();\n const x = this.width - this.getNormalContentInsets().right - switchSize.width;\n const yOffset = this.getThemeConstant('checkVOffset');\n const y = (this.height - switchSize.height) * 0.5 + yOffset;\n const radius = switchHeight * 0.5;\n const iconName = this.disabled || !this.enabledInHierarchy\n ? this.buttonPressed ? 'checkedDisabled' : 'uncheckedDisabled'\n : this.buttonPressed ? 'checked' : 'unchecked';\n const icon = this.getThemeIcon(iconName);\n\n if (icon) {\n this.drawTexture(\n x, y, icon.width, icon.height, icon, undefined,\n this.getThemeColor(this.buttonPressed ? 'buttonCheckedColor' : 'buttonUncheckedColor'),\n );\n\n return;\n }\n const fallbackX = this.width - this.getNormalContentInsets().right - switchWidth;\n const fallbackY = (this.height - switchHeight) * 0.5 + yOffset;\n const activeColor = this.disabled || !this.enabledInHierarchy\n ? this.getThemeColor('switchDisabledColor')\n : this.getThemeColor('switchColor');\n const trackColor = this.buttonPressed ? activeColor : this.getThemeColor('switchOffColor');\n const knobX = this.buttonPressed ? fallbackX + switchWidth - radius : fallbackX + radius;\n\n this.fillRect(fallbackX + radius, fallbackY, switchWidth - switchHeight, switchHeight, trackColor);\n this.fillCircle(fallbackX + radius, fallbackY + radius, radius, trackColor);\n this.fillCircle(fallbackX + switchWidth - radius, fallbackY + radius, radius, trackColor);\n this.fillCircle(knobX, fallbackY + radius, radius - 2, this.getThemeColor('switchKnobColor'));\n }\n\n private getSwitchSize (): { width: number, height: number } {\n let width = 0;\n let height = 0;\n\n const names = this.disabled || !this.enabledInHierarchy\n ? ['checkedDisabled', 'uncheckedDisabled']\n : ['checked', 'unchecked'];\n\n for (const name of names) {\n const icon = this.getThemeIcon(name);\n\n width = Math.max(width, icon?.width ?? 0);\n height = Math.max(height, icon?.height ?? 0);\n }\n if (width <= 0 && height <= 0) {\n return {\n width: this.getThemeConstant('switchWidth'),\n height: this.getThemeConstant('switchHeight'),\n };\n }\n\n return { width, height };\n }\n}\n","import {\n EventEmitter,\n MouseButton,\n effectsClass,\n math,\n} from '@galacean/effects';\nimport type {\n Engine,\n EventEmitterListener,\n InputEventKey,\n InputEventMouseButton,\n InputEventMouseMotion,\n InputEventScreenDrag,\n InputEventScreenTouch,\n spec,\n} from '@galacean/effects';\nimport type { RootControl } from '../core/control';\nimport { FocusMode, MouseFilter } from '../core/enums';\nimport { Orientation } from '../layout/enums';\nimport { Range } from '../scroll/range';\nimport type { RangeEvent } from '../scroll/range';\n\nexport type SliderEvent = RangeEvent & {\n dragStarted: [],\n dragEnded: [valueChanged: boolean],\n};\n\ntype GrabberRect = {\n x: number,\n y: number,\n width: number,\n height: number,\n};\n\nexport class Slider extends Range {\n static override readonly themeType: string = 'Slider';\n private readonly sliderEventEmitter = new EventEmitter<SliderEvent>();\n private _orientation: Orientation;\n private _editable = true;\n private dragging = false;\n private hovered = false;\n private dragPosition = 0;\n private dragRatio = 0;\n private dragInitialValue = 0;\n private touchIndex = -1;\n\n scrollable = true;\n\n constructor (engine: Engine, orientation = Orientation.Horizontal) {\n super(engine);\n\n this._orientation = orientation;\n this.focusMode = FocusMode.All;\n this.mouseFilter = MouseFilter.Stop;\n }\n\n get orientation (): Orientation {\n return this._orientation;\n }\n\n get editable (): boolean {\n return this._editable;\n }\n\n set editable (value: boolean) {\n if (this._editable !== value) {\n this._editable = value;\n if (!value) {\n this.endDrag();\n }\n }\n }\n\n set orientation (value: Orientation) {\n if (value !== Orientation.Horizontal && value !== Orientation.Vertical) {\n throw new RangeError('Invalid Slider orientation.');\n }\n if (this._orientation !== value) {\n this._orientation = value;\n this.updateMinimumSize();\n }\n }\n\n override on<E extends keyof SliderEvent> (\n eventName: E,\n listener: EventEmitterListener<SliderEvent[E]>,\n ): void {\n if (eventName === 'dragStarted' || eventName === 'dragEnded') {\n this.sliderEventEmitter.on(eventName, listener);\n } else {\n super.on(eventName, listener as never);\n }\n }\n\n override off<E extends keyof SliderEvent> (\n eventName: E,\n listener: EventEmitterListener<SliderEvent[E]>,\n ): void {\n if (eventName === 'dragStarted' || eventName === 'dragEnded') {\n this.sliderEventEmitter.off(eventName, listener);\n } else {\n super.off(eventName, listener as never);\n }\n }\n\n override getMinimumSize (): math.Vector2 {\n const grabberSize = this.getThemeConstant('grabberSize');\n const thickness = Math.max(grabberSize, this.getThemeConstant('trackThickness'));\n\n return this.orientation === Orientation.Horizontal\n ? new math.Vector2(grabberSize, thickness)\n : new math.Vector2(thickness, grabberSize);\n }\n\n override draw (): void {\n const grabber = this.getGrabberRect();\n const highlighted = this.editable && (this.hovered || this.hasFocus(true));\n const grabberStyle = !this.editable\n ? 'grabberDisabled'\n : highlighted ? 'grabberHighlight' : 'grabber';\n const fillStyle = highlighted ? 'fillHighlight' : 'fill';\n const trackThickness = this.getThemeConstant('trackThickness');\n\n if (this.orientation === Orientation.Horizontal) {\n const centerY = (this.height - trackThickness) * 0.5;\n const fillWidth = grabber.x + grabber.width * 0.5;\n\n this.drawStyleBox(this.getThemeStyleBox('track'), 0, centerY, this.width, trackThickness);\n this.drawStyleBox(this.getThemeStyleBox(fillStyle), 0, centerY, fillWidth, trackThickness);\n } else {\n const centerX = (this.width - trackThickness) * 0.5;\n const fillY = grabber.y + grabber.height * 0.5;\n\n this.drawStyleBox(this.getThemeStyleBox('track'), centerX, 0, trackThickness, this.height);\n this.drawStyleBox(this.getThemeStyleBox(fillStyle), centerX, fillY, trackThickness, this.height - fillY);\n }\n this.drawStyleBox(this.getThemeStyleBox(grabberStyle), grabber.x, grabber.y, grabber.width, grabber.height);\n }\n\n override onMouseEnter (): void {\n this.hovered = true;\n }\n\n override onMouseMove (event: InputEventMouseMotion): void {\n this.hovered = this.hasPoint(event.position);\n if (this.dragging) {\n this.updateDrag(this.getAxis(event.position));\n event.accept();\n }\n }\n\n override onMouseLeave (): void {\n this.hovered = false;\n }\n\n override onMouseDown (event: InputEventMouseButton): void {\n if (!this.editable || event.buttonIndex !== MouseButton.Left) {\n return;\n }\n this.beginDrag(this.getAxis(event.position), this.getGrabberRect(), event.position);\n event.accept();\n }\n\n override onMouseUp (event: InputEventMouseButton): void {\n if (event.buttonIndex === MouseButton.Left && this.dragging) {\n this.endDrag();\n event.accept();\n }\n }\n\n override onTouchDown (event: InputEventScreenTouch): void {\n if (!this.editable || this.touchIndex !== -1) {\n return;\n }\n this.touchIndex = event.index;\n this.beginDrag(this.getAxis(event.position), this.getGrabberRect(), event.position);\n event.accept();\n }\n\n override onTouchMove (event: InputEventScreenDrag): void {\n if (this.dragging && event.index === this.touchIndex) {\n this.updateDrag(this.getAxis(event.position));\n event.accept();\n }\n }\n\n override onTouchUp (event: InputEventScreenTouch): void {\n if (event.index === this.touchIndex) {\n this.touchIndex = -1;\n this.endDrag();\n event.accept();\n }\n }\n\n override onMouseWheel (event: InputEventMouseButton): void {\n if (!this.editable || !this.scrollable) {\n return;\n }\n\n let direction = 0;\n\n if (event.buttonIndex === MouseButton.WheelUp || event.buttonIndex === MouseButton.WheelRight) {\n direction = 1;\n } else if (event.buttonIndex === MouseButton.WheelDown || event.buttonIndex === MouseButton.WheelLeft) {\n direction = -1;\n }\n if (direction !== 0) {\n const previous = this.value;\n\n this.value += direction * this.getIncrement() * event.factor;\n if (previous !== this.value) {\n event.accept();\n }\n }\n }\n\n override onKeyDown (event: InputEventKey): void {\n if (!this.editable) {\n return;\n }\n const increment = this.getIncrement();\n let target: number | undefined;\n\n if ((this.orientation === Orientation.Horizontal && event.keycode === 'ArrowLeft')\n || (this.orientation === Orientation.Vertical && event.keycode === 'ArrowDown')) {\n target = this.value - increment;\n } else if ((this.orientation === Orientation.Horizontal && event.keycode === 'ArrowRight')\n || (this.orientation === Orientation.Vertical && event.keycode === 'ArrowUp')) {\n target = this.value + increment;\n } else if (event.keycode === 'Home') {\n target = this.minValue;\n } else if (event.keycode === 'End') {\n target = this.maxValue;\n }\n\n if (target !== undefined) {\n const previous = this.value;\n\n this.value = target;\n if (previous !== this.value) {\n event.accept();\n }\n }\n }\n\n override onScrollBegin (): void {\n this.endDrag();\n }\n\n protected override onRootChanged (previousRoot: RootControl | null, nextRoot: RootControl | null): void {\n if (!nextRoot) {\n this.endDrag();\n }\n }\n\n private beginDrag (position: number, grabber: GrabberRect, point: math.Vector2): void {\n const insideGrabber = point.x >= grabber.x && point.x <= grabber.x + grabber.width\n && point.y >= grabber.y && point.y <= grabber.y + grabber.height;\n\n const initialValue = this.value;\n\n if (!insideGrabber) {\n this.setAsRatio(this.getRatioAt(position));\n }\n this.dragging = true;\n this.dragPosition = position;\n this.dragRatio = this.getAsRatio();\n this.dragInitialValue = initialValue;\n this.sliderEventEmitter.emit('dragStarted');\n }\n\n private updateDrag (position: number): void {\n const area = this.getUsableLength();\n\n if (area <= 0) {\n return;\n }\n const direction = this.orientation === Orientation.Horizontal ? 1 : -1;\n\n this.setAsRatio(this.dragRatio + direction * (position - this.dragPosition) / area);\n }\n\n private endDrag (): void {\n if (!this.dragging) {\n return;\n }\n const changed = this.value !== this.dragInitialValue;\n\n this.dragging = false;\n this.touchIndex = -1;\n this.sliderEventEmitter.emit('dragEnded', changed);\n }\n\n private getAxis (position: math.Vector2): number {\n return this.orientation === Orientation.Horizontal ? position.x : position.y;\n }\n\n private getAxisSize (): number {\n return this.orientation === Orientation.Horizontal ? this.width : this.height;\n }\n\n private getUsableLength (): number {\n return Math.max(0, this.getAxisSize() - this.getThemeConstant('grabberSize'));\n }\n\n private getRatioAt (position: number): number {\n const area = this.getUsableLength();\n const normalized = area > 0 ? (position - this.getThemeConstant('grabberSize') * 0.5) / area : 0;\n\n return this.orientation === Orientation.Horizontal ? normalized : 1 - normalized;\n }\n\n private getIncrement (): number {\n return this.step > 0 ? this.step : Math.max(0, this.maxValue - this.minValue) / 100;\n }\n\n private getGrabberRect (): GrabberRect {\n const grabberSize = this.getThemeConstant('grabberSize');\n const offset = this.getUsableLength() * this.getAsRatio();\n\n return this.orientation === Orientation.Horizontal\n ? { x: offset, y: (this.height - grabberSize) * 0.5, width: grabberSize, height: grabberSize }\n : { x: (this.width - grabberSize) * 0.5, y: this.getUsableLength() - offset, width: grabberSize, height: grabberSize };\n }\n\n override fromData (data: spec.SliderData): void {\n super.fromData(data);\n if (data.editable !== undefined) {\n this.editable = data.editable;\n }\n if (data.scrollable !== undefined) {\n this.scrollable = data.scrollable;\n }\n }\n\n}\n\n@effectsClass('HSlider')\nexport class HSlider extends Slider {\n static override readonly themeType: string = 'HSlider';\n constructor (engine: Engine) {\n super(engine, Orientation.Horizontal);\n }\n}\n\n@effectsClass('VSlider')\nexport class VSlider extends Slider {\n static override readonly themeType: string = 'VSlider';\n constructor (engine: Engine) {\n super(engine, Orientation.Vertical);\n }\n}\n","import {\n effectsClass,\n math,\n} from '@galacean/effects';\nimport type { Engine, spec } from '@galacean/effects';\nimport { MouseFilter } from '../core/enums';\nimport { Range } from '../scroll/range';\nimport { ProgressFillMode } from './enums';\n\n@effectsClass('ProgressBar')\nexport class ProgressBar extends Range {\n static override readonly themeType: string = 'ProgressBar';\n private _showPercentage = true;\n private _fillMode = ProgressFillMode.BeginToEnd;\n\n constructor (engine: Engine) {\n super(engine);\n\n this.step = 0.01;\n this.mouseFilter = MouseFilter.Ignore;\n }\n\n get showPercentage (): boolean {\n return this._showPercentage;\n }\n\n set showPercentage (value: boolean) {\n if (this._showPercentage !== value) {\n this._showPercentage = value;\n this.updateMinimumSize();\n this.updateDesiredSize();\n }\n }\n\n get fillMode (): ProgressFillMode {\n return this._fillMode;\n }\n\n set fillMode (value: ProgressFillMode) {\n this._fillMode = value;\n }\n\n override getMinimumSize (): math.Vector2 {\n const background = this.getThemeStyleBox('background').getMinimumSize();\n const fill = this.getThemeStyleBox('fill').getMinimumSize();\n const styleMinimum = new math.Vector2(Math.max(background.x, fill.x), Math.max(background.y, fill.y));\n\n if (!this.showPercentage) {\n return new math.Vector2(Math.max(1, styleMinimum.x), Math.max(1, styleMinimum.y));\n }\n const font = this.getThemeFont('font');\n const text = this.measureText(\n '100%', this.getThemeFontSize('fontSize'), font.family, font.weight, font.style,\n );\n\n return new math.Vector2(styleMinimum.x, Math.max(background.y + text.lineHeight, styleMinimum.y));\n }\n\n override getDesiredSize (): math.Vector2 {\n const minimum = this.getMinimumSize();\n\n return new math.Vector2(Math.max(120, minimum.x), minimum.y);\n }\n\n override draw (): void {\n const ratio = this.getAsRatio();\n const fillStyle = this.getThemeStyleBox('fill');\n const fillMinimum = fillStyle.getMinimumSize();\n\n this.drawStyleBox(this.getThemeStyleBox('background'), 0, 0, this.width, this.height);\n switch (this.fillMode) {\n case ProgressFillMode.BeginToEnd: {\n const progress = Math.round(ratio * (this.width - fillMinimum.x));\n\n if (progress > 0) {\n this.drawStyleBox(fillStyle, 0, 0, progress + fillMinimum.x, this.height);\n }\n\n break;\n }\n case ProgressFillMode.EndToBegin: {\n const progress = Math.round(ratio * (this.width - fillMinimum.x));\n\n if (progress > 0) {\n const remaining = Math.round((1 - ratio) * (this.width - fillMinimum.x));\n\n this.drawStyleBox(fillStyle, remaining, 0, progress + fillMinimum.x, this.height);\n }\n\n break;\n }\n case ProgressFillMode.TopToBottom: {\n const progress = Math.round(ratio * (this.height - fillMinimum.y));\n\n if (progress > 0) {\n this.drawStyleBox(fillStyle, 0, 0, this.width, progress + fillMinimum.y);\n }\n\n break;\n }\n case ProgressFillMode.BottomToTop: {\n const progress = Math.round(ratio * (this.height - fillMinimum.y));\n\n if (progress > 0) {\n const remaining = Math.round((1 - ratio) * (this.height - fillMinimum.y));\n\n this.drawStyleBox(fillStyle, 0, remaining, this.width, progress + fillMinimum.y);\n }\n\n break;\n }\n }\n\n if (this.showPercentage) {\n const text = `${Math.round(ratio * 100)}%`;\n const font = this.getThemeFont('font');\n const fontSize = this.getThemeFontSize('fontSize');\n const measurement = this.measureText(text, fontSize, font.family, font.weight, font.style);\n\n this.drawText(\n (this.width - measurement.width) * 0.5,\n (this.height - measurement.lineHeight) * 0.5,\n text, fontSize, this.getThemeColor('fontColor'), font.family, font.weight, font.style,\n );\n }\n }\n\n override fromData (data: spec.ProgressBarData): void {\n super.fromData(data);\n if (data.showPercentage !== undefined) {\n this.showPercentage = data.showPercentage;\n }\n if (data.fillMode !== undefined) {\n this.fillMode = data.fillMode;\n }\n }\n\n}\n","import {\n EventEmitter,\n MouseButton,\n MouseButtonMask,\n} from '@galacean/effects';\nimport type {\n Engine,\n EventEmitterListener,\n InputEventKey,\n InputEventMouseButton,\n InputEventMouseMotion,\n\n math } from '@galacean/effects';\nimport { Control } from '../core/control';\nimport type { ControlEvent } from '../core/control';\nimport { CursorShape, FocusMode, MouseFilter } from '../core/enums';\n\ntype EditSnapshot = {\n text: string,\n selectionStart: number,\n selectionEnd: number,\n};\n\nexport type TextInputEvent = ControlEvent & {\n textChanged: [text: string],\n textSubmitted: [text: string],\n};\n\nexport abstract class TextInput extends Control {\n static override readonly themeType: string = 'TextInput';\n protected abstract readonly multiline: boolean;\n private readonly textEventEmitter = new EventEmitter<TextInputEvent>();\n private _text = '';\n private _placeholderText = '';\n private _editable = true;\n private _maxLength = 0;\n private selectionStart = 0;\n private selectionEnd = 0;\n private selectionAnchor = 0;\n private selecting = false;\n private selectingWords = false;\n private wordSelectionStart = 0;\n private wordSelectionEnd = 0;\n private textarea: HTMLTextAreaElement | null = null;\n private textareaFocusTimer: ReturnType<typeof setTimeout> | null = null;\n private composing = false;\n private readonly undoStack: EditSnapshot[] = [];\n private readonly redoStack: EditSnapshot[] = [];\n\n constructor (engine: Engine) {\n super(engine);\n this.focusMode = FocusMode.All;\n this.mouseFilter = MouseFilter.Stop;\n this.defaultCursorShape = CursorShape.Ibeam;\n }\n\n get text (): string { return this._text; }\n set text (value: string) { this.setText(value, false); }\n\n get placeholderText (): string { return this._placeholderText; }\n set placeholderText (value: string) {\n if (this._placeholderText !== value) {\n this._placeholderText = value;\n this.updateMinimumSize();\n this.updateDesiredSize();\n }\n }\n\n get editable (): boolean { return this._editable; }\n set editable (value: boolean) {\n if (this._editable !== value) {\n this._editable = value;\n if (this.textarea) {this.textarea.readOnly = !value;}\n this.updateMinimumSize();\n }\n }\n\n get maxLength (): number { return this._maxLength; }\n set maxLength (value: number) {\n this._maxLength = Math.max(0, Math.floor(value));\n if (this._maxLength > 0 && this._text.length > this._maxLength) {\n this.setText(this._text.slice(0, this._maxLength), false);\n }\n if (this.textarea) {\n if (this._maxLength > 0) {this.textarea.maxLength = this._maxLength;} else {this.textarea.removeAttribute('maxlength');}\n }\n }\n\n get caretColumn (): number { return this.selectionEnd; }\n set caretColumn (value: number) { this.setSelection(value, value); }\n\n get hasSelection (): boolean { return this.selectionStart !== this.selectionEnd; }\n\n override on<E extends keyof TextInputEvent> (\n eventName: E,\n listener: EventEmitterListener<TextInputEvent[E]>,\n ): void {\n if (eventName === 'textChanged' || eventName === 'textSubmitted') {\n this.textEventEmitter.on(eventName, listener);\n } else {\n super.on(eventName, listener as never);\n }\n }\n\n override off<E extends keyof TextInputEvent> (\n eventName: E,\n listener: EventEmitterListener<TextInputEvent[E]>,\n ): void {\n if (eventName === 'textChanged' || eventName === 'textSubmitted') {\n this.textEventEmitter.off(eventName, listener);\n } else {\n super.off(eventName, listener as never);\n }\n }\n\n selectAll (): void { this.setSelection(0, this._text.length); }\n deselect (): void { this.setSelection(this.selectionEnd, this.selectionEnd); }\n getSelectedText (): string {\n const start = Math.min(this.selectionStart, this.selectionEnd);\n const end = Math.max(this.selectionStart, this.selectionEnd);\n\n return this._text.slice(start, end);\n }\n\n setSelection (start: number, end = start): void {\n this.selectionStart = Math.max(0, Math.min(this._text.length, Math.floor(start)));\n this.selectionEnd = Math.max(0, Math.min(this._text.length, Math.floor(end)));\n this.selectionAnchor = this.selectionStart;\n this.syncTextareaSelection();\n }\n\n override onMouseDown (event: InputEventMouseButton): void {\n if (event.buttonIndex !== MouseButton.Left) {return;}\n this.grabFocus(true);\n this.cancelTextareaFocus();\n const index = this.getCharacterIndex(event.position);\n\n if (event.doubleClick) {\n const [start, end] = this.getWordRange(index);\n\n this.wordSelectionStart = start;\n this.wordSelectionEnd = end;\n this.setSelection(start, end);\n this.selectingWords = true;\n this.selecting = true;\n } else if (event.shiftPressed) {\n this.moveCaret(index, true);\n this.selectingWords = false;\n this.selecting = true;\n } else {\n this.selectionAnchor = index;\n this.setSelection(index, index);\n this.selectingWords = false;\n this.selecting = true;\n }\n event.accept();\n }\n\n override onMouseMove (event: InputEventMouseMotion): void {\n if (!this.selecting || (event.buttonMask & MouseButtonMask.Left) === 0) {return;}\n const index = this.getCharacterIndex(event.position);\n\n if (this.selectingWords) {\n const [start, end] = this.getWordRange(index);\n\n if (index < this.wordSelectionStart) {\n this.setSelection(this.wordSelectionEnd, start);\n } else {\n this.setSelection(this.wordSelectionStart, end);\n }\n } else {\n this.setSelection(this.selectionAnchor, index);\n }\n event.accept();\n }\n\n override onMouseUp (event: InputEventMouseButton): void {\n if (event.buttonIndex === MouseButton.Left && this.selecting) {\n this.selecting = false;\n this.selectingWords = false;\n this.focusTextarea();\n event.accept();\n }\n }\n\n override onKeyDown (event: InputEventKey): void {\n const command = event.ctrlPressed || event.metaPressed;\n\n if (command && event.keycode.toLowerCase() === 'a') {\n this.selectAll();\n event.accept();\n\n return;\n }\n if (command && event.keycode.toLowerCase() === 'c') {\n this.copySelection();\n event.accept();\n\n return;\n }\n if (command && event.keycode.toLowerCase() === 'x' && this.editable) {\n this.copySelection();\n this.replaceSelection('');\n event.accept();\n\n return;\n }\n if (command && event.keycode.toLowerCase() === 'v' && this.editable) {\n this.pasteClipboard();\n event.accept();\n\n return;\n }\n if (command && event.keycode.toLowerCase() === 'z' && this.editable) {\n if (event.shiftPressed) {this.redo();} else {this.undo();}\n event.accept();\n\n return;\n }\n if (command && event.keycode.toLowerCase() === 'y' && this.editable) {\n this.redo();\n event.accept();\n\n return;\n }\n if (event.keycode === 'ArrowLeft' || event.keycode === 'ArrowRight') {\n const direction = event.keycode === 'ArrowLeft' ? -1 : 1;\n const next = direction < 0\n ? getPreviousCharacterIndex(this._text, this.selectionEnd)\n : getNextCharacterIndex(this._text, this.selectionEnd);\n\n this.moveCaret(next, event.shiftPressed);\n event.accept();\n\n return;\n }\n if (event.keycode === 'Home' || event.keycode === 'End') {\n const next = event.keycode === 'Home' ? this.getLineStart(this.selectionEnd) : this.getLineEnd(this.selectionEnd);\n\n this.moveCaret(next, event.shiftPressed);\n event.accept();\n\n return;\n }\n if (!this.editable) {return;}\n if (event.keycode === 'Backspace') {\n this.erase(-1);\n event.accept();\n\n return;\n }\n if (event.keycode === 'Delete') {\n this.erase(1);\n event.accept();\n\n return;\n }\n if (event.keycode === 'Enter') {\n if (this.multiline) {this.replaceSelection('\\n');} else {this.submit();}\n event.accept();\n\n return;\n }\n if (!command && !event.altPressed && event.unicode >= 32) {\n this.replaceSelection(String.fromCodePoint(event.unicode));\n event.accept();\n }\n }\n\n override onGotFocus (): void {\n this.activateTextarea();\n }\n\n override onLostFocus (): void {\n this.selecting = false;\n this.selectingWords = false;\n this.removeTextarea();\n }\n\n override onDestroy (): void {\n this.removeTextarea();\n }\n\n protected getDisplayText (): string {\n return this._text;\n }\n\n protected getSelectionRange (): [number, number] {\n return [Math.min(this.selectionStart, this.selectionEnd), Math.max(this.selectionStart, this.selectionEnd)];\n }\n\n protected moveCaret (index: number, extendSelection: boolean): void {\n const next = Math.max(0, Math.min(this._text.length, Math.floor(index)));\n\n if (extendSelection) {\n this.selectionStart = this.selectionAnchor;\n this.selectionEnd = next;\n this.syncTextareaSelection();\n } else {\n this.setSelection(next, next);\n }\n }\n\n protected getTextFont () {\n return this.getThemeFont('font');\n }\n\n protected getTextFontSize (): number {\n return this.getThemeFontSize('fontSize');\n }\n\n protected getTextColor (): math.Color {\n if (!this.editable) {return this.getThemeColor('fontReadOnlyColor');}\n if (this._text.length === 0) {return this.getThemeColor('fontPlaceholderColor');}\n\n return this.getThemeColor('fontColor');\n }\n\n protected getTextStyleBox () {\n return this.getThemeStyleBox(this.editable ? 'normal' : 'readOnly');\n }\n\n protected drawTextBackground (): void {\n this.drawStyleBox(this.getTextStyleBox(), 0, 0, this.width, this.height);\n if (this.hasFocus(true)) {\n this.drawStyleBox(this.getThemeStyleBox('focus'), 0, 0, this.width, this.height);\n }\n }\n\n protected drawSelection (x: number, y: number, width: number, height: number): void {\n if (width > 0) {this.fillRect(x, y, width, height, this.getThemeColor('selectionColor'));}\n }\n\n protected drawCaret (x: number, y: number, height: number): void {\n if (this.hasFocus() && !this.hasSelection) {\n this.fillRect(x, y, Math.max(1, this.getThemeConstant('caretWidth')), height, this.getThemeColor('caretColor'));\n }\n }\n\n protected abstract getCharacterIndex (position: math.Vector2): number;\n protected onTextValueChanged (): void {}\n\n private setText (value: string, signal: boolean): void {\n const limited = this._maxLength > 0 ? value.slice(0, this._maxLength) : value;\n\n if (this._text === limited) {return;}\n this._text = limited;\n this.selectionStart = Math.min(this.selectionStart, limited.length);\n this.selectionEnd = Math.min(this.selectionEnd, limited.length);\n this.onTextValueChanged();\n if (this.textarea && this.textarea.value !== limited) {this.textarea.value = limited;}\n this.updateMinimumSize();\n this.updateDesiredSize();\n if (signal) {this.textEventEmitter.emit('textChanged', limited);}\n }\n\n private replaceSelection (value: string): void {\n if (!this.editable) {return;}\n const [start, end] = this.getSelectionRange();\n\n this.pushUndo();\n const allowed = this._maxLength > 0\n ? value.slice(0, Math.max(0, this._maxLength - (this._text.length - (end - start))))\n : value;\n const next = `${this._text.slice(0, start)}${allowed}${this._text.slice(end)}`;\n const caret = start + allowed.length;\n\n this.setText(next, true);\n this.setSelection(caret, caret);\n this.redoStack.length = 0;\n }\n\n private erase (direction: number): void {\n if (this.hasSelection) {\n this.replaceSelection('');\n\n return;\n }\n const caret = this.selectionEnd;\n const start = direction < 0 ? getPreviousCharacterIndex(this._text, caret) : caret;\n const end = direction < 0 ? caret : getNextCharacterIndex(this._text, caret);\n\n if (start === end) {return;}\n this.setSelection(start, end);\n this.replaceSelection('');\n }\n\n private getLineStart (index: number): number {\n return this.multiline ? this._text.lastIndexOf('\\n', Math.max(0, index - 1)) + 1 : 0;\n }\n\n private getLineEnd (index: number): number {\n if (!this.multiline) {return this._text.length;}\n const end = this._text.indexOf('\\n', index);\n\n return end === -1 ? this._text.length : end;\n }\n\n private submit (): void {\n this.textEventEmitter.emit('textSubmitted', this._text);\n this.releaseFocus();\n }\n\n private pushUndo (): void {\n const snapshot = this.snapshot();\n const previous = this.undoStack[this.undoStack.length - 1];\n\n if (!previous || previous.text !== snapshot.text || previous.selectionStart !== snapshot.selectionStart\n || previous.selectionEnd !== snapshot.selectionEnd) {\n this.undoStack.push(snapshot);\n if (this.undoStack.length > 100) {this.undoStack.shift();}\n }\n }\n\n private undo (): void {\n const snapshot = this.undoStack.pop();\n\n if (!snapshot) {return;}\n this.redoStack.push(this.snapshot());\n this.restore(snapshot);\n }\n\n private redo (): void {\n const snapshot = this.redoStack.pop();\n\n if (!snapshot) {return;}\n this.undoStack.push(this.snapshot());\n this.restore(snapshot);\n }\n\n private snapshot (): EditSnapshot {\n return { text: this._text, selectionStart: this.selectionStart, selectionEnd: this.selectionEnd };\n }\n\n private restore (snapshot: EditSnapshot): void {\n this.setText(snapshot.text, true);\n this.setSelection(snapshot.selectionStart, snapshot.selectionEnd);\n }\n\n private copySelection (): void {\n const value = this.getSelectedText();\n\n if (value && typeof navigator !== 'undefined' && navigator.clipboard) {\n void navigator.clipboard.writeText(value);\n }\n }\n\n private pasteClipboard (): void {\n if (typeof navigator !== 'undefined' && navigator.clipboard) {\n void navigator.clipboard.readText().then(value => this.replaceSelection(value));\n }\n }\n\n private getWordRange (index: number): [number, number] {\n if (this._text.length === 0) {return [0, 0];}\n const position = Math.max(0, Math.min(this._text.length - 1, index));\n\n for (const match of this._text.matchAll(/[\\p{L}\\p{N}_]+|\\s+|[^\\p{L}\\p{N}_\\s]+/gu)) {\n const start = match.index;\n const end = start + match[0].length;\n\n if (position >= start && position < end) {return [start, end];}\n }\n\n return [position, position + 1];\n }\n\n private activateTextarea (): void {\n if (typeof document === 'undefined' || this.textarea) {return;}\n const textarea = document.createElement('textarea');\n\n textarea.value = this._text;\n textarea.readOnly = !this.editable;\n if (this._maxLength > 0) {textarea.maxLength = this._maxLength;}\n textarea.wrap = this.multiline ? 'soft' : 'off';\n textarea.setAttribute('aria-hidden', 'true');\n textarea.style.cssText = 'position:fixed;left:-10000px;top:0;width:1px;height:1px;opacity:0;pointer-events:none;';\n textarea.addEventListener('beforeinput', this.onBeforeInput);\n textarea.addEventListener('input', this.onTextareaInput);\n textarea.addEventListener('select', this.onTextareaSelect);\n textarea.addEventListener('compositionstart', this.onCompositionStart);\n textarea.addEventListener('compositionend', this.onCompositionEnd);\n textarea.addEventListener('keydown', this.onTextareaKeyDown);\n textarea.addEventListener('blur', this.onTextareaBlur);\n document.body.appendChild(textarea);\n this.textarea = textarea;\n this.syncTextareaSelection();\n this.scheduleTextareaFocus();\n }\n\n private removeTextarea (): void {\n this.cancelTextareaFocus();\n const textarea = this.textarea;\n\n if (!textarea) {return;}\n this.textarea = null;\n textarea.removeEventListener('beforeinput', this.onBeforeInput);\n textarea.removeEventListener('input', this.onTextareaInput);\n textarea.removeEventListener('select', this.onTextareaSelect);\n textarea.removeEventListener('compositionstart', this.onCompositionStart);\n textarea.removeEventListener('compositionend', this.onCompositionEnd);\n textarea.removeEventListener('keydown', this.onTextareaKeyDown);\n textarea.removeEventListener('blur', this.onTextareaBlur);\n textarea.remove();\n this.composing = false;\n }\n\n private syncTextareaSelection (): void {\n if (!this.textarea) {return;}\n const start = Math.min(this.selectionStart, this.selectionEnd);\n const end = Math.max(this.selectionStart, this.selectionEnd);\n\n this.textarea.setSelectionRange(start, end, this.selectionEnd < this.selectionStart ? 'backward' : 'forward');\n }\n\n private scheduleTextareaFocus (): void {\n this.cancelTextareaFocus();\n this.textareaFocusTimer = setTimeout(() => {\n this.textareaFocusTimer = null;\n this.focusTextarea();\n });\n }\n\n private cancelTextareaFocus (): void {\n if (this.textareaFocusTimer !== null) {\n clearTimeout(this.textareaFocusTimer);\n this.textareaFocusTimer = null;\n }\n }\n\n private focusTextarea (): void {\n if (this.textarea && this.hasFocus() && document.activeElement !== this.textarea) {\n this.textarea.focus({ preventScroll: true });\n }\n }\n\n private readonly onBeforeInput = (): void => {\n this.pushUndo();\n };\n\n private readonly onTextareaInput = (): void => {\n if (!this.textarea) {return;}\n this.setText(this.textarea.value, true);\n this.selectionStart = this.textarea.selectionStart;\n this.selectionEnd = this.textarea.selectionEnd;\n if (!this.composing) {this.redoStack.length = 0;}\n };\n\n private readonly onTextareaSelect = (): void => {\n if (!this.textarea) {return;}\n if (this.textarea.selectionDirection === 'backward') {\n this.selectionStart = this.textarea.selectionEnd;\n this.selectionEnd = this.textarea.selectionStart;\n } else {\n this.selectionStart = this.textarea.selectionStart;\n this.selectionEnd = this.textarea.selectionEnd;\n }\n this.selectionAnchor = this.selectionStart;\n };\n\n private readonly onCompositionStart = (): void => { this.composing = true; };\n private readonly onCompositionEnd = (): void => { this.composing = false; };\n\n private readonly onTextareaKeyDown = (event: KeyboardEvent): void => {\n if (event.key === 'Enter' && !this.multiline && !event.isComposing) {\n event.preventDefault();\n this.submit();\n }\n };\n\n private readonly onTextareaBlur = (): void => {\n if (this.textarea && this.hasFocus()) {this.releaseFocus();}\n };\n}\n\nfunction getPreviousCharacterIndex (value: string, index: number): number {\n const previous = Math.max(0, index - 1);\n\n if (previous > 0 && isLowSurrogate(value.charCodeAt(previous)) && isHighSurrogate(value.charCodeAt(previous - 1))) {\n return previous - 1;\n }\n\n return previous;\n}\n\nfunction getNextCharacterIndex (value: string, index: number): number {\n if (index >= value.length) {return value.length;}\n\n return Math.min(\n value.length,\n index + (isHighSurrogate(value.charCodeAt(index)) && isLowSurrogate(value.charCodeAt(index + 1)) ? 2 : 1),\n );\n}\n\nfunction isHighSurrogate (value: number): boolean {\n return value >= 0xd800 && value <= 0xdbff;\n}\n\nfunction isLowSurrogate (value: number): boolean {\n return value >= 0xdc00 && value <= 0xdfff;\n}\n","import { effectsClass, math } from '@galacean/effects';\nimport type { Engine, spec } from '@galacean/effects';\nimport { HorizontalAlignment } from './enums';\nimport { TextInput } from './text-input';\n\n@effectsClass('LineEdit')\nexport class LineEdit extends TextInput {\n static override readonly themeType: string = 'LineEdit';\n protected readonly multiline = false;\n alignment = HorizontalAlignment.Left;\n private scrollOffset = 0;\n private _secret = false;\n private _secretCharacter = '•';\n\n constructor (engine: Engine, text = '') {\n super(engine);\n this.text = text;\n }\n\n get secret (): boolean { return this._secret; }\n set secret (value: boolean) {\n if (this._secret !== value) {\n this._secret = value;\n this.updateDesiredSize();\n }\n }\n\n get secretCharacter (): string { return this._secretCharacter; }\n set secretCharacter (value: string) {\n const character = Array.from(value)[0] ?? '';\n\n if (this._secretCharacter !== character) {\n this._secretCharacter = character;\n this.updateDesiredSize();\n }\n }\n\n override getMinimumSize (): math.Vector2 {\n const style = this.getTextStyleBox();\n const margins = style.getContentMargins();\n const font = this.getTextFont();\n const measurement = this.measureText('M', this.getTextFontSize(), font.family, font.weight, font.style);\n\n return new math.Vector2(margins.left + margins.right + 24, margins.top + margins.bottom + measurement.lineHeight);\n }\n\n override getDesiredSize (): math.Vector2 {\n const style = this.getTextStyleBox();\n const margins = style.getContentMargins();\n const font = this.getTextFont();\n const display = this.getVisibleText() || this.placeholderText;\n const measurement = this.measureText(display, this.getTextFontSize(), font.family, font.weight, font.style);\n\n return new math.Vector2(\n margins.left + margins.right + measurement.width,\n margins.top + margins.bottom + measurement.lineHeight,\n );\n }\n\n override draw (): void {\n this.drawTextBackground();\n const style = this.getTextStyleBox();\n const margins = style.getContentMargins();\n const contentWidth = Math.max(0, this.width - margins.left - margins.right);\n const display = this.getVisibleText();\n const shown = display || this.placeholderText;\n const font = this.getTextFont();\n const fontSize = this.getTextFontSize();\n const full = this.measureText(shown, fontSize, font.family, font.weight, font.style);\n const textY = margins.top + Math.max(0, (this.height - margins.top - margins.bottom - full.lineHeight) * 0.5);\n\n this.updateScrollOffset(contentWidth);\n const textX = this.getAlignedTextX(full.width, contentWidth, margins.left) - this.scrollOffset;\n\n this.engine.graphics.pushClipRect(margins.left, margins.top, contentWidth, Math.max(0, this.height - margins.top - margins.bottom));\n if (display) {\n const [selectionStart, selectionEnd] = this.getSelectionRange();\n const prefix = this.measurePrefix(selectionStart);\n const selected = this.measurePrefix(selectionEnd) - prefix;\n\n this.drawSelection(textX + prefix, textY, selected, full.lineHeight);\n }\n this.drawText(textX, textY, shown, fontSize, this.getTextColor(), font.family, font.weight, font.style);\n if (display) {\n this.drawCaret(textX + this.measurePrefix(this.caretColumn), textY, full.lineHeight);\n } else {\n this.drawCaret(textX, textY, full.lineHeight);\n }\n this.engine.graphics.popClipRect();\n }\n\n protected override getDisplayText (): string {\n return this.getVisibleText();\n }\n\n protected override getCharacterIndex (position: math.Vector2): number {\n const style = this.getTextStyleBox();\n const margins = style.getContentMargins();\n const contentWidth = Math.max(0, this.width - margins.left - margins.right);\n const fullWidth = this.measurePrefix(this.text.length);\n const origin = this.getAlignedTextX(fullWidth, contentWidth, margins.left) - this.scrollOffset;\n const x = position.x - origin;\n\n if (x <= 0) {return 0;}\n const boundaries = getCharacterBoundaries(this.text);\n\n for (let index = 1; index < boundaries.length; index++) {\n const previous = this.measurePrefix(boundaries[index - 1]);\n const next = this.measurePrefix(boundaries[index]);\n\n if (x < (previous + next) * 0.5) {return boundaries[index - 1];}\n }\n\n return this.text.length;\n }\n\n private getVisibleText (): string {\n return this.secret\n ? (this.secretCharacter || '•').repeat(Array.from(this.text).length)\n : this.text;\n }\n\n private measurePrefix (column: number): number {\n const font = this.getTextFont();\n const prefix = this.text.slice(0, column);\n const visiblePrefix = this.secret\n ? (this.secretCharacter || '•').repeat(Array.from(prefix).length)\n : prefix;\n\n return this.measureText(\n visiblePrefix, this.getTextFontSize(), font.family, font.weight, font.style,\n ).width;\n }\n\n private updateScrollOffset (width: number): void {\n if (!this.hasFocus()) {\n this.scrollOffset = 0;\n\n return;\n }\n const caret = this.measurePrefix(this.caretColumn);\n\n if (caret - this.scrollOffset > width) {this.scrollOffset = caret - width;}\n if (caret < this.scrollOffset) {this.scrollOffset = caret;}\n }\n\n private getAlignedTextX (textWidth: number, contentWidth: number, left: number): number {\n if (this.alignment === HorizontalAlignment.Center) {return left + (contentWidth - textWidth) * 0.5;}\n if (this.alignment === HorizontalAlignment.Right) {return left + contentWidth - textWidth;}\n\n return left;\n }\n\n override fromData (data: spec.LineEditData): void {\n super.fromData(data);\n if (data.text !== undefined) {this.text = data.text;}\n if (data.placeholderText !== undefined) {this.placeholderText = data.placeholderText;}\n if (data.editable !== undefined) {this.editable = data.editable;}\n if (data.maxLength !== undefined) {this.maxLength = data.maxLength;}\n if (data.secret !== undefined) {this.secret = data.secret;}\n if (data.secretCharacter !== undefined) {this.secretCharacter = data.secretCharacter;}\n if (data.alignment !== undefined) {this.alignment = data.alignment;}\n }\n}\n\nfunction getCharacterBoundaries (value: string): number[] {\n const boundaries = [0];\n let offset = 0;\n\n for (const character of value) {\n offset += character.length;\n boundaries.push(offset);\n }\n\n return boundaries;\n}\n","import {\n MouseButton,\n effectsClass,\n math,\n} from '@galacean/effects';\nimport type { Engine, InputEventKey, InputEventMouseButton, spec } from '@galacean/effects';\nimport { TextInput } from './text-input';\n\n@effectsClass('TextEdit')\nexport class TextEdit extends TextInput {\n static override readonly themeType: string = 'TextEdit';\n protected readonly multiline = true;\n private scrollLine = 0;\n\n constructor (engine: Engine, text = '') {\n super(engine);\n this.text = text;\n }\n\n override getMinimumSize (): math.Vector2 {\n const margins = this.getTextStyleBox().getContentMargins();\n const font = this.getTextFont();\n const line = this.measureText('M', this.getTextFontSize(), font.family, font.weight, font.style);\n\n return new math.Vector2(margins.left + margins.right + 48, margins.top + margins.bottom + line.lineHeight * 2);\n }\n\n override getDesiredSize (): math.Vector2 {\n const margins = this.getTextStyleBox().getContentMargins();\n const font = this.getTextFont();\n const fontSize = this.getTextFontSize();\n const lines = (this.text || this.placeholderText).split('\\n');\n let width = 0;\n let lineHeight = this.measureText('M', fontSize, font.family, font.weight, font.style).lineHeight;\n\n for (const line of lines) {\n const measurement = this.measureText(line, fontSize, font.family, font.weight, font.style);\n\n width = Math.max(width, measurement.width);\n lineHeight = Math.max(lineHeight, measurement.lineHeight);\n }\n\n return new math.Vector2(\n margins.left + margins.right + width,\n margins.top + margins.bottom + lineHeight * Math.max(2, lines.length),\n );\n }\n\n override draw (): void {\n this.drawTextBackground();\n const margins = this.getTextStyleBox().getContentMargins();\n const font = this.getTextFont();\n const fontSize = this.getTextFontSize();\n const source = this.text || this.placeholderText;\n const lines = source.split('\\n');\n\n this.scrollLine = Math.max(0, Math.min(lines.length - 1, this.scrollLine));\n const lineHeight = this.measureText('M', fontSize, font.family, font.weight, font.style).lineHeight;\n const [selectionStart, selectionEnd] = this.getSelectionRange();\n let textIndex = lines.slice(0, this.scrollLine).reduce((total, line) => total + line.length + 1, 0);\n\n this.engine.graphics.pushClipRect(\n margins.left, margins.top,\n Math.max(0, this.width - margins.left - margins.right),\n Math.max(0, this.height - margins.top - margins.bottom),\n );\n for (let lineIndex = this.scrollLine; lineIndex < lines.length; lineIndex++) {\n const line = lines[lineIndex];\n const y = margins.top + (lineIndex - this.scrollLine) * lineHeight;\n\n if (y >= this.height - margins.bottom) {break;}\n if (this.text) {\n const lineStart = textIndex;\n const lineEnd = lineStart + line.length;\n const selectedStart = Math.max(lineStart, selectionStart);\n const selectedEnd = Math.min(lineEnd, selectionEnd);\n\n if (selectedStart < selectedEnd) {\n const prefix = this.measureLine(line.slice(0, selectedStart - lineStart));\n const selected = this.measureLine(line.slice(selectedStart - lineStart, selectedEnd - lineStart));\n\n this.drawSelection(margins.left + prefix, y, selected, lineHeight);\n }\n }\n this.drawText(margins.left, y, line, fontSize, this.getTextColor(), font.family, font.weight, font.style);\n if (this.text && this.caretColumn >= textIndex && this.caretColumn <= textIndex + line.length) {\n this.drawCaret(margins.left + this.measureLine(line.slice(0, this.caretColumn - textIndex)), y, lineHeight);\n }\n textIndex += line.length + 1;\n }\n this.engine.graphics.popClipRect();\n }\n\n override onMouseWheel (event: InputEventMouseButton): void {\n const lines = this.text.split('\\n').length;\n\n if (event.buttonIndex === MouseButton.WheelUp) {\n this.scrollLine = Math.max(0, this.scrollLine - Math.max(1, Math.round(event.factor)));\n event.accept();\n } else if (event.buttonIndex === MouseButton.WheelDown) {\n this.scrollLine = Math.min(Math.max(0, lines - 1), this.scrollLine + Math.max(1, Math.round(event.factor)));\n event.accept();\n }\n }\n\n override onKeyDown (event: InputEventKey): void {\n if (event.keycode === 'ArrowUp' || event.keycode === 'ArrowDown') {\n const next = this.getVerticalCaretIndex(event.keycode === 'ArrowUp' ? -1 : 1);\n\n this.moveCaret(next, event.shiftPressed);\n this.ensureCaretLineVisible();\n event.accept();\n\n return;\n }\n super.onKeyDown(event);\n }\n\n protected override getCharacterIndex (position: math.Vector2): number {\n const margins = this.getTextStyleBox().getContentMargins();\n const font = this.getTextFont();\n const lineHeight = this.measureText(\n 'M', this.getTextFontSize(), font.family, font.weight, font.style,\n ).lineHeight;\n const lines = this.text.split('\\n');\n const lineIndex = Math.max(0, Math.min(lines.length - 1, Math.floor((position.y - margins.top) / lineHeight) + this.scrollLine));\n const line = lines[lineIndex];\n let index = lines.slice(0, lineIndex).reduce((total, value) => total + value.length + 1, 0);\n const x = position.x - margins.left;\n\n for (let column = 1; column <= line.length; column++) {\n const previous = this.measureLine(line.slice(0, column - 1));\n const next = this.measureLine(line.slice(0, column));\n\n if (x < (previous + next) * 0.5) {return index + column - 1;}\n }\n index += line.length;\n\n return index;\n }\n\n private measureLine (value: string): number {\n const font = this.getTextFont();\n\n return this.measureText(value, this.getTextFontSize(), font.family, font.weight, font.style).width;\n }\n\n private getVerticalCaretIndex (direction: number): number {\n const lines = this.text.split('\\n');\n const caret = this.caretColumn;\n let lineStart = 0;\n let lineIndex = 0;\n\n for (; lineIndex < lines.length - 1; lineIndex++) {\n const lineEnd = lineStart + lines[lineIndex].length;\n\n if (caret <= lineEnd) {break;}\n lineStart = lineEnd + 1;\n }\n const column = caret - lineStart;\n const targetLine = Math.max(0, Math.min(lines.length - 1, lineIndex + direction));\n let targetStart = 0;\n\n for (let index = 0; index < targetLine; index++) {targetStart += lines[index].length + 1;}\n\n return targetStart + Math.min(column, lines[targetLine].length);\n }\n\n private ensureCaretLineVisible (): void {\n const margins = this.getTextStyleBox().getContentMargins();\n const font = this.getTextFont();\n const lineHeight = this.measureText(\n 'M', this.getTextFontSize(), font.family, font.weight, font.style,\n ).lineHeight;\n const visibleLines = Math.max(1, Math.floor((this.height - margins.top - margins.bottom) / lineHeight));\n const caretLine = this.text.slice(0, this.caretColumn).split('\\n').length - 1;\n\n if (caretLine < this.scrollLine) {this.scrollLine = caretLine;} else if (caretLine >= this.scrollLine + visibleLines) {this.scrollLine = caretLine - visibleLines + 1;}\n }\n\n protected override onTextValueChanged (): void {\n const lineCount = this.text.split('\\n').length;\n const caretLine = this.text.slice(0, this.caretColumn).split('\\n').length - 1;\n\n this.scrollLine = Math.max(0, Math.min(lineCount - 1, this.scrollLine));\n if (caretLine < this.scrollLine) {this.scrollLine = caretLine;}\n }\n\n override fromData (data: spec.TextEditData): void {\n super.fromData(data);\n if (data.text !== undefined) {this.text = data.text;}\n if (data.placeholderText !== undefined) {this.placeholderText = data.placeholderText;}\n if (data.editable !== undefined) {this.editable = data.editable;}\n if (data.maxLength !== undefined) {this.maxLength = data.maxLength;}\n }\n}\n","import { EventEmitter, effectsClass } from '@galacean/effects';\nimport type {\n Engine,\n EventEmitterListener,\n InputEventKey,\n math } from '@galacean/effects';\nimport { FocusMode } from '../core/enums';\nimport type { Control } from '../core/control';\nimport { PanelContainer } from '../layout/panel-container';\n\nexport type PopupEvent = {\n popupOpened: [],\n popupClosed: [],\n};\n\nexport abstract class Popup extends PanelContainer {\n static override readonly themeType: string = 'Popup';\n private readonly popupEventEmitter = new EventEmitter<PopupEvent>();\n\n constructor (engine: Engine) {\n super(engine);\n this.visible = false;\n this.focusMode = FocusMode.All;\n }\n\n onPopup<E extends keyof PopupEvent> (\n eventName: E,\n listener: EventEmitterListener<PopupEvent[E]>,\n ): void {\n this.popupEventEmitter.on(eventName, listener);\n }\n\n offPopup<E extends keyof PopupEvent> (\n eventName: E,\n listener: EventEmitterListener<PopupEvent[E]>,\n ): void {\n this.popupEventEmitter.off(eventName, listener);\n }\n\n popup (position: math.Vector2, source: Control | null = null): void {\n const root = source?.root ?? this.root;\n\n root?.popupControl(this, source, position);\n }\n\n hidePopup (): void {\n this.root?.closePopupControl(this);\n }\n\n override onKeyDown (event: InputEventKey): void {\n if (event.keycode === 'Escape') {\n this.hidePopup();\n event.accept();\n }\n }\n\n override onPopupOpened (): void {\n this.popupEventEmitter.emit('popupOpened');\n }\n\n override onPopupClosed (): void {\n this.popupEventEmitter.emit('popupClosed');\n }\n\n override onDestroy (): void {\n this.root?.closePopupControl(this);\n }\n}\n\n@effectsClass('PopupPanel')\nexport class PopupPanel extends Popup {\n static override readonly themeType: string = 'PopupPanel';\n}\n","import {\n EventEmitter,\n MouseButton,\n effectsClass,\n math,\n} from '@galacean/effects';\nimport type {\n EventEmitterListener,\n InputEventKey,\n InputEventMouseButton,\n InputEventMouseMotion,\n Texture,\n spec,\n} from '@galacean/effects';\nimport type { ControlEvent } from '../core/control';\nimport { Popup } from './popup';\n\nexport type PopupMenuItemId = number | string;\n\nexport type PopupMenuItem = {\n id: PopupMenuItemId,\n text: string,\n icon?: Texture | null,\n disabled?: boolean,\n separator?: boolean,\n checked?: boolean,\n};\n\nexport type PopupMenuEvent = ControlEvent & {\n idPressed: [id: PopupMenuItemId],\n};\n\n@effectsClass('PopupMenu')\nexport class PopupMenu extends Popup {\n static override readonly themeType: string = 'PopupMenu';\n private readonly menuEventEmitter = new EventEmitter<PopupMenuEvent>();\n private readonly items: PopupMenuItem[] = [];\n private hoveredIndex = -1;\n\n override on<E extends keyof PopupMenuEvent> (\n eventName: E,\n listener: EventEmitterListener<PopupMenuEvent[E]>,\n ): void {\n if (eventName === 'idPressed') {\n this.menuEventEmitter.on(eventName, listener);\n } else {\n super.on(eventName as never, listener as never);\n }\n }\n\n override off<E extends keyof PopupMenuEvent> (\n eventName: E,\n listener: EventEmitterListener<PopupMenuEvent[E]>,\n ): void {\n if (eventName === 'idPressed') {\n this.menuEventEmitter.off(eventName, listener);\n } else {\n super.off(eventName as never, listener as never);\n }\n }\n\n addItem (text: string, id: PopupMenuItemId = this.items.length, icon: Texture | null = null): void {\n this.items.push({ id, text, icon });\n this.updateMinimumSize();\n this.updateDesiredSize();\n }\n\n addSeparator (text = ''): void {\n this.items.push({ id: `separator-${this.items.length}`, text, separator: true, disabled: true });\n this.updateMinimumSize();\n this.updateDesiredSize();\n }\n\n clear (): void {\n this.items.length = 0;\n this.hoveredIndex = -1;\n this.updateMinimumSize();\n this.updateDesiredSize();\n }\n\n getItemCount (): number { return this.items.length; }\n getItem (index: number): PopupMenuItem | undefined {\n const item = this.items[index];\n\n return item ? { ...item } : undefined;\n }\n\n setItemDisabled (index: number, disabled: boolean): void {\n if (this.items[index]) {this.items[index].disabled = disabled;}\n }\n\n setItemChecked (index: number, checked: boolean): void {\n if (this.items[index]) {this.items[index].checked = checked;}\n }\n\n override getMinimumSize (): math.Vector2 {\n const panel = this.getThemeStyleBox('panel').getContentMargins();\n const font = this.getThemeFont('font');\n const fontSize = this.getThemeFontSize('fontSize');\n const itemHeight = this.getThemeConstant('itemHeight');\n let width = this.getThemeConstant('horizontalPadding') * 2;\n let height = 0;\n\n for (const item of this.items) {\n if (item.separator) {\n height += this.getThemeConstant('separatorHeight');\n } else {\n width = Math.max(width, this.measureText(item.text, fontSize, font.family, font.weight, font.style).width\n + this.getThemeConstant('horizontalPadding') * 2 + this.getThemeConstant('iconWidth'));\n height += itemHeight;\n }\n }\n\n return new math.Vector2(width + panel.left + panel.right, height + panel.top + panel.bottom);\n }\n\n override getDesiredSize (): math.Vector2 {\n return this.getMinimumSize();\n }\n\n override draw (): void {\n super.draw();\n const panel = this.getThemeStyleBox('panel').getContentMargins();\n const font = this.getThemeFont('font');\n const fontSize = this.getThemeFontSize('fontSize');\n const itemHeight = this.getThemeConstant('itemHeight');\n const padding = this.getThemeConstant('horizontalPadding');\n const iconWidth = this.getThemeConstant('iconWidth');\n let y = panel.top;\n\n for (let index = 0; index < this.items.length; index++) {\n const item = this.items[index];\n\n if (item.separator) {\n const height = this.getThemeConstant('separatorHeight');\n\n this.drawStyleBox(\n this.getThemeStyleBox('separator'), panel.left + padding, y + height * 0.5,\n Math.max(0, this.width - panel.left - panel.right - padding * 2), 1,\n );\n y += height;\n continue;\n }\n if (index === this.hoveredIndex && !item.disabled) {\n this.drawStyleBox(\n this.getThemeStyleBox('hover'), panel.left, y,\n Math.max(0, this.width - panel.left - panel.right), itemHeight,\n );\n }\n if (item.checked) {\n this.drawText(panel.left + padding, y + 2, '✓', fontSize, this.getThemeColor('checkColor'),\n font.family, font.weight, font.style);\n }\n if (item.icon) {\n const iconSize = Math.min(itemHeight - 4, iconWidth);\n\n this.drawTexture(panel.left + padding, y + (itemHeight - iconSize) * 0.5, iconSize, iconSize, item.icon);\n }\n const measurement = this.measureText(item.text, fontSize, font.family, font.weight, font.style);\n\n this.drawText(\n panel.left + padding + iconWidth,\n y + (itemHeight - measurement.lineHeight) * 0.5,\n item.text,\n fontSize,\n this.getThemeColor(item.disabled ? 'fontDisabledColor' : 'fontColor'),\n font.family,\n font.weight,\n font.style,\n );\n y += itemHeight;\n }\n }\n\n override onMouseMove (event: InputEventMouseMotion): void {\n this.hoveredIndex = this.getIndexAt(event.position.y);\n }\n\n override onMouseLeave (): void {\n this.hoveredIndex = -1;\n }\n\n override onMouseDown (event: InputEventMouseButton): void {\n if (event.buttonIndex !== MouseButton.Left) {return;}\n const index = this.getIndexAt(event.position.y);\n\n if (this.activateIndex(index)) {event.accept();}\n }\n\n override onKeyDown (event: InputEventKey): void {\n if (event.keycode === 'ArrowDown' || event.keycode === 'ArrowUp') {\n this.hoveredIndex = this.findEnabledIndex(this.hoveredIndex, event.keycode === 'ArrowDown' ? 1 : -1);\n event.accept();\n\n return;\n }\n if (event.keycode === 'Enter' || event.keycode === 'Space' || event.keycode === ' ') {\n if (this.activateIndex(this.hoveredIndex)) {event.accept();}\n\n return;\n }\n super.onKeyDown(event);\n }\n\n override onPopupOpened (): void {\n this.hoveredIndex = this.findEnabledIndex(-1, 1);\n super.onPopupOpened();\n }\n\n private getIndexAt (positionY: number): number {\n const panel = this.getThemeStyleBox('panel').getContentMargins();\n const itemHeight = this.getThemeConstant('itemHeight');\n let y = panel.top;\n\n for (let index = 0; index < this.items.length; index++) {\n const height = this.items[index].separator ? this.getThemeConstant('separatorHeight') : itemHeight;\n\n if (positionY >= y && positionY < y + height) {return index;}\n y += height;\n }\n\n return -1;\n }\n\n private activateIndex (index: number): boolean {\n const item = this.items[index];\n\n if (!item || item.disabled || item.separator) {return false;}\n this.menuEventEmitter.emit('idPressed', item.id);\n this.hidePopup();\n\n return true;\n }\n\n private findEnabledIndex (origin: number, direction: number): number {\n if (this.items.length === 0) {return -1;}\n let index = origin < 0 && direction < 0 ? this.items.length : origin;\n\n for (let count = 0; count < this.items.length; count++) {\n index = (index + direction + this.items.length) % this.items.length;\n const item = this.items[index];\n\n if (!item.disabled && !item.separator) {return index;}\n }\n\n return -1;\n }\n\n override fromData (data: spec.PopupMenuData): void {\n super.fromData(data);\n if (data.items !== undefined) {\n this.clear();\n for (const item of data.items) {\n if (item.separator) {\n this.addSeparator(item.text);\n } else {\n this.addItem(item.text, item.id);\n const index = this.items.length - 1;\n\n this.setItemDisabled(index, item.disabled ?? false);\n this.setItemChecked(index, item.checked ?? false);\n }\n }\n }\n }\n}\n","import { EventEmitter, effectsClass, math } from '@galacean/effects';\nimport type { Engine, EventEmitterListener, spec } from '@galacean/effects';\nimport { FocusMode } from '../core/enums';\nimport { Button } from './button';\nimport type { ContentInsets } from './button';\nimport { ButtonDrawMode, HorizontalAlignment } from './enums';\nimport type { PopupMenuEvent, PopupMenuItemId } from './popup-menu';\nimport { PopupMenu } from './popup-menu';\n\nconst OPTION_ARROW_GRID_SIZE = 12;\n\n@effectsClass('MenuButton')\nexport class MenuButton extends Button {\n static override readonly themeType: string = 'MenuButton';\n readonly popupMenu: PopupMenu;\n private readonly openMenu = () => this.showPopup();\n\n constructor (engine: Engine, text = '') {\n super(engine, text);\n this.focusMode = FocusMode.Accessibility;\n this.popupMenu = new PopupMenu(engine);\n this.on('pressed', this.openMenu);\n }\n\n showPopup (): void {\n const transform = this.getGlobalTransform2D().elements;\n\n this.popupMenu.setSize(Math.max(this.width, this.popupMenu.getBoundDesiredSize().x), this.popupMenu.getBoundDesiredSize().y);\n this.popupMenu.popup(new math.Vector2(transform[6], transform[7] + this.height), this);\n }\n\n override onDestroy (): void {\n this.off('pressed', this.openMenu);\n this.popupMenu.dispose();\n super.onDestroy();\n }\n\n override fromData (data: spec.MenuButtonData): void {\n super.fromData(data);\n if (data.items !== undefined) {this.popupMenu.fromData({ items: data.items });}\n }\n}\n\nexport type OptionButtonEvent = {\n itemSelected: [id: PopupMenuItemId],\n};\n\n@effectsClass('OptionButton')\nexport class OptionButton extends MenuButton {\n static override readonly themeType: string = 'OptionButton';\n private readonly optionEventEmitter = new EventEmitter<OptionButtonEvent>();\n private _selected = -1;\n private readonly menuSelected = (id: PopupMenuItemId) => this.selectId(id, true);\n\n constructor (engine: Engine) {\n super(engine);\n this.focusMode = FocusMode.All;\n this.textAlignment = HorizontalAlignment.Left;\n this.popupMenu.on('idPressed', this.menuSelected as EventEmitterListener<PopupMenuEvent['idPressed']>);\n }\n\n protected override getContentInsets (): ContentInsets {\n const insets = super.getContentInsets();\n const arrow = this.getThemeIcon('arrow');\n const arrowWidth = arrow?.width ?? this.getThemeConstant('arrowSize');\n\n return {\n ...insets,\n right: insets.right + arrowWidth + Math.max(0, this.getThemeConstant('hSeparation')),\n };\n }\n\n protected override drawDecoration (mode: ButtonDrawMode): void {\n const arrow = this.getThemeIcon('arrow');\n const size = arrow?.width ?? this.getThemeConstant('arrowSize');\n const height = arrow?.height ?? size;\n const margin = this.getThemeConstant('arrowMargin');\n const x = Math.max(0, this.width - margin - size);\n const y = Math.floor(Math.abs(this.height - height) * 0.5);\n const color = this.getArrowColor(mode);\n\n if (arrow) {\n this.drawTexture(x, y, size, height, arrow, undefined, color);\n\n return;\n }\n const scale = size / OPTION_ARROW_GRID_SIZE;\n const startX = x + 2 * scale;\n const startY = y + 4 * scale;\n const middleX = x + 6 * scale;\n const middleY = y + 8 * scale;\n const endX = x + 10 * scale;\n const thickness = 2 * scale;\n const radius = thickness * 0.5;\n\n this.drawLine(startX, startY, middleX, middleY, color, thickness);\n this.drawLine(middleX, middleY, endX, startY, color, thickness);\n this.fillCircle(startX, startY, radius, color);\n this.fillCircle(middleX, middleY, radius, color);\n this.fillCircle(endX, startY, radius, color);\n }\n\n private getArrowColor (mode: ButtonDrawMode): math.Color {\n if (this.getThemeConstant('modulateArrow') === 0) {\n return this.getThemeColor('iconTint');\n }\n switch (mode) {\n case ButtonDrawMode.Pressed: return this.getThemeColor('fontPressedColor');\n case ButtonDrawMode.Hover: return this.getThemeColor('fontHoverColor');\n case ButtonDrawMode.HoverPressed: return this.getThemeColor('fontHoverPressedColor');\n case ButtonDrawMode.Disabled: return this.getThemeColor('fontDisabledColor');\n default: return this.hasFocus(true)\n ? this.getThemeColor('fontFocusColor')\n : this.getThemeColor('fontColor');\n }\n }\n\n get selected (): number { return this._selected; }\n set selected (value: number) { this.select(value, false); }\n\n onOption<E extends keyof OptionButtonEvent> (\n eventName: E,\n listener: EventEmitterListener<OptionButtonEvent[E]>,\n ): void {\n this.optionEventEmitter.on(eventName, listener);\n }\n\n offOption<E extends keyof OptionButtonEvent> (\n eventName: E,\n listener: EventEmitterListener<OptionButtonEvent[E]>,\n ): void {\n this.optionEventEmitter.off(eventName, listener);\n }\n\n addItem (text: string, id: PopupMenuItemId = this.popupMenu.getItemCount()): void {\n this.popupMenu.addItem(text, id);\n if (this._selected === -1) {this.select(0, false);}\n }\n\n clear (): void {\n this.popupMenu.clear();\n this._selected = -1;\n this.text = '';\n }\n\n select (index: number, signal = true): void {\n const item = this.popupMenu.getItem(index);\n\n if (!item || item.disabled || item.separator) {return;}\n this._selected = index;\n this.text = item.text;\n if (signal) {this.optionEventEmitter.emit('itemSelected', item.id);}\n }\n\n selectId (id: PopupMenuItemId, signal = true): void {\n for (let index = 0; index < this.popupMenu.getItemCount(); index++) {\n if (this.popupMenu.getItem(index)?.id === id) {\n this.select(index, signal);\n\n return;\n }\n }\n }\n\n override onDestroy (): void {\n this.popupMenu.off('idPressed', this.menuSelected as EventEmitterListener<PopupMenuEvent['idPressed']>);\n super.onDestroy();\n }\n\n override fromData (data: spec.OptionButtonData): void {\n super.fromData(data);\n if (data.selected !== undefined) {this.select(data.selected, false);}\n }\n}\n","import {\n EventEmitter,\n MouseButton,\n effectsClass,\n math,\n} from '@galacean/effects';\nimport type {\n Engine,\n EventEmitterListener,\n InputEventMouseButton,\n InputEventMouseMotion,\n spec,\n} from '@galacean/effects';\nimport { Control, SizeFlags } from '../core/control';\nimport type { ControlEvent } from '../core/control';\nimport { MouseFilter } from '../core/enums';\nimport { GridContainer } from '../layout/grid-container';\nimport { VBoxContainer } from '../layout/box-container';\nimport { HSlider } from './slider';\nimport { Label } from './label';\nimport { LineEdit } from './line-edit';\nimport { PopupPanel } from './popup';\nimport { Button } from './button';\nimport type { ContentInsets } from './button';\nimport type { ButtonDrawMode } from './enums';\nimport type { BaseButtonEvent } from './base-button';\n\ntype HSV = { h: number, s: number, v: number };\n\nexport type ColorPickerEvent = ControlEvent & {\n colorChanged: [color: math.Color],\n};\n\nexport type ColorPickerButtonEvent = BaseButtonEvent & {\n colorChanged: [color: math.Color],\n};\n\nclass ColorPlane extends Control {\n hue = 0;\n saturation = 1;\n value = 1;\n changed?: (saturation: number, value: number) => void;\n private dragging = false;\n\n constructor (engine: Engine) {\n super(engine);\n this.mouseFilter = MouseFilter.Stop;\n this.setCustomMinimumSize(180, 120);\n }\n\n override draw (): void {\n const columns = 20;\n const rows = 12;\n\n for (let row = 0; row < rows; row++) {\n for (let column = 0; column < columns; column++) {\n const saturation = column / (columns - 1);\n const value = 1 - row / (rows - 1);\n\n this.fillRect(\n column * this.width / columns,\n row * this.height / rows,\n this.width / columns + 1,\n this.height / rows + 1,\n hsvToColor(this.hue, saturation, value, 1),\n );\n }\n }\n const x = this.saturation * this.width;\n const y = (1 - this.value) * this.height;\n\n this.drawCircle(x, y, 5, new math.Color(0, 0, 0, 1), 3);\n this.drawCircle(x, y, 4, new math.Color(1, 1, 1, 1), 1);\n }\n\n override onMouseDown (event: InputEventMouseButton): void {\n if (event.buttonIndex === MouseButton.Left) {\n this.dragging = true;\n this.updateValue(event.position);\n event.accept();\n }\n }\n\n override onMouseMove (event: InputEventMouseMotion): void {\n if (this.dragging) {\n this.updateValue(event.position);\n event.accept();\n }\n }\n\n override onMouseUp (event: InputEventMouseButton): void {\n if (event.buttonIndex === MouseButton.Left && this.dragging) {\n this.dragging = false;\n this.updateValue(event.position);\n event.accept();\n }\n }\n\n private updateValue (position: math.Vector2): void {\n this.saturation = clamp01(position.x / Math.max(1, this.width));\n this.value = 1 - clamp01(position.y / Math.max(1, this.height));\n this.changed?.(this.saturation, this.value);\n }\n}\n\nclass HueBar extends Control {\n value = 0;\n changed?: (value: number) => void;\n private dragging = false;\n\n constructor (engine: Engine) {\n super(engine);\n this.mouseFilter = MouseFilter.Stop;\n this.setCustomMinimumSize(180, 18);\n }\n\n override draw (): void {\n const count = 24;\n\n for (let index = 0; index < count; index++) {\n this.fillRect(\n index * this.width / count, 0, this.width / count + 1, this.height,\n hsvToColor(index / (count - 1), 1, 1, 1),\n );\n }\n this.drawLine(this.value * this.width, 0, this.value * this.width, this.height,\n new math.Color(1, 1, 1, 1), 2);\n }\n\n override onMouseDown (event: InputEventMouseButton): void {\n if (event.buttonIndex === MouseButton.Left) {\n this.dragging = true;\n this.updateValue(event.position.x);\n event.accept();\n }\n }\n\n override onMouseMove (event: InputEventMouseMotion): void {\n if (this.dragging) {\n this.updateValue(event.position.x);\n event.accept();\n }\n }\n\n override onMouseUp (event: InputEventMouseButton): void {\n if (event.buttonIndex === MouseButton.Left && this.dragging) {\n this.dragging = false;\n this.updateValue(event.position.x);\n event.accept();\n }\n }\n\n private updateValue (position: number): void {\n this.value = clamp01(position / Math.max(1, this.width));\n this.changed?.(this.value);\n }\n}\n\n@effectsClass('ColorPicker')\nexport class ColorPicker extends VBoxContainer {\n static override readonly themeType: string = 'ColorPicker';\n private readonly colorEventEmitter = new EventEmitter<ColorPickerEvent>();\n private readonly plane: ColorPlane;\n private readonly hueBar: HueBar;\n private readonly alphaSlider: HSlider;\n private readonly channelFields: LineEdit[] = [];\n private readonly hexField: LineEdit;\n private readonly currentColor = new math.Color(1, 1, 1, 1);\n private syncing = false;\n private _editAlpha = true;\n\n constructor (engine: Engine) {\n super(engine);\n this.setThemeConstantOverride('separation', 6);\n this.plane = new ColorPlane(engine);\n this.plane.setSizeFlags(SizeFlags.ExpandFill, SizeFlags.ExpandFill);\n this.plane.parent = this;\n this.hueBar = new HueBar(engine);\n this.hueBar.setSizeFlags(SizeFlags.ExpandFill, SizeFlags.Fill);\n this.hueBar.parent = this;\n this.alphaSlider = new HSlider(engine);\n this.alphaSlider.minValue = 0;\n this.alphaSlider.maxValue = 1;\n this.alphaSlider.step = 0.01;\n this.alphaSlider.setCustomMinimumSize(180, 18);\n this.alphaSlider.parent = this;\n const channels = new GridContainer(engine);\n\n channels.columns = 4;\n channels.setThemeConstantOverride('horizontalSeparation', 4);\n channels.setThemeConstantOverride('verticalSeparation', 4);\n channels.parent = this;\n for (const name of ['R', 'G', 'B', 'A']) {\n const index = this.channelFields.length;\n const row = new VBoxContainer(engine);\n const label = new Label(engine, name);\n const field = new LineEdit(engine);\n\n row.setThemeConstantOverride('separation', 2);\n label.parent = row;\n field.parent = row;\n row.parent = channels;\n field.on('textSubmitted', value => this.submitChannel(index, value));\n this.channelFields.push(field);\n }\n this.hexField = new LineEdit(engine);\n this.hexField.placeholderText = '#RRGGBBAA';\n this.hexField.parent = this;\n this.hexField.on('textSubmitted', value => this.submitHex(value));\n this.plane.changed = (saturation, value) => {\n const hsv = colorToHsv(this.currentColor);\n\n this.setColor(hsvToColor(hsv.h, saturation, value, this.currentColor.a), true);\n };\n this.hueBar.changed = hue => {\n const hsv = colorToHsv(this.currentColor);\n\n this.setColor(hsvToColor(hue, hsv.s, hsv.v, this.currentColor.a), true);\n };\n this.alphaSlider.on('valueChanged', value => {\n if (!this.syncing) {\n this.setColor(new math.Color(this.currentColor.r, this.currentColor.g, this.currentColor.b, value), true);\n }\n });\n this.syncEditors();\n }\n\n get color (): math.Color { return this.currentColor.clone(); }\n set color (value: math.Color) { this.setColor(value, false); }\n get editAlpha (): boolean { return this._editAlpha; }\n set editAlpha (value: boolean) {\n if (this._editAlpha !== value) {\n this._editAlpha = value;\n this.syncEditors();\n }\n }\n\n override on<E extends keyof ColorPickerEvent> (\n eventName: E,\n listener: EventEmitterListener<ColorPickerEvent[E]>,\n ): void {\n if (eventName === 'colorChanged') {\n this.colorEventEmitter.on(eventName, listener);\n } else {\n super.on(eventName, listener as never);\n }\n }\n\n override off<E extends keyof ColorPickerEvent> (\n eventName: E,\n listener: EventEmitterListener<ColorPickerEvent[E]>,\n ): void {\n if (eventName === 'colorChanged') {\n this.colorEventEmitter.off(eventName, listener);\n } else {\n super.off(eventName, listener as never);\n }\n }\n\n setColor (value: math.Color, signal = false): void {\n if (this.currentColor.equals(value)) {return;}\n this.currentColor.copyFrom(value);\n this.syncEditors();\n if (signal) {this.colorEventEmitter.emit('colorChanged', this.currentColor.clone());}\n }\n\n private syncEditors (): void {\n this.syncing = true;\n const hsv = colorToHsv(this.currentColor);\n\n this.plane.hue = hsv.h;\n this.plane.saturation = hsv.s;\n this.plane.value = hsv.v;\n this.hueBar.value = hsv.h;\n this.alphaSlider.setValueNoSignal(this.currentColor.a);\n const values = [this.currentColor.r, this.currentColor.g, this.currentColor.b, this.currentColor.a];\n\n for (let index = 0; index < this.channelFields.length; index++) {\n this.channelFields[index].text = String(Math.round(values[index] * 255));\n this.channelFields[index].editable = index < 3 || this._editAlpha;\n }\n this.hexField.text = colorToHex(this.currentColor, this._editAlpha);\n this.alphaSlider.visible = this._editAlpha;\n this.syncing = false;\n }\n\n private submitChannel (index: number, value: string): void {\n const number = Number(value);\n\n if (!Number.isFinite(number)) {return;}\n const channels = [this.currentColor.r, this.currentColor.g, this.currentColor.b, this.currentColor.a];\n\n channels[index] = clamp01(number / 255);\n this.setColor(new math.Color(channels[0], channels[1], channels[2], channels[3]), true);\n }\n\n private submitHex (value: string): void {\n const parsed = colorFromHex(value, 1);\n\n if (parsed) {\n if (!this._editAlpha) {parsed.a = this.currentColor.a;}\n this.setColor(parsed, true);\n }\n }\n\n override fromData (data: spec.ColorPickerData): void {\n super.fromData(data);\n if (data.color !== undefined) {\n this.currentColor.copyFrom(data.color);\n this.syncEditors();\n }\n if (data.editAlpha !== undefined) {\n this.editAlpha = data.editAlpha;\n this.syncEditors();\n }\n }\n}\n\n@effectsClass('ColorPickerButton')\nexport class ColorPickerButton extends Button {\n static override readonly themeType: string = 'ColorPickerButton';\n readonly picker: ColorPicker;\n readonly popupPanel: PopupPanel;\n private readonly colorEventEmitter = new EventEmitter<ColorPickerButtonEvent>();\n private readonly openPicker = () => this.showPicker();\n\n constructor (engine: Engine) {\n super(engine);\n this.popupPanel = new PopupPanel(engine);\n this.picker = new ColorPicker(engine);\n this.picker.setCustomMinimumSize(250, 330);\n this.picker.parent = this.popupPanel;\n this.picker.on('colorChanged', color => this.colorEventEmitter.emit('colorChanged', color));\n this.on('pressed', this.openPicker);\n }\n\n get color (): math.Color { return this.picker.color; }\n set color (value: math.Color) { this.picker.color = value; }\n get editAlpha (): boolean { return this.picker.editAlpha; }\n set editAlpha (value: boolean) {\n this.picker.editAlpha = value;\n }\n\n override on<E extends keyof ColorPickerButtonEvent> (\n eventName: E,\n listener: EventEmitterListener<ColorPickerButtonEvent[E]>,\n ): void {\n if (eventName === 'colorChanged') {\n this.colorEventEmitter.on(eventName, listener);\n } else {\n super.on(eventName, listener as never);\n }\n }\n\n override off<E extends keyof ColorPickerButtonEvent> (\n eventName: E,\n listener: EventEmitterListener<ColorPickerButtonEvent[E]>,\n ): void {\n if (eventName === 'colorChanged') {\n this.colorEventEmitter.off(eventName, listener);\n } else {\n super.off(eventName, listener as never);\n }\n }\n\n showPicker (): void {\n const transform = this.getGlobalTransform2D().elements;\n\n this.popupPanel.setSize(270, 350);\n this.popupPanel.popup(new math.Vector2(transform[6], transform[7] + this.height), this);\n }\n\n protected override getContentInsets (): ContentInsets {\n const base = super.getContentInsets();\n\n return { ...base, left: base.left + Math.max(18, this.height - base.top - base.bottom) + 6 };\n }\n\n protected override drawDecoration (_mode: ButtonDrawMode): void {\n const margins = this.getNormalContentInsets();\n const size = Math.max(12, this.height - margins.top - margins.bottom);\n\n this.fillRect(margins.left, (this.height - size) * 0.5, size, size, this.picker.color);\n this.drawRect(margins.left + 0.5, (this.height - size) * 0.5 + 0.5, size - 1, size - 1,\n this.getThemeColor('swatchBorderColor'), 1);\n }\n\n override onDestroy (): void {\n this.off('pressed', this.openPicker);\n this.popupPanel.dispose();\n super.onDestroy();\n }\n\n override fromData (data: spec.ColorPickerButtonData): void {\n super.fromData(data);\n if (data.color !== undefined) {this.picker.fromData({ color: data.color });}\n if (data.editAlpha !== undefined) {this.editAlpha = data.editAlpha;}\n }\n}\n\nfunction clamp01 (value: number): number {\n return Math.max(0, Math.min(1, value));\n}\n\nfunction colorToHsv (color: math.Color): HSV {\n const max = Math.max(color.r, color.g, color.b);\n const min = Math.min(color.r, color.g, color.b);\n const delta = max - min;\n let hue = 0;\n\n if (delta > 0) {\n if (max === color.r) {hue = ((color.g - color.b) / delta) % 6;} else if (max === color.g) {hue = (color.b - color.r) / delta + 2;} else {hue = (color.r - color.g) / delta + 4;}\n hue /= 6;\n if (hue < 0) {hue += 1;}\n }\n\n return { h: hue, s: max === 0 ? 0 : delta / max, v: max };\n}\n\nfunction hsvToColor (hue: number, saturation: number, value: number, alpha: number): math.Color {\n const section = Math.floor(hue * 6);\n const fraction = hue * 6 - section;\n const p = value * (1 - saturation);\n const q = value * (1 - fraction * saturation);\n const t = value * (1 - (1 - fraction) * saturation);\n\n switch (section % 6) {\n case 0: return new math.Color(value, t, p, alpha);\n case 1: return new math.Color(q, value, p, alpha);\n case 2: return new math.Color(p, value, t, alpha);\n case 3: return new math.Color(p, q, value, alpha);\n case 4: return new math.Color(t, p, value, alpha);\n default: return new math.Color(value, p, q, alpha);\n }\n}\n\nfunction colorToHex (color: math.Color, alpha: boolean): string {\n const values = [color.r, color.g, color.b, color.a].map(value => {\n return Math.round(clamp01(value) * 255).toString(16).padStart(2, '0').toUpperCase();\n });\n\n return `#${values.slice(0, alpha ? 4 : 3).join('')}`;\n}\n\nfunction colorFromHex (value: string, fallbackAlpha: number): math.Color | null {\n const source = value.trim().replace('#', '');\n\n if (!/^[0-9a-fA-F]{6}([0-9a-fA-F]{2})?$/.test(source)) {return null;}\n const number = Number.parseInt(source, 16);\n const hasAlpha = source.length === 8;\n\n return new math.Color(\n ((number >> (hasAlpha ? 24 : 16)) & 0xff) / 255,\n ((number >> (hasAlpha ? 16 : 8)) & 0xff) / 255,\n ((number >> (hasAlpha ? 8 : 0)) & 0xff) / 255,\n hasAlpha ? (number & 0xff) / 255 : fallbackAlpha,\n );\n}\n","import { registerPlugin } from '@galacean/effects';\nimport { GUIPlugin } from './plugin';\n\nexport * from './core';\nexport * from './components';\nexport * from './layout/enums';\nexport * from './layout/box-container';\nexport * from './layout/grid-container';\nexport * from './layout/margin-container';\nexport * from './layout/center-container';\nexport * from './layout/aspect-ratio-container';\nexport * from './layout/panel-container';\nexport * from './layout/separator';\nexport * from './scroll/enums';\nexport * from './scroll/range';\nexport * from './scroll/scroll-bar';\nexport * from './scroll/scroll-container';\nexport * from './theme';\nexport * from './controls';\nexport * from './plugin';\n\nregisterPlugin('gui', GUIPlugin);\n\n/** GUI plugin package version. Importing this package registers the GUI runtime and native fallback theme. */\nexport const version = __VERSION__;\n"],"names":["_set_prototype_of","o","p","Object","setPrototypeOf","__proto__","_inherits","subClass","superClass","TypeError","prototype","create","constructor","value","writable","configurable","_is_native_reflect_construct","result","Boolean","valueOf","call","Reflect","construct","_","_construct","Parent","args","Class","a","push","apply","Constructor","Function","bind","instance","arguments","_get_prototype_of","getPrototypeOf","_is_native_function","fn","toString","indexOf","_wrap_native_super","_cache","Map","undefined","has","get","set","Wrapper","enumerable","_assert_this_initialized","self","ReferenceError","_defineProperties","target","props","i","length","descriptor","defineProperty","key","_create_class","protoProps","staticProps","_instanceof","left","right","Symbol","hasInstance","_array_like_to_array","arr","len","arr2","Array","_unsupported_iterable_to_array","minLen","n","slice","name","from","test","_create_for_of_iterator_helper_loose","allowArrayLike","it","iterator","next","isArray","done","MouseFilter","MouseBehaviorRecursive","FocusMode","FocusBehaviorRecursive","CursorShape","__decorate","decorators","desc","c","r","getOwnPropertyDescriptor","d","decorate","SuppressedError","error","suppressed","message","e","Error","_extends","assign","source","hasOwnProperty","Color","math","Vector2","ThemeItemType","PatchStretchMode","ZERO_MARGINS","top","bottom","cloneMargins","marginsFromData","data","finite","Number","isFinite","RangeError","nonNegative","Math","max","cloneFont","family","weight","style","fontFromData","cloneThemeValue","clone","StyleBox","eventEmitter","EventEmitter","contentMargins","readOnly","on","eventName","listener","off","getContentMargins","makeReadOnly","setContentMargins","assertMutable","keys","some","notifyChanged","getMinimumSize","emit","isReadOnly","StyleBoxEmpty","draw","shared","StyleBoxFlat","backgroundColor","CLEAR","borderColor","borderWidths","cornerRadii","getBackgroundColor","getBorderColor","getBorderWidths","getCornerRadii","setBackgroundColor","equals","copyFrom","setBorderColor","setBorderWidths","setCornerRadii","topLeft","topRight","bottomRight","bottomLeft","graphics","rect","width","height","hasRoundedCorners","drawRounded","fillRectangle","x","y","border","min","radii","adaptBorderWidths","adaptCornerRadii","hasBorder","drawRoundedFill","inner","innerRadii","drawRoundedRing","adapted","createInfiniteMargins","adaptMarginPair","first","second","available","firstMaximum","secondMaximum","sum","factor","POSITIVE_INFINITY","color","points","getRoundedPoints","centerX","centerY","index","current","fillTriangle","outerRect","outerRadii","innerRect","outer","segments","corners","PI","cx","cy","radius","start","angle","cos","sin","StyleBoxTexture","_texture","sourceRect","patchMargins","tint","WHITE","_horizontalAxisStretchMode","_verticalAxisStretchMode","_drawCenter","getSourceRect","getPatchMargins","getTint","setSourceRect","clearSourceRect","setPatchMargins","setTint","texture","drawNinePatch","sourceX","sourceY","sourceWidth","sourceHeight","marginLeft","marginTop","marginRight","marginBottom","horizontalMode","horizontalAxisStretchMode","verticalMode","verticalAxisStretchMode","drawCenter","ThemeRegistry","registerType","type","baseType","definitions","types","getTypeChain","includes","previous","storedDefinitions","definition","defaultValue","hasType","visited","Set","add","getDefault","itemType","getItemDefinition","dependency","affectsLayout","getItemDefinitions","includeInherited","chain","reverse","Theme","values","variations","styleBoxReferences","batchDepth","changePending","layoutChangePending","styleBoxChanged","batch","callback","setTypeVariation","variation","clearTypeVariation","dependent","base","delete","hasTypeVariation","getTypeVariationBase","getTypeDependencies","setColor","setItem","getColor","getItem","hasColor","hasItem","clearColor","clearItem","setConstant","getConstant","hasConstant","clearConstant","setFont","getFont","hasFont","clearFont","setFontSize","getFontSize","hasFontSize","clearFontSize","setIcon","getIcon","hasIcon","clearIcon","setStyleBox","getStyleBox","hasStyleBox","clearStyleBox","categories","items","size","releaseStyleBox","clear","styleBox","setCollectionFromData","engine","colors","constants","fonts","fontSizes","icons","styleBoxes","g","b","findObject","styleBoxFromData","stored","retainStyleBox","count","fromData","theme","remaining","progressed","flat","position","patch","content","themeFallbacks","constant","font","fontSize","icon","Matrix3","SizeFlags","GrowDirection","normalizeMeasuredMinimum","normalizeMeasuredMaximum","combineMaximum","measured","custom","clampToMaximum","maximum","ANCHOR_PRESET_TABLE","centerLeft","centerTop","centerRight","centerBottom","center","leftWide","topWide","rightWide","bottomWide","vcenterWide","hcenterWide","fullRect","Control","owner","children","anchorMin","anchorMax","offsetMin","offsetMax","pivot","scale","shear","mouseForcePassScrollEvents","clipContents","_parent","_visible","_enabled","_mouseFilter","Stop","_mouseBehaviorRecursive","Inherited","_focusMode","None","_focusBehaviorRecursive","_defaultCursorShape","Arrow","_rotation","transformDirty","cachedTransform","disposed","customMinimumSize","customMaximumSize","minimumSizeCache","desiredSizeCache","maximumSizeCache","pendingMeasurementChanges","_horizontalSizeFlags","_verticalSizeFlags","_stretchRatio","_horizontalGrowDirection","_verticalGrowDirection","_theme","themeOwnerNode","_themeTypeVariation","themeOverrides","themeCache","overrideStyleBoxReferences","attachedThemeChanged","propagateThemeChanged","overrideStyleBoxChanged","getInheritedTheme","getThemeOwnerNode","hasThemeOwnerNode","getThemeType","themeType","getThemeColor","resolveThemeItem","getThemeConstant","Constant","getThemeFont","Font","getThemeFontSize","FontSize","getThemeIcon","Icon","getThemeStyleBox","hasThemeColor","found","hasThemeConstant","hasThemeFont","hasThemeFontSize","hasThemeIcon","hasThemeStyleBox","setThemeColorOverride","setThemeOverride","setThemeConstantOverride","setThemeFontOverride","setThemeFontSizeOverride","setThemeIconOverride","setThemeStyleBoxOverride","removeThemeColorOverride","removeThemeOverride","removeThemeConstantOverride","removeThemeFontOverride","removeThemeFontSizeOverride","removeThemeIconOverride","removeThemeStyleBoxOverride","hasThemeColorOverride","hasThemeOverride","hasThemeConstantOverride","hasThemeFontOverride","hasThemeFontSizeOverride","hasThemeIconOverride","hasThemeStyleBoxOverride","clearThemeOverrides","releaseOverrideStyleBox","hasFocus","visibleOnly","root","guiControlHasFocus","drawStyleBox","addChild","child","parent","removeChild","getChildIndex","changeChildIndex","newIndex","oldIndex","splice","controlTreeChanged","addChildInternal","removeChildInternal","setPosition","keepOffsets","computeAnchors","getParentRect","computeOffsets","updateLayout","setSize","setRect","nextRect","setSizeFlags","horizontal","vertical","isInteger","getDesiredSize","getMaximumSize","getCombinedMinimumSize","getCachedMinimumSize","getCombinedMaximumSize","getCachedMaximumSize","getBoundMinimumSize","minimum","getBoundDesiredSize","desired","getCachedDesiredSize","setCustomMinimumSize","updateMinimumSize","setCustomMaximumSize","updateMaximumSize","invalidateMeasurementChanges","updateDesiredSize","invokeMeasurementChanges","changes","MeasurementChange","changed","scheduleMeasurementChanges","Container","invalidateMeasurementsFromChild","setScale","markTransformDirty","setRotation","degrees","setShear","setPivot","setAnchorMin","setAnchorMax","setOffsetMin","setOffsetMax","getRect","getTransform2D","radians","shearX","tan","shearY","pivotX","pivotY","tx","ty","setAnchorsPreset","preset","minX","minY","maxX","maxY","setOffsetsPreset","margin","parentSize","setAnchorsAndOffsetsPreset","getGlobalTransform2D","local","multiplyMatrices","hasPoint","point","intersectsChildContent","getEffectiveMouseFilter","enabledInHierarchy","isMouseRecursiveEnabled","mouseFilter","Ignore","getFocusModeWithOverride","isFocusRecursiveEnabled","focusMode","getCursorShape","defaultCursorShape","focus","hideFocus","grabControlFocus","grabFocus","grabClickFocus","grabControlClickFocus","releaseFocus","releaseControlFocus","warpMouse","matrix","elements","warpControlMouse","makePositionLocal","transform","abs","determinant","invert","getLocalMousePosition","getMousePosition","update","deltaTime","enabled","isDisposed","onDestroy","drawInternal","visibleInHierarchy","pushTransform","drawChildren","popTransform","drawLine","x1","y1","x2","y2","thickness","drawPolyline","drawLines","drawBezier","x3","y3","x4","y4","drawTriangle","drawRect","drawRectangle","drawCircle","fillRect","fillCircle","drawTexture","region","options","drawText","text","fontFamily","fontWeight","fontStyle","measureText","onMouseEnter","location","onMouseMove","event","onMouseLeave","onMouseWheel","onMouseDown","onMouseUp","onTouchDown","onTouchMove","onTouchUp","onKeyDown","onKeyUp","onGotFocus","onLostFocus","onScrollBegin","onScrollEnd","onPopupOpened","onPopupClosed","invokeGetDragData","getDragData","invokeCanDropData","canDropData","invokeDropData","dropData","dispose","resolveBoundedAxis","horizontalGrowDirection","verticalGrowDirection","applyBounds","pushClipRect","popClipRect","onThemeChanged","queueSort","onRootChanged","previousRoot","nextRoot","getThemeDependencies","explicitType","nativeType","requestedType","themeTypeVariation","getFallbackThemeDependencies","cacheKey","cached","queryMatchesCurrentType","override","candidate","getThemeFallback","entry","retainOverrideStyleBox","includeChildren","propagateThemeOwner","ownerNode","notify","assignToControl","pending","queueMeasurementChange","locationChanged","sizeChanged","requestedSize","minimumSize","maximumSize","growDirection","finiteSize","difference","adjustedPosition","assertGrowDirection","queuePendingLayouts","queuePendingMeasurements","notifyRootChanged","parentRect","mouseBehaviorRecursive","Enabled","focusBehaviorRecursive","rotation","horizontalSizeFlags","verticalSizeFlags","stretchRatio","applyThemeOverridesFromData","controlRemoved","item","indexInParent","visible","controlStateChanged","updateMouseCursorState","RootControl","normalized","trim","effectsClass","sortPending","childLayoutChanged","invalidateMeasurementsAndQueueSort","ownSizeChanged","queueLayout","invokeSortChildren","sortChildren","previousIndex","wasChild","bindChild","unbindChild","fitChildInRect","fitAxis","getLayoutChildren","filter","flags","wantsFill","rootEventEmitter","cursorNames","Ibeam","PointingHand","Cross","Wait","Busy","Drag","CanDrop","Forbidden","Vsize","Hsize","Bdiagsize","Fdiagsize","Move","Vsplit","Hsplit","Help","getButtonMask","button","MouseButton","Left","MouseButtonMask","Right","Middle","Xbutton1","Xbutton2","isWheelButton","WheelUp","WheelRight","PopupLayer","buttonIndex","closeTop","accept","CanvasRootControl","canvas","inputDisabled","receivesEvents","isActive","CanvasContainer","sortCanvases","sort","order","isVisible","WindowRootControl","popupStack","dragThreshold","lastInput","dirtyContainers","dirtyMeasurements","gui","mouseFocus","mouseClickGrabber","mouseFocusMask","mouseOver","mouseOverHierarchy","touchFocus","keyFocus","dragAccum","dragAttempted","dragging","dragData","dragMouseOver","dragSuccessful","lastMousePosition","NEGATIVE_INFINITY","sendingMouseEnterExit","mouseOverUpdatePending","canvases","popupLayer","closePopupControl","control","pushInput","cleanupInternalState","processGUIInput","postGrabClickFocus","isInputHandled","isAccepted","guiGetFocusOwner","isFocusTargetUsable","guiReleaseFocus","guiIsDragging","guiGetDragData","guiIsDragSuccessful","guiCancelDrag","endDragging","notifyFocusOwnerChanged","isControlValid","queueMicrotask","updateMouseOver","isControlUsable","updateCursor","dropControlState","updateMouseOverHierarchy","popupControl","originalTheme","focusOwner","restoreFocus","restoreFocusHidden","findIndex","state","removed","removedIndex","restore","container","cancelPointerInput","dropMouseFocus","dropMouseOver","onCanvasBlur","mask","InputEventMouseButton","device","InputEvent","deviceIdInternal","pressed","globalPosition","callControlInput","cancelPointerPress","touchIndex","controlBelongsToSubtree","resize","render","flushLayout","begin","end","round","measurements","getControlDepth","depth","InputEventKey","callGUIInput","InputEventMouse","processMouseButton","InputEventMouseMotion","processMouseMotion","InputEventScreenTouch","processScreenTouch","InputEventScreenDrag","processScreenDrag","isPressed","setZero","findClickFocus","finishDrop","relative","origin","subtract","beginDragging","findDropTarget","findInputControl","pointerEvent","localEvent","xformedBy","getGlobalInverse","forcePassWheel","forcePassTouch","isReleased","findControlAtPosition","positionInParent","skipSelf","parentEnabled","parentMouseEnabled","localPosition","toControlLocal","mouseEnabled","buildHoverHierarchy","applyMouseOver","common","toLocal","hierarchy","mode","Click","All","successful","cursor","subtree","findCanvasRoot","GUIWindowComponent","updateWindowRoot","windowRoot","renderWindowRoot","resizeWindowRoot","getBoundingClientRect","eventSystem","Component","CanvasRenderMode","UICanvas","renderMode","_order","registered","rootControl","onEnable","register","onDisable","unregister","destroyCanvas","guiWindow","getComponent","GUIPlugin","onEngineCreated","addComponent","onCompositionCreating","composition","sceneRoot","Plugin","UIControl","controlNode","linkedItemTransform","linkedControl","syncingLocation","itemTransformChanged","syncItemLocationToControl","controlLocationChanged","syncControlLocationToItem","onAwake","syncControl","onParentChanged","onOrderInParentChanged","syncControlOrder","disposeControl","unlinkControl","unbindLocationSync","attachControl","resolveParent","copyItemLocationToControl","bindLocationSync","orderInParent","parentItem","fallbackParentGetDelegate","uiControl","itemTransform","z","uiControlData","getClass","hasControl","Orientation","LayoutAlignment","AspectRatioStretchMode","EPSILON","assertFinite","assertEnumValue","reduce","total","growSlots","sizes","ceilings","weights","extra","integerPixels","ceiling","share","totalWeight","growth","active","capped","assigned","pixelError","activeIndex","exactGrowth","floor","map","alignmentOffset","alignment","BoxContainer","_orientation","Horizontal","_alignment","Begin","_reverse","measureChildren","orientation","availableMain","availableCross","separation","gapTotal","slotSpace","minimums","getMainSize","maximums","every","isMainExpanded","usedMain","mainSize","useDesired","main","cross","childSize","getCrossSize","Expand","invalidateMeasurement","Vertical","End","HBoxContainer","VBoxContainer","GridContainer","_columns","measureGrid","columnCount","columns","rowCount","ceil","columnMetrics","collectTrackMetrics","rowMetrics","horizontalSeparation","verticalSeparation","columnSizes","allocateTracks","rowSizes","columnPositions","getTrackPositions","rowPositions","column","row","rows","fill","unbounded","expanded","track","childMinimum","childDesired","childMaximum","minimumValue","desiredValue","maximumValue","metrics","trackSpace","positions","MarginContainer","CenterContainer","_useTopLeft","useTopLeft","AspectRatioContainer","_ratio","_stretchMode","Fit","_horizontalAlignment","Center","_verticalAlignment","baseWidth","ratio","baseHeight","stretchMode","WidthControlsHeight","HeightControlsWidth","Cover","getAlignedOffset","horizontalAlignment","verticalAlignment","PanelContainer","margins","Separator","HSeparator","VSeparator","ScrollMode","Range","_rounded","suppressSignals","rangeEventEmitter","createSharedRange","owners","setValue","calculateValue","valuesEqual","notifyValueChanged","setValueNoSignal","valueChanged","setMinValue","minValue","maxValue","page","clamp","setMaxValue","setStep","step","setPage","setAsRatio","exponentialRatio","log2","span","getAsRatio","range","attachShared","unshare","allowGreater","allowLesser","isNaN","calculated","snapFrom","rounded","toPrecision","PAGE_DIVISOR","ScrollBar","scrollBarEventEmitter","_customStep","highlight","decrementActive","incrementActive","dragPosition","dragRatio","Accessibility","scroll","amount","scrollTo","decrementSize","getButtonAxisSize","incrementSize","incrementCrossSize","getButtonCrossSize","scrollMinimum","grabberMinimum","getGrabberMinimumSize","getCrossStartPadding","getCrossEndPadding","axisSize","decrementState","incrementState","trackLength","grabber","getGrabberRect","grabberStyle","scrollStyle","drawButtonIcon","updateHighlight","getAxis","area","getAreaSize","getAxisSize","grabberOffset","getGrabberOffset","grabberSize","getGrabberSize","trackPosition","getTrackStartMargin","getIncrement","getPageIncrement","WheelDown","direction","wheelIncrement","increment","keycode","customStep","getTrackSize","scrollAxisMinimum","offset","crossStart","crossSize","getButtonIcon","pageDivisor","HScrollBar","VScrollBar","INERTIA_DECELERATION","ScrollContainer","scrollContainerEventEmitter","_horizontalScrollMode","Auto","_verticalScrollMode","_scrollHorizontalByDefault","_deadzone","_followFocus","focusRoot","touchDecelerating","beyondDeadzone","dragSpeed","dragFrom","lastDragAccum","motionSampleTime","viewportWidth","viewportHeight","scrollMoved","cancelTouchDrag","focusOwnerChanged","followFocus","isContentDescendant","ensureControlVisible","horizontalBar","verticalBar","getHScrollBar","getVScrollBar","Infinity","corner","global","horizontalDifference","verticalDifference","measureContent","previousHorizontal","previousVertical","horizontalEnabled","horizontalScrollMode","Disabled","verticalEnabled","verticalScrollMode","swapAxes","scrollHorizontalByDefault","shiftPressed","verticalHidden","ShowNever","horizontalHidden","horizontalAmount","verticalAmount","WheelLeft","exceedsDeadzone","deadzone","notifyContentScroll","canceled","seconds","updateInertia","updateDragVelocity","contentSize","getLargestContentSize","layout","resolveLayout","horizontalVisible","verticalVisible","horizontalConstrained","MaximizeFirst","verticalConstrained","verticalReserved","horizontalReserved","horizontalSize","verticalSize","ShowAlways","Reserve","shouldShowBar","nextHorizontalReserved","nextVerticalReserved","invalidateScrollLayout","decelerate","notifyEnd","horizontalCustomStep","verticalCustomStep","hScroll","vScroll","assertScrollMode","viewportSize","sign","palette","disabledText","panel","normal","hover","disabled","accent","accentHover","white","background","borderWidth","contentHorizontal","contentVertical","empty","fontItems","fontColor","lineSpacing","hoverPressed","fontFocusColor","fontHoverColor","fontPressedColor","fontHoverPressedColor","fontDisabledColor","iconTint","iconFocusTint","iconHoverTint","iconPressedTint","iconHoverPressedTint","iconDisabledTint","iconSeparation","alignToLargestStyleBox","checked","unchecked","checkedDisabled","uncheckedDisabled","radioChecked","radioUnchecked","radioCheckedDisabled","radioUncheckedDisabled","checkedColor","uncheckedColor","checkedDisabledColor","markColor","markDisabledColor","markUncheckedColor","markUncheckedDisabledColor","markOutlineColor","markSize","markSeparation","checkVOffset","buttonCheckedColor","buttonUncheckedColor","switchColor","switchDisabledColor","switchOffColor","switchKnobColor","switchWidth","switchHeight","switchSeparation","separator","fontReadOnlyColor","fontPlaceholderColor","selectionColor","caretColor","caretWidth","checkColor","itemHeight","separatorHeight","horizontalPadding","iconWidth","arrow","arrowSize","arrowMargin","hSeparation","modulateArrow","swatchBorderColor","fillHighlight","grabberHighlight","grabberDisabled","trackThickness","scrollFocus","grabberPressed","decrement","decrementHighlight","decrementPressed","incrementHighlight","incrementPressed","paddingLeft","paddingTop","paddingRight","paddingBottom","HorizontalAlignment","VerticalAlignment","AutowrapMode","TextOverflow","TextureExpandMode","TextureStretchMode","AxisStretchMode","Side","ButtonDrawMode","ButtonActionMode","ProgressFillMode","Label","_text","Top","_autowrapMode","Off","_textOverflow","Visible","layoutDirty","layoutWidth","NaN","natural","createNaturalLayout","autowrapMode","textOverflow","getMinimumLineWidth","paragraphCount","split","lineHeight","getTextLayout","clipped","gap","getVerticalGap","getTextStartY","lines","line","Ellipsis","ellipsize","Fill","countFillSpaces","measurement","drawFilledLine","drawThemedText","getTextStartX","invalidateTextLayout","measure","constrainedWidth","createLayout","paragraphs","emptyMeasurement","paragraph","wrapParagraph","maximumWidth","characters","cursorWidth","breakEnd","breakNext","character","advance","advances","isBreakSpace","isCJKLike","join","Arbitrary","Word","findWordEnd","replace","skipBreakSpaces","WordSmart","segment","lineWidth","Bottom","ellipsis","ellipsisMeasurement","used","spaces","codePoint","codePointAt","FULL_REGION","u0","v0","u1","v1","TextureRect","_expandMode","KeepSize","Scale","flipH","flipV","controlSizeChanged","expandMode","IgnoreSize","FitWidth","FitWidthProportional","FitHeight","FitHeightProportional","drawRegion","Tile","drawTiled","Keep","KeepCentered","KeepAspect","drawAspect","KeepAspectCentered","KeepAspectCovered","drawCovered","centered","sourceRatio","destinationRatio","tileWidth","tileHeight","verticalRatio","horizontalRatio","NinePatchRect","ninePatchEventEmitter","Stretch","_regionRect","setRegionRect","setPatchMargin","side","getPatchMargin","regionRect","patchMarginLeft","patchMarginTop","patchMarginRight","patchMarginBottom","ColorRect","Panel","ButtonGroup","buttons","allowUnpress","getPressedButton","buttonPressed","getButtons","select","signal","emitPressed","peer","setPressedFromGroup","updateButton","BaseButton","buttonEventEmitter","_disabled","_toggleMode","_buttonPressed","_buttonMask","_buttonGroup","hovered","pressing","pressInside","mousePressing","keyboardPressing","cancelPress","actionMode","Release","keepPressedOutside","setPressedNoSignal","setPressed","isHovered","isPressing","getDrawMode","HoverPressed","Hover","Pressed","Normal","hasButton","buttonMask","beginPress","activate","finishPress","echo","isActivationKey","buttonGroup","setPressedDirect","inside","Press","wasPressing","toggleMode","Button","clipText","expandIcon","textAlignment","iconAlignment","iconVerticalAlignment","measureButton","getStyleBoxName","drawDecoration","drawContent","getContentInsets","getBaseContentInsets","getNormalContentInsets","hasText","iconHeight","textWidth","textHeight","insets","contentWidth","contentHeight","naturalText","iconSize","getIconSize","reservedIconWidth","sourceText","ellipsizeText","iconX","textAreaX","textX","getAlignedX","textAreaY","textY","iconY","getAlignedY","getIconTint","getFontColor","ellipsisWidth","_icon","CHECK_ICON_GRID_SIZE","Checkbox","getMarkSize","yOffset","radio","iconName","fallbackY","fillRoundedMark","fillCheckMark","px","py","leftInner","fallback","CheckButton","getSwitchSize","switchSize","fallbackX","activeColor","trackColor","knobX","names","Slider","sliderEventEmitter","_editable","dragInitialValue","scrollable","highlighted","editable","fillStyle","fillWidth","fillY","updateDrag","beginDrag","endDrag","insideGrabber","initialValue","getRatioAt","getUsableLength","HSlider","VSlider","ProgressBar","_showPercentage","_fillMode","BeginToEnd","styleMinimum","showPercentage","fillMinimum","fillMode","progress","EndToBegin","TopToBottom","BottomToTop","TextInput","textEventEmitter","_placeholderText","_maxLength","selectionStart","selectionEnd","selectionAnchor","selecting","selectingWords","wordSelectionStart","wordSelectionEnd","textarea","textareaFocusTimer","composing","undoStack","redoStack","onBeforeInput","pushUndo","onTextareaInput","setText","onTextareaSelect","selectionDirection","onCompositionStart","onCompositionEnd","onTextareaKeyDown","multiline","isComposing","preventDefault","submit","onTextareaBlur","selectAll","setSelection","deselect","getSelectedText","syncTextareaSelection","cancelTextareaFocus","getCharacterIndex","doubleClick","getWordRange","moveCaret","focusTextarea","command","ctrlPressed","metaPressed","toLowerCase","copySelection","replaceSelection","pasteClipboard","redo","undo","getPreviousCharacterIndex","getNextCharacterIndex","getLineStart","getLineEnd","erase","altPressed","unicode","String","fromCodePoint","activateTextarea","removeTextarea","getDisplayText","getSelectionRange","extendSelection","getTextFont","getTextFontSize","getTextColor","getTextStyleBox","drawTextBackground","drawSelection","drawCaret","hasSelection","onTextValueChanged","limited","allowed","caret","lastIndexOf","snapshot","shift","pop","navigator","clipboard","writeText","readText","then","matchAll","match","document","createElement","maxLength","wrap","setAttribute","cssText","addEventListener","body","appendChild","scheduleTextareaFocus","removeEventListener","remove","setSelectionRange","setTimeout","clearTimeout","activeElement","preventScroll","placeholderText","removeAttribute","caretColumn","isLowSurrogate","charCodeAt","isHighSurrogate","LineEdit","scrollOffset","_secret","_secretCharacter","display","getVisibleText","shown","full","updateScrollOffset","getAlignedTextX","prefix","measurePrefix","selected","fullWidth","boundaries","getCharacterBoundaries","secret","secretCharacter","repeat","visiblePrefix","TextEdit","scrollLine","textIndex","lineIndex","lineStart","lineEnd","selectedStart","selectedEnd","measureLine","getVerticalCaretIndex","ensureCaretLineVisible","targetLine","targetStart","visibleLines","caretLine","lineCount","Popup","popupEventEmitter","onPopup","offPopup","popup","hidePopup","PopupPanel","PopupMenu","menuEventEmitter","hoveredIndex","addItem","id","addSeparator","getItemCount","setItemDisabled","setItemChecked","padding","getIndexAt","activateIndex","findEnabledIndex","positionY","OPTION_ARROW_GRID_SIZE","MenuButton","openMenu","showPopup","popupMenu","OptionButton","optionEventEmitter","_selected","menuSelected","selectId","arrowWidth","getArrowColor","startX","startY","middleX","middleY","endX","onOption","offOption","ColorPlane","hue","saturation","hsvToColor","updateValue","clamp01","HueBar","ColorPicker","channelFields","label","field","channels","submitChannel","colorEventEmitter","currentColor","syncing","_editAlpha","plane","ExpandFill","hueBar","alphaSlider","hexField","submitHex","hsv","colorToHsv","h","s","v","syncEditors","colorToHex","number","parsed","colorFromHex","editAlpha","ColorPickerButton","openPicker","showPicker","popupPanel","picker","_mode","delta","alpha","section","fraction","q","t","padStart","toUpperCase","fallbackAlpha","parseInt","hasAlpha","registerPlugin","version"],"mappings":"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"}
|