@dooboostore/simple-web-component 1.0.30 → 1.0.32

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.
Files changed (93) hide show
  1. package/README.md +220 -1
  2. package/dist/cjs/decorators/applyStyle.js +1 -1
  3. package/dist/cjs/decorators/applyStyle.js.map +2 -2
  4. package/dist/cjs/decorators/attribute.js +17 -1
  5. package/dist/cjs/decorators/attribute.js.map +2 -2
  6. package/dist/cjs/decorators/elementDefine.js +29 -12
  7. package/dist/cjs/decorators/elementDefine.js.map +3 -3
  8. package/dist/cjs/elements/SwcAppEngine.js +3 -3
  9. package/dist/cjs/elements/SwcAppEngine.js.map +2 -2
  10. package/dist/cjs/elements/SwcAppMixin.js +1 -8
  11. package/dist/cjs/elements/SwcAppMixin.js.map +2 -2
  12. package/dist/cjs/elements/SwcAsync.js +71 -78
  13. package/dist/cjs/elements/SwcAsync.js.map +2 -2
  14. package/dist/cjs/elements/SwcChoose.js +66 -81
  15. package/dist/cjs/elements/SwcChoose.js.map +2 -2
  16. package/dist/cjs/elements/SwcIf.js +52 -96
  17. package/dist/cjs/elements/SwcIf.js.map +2 -2
  18. package/dist/cjs/elements/SwcLoop.js +60 -103
  19. package/dist/cjs/elements/SwcLoop.js.map +2 -2
  20. package/dist/cjs/elements/SwcSubTemplates.js +0 -27
  21. package/dist/cjs/elements/SwcSubTemplates.js.map +2 -2
  22. package/dist/cjs/elements/register.js +314 -343
  23. package/dist/cjs/elements/register.js.map +2 -2
  24. package/dist/cjs/router/ElementRouter.js +1 -8
  25. package/dist/cjs/router/ElementRouter.js.map +2 -2
  26. package/dist/cjs/types.js.map +1 -1
  27. package/dist/cjs/utils/Utils.js +31 -24
  28. package/dist/cjs/utils/Utils.js.map +2 -2
  29. package/dist/esm/decorators/applyStyle.js +1 -1
  30. package/dist/esm/decorators/applyStyle.js.map +2 -2
  31. package/dist/esm/decorators/attribute.js +18 -2
  32. package/dist/esm/decorators/attribute.js.map +2 -2
  33. package/dist/esm/decorators/elementDefine.js +27 -10
  34. package/dist/esm/decorators/elementDefine.js.map +3 -3
  35. package/dist/esm/elements/SwcAppEngine.js +3 -3
  36. package/dist/esm/elements/SwcAppEngine.js.map +2 -2
  37. package/dist/esm/elements/SwcAppMixin.js +1 -8
  38. package/dist/esm/elements/SwcAppMixin.js.map +2 -2
  39. package/dist/esm/elements/SwcAsync.js +72 -60
  40. package/dist/esm/elements/SwcAsync.js.map +2 -2
  41. package/dist/esm/elements/SwcChoose.js +67 -63
  42. package/dist/esm/elements/SwcChoose.js.map +2 -2
  43. package/dist/esm/elements/SwcIf.js +53 -78
  44. package/dist/esm/elements/SwcIf.js.map +2 -2
  45. package/dist/esm/elements/SwcLoop.js +61 -85
  46. package/dist/esm/elements/SwcLoop.js.map +2 -2
  47. package/dist/esm/elements/SwcSubTemplates.js +0 -8
  48. package/dist/esm/elements/SwcSubTemplates.js.map +2 -2
  49. package/dist/esm/elements/register.js +246 -275
  50. package/dist/esm/elements/register.js.map +2 -2
  51. package/dist/esm/router/ElementRouter.js +1 -8
  52. package/dist/esm/router/ElementRouter.js.map +2 -2
  53. package/dist/esm/types.js.map +1 -1
  54. package/dist/esm/utils/Utils.js +31 -24
  55. package/dist/esm/utils/Utils.js.map +2 -2
  56. package/dist/esm-bundle/dooboostore-simple-web-component.esm.js +2223 -2009
  57. package/dist/esm-bundle/dooboostore-simple-web-component.esm.js.map +4 -4
  58. package/dist/types/decorators/attribute.d.ts.map +1 -1
  59. package/dist/types/decorators/elementDefine.d.ts.map +1 -1
  60. package/dist/types/elements/SwcAppMixin.d.ts.map +1 -1
  61. package/dist/types/elements/SwcAsync.d.ts +1 -11
  62. package/dist/types/elements/SwcAsync.d.ts.map +1 -1
  63. package/dist/types/elements/SwcChoose.d.ts +1 -13
  64. package/dist/types/elements/SwcChoose.d.ts.map +1 -1
  65. package/dist/types/elements/SwcIf.d.ts +1 -13
  66. package/dist/types/elements/SwcIf.d.ts.map +1 -1
  67. package/dist/types/elements/SwcLoop.d.ts +1 -13
  68. package/dist/types/elements/SwcLoop.d.ts.map +1 -1
  69. package/dist/types/elements/SwcSubTemplates.d.ts +6 -6
  70. package/dist/types/elements/SwcSubTemplates.d.ts.map +1 -1
  71. package/dist/types/elements/register.d.ts.map +1 -1
  72. package/dist/types/router/ElementRouter.d.ts.map +1 -1
  73. package/dist/types/types.d.ts +11 -1
  74. package/dist/types/types.d.ts.map +1 -1
  75. package/dist/types/utils/Utils.d.ts +10 -0
  76. package/dist/types/utils/Utils.d.ts.map +1 -1
  77. package/dist/umd-bundle/dooboostore-simple-web-component.umd.js +2223 -2009
  78. package/dist/umd-bundle/dooboostore-simple-web-component.umd.js.map +4 -4
  79. package/package.json +3 -3
  80. package/src/decorators/applyStyle.ts +1 -1
  81. package/src/decorators/attribute.ts +35 -30
  82. package/src/decorators/elementDefine.ts +32 -10
  83. package/src/elements/SwcAppEngine.ts +3 -3
  84. package/src/elements/SwcAppMixin.ts +6 -27
  85. package/src/elements/SwcAsync.ts +75 -57
  86. package/src/elements/SwcChoose.ts +69 -77
  87. package/src/elements/SwcIf.ts +50 -75
  88. package/src/elements/SwcLoop.ts +56 -82
  89. package/src/elements/SwcSubTemplates.ts +6 -6
  90. package/src/elements/register.ts +234 -285
  91. package/src/router/ElementRouter.ts +1 -12
  92. package/src/types.ts +9 -2
  93. package/src/utils/Utils.ts +48 -37
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../../../node_modules/.pnpm/reflect-metadata@0.2.2/node_modules/reflect-metadata/Reflect.js", "../../src/bundle-entry.ts", "../../src/index.ts", "../../../core/src/valid/ValidUtils.ts", "../../../core/src/array/ArrayUtils.ts", "../../../core/src/types.ts", "../../../core/src/parser/path/ObjectPathParser.ts", "../../../core/src/object/ObjectUtils.ts", "../../../core/src/string/StringUtils.ts", "../../../core/src/date/DateUtils.ts", "../../../core/src/entity/Point2D.ts", "../../../core/src/entity/Vector.ts", "../../../core/src/entity/Point3D.ts", "../../../core/src/entity/SizeType.ts", "../../../core/src/entity/Rect.ts", "../../../core/src/entity/object/obj/Obj.ts", "../../../core/src/math/MathUtil.ts", "../../../core/src/convert/ConvertUtils.ts", "../../../core/src/random/RandomUtils.ts", "../../../core/src/message/Subscription.ts", "../../../core/src/message/Subscriber.ts", "../../../core/src/message/Observable.ts", "../../../core/src/message/AutoCloseSubscription.ts", "../../../core/src/promise/AbortablePromise.ts", "../../../core/src/promise/Promises.ts", "../../../core/src/entity/object/obj/RenderDrawObj.ts", "../../../core/src/entity/object/obj/RenderTransactionDrawObj.ts", "../../../core/src/schedule/Schedule.ts", "../../../core/src/url/UrlUtils.ts", "../../../core/src/reflect/ReflectUtils.ts", "../../../core/src/function/FunctionUtils.ts", "../../../core/src/optional/Optional.ts", "../../../core/src/optional/OptionalUtils.ts", "../../../core/src/image/ImageUtils.ts", "../../../core/src/expression/Expression.ts", "../../src/decorators/addEventListener.ts", "../../src/decorators/lifecycles.ts", "../../src/decorators/attribute.ts", "../../src/decorators/changedAttributeHost.ts", "../../src/decorators/applyNode.ts", "../../src/decorators/query.ts", "../../src/decorators/queryAll.ts", "../../src/decorators/applyClass.ts", "../../src/decorators/applyStyle.ts", "../../src/decorators/applyAttribute.ts", "../../src/decorators/setProperty.ts", "../../src/decorators/subscribeSwcAppRouteChange.ts", "../../src/utils/Utils.ts", "../../src/decorators/emitCustomEvent.ts", "../../src/config/config.ts", "../../../simple-boot/src/decorators/inject/Inject.ts", "../../src/types.ts", "../../src/decorators/elementDefine.ts", "../../../simple-boot/src/decorators/SimDecorator.ts", "../../../simple-boot/src/decorators/aop/AOPDecorator.ts", "../../../simple-boot/src/decorators/exception/ExceptionDecorator.ts", "../../../simple-boot/src/decorators/SimNoProxy.ts", "../../../simple-boot/src/decorators/inject/Injection.ts", "../../../simple-boot/src/decorators/route/Router.ts", "../../../simple-boot/src/route/RouterAction.ts", "../../../core-web/src/element/CanvasUtils.ts", "../../../core-web/src/element/ElementUtils.ts", "../../../core-web/src/node/NodeUtils.ts", "../../../core-web/src/document/DocumentUtils.ts", "../../../core-web/src/event/EventUtils.ts", "../../../core-web/src/window/WindowUtils.ts", "../../../core-web/src/cookie/CookieUtils.ts", "../../../core-web/src/convert/ConvertUtils.ts", "../../../core-web/src/clipboard/ClipBoardUtils.ts", "../../../core-web/src/download/DownloadUtils.ts", "../../../core-web/src/location/LocationUtils.ts", "../../../core-web/src/stylecss/StyleCssUtils.ts", "../../../core-web/src/animation/AnimationFrameUtils.ts", "../../../core-web/src/valid/ValidUtils.ts"],
4
- "sourcesContent": ["/*! *****************************************************************************\nCopyright (C) Microsoft. All rights reserved.\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\nthis file except in compliance with the License. You may obtain a copy of the\nLicense at http://www.apache.org/licenses/LICENSE-2.0\n\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\nMERCHANTABLITY OR NON-INFRINGEMENT.\n\nSee the Apache Version 2.0 License for specific language governing permissions\nand limitations under the License.\n***************************************************************************** */\nvar Reflect;\n(function (Reflect) {\n // Metadata Proposal\n // https://rbuckton.github.io/reflect-metadata/\n (function (factory) {\n var root = typeof globalThis === \"object\" ? globalThis :\n typeof global === \"object\" ? global :\n typeof self === \"object\" ? self :\n typeof this === \"object\" ? this :\n sloppyModeThis();\n var exporter = makeExporter(Reflect);\n if (typeof root.Reflect !== \"undefined\") {\n exporter = makeExporter(root.Reflect, exporter);\n }\n factory(exporter, root);\n if (typeof root.Reflect === \"undefined\") {\n root.Reflect = Reflect;\n }\n function makeExporter(target, previous) {\n return function (key, value) {\n Object.defineProperty(target, key, { configurable: true, writable: true, value: value });\n if (previous)\n previous(key, value);\n };\n }\n function functionThis() {\n try {\n return Function(\"return this;\")();\n }\n catch (_) { }\n }\n function indirectEvalThis() {\n try {\n return (void 0, eval)(\"(function() { return this; })()\");\n }\n catch (_) { }\n }\n function sloppyModeThis() {\n return functionThis() || indirectEvalThis();\n }\n })(function (exporter, root) {\n var hasOwn = Object.prototype.hasOwnProperty;\n // feature test for Symbol support\n var supportsSymbol = typeof Symbol === \"function\";\n var toPrimitiveSymbol = supportsSymbol && typeof Symbol.toPrimitive !== \"undefined\" ? Symbol.toPrimitive : \"@@toPrimitive\";\n var iteratorSymbol = supportsSymbol && typeof Symbol.iterator !== \"undefined\" ? Symbol.iterator : \"@@iterator\";\n var supportsCreate = typeof Object.create === \"function\"; // feature test for Object.create support\n var supportsProto = { __proto__: [] } instanceof Array; // feature test for __proto__ support\n var downLevel = !supportsCreate && !supportsProto;\n var HashMap = {\n // create an object in dictionary mode (a.k.a. \"slow\" mode in v8)\n create: supportsCreate\n ? function () { return MakeDictionary(Object.create(null)); }\n : supportsProto\n ? function () { return MakeDictionary({ __proto__: null }); }\n : function () { return MakeDictionary({}); },\n has: downLevel\n ? function (map, key) { return hasOwn.call(map, key); }\n : function (map, key) { return key in map; },\n get: downLevel\n ? function (map, key) { return hasOwn.call(map, key) ? map[key] : undefined; }\n : function (map, key) { return map[key]; },\n };\n // Load global or shim versions of Map, Set, and WeakMap\n var functionPrototype = Object.getPrototypeOf(Function);\n var _Map = typeof Map === \"function\" && typeof Map.prototype.entries === \"function\" ? Map : CreateMapPolyfill();\n var _Set = typeof Set === \"function\" && typeof Set.prototype.entries === \"function\" ? Set : CreateSetPolyfill();\n var _WeakMap = typeof WeakMap === \"function\" ? WeakMap : CreateWeakMapPolyfill();\n var registrySymbol = supportsSymbol ? Symbol.for(\"@reflect-metadata:registry\") : undefined;\n var metadataRegistry = GetOrCreateMetadataRegistry();\n var metadataProvider = CreateMetadataProvider(metadataRegistry);\n /**\n * Applies a set of decorators to a property of a target object.\n * @param decorators An array of decorators.\n * @param target The target object.\n * @param propertyKey (Optional) The property key to decorate.\n * @param attributes (Optional) The property descriptor for the target key.\n * @remarks Decorators are applied in reverse order.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * Example = Reflect.decorate(decoratorsArray, Example);\n *\n * // property (on constructor)\n * Reflect.decorate(decoratorsArray, Example, \"staticProperty\");\n *\n * // property (on prototype)\n * Reflect.decorate(decoratorsArray, Example.prototype, \"property\");\n *\n * // method (on constructor)\n * Object.defineProperty(Example, \"staticMethod\",\n * Reflect.decorate(decoratorsArray, Example, \"staticMethod\",\n * Object.getOwnPropertyDescriptor(Example, \"staticMethod\")));\n *\n * // method (on prototype)\n * Object.defineProperty(Example.prototype, \"method\",\n * Reflect.decorate(decoratorsArray, Example.prototype, \"method\",\n * Object.getOwnPropertyDescriptor(Example.prototype, \"method\")));\n *\n */\n function decorate(decorators, target, propertyKey, attributes) {\n if (!IsUndefined(propertyKey)) {\n if (!IsArray(decorators))\n throw new TypeError();\n if (!IsObject(target))\n throw new TypeError();\n if (!IsObject(attributes) && !IsUndefined(attributes) && !IsNull(attributes))\n throw new TypeError();\n if (IsNull(attributes))\n attributes = undefined;\n propertyKey = ToPropertyKey(propertyKey);\n return DecorateProperty(decorators, target, propertyKey, attributes);\n }\n else {\n if (!IsArray(decorators))\n throw new TypeError();\n if (!IsConstructor(target))\n throw new TypeError();\n return DecorateConstructor(decorators, target);\n }\n }\n exporter(\"decorate\", decorate);\n // 4.1.2 Reflect.metadata(metadataKey, metadataValue)\n // https://rbuckton.github.io/reflect-metadata/#reflect.metadata\n /**\n * A default metadata decorator factory that can be used on a class, class member, or parameter.\n * @param metadataKey The key for the metadata entry.\n * @param metadataValue The value for the metadata entry.\n * @returns A decorator function.\n * @remarks\n * If `metadataKey` is already defined for the target and target key, the\n * metadataValue for that key will be overwritten.\n * @example\n *\n * // constructor\n * @Reflect.metadata(key, value)\n * class Example {\n * }\n *\n * // property (on constructor, TypeScript only)\n * class Example {\n * @Reflect.metadata(key, value)\n * static staticProperty;\n * }\n *\n * // property (on prototype, TypeScript only)\n * class Example {\n * @Reflect.metadata(key, value)\n * property;\n * }\n *\n * // method (on constructor)\n * class Example {\n * @Reflect.metadata(key, value)\n * static staticMethod() { }\n * }\n *\n * // method (on prototype)\n * class Example {\n * @Reflect.metadata(key, value)\n * method() { }\n * }\n *\n */\n function metadata(metadataKey, metadataValue) {\n function decorator(target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey) && !IsPropertyKey(propertyKey))\n throw new TypeError();\n OrdinaryDefineOwnMetadata(metadataKey, metadataValue, target, propertyKey);\n }\n return decorator;\n }\n exporter(\"metadata\", metadata);\n /**\n * Define a unique metadata entry on the target.\n * @param metadataKey A key used to store and retrieve metadata.\n * @param metadataValue A value that contains attached metadata.\n * @param target The target object on which to define metadata.\n * @param propertyKey (Optional) The property key for the target.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * Reflect.defineMetadata(\"custom:annotation\", options, Example);\n *\n * // property (on constructor)\n * Reflect.defineMetadata(\"custom:annotation\", options, Example, \"staticProperty\");\n *\n * // property (on prototype)\n * Reflect.defineMetadata(\"custom:annotation\", options, Example.prototype, \"property\");\n *\n * // method (on constructor)\n * Reflect.defineMetadata(\"custom:annotation\", options, Example, \"staticMethod\");\n *\n * // method (on prototype)\n * Reflect.defineMetadata(\"custom:annotation\", options, Example.prototype, \"method\");\n *\n * // decorator factory as metadata-producing annotation.\n * function MyAnnotation(options): Decorator {\n * return (target, key?) => Reflect.defineMetadata(\"custom:annotation\", options, target, key);\n * }\n *\n */\n function defineMetadata(metadataKey, metadataValue, target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n return OrdinaryDefineOwnMetadata(metadataKey, metadataValue, target, propertyKey);\n }\n exporter(\"defineMetadata\", defineMetadata);\n /**\n * Gets a value indicating whether the target object or its prototype chain has the provided metadata key defined.\n * @param metadataKey A key used to store and retrieve metadata.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey (Optional) The property key for the target.\n * @returns `true` if the metadata key was defined on the target object or its prototype chain; otherwise, `false`.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Reflect.hasMetadata(\"custom:annotation\", Example);\n *\n * // property (on constructor)\n * result = Reflect.hasMetadata(\"custom:annotation\", Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Reflect.hasMetadata(\"custom:annotation\", Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Reflect.hasMetadata(\"custom:annotation\", Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Reflect.hasMetadata(\"custom:annotation\", Example.prototype, \"method\");\n *\n */\n function hasMetadata(metadataKey, target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n return OrdinaryHasMetadata(metadataKey, target, propertyKey);\n }\n exporter(\"hasMetadata\", hasMetadata);\n /**\n * Gets a value indicating whether the target object has the provided metadata key defined.\n * @param metadataKey A key used to store and retrieve metadata.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey (Optional) The property key for the target.\n * @returns `true` if the metadata key was defined on the target object; otherwise, `false`.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Reflect.hasOwnMetadata(\"custom:annotation\", Example);\n *\n * // property (on constructor)\n * result = Reflect.hasOwnMetadata(\"custom:annotation\", Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Reflect.hasOwnMetadata(\"custom:annotation\", Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Reflect.hasOwnMetadata(\"custom:annotation\", Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Reflect.hasOwnMetadata(\"custom:annotation\", Example.prototype, \"method\");\n *\n */\n function hasOwnMetadata(metadataKey, target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n return OrdinaryHasOwnMetadata(metadataKey, target, propertyKey);\n }\n exporter(\"hasOwnMetadata\", hasOwnMetadata);\n /**\n * Gets the metadata value for the provided metadata key on the target object or its prototype chain.\n * @param metadataKey A key used to store and retrieve metadata.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey (Optional) The property key for the target.\n * @returns The metadata value for the metadata key if found; otherwise, `undefined`.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Reflect.getMetadata(\"custom:annotation\", Example);\n *\n * // property (on constructor)\n * result = Reflect.getMetadata(\"custom:annotation\", Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Reflect.getMetadata(\"custom:annotation\", Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Reflect.getMetadata(\"custom:annotation\", Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Reflect.getMetadata(\"custom:annotation\", Example.prototype, \"method\");\n *\n */\n function getMetadata(metadataKey, target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n return OrdinaryGetMetadata(metadataKey, target, propertyKey);\n }\n exporter(\"getMetadata\", getMetadata);\n /**\n * Gets the metadata value for the provided metadata key on the target object.\n * @param metadataKey A key used to store and retrieve metadata.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey (Optional) The property key for the target.\n * @returns The metadata value for the metadata key if found; otherwise, `undefined`.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Reflect.getOwnMetadata(\"custom:annotation\", Example);\n *\n * // property (on constructor)\n * result = Reflect.getOwnMetadata(\"custom:annotation\", Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Reflect.getOwnMetadata(\"custom:annotation\", Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Reflect.getOwnMetadata(\"custom:annotation\", Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Reflect.getOwnMetadata(\"custom:annotation\", Example.prototype, \"method\");\n *\n */\n function getOwnMetadata(metadataKey, target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n return OrdinaryGetOwnMetadata(metadataKey, target, propertyKey);\n }\n exporter(\"getOwnMetadata\", getOwnMetadata);\n /**\n * Gets the metadata keys defined on the target object or its prototype chain.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey (Optional) The property key for the target.\n * @returns An array of unique metadata keys.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Reflect.getMetadataKeys(Example);\n *\n * // property (on constructor)\n * result = Reflect.getMetadataKeys(Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Reflect.getMetadataKeys(Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Reflect.getMetadataKeys(Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Reflect.getMetadataKeys(Example.prototype, \"method\");\n *\n */\n function getMetadataKeys(target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n return OrdinaryMetadataKeys(target, propertyKey);\n }\n exporter(\"getMetadataKeys\", getMetadataKeys);\n /**\n * Gets the unique metadata keys defined on the target object.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey (Optional) The property key for the target.\n * @returns An array of unique metadata keys.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Reflect.getOwnMetadataKeys(Example);\n *\n * // property (on constructor)\n * result = Reflect.getOwnMetadataKeys(Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Reflect.getOwnMetadataKeys(Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Reflect.getOwnMetadataKeys(Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Reflect.getOwnMetadataKeys(Example.prototype, \"method\");\n *\n */\n function getOwnMetadataKeys(target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n return OrdinaryOwnMetadataKeys(target, propertyKey);\n }\n exporter(\"getOwnMetadataKeys\", getOwnMetadataKeys);\n /**\n * Deletes the metadata entry from the target object with the provided key.\n * @param metadataKey A key used to store and retrieve metadata.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey (Optional) The property key for the target.\n * @returns `true` if the metadata entry was found and deleted; otherwise, false.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Reflect.deleteMetadata(\"custom:annotation\", Example);\n *\n * // property (on constructor)\n * result = Reflect.deleteMetadata(\"custom:annotation\", Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Reflect.deleteMetadata(\"custom:annotation\", Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Reflect.deleteMetadata(\"custom:annotation\", Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Reflect.deleteMetadata(\"custom:annotation\", Example.prototype, \"method\");\n *\n */\n function deleteMetadata(metadataKey, target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n var provider = GetMetadataProvider(target, propertyKey, /*Create*/ false);\n if (IsUndefined(provider))\n return false;\n return provider.OrdinaryDeleteMetadata(metadataKey, target, propertyKey);\n }\n exporter(\"deleteMetadata\", deleteMetadata);\n function DecorateConstructor(decorators, target) {\n for (var i = decorators.length - 1; i >= 0; --i) {\n var decorator = decorators[i];\n var decorated = decorator(target);\n if (!IsUndefined(decorated) && !IsNull(decorated)) {\n if (!IsConstructor(decorated))\n throw new TypeError();\n target = decorated;\n }\n }\n return target;\n }\n function DecorateProperty(decorators, target, propertyKey, descriptor) {\n for (var i = decorators.length - 1; i >= 0; --i) {\n var decorator = decorators[i];\n var decorated = decorator(target, propertyKey, descriptor);\n if (!IsUndefined(decorated) && !IsNull(decorated)) {\n if (!IsObject(decorated))\n throw new TypeError();\n descriptor = decorated;\n }\n }\n return descriptor;\n }\n // 3.1.1.1 OrdinaryHasMetadata(MetadataKey, O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinaryhasmetadata\n function OrdinaryHasMetadata(MetadataKey, O, P) {\n var hasOwn = OrdinaryHasOwnMetadata(MetadataKey, O, P);\n if (hasOwn)\n return true;\n var parent = OrdinaryGetPrototypeOf(O);\n if (!IsNull(parent))\n return OrdinaryHasMetadata(MetadataKey, parent, P);\n return false;\n }\n // 3.1.2.1 OrdinaryHasOwnMetadata(MetadataKey, O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinaryhasownmetadata\n function OrdinaryHasOwnMetadata(MetadataKey, O, P) {\n var provider = GetMetadataProvider(O, P, /*Create*/ false);\n if (IsUndefined(provider))\n return false;\n return ToBoolean(provider.OrdinaryHasOwnMetadata(MetadataKey, O, P));\n }\n // 3.1.3.1 OrdinaryGetMetadata(MetadataKey, O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinarygetmetadata\n function OrdinaryGetMetadata(MetadataKey, O, P) {\n var hasOwn = OrdinaryHasOwnMetadata(MetadataKey, O, P);\n if (hasOwn)\n return OrdinaryGetOwnMetadata(MetadataKey, O, P);\n var parent = OrdinaryGetPrototypeOf(O);\n if (!IsNull(parent))\n return OrdinaryGetMetadata(MetadataKey, parent, P);\n return undefined;\n }\n // 3.1.4.1 OrdinaryGetOwnMetadata(MetadataKey, O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinarygetownmetadata\n function OrdinaryGetOwnMetadata(MetadataKey, O, P) {\n var provider = GetMetadataProvider(O, P, /*Create*/ false);\n if (IsUndefined(provider))\n return;\n return provider.OrdinaryGetOwnMetadata(MetadataKey, O, P);\n }\n // 3.1.5.1 OrdinaryDefineOwnMetadata(MetadataKey, MetadataValue, O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinarydefineownmetadata\n function OrdinaryDefineOwnMetadata(MetadataKey, MetadataValue, O, P) {\n var provider = GetMetadataProvider(O, P, /*Create*/ true);\n provider.OrdinaryDefineOwnMetadata(MetadataKey, MetadataValue, O, P);\n }\n // 3.1.6.1 OrdinaryMetadataKeys(O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinarymetadatakeys\n function OrdinaryMetadataKeys(O, P) {\n var ownKeys = OrdinaryOwnMetadataKeys(O, P);\n var parent = OrdinaryGetPrototypeOf(O);\n if (parent === null)\n return ownKeys;\n var parentKeys = OrdinaryMetadataKeys(parent, P);\n if (parentKeys.length <= 0)\n return ownKeys;\n if (ownKeys.length <= 0)\n return parentKeys;\n var set = new _Set();\n var keys = [];\n for (var _i = 0, ownKeys_1 = ownKeys; _i < ownKeys_1.length; _i++) {\n var key = ownKeys_1[_i];\n var hasKey = set.has(key);\n if (!hasKey) {\n set.add(key);\n keys.push(key);\n }\n }\n for (var _a = 0, parentKeys_1 = parentKeys; _a < parentKeys_1.length; _a++) {\n var key = parentKeys_1[_a];\n var hasKey = set.has(key);\n if (!hasKey) {\n set.add(key);\n keys.push(key);\n }\n }\n return keys;\n }\n // 3.1.7.1 OrdinaryOwnMetadataKeys(O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinaryownmetadatakeys\n function OrdinaryOwnMetadataKeys(O, P) {\n var provider = GetMetadataProvider(O, P, /*create*/ false);\n if (!provider) {\n return [];\n }\n return provider.OrdinaryOwnMetadataKeys(O, P);\n }\n // 6 ECMAScript Data Types and Values\n // https://tc39.github.io/ecma262/#sec-ecmascript-data-types-and-values\n function Type(x) {\n if (x === null)\n return 1 /* Null */;\n switch (typeof x) {\n case \"undefined\": return 0 /* Undefined */;\n case \"boolean\": return 2 /* Boolean */;\n case \"string\": return 3 /* String */;\n case \"symbol\": return 4 /* Symbol */;\n case \"number\": return 5 /* Number */;\n case \"object\": return x === null ? 1 /* Null */ : 6 /* Object */;\n default: return 6 /* Object */;\n }\n }\n // 6.1.1 The Undefined Type\n // https://tc39.github.io/ecma262/#sec-ecmascript-language-types-undefined-type\n function IsUndefined(x) {\n return x === undefined;\n }\n // 6.1.2 The Null Type\n // https://tc39.github.io/ecma262/#sec-ecmascript-language-types-null-type\n function IsNull(x) {\n return x === null;\n }\n // 6.1.5 The Symbol Type\n // https://tc39.github.io/ecma262/#sec-ecmascript-language-types-symbol-type\n function IsSymbol(x) {\n return typeof x === \"symbol\";\n }\n // 6.1.7 The Object Type\n // https://tc39.github.io/ecma262/#sec-object-type\n function IsObject(x) {\n return typeof x === \"object\" ? x !== null : typeof x === \"function\";\n }\n // 7.1 Type Conversion\n // https://tc39.github.io/ecma262/#sec-type-conversion\n // 7.1.1 ToPrimitive(input [, PreferredType])\n // https://tc39.github.io/ecma262/#sec-toprimitive\n function ToPrimitive(input, PreferredType) {\n switch (Type(input)) {\n case 0 /* Undefined */: return input;\n case 1 /* Null */: return input;\n case 2 /* Boolean */: return input;\n case 3 /* String */: return input;\n case 4 /* Symbol */: return input;\n case 5 /* Number */: return input;\n }\n var hint = PreferredType === 3 /* String */ ? \"string\" : PreferredType === 5 /* Number */ ? \"number\" : \"default\";\n var exoticToPrim = GetMethod(input, toPrimitiveSymbol);\n if (exoticToPrim !== undefined) {\n var result = exoticToPrim.call(input, hint);\n if (IsObject(result))\n throw new TypeError();\n return result;\n }\n return OrdinaryToPrimitive(input, hint === \"default\" ? \"number\" : hint);\n }\n // 7.1.1.1 OrdinaryToPrimitive(O, hint)\n // https://tc39.github.io/ecma262/#sec-ordinarytoprimitive\n function OrdinaryToPrimitive(O, hint) {\n if (hint === \"string\") {\n var toString_1 = O.toString;\n if (IsCallable(toString_1)) {\n var result = toString_1.call(O);\n if (!IsObject(result))\n return result;\n }\n var valueOf = O.valueOf;\n if (IsCallable(valueOf)) {\n var result = valueOf.call(O);\n if (!IsObject(result))\n return result;\n }\n }\n else {\n var valueOf = O.valueOf;\n if (IsCallable(valueOf)) {\n var result = valueOf.call(O);\n if (!IsObject(result))\n return result;\n }\n var toString_2 = O.toString;\n if (IsCallable(toString_2)) {\n var result = toString_2.call(O);\n if (!IsObject(result))\n return result;\n }\n }\n throw new TypeError();\n }\n // 7.1.2 ToBoolean(argument)\n // https://tc39.github.io/ecma262/2016/#sec-toboolean\n function ToBoolean(argument) {\n return !!argument;\n }\n // 7.1.12 ToString(argument)\n // https://tc39.github.io/ecma262/#sec-tostring\n function ToString(argument) {\n return \"\" + argument;\n }\n // 7.1.14 ToPropertyKey(argument)\n // https://tc39.github.io/ecma262/#sec-topropertykey\n function ToPropertyKey(argument) {\n var key = ToPrimitive(argument, 3 /* String */);\n if (IsSymbol(key))\n return key;\n return ToString(key);\n }\n // 7.2 Testing and Comparison Operations\n // https://tc39.github.io/ecma262/#sec-testing-and-comparison-operations\n // 7.2.2 IsArray(argument)\n // https://tc39.github.io/ecma262/#sec-isarray\n function IsArray(argument) {\n return Array.isArray\n ? Array.isArray(argument)\n : argument instanceof Object\n ? argument instanceof Array\n : Object.prototype.toString.call(argument) === \"[object Array]\";\n }\n // 7.2.3 IsCallable(argument)\n // https://tc39.github.io/ecma262/#sec-iscallable\n function IsCallable(argument) {\n // NOTE: This is an approximation as we cannot check for [[Call]] internal method.\n return typeof argument === \"function\";\n }\n // 7.2.4 IsConstructor(argument)\n // https://tc39.github.io/ecma262/#sec-isconstructor\n function IsConstructor(argument) {\n // NOTE: This is an approximation as we cannot check for [[Construct]] internal method.\n return typeof argument === \"function\";\n }\n // 7.2.7 IsPropertyKey(argument)\n // https://tc39.github.io/ecma262/#sec-ispropertykey\n function IsPropertyKey(argument) {\n switch (Type(argument)) {\n case 3 /* String */: return true;\n case 4 /* Symbol */: return true;\n default: return false;\n }\n }\n function SameValueZero(x, y) {\n return x === y || x !== x && y !== y;\n }\n // 7.3 Operations on Objects\n // https://tc39.github.io/ecma262/#sec-operations-on-objects\n // 7.3.9 GetMethod(V, P)\n // https://tc39.github.io/ecma262/#sec-getmethod\n function GetMethod(V, P) {\n var func = V[P];\n if (func === undefined || func === null)\n return undefined;\n if (!IsCallable(func))\n throw new TypeError();\n return func;\n }\n // 7.4 Operations on Iterator Objects\n // https://tc39.github.io/ecma262/#sec-operations-on-iterator-objects\n function GetIterator(obj) {\n var method = GetMethod(obj, iteratorSymbol);\n if (!IsCallable(method))\n throw new TypeError(); // from Call\n var iterator = method.call(obj);\n if (!IsObject(iterator))\n throw new TypeError();\n return iterator;\n }\n // 7.4.4 IteratorValue(iterResult)\n // https://tc39.github.io/ecma262/2016/#sec-iteratorvalue\n function IteratorValue(iterResult) {\n return iterResult.value;\n }\n // 7.4.5 IteratorStep(iterator)\n // https://tc39.github.io/ecma262/#sec-iteratorstep\n function IteratorStep(iterator) {\n var result = iterator.next();\n return result.done ? false : result;\n }\n // 7.4.6 IteratorClose(iterator, completion)\n // https://tc39.github.io/ecma262/#sec-iteratorclose\n function IteratorClose(iterator) {\n var f = iterator[\"return\"];\n if (f)\n f.call(iterator);\n }\n // 9.1 Ordinary Object Internal Methods and Internal Slots\n // https://tc39.github.io/ecma262/#sec-ordinary-object-internal-methods-and-internal-slots\n // 9.1.1.1 OrdinaryGetPrototypeOf(O)\n // https://tc39.github.io/ecma262/#sec-ordinarygetprototypeof\n function OrdinaryGetPrototypeOf(O) {\n var proto = Object.getPrototypeOf(O);\n if (typeof O !== \"function\" || O === functionPrototype)\n return proto;\n // TypeScript doesn't set __proto__ in ES5, as it's non-standard.\n // Try to determine the superclass constructor. Compatible implementations\n // must either set __proto__ on a subclass constructor to the superclass constructor,\n // or ensure each class has a valid `constructor` property on its prototype that\n // points back to the constructor.\n // If this is not the same as Function.[[Prototype]], then this is definately inherited.\n // This is the case when in ES6 or when using __proto__ in a compatible browser.\n if (proto !== functionPrototype)\n return proto;\n // If the super prototype is Object.prototype, null, or undefined, then we cannot determine the heritage.\n var prototype = O.prototype;\n var prototypeProto = prototype && Object.getPrototypeOf(prototype);\n if (prototypeProto == null || prototypeProto === Object.prototype)\n return proto;\n // If the constructor was not a function, then we cannot determine the heritage.\n var constructor = prototypeProto.constructor;\n if (typeof constructor !== \"function\")\n return proto;\n // If we have some kind of self-reference, then we cannot determine the heritage.\n if (constructor === O)\n return proto;\n // we have a pretty good guess at the heritage.\n return constructor;\n }\n // Global metadata registry\n // - Allows `import \"reflect-metadata\"` and `import \"reflect-metadata/no-conflict\"` to interoperate.\n // - Uses isolated metadata if `Reflect` is frozen before the registry can be installed.\n /**\n * Creates a registry used to allow multiple `reflect-metadata` providers.\n */\n function CreateMetadataRegistry() {\n var fallback;\n if (!IsUndefined(registrySymbol) &&\n typeof root.Reflect !== \"undefined\" &&\n !(registrySymbol in root.Reflect) &&\n typeof root.Reflect.defineMetadata === \"function\") {\n // interoperate with older version of `reflect-metadata` that did not support a registry.\n fallback = CreateFallbackProvider(root.Reflect);\n }\n var first;\n var second;\n var rest;\n var targetProviderMap = new _WeakMap();\n var registry = {\n registerProvider: registerProvider,\n getProvider: getProvider,\n setProvider: setProvider,\n };\n return registry;\n function registerProvider(provider) {\n if (!Object.isExtensible(registry)) {\n throw new Error(\"Cannot add provider to a frozen registry.\");\n }\n switch (true) {\n case fallback === provider: break;\n case IsUndefined(first):\n first = provider;\n break;\n case first === provider: break;\n case IsUndefined(second):\n second = provider;\n break;\n case second === provider: break;\n default:\n if (rest === undefined)\n rest = new _Set();\n rest.add(provider);\n break;\n }\n }\n function getProviderNoCache(O, P) {\n if (!IsUndefined(first)) {\n if (first.isProviderFor(O, P))\n return first;\n if (!IsUndefined(second)) {\n if (second.isProviderFor(O, P))\n return first;\n if (!IsUndefined(rest)) {\n var iterator = GetIterator(rest);\n while (true) {\n var next = IteratorStep(iterator);\n if (!next) {\n return undefined;\n }\n var provider = IteratorValue(next);\n if (provider.isProviderFor(O, P)) {\n IteratorClose(iterator);\n return provider;\n }\n }\n }\n }\n }\n if (!IsUndefined(fallback) && fallback.isProviderFor(O, P)) {\n return fallback;\n }\n return undefined;\n }\n function getProvider(O, P) {\n var providerMap = targetProviderMap.get(O);\n var provider;\n if (!IsUndefined(providerMap)) {\n provider = providerMap.get(P);\n }\n if (!IsUndefined(provider)) {\n return provider;\n }\n provider = getProviderNoCache(O, P);\n if (!IsUndefined(provider)) {\n if (IsUndefined(providerMap)) {\n providerMap = new _Map();\n targetProviderMap.set(O, providerMap);\n }\n providerMap.set(P, provider);\n }\n return provider;\n }\n function hasProvider(provider) {\n if (IsUndefined(provider))\n throw new TypeError();\n return first === provider || second === provider || !IsUndefined(rest) && rest.has(provider);\n }\n function setProvider(O, P, provider) {\n if (!hasProvider(provider)) {\n throw new Error(\"Metadata provider not registered.\");\n }\n var existingProvider = getProvider(O, P);\n if (existingProvider !== provider) {\n if (!IsUndefined(existingProvider)) {\n return false;\n }\n var providerMap = targetProviderMap.get(O);\n if (IsUndefined(providerMap)) {\n providerMap = new _Map();\n targetProviderMap.set(O, providerMap);\n }\n providerMap.set(P, provider);\n }\n return true;\n }\n }\n /**\n * Gets or creates the shared registry of metadata providers.\n */\n function GetOrCreateMetadataRegistry() {\n var metadataRegistry;\n if (!IsUndefined(registrySymbol) && IsObject(root.Reflect) && Object.isExtensible(root.Reflect)) {\n metadataRegistry = root.Reflect[registrySymbol];\n }\n if (IsUndefined(metadataRegistry)) {\n metadataRegistry = CreateMetadataRegistry();\n }\n if (!IsUndefined(registrySymbol) && IsObject(root.Reflect) && Object.isExtensible(root.Reflect)) {\n Object.defineProperty(root.Reflect, registrySymbol, {\n enumerable: false,\n configurable: false,\n writable: false,\n value: metadataRegistry\n });\n }\n return metadataRegistry;\n }\n function CreateMetadataProvider(registry) {\n // [[Metadata]] internal slot\n // https://rbuckton.github.io/reflect-metadata/#ordinary-object-internal-methods-and-internal-slots\n var metadata = new _WeakMap();\n var provider = {\n isProviderFor: function (O, P) {\n var targetMetadata = metadata.get(O);\n if (IsUndefined(targetMetadata))\n return false;\n return targetMetadata.has(P);\n },\n OrdinaryDefineOwnMetadata: OrdinaryDefineOwnMetadata,\n OrdinaryHasOwnMetadata: OrdinaryHasOwnMetadata,\n OrdinaryGetOwnMetadata: OrdinaryGetOwnMetadata,\n OrdinaryOwnMetadataKeys: OrdinaryOwnMetadataKeys,\n OrdinaryDeleteMetadata: OrdinaryDeleteMetadata,\n };\n metadataRegistry.registerProvider(provider);\n return provider;\n function GetOrCreateMetadataMap(O, P, Create) {\n var targetMetadata = metadata.get(O);\n var createdTargetMetadata = false;\n if (IsUndefined(targetMetadata)) {\n if (!Create)\n return undefined;\n targetMetadata = new _Map();\n metadata.set(O, targetMetadata);\n createdTargetMetadata = true;\n }\n var metadataMap = targetMetadata.get(P);\n if (IsUndefined(metadataMap)) {\n if (!Create)\n return undefined;\n metadataMap = new _Map();\n targetMetadata.set(P, metadataMap);\n if (!registry.setProvider(O, P, provider)) {\n targetMetadata.delete(P);\n if (createdTargetMetadata) {\n metadata.delete(O);\n }\n throw new Error(\"Wrong provider for target.\");\n }\n }\n return metadataMap;\n }\n // 3.1.2.1 OrdinaryHasOwnMetadata(MetadataKey, O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinaryhasownmetadata\n function OrdinaryHasOwnMetadata(MetadataKey, O, P) {\n var metadataMap = GetOrCreateMetadataMap(O, P, /*Create*/ false);\n if (IsUndefined(metadataMap))\n return false;\n return ToBoolean(metadataMap.has(MetadataKey));\n }\n // 3.1.4.1 OrdinaryGetOwnMetadata(MetadataKey, O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinarygetownmetadata\n function OrdinaryGetOwnMetadata(MetadataKey, O, P) {\n var metadataMap = GetOrCreateMetadataMap(O, P, /*Create*/ false);\n if (IsUndefined(metadataMap))\n return undefined;\n return metadataMap.get(MetadataKey);\n }\n // 3.1.5.1 OrdinaryDefineOwnMetadata(MetadataKey, MetadataValue, O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinarydefineownmetadata\n function OrdinaryDefineOwnMetadata(MetadataKey, MetadataValue, O, P) {\n var metadataMap = GetOrCreateMetadataMap(O, P, /*Create*/ true);\n metadataMap.set(MetadataKey, MetadataValue);\n }\n // 3.1.7.1 OrdinaryOwnMetadataKeys(O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinaryownmetadatakeys\n function OrdinaryOwnMetadataKeys(O, P) {\n var keys = [];\n var metadataMap = GetOrCreateMetadataMap(O, P, /*Create*/ false);\n if (IsUndefined(metadataMap))\n return keys;\n var keysObj = metadataMap.keys();\n var iterator = GetIterator(keysObj);\n var k = 0;\n while (true) {\n var next = IteratorStep(iterator);\n if (!next) {\n keys.length = k;\n return keys;\n }\n var nextValue = IteratorValue(next);\n try {\n keys[k] = nextValue;\n }\n catch (e) {\n try {\n IteratorClose(iterator);\n }\n finally {\n throw e;\n }\n }\n k++;\n }\n }\n function OrdinaryDeleteMetadata(MetadataKey, O, P) {\n var metadataMap = GetOrCreateMetadataMap(O, P, /*Create*/ false);\n if (IsUndefined(metadataMap))\n return false;\n if (!metadataMap.delete(MetadataKey))\n return false;\n if (metadataMap.size === 0) {\n var targetMetadata = metadata.get(O);\n if (!IsUndefined(targetMetadata)) {\n targetMetadata.delete(P);\n if (targetMetadata.size === 0) {\n metadata.delete(targetMetadata);\n }\n }\n }\n return true;\n }\n }\n function CreateFallbackProvider(reflect) {\n var defineMetadata = reflect.defineMetadata, hasOwnMetadata = reflect.hasOwnMetadata, getOwnMetadata = reflect.getOwnMetadata, getOwnMetadataKeys = reflect.getOwnMetadataKeys, deleteMetadata = reflect.deleteMetadata;\n var metadataOwner = new _WeakMap();\n var provider = {\n isProviderFor: function (O, P) {\n var metadataPropertySet = metadataOwner.get(O);\n if (!IsUndefined(metadataPropertySet) && metadataPropertySet.has(P)) {\n return true;\n }\n if (getOwnMetadataKeys(O, P).length) {\n if (IsUndefined(metadataPropertySet)) {\n metadataPropertySet = new _Set();\n metadataOwner.set(O, metadataPropertySet);\n }\n metadataPropertySet.add(P);\n return true;\n }\n return false;\n },\n OrdinaryDefineOwnMetadata: defineMetadata,\n OrdinaryHasOwnMetadata: hasOwnMetadata,\n OrdinaryGetOwnMetadata: getOwnMetadata,\n OrdinaryOwnMetadataKeys: getOwnMetadataKeys,\n OrdinaryDeleteMetadata: deleteMetadata,\n };\n return provider;\n }\n /**\n * Gets the metadata provider for an object. If the object has no metadata provider and this is for a create operation,\n * then this module's metadata provider is assigned to the object.\n */\n function GetMetadataProvider(O, P, Create) {\n var registeredProvider = metadataRegistry.getProvider(O, P);\n if (!IsUndefined(registeredProvider)) {\n return registeredProvider;\n }\n if (Create) {\n if (metadataRegistry.setProvider(O, P, metadataProvider)) {\n return metadataProvider;\n }\n throw new Error(\"Illegal state.\");\n }\n return undefined;\n }\n // naive Map shim\n function CreateMapPolyfill() {\n var cacheSentinel = {};\n var arraySentinel = [];\n var MapIterator = /** @class */ (function () {\n function MapIterator(keys, values, selector) {\n this._index = 0;\n this._keys = keys;\n this._values = values;\n this._selector = selector;\n }\n MapIterator.prototype[\"@@iterator\"] = function () { return this; };\n MapIterator.prototype[iteratorSymbol] = function () { return this; };\n MapIterator.prototype.next = function () {\n var index = this._index;\n if (index >= 0 && index < this._keys.length) {\n var result = this._selector(this._keys[index], this._values[index]);\n if (index + 1 >= this._keys.length) {\n this._index = -1;\n this._keys = arraySentinel;\n this._values = arraySentinel;\n }\n else {\n this._index++;\n }\n return { value: result, done: false };\n }\n return { value: undefined, done: true };\n };\n MapIterator.prototype.throw = function (error) {\n if (this._index >= 0) {\n this._index = -1;\n this._keys = arraySentinel;\n this._values = arraySentinel;\n }\n throw error;\n };\n MapIterator.prototype.return = function (value) {\n if (this._index >= 0) {\n this._index = -1;\n this._keys = arraySentinel;\n this._values = arraySentinel;\n }\n return { value: value, done: true };\n };\n return MapIterator;\n }());\n var Map = /** @class */ (function () {\n function Map() {\n this._keys = [];\n this._values = [];\n this._cacheKey = cacheSentinel;\n this._cacheIndex = -2;\n }\n Object.defineProperty(Map.prototype, \"size\", {\n get: function () { return this._keys.length; },\n enumerable: true,\n configurable: true\n });\n Map.prototype.has = function (key) { return this._find(key, /*insert*/ false) >= 0; };\n Map.prototype.get = function (key) {\n var index = this._find(key, /*insert*/ false);\n return index >= 0 ? this._values[index] : undefined;\n };\n Map.prototype.set = function (key, value) {\n var index = this._find(key, /*insert*/ true);\n this._values[index] = value;\n return this;\n };\n Map.prototype.delete = function (key) {\n var index = this._find(key, /*insert*/ false);\n if (index >= 0) {\n var size = this._keys.length;\n for (var i = index + 1; i < size; i++) {\n this._keys[i - 1] = this._keys[i];\n this._values[i - 1] = this._values[i];\n }\n this._keys.length--;\n this._values.length--;\n if (SameValueZero(key, this._cacheKey)) {\n this._cacheKey = cacheSentinel;\n this._cacheIndex = -2;\n }\n return true;\n }\n return false;\n };\n Map.prototype.clear = function () {\n this._keys.length = 0;\n this._values.length = 0;\n this._cacheKey = cacheSentinel;\n this._cacheIndex = -2;\n };\n Map.prototype.keys = function () { return new MapIterator(this._keys, this._values, getKey); };\n Map.prototype.values = function () { return new MapIterator(this._keys, this._values, getValue); };\n Map.prototype.entries = function () { return new MapIterator(this._keys, this._values, getEntry); };\n Map.prototype[\"@@iterator\"] = function () { return this.entries(); };\n Map.prototype[iteratorSymbol] = function () { return this.entries(); };\n Map.prototype._find = function (key, insert) {\n if (!SameValueZero(this._cacheKey, key)) {\n this._cacheIndex = -1;\n for (var i = 0; i < this._keys.length; i++) {\n if (SameValueZero(this._keys[i], key)) {\n this._cacheIndex = i;\n break;\n }\n }\n }\n if (this._cacheIndex < 0 && insert) {\n this._cacheIndex = this._keys.length;\n this._keys.push(key);\n this._values.push(undefined);\n }\n return this._cacheIndex;\n };\n return Map;\n }());\n return Map;\n function getKey(key, _) {\n return key;\n }\n function getValue(_, value) {\n return value;\n }\n function getEntry(key, value) {\n return [key, value];\n }\n }\n // naive Set shim\n function CreateSetPolyfill() {\n var Set = /** @class */ (function () {\n function Set() {\n this._map = new _Map();\n }\n Object.defineProperty(Set.prototype, \"size\", {\n get: function () { return this._map.size; },\n enumerable: true,\n configurable: true\n });\n Set.prototype.has = function (value) { return this._map.has(value); };\n Set.prototype.add = function (value) { return this._map.set(value, value), this; };\n Set.prototype.delete = function (value) { return this._map.delete(value); };\n Set.prototype.clear = function () { this._map.clear(); };\n Set.prototype.keys = function () { return this._map.keys(); };\n Set.prototype.values = function () { return this._map.keys(); };\n Set.prototype.entries = function () { return this._map.entries(); };\n Set.prototype[\"@@iterator\"] = function () { return this.keys(); };\n Set.prototype[iteratorSymbol] = function () { return this.keys(); };\n return Set;\n }());\n return Set;\n }\n // naive WeakMap shim\n function CreateWeakMapPolyfill() {\n var UUID_SIZE = 16;\n var keys = HashMap.create();\n var rootKey = CreateUniqueKey();\n return /** @class */ (function () {\n function WeakMap() {\n this._key = CreateUniqueKey();\n }\n WeakMap.prototype.has = function (target) {\n var table = GetOrCreateWeakMapTable(target, /*create*/ false);\n return table !== undefined ? HashMap.has(table, this._key) : false;\n };\n WeakMap.prototype.get = function (target) {\n var table = GetOrCreateWeakMapTable(target, /*create*/ false);\n return table !== undefined ? HashMap.get(table, this._key) : undefined;\n };\n WeakMap.prototype.set = function (target, value) {\n var table = GetOrCreateWeakMapTable(target, /*create*/ true);\n table[this._key] = value;\n return this;\n };\n WeakMap.prototype.delete = function (target) {\n var table = GetOrCreateWeakMapTable(target, /*create*/ false);\n return table !== undefined ? delete table[this._key] : false;\n };\n WeakMap.prototype.clear = function () {\n // NOTE: not a real clear, just makes the previous data unreachable\n this._key = CreateUniqueKey();\n };\n return WeakMap;\n }());\n function CreateUniqueKey() {\n var key;\n do\n key = \"@@WeakMap@@\" + CreateUUID();\n while (HashMap.has(keys, key));\n keys[key] = true;\n return key;\n }\n function GetOrCreateWeakMapTable(target, create) {\n if (!hasOwn.call(target, rootKey)) {\n if (!create)\n return undefined;\n Object.defineProperty(target, rootKey, { value: HashMap.create() });\n }\n return target[rootKey];\n }\n function FillRandomBytes(buffer, size) {\n for (var i = 0; i < size; ++i)\n buffer[i] = Math.random() * 0xff | 0;\n return buffer;\n }\n function GenRandomBytes(size) {\n if (typeof Uint8Array === \"function\") {\n var array = new Uint8Array(size);\n if (typeof crypto !== \"undefined\") {\n crypto.getRandomValues(array);\n }\n else if (typeof msCrypto !== \"undefined\") {\n msCrypto.getRandomValues(array);\n }\n else {\n FillRandomBytes(array, size);\n }\n return array;\n }\n return FillRandomBytes(new Array(size), size);\n }\n function CreateUUID() {\n var data = GenRandomBytes(UUID_SIZE);\n // mark as random - RFC 4122 \u00A7 4.4\n data[6] = data[6] & 0x4f | 0x40;\n data[8] = data[8] & 0xbf | 0x80;\n var result = \"\";\n for (var offset = 0; offset < UUID_SIZE; ++offset) {\n var byte = data[offset];\n if (offset === 4 || offset === 6 || offset === 8)\n result += \"-\";\n if (byte < 16)\n result += \"0\";\n result += byte.toString(16).toLowerCase();\n }\n return result;\n }\n }\n // uses a heuristic used by v8 and chakra to force an object into dictionary mode.\n function MakeDictionary(obj) {\n obj.__ = undefined;\n delete obj.__;\n return obj;\n }\n });\n})(Reflect || (Reflect = {}));\n", "import 'reflect-metadata';\nexport * from './index';\n", "import 'reflect-metadata';\nimport { registerAllElements } from './elements/register';\nimport {ConstructorType} from \"@dooboostore/core\";\n\n// Decorators\nexport * from './decorators';\n\n// Types\nexport * from './types';\n\n// Utilities\nexport * from './utils/Utils';\n\n// Config\nexport * from './config/config';\n\n// Registration Factory\nexport default (w: Window, other?: (((w: Window) => ConstructorType<any>) | any) []) => {\n const cr = registerAllElements(w);\n const r = other?.map(fn => {\n if (typeof fn === 'function') {\n const a = fn(w);\n } else {\n }\n });\n\n return cr;\n // return r??[];\n};\n", "import { ConstructorType, FilterFalsy, FilterNullish, NonNullable, Nullable, Nullish, NullOrUndefined } from '../types';\n\nexport namespace ValidUtils {\n\n export const isArrowFunction = (fn: any): fn is Function => {\n // 1. \uD568\uC218\uAC00 \uC544\uB2C8\uBA74 false\n if (typeof fn !== 'function') {\n return false;\n }\n // 2. prototype \uC18D\uC131\uC774 \uC5C6\uC73C\uBA74 \uD654\uC0B4\uD45C \uD568\uC218 (\uB610\uB294 prototype\uC774 \uC5C6\uB294 \uB2E4\uB978 callable)\n // 3. \uD074\uB798\uC2A4\uB294 'class' \uD0A4\uC6CC\uB4DC\uB85C \uC2DC\uC791\uD558\uBBC0\uB85C \uC81C\uC678\n return typeof fn.prototype === 'undefined' && !fn.toString().startsWith('class');\n }\n\n export const isPlainObject = (obj: any): boolean => {\n return obj !== null && typeof obj === 'object' && obj.constructor === Object;\n }\n\n const isConstructorLike = (fn: any): boolean => {\n // 1. \uD568\uC218\uC5EC\uC57C \uD558\uACE0,\n // 2. prototype \uC18D\uC131\uC744 \uAC00\uC838\uC57C \uD568\n return typeof fn === 'function' && typeof fn.prototype !== 'undefined';\n }\n\n export const isUrl = (str: string): boolean => {\n try {\n new URL(str);\n return true;\n } catch (_) {\n return false;\n }\n }\n\n export const isFrozen = (obj: any): boolean => {\n return Object.isFrozen(obj);\n }\n export const isSealed= (obj: any): boolean => {\n return Object.isSealed(obj)\n }\n export const isFrozenOrSealed = (obj: any): boolean => {\n return ValidUtils.isFrozen(obj) || ValidUtils.isSealed(obj);\n }\n export const isFrozenAndSealed = (obj: any): boolean => {\n return ValidUtils.isFrozen(obj) && ValidUtils.isSealed(obj);\n }\n export const isNotFrozen = (obj: any): boolean => {\n return !Object.isFrozen(obj);\n }\n export const isNotSealed = (obj: any): boolean => {\n return !Object.isSealed(obj)\n }\n export const isNotFrozenOrSealed = (obj: any): boolean => {\n return !ValidUtils.isFrozen(obj) && !ValidUtils.isSealed(obj);\n }\n export const isNotFrozenAndSealed = (obj: any): boolean => {\n return !ValidUtils.isFrozen(obj) || !ValidUtils.isSealed(obj);\n }\n\n export const isNullOrUndefined = (data: unknown): data is (null | undefined) => {\n return data == null || undefined === data;\n}\n\n export const isConstructor = (obj: ConstructorType<any> | Function | ((e: any) => void)): obj is ConstructorType<any> => {\n // \uD568\uC218\uC774\uBA74\uC11C prototype \uC18D\uC131\uC774 \uC788\uACE0 prototype\uC774 \uAC1D\uCCB4\uC778\uC9C0 \uD655\uC778\n return typeof obj === 'function'\n && obj.prototype !== undefined\n && obj.prototype.constructor === obj\n // && Object.getOwnPropertyNames(obj.prototype).length > 1; // constructor \uC678\uC5D0 \uB2E4\uB978 \uC18D\uC131\uC774 \uC788\uB294\uC9C0 \uD655\uC778\n }\n export const isFunction = (obj: ConstructorType<any> | Function | ((e: any) => void)): obj is ((e: any) => void) => {\n return typeof obj === 'function' && !isConstructor(obj);\n }\n export const isNullish = <T = any>(data: T | null | undefined): data is null | undefined => {\n return ValidUtils.isNotNullish(data);\n }\n export const isNotNullish = <T>(data: T | null | undefined): data is NonNullable<T> => {\n if ((Array.isArray(data) || ValidUtils.isString(data))) {\n return data.length > 0;\n }\n\n if (data instanceof Set || data instanceof Map) {\n return data.size > 0;\n }\n\n if (typeof data === 'object' && data !== null) {\n return Object.keys(data).length > 0;\n }\n\n return data !== null && data !== undefined;\n }\n\n export function isDefined<T>(value: T | null | undefined): value is NonNullable<T>;\n export function isDefined<K extends string, V>(entry: [K, V] | null | undefined): entry is [K, V];\n export function isDefined(value: unknown): boolean {\n return value !== null && value !== undefined;\n }\n\n export const isNotNullUndefined = <T>(data: T | null | undefined): data is NonNullable<T> => {\n return isDefined(data);\n }\n\n export const isNormalAttrEntry = <T>(entry: [string, T] | undefined | null): entry is [string, T] => {\n return isDefined(entry);\n }\n\n export const isStringEntry = (entry: [string, string] | undefined | null): entry is [string, string] => {\n return isDefined(entry);\n }\n\n export const isNull = (data: any): data is null => {\n return data === null;\n }\n\n export const isUndefined = (data: any): data is undefined => {\n return data === undefined;\n }\n\n export const isArray = (object_o: any): boolean => {\n if (ValidUtils.isNullOrUndefined(object_o)) {\n return false\n } else {\n return Object.prototype.toString.call(object_o).trim() === '[object Array]'\n }\n }\n\n export const isStringNumber = (value: string | number): boolean => {\n if (typeof value === 'number') {\n return !isNaN(value);\n }\n return typeof value === 'string' && value.trim() !== '' && !isNaN(Number(value));\n }\n\n export const isNumber = (object_o: any): boolean => {\n if (ValidUtils.isNullOrUndefined(object_o)) {\n return false\n } else {\n return Object.prototype.toString.call(object_o).trim() === '[object Number]'\n }\n }\n\n export const isIterator = <T>(object_o: any): object_o is Iterable<T> => {\n return object_o != null && typeof object_o[Symbol.iterator] === 'function';\n };\n\n export const isString = (object_o: any): object_o is string => {\n if (ValidUtils.isNullOrUndefined(object_o)) {\n return false\n } else {\n return Object.prototype.toString.call(object_o).trim() === '[object String]'\n }\n }\n\n // export const isFunction = (object_o: any): boolean => {\n // if (ValidUtils.isNullOrUndefined(object_o)) {\n // return false\n // } else {\n // return Object.prototype.toString.call(object_o).trim() === '[object Function]'\n // }\n // // if (typeof object_o === 'function') {\n // // return true;\n // // }else {\n // // return false;\n // // }\n // }\n\n export const isObject = (object_o: any): boolean => {\n if (ValidUtils.isNullOrUndefined(object_o)) {\n return false\n } else {\n return Object.prototype.toString.call(object_o).trim() === '[object Object]'\n }\n }\n\n export const isMap = (object_o: any): boolean => {\n if (ValidUtils.isNullOrUndefined(object_o)) {\n return false\n } else {\n return Object.prototype.toString.call(object_o).trim() === '[object Map]'\n }\n }\n\n\n export const isEmpty = (object_o: any): boolean => {\n if (ValidUtils.isNullOrUndefined(object_o)) {\n return true;\n } else if (ValidUtils.isArray(object_o)) {\n return object_o.length === 0;\n } else if (ValidUtils.isString(object_o)) {\n return object_o.trim().length === 0;\n } else if (ValidUtils.isMap(object_o)) {\n return object_o.size === 0;\n } else if (ValidUtils.isObject(object_o)) {\n return Object.keys(object_o).length === 0;\n } else {\n return false;\n }\n };\n\n\n export const isSet = <T = any>(data: any): data is Set<T> => {\n return data instanceof Set;\n };\n\n export const isNullishFiltered = <T>(value: unknown): value is FilterNullish<T> => {\n if (Array.isArray(value)) {\n return value.every(it => it !== undefined && it !== null);\n }\n return value !== undefined && value !== null;\n };\n\n export const isFalsyFiltered = <T>(value: unknown): value is FilterFalsy<T> => {\n if (Array.isArray(value)) {\n return value.every(it => {\n return it;\n });\n }\n return !!value;\n };\n\n export const includeValue = (obj: object, value: any): boolean => {\n return Object.values(obj).includes(value);\n };\n export const includeKey = (obj: object, key: string): boolean => {\n return Object.keys(obj).includes(key);\n };\n\n /** \uC885\uC131\uC774 \uC788\uB294\uC9C0 \uD655\uC778\uD558\uB294 \uD568\uC218 */\n export const lastConsonantLetter = (value: string): boolean => {\n const lastLetter = value.charCodeAt(value.length - 1);\n return (lastLetter - 0xac00) % 28 > 0;\n };\n\n export const inRange = (value: number, min: number, max: number) => {\n return min <= value && value <= max;\n };\n\n export const isBase64 = (inputString: string) => {\n // data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAA\n // const isValidBase64 = /^([A-Za-z0-9+/]{4})*([A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/;\n // return isValidBase64.test(base64String);\n\n let base64Data = inputString;\n\n // Data URL \uC811\uB450\uC0AC \uC81C\uAC70 (\uC608: \"data:image/png;base64,\")\n const parts = inputString.split(';base64,');\n if (parts.length > 1) {\n base64Data = parts[1];\n } else {\n // \"data:\"\uB9CC \uC788\uACE0 \";base64,\"\uAC00 \uC5C6\uB294 \uACBD\uC6B0\uB3C4 \uACE0\uB824 (\uC5C4\uBC00\uD788\uB294 base64\uAC00 \uC544\uB2D0 \uC218 \uC788\uC74C)\n if (inputString.startsWith('data:')) {\n // \uC774 \uACBD\uC6B0\uB294 \uC720\uD6A8\uD55C base64\uB85C \uAC04\uC8FC\uD560\uC9C0 \uC815\uCC45\uC5D0 \uB530\uB77C \uB2E4\uB984\n // \uC5EC\uAE30\uC11C\uB294 \uC77C\uB2E8 base64 \uBD80\uBD84\uC774 \uC5C6\uB2E4\uACE0 \uAC00\uC815\uD558\uACE0 false \uCC98\uB9AC\n // return false;\n // \uB610\uB294 \uC811\uB450\uC0AC\uB9CC \uC81C\uAC70\uD558\uACE0 \uB0A8\uC740 \uBD80\uBD84\uC744 \uD14C\uC2A4\uD2B8\uD560 \uC218\uB3C4 \uC788\uC74C\n const commaIndex = inputString.indexOf(',');\n if (commaIndex > -1) {\n base64Data = inputString.substring(commaIndex + 1);\n } else {\n // \uC21C\uC218 base64\uAC00 \uC544\uB2D0 \uAC00\uB2A5\uC131 \uB192\uC74C\n // return false;\n }\n }\n }\n\n\n // Base64 \uC720\uD6A8\uC131 \uAC80\uC0AC \uC815\uADDC\uC2DD\n // - \uBB38\uC790\uC5F4 \uAE38\uC774\uB294 4\uC758 \uBC30\uC218\uC5EC\uC57C \uD568 (\uD328\uB529 \uC81C\uC678)\n // - \uD328\uB529 '='\uB294 \uCD5C\uB300 2\uAC1C\uAE4C\uC9C0 \uBB38\uC790\uC5F4 \uB05D\uC5D0\uB9CC \uC62C \uC218 \uC788\uC74C\n // - \uD328\uB529\uC774 1\uAC1C\uC77C \uACBD\uC6B0, \uADF8 \uC55E \uBB38\uC790\uB294 [A-Za-z0-9+/]\n // - \uD328\uB529\uC774 2\uAC1C\uC77C \uACBD\uC6B0, \uADF8 \uC55E \uB450 \uBB38\uC790\uB294 [A-Za-z0-9+/]\n // \uC870\uAE08 \uB354 \uC5C4\uACA9\uD558\uACE0 \uD6A8\uC728\uC801\uC778 \uC815\uADDC\uC2DD:\n const base64Regex = /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/;\n\n // \uCD94\uAC00\uC801\uC73C\uB85C, \uC2E4\uC81C base64 \uBB38\uC790\uC5F4\uC740 \uD328\uB529\uC744 \uC81C\uC678\uD55C \uAE38\uC774\uAC00 4\uC758 \uBC30\uC218\uC5EC\uC57C \uD569\uB2C8\uB2E4.\n // \uC815\uADDC\uC2DD\uB9CC\uC73C\uB85C\uB294 \uC774 \uBD80\uBD84\uC744 \uC644\uBCBD\uD788 \uCEE4\uBC84\uD558\uAE30 \uC5B4\uB824\uC6B8 \uC218 \uC788\uC5B4, \uAE38\uC774 \uCCB4\uD06C\uB97C \uCD94\uAC00\uD558\uB294 \uAC83\uC774 \uC88B\uC2B5\uB2C8\uB2E4.\n // \uD558\uC9C0\uB9CC \uD604\uC7AC \uC81C\uACF5\uB41C \uC815\uADDC\uC2DD\uC740 \uC774 \uBD80\uBD84\uC744 \uC5B4\uB290 \uC815\uB3C4 \uACE0\uB824\uD558\uACE0 \uC788\uC2B5\uB2C8\uB2E4.\n // (([A-Za-z0-9+/]{4})* \uBD80\uBD84\uACFC \uD328\uB529 \uBD80\uBD84)\n\n if (base64Data === '' || base64Data.length % 4 !== 0) {\n // \uBE48 \uBB38\uC790\uC5F4\uC774\uAC70\uB098, \uAE38\uC774\uAC00 4\uC758 \uBC30\uC218\uAC00 \uC544\uB2C8\uBA74 (\uC77C\uBC18\uC801\uC73C\uB85C) \uC720\uD6A8\uD55C base64\uAC00 \uC544\uB2D8.\n // (\uB2E8, \uC77C\uBD80 \uB77C\uC774\uBE0C\uB7EC\uB9AC\uB294 \uD328\uB529\uC774 \uC5C6\uB294 base64\uB3C4 \uD5C8\uC6A9\uD558\uBBC0\uB85C, \uC5C4\uACA9\uD55C \uAE30\uC900\uC5D0 \uB530\uB77C \uB2E4\uB984)\n // \uD604\uC7AC \uC815\uADDC\uC2DD\uC740 \uD328\uB529\uC774 \uC62C\uBC14\uB974\uAC8C \uC801\uC6A9\uB41C \uACBD\uC6B0 \uAE38\uC774\uAC00 4\uC758 \uBC30\uC218\uAC00 \uC544\uB2CC \uACBD\uC6B0\uB3C4 \uD1B5\uACFC\uC2DC\uD0AC \uC218 \uC788\uC74C\n // \uC608: \"QQ\" (\uAE38\uC774 2) -> false, \"QQQ\" (\uAE38\uC774 3) -> false\n // \"QQ==\" (\uAE38\uC774 4) -> true, \"QQQ=\" (\uAE38\uC774 4) -> true\n // \"QQQ\"\uB294 `base64Regex.test(\"QQQ\")`\uB294 false\uC774\uC9C0\uB9CC, `Buffer.from(\"QQQ\", \"base64\").toString(\"base64\")`\uB294 \"QQ==\"\uB97C \uBC18\uD658.\n // \uC5C4\uBC00\uD558\uAC8C\uB294 \uB514\uCF54\uB529 \uC2DC\uB3C4 \uD6C4 \uB2E4\uC2DC \uC778\uCF54\uB529\uD574\uC11C \uC6D0\uBCF8\uACFC \uAC19\uC740\uC9C0 \uBE44\uAD50\uD558\uB294 \uAC83\uC774 \uAC00\uC7A5 \uD655\uC2E4\uD558\uC9C0\uB9CC, \uC131\uB2A5 \uC774\uC288\uAC00 \uC788\uC744 \uC218 \uC788\uC74C.\n }\n\n\n return base64Regex.test(base64Data);\n }\n}\n", "export namespace ArrayUtils {\n export type PickChanceType<T> = { data: T, chance: number };\n // export const uniqueBy = <T>(array: T[], predicate: (a: T, b: T) => boolean): T[] => {\n // return array.filter((item, index, self) =>\n // index === self.findIndex((other) => predicate(item, other))\n // );\n // };\n export const create2DArray = <T>(rows: number, cols: number, initialValue: T | ((row: number, cols: number) => T)): T[][] => {\n const array: T[][] = [];\n for (let row = 0; row < rows; row++) {\n const rowArray: T[] = [];\n for (let col = 0; col < cols; col++) {\n if (typeof initialValue === 'function') {\n rowArray.push((initialValue as (row: number, col: number) => T)(row, col));\n } else {\n rowArray.push(initialValue as T);\n }\n }\n array.push(rowArray);\n }\n return array;\n\n }\n export const toShuffle = <T>(data: T[]): T[] => {\n const array = [...data];\n for (let i = array.length - 1; i > 0; i--) {\n const j = Math.floor(Math.random() * (i + 1));\n [array[i], array[j]] = [array[j], array[i]];\n }\n return array;\n };\n\n // export function maxLength<T>(array: T[]): number;\n // export function maxLength<T>(array: T[][]): { maxRows: number; maxCols: number };\n // export function maxLength<T>(array: T[][][] ): { maxRows: number; maxCols: number };\n // export function maxLength <T>(array: T[] | T[][] | T[][][] ): { maxRows: number; maxCols: number } | number {\n // if (Array.isArray(array[0])) {\n // return { maxRows: array.length, maxCols: Math.max(...array.map(row => row.length), 0) };\n // } else {\n // return array.length;\n // }\n // }\n\n // export type Space = { x: number, y: number, w: number, h: number };\n // export const pickRandomSpace = (array: Space[], where: { w: number, h: number }): { x: number, y: number } | undefined => {\n // const minmax = ConvertUtils.minMaxCenterAvg(array ?? [])\n // // 2\uCC28 \uBC30\uC5F4\uB85C \uBCC0\uD658, \uACB9\uCE58\uB294 \uC601\uC5ED\uC774 \uC788\uC73C\uBA74 3\uCC28 \uBC30\uC5F4\uB85C \uCD94\uAC00\n // const cellSizes2D: Space[][][] = Array.from({length: minmax.y?.max ?? 0}, () =>\n // Array.from({length: minmax.x?.max ?? 0}, () => [])\n // );\n //\n // array.forEach(it => {\n // cellSizes2D[it.y] = cellSizes2D[it.y] || [];\n // if (!cellSizes2D[it.y][it.x]) {\n // // @ts-ignore\n // cellSizes2D[it.y][it.x] = it;\n // } else {\n // // \uC774\uBBF8 \uAC12\uC774 \uC788\uC73C\uBA74 3\uCC28 \uBC30\uC5F4\uB85C \uACB9\uCE58\uB294 \uAC12 \uCD94\uAC00\n // if (!Array.isArray(cellSizes2D[it.y][it.x])) {\n // // @ts-ignore\n // cellSizes2D[it.y][it.x] = [cellSizes2D[it.y][it.x]];\n // }\n // (cellSizes2D[it.y][it.x]).push(it);\n // }\n // });\n // const cellSizes = cellSizes2D.flatMap((it, y) => it.map((it, x) => {\n // const minmax = ConvertUtils.minMaxCenterAvg(Array.isArray(it) ? it : [it])\n // return {\n // x: x,\n // y: y,\n // w: minmax.w?.max ?? 0,\n // h: minmax.h?.max ?? 0,\n // overlay: 0,\n // }\n // }));\n //\n // // const cellSizes = array.map(it=> ({...it, overlay: 0}));\n //\n //\n // cellSizes.filter(it => it.w > 0 && it.h > 0).forEach(it => {\n // const wantW = it.w - 1; // \uC790\uAE30\uC790\uC2E0\uD3EC\uD568\uD574\uC11Cw\uB2C8\uAE50 -1\n // const wantH = it.h - 1;\n // const finds = cellSizes.filter(cit =>\n // (cit.x <= (it.x + wantW)) && (cit.x >= it.x) &&\n // (cit.y <= (it.y + wantH)) && (cit.y >= it.y)\n // );\n // finds.forEach(it => it.overlay++);\n // })\n //\n // const wantW = where.w - 1;\n // const wantH = where.h - 1; // \uC790\uAE30\uC790\uC2E0 \uD3EC\uD568\uBD80\uD130\uB2C8\uAE50 -1 \uD574\uC900\uB2E4\n // const targetCells = cellSizes.filter(it => it.overlay <= 0)\n // const targetCellsEmpty: { x: number, y: number }[] = [];\n // for (let targetCell of targetCells) {\n // const filter = cellSizes.filter(it =>\n // (it.x <= (targetCell.x + wantW)) && (it.x >= targetCell.x) &&\n // (it.y <= (targetCell.y + wantH)) && (it.y >= targetCell.y)\n // );\n // const overlaySum = MathUtil.sum(filter.map(it => it.overlay ?? 0));\n // // console.log('------>!!!!',filter.length, targetCell,where.w, where.h, (where.w * where.h), overlaySum)\n // if (filter.length === where.w * where.h && overlaySum === 0) {\n // targetCellsEmpty.push(targetCell);\n // }\n // }\n // return ArrayUtils.pick(targetCellsEmpty);\n // }\n\n\n export const popPick = <T>(array: T[]): T => {\n const index = Math.floor(Math.random() * array.length);\n return array.splice(index, 1)[0];\n }\n\n export const chancePick = <T>(array: PickChanceType<T>[], config?: {}): T => {\n const totalChance = array.reduce((sum, item) => sum + item.chance, 0);\n let randomValue = Math.random() * totalChance;\n\n for (const item of array) {\n if (randomValue < item.chance) {\n return item.data;\n }\n randomValue -= item.chance;\n }\n return pick(array.map(it => it.data))\n }\n\n export function pick<T>(array: T[], count: number): T[];\n export function pick<T>(array: T[]): T | undefined;\n export function pick<T>(array: T[][]): T[] | undefined;\n export function pick<T>(array: T[], count?: number): T[] | T | undefined {\n if (array.length === 0 && count !== undefined) {\n return [];\n }\n\n if (count === undefined) {\n return array[Math.floor(Math.random() * array.length)];\n }\n\n const result: T[] = [];\n const usedIndices = new Set<number>();\n while (result.length < count && usedIndices.size < array.length) {\n const randomIndex = Math.floor(Math.random() * array.length);\n if (!usedIndices.has(randomIndex)) {\n result.push(array[randomIndex]);\n usedIndices.add(randomIndex);\n }\n }\n return result;\n }\n\n export function maxLength<T>(array?: T[][]): { maxRows: number; maxCols: number, maxRowsCols: number, total: number; } {\n if (!array) {\n return {maxRows: 0, maxCols: 0, maxRowsCols: 0, total: 0};\n }\n const maxRows = array.length;\n const maxCols = Math.max(...array.map(row => row.length), 0);\n return {\n maxRows: maxRows,\n maxCols: maxCols,\n maxRowsCols: Math.max(maxCols, maxRows),\n total: array.reduce((total, row) => total + row.length, 0)\n }\n }\n\n // export const include = <T>(array:T[] | null = []) => {\n //\n // }\n export const toPush = <T>(array: T[] | null = [], ...data: T[]) => {\n return [...(array ?? []), ...data];\n }\n\n export const toRemove = <T>(array: T[] | null = [], ...data: T[]) => {\n return (array ?? []).filter(item => !data.includes(item));\n }\n\n export const toFilterOut = <T>(array: T[] | null = [], predicate: (item: T) => boolean): T[] => {\n return (array ?? []).filter(item => !predicate(item));\n }\n\n export const toFilter = <T>(array: T[] | null = [], predicate: (item: T) => boolean): T[] => {\n return (array ?? []).filter(item => predicate(item));\n }\n\n export const hasAll = <T>(array: T[] | null = [], ...targetArray: T[]): boolean => {\n return targetArray.every(item => (array ?? []).includes(item));\n }\n\n export const has = <T>(array: T[] | null = [], ...targetArray: T[]): boolean => {\n return targetArray.some(item => (array ?? []).includes(item));\n }\n\n export const hasNot = <T>(array: T[] | null = [], ...targetArray: T[]): boolean => {\n return targetArray.some(item => !(array ?? []).includes(item));\n }\n\n export const hasAllNot = <T>(array: T[] | null = [], ...targetArray: T[]): boolean => {\n return targetArray.every(item => !(array ?? []).includes(item));\n }\n\n// \uC5EC\uB7EC \uBC30\uC5F4\uC758 \uAD50\uC9D1\uD569, \uD569\uC9D1\uD569, \uCC28\uC9D1\uD569, \uB300\uCE6D \uCC28\uC9D1\uD569\uC744 \uACC4\uC0B0\uD558\uB294 \uD568\uC218\n export const relation = <T>(...arrays: T[][]): {\n intersection: T[];\n union: T[];\n difference: T[];\n symmetricDifference: T[];\n } => {\n // \uBC30\uC5F4\uC774 \uC5C6\uAC70\uB098 \uBE48 \uACBD\uC6B0 \uCC98\uB9AC\n if (arrays.length === 0) {\n return {\n intersection: [],\n union: [],\n difference: [],\n symmetricDifference: []\n };\n }\n\n // \uBC30\uC5F4\uC744 Set \uBC30\uC5F4\uB85C \uBCC0\uD658 (\uC911\uBCF5 \uC81C\uAC70)\n const sets = arrays.map((arr) => new Set<T>(arr));\n\n // \uAD50\uC9D1\uD569: \uBAA8\uB4E0 \uBC30\uC5F4\uC5D0 \uACF5\uD1B5\uC73C\uB85C \uC874\uC7AC\uD558\uB294 \uC694\uC18C\n // @ts-ignore\n const intersection = [...sets[0]].filter((item) =>\n sets.every((set) => set.has(item))\n );\n // const intersection = [...sets.reduce((acc, set) =>\n // new Set([...acc].filter((item) => set.has(item)))\n // )];\n\n\n // \uD569\uC9D1\uD569: \uBAA8\uB4E0 \uBC30\uC5F4\uC758 \uC694\uC18C\uB97C \uD569\uCE5C \uD6C4 \uC911\uBCF5 \uC81C\uAC70\n // @ts-ignore\n const union = [...new Set(arrays.flat())];\n\n // \uCC28\uC9D1\uD569: \uCCAB \uBC88\uC9F8 \uBC30\uC5F4\uC5D0\uC11C \uB098\uBA38\uC9C0 \uBC30\uC5F4\uC5D0 \uC5C6\uB294 \uC694\uC18C\n // @ts-ignore\n const difference = [...sets[0]].filter((item) =>\n sets.slice(1).every((set) => !set.has(item))\n );\n\n // \uB300\uCE6D \uCC28\uC9D1\uD569: \uAC01 \uBC30\uC5F4\uC5D0\uC11C \uB2E4\uB978 \uBC30\uC5F4\uC5D0 \uC5C6\uB294 \uC694\uC18C\uB4E4\uC758 \uD569\uC9D1\uD569\n const allUniqueElements = new Set<T>();\n for (let i = 0; i < sets.length; i++) {\n const currentSet = sets[i];\n const otherSetsUnion = new Set<T>(\n arrays\n .filter((_, index) => index !== i)\n .flat()\n );\n // @ts-ignore\n const uniqueToCurrent = [...currentSet].filter(\n (item) => !otherSetsUnion.has(item)\n );\n uniqueToCurrent.forEach((item) => allUniqueElements.add(item));\n }\n // @ts-ignore\n const symmetricDifference = [...allUniqueElements];\n\n return {\n intersection,\n union,\n difference,\n symmetricDifference\n };\n };\n}", "export type WithRequiredProperty<Type, Key extends keyof Type> = Type & {\n [Property in Key]-?: Type[Property];\n};\nexport type OptionalType<T, K extends keyof T> = Pick<Partial<T>, K> & Omit<T, K>;\nexport type KeysWithValsOfType<T, V> = keyof { [P in keyof T as T[P] extends V ? P : never]: P };\nexport type PropType<T> = {\n [P in keyof T]: T[P];\n};\nexport type ArrayElementType<T> = T extends (infer U)[] ? U : never;\nexport type PickMix<T, M, K extends keyof T> = {\n [P in K]: T[P] & M;\n};\nexport type PickArrayElementMix<T, M, K extends keyof T> = {\n [P in K]: (ArrayElementType<T[P]> & M)[];\n};\nexport type ChangeArrayElement<T, M> = T extends (infer U)[] ? M[] : never;\nexport type ChangeArrayElementMix<T, M> = T extends (infer U)[] ? (U & M)[] : never;\nexport type ChangePickArrayElementMix<T, M, K extends keyof T> = Omit<T, K> & PickArrayElementMix<T, M, K>;\n\n// InstanceType\nexport interface ConstructorType<T> {\n new (...args: any[]): T;\n}\nexport type Method = (...args: any[]) => any; // Function\nexport type MethodKeys<T> = { [K in keyof T]: T[K] extends Function ? K : never }[keyof T];\nexport type NonMethodKeys<T> = { [K in keyof T]: T[K] extends Function ? never : K }[keyof T];\nexport type GenericClassDecorator<T> = (target: T) => void;\n// declare type ClassDecorator = <TFunction extends Function>(target: TFunction) => TFunction | void;\n// export type ReflectField = PropertyDecorator\n// export type ReflectMethod = MethodDecorator\nexport type MethodParameter = (target: Object, propertyKey: string | symbol, parameterIndex: number) => void;\n\ntype Reverse<TupleType extends any[], ReversedTupleType extends any[] = []> = {\n 0: ReversedTupleType;\n 1: TupleType extends [infer Head, ...infer Tail] ? Reverse<Tail, [Head, ...ReversedTupleType]> : never;\n}[TupleType extends [] ? 0 : 1];\n\n//\ntype UnionToIntersection<U> = (U extends unknown ? (arg: U) => 0 : never) extends (arg: infer I) => 0 ? I : never;\n\n/**\n * LastInUnion<1 | 2> = 2.\n */\ntype LastInUnion<U> =\n UnionToIntersection<U extends unknown ? (x: U) => 0 : never> extends (x: infer L) => 0 ? L : never;\n\n/**\n * UnionToTuple<1 | 2> = [1, 2].\n */\nexport type UnionToTuple<U, Last = LastInUnion<U>> = [U] extends [never]\n ? []\n : [...UnionToTuple<Exclude<U, Last>>, Last];\n\nexport type FilterUndefined<T extends unknown[]> = T extends []\n ? []\n : T extends [infer H, ...infer R]\n ? H extends undefined\n ? FilterUndefined<R>\n : [H, ...FilterUndefined<R>]\n : T;\n\nexport type FilterNever<T extends unknown[]> = T extends []\n ? []\n : T extends [infer H, ...infer R]\n ? H extends never\n ? FilterUndefined<R>\n : [H, ...FilterUndefined<R>]\n : T;\n\nexport type Mutable<T> = {\n -readonly [P in keyof T]: T[P];\n};\nexport type ExtractNotNullish<T> = T extends null | undefined ? never : T;\nexport type FilterNullish<T> = T extends [infer E, ...infer Rest]\n ? [ExtractNotNullish<E>, ...FilterNullish<Rest>]\n : T extends (infer E)[]\n ? ExtractNotNullish<E>[]\n : ExtractNotNullish<T>;\n\nexport type ExtractNotFalsy<T> = T extends false ? never : T;\nexport type FilterFalsy<T> = T extends [infer E, ...infer Rest]\n ? [ExtractNotFalsy<E>, ...FilterFalsy<Rest>]\n : T extends (infer E)[]\n ? ExtractNotFalsy<E>[]\n : ExtractNotFalsy<T>;\nexport type FieldType<T, F> = Record<keyof T, F>;\nexport type FieldUnionType<T, F> = {\n [P in keyof T]: T[P] | F;\n};\nexport type FieldReplaceType<T, F extends keyof T, R> = Omit<T, F> & {\n [P in F]: R;\n};\nexport type FieldPartialType<T, F extends keyof T> = Omit<T, F> & {\n [P in F]?: T[P];\n};\nexport type FieldRequiredType<T, F extends keyof T> = Omit<T, F> & {\n [P in F]-?: T[P];\n};\nexport type FieldReadonlyType<T, F extends keyof T> = Omit<T, F> & {\n readonly [P in F]: T[P];\n};\nexport type FieldMutableType<T, F extends keyof T> = Omit<T, F> & {\n -readonly [P in F]: T[P];\n};\n\n\n\nexport type Dictionary<T = any> = Record<string | number, T>;\ntype GetKeys<T> = T extends unknown[]\n ? T extends [] // special case empty tuple => no keys\n ? never\n : '0' extends keyof T // any tuple with at least one element\n ? Exclude<keyof T, keyof []>\n : number // other array\n : keyof T; // not an array\nexport type Stringify<T> = T extends string | number ? `${T}` : never;\nexport type FlattenObjectKeys<T extends Dictionary | any[]> =\n Stringify<GetKeys<T>> extends infer StringKey extends string | number\n ? [StringKey] extends [never]\n ? never\n : StringKey extends keyof T\n ? T[StringKey] extends Dictionary | any[]\n ?\n | StringKey\n | `${StringKey}.${FlattenObjectKeys<T[StringKey]>}`\n | `${StringKey}[${keyof T[StringKey] & number}]`\n | `${StringKey}[${keyof T[StringKey] & number}].${FlattenObjectKeys<T[StringKey][number]>}`\n : StringKey\n : never\n : never;\n\ntype GetType<T, K> = K extends keyof T ? T[K] : K extends `${number}` ? (T extends any[] ? T[number] : never) : never;\nexport type FlattenObjectType<T, Path = Stringify<keyof T>> =\n Stringify<keyof T> extends infer StringKey extends string | number\n ? [StringKey] extends [never]\n ? never\n : Path extends `${infer FirstKey}[${infer Index}].${infer Rest}`\n ? FlattenObjectType<GetType<GetType<T, FirstKey>, Index>, Rest>\n : Path extends `${infer FirstKey}.${infer Rest}`\n ? FlattenObjectType<GetType<T, FirstKey>, Rest>\n : Path extends `${infer FirstKey}[${infer Rest}]`\n ? FlattenObjectType<GetType<T, FirstKey>, Rest>\n : GetType<T, Path>\n : never;\n\nexport type FlattenObject<T extends Dictionary> = {\n [FlattenKey in FlattenObjectKeys<T>]: FlattenObjectType<T, FlattenKey>;\n};\n\nexport type FilterTuple<T extends any[]> = '0' extends keyof T ? never : T;\n\nexport type MaybeArray<T> = T | T[];\nexport type With<T extends MaybeArray<Dictionary>, V extends Dictionary> = T extends (infer U)[] ? Array<U & V> : T & V;\n\nexport type Nullable<T> = T | null;\nexport type Nullish<T> = Nullable<T> | undefined;\nexport type NullableObject<T> = {\n [P in keyof T]: Nullable<T[P]>;\n};\nexport type NullableProperty<T, K extends keyof T> = {\n [P in K]: Nullable<T[P]>;\n};\nexport type NullOrUndefined<T> = null | undefined;\nexport type NotNullOrUndefined<T> = T extends null | undefined ? never : T;\nexport type NonNullable<T> = T extends null | undefined ? never : T;\nexport type NonNullableObject<T> = {\n [P in keyof T]-?: NonNullable<T[P]>;\n};\nexport type NonNullableProperty<T, K extends keyof T> = {\n [P in K]-?: NonNullable<T[P]>;\n};\n\nexport type GroupBy<T extends Dictionary, K extends keyof T> = {\n [P in T[K]]: T[];\n};\n\nexport type InferPromise<T> = T extends Promise<infer U> ? U : never;\n\nexport type JoinKeys<T> = {\n [K in keyof T]: K extends string ? `${K}` | `${K}-${JoinKeys<T[K]>}` : never;\n}[keyof T];\n\nexport type FilteredFirstKeys<T, FIRST extends string> = {\n [K in keyof T as K extends `${FIRST}${string}` ? K : never]: T[K];\n};\nexport type ExcludeFilteredFirstKeys<T, FIRST extends string> = {\n [K in keyof T as K extends `${FIRST}${string}` ? never : K]: T[K];\n};\n\nexport type GetDotPath<T, P extends string> = P extends `${infer K}.${infer R}`\n ? K extends keyof T\n ? GetDotPath<T[K], R>\n : never\n : P extends keyof T\n ? T[P]\n : P extends string\n ? T\n : never;\n\nexport type FlatJoinKey<T, J = '.'> = {\n [P in keyof T as T[P] extends object\n ? // @ts-ignore\n `${P}${J}${keyof FlatJoinDotKey<T[P]>}` | `${P}`\n : // @ts-ignore\n `${P}`]: unknown;\n};\nexport type FlatJoinDotKey<T> = {\n [P in keyof T as T[P] extends object\n ? // @ts-ignore\n `${P}.${keyof FlatJoinDotKey<T[P]>}` | `${P}`\n : // @ts-ignore\n `${P}`]: unknown;\n};\nexport type FlatJoinDotKeyType<T> = keyof FlatJoinDotKey<T>;\nexport type FlatJoinKeyType<T, J> = keyof FlatJoinKey<T, J>;\nexport type FlatJoinDotKeyFieldType<T, D> = FieldType<FlatJoinDotKey<T>,D>;\nexport type FlatJoinDotKeyTypePartial<T, D> = Partial<FieldType<FlatJoinDotKey<T>,D>>;\nexport type FlatJoinDotKeyExcludeStartWithUnderBar<T> = {\n [P in keyof T as T[P] extends any\n ? // @ts-ignore\n P extends `_${string}`\n ? never\n : // @ts-ignore\n `${P}.${keyof FlatJoinDotKeyExcludeStartWithUnderBar<T[P]>}` | `${P}`\n : // @ts-ignore\n `${P}`]: unknown;\n};\nexport type FlatJoinSlashKey<T> = {\n [P in keyof T as T[P] extends object\n ? // @ts-ignore\n `${P}/${keyof FlatJoinDotKey<T[P]>}` | `${P}`\n : // @ts-ignore\n `${P}`]: unknown;\n};\nexport type FlatJoinSlashKeyExcludeStartWithUnderBar<T> = {\n [P in keyof T as T[P] extends any\n ? // @ts-ignore\n P extends `_${string}`\n ? never\n : // @ts-ignore\n `${P}/${keyof FlatJoinSlashKeyExcludeStartWithUnderBar<T[P]>}` | `${P}`\n : // @ts-ignore\n `${P}`]: unknown;\n};\nexport type FlatJoinKeyExcludeStartWith<T, J extends string, E extends string> = {\n [P in keyof T as T[P] extends any\n ? // @ts-ignore\n P extends `${E}${string}`\n ? never\n : // @ts-ignore\n `${P}${J}${keyof FlatJoinSlashKeyExcludeStartWithUnderBar<T[P]>}` | `${P}`\n : // @ts-ignore\n `${P}`]: unknown;\n};\n\n\n// https://amit08255.medium.com/the-most-mind-blowing-thing-ive-learned-in-typescript-930926ce848a\nexport type ParseRoute<T extends string> = T extends `/${infer Segment}/${infer Rest}`\n ? Segment extends `:${infer Param}`\n ? { [K in Param]: string } & ParseRoute<`/${Rest}`>\n : ParseRoute<`/${Rest}`>\n : T extends `/:${infer Param}`\n ? { [K in Param]: string }\n : {}\n// type UserRoute = ParseRoute<'/users/:id/posts/:postId'>\n// type UserRoute = { id: string; postId: string }\n// const user:UserRoute = { id: '1', postId: '2' };\n\n\nexport type ParsePath<T extends string> = T extends `/${infer Segment}/${infer Rest}`\n ? [Segment, ...ParsePath<`/${Rest}`>]\n : T extends `/${infer Segment}`\n ? [Segment]\n : []\n// type ApiRoute = ParsePath<\"/api/users/123\"> // [\"api\", \"users\", \"123\"]\n// type InvalidRoute = ParsePath<\"missing-slash\"> // []\n\n\n\nexport type StringValue<T> = {\n [K in keyof T]: T[K] extends object ? StringValue<T[K]> : string;\n};\n\n\n// index\nexport interface ConstructorType<T> {\n new (...args: any[]): T;\n}\n\n// infer\uC640 \uC870\uAC74\uBD80 \uD0C0\uC785\uC73C\uB85C \uD749\uB0B4\uB0B4\uAE30\n// \uAC00\uB054 \"\uC0C1\uC704 \uD0C0\uC785\"\uC73C\uB85C \uC81C\uC57D\uC744 \uB450\uACE0 \uC2F6\uC744 \uB54C\uB294 \uC870\uAC74\uBD80 \uD0C0\uC785\uC744 \uC501\uB2C8\uB2E4:\n// let fn: Super<HttpResponseError<any>>;\n// fn \uC740 HttpResponseError<any> \uC758 \uC0C1\uC704 \uD0C0\uC785 \uD30C\uB77C\uBBF8\uD130\uB3C4 \uBC1B\uC744 \uC218 \uC788\uC74C\n// type Super<T> = T extends HttpResponseError<infer U> ? HttpResponseError<any> : never;\nexport type Super<T> = (arg: T) => void;\n\n// export type GenericClassDecorator<T> = (target: T) => void;\n// export type MethodParameter = (target: Object, propertyKey: string | symbol, parameterIndex: number) => void;\n// export type ExtractNotFalsy<T> = T extends false ? never : T;\n// export type FilterFalsy<T> = T extends [infer E, ...infer Rest]\n// ? [ExtractNotFalsy<E>, ...FilterFalsy<Rest>]\n// : T extends (infer E)[]\n// ? ExtractNotFalsy<E>[]\n// : ExtractNotFalsy<T>;\n//\n// export type Mutable<T> = {\n// -readonly [P in keyof T]: T[P];\n// };\n// NonNullable\nexport type MethodOnlyFieldPostFix<T, S extends string> = {\n [key in keyof T as `${string & key}${S}`]: T[key] extends (...args: any[]) => any ? T[key] : never;\n};\nexport type MethodOnlyFieldPerFix<T, S extends string> = {\n [key in keyof T as `${S}${string & key}`]: T[key] extends (...args: any[]) => any ? T[key] : never;\n};\n// export const isDefined = <T>(value: T | undefined | null): value is T => value !== undefined && value !== null;\n// export const isDefined = <T>(value: T | undefined | null): value is NonNullable<T> => value !== undefined && value !== null;\nexport const isDefined = <T>(value: T | undefined | null): value is T => value !== undefined && value !== null;\n/*\ndeclare type ClassDecorator = <TFunction extends Function>(target: TFunction) => TFunction | void;\ndeclare type PropertyDecorator = (target: Object, propertyKey: string | symbol) => void;\ndeclare type MethodDecorator = <T>(target: Object, propertyKey: string | symbol, descriptor: TypedPropertyDescriptor<T>) => TypedPropertyDescriptor<T> | void;\ndeclare type ParameterDecorator = (target: Object, propertyKey: string | symbol, parameterIndex: number) => void;\n */\n\ndeclare global {\n namespace Reflect {\n function metadata(metadataKey: any, target: Object, propertyKey?: string | symbol): any;\n function getMetadata(metadataKey: any, target: Object, propertyKey?: string | symbol): any;\n function defineMetadata(metadataKey: any, value: any, target: Object, propertyKey?: string | symbol): void;\n function getOwnMetadata(metadataKey: any, target: Object, propertyKey?: string | symbol): any;\n function getMetadataKeys(target: Object): any[];\n }\n}\nexport {};\n", "/**\n * ObjectPathParser - JavaScript \uACBD\uB85C \uD45C\uD604\uC2DD\uC744 \uD30C\uC2F1\uD558\uACE0 Optional Chaining\uC73C\uB85C \uBCC0\uD658\uD558\uB294 \uD30C\uC11C\n * \n * \uD2B8\uB9AC \uAD6C\uC870\uC758 \uD1A0\uD070\uC744 \uC0DD\uC131\uD558\uC5EC \uACC4\uCE35\uC801 \uD45C\uD604\uC2DD\uC744 \uC9C0\uC6D0\n * \n * \uC0AC\uC6A9\uBC95:\n * const parser = new ObjectPathParser('this.obj.func(a.b[0])');\n * const root = parser.getRoot();\n * root.children.forEach(child => console.log(child.type));\n */\n\n// --- Token Types ---\nexport enum TokenType {\n // Leaf tokens\n IDENTIFIER = 'identifier',\n STRING = 'string',\n NUMBER = 'number',\n TEMPLATE_LITERAL = 'template_literal',\n OPERATOR = 'operator',\n WHITESPACE = 'whitespace',\n \n // Structural tokens (can have children)\n MEMBER_EXPRESSION = 'member_expression',\n PROPERTY_ACCESS = 'property_access',\n BRACKET_ACCESS = 'bracket_access',\n FUNCTION_CALL = 'function_call',\n PARENTHESIZED = 'parenthesized',\n OBJECT_LITERAL = 'object_literal',\n ARRAY_LITERAL = 'array_literal',\n TERNARY = 'ternary',\n BINARY = 'binary',\n \n // Root\n ROOT = 'root',\n EOF = 'eof',\n}\n\n// --- Base Token Class ---\nexport class Token {\n public type: TokenType;\n public value: string;\n public start: number;\n public end: number;\n public parent: Token | null = null;\n public children: Token[] = [];\n public isOptional: boolean = false;\n // \uC5F0\uC0B0\uC790 \uC8FC\uBCC0 \uACF5\uBC31 \uBCF4\uC874\uC6A9\n public leftSpace: string = '';\n public rightSpace: string = '';\n\n constructor(type: TokenType, value: string, start: number, end: number) {\n this.type = type;\n this.value = value;\n this.start = start;\n this.end = end;\n }\n\n // --- Child management ---\n addChild(child: Token): this {\n child.parent = this;\n this.children.push(child);\n return this;\n }\n\n getChildren(): Token[] {\n return this.children;\n }\n\n hasChildren(): boolean {\n return this.children.length > 0;\n }\n\n getParent(): Token | null {\n return this.parent;\n }\n\n // --- Type checks ---\n isIdentifier(): boolean { return this.type === TokenType.IDENTIFIER; }\n isString(): boolean { return this.type === TokenType.STRING; }\n isNumber(): boolean { return this.type === TokenType.NUMBER; }\n isTemplateLiteral(): boolean { return this.type === TokenType.TEMPLATE_LITERAL; }\n isOperator(): boolean { return this.type === TokenType.OPERATOR; }\n isWhitespace(): boolean { return this.type === TokenType.WHITESPACE; }\n isMemberExpression(): boolean { return this.type === TokenType.MEMBER_EXPRESSION; }\n isPropertyAccess(): boolean { return this.type === TokenType.PROPERTY_ACCESS; }\n isBracketAccess(): boolean { return this.type === TokenType.BRACKET_ACCESS; }\n isFunctionCall(): boolean { return this.type === TokenType.FUNCTION_CALL; }\n isParenthesized(): boolean { return this.type === TokenType.PARENTHESIZED; }\n isObjectLiteral(): boolean { return this.type === TokenType.OBJECT_LITERAL; }\n isArrayLiteral(): boolean { return this.type === TokenType.ARRAY_LITERAL; }\n isTernary(): boolean { return this.type === TokenType.TERNARY; }\n isBinary(): boolean { return this.type === TokenType.BINARY; }\n isRoot(): boolean { return this.type === TokenType.ROOT; }\n isEOF(): boolean { return this.type === TokenType.EOF; }\n\n // --- Keyword check for identifiers ---\n isKeyword(): boolean {\n if (this.type !== TokenType.IDENTIFIER) return false;\n return ['true', 'false', 'null', 'undefined', 'this', 'window', 'document'].includes(this.value);\n }\n\n // --- Operator checks ---\n isLogicalOperator(): boolean {\n return this.type === TokenType.OPERATOR && (this.value === '||' || this.value === '&&');\n }\n\n isNullishOperator(): boolean {\n return this.type === TokenType.OPERATOR && this.value === '??';\n }\n\n isComparisonOperator(): boolean {\n return this.type === TokenType.OPERATOR && \n ['===', '!==', '==', '!=', '<', '>', '<=', '>='].includes(this.value);\n }\n\n isArithmeticOperator(): boolean {\n return this.type === TokenType.OPERATOR && ['+', '-', '*', '/', '%'].includes(this.value);\n }\n\n // --- Stringify ---\n stringify(): string {\n if (this.children.length === 0) {\n return this.value;\n }\n return this.children.map(c => c.stringify()).join('');\n }\n\n // --- Optional chain conversion ---\n toOptionalChain(isFirst: boolean = false): string {\n switch (this.type) {\n case TokenType.PROPERTY_ACCESS:\n return `?.${this.children.map(c => c.toOptionalChain()).join('')}`;\n \n case TokenType.BRACKET_ACCESS:\n // \uCCAB \uBC88\uC9F8 \uC694\uC18C\uC778 \uACBD\uC6B0 ?. \uCD94\uAC00\uD558\uC9C0 \uC54A\uC74C\n if (isFirst) {\n return `[${this.children.map(c => c.toOptionalChain()).join('')}]`;\n }\n return `?.[${this.children.map(c => c.toOptionalChain()).join('')}]`;\n \n case TokenType.FUNCTION_CALL:\n return `?.(${this.children.map(c => c.toOptionalChain()).join('')})`;\n \n case TokenType.MEMBER_EXPRESSION:\n if (this.children.length === 0) return this.value;\n let result = '';\n for (let i = 0; i < this.children.length; i++) {\n const child = this.children[i];\n // \uCCAB \uBC88\uC9F8 \uC790\uC2DD\uC5D0\uAC8C isFirst=true \uC804\uB2EC\n result += child.toOptionalChain(i === 0);\n }\n return result;\n\n case TokenType.PARENTHESIZED:\n // isOptional\uC774 \uC124\uC815\uB418\uC5B4 \uC788\uC73C\uBA74 ?. \uC811\uADFC\uC73C\uB85C \uCC98\uB9AC\n if (this.isOptional) {\n return `?.(${this.children.map(c => c.toOptionalChain()).join('')})`;\n }\n // \uBD80\uBAA8\uAC00 MEMBER_EXPRESSION\uC774\uACE0 \uCCAB \uBC88\uC9F8 \uC790\uC2DD\uC774 \uC544\uB2C8\uBA74 ?. \uCD94\uAC00\n if (this.parent?.type === TokenType.MEMBER_EXPRESSION && !isFirst) {\n return `?.(${this.children.map(c => c.toOptionalChain()).join('')})`;\n }\n return `(${this.children.map(c => c.toOptionalChain()).join('')})`;\n \n case TokenType.TERNARY:\n // children: [condition, trueBranch, falseBranch]\n if (this.children.length >= 3) {\n return `${this.children[0].toOptionalChain()} ? ${this.children[1].toOptionalChain()} : ${this.children[2].toOptionalChain()}`;\n }\n return this.stringify();\n \n case TokenType.BINARY:\n // children: [left, right], value contains operator\n if (this.children.length >= 2) {\n const op = this.value;\n // \uC6D0\uBCF8 \uACF5\uBC31 \uBCF4\uC874\n const leftSp = this.leftSpace;\n const rightSp = this.rightSpace;\n return `${this.children[0].toOptionalChain()}${leftSp}${op}${rightSp}${this.children[1].toOptionalChain()}`;\n }\n return this.stringify();\n \n case TokenType.ROOT:\n return this.children.map(c => c.toOptionalChain()).join('');\n \n case TokenType.OBJECT_LITERAL:\n case TokenType.ARRAY_LITERAL:\n case TokenType.STRING:\n case TokenType.NUMBER:\n case TokenType.TEMPLATE_LITERAL:\n return this.value;\n \n case TokenType.OPERATOR:\n // Unary operator with children (e.g., !expr)\n if (this.children.length > 0) {\n return `${this.value}${this.children.map(c => c.toOptionalChain()).join('')}`;\n }\n return this.value;\n \n default:\n return this.value;\n }\n }\n\n // --- Tree traversal ---\n walk(callback: (token: Token, depth: number) => void, depth: number = 0): void {\n callback(this, depth);\n for (const child of this.children) {\n child.walk(callback, depth + 1);\n }\n }\n\n find(predicate: (token: Token) => boolean): Token | null {\n if (predicate(this)) return this;\n for (const child of this.children) {\n const found = child.find(predicate);\n if (found) return found;\n }\n return null;\n }\n\n findAll(predicate: (token: Token) => boolean): Token[] {\n const results: Token[] = [];\n this.walk((token) => {\n if (predicate(token)) results.push(token);\n });\n return results;\n }\n}\n\n\n// --- ObjectPathParser Class ---\nexport class ObjectPathParser {\n private input: string;\n private pos: number = 0;\n private root: Token;\n\n constructor(input: string = '') {\n this.input = input;\n this.root = new Token(TokenType.ROOT, '', 0, input.length);\n if (input) {\n this.parse();\n }\n }\n\n // --- Getters ---\n getInput(): string {\n return this.input;\n }\n\n getRoot(): Token {\n return this.root;\n }\n\n getTokens(): Token[] {\n return this.root.children;\n }\n\n // --- Flat token list (for backward compatibility) ---\n getFlatTokens(): Token[] {\n const tokens: Token[] = [];\n this.root.walk((token) => {\n if (token.type !== TokenType.ROOT) {\n tokens.push(token);\n }\n });\n return tokens;\n }\n\n // --- Helper methods ---\n isFunctionScript(): boolean {\n return this.input.trim().startsWith('function');\n }\n\n isArrowFunctionScript(): boolean {\n return /^\\s*\\([^)]*\\)\\s*=>/.test(this.input);\n }\n\n isObjectLiteralInput(): boolean {\n const trimmed = this.input.trim();\n return trimmed.startsWith('{') && trimmed.endsWith('}');\n }\n\n\n // --- Tokenizer helpers ---\n private peek(offset: number = 0): string {\n return this.input[this.pos + offset] || '';\n }\n\n private advance(): string {\n return this.input[this.pos++] || '';\n }\n\n private isEOF(): boolean {\n return this.pos >= this.input.length;\n }\n\n private skipWhitespace(): void {\n while (!this.isEOF() && /\\s/.test(this.peek())) {\n this.advance();\n }\n }\n\n // --- Main parse method ---\n private parse(): void {\n this.pos = 0;\n this.root = new Token(TokenType.ROOT, '', 0, this.input.length);\n \n while (!this.isEOF()) {\n this.skipWhitespace();\n if (this.isEOF()) break;\n \n const token = this.parseExpression();\n if (token) {\n this.root.addChild(token);\n }\n }\n }\n\n private parseExpression(): Token | null {\n this.skipWhitespace();\n if (this.isEOF()) return null;\n\n // Check for ternary operator at top level\n const ternary = this.tryParseTernary();\n if (ternary) return ternary;\n\n // Check for binary operators\n const binary = this.tryParseBinary();\n if (binary) return binary;\n\n // Parse primary expression (member expression, literal, etc.)\n return this.parsePrimaryExpression();\n }\n\n\n private parsePrimaryExpression(): Token | null {\n this.skipWhitespace();\n if (this.isEOF()) return null;\n\n const start = this.pos;\n const char = this.peek();\n\n // String literal\n if (char === \"'\" || char === '\"') {\n return this.parseString(char);\n }\n\n // Template literal\n if (char === '`') {\n return this.parseTemplateLiteral();\n }\n\n // Object literal\n if (char === '{') {\n return this.parseObjectLiteral();\n }\n\n // Array literal or bracket access at start\n if (char === '[') {\n return this.parseArrayOrBracket();\n }\n\n // Parenthesized expression\n if (char === '(') {\n return this.parseParenthesized();\n }\n\n // Number\n if (/\\d/.test(char)) {\n return this.parseNumber();\n }\n\n // Identifier (start of member expression)\n if (/[a-zA-Z_$]/.test(char)) {\n return this.parseMemberExpression();\n }\n\n // Unary NOT operator (!)\n if (char === '!') {\n return this.parseUnaryNot();\n }\n\n // Operator\n if (this.isOperatorChar(char)) {\n return this.parseOperator();\n }\n\n // Unknown - skip\n this.advance();\n return null;\n }\n\n // Parse unary NOT operator (!expr)\n private parseUnaryNot(): Token {\n const start = this.pos;\n this.advance(); // consume !\n \n this.skipWhitespace();\n \n // Parse the expression after !\n const expr = this.parsePrimaryExpression();\n if (expr) {\n // Create a unary token that wraps the expression\n const unary = new Token(TokenType.OPERATOR, '!', start, this.pos);\n unary.addChild(expr);\n return unary;\n }\n \n return new Token(TokenType.OPERATOR, '!', start, this.pos);\n }\n\n\n private parseMemberExpression(): Token {\n const start = this.pos;\n const memberExpr = new Token(TokenType.MEMBER_EXPRESSION, '', start, start);\n\n // Parse the base identifier\n const identifier = this.parseIdentifier();\n memberExpr.addChild(identifier);\n\n // Parse chain of accesses\n while (!this.isEOF()) {\n const char = this.peek();\n\n // Optional chaining: ?.\n if (char === '?' && this.peek(1) === '.') {\n this.advance(); this.advance(); // consume ?.\n \n if (this.peek() === '[') {\n // ?.[\n const bracket = this.parseBracketAccess(true);\n memberExpr.addChild(bracket);\n } else if (this.peek() === '(') {\n // ?.(\n const funcCall = this.parseFunctionCall(true);\n memberExpr.addChild(funcCall);\n } else {\n // ?.property\n const prop = this.parsePropertyAccess(true);\n memberExpr.addChild(prop);\n }\n }\n // Regular dot access\n else if (char === '.') {\n this.advance(); // consume .\n // Check if next is parenthesis (e.g., a.(b).c)\n if (this.peek() === '(') {\n const paren = this.parseParenthesizedAccess(false);\n memberExpr.addChild(paren);\n } else {\n const prop = this.parsePropertyAccess(false);\n memberExpr.addChild(prop);\n }\n }\n // Bracket access\n else if (char === '[') {\n const bracket = this.parseBracketAccess(false);\n memberExpr.addChild(bracket);\n }\n // Function call\n else if (char === '(') {\n const funcCall = this.parseFunctionCall(false);\n memberExpr.addChild(funcCall);\n }\n else {\n break;\n }\n }\n\n memberExpr.end = this.pos;\n memberExpr.value = this.input.substring(start, this.pos);\n return memberExpr;\n }\n\n // \uAD04\uD638\uB85C \uAC10\uC2F8\uC9C4 \uC18D\uC131 \uC811\uADFC (e.g., a.(b).c)\n private parseParenthesizedAccess(isOptional: boolean): Token {\n const start = this.pos;\n this.advance(); // consume (\n \n const paren = new Token(TokenType.PARENTHESIZED, '', start, start);\n paren.isOptional = isOptional;\n \n let depth = 1;\n let content = '';\n \n while (!this.isEOF() && depth > 0) {\n const char = this.peek();\n if (char === '(') depth++;\n else if (char === ')') {\n depth--;\n if (depth === 0) break;\n }\n content += this.advance();\n }\n \n if (content.trim()) {\n const innerParser = new ObjectPathParser(content);\n for (const child of innerParser.getTokens()) {\n paren.addChild(child);\n }\n }\n \n if (this.peek() === ')') this.advance(); // consume )\n \n paren.end = this.pos;\n paren.value = this.input.substring(start, this.pos);\n return paren;\n }\n\n\n private parseIdentifier(): Token {\n const start = this.pos;\n let value = '';\n while (!this.isEOF() && /[a-zA-Z0-9_$]/.test(this.peek())) {\n value += this.advance();\n }\n return new Token(TokenType.IDENTIFIER, value, start, this.pos);\n }\n\n private parsePropertyAccess(isOptional: boolean): Token {\n const start = this.pos;\n const prop = new Token(TokenType.PROPERTY_ACCESS, '', start, start);\n prop.isOptional = isOptional;\n \n const identifier = this.parseIdentifier();\n prop.addChild(identifier);\n \n prop.end = this.pos;\n prop.value = this.input.substring(start, this.pos);\n return prop;\n }\n\n private parseBracketAccess(isOptional: boolean): Token {\n const start = this.pos;\n this.advance(); // consume [\n \n const bracket = new Token(TokenType.BRACKET_ACCESS, '', start, start);\n bracket.isOptional = isOptional;\n \n // Parse content inside brackets\n const contentStart = this.pos;\n let depth = 1;\n let content = '';\n \n while (!this.isEOF() && depth > 0) {\n const char = this.peek();\n if (char === '[') depth++;\n else if (char === ']') {\n depth--;\n if (depth === 0) break;\n }\n content += this.advance();\n }\n \n // Parse the content as expression\n if (content.trim()) {\n const innerParser = new ObjectPathParser(content);\n for (const child of innerParser.getTokens()) {\n bracket.addChild(child);\n }\n }\n \n if (this.peek() === ']') this.advance(); // consume ]\n \n bracket.end = this.pos;\n bracket.value = this.input.substring(start, this.pos);\n return bracket;\n }\n\n\n private parseFunctionCall(isOptional: boolean): Token {\n const start = this.pos;\n this.advance(); // consume (\n \n const funcCall = new Token(TokenType.FUNCTION_CALL, '', start, start);\n funcCall.isOptional = isOptional;\n \n // Parse arguments\n let depth = 1;\n let content = '';\n \n while (!this.isEOF() && depth > 0) {\n const char = this.peek();\n if (char === '(') depth++;\n else if (char === ')') {\n depth--;\n if (depth === 0) break;\n }\n content += this.advance();\n }\n \n // Parse arguments as expressions\n if (content.trim()) {\n const innerParser = new ObjectPathParser(content);\n for (const child of innerParser.getTokens()) {\n funcCall.addChild(child);\n }\n }\n \n if (this.peek() === ')') this.advance(); // consume )\n \n funcCall.end = this.pos;\n funcCall.value = this.input.substring(start, this.pos);\n return funcCall;\n }\n\n private parseParenthesized(): Token {\n const start = this.pos;\n this.advance(); // consume (\n \n const paren = new Token(TokenType.PARENTHESIZED, '', start, start);\n \n let depth = 1;\n let content = '';\n \n while (!this.isEOF() && depth > 0) {\n const char = this.peek();\n if (char === '(') depth++;\n else if (char === ')') {\n depth--;\n if (depth === 0) break;\n }\n content += this.advance();\n }\n \n if (content.trim()) {\n const innerParser = new ObjectPathParser(content);\n for (const child of innerParser.getTokens()) {\n paren.addChild(child);\n }\n }\n \n if (this.peek() === ')') this.advance(); // consume )\n \n paren.end = this.pos;\n paren.value = this.input.substring(start, this.pos);\n \n // Check if followed by member access (e.g., (expr).prop or (expr)[0] or (expr)?.prop)\n if (this.peek() === '.' || this.peek() === '[' || (this.peek() === '?' && this.peek(1) === '.')) {\n const memberExpr = new Token(TokenType.MEMBER_EXPRESSION, '', start, start);\n memberExpr.addChild(paren);\n \n while (!this.isEOF()) {\n const char = this.peek();\n // Optional chaining: ?.\n if (char === '?' && this.peek(1) === '.') {\n this.advance(); this.advance(); // consume ?.\n if (this.peek() === '[') {\n const bracket = this.parseBracketAccess(true);\n memberExpr.addChild(bracket);\n } else if (this.peek() === '(') {\n const funcCall = this.parseFunctionCall(true);\n memberExpr.addChild(funcCall);\n } else {\n const prop = this.parsePropertyAccess(true);\n memberExpr.addChild(prop);\n }\n } else if (char === '.') {\n this.advance(); // consume .\n if (this.peek() === '(') {\n const parenAccess = this.parseParenthesizedAccess(false);\n memberExpr.addChild(parenAccess);\n } else {\n const prop = this.parsePropertyAccess(false);\n memberExpr.addChild(prop);\n }\n } else if (char === '[') {\n const bracket = this.parseBracketAccess(false);\n memberExpr.addChild(bracket);\n } else {\n break;\n }\n }\n \n memberExpr.end = this.pos;\n memberExpr.value = this.input.substring(start, this.pos);\n return memberExpr;\n }\n \n return paren;\n }\n\n\n private parseString(quote: string): Token {\n const start = this.pos;\n let value = this.advance(); // opening quote\n \n while (!this.isEOF() && this.peek() !== quote) {\n if (this.peek() === '\\\\') {\n value += this.advance();\n if (!this.isEOF()) value += this.advance();\n } else {\n value += this.advance();\n }\n }\n \n if (!this.isEOF()) value += this.advance(); // closing quote\n \n return new Token(TokenType.STRING, value, start, this.pos);\n }\n\n private parseTemplateLiteral(): Token {\n const start = this.pos;\n let value = this.advance(); // opening `\n let depth = 0;\n \n while (!this.isEOF()) {\n const char = this.peek();\n \n if (char === '`' && depth === 0) {\n value += this.advance();\n break;\n }\n \n // Handle ${...} expressions - process them for optional chaining\n if (char === '$' && this.peek(1) === '{') {\n value += this.advance(); // $\n value += this.advance(); // {\n depth++;\n \n // Collect the expression inside ${...}\n let exprContent = '';\n let exprDepth = 1;\n while (!this.isEOF() && exprDepth > 0) {\n const c = this.peek();\n if (c === '{') exprDepth++;\n else if (c === '}') {\n exprDepth--;\n if (exprDepth === 0) break;\n }\n exprContent += this.advance();\n }\n \n // Process the expression for optional chaining\n if (exprContent.trim()) {\n const innerParser = new ObjectPathParser(exprContent);\n value += innerParser.toOptionalChainPath();\n }\n \n if (this.peek() === '}') {\n value += this.advance(); // }\n depth--;\n }\n continue;\n }\n \n if (char === '\\\\') {\n value += this.advance();\n if (!this.isEOF()) value += this.advance();\n } else {\n value += this.advance();\n }\n }\n \n return new Token(TokenType.TEMPLATE_LITERAL, value, start, this.pos);\n }\n\n private parseNumber(): Token {\n const start = this.pos;\n let value = '';\n while (!this.isEOF() && /[\\d.]/.test(this.peek())) {\n value += this.advance();\n }\n return new Token(TokenType.NUMBER, value, start, this.pos);\n }\n\n\n private parseObjectLiteral(): Token {\n const start = this.pos;\n this.advance(); // consume {\n \n let depth = 1;\n let content = '{';\n \n while (!this.isEOF() && depth > 0) {\n const char = this.peek();\n if (char === '{') depth++;\n else if (char === '}') depth--;\n content += this.advance();\n }\n \n return new Token(TokenType.OBJECT_LITERAL, content, start, this.pos);\n }\n\n private parseArrayOrBracket(): Token {\n const start = this.pos;\n this.advance(); // consume [\n \n let depth = 1;\n let content = '';\n \n while (!this.isEOF() && depth > 0) {\n const char = this.peek();\n if (char === '[') depth++;\n else if (char === ']') {\n depth--;\n if (depth === 0) break;\n }\n content += this.advance();\n }\n \n if (this.peek() === ']') this.advance();\n \n // Check if this is followed by member access (then it's bracket access at start)\n if (this.peek() === '.' || this.peek() === '[') {\n const bracket = new Token(TokenType.BRACKET_ACCESS, `[${content}]`, start, this.pos);\n if (content.trim()) {\n const innerParser = new ObjectPathParser(content);\n for (const child of innerParser.getTokens()) {\n bracket.addChild(child);\n }\n }\n \n // Continue parsing as member expression\n const memberExpr = new Token(TokenType.MEMBER_EXPRESSION, '', start, start);\n memberExpr.addChild(bracket);\n \n while (!this.isEOF()) {\n const char = this.peek();\n if (char === '.') {\n this.advance();\n memberExpr.addChild(this.parsePropertyAccess(false));\n } else if (char === '[') {\n memberExpr.addChild(this.parseBracketAccess(false));\n } else {\n break;\n }\n }\n \n memberExpr.end = this.pos;\n memberExpr.value = this.input.substring(start, this.pos);\n return memberExpr;\n }\n \n // Otherwise it's an array literal\n return new Token(TokenType.ARRAY_LITERAL, `[${content}]`, start, this.pos);\n }\n\n\n private isOperatorChar(char: string): boolean {\n return ['+', '-', '*', '/', '%', '=', '!', '<', '>', '&', '|', '?'].includes(char);\n }\n\n private parseOperator(): Token {\n const start = this.pos;\n let value = this.advance();\n \n const next = this.peek();\n // Multi-char operators\n if ((value === '=' || value === '!' || value === '<' || value === '>') && next === '=') {\n value += this.advance();\n if (this.peek() === '=') value += this.advance();\n } else if ((value === '&' && next === '&') || (value === '|' && next === '|')) {\n value += this.advance();\n } else if (value === '?' && next === '?') {\n value += this.advance();\n }\n \n return new Token(TokenType.OPERATOR, value, start, this.pos);\n }\n\n private tryParseTernary(): Token | null {\n // Look ahead for ternary pattern: expr ? expr : expr\n const savedPos = this.pos;\n const remaining = this.input.substring(this.pos);\n \n // Find ternary operator at depth 0, respecting string literals\n let depth = 0;\n let inString = false;\n let stringChar = '';\n let questionIdx = -1;\n let colonIdx = -1;\n \n for (let i = 0; i < remaining.length; i++) {\n const char = remaining[i];\n const prevChar = i > 0 ? remaining[i - 1] : '';\n \n // Track string state (handle escape characters)\n if ((char === '\"' || char === \"'\" || char === '`') && prevChar !== '\\\\') {\n if (!inString) {\n inString = true;\n stringChar = char;\n } else if (char === stringChar) {\n inString = false;\n stringChar = '';\n }\n }\n \n if (inString) continue;\n \n // Track depth for parentheses, brackets, braces\n if (char === '(' || char === '[' || char === '{') depth++;\n else if (char === ')' || char === ']' || char === '}') depth--;\n \n // Find ternary ? at depth 0\n if (depth === 0 && char === '?') {\n const nextChar = remaining[i + 1] || '';\n // Skip optional chaining (?.) and nullish coalescing (??)\n if (nextChar === '.' || nextChar === '?') continue;\n // Ternary ? should be followed by whitespace or expression\n questionIdx = i;\n }\n \n // Find ternary : at depth 0 (only after finding ?)\n if (depth === 0 && char === ':' && questionIdx >= 0 && colonIdx < 0) {\n colonIdx = i;\n break;\n }\n }\n \n // Not a ternary expression\n if (questionIdx < 0 || colonIdx < 0) return null;\n \n const condStr = remaining.substring(0, questionIdx).trim();\n const trueStr = remaining.substring(questionIdx + 1, colonIdx).trim();\n const falseStr = remaining.substring(colonIdx + 1).trim();\n \n if (!condStr || !trueStr || !falseStr) return null;\n \n const ternary = new Token(TokenType.TERNARY, remaining, savedPos, savedPos + remaining.length);\n \n const condParser = new ObjectPathParser(condStr);\n const trueParser = new ObjectPathParser(trueStr);\n const falseParser = new ObjectPathParser(falseStr);\n \n for (const child of condParser.getTokens()) ternary.addChild(child);\n for (const child of trueParser.getTokens()) ternary.addChild(child);\n for (const child of falseParser.getTokens()) ternary.addChild(child);\n \n this.pos = this.input.length; // consume all\n return ternary;\n }\n\n\n private tryParseBinary(): Token | null {\n // Look for binary operators at top level\n const remaining = this.input.substring(this.pos);\n \n // Check operators in order of precedence (lowest to highest)\n // This ensures we parse correctly: a < b - c => a < (b - c), not (a < b) - c\n const operatorGroups = [\n ['||'], // Logical OR (lowest precedence)\n ['&&'], // Logical AND\n ['??'], // Nullish coalescing\n ['<', '>', '<=', '>='], // Comparison\n ['===', '!==', '==', '!='], // Equality\n ['+', '-'], // Addition/Subtraction\n ['*', '/', '%'] // Multiplication/Division (highest precedence)\n ];\n \n // Search from lowest to highest precedence\n for (const operators of operatorGroups) {\n for (const op of operators) {\n let depth = 0;\n let inString = false;\n let stringChar = '';\n let lastMatchIndex = -1;\n \n // Find the LAST occurrence of this operator at depth 0 (right-to-left for left-associative)\n for (let i = 0; i < remaining.length - op.length + 1; i++) {\n const char = remaining[i];\n \n // Track string state\n if ((char === '\"' || char === \"'\" || char === '`') && (i === 0 || remaining[i-1] !== '\\\\')) {\n if (!inString) {\n inString = true;\n stringChar = char;\n } else if (char === stringChar) {\n inString = false;\n }\n }\n \n if (inString) continue;\n \n // Track depth\n if (char === '(' || char === '[' || char === '{') depth++;\n else if (char === ')' || char === ']' || char === '}') depth--;\n \n // Check for operator at depth 0\n if (depth === 0 && remaining.substring(i, i + op.length) === op) {\n // Make sure it's not part of optional chaining\n if (op === '?' && remaining[i + 1] === '.') continue;\n \n // For - operator, make sure it's not a negative number\n if (op === '-') {\n // Look back to find the last non-whitespace character\n let lastNonSpace = '';\n for (let j = i - 1; j >= 0; j--) {\n if (remaining[j].trim()) {\n lastNonSpace = remaining[j];\n break;\n }\n }\n // Skip if it looks like a negative number (after operator, comma, or opening bracket/paren, or at start)\n if (!lastNonSpace || /[+\\-*\\/%=<>!&|,(\\[]/.test(lastNonSpace)) {\n continue;\n }\n }\n \n // For comparison/equality operators, make sure we're not matching part of a longer operator\n if (['<', '>', '=', '!'].includes(op)) {\n const nextChar = remaining[i + op.length] || '';\n if (nextChar === '=') continue; // Skip < if it's part of <=\n }\n \n lastMatchIndex = i;\n }\n }\n \n // If we found a match, split there\n if (lastMatchIndex >= 0) {\n const i = lastMatchIndex;\n const leftRaw = remaining.substring(0, i);\n const rightRaw = remaining.substring(i + op.length);\n const leftStr = leftRaw.trim();\n const rightStr = rightRaw.trim();\n \n if (leftStr && rightStr) {\n const binary = new Token(TokenType.BINARY, op, this.pos, this.pos + remaining.length);\n \n // \uC5F0\uC0B0\uC790 \uC8FC\uBCC0 \uACF5\uBC31 \uBCF4\uC874\n const leftTrailingSpace = leftRaw.substring(leftStr.length);\n const rightLeadingSpace = rightRaw.substring(0, rightRaw.length - rightRaw.trimStart().length);\n binary.leftSpace = leftTrailingSpace;\n binary.rightSpace = rightLeadingSpace;\n \n const leftParser = new ObjectPathParser(leftStr);\n const rightParser = new ObjectPathParser(rightStr);\n \n // Binary token should have exactly 2 children: left and right\n // Wrap the parsed results in containers that preserve the original structure\n const leftContainer = new Token(TokenType.ROOT, leftStr, 0, leftStr.length);\n for (const child of leftParser.getTokens()) leftContainer.addChild(child);\n binary.addChild(leftContainer);\n \n const rightContainer = new Token(TokenType.ROOT, rightStr, 0, rightStr.length);\n for (const child of rightParser.getTokens()) rightContainer.addChild(child);\n binary.addChild(rightContainer);\n \n this.pos = this.input.length;\n return binary;\n }\n }\n }\n }\n \n return null;\n }\n\n\n // --- Main conversion method ---\n toOptionalChainPath(): string {\n if (!this.input) return '';\n \n // \uAC1D\uCCB4 \uB9AC\uD130\uB7F4\uC740 \uBCC0\uD658\uD558\uC9C0 \uC54A\uC74C\n if (this.isObjectLiteralInput()) return this.input;\n \n // \uD568\uC218 \uC2A4\uD06C\uB9BD\uD2B8\uB294 \uBCC0\uD658\uD558\uC9C0 \uC54A\uC74C\n if (this.isFunctionScript() || this.isArrowFunctionScript()) return this.input;\n \n return this.root.toOptionalChain();\n }\n\n removeOptionalChainOperator(): string {\n if (!this.input) return '';\n return this.input.replace(/\\?\\./g, '.').replace(/\\.\\[/g, '[');\n }\n\n stringify(): string {\n return this.root.stringify();\n }\n\n // --- Static factory methods ---\n static parse(input: string): ObjectPathParser {\n return new ObjectPathParser(input);\n }\n\n static isFunctionScript(script: string): boolean {\n return script.trim().startsWith('function');\n }\n\n static isArrowFunctionScript(script: string): boolean {\n return /^\\s*\\([^)]*\\)\\s*=>/.test(script);\n }\n\n static isObjectLiteral(script: string): boolean {\n const trimmed = script.trim();\n return trimmed.startsWith('{') && trimmed.endsWith('}');\n }\n}\n", "import { ValidUtils } from '../valid/ValidUtils';\nimport type { ConstructorType } from '../types';\nimport { isDefined } from '../types';\nimport { ObjectPathParser } from '../parser/path/ObjectPathParser';\n\nexport namespace ObjectUtils {\n export const constructorName = (target: any): string | undefined => {\n if (target && target.constructor && target.constructor.name) {\n return target.constructor.name;\n } else if (target && target.name) {\n return target.name;\n }\n };\n export const deepCopy = <T = any>(obj: T): T => {\n if (obj instanceof Map) {\n return new Map<any, any>(JSON.parse(JSON.stringify(Array.from(obj.entries())))) as T;\n } else if (obj instanceof Set) {\n return new Set<any>(JSON.parse(JSON.stringify(Array.from(obj.values())))) as T;\n } else if (ValidUtils.isNullOrUndefined(obj)) {\n return obj;\n }\n\n return JSON.parse(JSON.stringify(obj));\n };\n export const allProtoTypeName = (target?: any, filter?: (pathString: string, pathValue: any) => boolean): string[] => {\n let data: string[] = [];\n if (target) {\n const proto = Object.getPrototypeOf(target);\n if (proto && (data = Object.keys(proto) || []).length > 0) {\n data = data.concat(ObjectUtils.allProtoTypeName(proto, filter));\n }\n }\n let result = data.filter(it => it !== 'constructor');\n\n if (filter && target) {\n const proto = Object.getPrototypeOf(target);\n result = result.filter(key => filter(key, proto?.[key]));\n }\n\n return result;\n };\n\n export const uniqueKeys = (obj: object[] | object) => {\n const allKeys = Array.from(new Set((Array.isArray(obj) ? obj : [obj]).flatMap(item => Object.keys(item))));\n return allKeys;\n };\n\n export const ownPropertyNames = (target?: any): string[] => {\n const data: string[] = [];\n if (target) {\n if (!target.prototype) {\n const a = Object.getPrototypeOf(target);\n data.push(...Object.getOwnPropertyNames(a));\n } else {\n data.push(...Object.getOwnPropertyNames(Object.getPrototypeOf(target)));\n }\n }\n return data.filter(it => it !== 'constructor');\n };\n\n export const protoTypeName = (target?: any): string[] => {\n let data: string[] = [];\n if (target) {\n const proto = Object.getPrototypeOf(target);\n data = Object.keys(proto) || [];\n }\n return data.filter(it => it !== 'constructor');\n };\n\n export const protoTypes = (target?: any): Function[] => {\n const data: Function[] = [];\n if (target) {\n const proto = Object.getPrototypeOf(target);\n (Object.keys(proto) || [])\n .filter(it => it !== 'constructor')\n .forEach(it => {\n data.push(proto[it]);\n });\n }\n return data;\n };\n\n export const seal = <T>(target: T): T => {\n return Object.seal(target);\n };\n\n /*\n Object.prototype.isPrototypeOf()\n isPrototypeOf() 메소드는 해당 객체가 다른 객체의 프로토타입 체인에 속한 객체인지 확인하기 위해 사용됩니다.\n */\n export const isPrototypeOfTarget = (start: ConstructorType<any> | Function | null | undefined, target: any | null | undefined): boolean => {\n if (start && target) {\n return Object.prototype.isPrototypeOf.call(start.prototype, target);\n } else {\n return false;\n }\n };\n\n export const prototypeOfDepth = (target: any, dest: ConstructorType<any> | Function | null | undefined): object[] => {\n let object: any = target;\n const r: any[] = [];\n if (dest) {\n do {\n object = Object.getPrototypeOf(object);\n if (object?.constructor === dest) {\n break;\n }\n r.push(object);\n } while (object);\n }\n return r;\n };\n\n export const allProtoType = (start: ConstructorType<any> | Function): (ConstructorType<any> | Function)[] => {\n const depth = (target: ConstructorType<any> | Function, bowl: (ConstructorType<any> | Function)[] = []) => {\n if (target.prototype) {\n bowl.push(target);\n depth(Object.getPrototypeOf(target), bowl);\n }\n return bowl;\n };\n const d = depth(start);\n return d;\n // const protos: (ConstructorType<any> | Function)[] = []\n // while (start) {\n // protos.push(start);\n // start = Object.getPrototypeOf(start)\n // }\n // return protos;\n };\n\n export const prototypeOf = (start: any) => {\n return Object.getPrototypeOf(start);\n };\n\n export const prototypeKeyMap = (target: any): Map<Function, string> => {\n const data = new Map<Function, string>();\n if (target) {\n const proto = Object.getPrototypeOf(target);\n (Object.keys(proto) || [])\n .filter(it => it !== 'constructor')\n .forEach(it => {\n data.set(proto[it], it);\n });\n }\n return data;\n };\n\n export const prototypeName = (target: any, fnc: Function): string | undefined => {\n return ObjectUtils.prototypeKeyMap(target).get(fnc);\n };\n\n export const pickRandomKey = <T>(target: T): keyof T => {\n const keys = Object.keys(target as any) as Array<keyof T>;\n return keys[Math.floor(Math.random() * keys.length)];\n };\n\n export const pickRandomValue = <T>(target: T): T[keyof T] => {\n const keys = Object.keys(target as any) as Array<keyof T>;\n return target[keys[Math.floor(Math.random() * keys.length)]];\n };\n\n export const pickRandomKeyValue = <T>(target: T): { key: keyof T; value: T[keyof T] } => {\n const keys = Object.keys(target as any) as Array<keyof T>;\n const key = keys[Math.floor(Math.random() * keys.length)];\n return { key, value: target[key] };\n };\n\n export const keyValues = <T>(target: T): { key: keyof T; value: T[keyof T] }[] => {\n const keys = Object.keys(target as any) as Array<keyof T>;\n return keys.map(key => ({ key, value: target[key] }));\n };\n\n export const entries = <T>(target: T): [keyof T, T[keyof T]][] => {\n return Object.entries(target as any) as [keyof T, T[keyof T]][];\n };\n\n export const values = <T>(target: T): T[keyof T][] => {\n return Object.values(target as any);\n };\n\n export const keys = <T>(target: T): (keyof T)[] => {\n return Object.keys(target as any) as (keyof T)[];\n };\n\n export const keyLength = <T>(target: T): number => {\n return ObjectUtils.keys(target).length;\n };\n\n export const toDeleteUndefinedAndNull = <T>(target: T, config?: { deep?: boolean }): T => {\n const cleanValue = (value: any): any => {\n if (Array.isArray(value)) {\n return value.filter(item => item !== undefined && item !== null).map(cleanValue);\n } else if (value && typeof value === 'object') {\n if (config?.deep) {\n return Object.fromEntries(\n Object.entries(value)\n .filter(([_, v]) => v !== undefined && v !== null)\n .map(([k, v]) => [k, cleanValue(v)])\n );\n } else {\n return Object.fromEntries(Object.entries(value).filter(([_, v]) => v !== undefined && v !== null));\n }\n }\n return value;\n };\n\n return cleanValue(target) as T;\n };\n\n export namespace Path {\n export const isFunctionScript = (script: string): boolean => {\n return ObjectPathParser.isFunctionScript(script);\n };\n\n export const isArrowFunctionScript = (script: string): boolean => {\n return ObjectPathParser.isArrowFunctionScript(script);\n };\n\n export const toOptionalChainPath = (path: string): string => {\n if (!path) {\n return '';\n }\n const parser = new ObjectPathParser(path);\n return parser.toOptionalChainPath();\n };\n\n export const removeOptionalChainOperator = (path: string): string => {\n if (!path) {\n return '';\n }\n const parser = new ObjectPathParser(path);\n return parser.removeOptionalChainOperator();\n };\n\n const parsePath = (path: string): (string | number)[] => {\n const result: (string | number)[] = [];\n const regex = /\\.([^.\\[]+)|\\[(\\d+)\\]|\\[(['\"])(.*?)\\3\\]/g;\n let match;\n let lastIndex = 0;\n\n const firstMatch = path.match(regex);\n if (firstMatch && (firstMatch?.index ?? 0) > 0) {\n result.push(path.substring(0, firstMatch.index));\n lastIndex = firstMatch.index as number;\n } else if (!firstMatch && path.length > 0) {\n result.push(path);\n return result;\n }\n\n while ((match = regex.exec(path)) !== null) {\n if (match.index > lastIndex) {\n const segment = path.substring(lastIndex, match.index);\n if (segment.startsWith('.')) {\n result.push(segment.substring(1));\n } else {\n result.push(segment);\n }\n }\n\n if (match[1]) {\n result.push(match[1]);\n } else if (match[2]) {\n result.push(parseInt(match[2], 10));\n } else if (match[4]) {\n result.push(match[4]);\n }\n lastIndex = regex.lastIndex;\n }\n\n if (lastIndex < path.length) {\n const remaining = path.substring(lastIndex);\n if (remaining.startsWith('.')) {\n result.push(remaining.substring(1));\n } else {\n result.push(remaining);\n }\n }\n\n return result;\n };\n\n export const to = <T = any>(obj: any) => {\n const destination: T = {} as any;\n Object.entries(obj).forEach(([path, value]) => {\n Path.set(destination, path, value);\n });\n return destination;\n };\n\n export const set = (obj: any, path: string, value: any) => {\n const pathParts = parsePath(path);\n let current = obj;\n\n for (let i = 0; i < pathParts.length; i++) {\n const part = pathParts[i];\n const isLastPart = i === pathParts.length - 1;\n\n if (isLastPart) {\n current[part] = value;\n } else {\n // Ensure current[part] is of the correct type for the next part\n const nextPart = pathParts[i + 1];\n\n if (typeof nextPart === 'number') {\n // Next part is an array index\n if (!Array.isArray(current[part])) {\n current[part] = [];\n }\n // Fill holes if current[part] is an array and nextPart is a skipped index\n if (Array.isArray(current[part])) {\n while (current[part].length <= nextPart) {\n current[part].push({}); // Fill with empty objects\n }\n }\n } else {\n // Next part is a string (object property)\n if (typeof current[part] !== 'object' || current[part] === null) {\n current[part] = {};\n }\n }\n current = current[part];\n }\n }\n };\n\n export const get = (obj: any, path: string, defaultValue?: any): any => {\n const pathParts = parsePath(path);\n let current = obj;\n\n for (let i = 0; i < pathParts.length; i++) {\n const part = pathParts[i];\n\n if (current === null || current === undefined) {\n return defaultValue;\n }\n\n // Check if the current object has the property/index\n if (typeof current === 'object' && current !== null && part in current) {\n current = current[part];\n } else {\n // Property/index not found\n return defaultValue;\n }\n }\n\n return current;\n };\n\n export const deletePath = (obj: any, path: string): boolean => {\n const pathParts = parsePath(path);\n if (pathParts.length === 0) {\n return false;\n }\n\n let current = obj;\n\n // Navigate to the parent of the target property\n for (let i = 0; i < pathParts.length - 1; i++) {\n const part = pathParts[i];\n\n if (current === null || current === undefined) {\n return false;\n }\n\n if (typeof current === 'object' && current !== null && part in current) {\n current = current[part];\n } else {\n return false;\n }\n }\n\n // Delete the final property\n const finalPart = pathParts[pathParts.length - 1];\n if (current !== null && typeof current === 'object' && finalPart in current) {\n if (Array.isArray(current) && typeof finalPart === 'number') {\n current.splice(finalPart, 1);\n } else {\n delete current[finalPart];\n }\n return true;\n }\n\n return false;\n };\n\n export const availablePath = (obj: any, filter?: (pathString: string, pathValue: any) => boolean): string[] => {\n const paths: string[] = [];\n\n const formatKey = (key: string | number): string => {\n if (typeof key === 'number') {\n return '[' + key + ']'; // Array index\n }\n // Check if the key is a valid JavaScript identifier.\n // If not, it needs to be quoted.\n // A valid identifier starts with a letter, _, or $, followed by letters, digits, _, or $.\n // This regex checks for characters that are NOT valid in an identifier.\n if (!/^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(key)) {\n // If it's not a valid identifier, quote it.\n // Use single quotes without escaping for test compatibility\n return \"['\" + key + \"']\";\n }\n return key;\n };\n\n const traverse = (current: any, currentPath: string, visited: Set<any>) => {\n if (current === null || typeof current !== 'object') {\n return;\n }\n\n // Detect circular references\n if (visited.has(current)) {\n return;\n }\n visited.add(current);\n\n if (Array.isArray(current)) {\n current.forEach((item: any, index: number) => {\n const formattedIndex = formatKey(index); // This will be [index]\n const newPath = currentPath ? `${currentPath}${formattedIndex}` : formattedIndex;\n\n // Apply filter if provided\n if (!filter || filter(newPath, item)) {\n paths.push(newPath);\n }\n\n traverse(item, newPath, visited);\n });\n } else {\n Object.keys(current).forEach(key => {\n const formattedKey = formatKey(key);\n let newPath: string;\n\n // If the key needs brackets (special characters), don't add a dot before brackets\n if (formattedKey.startsWith('[')) {\n newPath = currentPath ? `${currentPath}${formattedKey}` : formattedKey;\n } else {\n newPath = currentPath ? `${currentPath}.${formattedKey}` : formattedKey;\n }\n\n // Apply filter if provided\n if (!filter || filter(newPath, current[key])) {\n paths.push(newPath);\n }\n\n traverse(current[key], newPath, visited);\n });\n }\n };\n\n traverse(obj, '', new Set());\n return paths;\n };\n\n /**\n * 스크립트에서 사용되는 변수 경로들을 감지합니다.\n * 프록시를 사용하여 스크립트 실행 중 접근되는 모든 속성 경로를 추적합니다.\n *\n * @param script 분석할 JavaScript 스크립트 문자열\n * @param options 감지 옵션\n * @param options.excludeThis true일 경우 'this' 키워드를 결과에서 제외\n * @returns 스크립트에서 사용된 변수 경로들의 Set\n */\n export const detectPathFromScript = (script: string, options?: { excludeThis?: boolean }): Set<string> => {\n const usingVars = new Set<string>();\n\n class GetDetectProxy implements ProxyHandler<any> {\n public usingVars = usingVars;\n\n constructor(public prefix?: string) {}\n\n set(target: any, p: string | symbol, value: any, receiver: any): boolean {\n return true;\n }\n\n get(target: any, p: string | symbol, receiver: any): any {\n // Symbol 속성들은 무시 (toString, valueOf 등)\n if (typeof p === 'symbol') {\n return this.createSafeProxy(this.prefix);\n }\n\n let items: string | undefined;\n const propStr = String(p);\n\n // 숫자 인덱스 처리\n if (!isNaN(Number(propStr))) {\n items = this.prefix ? `${this.prefix}[${propStr}]` : propStr;\n }\n // 일반 속성 처리\n else {\n items = this.prefix ? `${this.prefix}.${propStr}` : propStr;\n }\n\n // 유효한 변수 경로만 추가\n if (items) {\n this.usingVars.add(items);\n }\n\n return this.createSafeProxy(items);\n }\n\n apply(target: any, thisArg: any, argArray?: any): any {\n // 함수 호출 시에도 안전한 프록시 반환 (체이닝 가능)\n return this.createSafeProxy(this.prefix);\n }\n\n private createSafeProxy(prefix?: string): any {\n const dummyFunction = () => {};\n const handler = new GetDetectProxy(prefix);\n\n return new Proxy(dummyFunction, {\n get: (target, prop, receiver) => {\n if (prop === Symbol.toPrimitive) {\n return () => '';\n }\n if (prop === 'valueOf') {\n return () => handler.createSafeProxy(prefix);\n }\n if (prop === 'toString') {\n return () => '';\n }\n return handler.get(target, prop, receiver);\n },\n set: handler.set.bind(handler),\n apply: handler.apply.bind(handler)\n });\n }\n }\n\n // 전역 변수들을 안전하게 처리하기 위한 컨텍스트 생성\n const globalContext = {\n window: new Proxy(() => {}, new GetDetectProxy('window')),\n document: new Proxy(() => {}, new GetDetectProxy('document')),\n console: new Proxy(() => {}, new GetDetectProxy('console'))\n // this는 destUser 자체가 됨\n };\n\n const destUser = new Proxy(() => {}, new GetDetectProxy('this'));\n\n try {\n // [아키텍트님의 정석] #...# 형태의 템플릿 변수는 JS 문법 에러(Private Field)를 유발하므로\n // 감지 단계에서는 안전한 문자열로 마스킹 처리합니다.\n const maskedScript = script.replace(/#([^#]+)#/g, '__DOMRENDER_VAR_$1__');\n // 전역 컨텍스트와 함께 실행\n const func = new Function('window', 'document', 'console', `\"use strict\"; ${maskedScript}; `);\n func.call(destUser, globalContext.window, globalContext.document, globalContext.console);\n // console.log('------->', script);\n } catch (e) {\n console.error('detectPathFromScript error:', script, e);\n }\n\n // excludeThis 옵션이 true면 'this'로 시작하는 경로에서 'this' 제거\n if (options?.excludeThis) {\n const filteredVars = new Set<string>();\n usingVars.forEach(path => {\n if (path === 'this') {\n // 'this' 자체는 제외\n return;\n } else if (path.startsWith('this.')) {\n // 'this.'로 시작하는 경우 'this.' 부분 제거\n filteredVars.add(path.substring(5));\n } else {\n // 그 외는 그대로 추가\n filteredVars.add(path);\n }\n });\n return filteredVars;\n }\n\n return usingVars;\n };\n }\n\n export const toDeleteKey = (obj: any, keys: (null | string)[]) => {\n const target = { ...obj };\n ObjectUtils.deleteKey(target, keys);\n return target;\n };\n export const deleteKey = (obj: any, keys: (null | string)[]) => {\n keys\n .filter(it => isDefined(it))\n .forEach(it => {\n delete obj[it];\n });\n };\n\n export namespace Script {\n /**\n * JavaScript 스크립트를 실행하고 결과를 반환합니다.\n *\n * @param script 실행할 스크립트 문자열 또는 {bodyScript, returnScript} 객체\n * @param thisTarget 스크립트 실행 시 this로 바인딩될 객체\n * @returns 스크립트 실행 결과\n */\n export const evaluateReturn = <T = any>(script: string | { bodyScript: string; returnScript: string }, thisTarget: any = {}): T => {\n let bodyScript = '';\n let returnScript = '';\n if (typeof script === 'object') {\n bodyScript = script.bodyScript;\n returnScript = script.returnScript;\n } else {\n returnScript = script;\n }\n return evaluate(`${bodyScript}; return ${returnScript} `, thisTarget) as T;\n };\n\n /**\n * JavaScript 스크립트를 안전하게 실행합니다.\n *\n * @param script 실행할 스크립트 문자열\n * @param thisTarget 스크립트 실행 시 this로 바인딩될 객체\n * @returns 스크립트 실행 결과 또는 undefined (에러 시)\n */\n // @ts-ignore\n export const evaluate = <T = any>(script: string, thisTarget: any = {}): T | undefined => {\n // new Function('event', 'console.log(event)').call(window, {a:2});\n // new Function('event', '$data', newValue).call(this, event, event.detail);\n // 첫번쨰 인자는 this로 바인딩될 객체, 이후 인자들은 스크립트에서 사용할 매개변수로 전달됩니다.\n try {\n return Function(`\"use strict\"; ${script} `).bind(thisTarget)() as T;\n } catch (e) {\n console.error('eval error', e);\n console.error(script);\n return undefined;\n }\n };\n }\n}\n", "import { Dictionary } from '../types';\nimport { ValidUtils } from '../valid/ValidUtils';\n\nexport namespace StringUtils {\n export const deleteEnter = (data: string) => {\n return data.replace(/\\r?\\n/g, '')\n }\n\n export const pickEmoji = (data: string) => {\n return data.match(/[\\p{Emoji}]/gu) ?? [];\n }\n\n\n export const regexExec = (regex: RegExp, text: string) => {\n let varExec = regex.exec(text)\n const usingVars: any[] = [];\n while (varExec) {\n usingVars.push(varExec)\n varExec = regex.exec(varExec.input)\n }\n return usingVars;\n }\n\n \n\n export const escapeSpecialCharacterRegExp = (data: string) => {\n return data.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&')\n }\n\n export const trim = (data: string) => data.trim();\n\n export const rsubString = (data_s: string, blen_n: number): string =>\n data_s.substring(data_s.length - blen_n, data_s.length);\n\n export const lsubString = (data_s: string, alen_n: number): string => data_s.substring(0, alen_n);\n\n export const lpad = (fill_s: string, len_n: number, full_s: string): string => {\n while (len_n > full_s.length) {\n full_s = fill_s + full_s;\n }\n return StringUtils.rsubString(full_s, len_n);\n };\n export const rpad = (fill_s: string, len_n: number, full_s: string): string => {\n while (len_n > full_s.length) {\n full_s += fill_s;\n }\n return StringUtils.lsubString(full_s, len_n);\n };\n\n export const lappend = (count_n: number, input_s: string): string => {\n let s = '';\n let i = 0;\n while (i++ < count_n) {\n s += input_s;\n }\n return s;\n };\n\n\n export const unescape = (html: string): string => {\n if (!html) return '';\n\n const htmlEntity: Dictionary<string> = {\n quot: '\"',\n amp: '&',\n apos: \"'\",\n lt: '<',\n gt: '>',\n nbsp: '\\u00A0',\n iexcl: '\u00A1',\n cent: '\u00A2',\n pound: '\u00A3',\n curren: '\u00A4',\n yen: '\u00A5',\n brvbar: '\u00A6',\n sect: '\u00A7',\n uml: '\u00A8',\n copy: '\u00A9',\n ordf: '\u00AA',\n laquo: '\u00AB',\n not: '\u00AC',\n shy: '\\u00AD',\n reg: '\u00AE',\n macr: '\u00AF',\n deg: '\u00B0',\n plusmn: '\u00B1',\n sup2: '\u00B2',\n sup3: '\u00B3',\n acute: '\u00B4',\n micro: '\u00B5',\n para: '\u00B6',\n middot: '\u00B7',\n cedil: '\u00B8',\n sup1: '\u00B9',\n ordm: '\u00BA',\n raquo: '\u00BB',\n frac14: '\u00BC',\n frac12: '\u00BD',\n frac34: '\u00BE',\n iquest: '\u00BF',\n '#x27': \"'\"\n };\n\n return html.replace(/&((?:(?:[a-z0-9]+|#[0-9]{1,6}|#x[0-9a-fA-F]{1,6});?)+);/gi, (match, entity) => {\n const entities: string[] = entity.toLowerCase().split(';');\n return entities.map(it => (it in htmlEntity ? htmlEntity[it] : match)).join('');\n });\n };\n\n export const executeExpression = (formatString: string, object: Record<string, string | number>) => {\n return formatString.replace(/\\${([^{}]*)}/g, (matched, piece) => String(object[piece] ?? matched));\n };\n\n export const ellipsis = (text: string, length: number) => {\n if (text.length > length) return `${text.slice(0, length)}...`;\n return text;\n };\n/*\nconst str = 'dr-class:set(\"MycLasS\")'; // \uB610\uB294 'dr-class'\nconst regex = /^([^\\s:]+)(?::(\\w+)\\(\"([^\"]+)\"\\))?$/;\nconst match = str.match(regex);\n\nif (match) {\n const className = match[1]; // dr-class\n const functionName = match[2] || ''; // set \uB610\uB294 ''\n const argument = match[3] || ''; // MycLasS \uB610\uB294 ''\n console.log('Class Name:', className);\n console.log('Function Name:', functionName);\n console.log('Argument:', argument);\n} else {\n console.log('Invalid format');\n}\n */\n // type Postposition =\n /**\n * Appends a postposition to the given text based on the provided options.\n * @param {string} text - The text to append the postposition to.\n * @param {object} options - The options for postposition.\n * @param {string} options.vowel - The postposition to append if the text ends with a vowel(\uBAA8\uC74C).\n * @param {string} options.consonant - The postposition to append if the text ends with a consonant(\uC790\uC74C).\n * @returns {string} - The text with the appropriate postposition appended.\n */\n export const appendPostposition = (text: string, { vowel, consonant }: {\n vowel: string;\n consonant: string;\n }): string => {\n return `${text}${ValidUtils.lastConsonantLetter(text) ? consonant : vowel}`;\n };\n\n export interface SequentialReplacement {\n regex: RegExp;\n callback: (matched: string) => string;\n }\n\n export const replaceSequentially = (\n text: string,\n replacements: SequentialReplacement[]\n ): string => {\n let remainingText = text;\n let result = '';\n // console.log('Executing replaceSequentially with robust fix');\n\n while (remainingText.length > 0) {\n let bestMatch: {\n index: number;\n match: RegExpExecArray;\n replacement: SequentialReplacement;\n } | null = null;\n\n // Find the earliest match in the remaining text\n for (const replacement of replacements) {\n const newRegex = new RegExp(replacement.regex);\n const match = newRegex.exec(remainingText);\n if (match) {\n if (bestMatch === null || match.index < bestMatch.index) {\n bestMatch = { index: match.index, match, replacement };\n }\n }\n }\n\n if (bestMatch) {\n const { index, match, replacement } = bestMatch;\n const matchedString = match[0];\n\n // Append the text before the match and the replacement\n result += remainingText.substring(0, index);\n result += replacement.callback(matchedString);\n\n // Update remainingText to be the part after the match\n remainingText = remainingText.substring(index + matchedString.length);\n } else {\n // No more matches, append the rest of the text and finish\n result += remainingText;\n break;\n }\n }\n\n return result;\n };\n}\n", "export namespace DateUtils {\n\n export const create = (data: string): Date => new Date(data);\n\n export const dayZeroTime = (data?: Date | string | number) => {\n const date = data ? new Date(data) : new Date();\n date.setHours(0, 0, 0, 0);\n return date;\n }\n\n export const fullMilliSecond = (): number => new Date().getTime();\n\n export const fullSecond = (): number => new Date().getTime() / 1000;\n\n export const milliSecond = (): number => new Date().getMilliseconds();\n\n export const format = (date: Date, format = 'yyyy-MM-dd HH:mm:ss'): string => {\n const pad = (num) => String(num).padStart(2, '0');\n const year = date.getFullYear();\n const month = pad(date.getMonth() + 1);\n const day = pad(date.getDate());\n const hours = pad(date.getHours());\n const minutes = pad(date.getMinutes());\n const seconds = pad(date.getSeconds());\n\n return format\n .replace('yyyy', String(year))\n .replace('MM', month)\n .replace('dd', day)\n .replace('HH', hours)\n .replace('mm', minutes)\n .replace('ss', seconds);\n };\n\n export const isSameDate = (date1: Date, date2: Date) =>\n date1.getFullYear() === date2.getFullYear() &&\n date1.getMonth() === date2.getMonth() &&\n date1.getDate() === date2.getDate();\n\n export const compare = (date1: Date, date2: Date) =>\n date1.getTime() < date2.getTime() ? -1 : date1.getTime() > date2.getTime() ? 1 : 0;\n\n export const weekCountOfYear = (date: Date) => {\n // Copy date so it's not modified\n const currentDate = new Date(date.getTime());\n // Set to nearest Thursday: current date + 4 - current day number (from 0 to 6)\n // Make Sunday's day number 7\n currentDate.setDate(currentDate.getDate() + 4 - (currentDate.getDay() || 7));\n // January 1st of the year\n const yearStart = new Date(currentDate.getFullYear(), 0, 1);\n // Calculate full weeks to nearest Thursday\n const weekNo = Math.ceil(((currentDate.getTime() - yearStart.getTime()) / 86400000 + 1) / 7);\n return weekNo;\n };\n export const age = (dateOfBirth: Date, until: Date = new Date()) => {\n let age = until.getFullYear() - dateOfBirth.getFullYear();\n const m = until.getMonth() - dateOfBirth.getMonth();\n\n if (m < 0 || (m === 0 && until.getDate() < dateOfBirth.getDate())) {\n age--;\n }\n\n return Math.max(age, 0);\n }\n\n export const countingAge = (dateOfBirth: Date, until: Date = new Date()) => {\n return Math.max(until.getFullYear() - dateOfBirth.getFullYear(), 0) + 1;\n }\n\n export const add = ({years = 0, months = 0, days = 0, minutes = 0, seconds = 0, milliSecond = 0}: { years?: number; months?: number; days?: number; minutes?: number; seconds?: number, milliSecond?: number }, date?: Date | string | number,): Date => {\n const result = date ? new Date(date) : new Date();\n if (years) result.setFullYear(result.getFullYear() + years);\n if (months) result.setMonth(result.getMonth() + months);\n if (days) result.setDate(result.getDate() + days);\n if (minutes) result.setMinutes(result.getMinutes() + minutes);\n if (seconds) result.setSeconds(result.getSeconds() + seconds);\n if (milliSecond) result.setMilliseconds(result.getMilliseconds() + milliSecond);\n return result;\n };\n\n\n export const toDate = (date: Date | string | number): Date => {\n if (date instanceof Date) {\n return date;\n } else if (typeof date === 'string' || typeof date === 'number') {\n return new Date(date);\n } else {\n throw new Error('Invalid date type. Expected Date, string, or number.');\n }\n }\n\n export const sinceSeconds = (date: Date): number => Math.floor((Date.now() - date.getTime()) / 1000);\n\n export const toSeconds = (date: Date = new Date()): number => Math.floor(date.getTime() / 1000);\n\n export const toMilliseconds = (date: Date = new Date()): number => date.getTime();\n\n export const fromSeconds = (seconds: number): Date => new Date(seconds * 1000);\n\n export const fromMilliseconds = (milliseconds: number): Date => new Date(milliseconds);\n\n export const toISOString = (date: Date = new Date()): string => date.toISOString();\n\n export const fromISOString = (isoString: string): Date => new Date(isoString);\n\n export const formatDuration = (timeSecond: number, locale: string = getDefaultLocale()) => {\n const rtf = new Intl.RelativeTimeFormat(locale, { numeric: 'always', style: 'long' });\n\n\n let remaining = timeSecond;\n const days = Math.floor(remaining / 86400);\n remaining -= days * 86400;\n const hours = Math.floor(remaining / 3600);\n remaining -= hours * 3600;\n const minutes = Math.floor(remaining / 60);\n remaining -= minutes * 60;\n const seconds = remaining;\n\n const result = [];\n\n if (days > 0) {\n result.push(rtf.format(days, 'day').replace('\uD6C4', '').replace('in ', '').replace('dans ', ''));\n }\n\n if (hours > 0) {\n result.push(rtf.format(hours, 'hour').replace('\uD6C4', '').replace('in ', '').replace('dans ', ''));\n }\n\n if (minutes > 0) {\n result.push(rtf.format(minutes, 'minute').replace('\uD6C4', '').replace('in ', '').replace('dans ', ''));\n }\n\n if (seconds > 0 || result.length === 0) {\n result.push(rtf.format(seconds, 'second').replace('\uD6C4', '').replace('in ', '').replace('dans ', ''));\n }\n\n return result.join(' ');\n };\n\n export const relativeTime = (date: Date | string | number,\n config?: {\n locales: ConstructorParameters<typeof Intl.RelativeTimeFormat>[0]\n options: ConstructorParameters<typeof Intl.RelativeTimeFormat>[1]\n }) => {\n\n const rtf = new Intl.RelativeTimeFormat(config?.locales, config?.options);\n let targetDate: Date;\n if (!(date instanceof Date)) {\n targetDate = new Date(date);\n } else {\n targetDate = date;\n }\n\n const now = new Date();\n const diffMs = targetDate.getTime() - now.getTime(); // \uC785\uB825\uB41C \uC2DC\uAC04 - \uD604\uC7AC \uC2DC\uAC04\n\n // \uBD84, \uC2DC\uAC04, \uC77C \uB2E8\uC704\uB85C \uC808\uB300\uAC12 \uCC28\uC774 \uACC4\uC0B0\n const absDiffMinutes = Math.floor(Math.abs(diffMs) / (1000 * 60));\n const absDiffHours = Math.floor(Math.abs(diffMs) / (1000 * 60 * 60));\n const absDiffDays = Math.floor(Math.abs(diffMs) / (1000 * 60 * 60 * 24));\n if (diffMs === 0) {\n return rtf.format(0, 'seconds'); // \"\uC9C0\uAE08\" \uB610\uB294 \"0\uCD08 \uD6C4/\uC804\" (\uB85C\uCF00\uC77C\uC5D0 \uB530\uB77C \uB2E4\uB984)\n }\n if (diffMs < 0) { // \uACFC\uAC70 (\uC785\uB825\uB41C \uC2DC\uAC04\uC774 \uD604\uC7AC\uBCF4\uB2E4 \uC774\uC804)\n if (absDiffMinutes < 1) { // 1\uBD84 \uBBF8\uB9CC \uACFC\uAC70\n return rtf.format(-Math.floor(Math.abs(diffMs) / 1000), 'seconds'); // \"\uBA87 \uCD08 \uC804\"\n } else if (absDiffMinutes < 60) { // 60\uBD84 \uBBF8\uB9CC \uACFC\uAC70\n return rtf.format(-absDiffMinutes, 'minutes'); // \"\uBA87 \uBD84 \uC804\"\n } else if (absDiffHours < 24) { // 24\uC2DC\uAC04 \uBBF8\uB9CC \uACFC\uAC70\n return rtf.format(-absDiffHours, 'hours'); // \"\uBA87 \uC2DC\uAC04 \uC804\"\n } else { // \uADF8 \uC774\uC0C1 \uACFC\uAC70\n return rtf.format(-absDiffDays, 'days'); // \"\uBA87 \uC77C \uC804\"\n }\n } else { // \uBBF8\uB798 (\uC785\uB825\uB41C \uC2DC\uAC04\uC774 \uD604\uC7AC\uBCF4\uB2E4 \uC774\uD6C4)\n if (absDiffMinutes < 1) { // 1\uBD84 \uBBF8\uB9CC \uBBF8\uB798\n return rtf.format(Math.floor(diffMs / 1000), 'seconds'); // \"\uBA87 \uCD08 \uD6C4\"\n } else if (absDiffMinutes < 60) { // 60\uBD84 \uBBF8\uB9CC \uBBF8\uB798\n return rtf.format(absDiffMinutes, 'minutes'); // \"\uBA87 \uBD84 \uD6C4\"\n } else if (absDiffHours < 24) { // 24\uC2DC\uAC04 \uBBF8\uB9CC \uBBF8\uB798\n return rtf.format(absDiffHours, 'hours'); // \"\uBA87 \uC2DC\uAC04 \uD6C4\"\n } else { // \uADF8 \uC774\uC0C1 \uBBF8\uB798\n return rtf.format(absDiffDays, 'days'); // \"\uBA87 \uC77C \uD6C4\"\n }\n }\n }\n\n export const getDefaultLocale = (): string => Intl.DateTimeFormat().resolvedOptions().locale;\n}\n", "import { Vector } from './Vector';\n\nexport class Point2D {\n public x: number;\n public y: number;\n\n constructor(data: {x?: number, y?: number});\n constructor(x?: number, y?: number);\n constructor(x?: number | {x?: number, y?: number} | Vector , y?: number) {\n if (typeof x === 'object') {\n this.x = x.x ?? 0;\n this.y = x.y ?? 0;\n } else {\n this.x = x ?? 0;\n this.y = y ?? 0;\n }\n }\n\n copy() {\n return new Point2D(this.x, this.y);\n }\n}\n", "// https://p5js.org/ko/\nimport { Point3D } from './Point3D';\nimport { Point2D } from './Point2D';\n\nexport class Vector {\n public x: number;\n public y: number;\n public z: number;\n\n constructor(data: Point3D);\n constructor(data: {x?: number, y?: number, z?: number});\n constructor(x?: number, y?: number, z?: number);\n constructor(x?: number | {x?: number, y?: number, z?: number} | Point3D, y?: number, z?: number) {\n if (x instanceof Point3D) {\n this.x = x.x;\n this.y = x.y;\n this.z = x.z;\n } else if (typeof x === 'object') {\n this.x = x.x ?? 0;\n this.y = x.y ?? 0;\n this.z = x.z ?? 0;\n } else {\n this.x = x ?? 0;\n this.y = y ?? 0;\n this.z = z ?? 0;\n }\n }\n\n\n public set(v: number | Vector | Point3D, y: number = 0, z: number = 0) {\n if (v instanceof Vector || v instanceof Point3D) {\n this.set(v.x || 0, v.y || 0, v.z || 0);\n } else {\n this.x = v;\n this.y = y;\n this.z = z;\n }\n return this;\n }\n\n public get() {\n return new Vector(this.x, this.y, this.z);\n }\n\n // \uD53C\uD0C0\uACE0\uB77C\uC2A4\uC758 \uC815\uB9AC\uB294 a\uC758 \uC81C\uACF1 \uB354\uD558\uAE30 b \uC758 \uC81C\uACF1\uC740 c \uC758 \uC81C\uACF1\uACFC \uAC19\uB2E4\uB294 \uAC83\uC744 \uC815\uC758\uD569\uB2C8\uB2E4.\n public mag(): number {\n const x = this.x;\n const y = this.y;\n const z = this.z;\n return Math.sqrt(x * x + y * y + z * z); // \uC758 \uC81C\uACF1\uADFC\uC744 \uB9AC\uD134\uD558\uBA74 \uAE38\uC774\uAC00 \uBC18\uD658\uB41C\uB2E4.\n }\n\n public add(v: number | Vector | Point3D, y: number = 0, z: number = 0) {\n if (v instanceof Vector || v instanceof Point3D) {\n this.x += v.x;\n this.y += v.y;\n this.z += v.z;\n } else {\n this.x += v;\n this.y += y;\n this.z += z;\n }\n }\n\n public toAdd(v1: Vector|Point3D, v2: Vector|Point3D): Vector {\n return new Vector(v1.x + v2.x, v1.y + v2.y, v1.x + v2.y);\n }\n\n // public static add(v1: Vector, v2: Vector): Vector {\n // return new Vector(v1.x + v2.x, v1.y + v2.y, v1.x + v2.y);\n // }\n\n public sub(v: number | Vector |Point3D, y = 0, z = 0) {\n if (v instanceof Vector || v instanceof Point3D) {\n this.x -= v.x;\n this.y -= v.y;\n this.z -= v.z;\n } else {\n this.x -= v;\n this.y -= y;\n this.z -= z;\n }\n }\n\n public toSub(v2: Vector | Point3D): Vector {\n const v1 = this;\n return new Vector(v1.x - v2.x, v1.y - v2.y, v1.z - v2.z);\n }\n\n //\n // public static sub(v1: Vector, v2: Vector): Vector {\n // return new Vector(v1.x - v2.x, v1.y - v2.y, v1.z - v2.z);\n // }\n\n public mult(v: number | Vector | Point3D) {\n if (v instanceof Vector || v instanceof Point3D) {\n this.x *= v.x;\n this.y *= v.y;\n this.z *= v.z;\n } else {\n this.x *= v;\n this.y *= v;\n this.z *= v;\n }\n return this;\n }\n\n public toMult(v2: Vector | Point3D): Vector {\n const v1 = this;\n return new Vector(v1.x *= v2.x, v1.y *= v2.y, v1.z *= v2.z);\n }\n\n // public static mult(v1: Vector, v2: Vector) {\n // return new Vector(v1.x *= v2.x, v1.y *= v2.y, v1.z *= v2.z);\n // }\n\n public div(v: number | Vector | Point3D) {\n if (v instanceof Vector || v instanceof Point3D) {\n this.x /= v.x;\n this.y /= v.y;\n this.z /= v.z;\n } else {\n this.x /= v;\n this.y /= v;\n this.z /= v;\n }\n return this;\n }\n\n public toDiv( d: number): Vector {\n const v = this;\n const rv = v.get();\n rv.x /= d;\n rv.y /= d;\n rv.z /= d;\n return rv;\n }\n\n // public static div(v: Vector, d: number): Vector {\n // const rv = v.get();\n // rv.x /= d;\n // rv.y /= d;\n // rv.z /= d;\n // return rv;\n // }\n\n public dist(v: Vector | Point3D): number {\n const dx = this.x - v.x,\n dy = this.y - v.y,\n dz = this.z - v.z;\n return Math.sqrt(dx * dx + dy * dy + dz * dz);\n }\n\n public toDist(v2: Vector | Point3D): number {\n const v1 = this;\n const dx = v1.x - v2.x,\n dy = v1.y - v2.y,\n dz = v1.z - v2.z;\n return Math.sqrt(dx * dx + dy * dy + dz * dz);\n }\n\n // public static dist(v1: Vector, v2: Vector): number {\n // const dx = v1.x - v2.x,\n // dy = v1.y - v2.y,\n // dz = v1.z - v2.z;\n // return Math.sqrt(dx * dx + dy * dy + dz * dz);\n // }\n\n public dot(v: number | Vector | Point3D, y: number, z: number): number {\n if (v instanceof Vector || v instanceof Point3D) {\n return this.x * v.x + this.y * v.y + this.z * v.z;\n }\n ;\n return this.x * v + this.y * y + this.z * z;\n }\n\n public cross(v: Vector | Point3D): Vector {\n const x = this.x,\n y = this.y,\n z = this.z;\n return new Vector(y * v.z - v.y * z, z * v.x - v.z * x, x * v.y - v.x * y);\n }\n\n public normalize() {\n const m = this.mag();\n if (m > 0) this.div(m);\n }\n\n public limit(high: number) {\n if (this.mag() > high) {\n this.normalize();\n this.mult(high);\n }\n }\n\n public heading2D() {\n return -Math.atan2(-this.y, this.x);\n }\n\n public random2D() {\n return this.fromAngle(Math.random() * (2 * Math.PI));\n }\n\n public fromAngle(angle: number, length = 1) {\n return new Vector(length * Math.cos(angle), length * Math.sin(angle), 0);\n };\n\n public fromAngles(theta: number, phi: number, length = 1) {\n const cosPhi = Math.cos(phi);\n const sinPhi = Math.sin(phi);\n const cosTheta = Math.cos(theta);\n const sinTheta = Math.sin(theta);\n\n return new Vector(\n length * sinTheta * sinPhi,\n -length * cosTheta,\n length * sinTheta * cosPhi\n );\n };\n\n public array(): number[] {\n return [this.x, this.y, this.z];\n }\n\n public toPoint3D(): Point3D {\n return new Point3D(this.x, this.y, this.z);\n }\n\n public toPoint2D(): Point2D {\n return new Point2D(this.x, this.y);\n }\n\n public copy(): Vector {\n return new Vector(this.x, this.y, this.z);\n }\n\n public toString(): string {\n return '[' + this.x + ', ' + this.y + ', ' + this.z + ']';\n }\n\n}\n", "import { Vector } from './Vector';\nimport { Point2D } from './Point2D';\n\nexport class Point3D extends Point2D {\n public z: number;\n\n constructor(data: Vector);\n constructor(data: {x?: number, y?: number, z?: number});\n constructor(x?: number, y?: number, z?: number);\n constructor(x?: number | {x?: number, y?: number, z?: number} | Vector, y?: number, z?: number) {\n if (x instanceof Vector) {\n super(x.x, x.y);\n this.z = x.z;\n } else if (typeof x === 'object') {\n super({x: x.x ?? 0, y: x.y ?? 0})\n this.z = x.z ?? 0;\n } else {\n super(x,y)\n this.z = z ?? 0;\n }\n }\n\n copy() {\n return new Point3D(this.x, this.y, this.z);\n }\n}\n", "export type SizeType = {\n width: number;\n height: number;\n};\n\nexport const isSizeType = (obj: any): obj is SizeType =>\n !!obj &&\n typeof obj.width === 'number' &&\n typeof obj.height === 'number';", "import { Point2D } from './Point2D';\nimport { MathUtil } from '../math/MathUtil';\nimport AngleUnitType = MathUtil.AngleUnitType;\nimport { isSizeType, SizeType } from './SizeType';\nimport { Point2DType } from './Point2DType';\n\ntype ValueLinkControl<T> = { value: T, noLink: boolean | Rect };\nconst isValueLinkControl = <T = any>(data: any): data is ValueLinkControl<T> => {\n return typeof data === 'object' && 'value' in data && 'noLink' in data;\n // return data.value !== undefined && data.noLink !== undefined && typeof data.value === 'object' && typeof data.noLink === 'boolean';\n}\n\nexport class Rect {\n private _start: Point2D;\n private _width: number\n private _height: number\n private linkRects?: Set<Rect>;\n\n constructor(size: SizeType);\n constructor(point: Point2DType, endPoint: Point2DType);\n constructor(point: Point2D, endPoint: Point2D);\n constructor(point: Point2D, width?: number, height?: number);\n constructor(x: number, y: number, width?: number, height?: number);\n constructor(xOrPoint: number | Point2D | { x: number, y: number } | SizeType, yOrPointOrWidth?: number | Point2D | { x: number, y: number }, widthOrHeight = 0, heightOrUndefined = 0) {\n if (isSizeType(xOrPoint)) {\n this._start = new Point2D(0, 0);\n this._width = xOrPoint.width;\n this._height = xOrPoint.height;\n } else if (typeof xOrPoint === 'object' && typeof yOrPointOrWidth === 'object') {\n this._start = xOrPoint instanceof Point2D ? xOrPoint : new Point2D(xOrPoint.x, xOrPoint.y);\n this.end = yOrPointOrWidth instanceof Point2D ? yOrPointOrWidth : new Point2D(yOrPointOrWidth.x, yOrPointOrWidth.y);\n } else if (typeof xOrPoint === 'object' && typeof yOrPointOrWidth === 'number') {\n this._start = xOrPoint instanceof Point2D ? xOrPoint : new Point2D(xOrPoint.x, xOrPoint.y);\n this._width = yOrPointOrWidth;\n this._height = widthOrHeight\n } else if (typeof xOrPoint === 'number' && typeof yOrPointOrWidth === 'number') {\n this._start = new Point2D(xOrPoint, yOrPointOrWidth);\n this._width = widthOrHeight;\n this._height = heightOrUndefined;\n }\n }\n\n\n private valueLinkControl<T>(value: T | ValueLinkControl<T>) {\n let v: T;\n let noLink: boolean | Rect = false;\n if (isValueLinkControl(value)) {\n v = value.value;\n noLink = value.noLink;\n } else {\n v = value;\n }\n return {value: v, noLink};\n }\n\n get width(): number {\n return this._width;\n }\n\n get height(): number {\n return this._height;\n }\n\n get start(): Point2D {\n return this._start.copy();\n }\n\n ////////////////////\n\n set width(width: number) {\n this.setWidth(width);\n }\n\n public setWidth(width: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(width);\n const percentDiff = MathUtil.getPercentByTotal(this._width, value);\n this._width = value;\n this.applyWidthPercentLinks({value: percentDiff, noLink});\n }\n\n\n set height(height: number) {\n this.setHeight(height);\n }\n\n public setHeight(height: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(height);\n const percentDiff = MathUtil.getPercentByTotal(this._height, value);\n this._height = value;\n this.applyHeightPercentLinks({value: percentDiff, noLink});\n }\n\n set start(inputValue: Point2D) {\n let {value, noLink} = this.valueLinkControl(inputValue);\n const percentDiff = new Point2D({x: MathUtil.getPercentByTotal(this._start.x, value.x), y: MathUtil.getPercentByTotal(this._start.y, value.y)});\n this._start = value;\n this.applyStartPercentLinks({value: percentDiff, noLink});\n }\n\n // \uC5B8\uC81C\uC4F0\uB294\uAC70\uC9C0 \u3161\u3161?\n setWidthFromEnd(inputValue: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(inputValue);\n const percentDiff = MathUtil.getPercentByTotal(this.start.x, value);\n this._start.x = this.end.x - value;\n this.applyStartXPercentLinks({value: percentDiff, noLink});\n }\n\n set widthFromEnd(inputValue: number) {\n this.setWidthFromEnd(inputValue);\n }\n\n // \uC5B8\uC81C\uC4F0\uB294\uAC70\uC9C0 \u3161\u3161?\n setHeightFromEnd(inputValue: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(inputValue);\n const diff = this.end.y - value;\n const percentDiff = MathUtil.getPercentByTotal(this.start.y, diff);\n this._start.y = diff;\n this.applyStartYPercentLinks({value: percentDiff, noLink});\n }\n\n set heightFromEnd(inputValue: number) {\n this.setHeightFromEnd(inputValue);\n }\n\n setWidthFromCenter(inputValue: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(inputValue);\n const diff = this.center.x - (value / 2);\n const percentDiff = MathUtil.getPercentByTotal(this.start.x, diff);\n this._start.x = diff;\n this.applyStartXPercentLinks(percentDiff);\n }\n\n set widthFromCenter(inputValue: number) {\n this.setWidthFromCenter(inputValue);\n }\n\n setHeightFromCenter(inputValue: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(inputValue);\n const diff = this.center.y - (value / 2);\n const percentDiff = MathUtil.getPercentByTotal(this.start.y, diff);\n this._start.y = diff;\n this.applyStartYPercentLinks(percentDiff);\n }\n\n set heightFromCenter(inputValue: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(inputValue);\n const diff = this.center.y - (value / 2);\n const percentDiff = MathUtil.getPercentByTotal(this.start.y, diff);\n this._start.y = diff;\n this.applyStartYPercentLinks(percentDiff);\n }\n\n set x(inputValue: number) {\n this.setX(inputValue);\n }\n\n public setX(inputValue: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(inputValue);\n const diff = value - this._start.x;\n const percentDiff = MathUtil.getPercentByTotal(this.width, diff);\n this._start.x = value;\n this.applyStartXPercentLinks({value: percentDiff, noLink});\n }\n\n set y(inputValue: number) {\n this.setY(inputValue);\n }\n\n public setY(inputValue: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(inputValue);\n const diff = value - this._start.y;\n const percentDiff = MathUtil.getPercentByTotal(this.height, diff);\n this._start.y = value;\n this.applyStartYPercentLinks({value: percentDiff, noLink});\n }\n\n ////////////////////////////\n\n applyWidthPercentLinks(widthPercent: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(widthPercent);\n if (this.linkRects && (typeof noLink === 'boolean' ? !noLink : true)) {\n Array.from(this.linkRects.values()).filter(it => {\n return typeof noLink === 'boolean' ? true : it !== noLink;\n }).forEach(it => {\n it.setWidthByWidthPercent({value: value, noLink: this});\n })\n }\n }\n\n applyHeightPercentLinks(heightPercent: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(heightPercent);\n if (this.linkRects && (typeof noLink === 'boolean' ? !noLink : true)) {\n Array.from(this.linkRects.values()).filter(it => {\n return typeof noLink === 'boolean' ? true : it !== noLink;\n }).forEach(it => {\n it.setHeightByHeightPercent({value: value, noLink: this});\n })\n }\n }\n\n applyStartPercentLinks(startPercent: Point2D | ValueLinkControl<Point2D>) {\n let {value, noLink} = this.valueLinkControl(startPercent);\n this.applyStartXPercentLinks({value: value.x, noLink});\n this.applyStartYPercentLinks({value: value.y, noLink});\n }\n\n applyStartXPercentLinks(xPercent: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(xPercent);\n if (this.linkRects && (typeof noLink === 'boolean' ? !noLink : true)) {\n Array.from(this.linkRects.values()).filter(it => {\n return typeof noLink === 'boolean' ? true : it !== noLink;\n }).forEach(it => {\n it.addXByWidthPercent({value: value, noLink: this});\n })\n }\n }\n\n applyStartYPercentLinks(yPercent: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(yPercent);\n if (this.linkRects && (typeof noLink === 'boolean' ? !noLink : true)) {\n Array.from(this.linkRects.values()).filter(it => {\n return typeof noLink === 'boolean' ? true : it !== noLink;\n }).forEach(it => {\n it.addYByHeightPercent({value: value, noLink: this});\n })\n }\n }\n\n hasLink(rect: Rect) {\n return this.linkRects?.has(rect)\n }\n\n isLinked() {\n return !!this.linkRects?.size;\n }\n\n addLink(...rect: Rect[]) {\n this.linkRects ??= new Set<Rect>();\n rect.filter(it => !this.linkRects?.has(it)).forEach(it => {\n this.linkRects?.add(it);\n it.addLink(this);\n })\n }\n\n setLinks(rects: Rect[]) {\n this.unLinkAll();\n this.addLink(...rects);\n }\n\n unLinkAll() {\n if (this.linkRects) {\n Array.from(this.linkRects.values()).forEach(it => {\n this.unLink(it);\n })\n this.linkRects.clear();\n }\n }\n\n unLink(rect: Rect | ValueLinkControl<Rect>) {\n let {value, noLink} = this.valueLinkControl(rect);\n if (this.linkRects) {\n this.linkRects.delete(value);\n }\n if (!noLink)\n value.unLink({value: this, noLink: this});\n }\n\n addWidthPercent(wPercent: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(wPercent);\n this.setWidth({value: this.width + MathUtil.getValueByTotalInPercent(this.width, value), noLink});\n }\n\n addHeightPercent(hPercent: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(hPercent);\n this.setHeight({value: this.height + MathUtil.getValueByTotalInPercent(this.height, value), noLink});\n }\n\n addWidthRatio(wRatio: number) {\n this.width = this.width + MathUtil.getValueByTotalInRatio(this.width, wRatio);\n }\n\n addHeightRatio(hRatio: number) {\n this.height = this.height + MathUtil.getValueByTotalInRatio(this.height, hRatio);\n }\n\n addXPercent(wPercent: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(wPercent);\n this.setX({value: this.x + MathUtil.getValueByTotalInPercent(this.width, value), noLink});\n }\n\n addYPercent(hPercent: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(hPercent);\n this.setY({value: this.y + MathUtil.getValueByTotalInPercent(this.height, value), noLink});\n }\n\n addXRatio(wRatio: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(wRatio);\n this.setX({value: this.x + MathUtil.getValueByTotalInRatio(this.width, value), noLink});\n }\n\n addYRatio(hRatio: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(hRatio);\n this.setY({value: this.y + MathUtil.getValueByTotalInRatio(this.height, value), noLink});\n }\n\n ////////////\n\n set endX(value: number) {\n const diff = value - this.x;\n this.width = diff;\n }\n\n set endXPercent(endXPercent: number) {\n this.endX = MathUtil.getValueByTotalInPercent(this.width, endXPercent);\n }\n\n set endYPercent(endYPercent: number) {\n this.endY = MathUtil.getValueByTotalInPercent(this.height, endYPercent);\n }\n\n set endY(value: number) {\n this.height = value - this.y;\n }\n\n set end(value: Point2D) {\n this.width = value.x - this.x;\n this.height = value.y - this.y;\n }\n\n get x(): number {\n return this.start.x;\n }\n\n get y(): number {\n return this.start.y;\n }\n\n get endX(): number {\n return this.end.x;\n }\n\n get endY(): number {\n return this.end.y;\n }\n\n to(startPoint: Point2D) {\n const r = this.copy();\n r.start = startPoint;\n return r;\n }\n\n toRotate(r: number, {rotatePoint = this.center, type = 'degreeAngle'}: { rotatePoint?: { x: number, y: number }, type?: AngleUnitType }): Point2D[] {\n const angle = MathUtil.radians(r, {type});\n const centerPoint = rotatePoint instanceof Point2D ? rotatePoint : new Point2D(rotatePoint.x, rotatePoint.y);\n\n const points = [\n this.leftTop,\n this.rightTop,\n this.rightBottom,\n this.leftBottom\n ];\n\n return points.map(p => MathUtil.rotatePoint(p, centerPoint, angle));\n }\n\n get center(): Point2D {\n return new Point2D(this.start.x + (this.width / 2), this.start.y + (this.height / 2));\n }\n\n get end(): Point2D {\n return new Point2D(this.start.x + this.width, this.start.y + this.height);\n }\n\n get leftTop(): Point2D {\n return this.start.copy();\n }\n\n get leftBottom(): Point2D {\n return new Point2D(this.start.x, this.end.y);\n }\n\n get rightTop(): Point2D {\n return new Point2D(this.end.x, this.start.y);\n }\n\n get rightBottom(): Point2D {\n return this.end;\n }\n\n public copy(): Rect {\n return new Rect(this.x, this.y, this.width, this.height);\n }\n\n /////////////////\n\n getWidthPercent(width: number) {\n return MathUtil.getPercentByTotal(this.width, width);\n }\n\n getWidthRatio(width: number) {\n return MathUtil.getRatioByTotal(this.width, width);\n }\n\n getWidthByPercent(percent: number) {\n return MathUtil.getValueByTotalInPercent(this.width, percent);\n }\n\n getWidthByRatio(percent: number) {\n return MathUtil.getValueByTotalInRatio(this.width, percent);\n }\n\n getHeightPercent(height: number) {\n return MathUtil.getPercentByTotal(this.height, height);\n }\n\n getHeightRatio(height: number) {\n return MathUtil.getRatioByTotal(this.height, height);\n }\n\n getHeightByPercent(percentY: number) {\n return MathUtil.getValueByTotalInPercent(this.height, percentY);\n }\n\n getHeightByRatio(ratio: number) {\n return MathUtil.getValueByTotalInRatio(this.height, ratio);\n }\n\n getXPercent(x: number) {\n return MathUtil.getPercentByTotal(this.width, x - this.x)\n }\n\n getXRatio(x: number) {\n return MathUtil.getRatioByTotal(this.width, x - this.x)\n }\n\n getXByPercent(xPercent: number) {\n return this.x + MathUtil.getValueByTotalInPercent(this.width, xPercent);\n }\n\n getXByRatio(ratio: number) {\n return this.x + MathUtil.getValueByTotalInRatio(this.width, ratio);\n }\n\n getYPercent(y: number) {\n return MathUtil.getPercentByTotal(this.height, y - this.y);\n }\n\n getYRatio(y: number) {\n return MathUtil.getRatioByTotal(this.height, y - this.y);\n }\n\n getYByPercent(yPercent: number) {\n return this.y + MathUtil.getValueByTotalInPercent(this.height, yPercent);\n }\n\n getYByRatio(ratio: number) {\n return this.y + MathUtil.getValueByTotalInRatio(this.height, ratio);\n }\n\n getPercent(point: { x: number, y: number }): Point2D {\n return new Point2D(\n this.getXPercent(point.x),\n this.getYPercent(point.y),\n );\n }\n\n /**\n * \uC8FC\uC5B4\uC9C4 width\uC5D0 \uB9DE\uCDB0 \uBE44\uC728\uC5D0 \uB530\uB77C height\uB97C \uC2A4\uCF00\uC77C\uB9C1\uD558\uC5EC \uC0C8\uB85C\uC6B4 Rect\uB97C \uBC18\uD658\uD569\uB2C8\uB2E4.\n * @param width \uC0C8\uB85C\uC6B4 width \uAC12\n * @returns \uBE44\uC728\uC5D0 \uB9DE\uAC8C height\uAC00 \uC870\uC815\uB41C Rect\n */\n toScaleByWidth(width: number): Rect {\n const ratio = this.height / this.width;\n return new Rect(this.x, this.y, width, width * ratio);\n }\n /**\n * \uC8FC\uC5B4\uC9C4 height\uC5D0 \uB9DE\uCDB0 \uBE44\uC728\uC5D0 \uB530\uB77C width\uB97C \uC2A4\uCF00\uC77C\uB9C1\uD558\uC5EC \uC0C8\uB85C\uC6B4 Rect\uB97C \uBC18\uD658\uD569\uB2C8\uB2E4.\n * @param height \uC0C8\uB85C\uC6B4 height \uAC12\n * @returns \uBE44\uC728\uC5D0 \uB9DE\uAC8C width\uAC00 \uC870\uC815\uB41C Rect\n */\n toScaleByHeight(height: number): Rect {\n const ratio = this.width / this.height;\n return new Rect(this.x, this.y, height * ratio, height);\n }\n\n toRatio(point: Rect | { x: number, y: number, w: number, h: number }): Rect {\n return new Rect(\n this.getXRatio(point.x),\n this.getYRatio(point.y),\n this.getWidthRatio(point instanceof Rect ? point.width : point.w),\n this.getHeightRatio(point instanceof Rect ? point.height : point.h),\n );\n }\n\n getRatio(point: { x: number, y: number }) {\n return new Point2D(\n this.getXRatio(point.x),\n this.getYRatio(point.y),\n );\n }\n\n getByPercent(percent: { x: number, y: number }): Point2D {\n return new Point2D(\n this.getXByPercent(percent.x),\n this.getYByPercent(percent.y),\n );\n }\n\n getByRatio(ratio: { x: number, y: number }) {\n return new Point2D(\n this.getXByRatio(ratio.x),\n this.getYByRatio(ratio.y),\n );\n }\n\n getDiffX(x: number) {\n return x - this.x;\n }\n\n getDiffY(y: number) {\n return y - this.y;\n }\n\n getDiffLeft(x: number) {\n this.getDiffX(x);\n }\n\n getDiffTop(y: number) {\n this.getDiffY(y);\n }\n\n getDiffRight(x: number) {\n return x - this.end.x;\n }\n\n getDiffBottom(y: number) {\n return y - this.end.y;\n }\n\n getDiffWidth(width: number) {\n return width - this.width;\n }\n\n getDiffHeight(height: number) {\n return height - this.height;\n }\n\n toDiff(rect: Rect) {\n return new Rect(\n rect.x - this.x,\n rect.y - this.y,\n rect.width - this.width,\n rect.height - this.height,\n );\n }\n\n setXByWidthPercent(wPercent: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(wPercent);\n this.setX({value: MathUtil.getValueByTotalInPercent(this.width, value), noLink});\n }\n\n set xByWidthPercent(wPercent: number) {\n this.setXByWidthPercent(wPercent);\n }\n\n setXByWidthRatio(wRatio: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(wRatio);\n this.setX({value: MathUtil.getValueByTotalInRatio(this.width, value), noLink});\n }\n\n set xByWidthRatio(wRatio: number) {\n this.setXByWidthRatio(wRatio);\n }\n\n setYByHeightPercent(hPercent: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(hPercent);\n this.setY({value: MathUtil.getValueByTotalInPercent(this.height, value), noLink});\n }\n\n set yByHeightPercent(hPercent: number) {\n this.setYByHeightPercent(hPercent);\n }\n\n setYByHeightRatio(ratio: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(ratio);\n this.setY({value: MathUtil.getValueByTotalInRatio(this.height, value), noLink});\n }\n\n set yByHeightRatio(ratio: number) {\n this.setYByHeightRatio(ratio);\n }\n\n addXByWidthPercent(wPercent: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(wPercent);\n this.setX({value: this.x + MathUtil.getValueByTotalInPercent(this.width, value), noLink});\n }\n\n addXByWidthRatio(wRatio: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(wRatio);\n this.setX({value: this.x + MathUtil.getValueByTotalInRatio(this.width, value), noLink});\n }\n\n addYByHeightPercent(hPercent: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(hPercent);\n this.setY({value: this.y + MathUtil.getValueByTotalInPercent(this.height, value), noLink});\n }\n\n addYByHeightRatio(ratio: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(ratio);\n this.setY({value: this.y + MathUtil.getValueByTotalInRatio(this.height, value), noLink});\n }\n\n setWidthByWidthPercent(wPercent: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(wPercent);\n this.setWidth({value: MathUtil.getValueByTotalInPercent(this.width, value), noLink});\n }\n\n set widthByWidthPercent(wPercent: number) {\n this.setWidthByWidthPercent(wPercent);\n }\n\n setWidthByWidthRatio(wRatio: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(wRatio);\n this.setWidth({value: MathUtil.getValueByTotalInRatio(this.width, value), noLink});\n }\n\n set widthByWidthRatio(wRatio: number) {\n this.setWidthByWidthRatio(wRatio);\n }\n\n setHeightByHeightPercent(hPercent: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(hPercent);\n this.setHeight({value: MathUtil.getValueByTotalInPercent(this.height, value), noLink});\n }\n\n set heightByHeightPercent(hPercent: number) {\n this.setHeightByHeightPercent(hPercent);\n }\n\n setHeightByHeightRatio(hRatio: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(hRatio);\n this.setHeight({value: MathUtil.getValueByTotalInRatio(this.height, value), noLink});\n }\n\n set heightByHeightRatio(hRatio: number) {\n this.setHeightByHeightRatio(hRatio);\n }\n\n // getWidthHeightPercentByPoint(point: Point2D): Point2D {\n // return new Point2D(this.getWidthPercent(point.x),this.getHeightPercent(point.y));\n // }\n //\n // getByPercent(point: Point2D): Point2D {\n // return new Point2D(this.getWidthByPercent(point.x),this.getHeightByPercent(point.y));\n // }\n\n ///////\n\n public copyByPercent(percent: number): Rect;\n public copyByPercent(percentX: number, percentY?: number): Rect ;\n public copyByPercent(percentOrX: number, percentY?: number): Rect {\n return new Rect(this.x, this.y,\n MathUtil.getValueByTotalInPercent(this.width, percentOrX),\n MathUtil.getValueByTotalInPercent(this.height, percentY ?? percentOrX)\n );\n }\n\n public copyByRatio(ratio: number): Rect;\n public copyByRatio(ratioX: number, ratioY?: number): Rect ;\n public copyByRatio(ratioOrX: number, ratioY?: number): Rect {\n return new Rect(this.x, this.y,\n MathUtil.getValueByTotalInRatio(this.width, ratioOrX),\n MathUtil.getValueByTotalInRatio(this.height, ratioY ?? ratioOrX)\n );\n }\n\n public isIn(data: { x: number, y: number }): boolean;\n public isIn(data: Point2D): boolean;\n public isIn(data: Rect): boolean\n public isIn(data: Point2D | Rect | { x: number, y: number }): boolean {\n if (data instanceof Rect) {\n return this.isIn(data.start) && this.isIn(data.end);\n } else {\n return data.x >= this.start.x && data.x <= this.end.x && data.y >= this.start.y && data.y <= this.end.y;\n }\n }\n\n public isOut(data: Point2D): boolean;\n public isOut(data: Rect): boolean;\n public isOut(data: Point2D | Rect) {\n if (data instanceof Rect) {\n return !this.isOverlap(data);\n } else {\n return !this.isIn(data);\n }\n }\n\n public isOverlap(data: Point2D): boolean;\n public isOverlap(data: Rect): boolean;\n public isOverlap(data: Point2D | Rect) {\n if (data instanceof Rect) {\n /*\n \uC0C8\uB85C\uC6B4 \uB85C\uC9C1\uC740 \uBC18\uB300\uB85C \"\uACB9\uCE58\uC9C0 \uC54A\uB294 \uC870\uAC74\"\uC744 \uCC3E\uACE0, \uADF8 \uC870\uAC74\uC5D0 \uD574\uB2F9\uD558\uC9C0 \uC54A\uC73C\uBA74 \"\uACB9\uCE5C\uB2E4\"\uACE0 \uD310\uB2E8\uD558\uB294\n \uBC29\uC2DD\uC785\uB2C8\uB2E4. \uC774 \uBC29\uBC95\uC774 \uD6E8\uC52C \uAC04\uB2E8\uD558\uACE0 \uBAA8\uB4E0 \uACBD\uC6B0\uB97C \uCC98\uB9AC\uD560 \uC218 \uC788\uC2B5\uB2C8\uB2E4.\n\n \uB450 \uC0AC\uAC01\uD615(A\uC640 B)\uC774 \uACB9\uCE58\uC9C0 \uC54A\uC73C\uB824\uBA74, \uB2E4\uC74C \uB124 \uAC00\uC9C0 \uC870\uAC74 \uC911 \uD558\uB098\uB77C\uB3C4 \uB9CC\uC871\uD574\uC57C \uD569\uB2C8\uB2E4.\n 1. A\uAC00 B\uC758 \uC644\uC804\uD788 \uC67C\uCABD\uC5D0 \uC788\uC744 \uB54C\n * A\uC758 \uC624\uB978\uCABD \uB05D(this.endX)\uC774 B\uC758 \uC67C\uCABD \uC2DC\uC791(data.x)\uBCF4\uB2E4 \uC67C\uCABD\uC5D0 \uC788\uB294 \uACBD\uC6B0\n * \uCF54\uB4DC: this.endX < data.x\n\n\n 2. A\uAC00 B\uC758 \uC644\uC804\uD788 \uC624\uB978\uCABD\uC5D0 \uC788\uC744 \uB54C\n * A\uC758 \uC67C\uCABD \uC2DC\uC791(this.x)\uC774 B\uC758 \uC624\uB978\uCABD \uB05D(data.endX)\uBCF4\uB2E4 \uC624\uB978\uCABD\uC5D0 \uC788\uB294 \uACBD\uC6B0\n * \uCF54\uB4DC: this.x > data.endX\n\n\n 3. A\uAC00 B\uC758 \uC644\uC804\uD788 \uC704\uCABD\uC5D0 \uC788\uC744 \uB54C\n * A\uC758 \uC544\uB798\uCABD \uB05D(this.endY)\uC774 B\uC758 \uC704\uCABD \uC2DC\uC791(data.y)\uBCF4\uB2E4 \uC704\uCABD\uC5D0 \uC788\uB294 \uACBD\uC6B0\n * \uCF54\uB4DC: this.endY < data.y\n\n\n 4. A\uAC00 B\uC758 \uC644\uC804\uD788 \uC544\uB798\uCABD\uC5D0 \uC788\uC744 \uB54C\n * A\uC758 \uC704\uCABD \uC2DC\uC791(this.y)\uC774 B\uC758 \uC544\uB798\uCABD \uB05D(data.endY)\uBCF4\uB2E4 \uC544\uB798\uCABD\uC5D0 \uC788\uB294 \uACBD\uC6B0\n * \uCF54\uB4DC: this.y > data.endY\n */\n const noOverlap = this.endX < data.x ||\n this.x > data.endX ||\n this.endY < data.y ||\n this.y > data.endY;\n return !noOverlap;\n // return (\n // this.isOverlap(data.leftTop) ||\n // this.isOverlap(data.rightTop) ||\n // this.isOverlap(data.rightBottom) ||\n // this.isOverlap(data.leftBottom)) ||\n // (\n // data.start.x < this.x && data.start.y < this.y &&\n // data.end.x > this.end.x && data.end.y > this.end.y\n // );\n } else {\n return this.isIn(data);\n }\n }\n\n public toString(): string {\n return `x:${this.x}, y:${this.y}, width: ${this.width}, height: ${this.height}`;\n }\n\n}\n", "import { Vector } from '../../Vector';\nimport { Rect } from '../../Rect';\n\ntype Transaform = [number, number, number, number, number, number];\n\ntype Color = {\n r?: number,\n g?: number,\n b?: number,\n a?: number\n};\n\nexport class Obj<T = any> extends Vector {\n\n public volume = 0; // \uBD80\uD53C\n public mass = 0; // \uC9C8\uB7C9\n public e = 0; // \uD0C4\uC131\n public rotate = 0; // \uD68C\uC804\n public width = 0; // \uB108\uBE44\n public height = 0; // \uB192\uC774\n public data?: T;\n // public age = 0; // \uC0DD\uC131\uB41C \uC2DC\uAC04 \uAC00\uC911\uCE58\n // https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/transform\n /*\n a, d: \uAC00\uB85C/\uC138\uB85C \uC2A4\uCF00\uC77C\n b, c: \uAE30\uC6B8\uC774\uAE30(skew)\n e, f: \uC774\uB3D9(translate)\n --------------\n a, b, c, d, e, f\n */\n public transform: Transaform = [1, 0, 0, 1, 0, 0];\n public color: Color = {\n r: 0,\n g: 0,\n b: 0,\n a: 255\n };\n public id?: string;\n\n // public data?: T;\n\n\n constructor(data?: {\n x?: number,\n y?: number,\n z?: number,\n volume?: number,\n mass?: number,\n e?: number,\n rotate?: number,\n width?: number,\n height?: number,\n transform?: Transaform,\n color?: Color,\n data?: T,\n }) {\n super();\n this.updateObjWithDefaults(data);\n }\n\n\n copyObj() {\n return new Obj({\n x: this.x,\n y: this.y,\n z: this.z,\n volume: this.volume,\n mass: this.mass,\n e: this.e,\n rotate: this.rotate,\n width: this.width,\n height: this.height,\n transform: [...this.transform],\n color: {...this.color},\n data: {...this.data}\n });\n }\n\n updateObjWithDefaults(data?: {\n x?: number,\n y?: number,\n z?: number,\n volume?: number,\n mass?: number,\n e?: number,\n rotate?: number,\n width?: number,\n height?: number,\n transform?: Transaform,\n color?: Color,\n data?: T,\n }) {\n if (data) {\n this.x = data.x ?? this.x;\n this.y = data.y ?? this.y;\n this.z = data.z ?? this.z;\n this.volume = data.volume ?? this.volume;\n this.mass = data.mass ?? this.mass;\n this.e = data.e ?? this.e;\n this.rotate = data.rotate ?? this.rotate;\n this.width = data.width ?? this.width;\n this.height = data.height ?? this.height;\n this.transform = [...(data.transform ?? this.transform)];\n this.color = {...(data.color ?? this.color)};\n const t = data.data ?? this.data;\n this.data = t?{...t}:undefined;\n }\n }\n\n setObj(data?: {\n x?: number,\n y?: number,\n z?: number,\n volume?: number,\n mass?: number,\n e?: number,\n rotate?: number,\n width?: number,\n height?: number,\n transform?: Transaform,\n color?: Color,\n data?: T,\n }) {\n if (data) {\n this.x = data.x??0;\n this.y = data.y??0;\n this.z = data.z??0;\n this.volume = data.volume??0;\n this.mass = data.mass??0;\n this.e = data.e??0;\n this.rotate = data.rotate??0;\n this.width = data.width??0;\n this.height = data.height??0;\n this.transform = [...(data.transform??[1, 0, 0, 1, 0, 0])];\n this.color = { ...(data.color??{r:0,g:0,b:0,a:255})};\n const data1 = data.data;\n this.data = data1 ? { ...data1} : undefined;\n }\n }\n\n toRect(): Rect {\n return new Rect(this.x, this.y, this.width, this.height);\n }\n\n // constructor(canvas: HTMLCanvasElement, context: CanvasRenderingContext2D, public avaliablePlace: Rectangle = new Rectangle(new Point(0, 0), new Point(0, 0))) {\n // super(canvas, context);\n // }\n\n\n // get centerPoint(): Point {\n // return new Point();\n // }\n}\n", "import { Point3D } from '../entity/Point3D';\nimport { Vector } from '../entity/Vector';\nimport { Obj } from '../entity/object/obj/Obj';\nimport { Point2D } from '../entity/Point2D';\n\nexport namespace MathUtil {\n export type BezierConfig = { p1x: number | 'random', p1y: number | 'random', p2x: number | 'random', p2y: number | 'random' } | [number | 'random', number | 'random', number | 'random', number | 'random'];\n export const getMinByObjectArray = (objectArray: Array<any>, varName: string) => {\n let min;\n if (varName && objectArray && objectArray.length > 0) {\n min = objectArray[0][varName];\n for (let i = 1; i < objectArray.length; i++) {\n min = Math.min(min, objectArray[i][varName]);\n }\n }\n return min;\n };\n\n export const hypot = (...data: number[]) => {\n // 2\uCC28\uC6D0 \uC608\uC2DC\n // Math.hypot(3, 4); // \uACB0\uACFC: 5 (3\u00B2 + 4\u00B2 = 9 + 16 = 25, \u221A25 = 5)\n\n// 3\uCC28\uC6D0 \uC608\uC2DC\n// Math.hypot(3, 4, 5); // \uACB0\uACFC: 7.0710678118654755\n\n return Math.hypot(...data);\n }\n\n // \uD53C\uD0C0\uACE0\uB77C\uC2A4 \uC815\uB9AC \uD568\uC218\n export const pythagorean = (a: number, b: number): number => {\n /*\n \uD53C\uD0C0\uACE0\uB77C\uC2A4 \uC815\uB9AC\n a^2 + b^2 = c^2\n c = \u221A(a^2 + b^2)\n */\n // return Math.sqrt(start * start + end * end);\n return Math.sqrt(a * a + b * b);\n };\n\n export const getMaxByObjectArray = (objectArray: Array<any>, varName: string) => {\n let max;\n if (varName && objectArray && objectArray.length > 0) {\n max = objectArray[0][varName];\n for (let i = 1; i < objectArray.length; i++) {\n max = Math.max(max, objectArray[i][varName]);\n }\n }\n return max;\n };\n\n export const sum = (array: number[]) => {\n return array.reduce((acc, curr) => acc + curr, 0);\n }\n\n export const avg = (array: number[]) => {\n return array.length > 0 ? MathUtil.sum(array) / array.length : 0;\n }\n\n export const minMax = (data: number, minMax: { min: number, max: number }) => {\n return Math.min(Math.max(data, minMax.min), minMax.max);\n }\n export const max = (array: number[]) => {\n return array.length > 0 ? Math.max(...array) : undefined;\n };\n\n export const min = (array: number[]) => {\n return array.length > 0 ? Math.min(...array) : undefined;\n };\n\n export const getSumByObjectArray = (objectArray: Array<any>, varName: string) => {\n let sum = 0;\n if (varName && objectArray && objectArray.length > 0) {\n for (let i = 0; i < objectArray.length; i++) {\n sum += objectArray[i][varName];\n }\n }\n return sum;\n };\n\n\n export type AngleUnitType = 'degreeAngle' | 'ratio' | 'percent';\n /**\n * Converts value to radians based on given type.\n * @param data - The value to convert to radians\n * @param option - Conversion type configuration\n * @param option.type - Type of conversion:\n * 'degreeAngle' - Converts from degrees to radians\n * 'ratio' - Multiplies value by 2\u03C0 (input range 0-1)\n * 'percent' - Converts percentage to 2\u03C0 ratio (input range 0-100)\n * @returns The converted value in radians\n * @example\n * // Convert 180 degrees to radians (3.14...)\n * radians(180, {type: 'degreeAngle'})\n *\n * // Convert 0.5 ratio to radians (3.14...)\n * radians(0.5, {type: 'ratio'})\n *\n * // Convert 50% to radians (3.14...)\n * radians(50, {type: 'percent'})\n */\n export const radians = (data: number, {type = 'degreeAngle'}: {type?: AngleUnitType}): number => {\n /*\n radian\n * 1.57..: 90\uB3C4, PI/2\n * 3.14..: 180\uB3C4, PI\n * 4.71..: 270\uB3C4, PI + PI/2\n * 6.28..: 360\uB3C4, PI * 2\n */\n if (type === 'ratio') {\n return (data * 2) * Math.PI;\n } else if (type === 'percent') {\n return ((data / 100) * 2) * Math.PI;\n } else {\n // return data * Math.PI / 180;\n return data / 180 * Math.PI;\n }\n };\n\n export const degrees = (data: number, {type = 'degreeAngle'}: {type?: AngleUnitType}): number => {\n if (type === 'ratio') {\n return data * 360;\n } else if (type === 'percent') {\n return (data / 100) * 360;\n } else {\n return data * 180 / Math.PI;\n }\n };\n // static createCanvas(w, h) {\n // let canvas = document.createElement('canvas');\n // canvas.width = w;\n // canvas.height = h;\n // return canvas;\n // }\n //\n // static copyCanvas(canvas) {\n // let newCanvas = document.createElement('canvas');\n // newCanvas.width = canvas.width;\n // newCanvas.height = canvas.height;\n // context = newCanvas.getContext('2d');\n // context.drawImage(canvas, 0, 0);\n // return newCanvas;\n // }\n\n /**\n 1. \uBE44\uC728\uC758 \uAC1C\uB150\n \uBE44\uC728(Ratio): \uB450 \uC591\uC758 \uC0C1\uB300\uC801\uC778 \uD06C\uAE30\uB97C \uBE44\uAD50\uD55C \uAC12\uC73C\uB85C, \uC77C\uBC18\uC801\uC73C\uB85C \uBD84\uC218\uB098 \uC18C\uC218\uB85C \uD45C\uD604\uB429\uB2C8\uB2E4. \uC608\uB97C \uB4E4\uC5B4, \"2:3\" \uBE44\uC728\uC740 \uB450 \uC218\uC758 \uBE44\uAC00 2 \uB300 3\uC774\uB77C\uB294 \uB73B\uC774\uBA70, \uC774\uB294 2/3\uB85C\uB3C4 \uB098\uD0C0\uB0BC \uC218 \uC788\uC2B5\uB2C8\uB2E4.\n \uB2E8\uC704 \uBE44\uC728(Normalized Ratio): \uD55C \uAC12\uC744 \uAE30\uC900\uC73C\uB85C \uB2E4\uB978 \uAC12\uC744 \uC870\uC815\uD55C \uBE44\uC728\uC744 \uC758\uBBF8\uD569\uB2C8\uB2E4. \uC5EC\uAE30\uC11C\uB294 \uB108\uBE44(w)\uB97C 1\uB85C \uC815\uADDC\uD654(normalize)\uD558\uC5EC \uB192\uC774(h)\uC758 \uC0C1\uB300\uC801 \uAC12\uC744 \uAD6C\uD558\uB294 \uAC83\uC774 \uBAA9\uD45C\uC785\uB2C8\uB2E4.\n \uC774\uBBF8\uC9C0 \uBE44\uC728: \uC774\uBBF8\uC9C0\uC758 \uB108\uBE44\uC640 \uB192\uC774 \uBE44\uC728\uC740 \uBCF4\uD1B5 \"w:h\" \uD615\uC2DD\uC73C\uB85C \uD45C\uD604\uB418\uBA70, \uC774 \uBE44\uC728\uC744 \uC720\uC9C0\uD558\uBA74\uC11C \uD06C\uAE30\uB97C \uC870\uC815\uD560 \uB54C \uC720\uC6A9\uD569\uB2C8\uB2E4.\n 2. \uACC4\uC0B0 \uBC29\uBC95\n \uC8FC\uC5B4\uC9C4 \uB370\uC774\uD130:\n\n \uB108\uBE44(w) = 1652 \uD53D\uC140\n \uB192\uC774(h) = 421 \uD53D\uC140\n \uBAA9\uD45C: \uB108\uBE44\uB97C 1\uB85C \uBCF4\uC558\uC744 \uB54C \uB192\uC774\uC758 \uAC12 \uAD6C\uD558\uAE30\n \uB2E8\uACC4\uBCC4 \uACC4\uC0B0\n \uC6D0\uB798 \uBE44\uC728 \uAD6C\uD558\uAE30:\n \uC774\uBBF8\uC9C0\uC758 \uBE44\uC728\uC740 w:h = 1652:421\uC785\uB2C8\uB2E4.\n \uC774\uB97C \uBD84\uC218\uB85C \uD45C\uD604\uD558\uBA74 1652 / 421\uC785\uB2C8\uB2E4.\n \uB108\uBE44\uB97C 1\uB85C \uC815\uADDC\uD654:\n \uB108\uBE44\uB97C 1\uB85C \uB9CC\uB4E4\uAE30 \uC704\uD574, \uC6D0\uB798 \uB108\uBE44(1652)\uB97C 1\uB85C \uB098\uB204\uACE0, \uC774\uB97C \uB192\uC774\uC5D0\uB3C4 \uB3D9\uC77C\uD558\uAC8C \uC801\uC6A9\uD569\uB2C8\uB2E4.\n \uC815\uADDC\uD654\uB41C \uB192\uC774 = \uC6D0\uB798 \uB192\uC774(h) \u00F7 \uC6D0\uB798 \uB108\uBE44(w)\n \uC218\uC2DD: h' = h / w (\uC5EC\uAE30\uC11C h'\uB294 \uC815\uADDC\uD654\uB41C \uB192\uC774)\n \uACC4\uC0B0 \uC801\uC6A9:\n \uC815\uADDC\uD654\uB41C \uB192\uC774 = 421 / 1652\n \uACC4\uC0B0: 421 \u00F7 1652 \u2248 0.25485 (\uC18C\uC218\uC810 \uC57D 5\uC790\uB9AC\uAE4C\uC9C0)\n \uACB0\uACFC \uD574\uC11D:\n \uB108\uBE44\uAC00 1\uC77C \uB54C \uB192\uC774\uB294 \uC57D 0.25485\uC785\uB2C8\uB2E4. \uC774\uB294 \uB192\uC774\uAC00 \uB108\uBE44\uC758 \uC57D 25.485%\uC5D0 \uD574\uB2F9\uD568\uC744 \uC758\uBBF8\uD569\uB2C8\uB2E4.\n \uAC80\uC99D\n \uC6D0\uB798 \uBE44\uC728\uC744 \uC720\uC9C0\uD558\uB824\uBA74, \uC815\uADDC\uD654\uB41C \uAC12\uC744 \uC5ED\uC73C\uB85C \uC801\uC6A9\uD574 \uC6D0\uB798 \uAC12\uC744 \uBCF5\uC6D0\uD560 \uC218 \uC788\uC5B4\uC57C \uD569\uB2C8\uB2E4.\n \uC815\uADDC\uD654\uB41C \uBE44\uC728(0.25485)\uC744 1652\uC5D0 \uACF1\uD558\uBA74: 1652 * 0.25485 \u2248 421, \uC774\uB294 \uC6D0\uB798 \uB192\uC774\uC640 \uC77C\uCE58\uD558\uBBC0\uB85C \uACC4\uC0B0\uC774 \uC62C\uBC14\uB984.\n 3. \uC218\uC2DD \uC815\uB9AC\n \uC77C\uBC18\uC801\uC778 \uC815\uADDC\uD654 \uC218\uC2DD:\n \uC815\uADDC\uD654\uB41C \uB192\uC774(h') = h / w\n \uC815\uADDC\uD654\uB41C \uB108\uBE44(w') = w / w = 1 (\uAE30\uC900\uAC12)\n \uC774 \uBB38\uC81C \uC801\uC6A9:\n h' = 421 / 1652 \u2248 0.25485\n 4. \uB300\uC548: \uBE44\uC728\uB85C \uD45C\uD604\n \uBE44\uC728\uC744 \"1:\uBE44\uC728\uAC12\" \uD615\uC2DD\uC73C\uB85C \uD45C\uD604\uD558\uB824\uBA74, \uB192\uC774\uB97C \uB108\uBE44\uB85C \uB098\uB208 \uAC12\uC744 \uADF8\uB300\uB85C \uC0AC\uC6A9.\n \uACB0\uACFC: 1 : 0.25485 \uB610\uB294 \uC57D 1 : 0.255 (\uC18C\uC218\uC810 \uBC18\uC62C\uB9BC).\n 5. \uCD94\uAC00 \uAC1C\uB150\n \uBE44\uB840\uC2DD: \uC774\uBBF8\uC9C0 \uD06C\uAE30\uB97C \uC870\uC815\uD560 \uB54C \uBE44\uC728\uC744 \uC720\uC9C0\uD558\uB824\uBA74, w1 / h1 = w2 / h2\uB97C \uB9CC\uC871\uD574\uC57C \uD569\uB2C8\uB2E4. \uC5EC\uAE30\uC11C w2 = 1\uB85C \uC124\uC815\uD55C \uACBD\uC6B0, h2 = h1 / w1\uC774 \uB429\uB2C8\uB2E4.\n \uC2E4\uC81C \uC801\uC6A9: \uC6F9 \uB514\uC790\uC778\uC774\uB098 \uADF8\uB798\uD53D\uC5D0\uC11C \uC774\uBBF8\uC9C0\uB97C \uB9AC\uC0AC\uC774\uC9D5\uD560 \uB54C, \uC6D0\uBCF8 \uBE44\uC728(1652:421)\uC744 \uC720\uC9C0\uD558\uB824\uBA74 \uC774 \uC815\uADDC\uD654\uB41C \uAC12\uC744 \uC0AC\uC6A9\uD574 \uB192\uC774\uB97C \uACC4\uC0B0.\n <script>\n const w = 1652;\n const h = 421;\n const normalizedHeight = h / w;\n console.log(`\uC815\uADDC\uD654\uB41C \uB192\uC774: ${normalizedHeight.toFixed(5)}`); // 0.25485\n console.log(`\uC6D0\uB798 \uBE44\uC728 \uD655\uC778: ${w * normalizedHeight} \u2248 ${h}`); // \uC57D 421\n </script>\n */\n export const ratio = (numerator: number, denominator: number, multiplier: number = 1): number => {\n // numerator(\uBD84\uC790) : denominator(\uBD84\uBAA8) = multiplier : x\n // x = multiplier * denominator / numerator\n return multiplier * (denominator / numerator)\n // a:b = c:x \uBE44\uB840\uC2DD\uC744 \uC774\uC6A9\uD574 x \uAC12\uC744 \uAD6C\uD568\n // ax = bc\n // x = bc/a\n }\n //end - start \uB05D\uACFC \uC2DC\uC791\uC758 \uC0AC\uC774\uAE38\uC774\uB97C \uCDE8\uB4DD\uD55C\uB2E4.\n export const getBetweenLength = (start: number, end: number) => {\n return end - start;\n };\n\n //\uC804\uCCB4\uAC12\uC5D0\uC11C \uC77C\uBD80\uAC12\uC740 \uBA87 \uD37C\uC13C\uD2B8? \uACC4\uC0B0\uBC95 \uACF5\uC2DD tot\uC5D0\uC11C data\uB294 \uBA87%\uC778\uAC00.\n export const getPercentByTotal = (tot: number, data: number) => {\n /*\n \uC804\uCCB4\uAC12\uC5D0\uC11C \uC77C\uBD80\uAC12\uC740 \uBA87 \uD37C\uC13C\uD2B8? \uACC4\uC0B0\uBC95 \uACF5\uC2DD\n \uC77C\uBD80\uAC12 \u00F7 \uC804\uCCB4\uAC12 X 100\n \uC608\uC81C) 300\uC5D0\uC11C 105\uB294 \uBA87\uD37C\uC13C\uD2B8?\n \uB2F5: 35%\n */\n return (data / tot) * 100;\n };\n export const getRatioByTotal = (tot: number, data: number) => {\n return (data / tot)\n };\n\n //\uC804\uCCB4\uAC12\uC758 \uBA87 \uD37C\uC13C\uD2B8\uB294 \uC5BC\uB9C8? \uACC4\uC0B0\uBC95 \uACF5\uC2DD tot\uC5D0\uC11C wantPercent\uB294 \uBA87\uC778\uAC00?\n export const getValueByTotalInPercent = (tot: number, wantPercent: number) => {\n /*\n \uC804\uCCB4\uAC12 X \uD37C\uC13C\uD2B8 \u00F7 100\n \uC608\uC81C) 300\uC758 35\uD37C\uC13C\uD2B8\uB294 \uC5BC\uB9C8?\n \uB2F5) 105\n */\n return (tot * wantPercent) / 100;\n };\n export const getValueByTotalInRatio = (tot: number, ratio: number) => {\n return (tot * ratio);\n };\n\n //\uC22B\uC790\uB97C \uBA87 \uD37C\uC13C\uD2B8 \uC99D\uAC00\uC2DC\uD0A4\uB294 \uACF5\uC2DD tot\uC5D0\uC11C wantPercent\uC744 \uC99D\uAC00 \uC2DC\uD0A8\uB2E4\n export const getValuePercentUp = (tot: number, wantPercent: number) => {\n /*\n \uC22B\uC790\uB97C \uBA87 \uD37C\uC13C\uD2B8 \uC99D\uAC00\uC2DC\uD0A4\uB294 \uACF5\uC2DD\n \uC22B\uC790 X (1 + \uD37C\uC13C\uD2B8 \u00F7 100)\n \uC608\uC81C) 1548\uC744 66\uD37C\uC13C\uD2B8 \uC99D\uAC00\uD558\uBA74?\n \uB2F5) 2569.68\n */\n return tot * (1 + wantPercent / 100);\n };\n\n export const getValueRatioUp = (tot: number, ratio: number) => {\n return tot * (1 + ratio);\n }\n\n //\uC22B\uC790\uB97C \uBA87 \uD37C\uC13C\uD2B8 \uAC10\uC18C\uD558\uB294 \uACF5\uC2DD tot\uC5D0\uC11C wantPercent\uC744 \uC99D\uAC10 \uC2DC\uD0A8\uB2E4\n export const getValuePercentDown = (tot: number, wantPercent: number) => {\n /*\n \uC22B\uC790\uB97C \uBA87 \uD37C\uC13C\uD2B8 \uAC10\uC18C\uD558\uB294 \uACF5\uC2DD\n \uC22B\uC790 X (1 - \uD37C\uC13C\uD2B8 \u00F7 100)\n \uC608\uC81C) 1548\uC744 66\uD37C\uC13C\uD2B8 \uAC10\uC18C\uD558\uBA74?\n \uB2F5) 526.32\n */\n return tot * (1 - wantPercent / 100);\n };\n\n export const getValueRatioDown = (tot: number, ratio: number) => {\n return tot * (1 - ratio);\n }\n\n\n //\uBC14\uB840\uC2DD\n // A:B = C:X => 30:50 = 33 : x\n // 30X = 50*33\n // X = BC / 30\n\n\n // Bezier\n // https://cubic-bezier.com/#.17,.67,.83,.67\n // https://matthewlein.com/tools/ceaser\n // https://easings.net/ko#\n // (0.250, 0.250, 0.750, 0.750); /* linear */\n export const beziers = (points: (Point3D | { x: number; y: number, z: number })[], frame: number) => {\n const datas = new Array(frame).fill(undefined);\n for (let i = 0; i < datas.length; i++) {\n datas[i] = MathUtil.bezier(points, frame, i);\n }\n return datas;\n };\n\n // \uCC98\uC74C\uC810\uC740 \uD3EC\uD568\uB418\uC9C0 \uC54A\uB294\uB2E4, \uB05D\uC810\uC740 \uD3EC\uD568\uB41C\uB2E4.\n export const bezier = (points: (Point3D | { x: number; y: number, z: number })[], frame: number, idx: number): Vector => {\n if (points && points.length > 0) {\n const pv = points.map(it => new Vector(it.x, it.y, it.z));\n const steps: Vector[] = [];\n pv.reduce((a, b) => {\n const step = a.toSub(b).div(frame).mult(idx + 1);\n steps.push(a.toSub(step));\n return b;\n });\n\n if (steps.length <= 1) {\n return steps[0];\n }\n return MathUtil.bezier(steps.map(it => new Point3D(it)), frame, idx);\n } else {\n return new Vector();\n }\n };\n\n // \uC2DC\uC791\uC810\uACFC \uB05D\uC810\uC740 \uD3EC\uD568\uD558\uC9C0 \uC54A\uB294\uB2E4.\n export function cubicBezier(position: { start: number; end: number; }, frameConfig: { frame: number; }, bezierConfig: BezierConfig): number[];\n export function cubicBezier(position: { start: Obj; end: Obj; }, frameConfig: { frame: number; }, bezierConfig: BezierConfig): Obj[];\n export function cubicBezier(position: { start: Point3D; end: Point3D; }, frameConfig: { frame: number; }, bezierConfig: BezierConfig): Point3D[];\n export function cubicBezier(\n position: {\n start: number; // \uC2DC\uC791 \uAC12\n end: number; // \uB05D \uAC12\n } | {\n start: Point3D; // \uC2DC\uC791 \uAC12\n end: Point3D; // \uB05D \uAC12\n } | {\n start: Obj; // \uC2DC\uC791 \uAC12\n end: Obj; // \uB05D \uAC12\n },\n frameConfig: {\n // includeStartEnd?: boolean,\n frame: number; // \uD504\uB808\uC784 \uC218 (\uBC30\uC5F4 \uD06C\uAE30)\n },\n bezierConfig: BezierConfig\n ): number[] | Point3D[] | Obj[] {\n\n\n if (position.start instanceof Obj && position.end instanceof Obj) {\n const x = MathUtil.cubicBezier({start: position.start.x, end: position.end.x}, frameConfig, bezierConfig);\n const y = MathUtil.cubicBezier({start: position.start.y, end: position.end.y}, frameConfig, bezierConfig);\n const z = MathUtil.cubicBezier({start: position.start.z, end: position.end.z}, frameConfig, bezierConfig);\n const v = MathUtil.cubicBezier({start: position.start.volume, end: position.end.volume}, frameConfig, bezierConfig);\n const m = MathUtil.cubicBezier({start: position.start.mass, end: position.end.mass}, frameConfig, bezierConfig);\n const e = MathUtil.cubicBezier({start: position.start.e, end: position.end.e}, frameConfig, bezierConfig);\n const r = MathUtil.cubicBezier({start: position.start.rotate, end: position.end.rotate}, frameConfig, bezierConfig);\n const w = MathUtil.cubicBezier({start: position.start.width, end: position.end.width}, frameConfig, bezierConfig);\n const h = MathUtil.cubicBezier({start: position.start.height, end: position.end.height}, frameConfig, bezierConfig);\n const t0 = MathUtil.cubicBezier({start: position.start.transform[0], end: position.end.transform[0]}, frameConfig, bezierConfig);\n const t1 = MathUtil.cubicBezier({start: position.start.transform[1], end: position.end.transform[1]}, frameConfig, bezierConfig);\n const t2 = MathUtil.cubicBezier({start: position.start.transform[2], end: position.end.transform[2]}, frameConfig, bezierConfig);\n const t3 = MathUtil.cubicBezier({start: position.start.transform[3], end: position.end.transform[3]}, frameConfig, bezierConfig);\n const t4 = MathUtil.cubicBezier({start: position.start.transform[4], end: position.end.transform[4]}, frameConfig, bezierConfig);\n const t5 = MathUtil.cubicBezier({start: position.start.transform[5], end: position.end.transform[5]}, frameConfig, bezierConfig);\n const colorR = MathUtil.cubicBezier({start: position.start.color.r ?? 0, end: position.end.color.r ?? 0}, frameConfig, bezierConfig);\n const colorG = MathUtil.cubicBezier({start: position.start.color.g ?? 0, end: position.end.color.g ?? 0}, frameConfig, bezierConfig);\n const colorB = MathUtil.cubicBezier({start: position.start.color.b ?? 0, end: position.end.color.b ?? 0}, frameConfig, bezierConfig);\n const colorA = MathUtil.cubicBezier({start: position.start.color.a ?? 255, end: position.end.color.a ?? 255}, frameConfig, bezierConfig);\n const objs = x.map((x, idx) => {\n const obj = new Obj({x, y: y[idx], z: z[idx]});\n obj.volume = v[idx];\n obj.mass = m[idx];\n obj.e = e[idx];\n obj.rotate = r[idx];\n obj.width = w[idx];\n obj.height = h[idx];\n obj.transform = [t0[idx], t1[idx], t2[idx], t3[idx], t4[idx], t5[idx]];\n obj.color = {r: colorR[idx], g: colorG[idx], b: colorB[idx], a: colorA[idx]};\n return obj;\n });\n return objs;\n } else if (position.start instanceof Point3D && position.end instanceof Point3D) {\n const x = MathUtil.cubicBezier({start: position.start.x, end: position.end.x}, frameConfig, bezierConfig);\n const y = MathUtil.cubicBezier({start: position.start.y, end: position.end.y}, frameConfig, bezierConfig);\n const z = MathUtil.cubicBezier({start: position.start.z, end: position.end.z}, frameConfig, bezierConfig);\n return x.map((x, idx) => new Point3D(x, y[idx], z[idx]));\n }\n\n\n const {start, end} = position as { start: number, end: number };\n\n // ----\n\n const {frame} = frameConfig;\n let {p1x, p1y, p2x, p2y} = Array.isArray(bezierConfig) ? {p1x: bezierConfig[0], p1y: bezierConfig[1], p2x: bezierConfig[2], p2y: bezierConfig[3]} : bezierConfig;\n p1x = p1x === 'random' ? Math.random() : p1x;\n p1y = p1y === 'random' ? Math.random() : p1y;\n p2x = p2x === 'random' ? Math.random() : p2x;\n p2y = p2y === 'random' ? Math.random() : p2y;\n\n const result: number[] = [];\n const totalChange = end - start;\n\n // console.log('----222->',totalChange);\n\n // 3\uCC28 \uBCA0\uC9C0\uC5B4 \uACE1\uC120 \uACF5\uC2DD\n const bezier = (t: number): number => {\n const t2 = Number(t * t);\n const t3 = Number(t2 * t);\n const mt = Number(1 - t);\n const mt2 = Number(mt * mt);\n const mt3 = Number(mt2 * mt);\n\n return mt3 * 0 + 3 * mt2 * t * Number(p1y) + 3 * mt * t2 * Number(p2y) + t3 * 1;\n };\n\n // frame \uC218\uB9CC\uD07C \uACC4\uC0B0, \uC2DC\uC791\uC810, \uB05D\uC810 \uC81C\uC678\n const targetFrame = frame + 1;\n for (let i = 1; i < targetFrame; i++) {\n // const t = frame <= 1 ? 1 : (i + 1) / frame;\n // const t = frame <= 1 ? 1 : (i + 1) / frame;\n const t = i / targetFrame;\n const progress = bezier(t);\n // console.log('pppppppp', progress);\n const value = start + totalChange * progress;\n result.push(value);\n }\n\n return result;\n\n }\n\n export const diff = (a: number, b: number) => {\n return Math.abs(a - b);\n };\n\n /*\n > \uD22C\uC601\uBD80\uBD84? \uC800\uBD80\uBD84 \uD575\uC2EC\uBD80\uBD84 \uB354 \uC790\uC138\uD558\uAC8C \uC54C\uB824\uC904\uB798\n\n\u2726 \uB124, \uADF8\uB7FC\uC694. \uC774 \uBD80\uBD84\uC774 \uAE30\uD558\uD559\uC801\uC73C\uB85C \uC5B4\uB5A4 \uC758\uBBF8\uB97C \uAC00\uC9C0\uB294\uC9C0 \uADF8\uB9BC\uACFC \uD568\uAED8 \uBA38\uB9BF\uC18D\uC73C\uB85C \uC0C1\uC0C1\uD558\uBA70 \uC774\uD574\uD558\uBA74\n \uC27D\uC2B5\uB2C8\uB2E4.\n\n \uD575\uC2EC \uC544\uC774\uB514\uC5B4: \uADF8\uB9BC\uC790 \uB0B4\uB9AC\uAE30 (Projection)\n\n \uAC00\uC7A5 \uAC04\uB2E8\uD55C \uBE44\uC720\uB294 \uADF8\uB9BC\uC790\uC785\uB2C8\uB2E4.\n\n\n * `\uC120\uBD84 vw`: \uB545\uC5D0 \uB193\uC5EC\uC788\uB294 \uB9C9\uB300\uAE30\uB77C\uACE0 \uC0C1\uC0C1\uD574 \uBCF4\uC138\uC694. (v\uB294 \uC2DC\uC791\uC810, w\uB294 \uB05D\uC810)\n * `\uC810 p`: \uACF5\uC911\uC5D0 \uB5A0 \uC788\uB294 \uB9C8\uC6B0\uC2A4 \uCEE4\uC11C\uB77C\uACE0 \uC0C1\uC0C1\uD574 \uBCF4\uC138\uC694.\n * \uBAA9\uD45C: \uB9C8\uC6B0\uC2A4 \uCEE4\uC11C(p)\uC5D0\uC11C \uB9C9\uB300\uAE30(vw)\uAE4C\uC9C0 \uAC00\uC7A5 \uAC00\uAE4C\uC6B4 \uC9C0\uC810\uC744 \uCC3E\uB294 \uAC83.\n\n\n \uAC00\uC7A5 \uAC00\uAE4C\uC6B4 \uC9C0\uC810\uC740 p\uC5D0\uC11C \uB9C9\uB300\uAE30\uB85C \uC218\uC9C1\uC73C\uB85C \uC120\uC744 \uB0B4\uB838\uC744 \uB54C \uB9CC\uB098\uB294 \uC810\uC785\uB2C8\uB2E4. \uB9C8\uCE58 p \uBC14\uB85C \uC704\uC5D0 \uC190\uC804\uB4F1\uC744\n \uCF1C\uC11C \uB9C9\uB300\uAE30\uC5D0 \uADF8\uB9BC\uC790\uB97C \uB9CC\uB4DC\uB294 \uAC83\uACFC \uAC19\uC2B5\uB2C8\uB2E4. \uC774 \uADF8\uB9BC\uC790\uAC00 \uB5A8\uC5B4\uC9C0\uB294 \uC9C0\uC810\uC774 \uBC14\uB85C \uD22C\uC601(projection)\uC785\uB2C8\uB2E4.\n\n ---\n\n \uCF54\uB4DC \uC0C1\uC138 \uBD84\uC11D\n\n\n let t = ((p.x - v.x) * (w.x - v.x) + (p.y - v.y) * (w.y - v.y)) / l2;\n\n \uC774 \uD55C \uC904\uC758 \uCF54\uB4DC\uB294 \uBC14\uB85C \uADF8 '\uADF8\uB9BC\uC790\uAC00 \uB9C9\uB300\uAE30\uC758 \uC5B4\uB514\uC5D0 \uB5A8\uC5B4\uC9C0\uB294\uAC00'\uB97C \uACC4\uC0B0\uD558\uB294 \uACFC\uC815\uC785\uB2C8\uB2E4. \uC5EC\uAE30\uC11C t\uB294\n \uBE44\uC728\uC744 \uC758\uBBF8\uD569\uB2C8\uB2E4.\n\n 1. \uBCA1\uD130(Vector)\uB85C \uC0DD\uAC01\uD558\uAE30\n\n\n \uCF54\uB4DC\uB97C \uC774\uD574\uD558\uAE30 \uC704\uD574 \uB450 \uAC1C\uC758 \uBCA1\uD130\uB97C \uC0DD\uAC01\uD574\uC57C \uD569\uB2C8\uB2E4.\n\n\n * \uBCA1\uD130 1 (`vw`): \uB9C9\uB300\uAE30 \uC790\uCCB4\uC758 \uBC29\uD5A5\uACFC \uAE38\uC774\uB97C \uB098\uD0C0\uB0B4\uB294 \uBCA1\uD130\uC785\uB2C8\uB2E4.\n * w.x - v.x (x\uBC29\uD5A5)\n * w.y - v.y (y\uBC29\uD5A5)\n * \uBCA1\uD130 2 (`vp`): \uB9C9\uB300\uAE30 \uC2DC\uC791\uC810\uC5D0\uC11C \uB9C8\uC6B0\uC2A4 \uCEE4\uC11C\uAE4C\uC9C0\uC758 \uBCA1\uD130\uC785\uB2C8\uB2E4.\n * p.x - v.x (x\uBC29\uD5A5)\n * p.y - v.y (y\uBC29\uD5A5)\n\n\n 2. \uBD84\uC790: \uBCA1\uD130 \uB0B4\uC801 (Dot Product)\n\n ((p.x - v.x) * (w.x - v.x) + (p.y - v.y) * (w.y - v.y))\n\n\n \uC774 \uBD80\uBD84\uC740 \uB450 \uBCA1\uD130 vp\uC640 vw\uC758 \uB0B4\uC801(dot product)\uC744 \uACC4\uC0B0\uD558\uB294 \uACF5\uC2DD\uC785\uB2C8\uB2E4. \uBCA1\uD130 \uB0B4\uC801\uC740 \uB450 \uBCA1\uD130\uAC00 \uC5BC\uB9C8\uB098\n \"\uAC19\uC740 \uBC29\uD5A5\uC744 \uBC14\uB77C\uBCF4\uACE0 \uC788\uB294\uC9C0\"\uB97C \uB098\uD0C0\uB0B4\uB294 \uC218\uCE58\uC785\uB2C8\uB2E4.\n\n\n * \uB450 \uBCA1\uD130\uAC00 \uC11C\uB85C \uC218\uC9C1\uC774\uBA74 \uB0B4\uC801\uC740 0\uC785\uB2C8\uB2E4.\n * \uB450 \uBCA1\uD130\uAC00 \uAC19\uC740 \uBC29\uD5A5\uC744 \uBCFC\uC218\uB85D \uB0B4\uC801 \uAC12\uC740 \uCEE4\uC9D1\uB2C8\uB2E4.\n\n \uAE30\uD558\uD559\uC801\uC73C\uB85C, `vp` \uBCA1\uD130\uB97C `vw` \uBCA1\uD130 \uC704\uB85C \uD22C\uC601(\uADF8\uB9BC\uC790)\uC2DC\uCF30\uC744 \uB54C\uC758 \uAE38\uC774\uC640 \uAD00\uB828\uC774 \uC788\uC2B5\uB2C8\uB2E4.\n\n 3. \uBD84\uBAA8: l2\n\n\n l2\uB294 \uC55E\uC5D0\uC11C \uACC4\uC0B0\uD588\uB4EF\uC774 \uB9C9\uB300\uAE30 \uBCA1\uD130 vw\uC758 \uAE38\uC774\uC758 \uC81C\uACF1\uC785\uB2C8\uB2E4.\n\n 4. t\uC758 \uC758\uBBF8: \uBE44\uC728\n\n \uACB0\uAD6D t\uB294 \uB2E4\uC74C\uACFC \uAC19\uC774 \uACC4\uC0B0\uB429\uB2C8\uB2E4.\n\n t = (\uBCA1\uD130 vp\uC640 vw\uC758 \uB0B4\uC801) / (\uBCA1\uD130 vw\uC758 \uAE38\uC774 \uC81C\uACF1)\n\n\n \uC774 t \uAC12\uC774 \uBC14\uB85C \uD22C\uC601\uB41C \uADF8\uB9BC\uC790 \uC9C0\uC810\uC774 \uB9C9\uB300\uAE30 \uC2DC\uC791\uC810 `v`\uB85C\uBD80\uD130 \uC5BC\uB9C8\uB098 \uB5A8\uC5B4\uC838 \uC788\uB294\uC9C0\uB97C \uB098\uD0C0\uB0B4\uB294 \uBE44\uC728\uC774\n \uB429\uB2C8\uB2E4.\n\n\n * `t = 0`: \uADF8\uB9BC\uC790\uAC00 \uC815\uD655\uD788 \uB9C9\uB300\uAE30 \uC2DC\uC791\uC810 v\uC5D0 \uB5A8\uC5B4\uC9D1\uB2C8\uB2E4.\n * `t = 1`: \uADF8\uB9BC\uC790\uAC00 \uC815\uD655\uD788 \uB9C9\uB300\uAE30 \uB05D\uC810 w\uC5D0 \uB5A8\uC5B4\uC9D1\uB2C8\uB2E4.\n * `t = 0.5`: \uADF8\uB9BC\uC790\uAC00 \uC815\uD655\uD788 \uB9C9\uB300\uAE30 \uD55C\uAC00\uC6B4\uB370\uC5D0 \uB5A8\uC5B4\uC9D1\uB2C8\uB2E4.\n * `t < 0` (\uC608: `t = -0.2`): p\uAC00 v\uC758 \"\uB4A4\uCABD\"\uC5D0 \uC788\uC5B4\uC11C, \uADF8\uB9BC\uC790\uAC00 \uB9C9\uB300\uAE30 \uC2DC\uC791\uC810 \uC774\uC804\uC5D0 \uB5A8\uC5B4\uC9D1\uB2C8\uB2E4.\n (\uB9C9\uB300\uAE30\uB97C \uBB34\uD55C\uD55C \uC9C1\uC120\uC73C\uB85C \uBD24\uC744 \uB54C)\n * `t > 1` (\uC608: `t = 1.5`): p\uAC00 w\uC758 \"\uC55E\uCABD\"\uC5D0 \uC788\uC5B4\uC11C, \uADF8\uB9BC\uC790\uAC00 \uB9C9\uB300\uAE30 \uB05D\uC810\uC744 \uC9C0\uB098\uC11C \uB5A8\uC5B4\uC9D1\uB2C8\uB2E4.\n (\uB9C9\uB300\uAE30\uB97C \uBB34\uD55C\uD55C \uC9C1\uC120\uC73C\uB85C \uBD24\uC744 \uB54C)\n\n \uACB0\uB860\n\n\n \uC774 t \uAC12\uC744 \uACC4\uC0B0\uD558\uB294 \uAC83\uC774 \uD575\uC2EC\uC778 \uC774\uC720\uB294, \uB9C8\uC6B0\uC2A4 \uD3EC\uC778\uD130(p)\uC640 \uAC00\uC7A5 \uAC00\uAE4C\uC6B4 \uC810\uC774 \uB9C9\uB300\uAE30 \uB0B4\uBD80\uC5D0 \uC788\uB294\uC9C0,\n \uC544\uB2C8\uBA74 \uC591\uCABD \uB05D\uC810 \uC911 \uD558\uB098\uC778\uC9C0 \uD310\uB2E8\uD560 \uC218 \uC788\uB294 \uAE30\uC900\uC744 \uC81C\uACF5\uD558\uAE30 \uB54C\uBB38\uC785\uB2C8\uB2E4.\n\n\n * t\uAC00 0\uACFC 1 \uC0AC\uC774\uC5D0 \uC788\uB2E4\uBA74, \uAC00\uC7A5 \uAC00\uAE4C\uC6B4 \uC810\uC740 \uB9C9\uB300\uAE30 \uC704\uC758 '\uADF8\uB9BC\uC790' \uC9C0\uC810\uC785\uB2C8\uB2E4.\n * t\uAC00 0\uBCF4\uB2E4 \uC791\uB2E4\uBA74, \uAC00\uC7A5 \uAC00\uAE4C\uC6B4 \uC810\uC740 \uB9C9\uB300\uAE30\uC758 \uC2DC\uC791\uC810 v\uC785\uB2C8\uB2E4.\n * t\uAC00 1\uBCF4\uB2E4 \uD06C\uB2E4\uBA74, \uAC00\uC7A5 \uAC00\uAE4C\uC6B4 \uC810\uC740 \uB9C9\uB300\uAE30\uC758 \uB05D\uC810 w\uC785\uB2C8\uB2E4.\n\n\n \uC774\uAC83\uC774 \uBC14\uB85C \uB2E4\uC74C \uCF54\uB4DC \uB77C\uC778 t = Math.max(0, Math.min(1, t));\uAC00 t\uB97C 0\uACFC 1 \uC0AC\uC774\uB85C \uC81C\uD55C\uD558\uB294 \uC774\uC720\uC785\uB2C8\uB2E4.\n \uC774\uB85C\uC368 \uAC00\uC7A5 \uAC00\uAE4C\uC6B4 \uC810\uC774 \uD56D\uC0C1 \uC120\uBD84 \uC704(\uC591 \uB05D\uC810 \uD3EC\uD568)\uC5D0 \uC788\uB3C4\uB85D \uBCF4\uC7A5\uD560 \uC218 \uC788\uC2B5\uB2C8\uB2E4.\n */\nexport const distSqToLineSegment = (p: Point2D, v: Point2D, w: Point2D): number => {\n const l2 = (v.x - w.x) ** 2 + (v.y - w.y) ** 2;\n if (l2 === 0) return (p.x - v.x) ** 2 + (p.y - v.y) ** 2;\n let t = ((p.x - v.x) * (w.x - v.x) + (p.y - v.y) * (w.y - v.y)) / l2;\n t = Math.max(0, Math.min(1, t));\n const projection = { x: v.x + t * (w.x - v.x), y: v.y + t * (w.y - v.y) };\n return (p.x - projection.x) ** 2 + (p.y - projection.y) ** 2;\n };\n // static bezirePointToPointVector(point: {point1: Point, point2?: Point, point3?: Point, point4?: Point}) {\n // if (!point.point2) {\n // point.point2 = point.point1;\n // }\n // if (!point.point3) {\n // point.point3 = point.point2;\n // }\n // if (!point.point4) {\n // point.point4 = point.point3;\n // }\n // return {\n // point1: new PointVector(point.point1.x, point.point1.y, point.point1.z),\n // point2: new PointVector(point.point2.x, point.point2.y, point.point2.z),\n // point3: new PointVector(point.point3.x, point.point3.y, point.point3.z),\n // point4: new PointVector(point.point4.x, point.point4.y, point.point4.z),\n // }\n // }\n // static bezier(point: {point1: Point, point2?: Point, point3?: Point, point4?: Point}, frame: number, idx: number) {\n // const pointVector = MathUtil.bezirePointToPointVector(point);\n //\n // const point12Step = PointVector.sub(pointVector.point1, pointVector.point2).div(frame).mult(idx + 1);\n // const point23Step = PointVector.sub(pointVector.point2, pointVector.point3).div(frame).mult(idx + 1);\n // const point34Step = PointVector.sub(pointVector.point3, pointVector.point4).div(frame).mult(idx + 1);\n //\n // pointVector.point1.sub(point12Step);\n // pointVector.point2.sub(point23Step);\n // pointVector.point3.sub(point34Step);\n //\n // const point12MoveStep = PointVector.sub(pointVector.point1, pointVector.point2).div(frame);\n // const point23MoveStep = PointVector.sub(pointVector.point2, pointVector.point3).div(frame);\n // // const point34MoveStep = PointVector.sub(point3, point4).div(frame); // \uB354\uC774\uC0C1\uAC08\uACF3\uC5C6\uC74C\n //\n // const cnt = idx + 1;\n // const point12MovePoint = point12MoveStep.mult(cnt)\n // const point23MovePoint = point23MoveStep.mult(cnt);\n // const combinationPoint1MovePoint = PointVector.sub(pointVector.point1, point12MovePoint); //new PointVector(point1.x - point12MovePoint.x, point1.y - point12MovePoint.y);\n // const combinationPoint2MovePoint = PointVector.sub(pointVector.point2, point23MovePoint); // new PointVector(point2.x - point23MovePoint.x, point2.y - point23MovePoint.y);\n //\n // const finalPointMoveStep = PointVector.sub(combinationPoint1MovePoint, combinationPoint2MovePoint).div(frame);\n // const finalPointMovePoint = finalPointMoveStep.mult(cnt);\n // const final = PointVector.sub(combinationPoint1MovePoint, finalPointMovePoint);\n // return final;\n // }\n //\n // static beziers(point: {point1: Point, point2?: Point, point3?: Point, point4?: Point}, frame: number) {\n // const pointVector = MathUtil.bezirePointToPointVector(point);\n // const frames = new Array(frame).fill(undefined) as PointVector[];\n // for (let i = 0; i < frame; i++) {\n // frames[i] = MathUtil.bezier(point, frame, i);\n // // pointVector.point1.sub(point12Step);\n // // pointVector.point2.sub(point23Step);\n // // pointVector.point3.sub(point34Step);\n // //\n // // const point12MoveStep = PointVector.sub(pointVector.point1, pointVector.point2).div(frame);\n // // const point23MoveStep = PointVector.sub(pointVector.point2, pointVector.point3).div(frame);\n // // // const point34MoveStep = PointVector.sub(point3, point4).div(frame); // \uB354\uC774\uC0C1\uAC08\uACF3\uC5C6\uC74C\n // //\n // // const cnt = i + 1;\n // // const point12MovePoint = point12MoveStep.mult(cnt)\n // // const point23MovePoint = point23MoveStep.mult(cnt);\n // // const combinationPoint1MovePoint = PointVector.sub(pointVector.point1, point12MovePoint); //new PointVector(point1.x - point12MovePoint.x, point1.y - point12MovePoint.y);\n // // const combinationPoint2MovePoint = PointVector.sub(pointVector.point2, point23MovePoint); // new PointVector(point2.x - point23MovePoint.x, point2.y - point23MovePoint.y);\n // //\n // // const finalPointMoveStep = PointVector.sub(combinationPoint1MovePoint, combinationPoint2MovePoint).div(frame);\n // // const finalPointMovePoint = finalPointMoveStep.mult(cnt);\n // // const final = PointVector.sub(combinationPoint1MovePoint, finalPointMovePoint);\n // }\n // return frames;\n // }\n\n\n// interface Point {\n// x: number;\n// y: number;\n// }\n//\n// interface BezierPathOptions {\n// /**\n// * \uC81C\uC5B4\uC810\uC744 \uC5BC\uB9C8\uB098 \uBA40\uB9AC \uB458\uC9C0 \uACB0\uC815\uD558\uB294 \uAC12\uC785\uB2C8\uB2E4. (\uAE30\uBCF8\uAC12: 0.25)\n// * 0 \uC774\uBA74 \uAC70\uC758 \uC9C1\uC120\uC5D0 \uAC00\uAE5D\uACE0, \uAC12\uC774 \uCEE4\uC9C8\uC218\uB85D \uACE1\uC120\uC758 \uD718\uC5B4\uC9D0\uC774 \uCEE4\uC9D1\uB2C8\uB2E4.\n// * \uC74C\uC218 \uAC12\uC744 \uC8FC\uBA74 \uBC18\uB300 \uBC29\uD5A5\uC73C\uB85C \uD729\uB2C8\uB2E4.\n// */\n// controlPointOffsetFactor?: number;\n//\n// /**\n// * \uC810\uB4E4\uC758 \uBD84\uD3EC\uB97C \uC870\uC808\uD558\uB294 \uAC00\uC18D\uB3C4 \uACC4\uC218\uC785\uB2C8\uB2E4. (\uAE30\uBCF8\uAC12: 1)\n// * 1: \uB4F1\uAC04\uACA9 (\uC120\uD615)\n// * > 1: \uC2DC\uC791 \uBD80\uBD84\uC5D0 \uC810\uB4E4\uC774 \uBAA8\uC774\uACE0 \uB05D\uC73C\uB85C \uAC08\uC218\uB85D \uAC04\uACA9\uC774 \uB113\uC5B4\uC9D0 (\uAC00\uC18D, ease-in)\n// * < 1: \uB05D \uBD80\uBD84\uC5D0 \uC810\uB4E4\uC774 \uBAA8\uC774\uACE0 \uC2DC\uC791 \uBD80\uBD84\uC758 \uAC04\uACA9\uC774 \uB113\uC5B4\uC9D0 (\uAC10\uC18D, ease-out)\n// * \uC608: 2\uB294 \uC81C\uACF1 \uAC00\uC18D, 0.5\uB294 \uC81C\uACF1\uADFC \uAC10\uC18D.\n// */\n// accelerationFactor?: number;\n// }\n//\n// /**\n// * 2\uCC28 \uBCA0\uC9C0\uC5D0 \uACE1\uC120 \uC704\uC758 \uD2B9\uC815 t \uAC12\uC5D0\uC11C\uC758 \uC810 \uC88C\uD45C\uB97C \uACC4\uC0B0\uD569\uB2C8\uB2E4.\n// * B(t) = (1-t)^2 * P0 + 2 * (1-t) * t * P1 + t^2 * P2\n// * @param t \uB9E4\uAC1C\uBCC0\uC218 (0\uC5D0\uC11C 1 \uC0AC\uC774)\n// * @param p0 \uC2DC\uC791\uC810\n// * @param p1 \uC81C\uC5B4\uC810\n// * @param p2 \uB05D\uC810\n// * @returns \uACC4\uC0B0\uB41C \uC810\uC758 \uC88C\uD45C\n// */\n// function quadraticBezier(t: number, p0: Point, p1: Point, p2: Point): Point {\n// const mt = 1 - t; // (1-t)\n// const mt2 = mt * mt; // (1-t)^2\n// const t2 = t * t; // t^2\n//\n// const x = mt2 * p0.x + 2 * mt * t * p1.x + t2 * p2.x;\n// const y = mt2 * p0.y + 2 * mt * t * p1.y + t2 * p2.y;\n//\n// return { x, y };\n// }\n//\n// /**\n// * \uCD9C\uBC1C\uC810\uACFC \uB3C4\uCC29\uC810 \uC0AC\uC774\uB97C \uC787\uB294 2\uCC28 \uBCA0\uC9C0\uC5D0 \uACE1\uC120\uC744 \uB530\uB77C \uC774\uB3D9\uD560 \uC88C\uD45C\uB4E4\uC744 \uACC4\uC0B0\uD569\uB2C8\uB2E4.\n// * @param startPoint \uCD9C\uBC1C\uC810 \uC88C\uD45C { x, y }\n// * @param endPoint \uB3C4\uCC29\uC810 \uC88C\uD45C { x, y }\n// * @param options \uBCA0\uC9C0\uC5D0 \uACE1\uC120 \uBC0F \uC810 \uBD84\uD3EC \uC635\uC158\n// * @param numberOfSteps \uC0DD\uC131\uD560 \uC911\uAC04 \uC774\uB3D9 \uC88C\uD45C\uC758 \uAC1C\uC218 (\uC774\uB3D9 \uACBD\uB85C\uC0C1\uC758 \uC810 \uAC1C\uC218)\n// * @returns \uACC4\uC0B0\uB41C \uC88C\uD45C\uB4E4\uC758 \uBC30\uC5F4 (startPoint\uB294 \uD3EC\uD568\uD558\uC9C0 \uC54A\uACE0, endPoint\uB294 \uD3EC\uD568)\n// */\n// function getPointsOnBezierPath(\n// startPoint: Point,\n// endPoint: Point,\n// options: BezierPathOptions = {}, // \uAE30\uBCF8\uAC12 \uBE48 \uAC1D\uCCB4\n// numberOfSteps: number\n// ): Point[] {\n// // --- \uC635\uC158 \uAE30\uBCF8\uAC12 \uC124\uC815 ---\n// const controlPointOffsetFactor = options.controlPointOffsetFactor ?? 0.25; // \uAE30\uBCF8\uAC12 0.25\n// const accelerationFactor = options.accelerationFactor ?? 1; // \uAE30\uBCF8\uAC12 1 (\uC120\uD615)\n//\n// // --- \uC785\uB825\uAC12 \uC720\uD6A8\uC131 \uAC80\uC0AC ---\n// if (numberOfSteps <= 0) {\n// console.warn(\"numberOfSteps\uB294 0\uBCF4\uB2E4 \uCEE4\uC57C \uD569\uB2C8\uB2E4.\");\n// return []; // \uBE48 \uBC30\uC5F4 \uBC18\uD658 \uB610\uB294 \uC5D0\uB7EC \uCC98\uB9AC\n// }\n//\n// const points: Point[] = [];\n// const p0 = startPoint;\n// const p2 = endPoint;\n//\n// // --- \uC81C\uC5B4\uC810(P1) \uC790\uB3D9 \uACC4\uC0B0 ---\n// const midX = (p0.x + p2.x) / 2;\n// const midY = (p0.y + p2.y) / 2;\n//\n// const deltaX = p2.x - p0.x;\n// const deltaY = p2.y - p0.y;\n//\n// const distance = Math.sqrt(deltaX * deltaX + deltaY * deltaY);\n//\n// let p1: Point;\n//\n// if (distance === 0) {\n// // \uC2DC\uC791\uC810\uACFC \uB05D\uC810\uC774 \uAC19\uC73C\uBA74 \uC81C\uC5B4\uC810\uB3C4 \uAC19\uC740 \uC704\uCE58\uB85C \uC124\uC815 (\uC9C1\uC120 \uC774\uB3D9 \uC5C6\uC74C)\n// p1 = { ...p0 };\n// // \uC774 \uACBD\uC6B0, \uBAA8\uB4E0 \uACC4\uC0B0\uB41C \uC810\uC740 \uC2DC\uC791/\uB05D \uC810\uACFC \uB3D9\uC77C\uD558\uAC8C \uB429\uB2C8\uB2E4.\n// // \uC694\uCCAD\uC5D0 \uB530\uB77C \uBE48 \uBC30\uC5F4\uC744 \uBC18\uD658\uD558\uAC70\uB098, \uB05D\uC810\uC744 numberOfSteps\uB9CC\uD07C \uBC18\uD658\uD560 \uC218\uB3C4 \uC788\uC2B5\uB2C8\uB2E4.\n// // \uC5EC\uAE30\uC11C\uB294 \uACC4\uC0B0 \uB85C\uC9C1\uC744 \uADF8\uB300\uB85C \uB450\uC5B4 \uB3D9\uC77C\uD55C \uC810\uC774 \uBC18\uBCF5 \uC0DD\uC131\uB418\uB3C4\uB85D \uD569\uB2C8\uB2E4.\n// } else {\n// // \uC2DC\uC791\uC810\uC5D0\uC11C \uB05D\uC810\uC73C\uB85C\uC758 \uBCA1\uD130\uC5D0 \uC218\uC9C1\uC778 \uBC29\uD5A5 \uBCA1\uD130 \uACC4\uC0B0 (\uC2DC\uACC4 \uBC18\uB300 \uBC29\uD5A5 90\uB3C4 \uD68C\uC804)\n// const perpX = -deltaY / distance;\n// const perpY = deltaX / distance;\n//\n// // \uC911\uAC04 \uC9C0\uC810\uC5D0\uC11C \uC218\uC9C1 \uBC29\uD5A5\uC73C\uB85C \uC635\uC158\uC5D0 \uB530\uB77C \uC81C\uC5B4\uC810 \uC704\uCE58 \uACC4\uC0B0\n// const offset = distance * controlPointOffsetFactor;\n// p1 = {\n// x: midX + perpX * offset,\n// y: midY + perpY * offset,\n// };\n// }\n//\n// // --- \uACE1\uC120 \uC0C1\uC758 \uC810 \uACC4\uC0B0 ---\n// for (let i = 1; i <= numberOfSteps; i++) {\n// // 1. \uAE30\uBCF8 \uD30C\uB77C\uBBF8\uD130 u \uACC4\uC0B0 (0 < u <= 1)\n// const u = i / numberOfSteps;\n// // 2. \uAC00\uC18D\uB3C4 \uC801\uC6A9\uB41C \uD30C\uB77C\uBBF8\uD130 t \uACC4\uC0B0\n// const t = Math.pow(u, accelerationFactor);\n// // 3. \uBCA0\uC9C0\uC5D0 \uACE1\uC120 \uC704\uC758 \uC810 \uACC4\uC0B0\n// const pointOnCurve = quadraticBezier(t, p0, p1, p2);\n// points.push(pointOnCurve);\n// }\n//\n// return points; // \uACC4\uC0B0\uB41C \uC911\uAC04 \uC88C\uD45C\uB4E4\uC758 \uBC30\uC5F4 \uBC18\uD658\n// }\n//\n// // --- \uC0AC\uC6A9 \uC608\uC2DC ---\n// const start: Point = { x: 4, y: 10 };\n// const end: Point = { x: 50, y: 20 };\n// const steps = 10; // 10\uAC1C\uC758 \uC911\uAC04 \uC9C0\uC810 \uACC4\uC0B0\n//\n// // \uC608\uC2DC 1: \uAE30\uBCF8 \uC635\uC158 (\uC57D\uAC04\uC758 \uACE1\uC120, \uB4F1\uAC04\uACA9)\n// const path1 = getPointsOnBezierPath(start, end, {}, steps);\n// console.log(\"\uAE30\uBCF8 \uC635\uC158 \uACBD\uB85C:\", path1.map(p => `(${p.x.toFixed(1)}, ${p.y.toFixed(1)})`).join(\" -> \"));\n//\n// // \uC608\uC2DC 2: \uB354 \uB9CE\uC774 \uD718\uC5B4\uC9C0\uAC8C (offset \uC99D\uAC00), \uAC00\uC18D \uD6A8\uACFC \uCD94\uAC00 (acceleration > 1)\n// const path2 = getPointsOnBezierPath(start, end, { controlPointOffsetFactor: 0.6, accelerationFactor: 2 }, steps);\n// console.log(\"\uAC15\uD55C \uACE1\uC120 + \uAC00\uC18D \uACBD\uB85C:\", path2.map(p => `(${p.x.toFixed(1)}, ${p.y.toFixed(1)})`).join(\" -> \"));\n//\n// // \uC608\uC2DC 3: \uBC18\uB300 \uBC29\uD5A5\uC73C\uB85C \uD718\uAC8C (offset \uC74C\uC218), \uAC10\uC18D \uD6A8\uACFC \uCD94\uAC00 (acceleration < 1)\n// const path3 = getPointsOnBezierPath(start, end, { controlPointOffsetFactor: -0.3, accelerationFactor: 0.5 }, steps);\n// console.log(\"\uBC18\uB300 \uACE1\uC120 + \uAC10\uC18D \uACBD\uB85C:\", path3.map(p => `(${p.x.toFixed(1)}, ${p.y.toFixed(1)})`).join(\" -> \"));\n\n export const rotatePoint = (point: Point2D, center: Point2D, angleInRadians: number): Point2D => {\n // Translate point to origin so that center is the origin\n const translatedX = point.x - center.x;\n const translatedY = point.y - center.y;\n\n // Rotate point\n const rotatedX = translatedX * Math.cos(angleInRadians) - translatedY * Math.sin(angleInRadians);\n const rotatedY = translatedX * Math.sin(angleInRadians) + translatedY * Math.cos(angleInRadians);\n\n // Translate point back\n return new Point2D(rotatedX + center.x, rotatedY + center.y);\n }\n}\n", "import { ValidUtils } from '../valid/ValidUtils';\nimport { FieldType, FilterTuple } from '../types';\nimport { Point2D } from '../entity/Point2D';\nimport { Point3D } from '../entity/Point3D';\nimport { Rect } from '../entity/Rect';\nimport { ObjectUtils } from '../object/ObjectUtils';\nimport { IOS3166_1_Code } from '../code/IOS3166_1';\n\nexport namespace ConvertUtils {\n export type RGBA = { r?: number, g?: number, b?: number, a?: number };\n export type MinMaxCenterAvgDiff<T> = { min: T, max: T, center: T, avg: T };\n export type ToURLSearchParamsParams = { [key: string]: any } | URLSearchParams | [string, unknown][] | string;\n export const objToGetURL = (obj: any): string => {\n return Object.keys(obj).reduce((prev, key, i) => (\n `${prev}${i !== 0 ? '&' : ''}${key}=${obj[key]}`\n ), '');\n };\n\n export const mapToJson = (map: Map<string, any>): string => {\n return JSON.stringify(\n Array.from(\n map.entries()\n ).reduce((o: any, [key, value]) => {\n o[key] = value;\n return o;\n }, {}));\n };\n\n // export const fixed = (num: number, fractionDigits: number): number => {\n // const factor = Math.pow(10, fractionDigits);\n // }\n export const jsonToMap = (jsonStr: any): Map<string, string> => {\n return new Map(JSON.parse(jsonStr));\n };\n\n export const toUrl = (data: string) => {\n try {\n return new URL(data);\n }\n catch (e) {\n throw new Error(`Invalid URL string: ${data}`);\n }\n }\n\n\n export const decodeURIString = (data: string) => {\n return decodeURIComponent(data);\n }\n \n export const encodeURIString = (data: string) => {\n return encodeURIComponent(data);\n }\n\n export const objToStrMap = (obj: any): Map<string, string> => {\n const strMap = new Map();\n for (const k of Object.keys(obj)) {\n strMap.set(k, obj[k]);\n }\n return strMap;\n };\n\n export const jsonToStrMap = (jsonStr: string) => {\n return ConvertUtils.objToStrMap(JSON.parse(jsonStr));\n };\n\n export const strToObject = (message: string): any => {\n return JSON.parse(message);\n };\n\n export const objToJson = (obj: any): string => {\n return JSON.stringify(obj);\n };\n\n export const objToMap = (obj: any): Map<string, any> => {\n const mp = new Map<string, any>();\n Object.keys(obj).forEach((k) => {\n mp.set(k, obj[k]);\n });\n return mp;\n };\n\n export const mapToObj = (map: Map<string, any>): any => {\n const obj = {} as any;\n map.forEach((v, k) => {\n obj[k] = v;\n });\n return obj;\n };\n\n export const snakeToCamelCase = (str: string): string => {\n return str.replace(/_([a-z])/g, (_, letter) => letter.toUpperCase());\n }\n export const camelToSnakeCase = (str: string): string => {\n return str.replace(/([a-z])([A-Z])/g, '$1_$2').toLowerCase();\n };\n\n export function toFormData (obj: any) {\n const formData = new FormData();\n for (const key in obj)\n formData.append(key, obj[key]);\n return formData;\n }\n\n export function toObject<T>(obj: URLSearchParams, config: { firstValue: true }): FieldType<T, string>;\n export function toObject(obj: URLSearchParams): { [key: string]: string | string[] };\n export function toObject<T>(obj: FormData): T;\n export function toObject<T>(obj: [string, unknown][]): T;\n export function toObject<T>(obj: Iterable<any>): T;\n export function toObject(obj: any): any;\n export function toObject(obj: URLSearchParams | FormData |any, config?: { firstValue: boolean }): any {\n if (obj instanceof URLSearchParams) {\n const robj = {} as any;\n obj.forEach((v, k) => {\n if (config?.firstValue && robj[k] === undefined) {\n robj[k] = v;\n } else if (!config?.firstValue) {\n if (robj[k]) {\n if (Array.isArray(robj[k])) {\n robj[k].push(v);\n } else {\n robj[k] = [robj[k], v];\n }\n } else {\n robj[k] = v;\n }\n }\n })\n return robj;\n } else if(obj instanceof FormData) {\n // new Map().entries()\n // Object.entries({})\n // obj = Object.fromEntries(obj.entries());\n const formDataToObject = (formData: any) => {\n const obj: any = {};\n // FormData\uC758 \uBAA8\uB4E0 \uD0A4\uB97C \uC21C\uD68C\n for (const key of formData.keys()) {\n const values = formData.getAll(key); // \uB3D9\uC77C \uD0A4\uC758 \uBAA8\uB4E0 \uAC12 \uAC00\uC838\uC624\uAE30\n // \uAC12\uC774 \uD558\uB098\uBA74 \uB2E8\uC77C \uAC12\uC73C\uB85C, \uC5EC\uB7EC \uAC1C\uBA74 \uBC30\uC5F4\uB85C \uC800\uC7A5\n obj[key] = values.length > 1 ? values : values[0];\n }\n return obj;\n }\n return formDataToObject(obj);\n } else if (obj && typeof obj[Symbol.iterator] === 'function') {\n return Object.fromEntries(obj);\n } else if (Array.isArray(obj)) {\n return Object.fromEntries(obj);\n }else {\n // console.log(Object.prototype.toString.call(obj));\n if (ValidUtils.isMap(obj)) {\n const map = obj as Map<string, any>;\n obj = ConvertUtils.mapToObj(map);\n }\n if (ValidUtils.isArray(obj)) {\n const arr = obj as any[];\n for (let i = 0; i < arr.length; i++) {\n arr[i] = ConvertUtils.toObject(arr[i]);\n }\n }\n\n if (ValidUtils.isObject(obj)) {\n for (const property in obj) {\n obj[property] = ConvertUtils.toObject(obj[property]);\n }\n }\n\n return obj;\n }\n };\n\n export const toArray = <T>(data?: T | T[] | Set<T>): T[] => {\n if (data instanceof Set) {\n return Array.from(data.values());\n }\n\n const datas = (Array.isArray(data) ? data : (data ? [data] : []));\n return datas;\n }\n export const flatArray = <T>(...data: (T | Iterable<T>)[]): T[] => {\n const datas = data.flatMap<T>((item) => (item instanceof Object && Symbol.iterator in item ? Array.from(item) : [item]));\n return datas;\n };\n\n export const iteratorToArray = <T>(it: any): T[] => {\n return Array.from(it) as T[];\n };\n\n export const toJson = (obj: any): string => {\n const at = ConvertUtils.toObject(obj);\n return JSON.stringify(at);\n };\n\n export const concatenateToAttribute = (object_o: any) => {\n return ConvertUtils.concatenateToString(object_o, '=', ' ', '\\'');\n };\n\n export const concatenateToParameter = (object_o: any) => {\n return ConvertUtils.concatenateToString(object_o, '=', '&', '');\n };\n\n export const concatenateToString = (object_o: any, unionString_s = '=', spilString_s = ' ', pairString_s = '') => {\n const results: any[] = [];\n for (const property in object_o) {\n const value = object_o[property];\n if (value) {\n results.push(property.toString() + unionString_s + pairString_s + value + pairString_s);\n }\n }\n\n return results.join(spilString_s);\n };\n\n export const specialCharsToEscape = (data: string): string => {\n return data.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n };\n\n export const decodeHTMLEscape = (data: string): string => {\n // HTML \uC5D4\uD2F0\uD2F0 \uC774\uC2A4\uCF00\uC774\uD504\uB97C \uB514\uCF54\uB4DC\uD569\uB2C8\uB2E4.\n return data.replace(/&amp;/g, '&')\n .replace(/&lt;/g, '<')\n .replace(/&gt;/g, '>')\n .replace(/&quot;/g, '\"')\n .replace(/&#39;/g, \"'\")\n .replace(/&#x2F;/g, '/');\n }\n\n export function escapeHTML(htmlString: string, option?: { targets?: string[] }): string {\n if (!htmlString) return '';\n \n // HTML escape map - \uC21C\uC11C \uC911\uC694: & \uB97C \uBA3C\uC800 \uCC98\uB9AC\uD574\uC57C \uD568\n // https://dev-handbook.tistory.com/23\n const escapeMap: Record<string, string> = {\n '&': '&amp;', // \uBC18\uB4DC\uC2DC \uBA3C\uC800 \uCC98\uB9AC\n '<': '&lt;',\n '>': '&gt;',\n '\"': '&quot;',\n \"'\": '&#39;', // or &apos; (\uD558\uC9C0\uB9CC HTML4\uC5D0\uC11C\uB294 &#39; \uAD8C\uC7A5)\n '/': '&#x2F;',\n '`': '&#x60;',\n '=': '&#x3D;',\n '{': '&#123;',\n '}': '&#125;',\n '#': '&#35;',\n '$': '&#36;',\n '\\n': '&#10;', // newline\n '\\r': '&#13;', // carriage return\n '\\t': '&#9;', // tab\n '\\u00A0': '&nbsp;', // non-breaking space\n '\u00A2': '&cent;',\n '\u00A3': '&pound;',\n '\u00A5': '&yen;',\n '\u20AC': '&euro;',\n '\u00A9': '&copy;',\n '\u00AE': '&reg;',\n '\u2122': '&trade;',\n '\u00B0': '&deg;',\n '\u00B1': '&plusmn;',\n '\u00D7': '&times;',\n '\u00F7': '&divide;',\n '\u2212': '&minus;',\n '\u2022': '&bull;',\n '\u2026': '&hellip;',\n '\u2190': '&larr;',\n '\u2192': '&rarr;',\n '\u2191': '&uarr;',\n '\u2193': '&darr;',\n '\u2194': '&harr;',\n };\n\n // targets \uC635\uC158\uC774 \uC788\uC73C\uBA74 \uD574\uB2F9 \uBB38\uC790\uB9CC \uD544\uD130\uB9C1\n const targetsSet = option?.targets ? new Set(option.targets) : null;\n const filteredEscapeMap = targetsSet \n ? Object.fromEntries(Object.entries(escapeMap).filter(([key]) => targetsSet.has(key)))\n : escapeMap;\n\n // & \uAC00 targets\uC5D0 \uD3EC\uD568\uB418\uC5B4 \uC788\uAC70\uB098 targets\uAC00 \uC5C6\uC73C\uBA74 & \uB97C \uBA3C\uC800 \uCC98\uB9AC\n const shouldEscapeAmpersand = !targetsSet || targetsSet.has('&');\n \n // \uC774\uC2A4\uCF00\uC774\uD504\uD560 \uBB38\uC790\uB4E4\uB85C \uC815\uADDC\uC2DD \uD328\uD134 \uC0DD\uC131\n const charsToEscape = Object.keys(filteredEscapeMap).filter(char => char !== '&');\n if (charsToEscape.length === 0 && !shouldEscapeAmpersand) {\n return htmlString; // \uC774\uC2A4\uCF00\uC774\uD504\uD560 \uBB38\uC790\uAC00 \uC5C6\uC73C\uBA74 \uC6D0\uBCF8 \uBC18\uD658\n }\n\n // \uC815\uADDC\uC2DD \uC0DD\uC131 (\uD2B9\uC218 \uBB38\uC790 \uC774\uC2A4\uCF00\uC774\uD504 \uD544\uC694)\n const escapedChars = charsToEscape.map(char => {\n // \uC815\uADDC\uC2DD\uC5D0\uC11C \uD2B9\uBCC4\uD55C \uC758\uBBF8\uB97C \uAC00\uC9C4 \uBB38\uC790\uB4E4\uC744 \uC774\uC2A4\uCF00\uC774\uD504\n return char.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n }).join('');\n\n let result = htmlString;\n \n // & \uB97C \uBA3C\uC800 \uCC98\uB9AC (\uC635\uC158\uC5D0 \uD3EC\uD568\uB41C \uACBD\uC6B0)\n if (shouldEscapeAmpersand) {\n result = result.replace(/&/g, '&amp;');\n }\n \n // \uB098\uBA38\uC9C0 \uBB38\uC790 \uCC98\uB9AC\n if (escapedChars.length > 0) {\n const regex = new RegExp(`[${escapedChars}]`, 'g');\n result = result.replace(regex, (match) => {\n return filteredEscapeMap[match] || match;\n });\n }\n\n return result;\n }\n\n export const copyObject = <T extends Record<string, any>>(obj: T, update: Partial<T> = {}): T => {\n return {...obj, ...update};\n };\n\n export const copyArrayWithAddition = <T extends unknown[]>(arr: FilterTuple<T>, update?: T): T => {\n return [...arr, ...(update || [])] as T;\n };\n\n export const hexToInt = (hex: string): number => {\n if (hex.startsWith('#')) {\n hex = hex.slice(1);\n }\n if (hex.length === 3) {\n hex = hex.split('').map((c) => c + c).join('');\n }\n return parseInt(hex, 16);\n };\n\n\n // export const toHex = (val: number): string => {\n // const hex = Math.floor(val).toString(16).toUpperCase();\n // return (hex.length === 1 ? '0' + hex : hex);\n // };\n\n export const toHex = (num: number): string => {\n if (num < 0) {\n num = 0xFFFFFFFF + num + 1;\n }\n num = Number(num.toFixed(0));\n return num.toString(16).padStart(2, '0').toUpperCase();\n };\n\n export const toHexColor = (rgba: RGBA): string => {\n const r = ConvertUtils.toHex(rgba.r ?? 0);\n const g = ConvertUtils.toHex(rgba.g ?? 0);\n const b = ConvertUtils.toHex(rgba.b ?? 0);\n const a = ConvertUtils.toHex(rgba.a ?? 255);\n return `#${r}${g}${b}${a}`;\n };\n\n export const avgColor = (color: RGBA[]): RGBA => {\n const sum = color.reduce((acc: Required<RGBA>, c) => {\n acc.r += c.r ?? 0;\n acc.g += c.g ?? 0;\n acc.b += c.b ?? 0;\n acc.a += c.a ?? 0;\n return acc;\n }, {r: 0, g: 0, b: 0, a: 0}) as Required<RGBA>;\n const avg = {r: Math.floor(sum.r / color.length), g: Math.floor(sum.g / color.length), b: Math.floor(sum.b / color.length), a: Math.floor(sum.a / color.length)};\n return avg;\n };\n\n export const toRGBA = (hex?: string | null): RGBA => {\n hex ??= '#000000FF';\n const hexColor = hex.replace('#', '');\n const r = parseInt(hexColor.slice(0, 2) || '0', 16);\n const g = parseInt(hexColor.slice(2, 4) || '0', 16);\n const b = parseInt(hexColor.slice(4, 6) || '0', 16);\n const a = hexColor.length > 6 ? parseInt(hexColor.slice(6, 8) || '0', 16) : 255;\n return {r, g, b, a};\n };\n\n export const minMaxCenterAvg = <T extends { [key: string]: number }>(obj: T[]): { [key in keyof T]?: MinMaxCenterAvgDiff<number> & {diff: number} } => {\n const result: { [key in keyof T]: { min: number, max: number, center: number, diff: number, avg: number } } = {} as any;\n\n const allKeys = ObjectUtils.uniqueKeys(obj);\n for (const key of allKeys) {\n const values = obj.map(item => item[key]);\n const min = Math.min(...values);\n const max = Math.max(...values);\n const center = (min + max) / 2;\n const avg = values.reduce((sum, val) => sum + val, 0) / values.length;\n\n result[key as keyof T] = {min, max, center, avg, diff: max - min};\n }\n\n return result;\n }\n\n export const minMaxCenterRectAvg2D = (point2Ds: (Point2D | { x: number, y: number })[]): MinMaxCenterAvgDiff<Point2D> & { minMaxRect: Rect } => {\n const min = new Point2D(Number.MAX_SAFE_INTEGER, Number.MAX_SAFE_INTEGER);\n const max = new Point2D(Number.MIN_SAFE_INTEGER, Number.MIN_SAFE_INTEGER);\n let sum = new Point2D(0, 0);\n point2Ds.forEach((p) => {\n min.x = Math.min(min.x, p.x);\n min.y = Math.min(min.y, p.y);\n max.x = Math.max(max.x, p.x);\n max.y = Math.max(max.y, p.y);\n sum.x += p.x;\n sum.y += p.y;\n });\n const center = new Point2D((min.x + max.x) / 2, (min.y + max.y) / 2);\n const avg = new Point2D(sum.x / point2Ds.length, sum.y / point2Ds.length);\n const minMaxRect = new Rect(min.x, min.y, max.x - min.x, max.y - min.y);\n return {min, max, center, avg, minMaxRect};\n };\n\n\n export const minMaxCenterAvg3D = (point3Ds: (Point3D | { x: number, y: number, z: number })[]): MinMaxCenterAvgDiff<Point3D> => {\n const min = new Point3D(Number.MAX_VALUE, Number.MAX_VALUE, Number.MAX_VALUE);\n const max = new Point3D(Number.MIN_VALUE, Number.MIN_VALUE, Number.MIN_VALUE);\n let sum = new Point3D(0, 0, 0);\n point3Ds.forEach((p) => {\n min.x = Math.min(min.x, p.x);\n min.y = Math.min(min.y, p.y);\n min.z = Math.max(min.z, p.z);\n max.x = Math.max(max.x, p.x);\n max.y = Math.max(max.y, p.y);\n max.z = Math.max(max.z, p.y);\n sum.x += p.x;\n sum.y += p.y;\n sum.z += p.z;\n });\n const center = new Point3D((min.x + max.x) / 2, (min.y + max.y) / 2, (min.z + max.z) / 2);\n const avg = new Point3D(sum.x / point3Ds.length, sum.y / point3Ds.length, sum.z / point3Ds.length);\n return {min, max, center, avg};\n };\n\n export const roundRectRadiiToFullRadii = (radii?: [number] | [number, number] | [number, number, number] | [number, number, number, number]) => {\n if (!radii) {\n return [0, 0, 0, 0];\n }\n if (radii.length === 1) {\n return [radii[0] ?? 0, radii[0] ?? 0, radii[0] ?? 0, radii[0] ?? 0];\n } else if (radii.length === 2) {\n return [radii[0] ?? 0, radii[1] ?? 0, radii[0] ?? 0, radii[1] ?? 0];\n } else if (radii.length === 3) {\n return [radii[0] ?? 0, radii[1] ?? 0, radii[2] ?? 0, radii[1] ?? 0];\n } else {\n return radii;\n }\n };\n\n\n export const toArrayDirectionChange = <T>(array: T[][]) => {\n // \uC785\uB825 \uBC30\uC5F4\uC774 \uBE44\uC5B4\uC788\uAC70\uB098 \uCCAB \uBC88\uC9F8 \uD589\uC774 \uBE44\uC5B4\uC788\uC73C\uBA74 \uBE48 \uBC30\uC5F4 \uBC18\uD658\n if (!array || array.length === 0 || !array[0] || array[0].length === 0) {\n return [];\n }\n const result: T[][] = [];\n const numCols = array[0].length; // \uAE30\uC900 \uC5F4 \uAC1C\uC218 (\uCCAB \uD589 \uAE30\uC900)\n const numRows = array.length; // \uD589 \uAC1C\uC218\n\n for (let i = 0; i < numCols; i++) {\n const newRow: T[] = [];\n for (let j = 0; j < numRows; j++) {\n // \uB9CC\uC57D jagged array \uAC00\uB2A5\uC131\uC744 \uC5C4\uACA9\uD788 \uB2E4\uB8E8\uB824\uBA74 \uC5EC\uAE30\uC11C array[j].length > i \uC778\uC9C0 \uD655\uC778 \uD544\uC694\n // \uD558\uC9C0\uB9CC T[][] \uD0C0\uC785 \uC2DC\uADF8\uB2C8\uCC98\uB294 \uBCF4\uD1B5 rectangular array\uB97C \uAE30\uB300\uD568\n newRow.push(array[j][i]);\n }\n result.push(newRow);\n }\n return result;\n }\n\n // groupBy \uD568\uC218 \uAD6C\uD604\n export const groupByMap = <T, K>(array: T[], keySelector: (item: T) => K): Map<K, T[]> => {\n return array.reduce((map, item) => {\n const key = keySelector(item);\n const group = map.get(key) || [];\n group.push(item);\n map.set(key, group);\n return map;\n }, new Map<K, T[]>());\n }\n export const groupByObject = <T, K extends string | number | symbol>(\n array: T[],\n keySelector: (item: T) => K\n ): Record<K, T[]> => {\n// groupByMap \uD638\uCD9C\n const map = groupByMap(array, keySelector);\n // Map\uC744 Record\uB85C \uBCC0\uD658\n return Object.fromEntries(map) as Record<K, T[]>;\n }\n\n\n\n export const toURLSearchParams = (data: ToURLSearchParamsParams): URLSearchParams =>{\n const searchParams = new URLSearchParams();\n if (typeof data === 'string') {\n new URLSearchParams(data).forEach((value, key) => {\n searchParams.append(key, value);\n });\n } else if (typeof data === 'object') {\n const forTarget = data instanceof URLSearchParams ? data.entries() : (Array.isArray(data) ? data : Object.entries(data));\n for (const [k, v] of Array.from(forTarget)) {\n if (Array.isArray(v)) {\n v.forEach(it => searchParams.append(k, it));\n } else {\n searchParams.append(k, v as any);\n }\n }\n }\n return searchParams;\n }\n export const toRawQueryString = (data: ToURLSearchParamsParams, option?:{valueEncodeURIComponent?: boolean}): string => {\n const params = ConvertUtils.toURLSearchParams(data);\n const dataStr= Array.from(params.entries())\n .map(([k, v]) => {\n const j = `${k}=${option?.valueEncodeURIComponent? encodeURIComponent(v) : v}`;\n return j;\n })\n .join('&');\n return dataStr;\n }\n // export const RelativeHumanReadableTimeLabels = {\n // [IOS3166_1_Code.KOR]: {\n // justNow: '\uBC29\uAE08 \uC804',\n // minutesAgo: '\uBD84 \uC804',\n // hoursAgo: '\uC2DC\uAC04 \uC804',\n // daysAgo: '\uC77C \uC804',\n // }\n //\n // }\n // export type RelativeHumanReadableTimeLabel = {\n // justNow: string,\n // minutesAgo: string,\n // hoursAgo: string,\n // daysAgo: string,\n // };\n // export type RelativeHumanReadableTimeConfig = {\n // label: RelativeHumanReadableTimeLabel;\n // }\n // export const formatRelativeHumanReadableTime = (date: Date | string | number, config: RelativeHumanReadableTimeConfig): string => {\n // if (!(date instanceof Date)) {\n // date = new Date(date);\n // }\n // const now = new Date();\n // const diffMs = now.getTime() - date.getTime();\n // const diffMinutes = Math.floor(diffMs / (1000 * 60));\n // const diffHours = Math.floor(diffMinutes / 60);\n //\n // if (diffMinutes < 1) return config.label.justNow;\n // if (diffMinutes < 60) return `${diffMinutes}${config.label.minutesAgo}`;\n // if (diffHours < 24) return `${diffHours}${}`;\n // return `${Math.floor(diffHours / 24)}\uC77C \uC804`;\n // }\n\n /**\n * \uBB38\uC790\uC5F4 JSON\uC744 \uD0A4-\uAC12 \uC30D \uBC30\uC5F4\uB85C \uBCC0\uD658\uD569\uB2C8\uB2E4.\n *\n * @param {string} stringJson - JSON \uD615\uC2DD\uC758 \uBB38\uC790\uC5F4 (\uC608: \"{value: this.child.obj.name}\")\n * @return {Array<{ key: string, value: string }>} \uD0A4-\uAC12 \uC30D \uBC30\uC5F4\n */\n export const stringJsonToKeyPairs = (stringJson: string) => {\n return Array.from(stringJson.matchAll(/(\\w+):\\s*([^,}]+)/g)).map(match => ({key: match[1], value: match[2]}))\n }\n\n export const entriesToKeyPairs = <T>(o: T) => {\n return Object.entries(o).map(([key, value]) => ({key, value})) as {key: keyof T, value: T[keyof T]}[];\n }\n\n export const stringToBase64 = (str: string): string => {\n return btoa(str);\n }\n export const uint8ArrayToBase64 = (bytes: Uint8Array): string => {\n let binary = '';\n const len = bytes.byteLength;\n for (let i = 0; i < len; i++) {\n binary += String.fromCharCode(bytes[i]);\n }\n return btoa(binary);\n }\n export const base64ToString = (base64: string): string => {\n return atob(base64);\n }\n export const base64ToUint8Array = (base64: string): Uint8Array => {\n const binaryString = atob(base64);\n const len = binaryString.length;\n const bytes = new Uint8Array(len);\n for (let i = 0; i < len; i++) {\n bytes[i] = binaryString.charCodeAt(i);\n }\n return bytes;\n }\n // const formDataToFormDataEntryValueObj = <T = { [key: string]: FormDataEntryValue | FormDataEntryValue[] }>(\n // data: FormData | HTMLFormElement\n // ): T => {\n // if (typeof HTMLFormElement !== 'undefined' && data instanceof HTMLFormElement) {\n // data = new FormData(data);\n // }\n // const obj: any = {};\n // data.forEach((value, key) => {\n // if (Array.isArray(obj[key])) {\n // obj[key].push(value);\n // } else if (obj[key] !== undefined || !isNaN(obj[key])) {\n // obj[key] = [obj[key], value];\n // } else {\n // obj[key] = value;\n // }\n // });\n // return obj;\n // }\n\n}\n", "import { ValidUtils } from '../valid/ValidUtils';\n\nexport namespace RandomUtils {\n // export const readonly d = ''\n\n // export const getUniqueNumbers = (max: number, length: number) => {\n // max = Math.max(max, 0);\n // length = Math.max(Math.min(max, length), 0);\n // const array: number[] = [];\n // while (array.length < length) {\n // const num = Math.floor(Math.random() * max);\n // if (!array.includes(num)) array.push(num);\n // }\n // return array;\n // };\n\n export const uniqueInts = (min: number, max: number, count: number) => {\n const result: number[] = [];\n if (count > max - min) {\n throw new Error('Count is greater than the range of unique integers');\n }\n while (result.length < count) {\n const randomInt = RandomUtils.int(min, max);\n if (!result.includes(randomInt)) {\n result.push(randomInt);\n }\n }\n return result;\n }\n\n\n export const chance = (percentage: number): boolean => {\n if (percentage < 0 || percentage > 1) {\n throw new Error('Percentage must be between 0 and 1');\n }\n return Math.random() < percentage;\n };\n // max\uB294 \uD3EC\uD568\uD558\uC9C0 \uC54A\uC74C\n export const int = (min?: number, max?: number) => {\n return Math.floor(RandomUtils.float(min, max));\n }\n\n // ex) 0,5 0~<5 <5\uB294 \uD3EC\uD568\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. \uC18C\uC218\uC810\uD3EC\uD568\n export const float = (min?: number, max?: number) => {\n if (ValidUtils.isNullOrUndefined(min)) {\n return Math.random();\n } else if (!ValidUtils.isNullOrUndefined(min) && ValidUtils.isNullOrUndefined(max)) {\n return Math.random() * (min || 0);\n } else {\n return Math.random() * ((max || 0) - (min || 0)) + (min || 0);\n }\n };\n\n export const uuid = (format: string = 'xxxx-xxxx-xxxx-xxxx'): string => {\n return format.replace(/[xy]/g, function(c) {\n const r = Math.random() * 16 | 0;\n const v = c === 'x' ? r : (r & 0x3 | 0x8);\n return v.toString(16);\n });\n };\n\n\n export const uuid4 = (): string => {\n // // return uuid of form xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\n let uuid = '';\n let ii;\n for (ii = 0; ii < 32; ii += 1) {\n switch (ii) {\n case 8:\n case 20:\n uuid += '-';\n uuid += ((Math.random() * 16) | 0).toString(16);\n break;\n case 12:\n uuid += '-';\n uuid += '4';\n break;\n case 16:\n uuid += '-';\n uuid += ((Math.random() * 4) | 8).toString(16);\n break;\n default:\n uuid += ((Math.random() * 16) | 0).toString(16);\n }\n }\n return uuid;\n };\n\n export const hex = (): string => {\n const letters = '0123456789ABCDEF'.split('');\n let hex = '';\n for (let i = 0; i < 6; i++) {\n hex += letters[Math.floor(Math.random() * 16)];\n }\n return hex;\n };\n\n\n export const rgb = (): string => {\n const letters = '0123456789ABCDEF'.split('');\n let color = '#';\n for (let i = 0; i < 6; i++) {\n color += letters[Math.floor(Math.random() * 16)];\n }\n return color;\n };\n\n export const rgba = (): string => {\n const letters = '0123456789ABCDEF'.split('');\n let color = '#';\n for (let i = 0; i < 8; i++) {\n color += letters[Math.floor(Math.random() * 16)];\n }\n return color;\n };\n // (Math.random().toString(36)+'00000000000000000').slice(2, 10) + Date.now()\n\n export const alphabet = (len: number): string => {\n const letters = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'.split('');\n let color = '';\n for (let i = 0; i < len; i++) {\n color += letters[Math.floor(Math.random() * letters.length)];\n }\n return color;\n };\n}\n", "import { Unsubscribable } from './Unsubscribable';\n\nexport interface SubscriptionLike extends Unsubscribable {\n unsubscribe(): void;\n readonly closed: boolean;\n}\n\nexport class Subscription implements SubscriptionLike {\n public static EMPTY: Subscription = (function (empty: any) {\n empty.closed = true;\n return empty;\n })(new Subscription());\n\n public closed = false;\n private _teardowns: (Unsubscribable | (() => void))[] | null = null;\n\n constructor(initialTeardown?: () => void) {\n if (initialTeardown) {\n this.add(initialTeardown);\n }\n }\n\n unsubscribe(): void {\n if (this.closed) {\n return;\n }\n this.closed = true;\n const teardowns = this._teardowns;\n this._teardowns = null;\n\n if (teardowns) {\n let errors: any[] | null = null;\n teardowns.forEach(teardown => {\n try {\n if (typeof teardown === 'function') {\n teardown();\n } else if (teardown && typeof (teardown as any).unsubscribe === 'function') {\n (teardown as any).unsubscribe();\n }\n } catch (e) {\n errors = errors || [];\n errors.push(e);\n }\n });\n if (errors) {\n throw new Error(errors.map(e => e.message).join('\\n'));\n }\n }\n }\n\n add(teardown: Unsubscribable | Function | void): void {\n if (!teardown) {\n return;\n }\n let teardownToAdd: Unsubscribable | (() => void);\n if (typeof teardown === 'function') {\n teardownToAdd = teardown as () => void;\n } else if (typeof teardown === 'object' && teardown !== null && typeof (teardown as any).unsubscribe === 'function') {\n teardownToAdd = teardown as Unsubscribable;\n } else {\n return;\n }\n\n if (this.closed) {\n if (typeof teardownToAdd === 'function') {\n teardownToAdd();\n } else {\n teardownToAdd.unsubscribe();\n }\n } else {\n if (!this._teardowns) {\n this._teardowns = [];\n }\n this._teardowns.push(teardownToAdd);\n }\n }\n\n remove(teardown: Unsubscribable | Function | void): void {\n const teardowns = this._teardowns;\n if (!teardowns || !teardown) {\n return;\n }\n const index = teardowns.indexOf(teardown as any);\n if (index !== -1) {\n teardowns.splice(index, 1);\n }\n }\n}\n", "import { Subscription } from './Subscription';\nimport { Observer } from './Observer';\n\nexport class Subscriber<T, E = any> extends Subscription implements Observer<T, E> {\n constructor(private destination: Observer<T, E>) {\n super();\n }\n next(value: T): void {\n if (this.closed) {\n return;\n }\n this.destination.next(value);\n }\n error(err: E): void {\n if (this.closed) {\n return;\n }\n this.closed = true;\n this.destination.error(err);\n this.unsubscribe();\n }\n complete(): void {\n if (this.closed) {\n return;\n }\n this.closed = true;\n this.destination.complete();\n this.unsubscribe();\n }\n}\n", "import { Subscription } from './Subscription';\nimport { CompleteCallBack, ErrorCallBack, ObserverCallBack, Subscribable } from './Subscribable';\nimport { Observer } from './Observer';\nimport { Subscriber } from './Subscriber';\n\nexport type OperatorFunction<T, R> = (source: Observable<T>) => Observable<R>;\n\nexport class Observable<T, E = any> implements Subscribable<T, E> {\n private _producerFunction: ((subscriber: Subscriber<T, E>) => Subscription | (() => void) | void) | undefined;\n\n constructor(producerFunction?: (subscriber: Subscriber<T, E>) => Subscription | (() => void) | void) {\n this._producerFunction = producerFunction;\n }\n\n subscribe(d: ObserverCallBack<T>): Subscription;\n subscribe(d: ObserverCallBack<T>, e?: ErrorCallBack, c?: CompleteCallBack): Subscription;\n subscribe(observer: Partial<Observer<T, E>>): Subscription;\n subscribe(observer: Partial<Observer<T, E>> | ObserverCallBack<T>, e?: ErrorCallBack, c?: CompleteCallBack): Subscription {\n /*\n const observer = observerOrNext;\n\n const partialObserver: Partial<Observer<T, E>> = typeof observer === 'function'\n ? {\n next: observer,\n error: error,\n complete: complete\n }\n : {\n next: observer.next,\n error: observer.error,\n complete: observer.complete\n };\n */\n const partialObserver: Partial<Observer<T, E>> = {\n next: typeof observer === 'object' ? observer.next : observer,\n error: typeof observer === 'object' ? observer.error : e,\n complete: typeof observer === 'object' ? observer.complete : c\n };\n\n // Create a new internal subscriber for this specific subscription\n const internalSubscriber = new Subscriber({\n next: (data: T) => {\n partialObserver.next?.(data);\n },\n error: (e: E) => {\n partialObserver.error?.(e);\n },\n complete: () => {\n partialObserver.complete?.();\n }\n });\n\n if (this._producerFunction) {\n const teardownLogic = this._producerFunction(internalSubscriber);\n if (teardownLogic) {\n internalSubscriber.add(teardownLogic);\n }\n }\n\n return internalSubscriber;\n }\n\n // complete \uB418\uC57C\uC9C0\uB9CC \uB9C8\uC9C0\uB9C9 \uCC98\uB9AC\uB41C\uB2E4!\n toPromise(): Promise<T | undefined> {\n return new Promise((resolve, reject) => {\n let lastValue: T | undefined;\n let subscription: Subscription;\n\n subscription = this.subscribe({\n next: (value: T) => {\n lastValue = value;\n },\n error: (err: E) => {\n reject(err);\n subscription.unsubscribe();\n },\n complete: () => {\n resolve(lastValue);\n subscription.unsubscribe();\n }\n });\n });\n }\n\n pipe(): Observable<T, E>;\n pipe<A>(op1: OperatorFunction<T, A>): Observable<A, any>;\n pipe<A, B>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>): Observable<B, any>;\n pipe<A, B, C>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>): Observable<C, any>;\n pipe<A, B, C, D>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>): Observable<D, any>;\n pipe<A, B, C, D, E>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>): Observable<E, any>;\n pipe<A, B, C, D, E, F>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>): Observable<F, any>;\n pipe<A, B, C, D, E, F, G>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>): Observable<G, any>;\n pipe<A, B, C, D, E, F, G, H>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>): Observable<H, any>;\n pipe<A, B, C, D, E, F, G, H, I>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>): Observable<I, any>;\n pipe<A, B, C, D, E, F, G, H, I, J>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>): Observable<J, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>): Observable<K, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>): Observable<L, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>): Observable<M, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>): Observable<N, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>): Observable<O, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>): Observable<P, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>, op17: OperatorFunction<P, Q>): Observable<Q, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>, op17: OperatorFunction<P, Q>, op18: OperatorFunction<Q, R>): Observable<R, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>, op17: OperatorFunction<P, Q>, op18: OperatorFunction<Q, R>, op19: OperatorFunction<R, S>): Observable<S, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>, op17: OperatorFunction<P, Q>, op18: OperatorFunction<Q, R>, op19: OperatorFunction<R, S>, op20: OperatorFunction<S, U>): Observable<U, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>, op17: OperatorFunction<P, Q>, op18: OperatorFunction<Q, R>, op19: OperatorFunction<R, S>, op20: OperatorFunction<S, U>, op21: OperatorFunction<U, V>): Observable<V, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>, op17: OperatorFunction<P, Q>, op18: OperatorFunction<Q, R>, op19: OperatorFunction<R, S>, op20: OperatorFunction<S, U>, op21: OperatorFunction<U, V>, op22: OperatorFunction<V, W>): Observable<W, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>, op17: OperatorFunction<P, Q>, op18: OperatorFunction<Q, R>, op19: OperatorFunction<R, S>, op20: OperatorFunction<S, U>, op21: OperatorFunction<U, V>, op22: OperatorFunction<V, W>, op23: OperatorFunction<W, X>): Observable<X, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>, op17: OperatorFunction<P, Q>, op18: OperatorFunction<Q, R>, op19: OperatorFunction<R, S>, op20: OperatorFunction<S, U>, op21: OperatorFunction<U, V>, op22: OperatorFunction<V, W>, op23: OperatorFunction<W, X>, op24: OperatorFunction<X, Y>): Observable<Y, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>, op17: OperatorFunction<P, Q>, op18: OperatorFunction<Q, R>, op19: OperatorFunction<R, S>, op20: OperatorFunction<S, U>, op21: OperatorFunction<U, V>, op22: OperatorFunction<V, W>, op23: OperatorFunction<W, X>, op24: OperatorFunction<X, Y>, op25: OperatorFunction<Y, Z>): Observable<Z, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>, op17: OperatorFunction<P, Q>, op18: OperatorFunction<Q, R>, op19: OperatorFunction<R, S>, op20: OperatorFunction<S, U>, op21: OperatorFunction<U, V>, op22: OperatorFunction<V, W>, op23: OperatorFunction<W, X>, op24: OperatorFunction<X, Y>, op25: OperatorFunction<Y, Z>, op26: OperatorFunction<Z, AA>): Observable<AA, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>, op17: OperatorFunction<P, Q>, op18: OperatorFunction<Q, R>, op19: OperatorFunction<R, S>, op20: OperatorFunction<S, U>, op21: OperatorFunction<U, V>, op22: OperatorFunction<V, W>, op23: OperatorFunction<W, X>, op24: OperatorFunction<X, Y>, op25: OperatorFunction<Y, Z>, op26: OperatorFunction<Z, AA>, op27: OperatorFunction<AA, AB>): Observable<AB, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>, op17: OperatorFunction<P, Q>, op18: OperatorFunction<Q, R>, op19: OperatorFunction<R, S>, op20: OperatorFunction<S, U>, op21: OperatorFunction<U, V>, op22: OperatorFunction<V, W>, op23: OperatorFunction<W, X>, op24: OperatorFunction<X, Y>, op25: OperatorFunction<Y, Z>, op26: OperatorFunction<Z, AA>, op27: OperatorFunction<AA, AB>, op28: OperatorFunction<AB, AC>): Observable<AC, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>, op17: OperatorFunction<P, Q>, op18: OperatorFunction<Q, R>, op19: OperatorFunction<R, S>, op20: OperatorFunction<S, U>, op21: OperatorFunction<U, V>, op22: OperatorFunction<V, W>, op23: OperatorFunction<W, X>, op24: OperatorFunction<X, Y>, op25: OperatorFunction<Y, Z>, op26: OperatorFunction<Z, AA>, op27: OperatorFunction<AA, AB>, op28: OperatorFunction<AB, AC>, op29: OperatorFunction<AC, AD>): Observable<AD, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>, op17: OperatorFunction<P, Q>, op18: OperatorFunction<Q, R>, op19: OperatorFunction<R, S>, op20: OperatorFunction<S, U>, op21: OperatorFunction<U, V>, op22: OperatorFunction<V, W>, op23: OperatorFunction<W, X>, op24: OperatorFunction<X, Y>, op25: OperatorFunction<Y, Z>, op26: OperatorFunction<Z, AA>, op27: OperatorFunction<AA, AB>, op28: OperatorFunction<AB, AC>, op29: OperatorFunction<AC, AD>, op30: OperatorFunction<AD, AE>): Observable<AE, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF>(\n op1: OperatorFunction<T, A>,\n op2: OperatorFunction<A, B>,\n op3: OperatorFunction<B, C>,\n op4: OperatorFunction<C, D>,\n op5: OperatorFunction<D, E>,\n op6: OperatorFunction<E, F>,\n op7: OperatorFunction<F, G>,\n op8: OperatorFunction<G, H>,\n op9: OperatorFunction<H, I>,\n op10: OperatorFunction<I, J>,\n op11: OperatorFunction<J, K>,\n op12: OperatorFunction<K, L>,\n op13: OperatorFunction<L, M>,\n op14: OperatorFunction<M, N>,\n op15: OperatorFunction<N, O>,\n op16: OperatorFunction<O, P>,\n op17: OperatorFunction<P, Q>,\n op18: OperatorFunction<Q, R>,\n op19: OperatorFunction<R, S>,\n op20: OperatorFunction<S, U>,\n op21: OperatorFunction<U, V>,\n op22: OperatorFunction<V, W>,\n op23: OperatorFunction<W, X>,\n op24: OperatorFunction<X, Y>,\n op25: OperatorFunction<Y, Z>,\n op26: OperatorFunction<Z, AA>,\n op27: OperatorFunction<AA, AB>,\n op28: OperatorFunction<AB, AC>,\n op29: OperatorFunction<AC, AD>,\n op30: OperatorFunction<AD, AE>,\n op31: OperatorFunction<AE, AF>\n ): Observable<AF, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG>(\n op1: OperatorFunction<T, A>,\n op2: OperatorFunction<A, B>,\n op3: OperatorFunction<B, C>,\n op4: OperatorFunction<C, D>,\n op5: OperatorFunction<D, E>,\n op6: OperatorFunction<E, F>,\n op7: OperatorFunction<F, G>,\n op8: OperatorFunction<G, H>,\n op9: OperatorFunction<H, I>,\n op10: OperatorFunction<I, J>,\n op11: OperatorFunction<J, K>,\n op12: OperatorFunction<K, L>,\n op13: OperatorFunction<L, M>,\n op14: OperatorFunction<M, N>,\n op15: OperatorFunction<N, O>,\n op16: OperatorFunction<O, P>,\n op17: OperatorFunction<P, Q>,\n op18: OperatorFunction<Q, R>,\n op19: OperatorFunction<R, S>,\n op20: OperatorFunction<S, U>,\n op21: OperatorFunction<U, V>,\n op22: OperatorFunction<V, W>,\n op23: OperatorFunction<W, X>,\n op24: OperatorFunction<X, Y>,\n op25: OperatorFunction<Y, Z>,\n op26: OperatorFunction<Z, AA>,\n op27: OperatorFunction<AA, AB>,\n op28: OperatorFunction<AB, AC>,\n op29: OperatorFunction<AC, AD>,\n op30: OperatorFunction<AD, AE>,\n op31: OperatorFunction<AE, AF>,\n op32: OperatorFunction<AF, AG>\n ): Observable<AG, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH>(\n op1: OperatorFunction<T, A>,\n op2: OperatorFunction<A, B>,\n op3: OperatorFunction<B, C>,\n op4: OperatorFunction<C, D>,\n op5: OperatorFunction<D, E>,\n op6: OperatorFunction<E, F>,\n op7: OperatorFunction<F, G>,\n op8: OperatorFunction<G, H>,\n op9: OperatorFunction<H, I>,\n op10: OperatorFunction<I, J>,\n op11: OperatorFunction<J, K>,\n op12: OperatorFunction<K, L>,\n op13: OperatorFunction<L, M>,\n op14: OperatorFunction<M, N>,\n op15: OperatorFunction<N, O>,\n op16: OperatorFunction<O, P>,\n op17: OperatorFunction<P, Q>,\n op18: OperatorFunction<Q, R>,\n op19: OperatorFunction<R, S>,\n op20: OperatorFunction<S, U>,\n op21: OperatorFunction<U, V>,\n op22: OperatorFunction<V, W>,\n op23: OperatorFunction<W, X>,\n op24: OperatorFunction<X, Y>,\n op25: OperatorFunction<Y, Z>,\n op26: OperatorFunction<Z, AA>,\n op27: OperatorFunction<AA, AB>,\n op28: OperatorFunction<AB, AC>,\n op29: OperatorFunction<AC, AD>,\n op30: OperatorFunction<AD, AE>,\n op31: OperatorFunction<AE, AF>,\n op32: OperatorFunction<AF, AG>,\n op33: OperatorFunction<AG, AH>\n ): Observable<AH, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI>(\n op1: OperatorFunction<T, A>,\n op2: OperatorFunction<A, B>,\n op3: OperatorFunction<B, C>,\n op4: OperatorFunction<C, D>,\n op5: OperatorFunction<D, E>,\n op6: OperatorFunction<E, F>,\n op7: OperatorFunction<F, G>,\n op8: OperatorFunction<G, H>,\n op9: OperatorFunction<H, I>,\n op10: OperatorFunction<I, J>,\n op11: OperatorFunction<J, K>,\n op12: OperatorFunction<K, L>,\n op13: OperatorFunction<L, M>,\n op14: OperatorFunction<M, N>,\n op15: OperatorFunction<N, O>,\n op16: OperatorFunction<O, P>,\n op17: OperatorFunction<P, Q>,\n op18: OperatorFunction<Q, R>,\n op19: OperatorFunction<R, S>,\n op20: OperatorFunction<S, U>,\n op21: OperatorFunction<U, V>,\n op22: OperatorFunction<V, W>,\n op23: OperatorFunction<W, X>,\n op24: OperatorFunction<X, Y>,\n op25: OperatorFunction<Y, Z>,\n op26: OperatorFunction<Z, AA>,\n op27: OperatorFunction<AA, AB>,\n op28: OperatorFunction<AB, AC>,\n op29: OperatorFunction<AC, AD>,\n op30: OperatorFunction<AD, AE>,\n op31: OperatorFunction<AE, AF>,\n op32: OperatorFunction<AF, AG>,\n op33: OperatorFunction<AG, AH>,\n op34: OperatorFunction<AH, AI>\n ): Observable<AI, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ>(\n op1: OperatorFunction<T, A>,\n op2: OperatorFunction<A, B>,\n op3: OperatorFunction<B, C>,\n op4: OperatorFunction<C, D>,\n op5: OperatorFunction<D, E>,\n op6: OperatorFunction<E, F>,\n op7: OperatorFunction<F, G>,\n op8: OperatorFunction<G, H>,\n op9: OperatorFunction<H, I>,\n op10: OperatorFunction<I, J>,\n op11: OperatorFunction<J, K>,\n op12: OperatorFunction<K, L>,\n op13: OperatorFunction<L, M>,\n op14: OperatorFunction<M, N>,\n op15: OperatorFunction<N, O>,\n op16: OperatorFunction<O, P>,\n op17: OperatorFunction<P, Q>,\n op18: OperatorFunction<Q, R>,\n op19: OperatorFunction<R, S>,\n op20: OperatorFunction<S, U>,\n op21: OperatorFunction<U, V>,\n op22: OperatorFunction<V, W>,\n op23: OperatorFunction<W, X>,\n op24: OperatorFunction<X, Y>,\n op25: OperatorFunction<Y, Z>,\n op26: OperatorFunction<Z, AA>,\n op27: OperatorFunction<AA, AB>,\n op28: OperatorFunction<AB, AC>,\n op29: OperatorFunction<AC, AD>,\n op30: OperatorFunction<AD, AE>,\n op31: OperatorFunction<AE, AF>,\n op32: OperatorFunction<AF, AG>,\n op33: OperatorFunction<AG, AH>,\n op34: OperatorFunction<AH, AI>,\n op35: OperatorFunction<AI, AJ>\n ): Observable<AJ, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ, AK>(\n op1: OperatorFunction<T, A>,\n op2: OperatorFunction<A, B>,\n op3: OperatorFunction<B, C>,\n op4: OperatorFunction<C, D>,\n op5: OperatorFunction<D, E>,\n op6: OperatorFunction<E, F>,\n op7: OperatorFunction<F, G>,\n op8: OperatorFunction<G, H>,\n op9: OperatorFunction<H, I>,\n op10: OperatorFunction<I, J>,\n op11: OperatorFunction<J, K>,\n op12: OperatorFunction<K, L>,\n op13: OperatorFunction<L, M>,\n op14: OperatorFunction<M, N>,\n op15: OperatorFunction<N, O>,\n op16: OperatorFunction<O, P>,\n op17: OperatorFunction<P, Q>,\n op18: OperatorFunction<Q, R>,\n op19: OperatorFunction<R, S>,\n op20: OperatorFunction<S, U>,\n op21: OperatorFunction<U, V>,\n op22: OperatorFunction<V, W>,\n op23: OperatorFunction<W, X>,\n op24: OperatorFunction<X, Y>,\n op25: OperatorFunction<Y, Z>,\n op26: OperatorFunction<Z, AA>,\n op27: OperatorFunction<AA, AB>,\n op28: OperatorFunction<AB, AC>,\n op29: OperatorFunction<AC, AD>,\n op30: OperatorFunction<AD, AE>,\n op31: OperatorFunction<AE, AF>,\n op32: OperatorFunction<AF, AG>,\n op33: OperatorFunction<AG, AH>,\n op34: OperatorFunction<AH, AI>,\n op35: OperatorFunction<AI, AJ>,\n op36: OperatorFunction<AJ, AK>\n ): Observable<AK, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ, AK, AL>(\n op1: OperatorFunction<T, A>,\n op2: OperatorFunction<A, B>,\n op3: OperatorFunction<B, C>,\n op4: OperatorFunction<C, D>,\n op5: OperatorFunction<D, E>,\n op6: OperatorFunction<E, F>,\n op7: OperatorFunction<F, G>,\n op8: OperatorFunction<G, H>,\n op9: OperatorFunction<H, I>,\n op10: OperatorFunction<I, J>,\n op11: OperatorFunction<J, K>,\n op12: OperatorFunction<K, L>,\n op13: OperatorFunction<L, M>,\n op14: OperatorFunction<M, N>,\n op15: OperatorFunction<N, O>,\n op16: OperatorFunction<O, P>,\n op17: OperatorFunction<P, Q>,\n op18: OperatorFunction<Q, R>,\n op19: OperatorFunction<R, S>,\n op20: OperatorFunction<S, U>,\n op21: OperatorFunction<U, V>,\n op22: OperatorFunction<V, W>,\n op23: OperatorFunction<W, X>,\n op24: OperatorFunction<X, Y>,\n op25: OperatorFunction<Y, Z>,\n op26: OperatorFunction<Z, AA>,\n op27: OperatorFunction<AA, AB>,\n op28: OperatorFunction<AB, AC>,\n op29: OperatorFunction<AC, AD>,\n op30: OperatorFunction<AD, AE>,\n op31: OperatorFunction<AE, AF>,\n op32: OperatorFunction<AF, AG>,\n op33: OperatorFunction<AG, AH>,\n op34: OperatorFunction<AH, AI>,\n op35: OperatorFunction<AI, AJ>,\n op36: OperatorFunction<AJ, AK>,\n op37: OperatorFunction<AK, AL>\n ): Observable<AL, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ, AK, AL, AM>(\n op1: OperatorFunction<T, A>,\n op2: OperatorFunction<A, B>,\n op3: OperatorFunction<B, C>,\n op4: OperatorFunction<C, D>,\n op5: OperatorFunction<D, E>,\n op6: OperatorFunction<E, F>,\n op7: OperatorFunction<F, G>,\n op8: OperatorFunction<G, H>,\n op9: OperatorFunction<H, I>,\n op10: OperatorFunction<I, J>,\n op11: OperatorFunction<J, K>,\n op12: OperatorFunction<K, L>,\n op13: OperatorFunction<L, M>,\n op14: OperatorFunction<M, N>,\n op15: OperatorFunction<N, O>,\n op16: OperatorFunction<O, P>,\n op17: OperatorFunction<P, Q>,\n op18: OperatorFunction<Q, R>,\n op19: OperatorFunction<R, S>,\n op20: OperatorFunction<S, U>,\n op21: OperatorFunction<U, V>,\n op22: OperatorFunction<V, W>,\n op23: OperatorFunction<W, X>,\n op24: OperatorFunction<X, Y>,\n op25: OperatorFunction<Y, Z>,\n op26: OperatorFunction<Z, AA>,\n op27: OperatorFunction<AA, AB>,\n op28: OperatorFunction<AB, AC>,\n op29: OperatorFunction<AC, AD>,\n op30: OperatorFunction<AD, AE>,\n op31: OperatorFunction<AE, AF>,\n op32: OperatorFunction<AF, AG>,\n op33: OperatorFunction<AG, AH>,\n op34: OperatorFunction<AH, AI>,\n op35: OperatorFunction<AI, AJ>,\n op36: OperatorFunction<AJ, AK>,\n op37: OperatorFunction<AK, AL>,\n op38: OperatorFunction<AL, AM>\n ): Observable<AM, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ, AK, AL, AM, AN>(\n op1: OperatorFunction<T, A>,\n op2: OperatorFunction<A, B>,\n op3: OperatorFunction<B, C>,\n op4: OperatorFunction<C, D>,\n op5: OperatorFunction<D, E>,\n op6: OperatorFunction<E, F>,\n op7: OperatorFunction<F, G>,\n op8: OperatorFunction<G, H>,\n op9: OperatorFunction<H, I>,\n op10: OperatorFunction<I, J>,\n op11: OperatorFunction<J, K>,\n op12: OperatorFunction<K, L>,\n op13: OperatorFunction<L, M>,\n op14: OperatorFunction<M, N>,\n op15: OperatorFunction<N, O>,\n op16: OperatorFunction<O, P>,\n op17: OperatorFunction<P, Q>,\n op18: OperatorFunction<Q, R>,\n op19: OperatorFunction<R, S>,\n op20: OperatorFunction<S, U>,\n op21: OperatorFunction<U, V>,\n op22: OperatorFunction<V, W>,\n op23: OperatorFunction<W, X>,\n op24: OperatorFunction<X, Y>,\n op25: OperatorFunction<Y, Z>,\n op26: OperatorFunction<Z, AA>,\n op27: OperatorFunction<AA, AB>,\n op28: OperatorFunction<AB, AC>,\n op29: OperatorFunction<AC, AD>,\n op30: OperatorFunction<AD, AE>,\n op31: OperatorFunction<AE, AF>,\n op32: OperatorFunction<AF, AG>,\n op33: OperatorFunction<AG, AH>,\n op34: OperatorFunction<AH, AI>,\n op35: OperatorFunction<AI, AJ>,\n op36: OperatorFunction<AJ, AK>,\n op37: OperatorFunction<AK, AL>,\n op38: OperatorFunction<AL, AM>,\n op39: OperatorFunction<AM, AN>\n ): Observable<AN, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ, AK, AL, AM, AN, AO>(\n op1: OperatorFunction<T, A>,\n op2: OperatorFunction<A, B>,\n op3: OperatorFunction<B, C>,\n op4: OperatorFunction<C, D>,\n op5: OperatorFunction<D, E>,\n op6: OperatorFunction<E, F>,\n op7: OperatorFunction<F, G>,\n op8: OperatorFunction<G, H>,\n op9: OperatorFunction<H, I>,\n op10: OperatorFunction<I, J>,\n op11: OperatorFunction<J, K>,\n op12: OperatorFunction<K, L>,\n op13: OperatorFunction<L, M>,\n op14: OperatorFunction<M, N>,\n op15: OperatorFunction<N, O>,\n op16: OperatorFunction<O, P>,\n op17: OperatorFunction<P, Q>,\n op18: OperatorFunction<Q, R>,\n op19: OperatorFunction<R, S>,\n op20: OperatorFunction<S, U>,\n op21: OperatorFunction<U, V>,\n op22: OperatorFunction<V, W>,\n op23: OperatorFunction<W, X>,\n op24: OperatorFunction<X, Y>,\n op25: OperatorFunction<Y, Z>,\n op26: OperatorFunction<Z, AA>,\n op27: OperatorFunction<AA, AB>,\n op28: OperatorFunction<AB, AC>,\n op29: OperatorFunction<AC, AD>,\n op30: OperatorFunction<AD, AE>,\n op31: OperatorFunction<AE, AF>,\n op32: OperatorFunction<AF, AG>,\n op33: OperatorFunction<AG, AH>,\n op34: OperatorFunction<AH, AI>,\n op35: OperatorFunction<AI, AJ>,\n op36: OperatorFunction<AJ, AK>,\n op37: OperatorFunction<AK, AL>,\n op38: OperatorFunction<AL, AM>,\n op39: OperatorFunction<AM, AN>,\n op40: OperatorFunction<AN, AO>\n ): Observable<AO, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ, AK, AL, AM, AN, AO, AP>(\n op1: OperatorFunction<T, A>,\n op2: OperatorFunction<A, B>,\n op3: OperatorFunction<B, C>,\n op4: OperatorFunction<C, D>,\n op5: OperatorFunction<D, E>,\n op6: OperatorFunction<E, F>,\n op7: OperatorFunction<F, G>,\n op8: OperatorFunction<G, H>,\n op9: OperatorFunction<H, I>,\n op10: OperatorFunction<I, J>,\n op11: OperatorFunction<J, K>,\n op12: OperatorFunction<K, L>,\n op13: OperatorFunction<L, M>,\n op14: OperatorFunction<M, N>,\n op15: OperatorFunction<N, O>,\n op16: OperatorFunction<O, P>,\n op17: OperatorFunction<P, Q>,\n op18: OperatorFunction<Q, R>,\n op19: OperatorFunction<R, S>,\n op20: OperatorFunction<S, U>,\n op21: OperatorFunction<U, V>,\n op22: OperatorFunction<V, W>,\n op23: OperatorFunction<W, X>,\n op24: OperatorFunction<X, Y>,\n op25: OperatorFunction<Y, Z>,\n op26: OperatorFunction<Z, AA>,\n op27: OperatorFunction<AA, AB>,\n op28: OperatorFunction<AB, AC>,\n op29: OperatorFunction<AC, AD>,\n op30: OperatorFunction<AD, AE>,\n op31: OperatorFunction<AE, AF>,\n op32: OperatorFunction<AF, AG>,\n op33: OperatorFunction<AG, AH>,\n op34: OperatorFunction<AH, AI>,\n op35: OperatorFunction<AI, AJ>,\n op36: OperatorFunction<AJ, AK>,\n op37: OperatorFunction<AK, AL>,\n op38: OperatorFunction<AL, AM>,\n op39: OperatorFunction<AM, AN>,\n op40: OperatorFunction<AN, AO>,\n op41: OperatorFunction<AO, AP>\n ): Observable<AP, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ, AK, AL, AM, AN, AO, AP, AQ>(\n op1: OperatorFunction<T, A>,\n op2: OperatorFunction<A, B>,\n op3: OperatorFunction<B, C>,\n op4: OperatorFunction<C, D>,\n op5: OperatorFunction<D, E>,\n op6: OperatorFunction<E, F>,\n op7: OperatorFunction<F, G>,\n op8: OperatorFunction<G, H>,\n op9: OperatorFunction<H, I>,\n op10: OperatorFunction<I, J>,\n op11: OperatorFunction<J, K>,\n op12: OperatorFunction<K, L>,\n op13: OperatorFunction<L, M>,\n op14: OperatorFunction<M, N>,\n op15: OperatorFunction<N, O>,\n op16: OperatorFunction<O, P>,\n op17: OperatorFunction<P, Q>,\n op18: OperatorFunction<Q, R>,\n op19: OperatorFunction<R, S>,\n op20: OperatorFunction<S, U>,\n op21: OperatorFunction<U, V>,\n op22: OperatorFunction<V, W>,\n op23: OperatorFunction<W, X>,\n op24: OperatorFunction<X, Y>,\n op25: OperatorFunction<Y, Z>,\n op26: OperatorFunction<Z, AA>,\n op27: OperatorFunction<AA, AB>,\n op28: OperatorFunction<AB, AC>,\n op29: OperatorFunction<AC, AD>,\n op30: OperatorFunction<AD, AE>,\n op31: OperatorFunction<AE, AF>,\n op32: OperatorFunction<AF, AG>,\n op33: OperatorFunction<AG, AH>,\n op34: OperatorFunction<AH, AI>,\n op35: OperatorFunction<AI, AJ>,\n op36: OperatorFunction<AJ, AK>,\n op37: OperatorFunction<AK, AL>,\n op38: OperatorFunction<AL, AM>,\n op39: OperatorFunction<AM, AN>,\n op40: OperatorFunction<AN, AO>,\n op41: OperatorFunction<AO, AP>,\n op42: OperatorFunction<AP, AQ>\n ): Observable<AQ, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ, AK, AL, AM, AN, AO, AP, AQ, AR>(\n op1: OperatorFunction<T, A>,\n op2: OperatorFunction<A, B>,\n op3: OperatorFunction<B, C>,\n op4: OperatorFunction<C, D>,\n op5: OperatorFunction<D, E>,\n op6: OperatorFunction<E, F>,\n op7: OperatorFunction<F, G>,\n op8: OperatorFunction<G, H>,\n op9: OperatorFunction<H, I>,\n op10: OperatorFunction<I, J>,\n op11: OperatorFunction<J, K>,\n op12: OperatorFunction<K, L>,\n op13: OperatorFunction<L, M>,\n op14: OperatorFunction<M, N>,\n op15: OperatorFunction<N, O>,\n op16: OperatorFunction<O, P>,\n op17: OperatorFunction<P, Q>,\n op18: OperatorFunction<Q, R>,\n op19: OperatorFunction<R, S>,\n op20: OperatorFunction<S, U>,\n op21: OperatorFunction<U, V>,\n op22: OperatorFunction<V, W>,\n op23: OperatorFunction<W, X>,\n op24: OperatorFunction<X, Y>,\n op25: OperatorFunction<Y, Z>,\n op26: OperatorFunction<Z, AA>,\n op27: OperatorFunction<AA, AB>,\n op28: OperatorFunction<AB, AC>,\n op29: OperatorFunction<AC, AD>,\n op30: OperatorFunction<AD, AE>,\n op31: OperatorFunction<AE, AF>,\n op32: OperatorFunction<AF, AG>,\n op33: OperatorFunction<AG, AH>,\n op34: OperatorFunction<AH, AI>,\n op35: OperatorFunction<AI, AJ>,\n op36: OperatorFunction<AJ, AK>,\n op37: OperatorFunction<AK, AL>,\n op38: OperatorFunction<AL, AM>,\n op39: OperatorFunction<AM, AN>,\n op40: OperatorFunction<AN, AO>,\n op41: OperatorFunction<AO, AP>,\n op42: OperatorFunction<AP, AQ>,\n op43: OperatorFunction<AQ, AR>\n ): Observable<AR, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ, AK, AL, AM, AN, AO, AP, AQ, AR, AS>(\n op1: OperatorFunction<T, A>,\n op2: OperatorFunction<A, B>,\n op3: OperatorFunction<B, C>,\n op4: OperatorFunction<C, D>,\n op5: OperatorFunction<D, E>,\n op6: OperatorFunction<E, F>,\n op7: OperatorFunction<F, G>,\n op8: OperatorFunction<G, H>,\n op9: OperatorFunction<H, I>,\n op10: OperatorFunction<I, J>,\n op11: OperatorFunction<J, K>,\n op12: OperatorFunction<K, L>,\n op13: OperatorFunction<L, M>,\n op14: OperatorFunction<M, N>,\n op15: OperatorFunction<N, O>,\n op16: OperatorFunction<O, P>,\n op17: OperatorFunction<P, Q>,\n op18: OperatorFunction<Q, R>,\n op19: OperatorFunction<R, S>,\n op20: OperatorFunction<S, U>,\n op21: OperatorFunction<U, V>,\n op22: OperatorFunction<V, W>,\n op23: OperatorFunction<W, X>,\n op24: OperatorFunction<X, Y>,\n op25: OperatorFunction<Y, Z>,\n op26: OperatorFunction<Z, AA>,\n op27: OperatorFunction<AA, AB>,\n op28: OperatorFunction<AB, AC>,\n op29: OperatorFunction<AC, AD>,\n op30: OperatorFunction<AD, AE>,\n op31: OperatorFunction<AE, AF>,\n op32: OperatorFunction<AF, AG>,\n op33: OperatorFunction<AG, AH>,\n op34: OperatorFunction<AH, AI>,\n op35: OperatorFunction<AI, AJ>,\n op36: OperatorFunction<AJ, AK>,\n op37: OperatorFunction<AK, AL>,\n op38: OperatorFunction<AL, AM>,\n op39: OperatorFunction<AM, AN>,\n op40: OperatorFunction<AN, AO>,\n op41: OperatorFunction<AO, AP>,\n op42: OperatorFunction<AP, AQ>,\n op43: OperatorFunction<AQ, AR>,\n op44: OperatorFunction<AR, AS>\n ): Observable<AS, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ, AK, AL, AM, AN, AO, AP, AQ, AR, AS, AT>(\n op1: OperatorFunction<T, A>,\n op2: OperatorFunction<A, B>,\n op3: OperatorFunction<B, C>,\n op4: OperatorFunction<C, D>,\n op5: OperatorFunction<D, E>,\n op6: OperatorFunction<E, F>,\n op7: OperatorFunction<F, G>,\n op8: OperatorFunction<G, H>,\n op9: OperatorFunction<H, I>,\n op10: OperatorFunction<I, J>,\n op11: OperatorFunction<J, K>,\n op12: OperatorFunction<K, L>,\n op13: OperatorFunction<L, M>,\n op14: OperatorFunction<M, N>,\n op15: OperatorFunction<N, O>,\n op16: OperatorFunction<O, P>,\n op17: OperatorFunction<P, Q>,\n op18: OperatorFunction<Q, R>,\n op19: OperatorFunction<R, S>,\n op20: OperatorFunction<S, U>,\n op21: OperatorFunction<U, V>,\n op22: OperatorFunction<V, W>,\n op23: OperatorFunction<W, X>,\n op24: OperatorFunction<X, Y>,\n op25: OperatorFunction<Y, Z>,\n op26: OperatorFunction<Z, AA>,\n op27: OperatorFunction<AA, AB>,\n op28: OperatorFunction<AB, AC>,\n op29: OperatorFunction<AC, AD>,\n op30: OperatorFunction<AD, AE>,\n op31: OperatorFunction<AE, AF>,\n op32: OperatorFunction<AF, AG>,\n op33: OperatorFunction<AG, AH>,\n op34: OperatorFunction<AH, AI>,\n op35: OperatorFunction<AI, AJ>,\n op36: OperatorFunction<AJ, AK>,\n op37: OperatorFunction<AK, AL>,\n op38: OperatorFunction<AL, AM>,\n op39: OperatorFunction<AM, AN>,\n op40: OperatorFunction<AN, AO>,\n op41: OperatorFunction<AO, AP>,\n op42: OperatorFunction<AP, AQ>,\n op43: OperatorFunction<AQ, AR>,\n op44: OperatorFunction<AR, AS>,\n op45: OperatorFunction<AS, AT>\n ): Observable<AT, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ, AK, AL, AM, AN, AO, AP, AQ, AR, AS, AT, AU>(\n op1: OperatorFunction<T, A>,\n op2: OperatorFunction<A, B>,\n op3: OperatorFunction<B, C>,\n op4: OperatorFunction<C, D>,\n op5: OperatorFunction<D, E>,\n op6: OperatorFunction<E, F>,\n op7: OperatorFunction<F, G>,\n op8: OperatorFunction<G, H>,\n op9: OperatorFunction<H, I>,\n op10: OperatorFunction<I, J>,\n op11: OperatorFunction<J, K>,\n op12: OperatorFunction<K, L>,\n op13: OperatorFunction<L, M>,\n op14: OperatorFunction<M, N>,\n op15: OperatorFunction<N, O>,\n op16: OperatorFunction<O, P>,\n op17: OperatorFunction<P, Q>,\n op18: OperatorFunction<Q, R>,\n op19: OperatorFunction<R, S>,\n op20: OperatorFunction<S, U>,\n op21: OperatorFunction<U, V>,\n op22: OperatorFunction<V, W>,\n op23: OperatorFunction<W, X>,\n op24: OperatorFunction<X, Y>,\n op25: OperatorFunction<Y, Z>,\n op26: OperatorFunction<Z, AA>,\n op27: OperatorFunction<AA, AB>,\n op28: OperatorFunction<AB, AC>,\n op29: OperatorFunction<AC, AD>,\n op30: OperatorFunction<AD, AE>,\n op31: OperatorFunction<AE, AF>,\n op32: OperatorFunction<AF, AG>,\n op33: OperatorFunction<AG, AH>,\n op34: OperatorFunction<AH, AI>,\n op35: OperatorFunction<AI, AJ>,\n op36: OperatorFunction<AJ, AK>,\n op37: OperatorFunction<AK, AL>,\n op38: OperatorFunction<AL, AM>,\n op39: OperatorFunction<AM, AN>,\n op40: OperatorFunction<AN, AO>,\n op41: OperatorFunction<AO, AP>,\n op42: OperatorFunction<AP, AQ>,\n op43: OperatorFunction<AQ, AR>,\n op44: OperatorFunction<AR, AS>,\n op45: OperatorFunction<AS, AT>,\n op46: OperatorFunction<AT, AU>\n ): Observable<AU, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ, AK, AL, AM, AN, AO, AP, AQ, AR, AS, AT, AU, AV>(\n op1: OperatorFunction<T, A>,\n op2: OperatorFunction<A, B>,\n op3: OperatorFunction<B, C>,\n op4: OperatorFunction<C, D>,\n op5: OperatorFunction<D, E>,\n op6: OperatorFunction<E, F>,\n op7: OperatorFunction<F, G>,\n op8: OperatorFunction<G, H>,\n op9: OperatorFunction<H, I>,\n op10: OperatorFunction<I, J>,\n op11: OperatorFunction<J, K>,\n op12: OperatorFunction<K, L>,\n op13: OperatorFunction<L, M>,\n op14: OperatorFunction<M, N>,\n op15: OperatorFunction<N, O>,\n op16: OperatorFunction<O, P>,\n op17: OperatorFunction<P, Q>,\n op18: OperatorFunction<Q, R>,\n op19: OperatorFunction<R, S>,\n op20: OperatorFunction<S, U>,\n op21: OperatorFunction<U, V>,\n op22: OperatorFunction<V, W>,\n op23: OperatorFunction<W, X>,\n op24: OperatorFunction<X, Y>,\n op25: OperatorFunction<Y, Z>,\n op26: OperatorFunction<Z, AA>,\n op27: OperatorFunction<AA, AB>,\n op28: OperatorFunction<AB, AC>,\n op29: OperatorFunction<AC, AD>,\n op30: OperatorFunction<AD, AE>,\n op31: OperatorFunction<AE, AF>,\n op32: OperatorFunction<AF, AG>,\n op33: OperatorFunction<AG, AH>,\n op34: OperatorFunction<AH, AI>,\n op35: OperatorFunction<AI, AJ>,\n op36: OperatorFunction<AJ, AK>,\n op37: OperatorFunction<AK, AL>,\n op38: OperatorFunction<AL, AM>,\n op39: OperatorFunction<AM, AN>,\n op40: OperatorFunction<AN, AO>,\n op41: OperatorFunction<AO, AP>,\n op42: OperatorFunction<AP, AQ>,\n op43: OperatorFunction<AQ, AR>,\n op44: OperatorFunction<AR, AS>,\n op45: OperatorFunction<AS, AT>,\n op46: OperatorFunction<AT, AU>,\n op47: OperatorFunction<AU, AV>\n ): Observable<AV, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ, AK, AL, AM, AN, AO, AP, AQ, AR, AS, AT, AU, AV, AW>(\n op1: OperatorFunction<T, A>,\n op2: OperatorFunction<A, B>,\n op3: OperatorFunction<B, C>,\n op4: OperatorFunction<C, D>,\n op5: OperatorFunction<D, E>,\n op6: OperatorFunction<E, F>,\n op7: OperatorFunction<F, G>,\n op8: OperatorFunction<G, H>,\n op9: OperatorFunction<H, I>,\n op10: OperatorFunction<I, J>,\n op11: OperatorFunction<J, K>,\n op12: OperatorFunction<K, L>,\n op13: OperatorFunction<L, M>,\n op14: OperatorFunction<M, N>,\n op15: OperatorFunction<N, O>,\n op16: OperatorFunction<O, P>,\n op17: OperatorFunction<P, Q>,\n op18: OperatorFunction<Q, R>,\n op19: OperatorFunction<R, S>,\n op20: OperatorFunction<S, U>,\n op21: OperatorFunction<U, V>,\n op22: OperatorFunction<V, W>,\n op23: OperatorFunction<W, X>,\n op24: OperatorFunction<X, Y>,\n op25: OperatorFunction<Y, Z>,\n op26: OperatorFunction<Z, AA>,\n op27: OperatorFunction<AA, AB>,\n op28: OperatorFunction<AB, AC>,\n op29: OperatorFunction<AC, AD>,\n op30: OperatorFunction<AD, AE>,\n op31: OperatorFunction<AE, AF>,\n op32: OperatorFunction<AF, AG>,\n op33: OperatorFunction<AG, AH>,\n op34: OperatorFunction<AH, AI>,\n op35: OperatorFunction<AI, AJ>,\n op36: OperatorFunction<AJ, AK>,\n op37: OperatorFunction<AK, AL>,\n op38: OperatorFunction<AL, AM>,\n op39: OperatorFunction<AM, AN>,\n op40: OperatorFunction<AN, AO>,\n op41: OperatorFunction<AO, AP>,\n op42: OperatorFunction<AP, AQ>,\n op43: OperatorFunction<AQ, AR>,\n op44: OperatorFunction<AR, AS>,\n op45: OperatorFunction<AS, AT>,\n op46: OperatorFunction<AT, AU>,\n op47: OperatorFunction<AU, AV>,\n op48: OperatorFunction<AV, AW>\n ): Observable<AW, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ, AK, AL, AM, AN, AO, AP, AQ, AR, AS, AT, AU, AV, AW, AX>(\n op1: OperatorFunction<T, A>,\n op2: OperatorFunction<A, B>,\n op3: OperatorFunction<B, C>,\n op4: OperatorFunction<C, D>,\n op5: OperatorFunction<D, E>,\n op6: OperatorFunction<E, F>,\n op7: OperatorFunction<F, G>,\n op8: OperatorFunction<G, H>,\n op9: OperatorFunction<H, I>,\n op10: OperatorFunction<I, J>,\n op11: OperatorFunction<J, K>,\n op12: OperatorFunction<K, L>,\n op13: OperatorFunction<L, M>,\n op14: OperatorFunction<M, N>,\n op15: OperatorFunction<N, O>,\n op16: OperatorFunction<O, P>,\n op17: OperatorFunction<P, Q>,\n op18: OperatorFunction<Q, R>,\n op19: OperatorFunction<R, S>,\n op20: OperatorFunction<S, U>,\n op21: OperatorFunction<U, V>,\n op22: OperatorFunction<V, W>,\n op23: OperatorFunction<W, X>,\n op24: OperatorFunction<X, Y>,\n op25: OperatorFunction<Y, Z>,\n op26: OperatorFunction<Z, AA>,\n op27: OperatorFunction<AA, AB>,\n op28: OperatorFunction<AB, AC>,\n op29: OperatorFunction<AC, AD>,\n op30: OperatorFunction<AD, AE>,\n op31: OperatorFunction<AE, AF>,\n op32: OperatorFunction<AF, AG>,\n op33: OperatorFunction<AG, AH>,\n op34: OperatorFunction<AH, AI>,\n op35: OperatorFunction<AI, AJ>,\n op36: OperatorFunction<AJ, AK>,\n op37: OperatorFunction<AK, AL>,\n op38: OperatorFunction<AL, AM>,\n op39: OperatorFunction<AM, AN>,\n op40: OperatorFunction<AN, AO>,\n op41: OperatorFunction<AO, AP>,\n op42: OperatorFunction<AP, AQ>,\n op43: OperatorFunction<AQ, AR>,\n op44: OperatorFunction<AR, AS>,\n op45: OperatorFunction<AS, AT>,\n op46: OperatorFunction<AT, AU>,\n op47: OperatorFunction<AU, AV>,\n op48: OperatorFunction<AV, AW>,\n op49: OperatorFunction<AW, AX>\n ): Observable<AX, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ, AK, AL, AM, AN, AO, AP, AQ, AR, AS, AT, AU, AV, AW, AX, AY>(\n op1: OperatorFunction<T, A>,\n op2: OperatorFunction<A, B>,\n op3: OperatorFunction<B, C>,\n op4: OperatorFunction<C, D>,\n op5: OperatorFunction<D, E>,\n op6: OperatorFunction<E, F>,\n op7: OperatorFunction<F, G>,\n op8: OperatorFunction<G, H>,\n op9: OperatorFunction<H, I>,\n op10: OperatorFunction<I, J>,\n op11: OperatorFunction<J, K>,\n op12: OperatorFunction<K, L>,\n op13: OperatorFunction<L, M>,\n op14: OperatorFunction<M, N>,\n op15: OperatorFunction<N, O>,\n op16: OperatorFunction<O, P>,\n op17: OperatorFunction<P, Q>,\n op18: OperatorFunction<Q, R>,\n op19: OperatorFunction<R, S>,\n op20: OperatorFunction<S, U>,\n op21: OperatorFunction<U, V>,\n op22: OperatorFunction<V, W>,\n op23: OperatorFunction<W, X>,\n op24: OperatorFunction<X, Y>,\n op25: OperatorFunction<Y, Z>,\n op26: OperatorFunction<Z, AA>,\n op27: OperatorFunction<AA, AB>,\n op28: OperatorFunction<AB, AC>,\n op29: OperatorFunction<AC, AD>,\n op30: OperatorFunction<AD, AE>,\n op31: OperatorFunction<AE, AF>,\n op32: OperatorFunction<AF, AG>,\n op33: OperatorFunction<AG, AH>,\n op34: OperatorFunction<AH, AI>,\n op35: OperatorFunction<AI, AJ>,\n op36: OperatorFunction<AJ, AK>,\n op37: OperatorFunction<AK, AL>,\n op38: OperatorFunction<AL, AM>,\n op39: OperatorFunction<AM, AN>,\n op40: OperatorFunction<AN, AO>,\n op41: OperatorFunction<AO, AP>,\n op42: OperatorFunction<AP, AQ>,\n op43: OperatorFunction<AQ, AR>,\n op44: OperatorFunction<AR, AS>,\n op45: OperatorFunction<AS, AT>,\n op46: OperatorFunction<AT, AU>,\n op47: OperatorFunction<AU, AV>,\n op48: OperatorFunction<AV, AW>,\n op49: OperatorFunction<AW, AX>,\n op50: OperatorFunction<AX, AY>\n ): Observable<AY, any>;\n pipe(...operators: OperatorFunction<any, any>[]): Observable<any, any> {\n if (operators.length === 0) {\n return this as any;\n }\n return operators.reduce((prev, operator) => operator(prev), this as any);\n }\n}\n", "import { Subscription } from './Subscription';\n\nexport class AutoCloseSubscription extends Subscription {\n constructor(userUnsubscribe: () => void) {\n super(userUnsubscribe);\n }\n}\n", "/**\n * AbortablePromise - Promise-like class that supports AbortSignal\n * Allows chaining with .then() and collects steps for sequential execution\n */\nexport class AbortablePromise<T> implements PromiseLike<T> {\n private steps: Array<(value: any) => any> = [];\n private signal?: AbortSignal;\n private initialExecutor: (() => Promise<any>) | Promise<any>;\n private errorHandler?: (reason: any) => any;\n\n constructor(\n executor: (() => Promise<T>) | Promise<T>,\n signal?: AbortSignal\n ) {\n this.initialExecutor = executor;\n this.signal = signal;\n }\n\n then<TResult1 = T, TResult2 = never>(\n onfulfilled?: ((value: T) => TResult1 | PromiseLike<TResult1>) | undefined | null,\n onrejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | undefined | null\n ): AbortablePromise<TResult1 | TResult2> {\n // Create new promise instance\n const newPromise = new AbortablePromise<TResult1 | TResult2>(\n this.initialExecutor,\n this.signal\n );\n\n // Copy existing steps\n newPromise.steps = [...this.steps];\n\n // Add new step if provided\n if (onfulfilled) {\n newPromise.steps.push(onfulfilled as any);\n }\n\n // Set error handler if provided\n if (onrejected) {\n newPromise.errorHandler = onrejected as any;\n } else if (this.errorHandler) {\n newPromise.errorHandler = this.errorHandler;\n }\n\n return newPromise;\n }\n\n catch<TResult = never>(\n onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | undefined | null\n ): AbortablePromise<T | TResult> {\n return this.then(undefined, onrejected);\n }\n\n finally(onfinally?: (() => void) | undefined | null): AbortablePromise<T> {\n return this.then(\n (value) => {\n onfinally?.();\n return value;\n },\n (reason) => {\n onfinally?.();\n throw reason;\n }\n );\n }\n\n private async execute(): Promise<T> {\n try {\n // Check abort before starting\n if (this.signal?.aborted) {\n throw new Error(this.signal.reason || 'Aborted');\n }\n\n // Create abort promise\n const abortPromise = new Promise<never>((_, reject) => {\n if (this.signal?.aborted) {\n return reject(new Error(this.signal.reason || 'Aborted'));\n }\n const callback = (e: Event) => {\n const target = e.target as AbortSignal;\n this.signal?.removeEventListener('abort', callback);\n reject(new Error(target.reason || 'Aborted'));\n };\n this.signal?.addEventListener('abort', callback, { once: true });\n });\n\n // Pipeline runner\n const pipelineRunner = async (): Promise<T> => {\n // Execute initial executor\n let lastResult: any;\n if (typeof this.initialExecutor === 'function') {\n if (this.signal?.aborted) {\n throw new Error(this.signal.reason || 'Aborted');\n }\n lastResult = await (this.initialExecutor as () => Promise<any>)();\n } else {\n lastResult = await this.initialExecutor;\n }\n\n // Execute each step sequentially\n for (let i = 0; i < this.steps.length; i++) {\n // Check abort before each step\n if (this.signal?.aborted) {\n throw new Error(this.signal.reason || 'Aborted');\n }\n\n const step = this.steps[i];\n lastResult = await step(lastResult);\n }\n\n return lastResult;\n };\n\n return await Promise.race([pipelineRunner(), abortPromise]);\n } catch (error) {\n if (this.errorHandler) {\n return await this.errorHandler(error);\n }\n throw error;\n }\n }\n\n // Convert to native Promise\n toPromise(): Promise<T> {\n return this.execute();\n }\n}", "import { Subscription } from '../message/Subscription';\nimport { ConstructorType } from '../types';\nimport { ValidUtils } from '../valid/ValidUtils';\nimport { AbortablePromise } from './AbortablePromise';\n\nexport namespace Promises {\n export const isFulfilled = <T>(result: PromiseSettledResult<T>): result is PromiseFulfilledResult<T> => {\n return result.status === 'fulfilled';\n };\n export const isRejected = <T>(result: PromiseSettledResult<T>): result is PromiseRejectedResult => {\n return result.status === 'rejected';\n };\n\n export const filterCatch = async (promise: Promise<any>, has: ConstructorType<any> | ((e: any) => boolean) | (ConstructorType<any> | ((e: any) => void))[]) => {\n try {\n await promise;\n return undefined;\n } catch (e) {\n const targetHas = Array.isArray(has) ? has : [has];\n for (let ha of targetHas) {\n if (ValidUtils.isConstructor(ha)) {\n if (e instanceof ha) {\n return e;\n }\n } else {\n if ((ha as Function)(e)) {\n return e;\n }\n }\n }\n throw e;\n }\n return undefined;\n };\n export const sleep = (ms: number) => new Promise(resolve => setTimeout(resolve, ms));\n export const sleepReject = (ms: number) => new Promise((resolve, reject) => setTimeout(reject, ms));\n export const settle = async <T, E = unknown>(promise: Promise<T>): Promise<Promises.SettledResult<T, E>> => {\n return Promise.allSettled([promise]).then(results => results[0]);\n };\n export const settles = async <T, E = unknown>(...promises: Promise<T>[]): Promise<Promises.SettledResult<T, E>[]> => {\n return Promise.allSettled(promises);\n };\n export type SettledResult<T, E = unknown> = PromiseFulfilledResult<T> | (Omit<PromiseRejectedResult, 'reason'> & { reason: E });\n\n export type LoopConfig = { age: number };\n export type ObservableLoop<T> = {\n subscribe: (callback: { then?: (data: T, config: LoopConfig & { duration: number }) => void; catch?: (e: any, config: LoopConfig & { duration: number }) => void; delayThen?: (config: LoopConfig & { duration: number; isCatch: boolean; data?: T }) => void }) => Subscription;\n };\n export const loop = <T>(config: { factory: (config: LoopConfig) => Promise<T>; delay?: number; loopDelay?: number }): ObservableLoop<T> => {\n return {\n subscribe: callback => {\n let stop = false;\n let age = 0;\n const loopExecute = async () => {\n const start = Date.now();\n let end = start;\n age++;\n const executeConfig = { age: age };\n let t: T;\n let isCatch = false;\n try {\n t = await config.factory(executeConfig);\n end = Date.now();\n callback.then?.(t, { ...executeConfig, duration: end - start });\n } catch (e) {\n isCatch = true;\n end = Date.now();\n callback.catch?.(e, { ...executeConfig, duration: end - start });\n }\n await sleep(config.loopDelay ?? 0);\n // @ts-ignore\n callback.delayThen?.({ ...executeConfig, duration: end - start, isCatch: isCatch, data: t });\n if (!stop) return loopExecute();\n };\n\n setTimeout(() => {\n loopExecute();\n }, config.delay ?? 0);\n\n return new Subscription(() => {\n stop = true;\n });\n }\n };\n };\n export const delayExecute = <T>(value: (() => T) | (() => Promise<T>), delay = 0): Promise<T> => {\n return new Promise<T>(resolve => {\n setTimeout(async () => {\n const t = await value();\n resolve(t);\n }, delay);\n });\n };\n\n /**\n * Create an abortable promise chain\n * @param executor Initial promise or promise factory\n * @param signal Optional AbortSignal to cancel the execution\n */\n export const abortable = <T>(executor: (() => Promise<T>) | Promise<T>, signal?: AbortSignal): AbortablePromise<T> => {\n return new AbortablePromise(executor, signal);\n };\n\n export const withResolvers = <T>() => {\n let resolve!: (value: T | PromiseLike<T>) => void;\n let reject!: (reason?: any) => void;\n\n const promise = new Promise<T>((res, rej) => {\n resolve = res;\n reject = rej;\n });\n\n return { promise, resolve, reject };\n };\n\n export const executeInChunks = async <T>(promiseFactories: (() => Promise<T>)[], config: { chunkSize: number; sleepBetweenChunks: number }): Promise<T[]> => {\n const results: T[] = [];\n const chunkSize = config.chunkSize;\n const sleepBetweenChunks = config.sleepBetweenChunks;\n\n for (let i = 0; i < promiseFactories.length; i += chunkSize) {\n const chunk = promiseFactories.slice(i, i + chunkSize);\n const chunkResults = await Promise.all(chunk.map(factory => factory()));\n results.push(...chunkResults);\n // Add small delay between chunks to be extra safe\n if (i + chunkSize < promiseFactories.length) {\n await sleep(sleepBetweenChunks);\n }\n }\n return results;\n };\n\n export const executeSettledInChunks = async <T, E = unknown>(promiseFactories: (() => Promise<T>)[], config: { chunkSize: number; sleepBetweenChunks: number }): Promise<Promises.SettledResult<T, E>[]> => {\n const results: Promises.SettledResult<T, E>[] = [];\n const chunkSize = config.chunkSize;\n const sleepBetweenChunks = config.sleepBetweenChunks;\n\n for (let i = 0; i < promiseFactories.length; i += chunkSize) {\n const chunk = promiseFactories.slice(i, i + chunkSize);\n const chunkResults = (await Promise.allSettled(chunk.map(factory => factory()))) as Promises.SettledResult<T, E>[];\n results.push(...chunkResults);\n // Add small delay between chunks to be extra safe\n if (i + chunkSize < promiseFactories.length) {\n await sleep(sleepBetweenChunks);\n }\n }\n return results;\n };\n\n /**\n * Execute promises with concurrency limit using a pool pattern\n * @param promiseFactories Array of promise factories\n * @param concurrency Maximum number of concurrent executions\n * @returns Promise that resolves with all results\n */\n export const executeWithConcurrency = async <T>(promiseFactories: (() => Promise<T>)[], concurrency: number = 10): Promise<T[]> => {\n const results: T[] = new Array(promiseFactories.length);\n let currentIndex = 0;\n\n const executeNext = async (index: number): Promise<void> => {\n while (currentIndex < promiseFactories.length) {\n const factoryIndex = currentIndex++;\n results[factoryIndex] = await promiseFactories[factoryIndex]();\n }\n };\n\n // Create pool of concurrent workers\n const workers = Array(Math.min(concurrency, promiseFactories.length))\n .fill(0)\n .map((_, i) => executeNext(i));\n\n await Promise.all(workers);\n return results;\n };\n\n /**\n * Execute promises with concurrency limit using race pattern (most efficient)\n * Automatically starts a new promise as soon as one completes\n * @param promiseFactories Array of promise factories\n * @param limit Maximum number of concurrent executions (default: 5)\n * @returns Promise that resolves with all results\n */\n export const executeWithLimit = async <T>(promiseFactories: (() => Promise<T>)[], limit: number = 5): Promise<T[]> => {\n const results: T[] = new Array(promiseFactories.length);\n const executing: Promise<void>[] = [];\n\n for (const [index, factory] of promiseFactories.entries()) {\n const promise = factory()\n .then(result => {\n results[index] = result;\n })\n .finally(() => {\n executing.splice(executing.indexOf(promise), 1);\n });\n\n executing.push(promise);\n\n if (executing.length >= limit) {\n await Promise.race(executing);\n }\n }\n\n await Promise.all(executing);\n return results;\n };\n\n /**\n * Retry a promise with configurable delays\n * @param factory Function that returns a promise to retry (receives attempt number and previous error as parameters)\n * @param config Retry configuration\n * @param config.retry Number of retries (0 = no retry, 1 = retry once if failed, etc.)\n * @param config.delay.initialDelay Delay before first attempt (default: 0)\n * @param config.delay.retryDelay Delay between retry attempts (default: 0)\n * @param config.onRetry Callback called on each retry with error and attempt number\n * @returns Promise that resolves with the result or rejects after all retries\n * @example\n * // Retry up to 3 times with 1 second delay between attempts\n * await Promises.retry((attempt, error) => {\n * if (error) console.log('Previous error:', error);\n * return fetchData(attempt);\n * }, { retry: 3, delay: { retryDelay: 1000 } })\n */\n export const retry = async <T>(\n factory: (attempt: number, error?: any) => Promise<T>,\n config: {\n retry: number;\n delay?: {\n initialDelay?: number;\n retryDelay?: number;\n };\n onRetry?: (error: any, attempt: number) => void;\n }\n ): Promise<T> => {\n const initialDelay = config.delay?.initialDelay ?? 0;\n const retryDelay = config.delay?.retryDelay ?? 0;\n\n // Initial delay before first attempt\n if (initialDelay > 0) {\n await sleep(initialDelay);\n }\n\n let lastError: any;\n\n for (let attempt = 0; attempt <= config.retry; attempt++) {\n try {\n return await factory(attempt, lastError);\n } catch (error) {\n lastError = error;\n\n // Don't retry if this was the last attempt\n if (attempt === config.retry) {\n break;\n }\n\n // Call onRetry callback if provided\n config.onRetry?.(error, attempt + 1);\n\n // Wait before retrying\n if (retryDelay > 0) {\n await sleep(retryDelay);\n }\n }\n }\n\n // All retries failed, throw the last error\n throw lastError;\n };\n\n export namespace Result {\n export type FulfilledType<T> = PromiseFulfilledResult<T>;\n export type RejectType<E = unknown> = Omit<PromiseRejectedResult, 'reason'> & { reason: E };\n export type PendingType = { status: 'pending' };\n export type Type<T, E = unknown> = FulfilledType<T> | RejectType<E> | PendingType;\n\n export type FulfilledState<T> = FulfilledType<T> & { isFulfilled: true; isRejected: false; isPending: false };\n export type RejectState<E = unknown> = RejectType<E> & { isFulfilled: false; isRejected: true; isPending: false };\n export type PendingState = PendingType & { isFulfilled: false; isRejected: false; isPending: true };\n export type UndefinedResultState = { status?: undefined; isFulfilled: false; isRejected: false; isPending: false };\n\n export type State<T, E = unknown> = FulfilledState<T> | RejectState<E> | PendingState;\n export type StateFactory<T, E = unknown> = State<T, E> & { factory: () => StateFactory<T, E> };\n export type PromiseState<T, E = unknown> = State<T, E> & Promise<T>;\n export type PromiseStateFactory<T, E = unknown> = PromiseState<T, E> & { factory: () => PromiseStateFactory<T, E> };\n\n export async function awaitWrap<T, E = unknown>(promise: Promise<T>): Promise<State<T, E>>;\n export async function awaitWrap<T, E = unknown>(promise: () => Promise<T>): Promise<StateFactory<T, E>>;\n export async function awaitWrap<T, E = unknown>(promise: Promise<T> | (() => Promise<T>)): Promise<State<T, E> | StateFactory<T, E>> {\n const data = typeof promise === 'function' ? wrap<T, E>(promise) : wrap<T, E>(promise);\n // try {\n\n try {\n await data;\n } catch (e) {}\n\n const rData = {\n status: (data as any).status,\n isFulfilled: (data as any).isFulfilled,\n isRejected: (data as any).isRejected,\n isPending: (data as any).isPending,\n value: (data as any).value,\n reason: (data as any).reason\n } as any;\n if (typeof promise === 'function') {\n rData.factory = () => {\n return awaitWrap(promise);\n };\n return rData;\n } else {\n return rData;\n }\n }\n\n export function wrap<T, E = unknown>(promise: Promise<T>): PromiseState<T, E>;\n export function wrap<T, E = unknown>(promise: () => Promise<T>): PromiseStateFactory<T, E>;\n export function wrap<T, E = unknown>(promise: Promise<T> | (() => Promise<T>)): PromiseState<T, E> | PromiseStateFactory<T, E> {\n const promiseResult = (typeof promise === 'function' ? promise() : promise) as State<T, E> & Promise<T>;\n if (typeof promise === 'function') {\n const p = promiseResult as unknown as PromiseStateFactory<T, E> & Promise<T>;\n p.factory = () => {\n return wrap(promise);\n };\n }\n if (promiseResult.status === undefined) {\n const p = promiseResult as unknown as PendingState & Promise<T>;\n p.status = 'pending';\n p.isPending = true;\n p.isFulfilled = false;\n p.isRejected = false;\n p.then(\n result => {\n console.log('result??', result);\n const p = promiseResult as unknown as FulfilledState<T>;\n p.status = 'fulfilled';\n p.isFulfilled = true;\n p.isRejected = false;\n p.isPending = false;\n p.value = result;\n },\n reason => {\n console.log('rejet??', reason);\n const p = promiseResult as unknown as RejectState<E>;\n p.status = 'rejected';\n p.isFulfilled = false;\n p.isRejected = true;\n p.isPending = false;\n p.reason = reason;\n }\n );\n }\n return promiseResult;\n }\n }\n}\n", "import { Obj } from '../../object/obj/Obj';\nimport { Drawable } from '../../draw/Drawable';\nimport { DrawData } from '../../draw/DrawData';\n\nexport type RenderConfig = { disableReset?: boolean };\n\nexport abstract class RenderDrawObj<T = any> extends Obj implements Drawable {\n render(draw: DrawData<T>, config?:RenderConfig):void {\n try {\n // draw.reset();\n this.beforeDraw(draw);\n draw.context.save();\n if (!config?.disableReset) {\n draw.reset?.();\n }\n this.draw(draw);\n draw.context.restore();\n this.afterDraw(draw);\n } catch (e) {\n console.error('error!!',e);\n this.error(e);\n }\n }\n protected beforeDraw(draw: DrawData<T>): void {};\n abstract draw(draw: DrawData<T>): void ;\n protected afterDraw(draw: DrawData<T>): void {};\n protected error(e: any): void {\n\n };\n\n // constructor(canvas: HTMLCanvasElement, context: CanvasRenderingContext2D, public avaliablePlace: Rectangle = new Rectangle(new Point(0, 0), new Point(0, 0))) {\n // super(canvas, context);\n // }\n\n\n // get centerPoint(): Point {\n // return new Point();\n // }\n}\n", "import { DrawData } from '../../draw/DrawData';\nimport { RenderConfig, RenderDrawObj } from './RenderDrawObj';\nimport { MathUtil } from '../../../math/MathUtil';\nimport { Point3D } from '../../Point3D';\nimport { WithRequiredProperty } from '../../../types';\nimport { Obj } from './Obj';\nimport BezierConfig = MathUtil.BezierConfig;\nimport { ConvertUtils } from '../../../convert/ConvertUtils';\nimport { ObjectUtils } from '../../../object/ObjectUtils';\n\n// export type Calc = { name: string, start: number; end: number };\n// export type CalcResult = Calc & { value: number };\n\nexport type TargetPointType = { obj: Obj, bezierConfig?: MathUtil.BezierConfig; };\nexport type Calc = { value: number | number[], bezierConfig?: MathUtil.BezierConfig };\nexport type TransactionConfig = {\n // startPoint?: Point,\n targetPoint: TargetPointType | TargetPointType[];\n drawFps: number;\n deferTransaction?: boolean;\n animationIterationCount?: number | 'infinite';\n animationDirection?: 'normal' | 'reverse';\n startPoint?: Obj;\n startCalcs?: { [key: string]: number | number[]};\n calcs?: { [key: string]: Calc | Calc[] } //{name: string, value: number, bezierConfig?: MathUtil.BezierConfig}[][];\n // calcs?: Calc[];\n // fillMode?: 'backwards' ;\n\n};\n\ntype RequiredTransactionConfig = WithRequiredProperty<TransactionConfig, 'animationIterationCount' | 'animationDirection'>;\n\ntype TransactionControllConfig = {\n points: Obj[];\n calcs?: { [key: string]: number[] | number[][] };\n pointPositionIndex: number;\n transactionStartCalcs: { [key: string]: number | number[]};\n transactionStartPoint: Obj;\n config: RequiredTransactionConfig;\n};\n\n\n// TODO: \uB098\uC911\uC5D0 force\uB85C \uC704\uCE58\uC774\uB3D9\uD558\uB294\uAC70 \uD568\uC218\uD544\uC694\uD560\uC218\uB3C4.. transaction \uCDE8\uC18C\uC640\uD568\uAED8\nexport abstract class RenderTransactionDrawObj<T = any> extends RenderDrawObj<T> {\n private static readonly DEFAULT_BEZIER: BezierConfig = { p1x: 0.61, p1y: 1, p2x: 0.88, p2y: 1 };\n private _currentTransactionControlConfig: TransactionControllConfig;\n private _waitTransactionConfig?: TransactionConfig;\n private _calc: { [key: string]: number | number[]} = {};\n // private _beforeObj: Obj;\n private _transactionDoneSubscribers: ((config: TransactionConfig) => Obj|undefined)[] = [];\n // private _transactionConfigQueue: TransactionControllConfig[] = [];\n\n\n constructor(data?: Point3D);\n constructor(data?: { x?: number, y?: number, z?: number });\n constructor(x?: number, y?: number, z?: number);\n constructor(x?: number | { x?: number, y?: number, z?: number } | Point3D, y?: number, z?: number) {\n if (x instanceof Point3D) {\n // @ts-ignore\n super(x);\n } else if (typeof x === 'object') {\n super(x);\n } else {\n super({ x, y, z });\n }\n // this._beforeObj = this.copyObj();\n this._currentTransactionControlConfig = this.makeTransactionControlConfig({ targetPoint: { obj: this }, drawFps: 1 });\n // console.log('----!@@@@@@', this.x, this.y,this.z, this._currentTransactionConfig);\n }\n\n // get beforeObj() {\n // return this._beforeObj;\n // }\n\n get calc() {\n return this._calc;\n }\n\n getCalc(key: string): number | number[] | undefined {\n return this._calc[key];\n }\n\n setCalc(key: string, value: number | number[]) {\n // if ((this as any).syncSubLayer?.name === 'normalSpin_template' || (this as any).syncSubLayer?.name === 'normalSpin_slot'){\n // debugger;\n // }\n this._calc[key] = value;\n }\n\n getTransactionStartPoint() {\n return this._currentTransactionControlConfig.transactionStartPoint;\n }\n getTransactionFrames() {\n return {points: this._currentTransactionControlConfig.points, calcs: this._currentTransactionControlConfig.calcs};\n }\n setTransactionIndex(index: number){\n this._currentTransactionControlConfig.pointPositionIndex = index;\n }\n getTransactionIndex() {\n return this._currentTransactionControlConfig.pointPositionIndex;\n }\n getTransactionIndexRate() {\n return MathUtil.getPercentByTotal(this._currentTransactionControlConfig.points.length, this._currentTransactionControlConfig.pointPositionIndex+1) /100;\n }\n getCurrentTransactionPoint() {\n return this._currentTransactionControlConfig.points[this._currentTransactionControlConfig.pointPositionIndex];\n }\n getCurrentDrawFps() {\n return this._currentTransactionControlConfig.config.drawFps;\n }\n getCurrentTransactionTargetPoint() {\n const drawFps = this.getCurrentDrawFps()\n const targetPoints = !Array.isArray(this._currentTransactionControlConfig.config.targetPoint) ? [this._currentTransactionControlConfig.config.targetPoint] : this._currentTransactionControlConfig.config.targetPoint;\n const size = Math.ceil(drawFps / targetPoints.length);\n const s = this._currentTransactionControlConfig.pointPositionIndex / size\n return targetPoints[s];\n }\n remainingFrameCountTransaction() {\n return (this._currentTransactionControlConfig.points.length - 1) - this._currentTransactionControlConfig.pointPositionIndex;\n }\n\n isDoneTransaction() {\n return this._currentTransactionControlConfig.pointPositionIndex >= this._currentTransactionControlConfig.points.length - 1;\n }\n\n makeTransactionControlConfig(transactionConfig: TransactionConfig) {\n // if ((this as any).syncSubLayer?.name === '\uC601\uC5ED-\uC815\uBA74-\uBAB8-group') {\n // console.log('-11-----', transactionConfig)\n // }\n // if ((this as any).syncSubLayer?.name === 'normalSpin_template' || (this as any).syncSubLayer?.name === 'normalSpin_slot'){\n // console.log('mmmmmmmmm')\n // }\n // console.log('-------------', this)\n // if ((this as any)._syncSubLayer?.name === \"normalBounce_template\" ) {\n // console.log('mmmmmmmmm', this.transform, this._currentTransactionControllConfig.transactionStartPoint.transform)\n // }\n if (transactionConfig.startPoint) {\n this.updateObjWithDefaults(transactionConfig.startPoint);\n }\n const transactionStartCalc = ObjectUtils.deepCopy(this._calc);\n\n if (transactionConfig.startCalcs) {\n Object.entries(transactionConfig.startCalcs).forEach(([k,v])=> {\n transactionStartCalc[k] = v;\n })\n }\n const requiredConfig = this.defaultTransactionConfig(transactionConfig);\n\n const targetPoints = requiredConfig.targetPoint = Array.isArray(requiredConfig.targetPoint) ? requiredConfig.targetPoint : [requiredConfig.targetPoint];\n const points: Obj[] = [];\n // \uB0A8\uC740\uAC8C \uC788\uC74C \uD2B8\uB79C\uC81D\uC158 \uC2DC\uC791\uD588\uC744\uB584 \uC2DC\uC791\uC810 \uAE30\uC900\uC73C\uB85C\n // let startPoint = this.remainingCntTransaction() > 0 ? this._transactionConfig.points[0] : this.toPoint3D();\n // console.log('---->',(this as any)._syncData?.name)\n // if ((this as any)._syncData?.name === 'mcdonalds-event_item_issue' || (this as any).syncSu_syncDatabLayer?.name === 'mcdonalds-event_item_issue'){\n // console.log('make!!!', transactionStartCalc)\n // }\n const currentPoint = this.copyObj();\n let startPoint: TargetPointType = { obj: currentPoint, bezierConfig: RenderTransactionDrawObj.DEFAULT_BEZIER };\n const drawFps = requiredConfig.drawFps;\n const size = Math.ceil(drawFps / targetPoints.length);\n // if (targetPoints.length === 1) {\n // points.push(targetPoints[0].obj);\n // } else {\n for (let i = 0; i < targetPoints.length; i++) {\n const targetPoint = targetPoints[i];\n const point = MathUtil.cubicBezier({start: startPoint.obj, end: targetPoint.obj}, {frame: size}, targetPoint.bezierConfig ?? RenderTransactionDrawObj.DEFAULT_BEZIER);\n const setPoints = [startPoint.obj, ...point, targetPoint.obj];\n setPoints.forEach(it=>it.data = targetPoint.obj.data);\n points.push(...setPoints);\n startPoint = targetPoint;\n }\n // }\n\n\n // if ((this as any)) {\n // // console.log('worldEngine Sync', layerDrawObject?.syncData?.name, layers)\n // console.log(requiredConfig)\n // }\n // const data = points.map(it => Math.floor(it.y*100)/100);\n // const data1 = targetPoints.map(it =>Math.floor(it.obj.y * 1000)/1000);\n // if (data[data.length-1] === 0) {\n // console.group('start', currentPoint)\n // console.log('1---@@@----', data1);\n // console.log('2---@@@----', data);\n // console.groupEnd()\n // }\n // \uD558\uB098\uB3C4\uC5C6\uC744\uB54C \uB610\uB294 0\uC73C\uB85C \uC14B\uD305\uC2DC \uBC14\uB85C \uC14B\n if (drawFps <= 0 && targetPoints.length > 0) {\n // console.log('!@!!!!!!!!!!!!!!!!!!!!!!!!!!!!', transactionConfig.startPoint, targetPoints[targetPoints.length - 1].obj)\n const lastPoint = targetPoints[targetPoints.length - 1].obj;\n points.length = 0;\n points.push(lastPoint);\n this.updateObjWithDefaults(lastPoint);\n }\n\n const calcs: { [key: string]: number[] | number[][] } = {};\n Object.entries(requiredConfig.calcs ?? {})?.forEach(([key, value], index) => {\n const values = Array.isArray(value) ? value : [value];\n let startPoint = transactionStartCalc[key];\n const points: number[] | number[][] = [];\n for (let i = 0; i < values.length; i++) {\n const end = values[i];\n if (Array.isArray(end.value)) {\n const point: number[][] = [];\n const cstart = (startPoint??[]) as number[];\n const cend = end.value as number[];\n const rpoints = cend.map((it,index) => {\n const b = MathUtil.cubicBezier({ start: cstart[index] ?? 0, end: cend[index] ?? 0 }, { frame: size }, end.bezierConfig ?? RenderTransactionDrawObj.DEFAULT_BEZIER)\n // console.log('----------22>', index, cstart[index], cend[index], size, b);\n return b;\n });\n const ss = ConvertUtils.toArrayDirectionChange(rpoints) as number[][]\n (points as number[][]).push(cstart, ...ss, cend);\n } else {\n const cstart = startPoint as number ??0;\n const point = MathUtil.cubicBezier({ start: cstart, end: end.value }, { frame: size }, end.bezierConfig ?? RenderTransactionDrawObj.DEFAULT_BEZIER);\n (points as number[]).push(cstart, ...point, end.value);\n }\n startPoint = end.value;\n }\n // \uD558\uB098\uB3C4\uC5C6\uC744\uB54C \uB610\uB294 0\uC73C\uB85C \uC14B\uD305\uC2DC \uBC14\uB85C \uC14B\n if (drawFps <= 0 && points.length > 0) {\n transactionStartCalc[key]=points[points.length - 1];\n }\n calcs[key] = points;\n });\n // console.log('calc------->', calcs);\n // if ((this as any).syncSubLayer?.name === 'normalSpin_template' || (this as any).syncSubLayer?.name === 'normalSpin_slot'){\n // console.log('make!!!', transactionStartCalc)\n // }\n const transactionControlConfig: TransactionControllConfig = {\n points: points,\n calcs: calcs,\n pointPositionIndex: 0,\n transactionStartCalcs: transactionStartCalc,\n transactionStartPoint: currentPoint,\n config: requiredConfig\n };\n // if (drawFps <= 0 && targetPoints.length > 0) {\n // console.log('!!!!!', transactionControllConfig)\n // }\n // if ((this as any).syncSubLayer?.name === '\uC601\uC5ED-\uC815\uBA74-\uBAB8-group') {\n // console.log('------', transactionControllConfig)\n // }\n return transactionControlConfig;\n }\n\n // setPosition(position: {x:number, y:number, z: number}, config?:{deferTransaction?:boolean}) {\n //\n //\n // }\n transaction(transactionConfig: TransactionConfig) {\n if ((this as any).syncSubLayer?.name === 'normalBounce_template') {\n // console.log('------', transactionControllConfig)\n // console.log('!!!!!!!!!', this.isDoneTransaction(), transactionConfig.deferTransaction);\n }\n if (this.isDoneTransaction() && transactionConfig.deferTransaction) {\n // this.rotate = 0;\n this._currentTransactionControlConfig = this.makeTransactionControlConfig(transactionConfig);\n } else if (transactionConfig.deferTransaction) {\n this._waitTransactionConfig = transactionConfig;\n } else {\n this._currentTransactionControlConfig = this.makeTransactionControlConfig(transactionConfig);\n }\n }\n\n\n private defaultTransactionConfig(transactionConfig: TransactionConfig): RequiredTransactionConfig {\n // const targetPoint = [...(Array.isArray(transactionConfig.targetPoint) ? transactionConfig.targetPoint : [transactionConfig.targetPoint])];\n // if (transactionConfig.animationDirection === 'reverse') {\n // targetPoint.u\n // }\n const requiredConfig: RequiredTransactionConfig = {\n ...transactionConfig,\n // targetPoint: targetPoint,\n animationIterationCount: transactionConfig.animationIterationCount ?? 1,\n animationDirection: transactionConfig.animationDirection ?? 'normal'\n // fillMode: transactionConfig.fillMode ?? 'backwards',\n };\n return requiredConfig;\n }\n\n render(draw: DrawData<T>, config?:RenderConfig) {\n\n\n // this._beforeObj.setObj(this.copyObj());\n\n // console.log('-!!!!!!!!!!!', this);\n this.x = this._currentTransactionControlConfig.points[this._currentTransactionControlConfig.pointPositionIndex]?.x ?? this.x;\n this.y = this._currentTransactionControlConfig.points[this._currentTransactionControlConfig.pointPositionIndex]?.y ?? this.y;\n this.z = this._currentTransactionControlConfig.points[this._currentTransactionControlConfig.pointPositionIndex]?.z ?? this.z;\n this.volume = this._currentTransactionControlConfig.points[this._currentTransactionControlConfig.pointPositionIndex]?.volume ?? this.volume;\n this.mass = this._currentTransactionControlConfig.points[this._currentTransactionControlConfig.pointPositionIndex]?.mass ?? this.mass;\n this.e = this._currentTransactionControlConfig.points[this._currentTransactionControlConfig.pointPositionIndex]?.e ?? this.e;\n this.rotate = this._currentTransactionControlConfig.points[this._currentTransactionControlConfig.pointPositionIndex]?.rotate ?? this.rotate;\n this.width = this._currentTransactionControlConfig.points[this._currentTransactionControlConfig.pointPositionIndex]?.width ?? this.width;\n this.height = this._currentTransactionControlConfig.points[this._currentTransactionControlConfig.pointPositionIndex]?.height ?? this.height;\n this.transform[0] = this._currentTransactionControlConfig.points[this._currentTransactionControlConfig.pointPositionIndex]?.transform[0] ?? this.transform[0];\n this.transform[1] = this._currentTransactionControlConfig.points[this._currentTransactionControlConfig.pointPositionIndex]?.transform[1] ?? this.transform[1];\n this.transform[2] = this._currentTransactionControlConfig.points[this._currentTransactionControlConfig.pointPositionIndex]?.transform[2] ?? this.transform[2];\n this.transform[3] = this._currentTransactionControlConfig.points[this._currentTransactionControlConfig.pointPositionIndex]?.transform[3] ?? this.transform[3];\n this.transform[4] = this._currentTransactionControlConfig.points[this._currentTransactionControlConfig.pointPositionIndex]?.transform[4] ?? this.transform[4];\n this.transform[5] = this._currentTransactionControlConfig.points[this._currentTransactionControlConfig.pointPositionIndex]?.transform[5] ?? this.transform[5];\n this.color.r = this._currentTransactionControlConfig.points[this._currentTransactionControlConfig.pointPositionIndex]?.color?.r ?? this.color.r;\n this.color.g = this._currentTransactionControlConfig.points[this._currentTransactionControlConfig.pointPositionIndex]?.color?.g ?? this.color.g;\n this.color.b = this._currentTransactionControlConfig.points[this._currentTransactionControlConfig.pointPositionIndex]?.color?.b ?? this.color.b;\n this.color.a = this._currentTransactionControlConfig.points[this._currentTransactionControlConfig.pointPositionIndex]?.color?.a ?? this.color.a;\n\n // if (this._currentTransactionControllConfig.points.length === 1) {\n // console.log('-!!!!!!!!!!!', this.x, this.y,this.z, this._currentTransactionControllConfig);\n // }\n\n // calcs\n Object.entries(this._currentTransactionControlConfig.calcs ?? {}).forEach(([key, value]) => {\n this._calc[key] = value[this._currentTransactionControlConfig.pointPositionIndex];\n });\n\n this._currentTransactionControlConfig.pointPositionIndex = Math.min(this._currentTransactionControlConfig.pointPositionIndex + 1, this._currentTransactionControlConfig.points.length - 1);\n // super.render(draw, {calcs, transaction: this._currentTransactionConfig});\n super.render(draw, config);\n\n\n // if (this.syncSubLayer.name === 'normalSpin_template' || this.syncSubLayer.name === 'normalSpin_slot')\n // if (this['syncSubLayer']?.name==='normalSpin_template') {\n // console.log('is???Doen', this.isDoneTransaction(), this);\n // if (this.isDoneTransaction()) {\n // // debugger;\n // }\n // }\n if (this.isDoneTransaction()) {\n // this._transactionDoneSubscribers.forEach(it => {\n //\n // })\n // console.log('done?-----', this._currentTransactionConfig.config.direction);\n\n const targetPoints = Array.isArray(this._currentTransactionControlConfig.config.targetPoint) ? [...this._currentTransactionControlConfig.config.targetPoint] : [this._currentTransactionControlConfig.config.targetPoint];\n // console.log('----------->',targetPoints)\n const targetCalcs: {[key: string]: Calc[]} = {}\n Object.entries(this._currentTransactionControlConfig?.config?.calcs??{}).forEach(([k,v]) => targetCalcs[k] = Array.isArray(v) ? v : [v]);\n\n\n\n // next transaction?\n if (this._waitTransactionConfig && this._waitTransactionConfig.deferTransaction) {\n // alert(1)\n // console.log('dddddddon')\n\n // this._currentTransactionControllConfig.pointPositionIndex=0;\n\n // this.transaction({\n // ...this._currentTransactionConfig.config,\n // targetPoint: targetPoints,\n // calcs: targetCalcs\n // });\n // this._waitTransactionConfig.startPoint = this._currentTransactionControllConfig.transactionStartPoint;\n this.transaction(this._waitTransactionConfig);\n this._waitTransactionConfig = undefined;\n return;\n }\n\n\n\n let startPoint = this._currentTransactionControlConfig.config.startPoint;\n let startCalcs = this._currentTransactionControlConfig.transactionStartCalcs;\n if (this._currentTransactionControlConfig.config.animationDirection === 'reverse') {\n if (targetPoints.length>0) {\n // console.log('start-->1', (this as any).syncSubLayer?.name, this._currentTransactionControllConfig,JSON.stringify(startPoint.transform), JSON.stringify(targetPoints[0].obj.transform))\n const targetStartPoint = targetPoints.pop();\n targetPoints.reverse();\n if (startPoint)\n targetPoints.push({obj: startPoint });\n Object.entries(targetCalcs).forEach(([k,v]) => {\n const targetCalc = v.pop();\n if (targetCalc) {\n v.reverse();\n v.push({value: startCalcs[k]});\n startCalcs[k] = targetCalc.value;\n }\n });\n\n if (targetStartPoint)\n startPoint = targetStartPoint.obj;\n }\n }\n\n if (this._currentTransactionControlConfig.config.animationIterationCount === 'infinite') {\n // return;\n // console.log('----infinite?',targetCalcs, targetPoints);\n // Object.entries(this._calc).forEach(([k,v]) => {\n // this._calc[k] = 0;\n // })\n // if ((this as any).syncSubLayer?.name === 'normalSpin_template' || (this as any).syncSubLayer?.name === 'normalSpin_slot'){\n // console.log('iiiiiiiiiiiiiiiiiiii', this._currentTransactionControllConfig.transactionStartCalcs)\n // }\n // Object.entries(targetCalcs).forEach(([k,v]) => v.reverse());\n // this._calc = this._currentTransactionControllConfig.transactionStartCalcs;\n // \uC774\uAC78\uB123\uC5B4\uC57C\uB420\uC9C0 \uB9D0\uC544\uC57C\uB420\uC9C0.. \uC774\uAC70 \uACC4\uC18D\uACE0\uBBFC\uC778\uB370.. \uC774\uAC70 \uACC4\uC18D \uAC78\uB9AC\uB124.\n this.transaction({\n ...this._currentTransactionControlConfig.config,\n startPoint: startPoint,\n targetPoint: targetPoints,\n startCalcs: startCalcs,\n calcs: targetCalcs\n });\n } else if (this._currentTransactionControlConfig.config.animationIterationCount > 1) {\n // console.log('iterationCount', targetPoints);\n this.transaction({\n ...this._currentTransactionControlConfig.config,\n startPoint: startPoint,\n targetPoint: targetPoints,\n startCalcs: startCalcs,\n calcs: targetCalcs,\n animationIterationCount: this._currentTransactionControlConfig.config.animationIterationCount - 1\n });\n }\n }\n\n\n }\n\n abstract draw(draw: DrawData<T>): void ;\n\n // constructor(canvas: HTMLCanvasElement, context: CanvasRenderingContext2D, public avaliablePlace: Rectangle = new Rectangle(new Point(0, 0), new Point(0, 0))) {\n // super(canvas, context);\n // }\n\n\n // get centerPoint(): Point {\n // return new Point();\n // }\n}\n", "import { Runnable } from '../runs/Runnable';\n\nexport namespace Schedule {\n export const SYMBOL = Symbol.for('core:schedule-token');\n export type State = 'INITIALIZE' | 'RUNNING' | 'DONE-AND-WAITING' | 'STOPPED' | 'ERROR' | 'SUCCESS';\n}\n\nexport interface Schedule<T = void, R = void> extends Runnable<Promise<R>, T> {\n spec: string;\n name?: string;\n description?: string;\n history?: { state: Schedule.State; date: Date; input?: T }[];\n state: Schedule.State;\n isReady?: boolean;\n totalCount: number;\n successCount: number;\n errorCount: number;\n\n run(data: T): Promise<R>;\n execute(data: T): Promise<R>;\n}\n\nexport abstract class ScheduleBase<T = void, R = void> implements Schedule<T, R> {\n /*\n * * * * * *\n \u252C \u252C \u252C \u252C \u252C \u252C\n \u2502 \u2502 \u2502 \u2502 \u2502 \u2502\n \u2502 \u2502 \u2502 \u2502 \u2502 \u2514 day of week (0 - 7) (0 or 7 is Sun)\n \u2502 \u2502 \u2502 \u2502 \u2514\u2500\u2500\u2500\u2500\u2500 month (1 - 12)\n \u2502 \u2502 \u2502 \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 day of month (1 - 31)\n \u2502 \u2502 \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 hour (0 - 23)\n \u2502 \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 minute (0 - 59)\n \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 second (0 - 59, OPTIONAL)\n */\n abstract spec: string;\n abstract name?: string;\n abstract description?: string;\n private _history?: { state: Schedule.State; date: Date; input: T, result?: R }[];\n private _state: Schedule.State = 'INITIALIZE';\n private _totalCount = 0;\n private _successCount = 0;\n private _errorCount = 0;\n\n get history() {\n return this._history;\n }\n get state(): Schedule.State {\n return this._state;\n }\n get totalCount() {\n return this._totalCount;\n }\n get successCount() {\n return this._successCount;\n }\n get errorCount() {\n return this._errorCount;\n }\n get isReady(): boolean {\n return !(this._state === 'RUNNING')\n }\n private addStart(input?: T, date: Date = new Date()) {\n this._history ??= [];\n this._history.push({ state: 'RUNNING', date, input });\n }\n private addError(input?: T, date: Date = new Date()) {\n this._history ??= [];\n this._history.push({ state: 'ERROR', date, input });\n }\n private addSuccess(input?: T, result:R = undefined, date: Date = new Date()) {\n this._history ??= [];\n this._history.push({ state: 'SUCCESS', date, input, result });\n }\n\n\n async run(data: T): Promise<R> {\n this._state = 'RUNNING';\n this.addStart();\n const startDate = new Date();\n let result: R;\n try {\n console.log('Running schedule', this.name, startDate);\n result = await this.execute(data);\n this._successCount++;\n this.addSuccess(data, result);\n } catch (e) {\n this.addError(e);\n this._errorCount++;\n const endDate = new Date();\n console.error('Error schedule', this.name, endDate, endDate.getTime() - startDate.getTime(), e);\n } finally {\n this._totalCount++;\n const endDate = new Date();\n console.log('Done schedule', this.name, endDate, endDate.getTime() - startDate.getTime());\n }\n this._state = 'DONE-AND-WAITING';\n return result!;\n }\n\n abstract execute(data: T): Promise<R>;\n}\n", "export namespace UrlUtils {\n // 1 const fullUrl = \"http://naver.com/asdwd?a=na\";\n\n // 2\n // 3 try {\n // 4 const url = new URL(fullUrl);\n // 5 const origin = url.origin; // \"http://naver.com\"\n // 6\n // 7 console.log(origin); // \uCD9C\uB825: http://naver.com\n // 8 } catch (error) {\n // 9 console.error(\"\uC720\uD6A8\uD558\uC9C0 \uC54A\uC740 URL\uC785\uB2C8\uB2E4:\", error);\n // 10 }\n export const origin = (fullurl: string) => {\n return new URL(fullurl).origin;\n };\n\n export const toUrl = (fullUrl: string) => {\n return new URL(fullUrl);\n };\n\n /**\n * Returns the relative path (pathname + search) from a URL or string.\n */\n export const getUrlPath = (url: URL | string | { pathname: string; search: string }): string => {\n if (typeof url === 'string') {\n try {\n const u = new URL(url, 'http://localhost');\n return u.pathname + u.search;\n } catch (e) {\n return url;\n }\n }\n return (url.pathname ?? '') + (url.search ?? '');\n };\n\n /**\n * URLSearchParams\uC5D0\uC11C \uD2B9\uC815 \uD0A4\uB97C \uC0AD\uC81C\n */\n export const deleteSearchParam = (searchParams: URLSearchParams, name: string | string[]): URLSearchParams => {\n const names = Array.isArray(name) ? name : [name];\n names.forEach(n => searchParams.delete(n));\n return searchParams;\n };\n\n /**\n * URLSearchParams\uC5D0 \uD0A4-\uAC12 \uC30D\uC744 \uCD94\uAC00\n */\n export const appendSearchParam = (searchParams: URLSearchParams, params: [[string, string]]): URLSearchParams => {\n params.forEach(([key, value]) => searchParams.append(key, value));\n return searchParams;\n };\n\n /**\n * URLSearchParams\uC5D0\uC11C \uD0A4\uB97C \uC0AD\uC81C\uD558\uACE0 \uC0C8\uB85C\uC6B4 \uAC12\uC744 \uCD94\uAC00 (upsert)\n * \uAE30\uC874 \uAC12\uC774 \uC788\uC73C\uBA74 \uC0AD\uC81C\uD558\uACE0, \uC0C8\uB85C\uC6B4 \uAC12\uC744 \uCD94\uAC00\n */\n export const upsertSearchParam = (searchParams: URLSearchParams, params: Record<string, string | string[]>): URLSearchParams => {\n Object.entries(params).forEach(([key, value]) => {\n searchParams.delete(key); // \uAE30\uC874 \uAC12 \uC0AD\uC81C\n if (Array.isArray(value)) {\n value.forEach(v => searchParams.append(key, v));\n } else {\n searchParams.append(key, value);\n }\n });\n return searchParams;\n };\n\n /**\n * URLSearchParams \uC870\uC791\uC744 \uC704\uD55C \uD5EC\uD37C\n */\n export const manipulateSearchParams = (searchParams: URLSearchParams, options?: { delete?: string[]; append?: [[string, string]]; upsert?: Record<string, string | string[]> }): URLSearchParams => {\n if (options?.delete) {\n deleteSearchParam(searchParams, options.delete);\n }\n if (options?.append) {\n appendSearchParam(searchParams, options.append);\n }\n if (options?.upsert) {\n upsertSearchParam(searchParams, options.upsert);\n }\n return searchParams;\n };\n}\n", "import { ConstructorType } from '../types';\n\nexport namespace ReflectUtils {\n export const getParameterTypes = (target: any, propertyKey?: string | symbol): ConstructorType<any>[] => {\n if (propertyKey) {\n return Reflect.getMetadata('design:paramtypes', target, propertyKey) || [];\n } else {\n return Reflect.getMetadata('design:paramtypes', target) || [];\n }\n };\n\n export const getReturnType = (target: any, propertyKey: string | symbol): any => {\n return Reflect.getMetadata('design:returntype', target, propertyKey);\n };\n\n export const getType = (target: any, propertyKey?: string | symbol): any => {\n if (propertyKey) {\n return Reflect.getMetadata('design:type', target, propertyKey);\n } else {\n return Reflect.getMetadata('design:type', target);\n }\n };\n\n export const getMetadata = <T = any>(metadataKey: any, target: any, propertyKey?: string | symbol): T | undefined => {\n if (propertyKey) {\n return Reflect.getMetadata(metadataKey, target, propertyKey);\n } else {\n return Reflect.getMetadata(metadataKey, target);\n }\n };\n\n export const findMetadata = <T = any>(metadataKey: any, target: any, propertyKey?: string | symbol): T | undefined => {\n if (target == null) return undefined;\n let searchTarget = typeof target === 'object' && typeof target !== 'function' ? target.constructor : target;\n\n while (searchTarget && searchTarget !== Object) {\n const data = propertyKey ? Reflect.getOwnMetadata(metadataKey, searchTarget, propertyKey) : Reflect.getOwnMetadata(metadataKey, searchTarget);\n if (data !== undefined) return data;\n const proto = Object.getPrototypeOf(searchTarget);\n searchTarget = proto && typeof proto === 'function' ? proto : proto?.constructor || null;\n if (searchTarget === target) break;\n }\n return undefined;\n };\n\n /**\n * \uD504\uB85C\uD1A0\uD0C0\uC785 \uCCB4\uC778\uC758 \uBAA8\uB4E0 \uBA54\uD0C0\uB370\uC774\uD130\uB97C \uC218\uC9D1\uD558\uC5EC \uB9AC\uC2A4\uD2B8\uB85C \uBC18\uD658\uD569\uB2C8\uB2E4. (\uBD80\uBAA8 -> \uC790\uC2DD \uC21C)\n */\n export const findAllMetadata = <T = any>(metadataKey: any, target: any, propertyKey?: string | symbol): T[] => {\n const results: T[] = [];\n if (target == null) return results;\n let searchTarget = typeof target === 'object' && typeof target !== 'function' ? target.constructor : target;\n\n while (searchTarget && searchTarget !== Object) {\n const data = propertyKey ? Reflect.getOwnMetadata(metadataKey, searchTarget, propertyKey) : Reflect.getOwnMetadata(metadataKey, searchTarget);\n if (data !== undefined) results.unshift(data); // \uBD80\uBAA8 \uB370\uC774\uD130\uB97C \uC55E\uC5D0 \uCD94\uAC00\n const proto = Object.getPrototypeOf(searchTarget);\n searchTarget = proto && typeof proto === 'function' ? proto : proto?.constructor || null;\n if (searchTarget === target) break;\n }\n return results;\n };\n\n /**\n * \uBAA8\uB4E0 \uBA54\uD0C0\uB370\uC774\uD130(\uBC30\uC5F4 \uD615\uD0DC)\uB97C \uC218\uC9D1\uD558\uC5EC \uD558\uB098\uC758 \uBC30\uC5F4\uB85C \uD569\uCE69\uB2C8\uB2E4. (\uBD80\uBAA8 -> \uC790\uC2DD \uC21C)\n */\n export const findAllMetadataFlatten = <T = any>(metadataKey: any, target: any, propertyKey?: string | symbol): T[] => {\n const results: T[] = [];\n const metaList = findAllMetadata<T[]>(metadataKey, target, propertyKey);\n metaList.forEach(data => {\n if (Array.isArray(data)) results.push(...data);\n });\n return [...new Set(results)];\n };\n\n /**\n * \uD504\uB85C\uD1A0\uD0C0\uC785 \uCCB4\uC778\uC758 \uBAA8\uB4E0 \uBA54\uD0C0\uB370\uC774\uD130(\uB9F5 \uD615\uD0DC)\uB97C \uC218\uC9D1\uD558\uC5EC \uD569\uCE69\uB2C8\uB2E4. (\uBD80\uBAA8 -> \uC790\uC2DD \uC21C)\n */\n export const findAllMapMetadata = <K, V>(metadataKey: any, target: any): Map<K, V[]> => {\n const finalMap = new Map<K, V[]>();\n const metaList = findAllMetadata<Map<K, V[]>>(metadataKey, target);\n\n metaList.forEach(data => {\n if (data instanceof Map) {\n data.forEach((values, key) => {\n if (!finalMap.has(key)) finalMap.set(key, []);\n const valArr = Array.isArray(values) ? values : [values];\n finalMap.get(key)!.push(...(valArr as any));\n });\n }\n });\n return finalMap;\n };\n\n export const getMetadataKeys = (target: any) => {\n return Reflect.getMetadataKeys(target);\n };\n\n export const getOwnMetadata = (metadataKey: any, target: any, propertyKey?: string | symbol): any => {\n if (propertyKey) {\n return Reflect.getOwnMetadata(metadataKey, target, propertyKey);\n } else {\n return Reflect.getOwnMetadata(metadataKey, target);\n }\n };\n\n export const getMetadatas = (target: any) => {\n return getMetadataKeys(target).map(it => getMetadata(it, target));\n };\n\n export const metadata = (metadataKey: any, data: any) => {\n return Reflect.metadata(metadataKey, data);\n };\n\n export const defineMetadata = (metadataKey: any, value: any, target: any, propertyKey?: string | symbol) => {\n if (propertyKey && Reflect.defineMetadata) {\n Reflect.defineMetadata(metadataKey, value, target, propertyKey);\n } else if (Reflect.defineMetadata) {\n Reflect.defineMetadata(metadataKey, value, target);\n }\n };\n\n /**\n * \uD55C \uD0C0\uAC9F\uC5D0\uC11C \uB2E4\uB978 \uD0C0\uAC9F\uC73C\uB85C \uBAA8\uB4E0 \uBA54\uD0C0\uB370\uC774\uD130\uB97C \uBCF5\uC0AC\uD569\uB2C8\uB2E4. (\uC774\uBBF8 \uB4F1\uB85D\uB41C \uD074\uB798\uC2A4 \uAC31\uC2E0\uC6A9)\n */\n export const copyMetadata = (from: any, to: any, propertyKey?: string | symbol) => {\n const keys = propertyKey ? (Reflect as any).getOwnMetadataKeys(from, propertyKey) : (Reflect as any).getOwnMetadataKeys(from);\n for (const key of keys) {\n const data = propertyKey ? Reflect.getOwnMetadata(key, from, propertyKey) : Reflect.getOwnMetadata(key, from);\n if (propertyKey) {\n (Reflect as any).defineMetadata(key, data, to, propertyKey);\n } else {\n (Reflect as any).defineMetadata(key, data, to);\n }\n }\n };\n}\n", "export namespace FunctionUtils {\n export const getParameterNames = (func: Function | any, property?: string | symbol) => {\n if (typeof func === 'object' && property) {\n func = func[property];\n }\n // @ts-ignore https://stackoverflow.com/questions/1007981/how-to-get-function-parameter-names-values-dynamically\u3131\n return (\n new RegExp('(?:' + func.name + '\\\\s*|^)\\\\s*\\\\((.*?)\\\\)')\n .exec(func.toString().replace(/\\n/g, ''))?.[1]\n .replace(/\\/\\*.*?\\*\\//g, '')\n .replace(/ /g, '')\n .split(',') ?? []\n );\n };\n\n export const evalScript = <T>(script: string | null, obj?: any): T | null => {\n try {\n if (script && obj) {\n // eslint-disable-next-line no-new-func\n return Function(`\"use strict\";\n ${script}\n `).bind(obj)();\n } else if (script) {\n // eslint-disable-next-line no-new-func\n return new Function('return ' + script)();\n } else {\n return null;\n }\n } catch (e) {\n return null;\n }\n };\n\n /**\n * Dynamically executes a script string with provided context and arguments.\n */\n export const execute = (params: { script: string; context?: any; args?: Record<string, any> }) => {\n const { script, context, args = {} } = params;\n const argNames = Object.keys(args);\n const argValues = Object.values(args);\n return new Function(...argNames, script).apply(context, argValues);\n };\n\n /**\n * Dynamically executes a script string wrapped with 'return' with provided context and arguments.\n */\n export const executeReturn = (params: { script: string; context?: any; args?: Record<string, any> }) => {\n const { script, context, args = {} } = params;\n const argNames = Object.keys(args);\n const argValues = Object.values(args);\n return new Function(...argNames, `return ${script}`).apply(context, argValues);\n };\n}\n", "// type T0 = Exclude<undefined, unknown>;\n// type T2 = Exclude<string | number | (() => void), Function>;\n// type Omit<T, K extends keyof T> = Pick<T, Exclude<keyof T, K>>;\n// type SubPartial<T, K extends keyof T> = Omit<T, K> & Partial<Pick<T, K>>;\nexport class Optional<T> {\n static readonly EMPTY = new Optional();\n\n\n constructor(private value?: T) {\n }\n\n public static ofNullable<T>(value: T): Optional<T> {\n return value == null ? Optional.empty() : Optional.of(value);\n }\n\n public static of<T>(value: T): Optional<T> {\n return new Optional<T>(value);\n }\n\n public orElse<T>(other: T): T {\n const val = this.isPresent() ? this.value : other;\n // return (this.value != null && this.value != undefined) ? this.value : other;\n return val as T;\n }\n public isPresent(): boolean {\n return (this.value != null && this.value != undefined);\n }\n\n // public ifPresent<T>(Consumer<? super T> consumer) {\n // if (value != null)\n // consumer.accept(value);\n // }\n\n public static empty<T>(): Optional<T> {\n return Optional.EMPTY as Optional<T>;\n }\n\n // public static default<T>(value: any, def: T): T {\n // return (value != null && value != undefined) ? value : def;\n // }\n\n\n}\n", "export namespace OptionalUtils {\n export const mapIfPresent = <T,TT>(input: T | undefined | null, to: (input: T) => TT | undefined): TT | undefined => {\n if (input === undefined || input === null) {\n return undefined;\n } else {\n return to(input);\n }\n }\n}", "import { Promises } from '../promise/Promises';\n\nexport type LoadImageBitMapCallbackType = { onload: (img: ImageBitmap) => void, onerror: (e: any) => void };\n\nexport namespace ImageUtils {\n export function loadImageBitMap(src: string): Promise<ImageBitmap>;\n export function loadImageBitMap(src: string, callback: LoadImageBitMapCallbackType): void;\n export function loadImageBitMap(src: string, callback?: LoadImageBitMapCallbackType): Promise<ImageBitmap> | void {\n let targetCallback: (img: ImageBitmap) => void;\n let catchCallback: (e: any) => void;\n let promise: Promise<ImageBitmap> | undefined = undefined;\n if (callback) {\n targetCallback = callback.onload;\n catchCallback = callback.onerror;\n } else {\n const r = Promises.withResolvers<ImageBitmap>();\n promise = r.promise;\n targetCallback = r.resolve;\n catchCallback = r.reject;\n }\n\n fetch(src, {\n mode: 'cors', // CORS \uC694\uCCAD (\uAE30\uBCF8\uAC12)\n credentials: 'omit' // \"anonymous\"\uC640 \uC720\uC0AC: \uC778\uC99D \uC815\uBCF4(\uCFE0\uD0A4, HTTP \uC778\uC99D) \uD3EC\uD568\uD558\uC9C0 \uC54A\uC74C\n }).then(response => {\n return response.blob();\n }).then(it => {\n return createImageBitmap(it);\n }).then(it => {\n targetCallback(it);\n }).catch(it => {\n catchCallback(it);\n })\n return promise;\n }\n}", "import { StringUtils } from '../string/StringUtils';\n\nexport namespace Expression {\n\n // html = html.replace(/\\$\\{[\\s\\S]*?\\}\\$/g, '');\n\n export const bindExpression = (expression: string, bind: { [name: string]: ((arg: any) => any) | any }) => {\n // ${data} wow ${wow:parameter}\n // expression\uC5D0\uC11C ${...} \uD615\uD0DC\uB97C \uBAA8\uB450 \uCC3E\uC544\uC11C \uCC98\uB9AC\n return (expression ?? '').replace(/\\$\\{([\\s\\S.]*?)\\}/g, (_, group) => {\n // \uD30C\uB77C\uBBF8\uD130\uAC00 \uC788\uB294 \uACBD\uC6B0: name:param\n const [name, param] = group.split(':');\n const binder = bind[name];\n if (!binder) return '';\n if (typeof binder === 'function') {\n return binder(bind[param]);\n }\n return binder;\n });\n }\n\n /**\n * @deprecated\n */\n // export namespace Group {\n // export const isExpression = (data: string | null) => {\n // // const reg = /(?:[$#]\\{(?:(([$#]\\{)??[^$#]?[^{]*?)\\}[$#]))/g;\n // const reg = /[$#]\\{([\\s\\S.]*?)\\}[$#]/g;\n // return reg.test(data ?? '');\n // }\n //\n // export const expressionGroups = (data: string | null) => {\n // // const reg = /(?:[$#]\\{(?:(([$#]\\{)??[^$#]*?)\\}[$#]))/g;\n // // const reg = /(?:[$#]\\{(?:(([$#]\\{)??[^$#]?[^{]*?)\\}[$#]))/g;\n // const reg = /[$#]\\{([\\s\\S.]*?)\\}[$#]/g;\n // return StringUtils.regexExec(reg, data ?? '');\n // }\n // }\n export namespace Path {\n export type PathNameData = { [name: string]: string }\n export const pathNameData = (pathName: string, urlExpression: string) => {\n const urls = pathName.split('/');\n const urlExpressions = urlExpression.split('/');\n if (urls.length !== urlExpressions.length) {\n return;\n }\n const data: Path.PathNameData = {}\n for (let i = 0; i < urlExpressions.length; i++) {\n const it = urlExpressions[i];\n const urlit = urls[i];\n // ex) {serialNo:[0-9]+} or {no} ..\n const execResult = /^\\{(.+)\\}$/g.exec(it);\n if (!execResult) {\n if (it !== urlit) {\n return;\n }\n continue;\n }\n // regex check\n const [name, regex] = execResult[1].split(':'); // group1\n if (regex && !new RegExp(regex).test(urlit)) {\n return;\n }\n data[name] = urlit;\n }\n return data;\n }\n }\n}", "import { ReflectUtils } from '@dooboostore/core';\nimport { SpecialSelector, SwcQueryOptions, HelperHostSet } from '../types';\n\nexport interface AddEventListenerBaseOptions extends EventListenerOptions {\n capture?: boolean;\n once?: boolean;\n passive?: boolean;\n stopPropagation?: boolean;\n stopImmediatePropagation?: boolean;\n preventDefault?: boolean;\n removeOnDisconnected?: boolean;\n delegate?: boolean;\n filter?: (target: Event | CustomEvent, helper: HelperHostSet) => boolean;\n}\n\nexport interface AddEventListenerMetadata {\n propertyKey: string | symbol;\n selector: string;\n type: string;\n options: AddEventListenerBaseOptions & SwcQueryOptions & { delegate?: boolean };\n}\n\nexport const ADD_EVENT_LISTENER_METADATA_KEY = Symbol.for('simple-web-component:add-event-listener');\n\nexport function addEventListener(target: SpecialSelector, type: string, options?: AddEventListenerBaseOptions): MethodDecorator;\nexport function addEventListener(selector: string, type: string, options?: AddEventListenerBaseOptions & SwcQueryOptions & { delegate?: boolean }): MethodDecorator;\n/**\n * @addEventListener decorator to bind events to elements.\n */\nexport function addEventListener(selectorOrTarget: string, type: string, options: any = {}): MethodDecorator {\n return (targetObj: Object, propertyKey: string | symbol, descriptor: PropertyDescriptor) => {\n const constructor = targetObj.constructor;\n\n let listeners = ReflectUtils.getMetadata<AddEventListenerMetadata[]>(ADD_EVENT_LISTENER_METADATA_KEY, constructor);\n if (!listeners) {\n listeners = [];\n ReflectUtils.defineMetadata(ADD_EVENT_LISTENER_METADATA_KEY, listeners, constructor);\n }\n\n listeners.push({ propertyKey, selector: selectorOrTarget, type, options });\n };\n}\n\nexport const getAddEventListenerMetadata = (target: any): AddEventListenerMetadata[] | undefined => {\n const constructor = target instanceof Function ? target : target.constructor;\n return ReflectUtils.getMetadata(ADD_EVENT_LISTENER_METADATA_KEY, constructor);\n};\n\n/**\n * @addEventListenerHost decorator - simplified version of @addEventListener for :host selector\n * Usage: @addEventListenerHost('click')\n * Usage: @addEventListenerHost('click', { stopPropagation: true })\n */\nexport function addEventListenerHost(type: string, options?: AddEventListenerBaseOptions & SwcQueryOptions): MethodDecorator {\n return addEventListener(':host', type, options);\n}\n\n/**\n * @addEventListenerAppHost decorator - simplified version of @addEventListener for :appHost selector\n * Usage: @addEventListenerAppHost('click')\n * Usage: @addEventListenerAppHost('click', { stopPropagation: true })\n */\nexport function addEventListenerAppHost(type: string, options?: AddEventListenerBaseOptions & SwcQueryOptions): MethodDecorator {\n return addEventListener(':appHost', type, options);\n}\n", "import { ReflectUtils } from '@dooboostore/core';\n\nexport const ON_INITIALIZE_METADATA_KEY = Symbol.for('simple-web-component:on-constructor');\nexport const ON_BEFORE_CONNECTED_METADATA_KEY = Symbol.for('simple-web-component:on-before-connected');\nexport const ON_AFTER_CONNECTED_METADATA_KEY = Symbol.for('simple-web-component:on-after-connected');\nexport const ON_BEFORE_DISCONNECTED_METADATA_KEY = Symbol.for('simple-web-component:on-before-disconnected');\nexport const ON_AFTER_DISCONNECTED_METADATA_KEY = Symbol.for('simple-web-component:on-after-disconnected');\nexport const ON_BEFORE_ADOPTED_METADATA_KEY = Symbol.for('simple-web-component:on-before-adopted');\nexport const ON_AFTER_ADOPTED_METADATA_KEY = Symbol.for('simple-web-component:on-after-adopted');\nexport const ON_ADD_EVENT_LISTENER_METADATA_KEY = Symbol.for('simple-web-component:on-add-event-listener');\nexport const ON_CONNECTED_SWC_APP_METADATA_KEY = Symbol.for('simple-web-component:on-connected-swc-app');\nexport const INNER_HTML_METADATA_KEY = Symbol.for('simple-web-component:inner-html');\n\nexport const ATTRIBUTE_CHANGED_WILDCARD = '*';\n\nexport interface InnerHtmlOptions {\n useShadow?: boolean;\n}\n\nexport interface InnerHtmlMetadata {\n propertyKey: string | symbol;\n options: InnerHtmlOptions;\n}\n\nfunction createLifecycleDecorator(metadataKey: symbol): MethodDecorator {\n return (target: Object, propertyKey: string | symbol) => {\n const constructor = target.constructor;\n let list = ReflectUtils.getOwnMetadata(metadataKey, constructor) as (string | symbol)[];\n if (!list) {\n list = [];\n ReflectUtils.defineMetadata(metadataKey, list, constructor);\n }\n list.push(propertyKey);\n };\n}\n\nexport const onInitialize = createLifecycleDecorator(ON_INITIALIZE_METADATA_KEY);\nexport const onBeforeConnected = createLifecycleDecorator(ON_BEFORE_CONNECTED_METADATA_KEY);\nexport const onAfterConnected = createLifecycleDecorator(ON_AFTER_CONNECTED_METADATA_KEY);\nexport const onConnected = onAfterConnected;\n\nexport const onBeforeDisconnected = createLifecycleDecorator(ON_BEFORE_DISCONNECTED_METADATA_KEY);\nexport const onAfterDisconnected = createLifecycleDecorator(ON_AFTER_DISCONNECTED_METADATA_KEY);\nexport const onDisconnected = onAfterDisconnected;\n\nexport const onBeforeAdopted = createLifecycleDecorator(ON_BEFORE_ADOPTED_METADATA_KEY);\nexport const onAfterAdopted = createLifecycleDecorator(ON_AFTER_ADOPTED_METADATA_KEY);\nexport const onAdopted = onAfterAdopted;\n\nexport const onAddEventListener = createLifecycleDecorator(ON_ADD_EVENT_LISTENER_METADATA_KEY);\n\nexport const onConnectedSwcApp = createLifecycleDecorator(ON_CONNECTED_SWC_APP_METADATA_KEY);\n\n/**\n * @onConnectedInnerHtml decorator to define the initial HTML content when connected.\n */\nexport function onConnectedInnerHtml(options: InnerHtmlOptions): MethodDecorator;\nexport function onConnectedInnerHtml(target: Object, propertyKey: string | symbol, descriptor: PropertyDescriptor): void;\nexport function onConnectedInnerHtml(arg1?: InnerHtmlOptions | Object, arg2?: string | symbol, arg3?: PropertyDescriptor): MethodDecorator | void {\n const decorator = (options: InnerHtmlOptions, target: Object, propertyKey: string | symbol) => {\n const constructor = target.constructor;\n let list = ReflectUtils.getMetadata<InnerHtmlMetadata[]>(INNER_HTML_METADATA_KEY, constructor);\n if (!list) {\n list = [];\n ReflectUtils.defineMetadata(INNER_HTML_METADATA_KEY, list, constructor);\n }\n list.push({ propertyKey, options });\n };\n\n if (arg2) {\n return decorator({}, arg1!, arg2);\n }\n\n return (target: Object, propertyKey: string | symbol) => {\n decorator((arg1 as InnerHtmlOptions) || {}, target, propertyKey);\n };\n}\n\n/**\n * \uD504\uB85C\uD1A0\uD0C0\uC785 \uCCB4\uC778\uC744 \uC21C\uD68C\uD558\uBA70 \uBAA8\uB4E0 \uB77C\uC774\uD504\uC0AC\uC774\uD074 \uBA54\uC11C\uB4DC\uB97C \uC218\uC9D1\uD569\uB2C8\uB2E4.\n */\nexport const findAllLifecycleMetadata = <T = (string | symbol)[]>(target: any, metadataKey: symbol): T | undefined => {\n const results = ReflectUtils.findAllMetadataFlatten(metadataKey, target);\n return results.length > 0 ? (results as unknown as T) : undefined;\n};\n\nexport const getOnConnectedInnerHtmlMetadata = (target: any): InnerHtmlMetadata[] | undefined => {\n const constructor = target instanceof Function ? target : target.constructor;\n return ReflectUtils.getMetadata(INNER_HTML_METADATA_KEY, constructor);\n};\n", "import {ReflectUtils} from '@dooboostore/core';\nimport {ensureInit, getElementConfig} from './elementDefine';\nimport {SwcUtils} from '../utils/Utils';\nimport {SpecialSelector, SwcQueryOptions} from '../types';\nexport interface AttributeFieldOptions extends SwcQueryOptions {\n name?: string;\n // connectedInitialize?: boolean;\n type?: typeof Number | typeof Boolean | typeof String;\n}\n\nexport interface AttributeFieldMetadata {\n propertyKey: string | symbol;\n selector: string;\n options: AttributeFieldOptions;\n privateKey: symbol;\n}\n\nexport const ATTRIBUTE_FIELD_METADATA_KEY = Symbol.for('simple-web-component:attribute-field');\n\nconst convertValue = (val: string | null, type: any): any => {\n if (val === null || val === undefined) return val;\n if (type === Number) return Number(val);\n if (type === Boolean) return val === 'false' || val === '0' ? false : true;\n return val;\n};\n\nexport const resolveTargetEls = (inst: any, selector: string, options: AttributeFieldOptions, currentWin: any): HTMLElement[] => {\n const r = options.root || 'auto';\n const results: HTMLElement[] = [];\n\n const applyRoot = (target: any) => {\n if (!target) return;\n if (r === 'auto') {\n results.push(target);\n } else {\n if (r === 'light' || r === 'all') results.push(target);\n if ((r === 'shadow' || r === 'all') && target.shadowRoot) results.push(target.shadowRoot);\n }\n };\n\n if (selector === ':host' || !selector) {\n applyRoot(inst);\n } else if (selector === ':window') {\n results.push(currentWin);\n } else if (selector === ':document') {\n results.push(currentWin.document);\n } else {\n const hostSet = SwcUtils.getHostSet(inst);\n if (selector === ':parentHost') applyRoot(hostSet.$parentHost);\n else if (selector === ':appHost') applyRoot(hostSet.$appHost as any);\n else if (selector === ':firstHost') applyRoot(hostSet.$firstHost);\n else if (selector === ':lastHost') applyRoot(hostSet.$lastHost);\n else if (selector === ':firstAppHost') applyRoot(hostSet.$firstAppHost as any);\n else if (selector === ':lastAppHost') applyRoot(hostSet.$lastAppHost as any);\n else {\n if (r === 'shadow') {\n const found = inst.shadowRoot?.querySelectorAll(selector);\n if (found) results.push(...found);\n } else if (r === 'light') {\n const found = inst.querySelectorAll(selector);\n if (found) results.push(...found);\n } else if (r === 'all') {\n const sMatch = inst.shadowRoot?.querySelectorAll(selector);\n const lMatch = inst.querySelectorAll(selector);\n if (sMatch) results.push(...sMatch);\n if (lMatch) results.push(...lMatch);\n } else {\n const found = (inst.shadowRoot || inst).querySelectorAll(selector);\n if (found) results.push(...found);\n }\n }\n }\n return results;\n};\n\n/**\n * @attribute decorator to sync a field value with an element's attribute.\n */\nexport function attribute(selector: string, options: AttributeFieldOptions = {}): PropertyDecorator {\n return (target: Object, propertyKey: string | symbol) => {\n const constructor = target.constructor;\n const privateKey = Symbol(String(propertyKey));\n //\n const designType = (Reflect as any).getMetadata('design:type', target, propertyKey);\n //\n let metaList = ReflectUtils.getOwnMetadata(ATTRIBUTE_FIELD_METADATA_KEY, constructor) as AttributeFieldMetadata[];\n if (!metaList) {\n metaList = [];\n ReflectUtils.defineMetadata(ATTRIBUTE_FIELD_METADATA_KEY, metaList, constructor);\n }\n metaList.push({propertyKey, selector, options, privateKey});\n\n const applySetAttribute = (inst: any, targets: HTMLElement[], attrName: string, nv: any) => {\n targets.forEach(it => {\n // console.log('sssssssssssss', it, attrName, nv);\n if (it && typeof (it as any).setAttribute === 'function') {\n if (nv === null) {\n (it as any).removeAttribute(attrName);\n } else {\n (it as any).setAttribute(attrName, String(nv));\n }\n } else {\n inst[privateKey] = nv;\n }\n });\n };\n\n try {\n // Own property\uB97C \uC0AD\uC81C\uD558\uC5EC getter\uAC00 \uC791\uB3D9\uD558\uB3C4\uB85D \uD568\n // delete target[propertyKey];\n\n // const defineTarget = target instanceof Function ? target : (target as any).constructor;\n \n Object.defineProperty(target, propertyKey, {\n get(this: any) {\n // console.log('------>??gettttt', this, propertyKey);\n // try {\n const attrName = options.name || String(propertyKey);\n const conf = getElementConfig(this);\n const currentWin = this._resolveWindow?.(conf) || ((typeof window !== 'undefined' ? window : undefined) as any);\n const targetType = options.type || designType;\n //\n // connectedInitialize: true\uC774\uBA74 privateKey \uAC12\uB9CC \uBC18\uD658 (DOM \uBB34\uC2DC)\n // if (options.connectedInitialize === true && (this as any).__swc_syncing_init) {\n // console.log('cccccccc2');\n // return this[privateKey];\n // // return convertValue(this[privateKey], targetType);\n // }\n\n const targets = resolveTargetEls(this, selector, options, currentWin);\n const primaryTarget = targets[0];\n\n if (primaryTarget && typeof (primaryTarget as any).hasAttribute === 'function') {\n if ((primaryTarget as any).hasAttribute(attrName)) {\n const domVal = (primaryTarget as any).getAttribute(attrName);\n return convertValue(domVal, targetType);\n }\n return null;\n }\n\n const data = convertValue(this[privateKey], targetType);\n // console.log('get rrr', data);\n return data;\n // } catch (err) {\n // console.error('Error in getter:', err);\n // throw err;\n // }\n },\n set(this: any, nv: any) {\n // this[propertyKey] = nv;\n // console.log('------>??settttt', this, nv, propertyKey);\n const attrName = options.name || String(propertyKey);\n const conf = getElementConfig(this);\n const currentWin = this._resolveWindow?.(conf) || ((typeof window !== 'undefined' ? window : undefined) as any);\n\n\n // if (!this.__swc_connected) {\n // this[privateKey] = nv;\n // return;\n // }\n\n const targets = resolveTargetEls(this, selector, options, currentWin);\n applySetAttribute(this, targets, attrName, nv);\n },\n enumerable: true,\n configurable: true\n });\n } catch (err) {\n console.error('[SWC] defineProperty error:', err);\n }\n };\n}\n\n/**\n * @attributeHost decorator to sync a field value with the :host element's attribute.\n */\nexport function attributeHost(target: Object, propertyKey: string | symbol): void;\nexport function attributeHost(options: AttributeFieldOptions): PropertyDecorator;\nexport function attributeHost(attrName: string): PropertyDecorator;\nexport function attributeHost(attrName: string, options: AttributeFieldOptions): PropertyDecorator;\nexport function attributeHost(targetOrAttrOrOptions?: any, propertyKeyOrOptions?: any): any {\n if (propertyKeyOrOptions !== undefined && (typeof propertyKeyOrOptions === 'string' || typeof propertyKeyOrOptions === 'symbol')) {\n return attribute(':host', { name: String(propertyKeyOrOptions) })(targetOrAttrOrOptions, propertyKeyOrOptions);\n }\n\n if (typeof targetOrAttrOrOptions === 'string') {\n const attrName = targetOrAttrOrOptions;\n const options = (typeof propertyKeyOrOptions === 'object' ? propertyKeyOrOptions : {}) as AttributeFieldOptions;\n return attribute(':host', { ...options, name: attrName });\n } else if (typeof targetOrAttrOrOptions === 'object') {\n const options = targetOrAttrOrOptions as AttributeFieldOptions;\n return (target: Object, propertyKey: string | symbol) => {\n return attribute(':host', { ...options, name: String(propertyKey) })(target, propertyKey);\n };\n } else {\n return (target: Object, propertyKey: string | symbol) => {\n return attribute(':host', { name: String(propertyKey) })(target, propertyKey);\n };\n }\n}\n\nexport const findAllAttributeMetadata = (target: any): AttributeFieldMetadata[] => {\n const actualTarget = target instanceof Function ? target : target.constructor;\n return ReflectUtils.findAllMetadata<AttributeFieldMetadata[]>(ATTRIBUTE_FIELD_METADATA_KEY, actualTarget).flat();\n};\n", "import {ReflectUtils} from '@dooboostore/core';\n\nexport const ON_ATTRIBUTE_CHANGED_METADATA_KEY = Symbol.for('simple-web-component:on-attribute-changed');\n\n/**\n * @changedAttributeHost decorator - fires when any attribute on :host changes\n * Usage: @changedAttributeHost('data-product-id')\n */\nexport function changedAttributeHost(attributeName?: string): MethodDecorator {\n return (target: Object, propertyKey: string | symbol) => {\n const constructor = target.constructor;\n let meta = ReflectUtils.getOwnMetadata(ON_ATTRIBUTE_CHANGED_METADATA_KEY, constructor) as Map<string, (string | symbol)[]>;\n if (!meta) {\n meta = new Map<string, (string | symbol)[]>();\n ReflectUtils.defineMetadata(ON_ATTRIBUTE_CHANGED_METADATA_KEY, meta, constructor);\n }\n\n const name = attributeName || String(propertyKey);\n let methods = meta.get(name);\n if (!methods) {\n methods = [];\n meta.set(name, methods);\n }\n if (!methods.includes(propertyKey)) methods.push(propertyKey);\n };\n}\n\nexport const getChangedAttributeMetadata = (target: any): Map<string, (string | symbol)[]> | undefined => {\n const constructor = target instanceof Function ? target : target.constructor;\n return ReflectUtils.getMetadata(ON_ATTRIBUTE_CHANGED_METADATA_KEY, constructor);\n};\n\nexport const findAllAttributeChangedMetadata = (target: any): Map<string, (string | symbol)[]> => {\n return ReflectUtils.findAllMapMetadata<string, string | symbol>(ON_ATTRIBUTE_CHANGED_METADATA_KEY, target);\n};\n", "import { ReflectUtils } from '@dooboostore/core';\nimport { ensureInit, getElementConfig } from './elementDefine';\nimport { HelperHostSet, SwcRootType } from '../types';\nimport { SwcUtils } from \"../utils/Utils\";\n\nexport type ApplyNodePosition = 'beforeBegin' | 'afterBegin' | 'beforeEnd' | 'afterEnd' | 'replace' | 'replaceChildren' | 'innerHtml' | 'innerText' | 'remove';\n\nexport interface ApplyNodeOptions {\n position?: ApplyNodePosition;\n root?: SwcRootType;\n /**\n * Filter function to determine whether to perform DOM operation.\n * If it returns false, the operation is skipped.\n */\n filter?: (target: HTMLElement | ShadowRoot, newValue: any, helper: HelperHostSet) => boolean;\n /**\n * Optional loading content to display while an async method is executing.\n */\n loading?: (helper: HelperHostSet) => any;\n}\n\nexport interface ApplyNodeMetadata {\n propertyKey: string | symbol;\n selector: string;\n options: ApplyNodeOptions;\n}\n\nexport const APPLY_NODE_METADATA_KEY = Symbol.for('simple-web-component:apply-node');\n\nconst normalizeNodes = (res: any, doc: Document): Node[] => {\n const items = Array.isArray(res) ? res : [res];\n return items.map(it => {\n if (it instanceof Node) return it;\n return doc.createTextNode(it !== undefined && it !== null ? String(it) : '');\n });\n};\n\nconst applyToDom = (targetEl: any, res: any, pos: ApplyNodePosition, doc: Document) => {\n if (!targetEl) return;\n \n if (pos === 'innerHtml') {\n targetEl.innerHTML = res !== undefined && res !== null ? String(res) : '';\n return;\n }\n \n if (pos === 'innerText') {\n if (targetEl.innerText !== undefined) {\n targetEl.innerText = res !== undefined && res !== null ? String(res) : '';\n }\n return;\n }\n\n const isShadowRoot = targetEl instanceof ShadowRoot;\n const nodes = normalizeNodes(res, doc);\n if (pos === 'replace') {\n if (!isShadowRoot) targetEl.replaceWith(...nodes);\n } else if (pos === 'replaceChildren') {\n targetEl.replaceChildren(...nodes);\n } else {\n if (pos === 'beforeEnd') targetEl.append(...nodes);\n else if (pos === 'afterBegin') targetEl.prepend(...nodes);\n else if (pos === 'beforeBegin' && !isShadowRoot) targetEl.before(...nodes);\n else if (pos === 'afterEnd' && !isShadowRoot) targetEl.after(...nodes);\n }\n};\n\n/**\n * @applyNode decorator to surgically add/replace nodes to a target element.\n */\nexport function applyNode(selector: string, options: ApplyNodeOptions = { position: 'beforeEnd' }): MethodDecorator {\n return (targetObj: Object, propertyKey: string | symbol, descriptor: PropertyDescriptor) => {\n const constructor = targetObj.constructor;\n let metaList = ReflectUtils.getOwnMetadata(APPLY_NODE_METADATA_KEY, constructor) as Map<string | symbol, ApplyNodeMetadata>;\n if (!metaList) {\n metaList = new Map<string | symbol, ApplyNodeMetadata>();\n ReflectUtils.defineMetadata(APPLY_NODE_METADATA_KEY, metaList, constructor);\n }\n metaList.set(propertyKey, { propertyKey, selector, options });\n\n const original = descriptor.value;\n descriptor.value = function (...args: any[]) {\n ensureInit(this);\n \n const conf = getElementConfig(this);\n const currentWin = (this as any)._resolveWindow?.(conf) || ((typeof window !== 'undefined' ? window : undefined) as Window);\n const currentDoc = currentWin.document;\n const hostSet = SwcUtils.getHelperAndHostSet(currentWin, this);\n \n const getTarget = () => {\n const r = options.root || 'auto';\n const applyRoot = (t: any) => {\n if (!t) return t;\n if (r === 'auto') return t.shadowRoot || t;\n if (r === 'shadow') return t.shadowRoot;\n if (r === 'light') return t;\n if (r === 'all') return t.shadowRoot || t;\n return t;\n };\n\n if (selector === ':host') return applyRoot(this);\n if (selector === ':parentHost') return applyRoot(hostSet.$parentHost);\n if (selector === ':appHost') return applyRoot(hostSet.$appHost);\n if (selector === ':firstHost') return applyRoot(hostSet.$firstHost);\n if (selector === ':lastHost') return applyRoot(hostSet.$lastHost);\n \n const targetRoot = applyRoot(this);\n return targetRoot ? targetRoot.querySelector(selector) : null;\n };\n\n const targetEl = getTarget();\n const res = original.apply(this, args);\n\n const runApply = (target: any, val: any) => {\n const pos = options.position || 'beforeEnd';\n \n // Intelligent Default Filter\n const defaultFilter = (t: any, v: any) => {\n if (v instanceof Node) return !t.contains(v);\n if (pos === 'innerHtml' && typeof v === 'string') return t.innerHTML !== v;\n if (pos === 'replaceChildren' && v instanceof Node) return !t.contains(v);\n return true;\n };\n \n const activeFilter = options.filter || defaultFilter;\n \n if (activeFilter(target, val, hostSet)) {\n applyToDom(target, val, pos, currentDoc);\n }\n };\n\n if (res instanceof Promise) {\n // \uBE44\uB3D9\uAE30\uC77C \uB54C\uB9CC \uB85C\uB529 \uD45C\uC2DC\n if (targetEl && options.loading) {\n const loadingRes = options.loading.call(this, hostSet);\n applyToDom(targetEl, loadingRes, options.position || 'beforeEnd', currentDoc);\n }\n\n return res.then(finalRes => {\n if (finalRes !== undefined && targetEl) runApply(targetEl, finalRes);\n return finalRes;\n });\n } else {\n if (res !== undefined && targetEl) runApply(targetEl, res);\n return res;\n }\n };\n };\n}\n\nexport const findAllApplyNodeMetadata = (target: any): Map<string | symbol, ApplyNodeMetadata> => {\n const result = new Map<string | symbol, ApplyNodeMetadata>();\n const maps = ReflectUtils.findAllMetadata<Map<string | symbol, ApplyNodeMetadata>>(APPLY_NODE_METADATA_KEY, target);\n maps.forEach(map => {\n if (map instanceof Map) {\n map.forEach((v, k) => result.set(k, v));\n }\n });\n return result;\n};\n\nexport function applyNodeHost(options: ApplyNodeOptions): MethodDecorator;\nexport function applyNodeHost(target: Object, propertyKey: string | symbol, descriptor: PropertyDescriptor): void;\nexport function applyNodeHost(targetOrOptions?: any, propertyKey?: string | symbol, descriptor?: PropertyDescriptor): any {\n if (propertyKey !== undefined) return applyNode(':host', { position: 'beforeEnd' })(targetOrOptions, propertyKey, descriptor);\n const opt = targetOrOptions || {};\n return applyNode(':host', { position: 'beforeEnd', ...opt });\n}\n\nexport function applyReplaceChildrenNodeHost(options: ApplyNodeOptions): MethodDecorator;\nexport function applyReplaceChildrenNodeHost(target: Object, propertyKey: string | symbol, descriptor: PropertyDescriptor): void;\nexport function applyReplaceChildrenNodeHost(targetOrOptions?: any, propertyKey?: string | symbol, descriptor?: PropertyDescriptor): any {\n if (propertyKey !== undefined) return applyNode(':host', { position: 'replaceChildren' })(targetOrOptions, propertyKey, descriptor);\n const opt = targetOrOptions || {};\n return applyNode(':host', { position: 'replaceChildren', ...opt });\n}\n\nexport function applyInnerHtmlNodeHost(options: ApplyNodeOptions): MethodDecorator;\nexport function applyInnerHtmlNodeHost(target: Object, propertyKey: string | symbol, descriptor: PropertyDescriptor): void;\nexport function applyInnerHtmlNodeHost(targetOrOptions?: any, propertyKey?: string | symbol, descriptor?: PropertyDescriptor): any {\n if (propertyKey !== undefined) return applyNode(':host', { position: 'innerHtml' })(targetOrOptions, propertyKey, descriptor);\n const opt = targetOrOptions || {};\n return applyNode(':host', { position: 'innerHtml', ...opt });\n}\n\nexport function applyReplaceChildrenNode(selector: string, options: ApplyNodeOptions = {}): MethodDecorator {\n return applyNode(selector, { ...options, position: 'replaceChildren' });\n}\n\nexport function applyInnerHtmlNode(selector: string, options: ApplyNodeOptions = {}): MethodDecorator {\n return applyNode(selector, { ...options, position: 'innerHtml' });\n}\n", "import { ReflectUtils } from '@dooboostore/core';\nimport { getElementConfig, ensureInit } from './elementDefine';\nimport { SwcUtils } from '../utils/Utils';\nimport { SpecialSelector, SwcQueryOptions } from '../types';\n\nexport interface QueryMetadata {\n propertyKey: string | symbol;\n selector: string;\n options: SwcQueryOptions;\n}\n\nexport const QUERY_METADATA_KEY = Symbol.for('simple-web-component:query');\n\nexport function query(target: SpecialSelector): PropertyDecorator;\nexport function query(selector: string, options?: SwcQueryOptions): PropertyDecorator;\n/**\n * @query decorator to inject a single element into a class property.\n */\nexport function query(selectorOrTarget: string, options: any = {}): PropertyDecorator {\n return (targetObj: Object, propertyKey: string | symbol, descriptor?: never): void => {\n if (descriptor !== undefined) {\n throw new Error(`@query decorator cannot be used on methods. (Method: ${String(propertyKey)})`);\n }\n\n const constructor = targetObj.constructor;\n let queries = ReflectUtils.getMetadata<QueryMetadata[]>(QUERY_METADATA_KEY, constructor);\n if (!queries) {\n queries = [];\n ReflectUtils.defineMetadata(QUERY_METADATA_KEY, queries, constructor);\n }\n queries.push({ propertyKey, selector: selectorOrTarget, options });\n\n // const propertyType = Reflect.getMetadata(\"design:type\", targetObj, propertyKey);\n // console.log(`Property ${String(propertyKey)} type is:`, propertyType.name);\n Object.defineProperty(targetObj, propertyKey, {\n get(this: HTMLElement) {\n ensureInit(this);\n const selector = selectorOrTarget;\n\n const r = options.root || 'auto';\n const applyRoot = (t: any) => {\n if (!t || !(t instanceof HTMLElement)) return t;\n if (r === 'auto') return t.shadowRoot || t;\n if (r === 'shadow') return t.shadowRoot;\n if (r === 'light') return t;\n if (r === 'all') return t.shadowRoot || t; // query only returns one, so shadow preferred\n return t;\n };\n\n // --- Special Selectors: HostSet ---\n const hostSet = SwcUtils.getHostSet(this);\n if (selector === ':parentHost') return applyRoot(hostSet.$parentHost);\n if (selector === ':appHost') return applyRoot(hostSet.$appHost);\n if (selector === ':firstHost') return applyRoot(hostSet.$firstHost);\n if (selector === ':lastHost') return applyRoot(hostSet.$lastHost);\n if (selector === ':firstAppHost') return applyRoot(hostSet.$firstAppHost);\n if (selector === ':lastAppHost') return applyRoot(hostSet.$lastAppHost);\n\n // --- Special Selectors: Env ---\n const config = getElementConfig(this);\n const win = config?.window || window;\n if (selector === ':window') return win;\n if (selector === ':document') return win.document;\n if (selector === ':host') return applyRoot(this);\n\n // --- Standard Selectors ---\n if (r === 'shadow') return this.shadowRoot ? this.shadowRoot.querySelector(selector) : null;\n if (r === 'light') return this.querySelector(selector);\n if (r === 'all') {\n const shadowMatch = this.shadowRoot ? this.shadowRoot.querySelector(selector) : null;\n return shadowMatch || this.querySelector(selector);\n }\n return (this.shadowRoot || this).querySelector(selector);\n },\n set(this: HTMLElement, nv: any) {\n ensureInit(this);\n if (nv === null || nv === undefined) {\n const selector = selectorOrTarget;\n if (selector.startsWith(':') && selector !== ':host') return;\n\n const r = options.root || 'auto';\n const targets: Element[] = [];\n\n if (r === 'shadow') {\n if (this.shadowRoot?.querySelector(selector)) targets.push(this.shadowRoot.querySelector(selector)!);\n } else if (r === 'light') {\n if (this.querySelector(selector)) targets.push(this.querySelector(selector)!);\n } else if (r === 'all') {\n if (this.shadowRoot?.querySelector(selector)) targets.push(this.shadowRoot.querySelector(selector)!);\n if (this.querySelector(selector)) targets.push(this.querySelector(selector)!);\n } else {\n const el = (this.shadowRoot || this).querySelector(selector);\n if (el) targets.push(el);\n }\n\n targets.forEach(t => t.remove());\n }\n },\n enumerable: true,\n configurable: true\n });\n };\n}\n\n/**\n * @queryHost decorator - simplified version of @query for :host selector\n * Usage: @queryHost testzzs: HTMLElement | undefined;\n * Usage: @queryHost() testzzs: HTMLElement | undefined;\n * Usage: @queryHost({ root: 'shadow' }) testzzs: HTMLElement | undefined;\n */\nexport function queryHost(target: Object, propertyKey: string | symbol): void;\nexport function queryHost(): PropertyDecorator;\nexport function queryHost(options: SwcQueryOptions): PropertyDecorator;\nexport function queryHost(targetOrOptions?: any, propertyKey?: string | symbol): any {\n // Direct decorator usage: @queryHost (no parentheses)\n if (propertyKey !== undefined && (typeof propertyKey === 'string' || typeof propertyKey === 'symbol')) {\n return query(':host', {})(targetOrOptions, propertyKey);\n }\n\n // @queryHost() or @queryHost(options)\n if (typeof targetOrOptions === 'object' && targetOrOptions !== null) {\n return query(':host', targetOrOptions as SwcQueryOptions);\n } else {\n return query(':host', {});\n }\n}\n\n/**\n * @host - Alias for @queryHost decorator\n * Usage: @host element: HTMLElement | undefined;\n * Usage: @host() element: HTMLElement | undefined;\n * Usage: @host({ root: 'shadow' }) element: HTMLElement | undefined;\n */\nexport const host = queryHost;\n\n/**\n * @parentHost - Query :parentHost (Direct parent SWC component)\n * Usage: @parentHost parent: HTMLElement | undefined;\n * Usage: @parentHost() parent: HTMLElement | undefined;\n * Usage: @parentHost({ root: 'shadow' }) parent: HTMLElement | undefined;\n */\nexport function parentHost(target: Object, propertyKey: string | symbol): void;\nexport function parentHost(): PropertyDecorator;\nexport function parentHost(options: SwcQueryOptions): PropertyDecorator;\nexport function parentHost(targetOrOptions?: any, propertyKey?: string | symbol): any {\n if (propertyKey !== undefined && (typeof propertyKey === 'string' || typeof propertyKey === 'symbol')) {\n return query(':parentHost', {})(targetOrOptions, propertyKey);\n }\n if (typeof targetOrOptions === 'object' && targetOrOptions !== null) {\n return query(':parentHost', targetOrOptions as SwcQueryOptions);\n } else {\n return query(':parentHost', {});\n }\n}\n\n/**\n * @appHost - Query :appHost (Nearest <swc-app>)\n * Usage: @appHost app: SwcAppInterface | undefined;\n * Usage: @appHost() app: SwcAppInterface | undefined;\n * Usage: @appHost({ root: 'shadow' }) app: SwcAppInterface | undefined;\n */\nexport function appHost(target: Object, propertyKey: string | symbol): void;\nexport function appHost(): PropertyDecorator;\nexport function appHost(options: SwcQueryOptions): PropertyDecorator;\nexport function appHost(targetOrOptions?: any, propertyKey?: string | symbol): any {\n if (propertyKey !== undefined && (typeof propertyKey === 'string' || typeof propertyKey === 'symbol')) {\n return query(':appHost', {})(targetOrOptions, propertyKey);\n }\n if (typeof targetOrOptions === 'object' && targetOrOptions !== null) {\n return query(':appHost', targetOrOptions as SwcQueryOptions);\n } else {\n return query(':appHost', {});\n }\n}\n\n/**\n * @firstHost - Query :firstHost (First component in hierarchy)\n * Usage: @firstHost first: HTMLElement | undefined;\n * Usage: @firstHost() first: HTMLElement | undefined;\n * Usage: @firstHost({ root: 'shadow' }) first: HTMLElement | undefined;\n */\nexport function firstHost(target: Object, propertyKey: string | symbol): void;\nexport function firstHost(): PropertyDecorator;\nexport function firstHost(options: SwcQueryOptions): PropertyDecorator;\nexport function firstHost(targetOrOptions?: any, propertyKey?: string | symbol): any {\n if (propertyKey !== undefined && (typeof propertyKey === 'string' || typeof propertyKey === 'symbol')) {\n return query(':firstHost', {})(targetOrOptions, propertyKey);\n }\n if (typeof targetOrOptions === 'object' && targetOrOptions !== null) {\n return query(':firstHost', targetOrOptions as SwcQueryOptions);\n } else {\n return query(':firstHost', {});\n }\n}\n\n/**\n * @lastHost - Query :lastHost (Last component in hierarchy)\n * Usage: @lastHost last: HTMLElement | undefined;\n * Usage: @lastHost() last: HTMLElement | undefined;\n * Usage: @lastHost({ root: 'shadow' }) last: HTMLElement | undefined;\n */\nexport function lastHost(target: Object, propertyKey: string | symbol): void;\nexport function lastHost(): PropertyDecorator;\nexport function lastHost(options: SwcQueryOptions): PropertyDecorator;\nexport function lastHost(targetOrOptions?: any, propertyKey?: string | symbol): any {\n if (propertyKey !== undefined && (typeof propertyKey === 'string' || typeof propertyKey === 'symbol')) {\n return query(':lastHost', {})(targetOrOptions, propertyKey);\n }\n if (typeof targetOrOptions === 'object' && targetOrOptions !== null) {\n return query(':lastHost', targetOrOptions as SwcQueryOptions);\n } else {\n return query(':lastHost', {});\n }\n}\n\n/**\n * @firstAppHost - Query :firstAppHost (First <swc-app> in hierarchy)\n * Usage: @firstAppHost app: SwcAppInterface | undefined;\n * Usage: @firstAppHost() app: SwcAppInterface | undefined;\n * Usage: @firstAppHost({ root: 'shadow' }) app: SwcAppInterface | undefined;\n */\nexport function firstAppHost(target: Object, propertyKey: string | symbol): void;\nexport function firstAppHost(): PropertyDecorator;\nexport function firstAppHost(options: SwcQueryOptions): PropertyDecorator;\nexport function firstAppHost(targetOrOptions?: any, propertyKey?: string | symbol): any {\n if (propertyKey !== undefined && (typeof propertyKey === 'string' || typeof propertyKey === 'symbol')) {\n return query(':firstAppHost', {})(targetOrOptions, propertyKey);\n }\n if (typeof targetOrOptions === 'object' && targetOrOptions !== null) {\n return query(':firstAppHost', targetOrOptions as SwcQueryOptions);\n } else {\n return query(':firstAppHost', {});\n }\n}\n\n/**\n * @lastAppHost - Query :lastAppHost (Last <swc-app> in hierarchy)\n * Usage: @lastAppHost app: SwcAppInterface | undefined;\n * Usage: @lastAppHost() app: SwcAppInterface | undefined;\n * Usage: @lastAppHost({ root: 'shadow' }) app: SwcAppInterface | undefined;\n */\nexport function lastAppHost(target: Object, propertyKey: string | symbol): void;\nexport function lastAppHost(): PropertyDecorator;\nexport function lastAppHost(options: SwcQueryOptions): PropertyDecorator;\nexport function lastAppHost(targetOrOptions?: any, propertyKey?: string | symbol): any {\n if (propertyKey !== undefined && (typeof propertyKey === 'string' || typeof propertyKey === 'symbol')) {\n return query(':lastAppHost', {})(targetOrOptions, propertyKey);\n }\n if (typeof targetOrOptions === 'object' && targetOrOptions !== null) {\n return query(':lastAppHost', targetOrOptions as SwcQueryOptions);\n } else {\n return query(':lastAppHost', {});\n }\n}\n\nexport const getQueryMetadata = (target: any): QueryMetadata[] | undefined => {\n const constructor = target instanceof Function ? target : target.constructor;\n return ReflectUtils.getMetadata(QUERY_METADATA_KEY, constructor);\n};", "import { ReflectUtils } from '@dooboostore/core';\nimport { getElementConfig, ensureInit } from './elementDefine';\nimport { SwcUtils } from '../utils/Utils';\nimport { SpecialSelector, SwcQueryOptions } from '../types';\n\nexport interface QueryAllMetadata {\n propertyKey: string | symbol;\n selector: string;\n options: SwcQueryOptions;\n}\n\nexport const QUERY_ALL_METADATA_KEY = Symbol.for('simple-web-component:query-all');\n\nexport function queryAll(target: SpecialSelector): PropertyDecorator;\nexport function queryAll(selector: string, options?: SwcQueryOptions): PropertyDecorator;\n/**\n * @queryAll decorator to inject a list of elements into a class property.\n */\nexport function queryAll(selectorOrTarget: string, options: any = {}): PropertyDecorator {\n return (targetObj: Object, propertyKey: string | symbol, descriptor?: never): void => {\n if (descriptor !== undefined) {\n throw new Error(`@queryAll decorator cannot be used on methods. (Method: ${String(propertyKey)})`);\n }\n\n const constructor = targetObj.constructor;\n let queries = ReflectUtils.getMetadata<QueryAllMetadata[]>(QUERY_ALL_METADATA_KEY, constructor);\n if (!queries) {\n queries = [];\n ReflectUtils.defineMetadata(QUERY_ALL_METADATA_KEY, queries, constructor);\n }\n queries.push({ propertyKey, selector: selectorOrTarget, options });\n\n Object.defineProperty(targetObj, propertyKey, {\n get(this: HTMLElement) {\n ensureInit(this);\n const selector = selectorOrTarget;\n\n const r = options.root || 'auto';\n const applyRoot = (t: any): any[] => {\n if (!t) return [];\n const items = Array.isArray(t) ? t : [t];\n const results: any[] = [];\n items.forEach(it => {\n if (!(it instanceof HTMLElement)) {\n results.push(it);\n return;\n }\n if (r === 'auto') results.push(it.shadowRoot || it);\n else {\n if (r === 'light' || r === 'all') results.push(it);\n if ((r === 'shadow' || r === 'all') && it.shadowRoot) results.push(it.shadowRoot);\n }\n });\n return results;\n };\n\n // --- Special Selectors: HostSet ---\n const hostSet = SwcUtils.getHostSet(this);\n if (selector === ':hosts') return applyRoot(hostSet.$hosts);\n if (selector === ':appHosts') return applyRoot(hostSet.$appHosts);\n\n // --- Special Selectors: Env ---\n const config = getElementConfig(this);\n const win = config?.window || window;\n if (selector === ':window') return [win];\n if (selector === ':document') return [win.document];\n if (selector === ':host') return applyRoot(this);\n\n // --- Standard Selectors ---\n if (r === 'shadow') return this.shadowRoot ? Array.from(this.shadowRoot.querySelectorAll(selector)) : [];\n if (r === 'light') return Array.from(this.querySelectorAll(selector));\n if (r === 'all') {\n const sNodes = this.shadowRoot ? Array.from(this.shadowRoot.querySelectorAll(selector)) : [];\n const lNodes = Array.from(this.querySelectorAll(selector));\n return [...sNodes, ...lNodes];\n }\n const root = this.shadowRoot || this;\n return Array.from(root.querySelectorAll(selector));\n },\n set(this: HTMLElement, nv: any) {\n ensureInit(this);\n if (nv === null || nv === undefined || (Array.isArray(nv) && nv.length === 0)) {\n const selector = selectorOrTarget;\n if (selector.startsWith(':') && selector !== ':host') return;\n\n const r = options.root || 'auto';\n let targets: (Element | Node)[] = [];\n if (r === 'shadow') targets = this.shadowRoot ? Array.from(this.shadowRoot.querySelectorAll(selector)) : [];\n else if (r === 'light') targets = Array.from(this.querySelectorAll(selector));\n else if (r === 'all') {\n const sNodes = this.shadowRoot ? Array.from(this.shadowRoot.querySelectorAll(selector)) : [];\n const lNodes = Array.from(this.querySelectorAll(selector));\n targets = [...sNodes, ...lNodes];\n } else {\n targets = Array.from((this.shadowRoot || this).querySelectorAll(selector));\n }\n targets.forEach(t => (t as Element).remove());\n }\n },\n enumerable: true,\n configurable: true\n });\n };\n}\n/**\n * @hostQueryAll decorator - simplified version of @queryAll for :host selector\n * Usage: @hostQueryAll()\n * Usage: @hostQueryAll({ root: 'shadow' })\n */\n/**\n * @queryAllHost decorator - simplified version of @queryAll for :host selector\n * Usage: @queryAllHost items: HTMLElement[];\n * Usage: @queryAllHost() items: HTMLElement[];\n * Usage: @queryAllHost({ root: 'shadow' }) items: HTMLElement[];\n */\nexport function queryAllHost(target: Object, propertyKey: string | symbol): void;\nexport function queryAllHost(): PropertyDecorator;\nexport function queryAllHost(options: SwcQueryOptions): PropertyDecorator;\nexport function queryAllHost(targetOrOptions?: any, propertyKey?: string | symbol): any {\n // Direct decorator usage: @queryAllHost (no parentheses)\n if (propertyKey !== undefined && (typeof propertyKey === 'string' || typeof propertyKey === 'symbol')) {\n return queryAll(':host', {})(targetOrOptions, propertyKey);\n }\n\n // @queryAllHost() or @queryAllHost(options)\n if (typeof targetOrOptions === 'object' && targetOrOptions !== null) {\n return queryAll(':host', targetOrOptions as SwcQueryOptions);\n } else {\n return queryAll(':host', {});\n }\n}\n\n/**\n * @allHost - Alias for @queryAllHost decorator\n * Usage: @allHost items: HTMLElement[];\n * Usage: @allHost() items: HTMLElement[];\n * Usage: @allHost({ root: 'shadow' }) items: HTMLElement[];\n */\nexport const allHost = queryAllHost;\n/**\n * @allParentHost - Query all :parentHost (All parent SWC components)\n * Usage: @allParentHost parents: HTMLElement[];\n * Usage: @allParentHost() parents: HTMLElement[];\n * Usage: @allParentHost({ root: 'shadow' }) parents: HTMLElement[];\n */\nexport function allParentHost(target: Object, propertyKey: string | symbol): void;\nexport function allParentHost(): PropertyDecorator;\nexport function allParentHost(options: SwcQueryOptions): PropertyDecorator;\nexport function allParentHost(targetOrOptions?: any, propertyKey?: string | symbol): any {\n if (propertyKey !== undefined && (typeof propertyKey === 'string' || typeof propertyKey === 'symbol')) {\n return queryAll(':parentHost', {})(targetOrOptions, propertyKey);\n }\n if (typeof targetOrOptions === 'object' && targetOrOptions !== null) {\n return queryAll(':parentHost', targetOrOptions as SwcQueryOptions);\n } else {\n return queryAll(':parentHost', {});\n }\n}\n\n/**\n * @allAppHost - Query all :appHost (All <swc-app> instances)\n * Usage: @allAppHost apps: SwcAppInterface[];\n * Usage: @allAppHost() apps: SwcAppInterface[];\n * Usage: @allAppHost({ root: 'shadow' }) apps: SwcAppInterface[];\n */\nexport function allAppHost(target: Object, propertyKey: string | symbol): void;\nexport function allAppHost(): PropertyDecorator;\nexport function allAppHost(options: SwcQueryOptions): PropertyDecorator;\nexport function allAppHost(targetOrOptions?: any, propertyKey?: string | symbol): any {\n if (propertyKey !== undefined && (typeof propertyKey === 'string' || typeof propertyKey === 'symbol')) {\n return queryAll(':appHost', {})(targetOrOptions, propertyKey);\n }\n if (typeof targetOrOptions === 'object' && targetOrOptions !== null) {\n return queryAll(':appHost', targetOrOptions as SwcQueryOptions);\n } else {\n return queryAll(':appHost', {});\n }\n}\n\n/**\n * @allFirstHost - Query all :firstHost (All first components in hierarchy)\n * Usage: @allFirstHost firsts: HTMLElement[];\n * Usage: @allFirstHost() firsts: HTMLElement[];\n * Usage: @allFirstHost({ root: 'shadow' }) firsts: HTMLElement[];\n */\nexport function allFirstHost(target: Object, propertyKey: string | symbol): void;\nexport function allFirstHost(): PropertyDecorator;\nexport function allFirstHost(options: SwcQueryOptions): PropertyDecorator;\nexport function allFirstHost(targetOrOptions?: any, propertyKey?: string | symbol): any {\n if (propertyKey !== undefined && (typeof propertyKey === 'string' || typeof propertyKey === 'symbol')) {\n return queryAll(':firstHost', {})(targetOrOptions, propertyKey);\n }\n if (typeof targetOrOptions === 'object' && targetOrOptions !== null) {\n return queryAll(':firstHost', targetOrOptions as SwcQueryOptions);\n } else {\n return queryAll(':firstHost', {});\n }\n}\n\n/**\n * @allLastHost - Query all :lastHost (All last components in hierarchy)\n * Usage: @allLastHost lasts: HTMLElement[];\n * Usage: @allLastHost() lasts: HTMLElement[];\n * Usage: @allLastHost({ root: 'shadow' }) lasts: HTMLElement[];\n */\nexport function allLastHost(target: Object, propertyKey: string | symbol): void;\nexport function allLastHost(): PropertyDecorator;\nexport function allLastHost(options: SwcQueryOptions): PropertyDecorator;\nexport function allLastHost(targetOrOptions?: any, propertyKey?: string | symbol): any {\n if (propertyKey !== undefined && (typeof propertyKey === 'string' || typeof propertyKey === 'symbol')) {\n return queryAll(':lastHost', {})(targetOrOptions, propertyKey);\n }\n if (typeof targetOrOptions === 'object' && targetOrOptions !== null) {\n return queryAll(':lastHost', targetOrOptions as SwcQueryOptions);\n } else {\n return queryAll(':lastHost', {});\n }\n}\n\n/**\n * @allFirstAppHost - Query all :firstAppHost (All first <swc-app> in hierarchy)\n * Usage: @allFirstAppHost apps: SwcAppInterface[];\n * Usage: @allFirstAppHost() apps: SwcAppInterface[];\n * Usage: @allFirstAppHost({ root: 'shadow' }) apps: SwcAppInterface[];\n */\nexport function allFirstAppHost(target: Object, propertyKey: string | symbol): void;\nexport function allFirstAppHost(): PropertyDecorator;\nexport function allFirstAppHost(options: SwcQueryOptions): PropertyDecorator;\nexport function allFirstAppHost(targetOrOptions?: any, propertyKey?: string | symbol): any {\n if (propertyKey !== undefined && (typeof propertyKey === 'string' || typeof propertyKey === 'symbol')) {\n return queryAll(':firstAppHost', {})(targetOrOptions, propertyKey);\n }\n if (typeof targetOrOptions === 'object' && targetOrOptions !== null) {\n return queryAll(':firstAppHost', targetOrOptions as SwcQueryOptions);\n } else {\n return queryAll(':firstAppHost', {});\n }\n}\n\n/**\n * @allLastAppHost - Query all :lastAppHost (All last <swc-app> in hierarchy)\n * Usage: @allLastAppHost apps: SwcAppInterface[];\n * Usage: @allLastAppHost() apps: SwcAppInterface[];\n * Usage: @allLastAppHost({ root: 'shadow' }) apps: SwcAppInterface[];\n */\nexport function allLastAppHost(target: Object, propertyKey: string | symbol): void;\nexport function allLastAppHost(): PropertyDecorator;\nexport function allLastAppHost(options: SwcQueryOptions): PropertyDecorator;\nexport function allLastAppHost(targetOrOptions?: any, propertyKey?: string | symbol): any {\n if (propertyKey !== undefined && (typeof propertyKey === 'string' || typeof propertyKey === 'symbol')) {\n return queryAll(':lastAppHost', {})(targetOrOptions, propertyKey);\n }\n if (typeof targetOrOptions === 'object' && targetOrOptions !== null) {\n return queryAll(':lastAppHost', targetOrOptions as SwcQueryOptions);\n } else {\n return queryAll(':lastAppHost', {});\n }\n}\n\n\nexport const getQueryAllMetadata = (target: any): QueryAllMetadata[] | undefined => {\n const constructor = target instanceof Function ? target : target.constructor;\n return ReflectUtils.getMetadata(QUERY_ALL_METADATA_KEY, constructor);\n};\n\n", "import { ReflectUtils } from '@dooboostore/core';\nimport { ensureInit } from './elementDefine';\nimport { SwcUtils } from '../utils/Utils';\nimport { SwcQueryOptions, HelperHostSet } from '../types';\n\nexport const CLASS_METADATA_KEY = Symbol.for('simple-web-component:class');\n\nexport type ClassAction = 'set' | 'update' | 'add' | 'remove' | 'toggle';\n\nexport interface ClassApplyOptions extends SwcQueryOptions {}\n\nexport interface ClassApplyMetadata {\n propertyKey: string | symbol;\n selector: string;\n action: ClassAction;\n options: ClassApplyOptions;\n}\n\nfunction createClassDecorator(action: ClassAction) {\n return (selector: string, classMapOrOptions?: string | { [className: string]: (el: HTMLElement, value: any, helper: HelperHostSet & { $this: any }) => boolean } | ClassApplyOptions, options: ClassApplyOptions = {}): MethodDecorator => {\n return (target: Object, propertyKey: string | symbol, descriptor: PropertyDescriptor) => {\n const constructor = target.constructor;\n let metaList = ReflectUtils.getOwnMetadata(CLASS_METADATA_KEY, constructor) as Map<string | symbol, ClassApplyMetadata>;\n if (!metaList) {\n metaList = new Map<string | symbol, ClassApplyMetadata>();\n ReflectUtils.defineMetadata(CLASS_METADATA_KEY, metaList, constructor);\n }\n\n let classMap: any = undefined;\n let finalOptions = options;\n\n if (typeof classMapOrOptions === 'string' || (typeof classMapOrOptions === 'object' && classMapOrOptions !== null && !('root' in classMapOrOptions))) {\n classMap = classMapOrOptions;\n } else if (typeof classMapOrOptions === 'object' && classMapOrOptions !== null && 'root' in classMapOrOptions) {\n finalOptions = classMapOrOptions as ClassApplyOptions;\n }\n\n metaList.set(propertyKey, { propertyKey, selector, action, options: finalOptions });\n\n const original = descriptor.value;\n descriptor.value = async function (...args: any[]) {\n ensureInit(this);\n const res = await (original as any).apply(this, args);\n if (res !== undefined) {\n const win = (this as any).ownerDocument?.defaultView || window;\n const host = this as unknown as HTMLElement;\n const hostSet = { ...SwcUtils.getHelperAndHostSet(win, host), $this: this };\n const r = finalOptions.root || 'auto';\n const targetEls: HTMLElement[] = [];\n\n const applyRoot = (t: any) => {\n if (!t || !(t instanceof win.HTMLElement)) return;\n targetEls.push(t);\n };\n\n if (selector === ':parentHost') applyRoot(hostSet.$parentHost);\n else if (selector === ':appHost') applyRoot(hostSet.$appHost);\n else if (selector === ':firstHost') applyRoot(hostSet.$firstHost);\n else if (selector === ':lastHost') applyRoot(hostSet.$lastHost);\n else if (selector === ':firstAppHost') applyRoot(hostSet.$firstAppHost);\n else if (selector === ':lastAppHost') applyRoot(hostSet.$lastAppHost);\n else if (selector === ':hosts') hostSet.$hosts.forEach(applyRoot);\n else if (selector === ':appHosts') hostSet.$appHosts.forEach(applyRoot);\n else if (selector === ':host' || !selector) applyRoot(host);\n else {\n const targetRoot = r === 'auto' ? (host.shadowRoot || host) : (r === 'shadow' ? host.shadowRoot : host);\n if (targetRoot) {\n const found = targetRoot.querySelectorAll(selector);\n if (found) targetEls.push(...(Array.from(found) as HTMLElement[]));\n }\n }\n\n targetEls.forEach(targetEl => {\n const resolvedRes = typeof res === 'function' ? (res as any)(targetEl, hostSet) : res;\n\n if (action === 'set') {\n let classes = '';\n if (classMap && typeof classMap === 'string') {\n classes = resolvedRes ? classMap : '';\n } else if (typeof resolvedRes === 'object' && resolvedRes !== null && !Array.isArray(resolvedRes)) {\n classes = Object.entries(resolvedRes as any)\n .filter(([_, force]) => typeof force === 'function' ? force(targetEl, hostSet) : !!force)\n .map(([cls]) => cls)\n .join(' ');\n } else {\n classes = Array.isArray(resolvedRes) ? (resolvedRes as any[]).join(' ') : String(resolvedRes);\n }\n targetEl.className = classes;\n } else if (action === 'update' || action === 'toggle') {\n if (classMap && typeof classMap === 'string') {\n targetEl.classList.toggle(classMap, !!resolvedRes);\n } else if (typeof resolvedRes === 'object' && resolvedRes !== null && !Array.isArray(resolvedRes)) {\n Object.entries(resolvedRes as any).forEach(([cls, force]) => {\n const isActive = typeof force === 'function' ? force(targetEl, hostSet) : !!force;\n targetEl.classList.toggle(cls, isActive);\n });\n } else {\n const classes = Array.isArray(resolvedRes) ? (resolvedRes as any[]).map(String) : [String(resolvedRes)];\n if (action === 'update') targetEl.classList.add(...classes);\n else classes.forEach(c => targetEl.classList.toggle(c));\n }\n } else if (action === 'add' || action === 'remove') {\n if (classMap && typeof classMap === 'string' && !!resolvedRes) {\n if (action === 'add') targetEl.classList.add(classMap);\n else targetEl.classList.remove(classMap);\n } else if (typeof resolvedRes === 'object' && resolvedRes !== null && !Array.isArray(resolvedRes)) {\n Object.entries(resolvedRes as any).forEach(([cls, force]) => {\n const shouldExecute = typeof force === 'function' ? force(targetEl, hostSet) : !!force;\n if (shouldExecute) {\n if (action === 'add') targetEl.classList.add(cls);\n else targetEl.classList.remove(cls);\n }\n });\n } else {\n const classes = Array.isArray(resolvedRes) ? (resolvedRes as any[]).map(String) : [String(resolvedRes)];\n if (action === 'add') targetEl.classList.add(...classes);\n else targetEl.classList.remove(...classes);\n }\n }\n });\n }\n return res;\n };\n return descriptor;\n };\n };\n}\n\nexport function applyClass(selector: string, action: ClassAction = 'update', options: ClassApplyOptions = {}): MethodDecorator {\n return createClassDecorator(action)(selector, options);\n}\n\nexport const setClass = (selector: string, classMapOrOptions?: string | { [className: string]: (el: HTMLElement, value: any, helper: HelperHostSet & { $this: any }) => boolean } | ClassApplyOptions, options: ClassApplyOptions = {}) => createClassDecorator('set')(selector, classMapOrOptions, options);\nexport const updateClass = (selector: string, classMapOrOptions?: string | { [className: string]: (el: HTMLElement, value: any, helper: HelperHostSet & { $this: any }) => boolean } | ClassApplyOptions, options: ClassApplyOptions = {}) => createClassDecorator('update')(selector, classMapOrOptions, options);\nexport const addClass = (selector: string, classMapOrOptions?: string | { [className: string]: (el: HTMLElement, value: any, helper: HelperHostSet & { $this: any }) => boolean } | ClassApplyOptions, options: ClassApplyOptions = {}) => createClassDecorator('add')(selector, classMapOrOptions, options);\nexport const removeClass = (selector: string, classMapOrOptions?: string | { [className: string]: (el: HTMLElement, value: any, helper: HelperHostSet & { $this: any }) => boolean } | ClassApplyOptions, options: ClassApplyOptions = {}) => createClassDecorator('remove')(selector, classMapOrOptions, options);\nexport const toggleClass = (selector: string, classMapOrOptions?: string | { [className: string]: (el: HTMLElement, value: any, helper: HelperHostSet & { $this: any }) => boolean } | ClassApplyOptions, options: ClassApplyOptions = {}) => createClassDecorator('toggle')(selector, classMapOrOptions, options);\n\n// Host versions\nexport function applyClassHost(action: ClassAction = 'update', options: ClassApplyOptions = {}): MethodDecorator {\n return createClassDecorator(action)(':host', options);\n}\nexport const setClassHost = (classMapOrOptions?: string | { [className: string]: (el: HTMLElement, value: any, helper: HelperHostSet & { $this: any }) => boolean } | ClassApplyOptions, options: ClassApplyOptions = {}) => createClassDecorator('set')(':host', classMapOrOptions, options);\nexport const updateClassHost = (classMapOrOptions?: string | { [className: string]: (el: HTMLElement, value: any, helper: HelperHostSet & { $this: any }) => boolean } | ClassApplyOptions, options: ClassApplyOptions = {}) => createClassDecorator('update')(':host', classMapOrOptions, options);\nexport const addClassHost = (classMapOrOptions?: string | { [className: string]: (el: HTMLElement, value: any, helper: HelperHostSet & { $this: any }) => boolean } | ClassApplyOptions, options: ClassApplyOptions = {}) => createClassDecorator('add')(':host', classMapOrOptions, options);\nexport const removeClassHost = (classMapOrOptions?: string | { [className: string]: (el: HTMLElement, value: any, helper: HelperHostSet & { $this: any }) => boolean } | ClassApplyOptions, options: ClassApplyOptions = {}) => createClassDecorator('remove')(':host', classMapOrOptions, options);\nexport const toggleClassHost = (classMapOrOptions?: string | { [className: string]: (el: HTMLElement, value: any, helper: HelperHostSet & { $this: any }) => boolean } | ClassApplyOptions, options: ClassApplyOptions = {}) => createClassDecorator('toggle')(':host', classMapOrOptions, options);\n\nexport const findAllClassMetadata = (target: any): Map<string | symbol, ClassApplyMetadata> => {\n const result = new Map<string | symbol, ClassApplyMetadata>();\n const maps = ReflectUtils.findAllMetadata<Map<string | symbol, ClassApplyMetadata>>(CLASS_METADATA_KEY, target);\n maps.forEach(map => {\n if (map instanceof Map) {\n map.forEach((v, k) => result.set(k, v));\n }\n });\n return result;\n};\n", "import { ReflectUtils } from '@dooboostore/core';\nimport { ensureInit } from './elementDefine';\nimport { SwcUtils } from '../utils/Utils';\nimport { SwcQueryOptions, HelperHostSet } from '../types';\n\nexport type StyleAction = 'set' | 'update' | 'remove';\n\nexport interface StyleApplyOptions extends SwcQueryOptions {}\n\nexport interface StyleApplyMetadata {\n propertyKey: string | symbol;\n selector: string;\n action: StyleAction;\n options: StyleApplyOptions;\n}\n\nexport const STYLE_METADATA_KEY = Symbol.for('simple-web-component:style');\n\nfunction createStyleDecorator(action: StyleAction) {\n return (selector: string, options: StyleApplyOptions = {}): MethodDecorator => {\n return (target: Object, propertyKey: string | symbol, descriptor: PropertyDescriptor) => {\n const constructor = target.constructor;\n let metaList = ReflectUtils.getOwnMetadata(STYLE_METADATA_KEY, constructor) as Map<string | symbol, StyleApplyMetadata>;\n if (!metaList) {\n metaList = new Map<string | symbol, StyleApplyMetadata>();\n ReflectUtils.defineMetadata(STYLE_METADATA_KEY, metaList, constructor);\n }\n metaList.set(propertyKey, { propertyKey, selector, action, options });\n\n const original = descriptor.value;\n descriptor.value = async function (...args: any[]) {\n ensureInit(this);\n const res = await (original as any).apply(this, args);\n if (res !== undefined) {\n const win = (this as any).ownerDocument?.defaultView || window;\n const host = this as unknown as HTMLElement;\n const hostSet = { ...SwcUtils.getHelperAndHostSet(win, host), $this: this };\n const r = options.root || 'auto';\n const targetEls: HTMLElement[] = [];\n\n const applyRoot = (t: any) => {\n if (!t || !(t instanceof win.HTMLElement)) return;\n targetEls.push(t);\n };\n\n if (selector === ':parentHost') applyRoot(hostSet.$parentHost);\n else if (selector === ':appHost') applyRoot(hostSet.$appHost);\n else if (selector === ':firstHost') applyRoot(hostSet.$firstHost);\n else if (selector === ':lastHost') applyRoot(hostSet.$lastHost);\n else if (selector === ':firstAppHost') applyRoot(hostSet.$firstAppHost);\n else if (selector === ':lastAppHost') applyRoot(hostSet.$lastAppHost);\n else if (selector === ':hosts') hostSet.$hosts.forEach(applyRoot);\n else if (selector === ':appHosts') hostSet.$appHosts.forEach(applyRoot);\n else if (selector === ':host' || !selector) applyRoot(host);\n else {\n const targetRoot = r === 'auto' ? (host.shadowRoot || host) : (r === 'shadow' ? host.shadowRoot : host);\n if (targetRoot) {\n const found = targetRoot.querySelectorAll(selector);\n if (found) targetEls.push(...(Array.from(found) as HTMLElement[]));\n }\n }\n\n targetEls.forEach(targetEl => {\n const resolvedRes = typeof res === 'function' ? (res as any)(targetEl, hostSet) : res;\n\n if (action === 'set' || action === 'update') {\n if (action === 'set') targetEl.style.cssText = '';\n \n if (typeof resolvedRes === 'object' && resolvedRes !== null && !Array.isArray(resolvedRes)) {\n Object.entries(resolvedRes as any).forEach(([prop, val]) => {\n const finalVal = typeof val === 'function' ? val(targetEl, hostSet) : val;\n if (finalVal === null || finalVal === undefined) {\n targetEl.style.removeProperty(prop);\n } else {\n targetEl.style[prop as any] = String(finalVal);\n }\n });\n } else if (typeof resolvedRes === 'string') {\n targetEl.style.cssText = resolvedRes;\n }\n } else if (action === 'remove') {\n if (typeof resolvedRes === 'object' && resolvedRes !== null && !Array.isArray(resolvedRes)) {\n Object.entries(resolvedRes as any).forEach(([prop, val]) => {\n const shouldRemove = typeof val === 'function' ? val(targetEl, hostSet) : !!val;\n if (shouldRemove) {\n targetEl.style.removeProperty(prop);\n }\n });\n } else {\n const props = Array.isArray(resolvedRes) ? resolvedRes : [resolvedRes];\n props.forEach(p => targetEl.style.removeProperty(String(p)));\n }\n }\n });\n }\n return res;\n };\n return descriptor;\n };\n };\n}\n\nexport function applyStyle(selector: string, action: StyleAction = 'update', options: StyleApplyOptions = {}): MethodDecorator {\n return createStyleDecorator(action)(selector, options);\n}\n\nexport const setStyle = (selector: string, options: StyleApplyOptions = {}) => createStyleDecorator('set')(selector, options);\nexport const updateStyle = (selector: string, options: StyleApplyOptions = {}) => createStyleDecorator('update')(selector, options);\nexport const removeStyle = (selector: string, options: StyleApplyOptions = {}) => createStyleDecorator('remove')(selector, options);\n\n// Host versions\nexport function applyStyleHost(action: StyleAction = 'update', options: StyleApplyOptions = {}): MethodDecorator {\n return createStyleDecorator(action)(':host', options);\n}\nexport const setStyleHost = (options: StyleApplyOptions = {}) => createStyleDecorator('set')(':host', options);\nexport const updateStyleHost = (options: StyleApplyOptions = {}) => createStyleDecorator('update')(':host', options);\nexport const removeStyleHost = (options: StyleApplyOptions = {}) => createStyleDecorator('remove')(':host', options);\n\nexport const findAllStyleMetadata = (target: any): Map<string | symbol, StyleApplyMetadata> => {\n const result = new Map<string | symbol, StyleApplyMetadata>();\n const maps = ReflectUtils.findAllMetadata<Map<string | symbol, StyleApplyMetadata>>(STYLE_METADATA_KEY, target);\n maps.forEach(map => {\n if (map instanceof Map) {\n map.forEach((v, k) => result.set(k, v));\n }\n });\n return result;\n};\n", "import { ReflectUtils } from '@dooboostore/core';\nimport { ensureInit } from './elementDefine';\nimport { SwcUtils } from '../utils/Utils';\nimport { SwcQueryOptions, HelperHostSet } from '../types';\n\nexport type AttributeAction = 'set' | 'update' | 'remove';\n\nexport interface AttributeApplyOptions extends SwcQueryOptions {\n name?: string;\n}\n\nexport interface AttributeApplyMetadata {\n propertyKey: string | symbol;\n selector: string;\n action: AttributeAction;\n options: AttributeApplyOptions;\n}\n\nexport const ATTRIBUTE_APPLY_METADATA_KEY = Symbol.for('simple-web-component:attribute-apply');\n\nfunction createAttributeDecorator(action: AttributeAction) {\n return (selector: string, nameOrOptions?: string | AttributeApplyOptions, options: AttributeApplyOptions = {}): MethodDecorator => {\n return (target: Object, propertyKey: string | symbol, descriptor: PropertyDescriptor) => {\n const constructor = target.constructor;\n let metaList = ReflectUtils.getOwnMetadata(ATTRIBUTE_APPLY_METADATA_KEY, constructor) as Map<string | symbol, AttributeApplyMetadata>;\n if (!metaList) {\n metaList = new Map<string | symbol, AttributeApplyMetadata>();\n ReflectUtils.defineMetadata(ATTRIBUTE_APPLY_METADATA_KEY, metaList, constructor);\n }\n\n let attributeName = typeof nameOrOptions === 'string' ? nameOrOptions : undefined;\n let finalOptions = options;\n \n if (typeof nameOrOptions === 'object' && nameOrOptions !== null) {\n finalOptions = nameOrOptions as AttributeApplyOptions;\n }\n\n metaList.set(propertyKey, { \n propertyKey, \n selector, \n action, \n options: { ...finalOptions, name: attributeName } \n });\n\n const original = descriptor.value;\n descriptor.value = async function (...args: any[]) {\n ensureInit(this);\n const res = await (original as any).apply(this, args);\n if (res !== undefined) {\n const win = (this as any).ownerDocument?.defaultView || window;\n const host = this as unknown as HTMLElement;\n const hostSet = { ...SwcUtils.getHelperAndHostSet(win, host), $this: this };\n const r = finalOptions.root || 'auto';\n const targetEls: HTMLElement[] = [];\n\n const applyRoot = (t: any) => {\n if (!t || !(t instanceof win.HTMLElement)) return;\n targetEls.push(t);\n };\n\n if (selector === ':parentHost') applyRoot(hostSet.$parentHost);\n else if (selector === ':appHost') applyRoot(hostSet.$appHost);\n else if (selector === ':firstHost') applyRoot(hostSet.$firstHost);\n else if (selector === ':lastHost') applyRoot(hostSet.$lastHost);\n else if (selector === ':firstAppHost') applyRoot(hostSet.$firstAppHost);\n else if (selector === ':lastAppHost') applyRoot(hostSet.$lastAppHost);\n else if (selector === ':hosts') hostSet.$hosts.forEach(applyRoot);\n else if (selector === ':appHosts') hostSet.$appHosts.forEach(applyRoot);\n else if (selector === ':host' || !selector) applyRoot(host);\n else {\n const targetRoot = r === 'auto' ? (host.shadowRoot || host) : (r === 'shadow' ? host.shadowRoot : host);\n if (targetRoot) {\n const found = targetRoot.querySelectorAll(selector);\n if (found) targetEls.push(...(Array.from(found) as HTMLElement[]));\n }\n }\n\n targetEls.forEach(targetEl => {\n const resolvedRes = typeof res === 'function' ? (res as any)(targetEl, hostSet) : res;\n\n if (action === 'set' || action === 'update') {\n if (attributeName) {\n // Case: @setAttribute(selector, 'name')\n if (resolvedRes === null || resolvedRes === undefined || resolvedRes === false) {\n targetEl.removeAttribute(attributeName);\n } else {\n targetEl.setAttribute(attributeName, resolvedRes === true ? '' : String(resolvedRes));\n }\n } else if (typeof resolvedRes === 'object' && resolvedRes !== null && !Array.isArray(resolvedRes)) {\n // Case: @applyAttribute(selector) with Object return\n Object.entries(resolvedRes as any).forEach(([attr, val]) => {\n const finalVal = typeof val === 'function' ? val(targetEl, hostSet) : val;\n if (finalVal === null || finalVal === undefined || finalVal === false) {\n targetEl.removeAttribute(attr);\n } else {\n targetEl.setAttribute(attr, finalVal === true ? '' : String(finalVal));\n }\n });\n }\n } else if (action === 'remove') {\n if (attributeName) {\n targetEl.removeAttribute(attributeName);\n } else if (typeof resolvedRes === 'object' && resolvedRes !== null && !Array.isArray(resolvedRes)) {\n Object.entries(resolvedRes as any).forEach(([attr, val]) => {\n const shouldRemove = typeof val === 'function' ? val(targetEl, hostSet) : !!val;\n if (shouldRemove) targetEl.removeAttribute(attr);\n });\n } else {\n const attrs = Array.isArray(resolvedRes) ? resolvedRes : [resolvedRes];\n attrs.forEach(a => targetEl.removeAttribute(String(a)));\n }\n }\n });\n }\n return res;\n };\n return descriptor;\n };\n };\n}\n\nexport function applyAttribute(selector: string, action: AttributeAction = 'update', options: AttributeApplyOptions = {}): MethodDecorator {\n return createAttributeDecorator(action)(selector, options);\n}\n\nexport const setAttribute = (selector: string, nameOrOptions?: string | AttributeApplyOptions, options: AttributeApplyOptions = {}) => createAttributeDecorator('set')(selector, nameOrOptions, options);\nexport const updateAttribute = (selector: string, nameOrOptions?: string | AttributeApplyOptions, options: AttributeApplyOptions = {}) => createAttributeDecorator('update')(selector, nameOrOptions, options);\nexport const removeAttribute = (selector: string, nameOrOptions?: string | AttributeApplyOptions, options: AttributeApplyOptions = {}) => createAttributeDecorator('remove')(selector, nameOrOptions, options);\n\n// Host versions\nexport function applyAttributeHost(action: AttributeAction = 'update', options: AttributeApplyOptions = {}): MethodDecorator {\n return createAttributeDecorator(action)(':host', options);\n}\nexport const setAttributeHost = (nameOrOptions: string | AttributeApplyOptions, options: AttributeApplyOptions = {}) => createAttributeDecorator('set')(':host', nameOrOptions, options);\nexport const updateAttributeHost = (nameOrOptions: string | AttributeApplyOptions, options: AttributeApplyOptions = {}) => createAttributeDecorator('update')(':host', nameOrOptions, options);\nexport const removeAttributeHost = (nameOrOptions?: string | AttributeApplyOptions, options: AttributeApplyOptions = {}) => createAttributeDecorator('remove')(':host', nameOrOptions, options);\n\nexport const findAllAttributeApplyMetadata = (target: any): Map<string | symbol, AttributeApplyMetadata> => {\n const result = new Map<string | symbol, AttributeApplyMetadata>();\n const maps = ReflectUtils.findAllMetadata<Map<string | symbol, AttributeApplyMetadata>>(ATTRIBUTE_APPLY_METADATA_KEY, target);\n maps.forEach(map => {\n if (map instanceof Map) {\n map.forEach((v, k) => result.set(k, v));\n }\n });\n return result;\n};\n", "import { ReflectUtils } from '@dooboostore/core';\nimport { ensureInit } from './elementDefine';\nimport { SwcUtils } from '../utils/Utils';\nimport { SwcQueryOptions } from '../types';\n\nexport interface PropertySetOptions extends SwcQueryOptions {\n name?: string;\n}\n\nexport interface PropertySetMetadata {\n propertyKey: string | symbol;\n selector: string;\n options: PropertySetOptions;\n}\n\nexport const PROPERTY_SET_METADATA_KEY = Symbol.for('simple-web-component:property-set');\n\nexport const setProperty = (selector: string, propertyNameOrOptions?: string | PropertySetOptions, options: PropertySetOptions = {}): MethodDecorator => {\n return (target: Object, propertyKey: string | symbol, descriptor: PropertyDescriptor) => {\n const constructor = target.constructor;\n let metaList = ReflectUtils.getOwnMetadata(PROPERTY_SET_METADATA_KEY, constructor) as Map<string | symbol, PropertySetMetadata>;\n if (!metaList) {\n metaList = new Map<string | symbol, PropertySetMetadata>();\n ReflectUtils.defineMetadata(PROPERTY_SET_METADATA_KEY, metaList, constructor);\n }\n\n let propertyName = typeof propertyNameOrOptions === 'string' ? propertyNameOrOptions : undefined;\n let finalOptions = options;\n \n if (typeof propertyNameOrOptions === 'object' && propertyNameOrOptions !== null) {\n finalOptions = propertyNameOrOptions as PropertySetOptions;\n }\n\n metaList.set(propertyKey, { \n propertyKey, \n selector, \n options: { ...finalOptions, name: propertyName } \n });\n\n const original = descriptor.value;\n descriptor.value = async function (...args: any[]) {\n ensureInit(this);\n const res = await (original as any).apply(this, args);\n if (res !== undefined) {\n const win = (this as any).ownerDocument?.defaultView || window;\n const host = this as unknown as HTMLElement;\n const hostSet = { ...SwcUtils.getHelperAndHostSet(win, host), $this: this };\n const r = finalOptions.root || 'auto';\n const targetEls: HTMLElement[] = [];\n\n const applyRoot = (t: any) => {\n if (!t || !(t instanceof win.HTMLElement)) return;\n targetEls.push(t);\n };\n\n if (selector === ':parentHost') applyRoot(hostSet.$parentHost);\n else if (selector === ':appHost') applyRoot(hostSet.$appHost);\n else if (selector === ':firstHost') applyRoot(hostSet.$firstHost);\n else if (selector === ':lastHost') applyRoot(hostSet.$lastHost);\n else if (selector === ':firstAppHost') applyRoot(hostSet.$firstAppHost);\n else if (selector === ':lastAppHost') applyRoot(hostSet.$lastAppHost);\n else if (selector === ':hosts') hostSet.$hosts.forEach(applyRoot);\n else if (selector === ':appHosts') hostSet.$appHosts.forEach(applyRoot);\n else if (selector === ':host' || !selector) applyRoot(host);\n else {\n const targetRoot = r === 'auto' ? (host.shadowRoot || host) : (r === 'shadow' ? host.shadowRoot : host);\n if (targetRoot) {\n const found = targetRoot.querySelectorAll(selector);\n if (found) targetEls.push(...(Array.from(found) as HTMLElement[]));\n }\n }\n\n targetEls.forEach(targetEl => {\n const resolvedRes = typeof res === 'function' ? (res as any)(targetEl, hostSet) : res;\n\n if (propertyName) {\n // Case: @setProperty(selector, 'propertyName')\n (targetEl as any)[propertyName] = resolvedRes;\n } else if (typeof resolvedRes === 'object' && resolvedRes !== null && !Array.isArray(resolvedRes)) {\n // Case: @setProperty(selector) with Object return - assign multiple properties\n Object.entries(resolvedRes as any).forEach(([prop, val]) => {\n const finalVal = typeof val === 'function' ? val(targetEl, hostSet) : val;\n (targetEl as any)[prop] = finalVal;\n });\n } else {\n // Simple value - assign to 'value' property by default\n (targetEl as any).value = resolvedRes;\n }\n });\n }\n };\n };\n};\n\nexport const setPropertyHost = (propertyNameOrOptions?: string | PropertySetOptions, options: PropertySetOptions = {}): MethodDecorator => {\n return setProperty(':host', propertyNameOrOptions, options);\n};\n", "import { ReflectUtils } from '@dooboostore/core';\nimport { Router } from '@dooboostore/core-web';\n\nexport const SUBSCRIBE_SWC_APP_ROUTE_CHANGE_METADATA_KEY = Symbol.for('simple-web-component:subscribe-swc-app-route-change');\n\nexport interface SwcAppRouteChangeSubscriberMetadata {\n propertyKey: string | symbol;\n pathPattern?: string | string[];\n filter?: (router: Router) => boolean;\n}\n\nexport interface SwcAppRouteChangeOptions {\n path?: string | string[];\n filter?: (router: Router) => boolean;\n}\n\nfunction createSwcAppRouteChangeSubscriber(options?: SwcAppRouteChangeOptions): MethodDecorator {\n return (target: Object, propertyKey: string | symbol, descriptor?: PropertyDescriptor) => {\n const pathPattern = options?.path;\n const filter = options?.filter;\n\n const constructor = target.constructor;\n let list = ReflectUtils.getOwnMetadata(SUBSCRIBE_SWC_APP_ROUTE_CHANGE_METADATA_KEY, constructor) as SwcAppRouteChangeSubscriberMetadata[];\n if (!list) {\n list = [];\n ReflectUtils.defineMetadata(SUBSCRIBE_SWC_APP_ROUTE_CHANGE_METADATA_KEY, list, constructor);\n }\n list.push({ propertyKey, pathPattern, filter });\n \n return descriptor;\n };\n}\n\n// \uC624\uBC84\uB85C\uB4DC \uC2DC\uADF8\uB2C8\uCC98 - \uC9C1\uC811 \uC0AC\uC6A9 (\uAD04\uD638 \uC5C6\uC74C)\nexport function subscribeSwcAppRouteChange(target: Object, propertyKey: string | symbol, descriptor: PropertyDescriptor): PropertyDescriptor | void;\n// \uC624\uBC84\uB85C\uB4DC \uC2DC\uADF8\uB2C8\uCC98 - \uD568\uC218 \uD638\uCD9C (\uAD04\uD638 \uC788\uC74C)\nexport function subscribeSwcAppRouteChange(): MethodDecorator;\nexport function subscribeSwcAppRouteChange(pathPattern: string): MethodDecorator;\nexport function subscribeSwcAppRouteChange(pathPatterns: string[]): MethodDecorator;\nexport function subscribeSwcAppRouteChange(options: SwcAppRouteChangeOptions): MethodDecorator;\n\n// \uC2E4\uC81C \uAD6C\uD604 (\uC774\uC911 \uBAA8\uB4DC)\nexport function subscribeSwcAppRouteChange(targetOrOptions?: any, propertyKey?: string | symbol, descriptor?: PropertyDescriptor): any {\n // \uC9C1\uC811 \uB370\uCF54\uB808\uC774\uD130\uB85C \uC0AC\uC6A9\uB41C \uACBD\uC6B0 (\uAD04\uD638 \uC5C6\uC74C): @subscribeSwcAppRouteChange\n // propertyKey\uAC00 string | symbol\uC774\uACE0 descriptor\uAC00 \uC788\uC73C\uBA74 \uC9C1\uC811 \uC0AC\uC6A9\n if (propertyKey && (typeof propertyKey === 'string' || typeof propertyKey === 'symbol')) {\n return createSwcAppRouteChangeSubscriber({})(targetOrOptions, propertyKey, descriptor);\n }\n \n // \uD568\uC218\uB85C \uD638\uCD9C\uB41C \uACBD\uC6B0 (\uAD04\uD638 \uC788\uC74C): @subscribeSwcAppRouteChange() / @subscribeSwcAppRouteChange('/path')\n let options: SwcAppRouteChangeOptions = {};\n\n if (Array.isArray(targetOrOptions)) {\n // \uBC30\uC5F4: @subscribeSwcAppRouteChange(['/path1', '/path2'])\n options.path = targetOrOptions;\n } else if (typeof targetOrOptions === 'string') {\n // \uBB38\uC790\uC5F4: @subscribeSwcAppRouteChange('/path')\n options.path = targetOrOptions;\n } else if (targetOrOptions && typeof targetOrOptions === 'object') {\n // \uAC1D\uCCB4: @subscribeSwcAppRouteChange({ path: '/path', filter: ... })\n options = targetOrOptions;\n }\n\n return createSwcAppRouteChangeSubscriber(options);\n}\n\n// Helper function to retrieve route change subscribers metadata\nexport const getSubscribeSwcAppRouteChangeMetadata = (target: any): SwcAppRouteChangeSubscriberMetadata[] | undefined => {\n const constructor = target instanceof Function ? target : target.constructor;\n return ReflectUtils.getOwnMetadata(SUBSCRIBE_SWC_APP_ROUTE_CHANGE_METADATA_KEY, constructor);\n};\n", "import { SwcAppInterface, HostSet, HelperSet, HelperHostSet } from '../types';\nimport {getElementConfig} from \"../decorators\";\n\nexport const SWC_NOT_FOUND = Symbol.for('simple-web-component:not-found');\n\n// DOM Creation Utilities\nexport const htmlFragment = (html: string, doc?: Document): DocumentFragment => {\n const d = doc || (typeof document !== 'undefined' ? document : undefined);\n if (!d) throw new Error('Document is not available');\n const template = d.createElement('template');\n template.innerHTML = html.trim();\n return template.content;\n};\n\nexport const textNode = (text: string | any, doc?: Document): Text => {\n const d = doc || (typeof document !== 'undefined' ? document : undefined);\n if (!d) throw new Error('Document is not available');\n return d.createTextNode(text !== undefined && text !== null ? String(text) : '');\n};\n\nexport const commentNode = (comment: string | any, doc?: Document): Comment => {\n const d = doc || (typeof document !== 'undefined' ? document : undefined);\n if (!d) throw new Error('Document is not available');\n return d.createComment(comment !== undefined && comment !== null ? String(comment) : '');\n};\n\nexport const createElement = <T extends HTMLElement>(\n tagName: string,\n options?: { html?: string; attrs?: Record<string, any>; doc?: Document }\n): T => {\n const d = options?.doc || (typeof document !== 'undefined' ? document : undefined);\n if (!d) throw new Error('Document is not available');\n const el = d.createElement(tagName) as T;\n if (options?.html) el.innerHTML = options.html;\n if (options?.attrs) {\n Object.entries(options.attrs).forEach(([k, v]) => el.setAttribute(k, String(v)));\n }\n return el;\n};\n\n// Element factory functions\nexport const htmlDivElement = (html: string, options?: { doc?: Document; attrs?: Record<string, any> }): HTMLDivElement => {\n const d = options?.doc || (typeof document !== 'undefined' ? document : undefined);\n if (!d) throw new Error('Document is not available');\n const el = d.createElement('div') as HTMLDivElement;\n el.innerHTML = html.trim();\n if (options?.attrs) {\n Object.entries(options.attrs).forEach(([k, v]) => el.setAttribute(k, String(v)));\n }\n return el;\n};\n\nexport const htmlSpanElement = (html: string, options?: { doc?: Document; attrs?: Record<string, any> }): HTMLSpanElement => {\n const d = options?.doc || (typeof document !== 'undefined' ? document : undefined);\n if (!d) throw new Error('Document is not available');\n const el = d.createElement('span') as HTMLSpanElement;\n el.innerHTML = html.trim();\n if (options?.attrs) {\n Object.entries(options.attrs).forEach(([k, v]) => el.setAttribute(k, String(v)));\n }\n return el;\n};\n\nexport const htmlButtonElement = (html: string, options?: { doc?: Document; attrs?: Record<string, any> }): HTMLButtonElement => {\n const d = options?.doc || (typeof document !== 'undefined' ? document : undefined);\n if (!d) throw new Error('Document is not available');\n const el = d.createElement('button') as HTMLButtonElement;\n el.innerHTML = html.trim();\n if (options?.attrs) {\n Object.entries(options.attrs).forEach(([k, v]) => el.setAttribute(k, String(v)));\n }\n return el;\n};\n\nexport const htmlUlElement = (options?: { doc?: Document; attrs?: Record<string, any> }): HTMLUListElement => {\n const d = options?.doc || (typeof document !== 'undefined' ? document : undefined);\n if (!d) throw new Error('Document is not available');\n const el = d.createElement('ul') as HTMLUListElement;\n if (options?.attrs) {\n Object.entries(options.attrs).forEach(([k, v]) => el.setAttribute(k, String(v)));\n }\n return el;\n};\n\nexport const htmlLiElement = (html: string, options?: { doc?: Document; attrs?: Record<string, any> }): HTMLLIElement => {\n const d = options?.doc || (typeof document !== 'undefined' ? document : undefined);\n if (!d) throw new Error('Document is not available');\n const el = d.createElement('li') as HTMLLIElement;\n el.innerHTML = html.trim();\n if (options?.attrs) {\n Object.entries(options.attrs).forEach(([k, v]) => el.setAttribute(k, String(v)));\n }\n return el;\n};\n\nexport const htmlAElement = (html: string, options?: { href?: string; doc?: Document; attrs?: Record<string, any> }): HTMLAnchorElement => {\n const d = options?.doc || (typeof document !== 'undefined' ? document : undefined);\n if (!d) throw new Error('Document is not available');\n const el = d.createElement('a') as HTMLAnchorElement;\n el.innerHTML = html.trim();\n if (options?.href) el.href = options.href;\n if (options?.attrs) {\n Object.entries(options.attrs).forEach(([k, v]) => el.setAttribute(k, String(v)));\n }\n return el;\n};\n\nexport const htmlPElement = (html: string, options?: { doc?: Document; attrs?: Record<string, any> }): HTMLParagraphElement => {\n const d = options?.doc || (typeof document !== 'undefined' ? document : undefined);\n if (!d) throw new Error('Document is not available');\n const el = d.createElement('p') as HTMLParagraphElement;\n el.innerHTML = html.trim();\n if (options?.attrs) {\n Object.entries(options.attrs).forEach(([k, v]) => el.setAttribute(k, String(v)));\n }\n return el;\n};\n\nexport const htmlHeadingElement = (level: 1 | 2 | 3 | 4 | 5 | 6, html: string, options?: { doc?: Document; attrs?: Record<string, any> }): HTMLHeadingElement => {\n const d = options?.doc || (typeof document !== 'undefined' ? document : undefined);\n if (!d) throw new Error('Document is not available');\n const el = d.createElement(`h${level}`) as HTMLHeadingElement;\n el.innerHTML = html.trim();\n if (options?.attrs) {\n Object.entries(options.attrs).forEach(([k, v]) => el.setAttribute(k, String(v)));\n }\n return el;\n};\n\nexport const htmlSectionElement = (options?: { doc?: Document; attrs?: Record<string, any> }): HTMLElement => {\n const d = options?.doc || (typeof document !== 'undefined' ? document : undefined);\n if (!d) throw new Error('Document is not available');\n const el = d.createElement('section');\n if (options?.attrs) {\n Object.entries(options.attrs).forEach(([k, v]) => el.setAttribute(k, String(v)));\n }\n return el;\n};\n\nexport const htmlArticleElement = (options?: { doc?: Document; attrs?: Record<string, any> }): HTMLElement => {\n const d = options?.doc || (typeof document !== 'undefined' ? document : undefined);\n if (!d) throw new Error('Document is not available');\n const el = d.createElement('article');\n if (options?.attrs) {\n Object.entries(options.attrs).forEach(([k, v]) => el.setAttribute(k, String(v)));\n }\n return el;\n};\n\nexport namespace SwcUtils {\n export const getHelperSet = (win: Window): HelperSet => {\n const doc: Document = win.document;\n return {\n $d: doc,\n $w: win,\n $q: (sel: string, root?: Element | Document | ShadowRoot) => (root ?? doc).querySelector(sel),\n $qa: (sel: string, root?: Element | Document | ShadowRoot) => Array.from((root ?? doc).querySelectorAll(sel)) as HTMLElement[],\n $qi: (id: string, root?: Document | ShadowRoot) => (root ?? doc).getElementById(id) as HTMLElement\n } as const;\n };\n\n export const getHelperAndHostSet = (win: Window, el: HTMLElement): HelperHostSet => {\n const helperSet = getHelperSet(win);\n const hostSet = getHostSet(el);\n return {\n ...helperSet,\n ...hostSet\n };\n };\n\n export const getValueByPath = (obj: any, path: string, rootName: string) => {\n if (!obj || !path) return SWC_NOT_FOUND;\n\n const parts = path.split('.');\n let current = obj;\n\n for (const part of parts) {\n if (current === null || current === undefined) return SWC_NOT_FOUND;\n current = current[part];\n }\n return current;\n };\n\n /**\n * Finds the nearest logical SWC host for an element.\n * Checks __swc_host property first, then climbs the DOM tree.\n */\n export const findNearestSwcHost = (el: HTMLElement | Node): HTMLElement | undefined => {\n if ((el as any).__swc_host) return (el as any).__swc_host;\n // if ((el as any).__swc_proto_setup) return (el as any).__swc_proto_setup;\n\n let current: any = el.parentElement || (el.getRootNode?.() as any)?.host;\n const doc = el.ownerDocument;\n const win = doc?.defaultView || ((typeof window !== 'undefined' ? window : undefined) as any);\n while (current && current !== doc && current !== win) {\n if (current.__swc_host) return current.__swc_host;\n if (getElementConfig(current)) return current as HTMLElement;\n current = current.parentElement || (current.getRootNode?.() as any)?.host;\n }\n return undefined;\n };\n\n /**\n * Returns all SWC ancestors (excluding self) in [root, ..., parent] order.\n */\n export const findAllSwcHosts = (el: HTMLElement | Node): HTMLElement[] => {\n const hosts: HTMLElement[] = [];\n let current = findNearestSwcHost(el);\n while (current) {\n hosts.push(current);\n // To find the next ancestor, we must start searching from the PARENT of the found host\n current = findNearestSwcHost(current);\n }\n return hosts.reverse();\n };\n\n export const getHosts = (el: HTMLElement): HTMLElement[] => {\n const ancestors = findAllSwcHosts(el);\n if (getElementConfig(el)) return [...ancestors, el];\n return ancestors;\n };\n\n export const getHost = (el: HTMLElement): HTMLElement | undefined => {\n if (getElementConfig(el)) return el;\n return findNearestSwcHost(el);\n };\n\n export const getAppHosts = (el: HTMLElement): SwcAppInterface[] => {\n const hosts = getHosts(el);\n return hosts.filter(host => host.tagName.toLowerCase() === 'swc-app' || host.getAttribute('is')?.startsWith('swc-app-')) as SwcAppInterface[];\n };\n\n export const getAppHost = (el: HTMLElement): SwcAppInterface | undefined => {\n const appHosts = getAppHosts(el);\n const appHostsWithoutSelf = appHosts.filter(h => h !== el);\n return appHostsWithoutSelf.length > 0 ? appHostsWithoutSelf[appHostsWithoutSelf.length - 1] : undefined;\n };\n\n /**\n * Find parent app host by traversing DOM tree directly.\n * Only checks tagName and is attribute - no SWC host discovery.\n * Useful for Safari polyfill compatibility where is=\"\" elements upgrade in child-first order.\n */\n export const findParentAppHostDirect = (el: HTMLElement): SwcAppInterface | null => {\n const appHosts = findAllParentAppHostsDirect(el);\n return appHosts.length > 0 ? appHosts[appHosts.length - 1] : null;\n };\n\n /**\n * Find all parent app hosts by traversing DOM tree directly.\n * Returns array of all parent app hosts in [closest-parent, ..., root] order.\n * Only checks tagName and is attribute - no SWC host discovery.\n * Useful for Safari polyfill compatibility where is=\"\" elements upgrade in child-first order.\n */\n export const findAllParentAppHostsDirect = (el: HTMLElement): SwcAppInterface[] => {\n const appHosts: SwcAppInterface[] = [];\n \n // Shadow DOM \uB0B4\uBD80\uC758 depth\uB97C \uC815\uC0C1\uC801\uC73C\uB85C \uD0D0\uC0C9\uD558\uAE30 \uC704\uD574\n // el.parentElement\uBD80\uD130 \uC2DC\uC791\uD558\uACE0, shadow root \uACBD\uACC4\uB97C \uB9CC\uB0A0 \uB54C\uB9CC host\uB85C \uC774\uB3D9\n let current: HTMLElement | null = el.parentElement;\n \n while (current) {\n // console.log('vvvvvvv');\n // alert(1)\n // debugger;\n const isAppHost =\n current.tagName.toLowerCase() === 'swc-app' || \n current.getAttribute('is')?.startsWith('swc-app-');\n if (isAppHost) {\n appHosts.push(current as SwcAppInterface);\n }\n // Handle shadow DOM\n if (current.shadowRoot) {\n current = ((current.shadowRoot as any).host as HTMLElement).parentElement;\n } else {\n // \uBD80\uBAA8\uAC00 \uC5C6\uC73C\uBA74 shadow root \uACBD\uACC4\uC77C \uC218 \uC788\uC74C\n if (!current.parentElement) {\n const parentNode = current.parentNode;\n if (parentNode instanceof ShadowRoot) {\n current = (parentNode as any).host as HTMLElement;\n } else {\n break;\n }\n } else {\n current = current.parentElement;\n }\n }\n }\n return appHosts.reverse(); // [root, ..., closest-parent]\n };\n\n export const getHostSet = (el: HTMLElement): HostSet => {\n const isSwc = !!getElementConfig(el);\n const ancestors = findAllSwcHosts(el); // [root, ..., parent]\n\n let $host: HTMLElement;\n let $parentHost: HTMLElement | null;\n\n if (isSwc) {\n $host = el;\n $parentHost = ancestors.length > 0 ? ancestors[ancestors.length - 1] : null;\n } else {\n $host = ancestors.length > 0 ? ancestors[ancestors.length - 1] : el;\n $parentHost = ancestors.length > 1 ? ancestors[ancestors.length - 2] : null;\n }\n\n const $hosts = isSwc ? [...ancestors, el] : ancestors;\n const $firstHost = $hosts.length > 0 ? $hosts[0] : null;\n\n // Collect loop contexts\n const loopContext: Record<string, any> = {};\n let curr: any = el;\n const rootEl = el.ownerDocument?.documentElement;\n while (curr && curr !== rootEl) {\n if (curr.__swc_loop_context) {\n Object.assign(loopContext, curr.__swc_loop_context);\n }\n curr = curr.parentElement || (curr.getRootNode() as any).host;\n }\n\n const $appHosts = SwcUtils.findAllParentAppHostsDirect(el); //$hosts.filter(h => h.tagName.toLowerCase() === 'swc-app' || h.getAttribute('is')?.startsWith('swc-app-')) as SwcAppInterface[];\n // console.log('apphosts00000000', $appHosts)\n const $appHost = $appHosts.length > 0 ? ($appHosts[$appHosts.length - 1] === el ? ($appHosts.length > 1 ? $appHosts[$appHosts.length - 2] : null) : $appHosts[$appHosts.length - 1]) : null;\n const $firstAppHost = $appHosts.length > 0 ? $appHosts[0] : null;\n\n return {\n $host,\n $parentHost,\n $hosts,\n $firstHost,\n $lastHost: $parentHost,\n $appHost,\n $appHosts,\n $firstAppHost,\n $lastAppHost: $appHost,\n ...loopContext\n } as any;\n };\n\n export const parsePathPattern = (pattern: string | undefined, currentPath: string): { [key: string]: string } | null => {\n // pattern\uC774 null/undefined\uBA74 \uC640\uC77C\uB4DC\uCE74\uB4DC (\uBAA8\uB4E0 \uACBD\uB85C \uB9E4\uCE6D)\n if (pattern === null || pattern === undefined) return {};\n \n // \uACF5\uBC31\uB9CC \uC788\uB294 \uD328\uD134\uB3C4 \uC640\uC77C\uB4DC\uCE74\uB4DC\n const trimmedPattern = pattern.trim();\n if (trimmedPattern === '' && pattern !== '') return {}; // \uACF5\uBC31 \uBB38\uC790\uB9CC \uC788\uB294 \uACBD\uC6B0\n \n // \uD328\uD134\uC744 \uC815\uADDC\uC2DD\uC73C\uB85C \uBCC0\uD658\n // \uC9C0\uC6D0 \uD615\uC2DD:\n // {id} \u2192 ([^/]+) \uAE30\uBCF8 (/ \uC81C\uC678\uD55C \uBAA8\uB4E0 \uBB38\uC790)\n // {tail:.*} \u2192 (.*) \uC815\uADDC\uD45C\uD604\uC2DD \uC9C1\uC811 \uC9C0\uC815\n // {slug:[a-z0-9-]+} \u2192 ([a-z0-9-]+)\n const paramNames: string[] = [];\n const regexPattern = trimmedPattern.replace(/{(\\w+)(?::(.+?))?}/g, (match, paramName, customRegex) => {\n paramNames.push(paramName);\n // customRegex\uAC00 \uC788\uC73C\uBA74 \uC0AC\uC6A9, \uC5C6\uC73C\uBA74 \uAE30\uBCF8\uAC12 ([^/]+)\n return `(${customRegex || '[^/]+'})`;\n });\n \n const regex = new RegExp(`^${regexPattern}$`);\n const match = currentPath.match(regex);\n \n if (!match) return null;\n \n const result: { [key: string]: string } = {};\n paramNames.forEach((name, index) => {\n result[name] = match[index + 1];\n });\n \n return result;\n };\n}\n", "import { ReflectUtils } from '@dooboostore/core';\nimport { SpecialSelector, SwcQueryOptions } from '../types';\nimport { ensureInit, getElementConfig } from './elementDefine';\nimport { SwcUtils } from '../utils/Utils';\n\nexport interface EmitCustomEventBaseOptions {\n bubbles?: boolean;\n composed?: boolean;\n cancelable?: boolean;\n}\n\nexport interface EmitCustomEventMetadata {\n propertyKey: string | symbol;\n selector: string;\n type: string;\n options: (EmitCustomEventBaseOptions & SwcQueryOptions) | (EmitCustomEventBaseOptions & SwcQueryOptions & { attributeName?: string });\n}\n\nexport const EMIT_CUSTOM_EVENT_METADATA_KEY = Symbol.for('simple-web-component:emit-custom-event');\nexport function emitCustomEvent(target: SpecialSelector, type: string, options?: EmitCustomEventBaseOptions): MethodDecorator;\nexport function emitCustomEvent(selector: string, type: string, options?: EmitCustomEventBaseOptions & SwcQueryOptions): MethodDecorator;\n/**\n * @emitCustomEvent decorator to dispatch custom events to a target.\n */\nexport function emitCustomEvent(selectorOrTarget: string, type: string, options: any = {}): MethodDecorator {\n return (targetObj: Object, propertyKey: string | symbol, descriptor: PropertyDescriptor) => {\n const constructor = targetObj.constructor;\n\n const fullOptions: any = { ...options, type };\n\n if (fullOptions.bubbles === undefined) fullOptions.bubbles = true;\n if (fullOptions.composed === undefined) fullOptions.composed = true;\n\n let list = ReflectUtils.getMetadata<EmitCustomEventMetadata[]>(EMIT_CUSTOM_EVENT_METADATA_KEY, constructor);\n if (!list) {\n list = [];\n ReflectUtils.defineMetadata(EMIT_CUSTOM_EVENT_METADATA_KEY, list, constructor);\n }\n list.push({ propertyKey, selector: selectorOrTarget, type, options: fullOptions });\n\n const original = descriptor.value;\n descriptor.value = async function (...args: any[]) {\n ensureInit(this);\n const detail = await original.apply(this, args);\n const event = new CustomEvent(type, {\n detail,\n bubbles: fullOptions.bubbles,\n composed: fullOptions.composed,\n cancelable: fullOptions.cancelable\n });\n\n const hostSet = SwcUtils.getHostSet(this as any);\n const conf = getElementConfig(this);\n const currentWin = (this as any)._resolveWindow?.(conf) || ((typeof window !== 'undefined' ? window : undefined) as Window);\n // console.log('emitEEEEEEEEEEE', hostSet);\n\n const eventTargets: EventTarget[] = [];\n if (selectorOrTarget === ':window') eventTargets.push(currentWin);\n else if (selectorOrTarget === ':document') eventTargets.push(currentWin.document);\n else if (selectorOrTarget === ':parentHost') {\n if (hostSet.$parentHost) eventTargets.push(hostSet.$parentHost);\n } else if (selectorOrTarget === ':appHost') {\n if (hostSet.$appHost) eventTargets.push(hostSet.$appHost);\n } else if (selectorOrTarget === ':firstHost') {\n if (hostSet.$firstHost) eventTargets.push(hostSet.$firstHost);\n } else if (selectorOrTarget === ':lastHost') {\n if (hostSet.$lastHost) eventTargets.push(hostSet.$lastHost);\n } else if (selectorOrTarget === ':firstAppHost') {\n if (hostSet.$firstAppHost) eventTargets.push(hostSet.$firstAppHost);\n } else if (selectorOrTarget === ':lastAppHost') {\n if (hostSet.$lastAppHost) eventTargets.push(hostSet.$lastAppHost);\n } else if (selectorOrTarget === ':hosts') {\n hostSet.$hosts.forEach(h => eventTargets.push(h));\n } else if (selectorOrTarget === ':appHosts') {\n hostSet.$appHosts.forEach(h => eventTargets.push(h));\n } else if (selectorOrTarget === ':host' || !selectorOrTarget) eventTargets.push(this as any);\n else {\n const r = fullOptions.root || 'auto';\n const searchRoots: (HTMLElement | ShadowRoot)[] = [];\n if (r === 'auto') searchRoots.push(this.shadowRoot || (this as any));\n else if (r === 'light') searchRoots.push(this as any);\n else if (r === 'shadow' && this.shadowRoot) searchRoots.push(this.shadowRoot);\n else if (r === 'all') {\n searchRoots.push(this as any);\n if (this.shadowRoot) searchRoots.push(this.shadowRoot);\n }\n\n searchRoots.forEach(sr => {\n sr.querySelectorAll(selectorOrTarget).forEach(el => eventTargets.push(el));\n });\n }\n\n eventTargets.forEach(t => t.dispatchEvent(event));\n return detail;\n };\n };\n}\n\nexport const getEmitCustomEventMetadataList = (target: any): EmitCustomEventMetadata[] | undefined => {\n const constructor = target instanceof Function ? target : target.constructor;\n return ReflectUtils.getMetadata(EMIT_CUSTOM_EVENT_METADATA_KEY, constructor);\n};\n\n/**\n * @emitCustomEventHost decorator - simplified version of @emitCustomEvent for :host selector\n * Usage: @emitCustomEventHost('navigate') // default attributeName: 'on-emit-navigate'\n * Usage: @emitCustomEventHost('navigate', { attributeName: 'on-navigate' })\n * \n * The attributeName option is used to automatically observe attributes for this event.\n * For example, { attributeName: 'on-navigate' } will add 'on-navigate' to observedAttributes.\n */\nexport function emitCustomEventHost(type: string, options: EmitCustomEventBaseOptions & SwcQueryOptions & { attributeName?: string } = {}): MethodDecorator {\n if (!options.attributeName) {\n options.attributeName = `on-emit-${type}`;\n }\n return emitCustomEvent(':host', type, options);\n}\n", "export const HTML_TAG_ENTRIES: [string, string][] = [\n ['HTMLAnchorElement', 'a'],\n ['HTMLAreaElement', 'area'],\n ['HTMLAudioElement', 'audio'],\n ['HTMLBaseElement', 'base'],\n ['HTMLButtonElement', 'button'],\n ['HTMLCanvasElement', 'canvas'],\n ['HTMLDataElement', 'data'],\n ['HTMLDataListElement', 'datalist'],\n ['HTMLDetailsElement', 'details'],\n ['HTMLDialogElement', 'dialog'],\n ['HTMLDivElement', 'div'],\n ['HTMLDListElement', 'dl'],\n ['HTMLEmbedElement', 'embed'],\n ['HTMLFieldSetElement', 'fieldset'],\n ['HTMLFormElement', 'form'],\n ['HTMLHRElement', 'hr'],\n ['HTMLIFrameElement', 'iframe'],\n ['HTMLImageElement', 'img'],\n ['HTMLInputElement', 'input'],\n ['HTMLLabelElement', 'label'],\n ['HTMLLegendElement', 'legend'],\n ['HTMLLIElement', 'li'],\n ['HTMLLinkElement', 'link'],\n ['HTMLMapElement', 'map'],\n ['HTMLMetaElement', 'meta'],\n ['HTMLMeterElement', 'meter'],\n ['HTMLModElement', 'del'],\n ['HTMLObjectElement', 'object'],\n ['HTMLOListElement', 'ol'],\n ['HTMLOptGroupElement', 'optgroup'],\n ['HTMLOptionElement', 'option'],\n ['HTMLOutputElement', 'output'],\n ['HTMLParagraphElement', 'p'],\n ['HTMLParamElement', 'param'],\n ['HTMLPictureElement', 'picture'],\n ['HTMLPreElement', 'pre'],\n ['HTMLProgressElement', 'progress'],\n ['HTMLQuoteElement', 'blockquote'],\n ['HTMLScriptElement', 'script'],\n ['HTMLSelectElement', 'select'],\n ['HTMLSlotElement', 'slot'],\n ['HTMLSourceElement', 'source'],\n ['HTMLSpanElement', 'span'],\n ['HTMLStyleElement', 'style'],\n ['HTMLTableElement', 'table'],\n ['HTMLTableSectionElement', 'tbody'],\n ['HTMLTableCellElement', 'td'],\n ['HTMLTemplateElement', 'template'],\n ['HTMLTextAreaElement', 'textarea'],\n ['HTMLTimeElement', 'time'],\n ['HTMLTitleElement', 'title'],\n ['HTMLTableRowElement', 'tr'],\n ['HTMLTrackElement', 'track'],\n ['HTMLUListElement', 'ul'],\n ['HTMLVideoElement', 'video'],\n ['HTMLHeadingElement', 'h1'],\n ['HTMLBodyElement', 'body']\n];\n\nexport const DOM_EVENT_NAMES = ['click', 'dblclick', 'mousedown', 'mouseenter', 'mouseleave', 'mousemove', 'mouseout', 'mouseover', 'mouseup', 'contextmenu', 'keydown', 'keypress', 'keyup', 'blur', 'change', 'focus', 'focusin', 'focusout', 'input', 'invalid', 'reset', 'search', 'select', 'submit', 'drag', 'dragend', 'dragenter', 'dragleave', 'dragover', 'dragstart', 'drop', 'copy', 'cut', 'paste', 'abort', 'canplay', 'canplaythrough', 'durationchange', 'emptied', 'ended', 'error', 'loadeddata', 'loadedmetadata', 'loadstart', 'pause', 'play', 'playing', 'progress', 'ratechange', 'seeked', 'seeking', 'stalled', 'suspend', 'timeupdate', 'volumechange', 'waiting', 'scroll', 'resize', 'load', 'unload', 'hashchange', 'connected'];\n\nexport const BROWSER_GLOBALS = ['window', 'document', 'Node', 'Element', 'HTMLElement', 'DocumentFragment', 'CustomEvent', 'customElements', 'NodeFilter', ...HTML_TAG_ENTRIES.map(([className]) => className)];\n", "import { ConstructorType, MethodKeys } from '@dooboostore/core';\nimport { ReflectUtils } from '@dooboostore/core';\nimport { ExceptionHandlerSituationType } from '../exception/ExceptionDecorator';\nimport { SimpleApplication } from '../../SimpleApplication';\n\nexport enum InjectSituationType {\n INDEX = 'SIMPLE_BOOT_CORE://Inject/INDEX'\n}\n\nexport type SituationType = string | symbol | ConstructorType<any> | InjectSituationType | ExceptionHandlerSituationType;\n\nexport class SituationTypeContainer {\n public situationType: SituationType;\n public data: any;\n public index?: number;\n\n constructor({ situationType, data, index }: { situationType: SituationType; data: any; index?: number }) {\n this.situationType = situationType;\n this.data = data;\n this.index = index;\n }\n}\n\nexport class SituationTypeContainers {\n public containers: SituationTypeContainer[] = [];\n\n constructor(containers?: SituationTypeContainer[]) {\n if (containers) {\n this.containers.push(...containers);\n }\n }\n\n public push(...item: SituationTypeContainer[]) {\n this.containers.push(...item);\n }\n\n get length() {\n return this.containers.length;\n }\n\n find(predicate: (value: SituationTypeContainer, index: number, obj: SituationTypeContainer[]) => unknown, thisArg?: any): SituationTypeContainer | undefined {\n return this.containers.find(predicate);\n }\n}\n\n// [\uC544\uD0A4\uD14D\uD2B8\uB2D8\uC758 \uC815\uC11D] \uC8FC\uC785 \uACF5\uD1B5 \uC635\uC158\ntype InjectOptions = {\n situationType?: SituationType;\n proxy?: ConstructorType<ProxyHandler<any>> | ((caller: { application: SimpleApplication; instance: any }) => ProxyHandler<any>);\n optional?: boolean;\n};\n\n// [\uC544\uD0A4\uD14D\uD2B8\uB2D8\uC758 \uC815\uC11D] 3\uB300 \uC8FC\uC785 \uC804\uB7B5\nexport type InjectBySymbol = {\n symbol: symbol;\n factory?: (caller: { instance?: any; methodName?: string | symbol; parameter: any[]; application: SimpleApplication; injectInstance?: any }) => any;\n};\n\nexport type InjectByType<T> = {\n type?: ConstructorType<T> | Function;\n scheme?: string;\n factory?: (caller: { instance?: any; methodName?: string | symbol; parameter: any[]; application: SimpleApplication; injectInstance?: T }) => any;\n};\n\nexport type InjectByFactory<T> = {\n factory: (caller: { instance?: any; methodName?: string | symbol; parameter: any[]; application: SimpleApplication }) => T;\n};\n\nexport type InjectConfig<T = any> = InjectOptions & (InjectBySymbol | InjectByType<T> | InjectByFactory<T>);\n\n// [\uC544\uD0A4\uD14D\uD2B8\uB2D8\uC758 \uC815\uC11D] Type Guards\nexport const isTargetSymbol = (config: InjectConfig): config is InjectOptions & InjectBySymbol => {\n return 'symbol' in config && config.symbol !== undefined;\n};\n\nexport const isTargetType = (config: InjectConfig): config is InjectOptions & { type: ConstructorType<any> } & InjectByType<any> => {\n return 'type' in config && config.type !== undefined;\n};\n\nexport const isTargetScheme = (config: InjectConfig): config is InjectOptions & { scheme: string } & InjectByType<any> => {\n return 'scheme' in config && config.scheme !== undefined;\n};\n\nexport const isTargetFactory = (config: InjectConfig): config is InjectOptions & InjectByFactory<any> => {\n return 'factory' in config && typeof config.factory === 'function' && !('symbol' in config) && !('type' in config) && !('scheme' in config);\n};\n\nexport const isTargetNone = (config: InjectConfig): boolean => {\n return !('symbol' in config) && !('type' in config) && !('scheme' in config) && !isTargetFactory(config);\n};\n\nexport type SaveInjectConfig = {\n index: number;\n type?: ConstructorType<any>;\n propertyKey?: string | symbol;\n config: InjectConfig;\n};\n\nconst InjectMetadataKey = Symbol.for('simple-boot:inject-metadata');\nconst injectProcess = (config: InjectConfig, target: Object, propertyKey: string | symbol | undefined, parameterIndex: number) => {\n if (propertyKey && typeof target === 'object') {\n const otarget = target;\n target = target.constructor;\n const saves = (Reflect.getOwnMetadata(InjectMetadataKey, target, propertyKey) || []) as SaveInjectConfig[];\n const type = ReflectUtils.getParameterTypes(otarget, propertyKey)[parameterIndex];\n saves.push({ index: parameterIndex, config: config, propertyKey, type });\n ReflectUtils.defineMetadata(InjectMetadataKey, saves, target, propertyKey);\n } else if (!propertyKey || typeof target === 'function') {\n const existingInjectdParameters = (ReflectUtils.getMetadata(InjectMetadataKey, target) || []) as SaveInjectConfig[];\n const type = ReflectUtils.getParameterTypes(target)[parameterIndex];\n existingInjectdParameters.push({ index: parameterIndex, config: config, type });\n ReflectUtils.defineMetadata(InjectMetadataKey, existingInjectdParameters, target);\n }\n};\n\nexport function Inject(target: Object, propertyKey: string | symbol | undefined, parameterIndex: number): void;\nexport function Inject<T = any>(config: InjectConfig<T>): ParameterDecorator;\nexport function Inject<T = any>(configOrTarget: Object | InjectConfig<T>, propertyKey?: string | symbol | undefined, parameterIndex?: number): void | ParameterDecorator {\n if (propertyKey && parameterIndex !== undefined) {\n injectProcess({} as any, configOrTarget, propertyKey, parameterIndex);\n } else {\n return (target: Object, propertyKey: string | symbol | undefined, parameterIndex: number) => {\n injectProcess(configOrTarget as InjectConfig, target, propertyKey, parameterIndex);\n };\n }\n}\n\nexport const getInject = (target: any, propertyKey?: string | symbol): SaveInjectConfig[] => {\n return ReflectUtils.findMetadata(InjectMetadataKey, target, propertyKey) ?? [];\n};\n\n// Alias for @inject (lowercase)\nexport const inject = Inject;\n", "import { SimpleApplication } from '@dooboostore/simple-boot/SimpleApplication';\nimport { Router } from '@dooboostore/core-web';\nimport {SwcAttributeConfigType} from \"./elements/SwcAppEngine\";\n\nexport enum InjectSituationType {\n HOST_SET = 'SIMPLE_WEB_COMPONENT://HOSTSET',\n APP_HOST = 'SIMPLE_WEB_COMPONENT://APPHOST',\n APP_HOSTS = 'SIMPLE_WEB_COMPONENT://APPHOSTS',\n HOST = 'SIMPLE_WEB_COMPONENT://HOST',\n PARENT_HOST = 'SIMPLE_WEB_COMPONENT://PARENTHOST',\n HOSTS = 'SIMPLE_WEB_COMPONENT://HOSTS',\n FIRST_HOST = 'SIMPLE_WEB_COMPONENT://FIRSTHOST',\n LAST_HOST = 'SIMPLE_WEB_COMPONENT://LASTHOST',\n FIRST_APP_HOST = 'SIMPLE_WEB_COMPONENT://FIRSTAPPHOST',\n LAST_APP_HOST = 'SIMPLE_WEB_COMPONENT://LASTAPPHOST'\n}\n\nexport type SwcRootType = 'light' | 'shadow' | 'all' | 'auto';\n\nexport type SpecialSelector = ':host' | ':window' | ':document' | ':parentHost' | ':appHost' | ':firstHost' | ':lastHost' | ':firstAppHost' | ':lastAppHost' | ':hosts' | ':appHosts';\n\nexport type SwcQueryOptions = { root?: SwcRootType };\n\nexport type HelperSet = {\n $d: Document;\n $w: Window;\n $q: (selector: string, root?: Element | Document | ShadowRoot) => HTMLElement | null;\n $qa: (selector: string, root?: Element | Document | ShadowRoot) => HTMLElement[];\n $qi: (id: string, root?: Document | ShadowRoot) => HTMLElement | null;\n};\n\nexport type HostSet = {\n $host: HTMLElement; // Current component itself\n $parentHost: HTMLElement | null; // Nearest parent SWC component\n $hosts: HTMLElement[]; // [root, ..., parent, self]\n $firstHost: HTMLElement | null; // Top-most SWC ancestor\n $lastHost: HTMLElement | null; // Same as $parentHost (for backward compatibility or clarity)\n $appHost: SwcAppInterface | null;\n $appHosts: SwcAppInterface[];\n $firstAppHost: SwcAppInterface | null;\n $lastAppHost: SwcAppInterface | null;\n};\n\nexport type HelperHostSet = HelperSet & HostSet;\n\nexport interface SwcAppInterface extends HTMLElement {\n simpleApplication?: SimpleApplication;\n router?: Router;\n connect(config?: SwcAttributeConfigType): Promise<void>;\n routing(path: string): Promise<void>;\n reload(): void;\n back(): void;\n forward(): void;\n}\n", "import { ReflectUtils } from '@dooboostore/core';\nimport { FunctionUtils } from '@dooboostore/core';\nimport { getAddEventListenerMetadata } from './addEventListener';\nimport { ON_INITIALIZE_METADATA_KEY, ON_BEFORE_CONNECTED_METADATA_KEY, ON_AFTER_CONNECTED_METADATA_KEY, ON_BEFORE_DISCONNECTED_METADATA_KEY, ON_AFTER_DISCONNECTED_METADATA_KEY, ON_BEFORE_ADOPTED_METADATA_KEY, ON_AFTER_ADOPTED_METADATA_KEY, findAllLifecycleMetadata, getOnConnectedInnerHtmlMetadata } from './lifecycles';\nimport { getEmitCustomEventMetadataList } from './emitCustomEvent';\nimport { findAllAttributeChangedMetadata } from './changedAttributeHost';\nimport { findAllAttributeApplyMetadata } from './applyAttribute';\nimport { findAllAttributeMetadata } from './attribute';\nimport { getQueryMetadata } from './query';\nimport { getQueryAllMetadata } from './queryAll';\nimport { SwcUtils } from '../utils/Utils';\nimport { HTML_TAG_ENTRIES, DOM_EVENT_NAMES } from '../config/config';\nimport { SituationTypeContainer, SituationTypeContainers } from '@dooboostore/simple-boot/decorators/inject/Inject';\nimport { InjectSituationType, HostSet } from '../types';\n\n// --- Core Interfaces & Types ---\n\nexport const ELEMENT_CONFIG_KEY = Symbol.for('simple-web-component:element-config');\n\nexport interface ElementConfig {\n extends?: string;\n observedAttributes?: string[];\n customElementRegistry?: any;\n window?: Window;\n}\n\nexport interface ElementMetadata extends Omit<ElementConfig, 'window'> {\n name: string;\n window: Window;\n}\n\nexport const getElementConfig = (target: any): ElementMetadata | undefined => {\n const constructor = target instanceof Function ? target : target.constructor;\n return ReflectUtils.getMetadata(ELEMENT_CONFIG_KEY, constructor);\n};\n\nexport const ensureInit = (inst: any) => {\n if (!inst.__swc_initialized) {\n inst._swcId = Math.random().toString(36).substring(2, 11);\n inst._emitHandlers = new Map();\n inst._boundListeners = [];\n inst.__swc_initialized = true;\n\n // const attributeList = findAllQ(inst);\n // attributeList.forEach(meta => {\n // delete (inst as any)[meta.propertyKey];\n // });\n\n const target = inst instanceof Function ? inst : inst.constructor;\n \n // \u2554\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2557\n // \u2551 decorator \uD544\uB4DC\uC758 own property \uC0AD\uC81C \u2551\n // \u2551 \u2551\n // \u2551 \uC774\uC720: \u2551\n // \u2551 1. TypeScript\uB294 \uCD08\uAE30\uAC12\uC774 \uC788\uB294 \uD544\uB4DC\uB97C constructor\uC5D0\uC11C own property\uB85C \uC0DD\uC131 \u2551\n // \u2551 @attributeHost('id') myId: string = \"default\" \u2192 this.myId = \"default\" \u2551\n // \u2551 \u2551\n // \u2551 2. JavaScript\uC758 property lookup\uC740 own property\uB97C \uBA3C\uC800 \uCC3E\uC74C \u2551\n // \u2551 - this.myId \uC811\uADFC \u2551\n // \u2551 - 1\uC21C\uC704: instance\uC758 own property \uC788\uB098? \u2192 \uC788\uC73C\uBA74 \uADF8\uAC83 \uBC18\uD658 \u2551\n // \u2551 - 2\uC21C\uC704: prototype\uC758 getter \uC788\uB098? \u2192 \uC788\uC73C\uBA74 \uD638\uCD9C \u2551\n // \u2551 \u2551\n // \u2551 3. own property\uAC00 \uC788\uC73C\uBA74 prototype\uC758 getter\uB294 \uC808\uB300 \uD638\uCD9C\uB418\uC9C0 \uC54A\uC74C \u2551\n // \u2551 \uB530\uB77C\uC11C getter\uC5D0\uC11C \uC815\uC758\uB41C DOM \uB3D9\uAE30\uD654 \uB85C\uC9C1\uC774 \uC791\uB3D9\uD558\uC9C0 \uC54A\uC74C \u2551\n // \u2551 \u2551\n // \u2551 4. own property\uB97C \uC0AD\uC81C\uD558\uBA74 JavaScript\uAC00 prototype\uC758 getter\uB97C \uCC3E\uAC8C \uB428 \u2551\n // \u2551 \u2192 getter \uD638\uCD9C\uB428 \u2192 DOM \uC18D\uC131 \uAC12 \uB3D9\uAE30\uD654\uB428 \u2551\n // \u255A\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u255D\n \n // @attribute \uD544\uB4DC\uC758 own property \uC0AD\uC81C \u2192 getter/setter \uC791\uB3D9\n const attributeList = findAllAttributeMetadata(target);\n attributeList.forEach(meta => {\n delete (inst as any)[meta.propertyKey];\n });\n \n // @query \uD544\uB4DC\uC758 own property \uC0AD\uC81C \u2192 getter \uC791\uB3D9\n const queryList = getQueryMetadata(target);\n if (queryList) {\n queryList.forEach(meta => {\n delete (inst as any)[meta.propertyKey];\n });\n }\n \n // @queryAll \uD544\uB4DC\uC758 own property \uC0AD\uC81C \u2192 getter \uC791\uB3D9\n const queryAllList = getQueryAllMetadata(target);\n if (queryAllList) {\n queryAllList.forEach(meta => {\n delete (inst as any)[meta.propertyKey];\n });\n }\n\n // Call constructor script if present\n const hostSet = SwcUtils.getHostSet(inst);\n const appHosts = SwcUtils.findAllParentAppHostsDirect(inst);\n inst._executeSwcScript?.('swc-on-constructor', hostSet);\n\n // Call @onInitialize lifecycle methods\n const cMethods = findAllLifecycleMetadata(inst, ON_INITIALIZE_METADATA_KEY);\n if (cMethods) {\n for (const m of cMethods) (inst)._invokeLifecycleMethod(m, hostSet);\n }\n }\n};\n\n// --- Global Event Handling ---\nconst globalDelegatedRoots = new WeakSet<Node>();\n\nconst handleGlobalSwcEvent = async (event: Event) => {\n if ((event as any).__swc_handled) return;\n const path = event.composedPath();\n const type = event.type;\n const attrName = `swc-on-${type}`;\n\n for (const node of path) {\n if (!(node instanceof HTMLElement)) continue;\n const script = node.getAttribute?.(attrName);\n if (script && !getElementConfig(node)) {\n const host: any = SwcUtils.findNearestSwcHost(node);\n if (host && host.isConnected && typeof host.__swc_executeAttributeEvent === 'function') {\n await host.__swc_executeAttributeEvent(node, attrName, script, event);\n (event as any).__swc_handled = true;\n break;\n }\n }\n }\n};\n\nfunction buildEnv(configWindow?: Window) {\n const win: Window = configWindow || ((typeof window !== 'undefined' ? window : undefined) as any);\n const doc: Document = win?.document;\n const builtInTagMap = new Map<any, string>();\n for (const [cls, tag] of HTML_TAG_ENTRIES) {\n if ((win as any)?.[cls]) builtInTagMap.set((win as any)[cls], tag);\n }\n const domHelpers = SwcUtils.getHelperSet(win);\n \n return { win, doc, builtInTagMap, domHelpers };\n}\n\nconst getHandlers = (inst: any) => {\n if (!inst.__swc_attributeEventHandlers) inst.__swc_attributeEventHandlers = new Map();\n return inst.__swc_attributeEventHandlers;\n};\n\nconst setupPrototype = (proto: any) => {\n if (proto.__swc_proto_setup) return;\n proto.__swc_proto_setup = true;\n\n proto._executeSwcScript = function (attrName: string, hostSet: HostSet, extraArgs: Record<string, any> = {}) {\n ensureInit(this);\n const script = this.getAttribute(attrName);\n if (script) {\n try {\n const conf = getElementConfig(this);\n const currentWin = (this as any)._resolveWindow(conf);\n const helpers = SwcUtils.getHelperSet(currentWin);\n const args = { ...hostSet, ...helpers, ...extraArgs, $el: this, $root: this.getRootNode() };\n FunctionUtils.execute({ script, context: this, args });\n } catch (e) {\n console.error(`[SWC] Failed to execute ${attrName}:`, e);\n }\n }\n };\n\n proto._resolveWindow = function (localConfig?: ElementConfig): Window {\n ensureInit(this);\n if (localConfig?.window) return localConfig.window;\n const ancestors = SwcUtils.findAllSwcHosts(this as any);\n for (let i = ancestors.length - 1; i >= 0; i--) {\n const aConf = getElementConfig(ancestors[i]);\n if (aConf?.window) return aConf.window;\n }\n return (typeof window !== 'undefined' ? window : undefined) as Window;\n };\n\n proto._invokeLifecycleMethod = function (methodName: string | symbol, hostSet?: HostSet, extraArgs: any[] = []) {\n ensureInit(this);\n if (typeof (this as any)[methodName] !== 'function') return;\n const useHostSet = hostSet ?? SwcUtils.getHostSet(this);\n const app = useHostSet?.$appHost.simpleApplication;\n // console.log('---->hh',app, this, methodName);\n if (app) {\n const otherStorage = new Map<any, any>();\n const situations = new SituationTypeContainers([new SituationTypeContainer({ situationType: InjectSituationType.HOST_SET, data: useHostSet }), new SituationTypeContainer({ situationType: InjectSituationType.APP_HOST, data: useHostSet.$appHost }), new SituationTypeContainer({ situationType: InjectSituationType.APP_HOSTS, data: useHostSet.$appHosts }), new SituationTypeContainer({ situationType: InjectSituationType.HOST, data: useHostSet.$host }), new SituationTypeContainer({ situationType: InjectSituationType.HOSTS, data: useHostSet.$hosts }), new SituationTypeContainer({ situationType: InjectSituationType.FIRST_HOST, data: useHostSet.$firstHost }), new SituationTypeContainer({ situationType: InjectSituationType.LAST_HOST, data: useHostSet.$lastHost }), new SituationTypeContainer({ situationType: InjectSituationType.FIRST_APP_HOST, data: useHostSet.$firstAppHost }), new SituationTypeContainer({ situationType: InjectSituationType.LAST_APP_HOST, data: useHostSet.$lastAppHost })]);\n otherStorage.set(SituationTypeContainers, situations);\n\n return app.simstanceManager.executeBindParameterSimPromise(\n {\n target: this,\n targetKey: methodName,\n inputParameters: extraArgs\n },\n otherStorage\n );\n } else {\n return (this as any)[methodName](...extraArgs);\n }\n };\n\n proto._bindAttributeEvent = function (el: HTMLElement, attrName: string, script: string, eventName?: string) {\n ensureInit(this);\n if (!eventName) {\n if (!attrName.startsWith('swc-on-')) return;\n eventName = attrName.substring(7);\n }\n const elHandlers = getHandlers(this);\n let handlers = elHandlers.get(el);\n if (!handlers) {\n handlers = new Map();\n elHandlers.set(el, handlers);\n }\n\n const oldHandler = handlers.get(attrName);\n if (oldHandler) el.removeEventListener(eventName, oldHandler);\n\n const handler = async (event: any) => {\n const parent = SwcUtils.findNearestSwcHost(el);\n const hostSet = SwcUtils.getHostSet(parent || el);\n const conf = getElementConfig(this);\n const currentWin = (this as any)._resolveWindow(conf);\n const helpers = SwcUtils.getHelperSet(currentWin);\n const args = {\n event,\n $data: (event as CustomEvent).detail,\n ...hostSet,\n ...helpers,\n $el: el,\n $root: this.getRootNode()\n };\n await FunctionUtils.execute({ script, context: el, args });\n };\n\n el.addEventListener(eventName, handler);\n handlers.set(attrName, handler);\n };\n\n proto.__swc_executeAttributeEvent = async function (el: HTMLElement, attrName: string, script: string, event: Event) {\n ensureInit(this);\n\n const parent = SwcUtils.findNearestSwcHost(el);\n const hostSet = SwcUtils.getHostSet(parent || el);\n const conf = getElementConfig(this);\n const currentWin = (this as any)._resolveWindow(conf);\n const currentHelpers = SwcUtils.getHelperSet(currentWin);\n const detail = (event as CustomEvent).detail;\n const args = {\n event,\n $event: event,\n $data: detail,\n $detail: detail,\n ...hostSet,\n ...currentHelpers,\n $el: el,\n $root: this.getRootNode()\n };\n await FunctionUtils.execute({ script, context: el, args });\n };\n};\n\nexport const elementDefine =\n (name: string, config: Partial<ElementConfig> = {}): ClassDecorator =>\n (constructor: any) => {\n const { win, doc, builtInTagMap: BUILT_IN_TAG_MAP, domHelpers: SWC_DOM_HELPERS } = buildEnv(config.window);\n const metadata: ElementMetadata = { ...config, name, window: win };\n\n if (!metadata.window) {\n throw new Error('window is required');\n }\n\n let extendsTagName = metadata.extends;\n if (!extendsTagName) {\n let proto = constructor;\n const BaseHTMLElement = (win as any).HTMLElement;\n while (proto && proto !== BaseHTMLElement && proto !== Function.prototype) {\n extendsTagName = BUILT_IN_TAG_MAP.get(proto);\n if (extendsTagName) break;\n proto = Object.getPrototypeOf(proto);\n }\n metadata.extends = extendsTagName;\n }\n\n const emitCustomEventList = getEmitCustomEventMetadataList(constructor) || [];\n const emitHostCustomEventList = emitCustomEventList.filter(meta => meta.selector === ':host' || meta.selector === '');\n const addEventListenerList = getAddEventListenerMetadata(constructor) || [];\n const attrChangeMap = findAllAttributeChangedMetadata(constructor);\n const attributeList = findAllAttributeMetadata(constructor);\n const applyAttributeMap = findAllAttributeApplyMetadata(constructor);\n\n const swcLifecycleAttributes = ['swc-on-constructor', 'swc-on-connected', 'swc-on-disconnected', 'swc-on-before-connected', 'swc-on-after-connected', 'swc-on-before-disconnected', 'swc-on-after-disconnected', 'swc-on-before-adopted', 'swc-on-after-adopted', 'swc-on-attribute-changed'];\n const swcOnEvents = DOM_EVENT_NAMES.map(e => `swc-on-${e}`);\n\n // Collect all observed attributes from all decorators\n const attributeApplyNames = Array.from(applyAttributeMap.values()).map(it => it.options.name).filter(Boolean) as string[];\n // const attributeListNames = attributeList.map(it => it.options.name || String(it.propertyKey));\n const hostAttributes = attributeList.filter(it => it.selector === ':host').map(it=>it.options.name || String(it.propertyKey));\n\n const mergedObservedAttributes = [...new Set([\n ...(metadata.observedAttributes ?? []),\n ...attrChangeMap.keys(),\n ...attributeApplyNames,\n ...hostAttributes,\n ...emitHostCustomEventList.map(it => (it.options as any).attributeName).filter(Boolean),\n ...swcLifecycleAttributes,\n ...swcOnEvents\n ])];\n\n const connectedInnerHtmlList = getOnConnectedInnerHtmlMetadata(constructor) || [];\n\n const proto = constructor.prototype;\n setupPrototype(proto);\n\n const originalConnected = proto.connectedCallback;\n proto.connectedCallback = function () {\n ensureInit(this);\n\n const hostSet = SwcUtils.getHostSet(this as any);\n const appHost = hostSet.$appHost;\n const conf = getElementConfig(this);\n const currentWin = (this as any)._resolveWindow(conf);\n\n if (connectedInnerHtmlList.some(it => it.options.useShadow === true) && !this.shadowRoot) {\n this.attachShadow({ mode: 'open' });\n }\n\n (this as any)._executeSwcScript('swc-on-before-connected', hostSet);\n const bMethods = findAllLifecycleMetadata(this, ON_BEFORE_CONNECTED_METADATA_KEY);\n if (bMethods) {\n for (const m of bMethods) (this as any)._invokeLifecycleMethod(m, hostSet);\n }\n\n if (connectedInnerHtmlList.length > 0) {\n let sContent = '',\n lContent = '';\n for (const meta of connectedInnerHtmlList) {\n const res = (this as any)[meta.propertyKey]();\n if (res !== undefined) {\n if (meta.options.useShadow) sContent += res;\n else lContent += res;\n }\n }\n if (this.shadowRoot) this.shadowRoot.innerHTML = sContent;\n if (lContent) this.innerHTML = lContent;\n }\n\n const root = this.getRootNode();\n if (!globalDelegatedRoots.has(root)) {\n DOM_EVENT_NAMES.forEach(type => {\n root.addEventListener(type, handleGlobalSwcEvent);\n });\n globalDelegatedRoots.add(root);\n }\n\n // Separate delegate and non-delegate listeners\n const delegateListeners: typeof addEventListenerList = [];\n const nonDelegateListeners: typeof addEventListenerList = [];\n \n addEventListenerList.forEach(meta => {\n if (meta.options.delegate && meta.selector !== ':window' && meta.selector !== ':document' && meta.selector !== ':parentHost' && meta.selector !== ':appHost' && meta.selector !== ':firstHost' && meta.selector !== ':lastHost' && meta.selector !== ':firstAppHost' && meta.selector !== ':lastAppHost' && meta.selector !== ':hosts' && meta.selector !== ':appHosts' && meta.selector !== ':host' && meta.selector !== '') {\n delegateListeners.push(meta);\n } else {\n nonDelegateListeners.push(meta);\n }\n });\n\n const delegatesByTypeAndRoot = new Map<string, any[]>();\n delegateListeners.forEach(meta => {\n const r = meta.options.root || 'auto';\n const rootKey = `${meta.type}:${r}`;\n if (!delegatesByTypeAndRoot.has(rootKey)) {\n delegatesByTypeAndRoot.set(rootKey, []);\n }\n delegatesByTypeAndRoot.get(rootKey)!.push(meta);\n });\n\n delegatesByTypeAndRoot.forEach((metaList, typeRootKey) => {\n const [type, rStr] = typeRootKey.split(':');\n const r = rStr === 'auto' ? 'auto' : rStr;\n const opts = { capture: metaList[0].options.capture, once: metaList[0].options.once, passive: metaList[0].options.passive };\n \n const bindRoots: (HTMLElement | ShadowRoot)[] = [];\n if (r === 'auto') bindRoots.push(this.shadowRoot || (this as any));\n else if (r === 'light') bindRoots.push(this as any);\n else if (r === 'shadow' && this.shadowRoot) bindRoots.push(this.shadowRoot);\n else if (r === 'all') {\n bindRoots.push(this as any);\n if (this.shadowRoot) bindRoots.push(this.shadowRoot);\n }\n\n bindRoots.forEach(br => {\n const sortedMetaList = [...metaList].sort((a, b) => {\n const aStop = a.options.stopPropagation ? 1 : 0;\n const bStop = b.options.stopPropagation ? 1 : 0;\n return bStop - aStop;\n });\n \n const unifiedHandler = async (event: Event) => {\n for (const meta of sortedMetaList) {\n const { selector, options } = meta;\n const matchedEl = (event.target as HTMLElement).closest(selector);\n if (matchedEl && (br as any).contains(matchedEl)) {\n // Apply filter if specified\n if (options.filter) {\n const helper = SwcUtils.getHelperAndHostSet(currentWin, matchedEl);\n if (!options.filter(event, helper)) {\n continue; // Skip this listener if filter returns false\n }\n }\n if (options.stopPropagation) event.stopPropagation();\n if (options.stopImmediatePropagation) event.stopImmediatePropagation();\n if (options.preventDefault) event.preventDefault();\n const currentHostSet = SwcUtils.getHostSet(this as any);\n const args = { event, ...currentHostSet, $el: matchedEl, $root: br };\n await (this as any)[meta.propertyKey](event, currentHostSet, matchedEl, args);\n if ((event as any).cancelBubble) break;\n }\n }\n };\n br.addEventListener(type, unifiedHandler, opts);\n (this as any)._boundListeners.push({ target: br, type, handler: unifiedHandler, options: opts });\n });\n });\n\n nonDelegateListeners.forEach(meta => {\n const { selector, type, options } = meta;\n const opts = { capture: options.capture, once: options.once, passive: options.passive };\n const bindTargets: EventTarget[] = [];\n const r = options.root || 'auto';\n const applyRootOption = (target: any) => {\n if (!target) return;\n if (r === 'auto') {\n bindTargets.push(target.shadowRoot || target);\n } else {\n if (r === 'light' || r === 'all') bindTargets.push(target);\n if ((r === 'shadow' || r === 'all') && target.shadowRoot) bindTargets.push(target.shadowRoot);\n }\n };\n\n if (selector === ':window') bindTargets.push(currentWin);\n else if (selector === ':document') bindTargets.push(currentWin.document);\n else if (selector === ':parentHost') applyRootOption(hostSet.$parentHost);\n else if (selector === ':appHost') applyRootOption(hostSet.$appHost);\n else if (selector === ':firstHost') applyRootOption(hostSet.$firstHost);\n else if (selector === ':lastHost') applyRootOption(hostSet.$lastHost);\n else if (selector === ':firstAppHost') applyRootOption(hostSet.$firstAppHost);\n else if (selector === ':lastAppHost') applyRootOption(hostSet.$lastAppHost);\n else if (selector === ':hosts') hostSet.$hosts.forEach(applyRootOption);\n else if (selector === ':appHosts') hostSet.$appHosts.forEach(applyRootOption);\n else if (selector === ':host' || !selector) applyRootOption(this);\n else {\n const searchRoots: (HTMLElement | ShadowRoot)[] = [];\n if (r === 'auto') searchRoots.push(this.shadowRoot || (this as any));\n else if (r === 'light') searchRoots.push(this as any);\n else if (r === 'shadow' && this.shadowRoot) searchRoots.push(this.shadowRoot);\n else if (r === 'all') {\n searchRoots.push(this as any);\n if (this.shadowRoot) searchRoots.push(this.shadowRoot);\n }\n\n searchRoots.forEach(sr => {\n sr.querySelectorAll(selector).forEach(el => bindTargets.push(el));\n });\n }\n\n bindTargets.forEach(t => {\n const handler = async (event: Event) => {\n // Apply filter if specified\n if (options.filter) {\n const helper = SwcUtils.getHelperAndHostSet(currentWin, t as HTMLElement);\n if (!options.filter(event, helper)) {\n return; // Skip if filter returns false\n }\n }\n if (options.stopPropagation) event.stopPropagation();\n if (options.stopImmediatePropagation) event.stopImmediatePropagation();\n if (options.preventDefault) event.preventDefault();\n const currentHostSet = SwcUtils.getHostSet(this as any);\n const args = { event, ...currentHostSet, $el: t, $root: t };\n await (this as any)[meta.propertyKey](event, currentHostSet, args);\n };\n t.addEventListener(type, handler, opts);\n if (options.removeOnDisconnected === true || t === currentWin || t === currentWin.document) {\n (this as any)._boundListeners.push({ target: t, type, handler, options: opts });\n }\n });\n });\n\n if (originalConnected) originalConnected.apply(this);\n\n const aMethods = findAllLifecycleMetadata(this, ON_AFTER_CONNECTED_METADATA_KEY);\n if (aMethods) {\n for (const m of aMethods) (this as any)._invokeLifecycleMethod(m, hostSet);\n }\n (this as any)._executeSwcScript('swc-on-connected', hostSet);\n (this as any)._executeSwcScript('swc-on-after-connected', hostSet);\n (this as any).__swc_connected = true;\n\n // Register to appHost LAST when all lifecycle completed\n // console.log('!!!!!!!!!!!!!!', this, appHost)\n const appHostss = SwcUtils.findAllParentAppHostsDirect(this)\n // const nAppHostSet = SwcUtils.getHostSet(this as any);\n if (appHost && typeof (appHost as any)._connected === 'function') {\n (appHost as any)._connected(this);\n } else if (appHost && typeof (appHost as any)) {\n (appHost as any)._connected_safari ??= [];\n (appHost as any)._connected_safari.push(this);\n }\n };\n\n const originalDisconnected = proto.disconnectedCallback;\n proto.disconnectedCallback = function () {\n const hostSet = SwcUtils.getHostSet(this as any);\n (this as any)._executeSwcScript('swc-on-before-disconnected', hostSet);\n const bMethods = findAllLifecycleMetadata(this, ON_BEFORE_DISCONNECTED_METADATA_KEY);\n if (bMethods) {\n for (const m of bMethods) (this as any)._invokeLifecycleMethod(m, hostSet);\n }\n\n if ((this as any)._boundListeners) {\n (this as any)._boundListeners.forEach((l: any) => l.target.removeEventListener(l.type, l.handler, l.options));\n (this as any)._boundListeners = [];\n }\n\n if (originalDisconnected) originalDisconnected.apply(this);\n\n const aMethods = findAllLifecycleMetadata(this, ON_AFTER_DISCONNECTED_METADATA_KEY);\n if (aMethods) {\n for (const m of aMethods) (this as any)._invokeLifecycleMethod(m, hostSet);\n }\n (this as any)._executeSwcScript('swc-on-disconnected', hostSet);\n (this as any)._executeSwcScript('swc-on-after-disconnected', hostSet);\n (this as any).__swc_connected = false;\n \n // Remove from appHost LAST when disconnected\n const appHost = hostSet.$appHost;\n if (appHost && typeof (appHost as any)._disconnected === 'function') {\n (appHost as any)._disconnected(this);\n }\n };\n\n const originalAdopted = proto.adoptedCallback;\n proto.adoptedCallback = function () {\n const hostSet = SwcUtils.getHostSet(this as any);\n (this as any)._executeSwcScript('swc-on-before-adopted', hostSet);\n const bMethods = findAllLifecycleMetadata(this, ON_BEFORE_ADOPTED_METADATA_KEY);\n if (bMethods) {\n for (const m of bMethods) (this as any)._invokeLifecycleMethod(m, hostSet);\n }\n\n if (originalAdopted) originalAdopted.apply(this);\n\n const aMethods = findAllLifecycleMetadata(this, ON_AFTER_ADOPTED_METADATA_KEY);\n if (aMethods) {\n for (const m of aMethods) (this as any)._invokeLifecycleMethod(m, hostSet);\n }\n (this as any)._executeSwcScript('swc-on-adopted', hostSet);\n (this as any)._executeSwcScript('swc-on-after-adopted', hostSet);\n };\n\n const originalAttributeChanged = proto.attributeChangedCallback;\n proto.attributeChangedCallback = function (name: string, old: string | null, newVal: string | null) {\n if (originalAttributeChanged) originalAttributeChanged.apply(this, [name, old, newVal]);\n\n const hSet = SwcUtils.getHostSet(this as any);\n\n if (name.startsWith('swc-on-') && !swcLifecycleAttributes.includes(name)) {\n if (newVal !== null) {\n const eventName = name.substring(7);\n (this as any)._bindAttributeEvent(this as any, name, newVal, eventName);\n }\n }\n\n const hostCustomEventMeta = emitHostCustomEventList.find(it => (it.options as any).attributeName === name);\n if (hostCustomEventMeta && newVal !== null) {\n (this as any)._bindAttributeEvent(this as any, name, newVal, hostCustomEventMeta.type);\n }\n\n const mKeys = attrChangeMap.get(name);\n if (mKeys && Array.isArray(mKeys)) {\n for (const key of mKeys) (this as any)[key](newVal, old, name, hSet);\n }\n };\n\n Object.defineProperty(constructor, 'observedAttributes', {\n get: () => mergedObservedAttributes,\n configurable: true\n });\n\n ReflectUtils.defineMetadata(ELEMENT_CONFIG_KEY, metadata, constructor);\n const registry = metadata.customElementRegistry || (win as any)?.customElements;\n if (registry && !registry.get(metadata.name)) {\n registry.define(metadata.name, constructor as any, metadata.extends ? { extends: metadata.extends } : undefined);\n }\n return constructor;\n };\n", "import { ConstructorType, GenericClassDecorator } from '@dooboostore/core';\nimport { ReflectUtils } from '@dooboostore/core';\nimport { SimpleApplication } from '../SimpleApplication';\nimport { ValidUtils } from '@dooboostore/core';\n\nexport enum Lifecycle {\n /**\n * The default registration scope, Each resolve will return the same instance (including resolves from child containers)\n */\n Singleton = 'Singleton',\n /**\n * a new instance will be created with each resolve\n */\n Transient = 'Transient'\n}\n\nexport const sims = new Map<ConstructorType<any> | Function, Set<ConstructorType<any> | Function | any>>();\nexport const containers = new Set<SimpleApplication>();\n// console.log('-->',sims)\n\nexport type SimConfigProxy = ((ProxyHandler<any> | ConstructorType<any> | Function)) | (ProxyHandler<any> | ConstructorType<any> | Function)[];\nexport type SimConfigUsing = (ConstructorType<any> | Function | object) | ((ConstructorType<any> | Function | object)[]);\n\nexport interface SimConfig {\n symbol?: symbol | (symbol[]);\n scheme?: string | (string[]);\n scope?: Lifecycle;\n container?: SimpleApplication | symbol | (SimpleApplication | symbol)[];\n autoCreate?: boolean;\n proxy?: SimConfigProxy;\n type?: (ConstructorType<any> | Function) | (ConstructorType<any> | Function)[];\n using?: SimConfigUsing;\n}\n\nexport const SimMetadataKey = Symbol.for('simple-boot:sim-metadata');\n\nconst isNotNullObjetInstance = (target: any) => target != null && target !== undefined && typeof target === 'object';\n\nexport const simProcess = (config: SimConfig, inputTarget: ConstructorType<any> | Function | any) => {\n // default setting\n /*\n // Sim({symbol: TTSymbol, scope: Lifecycle.Transient})(function (){\n // console.log('new TT')\n // return {a: 'name'}\n // })\n // Sim({symbol: TTSymbol, scope: Lifecycle.Transient})(() =>{\n // console.log('new TT')\n // return {a: 'name'}\n // })\n Sim({symbol: TTSymbol, scope: Lifecycle.Transient})({a: 'name'})\n */\n const target = (() => {\n if (typeof inputTarget === 'object') {\n return config.scope === Lifecycle.Singleton ? inputTarget : (ValidUtils.isPlainObject(inputTarget) ? { ...inputTarget }: inputTarget);\n }\n if (ValidUtils.isArrowFunction(inputTarget)) {\n return () => (inputTarget as Function)();\n }\n return inputTarget;\n })();\n\n\n\n\n let targetType: ConstructorType<any> | Function;\n if (isNotNullObjetInstance(target)) {\n targetType = target.constructor;\n } else {\n targetType = target;\n }\n config.scope = config?.scope ?? Lifecycle.Singleton;\n ReflectUtils.defineMetadata(SimMetadataKey, config, targetType);\n const adding = (targetKey: ConstructorType<any> | Function, target: ConstructorType<any> | Function | any = targetKey) => {\n const items = sims.get(targetKey) ?? new Set<ConstructorType<any> | Function | any>();\n items.add(target);\n sims.set(targetKey, items);\n }\n\n\n if (Array.isArray(config?.type)) {\n config?.type.forEach(it => {\n adding(it, target);\n })\n } else if (config.type) {\n adding(config?.type, target);\n } else {\n adding(target)\n }\n // adding(targetType)\n // console.log('----------->', sims)\n}\n// const a = Math.random()+Date.now();\nexport function Sim(target: ConstructorType<any> | Function): void;\nexport function Sim(config: SimConfig): GenericClassDecorator<ConstructorType<any> | Function | any>;\nexport function Sim(configOrTarget: SimConfig | ConstructorType<any> | Function): void | GenericClassDecorator<ConstructorType<any> | Function | any> {\n // console.group('sim')\n // sims.forEach((v,k) => {\n // console.log('sssss->', v, k)\n // })\n // console.groupEnd()\n if (typeof configOrTarget === 'function') {\n simProcess({}, configOrTarget);\n // console.log('---!', Reflect.getMetadata('design:paramtypes', configOrTarget))\n } else {\n return (target: ConstructorType<any> | Function | any) => {\n simProcess(configOrTarget, target);\n }\n }\n}\n\n// Alias for @sim (lowercase)\nexport const sim = Sim;\n\nexport const getSim = (target: ConstructorType<any> | Function | any): SimConfig | undefined => {\n if (target != null && target !== undefined && typeof target === 'object') {\n // proxy \uAC78\uB9B0\uAC70\uB584\uBB38\uC5D0 \uC774\uB807\uAC8C \uD55C\uB2E4. \uC548\uAC78\uB9B0\uAC83\uB3C4 \uC798\uB41C\uB2E4.\n target = Object.getPrototypeOf(target).constructor;\n // target = target.constructor;\n }\n try {\n return ReflectUtils.getMetadata(SimMetadataKey, target);\n } catch (e) {\n }\n}\n\nconst PostConstructMetadataKey = Symbol.for('simple-boot:post-construct-metadata');\nexport type PostConstructMetaType = {property: string};\nconst postConstructProcess = (target: any, config: PostConstructMetaType) => {\n const metas = getPostConstructs(target) ?? [];\n metas.push(config);\n ReflectUtils.defineMetadata(PostConstructMetadataKey, metas, target);\n}\nexport const PostConstruct = (target: any, propertyKey: string, descriptor: PropertyDescriptor) => {\n postConstructProcess(target, {property: propertyKey});\n}\nexport const getPostConstructs = (target: any): PostConstructMetaType[] => {\n return ReflectUtils.getMetadata(PostConstructMetadataKey, target) ?? [];\n}\n\n// Alias for @postConstruct (lowercase)\nexport const postConstruct = PostConstruct;\n", "import { ReflectUtils } from '@dooboostore/core';\nimport { MetaDataPropertyAtomic } from '../MetaDataAtomic';\nimport { ObjectUtils } from '@dooboostore/core';\nimport { ConstructorType } from '@dooboostore/core';\nimport { ReflectMethod } from '../../types/Types';\n\nconst AfterMetadataKey = Symbol.for('simple-boot:after-metadata');\nconst BeforeMetadataKey = Symbol.for('simple-boot:before-metadata');\nconst AroundMetadataKey = Symbol.for('simple-boot:around-metadata');\ntype AOPOption = { type?: ConstructorType<any>; property: string };\ntype AroundOption = {\n before?: (obj: any, propertyKey: string, args: any[]) => any[];\n after?: (obj: any, propertyKey: string, args: any[], beforeReturn: any) => any[];\n};\n\n// after\nexport const After = (data: AOPOption) => {\n return ReflectUtils.metadata(AfterMetadataKey, data);\n};\nexport const getAfter = (target: any, propertyKey: string): AOPOption | undefined => {\n return ReflectUtils.getMetadata(AfterMetadataKey, target, propertyKey);\n};\n\nexport const getAfters = (target: any): MetaDataPropertyAtomic<any, AOPOption | undefined>[] => {\n return (\n ObjectUtils.allProtoTypeName(target)\n .map(it => new MetaDataPropertyAtomic<any, AOPOption | undefined>(target, getAfter(target, it), it))\n .filter(it => it.metaData !== undefined) || []\n );\n};\n\nexport const getProtoAfters = (\n target: any,\n propertyKey: string,\n type?: ConstructorType<any>\n): MetaDataPropertyAtomic<any, AOPOption | undefined>[] => {\n return (\n getAfters(target).filter(it => propertyKey === it.metaData?.property && type === it.metaData.type?.prototype) || []\n );\n};\n\n// before\nexport const Before = (data: AOPOption) => {\n return ReflectUtils.metadata(BeforeMetadataKey, data);\n};\n\nexport const getBefore = (target: any, propertyKey: string): AOPOption | undefined => {\n return ReflectUtils.getMetadata(BeforeMetadataKey, target, propertyKey);\n};\n\nexport const getBefores = (target: any): MetaDataPropertyAtomic<any, AOPOption | undefined>[] => {\n return (\n ObjectUtils.allProtoTypeName(target)\n .map(it => new MetaDataPropertyAtomic<any, AOPOption | undefined>(target, getBefore(target, it), it))\n .filter(it => it.metaData !== undefined) || []\n );\n};\n\nexport const getProtoBefores = (\n target: any,\n propertyKey: string,\n type?: ConstructorType<any>\n): MetaDataPropertyAtomic<any, AOPOption | undefined>[] => {\n return (\n getBefores(target).filter(it => propertyKey === it.metaData?.property && type === it.metaData.type?.prototype) || []\n );\n};\n\nexport class AroundForceReturn {\n constructor(public value: any) {}\n}\n// around\nexport const Around = (config: AroundOption): ReflectMethod => {\n return (target: any, propertyKey: string, descriptor: PropertyDescriptor) => {\n ReflectUtils.defineMetadata(AroundMetadataKey, config, target, propertyKey);\n\n const method = descriptor.value;\n descriptor.value = function (...args: any[]) {\n // console.log('check method')\n\n let before: any = undefined;\n let r: any = undefined;\n if (config.before) {\n try {\n before = config.before?.(this, propertyKey, args);\n } catch (e) {\n if (e instanceof AroundForceReturn) {\n return e.value;\n }\n }\n r = method.apply(this, before);\n } else {\n r = method.apply(this, args);\n }\n\n if (config.after) {\n try {\n r = config.after?.(this, propertyKey, args, r);\n } catch (e) {\n if (e instanceof AroundForceReturn) {\n return e.value;\n }\n }\n }\n return r;\n };\n };\n};\n\nexport const getAround = (target: any, propertyKey: string): AroundOption | undefined => {\n return ReflectUtils.getMetadata(AroundMetadataKey, target, propertyKey);\n};\n\n// Aliases for lowercase\nexport const after = After;\nexport const before = Before;\nexport const around = Around;\n", "import { ConstructorType } from '@dooboostore/core';\nimport {ReflectMethod} from '../../types/Types';\nimport { ReflectUtils } from '@dooboostore/core';\nimport {ObjectUtils} from '@dooboostore/core';\n\nexport enum ExceptionHandlerSituationType {\n ERROR_OBJECT = 'SIMPLE_BOOT_CORE://ExceptionHandler/ERROR_OBJECT',\n PARAMETER = 'SIMPLE_BOOT_CORE://ExceptionHandler/PARAMETER',\n}\nexport type ExceptionHandlerConfig = { type?: ConstructorType<any>; throw?: boolean }\nexport type SaveExceptionHandlerConfig = { propertyKey?: string | symbol; method: Function; config: ExceptionHandlerConfig; }\n\nconst ExceptionHandlerMetadataKey = Symbol.for('simple-boot:exception-handler-metadata');\n\nexport const ExceptionHandler = (config: ExceptionHandlerConfig = {}): ReflectMethod => {\n return (target: any, propertyKey: string, descriptor: PropertyDescriptor) => {\n const saveMappingConfigs = (ReflectUtils.getMetadata(ExceptionHandlerMetadataKey, target.constructor) ?? []) as SaveExceptionHandlerConfig[];\n const method = target[propertyKey];\n saveMappingConfigs.push({propertyKey, method, config});\n ReflectUtils.defineMetadata(ExceptionHandlerMetadataKey, saveMappingConfigs, target.constructor);\n ReflectUtils.defineMetadata(ExceptionHandlerMetadataKey, config, target, propertyKey);\n }\n}\n\nexport const getExceptionHandler = (target: any, propertyKey: string): ExceptionHandlerConfig | undefined => {\n return ReflectUtils.getMetadata(ExceptionHandlerMetadataKey, target, propertyKey);\n}\n\nexport const getExceptionHandlers = (target: any): SaveExceptionHandlerConfig[] | undefined => {\n if (target !== null && undefined !== target && typeof target === 'object') {\n target = target.constructor;\n }\n return ReflectUtils.getMetadata(ExceptionHandlerMetadataKey, target);\n}\n\nexport const targetExceptionHandlers = (target: any, error: any): SaveExceptionHandlerConfig[] => {\n const exceptionHandlers = getExceptionHandlers(target);\n const emptyTargets = exceptionHandlers?.filter(it => it.config.type === undefined);\n const targets = exceptionHandlers?.filter(it => ObjectUtils.isPrototypeOfTarget(it.config.type, error));\n const targetSorts = targets?.sort((a, b) => {\n const aPrototypeOfDepth = ObjectUtils.prototypeOfDepth(error, a.config.type);\n const bPrototypeOfDepth = ObjectUtils.prototypeOfDepth(error, b.config.type);\n return aPrototypeOfDepth.length - bPrototypeOfDepth.length\n });\n return (targetSorts ?? []).concat(...emptyTargets ?? []);\n}\n\nexport const targetExceptionHandler = (target: any, error: any, excludeMethods: Function[] = []): SaveExceptionHandlerConfig | undefined => {\n let exceptionHandlers = targetExceptionHandlers(target, error);\n exceptionHandlers = exceptionHandlers?.filter(it => !excludeMethods.includes(it.method));\n if (exceptionHandlers && exceptionHandlers.length > 0) {\n return exceptionHandlers[0];\n } else {\n return undefined;\n }\n}\n\n// Alias for @exceptionHandler (lowercase)\nexport const exceptionHandler = ExceptionHandler;\n", "export const SimNoProxyKey = Symbol.for('simple-boot:sim-no-proxy-metadata');\nexport const SimNoProxy = (target: any, propertyKey?: string | symbol) => {\n // \uD074\uB798\uC2A4 \uB370\uCF54\uB808\uC774\uD130\uB85C \uC0AC\uC6A9\uB41C \uACBD\uC6B0\n if (propertyKey === undefined) {\n // target\uC740 \uD074\uB798\uC2A4 \uC0DD\uC131\uC790\n Reflect.defineMetadata(SimNoProxyKey, true, target);\n return;\n }\n\n // \uD504\uB85C\uD37C\uD2F0 \uB370\uCF54\uB808\uC774\uD130\uB85C \uC0AC\uC6A9\uB41C \uACBD\uC6B0\n // target\uC740 \uD504\uB85C\uD1A0\uD0C0\uC785, propertyKey\uB294 \uD504\uB85C\uD37C\uD2F0 \uC774\uB984\n Reflect.defineMetadata(SimNoProxyKey, true, target, propertyKey);\n};\n\nexport const getSimNoProxy = (target: any, propertyKey?: string | symbol) => {\n try {\n // if (ValidUtils.isNotNullUndefined(target)) {\n // \uD074\uB798\uC2A4 \uB370\uCF54\uB808\uC774\uD130\n if (propertyKey === undefined) {\n return Reflect.getMetadata(SimNoProxyKey, target);\n }\n // \uD504\uB85C\uD37C\uD2F0 \uB370\uCF54\uB808\uC774\uD130\n return Reflect.getMetadata(SimNoProxyKey, target, propertyKey);\n } catch (e) {\n return undefined;\n }\n // } else {\n // return undefined;\n // }\n};\n\nexport const isSimNoProxy = (target: any, propertyKey?: string | symbol) => {\n if (target === null || target === undefined) {\n return false;\n }\n return getSimNoProxy(target, propertyKey) === true;\n};\n\n// Alias for @simNoProxy (lowercase)\nexport const simNoProxy = SimNoProxy;\n", "\nimport { ReflectUtils } from '@dooboostore/core';\nimport {ReflectMethod} from '../../types/Types';\n\nexport type InjectionConfig = {}\n\nconst InjectionMetadataKey = Symbol('Injection');\nexport function Injection(target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor): void;\nexport function Injection(config?: InjectionConfig): ReflectMethod;\nexport function Injection(configOrTarget?: InjectionConfig | any, propertyKey?: string | symbol, descriptor?: PropertyDescriptor): void | ReflectMethod {\n if (propertyKey && descriptor) {\n const target = configOrTarget;\n ReflectUtils.defineMetadata(InjectionMetadataKey, {}, target, propertyKey);\n } else {\n return (target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor) => {\n const config = configOrTarget;\n ReflectUtils.defineMetadata(InjectionMetadataKey, config ?? {}, target, propertyKey);\n }\n }\n}\n\nexport const getInjection = (target: any, propertyKey: string | symbol): InjectionConfig | undefined => {\n return ReflectUtils.getMetadata(InjectionMetadataKey, target, propertyKey);\n}\n\n// Alias for @injection (lowercase)\nexport const injection = Injection;\n", "import { ConstructorType, GenericClassDecorator } from '@dooboostore/core';\nimport { ReflectUtils } from '@dooboostore/core';\nimport { ReflectMethod} from '../../types/Types';\nimport {RouteFilter} from '../../route/RouteFilter';\n\nexport type Filterss = (RouteFilter | ConstructorType<RouteFilter>)[];\nexport type Filters = RouteFilter | ConstructorType<RouteFilter> | Filterss;\nexport type RoteAndFilter = {filters: Filters, target: ConstructorType<Object>};\nexport type RouteTargetMethod = {target: ConstructorType<Object>, propertyKeys: (string|symbol)[], filters?: Filterss}\nexport type RouteProperty = ConstructorType<Object> | RoteAndFilter | [ConstructorType<Object> | RoteAndFilter, any] | RouteTargetMethod | string | symbol;\nexport type Route = {[name: string]: RouteProperty};\nexport interface RouterConfig {\n path?: string;\n route?: Route;\n routers?: (ConstructorType<Object> | symbol)[];\n filters?: Filters;\n}\n\nexport const RouterMetadataKey = Symbol.for('simple-boot:router-metadata');\nexport const routerProcess = (config: RouterConfig, target: ConstructorType<any> | Function | symbol) => {\n getRoutes(target)?.forEach(it => {\n config.route = (config.route ?? {});\n const paths = Array.isArray(it.config.path) ? it.config.path : [it.config.path];\n for (const path of paths) {\n if (config.route[path]) {\n const route = config.route[path] as RouteTargetMethod;\n route.propertyKeys.push(it.propertyKey);\n route.filters = route.filters ?? [];\n if (Array.isArray(it.config.filters)) {\n route.filters.push(...it.config.filters)\n } else if (it.config.filters) {\n route.filters.push(it.config.filters)\n }\n } else {\n config.route[path] = {target, propertyKeys: [it.propertyKey], filters: it.config.filters} as RouteTargetMethod;\n }\n }\n });\n ReflectUtils.defineMetadata(RouterMetadataKey, config, target);\n}\nexport function Router(target: ConstructorType<any> | Function): void;\nexport function Router(config: RouterConfig): GenericClassDecorator<ConstructorType<any> | Function>;\nexport function Router(configOrTarget: RouterConfig | ConstructorType<any> | Function): void | GenericClassDecorator<ConstructorType<any> | Function> {\n if (typeof configOrTarget === 'function') {\n const routerConfig: RouterConfig = {\n path: ''\n }\n routerProcess(routerConfig, configOrTarget);\n } else {\n return (target: ConstructorType<any> | Function) => {\n configOrTarget.path = configOrTarget.path ?? '';\n routerProcess(configOrTarget, target);\n }\n }\n}\n\nexport const getRouter = (target: ConstructorType<any> | Function | any): RouterConfig | undefined => {\n if (target != null && typeof target === 'object') {\n target = target.constructor;\n }\n try { return ReflectUtils.getMetadata(RouterMetadataKey, target); } catch (e) {}\n}\n\ntype RouteConfig = { path: string | string[], filters?: Filters }\nexport type SaveRouteConfig = { propertyKey: string | symbol; method: Function; config: RouteConfig; }\nexport const RouteMetadataKey = Symbol.for('simple-boot:route-metadata');\n\nexport const Route = (config: RouteConfig): ReflectMethod => {\n return (target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor) => {\n const saveRouteConfigs = (ReflectUtils.getMetadata(RouteMetadataKey, target.constructor) ?? []) as SaveRouteConfig[];\n const method = target[propertyKey];\n saveRouteConfigs.push({propertyKey, method, config});\n ReflectUtils.defineMetadata(RouteMetadataKey, saveRouteConfigs, target.constructor);\n ReflectUtils.defineMetadata(RouteMetadataKey, config, target, propertyKey);\n };\n}\n\nexport const getRoute = (target: any, propertyKey: string | symbol): RouteConfig | undefined => {\n return ReflectUtils.getMetadata(RouteMetadataKey, target, propertyKey);\n}\n\nexport const getRoutes = (target: any): SaveRouteConfig[] | undefined => {\n if (target !== null && undefined !== target && typeof target === 'object') {\n target = target.constructor;\n }\n return ReflectUtils.getMetadata(RouteMetadataKey, target);\n}\n\n// Aliases for lowercase\nexport const router = Router;\nexport const route = Route;\n", "import { RoutingDataSet } from '../route/RouterManager';\n\nexport namespace RouterAction {\n export interface CanActivate {\n canActivate(url: RoutingDataSet, data?: any): Promise<void>;\n }\n export const isCanActivate = (obj: any): obj is CanActivate => {\n return typeof obj?.canActivate === 'function';\n };\n\n export interface OnRouting {\n onRouting(r: RoutingDataSet): Promise<void>;\n }\n\n export const isOnRouting = (obj: any): obj is OnRouting => {\n return typeof obj?.onRouting === 'function';\n };\n\n export interface HasActivate {\n hasActivate(checkObj: any): boolean;\n }\n\n export const isHasActivate = (obj: any): obj is HasActivate => {\n return typeof obj?.hasActivate === 'function';\n };\n}\n", "export namespace CanvasUtils {\n export type CanvasUtilsContext = CanvasRenderingContext2D | OffscreenCanvasRenderingContext2D;\n export namespace Context2D {\n /*\n rotate, scale, transform\n rotate\uB294 \uACC4\uC18D \uB204\uC801\uB41C\uB2E4\n ctx.rotate(1);\n ctx.rotate(1);\n ctx.rotate(1);\n rotate3\uC774\uB418\uB294\uAC70\uB2E4.\n */\n\n /* transform\n https://www.w3schools.com/jsref/canvas_transform.asp\n */\n\n /* scale\n https://developer.mozilla.org/en-US/play\n https://www.w3schools.com/jsref/canvas_scale.asp\n https://www.w3schools.com/jsref/tryit.asp?filename=tryhtml5_canvas_scale\n\n */\n /* rotate\n https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/rotate\n\n\n const canvas = document.getElementById(\"canvas\");\n const ctx = canvas.getContext(\"2d\");\n\n // Non-rotated rectangle\n ctx.fillStyle = \"gray\";\n ctx.fillRect(80, 60, 140, 30);\n\n // Matrix transformation\n ctx.translate(150, 75);\n ctx.rotate(Math.PI / 2);\n ctx.translate(-150, -75);\n\n // Rotated rectangle\n ctx.fillStyle = \"red\";\n ctx.fillRect(80, 60, 140, 30);\n\n\n rotate \uD560\uB584\uC5D0\uB294 \uBA3C\uC800 \uD310\uC744 \uC774\uB3D9\uD6C4 \uAE30\uC900\uC810\uC7A1\uACE0 \uB3CC\uB9AC\uACE0 \uB2E4\uC2DC \uB418\uB3CC\uB824\uB193\uACE0 \uD574\uC57C\uB41C\uB2E4\n */\n\n\n /* line\n * lineTo: https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/lineTo\n * closePath: https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/closePath\n */\n\n /* moveTo \uD39C\uC774\uB3D9\n moveTo\uC758 \uC5ED\uD560: moveTo(x, y)\uB294 \uD39C(pen)\uC758 \uC704\uCE58\uB97C \uC0C8\uB85C\uC6B4 \uC88C\uD45C\uB85C \uC774\uB3D9\uC2DC\uD0A4\uC9C0\uB9CC, \uAE30\uC874 \uACBD\uB85C\uC640 \uC5F0\uACB0\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. \uC774\uB294 \uC0C8\uB85C\uC6B4 \uC11C\uBE0C\uD328\uC2A4\uB97C \uC2DC\uC791\uD558\uB294 \uD6A8\uACFC\uB97C \uC90D\uB2C8\uB2E4.\nconst ctx = canvas.getContext(\"2d\");\n\nctx.beginPath();\nctx.moveTo(20, 140); // \uC2DC\uC791\uC810\nctx.lineTo(120, 10); // \uCCAB \uBC88\uC9F8 \uC120\nctx.lineTo(220, 140); // \uB450 \uBC88\uC9F8 \uC120\nctx.closePath(); // (220, 140) -> (20, 140)\uC73C\uB85C \uB2EB\uC74C\nctx.fill();\nctx.stroke();\n\n/////////\nconst canvas = document.getElementById(\"canvas\");\nconst ctx = canvas.getContext(\"2d\");\nctx.fillStyle='pink'\nctx.beginPath(); // Start a new path\nctx.moveTo(50, 50); // Move the pen to (30, 50)\nctx.lineTo(150, 100); // Draw a line to (150, 100)\nctx.lineTo(250, 10); // Draw a line to (150, 100)\nctx.closePath();\nctx.fill()\nctx.stroke(); // Render the path\nctx.beginPath(); // Start a new path\nctx.moveTo(30, 50); // Move the pen to (30, 50)\nctx.lineTo(150, 100); // Draw a line to (150, 100)\nctx.lineTo(650, 100); // Draw a line to (150, 100)\nctx.closePath();\nctx.fill()\nctx.stroke(); // Render the path\n\n\n\n */\n export const resetTransform = (context: CanvasUtilsContext) => {\n context.setTransform(1, 0, 0, 1, 0, 0);\n }\n }\n\n export const fontSize =(ctx:CanvasUtilsContext, config:{text: string, maxWidth:number, maxHeight: number, fontOption?: {fontWeight?: string, fontFamily?: string}}) => {\n const { text, maxWidth, maxHeight, fontOption } = config;\n\n if (!text || maxWidth <= 0 || maxHeight <= 0) {\n return 0;\n }\n\n // \uAE30\uC874 \uC904\uBC14\uAFC8(\\n)\uC744 \uAE30\uC900\uC73C\uB85C \uD14D\uC2A4\uD2B8\uB97C \uB098\uB215\uB2C8\uB2E4. \uC790\uB3D9 \uC904\uBC14\uAFC8\uC740 \uC218\uD589\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.\n const lines = text.split('\\n').filter(line => line.trim().length > 0);\n if (lines.length === 0) {\n return 0;\n }\n\n const lineHeightMultiplier = 1.2; // \uC904 \uB192\uC774 \uBC30\uC728\n\n // 1. \uB192\uC774 \uC81C\uC57D \uC870\uAC74\uC5D0 \uAE30\uBC18\uD55C \uCD5C\uB300 \uD3F0\uD2B8 \uD06C\uAE30 \uACC4\uC0B0\n // (\uC804\uCCB4 \uD14D\uC2A4\uD2B8 \uB192\uC774 = \uC904 \uC218 * \uD3F0\uD2B8 \uD06C\uAE30 * \uC904 \uB192\uC774 \uBC30\uC728)\n const maxFontSizeByHeight = Math.floor(maxHeight / (lines.length * lineHeightMultiplier));\n if (maxFontSizeByHeight <= 0) {\n return 0; // 1px \uD3F0\uD2B8\uB3C4 \uB192\uC774\uC5D0 \uB9DE\uC9C0 \uC54A\uC73C\uBA74 0 \uBC18\uD658\n }\n\n // 2. \uB108\uBE44 \uC81C\uC57D \uC870\uAC74\uC5D0 \uAE30\uBC18\uD55C \uCD5C\uB300 \uD3F0\uD2B8 \uD06C\uAE30 \uACC4\uC0B0 (\uC774\uC9C4 \uD0D0\uC0C9)\n // \uD14D\uC2A4\uD2B8\uC758 \uAC01 \uC904\uC774 maxWidth\uB97C \uB118\uC9C0 \uC54A\uB3C4\uB85D \uD558\uB294 \uCD5C\uB300 \uD3F0\uD2B8 \uD06C\uAE30\uB97C \uCC3E\uC2B5\uB2C8\uB2E4.\n let minSizeForWidth = 1;\n // \uC774\uC9C4 \uD0D0\uC0C9\uC758 \uC0C1\uD55C\uC120\uC740 \uB192\uC774 \uC81C\uC57D\uC73C\uB85C \uC5BB\uC740 \uAC12\uC73C\uB85C \uC124\uC815\uD558\uC5EC \uBD88\uD544\uC694\uD55C \uD0D0\uC0C9\uC744 \uC904\uC785\uB2C8\uB2E4.\n let maxSizeForWidth = maxFontSizeByHeight;\n let bestSizeForWidth = 0;\n\n const maxIterations = 100; // \uBB34\uD55C \uB8E8\uD504 \uBC29\uC9C0\n let iteration = 0;\n\n while (minSizeForWidth <= maxSizeForWidth && iteration < maxIterations) {\n const midSize = Math.floor((minSizeForWidth + maxSizeForWidth) / 2);\n if (midSize === 0) break; // \uD3F0\uD2B8 \uD06C\uAE30\uAC00 0\uC774 \uB418\uBA74 \uC911\uB2E8\n\n ctx.font = `${fontOption?.fontWeight || 'normal'} ${midSize}px ${fontOption?.fontFamily || 'sans-serif'}`;\n\n // \uAC00\uC7A5 \uAE34 \uC904\uC758 \uB108\uBE44\uB97C \uCE21\uC815\uD569\uB2C8\uB2E4. (\uC790\uB3D9 \uC904\uBC14\uAFC8 \uC5C6\uC74C)\n const maxLineWidth = Math.max(...lines.map(line => ctx.measureText(line).width));\n\n if (maxLineWidth <= maxWidth) {\n // \uD604\uC7AC \uD3F0\uD2B8 \uD06C\uAE30\uB85C \uAC00\uC7A5 \uAE34 \uC904\uC774 \uB108\uBE44 \uC81C\uC57D\uC744 \uB9CC\uC871\uD558\uBA74, \uB354 \uD070 \uD06C\uAE30\uB97C \uC2DC\uB3C4\n bestSizeForWidth = midSize;\n minSizeForWidth = midSize + 1;\n } else {\n // \uD604\uC7AC \uD3F0\uD2B8 \uD06C\uAE30\uB85C \uAC00\uC7A5 \uAE34 \uC904\uC774 \uB108\uBE44 \uC81C\uC57D\uC744 \uCD08\uACFC\uD558\uBA74, \uB354 \uC791\uC740 \uD06C\uAE30\uB97C \uC2DC\uB3C4\n maxSizeForWidth = midSize - 1;\n }\n iteration++;\n }\n\n // 3. \uB192\uC774 \uC81C\uC57D\uACFC \uB108\uBE44 \uC81C\uC57D \uC911 \uB354 \uC5C4\uACA9\uD55C(\uC791\uC740) \uD3F0\uD2B8 \uD06C\uAE30\uB97C \uBC18\uD658\uD569\uB2C8\uB2E4.\n return Math.min(bestSizeForWidth, maxFontSizeByHeight);\n }\n export const textMetrics =(context: CanvasUtilsContext, text: string):TextMetrics => {\n return context.measureText( text )\n }\n\n}", "import { Promises } from '@dooboostore/core';\n\nexport namespace ElementUtils {\n export type Attr = { name: string; value: any };\n\n export type LoadImageCallbackType = { onload: (img: HTMLImageElement) => void; onerror: OnErrorEventHandler };\n export type LoadAudioCallbackType = { onload: (img: HTMLAudioElement) => void; onerror: (e: ErrorEvent) => void };\n\n export function removeAllChildren(el: Element): void;\n export function removeAllChildren(el: Element, els: Node | Node[]): void;\n export function removeAllChildren(el: Element, els?: Node | Node[]): void {\n if (!els) {\n el.replaceChildren();\n } else if (Array.isArray(els)) {\n el.replaceChildren(...els);\n } else {\n el.replaceChildren(els);\n }\n }\n\n export function loadImage(src: string): Promise<HTMLImageElement>;\n export function loadImage(src: string, callback: LoadImageCallbackType): void;\n export function loadImage(src: string, callback?: LoadImageCallbackType): Promise<HTMLImageElement> | void {\n let targetCallback: (img: HTMLImageElement) => void;\n let promise: Promise<HTMLImageElement> | undefined = undefined;\n if (callback) {\n targetCallback = callback.onload;\n } else {\n const r = Promises.withResolvers<HTMLImageElement>();\n promise = r.promise;\n targetCallback = r.resolve;\n }\n const img = new Image();\n // img.crossOrigin = 'Anonymous';\n img.onload = () => {\n targetCallback(img);\n };\n if (callback && callback.onerror) {\n img.onerror = callback.onerror;\n }\n img.src = src;\n return promise;\n }\n\n export function loadAudio(src: string): Promise<HTMLAudioElement>;\n export function loadAudio(src: string, callback: LoadAudioCallbackType): void;\n export function loadAudio(src: string, callback?: LoadAudioCallbackType): Promise<HTMLAudioElement> | void {\n let targetCallback: (audio: HTMLAudioElement) => void;\n let error: (e: any) => void;\n let promise: Promise<HTMLAudioElement> | undefined = undefined;\n if (callback) {\n targetCallback = callback.onload;\n error = callback.onerror;\n } else {\n const r = Promises.withResolvers<HTMLAudioElement>();\n promise = r.promise;\n error = r.reject;\n targetCallback = r.resolve;\n }\n const audio = new Audio('path/to/audio1.mp3');\n audio.addEventListener('canplay', () => {\n targetCallback?.(audio);\n });\n audio.addEventListener('error', e => {\n callback?.onerror(e);\n });\n audio.load();\n return promise;\n }\n\n export const toInnerHTML = (documentFragment: DocumentFragment | HTMLElement, config: { document: Document }) => {\n // if (documentFragment) {\n const tempDiv = config.document.createElement('div');\n tempDiv.appendChild(documentFragment.cloneNode(true));\n // console.log('DocumentFragment innerHTML:', tempDiv.innerHTML);\n return tempDiv.innerHTML;\n // }\n };\n // export const fragmentToHTML = (fragment: DocumentFragment, config: { document: Document } = { document }): string => {\n // const tempDiv = config.document.createElement('div');\n // tempDiv.appendChild(fragment.cloneNode(true));\n // return tempDiv.innerHTML;\n // }\n\n export const htmlToFragment = (html: string, config: { document: Document } = { document }): DocumentFragment => {\n const tempDiv = config.document.createElement('div');\n tempDiv.innerHTML = html;\n const fragment = config.document.createDocumentFragment();\n while (tempDiv.firstChild) {\n fragment.appendChild(tempDiv.firstChild);\n }\n return fragment;\n };\n\n /*\n 17 // originalDiv \uC790\uCCB4\uC640 \uC18D\uC131\uB9CC \uBCF5\uC0AC\uD558\uACE0, childSpan\uC740 \uBCF5\uC0AC\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.\n 18 const shallowCopy = originalDiv.cloneNode(false);\n 19 shallowCopy.id = 'shallowCopyDiv'; // ID \uBCC0\uACBD (\uC911\uBCF5 \uBC29\uC9C0)\n 20 console.log('\\n--- \uC595\uC740 \uBCF5\uC0AC\uBCF8 ---');\n 21 console.log(shallowCopy.outerHTML);\n 22 // \uC608\uC0C1 \uCD9C\uB825: <div id=\"shallowCopyDiv\" data-custom=\"\uC6D0\uBCF8 \uB370\uC774\uD130\"></div>\n 23\n 24 // 2. \uAE4A\uC740 \uBCF5\uC0AC (deep: true)\n 25 // originalDiv\uC640 \uADF8 \uC790\uC2DD\uC778 childSpan\uAE4C\uC9C0 \uBAA8\uB450 \uBCF5\uC0AC\uD569\uB2C8\uB2E4.\n 26 const deepCopy = originalDiv.cloneNode(true);\n 27 deepCopy.id = 'deepCopyDiv'; // ID \uBCC0\uACBD (\uC911\uBCF5 \uBC29\uC9C0)\n 28 console.log('\\n--- \uAE4A\uC740 \uBCF5\uC0AC\uBCF8 ---');\n 29 console.log(deepCopy.outerHTML);\n */\n\n export const replaceWith = (targetElement: Element, replaceElement: Element) => {\n targetElement.replaceWith(replaceElement);\n };\n export const nodeList = (documentFragment: DocumentFragment) => {\n return Array.from(documentFragment.childNodes);\n };\n\n export const cloneNodeList = (documentFragment: DocumentFragment) => {\n return Array.from(documentFragment.childNodes).map(node => node.cloneNode(true));\n };\n\n export const querySelector = (e: Element | { start: Element; end: Element }, selector: string) => {\n const elements = ElementUtils.querySelectorAll(e, selector);\n if (elements.length > 0) {\n return elements[0];\n } else {\n return null;\n }\n };\n\n export const querySelectorAll = (e: Element | { start: Node; end: Node }, selector: string) => {\n if (e instanceof Element) {\n return Array.from(e.querySelectorAll(selector));\n } else {\n const startNode = e.start;\n const endNode = e.end;\n if (startNode && endNode && startNode.parentNode === endNode.parentNode) {\n const elements: Element[] = [];\n let currentNode: Node | null = startNode.nextSibling;\n while (currentNode && currentNode !== endNode) {\n if (currentNode.nodeType === Node.ELEMENT_NODE) {\n const currentElement = currentNode as Element;\n if (currentElement.matches(selector)) {\n elements.push(currentElement);\n }\n elements.push(...Array.from(currentElement.querySelectorAll(selector)));\n }\n currentNode = currentNode.nextSibling;\n }\n return elements;\n }\n }\n return [];\n };\n\n export const selectorElements = (selector: string, element: Element | Document = document): Element[] => {\n return Array.prototype.slice.call(element.querySelectorAll(selector));\n };\n\n export const selectorNodes = (selector: string, element: Element | Document = document) => {\n return element.querySelectorAll(selector);\n };\n\n export const removeAttribute = (result: Element, attrs: string[]) => {\n attrs.forEach(it => {\n result.removeAttribute(it);\n });\n };\n\n export const setAttribute = (result: Element, attrs: string[]) => {\n attrs.forEach(it => {\n result.setAttribute(it, '');\n });\n };\n\n export const setAttributeAttr = (result: Element, attrs: Attr[]) => {\n attrs.forEach(it => {\n result.setAttribute(it.name, it.value);\n });\n };\n\n export const getAttributeToObject = (input: Element): any => {\n const attribute = {} as any;\n input.getAttributeNames().forEach(ait => {\n attribute[ait] = input.getAttribute(ait);\n });\n return attribute;\n };\n\n export const getStyleToObject = (input: HTMLElement): any => {\n const style = {} as any;\n for (let i = 0; i < input.style.length; i++) {\n const key = input.style[i];\n style[key] = (input.style as any)[key];\n }\n return style;\n };\n}\n", "export type Attr = { name: string; value: any };\nexport namespace NodeUtils {\n export enum FindNodesFilterResult {\n MATCH_AND_CONTINUE='MATCH_AND_CONTINUE', // Match the node, and continue to its children\n MATCH_AND_SKIP_CHILDREN='MATCH_AND_SKIP_CHILDREN', // Match the node, but do not traverse its children\n NO_MATCH_AND_CONTINUE='NO_MATCH_AND_CONTINUE', // Don't match the node, but continue to its children\n NO_MATCH_AND_SKIP_CHILDREN='NO_MATCH_AND_SKIP_CHILDREN' // Don't match the node, and also skip its children\n }\n // https://stackoverflow.com/questions/3955229/remove-all-child-elements-of-a-dom-node-in-javascript\n export const removeAllChildNode = (node: Node) => {\n // \uCD5C\uC2E0 api node.replaceChildren();\n while (node?.firstChild) {\n node.firstChild.remove();\n }\n };\n\n export const removeAllChildNodeAndAppend = (node: Node, newNode: Node | Node[]) => {\n // \uCD5C\uC2E0 api e.replaceChildren(data);\n removeAllChildNode(node);\n if (Array.isArray(newNode)) {\n newNode.forEach(it => node.appendChild(it));\n return;\n }\n node.appendChild(newNode);\n }\n\n export const appendChild = (parentNode: Node, childNode: Node) => {\n return parentNode.appendChild(childNode);\n };\n\n export const replaceNode = (targetNode: Node, newNode: Node) => {\n // console.log('repalceNode', targetNode, newNode, targetNode.parentNode)\n return targetNode.parentNode?.replaceChild(newNode, targetNode);\n };\n\n export const insertAfter = (targetNode: Node, newNode: Node) => {\n return targetNode.parentNode?.insertBefore(newNode, targetNode.nextSibling);\n };\n export const cloneNode = <N extends Node>(element: N, deep?: boolean) => {\n return element.cloneNode(deep ?? false) as N;\n };\n\n export const findNodes = (rootNode: Node, filter: (node: Node) => FindNodesFilterResult): Node[] => {\n const foundNodes: Node[] = [];\n\n function traverse(node: Node) {\n if (!node) {\n return;\n }\n\n // console.log('----------',node.childNodes)\n node.childNodes.forEach(child => {\n const result = filter(child);\n\n if (\n result === FindNodesFilterResult.MATCH_AND_CONTINUE ||\n result === FindNodesFilterResult.MATCH_AND_SKIP_CHILDREN\n ) {\n foundNodes.push(child);\n }\n\n if (\n result === FindNodesFilterResult.MATCH_AND_CONTINUE ||\n result === FindNodesFilterResult.NO_MATCH_AND_CONTINUE\n ) {\n traverse(child);\n }\n });\n }\n\n traverse(rootNode);\n return foundNodes;\n };\n}\n", "import { Observable } from '@dooboostore/core';\n\nexport namespace DocumentUtils {\n\n export const querySelectorAllByAttributeName = (document: Document | Element, attributeName: string): {element: Element, value: string | null}[] =>{\n const elements: {element:Element, value: (string | null)}[] = [];\n document.querySelectorAll(`[${attributeName}]`)?.forEach((element) => {\n elements.push({element: element, value: element.getAttribute(attributeName)});\n });\n return elements;\n }\n export const eventObservable = <K extends keyof WindowEventMap>(document: Document, type: K, options?: boolean | AddEventListenerOptions): Observable<WindowEventMap[K]> => {\n return new Observable<WindowEventMap[K]>((subscriber) => {\n const handler = (event: WindowEventMap[K]) => subscriber.next(event);\n window.addEventListener(type, handler, options);\n return () => {\n window.removeEventListener(type, handler, options);\n };\n });\n }\n}", "import { Observable } from '@dooboostore/core';\n\nexport namespace EventUtils {\n export const htmlElementEventObservable = <K extends keyof HTMLElementEventMap>(element: HTMLElement | Document, type: K, options?: boolean | AddEventListenerOptions): Observable<HTMLElementEventMap[K]> => {\n return new Observable<HTMLElementEventMap[K]>((subscriber) => {\n const handler = (event: HTMLElementEventMap[K]) => subscriber.next(event);\n element.addEventListener(type, handler, options);\n return () => {\n element.removeEventListener(type, handler as any, options);\n };\n });\n }\n}", "import { Observable } from '@dooboostore/core';\n\nexport namespace WindowUtils {\n\n export const eventObservable = <K extends keyof WindowEventMap>(window: Window, type: K, options?: boolean | AddEventListenerOptions): Observable<WindowEventMap[K]> => {\n return new Observable<WindowEventMap[K]>((subscriber) => {\n const handler = (event: WindowEventMap[K]) => subscriber.next(event);\n window.addEventListener(type, handler, options);\n return () => {\n window.removeEventListener(type, handler, options);\n };\n });\n }\n}\n\n", "export namespace CookieUtils {\n export type Option = {\n expireSecond?: number | null;\n maxAge?: number;\n path?: null | string;\n httpOnly?: boolean;\n secure?: boolean;\n domain?: string;\n sameSite?: 'Strict' | 'Lax' | 'None';\n };\n\n export const names = (doc: Document = document) => {\n const ar = doc.cookie.split('; ');\n const names = [];\n for (let i = 0; i < ar.length; i++) {\n const c = ar[i];\n const nv = c.split('=');\n names.push(nv[0]);\n }\n return names;\n };\n\n export const get = (name: string, doc: Document = document) => {\n const ar = doc.cookie.split('; ');\n for (let i = 0; i < ar.length; i++) {\n const c = ar[i];\n const nv = c.split('=');\n if (nv[0] == name) return decodeURIComponent(nv[1]);\n }\n return null;\n };\n\n export const make = (name: string, value: null | string, option?: Option) => {\n const cookieStr =\n name +\n '=' +\n (value ? encodeURIComponent(value) : '') +\n (option?.path ? `; path=${option?.path}` : '') +\n (option?.expireSecond !== undefined\n ? '; expires=' +\n (() => {\n if (option.expireSecond !== null) {\n const expireDate = new Date();\n expireDate.setTime(expireDate.getTime() + option.expireSecond * 1000); // mmsecond -> second\n return expireDate.toUTCString();\n } else {\n return new Date(0).toUTCString();\n }\n })()\n : '') +\n (option?.domain ? `; Domain=${option?.domain}` : '') +\n (option?.maxAge ? `; Max-Age=${option?.maxAge}` : '') +\n (option?.secure ? '; Secure' : '') +\n (option?.httpOnly ? '; HttpOnly' : '') +\n (option?.sameSite ? `; SameSite=${option.sameSite}` : '');\n return cookieStr;\n };\n\n export const set = (name: string, value: string | null, option: Option, doc: Document = document) => {\n const cookieStr = CookieUtils.make(name, value, option);\n doc.cookie = cookieStr;\n };\n\n export const remove = (name: string, option: Option, doc: Document = document) => {\n CookieUtils.set(name, null, { ...option, expireSecond: null }, doc);\n };\n}\n", "import { ConvertUtils as CoreConverUtils } from '@dooboostore/core';\n\nexport namespace ConvertUtils {\n export const coreConvertUtils = CoreConverUtils;\n\n\n export function toObject<T>(data: HTMLFormElement): T {\n const formData = new FormData(data);\n const obj: any = {};\n formData.forEach((value, key) => {\n // @ts-ignore\n obj[key] = value;\n });\n return obj as T;\n }\n export function toObjectUrl(data: File | Blob): string {\n return URL.createObjectURL(data);\n }\n\n // \uC5D0\uB7EC\uC870\uC2EC CORS: SecurityError: Failed to execute 'convertToBlob' on 'OffscreenCanvas': Tainted \"OffscreenCanvas\" may not be exported.\n // export const toBlob = async (imageBitmap: ImageBitmap) => {\n // const canvas = new OffscreenCanvas(imageBitmap.width, imageBitmap.height);\n // const context = canvas.getContext('2d');\n // context?.drawImage(imageBitmap, 0, 0);\n // return canvas.convertToBlob({ type: 'image/png' });\n export type ImageConvertConfig = { type: 'image/png' | 'image/jpeg' | string, quality?: number };\n export const isImageConvertConfig = (data: any): data is ImageConvertConfig => {\n return typeof data === 'object' && data !== null && typeof data.type === 'string';\n }\n\n export const toFile = async (imageBitmapOrCanvas: HTMLImageElement | ImageBitmap | HTMLCanvasElement | OffscreenCanvas, config: ImageConvertConfig & {filename: string;}): Promise<File> => {\n const fileName = config.filename;\n delete config['filename'];\n return new File([await ConvertUtils.toBlob({data:imageBitmapOrCanvas, config})], fileName, {type: config.type});\n }\n\n export const toArrayBuffer = async (imageBitmapOrCanvas: File | {data:HTMLImageElement | ImageBitmap | HTMLCanvasElement | OffscreenCanvas, config: ImageConvertConfig}): Promise<ArrayBuffer> => {\n if (imageBitmapOrCanvas instanceof File) {\n return imageBitmapOrCanvas.arrayBuffer();\n }\n return await (await ConvertUtils.toBlob({data:imageBitmapOrCanvas.data, config:imageBitmapOrCanvas.config})).arrayBuffer();\n }\n export const toBlob = async (imageBitmapOrCanvas: File | {data : HTMLImageElement | ImageBitmap | HTMLCanvasElement | OffscreenCanvas, config: ImageConvertConfig }): Promise<Blob> => {\n if (imageBitmapOrCanvas instanceof File) {\n return imageBitmapOrCanvas;\n }\n let canvas: HTMLCanvasElement | OffscreenCanvas;\n if (imageBitmapOrCanvas.data instanceof ImageBitmap || imageBitmapOrCanvas.data instanceof HTMLImageElement) {\n // 1. Canvas \uC0DD\uC131 \uBC0F \uC124\uC815\n canvas = document.createElement('canvas');\n canvas.width = imageBitmapOrCanvas.data.width;\n canvas.height = imageBitmapOrCanvas.data.height;\n const context = canvas.getContext('2d');\n // 2. ImageBitmap\uC744 Canvas\uC5D0 \uADF8\uB9AC\uAE30\n context.drawImage(imageBitmapOrCanvas.data, 0, 0);\n } else {\n // 1. OffscreenCanvas \uB610\uB294 HTMLCanvasElement\uB97C \uC0AC\uC6A9\n canvas = imageBitmapOrCanvas.data;\n }\n // 3. Canvas\uB97C Blob\uC73C\uB85C \uBCC0\uD658 (Promise \uC0AC\uC6A9)\n return new Promise((resolve, reject) => {\n try {\n if (canvas instanceof OffscreenCanvas) {\n // @ts-ignore\n return canvas.convertToBlob({type: imageBitmapOrCanvas.config.type, quality: imageBitmapOrCanvas.config.quality})\n } else {\n canvas.toBlob((blob) => {\n if (blob) {\n resolve(blob);\n } else {\n reject(new Error('Blob \uC0DD\uC131 \uC2E4\uD328'));\n }\n }, imageBitmapOrCanvas.config.type, imageBitmapOrCanvas.config.quality); // 'image/png' \uB610\uB294 'image/jpeg' \uC120\uD0DD \uAC00\uB2A5\n }\n } catch (e) {\n reject(e);\n }\n });\n }\n\n export const toBase64 = async (imageBitmapOrCanvas: File | Blob | HTMLImageElement | ImageBitmap | HTMLCanvasElement | OffscreenCanvas | Promise<File | Blob | HTMLImageElement | ImageBitmap | HTMLCanvasElement | OffscreenCanvas> , config: ImageConvertConfig): Promise<string> => {\n const target = imageBitmapOrCanvas instanceof Promise ? await imageBitmapOrCanvas : imageBitmapOrCanvas;\n if (target instanceof Blob) {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.onload = () => resolve(reader.result as string); // data:image/jpeg;base64,...\n reader.onerror = () => reject(new Error('\uD30C\uC77C \uC77D\uAE30 \uC2E4\uD328'));\n reader.readAsDataURL(target);\n });\n }\n\n let canvas: HTMLCanvasElement | OffscreenCanvas;\n if (target instanceof ImageBitmap || target instanceof HTMLImageElement) {\n // 1. Canvas \uC0DD\uC131 \uBC0F \uC124\uC815\n canvas = document.createElement('canvas');\n canvas.width = target.width;\n canvas.height = target.height;\n const context = canvas.getContext('2d');\n // 2. ImageBitmap\uC744 Canvas\uC5D0 \uADF8\uB9AC\uAE30\n context.drawImage(target, 0, 0);\n } else {\n // 1. OffscreenCanvas \uB610\uB294 HTMLCanvasElement\uB97C \uC0AC\uC6A9\n canvas = target;\n }\n\n\n return new Promise((resolve, reject) => {\n try {\n if (canvas instanceof OffscreenCanvas) {\n // @ts-ignore\n const blob: Blob = canvas.convertToBlob({type: config.type, quality: config.quality})\n if (blob) {\n const reader = new FileReader();\n reader.onloadend = () => {\n // reader.result\uC5D0\uB294 \"data:image/png;base64,iVBORw0KGgo...\" \uC640 \uAC19\uC740 \uBB38\uC790\uC5F4\uC774 \uD3EC\uD568\uB429\uB2C8\uB2E4.\n resolve(reader.result as string);\n };\n reader.onerror = (error) => {\n reject(new Error('Blob\uC744 base64\uB85C \uBCC0\uD658\uD558\uB294 \uC911 \uC624\uB958 \uBC1C\uC0DD: ' + error));\n };\n reader.readAsDataURL(blob);\n } else {\n reject(new Error('Blob \uC0DD\uC131 \uC2E4\uD328'));\n }\n } else {\n const base64String = canvas.toDataURL(config.type, config.quality); // \"data:image/png;base64,...\"\n resolve(base64String);\n }\n } catch (e) {\n reject(e);\n }\n })\n }\n\n export function toImageBitmap(target: File | Blob | HTMLImageElement | HTMLCanvasElement | OffscreenCanvas): Promise<ImageBitmap> {\n return createImageBitmap(target)\n }\n\n // \uC5D0\uB7EC\uC870\uC2EC CORS: SecurityError: Failed to execute 'convertToBlob' on 'OffscreenCanvas': Tainted \"OffscreenCanvas\" may not be exported.\n export const toBlobURL = async (imageBitmapOrCanvas: File | {data: ImageBitmap | HTMLCanvasElement | OffscreenCanvas, config: ImageConvertConfig}): Promise<string> => {\n const blob = await toBlob(imageBitmapOrCanvas);\n return ConvertUtils.toObjectUrl(blob)\n };\n\n export const compressImageToBase64 = async (img: ImageBitmap | File, config: { maxWidth: number } & ImageConvertConfig) => {\n const imageBitmapOrCanvas = await ConvertUtils.compressImage(img, config);\n return ConvertUtils.toBase64(imageBitmapOrCanvas, config);\n }\n\n export async function compressImage(img: ImageBitmap | File, config: { maxWidth: number } & ImageConvertConfig): Promise<Blob>;\n export async function compressImage(img: ImageBitmap | File, config: { maxWidth: number } & ImageBitmapOptions): Promise<ImageBitmap>;\n export async function compressImage(img: ImageBitmap | File, config: { maxWidth: number } & (ImageConvertConfig | ImageBitmapOptions)): Promise<Blob | ImageBitmap> {\n// \uC6D0\uD558\uB294 \uD06C\uAE30 \uC124\uC815 (\uC608: \uCD5C\uB300 \uB108\uBE44 800px)\n// console.log('--------------------11')\n if (img instanceof File) {\n img = await ConvertUtils.toImageBitmap(img);\n }\n // console.log('--------------------22')\n const target = img as ImageBitmap;\n return new Promise<Blob | Promise<ImageBitmap>>((resolve, reject) => {\n const MAX_WIDTH = config.maxWidth;\n let width = target.width;\n let height = target.height;\n\n if (width > MAX_WIDTH) {\n height = (MAX_WIDTH / width) * height;\n width = MAX_WIDTH;\n }\n const canvas = document.createElement('canvas');\n const ctx = canvas.getContext('2d');\n canvas.width = width;\n canvas.height = height;\n ctx.drawImage(target, 0, 0, width, height);\n\n if (isImageConvertConfig(config)) {\n // Canvas\uB97C Blob\uC73C\uB85C \uBCC0\uD658 (\uC555\uCD95 \uD488\uC9C8 0.7)\n canvas.toBlob(async (blob) => {\n resolve(blob);\n }, config.type, config.quality); // JPEG \uD3EC\uB9F7, \uD488\uC9C8 0.7\n } else {\n resolve(createImageBitmap(canvas));\n }\n })\n\n }\n}", "export namespace ClipBoardUtils {\n export const readText = (window: Window): Promise<string> => {\n return window.navigator.clipboard.readText();\n }\n\n export const read = (window: Window): Promise<ClipboardItems> => {\n return window.navigator.clipboard.read();\n }\n\n export const writeText = (data: string, window: Window): Promise<void> => {\n\n if (window.navigator.clipboard) {\n return window.navigator.clipboard\n .writeText(data);\n } else {\n // console.log('copy exec command use');\n return new Promise((resolve, reject) => {\n try {\n const textarea = document.createElement('textarea');\n textarea.value = data;\n textarea.style.position = 'fixed'; // Prevent scrolling to bottom of page in MS Edge.\n textarea.style.opacity = '0'; // Hide the textarea\n document.body.appendChild(textarea);\n textarea.focus();\n textarea.select();\n const copyExec = document.execCommand('copy');\n document.body.removeChild(textarea);\n if (copyExec) {\n resolve();\n // alert('copied!');\n } else {\n reject(new Error('copy failed'));\n }\n } catch (err) {\n reject(err);\n }\n });\n\n }\n }\n export const write = (data: ClipboardItems, clipboard: Clipboard = navigator.clipboard): Promise<void> => {\n return clipboard.write(data);\n }\n}", "export namespace DownloadUtils {\n export const download = (window: Window, url: string | Blob, filename: string = 'download') => {\n /*\n const response = await fetch(imageUrl);\n if (!response.ok) throw new Error('Failed to fetch image');\n const blob = await response.blob();\n */\n const a = window.document.createElement('a');\n const targetUrl = typeof url === 'string' ? url : URL.createObjectURL(url);\n a.href = targetUrl;\n a.download = filename;\n a.style.display = 'none'; // Add this line to hide the element\n window.document.body.appendChild(a);\n a.click();\n window.document.body.removeChild(a);\n URL.revokeObjectURL(targetUrl);\n }\n export const csvDownload = <T>(window: Window, datas: T[], config: {includeHeader?: string, headers: (keyof T)[]}) => {\n\n // const headers = ['category', 'dateISO', 'letter', 'dataset'];\n\n const csv = datas.map(row => {\n return config.headers.map(fieldName => {\n let value = (row as any)[fieldName];\n if (value && typeof value === 'object') {\n value = JSON.stringify(value);\n }\n\n const stringValue = String(value === null || value === undefined ? '' : value);\n if (stringValue.includes(',') || stringValue.includes('\"') || stringValue.includes('\\n')) {\n return `\"${stringValue.replace(/\"/g, '\"\"')}\"`;\n }\n return stringValue;\n }).join(',');\n });\n if(config.includeHeader) {\n csv.unshift(config.headers.join(','));\n }\n const csvString = csv.join('\\r\\n');\n\n const blob = new Blob([csvString], { type: 'text/csv;charset=utf-8;' });\n const url = URL.createObjectURL(blob);\n const link = document.createElement('a');\n link.setAttribute('href', url);\n link.setAttribute('download', 'flag-data.csv');\n link.style.visibility = 'hidden';\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n URL.revokeObjectURL(url);\n }\n}", "export namespace LocationUtils {\n export const hash = (window: Window): string => {\n return window.location.hash.replace('#', '')\n }\n\n export const hashPath = (window: Window): string => {\n return window.location.hash.replace('#', '').split('?')[0]\n }\n\n // search\uB294 \uC55E\uC5D0 ? \uBD99\uC5B4\uC788\uB2E4 \uBE0C\uB77C\uC6B0\uC800\uC5D0\uC11C\uB3C4 location.search\n export const hashSearch = (window: Window): string => {\n const string = window.location.hash.replace('#', '').split('?')[1];\n return string ? `?${string}` : '';\n }\n\n export const hashQueryParams = (window: Window): Map<string, string> => {\n const s = window.location.hash.replace('#', '').split('?')[1] || '';\n return LocationUtils.queryStringToMap(s);\n }\n\n export const path = (window: Window): string => {\n return window.location.pathname;\n }\n\n export const search = (window: Window): string => {\n return window.location.search || '';\n }\n\n\n export const pathQueryParamsObject = (window: Window): { [key:string]: string } => {\n return LocationUtils.queryStringToObject(window.location.search.substring(1));\n }\n\n export const hashQueryParamsObject = (window: Window): { [key:string]: string } => {\n const s = window.location.hash.split('?').pop() ?? '';\n if (s.startsWith('#')) {\n return {};\n } else {\n return LocationUtils.queryStringToObject(s);\n }\n }\n\n export const pathQueryParams = (window: Window): Map<string, string> => {\n return LocationUtils.queryStringToMap(window.location.search.substring(1));\n }\n\n export const queryStringToMap = (s: string) => {\n const params = new Map<string, string>();\n const vars = s.split('&') || [];\n vars.forEach(it => {\n const kv = it.split('=') || [];\n if (kv[0] && kv[0].length > 0) {\n params.set(kv[0], kv[1]);\n }\n })\n return params;\n }\n\n export const queryStringToObject = (s: string): { [key:string]: string } => {\n const params = {} as { [key:string]: string };\n const vars = s.split('&') || [];\n vars.forEach(it => {\n const kv = it.split('=') || [];\n if (kv[0] && kv[0].length > 0) {\n params[kv[0]] = kv[1];\n }\n })\n return params;\n }\n}\n", "export namespace StyleCssUtils {\n\n export const getPropertyValue = (valueName: string, config: { el: Element; window: Window }) => {\n return config.window.getComputedStyle(config.el).getPropertyValue(valueName);\n };\n\n export const setPropertyValue = (valueName: string, value: string, el: HTMLElement) => {\n el.style.setProperty(valueName, value);\n };\n\n export const getComputedStyle = (config: { el: Element; window: Window }) => {\n return config.window.getComputedStyle(config.el);\n };\n\n export const getPropertyEntries = (config: { el?: Element; window: Window }) => {\n const variables = new Set<string>();\n let targetElement = config.el;\n if (!config.el) {\n targetElement = config.window.document.documentElement;\n Array.from(config.window.document.styleSheets).forEach(sheet => {\n try {\n Array.from(sheet.cssRules).forEach(rule => {\n // :root \uB610\uB294 \uB2E4\uB978 \uC120\uD0DD\uC790\uC5D0\uC11C \uCEE4\uC2A4\uD140 \uC18D\uC131 \uCC3E\uAE30\n if ('style' in rule && rule.style instanceof CSSStyleDeclaration) {\n Array.from(rule.style)\n .filter(prop => prop.startsWith('--'))\n .forEach(prop => variables.add(prop));\n }\n });\n } catch (e) {\n console.warn('\uC2A4\uD0C0\uC77C\uC2DC\uD2B8 \uC811\uADFC \uC81C\uD55C:', e); // CORS\uB85C \uC778\uD574 \uC678\uBD80 CSS \uC811\uADFC \uBD88\uAC00 \uC2DC\n }\n });\n }\n\n const computedStyles = config.window.getComputedStyle(targetElement);\n Array.from(computedStyles).filter(prop => prop.startsWith('--')).forEach(it => {\n variables.add(it);\n })\n\n return Array.from(variables).map(it => [it, computedStyles.getPropertyValue(it)])\n };\n\n\n // export class CssVarDebugger {\n // static getAllCssVars(element = document.documentElement) {\n // const styles = getComputedStyle(element);\n // const allVars = {};\n //\n // for (let i = 0; i < styles.length; i++) {\n // const prop = styles[i];\n // if (prop.startsWith('--')) {\n // allVars[prop] = styles.getPropertyValue(prop);\n // }\n // }\n //\n // return allVars;\n // }\n //\n // static logCssVars(selector = ':root') {\n // const element = document.querySelector(selector);\n // console.table(this.getAllCssVars(element));\n // }\n // }\n // // \uD2B9\uC815 \uCEF4\uD3EC\uB10C\uD2B8\uC758 \uB8E8\uD2B8 \uC694\uC18C\uC5D0 \uB300\uD574\n // const componentElement = document.querySelector('\uCEF4\uD3EC\uB10C\uD2B8 \uC120\uD0DD\uC790');\n // const computedStyles = window.getComputedStyle(componentElement);\n // console.log('All CSS variables:',\n // [...computedStyles].filter(prop => prop.startsWith('--')).map(prop =>\n // `${prop}: ${computedStyles.getPropertyValue(prop)}`\n // )\n // );\n // // \uD2B9\uC815 \uC694\uC18C\uC758 CSS \uBCC0\uC218 \uAC12 \uAC00\uC838\uC624\uAE30\n // const element = document.querySelector('\uC120\uD0DD\uC790');\n // const value = getComputedStyle(element).getPropertyValue('--\uBCC0\uC218\uBA85');\n //\n // // \uC804\uC5ED CSS \uBCC0\uC218 \uAC12 \uAC00\uC838\uC624\uAE30 (:root\uC5D0 \uC815\uC758\uB41C \uBCC0\uC218)\n // const globalValue = getComputedStyle(document.documentElement).getPropertyValue('--\uBCC0\uC218\uBA85');\n //\n // // CSS \uBCC0\uC218 \uAC12 \uC124\uC815\uD558\uAE30\n // element.style.setProperty('--\uBCC0\uC218\uBA85', '\uC0C8 \uAC12');\n}\n", "import { Observable } from '@dooboostore/core';\nimport { Subscription } from '@dooboostore/core';\nimport { AutoCloseSubscription } from '@dooboostore/core';\n\nexport namespace AnimationFrameUtils {\n export type FpsConfigParamType = { window: Window; second?: number };\n\n export type FpsCallBackData = {\n fpsConfigParam: FpsConfigParamType;\n fps: number;\n startTimestamp: number;\n timestamp: number;\n };\n\n // fps\n export function fps(params: FpsConfigParamType, callback: (value: FpsCallBackData) => void): Subscription {\n let startTimestamp: number | null = null;\n let stop = false;\n\n const animate = (currentTimestamp: number) => {\n if (startTimestamp !== null) {\n const delta = currentTimestamp - startTimestamp;\n const fps = ((params?.second ?? 1) * 1000) / delta; // \uBC00\uB9AC\uCD08\uB97C \uCD08\uB2F9 \uD504\uB808\uC784\uC73C\uB85C \uBCC0\uD658\n callback({ fpsConfigParam: params, fps, startTimestamp: startTimestamp, timestamp: currentTimestamp });\n }\n startTimestamp = currentTimestamp;\n\n if (!stop) {\n window.requestAnimationFrame(animate);\n }\n };\n\n window.requestAnimationFrame(animate);\n\n\n return new AutoCloseSubscription(()=>stop=true);\n }\n // export function fps(params: FpsConfigParamType): Promise<number>;\n // export function fps(params: FpsConfigParamType, callback?: (value: number) => void): Promise<number> | void {\n // let targetCallback: (value: number) => void;\n // let promise: Promise<number>;\n // if (callback) {\n // targetCallback = callback;\n // } else {\n // const promiseSet = Promises.withResolvers<number>();\n // promise = promiseSet.promise;\n // targetCallback = promiseSet.resolve;\n // }\n // // const second = 1;\n // let startTime = null;\n // let frameCount = 0;\n // const mm = (params.second ?? 0) + 1000;\n //\n // // timestamp\uB294 \uC560\uB2C8\uBA54\uC774\uC158 \uC694\uCCAD\uC774 \uC2DC\uC791\uB41C \uC774\uD6C4 \uACBD\uACFC\uD55C \uC2DC\uAC04\uC744 \uBC00\uB9AC\uCD08 \uB2E8\uC704\uB85C \uB098\uD0C0\uB0C5\uB2C8\uB2E4.\n // const animate = (timestamp: number) => {\n // if (startTime === null) {\n // startTime = timestamp;\n // }\n // frameCount++;\n // // 1\uCD08 \uD6C4\uC5D0 FPS \uACC4\uC0B0\n // if (timestamp - startTime >= mm) {\n // const fps = frameCount / ((timestamp - startTime) / mm);\n // targetCallback(fps); // frameCount\n // } else {\n // window.requestAnimationFrame(animate);\n // }\n // }\n // window.requestAnimationFrame(animate);\n // return promise;\n // }\n\n // export const fpsSubscribe = (config: FpsConfigParamType, callback: (value: number) => void): Subscription => {\n // let stop = false;\n // const data = () => {\n // AnimationFrameUtils.fps(config, (v) => {\n // if (stop) return;\n // callback(v)\n // data();\n // })\n // }\n // data();\n // return {\n // unsubscribe: () => {\n // stop = true;\n // }\n // }\n // }\n\n export const dividePerFpsObservable = ({\n fpsConfig,\n divideSize\n }: {\n fpsConfig: FpsConfigParamType;\n divideSize: number;\n }): Observable<FpsCallBackData & { gapPosition: number; gapSize: number }> => {\n return new Observable<FpsCallBackData & { gapPosition: number; gapSize: number }>(subscriber => {\n const handler = (event: FpsCallBackData & { gapPosition: number; gapSize: number }) => subscriber.next(event);\n // \uB514\uC2A4\uD50C\uB808\uC774\uB9C8\uB2E4 \uB2E4\uB974\uAC8C \uB098\uC62C \uC218 \uC788\uC74C \uBAA8\uB2C8\uD130 \uD5E4\uB974\uCE20\n let fps = 0;\n // 1\uCD08\uB2F9 \uADF8\uB9AC\uACE0 \uC2F6\uC740 \uD69F\uC218 (\uC774\uAC78\uB85C \uC560\uB2C8\uBA54\uC774\uC158\uC744 \uADF8\uB9B4 \uB54C \uBA87\uBC88 \uADF8\uB9B4\uC9C0 \uACB0\uC815) \uC131\uB2A5\uC870\uC808\uAC00\uB2A5\n // private readonly drawCountPerSecond: number = 60;\n const getDrawFpsGap = () => {\n return Math.floor(fps / divideSize);\n };\n\n let gapPosition = 0;\n\n const fpsSubscription = AnimationFrameUtils.fps(fpsConfig, fpsConfig => {\n fps = fpsConfig.fps;\n gapPosition++;\n const gapSize = getDrawFpsGap();\n if (gapPosition >= gapSize) {\n // console.log('dddddddddrrrrraaaww' , fpsConfig, divideSize, animationCount, drawFpsGap)\n handler({ ...fpsConfig, ...{ gapPosition, gapSize } });\n gapPosition = 0;\n }\n });\n\n return () => {\n fpsSubscription.unsubscribe();\n };\n });\n\n // @ts-ignore\n // return {\n // subscribe: (res) => {\n // // \uB514\uC2A4\uD50C\uB808\uC774\uB9C8\uB2E4 \uB2E4\uB974\uAC8C \uB098\uC62C \uC218 \uC788\uC74C \uBAA8\uB2C8\uD130 \uD5E4\uB974\uCE20\n // let fps = 0;\n // // 1\uCD08\uB2F9 \uADF8\uB9AC\uACE0 \uC2F6\uC740 \uD69F\uC218 (\uC774\uAC78\uB85C \uC560\uB2C8\uBA54\uC774\uC158\uC744 \uADF8\uB9B4 \uB54C \uBA87\uBC88 \uADF8\uB9B4\uC9C0 \uACB0\uC815) \uC131\uB2A5\uC870\uC808\uAC00\uB2A5\n // // private readonly drawCountPerSecond: number = 60;\n // const getDrawFpsGap = () => {\n // return Math.floor(fps / divideSize);\n // }\n //\n // let gapPosition = 0;\n //\n // const fpsSubscription = AnimationFrameUtils.fps(fpsConfig, (fpsConfig) => {\n // fps = fpsConfig.fps;\n // gapPosition++;\n // const gapSize = getDrawFpsGap();\n // if (gapPosition >= gapSize) {\n // // console.log('dddddddddrrrrraaaww' , fpsConfig, divideSize, animationCount, drawFpsGap)\n // res({...fpsConfig, ...{gapPosition, gapSize} });\n // gapPosition = 0;\n // }\n // });\n // return {\n // unsubscribe: () => {\n // fpsSubscription.unsubscribe();\n // }\n // };\n // }\n // }\n };\n}\n", "import {ValidUtils as CoreValidUtils} from '@dooboostore/core';\n\nexport namespace ValidUtils {\n export const coreValidUtils = CoreValidUtils;\n export const isBrowser = (callBack?: (win: Window) => void): boolean => {\n const boolean = (typeof window !== 'undefined') && (typeof Window !== 'undefined');\n if (boolean && callBack) {\n callBack(window);\n }\n return boolean;\n };\n\n export const hasParentWindow = (win: Window) => ValidUtils.isBrowser() && win.parent && win !== win.parent;\n\n //////////////\n /**\n * SNS Inapp Browser Check\n * \uCE74\uCE74\uC624\uD1A1 / \uB124\uC774\uBC84 / \uD398\uC774\uC2A4\uBD81 / \uC778\uC2A4\uD0C0\uADF8\uB7A8 \uC9C0\uC6D0\n */\n export const isSocialNetworkServiceInappBrowser = (): boolean => {\n const userAgent = ValidUtils.isBrowser() ? window.navigator.userAgent.toLowerCase() : 'none';\n return /kakaotalk|naver|facebook|insta|FBAN|FBAV/.test(userAgent);\n };\n\n /**\n * IOS Webview \uC811\uC18D\uC778\uC9C0 \uCCB4\uD06C\n */\n export const isWkWebview = (): boolean =>\n ValidUtils.isBrowser() &&\n (window as any)['webkit'] != null &&\n (window as any)['webkit'].messageHandlers != null &&\n (window as any)['webkit'].messageHandlers['System'] != null;\n export function isiPhone(): boolean {\n return ValidUtils.isBrowser() && /iphone|ipad|ipod/i.test(navigator.userAgent.toLowerCase());\n }\n /**\n * Android Webview \uC811\uC18D\uC778\uC9C0 \uCCB4\uD06C\n */\n export const isAndroidWebview = (): boolean => {\n return ValidUtils.isBrowser() && (window as any)['System'] != null;\n };\n\n export const isMobile = (win?: Window): boolean => {\n const targetWindow = win ?? (isBrowser() ? window : undefined);\n if (!targetWindow) {\n return false;\n }\n return /Mobi/i.test(targetWindow.navigator.userAgent);\n };\n\n\n}\n"],
5
- "mappings": "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",
6
- "names": ["Reflect", "hasOwn", "metadataRegistry", "metadata", "OrdinaryDefineOwnMetadata", "OrdinaryHasOwnMetadata", "OrdinaryGetOwnMetadata", "OrdinaryOwnMetadataKeys", "defineMetadata", "hasOwnMetadata", "getOwnMetadata", "getOwnMetadataKeys", "deleteMetadata", "MapIterator", "Map", "Set", "WeakMap", "ensureInit", "import_reflect_metadata", "ValidUtils", "isDefined", "ArrayUtils", "ObjectUtils", "Path", "Script", "StringUtils", "DateUtils", "format", "age", "milliSecond", "MathUtil", "min", "max", "minMax", "sum", "ratio", "x", "bezier", "ConvertUtils", "obj", "RandomUtils", "uuid", "hex", "_Subscription", "e", "Promises", "Result", "p", "_RenderTransactionDrawObj", "startPoint", "points", "index", "Schedule", "UrlUtils", "ReflectUtils", "FunctionUtils", "_Optional", "OptionalUtils", "ImageUtils", "Expression", "Path", "ensureInit", "ensureInit", "ensureInit", "ensureInit", "host", "ensureInit", "host", "ensureInit", "host", "ensureInit", "host", "SwcUtils", "host", "match", "ensureInit", "containers", "InjectSituationType", "ensureInit", "host", "proto", "appHost", "name", "RouterAction", "CanvasUtils", "Context2D", "ElementUtils", "attribute", "NodeUtils", "FindNodesFilterResult", "DocumentUtils", "document", "EventUtils", "WindowUtils", "window", "CookieUtils", "names", "ConvertUtils", "ClipBoardUtils", "window", "DownloadUtils", "window", "LocationUtils", "window", "StyleCssUtils", "AnimationFrameUtils", "fps", "fpsConfig", "ValidUtils"]
3
+ "sources": ["../../../../../node_modules/.pnpm/reflect-metadata@0.2.2/node_modules/reflect-metadata/Reflect.js", "../../src/bundle-entry.ts", "../../src/index.ts", "../../../core/src/valid/ValidUtils.ts", "../../../core/src/array/ArrayUtils.ts", "../../../core/src/types.ts", "../../../core/src/parser/path/ObjectPathParser.ts", "../../../core/src/object/ObjectUtils.ts", "../../../core/src/string/StringUtils.ts", "../../../core/src/date/DateUtils.ts", "../../../core/src/entity/Point2D.ts", "../../../core/src/entity/Vector.ts", "../../../core/src/entity/Point3D.ts", "../../../core/src/entity/SizeType.ts", "../../../core/src/entity/Rect.ts", "../../../core/src/entity/object/obj/Obj.ts", "../../../core/src/math/MathUtil.ts", "../../../core/src/convert/ConvertUtils.ts", "../../../core/src/random/RandomUtils.ts", "../../../core/src/message/Subscription.ts", "../../../core/src/message/Subscriber.ts", "../../../core/src/message/Observable.ts", "../../../core/src/message/AutoCloseSubscription.ts", "../../../core/src/promise/AbortablePromise.ts", "../../../core/src/promise/Promises.ts", "../../../core/src/entity/object/obj/RenderDrawObj.ts", "../../../core/src/entity/object/obj/RenderTransactionDrawObj.ts", "../../../core/src/schedule/Schedule.ts", "../../../core/src/url/UrlUtils.ts", "../../../core/src/reflect/ReflectUtils.ts", "../../../core/src/function/FunctionUtils.ts", "../../../core/src/optional/Optional.ts", "../../../core/src/optional/OptionalUtils.ts", "../../../core/src/image/ImageUtils.ts", "../../../core/src/expression/Expression.ts", "../../../core/src/expression/ActionExpression.ts", "../../src/decorators/addEventListener.ts", "../../src/decorators/lifecycles.ts", "../../src/utils/Utils.ts", "../../src/decorators/emitCustomEvent.ts", "../../src/decorators/changedAttributeHost.ts", "../../src/decorators/applyAttribute.ts", "../../src/decorators/query.ts", "../../src/decorators/queryAll.ts", "../../src/config/config.ts", "../../../simple-boot/src/decorators/inject/Inject.ts", "../../src/types.ts", "../../../core-web/src/element/CanvasUtils.ts", "../../../core-web/src/element/ElementUtils.ts", "../../../core-web/src/node/NodeUtils.ts", "../../../core-web/src/document/DocumentUtils.ts", "../../../core-web/src/event/EventUtils.ts", "../../../core-web/src/window/WindowUtils.ts", "../../../core-web/src/cookie/CookieUtils.ts", "../../../core-web/src/convert/ConvertUtils.ts", "../../../core-web/src/clipboard/ClipBoardUtils.ts", "../../../core-web/src/download/DownloadUtils.ts", "../../../core-web/src/location/LocationUtils.ts", "../../../core-web/src/stylecss/StyleCssUtils.ts", "../../../core-web/src/animation/AnimationFrameUtils.ts", "../../../core-web/src/valid/ValidUtils.ts", "../../src/decorators/elementDefine.ts", "../../src/decorators/attribute.ts", "../../src/decorators/applyNode.ts", "../../src/decorators/applyClass.ts", "../../src/decorators/applyStyle.ts", "../../src/decorators/setProperty.ts", "../../src/decorators/subscribeSwcAppRouteChange.ts", "../../../simple-boot/src/decorators/SimDecorator.ts", "../../../simple-boot/src/decorators/aop/AOPDecorator.ts", "../../../simple-boot/src/decorators/exception/ExceptionDecorator.ts", "../../../simple-boot/src/decorators/SimNoProxy.ts", "../../../simple-boot/src/decorators/inject/Injection.ts", "../../../simple-boot/src/decorators/route/Router.ts", "../../../simple-boot/src/route/RouterAction.ts"],
4
+ "sourcesContent": ["/*! *****************************************************************************\nCopyright (C) Microsoft. All rights reserved.\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\nthis file except in compliance with the License. You may obtain a copy of the\nLicense at http://www.apache.org/licenses/LICENSE-2.0\n\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\nMERCHANTABLITY OR NON-INFRINGEMENT.\n\nSee the Apache Version 2.0 License for specific language governing permissions\nand limitations under the License.\n***************************************************************************** */\nvar Reflect;\n(function (Reflect) {\n // Metadata Proposal\n // https://rbuckton.github.io/reflect-metadata/\n (function (factory) {\n var root = typeof globalThis === \"object\" ? globalThis :\n typeof global === \"object\" ? global :\n typeof self === \"object\" ? self :\n typeof this === \"object\" ? this :\n sloppyModeThis();\n var exporter = makeExporter(Reflect);\n if (typeof root.Reflect !== \"undefined\") {\n exporter = makeExporter(root.Reflect, exporter);\n }\n factory(exporter, root);\n if (typeof root.Reflect === \"undefined\") {\n root.Reflect = Reflect;\n }\n function makeExporter(target, previous) {\n return function (key, value) {\n Object.defineProperty(target, key, { configurable: true, writable: true, value: value });\n if (previous)\n previous(key, value);\n };\n }\n function functionThis() {\n try {\n return Function(\"return this;\")();\n }\n catch (_) { }\n }\n function indirectEvalThis() {\n try {\n return (void 0, eval)(\"(function() { return this; })()\");\n }\n catch (_) { }\n }\n function sloppyModeThis() {\n return functionThis() || indirectEvalThis();\n }\n })(function (exporter, root) {\n var hasOwn = Object.prototype.hasOwnProperty;\n // feature test for Symbol support\n var supportsSymbol = typeof Symbol === \"function\";\n var toPrimitiveSymbol = supportsSymbol && typeof Symbol.toPrimitive !== \"undefined\" ? Symbol.toPrimitive : \"@@toPrimitive\";\n var iteratorSymbol = supportsSymbol && typeof Symbol.iterator !== \"undefined\" ? Symbol.iterator : \"@@iterator\";\n var supportsCreate = typeof Object.create === \"function\"; // feature test for Object.create support\n var supportsProto = { __proto__: [] } instanceof Array; // feature test for __proto__ support\n var downLevel = !supportsCreate && !supportsProto;\n var HashMap = {\n // create an object in dictionary mode (a.k.a. \"slow\" mode in v8)\n create: supportsCreate\n ? function () { return MakeDictionary(Object.create(null)); }\n : supportsProto\n ? function () { return MakeDictionary({ __proto__: null }); }\n : function () { return MakeDictionary({}); },\n has: downLevel\n ? function (map, key) { return hasOwn.call(map, key); }\n : function (map, key) { return key in map; },\n get: downLevel\n ? function (map, key) { return hasOwn.call(map, key) ? map[key] : undefined; }\n : function (map, key) { return map[key]; },\n };\n // Load global or shim versions of Map, Set, and WeakMap\n var functionPrototype = Object.getPrototypeOf(Function);\n var _Map = typeof Map === \"function\" && typeof Map.prototype.entries === \"function\" ? Map : CreateMapPolyfill();\n var _Set = typeof Set === \"function\" && typeof Set.prototype.entries === \"function\" ? Set : CreateSetPolyfill();\n var _WeakMap = typeof WeakMap === \"function\" ? WeakMap : CreateWeakMapPolyfill();\n var registrySymbol = supportsSymbol ? Symbol.for(\"@reflect-metadata:registry\") : undefined;\n var metadataRegistry = GetOrCreateMetadataRegistry();\n var metadataProvider = CreateMetadataProvider(metadataRegistry);\n /**\n * Applies a set of decorators to a property of a target object.\n * @param decorators An array of decorators.\n * @param target The target object.\n * @param propertyKey (Optional) The property key to decorate.\n * @param attributes (Optional) The property descriptor for the target key.\n * @remarks Decorators are applied in reverse order.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * Example = Reflect.decorate(decoratorsArray, Example);\n *\n * // property (on constructor)\n * Reflect.decorate(decoratorsArray, Example, \"staticProperty\");\n *\n * // property (on prototype)\n * Reflect.decorate(decoratorsArray, Example.prototype, \"property\");\n *\n * // method (on constructor)\n * Object.defineProperty(Example, \"staticMethod\",\n * Reflect.decorate(decoratorsArray, Example, \"staticMethod\",\n * Object.getOwnPropertyDescriptor(Example, \"staticMethod\")));\n *\n * // method (on prototype)\n * Object.defineProperty(Example.prototype, \"method\",\n * Reflect.decorate(decoratorsArray, Example.prototype, \"method\",\n * Object.getOwnPropertyDescriptor(Example.prototype, \"method\")));\n *\n */\n function decorate(decorators, target, propertyKey, attributes) {\n if (!IsUndefined(propertyKey)) {\n if (!IsArray(decorators))\n throw new TypeError();\n if (!IsObject(target))\n throw new TypeError();\n if (!IsObject(attributes) && !IsUndefined(attributes) && !IsNull(attributes))\n throw new TypeError();\n if (IsNull(attributes))\n attributes = undefined;\n propertyKey = ToPropertyKey(propertyKey);\n return DecorateProperty(decorators, target, propertyKey, attributes);\n }\n else {\n if (!IsArray(decorators))\n throw new TypeError();\n if (!IsConstructor(target))\n throw new TypeError();\n return DecorateConstructor(decorators, target);\n }\n }\n exporter(\"decorate\", decorate);\n // 4.1.2 Reflect.metadata(metadataKey, metadataValue)\n // https://rbuckton.github.io/reflect-metadata/#reflect.metadata\n /**\n * A default metadata decorator factory that can be used on a class, class member, or parameter.\n * @param metadataKey The key for the metadata entry.\n * @param metadataValue The value for the metadata entry.\n * @returns A decorator function.\n * @remarks\n * If `metadataKey` is already defined for the target and target key, the\n * metadataValue for that key will be overwritten.\n * @example\n *\n * // constructor\n * @Reflect.metadata(key, value)\n * class Example {\n * }\n *\n * // property (on constructor, TypeScript only)\n * class Example {\n * @Reflect.metadata(key, value)\n * static staticProperty;\n * }\n *\n * // property (on prototype, TypeScript only)\n * class Example {\n * @Reflect.metadata(key, value)\n * property;\n * }\n *\n * // method (on constructor)\n * class Example {\n * @Reflect.metadata(key, value)\n * static staticMethod() { }\n * }\n *\n * // method (on prototype)\n * class Example {\n * @Reflect.metadata(key, value)\n * method() { }\n * }\n *\n */\n function metadata(metadataKey, metadataValue) {\n function decorator(target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey) && !IsPropertyKey(propertyKey))\n throw new TypeError();\n OrdinaryDefineOwnMetadata(metadataKey, metadataValue, target, propertyKey);\n }\n return decorator;\n }\n exporter(\"metadata\", metadata);\n /**\n * Define a unique metadata entry on the target.\n * @param metadataKey A key used to store and retrieve metadata.\n * @param metadataValue A value that contains attached metadata.\n * @param target The target object on which to define metadata.\n * @param propertyKey (Optional) The property key for the target.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * Reflect.defineMetadata(\"custom:annotation\", options, Example);\n *\n * // property (on constructor)\n * Reflect.defineMetadata(\"custom:annotation\", options, Example, \"staticProperty\");\n *\n * // property (on prototype)\n * Reflect.defineMetadata(\"custom:annotation\", options, Example.prototype, \"property\");\n *\n * // method (on constructor)\n * Reflect.defineMetadata(\"custom:annotation\", options, Example, \"staticMethod\");\n *\n * // method (on prototype)\n * Reflect.defineMetadata(\"custom:annotation\", options, Example.prototype, \"method\");\n *\n * // decorator factory as metadata-producing annotation.\n * function MyAnnotation(options): Decorator {\n * return (target, key?) => Reflect.defineMetadata(\"custom:annotation\", options, target, key);\n * }\n *\n */\n function defineMetadata(metadataKey, metadataValue, target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n return OrdinaryDefineOwnMetadata(metadataKey, metadataValue, target, propertyKey);\n }\n exporter(\"defineMetadata\", defineMetadata);\n /**\n * Gets a value indicating whether the target object or its prototype chain has the provided metadata key defined.\n * @param metadataKey A key used to store and retrieve metadata.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey (Optional) The property key for the target.\n * @returns `true` if the metadata key was defined on the target object or its prototype chain; otherwise, `false`.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Reflect.hasMetadata(\"custom:annotation\", Example);\n *\n * // property (on constructor)\n * result = Reflect.hasMetadata(\"custom:annotation\", Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Reflect.hasMetadata(\"custom:annotation\", Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Reflect.hasMetadata(\"custom:annotation\", Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Reflect.hasMetadata(\"custom:annotation\", Example.prototype, \"method\");\n *\n */\n function hasMetadata(metadataKey, target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n return OrdinaryHasMetadata(metadataKey, target, propertyKey);\n }\n exporter(\"hasMetadata\", hasMetadata);\n /**\n * Gets a value indicating whether the target object has the provided metadata key defined.\n * @param metadataKey A key used to store and retrieve metadata.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey (Optional) The property key for the target.\n * @returns `true` if the metadata key was defined on the target object; otherwise, `false`.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Reflect.hasOwnMetadata(\"custom:annotation\", Example);\n *\n * // property (on constructor)\n * result = Reflect.hasOwnMetadata(\"custom:annotation\", Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Reflect.hasOwnMetadata(\"custom:annotation\", Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Reflect.hasOwnMetadata(\"custom:annotation\", Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Reflect.hasOwnMetadata(\"custom:annotation\", Example.prototype, \"method\");\n *\n */\n function hasOwnMetadata(metadataKey, target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n return OrdinaryHasOwnMetadata(metadataKey, target, propertyKey);\n }\n exporter(\"hasOwnMetadata\", hasOwnMetadata);\n /**\n * Gets the metadata value for the provided metadata key on the target object or its prototype chain.\n * @param metadataKey A key used to store and retrieve metadata.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey (Optional) The property key for the target.\n * @returns The metadata value for the metadata key if found; otherwise, `undefined`.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Reflect.getMetadata(\"custom:annotation\", Example);\n *\n * // property (on constructor)\n * result = Reflect.getMetadata(\"custom:annotation\", Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Reflect.getMetadata(\"custom:annotation\", Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Reflect.getMetadata(\"custom:annotation\", Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Reflect.getMetadata(\"custom:annotation\", Example.prototype, \"method\");\n *\n */\n function getMetadata(metadataKey, target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n return OrdinaryGetMetadata(metadataKey, target, propertyKey);\n }\n exporter(\"getMetadata\", getMetadata);\n /**\n * Gets the metadata value for the provided metadata key on the target object.\n * @param metadataKey A key used to store and retrieve metadata.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey (Optional) The property key for the target.\n * @returns The metadata value for the metadata key if found; otherwise, `undefined`.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Reflect.getOwnMetadata(\"custom:annotation\", Example);\n *\n * // property (on constructor)\n * result = Reflect.getOwnMetadata(\"custom:annotation\", Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Reflect.getOwnMetadata(\"custom:annotation\", Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Reflect.getOwnMetadata(\"custom:annotation\", Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Reflect.getOwnMetadata(\"custom:annotation\", Example.prototype, \"method\");\n *\n */\n function getOwnMetadata(metadataKey, target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n return OrdinaryGetOwnMetadata(metadataKey, target, propertyKey);\n }\n exporter(\"getOwnMetadata\", getOwnMetadata);\n /**\n * Gets the metadata keys defined on the target object or its prototype chain.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey (Optional) The property key for the target.\n * @returns An array of unique metadata keys.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Reflect.getMetadataKeys(Example);\n *\n * // property (on constructor)\n * result = Reflect.getMetadataKeys(Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Reflect.getMetadataKeys(Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Reflect.getMetadataKeys(Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Reflect.getMetadataKeys(Example.prototype, \"method\");\n *\n */\n function getMetadataKeys(target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n return OrdinaryMetadataKeys(target, propertyKey);\n }\n exporter(\"getMetadataKeys\", getMetadataKeys);\n /**\n * Gets the unique metadata keys defined on the target object.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey (Optional) The property key for the target.\n * @returns An array of unique metadata keys.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Reflect.getOwnMetadataKeys(Example);\n *\n * // property (on constructor)\n * result = Reflect.getOwnMetadataKeys(Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Reflect.getOwnMetadataKeys(Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Reflect.getOwnMetadataKeys(Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Reflect.getOwnMetadataKeys(Example.prototype, \"method\");\n *\n */\n function getOwnMetadataKeys(target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n return OrdinaryOwnMetadataKeys(target, propertyKey);\n }\n exporter(\"getOwnMetadataKeys\", getOwnMetadataKeys);\n /**\n * Deletes the metadata entry from the target object with the provided key.\n * @param metadataKey A key used to store and retrieve metadata.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey (Optional) The property key for the target.\n * @returns `true` if the metadata entry was found and deleted; otherwise, false.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Reflect.deleteMetadata(\"custom:annotation\", Example);\n *\n * // property (on constructor)\n * result = Reflect.deleteMetadata(\"custom:annotation\", Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Reflect.deleteMetadata(\"custom:annotation\", Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Reflect.deleteMetadata(\"custom:annotation\", Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Reflect.deleteMetadata(\"custom:annotation\", Example.prototype, \"method\");\n *\n */\n function deleteMetadata(metadataKey, target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n var provider = GetMetadataProvider(target, propertyKey, /*Create*/ false);\n if (IsUndefined(provider))\n return false;\n return provider.OrdinaryDeleteMetadata(metadataKey, target, propertyKey);\n }\n exporter(\"deleteMetadata\", deleteMetadata);\n function DecorateConstructor(decorators, target) {\n for (var i = decorators.length - 1; i >= 0; --i) {\n var decorator = decorators[i];\n var decorated = decorator(target);\n if (!IsUndefined(decorated) && !IsNull(decorated)) {\n if (!IsConstructor(decorated))\n throw new TypeError();\n target = decorated;\n }\n }\n return target;\n }\n function DecorateProperty(decorators, target, propertyKey, descriptor) {\n for (var i = decorators.length - 1; i >= 0; --i) {\n var decorator = decorators[i];\n var decorated = decorator(target, propertyKey, descriptor);\n if (!IsUndefined(decorated) && !IsNull(decorated)) {\n if (!IsObject(decorated))\n throw new TypeError();\n descriptor = decorated;\n }\n }\n return descriptor;\n }\n // 3.1.1.1 OrdinaryHasMetadata(MetadataKey, O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinaryhasmetadata\n function OrdinaryHasMetadata(MetadataKey, O, P) {\n var hasOwn = OrdinaryHasOwnMetadata(MetadataKey, O, P);\n if (hasOwn)\n return true;\n var parent = OrdinaryGetPrototypeOf(O);\n if (!IsNull(parent))\n return OrdinaryHasMetadata(MetadataKey, parent, P);\n return false;\n }\n // 3.1.2.1 OrdinaryHasOwnMetadata(MetadataKey, O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinaryhasownmetadata\n function OrdinaryHasOwnMetadata(MetadataKey, O, P) {\n var provider = GetMetadataProvider(O, P, /*Create*/ false);\n if (IsUndefined(provider))\n return false;\n return ToBoolean(provider.OrdinaryHasOwnMetadata(MetadataKey, O, P));\n }\n // 3.1.3.1 OrdinaryGetMetadata(MetadataKey, O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinarygetmetadata\n function OrdinaryGetMetadata(MetadataKey, O, P) {\n var hasOwn = OrdinaryHasOwnMetadata(MetadataKey, O, P);\n if (hasOwn)\n return OrdinaryGetOwnMetadata(MetadataKey, O, P);\n var parent = OrdinaryGetPrototypeOf(O);\n if (!IsNull(parent))\n return OrdinaryGetMetadata(MetadataKey, parent, P);\n return undefined;\n }\n // 3.1.4.1 OrdinaryGetOwnMetadata(MetadataKey, O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinarygetownmetadata\n function OrdinaryGetOwnMetadata(MetadataKey, O, P) {\n var provider = GetMetadataProvider(O, P, /*Create*/ false);\n if (IsUndefined(provider))\n return;\n return provider.OrdinaryGetOwnMetadata(MetadataKey, O, P);\n }\n // 3.1.5.1 OrdinaryDefineOwnMetadata(MetadataKey, MetadataValue, O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinarydefineownmetadata\n function OrdinaryDefineOwnMetadata(MetadataKey, MetadataValue, O, P) {\n var provider = GetMetadataProvider(O, P, /*Create*/ true);\n provider.OrdinaryDefineOwnMetadata(MetadataKey, MetadataValue, O, P);\n }\n // 3.1.6.1 OrdinaryMetadataKeys(O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinarymetadatakeys\n function OrdinaryMetadataKeys(O, P) {\n var ownKeys = OrdinaryOwnMetadataKeys(O, P);\n var parent = OrdinaryGetPrototypeOf(O);\n if (parent === null)\n return ownKeys;\n var parentKeys = OrdinaryMetadataKeys(parent, P);\n if (parentKeys.length <= 0)\n return ownKeys;\n if (ownKeys.length <= 0)\n return parentKeys;\n var set = new _Set();\n var keys = [];\n for (var _i = 0, ownKeys_1 = ownKeys; _i < ownKeys_1.length; _i++) {\n var key = ownKeys_1[_i];\n var hasKey = set.has(key);\n if (!hasKey) {\n set.add(key);\n keys.push(key);\n }\n }\n for (var _a = 0, parentKeys_1 = parentKeys; _a < parentKeys_1.length; _a++) {\n var key = parentKeys_1[_a];\n var hasKey = set.has(key);\n if (!hasKey) {\n set.add(key);\n keys.push(key);\n }\n }\n return keys;\n }\n // 3.1.7.1 OrdinaryOwnMetadataKeys(O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinaryownmetadatakeys\n function OrdinaryOwnMetadataKeys(O, P) {\n var provider = GetMetadataProvider(O, P, /*create*/ false);\n if (!provider) {\n return [];\n }\n return provider.OrdinaryOwnMetadataKeys(O, P);\n }\n // 6 ECMAScript Data Types and Values\n // https://tc39.github.io/ecma262/#sec-ecmascript-data-types-and-values\n function Type(x) {\n if (x === null)\n return 1 /* Null */;\n switch (typeof x) {\n case \"undefined\": return 0 /* Undefined */;\n case \"boolean\": return 2 /* Boolean */;\n case \"string\": return 3 /* String */;\n case \"symbol\": return 4 /* Symbol */;\n case \"number\": return 5 /* Number */;\n case \"object\": return x === null ? 1 /* Null */ : 6 /* Object */;\n default: return 6 /* Object */;\n }\n }\n // 6.1.1 The Undefined Type\n // https://tc39.github.io/ecma262/#sec-ecmascript-language-types-undefined-type\n function IsUndefined(x) {\n return x === undefined;\n }\n // 6.1.2 The Null Type\n // https://tc39.github.io/ecma262/#sec-ecmascript-language-types-null-type\n function IsNull(x) {\n return x === null;\n }\n // 6.1.5 The Symbol Type\n // https://tc39.github.io/ecma262/#sec-ecmascript-language-types-symbol-type\n function IsSymbol(x) {\n return typeof x === \"symbol\";\n }\n // 6.1.7 The Object Type\n // https://tc39.github.io/ecma262/#sec-object-type\n function IsObject(x) {\n return typeof x === \"object\" ? x !== null : typeof x === \"function\";\n }\n // 7.1 Type Conversion\n // https://tc39.github.io/ecma262/#sec-type-conversion\n // 7.1.1 ToPrimitive(input [, PreferredType])\n // https://tc39.github.io/ecma262/#sec-toprimitive\n function ToPrimitive(input, PreferredType) {\n switch (Type(input)) {\n case 0 /* Undefined */: return input;\n case 1 /* Null */: return input;\n case 2 /* Boolean */: return input;\n case 3 /* String */: return input;\n case 4 /* Symbol */: return input;\n case 5 /* Number */: return input;\n }\n var hint = PreferredType === 3 /* String */ ? \"string\" : PreferredType === 5 /* Number */ ? \"number\" : \"default\";\n var exoticToPrim = GetMethod(input, toPrimitiveSymbol);\n if (exoticToPrim !== undefined) {\n var result = exoticToPrim.call(input, hint);\n if (IsObject(result))\n throw new TypeError();\n return result;\n }\n return OrdinaryToPrimitive(input, hint === \"default\" ? \"number\" : hint);\n }\n // 7.1.1.1 OrdinaryToPrimitive(O, hint)\n // https://tc39.github.io/ecma262/#sec-ordinarytoprimitive\n function OrdinaryToPrimitive(O, hint) {\n if (hint === \"string\") {\n var toString_1 = O.toString;\n if (IsCallable(toString_1)) {\n var result = toString_1.call(O);\n if (!IsObject(result))\n return result;\n }\n var valueOf = O.valueOf;\n if (IsCallable(valueOf)) {\n var result = valueOf.call(O);\n if (!IsObject(result))\n return result;\n }\n }\n else {\n var valueOf = O.valueOf;\n if (IsCallable(valueOf)) {\n var result = valueOf.call(O);\n if (!IsObject(result))\n return result;\n }\n var toString_2 = O.toString;\n if (IsCallable(toString_2)) {\n var result = toString_2.call(O);\n if (!IsObject(result))\n return result;\n }\n }\n throw new TypeError();\n }\n // 7.1.2 ToBoolean(argument)\n // https://tc39.github.io/ecma262/2016/#sec-toboolean\n function ToBoolean(argument) {\n return !!argument;\n }\n // 7.1.12 ToString(argument)\n // https://tc39.github.io/ecma262/#sec-tostring\n function ToString(argument) {\n return \"\" + argument;\n }\n // 7.1.14 ToPropertyKey(argument)\n // https://tc39.github.io/ecma262/#sec-topropertykey\n function ToPropertyKey(argument) {\n var key = ToPrimitive(argument, 3 /* String */);\n if (IsSymbol(key))\n return key;\n return ToString(key);\n }\n // 7.2 Testing and Comparison Operations\n // https://tc39.github.io/ecma262/#sec-testing-and-comparison-operations\n // 7.2.2 IsArray(argument)\n // https://tc39.github.io/ecma262/#sec-isarray\n function IsArray(argument) {\n return Array.isArray\n ? Array.isArray(argument)\n : argument instanceof Object\n ? argument instanceof Array\n : Object.prototype.toString.call(argument) === \"[object Array]\";\n }\n // 7.2.3 IsCallable(argument)\n // https://tc39.github.io/ecma262/#sec-iscallable\n function IsCallable(argument) {\n // NOTE: This is an approximation as we cannot check for [[Call]] internal method.\n return typeof argument === \"function\";\n }\n // 7.2.4 IsConstructor(argument)\n // https://tc39.github.io/ecma262/#sec-isconstructor\n function IsConstructor(argument) {\n // NOTE: This is an approximation as we cannot check for [[Construct]] internal method.\n return typeof argument === \"function\";\n }\n // 7.2.7 IsPropertyKey(argument)\n // https://tc39.github.io/ecma262/#sec-ispropertykey\n function IsPropertyKey(argument) {\n switch (Type(argument)) {\n case 3 /* String */: return true;\n case 4 /* Symbol */: return true;\n default: return false;\n }\n }\n function SameValueZero(x, y) {\n return x === y || x !== x && y !== y;\n }\n // 7.3 Operations on Objects\n // https://tc39.github.io/ecma262/#sec-operations-on-objects\n // 7.3.9 GetMethod(V, P)\n // https://tc39.github.io/ecma262/#sec-getmethod\n function GetMethod(V, P) {\n var func = V[P];\n if (func === undefined || func === null)\n return undefined;\n if (!IsCallable(func))\n throw new TypeError();\n return func;\n }\n // 7.4 Operations on Iterator Objects\n // https://tc39.github.io/ecma262/#sec-operations-on-iterator-objects\n function GetIterator(obj) {\n var method = GetMethod(obj, iteratorSymbol);\n if (!IsCallable(method))\n throw new TypeError(); // from Call\n var iterator = method.call(obj);\n if (!IsObject(iterator))\n throw new TypeError();\n return iterator;\n }\n // 7.4.4 IteratorValue(iterResult)\n // https://tc39.github.io/ecma262/2016/#sec-iteratorvalue\n function IteratorValue(iterResult) {\n return iterResult.value;\n }\n // 7.4.5 IteratorStep(iterator)\n // https://tc39.github.io/ecma262/#sec-iteratorstep\n function IteratorStep(iterator) {\n var result = iterator.next();\n return result.done ? false : result;\n }\n // 7.4.6 IteratorClose(iterator, completion)\n // https://tc39.github.io/ecma262/#sec-iteratorclose\n function IteratorClose(iterator) {\n var f = iterator[\"return\"];\n if (f)\n f.call(iterator);\n }\n // 9.1 Ordinary Object Internal Methods and Internal Slots\n // https://tc39.github.io/ecma262/#sec-ordinary-object-internal-methods-and-internal-slots\n // 9.1.1.1 OrdinaryGetPrototypeOf(O)\n // https://tc39.github.io/ecma262/#sec-ordinarygetprototypeof\n function OrdinaryGetPrototypeOf(O) {\n var proto = Object.getPrototypeOf(O);\n if (typeof O !== \"function\" || O === functionPrototype)\n return proto;\n // TypeScript doesn't set __proto__ in ES5, as it's non-standard.\n // Try to determine the superclass constructor. Compatible implementations\n // must either set __proto__ on a subclass constructor to the superclass constructor,\n // or ensure each class has a valid `constructor` property on its prototype that\n // points back to the constructor.\n // If this is not the same as Function.[[Prototype]], then this is definately inherited.\n // This is the case when in ES6 or when using __proto__ in a compatible browser.\n if (proto !== functionPrototype)\n return proto;\n // If the super prototype is Object.prototype, null, or undefined, then we cannot determine the heritage.\n var prototype = O.prototype;\n var prototypeProto = prototype && Object.getPrototypeOf(prototype);\n if (prototypeProto == null || prototypeProto === Object.prototype)\n return proto;\n // If the constructor was not a function, then we cannot determine the heritage.\n var constructor = prototypeProto.constructor;\n if (typeof constructor !== \"function\")\n return proto;\n // If we have some kind of self-reference, then we cannot determine the heritage.\n if (constructor === O)\n return proto;\n // we have a pretty good guess at the heritage.\n return constructor;\n }\n // Global metadata registry\n // - Allows `import \"reflect-metadata\"` and `import \"reflect-metadata/no-conflict\"` to interoperate.\n // - Uses isolated metadata if `Reflect` is frozen before the registry can be installed.\n /**\n * Creates a registry used to allow multiple `reflect-metadata` providers.\n */\n function CreateMetadataRegistry() {\n var fallback;\n if (!IsUndefined(registrySymbol) &&\n typeof root.Reflect !== \"undefined\" &&\n !(registrySymbol in root.Reflect) &&\n typeof root.Reflect.defineMetadata === \"function\") {\n // interoperate with older version of `reflect-metadata` that did not support a registry.\n fallback = CreateFallbackProvider(root.Reflect);\n }\n var first;\n var second;\n var rest;\n var targetProviderMap = new _WeakMap();\n var registry = {\n registerProvider: registerProvider,\n getProvider: getProvider,\n setProvider: setProvider,\n };\n return registry;\n function registerProvider(provider) {\n if (!Object.isExtensible(registry)) {\n throw new Error(\"Cannot add provider to a frozen registry.\");\n }\n switch (true) {\n case fallback === provider: break;\n case IsUndefined(first):\n first = provider;\n break;\n case first === provider: break;\n case IsUndefined(second):\n second = provider;\n break;\n case second === provider: break;\n default:\n if (rest === undefined)\n rest = new _Set();\n rest.add(provider);\n break;\n }\n }\n function getProviderNoCache(O, P) {\n if (!IsUndefined(first)) {\n if (first.isProviderFor(O, P))\n return first;\n if (!IsUndefined(second)) {\n if (second.isProviderFor(O, P))\n return first;\n if (!IsUndefined(rest)) {\n var iterator = GetIterator(rest);\n while (true) {\n var next = IteratorStep(iterator);\n if (!next) {\n return undefined;\n }\n var provider = IteratorValue(next);\n if (provider.isProviderFor(O, P)) {\n IteratorClose(iterator);\n return provider;\n }\n }\n }\n }\n }\n if (!IsUndefined(fallback) && fallback.isProviderFor(O, P)) {\n return fallback;\n }\n return undefined;\n }\n function getProvider(O, P) {\n var providerMap = targetProviderMap.get(O);\n var provider;\n if (!IsUndefined(providerMap)) {\n provider = providerMap.get(P);\n }\n if (!IsUndefined(provider)) {\n return provider;\n }\n provider = getProviderNoCache(O, P);\n if (!IsUndefined(provider)) {\n if (IsUndefined(providerMap)) {\n providerMap = new _Map();\n targetProviderMap.set(O, providerMap);\n }\n providerMap.set(P, provider);\n }\n return provider;\n }\n function hasProvider(provider) {\n if (IsUndefined(provider))\n throw new TypeError();\n return first === provider || second === provider || !IsUndefined(rest) && rest.has(provider);\n }\n function setProvider(O, P, provider) {\n if (!hasProvider(provider)) {\n throw new Error(\"Metadata provider not registered.\");\n }\n var existingProvider = getProvider(O, P);\n if (existingProvider !== provider) {\n if (!IsUndefined(existingProvider)) {\n return false;\n }\n var providerMap = targetProviderMap.get(O);\n if (IsUndefined(providerMap)) {\n providerMap = new _Map();\n targetProviderMap.set(O, providerMap);\n }\n providerMap.set(P, provider);\n }\n return true;\n }\n }\n /**\n * Gets or creates the shared registry of metadata providers.\n */\n function GetOrCreateMetadataRegistry() {\n var metadataRegistry;\n if (!IsUndefined(registrySymbol) && IsObject(root.Reflect) && Object.isExtensible(root.Reflect)) {\n metadataRegistry = root.Reflect[registrySymbol];\n }\n if (IsUndefined(metadataRegistry)) {\n metadataRegistry = CreateMetadataRegistry();\n }\n if (!IsUndefined(registrySymbol) && IsObject(root.Reflect) && Object.isExtensible(root.Reflect)) {\n Object.defineProperty(root.Reflect, registrySymbol, {\n enumerable: false,\n configurable: false,\n writable: false,\n value: metadataRegistry\n });\n }\n return metadataRegistry;\n }\n function CreateMetadataProvider(registry) {\n // [[Metadata]] internal slot\n // https://rbuckton.github.io/reflect-metadata/#ordinary-object-internal-methods-and-internal-slots\n var metadata = new _WeakMap();\n var provider = {\n isProviderFor: function (O, P) {\n var targetMetadata = metadata.get(O);\n if (IsUndefined(targetMetadata))\n return false;\n return targetMetadata.has(P);\n },\n OrdinaryDefineOwnMetadata: OrdinaryDefineOwnMetadata,\n OrdinaryHasOwnMetadata: OrdinaryHasOwnMetadata,\n OrdinaryGetOwnMetadata: OrdinaryGetOwnMetadata,\n OrdinaryOwnMetadataKeys: OrdinaryOwnMetadataKeys,\n OrdinaryDeleteMetadata: OrdinaryDeleteMetadata,\n };\n metadataRegistry.registerProvider(provider);\n return provider;\n function GetOrCreateMetadataMap(O, P, Create) {\n var targetMetadata = metadata.get(O);\n var createdTargetMetadata = false;\n if (IsUndefined(targetMetadata)) {\n if (!Create)\n return undefined;\n targetMetadata = new _Map();\n metadata.set(O, targetMetadata);\n createdTargetMetadata = true;\n }\n var metadataMap = targetMetadata.get(P);\n if (IsUndefined(metadataMap)) {\n if (!Create)\n return undefined;\n metadataMap = new _Map();\n targetMetadata.set(P, metadataMap);\n if (!registry.setProvider(O, P, provider)) {\n targetMetadata.delete(P);\n if (createdTargetMetadata) {\n metadata.delete(O);\n }\n throw new Error(\"Wrong provider for target.\");\n }\n }\n return metadataMap;\n }\n // 3.1.2.1 OrdinaryHasOwnMetadata(MetadataKey, O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinaryhasownmetadata\n function OrdinaryHasOwnMetadata(MetadataKey, O, P) {\n var metadataMap = GetOrCreateMetadataMap(O, P, /*Create*/ false);\n if (IsUndefined(metadataMap))\n return false;\n return ToBoolean(metadataMap.has(MetadataKey));\n }\n // 3.1.4.1 OrdinaryGetOwnMetadata(MetadataKey, O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinarygetownmetadata\n function OrdinaryGetOwnMetadata(MetadataKey, O, P) {\n var metadataMap = GetOrCreateMetadataMap(O, P, /*Create*/ false);\n if (IsUndefined(metadataMap))\n return undefined;\n return metadataMap.get(MetadataKey);\n }\n // 3.1.5.1 OrdinaryDefineOwnMetadata(MetadataKey, MetadataValue, O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinarydefineownmetadata\n function OrdinaryDefineOwnMetadata(MetadataKey, MetadataValue, O, P) {\n var metadataMap = GetOrCreateMetadataMap(O, P, /*Create*/ true);\n metadataMap.set(MetadataKey, MetadataValue);\n }\n // 3.1.7.1 OrdinaryOwnMetadataKeys(O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinaryownmetadatakeys\n function OrdinaryOwnMetadataKeys(O, P) {\n var keys = [];\n var metadataMap = GetOrCreateMetadataMap(O, P, /*Create*/ false);\n if (IsUndefined(metadataMap))\n return keys;\n var keysObj = metadataMap.keys();\n var iterator = GetIterator(keysObj);\n var k = 0;\n while (true) {\n var next = IteratorStep(iterator);\n if (!next) {\n keys.length = k;\n return keys;\n }\n var nextValue = IteratorValue(next);\n try {\n keys[k] = nextValue;\n }\n catch (e) {\n try {\n IteratorClose(iterator);\n }\n finally {\n throw e;\n }\n }\n k++;\n }\n }\n function OrdinaryDeleteMetadata(MetadataKey, O, P) {\n var metadataMap = GetOrCreateMetadataMap(O, P, /*Create*/ false);\n if (IsUndefined(metadataMap))\n return false;\n if (!metadataMap.delete(MetadataKey))\n return false;\n if (metadataMap.size === 0) {\n var targetMetadata = metadata.get(O);\n if (!IsUndefined(targetMetadata)) {\n targetMetadata.delete(P);\n if (targetMetadata.size === 0) {\n metadata.delete(targetMetadata);\n }\n }\n }\n return true;\n }\n }\n function CreateFallbackProvider(reflect) {\n var defineMetadata = reflect.defineMetadata, hasOwnMetadata = reflect.hasOwnMetadata, getOwnMetadata = reflect.getOwnMetadata, getOwnMetadataKeys = reflect.getOwnMetadataKeys, deleteMetadata = reflect.deleteMetadata;\n var metadataOwner = new _WeakMap();\n var provider = {\n isProviderFor: function (O, P) {\n var metadataPropertySet = metadataOwner.get(O);\n if (!IsUndefined(metadataPropertySet) && metadataPropertySet.has(P)) {\n return true;\n }\n if (getOwnMetadataKeys(O, P).length) {\n if (IsUndefined(metadataPropertySet)) {\n metadataPropertySet = new _Set();\n metadataOwner.set(O, metadataPropertySet);\n }\n metadataPropertySet.add(P);\n return true;\n }\n return false;\n },\n OrdinaryDefineOwnMetadata: defineMetadata,\n OrdinaryHasOwnMetadata: hasOwnMetadata,\n OrdinaryGetOwnMetadata: getOwnMetadata,\n OrdinaryOwnMetadataKeys: getOwnMetadataKeys,\n OrdinaryDeleteMetadata: deleteMetadata,\n };\n return provider;\n }\n /**\n * Gets the metadata provider for an object. If the object has no metadata provider and this is for a create operation,\n * then this module's metadata provider is assigned to the object.\n */\n function GetMetadataProvider(O, P, Create) {\n var registeredProvider = metadataRegistry.getProvider(O, P);\n if (!IsUndefined(registeredProvider)) {\n return registeredProvider;\n }\n if (Create) {\n if (metadataRegistry.setProvider(O, P, metadataProvider)) {\n return metadataProvider;\n }\n throw new Error(\"Illegal state.\");\n }\n return undefined;\n }\n // naive Map shim\n function CreateMapPolyfill() {\n var cacheSentinel = {};\n var arraySentinel = [];\n var MapIterator = /** @class */ (function () {\n function MapIterator(keys, values, selector) {\n this._index = 0;\n this._keys = keys;\n this._values = values;\n this._selector = selector;\n }\n MapIterator.prototype[\"@@iterator\"] = function () { return this; };\n MapIterator.prototype[iteratorSymbol] = function () { return this; };\n MapIterator.prototype.next = function () {\n var index = this._index;\n if (index >= 0 && index < this._keys.length) {\n var result = this._selector(this._keys[index], this._values[index]);\n if (index + 1 >= this._keys.length) {\n this._index = -1;\n this._keys = arraySentinel;\n this._values = arraySentinel;\n }\n else {\n this._index++;\n }\n return { value: result, done: false };\n }\n return { value: undefined, done: true };\n };\n MapIterator.prototype.throw = function (error) {\n if (this._index >= 0) {\n this._index = -1;\n this._keys = arraySentinel;\n this._values = arraySentinel;\n }\n throw error;\n };\n MapIterator.prototype.return = function (value) {\n if (this._index >= 0) {\n this._index = -1;\n this._keys = arraySentinel;\n this._values = arraySentinel;\n }\n return { value: value, done: true };\n };\n return MapIterator;\n }());\n var Map = /** @class */ (function () {\n function Map() {\n this._keys = [];\n this._values = [];\n this._cacheKey = cacheSentinel;\n this._cacheIndex = -2;\n }\n Object.defineProperty(Map.prototype, \"size\", {\n get: function () { return this._keys.length; },\n enumerable: true,\n configurable: true\n });\n Map.prototype.has = function (key) { return this._find(key, /*insert*/ false) >= 0; };\n Map.prototype.get = function (key) {\n var index = this._find(key, /*insert*/ false);\n return index >= 0 ? this._values[index] : undefined;\n };\n Map.prototype.set = function (key, value) {\n var index = this._find(key, /*insert*/ true);\n this._values[index] = value;\n return this;\n };\n Map.prototype.delete = function (key) {\n var index = this._find(key, /*insert*/ false);\n if (index >= 0) {\n var size = this._keys.length;\n for (var i = index + 1; i < size; i++) {\n this._keys[i - 1] = this._keys[i];\n this._values[i - 1] = this._values[i];\n }\n this._keys.length--;\n this._values.length--;\n if (SameValueZero(key, this._cacheKey)) {\n this._cacheKey = cacheSentinel;\n this._cacheIndex = -2;\n }\n return true;\n }\n return false;\n };\n Map.prototype.clear = function () {\n this._keys.length = 0;\n this._values.length = 0;\n this._cacheKey = cacheSentinel;\n this._cacheIndex = -2;\n };\n Map.prototype.keys = function () { return new MapIterator(this._keys, this._values, getKey); };\n Map.prototype.values = function () { return new MapIterator(this._keys, this._values, getValue); };\n Map.prototype.entries = function () { return new MapIterator(this._keys, this._values, getEntry); };\n Map.prototype[\"@@iterator\"] = function () { return this.entries(); };\n Map.prototype[iteratorSymbol] = function () { return this.entries(); };\n Map.prototype._find = function (key, insert) {\n if (!SameValueZero(this._cacheKey, key)) {\n this._cacheIndex = -1;\n for (var i = 0; i < this._keys.length; i++) {\n if (SameValueZero(this._keys[i], key)) {\n this._cacheIndex = i;\n break;\n }\n }\n }\n if (this._cacheIndex < 0 && insert) {\n this._cacheIndex = this._keys.length;\n this._keys.push(key);\n this._values.push(undefined);\n }\n return this._cacheIndex;\n };\n return Map;\n }());\n return Map;\n function getKey(key, _) {\n return key;\n }\n function getValue(_, value) {\n return value;\n }\n function getEntry(key, value) {\n return [key, value];\n }\n }\n // naive Set shim\n function CreateSetPolyfill() {\n var Set = /** @class */ (function () {\n function Set() {\n this._map = new _Map();\n }\n Object.defineProperty(Set.prototype, \"size\", {\n get: function () { return this._map.size; },\n enumerable: true,\n configurable: true\n });\n Set.prototype.has = function (value) { return this._map.has(value); };\n Set.prototype.add = function (value) { return this._map.set(value, value), this; };\n Set.prototype.delete = function (value) { return this._map.delete(value); };\n Set.prototype.clear = function () { this._map.clear(); };\n Set.prototype.keys = function () { return this._map.keys(); };\n Set.prototype.values = function () { return this._map.keys(); };\n Set.prototype.entries = function () { return this._map.entries(); };\n Set.prototype[\"@@iterator\"] = function () { return this.keys(); };\n Set.prototype[iteratorSymbol] = function () { return this.keys(); };\n return Set;\n }());\n return Set;\n }\n // naive WeakMap shim\n function CreateWeakMapPolyfill() {\n var UUID_SIZE = 16;\n var keys = HashMap.create();\n var rootKey = CreateUniqueKey();\n return /** @class */ (function () {\n function WeakMap() {\n this._key = CreateUniqueKey();\n }\n WeakMap.prototype.has = function (target) {\n var table = GetOrCreateWeakMapTable(target, /*create*/ false);\n return table !== undefined ? HashMap.has(table, this._key) : false;\n };\n WeakMap.prototype.get = function (target) {\n var table = GetOrCreateWeakMapTable(target, /*create*/ false);\n return table !== undefined ? HashMap.get(table, this._key) : undefined;\n };\n WeakMap.prototype.set = function (target, value) {\n var table = GetOrCreateWeakMapTable(target, /*create*/ true);\n table[this._key] = value;\n return this;\n };\n WeakMap.prototype.delete = function (target) {\n var table = GetOrCreateWeakMapTable(target, /*create*/ false);\n return table !== undefined ? delete table[this._key] : false;\n };\n WeakMap.prototype.clear = function () {\n // NOTE: not a real clear, just makes the previous data unreachable\n this._key = CreateUniqueKey();\n };\n return WeakMap;\n }());\n function CreateUniqueKey() {\n var key;\n do\n key = \"@@WeakMap@@\" + CreateUUID();\n while (HashMap.has(keys, key));\n keys[key] = true;\n return key;\n }\n function GetOrCreateWeakMapTable(target, create) {\n if (!hasOwn.call(target, rootKey)) {\n if (!create)\n return undefined;\n Object.defineProperty(target, rootKey, { value: HashMap.create() });\n }\n return target[rootKey];\n }\n function FillRandomBytes(buffer, size) {\n for (var i = 0; i < size; ++i)\n buffer[i] = Math.random() * 0xff | 0;\n return buffer;\n }\n function GenRandomBytes(size) {\n if (typeof Uint8Array === \"function\") {\n var array = new Uint8Array(size);\n if (typeof crypto !== \"undefined\") {\n crypto.getRandomValues(array);\n }\n else if (typeof msCrypto !== \"undefined\") {\n msCrypto.getRandomValues(array);\n }\n else {\n FillRandomBytes(array, size);\n }\n return array;\n }\n return FillRandomBytes(new Array(size), size);\n }\n function CreateUUID() {\n var data = GenRandomBytes(UUID_SIZE);\n // mark as random - RFC 4122 \u00A7 4.4\n data[6] = data[6] & 0x4f | 0x40;\n data[8] = data[8] & 0xbf | 0x80;\n var result = \"\";\n for (var offset = 0; offset < UUID_SIZE; ++offset) {\n var byte = data[offset];\n if (offset === 4 || offset === 6 || offset === 8)\n result += \"-\";\n if (byte < 16)\n result += \"0\";\n result += byte.toString(16).toLowerCase();\n }\n return result;\n }\n }\n // uses a heuristic used by v8 and chakra to force an object into dictionary mode.\n function MakeDictionary(obj) {\n obj.__ = undefined;\n delete obj.__;\n return obj;\n }\n });\n})(Reflect || (Reflect = {}));\n", "import 'reflect-metadata';\nexport * from './index';\n", "import 'reflect-metadata';\nimport { registerAllElements } from './elements/register';\nimport {ConstructorType} from \"@dooboostore/core\";\n\n// Decorators\nexport * from './decorators';\n\n// Types\nexport * from './types';\n\n// Utilities\nexport * from './utils/Utils';\n\n// Config\nexport * from './config/config';\n\n// Registration Factory\nexport default (w: Window, other?: (((w: Window) => ConstructorType<any>) | any) []) => {\n const cr = registerAllElements(w);\n const r = other?.map(fn => {\n if (typeof fn === 'function') {\n const a = fn(w);\n } else {\n }\n });\n\n return cr;\n // return r??[];\n};\n", "import { ConstructorType, FilterFalsy, FilterNullish, NonNullable, Nullable, Nullish, NullOrUndefined } from '../types';\n\nexport namespace ValidUtils {\n\n export const isArrowFunction = (fn: any): fn is Function => {\n // 1. \uD568\uC218\uAC00 \uC544\uB2C8\uBA74 false\n if (typeof fn !== 'function') {\n return false;\n }\n // 2. prototype \uC18D\uC131\uC774 \uC5C6\uC73C\uBA74 \uD654\uC0B4\uD45C \uD568\uC218 (\uB610\uB294 prototype\uC774 \uC5C6\uB294 \uB2E4\uB978 callable)\n // 3. \uD074\uB798\uC2A4\uB294 'class' \uD0A4\uC6CC\uB4DC\uB85C \uC2DC\uC791\uD558\uBBC0\uB85C \uC81C\uC678\n return typeof fn.prototype === 'undefined' && !fn.toString().startsWith('class');\n }\n\n export const isPlainObject = (obj: any): boolean => {\n return obj !== null && typeof obj === 'object' && obj.constructor === Object;\n }\n\n const isConstructorLike = (fn: any): boolean => {\n // 1. \uD568\uC218\uC5EC\uC57C \uD558\uACE0,\n // 2. prototype \uC18D\uC131\uC744 \uAC00\uC838\uC57C \uD568\n return typeof fn === 'function' && typeof fn.prototype !== 'undefined';\n }\n\n export const isUrl = (str: string): boolean => {\n try {\n new URL(str);\n return true;\n } catch (_) {\n return false;\n }\n }\n\n export const isFrozen = (obj: any): boolean => {\n return Object.isFrozen(obj);\n }\n export const isSealed= (obj: any): boolean => {\n return Object.isSealed(obj)\n }\n export const isFrozenOrSealed = (obj: any): boolean => {\n return ValidUtils.isFrozen(obj) || ValidUtils.isSealed(obj);\n }\n export const isFrozenAndSealed = (obj: any): boolean => {\n return ValidUtils.isFrozen(obj) && ValidUtils.isSealed(obj);\n }\n export const isNotFrozen = (obj: any): boolean => {\n return !Object.isFrozen(obj);\n }\n export const isNotSealed = (obj: any): boolean => {\n return !Object.isSealed(obj)\n }\n export const isNotFrozenOrSealed = (obj: any): boolean => {\n return !ValidUtils.isFrozen(obj) && !ValidUtils.isSealed(obj);\n }\n export const isNotFrozenAndSealed = (obj: any): boolean => {\n return !ValidUtils.isFrozen(obj) || !ValidUtils.isSealed(obj);\n }\n\n export const isNullOrUndefined = (data: unknown): data is (null | undefined) => {\n return data == null || undefined === data;\n}\n\n export const isConstructor = (obj: ConstructorType<any> | Function | ((e: any) => void)): obj is ConstructorType<any> => {\n // \uD568\uC218\uC774\uBA74\uC11C prototype \uC18D\uC131\uC774 \uC788\uACE0 prototype\uC774 \uAC1D\uCCB4\uC778\uC9C0 \uD655\uC778\n return typeof obj === 'function'\n && obj.prototype !== undefined\n && obj.prototype.constructor === obj\n // && Object.getOwnPropertyNames(obj.prototype).length > 1; // constructor \uC678\uC5D0 \uB2E4\uB978 \uC18D\uC131\uC774 \uC788\uB294\uC9C0 \uD655\uC778\n }\n export const isFunction = (obj: ConstructorType<any> | Function | ((e: any) => void)): obj is ((e: any) => void) => {\n return typeof obj === 'function' && !isConstructor(obj);\n }\n export const isNullish = <T = any>(data: T | null | undefined): data is null | undefined => {\n return ValidUtils.isNotNullish(data);\n }\n export const isNotNullish = <T>(data: T | null | undefined): data is NonNullable<T> => {\n if ((Array.isArray(data) || ValidUtils.isString(data))) {\n return data.length > 0;\n }\n\n if (data instanceof Set || data instanceof Map) {\n return data.size > 0;\n }\n\n if (typeof data === 'object' && data !== null) {\n return Object.keys(data).length > 0;\n }\n\n return data !== null && data !== undefined;\n }\n\n export function isDefined<T>(value: T | null | undefined): value is NonNullable<T>;\n export function isDefined<K extends string, V>(entry: [K, V] | null | undefined): entry is [K, V];\n export function isDefined(value: unknown): boolean {\n return value !== null && value !== undefined;\n }\n\n export const isNotNullUndefined = <T>(data: T | null | undefined): data is NonNullable<T> => {\n return isDefined(data);\n }\n\n export const isNormalAttrEntry = <T>(entry: [string, T] | undefined | null): entry is [string, T] => {\n return isDefined(entry);\n }\n\n export const isStringEntry = (entry: [string, string] | undefined | null): entry is [string, string] => {\n return isDefined(entry);\n }\n\n export const isNull = (data: any): data is null => {\n return data === null;\n }\n\n export const isUndefined = (data: any): data is undefined => {\n return data === undefined;\n }\n\n export const isArray = (object_o: any): boolean => {\n if (ValidUtils.isNullOrUndefined(object_o)) {\n return false\n } else {\n return Object.prototype.toString.call(object_o).trim() === '[object Array]'\n }\n }\n\n export const isStringNumber = (value: string | number): boolean => {\n if (typeof value === 'number') {\n return !isNaN(value);\n }\n return typeof value === 'string' && value.trim() !== '' && !isNaN(Number(value));\n }\n\n export const isNumber = (object_o: any): boolean => {\n if (ValidUtils.isNullOrUndefined(object_o)) {\n return false\n } else {\n return Object.prototype.toString.call(object_o).trim() === '[object Number]'\n }\n }\n\n export const isIterator = <T>(object_o: any): object_o is Iterable<T> => {\n return object_o != null && typeof object_o[Symbol.iterator] === 'function';\n };\n\n export const isString = (object_o: any): object_o is string => {\n if (ValidUtils.isNullOrUndefined(object_o)) {\n return false\n } else {\n return Object.prototype.toString.call(object_o).trim() === '[object String]'\n }\n }\n\n // export const isFunction = (object_o: any): boolean => {\n // if (ValidUtils.isNullOrUndefined(object_o)) {\n // return false\n // } else {\n // return Object.prototype.toString.call(object_o).trim() === '[object Function]'\n // }\n // // if (typeof object_o === 'function') {\n // // return true;\n // // }else {\n // // return false;\n // // }\n // }\n\n export const isObject = (object_o: any): boolean => {\n if (ValidUtils.isNullOrUndefined(object_o)) {\n return false\n } else {\n return Object.prototype.toString.call(object_o).trim() === '[object Object]'\n }\n }\n\n export const isMap = (object_o: any): boolean => {\n if (ValidUtils.isNullOrUndefined(object_o)) {\n return false\n } else {\n return Object.prototype.toString.call(object_o).trim() === '[object Map]'\n }\n }\n\n\n export const isEmpty = (object_o: any): boolean => {\n if (ValidUtils.isNullOrUndefined(object_o)) {\n return true;\n } else if (ValidUtils.isArray(object_o)) {\n return object_o.length === 0;\n } else if (ValidUtils.isString(object_o)) {\n return object_o.trim().length === 0;\n } else if (ValidUtils.isMap(object_o)) {\n return object_o.size === 0;\n } else if (ValidUtils.isObject(object_o)) {\n return Object.keys(object_o).length === 0;\n } else {\n return false;\n }\n };\n\n\n export const isSet = <T = any>(data: any): data is Set<T> => {\n return data instanceof Set;\n };\n\n export const isNullishFiltered = <T>(value: unknown): value is FilterNullish<T> => {\n if (Array.isArray(value)) {\n return value.every(it => it !== undefined && it !== null);\n }\n return value !== undefined && value !== null;\n };\n\n export const isFalsyFiltered = <T>(value: unknown): value is FilterFalsy<T> => {\n if (Array.isArray(value)) {\n return value.every(it => {\n return it;\n });\n }\n return !!value;\n };\n\n export const includeValue = (obj: object, value: any): boolean => {\n return Object.values(obj).includes(value);\n };\n export const includeKey = (obj: object, key: string): boolean => {\n return Object.keys(obj).includes(key);\n };\n\n /** \uC885\uC131\uC774 \uC788\uB294\uC9C0 \uD655\uC778\uD558\uB294 \uD568\uC218 */\n export const lastConsonantLetter = (value: string): boolean => {\n const lastLetter = value.charCodeAt(value.length - 1);\n return (lastLetter - 0xac00) % 28 > 0;\n };\n\n export const inRange = (value: number, min: number, max: number) => {\n return min <= value && value <= max;\n };\n\n export const isBase64 = (inputString: string) => {\n // data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAA\n // const isValidBase64 = /^([A-Za-z0-9+/]{4})*([A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/;\n // return isValidBase64.test(base64String);\n\n let base64Data = inputString;\n\n // Data URL \uC811\uB450\uC0AC \uC81C\uAC70 (\uC608: \"data:image/png;base64,\")\n const parts = inputString.split(';base64,');\n if (parts.length > 1) {\n base64Data = parts[1];\n } else {\n // \"data:\"\uB9CC \uC788\uACE0 \";base64,\"\uAC00 \uC5C6\uB294 \uACBD\uC6B0\uB3C4 \uACE0\uB824 (\uC5C4\uBC00\uD788\uB294 base64\uAC00 \uC544\uB2D0 \uC218 \uC788\uC74C)\n if (inputString.startsWith('data:')) {\n // \uC774 \uACBD\uC6B0\uB294 \uC720\uD6A8\uD55C base64\uB85C \uAC04\uC8FC\uD560\uC9C0 \uC815\uCC45\uC5D0 \uB530\uB77C \uB2E4\uB984\n // \uC5EC\uAE30\uC11C\uB294 \uC77C\uB2E8 base64 \uBD80\uBD84\uC774 \uC5C6\uB2E4\uACE0 \uAC00\uC815\uD558\uACE0 false \uCC98\uB9AC\n // return false;\n // \uB610\uB294 \uC811\uB450\uC0AC\uB9CC \uC81C\uAC70\uD558\uACE0 \uB0A8\uC740 \uBD80\uBD84\uC744 \uD14C\uC2A4\uD2B8\uD560 \uC218\uB3C4 \uC788\uC74C\n const commaIndex = inputString.indexOf(',');\n if (commaIndex > -1) {\n base64Data = inputString.substring(commaIndex + 1);\n } else {\n // \uC21C\uC218 base64\uAC00 \uC544\uB2D0 \uAC00\uB2A5\uC131 \uB192\uC74C\n // return false;\n }\n }\n }\n\n\n // Base64 \uC720\uD6A8\uC131 \uAC80\uC0AC \uC815\uADDC\uC2DD\n // - \uBB38\uC790\uC5F4 \uAE38\uC774\uB294 4\uC758 \uBC30\uC218\uC5EC\uC57C \uD568 (\uD328\uB529 \uC81C\uC678)\n // - \uD328\uB529 '='\uB294 \uCD5C\uB300 2\uAC1C\uAE4C\uC9C0 \uBB38\uC790\uC5F4 \uB05D\uC5D0\uB9CC \uC62C \uC218 \uC788\uC74C\n // - \uD328\uB529\uC774 1\uAC1C\uC77C \uACBD\uC6B0, \uADF8 \uC55E \uBB38\uC790\uB294 [A-Za-z0-9+/]\n // - \uD328\uB529\uC774 2\uAC1C\uC77C \uACBD\uC6B0, \uADF8 \uC55E \uB450 \uBB38\uC790\uB294 [A-Za-z0-9+/]\n // \uC870\uAE08 \uB354 \uC5C4\uACA9\uD558\uACE0 \uD6A8\uC728\uC801\uC778 \uC815\uADDC\uC2DD:\n const base64Regex = /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/;\n\n // \uCD94\uAC00\uC801\uC73C\uB85C, \uC2E4\uC81C base64 \uBB38\uC790\uC5F4\uC740 \uD328\uB529\uC744 \uC81C\uC678\uD55C \uAE38\uC774\uAC00 4\uC758 \uBC30\uC218\uC5EC\uC57C \uD569\uB2C8\uB2E4.\n // \uC815\uADDC\uC2DD\uB9CC\uC73C\uB85C\uB294 \uC774 \uBD80\uBD84\uC744 \uC644\uBCBD\uD788 \uCEE4\uBC84\uD558\uAE30 \uC5B4\uB824\uC6B8 \uC218 \uC788\uC5B4, \uAE38\uC774 \uCCB4\uD06C\uB97C \uCD94\uAC00\uD558\uB294 \uAC83\uC774 \uC88B\uC2B5\uB2C8\uB2E4.\n // \uD558\uC9C0\uB9CC \uD604\uC7AC \uC81C\uACF5\uB41C \uC815\uADDC\uC2DD\uC740 \uC774 \uBD80\uBD84\uC744 \uC5B4\uB290 \uC815\uB3C4 \uACE0\uB824\uD558\uACE0 \uC788\uC2B5\uB2C8\uB2E4.\n // (([A-Za-z0-9+/]{4})* \uBD80\uBD84\uACFC \uD328\uB529 \uBD80\uBD84)\n\n if (base64Data === '' || base64Data.length % 4 !== 0) {\n // \uBE48 \uBB38\uC790\uC5F4\uC774\uAC70\uB098, \uAE38\uC774\uAC00 4\uC758 \uBC30\uC218\uAC00 \uC544\uB2C8\uBA74 (\uC77C\uBC18\uC801\uC73C\uB85C) \uC720\uD6A8\uD55C base64\uAC00 \uC544\uB2D8.\n // (\uB2E8, \uC77C\uBD80 \uB77C\uC774\uBE0C\uB7EC\uB9AC\uB294 \uD328\uB529\uC774 \uC5C6\uB294 base64\uB3C4 \uD5C8\uC6A9\uD558\uBBC0\uB85C, \uC5C4\uACA9\uD55C \uAE30\uC900\uC5D0 \uB530\uB77C \uB2E4\uB984)\n // \uD604\uC7AC \uC815\uADDC\uC2DD\uC740 \uD328\uB529\uC774 \uC62C\uBC14\uB974\uAC8C \uC801\uC6A9\uB41C \uACBD\uC6B0 \uAE38\uC774\uAC00 4\uC758 \uBC30\uC218\uAC00 \uC544\uB2CC \uACBD\uC6B0\uB3C4 \uD1B5\uACFC\uC2DC\uD0AC \uC218 \uC788\uC74C\n // \uC608: \"QQ\" (\uAE38\uC774 2) -> false, \"QQQ\" (\uAE38\uC774 3) -> false\n // \"QQ==\" (\uAE38\uC774 4) -> true, \"QQQ=\" (\uAE38\uC774 4) -> true\n // \"QQQ\"\uB294 `base64Regex.test(\"QQQ\")`\uB294 false\uC774\uC9C0\uB9CC, `Buffer.from(\"QQQ\", \"base64\").toString(\"base64\")`\uB294 \"QQ==\"\uB97C \uBC18\uD658.\n // \uC5C4\uBC00\uD558\uAC8C\uB294 \uB514\uCF54\uB529 \uC2DC\uB3C4 \uD6C4 \uB2E4\uC2DC \uC778\uCF54\uB529\uD574\uC11C \uC6D0\uBCF8\uACFC \uAC19\uC740\uC9C0 \uBE44\uAD50\uD558\uB294 \uAC83\uC774 \uAC00\uC7A5 \uD655\uC2E4\uD558\uC9C0\uB9CC, \uC131\uB2A5 \uC774\uC288\uAC00 \uC788\uC744 \uC218 \uC788\uC74C.\n }\n\n\n return base64Regex.test(base64Data);\n }\n}\n", "export namespace ArrayUtils {\n export type PickChanceType<T> = { data: T, chance: number };\n // export const uniqueBy = <T>(array: T[], predicate: (a: T, b: T) => boolean): T[] => {\n // return array.filter((item, index, self) =>\n // index === self.findIndex((other) => predicate(item, other))\n // );\n // };\n export const create2DArray = <T>(rows: number, cols: number, initialValue: T | ((row: number, cols: number) => T)): T[][] => {\n const array: T[][] = [];\n for (let row = 0; row < rows; row++) {\n const rowArray: T[] = [];\n for (let col = 0; col < cols; col++) {\n if (typeof initialValue === 'function') {\n rowArray.push((initialValue as (row: number, col: number) => T)(row, col));\n } else {\n rowArray.push(initialValue as T);\n }\n }\n array.push(rowArray);\n }\n return array;\n\n }\n export const toShuffle = <T>(data: T[]): T[] => {\n const array = [...data];\n for (let i = array.length - 1; i > 0; i--) {\n const j = Math.floor(Math.random() * (i + 1));\n [array[i], array[j]] = [array[j], array[i]];\n }\n return array;\n };\n\n // export function maxLength<T>(array: T[]): number;\n // export function maxLength<T>(array: T[][]): { maxRows: number; maxCols: number };\n // export function maxLength<T>(array: T[][][] ): { maxRows: number; maxCols: number };\n // export function maxLength <T>(array: T[] | T[][] | T[][][] ): { maxRows: number; maxCols: number } | number {\n // if (Array.isArray(array[0])) {\n // return { maxRows: array.length, maxCols: Math.max(...array.map(row => row.length), 0) };\n // } else {\n // return array.length;\n // }\n // }\n\n // export type Space = { x: number, y: number, w: number, h: number };\n // export const pickRandomSpace = (array: Space[], where: { w: number, h: number }): { x: number, y: number } | undefined => {\n // const minmax = ConvertUtils.minMaxCenterAvg(array ?? [])\n // // 2\uCC28 \uBC30\uC5F4\uB85C \uBCC0\uD658, \uACB9\uCE58\uB294 \uC601\uC5ED\uC774 \uC788\uC73C\uBA74 3\uCC28 \uBC30\uC5F4\uB85C \uCD94\uAC00\n // const cellSizes2D: Space[][][] = Array.from({length: minmax.y?.max ?? 0}, () =>\n // Array.from({length: minmax.x?.max ?? 0}, () => [])\n // );\n //\n // array.forEach(it => {\n // cellSizes2D[it.y] = cellSizes2D[it.y] || [];\n // if (!cellSizes2D[it.y][it.x]) {\n // // @ts-ignore\n // cellSizes2D[it.y][it.x] = it;\n // } else {\n // // \uC774\uBBF8 \uAC12\uC774 \uC788\uC73C\uBA74 3\uCC28 \uBC30\uC5F4\uB85C \uACB9\uCE58\uB294 \uAC12 \uCD94\uAC00\n // if (!Array.isArray(cellSizes2D[it.y][it.x])) {\n // // @ts-ignore\n // cellSizes2D[it.y][it.x] = [cellSizes2D[it.y][it.x]];\n // }\n // (cellSizes2D[it.y][it.x]).push(it);\n // }\n // });\n // const cellSizes = cellSizes2D.flatMap((it, y) => it.map((it, x) => {\n // const minmax = ConvertUtils.minMaxCenterAvg(Array.isArray(it) ? it : [it])\n // return {\n // x: x,\n // y: y,\n // w: minmax.w?.max ?? 0,\n // h: minmax.h?.max ?? 0,\n // overlay: 0,\n // }\n // }));\n //\n // // const cellSizes = array.map(it=> ({...it, overlay: 0}));\n //\n //\n // cellSizes.filter(it => it.w > 0 && it.h > 0).forEach(it => {\n // const wantW = it.w - 1; // \uC790\uAE30\uC790\uC2E0\uD3EC\uD568\uD574\uC11Cw\uB2C8\uAE50 -1\n // const wantH = it.h - 1;\n // const finds = cellSizes.filter(cit =>\n // (cit.x <= (it.x + wantW)) && (cit.x >= it.x) &&\n // (cit.y <= (it.y + wantH)) && (cit.y >= it.y)\n // );\n // finds.forEach(it => it.overlay++);\n // })\n //\n // const wantW = where.w - 1;\n // const wantH = where.h - 1; // \uC790\uAE30\uC790\uC2E0 \uD3EC\uD568\uBD80\uD130\uB2C8\uAE50 -1 \uD574\uC900\uB2E4\n // const targetCells = cellSizes.filter(it => it.overlay <= 0)\n // const targetCellsEmpty: { x: number, y: number }[] = [];\n // for (let targetCell of targetCells) {\n // const filter = cellSizes.filter(it =>\n // (it.x <= (targetCell.x + wantW)) && (it.x >= targetCell.x) &&\n // (it.y <= (targetCell.y + wantH)) && (it.y >= targetCell.y)\n // );\n // const overlaySum = MathUtil.sum(filter.map(it => it.overlay ?? 0));\n // // console.log('------>!!!!',filter.length, targetCell,where.w, where.h, (where.w * where.h), overlaySum)\n // if (filter.length === where.w * where.h && overlaySum === 0) {\n // targetCellsEmpty.push(targetCell);\n // }\n // }\n // return ArrayUtils.pick(targetCellsEmpty);\n // }\n\n\n export const popPick = <T>(array: T[]): T => {\n const index = Math.floor(Math.random() * array.length);\n return array.splice(index, 1)[0];\n }\n\n export const chancePick = <T>(array: PickChanceType<T>[], config?: {}): T => {\n const totalChance = array.reduce((sum, item) => sum + item.chance, 0);\n let randomValue = Math.random() * totalChance;\n\n for (const item of array) {\n if (randomValue < item.chance) {\n return item.data;\n }\n randomValue -= item.chance;\n }\n return pick(array.map(it => it.data))\n }\n\n export function pick<T>(array: T[], count: number): T[];\n export function pick<T>(array: T[]): T | undefined;\n export function pick<T>(array: T[][]): T[] | undefined;\n export function pick<T>(array: T[], count?: number): T[] | T | undefined {\n if (array.length === 0 && count !== undefined) {\n return [];\n }\n\n if (count === undefined) {\n return array[Math.floor(Math.random() * array.length)];\n }\n\n const result: T[] = [];\n const usedIndices = new Set<number>();\n while (result.length < count && usedIndices.size < array.length) {\n const randomIndex = Math.floor(Math.random() * array.length);\n if (!usedIndices.has(randomIndex)) {\n result.push(array[randomIndex]);\n usedIndices.add(randomIndex);\n }\n }\n return result;\n }\n\n export function maxLength<T>(array?: T[][]): { maxRows: number; maxCols: number, maxRowsCols: number, total: number; } {\n if (!array) {\n return {maxRows: 0, maxCols: 0, maxRowsCols: 0, total: 0};\n }\n const maxRows = array.length;\n const maxCols = Math.max(...array.map(row => row.length), 0);\n return {\n maxRows: maxRows,\n maxCols: maxCols,\n maxRowsCols: Math.max(maxCols, maxRows),\n total: array.reduce((total, row) => total + row.length, 0)\n }\n }\n\n // export const include = <T>(array:T[] | null = []) => {\n //\n // }\n export const toPush = <T>(array: T[] | null = [], ...data: T[]) => {\n return [...(array ?? []), ...data];\n }\n\n export const toRemove = <T>(array: T[] | null = [], ...data: T[]) => {\n return (array ?? []).filter(item => !data.includes(item));\n }\n\n export const toFilterOut = <T>(array: T[] | null = [], predicate: (item: T) => boolean): T[] => {\n return (array ?? []).filter(item => !predicate(item));\n }\n\n export const toFilter = <T>(array: T[] | null = [], predicate: (item: T) => boolean): T[] => {\n return (array ?? []).filter(item => predicate(item));\n }\n\n export const hasAll = <T>(array: T[] | null = [], ...targetArray: T[]): boolean => {\n return targetArray.every(item => (array ?? []).includes(item));\n }\n\n export const has = <T>(array: T[] | null = [], ...targetArray: T[]): boolean => {\n return targetArray.some(item => (array ?? []).includes(item));\n }\n\n export const hasNot = <T>(array: T[] | null = [], ...targetArray: T[]): boolean => {\n return targetArray.some(item => !(array ?? []).includes(item));\n }\n\n export const hasAllNot = <T>(array: T[] | null = [], ...targetArray: T[]): boolean => {\n return targetArray.every(item => !(array ?? []).includes(item));\n }\n\n// \uC5EC\uB7EC \uBC30\uC5F4\uC758 \uAD50\uC9D1\uD569, \uD569\uC9D1\uD569, \uCC28\uC9D1\uD569, \uB300\uCE6D \uCC28\uC9D1\uD569\uC744 \uACC4\uC0B0\uD558\uB294 \uD568\uC218\n export const relation = <T>(...arrays: T[][]): {\n intersection: T[];\n union: T[];\n difference: T[];\n symmetricDifference: T[];\n } => {\n // \uBC30\uC5F4\uC774 \uC5C6\uAC70\uB098 \uBE48 \uACBD\uC6B0 \uCC98\uB9AC\n if (arrays.length === 0) {\n return {\n intersection: [],\n union: [],\n difference: [],\n symmetricDifference: []\n };\n }\n\n // \uBC30\uC5F4\uC744 Set \uBC30\uC5F4\uB85C \uBCC0\uD658 (\uC911\uBCF5 \uC81C\uAC70)\n const sets = arrays.map((arr) => new Set<T>(arr));\n\n // \uAD50\uC9D1\uD569: \uBAA8\uB4E0 \uBC30\uC5F4\uC5D0 \uACF5\uD1B5\uC73C\uB85C \uC874\uC7AC\uD558\uB294 \uC694\uC18C\n // @ts-ignore\n const intersection = [...sets[0]].filter((item) =>\n sets.every((set) => set.has(item))\n );\n // const intersection = [...sets.reduce((acc, set) =>\n // new Set([...acc].filter((item) => set.has(item)))\n // )];\n\n\n // \uD569\uC9D1\uD569: \uBAA8\uB4E0 \uBC30\uC5F4\uC758 \uC694\uC18C\uB97C \uD569\uCE5C \uD6C4 \uC911\uBCF5 \uC81C\uAC70\n // @ts-ignore\n const union = [...new Set(arrays.flat())];\n\n // \uCC28\uC9D1\uD569: \uCCAB \uBC88\uC9F8 \uBC30\uC5F4\uC5D0\uC11C \uB098\uBA38\uC9C0 \uBC30\uC5F4\uC5D0 \uC5C6\uB294 \uC694\uC18C\n // @ts-ignore\n const difference = [...sets[0]].filter((item) =>\n sets.slice(1).every((set) => !set.has(item))\n );\n\n // \uB300\uCE6D \uCC28\uC9D1\uD569: \uAC01 \uBC30\uC5F4\uC5D0\uC11C \uB2E4\uB978 \uBC30\uC5F4\uC5D0 \uC5C6\uB294 \uC694\uC18C\uB4E4\uC758 \uD569\uC9D1\uD569\n const allUniqueElements = new Set<T>();\n for (let i = 0; i < sets.length; i++) {\n const currentSet = sets[i];\n const otherSetsUnion = new Set<T>(\n arrays\n .filter((_, index) => index !== i)\n .flat()\n );\n // @ts-ignore\n const uniqueToCurrent = [...currentSet].filter(\n (item) => !otherSetsUnion.has(item)\n );\n uniqueToCurrent.forEach((item) => allUniqueElements.add(item));\n }\n // @ts-ignore\n const symmetricDifference = [...allUniqueElements];\n\n return {\n intersection,\n union,\n difference,\n symmetricDifference\n };\n };\n}", "export type WithRequiredProperty<Type, Key extends keyof Type> = Type & {\n [Property in Key]-?: Type[Property];\n};\nexport type OptionalType<T, K extends keyof T> = Pick<Partial<T>, K> & Omit<T, K>;\nexport type KeysWithValsOfType<T, V> = keyof { [P in keyof T as T[P] extends V ? P : never]: P };\nexport type PropType<T> = {\n [P in keyof T]: T[P];\n};\nexport type ArrayElementType<T> = T extends (infer U)[] ? U : never;\nexport type PickMix<T, M, K extends keyof T> = {\n [P in K]: T[P] & M;\n};\nexport type PickArrayElementMix<T, M, K extends keyof T> = {\n [P in K]: (ArrayElementType<T[P]> & M)[];\n};\nexport type ChangeArrayElement<T, M> = T extends (infer U)[] ? M[] : never;\nexport type ChangeArrayElementMix<T, M> = T extends (infer U)[] ? (U & M)[] : never;\nexport type ChangePickArrayElementMix<T, M, K extends keyof T> = Omit<T, K> & PickArrayElementMix<T, M, K>;\n\n// InstanceType\nexport interface ConstructorType<T> {\n new (...args: any[]): T;\n}\nexport type Method = (...args: any[]) => any; // Function\nexport type MethodKeys<T> = { [K in keyof T]: T[K] extends Function ? K : never }[keyof T];\nexport type NonMethodKeys<T> = { [K in keyof T]: T[K] extends Function ? never : K }[keyof T];\nexport type GenericClassDecorator<T> = (target: T) => void;\n// declare type ClassDecorator = <TFunction extends Function>(target: TFunction) => TFunction | void;\n// export type ReflectField = PropertyDecorator\n// export type ReflectMethod = MethodDecorator\nexport type MethodParameter = (target: Object, propertyKey: string | symbol, parameterIndex: number) => void;\n\ntype Reverse<TupleType extends any[], ReversedTupleType extends any[] = []> = {\n 0: ReversedTupleType;\n 1: TupleType extends [infer Head, ...infer Tail] ? Reverse<Tail, [Head, ...ReversedTupleType]> : never;\n}[TupleType extends [] ? 0 : 1];\n\n//\ntype UnionToIntersection<U> = (U extends unknown ? (arg: U) => 0 : never) extends (arg: infer I) => 0 ? I : never;\n\n/**\n * LastInUnion<1 | 2> = 2.\n */\ntype LastInUnion<U> =\n UnionToIntersection<U extends unknown ? (x: U) => 0 : never> extends (x: infer L) => 0 ? L : never;\n\n/**\n * UnionToTuple<1 | 2> = [1, 2].\n */\nexport type UnionToTuple<U, Last = LastInUnion<U>> = [U] extends [never]\n ? []\n : [...UnionToTuple<Exclude<U, Last>>, Last];\n\nexport type FilterUndefined<T extends unknown[]> = T extends []\n ? []\n : T extends [infer H, ...infer R]\n ? H extends undefined\n ? FilterUndefined<R>\n : [H, ...FilterUndefined<R>]\n : T;\n\nexport type FilterNever<T extends unknown[]> = T extends []\n ? []\n : T extends [infer H, ...infer R]\n ? H extends never\n ? FilterUndefined<R>\n : [H, ...FilterUndefined<R>]\n : T;\n\nexport type Mutable<T> = {\n -readonly [P in keyof T]: T[P];\n};\nexport type ExtractNotNullish<T> = T extends null | undefined ? never : T;\nexport type FilterNullish<T> = T extends [infer E, ...infer Rest]\n ? [ExtractNotNullish<E>, ...FilterNullish<Rest>]\n : T extends (infer E)[]\n ? ExtractNotNullish<E>[]\n : ExtractNotNullish<T>;\n\nexport type ExtractNotFalsy<T> = T extends false ? never : T;\nexport type FilterFalsy<T> = T extends [infer E, ...infer Rest]\n ? [ExtractNotFalsy<E>, ...FilterFalsy<Rest>]\n : T extends (infer E)[]\n ? ExtractNotFalsy<E>[]\n : ExtractNotFalsy<T>;\nexport type FieldType<T, F> = Record<keyof T, F>;\nexport type FieldUnionType<T, F> = {\n [P in keyof T]: T[P] | F;\n};\nexport type FieldReplaceType<T, F extends keyof T, R> = Omit<T, F> & {\n [P in F]: R;\n};\nexport type FieldPartialType<T, F extends keyof T> = Omit<T, F> & {\n [P in F]?: T[P];\n};\nexport type FieldRequiredType<T, F extends keyof T> = Omit<T, F> & {\n [P in F]-?: T[P];\n};\nexport type FieldReadonlyType<T, F extends keyof T> = Omit<T, F> & {\n readonly [P in F]: T[P];\n};\nexport type FieldMutableType<T, F extends keyof T> = Omit<T, F> & {\n -readonly [P in F]: T[P];\n};\n\n\n\nexport type Dictionary<T = any> = Record<string | number, T>;\ntype GetKeys<T> = T extends unknown[]\n ? T extends [] // special case empty tuple => no keys\n ? never\n : '0' extends keyof T // any tuple with at least one element\n ? Exclude<keyof T, keyof []>\n : number // other array\n : keyof T; // not an array\nexport type Stringify<T> = T extends string | number ? `${T}` : never;\nexport type FlattenObjectKeys<T extends Dictionary | any[]> =\n Stringify<GetKeys<T>> extends infer StringKey extends string | number\n ? [StringKey] extends [never]\n ? never\n : StringKey extends keyof T\n ? T[StringKey] extends Dictionary | any[]\n ?\n | StringKey\n | `${StringKey}.${FlattenObjectKeys<T[StringKey]>}`\n | `${StringKey}[${keyof T[StringKey] & number}]`\n | `${StringKey}[${keyof T[StringKey] & number}].${FlattenObjectKeys<T[StringKey][number]>}`\n : StringKey\n : never\n : never;\n\ntype GetType<T, K> = K extends keyof T ? T[K] : K extends `${number}` ? (T extends any[] ? T[number] : never) : never;\nexport type FlattenObjectType<T, Path = Stringify<keyof T>> =\n Stringify<keyof T> extends infer StringKey extends string | number\n ? [StringKey] extends [never]\n ? never\n : Path extends `${infer FirstKey}[${infer Index}].${infer Rest}`\n ? FlattenObjectType<GetType<GetType<T, FirstKey>, Index>, Rest>\n : Path extends `${infer FirstKey}.${infer Rest}`\n ? FlattenObjectType<GetType<T, FirstKey>, Rest>\n : Path extends `${infer FirstKey}[${infer Rest}]`\n ? FlattenObjectType<GetType<T, FirstKey>, Rest>\n : GetType<T, Path>\n : never;\n\nexport type FlattenObject<T extends Dictionary> = {\n [FlattenKey in FlattenObjectKeys<T>]: FlattenObjectType<T, FlattenKey>;\n};\n\nexport type FilterTuple<T extends any[]> = '0' extends keyof T ? never : T;\n\nexport type MaybeArray<T> = T | T[];\nexport type With<T extends MaybeArray<Dictionary>, V extends Dictionary> = T extends (infer U)[] ? Array<U & V> : T & V;\n\nexport type Nullable<T> = T | null;\nexport type Nullish<T> = Nullable<T> | undefined;\nexport type NullableObject<T> = {\n [P in keyof T]: Nullable<T[P]>;\n};\nexport type NullableProperty<T, K extends keyof T> = {\n [P in K]: Nullable<T[P]>;\n};\nexport type NullOrUndefined<T> = null | undefined;\nexport type NotNullOrUndefined<T> = T extends null | undefined ? never : T;\nexport type NonNullable<T> = T extends null | undefined ? never : T;\nexport type NonNullableObject<T> = {\n [P in keyof T]-?: NonNullable<T[P]>;\n};\nexport type NonNullableProperty<T, K extends keyof T> = {\n [P in K]-?: NonNullable<T[P]>;\n};\n\nexport type GroupBy<T extends Dictionary, K extends keyof T> = {\n [P in T[K]]: T[];\n};\n\nexport type InferPromise<T> = T extends Promise<infer U> ? U : never;\n\nexport type JoinKeys<T> = {\n [K in keyof T]: K extends string ? `${K}` | `${K}-${JoinKeys<T[K]>}` : never;\n}[keyof T];\n\nexport type FilteredFirstKeys<T, FIRST extends string> = {\n [K in keyof T as K extends `${FIRST}${string}` ? K : never]: T[K];\n};\nexport type ExcludeFilteredFirstKeys<T, FIRST extends string> = {\n [K in keyof T as K extends `${FIRST}${string}` ? never : K]: T[K];\n};\n\nexport type GetDotPath<T, P extends string> = P extends `${infer K}.${infer R}`\n ? K extends keyof T\n ? GetDotPath<T[K], R>\n : never\n : P extends keyof T\n ? T[P]\n : P extends string\n ? T\n : never;\n\nexport type FlatJoinKey<T, J = '.'> = {\n [P in keyof T as T[P] extends object\n ? // @ts-ignore\n `${P}${J}${keyof FlatJoinDotKey<T[P]>}` | `${P}`\n : // @ts-ignore\n `${P}`]: unknown;\n};\nexport type FlatJoinDotKey<T> = {\n [P in keyof T as T[P] extends object\n ? // @ts-ignore\n `${P}.${keyof FlatJoinDotKey<T[P]>}` | `${P}`\n : // @ts-ignore\n `${P}`]: unknown;\n};\nexport type FlatJoinDotKeyType<T> = keyof FlatJoinDotKey<T>;\nexport type FlatJoinKeyType<T, J> = keyof FlatJoinKey<T, J>;\nexport type FlatJoinDotKeyFieldType<T, D> = FieldType<FlatJoinDotKey<T>,D>;\nexport type FlatJoinDotKeyTypePartial<T, D> = Partial<FieldType<FlatJoinDotKey<T>,D>>;\nexport type FlatJoinDotKeyExcludeStartWithUnderBar<T> = {\n [P in keyof T as T[P] extends any\n ? // @ts-ignore\n P extends `_${string}`\n ? never\n : // @ts-ignore\n `${P}.${keyof FlatJoinDotKeyExcludeStartWithUnderBar<T[P]>}` | `${P}`\n : // @ts-ignore\n `${P}`]: unknown;\n};\nexport type FlatJoinSlashKey<T> = {\n [P in keyof T as T[P] extends object\n ? // @ts-ignore\n `${P}/${keyof FlatJoinDotKey<T[P]>}` | `${P}`\n : // @ts-ignore\n `${P}`]: unknown;\n};\nexport type FlatJoinSlashKeyExcludeStartWithUnderBar<T> = {\n [P in keyof T as T[P] extends any\n ? // @ts-ignore\n P extends `_${string}`\n ? never\n : // @ts-ignore\n `${P}/${keyof FlatJoinSlashKeyExcludeStartWithUnderBar<T[P]>}` | `${P}`\n : // @ts-ignore\n `${P}`]: unknown;\n};\nexport type FlatJoinKeyExcludeStartWith<T, J extends string, E extends string> = {\n [P in keyof T as T[P] extends any\n ? // @ts-ignore\n P extends `${E}${string}`\n ? never\n : // @ts-ignore\n `${P}${J}${keyof FlatJoinSlashKeyExcludeStartWithUnderBar<T[P]>}` | `${P}`\n : // @ts-ignore\n `${P}`]: unknown;\n};\n\n\n// https://amit08255.medium.com/the-most-mind-blowing-thing-ive-learned-in-typescript-930926ce848a\nexport type ParseRoute<T extends string> = T extends `/${infer Segment}/${infer Rest}`\n ? Segment extends `:${infer Param}`\n ? { [K in Param]: string } & ParseRoute<`/${Rest}`>\n : ParseRoute<`/${Rest}`>\n : T extends `/:${infer Param}`\n ? { [K in Param]: string }\n : {}\n// type UserRoute = ParseRoute<'/users/:id/posts/:postId'>\n// type UserRoute = { id: string; postId: string }\n// const user:UserRoute = { id: '1', postId: '2' };\n\n\nexport type ParsePath<T extends string> = T extends `/${infer Segment}/${infer Rest}`\n ? [Segment, ...ParsePath<`/${Rest}`>]\n : T extends `/${infer Segment}`\n ? [Segment]\n : []\n// type ApiRoute = ParsePath<\"/api/users/123\"> // [\"api\", \"users\", \"123\"]\n// type InvalidRoute = ParsePath<\"missing-slash\"> // []\n\n\n\nexport type StringValue<T> = {\n [K in keyof T]: T[K] extends object ? StringValue<T[K]> : string;\n};\n\n\n// index\nexport interface ConstructorType<T> {\n new (...args: any[]): T;\n}\n\n// infer\uC640 \uC870\uAC74\uBD80 \uD0C0\uC785\uC73C\uB85C \uD749\uB0B4\uB0B4\uAE30\n// \uAC00\uB054 \"\uC0C1\uC704 \uD0C0\uC785\"\uC73C\uB85C \uC81C\uC57D\uC744 \uB450\uACE0 \uC2F6\uC744 \uB54C\uB294 \uC870\uAC74\uBD80 \uD0C0\uC785\uC744 \uC501\uB2C8\uB2E4:\n// let fn: Super<HttpResponseError<any>>;\n// fn \uC740 HttpResponseError<any> \uC758 \uC0C1\uC704 \uD0C0\uC785 \uD30C\uB77C\uBBF8\uD130\uB3C4 \uBC1B\uC744 \uC218 \uC788\uC74C\n// type Super<T> = T extends HttpResponseError<infer U> ? HttpResponseError<any> : never;\nexport type Super<T> = (arg: T) => void;\n\n// export type GenericClassDecorator<T> = (target: T) => void;\n// export type MethodParameter = (target: Object, propertyKey: string | symbol, parameterIndex: number) => void;\n// export type ExtractNotFalsy<T> = T extends false ? never : T;\n// export type FilterFalsy<T> = T extends [infer E, ...infer Rest]\n// ? [ExtractNotFalsy<E>, ...FilterFalsy<Rest>]\n// : T extends (infer E)[]\n// ? ExtractNotFalsy<E>[]\n// : ExtractNotFalsy<T>;\n//\n// export type Mutable<T> = {\n// -readonly [P in keyof T]: T[P];\n// };\n// NonNullable\nexport type MethodOnlyFieldPostFix<T, S extends string> = {\n [key in keyof T as `${string & key}${S}`]: T[key] extends (...args: any[]) => any ? T[key] : never;\n};\nexport type MethodOnlyFieldPerFix<T, S extends string> = {\n [key in keyof T as `${S}${string & key}`]: T[key] extends (...args: any[]) => any ? T[key] : never;\n};\n// export const isDefined = <T>(value: T | undefined | null): value is T => value !== undefined && value !== null;\n// export const isDefined = <T>(value: T | undefined | null): value is NonNullable<T> => value !== undefined && value !== null;\nexport const isDefined = <T>(value: T | undefined | null): value is T => value !== undefined && value !== null;\n/*\ndeclare type ClassDecorator = <TFunction extends Function>(target: TFunction) => TFunction | void;\ndeclare type PropertyDecorator = (target: Object, propertyKey: string | symbol) => void;\ndeclare type MethodDecorator = <T>(target: Object, propertyKey: string | symbol, descriptor: TypedPropertyDescriptor<T>) => TypedPropertyDescriptor<T> | void;\ndeclare type ParameterDecorator = (target: Object, propertyKey: string | symbol, parameterIndex: number) => void;\n */\n\ndeclare global {\n namespace Reflect {\n function metadata(metadataKey: any, target: Object, propertyKey?: string | symbol): any;\n function getMetadata(metadataKey: any, target: Object, propertyKey?: string | symbol): any;\n function defineMetadata(metadataKey: any, value: any, target: Object, propertyKey?: string | symbol): void;\n function getOwnMetadata(metadataKey: any, target: Object, propertyKey?: string | symbol): any;\n function getMetadataKeys(target: Object): any[];\n }\n}\nexport {};\n", "/**\n * ObjectPathParser - JavaScript \uACBD\uB85C \uD45C\uD604\uC2DD\uC744 \uD30C\uC2F1\uD558\uACE0 Optional Chaining\uC73C\uB85C \uBCC0\uD658\uD558\uB294 \uD30C\uC11C\n * \n * \uD2B8\uB9AC \uAD6C\uC870\uC758 \uD1A0\uD070\uC744 \uC0DD\uC131\uD558\uC5EC \uACC4\uCE35\uC801 \uD45C\uD604\uC2DD\uC744 \uC9C0\uC6D0\n * \n * \uC0AC\uC6A9\uBC95:\n * const parser = new ObjectPathParser('this.obj.func(a.b[0])');\n * const root = parser.getRoot();\n * root.children.forEach(child => console.log(child.type));\n */\n\n// --- Token Types ---\nexport enum TokenType {\n // Leaf tokens\n IDENTIFIER = 'identifier',\n STRING = 'string',\n NUMBER = 'number',\n TEMPLATE_LITERAL = 'template_literal',\n OPERATOR = 'operator',\n WHITESPACE = 'whitespace',\n \n // Structural tokens (can have children)\n MEMBER_EXPRESSION = 'member_expression',\n PROPERTY_ACCESS = 'property_access',\n BRACKET_ACCESS = 'bracket_access',\n FUNCTION_CALL = 'function_call',\n PARENTHESIZED = 'parenthesized',\n OBJECT_LITERAL = 'object_literal',\n ARRAY_LITERAL = 'array_literal',\n TERNARY = 'ternary',\n BINARY = 'binary',\n \n // Root\n ROOT = 'root',\n EOF = 'eof',\n}\n\n// --- Base Token Class ---\nexport class Token {\n public type: TokenType;\n public value: string;\n public start: number;\n public end: number;\n public parent: Token | null = null;\n public children: Token[] = [];\n public isOptional: boolean = false;\n // \uC5F0\uC0B0\uC790 \uC8FC\uBCC0 \uACF5\uBC31 \uBCF4\uC874\uC6A9\n public leftSpace: string = '';\n public rightSpace: string = '';\n\n constructor(type: TokenType, value: string, start: number, end: number) {\n this.type = type;\n this.value = value;\n this.start = start;\n this.end = end;\n }\n\n // --- Child management ---\n addChild(child: Token): this {\n child.parent = this;\n this.children.push(child);\n return this;\n }\n\n getChildren(): Token[] {\n return this.children;\n }\n\n hasChildren(): boolean {\n return this.children.length > 0;\n }\n\n getParent(): Token | null {\n return this.parent;\n }\n\n // --- Type checks ---\n isIdentifier(): boolean { return this.type === TokenType.IDENTIFIER; }\n isString(): boolean { return this.type === TokenType.STRING; }\n isNumber(): boolean { return this.type === TokenType.NUMBER; }\n isTemplateLiteral(): boolean { return this.type === TokenType.TEMPLATE_LITERAL; }\n isOperator(): boolean { return this.type === TokenType.OPERATOR; }\n isWhitespace(): boolean { return this.type === TokenType.WHITESPACE; }\n isMemberExpression(): boolean { return this.type === TokenType.MEMBER_EXPRESSION; }\n isPropertyAccess(): boolean { return this.type === TokenType.PROPERTY_ACCESS; }\n isBracketAccess(): boolean { return this.type === TokenType.BRACKET_ACCESS; }\n isFunctionCall(): boolean { return this.type === TokenType.FUNCTION_CALL; }\n isParenthesized(): boolean { return this.type === TokenType.PARENTHESIZED; }\n isObjectLiteral(): boolean { return this.type === TokenType.OBJECT_LITERAL; }\n isArrayLiteral(): boolean { return this.type === TokenType.ARRAY_LITERAL; }\n isTernary(): boolean { return this.type === TokenType.TERNARY; }\n isBinary(): boolean { return this.type === TokenType.BINARY; }\n isRoot(): boolean { return this.type === TokenType.ROOT; }\n isEOF(): boolean { return this.type === TokenType.EOF; }\n\n // --- Keyword check for identifiers ---\n isKeyword(): boolean {\n if (this.type !== TokenType.IDENTIFIER) return false;\n return ['true', 'false', 'null', 'undefined', 'this', 'window', 'document'].includes(this.value);\n }\n\n // --- Operator checks ---\n isLogicalOperator(): boolean {\n return this.type === TokenType.OPERATOR && (this.value === '||' || this.value === '&&');\n }\n\n isNullishOperator(): boolean {\n return this.type === TokenType.OPERATOR && this.value === '??';\n }\n\n isComparisonOperator(): boolean {\n return this.type === TokenType.OPERATOR && \n ['===', '!==', '==', '!=', '<', '>', '<=', '>='].includes(this.value);\n }\n\n isArithmeticOperator(): boolean {\n return this.type === TokenType.OPERATOR && ['+', '-', '*', '/', '%'].includes(this.value);\n }\n\n // --- Stringify ---\n stringify(): string {\n if (this.children.length === 0) {\n return this.value;\n }\n return this.children.map(c => c.stringify()).join('');\n }\n\n // --- Optional chain conversion ---\n toOptionalChain(isFirst: boolean = false): string {\n switch (this.type) {\n case TokenType.PROPERTY_ACCESS:\n return `?.${this.children.map(c => c.toOptionalChain()).join('')}`;\n \n case TokenType.BRACKET_ACCESS:\n // \uCCAB \uBC88\uC9F8 \uC694\uC18C\uC778 \uACBD\uC6B0 ?. \uCD94\uAC00\uD558\uC9C0 \uC54A\uC74C\n if (isFirst) {\n return `[${this.children.map(c => c.toOptionalChain()).join('')}]`;\n }\n return `?.[${this.children.map(c => c.toOptionalChain()).join('')}]`;\n \n case TokenType.FUNCTION_CALL:\n return `?.(${this.children.map(c => c.toOptionalChain()).join('')})`;\n \n case TokenType.MEMBER_EXPRESSION:\n if (this.children.length === 0) return this.value;\n let result = '';\n for (let i = 0; i < this.children.length; i++) {\n const child = this.children[i];\n // \uCCAB \uBC88\uC9F8 \uC790\uC2DD\uC5D0\uAC8C isFirst=true \uC804\uB2EC\n result += child.toOptionalChain(i === 0);\n }\n return result;\n\n case TokenType.PARENTHESIZED:\n // isOptional\uC774 \uC124\uC815\uB418\uC5B4 \uC788\uC73C\uBA74 ?. \uC811\uADFC\uC73C\uB85C \uCC98\uB9AC\n if (this.isOptional) {\n return `?.(${this.children.map(c => c.toOptionalChain()).join('')})`;\n }\n // \uBD80\uBAA8\uAC00 MEMBER_EXPRESSION\uC774\uACE0 \uCCAB \uBC88\uC9F8 \uC790\uC2DD\uC774 \uC544\uB2C8\uBA74 ?. \uCD94\uAC00\n if (this.parent?.type === TokenType.MEMBER_EXPRESSION && !isFirst) {\n return `?.(${this.children.map(c => c.toOptionalChain()).join('')})`;\n }\n return `(${this.children.map(c => c.toOptionalChain()).join('')})`;\n \n case TokenType.TERNARY:\n // children: [condition, trueBranch, falseBranch]\n if (this.children.length >= 3) {\n return `${this.children[0].toOptionalChain()} ? ${this.children[1].toOptionalChain()} : ${this.children[2].toOptionalChain()}`;\n }\n return this.stringify();\n \n case TokenType.BINARY:\n // children: [left, right], value contains operator\n if (this.children.length >= 2) {\n const op = this.value;\n // \uC6D0\uBCF8 \uACF5\uBC31 \uBCF4\uC874\n const leftSp = this.leftSpace;\n const rightSp = this.rightSpace;\n return `${this.children[0].toOptionalChain()}${leftSp}${op}${rightSp}${this.children[1].toOptionalChain()}`;\n }\n return this.stringify();\n \n case TokenType.ROOT:\n return this.children.map(c => c.toOptionalChain()).join('');\n \n case TokenType.OBJECT_LITERAL:\n case TokenType.ARRAY_LITERAL:\n case TokenType.STRING:\n case TokenType.NUMBER:\n case TokenType.TEMPLATE_LITERAL:\n return this.value;\n \n case TokenType.OPERATOR:\n // Unary operator with children (e.g., !expr)\n if (this.children.length > 0) {\n return `${this.value}${this.children.map(c => c.toOptionalChain()).join('')}`;\n }\n return this.value;\n \n default:\n return this.value;\n }\n }\n\n // --- Tree traversal ---\n walk(callback: (token: Token, depth: number) => void, depth: number = 0): void {\n callback(this, depth);\n for (const child of this.children) {\n child.walk(callback, depth + 1);\n }\n }\n\n find(predicate: (token: Token) => boolean): Token | null {\n if (predicate(this)) return this;\n for (const child of this.children) {\n const found = child.find(predicate);\n if (found) return found;\n }\n return null;\n }\n\n findAll(predicate: (token: Token) => boolean): Token[] {\n const results: Token[] = [];\n this.walk((token) => {\n if (predicate(token)) results.push(token);\n });\n return results;\n }\n}\n\n\n// --- ObjectPathParser Class ---\nexport class ObjectPathParser {\n private input: string;\n private pos: number = 0;\n private root: Token;\n\n constructor(input: string = '') {\n this.input = input;\n this.root = new Token(TokenType.ROOT, '', 0, input.length);\n if (input) {\n this.parse();\n }\n }\n\n // --- Getters ---\n getInput(): string {\n return this.input;\n }\n\n getRoot(): Token {\n return this.root;\n }\n\n getTokens(): Token[] {\n return this.root.children;\n }\n\n // --- Flat token list (for backward compatibility) ---\n getFlatTokens(): Token[] {\n const tokens: Token[] = [];\n this.root.walk((token) => {\n if (token.type !== TokenType.ROOT) {\n tokens.push(token);\n }\n });\n return tokens;\n }\n\n // --- Helper methods ---\n isFunctionScript(): boolean {\n return this.input.trim().startsWith('function');\n }\n\n isArrowFunctionScript(): boolean {\n return /^\\s*\\([^)]*\\)\\s*=>/.test(this.input);\n }\n\n isObjectLiteralInput(): boolean {\n const trimmed = this.input.trim();\n return trimmed.startsWith('{') && trimmed.endsWith('}');\n }\n\n\n // --- Tokenizer helpers ---\n private peek(offset: number = 0): string {\n return this.input[this.pos + offset] || '';\n }\n\n private advance(): string {\n return this.input[this.pos++] || '';\n }\n\n private isEOF(): boolean {\n return this.pos >= this.input.length;\n }\n\n private skipWhitespace(): void {\n while (!this.isEOF() && /\\s/.test(this.peek())) {\n this.advance();\n }\n }\n\n // --- Main parse method ---\n private parse(): void {\n this.pos = 0;\n this.root = new Token(TokenType.ROOT, '', 0, this.input.length);\n \n while (!this.isEOF()) {\n this.skipWhitespace();\n if (this.isEOF()) break;\n \n const token = this.parseExpression();\n if (token) {\n this.root.addChild(token);\n }\n }\n }\n\n private parseExpression(): Token | null {\n this.skipWhitespace();\n if (this.isEOF()) return null;\n\n // Check for ternary operator at top level\n const ternary = this.tryParseTernary();\n if (ternary) return ternary;\n\n // Check for binary operators\n const binary = this.tryParseBinary();\n if (binary) return binary;\n\n // Parse primary expression (member expression, literal, etc.)\n return this.parsePrimaryExpression();\n }\n\n\n private parsePrimaryExpression(): Token | null {\n this.skipWhitespace();\n if (this.isEOF()) return null;\n\n const start = this.pos;\n const char = this.peek();\n\n // String literal\n if (char === \"'\" || char === '\"') {\n return this.parseString(char);\n }\n\n // Template literal\n if (char === '`') {\n return this.parseTemplateLiteral();\n }\n\n // Object literal\n if (char === '{') {\n return this.parseObjectLiteral();\n }\n\n // Array literal or bracket access at start\n if (char === '[') {\n return this.parseArrayOrBracket();\n }\n\n // Parenthesized expression\n if (char === '(') {\n return this.parseParenthesized();\n }\n\n // Number\n if (/\\d/.test(char)) {\n return this.parseNumber();\n }\n\n // Identifier (start of member expression)\n if (/[a-zA-Z_$]/.test(char)) {\n return this.parseMemberExpression();\n }\n\n // Unary NOT operator (!)\n if (char === '!') {\n return this.parseUnaryNot();\n }\n\n // Operator\n if (this.isOperatorChar(char)) {\n return this.parseOperator();\n }\n\n // Unknown - skip\n this.advance();\n return null;\n }\n\n // Parse unary NOT operator (!expr)\n private parseUnaryNot(): Token {\n const start = this.pos;\n this.advance(); // consume !\n \n this.skipWhitespace();\n \n // Parse the expression after !\n const expr = this.parsePrimaryExpression();\n if (expr) {\n // Create a unary token that wraps the expression\n const unary = new Token(TokenType.OPERATOR, '!', start, this.pos);\n unary.addChild(expr);\n return unary;\n }\n \n return new Token(TokenType.OPERATOR, '!', start, this.pos);\n }\n\n\n private parseMemberExpression(): Token {\n const start = this.pos;\n const memberExpr = new Token(TokenType.MEMBER_EXPRESSION, '', start, start);\n\n // Parse the base identifier\n const identifier = this.parseIdentifier();\n memberExpr.addChild(identifier);\n\n // Parse chain of accesses\n while (!this.isEOF()) {\n const char = this.peek();\n\n // Optional chaining: ?.\n if (char === '?' && this.peek(1) === '.') {\n this.advance(); this.advance(); // consume ?.\n \n if (this.peek() === '[') {\n // ?.[\n const bracket = this.parseBracketAccess(true);\n memberExpr.addChild(bracket);\n } else if (this.peek() === '(') {\n // ?.(\n const funcCall = this.parseFunctionCall(true);\n memberExpr.addChild(funcCall);\n } else {\n // ?.property\n const prop = this.parsePropertyAccess(true);\n memberExpr.addChild(prop);\n }\n }\n // Regular dot access\n else if (char === '.') {\n this.advance(); // consume .\n // Check if next is parenthesis (e.g., a.(b).c)\n if (this.peek() === '(') {\n const paren = this.parseParenthesizedAccess(false);\n memberExpr.addChild(paren);\n } else {\n const prop = this.parsePropertyAccess(false);\n memberExpr.addChild(prop);\n }\n }\n // Bracket access\n else if (char === '[') {\n const bracket = this.parseBracketAccess(false);\n memberExpr.addChild(bracket);\n }\n // Function call\n else if (char === '(') {\n const funcCall = this.parseFunctionCall(false);\n memberExpr.addChild(funcCall);\n }\n else {\n break;\n }\n }\n\n memberExpr.end = this.pos;\n memberExpr.value = this.input.substring(start, this.pos);\n return memberExpr;\n }\n\n // \uAD04\uD638\uB85C \uAC10\uC2F8\uC9C4 \uC18D\uC131 \uC811\uADFC (e.g., a.(b).c)\n private parseParenthesizedAccess(isOptional: boolean): Token {\n const start = this.pos;\n this.advance(); // consume (\n \n const paren = new Token(TokenType.PARENTHESIZED, '', start, start);\n paren.isOptional = isOptional;\n \n let depth = 1;\n let content = '';\n \n while (!this.isEOF() && depth > 0) {\n const char = this.peek();\n if (char === '(') depth++;\n else if (char === ')') {\n depth--;\n if (depth === 0) break;\n }\n content += this.advance();\n }\n \n if (content.trim()) {\n const innerParser = new ObjectPathParser(content);\n for (const child of innerParser.getTokens()) {\n paren.addChild(child);\n }\n }\n \n if (this.peek() === ')') this.advance(); // consume )\n \n paren.end = this.pos;\n paren.value = this.input.substring(start, this.pos);\n return paren;\n }\n\n\n private parseIdentifier(): Token {\n const start = this.pos;\n let value = '';\n while (!this.isEOF() && /[a-zA-Z0-9_$]/.test(this.peek())) {\n value += this.advance();\n }\n return new Token(TokenType.IDENTIFIER, value, start, this.pos);\n }\n\n private parsePropertyAccess(isOptional: boolean): Token {\n const start = this.pos;\n const prop = new Token(TokenType.PROPERTY_ACCESS, '', start, start);\n prop.isOptional = isOptional;\n \n const identifier = this.parseIdentifier();\n prop.addChild(identifier);\n \n prop.end = this.pos;\n prop.value = this.input.substring(start, this.pos);\n return prop;\n }\n\n private parseBracketAccess(isOptional: boolean): Token {\n const start = this.pos;\n this.advance(); // consume [\n \n const bracket = new Token(TokenType.BRACKET_ACCESS, '', start, start);\n bracket.isOptional = isOptional;\n \n // Parse content inside brackets\n const contentStart = this.pos;\n let depth = 1;\n let content = '';\n \n while (!this.isEOF() && depth > 0) {\n const char = this.peek();\n if (char === '[') depth++;\n else if (char === ']') {\n depth--;\n if (depth === 0) break;\n }\n content += this.advance();\n }\n \n // Parse the content as expression\n if (content.trim()) {\n const innerParser = new ObjectPathParser(content);\n for (const child of innerParser.getTokens()) {\n bracket.addChild(child);\n }\n }\n \n if (this.peek() === ']') this.advance(); // consume ]\n \n bracket.end = this.pos;\n bracket.value = this.input.substring(start, this.pos);\n return bracket;\n }\n\n\n private parseFunctionCall(isOptional: boolean): Token {\n const start = this.pos;\n this.advance(); // consume (\n \n const funcCall = new Token(TokenType.FUNCTION_CALL, '', start, start);\n funcCall.isOptional = isOptional;\n \n // Parse arguments\n let depth = 1;\n let content = '';\n \n while (!this.isEOF() && depth > 0) {\n const char = this.peek();\n if (char === '(') depth++;\n else if (char === ')') {\n depth--;\n if (depth === 0) break;\n }\n content += this.advance();\n }\n \n // Parse arguments as expressions\n if (content.trim()) {\n const innerParser = new ObjectPathParser(content);\n for (const child of innerParser.getTokens()) {\n funcCall.addChild(child);\n }\n }\n \n if (this.peek() === ')') this.advance(); // consume )\n \n funcCall.end = this.pos;\n funcCall.value = this.input.substring(start, this.pos);\n return funcCall;\n }\n\n private parseParenthesized(): Token {\n const start = this.pos;\n this.advance(); // consume (\n \n const paren = new Token(TokenType.PARENTHESIZED, '', start, start);\n \n let depth = 1;\n let content = '';\n \n while (!this.isEOF() && depth > 0) {\n const char = this.peek();\n if (char === '(') depth++;\n else if (char === ')') {\n depth--;\n if (depth === 0) break;\n }\n content += this.advance();\n }\n \n if (content.trim()) {\n const innerParser = new ObjectPathParser(content);\n for (const child of innerParser.getTokens()) {\n paren.addChild(child);\n }\n }\n \n if (this.peek() === ')') this.advance(); // consume )\n \n paren.end = this.pos;\n paren.value = this.input.substring(start, this.pos);\n \n // Check if followed by member access (e.g., (expr).prop or (expr)[0] or (expr)?.prop)\n if (this.peek() === '.' || this.peek() === '[' || (this.peek() === '?' && this.peek(1) === '.')) {\n const memberExpr = new Token(TokenType.MEMBER_EXPRESSION, '', start, start);\n memberExpr.addChild(paren);\n \n while (!this.isEOF()) {\n const char = this.peek();\n // Optional chaining: ?.\n if (char === '?' && this.peek(1) === '.') {\n this.advance(); this.advance(); // consume ?.\n if (this.peek() === '[') {\n const bracket = this.parseBracketAccess(true);\n memberExpr.addChild(bracket);\n } else if (this.peek() === '(') {\n const funcCall = this.parseFunctionCall(true);\n memberExpr.addChild(funcCall);\n } else {\n const prop = this.parsePropertyAccess(true);\n memberExpr.addChild(prop);\n }\n } else if (char === '.') {\n this.advance(); // consume .\n if (this.peek() === '(') {\n const parenAccess = this.parseParenthesizedAccess(false);\n memberExpr.addChild(parenAccess);\n } else {\n const prop = this.parsePropertyAccess(false);\n memberExpr.addChild(prop);\n }\n } else if (char === '[') {\n const bracket = this.parseBracketAccess(false);\n memberExpr.addChild(bracket);\n } else {\n break;\n }\n }\n \n memberExpr.end = this.pos;\n memberExpr.value = this.input.substring(start, this.pos);\n return memberExpr;\n }\n \n return paren;\n }\n\n\n private parseString(quote: string): Token {\n const start = this.pos;\n let value = this.advance(); // opening quote\n \n while (!this.isEOF() && this.peek() !== quote) {\n if (this.peek() === '\\\\') {\n value += this.advance();\n if (!this.isEOF()) value += this.advance();\n } else {\n value += this.advance();\n }\n }\n \n if (!this.isEOF()) value += this.advance(); // closing quote\n \n return new Token(TokenType.STRING, value, start, this.pos);\n }\n\n private parseTemplateLiteral(): Token {\n const start = this.pos;\n let value = this.advance(); // opening `\n let depth = 0;\n \n while (!this.isEOF()) {\n const char = this.peek();\n \n if (char === '`' && depth === 0) {\n value += this.advance();\n break;\n }\n \n // Handle ${...} expressions - process them for optional chaining\n if (char === '$' && this.peek(1) === '{') {\n value += this.advance(); // $\n value += this.advance(); // {\n depth++;\n \n // Collect the expression inside ${...}\n let exprContent = '';\n let exprDepth = 1;\n while (!this.isEOF() && exprDepth > 0) {\n const c = this.peek();\n if (c === '{') exprDepth++;\n else if (c === '}') {\n exprDepth--;\n if (exprDepth === 0) break;\n }\n exprContent += this.advance();\n }\n \n // Process the expression for optional chaining\n if (exprContent.trim()) {\n const innerParser = new ObjectPathParser(exprContent);\n value += innerParser.toOptionalChainPath();\n }\n \n if (this.peek() === '}') {\n value += this.advance(); // }\n depth--;\n }\n continue;\n }\n \n if (char === '\\\\') {\n value += this.advance();\n if (!this.isEOF()) value += this.advance();\n } else {\n value += this.advance();\n }\n }\n \n return new Token(TokenType.TEMPLATE_LITERAL, value, start, this.pos);\n }\n\n private parseNumber(): Token {\n const start = this.pos;\n let value = '';\n while (!this.isEOF() && /[\\d.]/.test(this.peek())) {\n value += this.advance();\n }\n return new Token(TokenType.NUMBER, value, start, this.pos);\n }\n\n\n private parseObjectLiteral(): Token {\n const start = this.pos;\n this.advance(); // consume {\n \n let depth = 1;\n let content = '{';\n \n while (!this.isEOF() && depth > 0) {\n const char = this.peek();\n if (char === '{') depth++;\n else if (char === '}') depth--;\n content += this.advance();\n }\n \n return new Token(TokenType.OBJECT_LITERAL, content, start, this.pos);\n }\n\n private parseArrayOrBracket(): Token {\n const start = this.pos;\n this.advance(); // consume [\n \n let depth = 1;\n let content = '';\n \n while (!this.isEOF() && depth > 0) {\n const char = this.peek();\n if (char === '[') depth++;\n else if (char === ']') {\n depth--;\n if (depth === 0) break;\n }\n content += this.advance();\n }\n \n if (this.peek() === ']') this.advance();\n \n // Check if this is followed by member access (then it's bracket access at start)\n if (this.peek() === '.' || this.peek() === '[') {\n const bracket = new Token(TokenType.BRACKET_ACCESS, `[${content}]`, start, this.pos);\n if (content.trim()) {\n const innerParser = new ObjectPathParser(content);\n for (const child of innerParser.getTokens()) {\n bracket.addChild(child);\n }\n }\n \n // Continue parsing as member expression\n const memberExpr = new Token(TokenType.MEMBER_EXPRESSION, '', start, start);\n memberExpr.addChild(bracket);\n \n while (!this.isEOF()) {\n const char = this.peek();\n if (char === '.') {\n this.advance();\n memberExpr.addChild(this.parsePropertyAccess(false));\n } else if (char === '[') {\n memberExpr.addChild(this.parseBracketAccess(false));\n } else {\n break;\n }\n }\n \n memberExpr.end = this.pos;\n memberExpr.value = this.input.substring(start, this.pos);\n return memberExpr;\n }\n \n // Otherwise it's an array literal\n return new Token(TokenType.ARRAY_LITERAL, `[${content}]`, start, this.pos);\n }\n\n\n private isOperatorChar(char: string): boolean {\n return ['+', '-', '*', '/', '%', '=', '!', '<', '>', '&', '|', '?'].includes(char);\n }\n\n private parseOperator(): Token {\n const start = this.pos;\n let value = this.advance();\n \n const next = this.peek();\n // Multi-char operators\n if ((value === '=' || value === '!' || value === '<' || value === '>') && next === '=') {\n value += this.advance();\n if (this.peek() === '=') value += this.advance();\n } else if ((value === '&' && next === '&') || (value === '|' && next === '|')) {\n value += this.advance();\n } else if (value === '?' && next === '?') {\n value += this.advance();\n }\n \n return new Token(TokenType.OPERATOR, value, start, this.pos);\n }\n\n private tryParseTernary(): Token | null {\n // Look ahead for ternary pattern: expr ? expr : expr\n const savedPos = this.pos;\n const remaining = this.input.substring(this.pos);\n \n // Find ternary operator at depth 0, respecting string literals\n let depth = 0;\n let inString = false;\n let stringChar = '';\n let questionIdx = -1;\n let colonIdx = -1;\n \n for (let i = 0; i < remaining.length; i++) {\n const char = remaining[i];\n const prevChar = i > 0 ? remaining[i - 1] : '';\n \n // Track string state (handle escape characters)\n if ((char === '\"' || char === \"'\" || char === '`') && prevChar !== '\\\\') {\n if (!inString) {\n inString = true;\n stringChar = char;\n } else if (char === stringChar) {\n inString = false;\n stringChar = '';\n }\n }\n \n if (inString) continue;\n \n // Track depth for parentheses, brackets, braces\n if (char === '(' || char === '[' || char === '{') depth++;\n else if (char === ')' || char === ']' || char === '}') depth--;\n \n // Find ternary ? at depth 0\n if (depth === 0 && char === '?') {\n const nextChar = remaining[i + 1] || '';\n // Skip optional chaining (?.) and nullish coalescing (??)\n if (nextChar === '.' || nextChar === '?') continue;\n // Ternary ? should be followed by whitespace or expression\n questionIdx = i;\n }\n \n // Find ternary : at depth 0 (only after finding ?)\n if (depth === 0 && char === ':' && questionIdx >= 0 && colonIdx < 0) {\n colonIdx = i;\n break;\n }\n }\n \n // Not a ternary expression\n if (questionIdx < 0 || colonIdx < 0) return null;\n \n const condStr = remaining.substring(0, questionIdx).trim();\n const trueStr = remaining.substring(questionIdx + 1, colonIdx).trim();\n const falseStr = remaining.substring(colonIdx + 1).trim();\n \n if (!condStr || !trueStr || !falseStr) return null;\n \n const ternary = new Token(TokenType.TERNARY, remaining, savedPos, savedPos + remaining.length);\n \n const condParser = new ObjectPathParser(condStr);\n const trueParser = new ObjectPathParser(trueStr);\n const falseParser = new ObjectPathParser(falseStr);\n \n for (const child of condParser.getTokens()) ternary.addChild(child);\n for (const child of trueParser.getTokens()) ternary.addChild(child);\n for (const child of falseParser.getTokens()) ternary.addChild(child);\n \n this.pos = this.input.length; // consume all\n return ternary;\n }\n\n\n private tryParseBinary(): Token | null {\n // Look for binary operators at top level\n const remaining = this.input.substring(this.pos);\n \n // Check operators in order of precedence (lowest to highest)\n // This ensures we parse correctly: a < b - c => a < (b - c), not (a < b) - c\n const operatorGroups = [\n ['||'], // Logical OR (lowest precedence)\n ['&&'], // Logical AND\n ['??'], // Nullish coalescing\n ['<', '>', '<=', '>='], // Comparison\n ['===', '!==', '==', '!='], // Equality\n ['+', '-'], // Addition/Subtraction\n ['*', '/', '%'] // Multiplication/Division (highest precedence)\n ];\n \n // Search from lowest to highest precedence\n for (const operators of operatorGroups) {\n for (const op of operators) {\n let depth = 0;\n let inString = false;\n let stringChar = '';\n let lastMatchIndex = -1;\n \n // Find the LAST occurrence of this operator at depth 0 (right-to-left for left-associative)\n for (let i = 0; i < remaining.length - op.length + 1; i++) {\n const char = remaining[i];\n \n // Track string state\n if ((char === '\"' || char === \"'\" || char === '`') && (i === 0 || remaining[i-1] !== '\\\\')) {\n if (!inString) {\n inString = true;\n stringChar = char;\n } else if (char === stringChar) {\n inString = false;\n }\n }\n \n if (inString) continue;\n \n // Track depth\n if (char === '(' || char === '[' || char === '{') depth++;\n else if (char === ')' || char === ']' || char === '}') depth--;\n \n // Check for operator at depth 0\n if (depth === 0 && remaining.substring(i, i + op.length) === op) {\n // Make sure it's not part of optional chaining\n if (op === '?' && remaining[i + 1] === '.') continue;\n \n // For - operator, make sure it's not a negative number\n if (op === '-') {\n // Look back to find the last non-whitespace character\n let lastNonSpace = '';\n for (let j = i - 1; j >= 0; j--) {\n if (remaining[j].trim()) {\n lastNonSpace = remaining[j];\n break;\n }\n }\n // Skip if it looks like a negative number (after operator, comma, or opening bracket/paren, or at start)\n if (!lastNonSpace || /[+\\-*\\/%=<>!&|,(\\[]/.test(lastNonSpace)) {\n continue;\n }\n }\n \n // For comparison/equality operators, make sure we're not matching part of a longer operator\n if (['<', '>', '=', '!'].includes(op)) {\n const nextChar = remaining[i + op.length] || '';\n if (nextChar === '=') continue; // Skip < if it's part of <=\n }\n \n lastMatchIndex = i;\n }\n }\n \n // If we found a match, split there\n if (lastMatchIndex >= 0) {\n const i = lastMatchIndex;\n const leftRaw = remaining.substring(0, i);\n const rightRaw = remaining.substring(i + op.length);\n const leftStr = leftRaw.trim();\n const rightStr = rightRaw.trim();\n \n if (leftStr && rightStr) {\n const binary = new Token(TokenType.BINARY, op, this.pos, this.pos + remaining.length);\n \n // \uC5F0\uC0B0\uC790 \uC8FC\uBCC0 \uACF5\uBC31 \uBCF4\uC874\n const leftTrailingSpace = leftRaw.substring(leftStr.length);\n const rightLeadingSpace = rightRaw.substring(0, rightRaw.length - rightRaw.trimStart().length);\n binary.leftSpace = leftTrailingSpace;\n binary.rightSpace = rightLeadingSpace;\n \n const leftParser = new ObjectPathParser(leftStr);\n const rightParser = new ObjectPathParser(rightStr);\n \n // Binary token should have exactly 2 children: left and right\n // Wrap the parsed results in containers that preserve the original structure\n const leftContainer = new Token(TokenType.ROOT, leftStr, 0, leftStr.length);\n for (const child of leftParser.getTokens()) leftContainer.addChild(child);\n binary.addChild(leftContainer);\n \n const rightContainer = new Token(TokenType.ROOT, rightStr, 0, rightStr.length);\n for (const child of rightParser.getTokens()) rightContainer.addChild(child);\n binary.addChild(rightContainer);\n \n this.pos = this.input.length;\n return binary;\n }\n }\n }\n }\n \n return null;\n }\n\n\n // --- Main conversion method ---\n toOptionalChainPath(): string {\n if (!this.input) return '';\n \n // \uAC1D\uCCB4 \uB9AC\uD130\uB7F4\uC740 \uBCC0\uD658\uD558\uC9C0 \uC54A\uC74C\n if (this.isObjectLiteralInput()) return this.input;\n \n // \uD568\uC218 \uC2A4\uD06C\uB9BD\uD2B8\uB294 \uBCC0\uD658\uD558\uC9C0 \uC54A\uC74C\n if (this.isFunctionScript() || this.isArrowFunctionScript()) return this.input;\n \n return this.root.toOptionalChain();\n }\n\n removeOptionalChainOperator(): string {\n if (!this.input) return '';\n return this.input.replace(/\\?\\./g, '.').replace(/\\.\\[/g, '[');\n }\n\n stringify(): string {\n return this.root.stringify();\n }\n\n // --- Static factory methods ---\n static parse(input: string): ObjectPathParser {\n return new ObjectPathParser(input);\n }\n\n static isFunctionScript(script: string): boolean {\n return script.trim().startsWith('function');\n }\n\n static isArrowFunctionScript(script: string): boolean {\n return /^\\s*\\([^)]*\\)\\s*=>/.test(script);\n }\n\n static isObjectLiteral(script: string): boolean {\n const trimmed = script.trim();\n return trimmed.startsWith('{') && trimmed.endsWith('}');\n }\n}\n", "import { ValidUtils } from '../valid/ValidUtils';\nimport type { ConstructorType } from '../types';\nimport { isDefined } from '../types';\nimport { ObjectPathParser } from '../parser/path/ObjectPathParser';\n\nexport namespace ObjectUtils {\n export const constructorName = (target: any): string | undefined => {\n if (target && target.constructor && target.constructor.name) {\n return target.constructor.name;\n } else if (target && target.name) {\n return target.name;\n }\n };\n export const deepCopy = <T = any>(obj: T): T => {\n if (obj instanceof Map) {\n return new Map<any, any>(JSON.parse(JSON.stringify(Array.from(obj.entries())))) as T;\n } else if (obj instanceof Set) {\n return new Set<any>(JSON.parse(JSON.stringify(Array.from(obj.values())))) as T;\n } else if (ValidUtils.isNullOrUndefined(obj)) {\n return obj;\n }\n\n return JSON.parse(JSON.stringify(obj));\n };\n export const allProtoTypeName = (target?: any, filter?: (pathString: string, pathValue: any) => boolean): string[] => {\n let data: string[] = [];\n if (target) {\n const proto = Object.getPrototypeOf(target);\n if (proto && (data = Object.keys(proto) || []).length > 0) {\n data = data.concat(ObjectUtils.allProtoTypeName(proto, filter));\n }\n }\n let result = data.filter(it => it !== 'constructor');\n\n if (filter && target) {\n const proto = Object.getPrototypeOf(target);\n result = result.filter(key => filter(key, proto?.[key]));\n }\n\n return result;\n };\n\n export const uniqueKeys = (obj: object[] | object) => {\n const allKeys = Array.from(new Set((Array.isArray(obj) ? obj : [obj]).flatMap(item => Object.keys(item))));\n return allKeys;\n };\n\n export const ownPropertyNames = (target?: any): string[] => {\n const data: string[] = [];\n if (target) {\n if (!target.prototype) {\n const a = Object.getPrototypeOf(target);\n data.push(...Object.getOwnPropertyNames(a));\n } else {\n data.push(...Object.getOwnPropertyNames(Object.getPrototypeOf(target)));\n }\n }\n return data.filter(it => it !== 'constructor');\n };\n\n export const protoTypeName = (target?: any): string[] => {\n let data: string[] = [];\n if (target) {\n const proto = Object.getPrototypeOf(target);\n data = Object.keys(proto) || [];\n }\n return data.filter(it => it !== 'constructor');\n };\n\n export const protoTypes = (target?: any): Function[] => {\n const data: Function[] = [];\n if (target) {\n const proto = Object.getPrototypeOf(target);\n (Object.keys(proto) || [])\n .filter(it => it !== 'constructor')\n .forEach(it => {\n data.push(proto[it]);\n });\n }\n return data;\n };\n\n export const seal = <T>(target: T): T => {\n return Object.seal(target);\n };\n\n /*\n Object.prototype.isPrototypeOf()\n isPrototypeOf() 메소드는 해당 객체가 다른 객체의 프로토타입 체인에 속한 객체인지 확인하기 위해 사용됩니다.\n */\n export const isPrototypeOfTarget = (start: ConstructorType<any> | Function | null | undefined, target: any | null | undefined): boolean => {\n if (start && target) {\n return Object.prototype.isPrototypeOf.call(start.prototype, target);\n } else {\n return false;\n }\n };\n\n export const prototypeOfDepth = (target: any, dest: ConstructorType<any> | Function | null | undefined): object[] => {\n let object: any = target;\n const r: any[] = [];\n if (dest) {\n do {\n object = Object.getPrototypeOf(object);\n if (object?.constructor === dest) {\n break;\n }\n r.push(object);\n } while (object);\n }\n return r;\n };\n\n export const allProtoType = (start: ConstructorType<any> | Function): (ConstructorType<any> | Function)[] => {\n const depth = (target: ConstructorType<any> | Function, bowl: (ConstructorType<any> | Function)[] = []) => {\n if (target.prototype) {\n bowl.push(target);\n depth(Object.getPrototypeOf(target), bowl);\n }\n return bowl;\n };\n const d = depth(start);\n return d;\n // const protos: (ConstructorType<any> | Function)[] = []\n // while (start) {\n // protos.push(start);\n // start = Object.getPrototypeOf(start)\n // }\n // return protos;\n };\n\n export const prototypeOf = (start: any) => {\n return Object.getPrototypeOf(start);\n };\n\n export const prototypeKeyMap = (target: any): Map<Function, string> => {\n const data = new Map<Function, string>();\n if (target) {\n const proto = Object.getPrototypeOf(target);\n (Object.keys(proto) || [])\n .filter(it => it !== 'constructor')\n .forEach(it => {\n data.set(proto[it], it);\n });\n }\n return data;\n };\n\n export const prototypeName = (target: any, fnc: Function): string | undefined => {\n return ObjectUtils.prototypeKeyMap(target).get(fnc);\n };\n\n export const pickRandomKey = <T>(target: T): keyof T => {\n const keys = Object.keys(target as any) as Array<keyof T>;\n return keys[Math.floor(Math.random() * keys.length)];\n };\n\n export const pickRandomValue = <T>(target: T): T[keyof T] => {\n const keys = Object.keys(target as any) as Array<keyof T>;\n return target[keys[Math.floor(Math.random() * keys.length)]];\n };\n\n export const pickRandomKeyValue = <T>(target: T): { key: keyof T; value: T[keyof T] } => {\n const keys = Object.keys(target as any) as Array<keyof T>;\n const key = keys[Math.floor(Math.random() * keys.length)];\n return { key, value: target[key] };\n };\n\n export const keyValues = <T>(target: T): { key: keyof T; value: T[keyof T] }[] => {\n const keys = Object.keys(target as any) as Array<keyof T>;\n return keys.map(key => ({ key, value: target[key] }));\n };\n\n export const entries = <T>(target: T): [keyof T, T[keyof T]][] => {\n return Object.entries(target as any) as [keyof T, T[keyof T]][];\n };\n\n export const values = <T>(target: T): T[keyof T][] => {\n return Object.values(target as any);\n };\n\n export const keys = <T>(target: T): (keyof T)[] => {\n return Object.keys(target as any) as (keyof T)[];\n };\n\n export const keyLength = <T>(target: T): number => {\n return ObjectUtils.keys(target).length;\n };\n\n export const toDeleteUndefinedAndNull = <T>(target: T, config?: { deep?: boolean }): T => {\n const cleanValue = (value: any): any => {\n if (Array.isArray(value)) {\n return value.filter(item => item !== undefined && item !== null).map(cleanValue);\n } else if (value && typeof value === 'object') {\n if (config?.deep) {\n return Object.fromEntries(\n Object.entries(value)\n .filter(([_, v]) => v !== undefined && v !== null)\n .map(([k, v]) => [k, cleanValue(v)])\n );\n } else {\n return Object.fromEntries(Object.entries(value).filter(([_, v]) => v !== undefined && v !== null));\n }\n }\n return value;\n };\n\n return cleanValue(target) as T;\n };\n\n export namespace Path {\n export const isFunctionScript = (script: string): boolean => {\n return ObjectPathParser.isFunctionScript(script);\n };\n\n export const isArrowFunctionScript = (script: string): boolean => {\n return ObjectPathParser.isArrowFunctionScript(script);\n };\n\n export const toOptionalChainPath = (path: string): string => {\n if (!path) {\n return '';\n }\n const parser = new ObjectPathParser(path);\n return parser.toOptionalChainPath();\n };\n\n export const removeOptionalChainOperator = (path: string): string => {\n if (!path) {\n return '';\n }\n const parser = new ObjectPathParser(path);\n return parser.removeOptionalChainOperator();\n };\n\n const parsePath = (path: string): (string | number)[] => {\n const result: (string | number)[] = [];\n const regex = /\\.([^.\\[]+)|\\[(\\d+)\\]|\\[(['\"])(.*?)\\3\\]/g;\n let match;\n let lastIndex = 0;\n\n const firstMatch = path.match(regex);\n if (firstMatch && (firstMatch?.index ?? 0) > 0) {\n result.push(path.substring(0, firstMatch.index));\n lastIndex = firstMatch.index as number;\n } else if (!firstMatch && path.length > 0) {\n result.push(path);\n return result;\n }\n\n while ((match = regex.exec(path)) !== null) {\n if (match.index > lastIndex) {\n const segment = path.substring(lastIndex, match.index);\n if (segment.startsWith('.')) {\n result.push(segment.substring(1));\n } else {\n result.push(segment);\n }\n }\n\n if (match[1]) {\n result.push(match[1]);\n } else if (match[2]) {\n result.push(parseInt(match[2], 10));\n } else if (match[4]) {\n result.push(match[4]);\n }\n lastIndex = regex.lastIndex;\n }\n\n if (lastIndex < path.length) {\n const remaining = path.substring(lastIndex);\n if (remaining.startsWith('.')) {\n result.push(remaining.substring(1));\n } else {\n result.push(remaining);\n }\n }\n\n return result;\n };\n\n export const to = <T = any>(obj: any) => {\n const destination: T = {} as any;\n Object.entries(obj).forEach(([path, value]) => {\n Path.set(destination, path, value);\n });\n return destination;\n };\n\n export const set = (obj: any, path: string, value: any) => {\n const pathParts = parsePath(path);\n let current = obj;\n\n for (let i = 0; i < pathParts.length; i++) {\n const part = pathParts[i];\n const isLastPart = i === pathParts.length - 1;\n\n if (isLastPart) {\n current[part] = value;\n } else {\n // Ensure current[part] is of the correct type for the next part\n const nextPart = pathParts[i + 1];\n\n if (typeof nextPart === 'number') {\n // Next part is an array index\n if (!Array.isArray(current[part])) {\n current[part] = [];\n }\n // Fill holes if current[part] is an array and nextPart is a skipped index\n if (Array.isArray(current[part])) {\n while (current[part].length <= nextPart) {\n current[part].push({}); // Fill with empty objects\n }\n }\n } else {\n // Next part is a string (object property)\n if (typeof current[part] !== 'object' || current[part] === null) {\n current[part] = {};\n }\n }\n current = current[part];\n }\n }\n };\n\n export const get = (obj: any, path: string, defaultValue?: any): any => {\n const pathParts = parsePath(path);\n let current = obj;\n\n for (let i = 0; i < pathParts.length; i++) {\n const part = pathParts[i];\n\n if (current === null || current === undefined) {\n return defaultValue;\n }\n\n // Check if the current object has the property/index\n if (typeof current === 'object' && current !== null && part in current) {\n current = current[part];\n } else {\n // Property/index not found\n return defaultValue;\n }\n }\n\n return current;\n };\n\n export const deletePath = (obj: any, path: string): boolean => {\n const pathParts = parsePath(path);\n if (pathParts.length === 0) {\n return false;\n }\n\n let current = obj;\n\n // Navigate to the parent of the target property\n for (let i = 0; i < pathParts.length - 1; i++) {\n const part = pathParts[i];\n\n if (current === null || current === undefined) {\n return false;\n }\n\n if (typeof current === 'object' && current !== null && part in current) {\n current = current[part];\n } else {\n return false;\n }\n }\n\n // Delete the final property\n const finalPart = pathParts[pathParts.length - 1];\n if (current !== null && typeof current === 'object' && finalPart in current) {\n if (Array.isArray(current) && typeof finalPart === 'number') {\n current.splice(finalPart, 1);\n } else {\n delete current[finalPart];\n }\n return true;\n }\n\n return false;\n };\n\n export const availablePath = (obj: any, filter?: (pathString: string, pathValue: any) => boolean): string[] => {\n const paths: string[] = [];\n\n const formatKey = (key: string | number): string => {\n if (typeof key === 'number') {\n return '[' + key + ']'; // Array index\n }\n // Check if the key is a valid JavaScript identifier.\n // If not, it needs to be quoted.\n // A valid identifier starts with a letter, _, or $, followed by letters, digits, _, or $.\n // This regex checks for characters that are NOT valid in an identifier.\n if (!/^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(key)) {\n // If it's not a valid identifier, quote it.\n // Use single quotes without escaping for test compatibility\n return \"['\" + key + \"']\";\n }\n return key;\n };\n\n const traverse = (current: any, currentPath: string, visited: Set<any>) => {\n if (current === null || typeof current !== 'object') {\n return;\n }\n\n // Detect circular references\n if (visited.has(current)) {\n return;\n }\n visited.add(current);\n\n if (Array.isArray(current)) {\n current.forEach((item: any, index: number) => {\n const formattedIndex = formatKey(index); // This will be [index]\n const newPath = currentPath ? `${currentPath}${formattedIndex}` : formattedIndex;\n\n // Apply filter if provided\n if (!filter || filter(newPath, item)) {\n paths.push(newPath);\n }\n\n traverse(item, newPath, visited);\n });\n } else {\n Object.keys(current).forEach(key => {\n const formattedKey = formatKey(key);\n let newPath: string;\n\n // If the key needs brackets (special characters), don't add a dot before brackets\n if (formattedKey.startsWith('[')) {\n newPath = currentPath ? `${currentPath}${formattedKey}` : formattedKey;\n } else {\n newPath = currentPath ? `${currentPath}.${formattedKey}` : formattedKey;\n }\n\n // Apply filter if provided\n if (!filter || filter(newPath, current[key])) {\n paths.push(newPath);\n }\n\n traverse(current[key], newPath, visited);\n });\n }\n };\n\n traverse(obj, '', new Set());\n return paths;\n };\n\n /**\n * 스크립트에서 사용되는 변수 경로들을 감지합니다.\n * 프록시를 사용하여 스크립트 실행 중 접근되는 모든 속성 경로를 추적합니다.\n *\n * @param script 분석할 JavaScript 스크립트 문자열\n * @param options 감지 옵션\n * @param options.excludeThis true일 경우 'this' 키워드를 결과에서 제외\n * @returns 스크립트에서 사용된 변수 경로들의 Set\n */\n export const detectPathFromScript = (script: string, options?: { excludeThis?: boolean }): Set<string> => {\n const usingVars = new Set<string>();\n\n class GetDetectProxy implements ProxyHandler<any> {\n public usingVars = usingVars;\n\n constructor(public prefix?: string) {}\n\n set(target: any, p: string | symbol, value: any, receiver: any): boolean {\n return true;\n }\n\n get(target: any, p: string | symbol, receiver: any): any {\n // Symbol 속성들은 무시 (toString, valueOf 등)\n if (typeof p === 'symbol') {\n return this.createSafeProxy(this.prefix);\n }\n\n let items: string | undefined;\n const propStr = String(p);\n\n // 숫자 인덱스 처리\n if (!isNaN(Number(propStr))) {\n items = this.prefix ? `${this.prefix}[${propStr}]` : propStr;\n }\n // 일반 속성 처리\n else {\n items = this.prefix ? `${this.prefix}.${propStr}` : propStr;\n }\n\n // 유효한 변수 경로만 추가\n if (items) {\n this.usingVars.add(items);\n }\n\n return this.createSafeProxy(items);\n }\n\n apply(target: any, thisArg: any, argArray?: any): any {\n // 함수 호출 시에도 안전한 프록시 반환 (체이닝 가능)\n return this.createSafeProxy(this.prefix);\n }\n\n private createSafeProxy(prefix?: string): any {\n const dummyFunction = () => {};\n const handler = new GetDetectProxy(prefix);\n\n return new Proxy(dummyFunction, {\n get: (target, prop, receiver) => {\n if (prop === Symbol.toPrimitive) {\n return () => '';\n }\n if (prop === 'valueOf') {\n return () => handler.createSafeProxy(prefix);\n }\n if (prop === 'toString') {\n return () => '';\n }\n return handler.get(target, prop, receiver);\n },\n set: handler.set.bind(handler),\n apply: handler.apply.bind(handler)\n });\n }\n }\n\n // 전역 변수들을 안전하게 처리하기 위한 컨텍스트 생성\n const globalContext = {\n window: new Proxy(() => {}, new GetDetectProxy('window')),\n document: new Proxy(() => {}, new GetDetectProxy('document')),\n console: new Proxy(() => {}, new GetDetectProxy('console'))\n // this는 destUser 자체가 됨\n };\n\n const destUser = new Proxy(() => {}, new GetDetectProxy('this'));\n\n try {\n // [아키텍트님의 정석] #...# 형태의 템플릿 변수는 JS 문법 에러(Private Field)를 유발하므로\n // 감지 단계에서는 안전한 문자열로 마스킹 처리합니다.\n const maskedScript = script.replace(/#([^#]+)#/g, '__DOMRENDER_VAR_$1__');\n // 전역 컨텍스트와 함께 실행\n const func = new Function('window', 'document', 'console', `\"use strict\"; ${maskedScript}; `);\n func.call(destUser, globalContext.window, globalContext.document, globalContext.console);\n // console.log('------->', script);\n } catch (e) {\n console.error('detectPathFromScript error:', script, e);\n }\n\n // excludeThis 옵션이 true면 'this'로 시작하는 경로에서 'this' 제거\n if (options?.excludeThis) {\n const filteredVars = new Set<string>();\n usingVars.forEach(path => {\n if (path === 'this') {\n // 'this' 자체는 제외\n return;\n } else if (path.startsWith('this.')) {\n // 'this.'로 시작하는 경우 'this.' 부분 제거\n filteredVars.add(path.substring(5));\n } else {\n // 그 외는 그대로 추가\n filteredVars.add(path);\n }\n });\n return filteredVars;\n }\n\n return usingVars;\n };\n }\n\n export const toDeleteKey = (obj: any, keys: (null | string)[]) => {\n const target = { ...obj };\n ObjectUtils.deleteKey(target, keys);\n return target;\n };\n export const deleteKey = (obj: any, keys: (null | string)[]) => {\n keys\n .filter(it => isDefined(it))\n .forEach(it => {\n delete obj[it];\n });\n };\n\n export namespace Script {\n /**\n * JavaScript 스크립트를 실행하고 결과를 반환합니다.\n *\n * @param script 실행할 스크립트 문자열 또는 {bodyScript, returnScript} 객체\n * @param thisTarget 스크립트 실행 시 this로 바인딩될 객체\n * @returns 스크립트 실행 결과\n */\n export const evaluateReturn = <T = any>(script: string | { bodyScript: string; returnScript: string }, thisTarget: any = {}): T => {\n let bodyScript = '';\n let returnScript = '';\n if (typeof script === 'object') {\n bodyScript = script.bodyScript;\n returnScript = script.returnScript;\n } else {\n returnScript = script;\n }\n return evaluate(`${bodyScript}; return ${returnScript} `, thisTarget) as T;\n };\n\n /**\n * JavaScript 스크립트를 안전하게 실행합니다.\n *\n * @param script 실행할 스크립트 문자열\n * @param thisTarget 스크립트 실행 시 this로 바인딩될 객체\n * @returns 스크립트 실행 결과 또는 undefined (에러 시)\n */\n // @ts-ignore\n export const evaluate = <T = any>(script: string, thisTarget: any = {}): T | undefined => {\n // new Function('event', 'console.log(event)').call(window, {a:2});\n // new Function('event', '$data', newValue).call(this, event, event.detail);\n // 첫번쨰 인자는 this로 바인딩될 객체, 이후 인자들은 스크립트에서 사용할 매개변수로 전달됩니다.\n try {\n return Function(`\"use strict\"; ${script} `).bind(thisTarget)() as T;\n } catch (e) {\n console.error('eval error', e);\n console.error(script);\n return undefined;\n }\n };\n }\n}\n", "import { Dictionary } from '../types';\nimport { ValidUtils } from '../valid/ValidUtils';\n\nexport namespace StringUtils {\n export const deleteEnter = (data: string) => {\n return data.replace(/\\r?\\n/g, '')\n }\n\n export const pickEmoji = (data: string) => {\n return data.match(/[\\p{Emoji}]/gu) ?? [];\n }\n\n\n export const regexExec = (regex: RegExp, text: string) => {\n let varExec = regex.exec(text)\n const usingVars: any[] = [];\n while (varExec) {\n usingVars.push(varExec)\n varExec = regex.exec(varExec.input)\n }\n return usingVars;\n }\n\n \n\n export const escapeSpecialCharacterRegExp = (data: string) => {\n return data.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&')\n }\n\n export const trim = (data: string) => data.trim();\n\n export const rsubString = (data_s: string, blen_n: number): string =>\n data_s.substring(data_s.length - blen_n, data_s.length);\n\n export const lsubString = (data_s: string, alen_n: number): string => data_s.substring(0, alen_n);\n\n export const lpad = (fill_s: string, len_n: number, full_s: string): string => {\n while (len_n > full_s.length) {\n full_s = fill_s + full_s;\n }\n return StringUtils.rsubString(full_s, len_n);\n };\n export const rpad = (fill_s: string, len_n: number, full_s: string): string => {\n while (len_n > full_s.length) {\n full_s += fill_s;\n }\n return StringUtils.lsubString(full_s, len_n);\n };\n\n export const lappend = (count_n: number, input_s: string): string => {\n let s = '';\n let i = 0;\n while (i++ < count_n) {\n s += input_s;\n }\n return s;\n };\n\n\n export const unescape = (html: string): string => {\n if (!html) return '';\n\n const htmlEntity: Dictionary<string> = {\n quot: '\"',\n amp: '&',\n apos: \"'\",\n lt: '<',\n gt: '>',\n nbsp: '\\u00A0',\n iexcl: '\u00A1',\n cent: '\u00A2',\n pound: '\u00A3',\n curren: '\u00A4',\n yen: '\u00A5',\n brvbar: '\u00A6',\n sect: '\u00A7',\n uml: '\u00A8',\n copy: '\u00A9',\n ordf: '\u00AA',\n laquo: '\u00AB',\n not: '\u00AC',\n shy: '\\u00AD',\n reg: '\u00AE',\n macr: '\u00AF',\n deg: '\u00B0',\n plusmn: '\u00B1',\n sup2: '\u00B2',\n sup3: '\u00B3',\n acute: '\u00B4',\n micro: '\u00B5',\n para: '\u00B6',\n middot: '\u00B7',\n cedil: '\u00B8',\n sup1: '\u00B9',\n ordm: '\u00BA',\n raquo: '\u00BB',\n frac14: '\u00BC',\n frac12: '\u00BD',\n frac34: '\u00BE',\n iquest: '\u00BF',\n '#x27': \"'\"\n };\n\n return html.replace(/&((?:(?:[a-z0-9]+|#[0-9]{1,6}|#x[0-9a-fA-F]{1,6});?)+);/gi, (match, entity) => {\n const entities: string[] = entity.toLowerCase().split(';');\n return entities.map(it => (it in htmlEntity ? htmlEntity[it] : match)).join('');\n });\n };\n\n export const executeExpression = (formatString: string, object: Record<string, string | number>) => {\n return formatString.replace(/\\${([^{}]*)}/g, (matched, piece) => String(object[piece] ?? matched));\n };\n\n export const ellipsis = (text: string, length: number) => {\n if (text.length > length) return `${text.slice(0, length)}...`;\n return text;\n };\n/*\nconst str = 'dr-class:set(\"MycLasS\")'; // \uB610\uB294 'dr-class'\nconst regex = /^([^\\s:]+)(?::(\\w+)\\(\"([^\"]+)\"\\))?$/;\nconst match = str.match(regex);\n\nif (match) {\n const className = match[1]; // dr-class\n const functionName = match[2] || ''; // set \uB610\uB294 ''\n const argument = match[3] || ''; // MycLasS \uB610\uB294 ''\n console.log('Class Name:', className);\n console.log('Function Name:', functionName);\n console.log('Argument:', argument);\n} else {\n console.log('Invalid format');\n}\n */\n // type Postposition =\n /**\n * Appends a postposition to the given text based on the provided options.\n * @param {string} text - The text to append the postposition to.\n * @param {object} options - The options for postposition.\n * @param {string} options.vowel - The postposition to append if the text ends with a vowel(\uBAA8\uC74C).\n * @param {string} options.consonant - The postposition to append if the text ends with a consonant(\uC790\uC74C).\n * @returns {string} - The text with the appropriate postposition appended.\n */\n export const appendPostposition = (text: string, { vowel, consonant }: {\n vowel: string;\n consonant: string;\n }): string => {\n return `${text}${ValidUtils.lastConsonantLetter(text) ? consonant : vowel}`;\n };\n\n export interface SequentialReplacement {\n regex: RegExp;\n callback: (matched: string) => string;\n }\n\n export const replaceSequentially = (\n text: string,\n replacements: SequentialReplacement[]\n ): string => {\n let remainingText = text;\n let result = '';\n // console.log('Executing replaceSequentially with robust fix');\n\n while (remainingText.length > 0) {\n let bestMatch: {\n index: number;\n match: RegExpExecArray;\n replacement: SequentialReplacement;\n } | null = null;\n\n // Find the earliest match in the remaining text\n for (const replacement of replacements) {\n const newRegex = new RegExp(replacement.regex);\n const match = newRegex.exec(remainingText);\n if (match) {\n if (bestMatch === null || match.index < bestMatch.index) {\n bestMatch = { index: match.index, match, replacement };\n }\n }\n }\n\n if (bestMatch) {\n const { index, match, replacement } = bestMatch;\n const matchedString = match[0];\n\n // Append the text before the match and the replacement\n result += remainingText.substring(0, index);\n result += replacement.callback(matchedString);\n\n // Update remainingText to be the part after the match\n remainingText = remainingText.substring(index + matchedString.length);\n } else {\n // No more matches, append the rest of the text and finish\n result += remainingText;\n break;\n }\n }\n\n return result;\n };\n}\n", "export namespace DateUtils {\n\n export const create = (data: string): Date => new Date(data);\n\n export const dayZeroTime = (data?: Date | string | number) => {\n const date = data ? new Date(data) : new Date();\n date.setHours(0, 0, 0, 0);\n return date;\n }\n\n export const fullMilliSecond = (): number => new Date().getTime();\n\n export const fullSecond = (): number => new Date().getTime() / 1000;\n\n export const milliSecond = (): number => new Date().getMilliseconds();\n\n export const format = (date: Date, format = 'yyyy-MM-dd HH:mm:ss'): string => {\n const pad = (num) => String(num).padStart(2, '0');\n const year = date.getFullYear();\n const month = pad(date.getMonth() + 1);\n const day = pad(date.getDate());\n const hours = pad(date.getHours());\n const minutes = pad(date.getMinutes());\n const seconds = pad(date.getSeconds());\n\n return format\n .replace('yyyy', String(year))\n .replace('MM', month)\n .replace('dd', day)\n .replace('HH', hours)\n .replace('mm', minutes)\n .replace('ss', seconds);\n };\n\n export const isSameDate = (date1: Date, date2: Date) =>\n date1.getFullYear() === date2.getFullYear() &&\n date1.getMonth() === date2.getMonth() &&\n date1.getDate() === date2.getDate();\n\n export const compare = (date1: Date, date2: Date) =>\n date1.getTime() < date2.getTime() ? -1 : date1.getTime() > date2.getTime() ? 1 : 0;\n\n export const weekCountOfYear = (date: Date) => {\n // Copy date so it's not modified\n const currentDate = new Date(date.getTime());\n // Set to nearest Thursday: current date + 4 - current day number (from 0 to 6)\n // Make Sunday's day number 7\n currentDate.setDate(currentDate.getDate() + 4 - (currentDate.getDay() || 7));\n // January 1st of the year\n const yearStart = new Date(currentDate.getFullYear(), 0, 1);\n // Calculate full weeks to nearest Thursday\n const weekNo = Math.ceil(((currentDate.getTime() - yearStart.getTime()) / 86400000 + 1) / 7);\n return weekNo;\n };\n export const age = (dateOfBirth: Date, until: Date = new Date()) => {\n let age = until.getFullYear() - dateOfBirth.getFullYear();\n const m = until.getMonth() - dateOfBirth.getMonth();\n\n if (m < 0 || (m === 0 && until.getDate() < dateOfBirth.getDate())) {\n age--;\n }\n\n return Math.max(age, 0);\n }\n\n export const countingAge = (dateOfBirth: Date, until: Date = new Date()) => {\n return Math.max(until.getFullYear() - dateOfBirth.getFullYear(), 0) + 1;\n }\n\n export const add = ({years = 0, months = 0, days = 0, minutes = 0, seconds = 0, milliSecond = 0}: { years?: number; months?: number; days?: number; minutes?: number; seconds?: number, milliSecond?: number }, date?: Date | string | number,): Date => {\n const result = date ? new Date(date) : new Date();\n if (years) result.setFullYear(result.getFullYear() + years);\n if (months) result.setMonth(result.getMonth() + months);\n if (days) result.setDate(result.getDate() + days);\n if (minutes) result.setMinutes(result.getMinutes() + minutes);\n if (seconds) result.setSeconds(result.getSeconds() + seconds);\n if (milliSecond) result.setMilliseconds(result.getMilliseconds() + milliSecond);\n return result;\n };\n\n\n export const toDate = (date: Date | string | number): Date => {\n if (date instanceof Date) {\n return date;\n } else if (typeof date === 'string' || typeof date === 'number') {\n return new Date(date);\n } else {\n throw new Error('Invalid date type. Expected Date, string, or number.');\n }\n }\n\n export const sinceSeconds = (date: Date): number => Math.floor((Date.now() - date.getTime()) / 1000);\n\n export const toSeconds = (date: Date = new Date()): number => Math.floor(date.getTime() / 1000);\n\n export const toMilliseconds = (date: Date = new Date()): number => date.getTime();\n\n export const fromSeconds = (seconds: number): Date => new Date(seconds * 1000);\n\n export const fromMilliseconds = (milliseconds: number): Date => new Date(milliseconds);\n\n export const toISOString = (date: Date = new Date()): string => date.toISOString();\n\n export const fromISOString = (isoString: string): Date => new Date(isoString);\n\n export const formatDuration = (timeSecond: number, locale: string = getDefaultLocale()) => {\n const rtf = new Intl.RelativeTimeFormat(locale, { numeric: 'always', style: 'long' });\n\n\n let remaining = timeSecond;\n const days = Math.floor(remaining / 86400);\n remaining -= days * 86400;\n const hours = Math.floor(remaining / 3600);\n remaining -= hours * 3600;\n const minutes = Math.floor(remaining / 60);\n remaining -= minutes * 60;\n const seconds = remaining;\n\n const result = [];\n\n if (days > 0) {\n result.push(rtf.format(days, 'day').replace('\uD6C4', '').replace('in ', '').replace('dans ', ''));\n }\n\n if (hours > 0) {\n result.push(rtf.format(hours, 'hour').replace('\uD6C4', '').replace('in ', '').replace('dans ', ''));\n }\n\n if (minutes > 0) {\n result.push(rtf.format(minutes, 'minute').replace('\uD6C4', '').replace('in ', '').replace('dans ', ''));\n }\n\n if (seconds > 0 || result.length === 0) {\n result.push(rtf.format(seconds, 'second').replace('\uD6C4', '').replace('in ', '').replace('dans ', ''));\n }\n\n return result.join(' ');\n };\n\n export const relativeTime = (date: Date | string | number,\n config?: {\n locales: ConstructorParameters<typeof Intl.RelativeTimeFormat>[0]\n options: ConstructorParameters<typeof Intl.RelativeTimeFormat>[1]\n }) => {\n\n const rtf = new Intl.RelativeTimeFormat(config?.locales, config?.options);\n let targetDate: Date;\n if (!(date instanceof Date)) {\n targetDate = new Date(date);\n } else {\n targetDate = date;\n }\n\n const now = new Date();\n const diffMs = targetDate.getTime() - now.getTime(); // \uC785\uB825\uB41C \uC2DC\uAC04 - \uD604\uC7AC \uC2DC\uAC04\n\n // \uBD84, \uC2DC\uAC04, \uC77C \uB2E8\uC704\uB85C \uC808\uB300\uAC12 \uCC28\uC774 \uACC4\uC0B0\n const absDiffMinutes = Math.floor(Math.abs(diffMs) / (1000 * 60));\n const absDiffHours = Math.floor(Math.abs(diffMs) / (1000 * 60 * 60));\n const absDiffDays = Math.floor(Math.abs(diffMs) / (1000 * 60 * 60 * 24));\n if (diffMs === 0) {\n return rtf.format(0, 'seconds'); // \"\uC9C0\uAE08\" \uB610\uB294 \"0\uCD08 \uD6C4/\uC804\" (\uB85C\uCF00\uC77C\uC5D0 \uB530\uB77C \uB2E4\uB984)\n }\n if (diffMs < 0) { // \uACFC\uAC70 (\uC785\uB825\uB41C \uC2DC\uAC04\uC774 \uD604\uC7AC\uBCF4\uB2E4 \uC774\uC804)\n if (absDiffMinutes < 1) { // 1\uBD84 \uBBF8\uB9CC \uACFC\uAC70\n return rtf.format(-Math.floor(Math.abs(diffMs) / 1000), 'seconds'); // \"\uBA87 \uCD08 \uC804\"\n } else if (absDiffMinutes < 60) { // 60\uBD84 \uBBF8\uB9CC \uACFC\uAC70\n return rtf.format(-absDiffMinutes, 'minutes'); // \"\uBA87 \uBD84 \uC804\"\n } else if (absDiffHours < 24) { // 24\uC2DC\uAC04 \uBBF8\uB9CC \uACFC\uAC70\n return rtf.format(-absDiffHours, 'hours'); // \"\uBA87 \uC2DC\uAC04 \uC804\"\n } else { // \uADF8 \uC774\uC0C1 \uACFC\uAC70\n return rtf.format(-absDiffDays, 'days'); // \"\uBA87 \uC77C \uC804\"\n }\n } else { // \uBBF8\uB798 (\uC785\uB825\uB41C \uC2DC\uAC04\uC774 \uD604\uC7AC\uBCF4\uB2E4 \uC774\uD6C4)\n if (absDiffMinutes < 1) { // 1\uBD84 \uBBF8\uB9CC \uBBF8\uB798\n return rtf.format(Math.floor(diffMs / 1000), 'seconds'); // \"\uBA87 \uCD08 \uD6C4\"\n } else if (absDiffMinutes < 60) { // 60\uBD84 \uBBF8\uB9CC \uBBF8\uB798\n return rtf.format(absDiffMinutes, 'minutes'); // \"\uBA87 \uBD84 \uD6C4\"\n } else if (absDiffHours < 24) { // 24\uC2DC\uAC04 \uBBF8\uB9CC \uBBF8\uB798\n return rtf.format(absDiffHours, 'hours'); // \"\uBA87 \uC2DC\uAC04 \uD6C4\"\n } else { // \uADF8 \uC774\uC0C1 \uBBF8\uB798\n return rtf.format(absDiffDays, 'days'); // \"\uBA87 \uC77C \uD6C4\"\n }\n }\n }\n\n export const getDefaultLocale = (): string => Intl.DateTimeFormat().resolvedOptions().locale;\n}\n", "import { Vector } from './Vector';\n\nexport class Point2D {\n public x: number;\n public y: number;\n\n constructor(data: {x?: number, y?: number});\n constructor(x?: number, y?: number);\n constructor(x?: number | {x?: number, y?: number} | Vector , y?: number) {\n if (typeof x === 'object') {\n this.x = x.x ?? 0;\n this.y = x.y ?? 0;\n } else {\n this.x = x ?? 0;\n this.y = y ?? 0;\n }\n }\n\n copy() {\n return new Point2D(this.x, this.y);\n }\n}\n", "// https://p5js.org/ko/\nimport { Point3D } from './Point3D';\nimport { Point2D } from './Point2D';\n\nexport class Vector {\n public x: number;\n public y: number;\n public z: number;\n\n constructor(data: Point3D);\n constructor(data: {x?: number, y?: number, z?: number});\n constructor(x?: number, y?: number, z?: number);\n constructor(x?: number | {x?: number, y?: number, z?: number} | Point3D, y?: number, z?: number) {\n if (x instanceof Point3D) {\n this.x = x.x;\n this.y = x.y;\n this.z = x.z;\n } else if (typeof x === 'object') {\n this.x = x.x ?? 0;\n this.y = x.y ?? 0;\n this.z = x.z ?? 0;\n } else {\n this.x = x ?? 0;\n this.y = y ?? 0;\n this.z = z ?? 0;\n }\n }\n\n\n public set(v: number | Vector | Point3D, y: number = 0, z: number = 0) {\n if (v instanceof Vector || v instanceof Point3D) {\n this.set(v.x || 0, v.y || 0, v.z || 0);\n } else {\n this.x = v;\n this.y = y;\n this.z = z;\n }\n return this;\n }\n\n public get() {\n return new Vector(this.x, this.y, this.z);\n }\n\n // \uD53C\uD0C0\uACE0\uB77C\uC2A4\uC758 \uC815\uB9AC\uB294 a\uC758 \uC81C\uACF1 \uB354\uD558\uAE30 b \uC758 \uC81C\uACF1\uC740 c \uC758 \uC81C\uACF1\uACFC \uAC19\uB2E4\uB294 \uAC83\uC744 \uC815\uC758\uD569\uB2C8\uB2E4.\n public mag(): number {\n const x = this.x;\n const y = this.y;\n const z = this.z;\n return Math.sqrt(x * x + y * y + z * z); // \uC758 \uC81C\uACF1\uADFC\uC744 \uB9AC\uD134\uD558\uBA74 \uAE38\uC774\uAC00 \uBC18\uD658\uB41C\uB2E4.\n }\n\n public add(v: number | Vector | Point3D, y: number = 0, z: number = 0) {\n if (v instanceof Vector || v instanceof Point3D) {\n this.x += v.x;\n this.y += v.y;\n this.z += v.z;\n } else {\n this.x += v;\n this.y += y;\n this.z += z;\n }\n }\n\n public toAdd(v1: Vector|Point3D, v2: Vector|Point3D): Vector {\n return new Vector(v1.x + v2.x, v1.y + v2.y, v1.x + v2.y);\n }\n\n // public static add(v1: Vector, v2: Vector): Vector {\n // return new Vector(v1.x + v2.x, v1.y + v2.y, v1.x + v2.y);\n // }\n\n public sub(v: number | Vector |Point3D, y = 0, z = 0) {\n if (v instanceof Vector || v instanceof Point3D) {\n this.x -= v.x;\n this.y -= v.y;\n this.z -= v.z;\n } else {\n this.x -= v;\n this.y -= y;\n this.z -= z;\n }\n }\n\n public toSub(v2: Vector | Point3D): Vector {\n const v1 = this;\n return new Vector(v1.x - v2.x, v1.y - v2.y, v1.z - v2.z);\n }\n\n //\n // public static sub(v1: Vector, v2: Vector): Vector {\n // return new Vector(v1.x - v2.x, v1.y - v2.y, v1.z - v2.z);\n // }\n\n public mult(v: number | Vector | Point3D) {\n if (v instanceof Vector || v instanceof Point3D) {\n this.x *= v.x;\n this.y *= v.y;\n this.z *= v.z;\n } else {\n this.x *= v;\n this.y *= v;\n this.z *= v;\n }\n return this;\n }\n\n public toMult(v2: Vector | Point3D): Vector {\n const v1 = this;\n return new Vector(v1.x *= v2.x, v1.y *= v2.y, v1.z *= v2.z);\n }\n\n // public static mult(v1: Vector, v2: Vector) {\n // return new Vector(v1.x *= v2.x, v1.y *= v2.y, v1.z *= v2.z);\n // }\n\n public div(v: number | Vector | Point3D) {\n if (v instanceof Vector || v instanceof Point3D) {\n this.x /= v.x;\n this.y /= v.y;\n this.z /= v.z;\n } else {\n this.x /= v;\n this.y /= v;\n this.z /= v;\n }\n return this;\n }\n\n public toDiv( d: number): Vector {\n const v = this;\n const rv = v.get();\n rv.x /= d;\n rv.y /= d;\n rv.z /= d;\n return rv;\n }\n\n // public static div(v: Vector, d: number): Vector {\n // const rv = v.get();\n // rv.x /= d;\n // rv.y /= d;\n // rv.z /= d;\n // return rv;\n // }\n\n public dist(v: Vector | Point3D): number {\n const dx = this.x - v.x,\n dy = this.y - v.y,\n dz = this.z - v.z;\n return Math.sqrt(dx * dx + dy * dy + dz * dz);\n }\n\n public toDist(v2: Vector | Point3D): number {\n const v1 = this;\n const dx = v1.x - v2.x,\n dy = v1.y - v2.y,\n dz = v1.z - v2.z;\n return Math.sqrt(dx * dx + dy * dy + dz * dz);\n }\n\n // public static dist(v1: Vector, v2: Vector): number {\n // const dx = v1.x - v2.x,\n // dy = v1.y - v2.y,\n // dz = v1.z - v2.z;\n // return Math.sqrt(dx * dx + dy * dy + dz * dz);\n // }\n\n public dot(v: number | Vector | Point3D, y: number, z: number): number {\n if (v instanceof Vector || v instanceof Point3D) {\n return this.x * v.x + this.y * v.y + this.z * v.z;\n }\n ;\n return this.x * v + this.y * y + this.z * z;\n }\n\n public cross(v: Vector | Point3D): Vector {\n const x = this.x,\n y = this.y,\n z = this.z;\n return new Vector(y * v.z - v.y * z, z * v.x - v.z * x, x * v.y - v.x * y);\n }\n\n public normalize() {\n const m = this.mag();\n if (m > 0) this.div(m);\n }\n\n public limit(high: number) {\n if (this.mag() > high) {\n this.normalize();\n this.mult(high);\n }\n }\n\n public heading2D() {\n return -Math.atan2(-this.y, this.x);\n }\n\n public random2D() {\n return this.fromAngle(Math.random() * (2 * Math.PI));\n }\n\n public fromAngle(angle: number, length = 1) {\n return new Vector(length * Math.cos(angle), length * Math.sin(angle), 0);\n };\n\n public fromAngles(theta: number, phi: number, length = 1) {\n const cosPhi = Math.cos(phi);\n const sinPhi = Math.sin(phi);\n const cosTheta = Math.cos(theta);\n const sinTheta = Math.sin(theta);\n\n return new Vector(\n length * sinTheta * sinPhi,\n -length * cosTheta,\n length * sinTheta * cosPhi\n );\n };\n\n public array(): number[] {\n return [this.x, this.y, this.z];\n }\n\n public toPoint3D(): Point3D {\n return new Point3D(this.x, this.y, this.z);\n }\n\n public toPoint2D(): Point2D {\n return new Point2D(this.x, this.y);\n }\n\n public copy(): Vector {\n return new Vector(this.x, this.y, this.z);\n }\n\n public toString(): string {\n return '[' + this.x + ', ' + this.y + ', ' + this.z + ']';\n }\n\n}\n", "import { Vector } from './Vector';\nimport { Point2D } from './Point2D';\n\nexport class Point3D extends Point2D {\n public z: number;\n\n constructor(data: Vector);\n constructor(data: {x?: number, y?: number, z?: number});\n constructor(x?: number, y?: number, z?: number);\n constructor(x?: number | {x?: number, y?: number, z?: number} | Vector, y?: number, z?: number) {\n if (x instanceof Vector) {\n super(x.x, x.y);\n this.z = x.z;\n } else if (typeof x === 'object') {\n super({x: x.x ?? 0, y: x.y ?? 0})\n this.z = x.z ?? 0;\n } else {\n super(x,y)\n this.z = z ?? 0;\n }\n }\n\n copy() {\n return new Point3D(this.x, this.y, this.z);\n }\n}\n", "export type SizeType = {\n width: number;\n height: number;\n};\n\nexport const isSizeType = (obj: any): obj is SizeType =>\n !!obj &&\n typeof obj.width === 'number' &&\n typeof obj.height === 'number';", "import { Point2D } from './Point2D';\nimport { MathUtil } from '../math/MathUtil';\nimport AngleUnitType = MathUtil.AngleUnitType;\nimport { isSizeType, SizeType } from './SizeType';\nimport { Point2DType } from './Point2DType';\n\ntype ValueLinkControl<T> = { value: T, noLink: boolean | Rect };\nconst isValueLinkControl = <T = any>(data: any): data is ValueLinkControl<T> => {\n return typeof data === 'object' && 'value' in data && 'noLink' in data;\n // return data.value !== undefined && data.noLink !== undefined && typeof data.value === 'object' && typeof data.noLink === 'boolean';\n}\n\nexport class Rect {\n private _start: Point2D;\n private _width: number\n private _height: number\n private linkRects?: Set<Rect>;\n\n constructor(size: SizeType);\n constructor(point: Point2DType, endPoint: Point2DType);\n constructor(point: Point2D, endPoint: Point2D);\n constructor(point: Point2D, width?: number, height?: number);\n constructor(x: number, y: number, width?: number, height?: number);\n constructor(xOrPoint: number | Point2D | { x: number, y: number } | SizeType, yOrPointOrWidth?: number | Point2D | { x: number, y: number }, widthOrHeight = 0, heightOrUndefined = 0) {\n if (isSizeType(xOrPoint)) {\n this._start = new Point2D(0, 0);\n this._width = xOrPoint.width;\n this._height = xOrPoint.height;\n } else if (typeof xOrPoint === 'object' && typeof yOrPointOrWidth === 'object') {\n this._start = xOrPoint instanceof Point2D ? xOrPoint : new Point2D(xOrPoint.x, xOrPoint.y);\n this.end = yOrPointOrWidth instanceof Point2D ? yOrPointOrWidth : new Point2D(yOrPointOrWidth.x, yOrPointOrWidth.y);\n } else if (typeof xOrPoint === 'object' && typeof yOrPointOrWidth === 'number') {\n this._start = xOrPoint instanceof Point2D ? xOrPoint : new Point2D(xOrPoint.x, xOrPoint.y);\n this._width = yOrPointOrWidth;\n this._height = widthOrHeight\n } else if (typeof xOrPoint === 'number' && typeof yOrPointOrWidth === 'number') {\n this._start = new Point2D(xOrPoint, yOrPointOrWidth);\n this._width = widthOrHeight;\n this._height = heightOrUndefined;\n }\n }\n\n\n private valueLinkControl<T>(value: T | ValueLinkControl<T>) {\n let v: T;\n let noLink: boolean | Rect = false;\n if (isValueLinkControl(value)) {\n v = value.value;\n noLink = value.noLink;\n } else {\n v = value;\n }\n return {value: v, noLink};\n }\n\n get width(): number {\n return this._width;\n }\n\n get height(): number {\n return this._height;\n }\n\n get start(): Point2D {\n return this._start.copy();\n }\n\n ////////////////////\n\n set width(width: number) {\n this.setWidth(width);\n }\n\n public setWidth(width: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(width);\n const percentDiff = MathUtil.getPercentByTotal(this._width, value);\n this._width = value;\n this.applyWidthPercentLinks({value: percentDiff, noLink});\n }\n\n\n set height(height: number) {\n this.setHeight(height);\n }\n\n public setHeight(height: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(height);\n const percentDiff = MathUtil.getPercentByTotal(this._height, value);\n this._height = value;\n this.applyHeightPercentLinks({value: percentDiff, noLink});\n }\n\n set start(inputValue: Point2D) {\n let {value, noLink} = this.valueLinkControl(inputValue);\n const percentDiff = new Point2D({x: MathUtil.getPercentByTotal(this._start.x, value.x), y: MathUtil.getPercentByTotal(this._start.y, value.y)});\n this._start = value;\n this.applyStartPercentLinks({value: percentDiff, noLink});\n }\n\n // \uC5B8\uC81C\uC4F0\uB294\uAC70\uC9C0 \u3161\u3161?\n setWidthFromEnd(inputValue: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(inputValue);\n const percentDiff = MathUtil.getPercentByTotal(this.start.x, value);\n this._start.x = this.end.x - value;\n this.applyStartXPercentLinks({value: percentDiff, noLink});\n }\n\n set widthFromEnd(inputValue: number) {\n this.setWidthFromEnd(inputValue);\n }\n\n // \uC5B8\uC81C\uC4F0\uB294\uAC70\uC9C0 \u3161\u3161?\n setHeightFromEnd(inputValue: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(inputValue);\n const diff = this.end.y - value;\n const percentDiff = MathUtil.getPercentByTotal(this.start.y, diff);\n this._start.y = diff;\n this.applyStartYPercentLinks({value: percentDiff, noLink});\n }\n\n set heightFromEnd(inputValue: number) {\n this.setHeightFromEnd(inputValue);\n }\n\n setWidthFromCenter(inputValue: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(inputValue);\n const diff = this.center.x - (value / 2);\n const percentDiff = MathUtil.getPercentByTotal(this.start.x, diff);\n this._start.x = diff;\n this.applyStartXPercentLinks(percentDiff);\n }\n\n set widthFromCenter(inputValue: number) {\n this.setWidthFromCenter(inputValue);\n }\n\n setHeightFromCenter(inputValue: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(inputValue);\n const diff = this.center.y - (value / 2);\n const percentDiff = MathUtil.getPercentByTotal(this.start.y, diff);\n this._start.y = diff;\n this.applyStartYPercentLinks(percentDiff);\n }\n\n set heightFromCenter(inputValue: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(inputValue);\n const diff = this.center.y - (value / 2);\n const percentDiff = MathUtil.getPercentByTotal(this.start.y, diff);\n this._start.y = diff;\n this.applyStartYPercentLinks(percentDiff);\n }\n\n set x(inputValue: number) {\n this.setX(inputValue);\n }\n\n public setX(inputValue: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(inputValue);\n const diff = value - this._start.x;\n const percentDiff = MathUtil.getPercentByTotal(this.width, diff);\n this._start.x = value;\n this.applyStartXPercentLinks({value: percentDiff, noLink});\n }\n\n set y(inputValue: number) {\n this.setY(inputValue);\n }\n\n public setY(inputValue: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(inputValue);\n const diff = value - this._start.y;\n const percentDiff = MathUtil.getPercentByTotal(this.height, diff);\n this._start.y = value;\n this.applyStartYPercentLinks({value: percentDiff, noLink});\n }\n\n ////////////////////////////\n\n applyWidthPercentLinks(widthPercent: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(widthPercent);\n if (this.linkRects && (typeof noLink === 'boolean' ? !noLink : true)) {\n Array.from(this.linkRects.values()).filter(it => {\n return typeof noLink === 'boolean' ? true : it !== noLink;\n }).forEach(it => {\n it.setWidthByWidthPercent({value: value, noLink: this});\n })\n }\n }\n\n applyHeightPercentLinks(heightPercent: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(heightPercent);\n if (this.linkRects && (typeof noLink === 'boolean' ? !noLink : true)) {\n Array.from(this.linkRects.values()).filter(it => {\n return typeof noLink === 'boolean' ? true : it !== noLink;\n }).forEach(it => {\n it.setHeightByHeightPercent({value: value, noLink: this});\n })\n }\n }\n\n applyStartPercentLinks(startPercent: Point2D | ValueLinkControl<Point2D>) {\n let {value, noLink} = this.valueLinkControl(startPercent);\n this.applyStartXPercentLinks({value: value.x, noLink});\n this.applyStartYPercentLinks({value: value.y, noLink});\n }\n\n applyStartXPercentLinks(xPercent: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(xPercent);\n if (this.linkRects && (typeof noLink === 'boolean' ? !noLink : true)) {\n Array.from(this.linkRects.values()).filter(it => {\n return typeof noLink === 'boolean' ? true : it !== noLink;\n }).forEach(it => {\n it.addXByWidthPercent({value: value, noLink: this});\n })\n }\n }\n\n applyStartYPercentLinks(yPercent: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(yPercent);\n if (this.linkRects && (typeof noLink === 'boolean' ? !noLink : true)) {\n Array.from(this.linkRects.values()).filter(it => {\n return typeof noLink === 'boolean' ? true : it !== noLink;\n }).forEach(it => {\n it.addYByHeightPercent({value: value, noLink: this});\n })\n }\n }\n\n hasLink(rect: Rect) {\n return this.linkRects?.has(rect)\n }\n\n isLinked() {\n return !!this.linkRects?.size;\n }\n\n addLink(...rect: Rect[]) {\n this.linkRects ??= new Set<Rect>();\n rect.filter(it => !this.linkRects?.has(it)).forEach(it => {\n this.linkRects?.add(it);\n it.addLink(this);\n })\n }\n\n setLinks(rects: Rect[]) {\n this.unLinkAll();\n this.addLink(...rects);\n }\n\n unLinkAll() {\n if (this.linkRects) {\n Array.from(this.linkRects.values()).forEach(it => {\n this.unLink(it);\n })\n this.linkRects.clear();\n }\n }\n\n unLink(rect: Rect | ValueLinkControl<Rect>) {\n let {value, noLink} = this.valueLinkControl(rect);\n if (this.linkRects) {\n this.linkRects.delete(value);\n }\n if (!noLink)\n value.unLink({value: this, noLink: this});\n }\n\n addWidthPercent(wPercent: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(wPercent);\n this.setWidth({value: this.width + MathUtil.getValueByTotalInPercent(this.width, value), noLink});\n }\n\n addHeightPercent(hPercent: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(hPercent);\n this.setHeight({value: this.height + MathUtil.getValueByTotalInPercent(this.height, value), noLink});\n }\n\n addWidthRatio(wRatio: number) {\n this.width = this.width + MathUtil.getValueByTotalInRatio(this.width, wRatio);\n }\n\n addHeightRatio(hRatio: number) {\n this.height = this.height + MathUtil.getValueByTotalInRatio(this.height, hRatio);\n }\n\n addXPercent(wPercent: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(wPercent);\n this.setX({value: this.x + MathUtil.getValueByTotalInPercent(this.width, value), noLink});\n }\n\n addYPercent(hPercent: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(hPercent);\n this.setY({value: this.y + MathUtil.getValueByTotalInPercent(this.height, value), noLink});\n }\n\n addXRatio(wRatio: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(wRatio);\n this.setX({value: this.x + MathUtil.getValueByTotalInRatio(this.width, value), noLink});\n }\n\n addYRatio(hRatio: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(hRatio);\n this.setY({value: this.y + MathUtil.getValueByTotalInRatio(this.height, value), noLink});\n }\n\n ////////////\n\n set endX(value: number) {\n const diff = value - this.x;\n this.width = diff;\n }\n\n set endXPercent(endXPercent: number) {\n this.endX = MathUtil.getValueByTotalInPercent(this.width, endXPercent);\n }\n\n set endYPercent(endYPercent: number) {\n this.endY = MathUtil.getValueByTotalInPercent(this.height, endYPercent);\n }\n\n set endY(value: number) {\n this.height = value - this.y;\n }\n\n set end(value: Point2D) {\n this.width = value.x - this.x;\n this.height = value.y - this.y;\n }\n\n get x(): number {\n return this.start.x;\n }\n\n get y(): number {\n return this.start.y;\n }\n\n get endX(): number {\n return this.end.x;\n }\n\n get endY(): number {\n return this.end.y;\n }\n\n to(startPoint: Point2D) {\n const r = this.copy();\n r.start = startPoint;\n return r;\n }\n\n toRotate(r: number, {rotatePoint = this.center, type = 'degreeAngle'}: { rotatePoint?: { x: number, y: number }, type?: AngleUnitType }): Point2D[] {\n const angle = MathUtil.radians(r, {type});\n const centerPoint = rotatePoint instanceof Point2D ? rotatePoint : new Point2D(rotatePoint.x, rotatePoint.y);\n\n const points = [\n this.leftTop,\n this.rightTop,\n this.rightBottom,\n this.leftBottom\n ];\n\n return points.map(p => MathUtil.rotatePoint(p, centerPoint, angle));\n }\n\n get center(): Point2D {\n return new Point2D(this.start.x + (this.width / 2), this.start.y + (this.height / 2));\n }\n\n get end(): Point2D {\n return new Point2D(this.start.x + this.width, this.start.y + this.height);\n }\n\n get leftTop(): Point2D {\n return this.start.copy();\n }\n\n get leftBottom(): Point2D {\n return new Point2D(this.start.x, this.end.y);\n }\n\n get rightTop(): Point2D {\n return new Point2D(this.end.x, this.start.y);\n }\n\n get rightBottom(): Point2D {\n return this.end;\n }\n\n public copy(): Rect {\n return new Rect(this.x, this.y, this.width, this.height);\n }\n\n /////////////////\n\n getWidthPercent(width: number) {\n return MathUtil.getPercentByTotal(this.width, width);\n }\n\n getWidthRatio(width: number) {\n return MathUtil.getRatioByTotal(this.width, width);\n }\n\n getWidthByPercent(percent: number) {\n return MathUtil.getValueByTotalInPercent(this.width, percent);\n }\n\n getWidthByRatio(percent: number) {\n return MathUtil.getValueByTotalInRatio(this.width, percent);\n }\n\n getHeightPercent(height: number) {\n return MathUtil.getPercentByTotal(this.height, height);\n }\n\n getHeightRatio(height: number) {\n return MathUtil.getRatioByTotal(this.height, height);\n }\n\n getHeightByPercent(percentY: number) {\n return MathUtil.getValueByTotalInPercent(this.height, percentY);\n }\n\n getHeightByRatio(ratio: number) {\n return MathUtil.getValueByTotalInRatio(this.height, ratio);\n }\n\n getXPercent(x: number) {\n return MathUtil.getPercentByTotal(this.width, x - this.x)\n }\n\n getXRatio(x: number) {\n return MathUtil.getRatioByTotal(this.width, x - this.x)\n }\n\n getXByPercent(xPercent: number) {\n return this.x + MathUtil.getValueByTotalInPercent(this.width, xPercent);\n }\n\n getXByRatio(ratio: number) {\n return this.x + MathUtil.getValueByTotalInRatio(this.width, ratio);\n }\n\n getYPercent(y: number) {\n return MathUtil.getPercentByTotal(this.height, y - this.y);\n }\n\n getYRatio(y: number) {\n return MathUtil.getRatioByTotal(this.height, y - this.y);\n }\n\n getYByPercent(yPercent: number) {\n return this.y + MathUtil.getValueByTotalInPercent(this.height, yPercent);\n }\n\n getYByRatio(ratio: number) {\n return this.y + MathUtil.getValueByTotalInRatio(this.height, ratio);\n }\n\n getPercent(point: { x: number, y: number }): Point2D {\n return new Point2D(\n this.getXPercent(point.x),\n this.getYPercent(point.y),\n );\n }\n\n /**\n * \uC8FC\uC5B4\uC9C4 width\uC5D0 \uB9DE\uCDB0 \uBE44\uC728\uC5D0 \uB530\uB77C height\uB97C \uC2A4\uCF00\uC77C\uB9C1\uD558\uC5EC \uC0C8\uB85C\uC6B4 Rect\uB97C \uBC18\uD658\uD569\uB2C8\uB2E4.\n * @param width \uC0C8\uB85C\uC6B4 width \uAC12\n * @returns \uBE44\uC728\uC5D0 \uB9DE\uAC8C height\uAC00 \uC870\uC815\uB41C Rect\n */\n toScaleByWidth(width: number): Rect {\n const ratio = this.height / this.width;\n return new Rect(this.x, this.y, width, width * ratio);\n }\n /**\n * \uC8FC\uC5B4\uC9C4 height\uC5D0 \uB9DE\uCDB0 \uBE44\uC728\uC5D0 \uB530\uB77C width\uB97C \uC2A4\uCF00\uC77C\uB9C1\uD558\uC5EC \uC0C8\uB85C\uC6B4 Rect\uB97C \uBC18\uD658\uD569\uB2C8\uB2E4.\n * @param height \uC0C8\uB85C\uC6B4 height \uAC12\n * @returns \uBE44\uC728\uC5D0 \uB9DE\uAC8C width\uAC00 \uC870\uC815\uB41C Rect\n */\n toScaleByHeight(height: number): Rect {\n const ratio = this.width / this.height;\n return new Rect(this.x, this.y, height * ratio, height);\n }\n\n toRatio(point: Rect | { x: number, y: number, w: number, h: number }): Rect {\n return new Rect(\n this.getXRatio(point.x),\n this.getYRatio(point.y),\n this.getWidthRatio(point instanceof Rect ? point.width : point.w),\n this.getHeightRatio(point instanceof Rect ? point.height : point.h),\n );\n }\n\n getRatio(point: { x: number, y: number }) {\n return new Point2D(\n this.getXRatio(point.x),\n this.getYRatio(point.y),\n );\n }\n\n getByPercent(percent: { x: number, y: number }): Point2D {\n return new Point2D(\n this.getXByPercent(percent.x),\n this.getYByPercent(percent.y),\n );\n }\n\n getByRatio(ratio: { x: number, y: number }) {\n return new Point2D(\n this.getXByRatio(ratio.x),\n this.getYByRatio(ratio.y),\n );\n }\n\n getDiffX(x: number) {\n return x - this.x;\n }\n\n getDiffY(y: number) {\n return y - this.y;\n }\n\n getDiffLeft(x: number) {\n this.getDiffX(x);\n }\n\n getDiffTop(y: number) {\n this.getDiffY(y);\n }\n\n getDiffRight(x: number) {\n return x - this.end.x;\n }\n\n getDiffBottom(y: number) {\n return y - this.end.y;\n }\n\n getDiffWidth(width: number) {\n return width - this.width;\n }\n\n getDiffHeight(height: number) {\n return height - this.height;\n }\n\n toDiff(rect: Rect) {\n return new Rect(\n rect.x - this.x,\n rect.y - this.y,\n rect.width - this.width,\n rect.height - this.height,\n );\n }\n\n setXByWidthPercent(wPercent: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(wPercent);\n this.setX({value: MathUtil.getValueByTotalInPercent(this.width, value), noLink});\n }\n\n set xByWidthPercent(wPercent: number) {\n this.setXByWidthPercent(wPercent);\n }\n\n setXByWidthRatio(wRatio: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(wRatio);\n this.setX({value: MathUtil.getValueByTotalInRatio(this.width, value), noLink});\n }\n\n set xByWidthRatio(wRatio: number) {\n this.setXByWidthRatio(wRatio);\n }\n\n setYByHeightPercent(hPercent: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(hPercent);\n this.setY({value: MathUtil.getValueByTotalInPercent(this.height, value), noLink});\n }\n\n set yByHeightPercent(hPercent: number) {\n this.setYByHeightPercent(hPercent);\n }\n\n setYByHeightRatio(ratio: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(ratio);\n this.setY({value: MathUtil.getValueByTotalInRatio(this.height, value), noLink});\n }\n\n set yByHeightRatio(ratio: number) {\n this.setYByHeightRatio(ratio);\n }\n\n addXByWidthPercent(wPercent: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(wPercent);\n this.setX({value: this.x + MathUtil.getValueByTotalInPercent(this.width, value), noLink});\n }\n\n addXByWidthRatio(wRatio: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(wRatio);\n this.setX({value: this.x + MathUtil.getValueByTotalInRatio(this.width, value), noLink});\n }\n\n addYByHeightPercent(hPercent: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(hPercent);\n this.setY({value: this.y + MathUtil.getValueByTotalInPercent(this.height, value), noLink});\n }\n\n addYByHeightRatio(ratio: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(ratio);\n this.setY({value: this.y + MathUtil.getValueByTotalInRatio(this.height, value), noLink});\n }\n\n setWidthByWidthPercent(wPercent: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(wPercent);\n this.setWidth({value: MathUtil.getValueByTotalInPercent(this.width, value), noLink});\n }\n\n set widthByWidthPercent(wPercent: number) {\n this.setWidthByWidthPercent(wPercent);\n }\n\n setWidthByWidthRatio(wRatio: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(wRatio);\n this.setWidth({value: MathUtil.getValueByTotalInRatio(this.width, value), noLink});\n }\n\n set widthByWidthRatio(wRatio: number) {\n this.setWidthByWidthRatio(wRatio);\n }\n\n setHeightByHeightPercent(hPercent: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(hPercent);\n this.setHeight({value: MathUtil.getValueByTotalInPercent(this.height, value), noLink});\n }\n\n set heightByHeightPercent(hPercent: number) {\n this.setHeightByHeightPercent(hPercent);\n }\n\n setHeightByHeightRatio(hRatio: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(hRatio);\n this.setHeight({value: MathUtil.getValueByTotalInRatio(this.height, value), noLink});\n }\n\n set heightByHeightRatio(hRatio: number) {\n this.setHeightByHeightRatio(hRatio);\n }\n\n // getWidthHeightPercentByPoint(point: Point2D): Point2D {\n // return new Point2D(this.getWidthPercent(point.x),this.getHeightPercent(point.y));\n // }\n //\n // getByPercent(point: Point2D): Point2D {\n // return new Point2D(this.getWidthByPercent(point.x),this.getHeightByPercent(point.y));\n // }\n\n ///////\n\n public copyByPercent(percent: number): Rect;\n public copyByPercent(percentX: number, percentY?: number): Rect ;\n public copyByPercent(percentOrX: number, percentY?: number): Rect {\n return new Rect(this.x, this.y,\n MathUtil.getValueByTotalInPercent(this.width, percentOrX),\n MathUtil.getValueByTotalInPercent(this.height, percentY ?? percentOrX)\n );\n }\n\n public copyByRatio(ratio: number): Rect;\n public copyByRatio(ratioX: number, ratioY?: number): Rect ;\n public copyByRatio(ratioOrX: number, ratioY?: number): Rect {\n return new Rect(this.x, this.y,\n MathUtil.getValueByTotalInRatio(this.width, ratioOrX),\n MathUtil.getValueByTotalInRatio(this.height, ratioY ?? ratioOrX)\n );\n }\n\n public isIn(data: { x: number, y: number }): boolean;\n public isIn(data: Point2D): boolean;\n public isIn(data: Rect): boolean\n public isIn(data: Point2D | Rect | { x: number, y: number }): boolean {\n if (data instanceof Rect) {\n return this.isIn(data.start) && this.isIn(data.end);\n } else {\n return data.x >= this.start.x && data.x <= this.end.x && data.y >= this.start.y && data.y <= this.end.y;\n }\n }\n\n public isOut(data: Point2D): boolean;\n public isOut(data: Rect): boolean;\n public isOut(data: Point2D | Rect) {\n if (data instanceof Rect) {\n return !this.isOverlap(data);\n } else {\n return !this.isIn(data);\n }\n }\n\n public isOverlap(data: Point2D): boolean;\n public isOverlap(data: Rect): boolean;\n public isOverlap(data: Point2D | Rect) {\n if (data instanceof Rect) {\n /*\n \uC0C8\uB85C\uC6B4 \uB85C\uC9C1\uC740 \uBC18\uB300\uB85C \"\uACB9\uCE58\uC9C0 \uC54A\uB294 \uC870\uAC74\"\uC744 \uCC3E\uACE0, \uADF8 \uC870\uAC74\uC5D0 \uD574\uB2F9\uD558\uC9C0 \uC54A\uC73C\uBA74 \"\uACB9\uCE5C\uB2E4\"\uACE0 \uD310\uB2E8\uD558\uB294\n \uBC29\uC2DD\uC785\uB2C8\uB2E4. \uC774 \uBC29\uBC95\uC774 \uD6E8\uC52C \uAC04\uB2E8\uD558\uACE0 \uBAA8\uB4E0 \uACBD\uC6B0\uB97C \uCC98\uB9AC\uD560 \uC218 \uC788\uC2B5\uB2C8\uB2E4.\n\n \uB450 \uC0AC\uAC01\uD615(A\uC640 B)\uC774 \uACB9\uCE58\uC9C0 \uC54A\uC73C\uB824\uBA74, \uB2E4\uC74C \uB124 \uAC00\uC9C0 \uC870\uAC74 \uC911 \uD558\uB098\uB77C\uB3C4 \uB9CC\uC871\uD574\uC57C \uD569\uB2C8\uB2E4.\n 1. A\uAC00 B\uC758 \uC644\uC804\uD788 \uC67C\uCABD\uC5D0 \uC788\uC744 \uB54C\n * A\uC758 \uC624\uB978\uCABD \uB05D(this.endX)\uC774 B\uC758 \uC67C\uCABD \uC2DC\uC791(data.x)\uBCF4\uB2E4 \uC67C\uCABD\uC5D0 \uC788\uB294 \uACBD\uC6B0\n * \uCF54\uB4DC: this.endX < data.x\n\n\n 2. A\uAC00 B\uC758 \uC644\uC804\uD788 \uC624\uB978\uCABD\uC5D0 \uC788\uC744 \uB54C\n * A\uC758 \uC67C\uCABD \uC2DC\uC791(this.x)\uC774 B\uC758 \uC624\uB978\uCABD \uB05D(data.endX)\uBCF4\uB2E4 \uC624\uB978\uCABD\uC5D0 \uC788\uB294 \uACBD\uC6B0\n * \uCF54\uB4DC: this.x > data.endX\n\n\n 3. A\uAC00 B\uC758 \uC644\uC804\uD788 \uC704\uCABD\uC5D0 \uC788\uC744 \uB54C\n * A\uC758 \uC544\uB798\uCABD \uB05D(this.endY)\uC774 B\uC758 \uC704\uCABD \uC2DC\uC791(data.y)\uBCF4\uB2E4 \uC704\uCABD\uC5D0 \uC788\uB294 \uACBD\uC6B0\n * \uCF54\uB4DC: this.endY < data.y\n\n\n 4. A\uAC00 B\uC758 \uC644\uC804\uD788 \uC544\uB798\uCABD\uC5D0 \uC788\uC744 \uB54C\n * A\uC758 \uC704\uCABD \uC2DC\uC791(this.y)\uC774 B\uC758 \uC544\uB798\uCABD \uB05D(data.endY)\uBCF4\uB2E4 \uC544\uB798\uCABD\uC5D0 \uC788\uB294 \uACBD\uC6B0\n * \uCF54\uB4DC: this.y > data.endY\n */\n const noOverlap = this.endX < data.x ||\n this.x > data.endX ||\n this.endY < data.y ||\n this.y > data.endY;\n return !noOverlap;\n // return (\n // this.isOverlap(data.leftTop) ||\n // this.isOverlap(data.rightTop) ||\n // this.isOverlap(data.rightBottom) ||\n // this.isOverlap(data.leftBottom)) ||\n // (\n // data.start.x < this.x && data.start.y < this.y &&\n // data.end.x > this.end.x && data.end.y > this.end.y\n // );\n } else {\n return this.isIn(data);\n }\n }\n\n public toString(): string {\n return `x:${this.x}, y:${this.y}, width: ${this.width}, height: ${this.height}`;\n }\n\n}\n", "import { Vector } from '../../Vector';\nimport { Rect } from '../../Rect';\n\ntype Transaform = [number, number, number, number, number, number];\n\ntype Color = {\n r?: number,\n g?: number,\n b?: number,\n a?: number\n};\n\nexport class Obj<T = any> extends Vector {\n\n public volume = 0; // \uBD80\uD53C\n public mass = 0; // \uC9C8\uB7C9\n public e = 0; // \uD0C4\uC131\n public rotate = 0; // \uD68C\uC804\n public width = 0; // \uB108\uBE44\n public height = 0; // \uB192\uC774\n public data?: T;\n // public age = 0; // \uC0DD\uC131\uB41C \uC2DC\uAC04 \uAC00\uC911\uCE58\n // https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/transform\n /*\n a, d: \uAC00\uB85C/\uC138\uB85C \uC2A4\uCF00\uC77C\n b, c: \uAE30\uC6B8\uC774\uAE30(skew)\n e, f: \uC774\uB3D9(translate)\n --------------\n a, b, c, d, e, f\n */\n public transform: Transaform = [1, 0, 0, 1, 0, 0];\n public color: Color = {\n r: 0,\n g: 0,\n b: 0,\n a: 255\n };\n public id?: string;\n\n // public data?: T;\n\n\n constructor(data?: {\n x?: number,\n y?: number,\n z?: number,\n volume?: number,\n mass?: number,\n e?: number,\n rotate?: number,\n width?: number,\n height?: number,\n transform?: Transaform,\n color?: Color,\n data?: T,\n }) {\n super();\n this.updateObjWithDefaults(data);\n }\n\n\n copyObj() {\n return new Obj({\n x: this.x,\n y: this.y,\n z: this.z,\n volume: this.volume,\n mass: this.mass,\n e: this.e,\n rotate: this.rotate,\n width: this.width,\n height: this.height,\n transform: [...this.transform],\n color: {...this.color},\n data: {...this.data}\n });\n }\n\n updateObjWithDefaults(data?: {\n x?: number,\n y?: number,\n z?: number,\n volume?: number,\n mass?: number,\n e?: number,\n rotate?: number,\n width?: number,\n height?: number,\n transform?: Transaform,\n color?: Color,\n data?: T,\n }) {\n if (data) {\n this.x = data.x ?? this.x;\n this.y = data.y ?? this.y;\n this.z = data.z ?? this.z;\n this.volume = data.volume ?? this.volume;\n this.mass = data.mass ?? this.mass;\n this.e = data.e ?? this.e;\n this.rotate = data.rotate ?? this.rotate;\n this.width = data.width ?? this.width;\n this.height = data.height ?? this.height;\n this.transform = [...(data.transform ?? this.transform)];\n this.color = {...(data.color ?? this.color)};\n const t = data.data ?? this.data;\n this.data = t?{...t}:undefined;\n }\n }\n\n setObj(data?: {\n x?: number,\n y?: number,\n z?: number,\n volume?: number,\n mass?: number,\n e?: number,\n rotate?: number,\n width?: number,\n height?: number,\n transform?: Transaform,\n color?: Color,\n data?: T,\n }) {\n if (data) {\n this.x = data.x??0;\n this.y = data.y??0;\n this.z = data.z??0;\n this.volume = data.volume??0;\n this.mass = data.mass??0;\n this.e = data.e??0;\n this.rotate = data.rotate??0;\n this.width = data.width??0;\n this.height = data.height??0;\n this.transform = [...(data.transform??[1, 0, 0, 1, 0, 0])];\n this.color = { ...(data.color??{r:0,g:0,b:0,a:255})};\n const data1 = data.data;\n this.data = data1 ? { ...data1} : undefined;\n }\n }\n\n toRect(): Rect {\n return new Rect(this.x, this.y, this.width, this.height);\n }\n\n // constructor(canvas: HTMLCanvasElement, context: CanvasRenderingContext2D, public avaliablePlace: Rectangle = new Rectangle(new Point(0, 0), new Point(0, 0))) {\n // super(canvas, context);\n // }\n\n\n // get centerPoint(): Point {\n // return new Point();\n // }\n}\n", "import { Point3D } from '../entity/Point3D';\nimport { Vector } from '../entity/Vector';\nimport { Obj } from '../entity/object/obj/Obj';\nimport { Point2D } from '../entity/Point2D';\n\nexport namespace MathUtil {\n export type BezierConfig = { p1x: number | 'random', p1y: number | 'random', p2x: number | 'random', p2y: number | 'random' } | [number | 'random', number | 'random', number | 'random', number | 'random'];\n export const getMinByObjectArray = (objectArray: Array<any>, varName: string) => {\n let min;\n if (varName && objectArray && objectArray.length > 0) {\n min = objectArray[0][varName];\n for (let i = 1; i < objectArray.length; i++) {\n min = Math.min(min, objectArray[i][varName]);\n }\n }\n return min;\n };\n\n export const hypot = (...data: number[]) => {\n // 2\uCC28\uC6D0 \uC608\uC2DC\n // Math.hypot(3, 4); // \uACB0\uACFC: 5 (3\u00B2 + 4\u00B2 = 9 + 16 = 25, \u221A25 = 5)\n\n// 3\uCC28\uC6D0 \uC608\uC2DC\n// Math.hypot(3, 4, 5); // \uACB0\uACFC: 7.0710678118654755\n\n return Math.hypot(...data);\n }\n\n // \uD53C\uD0C0\uACE0\uB77C\uC2A4 \uC815\uB9AC \uD568\uC218\n export const pythagorean = (a: number, b: number): number => {\n /*\n \uD53C\uD0C0\uACE0\uB77C\uC2A4 \uC815\uB9AC\n a^2 + b^2 = c^2\n c = \u221A(a^2 + b^2)\n */\n // return Math.sqrt(start * start + end * end);\n return Math.sqrt(a * a + b * b);\n };\n\n export const getMaxByObjectArray = (objectArray: Array<any>, varName: string) => {\n let max;\n if (varName && objectArray && objectArray.length > 0) {\n max = objectArray[0][varName];\n for (let i = 1; i < objectArray.length; i++) {\n max = Math.max(max, objectArray[i][varName]);\n }\n }\n return max;\n };\n\n export const sum = (array: number[]) => {\n return array.reduce((acc, curr) => acc + curr, 0);\n }\n\n export const avg = (array: number[]) => {\n return array.length > 0 ? MathUtil.sum(array) / array.length : 0;\n }\n\n export const minMax = (data: number, minMax: { min: number, max: number }) => {\n return Math.min(Math.max(data, minMax.min), minMax.max);\n }\n export const max = (array: number[]) => {\n return array.length > 0 ? Math.max(...array) : undefined;\n };\n\n export const min = (array: number[]) => {\n return array.length > 0 ? Math.min(...array) : undefined;\n };\n\n export const getSumByObjectArray = (objectArray: Array<any>, varName: string) => {\n let sum = 0;\n if (varName && objectArray && objectArray.length > 0) {\n for (let i = 0; i < objectArray.length; i++) {\n sum += objectArray[i][varName];\n }\n }\n return sum;\n };\n\n\n export type AngleUnitType = 'degreeAngle' | 'ratio' | 'percent';\n /**\n * Converts value to radians based on given type.\n * @param data - The value to convert to radians\n * @param option - Conversion type configuration\n * @param option.type - Type of conversion:\n * 'degreeAngle' - Converts from degrees to radians\n * 'ratio' - Multiplies value by 2\u03C0 (input range 0-1)\n * 'percent' - Converts percentage to 2\u03C0 ratio (input range 0-100)\n * @returns The converted value in radians\n * @example\n * // Convert 180 degrees to radians (3.14...)\n * radians(180, {type: 'degreeAngle'})\n *\n * // Convert 0.5 ratio to radians (3.14...)\n * radians(0.5, {type: 'ratio'})\n *\n * // Convert 50% to radians (3.14...)\n * radians(50, {type: 'percent'})\n */\n export const radians = (data: number, {type = 'degreeAngle'}: {type?: AngleUnitType}): number => {\n /*\n radian\n * 1.57..: 90\uB3C4, PI/2\n * 3.14..: 180\uB3C4, PI\n * 4.71..: 270\uB3C4, PI + PI/2\n * 6.28..: 360\uB3C4, PI * 2\n */\n if (type === 'ratio') {\n return (data * 2) * Math.PI;\n } else if (type === 'percent') {\n return ((data / 100) * 2) * Math.PI;\n } else {\n // return data * Math.PI / 180;\n return data / 180 * Math.PI;\n }\n };\n\n export const degrees = (data: number, {type = 'degreeAngle'}: {type?: AngleUnitType}): number => {\n if (type === 'ratio') {\n return data * 360;\n } else if (type === 'percent') {\n return (data / 100) * 360;\n } else {\n return data * 180 / Math.PI;\n }\n };\n // static createCanvas(w, h) {\n // let canvas = document.createElement('canvas');\n // canvas.width = w;\n // canvas.height = h;\n // return canvas;\n // }\n //\n // static copyCanvas(canvas) {\n // let newCanvas = document.createElement('canvas');\n // newCanvas.width = canvas.width;\n // newCanvas.height = canvas.height;\n // context = newCanvas.getContext('2d');\n // context.drawImage(canvas, 0, 0);\n // return newCanvas;\n // }\n\n /**\n 1. \uBE44\uC728\uC758 \uAC1C\uB150\n \uBE44\uC728(Ratio): \uB450 \uC591\uC758 \uC0C1\uB300\uC801\uC778 \uD06C\uAE30\uB97C \uBE44\uAD50\uD55C \uAC12\uC73C\uB85C, \uC77C\uBC18\uC801\uC73C\uB85C \uBD84\uC218\uB098 \uC18C\uC218\uB85C \uD45C\uD604\uB429\uB2C8\uB2E4. \uC608\uB97C \uB4E4\uC5B4, \"2:3\" \uBE44\uC728\uC740 \uB450 \uC218\uC758 \uBE44\uAC00 2 \uB300 3\uC774\uB77C\uB294 \uB73B\uC774\uBA70, \uC774\uB294 2/3\uB85C\uB3C4 \uB098\uD0C0\uB0BC \uC218 \uC788\uC2B5\uB2C8\uB2E4.\n \uB2E8\uC704 \uBE44\uC728(Normalized Ratio): \uD55C \uAC12\uC744 \uAE30\uC900\uC73C\uB85C \uB2E4\uB978 \uAC12\uC744 \uC870\uC815\uD55C \uBE44\uC728\uC744 \uC758\uBBF8\uD569\uB2C8\uB2E4. \uC5EC\uAE30\uC11C\uB294 \uB108\uBE44(w)\uB97C 1\uB85C \uC815\uADDC\uD654(normalize)\uD558\uC5EC \uB192\uC774(h)\uC758 \uC0C1\uB300\uC801 \uAC12\uC744 \uAD6C\uD558\uB294 \uAC83\uC774 \uBAA9\uD45C\uC785\uB2C8\uB2E4.\n \uC774\uBBF8\uC9C0 \uBE44\uC728: \uC774\uBBF8\uC9C0\uC758 \uB108\uBE44\uC640 \uB192\uC774 \uBE44\uC728\uC740 \uBCF4\uD1B5 \"w:h\" \uD615\uC2DD\uC73C\uB85C \uD45C\uD604\uB418\uBA70, \uC774 \uBE44\uC728\uC744 \uC720\uC9C0\uD558\uBA74\uC11C \uD06C\uAE30\uB97C \uC870\uC815\uD560 \uB54C \uC720\uC6A9\uD569\uB2C8\uB2E4.\n 2. \uACC4\uC0B0 \uBC29\uBC95\n \uC8FC\uC5B4\uC9C4 \uB370\uC774\uD130:\n\n \uB108\uBE44(w) = 1652 \uD53D\uC140\n \uB192\uC774(h) = 421 \uD53D\uC140\n \uBAA9\uD45C: \uB108\uBE44\uB97C 1\uB85C \uBCF4\uC558\uC744 \uB54C \uB192\uC774\uC758 \uAC12 \uAD6C\uD558\uAE30\n \uB2E8\uACC4\uBCC4 \uACC4\uC0B0\n \uC6D0\uB798 \uBE44\uC728 \uAD6C\uD558\uAE30:\n \uC774\uBBF8\uC9C0\uC758 \uBE44\uC728\uC740 w:h = 1652:421\uC785\uB2C8\uB2E4.\n \uC774\uB97C \uBD84\uC218\uB85C \uD45C\uD604\uD558\uBA74 1652 / 421\uC785\uB2C8\uB2E4.\n \uB108\uBE44\uB97C 1\uB85C \uC815\uADDC\uD654:\n \uB108\uBE44\uB97C 1\uB85C \uB9CC\uB4E4\uAE30 \uC704\uD574, \uC6D0\uB798 \uB108\uBE44(1652)\uB97C 1\uB85C \uB098\uB204\uACE0, \uC774\uB97C \uB192\uC774\uC5D0\uB3C4 \uB3D9\uC77C\uD558\uAC8C \uC801\uC6A9\uD569\uB2C8\uB2E4.\n \uC815\uADDC\uD654\uB41C \uB192\uC774 = \uC6D0\uB798 \uB192\uC774(h) \u00F7 \uC6D0\uB798 \uB108\uBE44(w)\n \uC218\uC2DD: h' = h / w (\uC5EC\uAE30\uC11C h'\uB294 \uC815\uADDC\uD654\uB41C \uB192\uC774)\n \uACC4\uC0B0 \uC801\uC6A9:\n \uC815\uADDC\uD654\uB41C \uB192\uC774 = 421 / 1652\n \uACC4\uC0B0: 421 \u00F7 1652 \u2248 0.25485 (\uC18C\uC218\uC810 \uC57D 5\uC790\uB9AC\uAE4C\uC9C0)\n \uACB0\uACFC \uD574\uC11D:\n \uB108\uBE44\uAC00 1\uC77C \uB54C \uB192\uC774\uB294 \uC57D 0.25485\uC785\uB2C8\uB2E4. \uC774\uB294 \uB192\uC774\uAC00 \uB108\uBE44\uC758 \uC57D 25.485%\uC5D0 \uD574\uB2F9\uD568\uC744 \uC758\uBBF8\uD569\uB2C8\uB2E4.\n \uAC80\uC99D\n \uC6D0\uB798 \uBE44\uC728\uC744 \uC720\uC9C0\uD558\uB824\uBA74, \uC815\uADDC\uD654\uB41C \uAC12\uC744 \uC5ED\uC73C\uB85C \uC801\uC6A9\uD574 \uC6D0\uB798 \uAC12\uC744 \uBCF5\uC6D0\uD560 \uC218 \uC788\uC5B4\uC57C \uD569\uB2C8\uB2E4.\n \uC815\uADDC\uD654\uB41C \uBE44\uC728(0.25485)\uC744 1652\uC5D0 \uACF1\uD558\uBA74: 1652 * 0.25485 \u2248 421, \uC774\uB294 \uC6D0\uB798 \uB192\uC774\uC640 \uC77C\uCE58\uD558\uBBC0\uB85C \uACC4\uC0B0\uC774 \uC62C\uBC14\uB984.\n 3. \uC218\uC2DD \uC815\uB9AC\n \uC77C\uBC18\uC801\uC778 \uC815\uADDC\uD654 \uC218\uC2DD:\n \uC815\uADDC\uD654\uB41C \uB192\uC774(h') = h / w\n \uC815\uADDC\uD654\uB41C \uB108\uBE44(w') = w / w = 1 (\uAE30\uC900\uAC12)\n \uC774 \uBB38\uC81C \uC801\uC6A9:\n h' = 421 / 1652 \u2248 0.25485\n 4. \uB300\uC548: \uBE44\uC728\uB85C \uD45C\uD604\n \uBE44\uC728\uC744 \"1:\uBE44\uC728\uAC12\" \uD615\uC2DD\uC73C\uB85C \uD45C\uD604\uD558\uB824\uBA74, \uB192\uC774\uB97C \uB108\uBE44\uB85C \uB098\uB208 \uAC12\uC744 \uADF8\uB300\uB85C \uC0AC\uC6A9.\n \uACB0\uACFC: 1 : 0.25485 \uB610\uB294 \uC57D 1 : 0.255 (\uC18C\uC218\uC810 \uBC18\uC62C\uB9BC).\n 5. \uCD94\uAC00 \uAC1C\uB150\n \uBE44\uB840\uC2DD: \uC774\uBBF8\uC9C0 \uD06C\uAE30\uB97C \uC870\uC815\uD560 \uB54C \uBE44\uC728\uC744 \uC720\uC9C0\uD558\uB824\uBA74, w1 / h1 = w2 / h2\uB97C \uB9CC\uC871\uD574\uC57C \uD569\uB2C8\uB2E4. \uC5EC\uAE30\uC11C w2 = 1\uB85C \uC124\uC815\uD55C \uACBD\uC6B0, h2 = h1 / w1\uC774 \uB429\uB2C8\uB2E4.\n \uC2E4\uC81C \uC801\uC6A9: \uC6F9 \uB514\uC790\uC778\uC774\uB098 \uADF8\uB798\uD53D\uC5D0\uC11C \uC774\uBBF8\uC9C0\uB97C \uB9AC\uC0AC\uC774\uC9D5\uD560 \uB54C, \uC6D0\uBCF8 \uBE44\uC728(1652:421)\uC744 \uC720\uC9C0\uD558\uB824\uBA74 \uC774 \uC815\uADDC\uD654\uB41C \uAC12\uC744 \uC0AC\uC6A9\uD574 \uB192\uC774\uB97C \uACC4\uC0B0.\n <script>\n const w = 1652;\n const h = 421;\n const normalizedHeight = h / w;\n console.log(`\uC815\uADDC\uD654\uB41C \uB192\uC774: ${normalizedHeight.toFixed(5)}`); // 0.25485\n console.log(`\uC6D0\uB798 \uBE44\uC728 \uD655\uC778: ${w * normalizedHeight} \u2248 ${h}`); // \uC57D 421\n </script>\n */\n export const ratio = (numerator: number, denominator: number, multiplier: number = 1): number => {\n // numerator(\uBD84\uC790) : denominator(\uBD84\uBAA8) = multiplier : x\n // x = multiplier * denominator / numerator\n return multiplier * (denominator / numerator)\n // a:b = c:x \uBE44\uB840\uC2DD\uC744 \uC774\uC6A9\uD574 x \uAC12\uC744 \uAD6C\uD568\n // ax = bc\n // x = bc/a\n }\n //end - start \uB05D\uACFC \uC2DC\uC791\uC758 \uC0AC\uC774\uAE38\uC774\uB97C \uCDE8\uB4DD\uD55C\uB2E4.\n export const getBetweenLength = (start: number, end: number) => {\n return end - start;\n };\n\n //\uC804\uCCB4\uAC12\uC5D0\uC11C \uC77C\uBD80\uAC12\uC740 \uBA87 \uD37C\uC13C\uD2B8? \uACC4\uC0B0\uBC95 \uACF5\uC2DD tot\uC5D0\uC11C data\uB294 \uBA87%\uC778\uAC00.\n export const getPercentByTotal = (tot: number, data: number) => {\n /*\n \uC804\uCCB4\uAC12\uC5D0\uC11C \uC77C\uBD80\uAC12\uC740 \uBA87 \uD37C\uC13C\uD2B8? \uACC4\uC0B0\uBC95 \uACF5\uC2DD\n \uC77C\uBD80\uAC12 \u00F7 \uC804\uCCB4\uAC12 X 100\n \uC608\uC81C) 300\uC5D0\uC11C 105\uB294 \uBA87\uD37C\uC13C\uD2B8?\n \uB2F5: 35%\n */\n return (data / tot) * 100;\n };\n export const getRatioByTotal = (tot: number, data: number) => {\n return (data / tot)\n };\n\n //\uC804\uCCB4\uAC12\uC758 \uBA87 \uD37C\uC13C\uD2B8\uB294 \uC5BC\uB9C8? \uACC4\uC0B0\uBC95 \uACF5\uC2DD tot\uC5D0\uC11C wantPercent\uB294 \uBA87\uC778\uAC00?\n export const getValueByTotalInPercent = (tot: number, wantPercent: number) => {\n /*\n \uC804\uCCB4\uAC12 X \uD37C\uC13C\uD2B8 \u00F7 100\n \uC608\uC81C) 300\uC758 35\uD37C\uC13C\uD2B8\uB294 \uC5BC\uB9C8?\n \uB2F5) 105\n */\n return (tot * wantPercent) / 100;\n };\n export const getValueByTotalInRatio = (tot: number, ratio: number) => {\n return (tot * ratio);\n };\n\n //\uC22B\uC790\uB97C \uBA87 \uD37C\uC13C\uD2B8 \uC99D\uAC00\uC2DC\uD0A4\uB294 \uACF5\uC2DD tot\uC5D0\uC11C wantPercent\uC744 \uC99D\uAC00 \uC2DC\uD0A8\uB2E4\n export const getValuePercentUp = (tot: number, wantPercent: number) => {\n /*\n \uC22B\uC790\uB97C \uBA87 \uD37C\uC13C\uD2B8 \uC99D\uAC00\uC2DC\uD0A4\uB294 \uACF5\uC2DD\n \uC22B\uC790 X (1 + \uD37C\uC13C\uD2B8 \u00F7 100)\n \uC608\uC81C) 1548\uC744 66\uD37C\uC13C\uD2B8 \uC99D\uAC00\uD558\uBA74?\n \uB2F5) 2569.68\n */\n return tot * (1 + wantPercent / 100);\n };\n\n export const getValueRatioUp = (tot: number, ratio: number) => {\n return tot * (1 + ratio);\n }\n\n //\uC22B\uC790\uB97C \uBA87 \uD37C\uC13C\uD2B8 \uAC10\uC18C\uD558\uB294 \uACF5\uC2DD tot\uC5D0\uC11C wantPercent\uC744 \uC99D\uAC10 \uC2DC\uD0A8\uB2E4\n export const getValuePercentDown = (tot: number, wantPercent: number) => {\n /*\n \uC22B\uC790\uB97C \uBA87 \uD37C\uC13C\uD2B8 \uAC10\uC18C\uD558\uB294 \uACF5\uC2DD\n \uC22B\uC790 X (1 - \uD37C\uC13C\uD2B8 \u00F7 100)\n \uC608\uC81C) 1548\uC744 66\uD37C\uC13C\uD2B8 \uAC10\uC18C\uD558\uBA74?\n \uB2F5) 526.32\n */\n return tot * (1 - wantPercent / 100);\n };\n\n export const getValueRatioDown = (tot: number, ratio: number) => {\n return tot * (1 - ratio);\n }\n\n\n //\uBC14\uB840\uC2DD\n // A:B = C:X => 30:50 = 33 : x\n // 30X = 50*33\n // X = BC / 30\n\n\n // Bezier\n // https://cubic-bezier.com/#.17,.67,.83,.67\n // https://matthewlein.com/tools/ceaser\n // https://easings.net/ko#\n // (0.250, 0.250, 0.750, 0.750); /* linear */\n export const beziers = (points: (Point3D | { x: number; y: number, z: number })[], frame: number) => {\n const datas = new Array(frame).fill(undefined);\n for (let i = 0; i < datas.length; i++) {\n datas[i] = MathUtil.bezier(points, frame, i);\n }\n return datas;\n };\n\n // \uCC98\uC74C\uC810\uC740 \uD3EC\uD568\uB418\uC9C0 \uC54A\uB294\uB2E4, \uB05D\uC810\uC740 \uD3EC\uD568\uB41C\uB2E4.\n export const bezier = (points: (Point3D | { x: number; y: number, z: number })[], frame: number, idx: number): Vector => {\n if (points && points.length > 0) {\n const pv = points.map(it => new Vector(it.x, it.y, it.z));\n const steps: Vector[] = [];\n pv.reduce((a, b) => {\n const step = a.toSub(b).div(frame).mult(idx + 1);\n steps.push(a.toSub(step));\n return b;\n });\n\n if (steps.length <= 1) {\n return steps[0];\n }\n return MathUtil.bezier(steps.map(it => new Point3D(it)), frame, idx);\n } else {\n return new Vector();\n }\n };\n\n // \uC2DC\uC791\uC810\uACFC \uB05D\uC810\uC740 \uD3EC\uD568\uD558\uC9C0 \uC54A\uB294\uB2E4.\n export function cubicBezier(position: { start: number; end: number; }, frameConfig: { frame: number; }, bezierConfig: BezierConfig): number[];\n export function cubicBezier(position: { start: Obj; end: Obj; }, frameConfig: { frame: number; }, bezierConfig: BezierConfig): Obj[];\n export function cubicBezier(position: { start: Point3D; end: Point3D; }, frameConfig: { frame: number; }, bezierConfig: BezierConfig): Point3D[];\n export function cubicBezier(\n position: {\n start: number; // \uC2DC\uC791 \uAC12\n end: number; // \uB05D \uAC12\n } | {\n start: Point3D; // \uC2DC\uC791 \uAC12\n end: Point3D; // \uB05D \uAC12\n } | {\n start: Obj; // \uC2DC\uC791 \uAC12\n end: Obj; // \uB05D \uAC12\n },\n frameConfig: {\n // includeStartEnd?: boolean,\n frame: number; // \uD504\uB808\uC784 \uC218 (\uBC30\uC5F4 \uD06C\uAE30)\n },\n bezierConfig: BezierConfig\n ): number[] | Point3D[] | Obj[] {\n\n\n if (position.start instanceof Obj && position.end instanceof Obj) {\n const x = MathUtil.cubicBezier({start: position.start.x, end: position.end.x}, frameConfig, bezierConfig);\n const y = MathUtil.cubicBezier({start: position.start.y, end: position.end.y}, frameConfig, bezierConfig);\n const z = MathUtil.cubicBezier({start: position.start.z, end: position.end.z}, frameConfig, bezierConfig);\n const v = MathUtil.cubicBezier({start: position.start.volume, end: position.end.volume}, frameConfig, bezierConfig);\n const m = MathUtil.cubicBezier({start: position.start.mass, end: position.end.mass}, frameConfig, bezierConfig);\n const e = MathUtil.cubicBezier({start: position.start.e, end: position.end.e}, frameConfig, bezierConfig);\n const r = MathUtil.cubicBezier({start: position.start.rotate, end: position.end.rotate}, frameConfig, bezierConfig);\n const w = MathUtil.cubicBezier({start: position.start.width, end: position.end.width}, frameConfig, bezierConfig);\n const h = MathUtil.cubicBezier({start: position.start.height, end: position.end.height}, frameConfig, bezierConfig);\n const t0 = MathUtil.cubicBezier({start: position.start.transform[0], end: position.end.transform[0]}, frameConfig, bezierConfig);\n const t1 = MathUtil.cubicBezier({start: position.start.transform[1], end: position.end.transform[1]}, frameConfig, bezierConfig);\n const t2 = MathUtil.cubicBezier({start: position.start.transform[2], end: position.end.transform[2]}, frameConfig, bezierConfig);\n const t3 = MathUtil.cubicBezier({start: position.start.transform[3], end: position.end.transform[3]}, frameConfig, bezierConfig);\n const t4 = MathUtil.cubicBezier({start: position.start.transform[4], end: position.end.transform[4]}, frameConfig, bezierConfig);\n const t5 = MathUtil.cubicBezier({start: position.start.transform[5], end: position.end.transform[5]}, frameConfig, bezierConfig);\n const colorR = MathUtil.cubicBezier({start: position.start.color.r ?? 0, end: position.end.color.r ?? 0}, frameConfig, bezierConfig);\n const colorG = MathUtil.cubicBezier({start: position.start.color.g ?? 0, end: position.end.color.g ?? 0}, frameConfig, bezierConfig);\n const colorB = MathUtil.cubicBezier({start: position.start.color.b ?? 0, end: position.end.color.b ?? 0}, frameConfig, bezierConfig);\n const colorA = MathUtil.cubicBezier({start: position.start.color.a ?? 255, end: position.end.color.a ?? 255}, frameConfig, bezierConfig);\n const objs = x.map((x, idx) => {\n const obj = new Obj({x, y: y[idx], z: z[idx]});\n obj.volume = v[idx];\n obj.mass = m[idx];\n obj.e = e[idx];\n obj.rotate = r[idx];\n obj.width = w[idx];\n obj.height = h[idx];\n obj.transform = [t0[idx], t1[idx], t2[idx], t3[idx], t4[idx], t5[idx]];\n obj.color = {r: colorR[idx], g: colorG[idx], b: colorB[idx], a: colorA[idx]};\n return obj;\n });\n return objs;\n } else if (position.start instanceof Point3D && position.end instanceof Point3D) {\n const x = MathUtil.cubicBezier({start: position.start.x, end: position.end.x}, frameConfig, bezierConfig);\n const y = MathUtil.cubicBezier({start: position.start.y, end: position.end.y}, frameConfig, bezierConfig);\n const z = MathUtil.cubicBezier({start: position.start.z, end: position.end.z}, frameConfig, bezierConfig);\n return x.map((x, idx) => new Point3D(x, y[idx], z[idx]));\n }\n\n\n const {start, end} = position as { start: number, end: number };\n\n // ----\n\n const {frame} = frameConfig;\n let {p1x, p1y, p2x, p2y} = Array.isArray(bezierConfig) ? {p1x: bezierConfig[0], p1y: bezierConfig[1], p2x: bezierConfig[2], p2y: bezierConfig[3]} : bezierConfig;\n p1x = p1x === 'random' ? Math.random() : p1x;\n p1y = p1y === 'random' ? Math.random() : p1y;\n p2x = p2x === 'random' ? Math.random() : p2x;\n p2y = p2y === 'random' ? Math.random() : p2y;\n\n const result: number[] = [];\n const totalChange = end - start;\n\n // console.log('----222->',totalChange);\n\n // 3\uCC28 \uBCA0\uC9C0\uC5B4 \uACE1\uC120 \uACF5\uC2DD\n const bezier = (t: number): number => {\n const t2 = Number(t * t);\n const t3 = Number(t2 * t);\n const mt = Number(1 - t);\n const mt2 = Number(mt * mt);\n const mt3 = Number(mt2 * mt);\n\n return mt3 * 0 + 3 * mt2 * t * Number(p1y) + 3 * mt * t2 * Number(p2y) + t3 * 1;\n };\n\n // frame \uC218\uB9CC\uD07C \uACC4\uC0B0, \uC2DC\uC791\uC810, \uB05D\uC810 \uC81C\uC678\n const targetFrame = frame + 1;\n for (let i = 1; i < targetFrame; i++) {\n // const t = frame <= 1 ? 1 : (i + 1) / frame;\n // const t = frame <= 1 ? 1 : (i + 1) / frame;\n const t = i / targetFrame;\n const progress = bezier(t);\n // console.log('pppppppp', progress);\n const value = start + totalChange * progress;\n result.push(value);\n }\n\n return result;\n\n }\n\n export const diff = (a: number, b: number) => {\n return Math.abs(a - b);\n };\n\n /*\n > \uD22C\uC601\uBD80\uBD84? \uC800\uBD80\uBD84 \uD575\uC2EC\uBD80\uBD84 \uB354 \uC790\uC138\uD558\uAC8C \uC54C\uB824\uC904\uB798\n\n\u2726 \uB124, \uADF8\uB7FC\uC694. \uC774 \uBD80\uBD84\uC774 \uAE30\uD558\uD559\uC801\uC73C\uB85C \uC5B4\uB5A4 \uC758\uBBF8\uB97C \uAC00\uC9C0\uB294\uC9C0 \uADF8\uB9BC\uACFC \uD568\uAED8 \uBA38\uB9BF\uC18D\uC73C\uB85C \uC0C1\uC0C1\uD558\uBA70 \uC774\uD574\uD558\uBA74\n \uC27D\uC2B5\uB2C8\uB2E4.\n\n \uD575\uC2EC \uC544\uC774\uB514\uC5B4: \uADF8\uB9BC\uC790 \uB0B4\uB9AC\uAE30 (Projection)\n\n \uAC00\uC7A5 \uAC04\uB2E8\uD55C \uBE44\uC720\uB294 \uADF8\uB9BC\uC790\uC785\uB2C8\uB2E4.\n\n\n * `\uC120\uBD84 vw`: \uB545\uC5D0 \uB193\uC5EC\uC788\uB294 \uB9C9\uB300\uAE30\uB77C\uACE0 \uC0C1\uC0C1\uD574 \uBCF4\uC138\uC694. (v\uB294 \uC2DC\uC791\uC810, w\uB294 \uB05D\uC810)\n * `\uC810 p`: \uACF5\uC911\uC5D0 \uB5A0 \uC788\uB294 \uB9C8\uC6B0\uC2A4 \uCEE4\uC11C\uB77C\uACE0 \uC0C1\uC0C1\uD574 \uBCF4\uC138\uC694.\n * \uBAA9\uD45C: \uB9C8\uC6B0\uC2A4 \uCEE4\uC11C(p)\uC5D0\uC11C \uB9C9\uB300\uAE30(vw)\uAE4C\uC9C0 \uAC00\uC7A5 \uAC00\uAE4C\uC6B4 \uC9C0\uC810\uC744 \uCC3E\uB294 \uAC83.\n\n\n \uAC00\uC7A5 \uAC00\uAE4C\uC6B4 \uC9C0\uC810\uC740 p\uC5D0\uC11C \uB9C9\uB300\uAE30\uB85C \uC218\uC9C1\uC73C\uB85C \uC120\uC744 \uB0B4\uB838\uC744 \uB54C \uB9CC\uB098\uB294 \uC810\uC785\uB2C8\uB2E4. \uB9C8\uCE58 p \uBC14\uB85C \uC704\uC5D0 \uC190\uC804\uB4F1\uC744\n \uCF1C\uC11C \uB9C9\uB300\uAE30\uC5D0 \uADF8\uB9BC\uC790\uB97C \uB9CC\uB4DC\uB294 \uAC83\uACFC \uAC19\uC2B5\uB2C8\uB2E4. \uC774 \uADF8\uB9BC\uC790\uAC00 \uB5A8\uC5B4\uC9C0\uB294 \uC9C0\uC810\uC774 \uBC14\uB85C \uD22C\uC601(projection)\uC785\uB2C8\uB2E4.\n\n ---\n\n \uCF54\uB4DC \uC0C1\uC138 \uBD84\uC11D\n\n\n let t = ((p.x - v.x) * (w.x - v.x) + (p.y - v.y) * (w.y - v.y)) / l2;\n\n \uC774 \uD55C \uC904\uC758 \uCF54\uB4DC\uB294 \uBC14\uB85C \uADF8 '\uADF8\uB9BC\uC790\uAC00 \uB9C9\uB300\uAE30\uC758 \uC5B4\uB514\uC5D0 \uB5A8\uC5B4\uC9C0\uB294\uAC00'\uB97C \uACC4\uC0B0\uD558\uB294 \uACFC\uC815\uC785\uB2C8\uB2E4. \uC5EC\uAE30\uC11C t\uB294\n \uBE44\uC728\uC744 \uC758\uBBF8\uD569\uB2C8\uB2E4.\n\n 1. \uBCA1\uD130(Vector)\uB85C \uC0DD\uAC01\uD558\uAE30\n\n\n \uCF54\uB4DC\uB97C \uC774\uD574\uD558\uAE30 \uC704\uD574 \uB450 \uAC1C\uC758 \uBCA1\uD130\uB97C \uC0DD\uAC01\uD574\uC57C \uD569\uB2C8\uB2E4.\n\n\n * \uBCA1\uD130 1 (`vw`): \uB9C9\uB300\uAE30 \uC790\uCCB4\uC758 \uBC29\uD5A5\uACFC \uAE38\uC774\uB97C \uB098\uD0C0\uB0B4\uB294 \uBCA1\uD130\uC785\uB2C8\uB2E4.\n * w.x - v.x (x\uBC29\uD5A5)\n * w.y - v.y (y\uBC29\uD5A5)\n * \uBCA1\uD130 2 (`vp`): \uB9C9\uB300\uAE30 \uC2DC\uC791\uC810\uC5D0\uC11C \uB9C8\uC6B0\uC2A4 \uCEE4\uC11C\uAE4C\uC9C0\uC758 \uBCA1\uD130\uC785\uB2C8\uB2E4.\n * p.x - v.x (x\uBC29\uD5A5)\n * p.y - v.y (y\uBC29\uD5A5)\n\n\n 2. \uBD84\uC790: \uBCA1\uD130 \uB0B4\uC801 (Dot Product)\n\n ((p.x - v.x) * (w.x - v.x) + (p.y - v.y) * (w.y - v.y))\n\n\n \uC774 \uBD80\uBD84\uC740 \uB450 \uBCA1\uD130 vp\uC640 vw\uC758 \uB0B4\uC801(dot product)\uC744 \uACC4\uC0B0\uD558\uB294 \uACF5\uC2DD\uC785\uB2C8\uB2E4. \uBCA1\uD130 \uB0B4\uC801\uC740 \uB450 \uBCA1\uD130\uAC00 \uC5BC\uB9C8\uB098\n \"\uAC19\uC740 \uBC29\uD5A5\uC744 \uBC14\uB77C\uBCF4\uACE0 \uC788\uB294\uC9C0\"\uB97C \uB098\uD0C0\uB0B4\uB294 \uC218\uCE58\uC785\uB2C8\uB2E4.\n\n\n * \uB450 \uBCA1\uD130\uAC00 \uC11C\uB85C \uC218\uC9C1\uC774\uBA74 \uB0B4\uC801\uC740 0\uC785\uB2C8\uB2E4.\n * \uB450 \uBCA1\uD130\uAC00 \uAC19\uC740 \uBC29\uD5A5\uC744 \uBCFC\uC218\uB85D \uB0B4\uC801 \uAC12\uC740 \uCEE4\uC9D1\uB2C8\uB2E4.\n\n \uAE30\uD558\uD559\uC801\uC73C\uB85C, `vp` \uBCA1\uD130\uB97C `vw` \uBCA1\uD130 \uC704\uB85C \uD22C\uC601(\uADF8\uB9BC\uC790)\uC2DC\uCF30\uC744 \uB54C\uC758 \uAE38\uC774\uC640 \uAD00\uB828\uC774 \uC788\uC2B5\uB2C8\uB2E4.\n\n 3. \uBD84\uBAA8: l2\n\n\n l2\uB294 \uC55E\uC5D0\uC11C \uACC4\uC0B0\uD588\uB4EF\uC774 \uB9C9\uB300\uAE30 \uBCA1\uD130 vw\uC758 \uAE38\uC774\uC758 \uC81C\uACF1\uC785\uB2C8\uB2E4.\n\n 4. t\uC758 \uC758\uBBF8: \uBE44\uC728\n\n \uACB0\uAD6D t\uB294 \uB2E4\uC74C\uACFC \uAC19\uC774 \uACC4\uC0B0\uB429\uB2C8\uB2E4.\n\n t = (\uBCA1\uD130 vp\uC640 vw\uC758 \uB0B4\uC801) / (\uBCA1\uD130 vw\uC758 \uAE38\uC774 \uC81C\uACF1)\n\n\n \uC774 t \uAC12\uC774 \uBC14\uB85C \uD22C\uC601\uB41C \uADF8\uB9BC\uC790 \uC9C0\uC810\uC774 \uB9C9\uB300\uAE30 \uC2DC\uC791\uC810 `v`\uB85C\uBD80\uD130 \uC5BC\uB9C8\uB098 \uB5A8\uC5B4\uC838 \uC788\uB294\uC9C0\uB97C \uB098\uD0C0\uB0B4\uB294 \uBE44\uC728\uC774\n \uB429\uB2C8\uB2E4.\n\n\n * `t = 0`: \uADF8\uB9BC\uC790\uAC00 \uC815\uD655\uD788 \uB9C9\uB300\uAE30 \uC2DC\uC791\uC810 v\uC5D0 \uB5A8\uC5B4\uC9D1\uB2C8\uB2E4.\n * `t = 1`: \uADF8\uB9BC\uC790\uAC00 \uC815\uD655\uD788 \uB9C9\uB300\uAE30 \uB05D\uC810 w\uC5D0 \uB5A8\uC5B4\uC9D1\uB2C8\uB2E4.\n * `t = 0.5`: \uADF8\uB9BC\uC790\uAC00 \uC815\uD655\uD788 \uB9C9\uB300\uAE30 \uD55C\uAC00\uC6B4\uB370\uC5D0 \uB5A8\uC5B4\uC9D1\uB2C8\uB2E4.\n * `t < 0` (\uC608: `t = -0.2`): p\uAC00 v\uC758 \"\uB4A4\uCABD\"\uC5D0 \uC788\uC5B4\uC11C, \uADF8\uB9BC\uC790\uAC00 \uB9C9\uB300\uAE30 \uC2DC\uC791\uC810 \uC774\uC804\uC5D0 \uB5A8\uC5B4\uC9D1\uB2C8\uB2E4.\n (\uB9C9\uB300\uAE30\uB97C \uBB34\uD55C\uD55C \uC9C1\uC120\uC73C\uB85C \uBD24\uC744 \uB54C)\n * `t > 1` (\uC608: `t = 1.5`): p\uAC00 w\uC758 \"\uC55E\uCABD\"\uC5D0 \uC788\uC5B4\uC11C, \uADF8\uB9BC\uC790\uAC00 \uB9C9\uB300\uAE30 \uB05D\uC810\uC744 \uC9C0\uB098\uC11C \uB5A8\uC5B4\uC9D1\uB2C8\uB2E4.\n (\uB9C9\uB300\uAE30\uB97C \uBB34\uD55C\uD55C \uC9C1\uC120\uC73C\uB85C \uBD24\uC744 \uB54C)\n\n \uACB0\uB860\n\n\n \uC774 t \uAC12\uC744 \uACC4\uC0B0\uD558\uB294 \uAC83\uC774 \uD575\uC2EC\uC778 \uC774\uC720\uB294, \uB9C8\uC6B0\uC2A4 \uD3EC\uC778\uD130(p)\uC640 \uAC00\uC7A5 \uAC00\uAE4C\uC6B4 \uC810\uC774 \uB9C9\uB300\uAE30 \uB0B4\uBD80\uC5D0 \uC788\uB294\uC9C0,\n \uC544\uB2C8\uBA74 \uC591\uCABD \uB05D\uC810 \uC911 \uD558\uB098\uC778\uC9C0 \uD310\uB2E8\uD560 \uC218 \uC788\uB294 \uAE30\uC900\uC744 \uC81C\uACF5\uD558\uAE30 \uB54C\uBB38\uC785\uB2C8\uB2E4.\n\n\n * t\uAC00 0\uACFC 1 \uC0AC\uC774\uC5D0 \uC788\uB2E4\uBA74, \uAC00\uC7A5 \uAC00\uAE4C\uC6B4 \uC810\uC740 \uB9C9\uB300\uAE30 \uC704\uC758 '\uADF8\uB9BC\uC790' \uC9C0\uC810\uC785\uB2C8\uB2E4.\n * t\uAC00 0\uBCF4\uB2E4 \uC791\uB2E4\uBA74, \uAC00\uC7A5 \uAC00\uAE4C\uC6B4 \uC810\uC740 \uB9C9\uB300\uAE30\uC758 \uC2DC\uC791\uC810 v\uC785\uB2C8\uB2E4.\n * t\uAC00 1\uBCF4\uB2E4 \uD06C\uB2E4\uBA74, \uAC00\uC7A5 \uAC00\uAE4C\uC6B4 \uC810\uC740 \uB9C9\uB300\uAE30\uC758 \uB05D\uC810 w\uC785\uB2C8\uB2E4.\n\n\n \uC774\uAC83\uC774 \uBC14\uB85C \uB2E4\uC74C \uCF54\uB4DC \uB77C\uC778 t = Math.max(0, Math.min(1, t));\uAC00 t\uB97C 0\uACFC 1 \uC0AC\uC774\uB85C \uC81C\uD55C\uD558\uB294 \uC774\uC720\uC785\uB2C8\uB2E4.\n \uC774\uB85C\uC368 \uAC00\uC7A5 \uAC00\uAE4C\uC6B4 \uC810\uC774 \uD56D\uC0C1 \uC120\uBD84 \uC704(\uC591 \uB05D\uC810 \uD3EC\uD568)\uC5D0 \uC788\uB3C4\uB85D \uBCF4\uC7A5\uD560 \uC218 \uC788\uC2B5\uB2C8\uB2E4.\n */\nexport const distSqToLineSegment = (p: Point2D, v: Point2D, w: Point2D): number => {\n const l2 = (v.x - w.x) ** 2 + (v.y - w.y) ** 2;\n if (l2 === 0) return (p.x - v.x) ** 2 + (p.y - v.y) ** 2;\n let t = ((p.x - v.x) * (w.x - v.x) + (p.y - v.y) * (w.y - v.y)) / l2;\n t = Math.max(0, Math.min(1, t));\n const projection = { x: v.x + t * (w.x - v.x), y: v.y + t * (w.y - v.y) };\n return (p.x - projection.x) ** 2 + (p.y - projection.y) ** 2;\n };\n // static bezirePointToPointVector(point: {point1: Point, point2?: Point, point3?: Point, point4?: Point}) {\n // if (!point.point2) {\n // point.point2 = point.point1;\n // }\n // if (!point.point3) {\n // point.point3 = point.point2;\n // }\n // if (!point.point4) {\n // point.point4 = point.point3;\n // }\n // return {\n // point1: new PointVector(point.point1.x, point.point1.y, point.point1.z),\n // point2: new PointVector(point.point2.x, point.point2.y, point.point2.z),\n // point3: new PointVector(point.point3.x, point.point3.y, point.point3.z),\n // point4: new PointVector(point.point4.x, point.point4.y, point.point4.z),\n // }\n // }\n // static bezier(point: {point1: Point, point2?: Point, point3?: Point, point4?: Point}, frame: number, idx: number) {\n // const pointVector = MathUtil.bezirePointToPointVector(point);\n //\n // const point12Step = PointVector.sub(pointVector.point1, pointVector.point2).div(frame).mult(idx + 1);\n // const point23Step = PointVector.sub(pointVector.point2, pointVector.point3).div(frame).mult(idx + 1);\n // const point34Step = PointVector.sub(pointVector.point3, pointVector.point4).div(frame).mult(idx + 1);\n //\n // pointVector.point1.sub(point12Step);\n // pointVector.point2.sub(point23Step);\n // pointVector.point3.sub(point34Step);\n //\n // const point12MoveStep = PointVector.sub(pointVector.point1, pointVector.point2).div(frame);\n // const point23MoveStep = PointVector.sub(pointVector.point2, pointVector.point3).div(frame);\n // // const point34MoveStep = PointVector.sub(point3, point4).div(frame); // \uB354\uC774\uC0C1\uAC08\uACF3\uC5C6\uC74C\n //\n // const cnt = idx + 1;\n // const point12MovePoint = point12MoveStep.mult(cnt)\n // const point23MovePoint = point23MoveStep.mult(cnt);\n // const combinationPoint1MovePoint = PointVector.sub(pointVector.point1, point12MovePoint); //new PointVector(point1.x - point12MovePoint.x, point1.y - point12MovePoint.y);\n // const combinationPoint2MovePoint = PointVector.sub(pointVector.point2, point23MovePoint); // new PointVector(point2.x - point23MovePoint.x, point2.y - point23MovePoint.y);\n //\n // const finalPointMoveStep = PointVector.sub(combinationPoint1MovePoint, combinationPoint2MovePoint).div(frame);\n // const finalPointMovePoint = finalPointMoveStep.mult(cnt);\n // const final = PointVector.sub(combinationPoint1MovePoint, finalPointMovePoint);\n // return final;\n // }\n //\n // static beziers(point: {point1: Point, point2?: Point, point3?: Point, point4?: Point}, frame: number) {\n // const pointVector = MathUtil.bezirePointToPointVector(point);\n // const frames = new Array(frame).fill(undefined) as PointVector[];\n // for (let i = 0; i < frame; i++) {\n // frames[i] = MathUtil.bezier(point, frame, i);\n // // pointVector.point1.sub(point12Step);\n // // pointVector.point2.sub(point23Step);\n // // pointVector.point3.sub(point34Step);\n // //\n // // const point12MoveStep = PointVector.sub(pointVector.point1, pointVector.point2).div(frame);\n // // const point23MoveStep = PointVector.sub(pointVector.point2, pointVector.point3).div(frame);\n // // // const point34MoveStep = PointVector.sub(point3, point4).div(frame); // \uB354\uC774\uC0C1\uAC08\uACF3\uC5C6\uC74C\n // //\n // // const cnt = i + 1;\n // // const point12MovePoint = point12MoveStep.mult(cnt)\n // // const point23MovePoint = point23MoveStep.mult(cnt);\n // // const combinationPoint1MovePoint = PointVector.sub(pointVector.point1, point12MovePoint); //new PointVector(point1.x - point12MovePoint.x, point1.y - point12MovePoint.y);\n // // const combinationPoint2MovePoint = PointVector.sub(pointVector.point2, point23MovePoint); // new PointVector(point2.x - point23MovePoint.x, point2.y - point23MovePoint.y);\n // //\n // // const finalPointMoveStep = PointVector.sub(combinationPoint1MovePoint, combinationPoint2MovePoint).div(frame);\n // // const finalPointMovePoint = finalPointMoveStep.mult(cnt);\n // // const final = PointVector.sub(combinationPoint1MovePoint, finalPointMovePoint);\n // }\n // return frames;\n // }\n\n\n// interface Point {\n// x: number;\n// y: number;\n// }\n//\n// interface BezierPathOptions {\n// /**\n// * \uC81C\uC5B4\uC810\uC744 \uC5BC\uB9C8\uB098 \uBA40\uB9AC \uB458\uC9C0 \uACB0\uC815\uD558\uB294 \uAC12\uC785\uB2C8\uB2E4. (\uAE30\uBCF8\uAC12: 0.25)\n// * 0 \uC774\uBA74 \uAC70\uC758 \uC9C1\uC120\uC5D0 \uAC00\uAE5D\uACE0, \uAC12\uC774 \uCEE4\uC9C8\uC218\uB85D \uACE1\uC120\uC758 \uD718\uC5B4\uC9D0\uC774 \uCEE4\uC9D1\uB2C8\uB2E4.\n// * \uC74C\uC218 \uAC12\uC744 \uC8FC\uBA74 \uBC18\uB300 \uBC29\uD5A5\uC73C\uB85C \uD729\uB2C8\uB2E4.\n// */\n// controlPointOffsetFactor?: number;\n//\n// /**\n// * \uC810\uB4E4\uC758 \uBD84\uD3EC\uB97C \uC870\uC808\uD558\uB294 \uAC00\uC18D\uB3C4 \uACC4\uC218\uC785\uB2C8\uB2E4. (\uAE30\uBCF8\uAC12: 1)\n// * 1: \uB4F1\uAC04\uACA9 (\uC120\uD615)\n// * > 1: \uC2DC\uC791 \uBD80\uBD84\uC5D0 \uC810\uB4E4\uC774 \uBAA8\uC774\uACE0 \uB05D\uC73C\uB85C \uAC08\uC218\uB85D \uAC04\uACA9\uC774 \uB113\uC5B4\uC9D0 (\uAC00\uC18D, ease-in)\n// * < 1: \uB05D \uBD80\uBD84\uC5D0 \uC810\uB4E4\uC774 \uBAA8\uC774\uACE0 \uC2DC\uC791 \uBD80\uBD84\uC758 \uAC04\uACA9\uC774 \uB113\uC5B4\uC9D0 (\uAC10\uC18D, ease-out)\n// * \uC608: 2\uB294 \uC81C\uACF1 \uAC00\uC18D, 0.5\uB294 \uC81C\uACF1\uADFC \uAC10\uC18D.\n// */\n// accelerationFactor?: number;\n// }\n//\n// /**\n// * 2\uCC28 \uBCA0\uC9C0\uC5D0 \uACE1\uC120 \uC704\uC758 \uD2B9\uC815 t \uAC12\uC5D0\uC11C\uC758 \uC810 \uC88C\uD45C\uB97C \uACC4\uC0B0\uD569\uB2C8\uB2E4.\n// * B(t) = (1-t)^2 * P0 + 2 * (1-t) * t * P1 + t^2 * P2\n// * @param t \uB9E4\uAC1C\uBCC0\uC218 (0\uC5D0\uC11C 1 \uC0AC\uC774)\n// * @param p0 \uC2DC\uC791\uC810\n// * @param p1 \uC81C\uC5B4\uC810\n// * @param p2 \uB05D\uC810\n// * @returns \uACC4\uC0B0\uB41C \uC810\uC758 \uC88C\uD45C\n// */\n// function quadraticBezier(t: number, p0: Point, p1: Point, p2: Point): Point {\n// const mt = 1 - t; // (1-t)\n// const mt2 = mt * mt; // (1-t)^2\n// const t2 = t * t; // t^2\n//\n// const x = mt2 * p0.x + 2 * mt * t * p1.x + t2 * p2.x;\n// const y = mt2 * p0.y + 2 * mt * t * p1.y + t2 * p2.y;\n//\n// return { x, y };\n// }\n//\n// /**\n// * \uCD9C\uBC1C\uC810\uACFC \uB3C4\uCC29\uC810 \uC0AC\uC774\uB97C \uC787\uB294 2\uCC28 \uBCA0\uC9C0\uC5D0 \uACE1\uC120\uC744 \uB530\uB77C \uC774\uB3D9\uD560 \uC88C\uD45C\uB4E4\uC744 \uACC4\uC0B0\uD569\uB2C8\uB2E4.\n// * @param startPoint \uCD9C\uBC1C\uC810 \uC88C\uD45C { x, y }\n// * @param endPoint \uB3C4\uCC29\uC810 \uC88C\uD45C { x, y }\n// * @param options \uBCA0\uC9C0\uC5D0 \uACE1\uC120 \uBC0F \uC810 \uBD84\uD3EC \uC635\uC158\n// * @param numberOfSteps \uC0DD\uC131\uD560 \uC911\uAC04 \uC774\uB3D9 \uC88C\uD45C\uC758 \uAC1C\uC218 (\uC774\uB3D9 \uACBD\uB85C\uC0C1\uC758 \uC810 \uAC1C\uC218)\n// * @returns \uACC4\uC0B0\uB41C \uC88C\uD45C\uB4E4\uC758 \uBC30\uC5F4 (startPoint\uB294 \uD3EC\uD568\uD558\uC9C0 \uC54A\uACE0, endPoint\uB294 \uD3EC\uD568)\n// */\n// function getPointsOnBezierPath(\n// startPoint: Point,\n// endPoint: Point,\n// options: BezierPathOptions = {}, // \uAE30\uBCF8\uAC12 \uBE48 \uAC1D\uCCB4\n// numberOfSteps: number\n// ): Point[] {\n// // --- \uC635\uC158 \uAE30\uBCF8\uAC12 \uC124\uC815 ---\n// const controlPointOffsetFactor = options.controlPointOffsetFactor ?? 0.25; // \uAE30\uBCF8\uAC12 0.25\n// const accelerationFactor = options.accelerationFactor ?? 1; // \uAE30\uBCF8\uAC12 1 (\uC120\uD615)\n//\n// // --- \uC785\uB825\uAC12 \uC720\uD6A8\uC131 \uAC80\uC0AC ---\n// if (numberOfSteps <= 0) {\n// console.warn(\"numberOfSteps\uB294 0\uBCF4\uB2E4 \uCEE4\uC57C \uD569\uB2C8\uB2E4.\");\n// return []; // \uBE48 \uBC30\uC5F4 \uBC18\uD658 \uB610\uB294 \uC5D0\uB7EC \uCC98\uB9AC\n// }\n//\n// const points: Point[] = [];\n// const p0 = startPoint;\n// const p2 = endPoint;\n//\n// // --- \uC81C\uC5B4\uC810(P1) \uC790\uB3D9 \uACC4\uC0B0 ---\n// const midX = (p0.x + p2.x) / 2;\n// const midY = (p0.y + p2.y) / 2;\n//\n// const deltaX = p2.x - p0.x;\n// const deltaY = p2.y - p0.y;\n//\n// const distance = Math.sqrt(deltaX * deltaX + deltaY * deltaY);\n//\n// let p1: Point;\n//\n// if (distance === 0) {\n// // \uC2DC\uC791\uC810\uACFC \uB05D\uC810\uC774 \uAC19\uC73C\uBA74 \uC81C\uC5B4\uC810\uB3C4 \uAC19\uC740 \uC704\uCE58\uB85C \uC124\uC815 (\uC9C1\uC120 \uC774\uB3D9 \uC5C6\uC74C)\n// p1 = { ...p0 };\n// // \uC774 \uACBD\uC6B0, \uBAA8\uB4E0 \uACC4\uC0B0\uB41C \uC810\uC740 \uC2DC\uC791/\uB05D \uC810\uACFC \uB3D9\uC77C\uD558\uAC8C \uB429\uB2C8\uB2E4.\n// // \uC694\uCCAD\uC5D0 \uB530\uB77C \uBE48 \uBC30\uC5F4\uC744 \uBC18\uD658\uD558\uAC70\uB098, \uB05D\uC810\uC744 numberOfSteps\uB9CC\uD07C \uBC18\uD658\uD560 \uC218\uB3C4 \uC788\uC2B5\uB2C8\uB2E4.\n// // \uC5EC\uAE30\uC11C\uB294 \uACC4\uC0B0 \uB85C\uC9C1\uC744 \uADF8\uB300\uB85C \uB450\uC5B4 \uB3D9\uC77C\uD55C \uC810\uC774 \uBC18\uBCF5 \uC0DD\uC131\uB418\uB3C4\uB85D \uD569\uB2C8\uB2E4.\n// } else {\n// // \uC2DC\uC791\uC810\uC5D0\uC11C \uB05D\uC810\uC73C\uB85C\uC758 \uBCA1\uD130\uC5D0 \uC218\uC9C1\uC778 \uBC29\uD5A5 \uBCA1\uD130 \uACC4\uC0B0 (\uC2DC\uACC4 \uBC18\uB300 \uBC29\uD5A5 90\uB3C4 \uD68C\uC804)\n// const perpX = -deltaY / distance;\n// const perpY = deltaX / distance;\n//\n// // \uC911\uAC04 \uC9C0\uC810\uC5D0\uC11C \uC218\uC9C1 \uBC29\uD5A5\uC73C\uB85C \uC635\uC158\uC5D0 \uB530\uB77C \uC81C\uC5B4\uC810 \uC704\uCE58 \uACC4\uC0B0\n// const offset = distance * controlPointOffsetFactor;\n// p1 = {\n// x: midX + perpX * offset,\n// y: midY + perpY * offset,\n// };\n// }\n//\n// // --- \uACE1\uC120 \uC0C1\uC758 \uC810 \uACC4\uC0B0 ---\n// for (let i = 1; i <= numberOfSteps; i++) {\n// // 1. \uAE30\uBCF8 \uD30C\uB77C\uBBF8\uD130 u \uACC4\uC0B0 (0 < u <= 1)\n// const u = i / numberOfSteps;\n// // 2. \uAC00\uC18D\uB3C4 \uC801\uC6A9\uB41C \uD30C\uB77C\uBBF8\uD130 t \uACC4\uC0B0\n// const t = Math.pow(u, accelerationFactor);\n// // 3. \uBCA0\uC9C0\uC5D0 \uACE1\uC120 \uC704\uC758 \uC810 \uACC4\uC0B0\n// const pointOnCurve = quadraticBezier(t, p0, p1, p2);\n// points.push(pointOnCurve);\n// }\n//\n// return points; // \uACC4\uC0B0\uB41C \uC911\uAC04 \uC88C\uD45C\uB4E4\uC758 \uBC30\uC5F4 \uBC18\uD658\n// }\n//\n// // --- \uC0AC\uC6A9 \uC608\uC2DC ---\n// const start: Point = { x: 4, y: 10 };\n// const end: Point = { x: 50, y: 20 };\n// const steps = 10; // 10\uAC1C\uC758 \uC911\uAC04 \uC9C0\uC810 \uACC4\uC0B0\n//\n// // \uC608\uC2DC 1: \uAE30\uBCF8 \uC635\uC158 (\uC57D\uAC04\uC758 \uACE1\uC120, \uB4F1\uAC04\uACA9)\n// const path1 = getPointsOnBezierPath(start, end, {}, steps);\n// console.log(\"\uAE30\uBCF8 \uC635\uC158 \uACBD\uB85C:\", path1.map(p => `(${p.x.toFixed(1)}, ${p.y.toFixed(1)})`).join(\" -> \"));\n//\n// // \uC608\uC2DC 2: \uB354 \uB9CE\uC774 \uD718\uC5B4\uC9C0\uAC8C (offset \uC99D\uAC00), \uAC00\uC18D \uD6A8\uACFC \uCD94\uAC00 (acceleration > 1)\n// const path2 = getPointsOnBezierPath(start, end, { controlPointOffsetFactor: 0.6, accelerationFactor: 2 }, steps);\n// console.log(\"\uAC15\uD55C \uACE1\uC120 + \uAC00\uC18D \uACBD\uB85C:\", path2.map(p => `(${p.x.toFixed(1)}, ${p.y.toFixed(1)})`).join(\" -> \"));\n//\n// // \uC608\uC2DC 3: \uBC18\uB300 \uBC29\uD5A5\uC73C\uB85C \uD718\uAC8C (offset \uC74C\uC218), \uAC10\uC18D \uD6A8\uACFC \uCD94\uAC00 (acceleration < 1)\n// const path3 = getPointsOnBezierPath(start, end, { controlPointOffsetFactor: -0.3, accelerationFactor: 0.5 }, steps);\n// console.log(\"\uBC18\uB300 \uACE1\uC120 + \uAC10\uC18D \uACBD\uB85C:\", path3.map(p => `(${p.x.toFixed(1)}, ${p.y.toFixed(1)})`).join(\" -> \"));\n\n export const rotatePoint = (point: Point2D, center: Point2D, angleInRadians: number): Point2D => {\n // Translate point to origin so that center is the origin\n const translatedX = point.x - center.x;\n const translatedY = point.y - center.y;\n\n // Rotate point\n const rotatedX = translatedX * Math.cos(angleInRadians) - translatedY * Math.sin(angleInRadians);\n const rotatedY = translatedX * Math.sin(angleInRadians) + translatedY * Math.cos(angleInRadians);\n\n // Translate point back\n return new Point2D(rotatedX + center.x, rotatedY + center.y);\n }\n}\n", "import { ValidUtils } from '../valid/ValidUtils';\nimport { FieldType, FilterTuple } from '../types';\nimport { Point2D } from '../entity/Point2D';\nimport { Point3D } from '../entity/Point3D';\nimport { Rect } from '../entity/Rect';\nimport { ObjectUtils } from '../object/ObjectUtils';\nimport { IOS3166_1_Code } from '../code/IOS3166_1';\n\nexport namespace ConvertUtils {\n export type RGBA = { r?: number, g?: number, b?: number, a?: number };\n export type MinMaxCenterAvgDiff<T> = { min: T, max: T, center: T, avg: T };\n export type ToURLSearchParamsParams = { [key: string]: any } | URLSearchParams | [string, unknown][] | string;\n export const objToGetURL = (obj: any): string => {\n return Object.keys(obj).reduce((prev, key, i) => (\n `${prev}${i !== 0 ? '&' : ''}${key}=${obj[key]}`\n ), '');\n };\n\n export const mapToJson = (map: Map<string, any>): string => {\n return JSON.stringify(\n Array.from(\n map.entries()\n ).reduce((o: any, [key, value]) => {\n o[key] = value;\n return o;\n }, {}));\n };\n\n // export const fixed = (num: number, fractionDigits: number): number => {\n // const factor = Math.pow(10, fractionDigits);\n // }\n export const jsonToMap = (jsonStr: any): Map<string, string> => {\n return new Map(JSON.parse(jsonStr));\n };\n\n export const toUrl = (data: string) => {\n try {\n return new URL(data);\n }\n catch (e) {\n throw new Error(`Invalid URL string: ${data}`);\n }\n }\n\n\n export const decodeURIString = (data: string) => {\n return decodeURIComponent(data);\n }\n \n export const encodeURIString = (data: string) => {\n return encodeURIComponent(data);\n }\n\n export const objToStrMap = (obj: any): Map<string, string> => {\n const strMap = new Map();\n for (const k of Object.keys(obj)) {\n strMap.set(k, obj[k]);\n }\n return strMap;\n };\n\n export const jsonToStrMap = (jsonStr: string) => {\n return ConvertUtils.objToStrMap(JSON.parse(jsonStr));\n };\n\n export const strToObject = (message: string): any => {\n return JSON.parse(message);\n };\n\n export const objToJson = (obj: any): string => {\n return JSON.stringify(obj);\n };\n\n export const objToMap = (obj: any): Map<string, any> => {\n const mp = new Map<string, any>();\n Object.keys(obj).forEach((k) => {\n mp.set(k, obj[k]);\n });\n return mp;\n };\n\n export const mapToObj = (map: Map<string, any>): any => {\n const obj = {} as any;\n map.forEach((v, k) => {\n obj[k] = v;\n });\n return obj;\n };\n\n export const snakeToCamelCase = (str: string): string => {\n return str.replace(/_([a-z])/g, (_, letter) => letter.toUpperCase());\n }\n export const camelToSnakeCase = (str: string): string => {\n return str.replace(/([a-z])([A-Z])/g, '$1_$2').toLowerCase();\n };\n\n export function toFormData (obj: any) {\n const formData = new FormData();\n for (const key in obj)\n formData.append(key, obj[key]);\n return formData;\n }\n\n export function toObject<T>(obj: URLSearchParams, config: { firstValue: true }): FieldType<T, string>;\n export function toObject(obj: URLSearchParams): { [key: string]: string | string[] };\n export function toObject<T>(obj: FormData): T;\n export function toObject<T>(obj: [string, unknown][]): T;\n export function toObject<T>(obj: Iterable<any>): T;\n export function toObject(obj: any): any;\n export function toObject(obj: URLSearchParams | FormData |any, config?: { firstValue: boolean }): any {\n if (obj instanceof URLSearchParams) {\n const robj = {} as any;\n obj.forEach((v, k) => {\n if (config?.firstValue && robj[k] === undefined) {\n robj[k] = v;\n } else if (!config?.firstValue) {\n if (robj[k]) {\n if (Array.isArray(robj[k])) {\n robj[k].push(v);\n } else {\n robj[k] = [robj[k], v];\n }\n } else {\n robj[k] = v;\n }\n }\n })\n return robj;\n } else if(obj instanceof FormData) {\n // new Map().entries()\n // Object.entries({})\n // obj = Object.fromEntries(obj.entries());\n const formDataToObject = (formData: any) => {\n const obj: any = {};\n // FormData\uC758 \uBAA8\uB4E0 \uD0A4\uB97C \uC21C\uD68C\n for (const key of formData.keys()) {\n const values = formData.getAll(key); // \uB3D9\uC77C \uD0A4\uC758 \uBAA8\uB4E0 \uAC12 \uAC00\uC838\uC624\uAE30\n // \uAC12\uC774 \uD558\uB098\uBA74 \uB2E8\uC77C \uAC12\uC73C\uB85C, \uC5EC\uB7EC \uAC1C\uBA74 \uBC30\uC5F4\uB85C \uC800\uC7A5\n obj[key] = values.length > 1 ? values : values[0];\n }\n return obj;\n }\n return formDataToObject(obj);\n } else if (obj && typeof obj[Symbol.iterator] === 'function') {\n return Object.fromEntries(obj);\n } else if (Array.isArray(obj)) {\n return Object.fromEntries(obj);\n }else {\n // console.log(Object.prototype.toString.call(obj));\n if (ValidUtils.isMap(obj)) {\n const map = obj as Map<string, any>;\n obj = ConvertUtils.mapToObj(map);\n }\n if (ValidUtils.isArray(obj)) {\n const arr = obj as any[];\n for (let i = 0; i < arr.length; i++) {\n arr[i] = ConvertUtils.toObject(arr[i]);\n }\n }\n\n if (ValidUtils.isObject(obj)) {\n for (const property in obj) {\n obj[property] = ConvertUtils.toObject(obj[property]);\n }\n }\n\n return obj;\n }\n };\n\n export const toArray = <T>(data?: T | T[] | Set<T>): T[] => {\n if (data instanceof Set) {\n return Array.from(data.values());\n }\n\n const datas = (Array.isArray(data) ? data : (data ? [data] : []));\n return datas;\n }\n export const flatArray = <T>(...data: (T | Iterable<T>)[]): T[] => {\n const datas = data.flatMap<T>((item) => (item instanceof Object && Symbol.iterator in item ? Array.from(item) : [item]));\n return datas;\n };\n\n export const iteratorToArray = <T>(it: any): T[] => {\n return Array.from(it) as T[];\n };\n\n export const toJson = (obj: any): string => {\n const at = ConvertUtils.toObject(obj);\n return JSON.stringify(at);\n };\n\n export const concatenateToAttribute = (object_o: any) => {\n return ConvertUtils.concatenateToString(object_o, '=', ' ', '\\'');\n };\n\n export const concatenateToParameter = (object_o: any) => {\n return ConvertUtils.concatenateToString(object_o, '=', '&', '');\n };\n\n export const concatenateToString = (object_o: any, unionString_s = '=', spilString_s = ' ', pairString_s = '') => {\n const results: any[] = [];\n for (const property in object_o) {\n const value = object_o[property];\n if (value) {\n results.push(property.toString() + unionString_s + pairString_s + value + pairString_s);\n }\n }\n\n return results.join(spilString_s);\n };\n\n export const specialCharsToEscape = (data: string): string => {\n return data.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n };\n\n export const decodeHTMLEscape = (data: string): string => {\n // HTML \uC5D4\uD2F0\uD2F0 \uC774\uC2A4\uCF00\uC774\uD504\uB97C \uB514\uCF54\uB4DC\uD569\uB2C8\uB2E4.\n return data.replace(/&amp;/g, '&')\n .replace(/&lt;/g, '<')\n .replace(/&gt;/g, '>')\n .replace(/&quot;/g, '\"')\n .replace(/&#39;/g, \"'\")\n .replace(/&#x2F;/g, '/');\n }\n\n export function escapeHTML(htmlString: string, option?: { targets?: string[] }): string {\n if (!htmlString) return '';\n \n // HTML escape map - \uC21C\uC11C \uC911\uC694: & \uB97C \uBA3C\uC800 \uCC98\uB9AC\uD574\uC57C \uD568\n // https://dev-handbook.tistory.com/23\n const escapeMap: Record<string, string> = {\n '&': '&amp;', // \uBC18\uB4DC\uC2DC \uBA3C\uC800 \uCC98\uB9AC\n '<': '&lt;',\n '>': '&gt;',\n '\"': '&quot;',\n \"'\": '&#39;', // or &apos; (\uD558\uC9C0\uB9CC HTML4\uC5D0\uC11C\uB294 &#39; \uAD8C\uC7A5)\n '/': '&#x2F;',\n '`': '&#x60;',\n '=': '&#x3D;',\n '{': '&#123;',\n '}': '&#125;',\n '#': '&#35;',\n '$': '&#36;',\n '\\n': '&#10;', // newline\n '\\r': '&#13;', // carriage return\n '\\t': '&#9;', // tab\n '\\u00A0': '&nbsp;', // non-breaking space\n '\u00A2': '&cent;',\n '\u00A3': '&pound;',\n '\u00A5': '&yen;',\n '\u20AC': '&euro;',\n '\u00A9': '&copy;',\n '\u00AE': '&reg;',\n '\u2122': '&trade;',\n '\u00B0': '&deg;',\n '\u00B1': '&plusmn;',\n '\u00D7': '&times;',\n '\u00F7': '&divide;',\n '\u2212': '&minus;',\n '\u2022': '&bull;',\n '\u2026': '&hellip;',\n '\u2190': '&larr;',\n '\u2192': '&rarr;',\n '\u2191': '&uarr;',\n '\u2193': '&darr;',\n '\u2194': '&harr;',\n };\n\n // targets \uC635\uC158\uC774 \uC788\uC73C\uBA74 \uD574\uB2F9 \uBB38\uC790\uB9CC \uD544\uD130\uB9C1\n const targetsSet = option?.targets ? new Set(option.targets) : null;\n const filteredEscapeMap = targetsSet \n ? Object.fromEntries(Object.entries(escapeMap).filter(([key]) => targetsSet.has(key)))\n : escapeMap;\n\n // & \uAC00 targets\uC5D0 \uD3EC\uD568\uB418\uC5B4 \uC788\uAC70\uB098 targets\uAC00 \uC5C6\uC73C\uBA74 & \uB97C \uBA3C\uC800 \uCC98\uB9AC\n const shouldEscapeAmpersand = !targetsSet || targetsSet.has('&');\n \n // \uC774\uC2A4\uCF00\uC774\uD504\uD560 \uBB38\uC790\uB4E4\uB85C \uC815\uADDC\uC2DD \uD328\uD134 \uC0DD\uC131\n const charsToEscape = Object.keys(filteredEscapeMap).filter(char => char !== '&');\n if (charsToEscape.length === 0 && !shouldEscapeAmpersand) {\n return htmlString; // \uC774\uC2A4\uCF00\uC774\uD504\uD560 \uBB38\uC790\uAC00 \uC5C6\uC73C\uBA74 \uC6D0\uBCF8 \uBC18\uD658\n }\n\n // \uC815\uADDC\uC2DD \uC0DD\uC131 (\uD2B9\uC218 \uBB38\uC790 \uC774\uC2A4\uCF00\uC774\uD504 \uD544\uC694)\n const escapedChars = charsToEscape.map(char => {\n // \uC815\uADDC\uC2DD\uC5D0\uC11C \uD2B9\uBCC4\uD55C \uC758\uBBF8\uB97C \uAC00\uC9C4 \uBB38\uC790\uB4E4\uC744 \uC774\uC2A4\uCF00\uC774\uD504\n return char.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n }).join('');\n\n let result = htmlString;\n \n // & \uB97C \uBA3C\uC800 \uCC98\uB9AC (\uC635\uC158\uC5D0 \uD3EC\uD568\uB41C \uACBD\uC6B0)\n if (shouldEscapeAmpersand) {\n result = result.replace(/&/g, '&amp;');\n }\n \n // \uB098\uBA38\uC9C0 \uBB38\uC790 \uCC98\uB9AC\n if (escapedChars.length > 0) {\n const regex = new RegExp(`[${escapedChars}]`, 'g');\n result = result.replace(regex, (match) => {\n return filteredEscapeMap[match] || match;\n });\n }\n\n return result;\n }\n\n export const copyObject = <T extends Record<string, any>>(obj: T, update: Partial<T> = {}): T => {\n return {...obj, ...update};\n };\n\n export const copyArrayWithAddition = <T extends unknown[]>(arr: FilterTuple<T>, update?: T): T => {\n return [...arr, ...(update || [])] as T;\n };\n\n export const hexToInt = (hex: string): number => {\n if (hex.startsWith('#')) {\n hex = hex.slice(1);\n }\n if (hex.length === 3) {\n hex = hex.split('').map((c) => c + c).join('');\n }\n return parseInt(hex, 16);\n };\n\n\n // export const toHex = (val: number): string => {\n // const hex = Math.floor(val).toString(16).toUpperCase();\n // return (hex.length === 1 ? '0' + hex : hex);\n // };\n\n export const toHex = (num: number): string => {\n if (num < 0) {\n num = 0xFFFFFFFF + num + 1;\n }\n num = Number(num.toFixed(0));\n return num.toString(16).padStart(2, '0').toUpperCase();\n };\n\n export const toHexColor = (rgba: RGBA): string => {\n const r = ConvertUtils.toHex(rgba.r ?? 0);\n const g = ConvertUtils.toHex(rgba.g ?? 0);\n const b = ConvertUtils.toHex(rgba.b ?? 0);\n const a = ConvertUtils.toHex(rgba.a ?? 255);\n return `#${r}${g}${b}${a}`;\n };\n\n export const avgColor = (color: RGBA[]): RGBA => {\n const sum = color.reduce((acc: Required<RGBA>, c) => {\n acc.r += c.r ?? 0;\n acc.g += c.g ?? 0;\n acc.b += c.b ?? 0;\n acc.a += c.a ?? 0;\n return acc;\n }, {r: 0, g: 0, b: 0, a: 0}) as Required<RGBA>;\n const avg = {r: Math.floor(sum.r / color.length), g: Math.floor(sum.g / color.length), b: Math.floor(sum.b / color.length), a: Math.floor(sum.a / color.length)};\n return avg;\n };\n\n export const toRGBA = (hex?: string | null): RGBA => {\n hex ??= '#000000FF';\n const hexColor = hex.replace('#', '');\n const r = parseInt(hexColor.slice(0, 2) || '0', 16);\n const g = parseInt(hexColor.slice(2, 4) || '0', 16);\n const b = parseInt(hexColor.slice(4, 6) || '0', 16);\n const a = hexColor.length > 6 ? parseInt(hexColor.slice(6, 8) || '0', 16) : 255;\n return {r, g, b, a};\n };\n\n export const minMaxCenterAvg = <T extends { [key: string]: number }>(obj: T[]): { [key in keyof T]?: MinMaxCenterAvgDiff<number> & {diff: number} } => {\n const result: { [key in keyof T]: { min: number, max: number, center: number, diff: number, avg: number } } = {} as any;\n\n const allKeys = ObjectUtils.uniqueKeys(obj);\n for (const key of allKeys) {\n const values = obj.map(item => item[key]);\n const min = Math.min(...values);\n const max = Math.max(...values);\n const center = (min + max) / 2;\n const avg = values.reduce((sum, val) => sum + val, 0) / values.length;\n\n result[key as keyof T] = {min, max, center, avg, diff: max - min};\n }\n\n return result;\n }\n\n export const minMaxCenterRectAvg2D = (point2Ds: (Point2D | { x: number, y: number })[]): MinMaxCenterAvgDiff<Point2D> & { minMaxRect: Rect } => {\n const min = new Point2D(Number.MAX_SAFE_INTEGER, Number.MAX_SAFE_INTEGER);\n const max = new Point2D(Number.MIN_SAFE_INTEGER, Number.MIN_SAFE_INTEGER);\n let sum = new Point2D(0, 0);\n point2Ds.forEach((p) => {\n min.x = Math.min(min.x, p.x);\n min.y = Math.min(min.y, p.y);\n max.x = Math.max(max.x, p.x);\n max.y = Math.max(max.y, p.y);\n sum.x += p.x;\n sum.y += p.y;\n });\n const center = new Point2D((min.x + max.x) / 2, (min.y + max.y) / 2);\n const avg = new Point2D(sum.x / point2Ds.length, sum.y / point2Ds.length);\n const minMaxRect = new Rect(min.x, min.y, max.x - min.x, max.y - min.y);\n return {min, max, center, avg, minMaxRect};\n };\n\n\n export const minMaxCenterAvg3D = (point3Ds: (Point3D | { x: number, y: number, z: number })[]): MinMaxCenterAvgDiff<Point3D> => {\n const min = new Point3D(Number.MAX_VALUE, Number.MAX_VALUE, Number.MAX_VALUE);\n const max = new Point3D(Number.MIN_VALUE, Number.MIN_VALUE, Number.MIN_VALUE);\n let sum = new Point3D(0, 0, 0);\n point3Ds.forEach((p) => {\n min.x = Math.min(min.x, p.x);\n min.y = Math.min(min.y, p.y);\n min.z = Math.max(min.z, p.z);\n max.x = Math.max(max.x, p.x);\n max.y = Math.max(max.y, p.y);\n max.z = Math.max(max.z, p.y);\n sum.x += p.x;\n sum.y += p.y;\n sum.z += p.z;\n });\n const center = new Point3D((min.x + max.x) / 2, (min.y + max.y) / 2, (min.z + max.z) / 2);\n const avg = new Point3D(sum.x / point3Ds.length, sum.y / point3Ds.length, sum.z / point3Ds.length);\n return {min, max, center, avg};\n };\n\n export const roundRectRadiiToFullRadii = (radii?: [number] | [number, number] | [number, number, number] | [number, number, number, number]) => {\n if (!radii) {\n return [0, 0, 0, 0];\n }\n if (radii.length === 1) {\n return [radii[0] ?? 0, radii[0] ?? 0, radii[0] ?? 0, radii[0] ?? 0];\n } else if (radii.length === 2) {\n return [radii[0] ?? 0, radii[1] ?? 0, radii[0] ?? 0, radii[1] ?? 0];\n } else if (radii.length === 3) {\n return [radii[0] ?? 0, radii[1] ?? 0, radii[2] ?? 0, radii[1] ?? 0];\n } else {\n return radii;\n }\n };\n\n\n export const toArrayDirectionChange = <T>(array: T[][]) => {\n // \uC785\uB825 \uBC30\uC5F4\uC774 \uBE44\uC5B4\uC788\uAC70\uB098 \uCCAB \uBC88\uC9F8 \uD589\uC774 \uBE44\uC5B4\uC788\uC73C\uBA74 \uBE48 \uBC30\uC5F4 \uBC18\uD658\n if (!array || array.length === 0 || !array[0] || array[0].length === 0) {\n return [];\n }\n const result: T[][] = [];\n const numCols = array[0].length; // \uAE30\uC900 \uC5F4 \uAC1C\uC218 (\uCCAB \uD589 \uAE30\uC900)\n const numRows = array.length; // \uD589 \uAC1C\uC218\n\n for (let i = 0; i < numCols; i++) {\n const newRow: T[] = [];\n for (let j = 0; j < numRows; j++) {\n // \uB9CC\uC57D jagged array \uAC00\uB2A5\uC131\uC744 \uC5C4\uACA9\uD788 \uB2E4\uB8E8\uB824\uBA74 \uC5EC\uAE30\uC11C array[j].length > i \uC778\uC9C0 \uD655\uC778 \uD544\uC694\n // \uD558\uC9C0\uB9CC T[][] \uD0C0\uC785 \uC2DC\uADF8\uB2C8\uCC98\uB294 \uBCF4\uD1B5 rectangular array\uB97C \uAE30\uB300\uD568\n newRow.push(array[j][i]);\n }\n result.push(newRow);\n }\n return result;\n }\n\n // groupBy \uD568\uC218 \uAD6C\uD604\n export const groupByMap = <T, K>(array: T[], keySelector: (item: T) => K): Map<K, T[]> => {\n return array.reduce((map, item) => {\n const key = keySelector(item);\n const group = map.get(key) || [];\n group.push(item);\n map.set(key, group);\n return map;\n }, new Map<K, T[]>());\n }\n export const groupByObject = <T, K extends string | number | symbol>(\n array: T[],\n keySelector: (item: T) => K\n ): Record<K, T[]> => {\n// groupByMap \uD638\uCD9C\n const map = groupByMap(array, keySelector);\n // Map\uC744 Record\uB85C \uBCC0\uD658\n return Object.fromEntries(map) as Record<K, T[]>;\n }\n\n\n\n export const toURLSearchParams = (data: ToURLSearchParamsParams): URLSearchParams =>{\n const searchParams = new URLSearchParams();\n if (typeof data === 'string') {\n new URLSearchParams(data).forEach((value, key) => {\n searchParams.append(key, value);\n });\n } else if (typeof data === 'object') {\n const forTarget = data instanceof URLSearchParams ? data.entries() : (Array.isArray(data) ? data : Object.entries(data));\n for (const [k, v] of Array.from(forTarget)) {\n if (Array.isArray(v)) {\n v.forEach(it => searchParams.append(k, it));\n } else {\n searchParams.append(k, v as any);\n }\n }\n }\n return searchParams;\n }\n export const toRawQueryString = (data: ToURLSearchParamsParams, option?:{valueEncodeURIComponent?: boolean}): string => {\n const params = ConvertUtils.toURLSearchParams(data);\n const dataStr= Array.from(params.entries())\n .map(([k, v]) => {\n const j = `${k}=${option?.valueEncodeURIComponent? encodeURIComponent(v) : v}`;\n return j;\n })\n .join('&');\n return dataStr;\n }\n // export const RelativeHumanReadableTimeLabels = {\n // [IOS3166_1_Code.KOR]: {\n // justNow: '\uBC29\uAE08 \uC804',\n // minutesAgo: '\uBD84 \uC804',\n // hoursAgo: '\uC2DC\uAC04 \uC804',\n // daysAgo: '\uC77C \uC804',\n // }\n //\n // }\n // export type RelativeHumanReadableTimeLabel = {\n // justNow: string,\n // minutesAgo: string,\n // hoursAgo: string,\n // daysAgo: string,\n // };\n // export type RelativeHumanReadableTimeConfig = {\n // label: RelativeHumanReadableTimeLabel;\n // }\n // export const formatRelativeHumanReadableTime = (date: Date | string | number, config: RelativeHumanReadableTimeConfig): string => {\n // if (!(date instanceof Date)) {\n // date = new Date(date);\n // }\n // const now = new Date();\n // const diffMs = now.getTime() - date.getTime();\n // const diffMinutes = Math.floor(diffMs / (1000 * 60));\n // const diffHours = Math.floor(diffMinutes / 60);\n //\n // if (diffMinutes < 1) return config.label.justNow;\n // if (diffMinutes < 60) return `${diffMinutes}${config.label.minutesAgo}`;\n // if (diffHours < 24) return `${diffHours}${}`;\n // return `${Math.floor(diffHours / 24)}\uC77C \uC804`;\n // }\n\n /**\n * \uBB38\uC790\uC5F4 JSON\uC744 \uD0A4-\uAC12 \uC30D \uBC30\uC5F4\uB85C \uBCC0\uD658\uD569\uB2C8\uB2E4.\n *\n * @param {string} stringJson - JSON \uD615\uC2DD\uC758 \uBB38\uC790\uC5F4 (\uC608: \"{value: this.child.obj.name}\")\n * @return {Array<{ key: string, value: string }>} \uD0A4-\uAC12 \uC30D \uBC30\uC5F4\n */\n export const stringJsonToKeyPairs = (stringJson: string) => {\n return Array.from(stringJson.matchAll(/(\\w+):\\s*([^,}]+)/g)).map(match => ({key: match[1], value: match[2]}))\n }\n\n export const entriesToKeyPairs = <T>(o: T) => {\n return Object.entries(o).map(([key, value]) => ({key, value})) as {key: keyof T, value: T[keyof T]}[];\n }\n\n export const stringToBase64 = (str: string): string => {\n return btoa(str);\n }\n export const uint8ArrayToBase64 = (bytes: Uint8Array): string => {\n let binary = '';\n const len = bytes.byteLength;\n for (let i = 0; i < len; i++) {\n binary += String.fromCharCode(bytes[i]);\n }\n return btoa(binary);\n }\n export const base64ToString = (base64: string): string => {\n return atob(base64);\n }\n export const base64ToUint8Array = (base64: string): Uint8Array => {\n const binaryString = atob(base64);\n const len = binaryString.length;\n const bytes = new Uint8Array(len);\n for (let i = 0; i < len; i++) {\n bytes[i] = binaryString.charCodeAt(i);\n }\n return bytes;\n }\n // const formDataToFormDataEntryValueObj = <T = { [key: string]: FormDataEntryValue | FormDataEntryValue[] }>(\n // data: FormData | HTMLFormElement\n // ): T => {\n // if (typeof HTMLFormElement !== 'undefined' && data instanceof HTMLFormElement) {\n // data = new FormData(data);\n // }\n // const obj: any = {};\n // data.forEach((value, key) => {\n // if (Array.isArray(obj[key])) {\n // obj[key].push(value);\n // } else if (obj[key] !== undefined || !isNaN(obj[key])) {\n // obj[key] = [obj[key], value];\n // } else {\n // obj[key] = value;\n // }\n // });\n // return obj;\n // }\n\n}\n", "import { ValidUtils } from '../valid/ValidUtils';\n\nexport namespace RandomUtils {\n // export const readonly d = ''\n\n // export const getUniqueNumbers = (max: number, length: number) => {\n // max = Math.max(max, 0);\n // length = Math.max(Math.min(max, length), 0);\n // const array: number[] = [];\n // while (array.length < length) {\n // const num = Math.floor(Math.random() * max);\n // if (!array.includes(num)) array.push(num);\n // }\n // return array;\n // };\n\n export const uniqueInts = (min: number, max: number, count: number) => {\n const result: number[] = [];\n if (count > max - min) {\n throw new Error('Count is greater than the range of unique integers');\n }\n while (result.length < count) {\n const randomInt = RandomUtils.int(min, max);\n if (!result.includes(randomInt)) {\n result.push(randomInt);\n }\n }\n return result;\n }\n\n\n export const chance = (percentage: number): boolean => {\n if (percentage < 0 || percentage > 1) {\n throw new Error('Percentage must be between 0 and 1');\n }\n return Math.random() < percentage;\n };\n // max\uB294 \uD3EC\uD568\uD558\uC9C0 \uC54A\uC74C\n export const int = (min?: number, max?: number) => {\n return Math.floor(RandomUtils.float(min, max));\n }\n\n // ex) 0,5 0~<5 <5\uB294 \uD3EC\uD568\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. \uC18C\uC218\uC810\uD3EC\uD568\n export const float = (min?: number, max?: number) => {\n if (ValidUtils.isNullOrUndefined(min)) {\n return Math.random();\n } else if (!ValidUtils.isNullOrUndefined(min) && ValidUtils.isNullOrUndefined(max)) {\n return Math.random() * (min || 0);\n } else {\n return Math.random() * ((max || 0) - (min || 0)) + (min || 0);\n }\n };\n\n export const uuid = (format: string = 'xxxx-xxxx-xxxx-xxxx'): string => {\n return format.replace(/[xy]/g, function(c) {\n const r = Math.random() * 16 | 0;\n const v = c === 'x' ? r : (r & 0x3 | 0x8);\n return v.toString(16);\n });\n };\n\n\n export const uuid4 = (): string => {\n // // return uuid of form xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\n let uuid = '';\n let ii;\n for (ii = 0; ii < 32; ii += 1) {\n switch (ii) {\n case 8:\n case 20:\n uuid += '-';\n uuid += ((Math.random() * 16) | 0).toString(16);\n break;\n case 12:\n uuid += '-';\n uuid += '4';\n break;\n case 16:\n uuid += '-';\n uuid += ((Math.random() * 4) | 8).toString(16);\n break;\n default:\n uuid += ((Math.random() * 16) | 0).toString(16);\n }\n }\n return uuid;\n };\n\n export const hex = (): string => {\n const letters = '0123456789ABCDEF'.split('');\n let hex = '';\n for (let i = 0; i < 6; i++) {\n hex += letters[Math.floor(Math.random() * 16)];\n }\n return hex;\n };\n\n\n export const rgb = (): string => {\n const letters = '0123456789ABCDEF'.split('');\n let color = '#';\n for (let i = 0; i < 6; i++) {\n color += letters[Math.floor(Math.random() * 16)];\n }\n return color;\n };\n\n export const rgba = (): string => {\n const letters = '0123456789ABCDEF'.split('');\n let color = '#';\n for (let i = 0; i < 8; i++) {\n color += letters[Math.floor(Math.random() * 16)];\n }\n return color;\n };\n // (Math.random().toString(36)+'00000000000000000').slice(2, 10) + Date.now()\n\n export const alphabet = (len: number): string => {\n const letters = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'.split('');\n let color = '';\n for (let i = 0; i < len; i++) {\n color += letters[Math.floor(Math.random() * letters.length)];\n }\n return color;\n };\n}\n", "import { Unsubscribable } from './Unsubscribable';\n\nexport interface SubscriptionLike extends Unsubscribable {\n unsubscribe(): void;\n readonly closed: boolean;\n}\n\nexport class Subscription implements SubscriptionLike {\n public static EMPTY: Subscription = (function (empty: any) {\n empty.closed = true;\n return empty;\n })(new Subscription());\n\n public closed = false;\n private _teardowns: (Unsubscribable | (() => void))[] | null = null;\n\n constructor(initialTeardown?: () => void) {\n if (initialTeardown) {\n this.add(initialTeardown);\n }\n }\n\n unsubscribe(): void {\n if (this.closed) {\n return;\n }\n this.closed = true;\n const teardowns = this._teardowns;\n this._teardowns = null;\n\n if (teardowns) {\n let errors: any[] | null = null;\n teardowns.forEach(teardown => {\n try {\n if (typeof teardown === 'function') {\n teardown();\n } else if (teardown && typeof (teardown as any).unsubscribe === 'function') {\n (teardown as any).unsubscribe();\n }\n } catch (e) {\n errors = errors || [];\n errors.push(e);\n }\n });\n if (errors) {\n throw new Error(errors.map(e => e.message).join('\\n'));\n }\n }\n }\n\n add(teardown: Unsubscribable | Function | void): void {\n if (!teardown) {\n return;\n }\n let teardownToAdd: Unsubscribable | (() => void);\n if (typeof teardown === 'function') {\n teardownToAdd = teardown as () => void;\n } else if (typeof teardown === 'object' && teardown !== null && typeof (teardown as any).unsubscribe === 'function') {\n teardownToAdd = teardown as Unsubscribable;\n } else {\n return;\n }\n\n if (this.closed) {\n if (typeof teardownToAdd === 'function') {\n teardownToAdd();\n } else {\n teardownToAdd.unsubscribe();\n }\n } else {\n if (!this._teardowns) {\n this._teardowns = [];\n }\n this._teardowns.push(teardownToAdd);\n }\n }\n\n remove(teardown: Unsubscribable | Function | void): void {\n const teardowns = this._teardowns;\n if (!teardowns || !teardown) {\n return;\n }\n const index = teardowns.indexOf(teardown as any);\n if (index !== -1) {\n teardowns.splice(index, 1);\n }\n }\n}\n", "import { Subscription } from './Subscription';\nimport { Observer } from './Observer';\n\nexport class Subscriber<T, E = any> extends Subscription implements Observer<T, E> {\n constructor(private destination: Observer<T, E>) {\n super();\n }\n next(value: T): void {\n if (this.closed) {\n return;\n }\n this.destination.next(value);\n }\n error(err: E): void {\n if (this.closed) {\n return;\n }\n this.closed = true;\n this.destination.error(err);\n this.unsubscribe();\n }\n complete(): void {\n if (this.closed) {\n return;\n }\n this.closed = true;\n this.destination.complete();\n this.unsubscribe();\n }\n}\n", "import { Subscription } from './Subscription';\nimport { CompleteCallBack, ErrorCallBack, ObserverCallBack, Subscribable } from './Subscribable';\nimport { Observer } from './Observer';\nimport { Subscriber } from './Subscriber';\n\nexport type OperatorFunction<T, R> = (source: Observable<T>) => Observable<R>;\n\nexport class Observable<T, E = any> implements Subscribable<T, E> {\n private _producerFunction: ((subscriber: Subscriber<T, E>) => Subscription | (() => void) | void) | undefined;\n\n constructor(producerFunction?: (subscriber: Subscriber<T, E>) => Subscription | (() => void) | void) {\n this._producerFunction = producerFunction;\n }\n\n subscribe(d: ObserverCallBack<T>): Subscription;\n subscribe(d: ObserverCallBack<T>, e?: ErrorCallBack, c?: CompleteCallBack): Subscription;\n subscribe(observer: Partial<Observer<T, E>>): Subscription;\n subscribe(observer: Partial<Observer<T, E>> | ObserverCallBack<T>, e?: ErrorCallBack, c?: CompleteCallBack): Subscription {\n /*\n const observer = observerOrNext;\n\n const partialObserver: Partial<Observer<T, E>> = typeof observer === 'function'\n ? {\n next: observer,\n error: error,\n complete: complete\n }\n : {\n next: observer.next,\n error: observer.error,\n complete: observer.complete\n };\n */\n const partialObserver: Partial<Observer<T, E>> = {\n next: typeof observer === 'object' ? observer.next : observer,\n error: typeof observer === 'object' ? observer.error : e,\n complete: typeof observer === 'object' ? observer.complete : c\n };\n\n // Create a new internal subscriber for this specific subscription\n const internalSubscriber = new Subscriber({\n next: (data: T) => {\n partialObserver.next?.(data);\n },\n error: (e: E) => {\n partialObserver.error?.(e);\n },\n complete: () => {\n partialObserver.complete?.();\n }\n });\n\n if (this._producerFunction) {\n const teardownLogic = this._producerFunction(internalSubscriber);\n if (teardownLogic) {\n internalSubscriber.add(teardownLogic);\n }\n }\n\n return internalSubscriber;\n }\n\n // complete \uB418\uC57C\uC9C0\uB9CC \uB9C8\uC9C0\uB9C9 \uCC98\uB9AC\uB41C\uB2E4!\n toPromise(): Promise<T | undefined> {\n return new Promise((resolve, reject) => {\n let lastValue: T | undefined;\n let subscription: Subscription;\n\n subscription = this.subscribe({\n next: (value: T) => {\n lastValue = value;\n },\n error: (err: E) => {\n reject(err);\n subscription.unsubscribe();\n },\n complete: () => {\n resolve(lastValue);\n subscription.unsubscribe();\n }\n });\n });\n }\n\n pipe(): Observable<T, E>;\n pipe<A>(op1: OperatorFunction<T, A>): Observable<A, any>;\n pipe<A, B>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>): Observable<B, any>;\n pipe<A, B, C>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>): Observable<C, any>;\n pipe<A, B, C, D>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>): Observable<D, any>;\n pipe<A, B, C, D, E>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>): Observable<E, any>;\n pipe<A, B, C, D, E, F>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>): Observable<F, any>;\n pipe<A, B, C, D, E, F, G>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>): Observable<G, any>;\n pipe<A, B, C, D, E, F, G, H>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>): Observable<H, any>;\n pipe<A, B, C, D, E, F, G, H, I>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>): Observable<I, any>;\n pipe<A, B, C, D, E, F, G, H, I, J>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>): Observable<J, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>): Observable<K, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>): Observable<L, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>): Observable<M, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>): Observable<N, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>): Observable<O, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>): Observable<P, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>, op17: OperatorFunction<P, Q>): Observable<Q, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>, op17: OperatorFunction<P, Q>, op18: OperatorFunction<Q, R>): Observable<R, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>, op17: OperatorFunction<P, Q>, op18: OperatorFunction<Q, R>, op19: OperatorFunction<R, S>): Observable<S, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>, op17: OperatorFunction<P, Q>, op18: OperatorFunction<Q, R>, op19: OperatorFunction<R, S>, op20: OperatorFunction<S, U>): Observable<U, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>, op17: OperatorFunction<P, Q>, op18: OperatorFunction<Q, R>, op19: OperatorFunction<R, S>, op20: OperatorFunction<S, U>, op21: OperatorFunction<U, V>): Observable<V, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>, op17: OperatorFunction<P, Q>, op18: OperatorFunction<Q, R>, op19: OperatorFunction<R, S>, op20: OperatorFunction<S, U>, op21: OperatorFunction<U, V>, op22: OperatorFunction<V, W>): Observable<W, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>, op17: OperatorFunction<P, Q>, op18: OperatorFunction<Q, R>, op19: OperatorFunction<R, S>, op20: OperatorFunction<S, U>, op21: OperatorFunction<U, V>, op22: OperatorFunction<V, W>, op23: OperatorFunction<W, X>): Observable<X, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>, op17: OperatorFunction<P, Q>, op18: OperatorFunction<Q, R>, op19: OperatorFunction<R, S>, op20: OperatorFunction<S, U>, op21: OperatorFunction<U, V>, op22: OperatorFunction<V, W>, op23: OperatorFunction<W, X>, op24: OperatorFunction<X, Y>): Observable<Y, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>, op17: OperatorFunction<P, Q>, op18: OperatorFunction<Q, R>, op19: OperatorFunction<R, S>, op20: OperatorFunction<S, U>, op21: OperatorFunction<U, V>, op22: OperatorFunction<V, W>, op23: OperatorFunction<W, X>, op24: OperatorFunction<X, Y>, op25: OperatorFunction<Y, Z>): Observable<Z, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>, op17: OperatorFunction<P, Q>, op18: OperatorFunction<Q, R>, op19: OperatorFunction<R, S>, op20: OperatorFunction<S, U>, op21: OperatorFunction<U, V>, op22: OperatorFunction<V, W>, op23: OperatorFunction<W, X>, op24: OperatorFunction<X, Y>, op25: OperatorFunction<Y, Z>, op26: OperatorFunction<Z, AA>): Observable<AA, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>, op17: OperatorFunction<P, Q>, op18: OperatorFunction<Q, R>, op19: OperatorFunction<R, S>, op20: OperatorFunction<S, U>, op21: OperatorFunction<U, V>, op22: OperatorFunction<V, W>, op23: OperatorFunction<W, X>, op24: OperatorFunction<X, Y>, op25: OperatorFunction<Y, Z>, op26: OperatorFunction<Z, AA>, op27: OperatorFunction<AA, AB>): Observable<AB, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>, op17: OperatorFunction<P, Q>, op18: OperatorFunction<Q, R>, op19: OperatorFunction<R, S>, op20: OperatorFunction<S, U>, op21: OperatorFunction<U, V>, op22: OperatorFunction<V, W>, op23: OperatorFunction<W, X>, op24: OperatorFunction<X, Y>, op25: OperatorFunction<Y, Z>, op26: OperatorFunction<Z, AA>, op27: OperatorFunction<AA, AB>, op28: OperatorFunction<AB, AC>): Observable<AC, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>, op17: OperatorFunction<P, Q>, op18: OperatorFunction<Q, R>, op19: OperatorFunction<R, S>, op20: OperatorFunction<S, U>, op21: OperatorFunction<U, V>, op22: OperatorFunction<V, W>, op23: OperatorFunction<W, X>, op24: OperatorFunction<X, Y>, op25: OperatorFunction<Y, Z>, op26: OperatorFunction<Z, AA>, op27: OperatorFunction<AA, AB>, op28: OperatorFunction<AB, AC>, op29: OperatorFunction<AC, AD>): Observable<AD, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>, op17: OperatorFunction<P, Q>, op18: OperatorFunction<Q, R>, op19: OperatorFunction<R, S>, op20: OperatorFunction<S, U>, op21: OperatorFunction<U, V>, op22: OperatorFunction<V, W>, op23: OperatorFunction<W, X>, op24: OperatorFunction<X, Y>, op25: OperatorFunction<Y, Z>, op26: OperatorFunction<Z, AA>, op27: OperatorFunction<AA, AB>, op28: OperatorFunction<AB, AC>, op29: OperatorFunction<AC, AD>, op30: OperatorFunction<AD, AE>): Observable<AE, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF>(\n op1: OperatorFunction<T, A>,\n op2: OperatorFunction<A, B>,\n op3: OperatorFunction<B, C>,\n op4: OperatorFunction<C, D>,\n op5: OperatorFunction<D, E>,\n op6: OperatorFunction<E, F>,\n op7: OperatorFunction<F, G>,\n op8: OperatorFunction<G, H>,\n op9: OperatorFunction<H, I>,\n op10: OperatorFunction<I, J>,\n op11: OperatorFunction<J, K>,\n op12: OperatorFunction<K, L>,\n op13: OperatorFunction<L, M>,\n op14: OperatorFunction<M, N>,\n op15: OperatorFunction<N, O>,\n op16: OperatorFunction<O, P>,\n op17: OperatorFunction<P, Q>,\n op18: OperatorFunction<Q, R>,\n op19: OperatorFunction<R, S>,\n op20: OperatorFunction<S, U>,\n op21: OperatorFunction<U, V>,\n op22: OperatorFunction<V, W>,\n op23: OperatorFunction<W, X>,\n op24: OperatorFunction<X, Y>,\n op25: OperatorFunction<Y, Z>,\n op26: OperatorFunction<Z, AA>,\n op27: OperatorFunction<AA, AB>,\n op28: OperatorFunction<AB, AC>,\n op29: OperatorFunction<AC, AD>,\n op30: OperatorFunction<AD, AE>,\n op31: OperatorFunction<AE, AF>\n ): Observable<AF, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG>(\n op1: OperatorFunction<T, A>,\n op2: OperatorFunction<A, B>,\n op3: OperatorFunction<B, C>,\n op4: OperatorFunction<C, D>,\n op5: OperatorFunction<D, E>,\n op6: OperatorFunction<E, F>,\n op7: OperatorFunction<F, G>,\n op8: OperatorFunction<G, H>,\n op9: OperatorFunction<H, I>,\n op10: OperatorFunction<I, J>,\n op11: OperatorFunction<J, K>,\n op12: OperatorFunction<K, L>,\n op13: OperatorFunction<L, M>,\n op14: OperatorFunction<M, N>,\n op15: OperatorFunction<N, O>,\n op16: OperatorFunction<O, P>,\n op17: OperatorFunction<P, Q>,\n op18: OperatorFunction<Q, R>,\n op19: OperatorFunction<R, S>,\n op20: OperatorFunction<S, U>,\n op21: OperatorFunction<U, V>,\n op22: OperatorFunction<V, W>,\n op23: OperatorFunction<W, X>,\n op24: OperatorFunction<X, Y>,\n op25: OperatorFunction<Y, Z>,\n op26: OperatorFunction<Z, AA>,\n op27: OperatorFunction<AA, AB>,\n op28: OperatorFunction<AB, AC>,\n op29: OperatorFunction<AC, AD>,\n op30: OperatorFunction<AD, AE>,\n op31: OperatorFunction<AE, AF>,\n op32: OperatorFunction<AF, AG>\n ): Observable<AG, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH>(\n op1: OperatorFunction<T, A>,\n op2: OperatorFunction<A, B>,\n op3: OperatorFunction<B, C>,\n op4: OperatorFunction<C, D>,\n op5: OperatorFunction<D, E>,\n op6: OperatorFunction<E, F>,\n op7: OperatorFunction<F, G>,\n op8: OperatorFunction<G, H>,\n op9: OperatorFunction<H, I>,\n op10: OperatorFunction<I, J>,\n op11: OperatorFunction<J, K>,\n op12: OperatorFunction<K, L>,\n op13: OperatorFunction<L, M>,\n op14: OperatorFunction<M, N>,\n op15: OperatorFunction<N, O>,\n op16: OperatorFunction<O, P>,\n op17: OperatorFunction<P, Q>,\n op18: OperatorFunction<Q, R>,\n op19: OperatorFunction<R, S>,\n op20: OperatorFunction<S, U>,\n op21: OperatorFunction<U, V>,\n op22: OperatorFunction<V, W>,\n op23: OperatorFunction<W, X>,\n op24: OperatorFunction<X, Y>,\n op25: OperatorFunction<Y, Z>,\n op26: OperatorFunction<Z, AA>,\n op27: OperatorFunction<AA, AB>,\n op28: OperatorFunction<AB, AC>,\n op29: OperatorFunction<AC, AD>,\n op30: OperatorFunction<AD, AE>,\n op31: OperatorFunction<AE, AF>,\n op32: OperatorFunction<AF, AG>,\n op33: OperatorFunction<AG, AH>\n ): Observable<AH, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI>(\n op1: OperatorFunction<T, A>,\n op2: OperatorFunction<A, B>,\n op3: OperatorFunction<B, C>,\n op4: OperatorFunction<C, D>,\n op5: OperatorFunction<D, E>,\n op6: OperatorFunction<E, F>,\n op7: OperatorFunction<F, G>,\n op8: OperatorFunction<G, H>,\n op9: OperatorFunction<H, I>,\n op10: OperatorFunction<I, J>,\n op11: OperatorFunction<J, K>,\n op12: OperatorFunction<K, L>,\n op13: OperatorFunction<L, M>,\n op14: OperatorFunction<M, N>,\n op15: OperatorFunction<N, O>,\n op16: OperatorFunction<O, P>,\n op17: OperatorFunction<P, Q>,\n op18: OperatorFunction<Q, R>,\n op19: OperatorFunction<R, S>,\n op20: OperatorFunction<S, U>,\n op21: OperatorFunction<U, V>,\n op22: OperatorFunction<V, W>,\n op23: OperatorFunction<W, X>,\n op24: OperatorFunction<X, Y>,\n op25: OperatorFunction<Y, Z>,\n op26: OperatorFunction<Z, AA>,\n op27: OperatorFunction<AA, AB>,\n op28: OperatorFunction<AB, AC>,\n op29: OperatorFunction<AC, AD>,\n op30: OperatorFunction<AD, AE>,\n op31: OperatorFunction<AE, AF>,\n op32: OperatorFunction<AF, AG>,\n op33: OperatorFunction<AG, AH>,\n op34: OperatorFunction<AH, AI>\n ): Observable<AI, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ>(\n op1: OperatorFunction<T, A>,\n op2: OperatorFunction<A, B>,\n op3: OperatorFunction<B, C>,\n op4: OperatorFunction<C, D>,\n op5: OperatorFunction<D, E>,\n op6: OperatorFunction<E, F>,\n op7: OperatorFunction<F, G>,\n op8: OperatorFunction<G, H>,\n op9: OperatorFunction<H, I>,\n op10: OperatorFunction<I, J>,\n op11: OperatorFunction<J, K>,\n op12: OperatorFunction<K, L>,\n op13: OperatorFunction<L, M>,\n op14: OperatorFunction<M, N>,\n op15: OperatorFunction<N, O>,\n op16: OperatorFunction<O, P>,\n op17: OperatorFunction<P, Q>,\n op18: OperatorFunction<Q, R>,\n op19: OperatorFunction<R, S>,\n op20: OperatorFunction<S, U>,\n op21: OperatorFunction<U, V>,\n op22: OperatorFunction<V, W>,\n op23: OperatorFunction<W, X>,\n op24: OperatorFunction<X, Y>,\n op25: OperatorFunction<Y, Z>,\n op26: OperatorFunction<Z, AA>,\n op27: OperatorFunction<AA, AB>,\n op28: OperatorFunction<AB, AC>,\n op29: OperatorFunction<AC, AD>,\n op30: OperatorFunction<AD, AE>,\n op31: OperatorFunction<AE, AF>,\n op32: OperatorFunction<AF, AG>,\n op33: OperatorFunction<AG, AH>,\n op34: OperatorFunction<AH, AI>,\n op35: OperatorFunction<AI, AJ>\n ): Observable<AJ, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ, AK>(\n op1: OperatorFunction<T, A>,\n op2: OperatorFunction<A, B>,\n op3: OperatorFunction<B, C>,\n op4: OperatorFunction<C, D>,\n op5: OperatorFunction<D, E>,\n op6: OperatorFunction<E, F>,\n op7: OperatorFunction<F, G>,\n op8: OperatorFunction<G, H>,\n op9: OperatorFunction<H, I>,\n op10: OperatorFunction<I, J>,\n op11: OperatorFunction<J, K>,\n op12: OperatorFunction<K, L>,\n op13: OperatorFunction<L, M>,\n op14: OperatorFunction<M, N>,\n op15: OperatorFunction<N, O>,\n op16: OperatorFunction<O, P>,\n op17: OperatorFunction<P, Q>,\n op18: OperatorFunction<Q, R>,\n op19: OperatorFunction<R, S>,\n op20: OperatorFunction<S, U>,\n op21: OperatorFunction<U, V>,\n op22: OperatorFunction<V, W>,\n op23: OperatorFunction<W, X>,\n op24: OperatorFunction<X, Y>,\n op25: OperatorFunction<Y, Z>,\n op26: OperatorFunction<Z, AA>,\n op27: OperatorFunction<AA, AB>,\n op28: OperatorFunction<AB, AC>,\n op29: OperatorFunction<AC, AD>,\n op30: OperatorFunction<AD, AE>,\n op31: OperatorFunction<AE, AF>,\n op32: OperatorFunction<AF, AG>,\n op33: OperatorFunction<AG, AH>,\n op34: OperatorFunction<AH, AI>,\n op35: OperatorFunction<AI, AJ>,\n op36: OperatorFunction<AJ, AK>\n ): Observable<AK, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ, AK, AL>(\n op1: OperatorFunction<T, A>,\n op2: OperatorFunction<A, B>,\n op3: OperatorFunction<B, C>,\n op4: OperatorFunction<C, D>,\n op5: OperatorFunction<D, E>,\n op6: OperatorFunction<E, F>,\n op7: OperatorFunction<F, G>,\n op8: OperatorFunction<G, H>,\n op9: OperatorFunction<H, I>,\n op10: OperatorFunction<I, J>,\n op11: OperatorFunction<J, K>,\n op12: OperatorFunction<K, L>,\n op13: OperatorFunction<L, M>,\n op14: OperatorFunction<M, N>,\n op15: OperatorFunction<N, O>,\n op16: OperatorFunction<O, P>,\n op17: OperatorFunction<P, Q>,\n op18: OperatorFunction<Q, R>,\n op19: OperatorFunction<R, S>,\n op20: OperatorFunction<S, U>,\n op21: OperatorFunction<U, V>,\n op22: OperatorFunction<V, W>,\n op23: OperatorFunction<W, X>,\n op24: OperatorFunction<X, Y>,\n op25: OperatorFunction<Y, Z>,\n op26: OperatorFunction<Z, AA>,\n op27: OperatorFunction<AA, AB>,\n op28: OperatorFunction<AB, AC>,\n op29: OperatorFunction<AC, AD>,\n op30: OperatorFunction<AD, AE>,\n op31: OperatorFunction<AE, AF>,\n op32: OperatorFunction<AF, AG>,\n op33: OperatorFunction<AG, AH>,\n op34: OperatorFunction<AH, AI>,\n op35: OperatorFunction<AI, AJ>,\n op36: OperatorFunction<AJ, AK>,\n op37: OperatorFunction<AK, AL>\n ): Observable<AL, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ, AK, AL, AM>(\n op1: OperatorFunction<T, A>,\n op2: OperatorFunction<A, B>,\n op3: OperatorFunction<B, C>,\n op4: OperatorFunction<C, D>,\n op5: OperatorFunction<D, E>,\n op6: OperatorFunction<E, F>,\n op7: OperatorFunction<F, G>,\n op8: OperatorFunction<G, H>,\n op9: OperatorFunction<H, I>,\n op10: OperatorFunction<I, J>,\n op11: OperatorFunction<J, K>,\n op12: OperatorFunction<K, L>,\n op13: OperatorFunction<L, M>,\n op14: OperatorFunction<M, N>,\n op15: OperatorFunction<N, O>,\n op16: OperatorFunction<O, P>,\n op17: OperatorFunction<P, Q>,\n op18: OperatorFunction<Q, R>,\n op19: OperatorFunction<R, S>,\n op20: OperatorFunction<S, U>,\n op21: OperatorFunction<U, V>,\n op22: OperatorFunction<V, W>,\n op23: OperatorFunction<W, X>,\n op24: OperatorFunction<X, Y>,\n op25: OperatorFunction<Y, Z>,\n op26: OperatorFunction<Z, AA>,\n op27: OperatorFunction<AA, AB>,\n op28: OperatorFunction<AB, AC>,\n op29: OperatorFunction<AC, AD>,\n op30: OperatorFunction<AD, AE>,\n op31: OperatorFunction<AE, AF>,\n op32: OperatorFunction<AF, AG>,\n op33: OperatorFunction<AG, AH>,\n op34: OperatorFunction<AH, AI>,\n op35: OperatorFunction<AI, AJ>,\n op36: OperatorFunction<AJ, AK>,\n op37: OperatorFunction<AK, AL>,\n op38: OperatorFunction<AL, AM>\n ): Observable<AM, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ, AK, AL, AM, AN>(\n op1: OperatorFunction<T, A>,\n op2: OperatorFunction<A, B>,\n op3: OperatorFunction<B, C>,\n op4: OperatorFunction<C, D>,\n op5: OperatorFunction<D, E>,\n op6: OperatorFunction<E, F>,\n op7: OperatorFunction<F, G>,\n op8: OperatorFunction<G, H>,\n op9: OperatorFunction<H, I>,\n op10: OperatorFunction<I, J>,\n op11: OperatorFunction<J, K>,\n op12: OperatorFunction<K, L>,\n op13: OperatorFunction<L, M>,\n op14: OperatorFunction<M, N>,\n op15: OperatorFunction<N, O>,\n op16: OperatorFunction<O, P>,\n op17: OperatorFunction<P, Q>,\n op18: OperatorFunction<Q, R>,\n op19: OperatorFunction<R, S>,\n op20: OperatorFunction<S, U>,\n op21: OperatorFunction<U, V>,\n op22: OperatorFunction<V, W>,\n op23: OperatorFunction<W, X>,\n op24: OperatorFunction<X, Y>,\n op25: OperatorFunction<Y, Z>,\n op26: OperatorFunction<Z, AA>,\n op27: OperatorFunction<AA, AB>,\n op28: OperatorFunction<AB, AC>,\n op29: OperatorFunction<AC, AD>,\n op30: OperatorFunction<AD, AE>,\n op31: OperatorFunction<AE, AF>,\n op32: OperatorFunction<AF, AG>,\n op33: OperatorFunction<AG, AH>,\n op34: OperatorFunction<AH, AI>,\n op35: OperatorFunction<AI, AJ>,\n op36: OperatorFunction<AJ, AK>,\n op37: OperatorFunction<AK, AL>,\n op38: OperatorFunction<AL, AM>,\n op39: OperatorFunction<AM, AN>\n ): Observable<AN, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ, AK, AL, AM, AN, AO>(\n op1: OperatorFunction<T, A>,\n op2: OperatorFunction<A, B>,\n op3: OperatorFunction<B, C>,\n op4: OperatorFunction<C, D>,\n op5: OperatorFunction<D, E>,\n op6: OperatorFunction<E, F>,\n op7: OperatorFunction<F, G>,\n op8: OperatorFunction<G, H>,\n op9: OperatorFunction<H, I>,\n op10: OperatorFunction<I, J>,\n op11: OperatorFunction<J, K>,\n op12: OperatorFunction<K, L>,\n op13: OperatorFunction<L, M>,\n op14: OperatorFunction<M, N>,\n op15: OperatorFunction<N, O>,\n op16: OperatorFunction<O, P>,\n op17: OperatorFunction<P, Q>,\n op18: OperatorFunction<Q, R>,\n op19: OperatorFunction<R, S>,\n op20: OperatorFunction<S, U>,\n op21: OperatorFunction<U, V>,\n op22: OperatorFunction<V, W>,\n op23: OperatorFunction<W, X>,\n op24: OperatorFunction<X, Y>,\n op25: OperatorFunction<Y, Z>,\n op26: OperatorFunction<Z, AA>,\n op27: OperatorFunction<AA, AB>,\n op28: OperatorFunction<AB, AC>,\n op29: OperatorFunction<AC, AD>,\n op30: OperatorFunction<AD, AE>,\n op31: OperatorFunction<AE, AF>,\n op32: OperatorFunction<AF, AG>,\n op33: OperatorFunction<AG, AH>,\n op34: OperatorFunction<AH, AI>,\n op35: OperatorFunction<AI, AJ>,\n op36: OperatorFunction<AJ, AK>,\n op37: OperatorFunction<AK, AL>,\n op38: OperatorFunction<AL, AM>,\n op39: OperatorFunction<AM, AN>,\n op40: OperatorFunction<AN, AO>\n ): Observable<AO, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ, AK, AL, AM, AN, AO, AP>(\n op1: OperatorFunction<T, A>,\n op2: OperatorFunction<A, B>,\n op3: OperatorFunction<B, C>,\n op4: OperatorFunction<C, D>,\n op5: OperatorFunction<D, E>,\n op6: OperatorFunction<E, F>,\n op7: OperatorFunction<F, G>,\n op8: OperatorFunction<G, H>,\n op9: OperatorFunction<H, I>,\n op10: OperatorFunction<I, J>,\n op11: OperatorFunction<J, K>,\n op12: OperatorFunction<K, L>,\n op13: OperatorFunction<L, M>,\n op14: OperatorFunction<M, N>,\n op15: OperatorFunction<N, O>,\n op16: OperatorFunction<O, P>,\n op17: OperatorFunction<P, Q>,\n op18: OperatorFunction<Q, R>,\n op19: OperatorFunction<R, S>,\n op20: OperatorFunction<S, U>,\n op21: OperatorFunction<U, V>,\n op22: OperatorFunction<V, W>,\n op23: OperatorFunction<W, X>,\n op24: OperatorFunction<X, Y>,\n op25: OperatorFunction<Y, Z>,\n op26: OperatorFunction<Z, AA>,\n op27: OperatorFunction<AA, AB>,\n op28: OperatorFunction<AB, AC>,\n op29: OperatorFunction<AC, AD>,\n op30: OperatorFunction<AD, AE>,\n op31: OperatorFunction<AE, AF>,\n op32: OperatorFunction<AF, AG>,\n op33: OperatorFunction<AG, AH>,\n op34: OperatorFunction<AH, AI>,\n op35: OperatorFunction<AI, AJ>,\n op36: OperatorFunction<AJ, AK>,\n op37: OperatorFunction<AK, AL>,\n op38: OperatorFunction<AL, AM>,\n op39: OperatorFunction<AM, AN>,\n op40: OperatorFunction<AN, AO>,\n op41: OperatorFunction<AO, AP>\n ): Observable<AP, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ, AK, AL, AM, AN, AO, AP, AQ>(\n op1: OperatorFunction<T, A>,\n op2: OperatorFunction<A, B>,\n op3: OperatorFunction<B, C>,\n op4: OperatorFunction<C, D>,\n op5: OperatorFunction<D, E>,\n op6: OperatorFunction<E, F>,\n op7: OperatorFunction<F, G>,\n op8: OperatorFunction<G, H>,\n op9: OperatorFunction<H, I>,\n op10: OperatorFunction<I, J>,\n op11: OperatorFunction<J, K>,\n op12: OperatorFunction<K, L>,\n op13: OperatorFunction<L, M>,\n op14: OperatorFunction<M, N>,\n op15: OperatorFunction<N, O>,\n op16: OperatorFunction<O, P>,\n op17: OperatorFunction<P, Q>,\n op18: OperatorFunction<Q, R>,\n op19: OperatorFunction<R, S>,\n op20: OperatorFunction<S, U>,\n op21: OperatorFunction<U, V>,\n op22: OperatorFunction<V, W>,\n op23: OperatorFunction<W, X>,\n op24: OperatorFunction<X, Y>,\n op25: OperatorFunction<Y, Z>,\n op26: OperatorFunction<Z, AA>,\n op27: OperatorFunction<AA, AB>,\n op28: OperatorFunction<AB, AC>,\n op29: OperatorFunction<AC, AD>,\n op30: OperatorFunction<AD, AE>,\n op31: OperatorFunction<AE, AF>,\n op32: OperatorFunction<AF, AG>,\n op33: OperatorFunction<AG, AH>,\n op34: OperatorFunction<AH, AI>,\n op35: OperatorFunction<AI, AJ>,\n op36: OperatorFunction<AJ, AK>,\n op37: OperatorFunction<AK, AL>,\n op38: OperatorFunction<AL, AM>,\n op39: OperatorFunction<AM, AN>,\n op40: OperatorFunction<AN, AO>,\n op41: OperatorFunction<AO, AP>,\n op42: OperatorFunction<AP, AQ>\n ): Observable<AQ, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ, AK, AL, AM, AN, AO, AP, AQ, AR>(\n op1: OperatorFunction<T, A>,\n op2: OperatorFunction<A, B>,\n op3: OperatorFunction<B, C>,\n op4: OperatorFunction<C, D>,\n op5: OperatorFunction<D, E>,\n op6: OperatorFunction<E, F>,\n op7: OperatorFunction<F, G>,\n op8: OperatorFunction<G, H>,\n op9: OperatorFunction<H, I>,\n op10: OperatorFunction<I, J>,\n op11: OperatorFunction<J, K>,\n op12: OperatorFunction<K, L>,\n op13: OperatorFunction<L, M>,\n op14: OperatorFunction<M, N>,\n op15: OperatorFunction<N, O>,\n op16: OperatorFunction<O, P>,\n op17: OperatorFunction<P, Q>,\n op18: OperatorFunction<Q, R>,\n op19: OperatorFunction<R, S>,\n op20: OperatorFunction<S, U>,\n op21: OperatorFunction<U, V>,\n op22: OperatorFunction<V, W>,\n op23: OperatorFunction<W, X>,\n op24: OperatorFunction<X, Y>,\n op25: OperatorFunction<Y, Z>,\n op26: OperatorFunction<Z, AA>,\n op27: OperatorFunction<AA, AB>,\n op28: OperatorFunction<AB, AC>,\n op29: OperatorFunction<AC, AD>,\n op30: OperatorFunction<AD, AE>,\n op31: OperatorFunction<AE, AF>,\n op32: OperatorFunction<AF, AG>,\n op33: OperatorFunction<AG, AH>,\n op34: OperatorFunction<AH, AI>,\n op35: OperatorFunction<AI, AJ>,\n op36: OperatorFunction<AJ, AK>,\n op37: OperatorFunction<AK, AL>,\n op38: OperatorFunction<AL, AM>,\n op39: OperatorFunction<AM, AN>,\n op40: OperatorFunction<AN, AO>,\n op41: OperatorFunction<AO, AP>,\n op42: OperatorFunction<AP, AQ>,\n op43: OperatorFunction<AQ, AR>\n ): Observable<AR, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ, AK, AL, AM, AN, AO, AP, AQ, AR, AS>(\n op1: OperatorFunction<T, A>,\n op2: OperatorFunction<A, B>,\n op3: OperatorFunction<B, C>,\n op4: OperatorFunction<C, D>,\n op5: OperatorFunction<D, E>,\n op6: OperatorFunction<E, F>,\n op7: OperatorFunction<F, G>,\n op8: OperatorFunction<G, H>,\n op9: OperatorFunction<H, I>,\n op10: OperatorFunction<I, J>,\n op11: OperatorFunction<J, K>,\n op12: OperatorFunction<K, L>,\n op13: OperatorFunction<L, M>,\n op14: OperatorFunction<M, N>,\n op15: OperatorFunction<N, O>,\n op16: OperatorFunction<O, P>,\n op17: OperatorFunction<P, Q>,\n op18: OperatorFunction<Q, R>,\n op19: OperatorFunction<R, S>,\n op20: OperatorFunction<S, U>,\n op21: OperatorFunction<U, V>,\n op22: OperatorFunction<V, W>,\n op23: OperatorFunction<W, X>,\n op24: OperatorFunction<X, Y>,\n op25: OperatorFunction<Y, Z>,\n op26: OperatorFunction<Z, AA>,\n op27: OperatorFunction<AA, AB>,\n op28: OperatorFunction<AB, AC>,\n op29: OperatorFunction<AC, AD>,\n op30: OperatorFunction<AD, AE>,\n op31: OperatorFunction<AE, AF>,\n op32: OperatorFunction<AF, AG>,\n op33: OperatorFunction<AG, AH>,\n op34: OperatorFunction<AH, AI>,\n op35: OperatorFunction<AI, AJ>,\n op36: OperatorFunction<AJ, AK>,\n op37: OperatorFunction<AK, AL>,\n op38: OperatorFunction<AL, AM>,\n op39: OperatorFunction<AM, AN>,\n op40: OperatorFunction<AN, AO>,\n op41: OperatorFunction<AO, AP>,\n op42: OperatorFunction<AP, AQ>,\n op43: OperatorFunction<AQ, AR>,\n op44: OperatorFunction<AR, AS>\n ): Observable<AS, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ, AK, AL, AM, AN, AO, AP, AQ, AR, AS, AT>(\n op1: OperatorFunction<T, A>,\n op2: OperatorFunction<A, B>,\n op3: OperatorFunction<B, C>,\n op4: OperatorFunction<C, D>,\n op5: OperatorFunction<D, E>,\n op6: OperatorFunction<E, F>,\n op7: OperatorFunction<F, G>,\n op8: OperatorFunction<G, H>,\n op9: OperatorFunction<H, I>,\n op10: OperatorFunction<I, J>,\n op11: OperatorFunction<J, K>,\n op12: OperatorFunction<K, L>,\n op13: OperatorFunction<L, M>,\n op14: OperatorFunction<M, N>,\n op15: OperatorFunction<N, O>,\n op16: OperatorFunction<O, P>,\n op17: OperatorFunction<P, Q>,\n op18: OperatorFunction<Q, R>,\n op19: OperatorFunction<R, S>,\n op20: OperatorFunction<S, U>,\n op21: OperatorFunction<U, V>,\n op22: OperatorFunction<V, W>,\n op23: OperatorFunction<W, X>,\n op24: OperatorFunction<X, Y>,\n op25: OperatorFunction<Y, Z>,\n op26: OperatorFunction<Z, AA>,\n op27: OperatorFunction<AA, AB>,\n op28: OperatorFunction<AB, AC>,\n op29: OperatorFunction<AC, AD>,\n op30: OperatorFunction<AD, AE>,\n op31: OperatorFunction<AE, AF>,\n op32: OperatorFunction<AF, AG>,\n op33: OperatorFunction<AG, AH>,\n op34: OperatorFunction<AH, AI>,\n op35: OperatorFunction<AI, AJ>,\n op36: OperatorFunction<AJ, AK>,\n op37: OperatorFunction<AK, AL>,\n op38: OperatorFunction<AL, AM>,\n op39: OperatorFunction<AM, AN>,\n op40: OperatorFunction<AN, AO>,\n op41: OperatorFunction<AO, AP>,\n op42: OperatorFunction<AP, AQ>,\n op43: OperatorFunction<AQ, AR>,\n op44: OperatorFunction<AR, AS>,\n op45: OperatorFunction<AS, AT>\n ): Observable<AT, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ, AK, AL, AM, AN, AO, AP, AQ, AR, AS, AT, AU>(\n op1: OperatorFunction<T, A>,\n op2: OperatorFunction<A, B>,\n op3: OperatorFunction<B, C>,\n op4: OperatorFunction<C, D>,\n op5: OperatorFunction<D, E>,\n op6: OperatorFunction<E, F>,\n op7: OperatorFunction<F, G>,\n op8: OperatorFunction<G, H>,\n op9: OperatorFunction<H, I>,\n op10: OperatorFunction<I, J>,\n op11: OperatorFunction<J, K>,\n op12: OperatorFunction<K, L>,\n op13: OperatorFunction<L, M>,\n op14: OperatorFunction<M, N>,\n op15: OperatorFunction<N, O>,\n op16: OperatorFunction<O, P>,\n op17: OperatorFunction<P, Q>,\n op18: OperatorFunction<Q, R>,\n op19: OperatorFunction<R, S>,\n op20: OperatorFunction<S, U>,\n op21: OperatorFunction<U, V>,\n op22: OperatorFunction<V, W>,\n op23: OperatorFunction<W, X>,\n op24: OperatorFunction<X, Y>,\n op25: OperatorFunction<Y, Z>,\n op26: OperatorFunction<Z, AA>,\n op27: OperatorFunction<AA, AB>,\n op28: OperatorFunction<AB, AC>,\n op29: OperatorFunction<AC, AD>,\n op30: OperatorFunction<AD, AE>,\n op31: OperatorFunction<AE, AF>,\n op32: OperatorFunction<AF, AG>,\n op33: OperatorFunction<AG, AH>,\n op34: OperatorFunction<AH, AI>,\n op35: OperatorFunction<AI, AJ>,\n op36: OperatorFunction<AJ, AK>,\n op37: OperatorFunction<AK, AL>,\n op38: OperatorFunction<AL, AM>,\n op39: OperatorFunction<AM, AN>,\n op40: OperatorFunction<AN, AO>,\n op41: OperatorFunction<AO, AP>,\n op42: OperatorFunction<AP, AQ>,\n op43: OperatorFunction<AQ, AR>,\n op44: OperatorFunction<AR, AS>,\n op45: OperatorFunction<AS, AT>,\n op46: OperatorFunction<AT, AU>\n ): Observable<AU, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ, AK, AL, AM, AN, AO, AP, AQ, AR, AS, AT, AU, AV>(\n op1: OperatorFunction<T, A>,\n op2: OperatorFunction<A, B>,\n op3: OperatorFunction<B, C>,\n op4: OperatorFunction<C, D>,\n op5: OperatorFunction<D, E>,\n op6: OperatorFunction<E, F>,\n op7: OperatorFunction<F, G>,\n op8: OperatorFunction<G, H>,\n op9: OperatorFunction<H, I>,\n op10: OperatorFunction<I, J>,\n op11: OperatorFunction<J, K>,\n op12: OperatorFunction<K, L>,\n op13: OperatorFunction<L, M>,\n op14: OperatorFunction<M, N>,\n op15: OperatorFunction<N, O>,\n op16: OperatorFunction<O, P>,\n op17: OperatorFunction<P, Q>,\n op18: OperatorFunction<Q, R>,\n op19: OperatorFunction<R, S>,\n op20: OperatorFunction<S, U>,\n op21: OperatorFunction<U, V>,\n op22: OperatorFunction<V, W>,\n op23: OperatorFunction<W, X>,\n op24: OperatorFunction<X, Y>,\n op25: OperatorFunction<Y, Z>,\n op26: OperatorFunction<Z, AA>,\n op27: OperatorFunction<AA, AB>,\n op28: OperatorFunction<AB, AC>,\n op29: OperatorFunction<AC, AD>,\n op30: OperatorFunction<AD, AE>,\n op31: OperatorFunction<AE, AF>,\n op32: OperatorFunction<AF, AG>,\n op33: OperatorFunction<AG, AH>,\n op34: OperatorFunction<AH, AI>,\n op35: OperatorFunction<AI, AJ>,\n op36: OperatorFunction<AJ, AK>,\n op37: OperatorFunction<AK, AL>,\n op38: OperatorFunction<AL, AM>,\n op39: OperatorFunction<AM, AN>,\n op40: OperatorFunction<AN, AO>,\n op41: OperatorFunction<AO, AP>,\n op42: OperatorFunction<AP, AQ>,\n op43: OperatorFunction<AQ, AR>,\n op44: OperatorFunction<AR, AS>,\n op45: OperatorFunction<AS, AT>,\n op46: OperatorFunction<AT, AU>,\n op47: OperatorFunction<AU, AV>\n ): Observable<AV, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ, AK, AL, AM, AN, AO, AP, AQ, AR, AS, AT, AU, AV, AW>(\n op1: OperatorFunction<T, A>,\n op2: OperatorFunction<A, B>,\n op3: OperatorFunction<B, C>,\n op4: OperatorFunction<C, D>,\n op5: OperatorFunction<D, E>,\n op6: OperatorFunction<E, F>,\n op7: OperatorFunction<F, G>,\n op8: OperatorFunction<G, H>,\n op9: OperatorFunction<H, I>,\n op10: OperatorFunction<I, J>,\n op11: OperatorFunction<J, K>,\n op12: OperatorFunction<K, L>,\n op13: OperatorFunction<L, M>,\n op14: OperatorFunction<M, N>,\n op15: OperatorFunction<N, O>,\n op16: OperatorFunction<O, P>,\n op17: OperatorFunction<P, Q>,\n op18: OperatorFunction<Q, R>,\n op19: OperatorFunction<R, S>,\n op20: OperatorFunction<S, U>,\n op21: OperatorFunction<U, V>,\n op22: OperatorFunction<V, W>,\n op23: OperatorFunction<W, X>,\n op24: OperatorFunction<X, Y>,\n op25: OperatorFunction<Y, Z>,\n op26: OperatorFunction<Z, AA>,\n op27: OperatorFunction<AA, AB>,\n op28: OperatorFunction<AB, AC>,\n op29: OperatorFunction<AC, AD>,\n op30: OperatorFunction<AD, AE>,\n op31: OperatorFunction<AE, AF>,\n op32: OperatorFunction<AF, AG>,\n op33: OperatorFunction<AG, AH>,\n op34: OperatorFunction<AH, AI>,\n op35: OperatorFunction<AI, AJ>,\n op36: OperatorFunction<AJ, AK>,\n op37: OperatorFunction<AK, AL>,\n op38: OperatorFunction<AL, AM>,\n op39: OperatorFunction<AM, AN>,\n op40: OperatorFunction<AN, AO>,\n op41: OperatorFunction<AO, AP>,\n op42: OperatorFunction<AP, AQ>,\n op43: OperatorFunction<AQ, AR>,\n op44: OperatorFunction<AR, AS>,\n op45: OperatorFunction<AS, AT>,\n op46: OperatorFunction<AT, AU>,\n op47: OperatorFunction<AU, AV>,\n op48: OperatorFunction<AV, AW>\n ): Observable<AW, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ, AK, AL, AM, AN, AO, AP, AQ, AR, AS, AT, AU, AV, AW, AX>(\n op1: OperatorFunction<T, A>,\n op2: OperatorFunction<A, B>,\n op3: OperatorFunction<B, C>,\n op4: OperatorFunction<C, D>,\n op5: OperatorFunction<D, E>,\n op6: OperatorFunction<E, F>,\n op7: OperatorFunction<F, G>,\n op8: OperatorFunction<G, H>,\n op9: OperatorFunction<H, I>,\n op10: OperatorFunction<I, J>,\n op11: OperatorFunction<J, K>,\n op12: OperatorFunction<K, L>,\n op13: OperatorFunction<L, M>,\n op14: OperatorFunction<M, N>,\n op15: OperatorFunction<N, O>,\n op16: OperatorFunction<O, P>,\n op17: OperatorFunction<P, Q>,\n op18: OperatorFunction<Q, R>,\n op19: OperatorFunction<R, S>,\n op20: OperatorFunction<S, U>,\n op21: OperatorFunction<U, V>,\n op22: OperatorFunction<V, W>,\n op23: OperatorFunction<W, X>,\n op24: OperatorFunction<X, Y>,\n op25: OperatorFunction<Y, Z>,\n op26: OperatorFunction<Z, AA>,\n op27: OperatorFunction<AA, AB>,\n op28: OperatorFunction<AB, AC>,\n op29: OperatorFunction<AC, AD>,\n op30: OperatorFunction<AD, AE>,\n op31: OperatorFunction<AE, AF>,\n op32: OperatorFunction<AF, AG>,\n op33: OperatorFunction<AG, AH>,\n op34: OperatorFunction<AH, AI>,\n op35: OperatorFunction<AI, AJ>,\n op36: OperatorFunction<AJ, AK>,\n op37: OperatorFunction<AK, AL>,\n op38: OperatorFunction<AL, AM>,\n op39: OperatorFunction<AM, AN>,\n op40: OperatorFunction<AN, AO>,\n op41: OperatorFunction<AO, AP>,\n op42: OperatorFunction<AP, AQ>,\n op43: OperatorFunction<AQ, AR>,\n op44: OperatorFunction<AR, AS>,\n op45: OperatorFunction<AS, AT>,\n op46: OperatorFunction<AT, AU>,\n op47: OperatorFunction<AU, AV>,\n op48: OperatorFunction<AV, AW>,\n op49: OperatorFunction<AW, AX>\n ): Observable<AX, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ, AK, AL, AM, AN, AO, AP, AQ, AR, AS, AT, AU, AV, AW, AX, AY>(\n op1: OperatorFunction<T, A>,\n op2: OperatorFunction<A, B>,\n op3: OperatorFunction<B, C>,\n op4: OperatorFunction<C, D>,\n op5: OperatorFunction<D, E>,\n op6: OperatorFunction<E, F>,\n op7: OperatorFunction<F, G>,\n op8: OperatorFunction<G, H>,\n op9: OperatorFunction<H, I>,\n op10: OperatorFunction<I, J>,\n op11: OperatorFunction<J, K>,\n op12: OperatorFunction<K, L>,\n op13: OperatorFunction<L, M>,\n op14: OperatorFunction<M, N>,\n op15: OperatorFunction<N, O>,\n op16: OperatorFunction<O, P>,\n op17: OperatorFunction<P, Q>,\n op18: OperatorFunction<Q, R>,\n op19: OperatorFunction<R, S>,\n op20: OperatorFunction<S, U>,\n op21: OperatorFunction<U, V>,\n op22: OperatorFunction<V, W>,\n op23: OperatorFunction<W, X>,\n op24: OperatorFunction<X, Y>,\n op25: OperatorFunction<Y, Z>,\n op26: OperatorFunction<Z, AA>,\n op27: OperatorFunction<AA, AB>,\n op28: OperatorFunction<AB, AC>,\n op29: OperatorFunction<AC, AD>,\n op30: OperatorFunction<AD, AE>,\n op31: OperatorFunction<AE, AF>,\n op32: OperatorFunction<AF, AG>,\n op33: OperatorFunction<AG, AH>,\n op34: OperatorFunction<AH, AI>,\n op35: OperatorFunction<AI, AJ>,\n op36: OperatorFunction<AJ, AK>,\n op37: OperatorFunction<AK, AL>,\n op38: OperatorFunction<AL, AM>,\n op39: OperatorFunction<AM, AN>,\n op40: OperatorFunction<AN, AO>,\n op41: OperatorFunction<AO, AP>,\n op42: OperatorFunction<AP, AQ>,\n op43: OperatorFunction<AQ, AR>,\n op44: OperatorFunction<AR, AS>,\n op45: OperatorFunction<AS, AT>,\n op46: OperatorFunction<AT, AU>,\n op47: OperatorFunction<AU, AV>,\n op48: OperatorFunction<AV, AW>,\n op49: OperatorFunction<AW, AX>,\n op50: OperatorFunction<AX, AY>\n ): Observable<AY, any>;\n pipe(...operators: OperatorFunction<any, any>[]): Observable<any, any> {\n if (operators.length === 0) {\n return this as any;\n }\n return operators.reduce((prev, operator) => operator(prev), this as any);\n }\n}\n", "import { Subscription } from './Subscription';\n\nexport class AutoCloseSubscription extends Subscription {\n constructor(userUnsubscribe: () => void) {\n super(userUnsubscribe);\n }\n}\n", "/**\n * AbortablePromise - Promise-like class that supports AbortSignal\n * Allows chaining with .then() and collects steps for sequential execution\n */\nexport class AbortablePromise<T> implements PromiseLike<T> {\n private steps: Array<(value: any) => any> = [];\n private signal?: AbortSignal;\n private initialExecutor: (() => Promise<any>) | Promise<any>;\n private errorHandler?: (reason: any) => any;\n\n constructor(\n executor: (() => Promise<T>) | Promise<T>,\n signal?: AbortSignal\n ) {\n this.initialExecutor = executor;\n this.signal = signal;\n }\n\n then<TResult1 = T, TResult2 = never>(\n onfulfilled?: ((value: T) => TResult1 | PromiseLike<TResult1>) | undefined | null,\n onrejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | undefined | null\n ): AbortablePromise<TResult1 | TResult2> {\n // Create new promise instance\n const newPromise = new AbortablePromise<TResult1 | TResult2>(\n this.initialExecutor,\n this.signal\n );\n\n // Copy existing steps\n newPromise.steps = [...this.steps];\n\n // Add new step if provided\n if (onfulfilled) {\n newPromise.steps.push(onfulfilled as any);\n }\n\n // Set error handler if provided\n if (onrejected) {\n newPromise.errorHandler = onrejected as any;\n } else if (this.errorHandler) {\n newPromise.errorHandler = this.errorHandler;\n }\n\n return newPromise;\n }\n\n catch<TResult = never>(\n onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | undefined | null\n ): AbortablePromise<T | TResult> {\n return this.then(undefined, onrejected);\n }\n\n finally(onfinally?: (() => void) | undefined | null): AbortablePromise<T> {\n return this.then(\n (value) => {\n onfinally?.();\n return value;\n },\n (reason) => {\n onfinally?.();\n throw reason;\n }\n );\n }\n\n private async execute(): Promise<T> {\n try {\n // Check abort before starting\n if (this.signal?.aborted) {\n throw new Error(this.signal.reason || 'Aborted');\n }\n\n // Create abort promise\n const abortPromise = new Promise<never>((_, reject) => {\n if (this.signal?.aborted) {\n return reject(new Error(this.signal.reason || 'Aborted'));\n }\n const callback = (e: Event) => {\n const target = e.target as AbortSignal;\n this.signal?.removeEventListener('abort', callback);\n reject(new Error(target.reason || 'Aborted'));\n };\n this.signal?.addEventListener('abort', callback, { once: true });\n });\n\n // Pipeline runner\n const pipelineRunner = async (): Promise<T> => {\n // Execute initial executor\n let lastResult: any;\n if (typeof this.initialExecutor === 'function') {\n if (this.signal?.aborted) {\n throw new Error(this.signal.reason || 'Aborted');\n }\n lastResult = await (this.initialExecutor as () => Promise<any>)();\n } else {\n lastResult = await this.initialExecutor;\n }\n\n // Execute each step sequentially\n for (let i = 0; i < this.steps.length; i++) {\n // Check abort before each step\n if (this.signal?.aborted) {\n throw new Error(this.signal.reason || 'Aborted');\n }\n\n const step = this.steps[i];\n lastResult = await step(lastResult);\n }\n\n return lastResult;\n };\n\n return await Promise.race([pipelineRunner(), abortPromise]);\n } catch (error) {\n if (this.errorHandler) {\n return await this.errorHandler(error);\n }\n throw error;\n }\n }\n\n // Convert to native Promise\n toPromise(): Promise<T> {\n return this.execute();\n }\n}", "import { Subscription } from '../message/Subscription';\nimport { ConstructorType } from '../types';\nimport { ValidUtils } from '../valid/ValidUtils';\nimport { AbortablePromise } from './AbortablePromise';\n\nexport namespace Promises {\n export const isFulfilled = <T>(result: PromiseSettledResult<T>): result is PromiseFulfilledResult<T> => {\n return result.status === 'fulfilled';\n };\n export const isRejected = <T>(result: PromiseSettledResult<T>): result is PromiseRejectedResult => {\n return result.status === 'rejected';\n };\n\n export const filterCatch = async (promise: Promise<any>, has: ConstructorType<any> | ((e: any) => boolean) | (ConstructorType<any> | ((e: any) => void))[]) => {\n try {\n await promise;\n return undefined;\n } catch (e) {\n const targetHas = Array.isArray(has) ? has : [has];\n for (let ha of targetHas) {\n if (ValidUtils.isConstructor(ha)) {\n if (e instanceof ha) {\n return e;\n }\n } else {\n if ((ha as Function)(e)) {\n return e;\n }\n }\n }\n throw e;\n }\n return undefined;\n };\n export const sleep = (ms: number) => new Promise(resolve => setTimeout(resolve, ms));\n export const sleepReject = (ms: number) => new Promise((resolve, reject) => setTimeout(reject, ms));\n export const settle = async <T, E = unknown>(promise: Promise<T>): Promise<Promises.SettledResult<T, E>> => {\n return Promise.allSettled([promise]).then(results => results[0]);\n };\n export const settles = async <T, E = unknown>(...promises: Promise<T>[]): Promise<Promises.SettledResult<T, E>[]> => {\n return Promise.allSettled(promises);\n };\n export type SettledResult<T, E = unknown> = PromiseFulfilledResult<T> | (Omit<PromiseRejectedResult, 'reason'> & { reason: E });\n\n export type LoopConfig = { age: number };\n export type ObservableLoop<T> = {\n subscribe: (callback: { then?: (data: T, config: LoopConfig & { duration: number }) => void; catch?: (e: any, config: LoopConfig & { duration: number }) => void; delayThen?: (config: LoopConfig & { duration: number; isCatch: boolean; data?: T }) => void }) => Subscription;\n };\n export const loop = <T>(config: { factory: (config: LoopConfig) => Promise<T>; delay?: number; loopDelay?: number }): ObservableLoop<T> => {\n return {\n subscribe: callback => {\n let stop = false;\n let age = 0;\n const loopExecute = async () => {\n const start = Date.now();\n let end = start;\n age++;\n const executeConfig = { age: age };\n let t: T;\n let isCatch = false;\n try {\n t = await config.factory(executeConfig);\n end = Date.now();\n callback.then?.(t, { ...executeConfig, duration: end - start });\n } catch (e) {\n isCatch = true;\n end = Date.now();\n callback.catch?.(e, { ...executeConfig, duration: end - start });\n }\n await sleep(config.loopDelay ?? 0);\n // @ts-ignore\n callback.delayThen?.({ ...executeConfig, duration: end - start, isCatch: isCatch, data: t });\n if (!stop) return loopExecute();\n };\n\n setTimeout(() => {\n loopExecute();\n }, config.delay ?? 0);\n\n return new Subscription(() => {\n stop = true;\n });\n }\n };\n };\n export const delayExecute = <T>(value: (() => T) | (() => Promise<T>), delay = 0): Promise<T> => {\n return new Promise<T>(resolve => {\n setTimeout(async () => {\n const t = await value();\n resolve(t);\n }, delay);\n });\n };\n\n /**\n * Create an abortable promise chain\n * @param executor Initial promise or promise factory\n * @param signal Optional AbortSignal to cancel the execution\n */\n export const abortable = <T>(executor: (() => Promise<T>) | Promise<T>, signal?: AbortSignal): AbortablePromise<T> => {\n return new AbortablePromise(executor, signal);\n };\n\n export const withResolvers = <T>() => {\n let resolve!: (value: T | PromiseLike<T>) => void;\n let reject!: (reason?: any) => void;\n\n const promise = new Promise<T>((res, rej) => {\n resolve = res;\n reject = rej;\n });\n\n return { promise, resolve, reject };\n };\n\n export const executeInChunks = async <T>(promiseFactories: (() => Promise<T>)[], config: { chunkSize: number; sleepBetweenChunks: number }): Promise<T[]> => {\n const results: T[] = [];\n const chunkSize = config.chunkSize;\n const sleepBetweenChunks = config.sleepBetweenChunks;\n\n for (let i = 0; i < promiseFactories.length; i += chunkSize) {\n const chunk = promiseFactories.slice(i, i + chunkSize);\n const chunkResults = await Promise.all(chunk.map(factory => factory()));\n results.push(...chunkResults);\n // Add small delay between chunks to be extra safe\n if (i + chunkSize < promiseFactories.length) {\n await sleep(sleepBetweenChunks);\n }\n }\n return results;\n };\n\n export const executeSettledInChunks = async <T, E = unknown>(promiseFactories: (() => Promise<T>)[], config: { chunkSize: number; sleepBetweenChunks: number }): Promise<Promises.SettledResult<T, E>[]> => {\n const results: Promises.SettledResult<T, E>[] = [];\n const chunkSize = config.chunkSize;\n const sleepBetweenChunks = config.sleepBetweenChunks;\n\n for (let i = 0; i < promiseFactories.length; i += chunkSize) {\n const chunk = promiseFactories.slice(i, i + chunkSize);\n const chunkResults = (await Promise.allSettled(chunk.map(factory => factory()))) as Promises.SettledResult<T, E>[];\n results.push(...chunkResults);\n // Add small delay between chunks to be extra safe\n if (i + chunkSize < promiseFactories.length) {\n await sleep(sleepBetweenChunks);\n }\n }\n return results;\n };\n\n /**\n * Execute promises with concurrency limit using a pool pattern\n * @param promiseFactories Array of promise factories\n * @param concurrency Maximum number of concurrent executions\n * @returns Promise that resolves with all results\n */\n export const executeWithConcurrency = async <T>(promiseFactories: (() => Promise<T>)[], concurrency: number = 10): Promise<T[]> => {\n const results: T[] = new Array(promiseFactories.length);\n let currentIndex = 0;\n\n const executeNext = async (index: number): Promise<void> => {\n while (currentIndex < promiseFactories.length) {\n const factoryIndex = currentIndex++;\n results[factoryIndex] = await promiseFactories[factoryIndex]();\n }\n };\n\n // Create pool of concurrent workers\n const workers = Array(Math.min(concurrency, promiseFactories.length))\n .fill(0)\n .map((_, i) => executeNext(i));\n\n await Promise.all(workers);\n return results;\n };\n\n /**\n * Execute promises with concurrency limit using race pattern (most efficient)\n * Automatically starts a new promise as soon as one completes\n * @param promiseFactories Array of promise factories\n * @param limit Maximum number of concurrent executions (default: 5)\n * @returns Promise that resolves with all results\n */\n export const executeWithLimit = async <T>(promiseFactories: (() => Promise<T>)[], limit: number = 5): Promise<T[]> => {\n const results: T[] = new Array(promiseFactories.length);\n const executing: Promise<void>[] = [];\n\n for (const [index, factory] of promiseFactories.entries()) {\n const promise = factory()\n .then(result => {\n results[index] = result;\n })\n .finally(() => {\n executing.splice(executing.indexOf(promise), 1);\n });\n\n executing.push(promise);\n\n if (executing.length >= limit) {\n await Promise.race(executing);\n }\n }\n\n await Promise.all(executing);\n return results;\n };\n\n /**\n * Retry a promise with configurable delays\n * @param factory Function that returns a promise to retry (receives attempt number and previous error as parameters)\n * @param config Retry configuration\n * @param config.retry Number of retries (0 = no retry, 1 = retry once if failed, etc.)\n * @param config.delay.initialDelay Delay before first attempt (default: 0)\n * @param config.delay.retryDelay Delay between retry attempts (default: 0)\n * @param config.onRetry Callback called on each retry with error and attempt number\n * @returns Promise that resolves with the result or rejects after all retries\n * @example\n * // Retry up to 3 times with 1 second delay between attempts\n * await Promises.retry((attempt, error) => {\n * if (error) console.log('Previous error:', error);\n * return fetchData(attempt);\n * }, { retry: 3, delay: { retryDelay: 1000 } })\n */\n export const retry = async <T>(\n factory: (attempt: number, error?: any) => Promise<T>,\n config: {\n retry: number;\n delay?: {\n initialDelay?: number;\n retryDelay?: number;\n };\n onRetry?: (error: any, attempt: number) => void;\n }\n ): Promise<T> => {\n const initialDelay = config.delay?.initialDelay ?? 0;\n const retryDelay = config.delay?.retryDelay ?? 0;\n\n // Initial delay before first attempt\n if (initialDelay > 0) {\n await sleep(initialDelay);\n }\n\n let lastError: any;\n\n for (let attempt = 0; attempt <= config.retry; attempt++) {\n try {\n return await factory(attempt, lastError);\n } catch (error) {\n lastError = error;\n\n // Don't retry if this was the last attempt\n if (attempt === config.retry) {\n break;\n }\n\n // Call onRetry callback if provided\n config.onRetry?.(error, attempt + 1);\n\n // Wait before retrying\n if (retryDelay > 0) {\n await sleep(retryDelay);\n }\n }\n }\n\n // All retries failed, throw the last error\n throw lastError;\n };\n\n export namespace Result {\n export type FulfilledType<T> = PromiseFulfilledResult<T>;\n export type RejectType<E = unknown> = Omit<PromiseRejectedResult, 'reason'> & { reason: E };\n export type PendingType = { status: 'pending' };\n export type Type<T, E = unknown> = FulfilledType<T> | RejectType<E> | PendingType;\n\n export type FulfilledState<T> = FulfilledType<T> & { isFulfilled: true; isRejected: false; isPending: false };\n export type RejectState<E = unknown> = RejectType<E> & { isFulfilled: false; isRejected: true; isPending: false };\n export type PendingState = PendingType & { isFulfilled: false; isRejected: false; isPending: true };\n export type UndefinedResultState = { status?: undefined; isFulfilled: false; isRejected: false; isPending: false };\n\n export type State<T, E = unknown> = FulfilledState<T> | RejectState<E> | PendingState;\n export type StateFactory<T, E = unknown> = State<T, E> & { factory: () => StateFactory<T, E> };\n export type PromiseState<T, E = unknown> = State<T, E> & Promise<T>;\n export type PromiseStateFactory<T, E = unknown> = PromiseState<T, E> & { factory: () => PromiseStateFactory<T, E> };\n\n export async function awaitWrap<T, E = unknown>(promise: Promise<T>): Promise<State<T, E>>;\n export async function awaitWrap<T, E = unknown>(promise: () => Promise<T>): Promise<StateFactory<T, E>>;\n export async function awaitWrap<T, E = unknown>(promise: Promise<T> | (() => Promise<T>)): Promise<State<T, E> | StateFactory<T, E>> {\n const data = typeof promise === 'function' ? wrap<T, E>(promise) : wrap<T, E>(promise);\n // try {\n\n try {\n await data;\n } catch (e) {}\n\n const rData = {\n status: (data as any).status,\n isFulfilled: (data as any).isFulfilled,\n isRejected: (data as any).isRejected,\n isPending: (data as any).isPending,\n value: (data as any).value,\n reason: (data as any).reason\n } as any;\n if (typeof promise === 'function') {\n rData.factory = () => {\n return awaitWrap(promise);\n };\n return rData;\n } else {\n return rData;\n }\n }\n\n export function wrap<T, E = unknown>(promise: Promise<T>): PromiseState<T, E>;\n export function wrap<T, E = unknown>(promise: () => Promise<T>): PromiseStateFactory<T, E>;\n export function wrap<T, E = unknown>(promise: Promise<T> | (() => Promise<T>)): PromiseState<T, E> | PromiseStateFactory<T, E> {\n const promiseResult = (typeof promise === 'function' ? promise() : promise) as State<T, E> & Promise<T>;\n if (typeof promise === 'function') {\n const p = promiseResult as unknown as PromiseStateFactory<T, E> & Promise<T>;\n p.factory = () => {\n return wrap(promise);\n };\n }\n if (promiseResult.status === undefined) {\n const p = promiseResult as unknown as PendingState & Promise<T>;\n p.status = 'pending';\n p.isPending = true;\n p.isFulfilled = false;\n p.isRejected = false;\n p.then(\n result => {\n console.log('result??', result);\n const p = promiseResult as unknown as FulfilledState<T>;\n p.status = 'fulfilled';\n p.isFulfilled = true;\n p.isRejected = false;\n p.isPending = false;\n p.value = result;\n },\n reason => {\n console.log('rejet??', reason);\n const p = promiseResult as unknown as RejectState<E>;\n p.status = 'rejected';\n p.isFulfilled = false;\n p.isRejected = true;\n p.isPending = false;\n p.reason = reason;\n }\n );\n }\n return promiseResult;\n }\n }\n}\n", "import { Obj } from '../../object/obj/Obj';\nimport { Drawable } from '../../draw/Drawable';\nimport { DrawData } from '../../draw/DrawData';\n\nexport type RenderConfig = { disableReset?: boolean };\n\nexport abstract class RenderDrawObj<T = any> extends Obj implements Drawable {\n render(draw: DrawData<T>, config?:RenderConfig):void {\n try {\n // draw.reset();\n this.beforeDraw(draw);\n draw.context.save();\n if (!config?.disableReset) {\n draw.reset?.();\n }\n this.draw(draw);\n draw.context.restore();\n this.afterDraw(draw);\n } catch (e) {\n console.error('error!!',e);\n this.error(e);\n }\n }\n protected beforeDraw(draw: DrawData<T>): void {};\n abstract draw(draw: DrawData<T>): void ;\n protected afterDraw(draw: DrawData<T>): void {};\n protected error(e: any): void {\n\n };\n\n // constructor(canvas: HTMLCanvasElement, context: CanvasRenderingContext2D, public avaliablePlace: Rectangle = new Rectangle(new Point(0, 0), new Point(0, 0))) {\n // super(canvas, context);\n // }\n\n\n // get centerPoint(): Point {\n // return new Point();\n // }\n}\n", "import { DrawData } from '../../draw/DrawData';\nimport { RenderConfig, RenderDrawObj } from './RenderDrawObj';\nimport { MathUtil } from '../../../math/MathUtil';\nimport { Point3D } from '../../Point3D';\nimport { WithRequiredProperty } from '../../../types';\nimport { Obj } from './Obj';\nimport BezierConfig = MathUtil.BezierConfig;\nimport { ConvertUtils } from '../../../convert/ConvertUtils';\nimport { ObjectUtils } from '../../../object/ObjectUtils';\n\n// export type Calc = { name: string, start: number; end: number };\n// export type CalcResult = Calc & { value: number };\n\nexport type TargetPointType = { obj: Obj, bezierConfig?: MathUtil.BezierConfig; };\nexport type Calc = { value: number | number[], bezierConfig?: MathUtil.BezierConfig };\nexport type TransactionConfig = {\n // startPoint?: Point,\n targetPoint: TargetPointType | TargetPointType[];\n drawFps: number;\n deferTransaction?: boolean;\n animationIterationCount?: number | 'infinite';\n animationDirection?: 'normal' | 'reverse';\n startPoint?: Obj;\n startCalcs?: { [key: string]: number | number[]};\n calcs?: { [key: string]: Calc | Calc[] } //{name: string, value: number, bezierConfig?: MathUtil.BezierConfig}[][];\n // calcs?: Calc[];\n // fillMode?: 'backwards' ;\n\n};\n\ntype RequiredTransactionConfig = WithRequiredProperty<TransactionConfig, 'animationIterationCount' | 'animationDirection'>;\n\ntype TransactionControllConfig = {\n points: Obj[];\n calcs?: { [key: string]: number[] | number[][] };\n pointPositionIndex: number;\n transactionStartCalcs: { [key: string]: number | number[]};\n transactionStartPoint: Obj;\n config: RequiredTransactionConfig;\n};\n\n\n// TODO: \uB098\uC911\uC5D0 force\uB85C \uC704\uCE58\uC774\uB3D9\uD558\uB294\uAC70 \uD568\uC218\uD544\uC694\uD560\uC218\uB3C4.. transaction \uCDE8\uC18C\uC640\uD568\uAED8\nexport abstract class RenderTransactionDrawObj<T = any> extends RenderDrawObj<T> {\n private static readonly DEFAULT_BEZIER: BezierConfig = { p1x: 0.61, p1y: 1, p2x: 0.88, p2y: 1 };\n private _currentTransactionControlConfig: TransactionControllConfig;\n private _waitTransactionConfig?: TransactionConfig;\n private _calc: { [key: string]: number | number[]} = {};\n // private _beforeObj: Obj;\n private _transactionDoneSubscribers: ((config: TransactionConfig) => Obj|undefined)[] = [];\n // private _transactionConfigQueue: TransactionControllConfig[] = [];\n\n\n constructor(data?: Point3D);\n constructor(data?: { x?: number, y?: number, z?: number });\n constructor(x?: number, y?: number, z?: number);\n constructor(x?: number | { x?: number, y?: number, z?: number } | Point3D, y?: number, z?: number) {\n if (x instanceof Point3D) {\n // @ts-ignore\n super(x);\n } else if (typeof x === 'object') {\n super(x);\n } else {\n super({ x, y, z });\n }\n // this._beforeObj = this.copyObj();\n this._currentTransactionControlConfig = this.makeTransactionControlConfig({ targetPoint: { obj: this }, drawFps: 1 });\n // console.log('----!@@@@@@', this.x, this.y,this.z, this._currentTransactionConfig);\n }\n\n // get beforeObj() {\n // return this._beforeObj;\n // }\n\n get calc() {\n return this._calc;\n }\n\n getCalc(key: string): number | number[] | undefined {\n return this._calc[key];\n }\n\n setCalc(key: string, value: number | number[]) {\n // if ((this as any).syncSubLayer?.name === 'normalSpin_template' || (this as any).syncSubLayer?.name === 'normalSpin_slot'){\n // debugger;\n // }\n this._calc[key] = value;\n }\n\n getTransactionStartPoint() {\n return this._currentTransactionControlConfig.transactionStartPoint;\n }\n getTransactionFrames() {\n return {points: this._currentTransactionControlConfig.points, calcs: this._currentTransactionControlConfig.calcs};\n }\n setTransactionIndex(index: number){\n this._currentTransactionControlConfig.pointPositionIndex = index;\n }\n getTransactionIndex() {\n return this._currentTransactionControlConfig.pointPositionIndex;\n }\n getTransactionIndexRate() {\n return MathUtil.getPercentByTotal(this._currentTransactionControlConfig.points.length, this._currentTransactionControlConfig.pointPositionIndex+1) /100;\n }\n getCurrentTransactionPoint() {\n return this._currentTransactionControlConfig.points[this._currentTransactionControlConfig.pointPositionIndex];\n }\n getCurrentDrawFps() {\n return this._currentTransactionControlConfig.config.drawFps;\n }\n getCurrentTransactionTargetPoint() {\n const drawFps = this.getCurrentDrawFps()\n const targetPoints = !Array.isArray(this._currentTransactionControlConfig.config.targetPoint) ? [this._currentTransactionControlConfig.config.targetPoint] : this._currentTransactionControlConfig.config.targetPoint;\n const size = Math.ceil(drawFps / targetPoints.length);\n const s = this._currentTransactionControlConfig.pointPositionIndex / size\n return targetPoints[s];\n }\n remainingFrameCountTransaction() {\n return (this._currentTransactionControlConfig.points.length - 1) - this._currentTransactionControlConfig.pointPositionIndex;\n }\n\n isDoneTransaction() {\n return this._currentTransactionControlConfig.pointPositionIndex >= this._currentTransactionControlConfig.points.length - 1;\n }\n\n makeTransactionControlConfig(transactionConfig: TransactionConfig) {\n // if ((this as any).syncSubLayer?.name === '\uC601\uC5ED-\uC815\uBA74-\uBAB8-group') {\n // console.log('-11-----', transactionConfig)\n // }\n // if ((this as any).syncSubLayer?.name === 'normalSpin_template' || (this as any).syncSubLayer?.name === 'normalSpin_slot'){\n // console.log('mmmmmmmmm')\n // }\n // console.log('-------------', this)\n // if ((this as any)._syncSubLayer?.name === \"normalBounce_template\" ) {\n // console.log('mmmmmmmmm', this.transform, this._currentTransactionControllConfig.transactionStartPoint.transform)\n // }\n if (transactionConfig.startPoint) {\n this.updateObjWithDefaults(transactionConfig.startPoint);\n }\n const transactionStartCalc = ObjectUtils.deepCopy(this._calc);\n\n if (transactionConfig.startCalcs) {\n Object.entries(transactionConfig.startCalcs).forEach(([k,v])=> {\n transactionStartCalc[k] = v;\n })\n }\n const requiredConfig = this.defaultTransactionConfig(transactionConfig);\n\n const targetPoints = requiredConfig.targetPoint = Array.isArray(requiredConfig.targetPoint) ? requiredConfig.targetPoint : [requiredConfig.targetPoint];\n const points: Obj[] = [];\n // \uB0A8\uC740\uAC8C \uC788\uC74C \uD2B8\uB79C\uC81D\uC158 \uC2DC\uC791\uD588\uC744\uB584 \uC2DC\uC791\uC810 \uAE30\uC900\uC73C\uB85C\n // let startPoint = this.remainingCntTransaction() > 0 ? this._transactionConfig.points[0] : this.toPoint3D();\n // console.log('---->',(this as any)._syncData?.name)\n // if ((this as any)._syncData?.name === 'mcdonalds-event_item_issue' || (this as any).syncSu_syncDatabLayer?.name === 'mcdonalds-event_item_issue'){\n // console.log('make!!!', transactionStartCalc)\n // }\n const currentPoint = this.copyObj();\n let startPoint: TargetPointType = { obj: currentPoint, bezierConfig: RenderTransactionDrawObj.DEFAULT_BEZIER };\n const drawFps = requiredConfig.drawFps;\n const size = Math.ceil(drawFps / targetPoints.length);\n // if (targetPoints.length === 1) {\n // points.push(targetPoints[0].obj);\n // } else {\n for (let i = 0; i < targetPoints.length; i++) {\n const targetPoint = targetPoints[i];\n const point = MathUtil.cubicBezier({start: startPoint.obj, end: targetPoint.obj}, {frame: size}, targetPoint.bezierConfig ?? RenderTransactionDrawObj.DEFAULT_BEZIER);\n const setPoints = [startPoint.obj, ...point, targetPoint.obj];\n setPoints.forEach(it=>it.data = targetPoint.obj.data);\n points.push(...setPoints);\n startPoint = targetPoint;\n }\n // }\n\n\n // if ((this as any)) {\n // // console.log('worldEngine Sync', layerDrawObject?.syncData?.name, layers)\n // console.log(requiredConfig)\n // }\n // const data = points.map(it => Math.floor(it.y*100)/100);\n // const data1 = targetPoints.map(it =>Math.floor(it.obj.y * 1000)/1000);\n // if (data[data.length-1] === 0) {\n // console.group('start', currentPoint)\n // console.log('1---@@@----', data1);\n // console.log('2---@@@----', data);\n // console.groupEnd()\n // }\n // \uD558\uB098\uB3C4\uC5C6\uC744\uB54C \uB610\uB294 0\uC73C\uB85C \uC14B\uD305\uC2DC \uBC14\uB85C \uC14B\n if (drawFps <= 0 && targetPoints.length > 0) {\n // console.log('!@!!!!!!!!!!!!!!!!!!!!!!!!!!!!', transactionConfig.startPoint, targetPoints[targetPoints.length - 1].obj)\n const lastPoint = targetPoints[targetPoints.length - 1].obj;\n points.length = 0;\n points.push(lastPoint);\n this.updateObjWithDefaults(lastPoint);\n }\n\n const calcs: { [key: string]: number[] | number[][] } = {};\n Object.entries(requiredConfig.calcs ?? {})?.forEach(([key, value], index) => {\n const values = Array.isArray(value) ? value : [value];\n let startPoint = transactionStartCalc[key];\n const points: number[] | number[][] = [];\n for (let i = 0; i < values.length; i++) {\n const end = values[i];\n if (Array.isArray(end.value)) {\n const point: number[][] = [];\n const cstart = (startPoint??[]) as number[];\n const cend = end.value as number[];\n const rpoints = cend.map((it,index) => {\n const b = MathUtil.cubicBezier({ start: cstart[index] ?? 0, end: cend[index] ?? 0 }, { frame: size }, end.bezierConfig ?? RenderTransactionDrawObj.DEFAULT_BEZIER)\n // console.log('----------22>', index, cstart[index], cend[index], size, b);\n return b;\n });\n const ss = ConvertUtils.toArrayDirectionChange(rpoints) as number[][]\n (points as number[][]).push(cstart, ...ss, cend);\n } else {\n const cstart = startPoint as number ??0;\n const point = MathUtil.cubicBezier({ start: cstart, end: end.value }, { frame: size }, end.bezierConfig ?? RenderTransactionDrawObj.DEFAULT_BEZIER);\n (points as number[]).push(cstart, ...point, end.value);\n }\n startPoint = end.value;\n }\n // \uD558\uB098\uB3C4\uC5C6\uC744\uB54C \uB610\uB294 0\uC73C\uB85C \uC14B\uD305\uC2DC \uBC14\uB85C \uC14B\n if (drawFps <= 0 && points.length > 0) {\n transactionStartCalc[key]=points[points.length - 1];\n }\n calcs[key] = points;\n });\n // console.log('calc------->', calcs);\n // if ((this as any).syncSubLayer?.name === 'normalSpin_template' || (this as any).syncSubLayer?.name === 'normalSpin_slot'){\n // console.log('make!!!', transactionStartCalc)\n // }\n const transactionControlConfig: TransactionControllConfig = {\n points: points,\n calcs: calcs,\n pointPositionIndex: 0,\n transactionStartCalcs: transactionStartCalc,\n transactionStartPoint: currentPoint,\n config: requiredConfig\n };\n // if (drawFps <= 0 && targetPoints.length > 0) {\n // console.log('!!!!!', transactionControllConfig)\n // }\n // if ((this as any).syncSubLayer?.name === '\uC601\uC5ED-\uC815\uBA74-\uBAB8-group') {\n // console.log('------', transactionControllConfig)\n // }\n return transactionControlConfig;\n }\n\n // setPosition(position: {x:number, y:number, z: number}, config?:{deferTransaction?:boolean}) {\n //\n //\n // }\n transaction(transactionConfig: TransactionConfig) {\n if ((this as any).syncSubLayer?.name === 'normalBounce_template') {\n // console.log('------', transactionControllConfig)\n // console.log('!!!!!!!!!', this.isDoneTransaction(), transactionConfig.deferTransaction);\n }\n if (this.isDoneTransaction() && transactionConfig.deferTransaction) {\n // this.rotate = 0;\n this._currentTransactionControlConfig = this.makeTransactionControlConfig(transactionConfig);\n } else if (transactionConfig.deferTransaction) {\n this._waitTransactionConfig = transactionConfig;\n } else {\n this._currentTransactionControlConfig = this.makeTransactionControlConfig(transactionConfig);\n }\n }\n\n\n private defaultTransactionConfig(transactionConfig: TransactionConfig): RequiredTransactionConfig {\n // const targetPoint = [...(Array.isArray(transactionConfig.targetPoint) ? transactionConfig.targetPoint : [transactionConfig.targetPoint])];\n // if (transactionConfig.animationDirection === 'reverse') {\n // targetPoint.u\n // }\n const requiredConfig: RequiredTransactionConfig = {\n ...transactionConfig,\n // targetPoint: targetPoint,\n animationIterationCount: transactionConfig.animationIterationCount ?? 1,\n animationDirection: transactionConfig.animationDirection ?? 'normal'\n // fillMode: transactionConfig.fillMode ?? 'backwards',\n };\n return requiredConfig;\n }\n\n render(draw: DrawData<T>, config?:RenderConfig) {\n\n\n // this._beforeObj.setObj(this.copyObj());\n\n // console.log('-!!!!!!!!!!!', this);\n this.x = this._currentTransactionControlConfig.points[this._currentTransactionControlConfig.pointPositionIndex]?.x ?? this.x;\n this.y = this._currentTransactionControlConfig.points[this._currentTransactionControlConfig.pointPositionIndex]?.y ?? this.y;\n this.z = this._currentTransactionControlConfig.points[this._currentTransactionControlConfig.pointPositionIndex]?.z ?? this.z;\n this.volume = this._currentTransactionControlConfig.points[this._currentTransactionControlConfig.pointPositionIndex]?.volume ?? this.volume;\n this.mass = this._currentTransactionControlConfig.points[this._currentTransactionControlConfig.pointPositionIndex]?.mass ?? this.mass;\n this.e = this._currentTransactionControlConfig.points[this._currentTransactionControlConfig.pointPositionIndex]?.e ?? this.e;\n this.rotate = this._currentTransactionControlConfig.points[this._currentTransactionControlConfig.pointPositionIndex]?.rotate ?? this.rotate;\n this.width = this._currentTransactionControlConfig.points[this._currentTransactionControlConfig.pointPositionIndex]?.width ?? this.width;\n this.height = this._currentTransactionControlConfig.points[this._currentTransactionControlConfig.pointPositionIndex]?.height ?? this.height;\n this.transform[0] = this._currentTransactionControlConfig.points[this._currentTransactionControlConfig.pointPositionIndex]?.transform[0] ?? this.transform[0];\n this.transform[1] = this._currentTransactionControlConfig.points[this._currentTransactionControlConfig.pointPositionIndex]?.transform[1] ?? this.transform[1];\n this.transform[2] = this._currentTransactionControlConfig.points[this._currentTransactionControlConfig.pointPositionIndex]?.transform[2] ?? this.transform[2];\n this.transform[3] = this._currentTransactionControlConfig.points[this._currentTransactionControlConfig.pointPositionIndex]?.transform[3] ?? this.transform[3];\n this.transform[4] = this._currentTransactionControlConfig.points[this._currentTransactionControlConfig.pointPositionIndex]?.transform[4] ?? this.transform[4];\n this.transform[5] = this._currentTransactionControlConfig.points[this._currentTransactionControlConfig.pointPositionIndex]?.transform[5] ?? this.transform[5];\n this.color.r = this._currentTransactionControlConfig.points[this._currentTransactionControlConfig.pointPositionIndex]?.color?.r ?? this.color.r;\n this.color.g = this._currentTransactionControlConfig.points[this._currentTransactionControlConfig.pointPositionIndex]?.color?.g ?? this.color.g;\n this.color.b = this._currentTransactionControlConfig.points[this._currentTransactionControlConfig.pointPositionIndex]?.color?.b ?? this.color.b;\n this.color.a = this._currentTransactionControlConfig.points[this._currentTransactionControlConfig.pointPositionIndex]?.color?.a ?? this.color.a;\n\n // if (this._currentTransactionControllConfig.points.length === 1) {\n // console.log('-!!!!!!!!!!!', this.x, this.y,this.z, this._currentTransactionControllConfig);\n // }\n\n // calcs\n Object.entries(this._currentTransactionControlConfig.calcs ?? {}).forEach(([key, value]) => {\n this._calc[key] = value[this._currentTransactionControlConfig.pointPositionIndex];\n });\n\n this._currentTransactionControlConfig.pointPositionIndex = Math.min(this._currentTransactionControlConfig.pointPositionIndex + 1, this._currentTransactionControlConfig.points.length - 1);\n // super.render(draw, {calcs, transaction: this._currentTransactionConfig});\n super.render(draw, config);\n\n\n // if (this.syncSubLayer.name === 'normalSpin_template' || this.syncSubLayer.name === 'normalSpin_slot')\n // if (this['syncSubLayer']?.name==='normalSpin_template') {\n // console.log('is???Doen', this.isDoneTransaction(), this);\n // if (this.isDoneTransaction()) {\n // // debugger;\n // }\n // }\n if (this.isDoneTransaction()) {\n // this._transactionDoneSubscribers.forEach(it => {\n //\n // })\n // console.log('done?-----', this._currentTransactionConfig.config.direction);\n\n const targetPoints = Array.isArray(this._currentTransactionControlConfig.config.targetPoint) ? [...this._currentTransactionControlConfig.config.targetPoint] : [this._currentTransactionControlConfig.config.targetPoint];\n // console.log('----------->',targetPoints)\n const targetCalcs: {[key: string]: Calc[]} = {}\n Object.entries(this._currentTransactionControlConfig?.config?.calcs??{}).forEach(([k,v]) => targetCalcs[k] = Array.isArray(v) ? v : [v]);\n\n\n\n // next transaction?\n if (this._waitTransactionConfig && this._waitTransactionConfig.deferTransaction) {\n // alert(1)\n // console.log('dddddddon')\n\n // this._currentTransactionControllConfig.pointPositionIndex=0;\n\n // this.transaction({\n // ...this._currentTransactionConfig.config,\n // targetPoint: targetPoints,\n // calcs: targetCalcs\n // });\n // this._waitTransactionConfig.startPoint = this._currentTransactionControllConfig.transactionStartPoint;\n this.transaction(this._waitTransactionConfig);\n this._waitTransactionConfig = undefined;\n return;\n }\n\n\n\n let startPoint = this._currentTransactionControlConfig.config.startPoint;\n let startCalcs = this._currentTransactionControlConfig.transactionStartCalcs;\n if (this._currentTransactionControlConfig.config.animationDirection === 'reverse') {\n if (targetPoints.length>0) {\n // console.log('start-->1', (this as any).syncSubLayer?.name, this._currentTransactionControllConfig,JSON.stringify(startPoint.transform), JSON.stringify(targetPoints[0].obj.transform))\n const targetStartPoint = targetPoints.pop();\n targetPoints.reverse();\n if (startPoint)\n targetPoints.push({obj: startPoint });\n Object.entries(targetCalcs).forEach(([k,v]) => {\n const targetCalc = v.pop();\n if (targetCalc) {\n v.reverse();\n v.push({value: startCalcs[k]});\n startCalcs[k] = targetCalc.value;\n }\n });\n\n if (targetStartPoint)\n startPoint = targetStartPoint.obj;\n }\n }\n\n if (this._currentTransactionControlConfig.config.animationIterationCount === 'infinite') {\n // return;\n // console.log('----infinite?',targetCalcs, targetPoints);\n // Object.entries(this._calc).forEach(([k,v]) => {\n // this._calc[k] = 0;\n // })\n // if ((this as any).syncSubLayer?.name === 'normalSpin_template' || (this as any).syncSubLayer?.name === 'normalSpin_slot'){\n // console.log('iiiiiiiiiiiiiiiiiiii', this._currentTransactionControllConfig.transactionStartCalcs)\n // }\n // Object.entries(targetCalcs).forEach(([k,v]) => v.reverse());\n // this._calc = this._currentTransactionControllConfig.transactionStartCalcs;\n // \uC774\uAC78\uB123\uC5B4\uC57C\uB420\uC9C0 \uB9D0\uC544\uC57C\uB420\uC9C0.. \uC774\uAC70 \uACC4\uC18D\uACE0\uBBFC\uC778\uB370.. \uC774\uAC70 \uACC4\uC18D \uAC78\uB9AC\uB124.\n this.transaction({\n ...this._currentTransactionControlConfig.config,\n startPoint: startPoint,\n targetPoint: targetPoints,\n startCalcs: startCalcs,\n calcs: targetCalcs\n });\n } else if (this._currentTransactionControlConfig.config.animationIterationCount > 1) {\n // console.log('iterationCount', targetPoints);\n this.transaction({\n ...this._currentTransactionControlConfig.config,\n startPoint: startPoint,\n targetPoint: targetPoints,\n startCalcs: startCalcs,\n calcs: targetCalcs,\n animationIterationCount: this._currentTransactionControlConfig.config.animationIterationCount - 1\n });\n }\n }\n\n\n }\n\n abstract draw(draw: DrawData<T>): void ;\n\n // constructor(canvas: HTMLCanvasElement, context: CanvasRenderingContext2D, public avaliablePlace: Rectangle = new Rectangle(new Point(0, 0), new Point(0, 0))) {\n // super(canvas, context);\n // }\n\n\n // get centerPoint(): Point {\n // return new Point();\n // }\n}\n", "import { Runnable } from '../runs/Runnable';\n\nexport namespace Schedule {\n export const SYMBOL = Symbol.for('core:schedule-token');\n export type State = 'INITIALIZE' | 'RUNNING' | 'DONE-AND-WAITING' | 'STOPPED' | 'ERROR' | 'SUCCESS';\n}\n\nexport interface Schedule<T = void, R = void> extends Runnable<Promise<R>, T> {\n spec: string;\n name?: string;\n description?: string;\n history?: { state: Schedule.State; date: Date; input?: T }[];\n state: Schedule.State;\n isReady?: boolean;\n totalCount: number;\n successCount: number;\n errorCount: number;\n\n run(data: T): Promise<R>;\n execute(data: T): Promise<R>;\n}\n\nexport abstract class ScheduleBase<T = void, R = void> implements Schedule<T, R> {\n /*\n * * * * * *\n \u252C \u252C \u252C \u252C \u252C \u252C\n \u2502 \u2502 \u2502 \u2502 \u2502 \u2502\n \u2502 \u2502 \u2502 \u2502 \u2502 \u2514 day of week (0 - 7) (0 or 7 is Sun)\n \u2502 \u2502 \u2502 \u2502 \u2514\u2500\u2500\u2500\u2500\u2500 month (1 - 12)\n \u2502 \u2502 \u2502 \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 day of month (1 - 31)\n \u2502 \u2502 \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 hour (0 - 23)\n \u2502 \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 minute (0 - 59)\n \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 second (0 - 59, OPTIONAL)\n */\n abstract spec: string;\n abstract name?: string;\n abstract description?: string;\n private _history?: { state: Schedule.State; date: Date; input: T, result?: R }[];\n private _state: Schedule.State = 'INITIALIZE';\n private _totalCount = 0;\n private _successCount = 0;\n private _errorCount = 0;\n\n get history() {\n return this._history;\n }\n get state(): Schedule.State {\n return this._state;\n }\n get totalCount() {\n return this._totalCount;\n }\n get successCount() {\n return this._successCount;\n }\n get errorCount() {\n return this._errorCount;\n }\n get isReady(): boolean {\n return !(this._state === 'RUNNING')\n }\n private addStart(input?: T, date: Date = new Date()) {\n this._history ??= [];\n this._history.push({ state: 'RUNNING', date, input });\n }\n private addError(input?: T, date: Date = new Date()) {\n this._history ??= [];\n this._history.push({ state: 'ERROR', date, input });\n }\n private addSuccess(input?: T, result:R = undefined, date: Date = new Date()) {\n this._history ??= [];\n this._history.push({ state: 'SUCCESS', date, input, result });\n }\n\n\n async run(data: T): Promise<R> {\n this._state = 'RUNNING';\n this.addStart();\n const startDate = new Date();\n let result: R;\n try {\n console.log('Running schedule', this.name, startDate);\n result = await this.execute(data);\n this._successCount++;\n this.addSuccess(data, result);\n } catch (e) {\n this.addError(e);\n this._errorCount++;\n const endDate = new Date();\n console.error('Error schedule', this.name, endDate, endDate.getTime() - startDate.getTime(), e);\n } finally {\n this._totalCount++;\n const endDate = new Date();\n console.log('Done schedule', this.name, endDate, endDate.getTime() - startDate.getTime());\n }\n this._state = 'DONE-AND-WAITING';\n return result!;\n }\n\n abstract execute(data: T): Promise<R>;\n}\n", "export namespace UrlUtils {\n // 1 const fullUrl = \"http://naver.com/asdwd?a=na\";\n\n // 2\n // 3 try {\n // 4 const url = new URL(fullUrl);\n // 5 const origin = url.origin; // \"http://naver.com\"\n // 6\n // 7 console.log(origin); // \uCD9C\uB825: http://naver.com\n // 8 } catch (error) {\n // 9 console.error(\"\uC720\uD6A8\uD558\uC9C0 \uC54A\uC740 URL\uC785\uB2C8\uB2E4:\", error);\n // 10 }\n export const origin = (fullurl: string) => {\n return new URL(fullurl).origin;\n };\n\n export const toUrl = (fullUrl: string) => {\n return new URL(fullUrl);\n };\n\n /**\n * Returns the relative path (pathname + search) from a URL or string.\n */\n export const getUrlPath = (url: URL | string | { pathname: string; search: string }): string => {\n if (typeof url === 'string') {\n try {\n const u = new URL(url, 'http://localhost');\n return u.pathname + u.search;\n } catch (e) {\n return url;\n }\n }\n return (url.pathname ?? '') + (url.search ?? '');\n };\n\n /**\n * URLSearchParams\uC5D0\uC11C \uD2B9\uC815 \uD0A4\uB97C \uC0AD\uC81C\n */\n export const deleteSearchParam = (searchParams: URLSearchParams, name: string | string[]): URLSearchParams => {\n const names = Array.isArray(name) ? name : [name];\n names.forEach(n => searchParams.delete(n));\n return searchParams;\n };\n\n /**\n * URLSearchParams\uC5D0 \uD0A4-\uAC12 \uC30D\uC744 \uCD94\uAC00\n */\n export const appendSearchParam = (searchParams: URLSearchParams, params: [[string, string]]): URLSearchParams => {\n params.forEach(([key, value]) => searchParams.append(key, value));\n return searchParams;\n };\n\n /**\n * URLSearchParams\uC5D0\uC11C \uD0A4\uB97C \uC0AD\uC81C\uD558\uACE0 \uC0C8\uB85C\uC6B4 \uAC12\uC744 \uCD94\uAC00 (upsert)\n * \uAE30\uC874 \uAC12\uC774 \uC788\uC73C\uBA74 \uC0AD\uC81C\uD558\uACE0, \uC0C8\uB85C\uC6B4 \uAC12\uC744 \uCD94\uAC00\n */\n export const upsertSearchParam = (searchParams: URLSearchParams, params: Record<string, string | string[]>): URLSearchParams => {\n Object.entries(params).forEach(([key, value]) => {\n searchParams.delete(key); // \uAE30\uC874 \uAC12 \uC0AD\uC81C\n if (Array.isArray(value)) {\n value.forEach(v => searchParams.append(key, v));\n } else {\n searchParams.append(key, value);\n }\n });\n return searchParams;\n };\n\n /**\n * URLSearchParams \uC870\uC791\uC744 \uC704\uD55C \uD5EC\uD37C\n */\n export const manipulateSearchParams = (searchParams: URLSearchParams, options?: { delete?: string[]; append?: [[string, string]]; upsert?: Record<string, string | string[]> }): URLSearchParams => {\n if (options?.delete) {\n deleteSearchParam(searchParams, options.delete);\n }\n if (options?.append) {\n appendSearchParam(searchParams, options.append);\n }\n if (options?.upsert) {\n upsertSearchParam(searchParams, options.upsert);\n }\n return searchParams;\n };\n}\n", "import { ConstructorType } from '../types';\n\nexport namespace ReflectUtils {\n export const getParameterTypes = (target: any, propertyKey?: string | symbol): ConstructorType<any>[] => {\n if (propertyKey) {\n return Reflect.getMetadata('design:paramtypes', target, propertyKey) || [];\n } else {\n return Reflect.getMetadata('design:paramtypes', target) || [];\n }\n };\n\n export const getReturnType = (target: any, propertyKey: string | symbol): any => {\n return Reflect.getMetadata('design:returntype', target, propertyKey);\n };\n\n export const getType = (target: any, propertyKey?: string | symbol): any => {\n if (propertyKey) {\n return Reflect.getMetadata('design:type', target, propertyKey);\n } else {\n return Reflect.getMetadata('design:type', target);\n }\n };\n\n export const getMetadata = <T = any>(metadataKey: any, target: any, propertyKey?: string | symbol): T | undefined => {\n if (propertyKey) {\n return Reflect.getMetadata(metadataKey, target, propertyKey);\n } else {\n return Reflect.getMetadata(metadataKey, target);\n }\n };\n\n export const findMetadata = <T = any>(metadataKey: any, target: any, propertyKey?: string | symbol): T | undefined => {\n if (target == null) return undefined;\n let searchTarget = typeof target === 'object' && typeof target !== 'function' ? target.constructor : target;\n\n while (searchTarget && searchTarget !== Object) {\n const data = propertyKey ? Reflect.getOwnMetadata(metadataKey, searchTarget, propertyKey) : Reflect.getOwnMetadata(metadataKey, searchTarget);\n if (data !== undefined) return data;\n const proto = Object.getPrototypeOf(searchTarget);\n searchTarget = proto && typeof proto === 'function' ? proto : proto?.constructor || null;\n if (searchTarget === target) break;\n }\n return undefined;\n };\n\n /**\n * \uD504\uB85C\uD1A0\uD0C0\uC785 \uCCB4\uC778\uC758 \uBAA8\uB4E0 \uBA54\uD0C0\uB370\uC774\uD130\uB97C \uC218\uC9D1\uD558\uC5EC \uB9AC\uC2A4\uD2B8\uB85C \uBC18\uD658\uD569\uB2C8\uB2E4. (\uBD80\uBAA8 -> \uC790\uC2DD \uC21C)\n */\n export const findAllMetadata = <T = any>(metadataKey: any, target: any, propertyKey?: string | symbol): T[] => {\n const results: T[] = [];\n if (target == null) return results;\n let searchTarget = typeof target === 'object' && typeof target !== 'function' ? target.constructor : target;\n\n while (searchTarget && searchTarget !== Object) {\n const data = propertyKey ? Reflect.getOwnMetadata(metadataKey, searchTarget, propertyKey) : Reflect.getOwnMetadata(metadataKey, searchTarget);\n if (data !== undefined) results.unshift(data); // \uBD80\uBAA8 \uB370\uC774\uD130\uB97C \uC55E\uC5D0 \uCD94\uAC00\n const proto = Object.getPrototypeOf(searchTarget);\n searchTarget = proto && typeof proto === 'function' ? proto : proto?.constructor || null;\n if (searchTarget === target) break;\n }\n return results;\n };\n\n /**\n * \uBAA8\uB4E0 \uBA54\uD0C0\uB370\uC774\uD130(\uBC30\uC5F4 \uD615\uD0DC)\uB97C \uC218\uC9D1\uD558\uC5EC \uD558\uB098\uC758 \uBC30\uC5F4\uB85C \uD569\uCE69\uB2C8\uB2E4. (\uBD80\uBAA8 -> \uC790\uC2DD \uC21C)\n */\n export const findAllMetadataFlatten = <T = any>(metadataKey: any, target: any, propertyKey?: string | symbol): T[] => {\n const results: T[] = [];\n const metaList = findAllMetadata<T[]>(metadataKey, target, propertyKey);\n metaList.forEach(data => {\n if (Array.isArray(data)) results.push(...data);\n });\n return [...new Set(results)];\n };\n\n /**\n * \uD504\uB85C\uD1A0\uD0C0\uC785 \uCCB4\uC778\uC758 \uBAA8\uB4E0 \uBA54\uD0C0\uB370\uC774\uD130(\uB9F5 \uD615\uD0DC)\uB97C \uC218\uC9D1\uD558\uC5EC \uD569\uCE69\uB2C8\uB2E4. (\uBD80\uBAA8 -> \uC790\uC2DD \uC21C)\n */\n export const findAllMapMetadata = <K, V>(metadataKey: any, target: any): Map<K, V[]> => {\n const finalMap = new Map<K, V[]>();\n const metaList = findAllMetadata<Map<K, V[]>>(metadataKey, target);\n\n metaList.forEach(data => {\n if (data instanceof Map) {\n data.forEach((values, key) => {\n if (!finalMap.has(key)) finalMap.set(key, []);\n const valArr = Array.isArray(values) ? values : [values];\n finalMap.get(key)!.push(...(valArr as any));\n });\n }\n });\n return finalMap;\n };\n\n export const getMetadataKeys = (target: any) => {\n return Reflect.getMetadataKeys(target);\n };\n\n export const getOwnMetadata = (metadataKey: any, target: any, propertyKey?: string | symbol): any => {\n if (propertyKey) {\n return Reflect.getOwnMetadata(metadataKey, target, propertyKey);\n } else {\n return Reflect.getOwnMetadata(metadataKey, target);\n }\n };\n\n export const getMetadatas = (target: any) => {\n return getMetadataKeys(target).map(it => getMetadata(it, target));\n };\n\n export const metadata = (metadataKey: any, data: any) => {\n return Reflect.metadata(metadataKey, data);\n };\n\n export const defineMetadata = (metadataKey: any, value: any, target: any, propertyKey?: string | symbol) => {\n if (propertyKey && Reflect.defineMetadata) {\n Reflect.defineMetadata(metadataKey, value, target, propertyKey);\n } else if (Reflect.defineMetadata) {\n Reflect.defineMetadata(metadataKey, value, target);\n }\n };\n\n /**\n * \uD55C \uD0C0\uAC9F\uC5D0\uC11C \uB2E4\uB978 \uD0C0\uAC9F\uC73C\uB85C \uBAA8\uB4E0 \uBA54\uD0C0\uB370\uC774\uD130\uB97C \uBCF5\uC0AC\uD569\uB2C8\uB2E4. (\uC774\uBBF8 \uB4F1\uB85D\uB41C \uD074\uB798\uC2A4 \uAC31\uC2E0\uC6A9)\n */\n export const copyMetadata = (from: any, to: any, propertyKey?: string | symbol) => {\n const keys = propertyKey ? (Reflect as any).getOwnMetadataKeys(from, propertyKey) : (Reflect as any).getOwnMetadataKeys(from);\n for (const key of keys) {\n const data = propertyKey ? Reflect.getOwnMetadata(key, from, propertyKey) : Reflect.getOwnMetadata(key, from);\n if (propertyKey) {\n (Reflect as any).defineMetadata(key, data, to, propertyKey);\n } else {\n (Reflect as any).defineMetadata(key, data, to);\n }\n }\n };\n}\n", "export namespace FunctionUtils {\n export const getParameterNames = (func: Function | any, property?: string | symbol) => {\n if (typeof func === 'object' && property) {\n func = func[property];\n }\n // @ts-ignore https://stackoverflow.com/questions/1007981/how-to-get-function-parameter-names-values-dynamically\u3131\n return (\n new RegExp('(?:' + func.name + '\\\\s*|^)\\\\s*\\\\((.*?)\\\\)')\n .exec(func.toString().replace(/\\n/g, ''))?.[1]\n .replace(/\\/\\*.*?\\*\\//g, '')\n .replace(/ /g, '')\n .split(',') ?? []\n );\n };\n\n export const evalScript = <T>(script: string | null, obj?: any): T | null => {\n try {\n if (script && obj) {\n // eslint-disable-next-line no-new-func\n return Function(`\"use strict\";\n ${script}\n `).bind(obj)();\n } else if (script) {\n // eslint-disable-next-line no-new-func\n return new Function('return ' + script)();\n } else {\n return null;\n }\n } catch (e) {\n return null;\n }\n };\n\n /**\n * Dynamically executes a script string with provided context and arguments.\n */\n export const execute = (params: { script: string; context?: any; args?: Record<string, any> }) => {\n const { script, context, args = {} } = params;\n const argNames = Object.keys(args);\n const argValues = Object.values(args);\n return new Function(...argNames, script).apply(context, argValues);\n };\n\n /**\n * Dynamically executes a script string wrapped with 'return' with provided context and arguments.\n */\n export const executeReturn = (params: { script: string; context?: any; args?: Record<string, any> }) => {\n const { script, context, args = {} } = params;\n const argNames = Object.keys(args);\n const argValues = Object.values(args);\n return new Function(...argNames, `return ${script}`).apply(context, argValues);\n };\n}\n", "// type T0 = Exclude<undefined, unknown>;\n// type T2 = Exclude<string | number | (() => void), Function>;\n// type Omit<T, K extends keyof T> = Pick<T, Exclude<keyof T, K>>;\n// type SubPartial<T, K extends keyof T> = Omit<T, K> & Partial<Pick<T, K>>;\nexport class Optional<T> {\n static readonly EMPTY = new Optional();\n\n\n constructor(private value?: T) {\n }\n\n public static ofNullable<T>(value: T): Optional<T> {\n return value == null ? Optional.empty() : Optional.of(value);\n }\n\n public static of<T>(value: T): Optional<T> {\n return new Optional<T>(value);\n }\n\n public orElse<T>(other: T): T {\n const val = this.isPresent() ? this.value : other;\n // return (this.value != null && this.value != undefined) ? this.value : other;\n return val as T;\n }\n public isPresent(): boolean {\n return (this.value != null && this.value != undefined);\n }\n\n // public ifPresent<T>(Consumer<? super T> consumer) {\n // if (value != null)\n // consumer.accept(value);\n // }\n\n public static empty<T>(): Optional<T> {\n return Optional.EMPTY as Optional<T>;\n }\n\n // public static default<T>(value: any, def: T): T {\n // return (value != null && value != undefined) ? value : def;\n // }\n\n\n}\n", "export namespace OptionalUtils {\n export const mapIfPresent = <T,TT>(input: T | undefined | null, to: (input: T) => TT | undefined): TT | undefined => {\n if (input === undefined || input === null) {\n return undefined;\n } else {\n return to(input);\n }\n }\n}", "import { Promises } from '../promise/Promises';\n\nexport type LoadImageBitMapCallbackType = { onload: (img: ImageBitmap) => void, onerror: (e: any) => void };\n\nexport namespace ImageUtils {\n export function loadImageBitMap(src: string): Promise<ImageBitmap>;\n export function loadImageBitMap(src: string, callback: LoadImageBitMapCallbackType): void;\n export function loadImageBitMap(src: string, callback?: LoadImageBitMapCallbackType): Promise<ImageBitmap> | void {\n let targetCallback: (img: ImageBitmap) => void;\n let catchCallback: (e: any) => void;\n let promise: Promise<ImageBitmap> | undefined = undefined;\n if (callback) {\n targetCallback = callback.onload;\n catchCallback = callback.onerror;\n } else {\n const r = Promises.withResolvers<ImageBitmap>();\n promise = r.promise;\n targetCallback = r.resolve;\n catchCallback = r.reject;\n }\n\n fetch(src, {\n mode: 'cors', // CORS \uC694\uCCAD (\uAE30\uBCF8\uAC12)\n credentials: 'omit' // \"anonymous\"\uC640 \uC720\uC0AC: \uC778\uC99D \uC815\uBCF4(\uCFE0\uD0A4, HTTP \uC778\uC99D) \uD3EC\uD568\uD558\uC9C0 \uC54A\uC74C\n }).then(response => {\n return response.blob();\n }).then(it => {\n return createImageBitmap(it);\n }).then(it => {\n targetCallback(it);\n }).catch(it => {\n catchCallback(it);\n })\n return promise;\n }\n}", "import { StringUtils } from '../string/StringUtils';\n\nexport namespace Expression {\n\n // html = html.replace(/\\$\\{[\\s\\S]*?\\}\\$/g, '');\n\n export const bindExpression = (expression: string, bind: { [name: string]: ((arg: any) => any) | any }) => {\n // ${data} wow ${wow:parameter}\n // expression\uC5D0\uC11C ${...} \uD615\uD0DC\uB97C \uBAA8\uB450 \uCC3E\uC544\uC11C \uCC98\uB9AC\n return (expression ?? '').replace(/\\$\\{([\\s\\S.]*?)\\}/g, (_, group) => {\n // \uD30C\uB77C\uBBF8\uD130\uAC00 \uC788\uB294 \uACBD\uC6B0: name:param\n const [name, param] = group.split(':');\n const binder = bind[name];\n if (!binder) return '';\n if (typeof binder === 'function') {\n return binder(bind[param]);\n }\n return binder;\n });\n }\n\n /**\n * @deprecated\n */\n // export namespace Group {\n // export const isExpression = (data: string | null) => {\n // // const reg = /(?:[$#]\\{(?:(([$#]\\{)??[^$#]?[^{]*?)\\}[$#]))/g;\n // const reg = /[$#]\\{([\\s\\S.]*?)\\}[$#]/g;\n // return reg.test(data ?? '');\n // }\n //\n // export const expressionGroups = (data: string | null) => {\n // // const reg = /(?:[$#]\\{(?:(([$#]\\{)??[^$#]*?)\\}[$#]))/g;\n // // const reg = /(?:[$#]\\{(?:(([$#]\\{)??[^$#]?[^{]*?)\\}[$#]))/g;\n // const reg = /[$#]\\{([\\s\\S.]*?)\\}[$#]/g;\n // return StringUtils.regexExec(reg, data ?? '');\n // }\n // }\n export namespace Path {\n export type PathNameData = { [name: string]: string }\n export const pathNameData = (pathName: string, urlExpression: string) => {\n const urls = pathName.split('/');\n const urlExpressions = urlExpression.split('/');\n if (urls.length !== urlExpressions.length) {\n return;\n }\n const data: Path.PathNameData = {}\n for (let i = 0; i < urlExpressions.length; i++) {\n const it = urlExpressions[i];\n const urlit = urls[i];\n // ex) {serialNo:[0-9]+} or {no} ..\n const execResult = /^\\{(.+)\\}$/g.exec(it);\n if (!execResult) {\n if (it !== urlit) {\n return;\n }\n continue;\n }\n // regex check\n const [name, regex] = execResult[1].split(':'); // group1\n if (regex && !new RegExp(regex).test(urlit)) {\n return;\n }\n data[name] = urlit;\n }\n return data;\n }\n }\n}", "/**\n * ActionExpression - Dynamic expression detection and processing system\n * Supports multiple expression syntaxes: {{ }}, {{= }}, {{@ }}\n * Also supports custom wrap expressions via config\n */\n\n/**\n * \uD45C\uD604\uC2DD\uC758 \uD0C0\uC785\uC744 \uC815\uC758\uD569\uB2C8\uB2E4.\n * - 'replace': {{ script }} - \uBB38\uC790\uC5F4 \uCE58\uD658\n * - 'call-return': {{= script }} - \uD568\uC218 \uD638\uCD9C \uD6C4 \uBC18\uD658\uAC12 \uC0AC\uC6A9\n * - 'call': {{@ script }} - \uD568\uC218 \uD638\uCD9C\uB9CC \uC218\uD589 (\uBC18\uD658\uAC12 \uBB34\uC2DC)\n */\nexport type ExpressionType = 'replace' | 'call-return' | 'call';\n\nexport type ExpressionResult = {\n id: string;\n type: ExpressionType;\n original: string;\n script: string;\n expressionStart: string;\n expressionEnd: string;\n wrap?: string;\n index?: number; // \uC6D0\uBCF8 \uBB38\uC790\uC5F4\uC5D0\uC11C\uC758 \uC704\uCE58\n};\n\nexport type GetExpressionConfig = {\n wrapExpression?: string;\n};\n\n/**\n * getExpressions \uD544\uD130\uB9C1 \uC635\uC158\n * type\uACFC wrap\uC744 \uC870\uD569\uD558\uC5EC \uC0AC\uC6A9 \uAC00\uB2A5\n */\nexport type ExpressionFilterOptions = {\n type?: ExpressionType;\n wrap?: string;\n};\n\n/**\n * ActionExpression Class - Dynamic expression detection and processing\n * \n * Supported expression types:\n * - {{ script }} - String replacement (type: 'replace')\n * - {{= script }} - Call-return (type: 'call-return')\n * - {{@ script }} - Call/void (type: 'call')\n * \n * With config.wrapExpression, you can also use custom wrappers:\n * - @{{ script }}@ (wrap: '@', type: 'replace')\n * - @{{= script }}@ (wrap: '@', type: 'call-return')\n * - @{{@ script }}@ (wrap: '@', type: 'call')\n * \n * @example\n * const ae = new ActionExpression('Hello {{ name }}');\n * const result = ae.replace('id123', 'John');\n * console.log(result); // 'Hello John'\n */\nexport class ActionExpression {\n private originalTemplate: string;\n private maskingTemplate: string;\n private expressions: ExpressionResult[];\n private idToMarker: Map<string, string>;\n private processedIds: Set<string>;\n private currentTemplate: string;\n\n constructor(value: string, config?: GetExpressionConfig) {\n this.originalTemplate = value || '';\n this.idToMarker = new Map();\n this.processedIds = new Set();\n this.expressions = [];\n \n if (!value || typeof value !== 'string') {\n this.maskingTemplate = this.originalTemplate;\n this.currentTemplate = this.originalTemplate;\n return;\n }\n\n this.maskingTemplate = value;\n this.currentTemplate = value;\n\n // \uC0AC\uC6A9\uC790 \uC815\uC758 wrap expression \uCC98\uB9AC\n if (config?.wrapExpression) {\n this.processWrapExpressions(this.currentTemplate, config.wrapExpression);\n }\n\n // \uAE30\uBCF8 \uD45C\uD604\uC2DD\uB4E4 \uCC98\uB9AC (wrap expression\uACFC \uD568\uAED8 \uCC98\uB9AC \uAC00\uB2A5)\n this.processCallReturnExpressions(this.currentTemplate);\n this.processCallExpressions(this.currentTemplate);\n this.processReplaceExpressions(this.currentTemplate);\n\n // \uC6D0\uBCF8 \uBB38\uC790\uC5F4\uC5D0\uC11C\uC758 \uC704\uCE58\uB85C \uC815\uB82C\n this.sortExpressionsByPosition();\n\n // \uCD08\uAE30 \uB9C8\uC2A4\uD0B9 \uD15C\uD50C\uB9BF \uC124\uC815\n this.maskingTemplate = this.currentTemplate;\n }\n\n private sortExpressionsByPosition(): void {\n this.expressions.forEach(expr => {\n const index = this.originalTemplate.indexOf(expr.original);\n expr.index = index >= 0 ? index : 0;\n });\n \n this.expressions.sort((a, b) => (a.index ?? 0) - (b.index ?? 0));\n }\n\n private processWrapExpressions(value: string, wrapExpression: string): void {\n const wrapChar = wrapExpression.trim();\n const escapedWrap = wrapChar.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n\n // @{{= script }}@ \uD328\uD134 - \uAC00\uC7A5 \uAD6C\uCCB4\uC801\uBD80\uD130 \uC2DC\uC791\n const wrappedCallReturnRegex = new RegExp(`${escapedWrap}\\\\{\\\\{=\\\\s*(.+?)\\\\s*\\\\}\\\\}${escapedWrap}`, 'g');\n let match;\n\n while ((match = wrappedCallReturnRegex.exec(value)) !== null) {\n this.addExpression(match, 'call-return', wrapChar);\n }\n\n // @{{@ script }}@ \uD328\uD134\n const wrappedCallRegex = new RegExp(`${escapedWrap}\\\\{\\\\{@\\\\s*(.+?)\\\\s*\\\\}\\\\}${escapedWrap}`, 'g');\n while ((match = wrappedCallRegex.exec(value)) !== null) {\n this.addExpression(match, 'call', wrapChar);\n }\n\n // @{{ script }}@ \uD328\uD134 - {{ \uB4A4\uC5D0 = \uB610\uB294 @ \uC5C6\uB294 \uACBD\uC6B0\n const wrappedReplaceRegex = new RegExp(`${escapedWrap}\\\\{\\\\{(?![=@])\\\\s*(.+?)\\\\s*\\\\}\\\\}${escapedWrap}`, 'g');\n while ((match = wrappedReplaceRegex.exec(value)) !== null) {\n this.addExpression(match, 'replace', wrapChar);\n }\n }\n\n private processCallReturnExpressions(value: string): void {\n const callReturnRegex = /(?<![a-zA-Z0-9$_@#.])\\{\\{=\\s*(.+?)\\s*\\}\\}(?![a-zA-Z0-9$_@#.])/g;\n let match;\n\n while ((match = callReturnRegex.exec(value)) !== null) {\n this.addExpression(match, 'call-return');\n }\n }\n\n private processCallExpressions(value: string): void {\n const callRegex = /(?<![a-zA-Z0-9$_@#.])\\{\\{@\\s*(.+?)\\s*\\}\\}(?![a-zA-Z0-9$_@#.])/g;\n let match;\n\n while ((match = callRegex.exec(value)) !== null) {\n this.addExpression(match, 'call');\n }\n }\n\n private processReplaceExpressions(value: string): void {\n // {{ \uB4A4\uC5D0 = \uB610\uB294 @ \uC5C6\uB294 \uACBD\uC6B0\uB9CC \uB9E4\uCE6D\n // \uC55E\uB4A4\uB85C \uD2B9\uC218 \uBB38\uC790\uAC00 \uC5C6\uB294 \uACBD\uC6B0\uB9CC (\uB2E4\uB978 wrap expression\uACFC \uAD6C\uBD84)\n const replaceRegex = /(?<![a-zA-Z0-9$_@#.])\\{\\{(?![=@])\\s*(.+?)\\s*\\}\\}(?![a-zA-Z0-9$_@#.])/g;\n let match;\n\n while ((match = replaceRegex.exec(value)) !== null) {\n this.addExpression(match, 'replace');\n }\n }\n\n private addExpression(match: RegExpExecArray, type: ExpressionType, wrap?: string): void {\n const id = Math.random().toString(36).substr(2, 9);\n const original = match[0];\n const rawScript = match[1];\n const marker = `__EXPR_${id}__`;\n\n const expressionStart = original.substring(0, original.indexOf(rawScript));\n const expressionEnd = original.substring(original.indexOf(rawScript) + rawScript.length);\n\n this.idToMarker.set(id, marker);\n this.currentTemplate = this.currentTemplate.replace(original, marker);\n\n this.expressions.push({\n id,\n type,\n original,\n script: rawScript.trim(),\n expressionStart,\n expressionEnd,\n ...(wrap && { wrap })\n });\n }\n\n /**\n * \uD2B9\uC815 id\uC758 \uD45C\uD604\uC2DD\uC744 \uC8FC\uC5B4\uC9C4 \uAC12\uC73C\uB85C \uCE58\uD658\uD569\uB2C8\uB2E4.\n * \uBBF8\uCC98\uB9AC\uB41C \uD45C\uD604\uC2DD\uB4E4\uC740 \uC6D0\uBCF8 \uD615\uD0DC\uB85C \uC720\uC9C0\uB429\uB2C8\uB2E4.\n * \n * @overload\n * @param id - \uD45C\uD604\uC2DD\uC758 id\n * @param value - \uCE58\uD658\uD560 \uAC12\n * @returns \uD604\uC7AC \uC0C1\uD0DC\uC758 \uCC98\uB9AC\uB41C \uD15C\uD50C\uB9BF \uBB38\uC790\uC5F4\n */\n replace(id: string, value: string): string;\n \n /**\n * ExpressionResult \uAC1D\uCCB4\uB85C \uD45C\uD604\uC2DD\uC744 \uCE58\uD658\uD569\uB2C8\uB2E4.\n * \n * @overload\n * @param expr - ExpressionResult \uAC1D\uCCB4\n * @param value - \uCE58\uD658\uD560 \uAC12\n * @returns \uD604\uC7AC \uC0C1\uD0DC\uC758 \uCC98\uB9AC\uB41C \uD15C\uD50C\uB9BF \uBB38\uC790\uC5F4\n */\n replace(expr: ExpressionResult, value: string): string;\n \n /**\n * \uCF5C\uBC31 \uD568\uC218\uB85C \uB3D9\uC801\uC73C\uB85C \uAC12\uC744 \uACB0\uC815\uD558\uC5EC \uCE58\uD658\uD569\uB2C8\uB2E4.\n * \n * @overload\n * @param id - \uD45C\uD604\uC2DD\uC758 id\n * @param callback - \uD45C\uD604\uC2DD \uACB0\uACFC\uC5D0\uC11C \uAC12\uC744 \uACB0\uC815\uD558\uB294 \uD568\uC218\n * @returns \uD604\uC7AC \uC0C1\uD0DC\uC758 \uCC98\uB9AC\uB41C \uD15C\uD50C\uB9BF \uBB38\uC790\uC5F4\n */\n replace(id: string, callback: (expr: ExpressionResult) => string): string;\n \n /**\n * ExpressionResult \uAC1D\uCCB4\uC640 \uCF5C\uBC31 \uD568\uC218\uB85C \uCE58\uD658\uD569\uB2C8\uB2E4.\n * \n * @overload\n * @param expr - ExpressionResult \uAC1D\uCCB4\n * @param callback - \uD45C\uD604\uC2DD \uACB0\uACFC\uC5D0\uC11C \uAC12\uC744 \uACB0\uC815\uD558\uB294 \uD568\uC218\n * @returns \uD604\uC7AC \uC0C1\uD0DC\uC758 \uCC98\uB9AC\uB41C \uD15C\uD50C\uB9BF \uBB38\uC790\uC5F4\n */\n replace(expr: ExpressionResult, callback: (expr: ExpressionResult) => string): string;\n \n /**\n * \uAD6C\uD604 \uBA54\uC11C\uB4DC\n */\n replace(\n idOrExpr: string | ExpressionResult,\n valueOrCallback: string | ((expr: ExpressionResult) => string)\n ): string {\n // id \uCD94\uCD9C\n const id = typeof idOrExpr === 'string' ? idOrExpr : idOrExpr.id;\n \n // ExpressionResult \uAC1D\uCCB4 \uCC3E\uAE30 (\uCF5C\uBC31\uC778 \uACBD\uC6B0 \uD544\uC694)\n let expr: ExpressionResult | undefined;\n if (typeof valueOrCallback === 'function') {\n expr = this.expressions.find(e => e.id === id);\n if (!expr) return this.getUnprocessedTemplate();\n }\n \n // \uAC12 \uACB0\uC815\n const value = typeof valueOrCallback === 'function' \n ? valueOrCallback(expr!)\n : valueOrCallback;\n\n const marker = this.idToMarker.get(id);\n if (marker) {\n this.processedIds.add(id);\n this.currentTemplate = this.currentTemplate.replace(marker, value);\n }\n\n // \uD638\uCD9C\uD560 \uB54C\uB9C8\uB2E4 \uBBF8\uCC98\uB9AC\uB41C \uB9C8\uCEE4\uB4E4\uC744 \uC6D0\uBCF8\uC73C\uB85C \uBCF5\uC6D0\uD558\uC5EC \uBC18\uD658\n return this.getUnprocessedTemplate();\n }\n\n /**\n * \uBAA8\uB4E0 \uD45C\uD604\uC2DD \uBAA9\uB85D\uC744 \uBC18\uD658\uD569\uB2C8\uB2E4.\n * \n * @overload\n * @returns \uBAA8\uB4E0 \uD45C\uD604\uC2DD \uBAA9\uB85D\n */\n getExpressions(): ExpressionResult[];\n \n /**\n * \uD2B9\uC815 \uD0C0\uC785\uC758 \uD45C\uD604\uC2DD\uB9CC \uD544\uD130\uB9C1\uD574\uC11C \uBC18\uD658\uD569\uB2C8\uB2E4.\n * \n * @overload\n * @param type - \uD544\uD130\uB9C1\uD560 \uD45C\uD604\uC2DD \uD0C0\uC785\n * @returns \uD574\uB2F9 \uD0C0\uC785\uC758 \uD45C\uD604\uC2DD \uBAA9\uB85D\n */\n getExpressions(type: ExpressionType): ExpressionResult[];\n \n /**\n * \uD544\uD130\uB9C1 \uC635\uC158\uC73C\uB85C \uD45C\uD604\uC2DD\uC744 \uD544\uD130\uB9C1\uD574\uC11C \uBC18\uD658\uD569\uB2C8\uB2E4.\n * type\uACFC wrap\uC744 \uC870\uD569\uD558\uC5EC \uC0AC\uC6A9 \uAC00\uB2A5\uD569\uB2C8\uB2E4.\n * \n * @overload\n * @param options - \uD544\uD130\uB9C1 \uC635\uC158 { type?, wrap? }\n * @returns \uD544\uD130\uB9C1\uB41C \uD45C\uD604\uC2DD \uBAA9\uB85D\n */\n getExpressions(options: ExpressionFilterOptions): ExpressionResult[];\n \n /**\n * \uAD6C\uD604 \uBA54\uC11C\uB4DC\n */\n getExpressions(typeOrOptions?: ExpressionType | ExpressionFilterOptions): ExpressionResult[] {\n // \uD30C\uB77C\uBBF8\uD130 \uC5C6\uC74C - \uBAA8\uB4E0 \uD45C\uD604\uC2DD \uBC18\uD658\n if (!typeOrOptions) {\n return this.expressions;\n }\n\n // ExpressionType (string) - type\uC73C\uB85C\uB9CC \uD544\uD130\uB9C1\n if (typeof typeOrOptions === 'string') {\n return this.expressions.filter(expr => expr.type === typeOrOptions);\n }\n\n // ExpressionFilterOptions (object) - type\uACFC wrap\uC73C\uB85C \uD544\uD130\uB9C1\n // 'wrap' in options\uB85C wrap\uC774 \uBA85\uC2DC\uC801\uC73C\uB85C \uC9C0\uC815\uB418\uC5C8\uB294\uC9C0 \uD655\uC778\n const options = typeOrOptions as ExpressionFilterOptions;\n return this.expressions.filter(expr => {\n if (options.type && expr.type !== options.type) return false;\n if ('wrap' in options && expr.wrap !== options.wrap) return false;\n return true;\n });\n }\n\n /**\n * \uCCAB \uBC88\uC9F8 \uD45C\uD604\uC2DD\uC744 \uBC18\uD658\uD569\uB2C8\uB2E4.\n * \n * @overload\n * @returns \uCCAB \uBC88\uC9F8 \uD45C\uD604\uC2DD, \uC5C6\uC73C\uBA74 undefined\n */\n getFirstExpression(): ExpressionResult | undefined;\n \n /**\n * \uD2B9\uC815 \uD0C0\uC785\uC758 \uCCAB \uBC88\uC9F8 \uD45C\uD604\uC2DD\uC744 \uBC18\uD658\uD569\uB2C8\uB2E4.\n * \n * @overload\n * @param type - \uD544\uD130\uB9C1\uD560 \uD45C\uD604\uC2DD \uD0C0\uC785\n * @returns \uCCAB \uBC88\uC9F8 \uD45C\uD604\uC2DD, \uC5C6\uC73C\uBA74 undefined\n */\n getFirstExpression(type: ExpressionType): ExpressionResult | undefined;\n \n /**\n * \uD544\uD130\uB9C1 \uC635\uC158\uC73C\uB85C \uCCAB \uBC88\uC9F8 \uD45C\uD604\uC2DD\uC744 \uBC18\uD658\uD569\uB2C8\uB2E4.\n * \n * @overload\n * @param options - \uD544\uD130\uB9C1 \uC635\uC158 { type?, wrap? }\n * @returns \uCCAB \uBC88\uC9F8 \uD45C\uD604\uC2DD, \uC5C6\uC73C\uBA74 undefined\n */\n getFirstExpression(options: ExpressionFilterOptions): ExpressionResult | undefined;\n \n /**\n * \uAD6C\uD604 \uBA54\uC11C\uB4DC\n */\n getFirstExpression(typeOrOptions?: ExpressionType | ExpressionFilterOptions): ExpressionResult | undefined {\n if (!typeOrOptions) {\n return this.getExpressions()[0];\n }\n if (typeof typeOrOptions === 'string') {\n return this.getExpressions(typeOrOptions)[0];\n }\n return this.getExpressions(typeOrOptions as ExpressionFilterOptions)[0];\n }\n\n /**\n * \uC6D0\uBCF8 \uD15C\uD50C\uB9BF\uC744 \uBC18\uD658\uD569\uB2C8\uB2E4.\n */\n getOriginalTemplate(): string {\n return this.originalTemplate;\n }\n\n /**\n * \uB9C8\uC2A4\uD0B9 \uCC98\uB9AC\uB41C \uD15C\uD50C\uB9BF\uC744 \uBC18\uD658\uD569\uB2C8\uB2E4.\n */\n getMaskingTemplate(): string {\n return this.maskingTemplate;\n }\n\n /**\n * \uD604\uC7AC \uCC98\uB9AC \uC0C1\uD0DC\uC758 \uD15C\uD50C\uB9BF\uC744 \uBC18\uD658\uD569\uB2C8\uB2E4.\n */\n getCurrentTemplate(): string {\n return this.currentTemplate;\n }\n\n /**\n * \uBBF8\uCC98\uB9AC\uB41C \uB9C8\uCEE4\uB4E4\uC744 \uC6D0\uBCF8\uC73C\uB85C \uBCF5\uC6D0\uD55C \uD15C\uD50C\uB9BF\uC744 \uBC18\uD658\uD569\uB2C8\uB2E4.\n * replace() \uD638\uCD9C \uD6C4 \uCC98\uB9AC\uB418\uC9C0 \uC54A\uC740 \uD45C\uD604\uC2DD\uB4E4\uC744 \uC6D0\uBCF8 \uD615\uD0DC\uB85C \uB418\uB3CC\uB9BD\uB2C8\uB2E4.\n */\n getUnprocessedTemplate(): string {\n let result = this.currentTemplate;\n for (const expr of this.expressions) {\n if (!this.processedIds.has(expr.id)) {\n const m = this.idToMarker.get(expr.id);\n if (m) {\n result = result.replace(m, expr.original);\n }\n }\n }\n return result;\n }\n}\n\n/**\n * \uD568\uC218\uD615 API (\uB808\uAC70\uC2DC \uD638\uD658\uC131)\n * \uD074\uB798\uC2A4 \uAE30\uBC18 \uC0AC\uC6A9\uC744 \uAD8C\uC7A5\uD569\uB2C8\uB2E4.\n */\nexport type GetExpressionResult = {\n originalTemplate: string;\n maskingTemplate: string;\n expressions: ExpressionResult[];\n replace: (id: string, value: string) => string;\n};\n\nexport function getExpression(value: string, config?: GetExpressionConfig): GetExpressionResult {\n const ae = new ActionExpression(value, config);\n\n return {\n originalTemplate: ae.getOriginalTemplate(),\n maskingTemplate: ae.getMaskingTemplate(),\n expressions: ae.getExpressions(),\n replace: (id: string, value: string) => ae.replace(id, value)\n };\n}\n\n", "import { ReflectUtils } from '@dooboostore/core';\nimport { SpecialSelector, SwcQueryOptions, HelperHostSet } from '../types';\n\nexport interface AddEventListenerBaseOptions extends EventListenerOptions {\n capture?: boolean;\n once?: boolean;\n passive?: boolean;\n stopPropagation?: boolean;\n stopImmediatePropagation?: boolean;\n preventDefault?: boolean;\n removeOnDisconnected?: boolean;\n delegate?: boolean;\n filter?: (target: Event | CustomEvent, helper: HelperHostSet) => boolean;\n}\n\nexport interface AddEventListenerMetadata {\n propertyKey: string | symbol;\n selector: string;\n type: string;\n options: AddEventListenerBaseOptions & SwcQueryOptions & { delegate?: boolean };\n}\n\nexport const ADD_EVENT_LISTENER_METADATA_KEY = Symbol.for('simple-web-component:add-event-listener');\n\nexport function addEventListener(target: SpecialSelector, type: string, options?: AddEventListenerBaseOptions): MethodDecorator;\nexport function addEventListener(selector: string, type: string, options?: AddEventListenerBaseOptions & SwcQueryOptions & { delegate?: boolean }): MethodDecorator;\n/**\n * @addEventListener decorator to bind events to elements.\n */\nexport function addEventListener(selectorOrTarget: string, type: string, options: any = {}): MethodDecorator {\n return (targetObj: Object, propertyKey: string | symbol, descriptor: PropertyDescriptor) => {\n const constructor = targetObj.constructor;\n\n let listeners = ReflectUtils.getMetadata<AddEventListenerMetadata[]>(ADD_EVENT_LISTENER_METADATA_KEY, constructor);\n if (!listeners) {\n listeners = [];\n ReflectUtils.defineMetadata(ADD_EVENT_LISTENER_METADATA_KEY, listeners, constructor);\n }\n\n listeners.push({ propertyKey, selector: selectorOrTarget, type, options });\n };\n}\n\nexport const getAddEventListenerMetadata = (target: any): AddEventListenerMetadata[] | undefined => {\n const constructor = target instanceof Function ? target : target.constructor;\n return ReflectUtils.getMetadata(ADD_EVENT_LISTENER_METADATA_KEY, constructor);\n};\n\n/**\n * @addEventListenerHost decorator - simplified version of @addEventListener for :host selector\n * Usage: @addEventListenerHost('click')\n * Usage: @addEventListenerHost('click', { stopPropagation: true })\n */\nexport function addEventListenerHost(type: string, options?: AddEventListenerBaseOptions & SwcQueryOptions): MethodDecorator {\n return addEventListener(':host', type, options);\n}\n\n/**\n * @addEventListenerAppHost decorator - simplified version of @addEventListener for :appHost selector\n * Usage: @addEventListenerAppHost('click')\n * Usage: @addEventListenerAppHost('click', { stopPropagation: true })\n */\nexport function addEventListenerAppHost(type: string, options?: AddEventListenerBaseOptions & SwcQueryOptions): MethodDecorator {\n return addEventListener(':appHost', type, options);\n}\n", "import { ReflectUtils } from '@dooboostore/core';\n\nexport const ON_INITIALIZE_METADATA_KEY = Symbol.for('simple-web-component:on-constructor');\nexport const ON_BEFORE_CONNECTED_METADATA_KEY = Symbol.for('simple-web-component:on-before-connected');\nexport const ON_AFTER_CONNECTED_METADATA_KEY = Symbol.for('simple-web-component:on-after-connected');\nexport const ON_BEFORE_DISCONNECTED_METADATA_KEY = Symbol.for('simple-web-component:on-before-disconnected');\nexport const ON_AFTER_DISCONNECTED_METADATA_KEY = Symbol.for('simple-web-component:on-after-disconnected');\nexport const ON_BEFORE_ADOPTED_METADATA_KEY = Symbol.for('simple-web-component:on-before-adopted');\nexport const ON_AFTER_ADOPTED_METADATA_KEY = Symbol.for('simple-web-component:on-after-adopted');\nexport const ON_ADD_EVENT_LISTENER_METADATA_KEY = Symbol.for('simple-web-component:on-add-event-listener');\nexport const ON_CONNECTED_SWC_APP_METADATA_KEY = Symbol.for('simple-web-component:on-connected-swc-app');\nexport const INNER_HTML_METADATA_KEY = Symbol.for('simple-web-component:inner-html');\n\nexport const ATTRIBUTE_CHANGED_WILDCARD = '*';\n\nexport interface InnerHtmlOptions {\n useShadow?: boolean;\n}\n\nexport interface InnerHtmlMetadata {\n propertyKey: string | symbol;\n options: InnerHtmlOptions;\n}\n\nfunction createLifecycleDecorator(metadataKey: symbol): MethodDecorator {\n return (target: Object, propertyKey: string | symbol) => {\n const constructor = target.constructor;\n let list = ReflectUtils.getOwnMetadata(metadataKey, constructor) as (string | symbol)[];\n if (!list) {\n list = [];\n ReflectUtils.defineMetadata(metadataKey, list, constructor);\n }\n list.push(propertyKey);\n };\n}\n\nexport const onInitialize = createLifecycleDecorator(ON_INITIALIZE_METADATA_KEY);\nexport const onBeforeConnected = createLifecycleDecorator(ON_BEFORE_CONNECTED_METADATA_KEY);\nexport const onAfterConnected = createLifecycleDecorator(ON_AFTER_CONNECTED_METADATA_KEY);\nexport const onConnected = onAfterConnected;\n\nexport const onBeforeDisconnected = createLifecycleDecorator(ON_BEFORE_DISCONNECTED_METADATA_KEY);\nexport const onAfterDisconnected = createLifecycleDecorator(ON_AFTER_DISCONNECTED_METADATA_KEY);\nexport const onDisconnected = onAfterDisconnected;\n\nexport const onBeforeAdopted = createLifecycleDecorator(ON_BEFORE_ADOPTED_METADATA_KEY);\nexport const onAfterAdopted = createLifecycleDecorator(ON_AFTER_ADOPTED_METADATA_KEY);\nexport const onAdopted = onAfterAdopted;\n\nexport const onAddEventListener = createLifecycleDecorator(ON_ADD_EVENT_LISTENER_METADATA_KEY);\n\nexport const onConnectedSwcApp = createLifecycleDecorator(ON_CONNECTED_SWC_APP_METADATA_KEY);\n\n/**\n * @onConnectedInnerHtml decorator to define the initial HTML content when connected.\n */\nexport function onConnectedInnerHtml(options: InnerHtmlOptions): MethodDecorator;\nexport function onConnectedInnerHtml(target: Object, propertyKey: string | symbol, descriptor: PropertyDescriptor): void;\nexport function onConnectedInnerHtml(arg1?: InnerHtmlOptions | Object, arg2?: string | symbol, arg3?: PropertyDescriptor): MethodDecorator | void {\n const decorator = (options: InnerHtmlOptions, target: Object, propertyKey: string | symbol) => {\n const constructor = target.constructor;\n let list = ReflectUtils.getMetadata<InnerHtmlMetadata[]>(INNER_HTML_METADATA_KEY, constructor);\n if (!list) {\n list = [];\n ReflectUtils.defineMetadata(INNER_HTML_METADATA_KEY, list, constructor);\n }\n list.push({ propertyKey, options });\n };\n\n if (arg2) {\n return decorator({}, arg1!, arg2);\n }\n\n return (target: Object, propertyKey: string | symbol) => {\n decorator((arg1 as InnerHtmlOptions) || {}, target, propertyKey);\n };\n}\n\n/**\n * \uD504\uB85C\uD1A0\uD0C0\uC785 \uCCB4\uC778\uC744 \uC21C\uD68C\uD558\uBA70 \uBAA8\uB4E0 \uB77C\uC774\uD504\uC0AC\uC774\uD074 \uBA54\uC11C\uB4DC\uB97C \uC218\uC9D1\uD569\uB2C8\uB2E4.\n */\nexport const findAllLifecycleMetadata = <T = (string | symbol)[]>(target: any, metadataKey: symbol): T | undefined => {\n const results = ReflectUtils.findAllMetadataFlatten(metadataKey, target);\n return results.length > 0 ? (results as unknown as T) : undefined;\n};\n\nexport const getOnConnectedInnerHtmlMetadata = (target: any): InnerHtmlMetadata[] | undefined => {\n const constructor = target instanceof Function ? target : target.constructor;\n return ReflectUtils.getMetadata(INNER_HTML_METADATA_KEY, constructor);\n};\n", "import { SwcAppInterface, HostSet, HelperSet, HelperHostSet } from '../types';\nimport {getElementConfig} from \"../decorators\";\nimport { getExpression, ExpressionResult, GetExpressionConfig, GetExpressionResult } from '@dooboostore/core';\n\nexport const SWC_NOT_FOUND = Symbol.for('simple-web-component:not-found');\n\n// DOM Creation Utilities\nexport const htmlFragment = (html: string, doc?: Document): DocumentFragment => {\n const d = doc || (typeof document !== 'undefined' ? document : undefined);\n if (!d) throw new Error('Document is not available');\n const template = d.createElement('template');\n template.innerHTML = html.trim();\n return template.content;\n};\n\nexport const textNode = (text: string | any, doc?: Document): Text => {\n const d = doc || (typeof document !== 'undefined' ? document : undefined);\n if (!d) throw new Error('Document is not available');\n return d.createTextNode(text !== undefined && text !== null ? String(text) : '');\n};\n\nexport const commentNode = (comment: string | any, doc?: Document): Comment => {\n const d = doc || (typeof document !== 'undefined' ? document : undefined);\n if (!d) throw new Error('Document is not available');\n return d.createComment(comment !== undefined && comment !== null ? String(comment) : '');\n};\n\nexport const createElement = <T extends HTMLElement>(\n tagName: string,\n options?: { html?: string; attrs?: Record<string, any>; doc?: Document }\n): T => {\n const d = options?.doc || (typeof document !== 'undefined' ? document : undefined);\n if (!d) throw new Error('Document is not available');\n const el = d.createElement(tagName) as T;\n if (options?.html) el.innerHTML = options.html;\n if (options?.attrs) {\n Object.entries(options.attrs).forEach(([k, v]) => el.setAttribute(k, String(v)));\n }\n return el;\n};\n\n// Element factory functions\nexport const htmlDivElement = (html: string, options?: { doc?: Document; attrs?: Record<string, any> }): HTMLDivElement => {\n const d = options?.doc || (typeof document !== 'undefined' ? document : undefined);\n if (!d) throw new Error('Document is not available');\n const el = d.createElement('div') as HTMLDivElement;\n el.innerHTML = html.trim();\n if (options?.attrs) {\n Object.entries(options.attrs).forEach(([k, v]) => el.setAttribute(k, String(v)));\n }\n return el;\n};\n\nexport const htmlSpanElement = (html: string, options?: { doc?: Document; attrs?: Record<string, any> }): HTMLSpanElement => {\n const d = options?.doc || (typeof document !== 'undefined' ? document : undefined);\n if (!d) throw new Error('Document is not available');\n const el = d.createElement('span') as HTMLSpanElement;\n el.innerHTML = html.trim();\n if (options?.attrs) {\n Object.entries(options.attrs).forEach(([k, v]) => el.setAttribute(k, String(v)));\n }\n return el;\n};\n\nexport const htmlButtonElement = (html: string, options?: { doc?: Document; attrs?: Record<string, any> }): HTMLButtonElement => {\n const d = options?.doc || (typeof document !== 'undefined' ? document : undefined);\n if (!d) throw new Error('Document is not available');\n const el = d.createElement('button') as HTMLButtonElement;\n el.innerHTML = html.trim();\n if (options?.attrs) {\n Object.entries(options.attrs).forEach(([k, v]) => el.setAttribute(k, String(v)));\n }\n return el;\n};\n\nexport const htmlUlElement = (options?: { doc?: Document; attrs?: Record<string, any> }): HTMLUListElement => {\n const d = options?.doc || (typeof document !== 'undefined' ? document : undefined);\n if (!d) throw new Error('Document is not available');\n const el = d.createElement('ul') as HTMLUListElement;\n if (options?.attrs) {\n Object.entries(options.attrs).forEach(([k, v]) => el.setAttribute(k, String(v)));\n }\n return el;\n};\n\nexport const htmlLiElement = (html: string, options?: { doc?: Document; attrs?: Record<string, any> }): HTMLLIElement => {\n const d = options?.doc || (typeof document !== 'undefined' ? document : undefined);\n if (!d) throw new Error('Document is not available');\n const el = d.createElement('li') as HTMLLIElement;\n el.innerHTML = html.trim();\n if (options?.attrs) {\n Object.entries(options.attrs).forEach(([k, v]) => el.setAttribute(k, String(v)));\n }\n return el;\n};\n\nexport const htmlAElement = (html: string, options?: { href?: string; doc?: Document; attrs?: Record<string, any> }): HTMLAnchorElement => {\n const d = options?.doc || (typeof document !== 'undefined' ? document : undefined);\n if (!d) throw new Error('Document is not available');\n const el = d.createElement('a') as HTMLAnchorElement;\n el.innerHTML = html.trim();\n if (options?.href) el.href = options.href;\n if (options?.attrs) {\n Object.entries(options.attrs).forEach(([k, v]) => el.setAttribute(k, String(v)));\n }\n return el;\n};\n\nexport const htmlPElement = (html: string, options?: { doc?: Document; attrs?: Record<string, any> }): HTMLParagraphElement => {\n const d = options?.doc || (typeof document !== 'undefined' ? document : undefined);\n if (!d) throw new Error('Document is not available');\n const el = d.createElement('p') as HTMLParagraphElement;\n el.innerHTML = html.trim();\n if (options?.attrs) {\n Object.entries(options.attrs).forEach(([k, v]) => el.setAttribute(k, String(v)));\n }\n return el;\n};\n\nexport const htmlHeadingElement = (level: 1 | 2 | 3 | 4 | 5 | 6, html: string, options?: { doc?: Document; attrs?: Record<string, any> }): HTMLHeadingElement => {\n const d = options?.doc || (typeof document !== 'undefined' ? document : undefined);\n if (!d) throw new Error('Document is not available');\n const el = d.createElement(`h${level}`) as HTMLHeadingElement;\n el.innerHTML = html.trim();\n if (options?.attrs) {\n Object.entries(options.attrs).forEach(([k, v]) => el.setAttribute(k, String(v)));\n }\n return el;\n};\n\nexport const htmlSectionElement = (options?: { doc?: Document; attrs?: Record<string, any> }): HTMLElement => {\n const d = options?.doc || (typeof document !== 'undefined' ? document : undefined);\n if (!d) throw new Error('Document is not available');\n const el = d.createElement('section');\n if (options?.attrs) {\n Object.entries(options.attrs).forEach(([k, v]) => el.setAttribute(k, String(v)));\n }\n return el;\n};\n\nexport const htmlArticleElement = (options?: { doc?: Document; attrs?: Record<string, any> }): HTMLElement => {\n const d = options?.doc || (typeof document !== 'undefined' ? document : undefined);\n if (!d) throw new Error('Document is not available');\n const el = d.createElement('article');\n if (options?.attrs) {\n Object.entries(options.attrs).forEach(([k, v]) => el.setAttribute(k, String(v)));\n }\n return el;\n};\n\nexport namespace SwcUtils {\n\n\n export const parsePathPatternsSetAttributeString = (pathPattern: string[], path: string) => {\n return JSON.stringify(SwcUtils.parsePathPatternsSet(pathPattern, path)).replace(/\"/g, \"'\");\n }\n\n export const parsePathPatternsSet = (pathPattern: string[], path: string) => {\n return {\n path: path,\n pathData: SwcUtils.parsePathPatterns(pathPattern, path)\n };\n };\n export const parsePathPatterns = (pathPattern: string[], path: string) => {\n for (const pattern of pathPattern) {\n const data = SwcUtils.parsePathPattern(pattern, path || '/');\n if (data !== null) {\n return data;\n }\n }\n };\n\n export const getHelperSet = (win: Window): HelperSet => {\n const doc: Document = win.document;\n return {\n $d: doc,\n $w: win,\n $q: (sel: string, root?: Element | Document | ShadowRoot) => (root ?? doc).querySelector(sel),\n $qa: (sel: string, root?: Element | Document | ShadowRoot) => Array.from((root ?? doc).querySelectorAll(sel)) as HTMLElement[],\n $qi: (id: string, root?: Document | ShadowRoot) => (root ?? doc).getElementById(id) as HTMLElement\n } as const;\n };\n\n export const getHelperAndHostSet = (win: Window, el: HTMLElement): HelperHostSet => {\n const helperSet = getHelperSet(win);\n const hostSet = getHostSet(el);\n return {\n ...helperSet,\n ...hostSet,\n $this: el,\n };\n };\n\n export const getValueByPath = (obj: any, path: string, rootName: string) => {\n if (!obj || !path) return SWC_NOT_FOUND;\n\n const parts = path.split('.');\n let current = obj;\n\n for (const part of parts) {\n if (current === null || current === undefined) return SWC_NOT_FOUND;\n current = current[part];\n }\n return current;\n };\n\n /**\n * Finds the nearest logical SWC host for an element.\n * Checks __swc_host property first, then climbs the DOM tree.\n */\n export const findNearestSwcHost = (el: HTMLElement | Node): HTMLElement | undefined => {\n if ((el as any).__swc_host) return (el as any).__swc_host;\n // if ((el as any).__swc_proto_setup) return (el as any).__swc_proto_setup;\n\n let current: any = el.parentElement || (el.getRootNode?.() as any)?.host;\n const doc = el.ownerDocument;\n const win = doc?.defaultView || ((typeof window !== 'undefined' ? window : undefined) as any);\n while (current && current !== doc && current !== win) {\n if (current.__swc_host) return current.__swc_host;\n if (getElementConfig(current)) return current as HTMLElement;\n current = current.parentElement || (current.getRootNode?.() as any)?.host;\n }\n return undefined;\n };\n\n /**\n * Returns all SWC ancestors (excluding self) in [root, ..., parent] order.\n */\n export const findAllSwcHosts = (el: HTMLElement | Node): HTMLElement[] => {\n const hosts: HTMLElement[] = [];\n let current = findNearestSwcHost(el);\n while (current) {\n hosts.push(current);\n // To find the next ancestor, we must start searching from the PARENT of the found host\n current = findNearestSwcHost(current);\n }\n return hosts.reverse();\n };\n\n export const getHosts = (el: HTMLElement): HTMLElement[] => {\n const ancestors = findAllSwcHosts(el);\n if (getElementConfig(el)) return [...ancestors, el];\n return ancestors;\n };\n\n export const getHost = (el: HTMLElement): HTMLElement | undefined => {\n if (getElementConfig(el)) return el;\n return findNearestSwcHost(el);\n };\n\n export const getAppHosts = (el: HTMLElement): SwcAppInterface[] => {\n const hosts = getHosts(el);\n return hosts.filter(host => host.tagName.toLowerCase() === 'swc-app' || host.getAttribute('is')?.startsWith('swc-app-')) as SwcAppInterface[];\n };\n\n export const getAppHost = (el: HTMLElement): SwcAppInterface | undefined => {\n const appHosts = getAppHosts(el);\n const appHostsWithoutSelf = appHosts.filter(h => h !== el);\n return appHostsWithoutSelf.length > 0 ? appHostsWithoutSelf[appHostsWithoutSelf.length - 1] : undefined;\n };\n\n /**\n * Find parent app host by traversing DOM tree directly.\n * Only checks tagName and is attribute - no SWC host discovery.\n * Useful for Safari polyfill compatibility where is=\"\" elements upgrade in child-first order.\n */\n export const findParentAppHostDirect = (el: HTMLElement): SwcAppInterface | null => {\n const appHosts = findAllParentAppHostsDirect(el);\n return appHosts.length > 0 ? appHosts[appHosts.length - 1] : null;\n };\n\n /**\n * Find all parent app hosts by traversing DOM tree directly.\n * Returns array of all parent app hosts in [closest-parent, ..., root] order.\n * Only checks tagName and is attribute - no SWC host discovery.\n * Useful for Safari polyfill compatibility where is=\"\" elements upgrade in child-first order.\n */\n export const findAllParentAppHostsDirect = (el: HTMLElement): SwcAppInterface[] => {\n const appHosts: SwcAppInterface[] = [];\n \n // el \uC790\uCCB4\uBD80\uD130 \uC2DC\uC791 (el\uC774 app host\uC77C \uC218\uB3C4 \uC788\uC74C)\n let current: HTMLElement | null = el;\n\n while (current) {\n const isAppHost =\n current.tagName.toLowerCase() === 'swc-app' ||\n current.getAttribute('is')?.startsWith('swc-app-');\n if (isAppHost) {\n appHosts.push(current as SwcAppInterface);\n }\n\n // \uB2E4\uC74C \uBD80\uBAA8 \uCC3E\uAE30\n if (current.parentElement) {\n // Light DOM: \uC815\uC0C1\uC801\uC778 \uBD80\uBAA8 \uC694\uC18C\n current = current.parentElement;\n } else {\n // parentElement\uAC00 \uC5C6\uC74C = Shadow root\uC758 \uC9C1\uC811 \uC790\uC2DD\uC77C \uC218 \uC788\uC74C\n const root = current.getRootNode();\n if (root instanceof ShadowRoot) {\n // Shadow host\uB85C \uC62C\uB77C\uAC00\uAE30\n current = root.host as HTMLElement;\n } else {\n // Document root \uB3C4\uB2EC\n break;\n }\n }\n }\n return appHosts.reverse(); // [root, ..., closest-parent]\n };\n\n export const getHostSet = (el: HTMLElement): HostSet => {\n const ancestors = findAllSwcHosts(el); // [root, ..., parent]\n \n const $host = ancestors.length > 0 ? ancestors[ancestors.length - 1] : null;\n const $parentHost = ancestors.length > 1 ? ancestors[ancestors.length - 2] : null;\n const $hosts = ancestors;\n const $firstHost = ancestors.length > 0 ? ancestors[0] : null;\n\n // Collect loop contexts\n const loopContext: Record<string, any> = {};\n let curr: any = el;\n const rootEl = el.ownerDocument?.documentElement;\n while (curr && curr !== rootEl) {\n if (curr.__swc_loop_context) {\n Object.assign(loopContext, curr.__swc_loop_context);\n }\n curr = curr.parentElement || (curr.getRootNode() as any).host;\n }\n\n const $appHosts = SwcUtils.findAllParentAppHostsDirect(el); //$hosts.filter(h => h.tagName.toLowerCase() === 'swc-app' || h.getAttribute('is')?.startsWith('swc-app-')) as SwcAppInterface[];\n // console.log('apphosts00000000', $appHosts)\n const $appHost = $appHosts.length > 0 ? ($appHosts[$appHosts.length - 1] === el ? ($appHosts.length > 1 ? $appHosts[$appHosts.length - 2] : null) : $appHosts[$appHosts.length - 1]) : null;\n const $firstAppHost = $appHosts.length > 0 ? $appHosts[0] : null;\n\n return {\n $host,\n $parentHost,\n $hosts,\n $firstHost,\n $lastHost: $parentHost,\n $appHost,\n $appHosts,\n $firstAppHost,\n $lastAppHost: $appHost,\n ...loopContext\n } as any;\n };\n\n export const parsePathPattern = (pattern: string | undefined, currentPath: string): { [key: string]: string } | null => {\n // pattern\uC774 null/undefined\uBA74 \uC640\uC77C\uB4DC\uCE74\uB4DC (\uBAA8\uB4E0 \uACBD\uB85C \uB9E4\uCE6D)\n if (pattern === null || pattern === undefined) return {};\n \n // \uACF5\uBC31\uB9CC \uC788\uB294 \uD328\uD134\uB3C4 \uC640\uC77C\uB4DC\uCE74\uB4DC\n const trimmedPattern = pattern.trim();\n if (trimmedPattern === '' && pattern !== '') return {}; // \uACF5\uBC31 \uBB38\uC790\uB9CC \uC788\uB294 \uACBD\uC6B0\n \n // \uD328\uD134\uC744 \uC815\uADDC\uC2DD\uC73C\uB85C \uBCC0\uD658\n // \uC9C0\uC6D0 \uD615\uC2DD:\n // {id} \u2192 ([^/]+) \uAE30\uBCF8 (/ \uC81C\uC678\uD55C \uBAA8\uB4E0 \uBB38\uC790)\n // {tail:.*} \u2192 (.*) \uC815\uADDC\uD45C\uD604\uC2DD \uC9C1\uC811 \uC9C0\uC815\n // {slug:[a-z0-9-]+} \u2192 ([a-z0-9-]+)\n const paramNames: string[] = [];\n const regexPattern = trimmedPattern.replace(/{(\\w+)(?::(.+?))?}/g, (match, paramName, customRegex) => {\n paramNames.push(paramName);\n // customRegex\uAC00 \uC788\uC73C\uBA74 \uC0AC\uC6A9, \uC5C6\uC73C\uBA74 \uAE30\uBCF8\uAC12 ([^/]+)\n return `(${customRegex || '[^/]+'})`;\n });\n \n const regex = new RegExp(`^${regexPattern}$`);\n const match = currentPath.match(regex);\n \n if (!match) return null;\n \n const result: { [key: string]: string } = {};\n paramNames.forEach((name, index) => {\n result[name] = match[index + 1];\n });\n \n return result;\n };\n\n\n};\n", "import { ReflectUtils } from '@dooboostore/core';\nimport { SpecialSelector, SwcQueryOptions } from '../types';\nimport { ensureInit, getElementConfig } from './elementDefine';\nimport { SwcUtils } from '../utils/Utils';\n\nexport interface EmitCustomEventBaseOptions {\n bubbles?: boolean;\n composed?: boolean;\n cancelable?: boolean;\n}\n\nexport interface EmitCustomEventMetadata {\n propertyKey: string | symbol;\n selector: string;\n type: string;\n options: (EmitCustomEventBaseOptions & SwcQueryOptions) | (EmitCustomEventBaseOptions & SwcQueryOptions & { attributeName?: string });\n}\n\nexport const EMIT_CUSTOM_EVENT_METADATA_KEY = Symbol.for('simple-web-component:emit-custom-event');\nexport function emitCustomEvent(target: SpecialSelector, type: string, options?: EmitCustomEventBaseOptions): MethodDecorator;\nexport function emitCustomEvent(selector: string, type: string, options?: EmitCustomEventBaseOptions & SwcQueryOptions): MethodDecorator;\n/**\n * @emitCustomEvent decorator to dispatch custom events to a target.\n */\nexport function emitCustomEvent(selectorOrTarget: string, type: string, options: any = {}): MethodDecorator {\n return (targetObj: Object, propertyKey: string | symbol, descriptor: PropertyDescriptor) => {\n const constructor = targetObj.constructor;\n\n const fullOptions: any = { ...options, type };\n\n if (fullOptions.bubbles === undefined) fullOptions.bubbles = true;\n if (fullOptions.composed === undefined) fullOptions.composed = true;\n\n let list = ReflectUtils.getMetadata<EmitCustomEventMetadata[]>(EMIT_CUSTOM_EVENT_METADATA_KEY, constructor);\n if (!list) {\n list = [];\n ReflectUtils.defineMetadata(EMIT_CUSTOM_EVENT_METADATA_KEY, list, constructor);\n }\n list.push({ propertyKey, selector: selectorOrTarget, type, options: fullOptions });\n\n const original = descriptor.value;\n descriptor.value = async function (...args: any[]) {\n ensureInit(this);\n const detail = await original.apply(this, args);\n const event = new CustomEvent(type, {\n detail,\n bubbles: fullOptions.bubbles,\n composed: fullOptions.composed,\n cancelable: fullOptions.cancelable\n });\n\n const hostSet = SwcUtils.getHostSet(this as any);\n const conf = getElementConfig(this);\n const currentWin = (this as any)._resolveWindow?.(conf) || ((typeof window !== 'undefined' ? window : undefined) as Window);\n // console.log('emitEEEEEEEEEEE', hostSet);\n\n const eventTargets: EventTarget[] = [];\n if (selectorOrTarget === ':window') eventTargets.push(currentWin);\n else if (selectorOrTarget === ':document') eventTargets.push(currentWin.document);\n else if (selectorOrTarget === ':parentHost') {\n if (hostSet.$parentHost) eventTargets.push(hostSet.$parentHost);\n } else if (selectorOrTarget === ':appHost') {\n if (hostSet.$appHost) eventTargets.push(hostSet.$appHost);\n } else if (selectorOrTarget === ':firstHost') {\n if (hostSet.$firstHost) eventTargets.push(hostSet.$firstHost);\n } else if (selectorOrTarget === ':lastHost') {\n if (hostSet.$lastHost) eventTargets.push(hostSet.$lastHost);\n } else if (selectorOrTarget === ':firstAppHost') {\n if (hostSet.$firstAppHost) eventTargets.push(hostSet.$firstAppHost);\n } else if (selectorOrTarget === ':lastAppHost') {\n if (hostSet.$lastAppHost) eventTargets.push(hostSet.$lastAppHost);\n } else if (selectorOrTarget === ':hosts') {\n hostSet.$hosts.forEach(h => eventTargets.push(h));\n } else if (selectorOrTarget === ':appHosts') {\n hostSet.$appHosts.forEach(h => eventTargets.push(h));\n } else if (selectorOrTarget === ':host' || !selectorOrTarget) eventTargets.push(this as any);\n else {\n const r = fullOptions.root || 'auto';\n const searchRoots: (HTMLElement | ShadowRoot)[] = [];\n if (r === 'auto') searchRoots.push(this.shadowRoot || (this as any));\n else if (r === 'light') searchRoots.push(this as any);\n else if (r === 'shadow' && this.shadowRoot) searchRoots.push(this.shadowRoot);\n else if (r === 'all') {\n searchRoots.push(this as any);\n if (this.shadowRoot) searchRoots.push(this.shadowRoot);\n }\n\n searchRoots.forEach(sr => {\n sr.querySelectorAll(selectorOrTarget).forEach(el => eventTargets.push(el));\n });\n }\n\n eventTargets.forEach(t => t.dispatchEvent(event));\n return detail;\n };\n };\n}\n\nexport const getEmitCustomEventMetadataList = (target: any): EmitCustomEventMetadata[] | undefined => {\n const constructor = target instanceof Function ? target : target.constructor;\n return ReflectUtils.getMetadata(EMIT_CUSTOM_EVENT_METADATA_KEY, constructor);\n};\n\n/**\n * @emitCustomEventHost decorator - simplified version of @emitCustomEvent for :host selector\n * Usage: @emitCustomEventHost('navigate') // default attributeName: 'on-emit-navigate'\n * Usage: @emitCustomEventHost('navigate', { attributeName: 'on-navigate' })\n * \n * The attributeName option is used to automatically observe attributes for this event.\n * For example, { attributeName: 'on-navigate' } will add 'on-navigate' to observedAttributes.\n */\nexport function emitCustomEventHost(type: string, options: EmitCustomEventBaseOptions & SwcQueryOptions & { attributeName?: string } = {}): MethodDecorator {\n if (!options.attributeName) {\n options.attributeName = `on-emit-${type}`;\n }\n return emitCustomEvent(':host', type, options);\n}\n", "import {ReflectUtils} from '@dooboostore/core';\n\nexport const ON_ATTRIBUTE_CHANGED_METADATA_KEY = Symbol.for('simple-web-component:on-attribute-changed');\n\n/**\n * @changedAttributeHost decorator - fires when any attribute on :host changes\n * Usage: @changedAttributeHost('data-product-id')\n */\nexport function changedAttributeHost(attributeName?: string): MethodDecorator {\n return (target: Object, propertyKey: string | symbol) => {\n const constructor = target.constructor;\n let meta = ReflectUtils.getOwnMetadata(ON_ATTRIBUTE_CHANGED_METADATA_KEY, constructor) as Map<string, (string | symbol)[]>;\n if (!meta) {\n meta = new Map<string, (string | symbol)[]>();\n ReflectUtils.defineMetadata(ON_ATTRIBUTE_CHANGED_METADATA_KEY, meta, constructor);\n }\n\n const name = attributeName || String(propertyKey);\n let methods = meta.get(name);\n if (!methods) {\n methods = [];\n meta.set(name, methods);\n }\n if (!methods.includes(propertyKey)) methods.push(propertyKey);\n };\n}\n\nexport const getChangedAttributeMetadata = (target: any): Map<string, (string | symbol)[]> | undefined => {\n const constructor = target instanceof Function ? target : target.constructor;\n return ReflectUtils.getMetadata(ON_ATTRIBUTE_CHANGED_METADATA_KEY, constructor);\n};\n\nexport const findAllAttributeChangedMetadata = (target: any): Map<string, (string | symbol)[]> => {\n return ReflectUtils.findAllMapMetadata<string, string | symbol>(ON_ATTRIBUTE_CHANGED_METADATA_KEY, target);\n};\n", "import { ReflectUtils } from '@dooboostore/core';\nimport { ensureInit } from './elementDefine';\nimport { SwcUtils } from '../utils/Utils';\nimport { SwcQueryOptions, HelperHostSet } from '../types';\n\nexport type AttributeAction = 'set' | 'update' | 'remove';\n\nexport interface AttributeApplyOptions extends SwcQueryOptions {\n name?: string;\n}\n\nexport interface AttributeApplyMetadata {\n propertyKey: string | symbol;\n selector: string;\n action: AttributeAction;\n options: AttributeApplyOptions;\n}\n\nexport const ATTRIBUTE_APPLY_METADATA_KEY = Symbol.for('simple-web-component:attribute-apply');\n\nfunction createAttributeDecorator(action: AttributeAction) {\n return (selector: string, nameOrOptions?: string | AttributeApplyOptions, options: AttributeApplyOptions = {}): MethodDecorator => {\n return (target: Object, propertyKey: string | symbol, descriptor: PropertyDescriptor) => {\n const constructor = target.constructor;\n let metaList = ReflectUtils.getOwnMetadata(ATTRIBUTE_APPLY_METADATA_KEY, constructor) as Map<string | symbol, AttributeApplyMetadata>;\n if (!metaList) {\n metaList = new Map<string | symbol, AttributeApplyMetadata>();\n ReflectUtils.defineMetadata(ATTRIBUTE_APPLY_METADATA_KEY, metaList, constructor);\n }\n\n let attributeName = typeof nameOrOptions === 'string' ? nameOrOptions : undefined;\n let finalOptions = options;\n \n if (typeof nameOrOptions === 'object' && nameOrOptions !== null) {\n finalOptions = nameOrOptions as AttributeApplyOptions;\n }\n\n metaList.set(propertyKey, { \n propertyKey, \n selector, \n action, \n options: { ...finalOptions, name: attributeName } \n });\n\n const original = descriptor.value;\n descriptor.value = async function (...args: any[]) {\n ensureInit(this);\n const res = await (original as any).apply(this, args);\n if (res !== undefined) {\n const win = (this as any).ownerDocument?.defaultView || window;\n const host = this as unknown as HTMLElement;\n const hostSet = { ...SwcUtils.getHelperAndHostSet(win, host), $this: this };\n const r = finalOptions.root || 'auto';\n const targetEls: HTMLElement[] = [];\n\n const applyRoot = (t: any) => {\n if (!t || !(t instanceof win.HTMLElement)) return;\n targetEls.push(t);\n };\n\n if (selector === ':parentHost') applyRoot(hostSet.$parentHost);\n else if (selector === ':appHost') applyRoot(hostSet.$appHost);\n else if (selector === ':firstHost') applyRoot(hostSet.$firstHost);\n else if (selector === ':lastHost') applyRoot(hostSet.$lastHost);\n else if (selector === ':firstAppHost') applyRoot(hostSet.$firstAppHost);\n else if (selector === ':lastAppHost') applyRoot(hostSet.$lastAppHost);\n else if (selector === ':hosts') hostSet.$hosts.forEach(applyRoot);\n else if (selector === ':appHosts') hostSet.$appHosts.forEach(applyRoot);\n else if (selector === ':host' || !selector) applyRoot(host);\n else {\n const targetRoot = r === 'auto' ? (host.shadowRoot || host) : (r === 'shadow' ? host.shadowRoot : host);\n if (targetRoot) {\n const found = targetRoot.querySelectorAll(selector);\n if (found) targetEls.push(...(Array.from(found) as HTMLElement[]));\n }\n }\n\n targetEls.forEach(targetEl => {\n const resolvedRes = typeof res === 'function' ? (res as any)(targetEl, hostSet) : res;\n\n if (action === 'set' || action === 'update') {\n if (attributeName) {\n // Case: @setAttribute(selector, 'name')\n if (resolvedRes === null || resolvedRes === undefined || resolvedRes === false) {\n targetEl.removeAttribute(attributeName);\n } else {\n targetEl.setAttribute(attributeName, resolvedRes === true ? '' : String(resolvedRes));\n }\n } else if (typeof resolvedRes === 'object' && resolvedRes !== null && !Array.isArray(resolvedRes)) {\n // Case: @applyAttribute(selector) with Object return\n Object.entries(resolvedRes as any).forEach(([attr, val]) => {\n const finalVal = typeof val === 'function' ? val(targetEl, hostSet) : val;\n if (finalVal === null || finalVal === undefined || finalVal === false) {\n targetEl.removeAttribute(attr);\n } else {\n targetEl.setAttribute(attr, finalVal === true ? '' : String(finalVal));\n }\n });\n }\n } else if (action === 'remove') {\n if (attributeName) {\n targetEl.removeAttribute(attributeName);\n } else if (typeof resolvedRes === 'object' && resolvedRes !== null && !Array.isArray(resolvedRes)) {\n Object.entries(resolvedRes as any).forEach(([attr, val]) => {\n const shouldRemove = typeof val === 'function' ? val(targetEl, hostSet) : !!val;\n if (shouldRemove) targetEl.removeAttribute(attr);\n });\n } else {\n const attrs = Array.isArray(resolvedRes) ? resolvedRes : [resolvedRes];\n attrs.forEach(a => targetEl.removeAttribute(String(a)));\n }\n }\n });\n }\n return res;\n };\n return descriptor;\n };\n };\n}\n\nexport function applyAttribute(selector: string, action: AttributeAction = 'update', options: AttributeApplyOptions = {}): MethodDecorator {\n return createAttributeDecorator(action)(selector, options);\n}\n\nexport const setAttribute = (selector: string, nameOrOptions?: string | AttributeApplyOptions, options: AttributeApplyOptions = {}) => createAttributeDecorator('set')(selector, nameOrOptions, options);\nexport const updateAttribute = (selector: string, nameOrOptions?: string | AttributeApplyOptions, options: AttributeApplyOptions = {}) => createAttributeDecorator('update')(selector, nameOrOptions, options);\nexport const removeAttribute = (selector: string, nameOrOptions?: string | AttributeApplyOptions, options: AttributeApplyOptions = {}) => createAttributeDecorator('remove')(selector, nameOrOptions, options);\n\n// Host versions\nexport function applyAttributeHost(action: AttributeAction = 'update', options: AttributeApplyOptions = {}): MethodDecorator {\n return createAttributeDecorator(action)(':host', options);\n}\nexport const setAttributeHost = (nameOrOptions: string | AttributeApplyOptions, options: AttributeApplyOptions = {}) => createAttributeDecorator('set')(':host', nameOrOptions, options);\nexport const updateAttributeHost = (nameOrOptions: string | AttributeApplyOptions, options: AttributeApplyOptions = {}) => createAttributeDecorator('update')(':host', nameOrOptions, options);\nexport const removeAttributeHost = (nameOrOptions?: string | AttributeApplyOptions, options: AttributeApplyOptions = {}) => createAttributeDecorator('remove')(':host', nameOrOptions, options);\n\nexport const findAllAttributeApplyMetadata = (target: any): Map<string | symbol, AttributeApplyMetadata> => {\n const result = new Map<string | symbol, AttributeApplyMetadata>();\n const maps = ReflectUtils.findAllMetadata<Map<string | symbol, AttributeApplyMetadata>>(ATTRIBUTE_APPLY_METADATA_KEY, target);\n maps.forEach(map => {\n if (map instanceof Map) {\n map.forEach((v, k) => result.set(k, v));\n }\n });\n return result;\n};\n", "import { ReflectUtils } from '@dooboostore/core';\nimport { getElementConfig, ensureInit } from './elementDefine';\nimport { SwcUtils } from '../utils/Utils';\nimport { SpecialSelector, SwcQueryOptions } from '../types';\n\nexport interface QueryMetadata {\n propertyKey: string | symbol;\n selector: string;\n options: SwcQueryOptions;\n}\n\nexport const QUERY_METADATA_KEY = Symbol.for('simple-web-component:query');\n\nexport function query(target: SpecialSelector): PropertyDecorator;\nexport function query(selector: string, options?: SwcQueryOptions): PropertyDecorator;\n/**\n * @query decorator to inject a single element into a class property.\n */\nexport function query(selectorOrTarget: string, options: any = {}): PropertyDecorator {\n return (targetObj: Object, propertyKey: string | symbol, descriptor?: never): void => {\n if (descriptor !== undefined) {\n throw new Error(`@query decorator cannot be used on methods. (Method: ${String(propertyKey)})`);\n }\n\n const constructor = targetObj.constructor;\n let queries = ReflectUtils.getMetadata<QueryMetadata[]>(QUERY_METADATA_KEY, constructor);\n if (!queries) {\n queries = [];\n ReflectUtils.defineMetadata(QUERY_METADATA_KEY, queries, constructor);\n }\n queries.push({ propertyKey, selector: selectorOrTarget, options });\n\n // const propertyType = Reflect.getMetadata(\"design:type\", targetObj, propertyKey);\n // console.log(`Property ${String(propertyKey)} type is:`, propertyType.name);\n Object.defineProperty(targetObj, propertyKey, {\n get(this: HTMLElement) {\n ensureInit(this);\n const selector = selectorOrTarget;\n\n const r = options.root || 'auto';\n const applyRoot = (t: any) => {\n if (!t || !(t instanceof HTMLElement)) return t;\n if (r === 'auto') return t.shadowRoot || t;\n if (r === 'shadow') return t.shadowRoot;\n if (r === 'light') return t;\n if (r === 'all') return t.shadowRoot || t; // query only returns one, so shadow preferred\n return t;\n };\n\n // --- Special Selectors: HostSet ---\n const hostSet = SwcUtils.getHostSet(this);\n if (selector === ':parentHost') return applyRoot(hostSet.$parentHost);\n if (selector === ':appHost') return applyRoot(hostSet.$appHost);\n if (selector === ':firstHost') return applyRoot(hostSet.$firstHost);\n if (selector === ':lastHost') return applyRoot(hostSet.$lastHost);\n if (selector === ':firstAppHost') return applyRoot(hostSet.$firstAppHost);\n if (selector === ':lastAppHost') return applyRoot(hostSet.$lastAppHost);\n\n // --- Special Selectors: Env ---\n const config = getElementConfig(this);\n const win = config?.window || window;\n if (selector === ':window') return win;\n if (selector === ':document') return win.document;\n if (selector === ':host') return applyRoot(this);\n\n // --- Standard Selectors ---\n if (r === 'shadow') return this.shadowRoot ? this.shadowRoot.querySelector(selector) : null;\n if (r === 'light') return this.querySelector(selector);\n if (r === 'all') {\n const shadowMatch = this.shadowRoot ? this.shadowRoot.querySelector(selector) : null;\n return shadowMatch || this.querySelector(selector);\n }\n return (this.shadowRoot || this).querySelector(selector);\n },\n set(this: HTMLElement, nv: any) {\n ensureInit(this);\n if (nv === null || nv === undefined) {\n const selector = selectorOrTarget;\n if (selector.startsWith(':') && selector !== ':host') return;\n\n const r = options.root || 'auto';\n const targets: Element[] = [];\n\n if (r === 'shadow') {\n if (this.shadowRoot?.querySelector(selector)) targets.push(this.shadowRoot.querySelector(selector)!);\n } else if (r === 'light') {\n if (this.querySelector(selector)) targets.push(this.querySelector(selector)!);\n } else if (r === 'all') {\n if (this.shadowRoot?.querySelector(selector)) targets.push(this.shadowRoot.querySelector(selector)!);\n if (this.querySelector(selector)) targets.push(this.querySelector(selector)!);\n } else {\n const el = (this.shadowRoot || this).querySelector(selector);\n if (el) targets.push(el);\n }\n\n targets.forEach(t => t.remove());\n }\n },\n enumerable: true,\n configurable: true\n });\n };\n}\n\n/**\n * @queryHost decorator - simplified version of @query for :host selector\n * Usage: @queryHost testzzs: HTMLElement | undefined;\n * Usage: @queryHost() testzzs: HTMLElement | undefined;\n * Usage: @queryHost({ root: 'shadow' }) testzzs: HTMLElement | undefined;\n */\nexport function queryHost(target: Object, propertyKey: string | symbol): void;\nexport function queryHost(): PropertyDecorator;\nexport function queryHost(options: SwcQueryOptions): PropertyDecorator;\nexport function queryHost(targetOrOptions?: any, propertyKey?: string | symbol): any {\n // Direct decorator usage: @queryHost (no parentheses)\n if (propertyKey !== undefined && (typeof propertyKey === 'string' || typeof propertyKey === 'symbol')) {\n return query(':host', {})(targetOrOptions, propertyKey);\n }\n\n // @queryHost() or @queryHost(options)\n if (typeof targetOrOptions === 'object' && targetOrOptions !== null) {\n return query(':host', targetOrOptions as SwcQueryOptions);\n } else {\n return query(':host', {});\n }\n}\n\n/**\n * @host - Alias for @queryHost decorator\n * Usage: @host element: HTMLElement | undefined;\n * Usage: @host() element: HTMLElement | undefined;\n * Usage: @host({ root: 'shadow' }) element: HTMLElement | undefined;\n */\nexport const host = queryHost;\n\n/**\n * @parentHost - Query :parentHost (Direct parent SWC component)\n * Usage: @parentHost parent: HTMLElement | undefined;\n * Usage: @parentHost() parent: HTMLElement | undefined;\n * Usage: @parentHost({ root: 'shadow' }) parent: HTMLElement | undefined;\n */\nexport function parentHost(target: Object, propertyKey: string | symbol): void;\nexport function parentHost(): PropertyDecorator;\nexport function parentHost(options: SwcQueryOptions): PropertyDecorator;\nexport function parentHost(targetOrOptions?: any, propertyKey?: string | symbol): any {\n if (propertyKey !== undefined && (typeof propertyKey === 'string' || typeof propertyKey === 'symbol')) {\n return query(':parentHost', {})(targetOrOptions, propertyKey);\n }\n if (typeof targetOrOptions === 'object' && targetOrOptions !== null) {\n return query(':parentHost', targetOrOptions as SwcQueryOptions);\n } else {\n return query(':parentHost', {});\n }\n}\n\n/**\n * @appHost - Query :appHost (Nearest <swc-app>)\n * Usage: @appHost app: SwcAppInterface | undefined;\n * Usage: @appHost() app: SwcAppInterface | undefined;\n * Usage: @appHost({ root: 'shadow' }) app: SwcAppInterface | undefined;\n */\nexport function appHost(target: Object, propertyKey: string | symbol): void;\nexport function appHost(): PropertyDecorator;\nexport function appHost(options: SwcQueryOptions): PropertyDecorator;\nexport function appHost(targetOrOptions?: any, propertyKey?: string | symbol): any {\n if (propertyKey !== undefined && (typeof propertyKey === 'string' || typeof propertyKey === 'symbol')) {\n return query(':appHost', {})(targetOrOptions, propertyKey);\n }\n if (typeof targetOrOptions === 'object' && targetOrOptions !== null) {\n return query(':appHost', targetOrOptions as SwcQueryOptions);\n } else {\n return query(':appHost', {});\n }\n}\n\n/**\n * @firstHost - Query :firstHost (First component in hierarchy)\n * Usage: @firstHost first: HTMLElement | undefined;\n * Usage: @firstHost() first: HTMLElement | undefined;\n * Usage: @firstHost({ root: 'shadow' }) first: HTMLElement | undefined;\n */\nexport function firstHost(target: Object, propertyKey: string | symbol): void;\nexport function firstHost(): PropertyDecorator;\nexport function firstHost(options: SwcQueryOptions): PropertyDecorator;\nexport function firstHost(targetOrOptions?: any, propertyKey?: string | symbol): any {\n if (propertyKey !== undefined && (typeof propertyKey === 'string' || typeof propertyKey === 'symbol')) {\n return query(':firstHost', {})(targetOrOptions, propertyKey);\n }\n if (typeof targetOrOptions === 'object' && targetOrOptions !== null) {\n return query(':firstHost', targetOrOptions as SwcQueryOptions);\n } else {\n return query(':firstHost', {});\n }\n}\n\n/**\n * @lastHost - Query :lastHost (Last component in hierarchy)\n * Usage: @lastHost last: HTMLElement | undefined;\n * Usage: @lastHost() last: HTMLElement | undefined;\n * Usage: @lastHost({ root: 'shadow' }) last: HTMLElement | undefined;\n */\nexport function lastHost(target: Object, propertyKey: string | symbol): void;\nexport function lastHost(): PropertyDecorator;\nexport function lastHost(options: SwcQueryOptions): PropertyDecorator;\nexport function lastHost(targetOrOptions?: any, propertyKey?: string | symbol): any {\n if (propertyKey !== undefined && (typeof propertyKey === 'string' || typeof propertyKey === 'symbol')) {\n return query(':lastHost', {})(targetOrOptions, propertyKey);\n }\n if (typeof targetOrOptions === 'object' && targetOrOptions !== null) {\n return query(':lastHost', targetOrOptions as SwcQueryOptions);\n } else {\n return query(':lastHost', {});\n }\n}\n\n/**\n * @firstAppHost - Query :firstAppHost (First <swc-app> in hierarchy)\n * Usage: @firstAppHost app: SwcAppInterface | undefined;\n * Usage: @firstAppHost() app: SwcAppInterface | undefined;\n * Usage: @firstAppHost({ root: 'shadow' }) app: SwcAppInterface | undefined;\n */\nexport function firstAppHost(target: Object, propertyKey: string | symbol): void;\nexport function firstAppHost(): PropertyDecorator;\nexport function firstAppHost(options: SwcQueryOptions): PropertyDecorator;\nexport function firstAppHost(targetOrOptions?: any, propertyKey?: string | symbol): any {\n if (propertyKey !== undefined && (typeof propertyKey === 'string' || typeof propertyKey === 'symbol')) {\n return query(':firstAppHost', {})(targetOrOptions, propertyKey);\n }\n if (typeof targetOrOptions === 'object' && targetOrOptions !== null) {\n return query(':firstAppHost', targetOrOptions as SwcQueryOptions);\n } else {\n return query(':firstAppHost', {});\n }\n}\n\n/**\n * @lastAppHost - Query :lastAppHost (Last <swc-app> in hierarchy)\n * Usage: @lastAppHost app: SwcAppInterface | undefined;\n * Usage: @lastAppHost() app: SwcAppInterface | undefined;\n * Usage: @lastAppHost({ root: 'shadow' }) app: SwcAppInterface | undefined;\n */\nexport function lastAppHost(target: Object, propertyKey: string | symbol): void;\nexport function lastAppHost(): PropertyDecorator;\nexport function lastAppHost(options: SwcQueryOptions): PropertyDecorator;\nexport function lastAppHost(targetOrOptions?: any, propertyKey?: string | symbol): any {\n if (propertyKey !== undefined && (typeof propertyKey === 'string' || typeof propertyKey === 'symbol')) {\n return query(':lastAppHost', {})(targetOrOptions, propertyKey);\n }\n if (typeof targetOrOptions === 'object' && targetOrOptions !== null) {\n return query(':lastAppHost', targetOrOptions as SwcQueryOptions);\n } else {\n return query(':lastAppHost', {});\n }\n}\n\nexport const getQueryMetadata = (target: any): QueryMetadata[] | undefined => {\n const constructor = target instanceof Function ? target : target.constructor;\n return ReflectUtils.getMetadata(QUERY_METADATA_KEY, constructor);\n};", "import { ReflectUtils } from '@dooboostore/core';\nimport { getElementConfig, ensureInit } from './elementDefine';\nimport { SwcUtils } from '../utils/Utils';\nimport { SpecialSelector, SwcQueryOptions } from '../types';\n\nexport interface QueryAllMetadata {\n propertyKey: string | symbol;\n selector: string;\n options: SwcQueryOptions;\n}\n\nexport const QUERY_ALL_METADATA_KEY = Symbol.for('simple-web-component:query-all');\n\nexport function queryAll(target: SpecialSelector): PropertyDecorator;\nexport function queryAll(selector: string, options?: SwcQueryOptions): PropertyDecorator;\n/**\n * @queryAll decorator to inject a list of elements into a class property.\n */\nexport function queryAll(selectorOrTarget: string, options: any = {}): PropertyDecorator {\n return (targetObj: Object, propertyKey: string | symbol, descriptor?: never): void => {\n if (descriptor !== undefined) {\n throw new Error(`@queryAll decorator cannot be used on methods. (Method: ${String(propertyKey)})`);\n }\n\n const constructor = targetObj.constructor;\n let queries = ReflectUtils.getMetadata<QueryAllMetadata[]>(QUERY_ALL_METADATA_KEY, constructor);\n if (!queries) {\n queries = [];\n ReflectUtils.defineMetadata(QUERY_ALL_METADATA_KEY, queries, constructor);\n }\n queries.push({ propertyKey, selector: selectorOrTarget, options });\n\n Object.defineProperty(targetObj, propertyKey, {\n get(this: HTMLElement) {\n ensureInit(this);\n const selector = selectorOrTarget;\n\n const r = options.root || 'auto';\n const applyRoot = (t: any): any[] => {\n if (!t) return [];\n const items = Array.isArray(t) ? t : [t];\n const results: any[] = [];\n items.forEach(it => {\n if (!(it instanceof HTMLElement)) {\n results.push(it);\n return;\n }\n if (r === 'auto') results.push(it.shadowRoot || it);\n else {\n if (r === 'light' || r === 'all') results.push(it);\n if ((r === 'shadow' || r === 'all') && it.shadowRoot) results.push(it.shadowRoot);\n }\n });\n return results;\n };\n\n // --- Special Selectors: HostSet ---\n const hostSet = SwcUtils.getHostSet(this);\n if (selector === ':hosts') return applyRoot(hostSet.$hosts);\n if (selector === ':appHosts') return applyRoot(hostSet.$appHosts);\n\n // --- Special Selectors: Env ---\n const config = getElementConfig(this);\n const win = config?.window || window;\n if (selector === ':window') return [win];\n if (selector === ':document') return [win.document];\n if (selector === ':host') return applyRoot(this);\n\n // --- Standard Selectors ---\n if (r === 'shadow') return this.shadowRoot ? Array.from(this.shadowRoot.querySelectorAll(selector)) : [];\n if (r === 'light') return Array.from(this.querySelectorAll(selector));\n if (r === 'all') {\n const sNodes = this.shadowRoot ? Array.from(this.shadowRoot.querySelectorAll(selector)) : [];\n const lNodes = Array.from(this.querySelectorAll(selector));\n return [...sNodes, ...lNodes];\n }\n const root = this.shadowRoot || this;\n return Array.from(root.querySelectorAll(selector));\n },\n set(this: HTMLElement, nv: any) {\n ensureInit(this);\n if (nv === null || nv === undefined || (Array.isArray(nv) && nv.length === 0)) {\n const selector = selectorOrTarget;\n if (selector.startsWith(':') && selector !== ':host') return;\n\n const r = options.root || 'auto';\n let targets: (Element | Node)[] = [];\n if (r === 'shadow') targets = this.shadowRoot ? Array.from(this.shadowRoot.querySelectorAll(selector)) : [];\n else if (r === 'light') targets = Array.from(this.querySelectorAll(selector));\n else if (r === 'all') {\n const sNodes = this.shadowRoot ? Array.from(this.shadowRoot.querySelectorAll(selector)) : [];\n const lNodes = Array.from(this.querySelectorAll(selector));\n targets = [...sNodes, ...lNodes];\n } else {\n targets = Array.from((this.shadowRoot || this).querySelectorAll(selector));\n }\n targets.forEach(t => (t as Element).remove());\n }\n },\n enumerable: true,\n configurable: true\n });\n };\n}\n/**\n * @hostQueryAll decorator - simplified version of @queryAll for :host selector\n * Usage: @hostQueryAll()\n * Usage: @hostQueryAll({ root: 'shadow' })\n */\n/**\n * @queryAllHost decorator - simplified version of @queryAll for :host selector\n * Usage: @queryAllHost items: HTMLElement[];\n * Usage: @queryAllHost() items: HTMLElement[];\n * Usage: @queryAllHost({ root: 'shadow' }) items: HTMLElement[];\n */\nexport function queryAllHost(target: Object, propertyKey: string | symbol): void;\nexport function queryAllHost(): PropertyDecorator;\nexport function queryAllHost(options: SwcQueryOptions): PropertyDecorator;\nexport function queryAllHost(targetOrOptions?: any, propertyKey?: string | symbol): any {\n // Direct decorator usage: @queryAllHost (no parentheses)\n if (propertyKey !== undefined && (typeof propertyKey === 'string' || typeof propertyKey === 'symbol')) {\n return queryAll(':host', {})(targetOrOptions, propertyKey);\n }\n\n // @queryAllHost() or @queryAllHost(options)\n if (typeof targetOrOptions === 'object' && targetOrOptions !== null) {\n return queryAll(':host', targetOrOptions as SwcQueryOptions);\n } else {\n return queryAll(':host', {});\n }\n}\n\n/**\n * @allHost - Alias for @queryAllHost decorator\n * Usage: @allHost items: HTMLElement[];\n * Usage: @allHost() items: HTMLElement[];\n * Usage: @allHost({ root: 'shadow' }) items: HTMLElement[];\n */\nexport const allHost = queryAllHost;\n/**\n * @allParentHost - Query all :parentHost (All parent SWC components)\n * Usage: @allParentHost parents: HTMLElement[];\n * Usage: @allParentHost() parents: HTMLElement[];\n * Usage: @allParentHost({ root: 'shadow' }) parents: HTMLElement[];\n */\nexport function allParentHost(target: Object, propertyKey: string | symbol): void;\nexport function allParentHost(): PropertyDecorator;\nexport function allParentHost(options: SwcQueryOptions): PropertyDecorator;\nexport function allParentHost(targetOrOptions?: any, propertyKey?: string | symbol): any {\n if (propertyKey !== undefined && (typeof propertyKey === 'string' || typeof propertyKey === 'symbol')) {\n return queryAll(':parentHost', {})(targetOrOptions, propertyKey);\n }\n if (typeof targetOrOptions === 'object' && targetOrOptions !== null) {\n return queryAll(':parentHost', targetOrOptions as SwcQueryOptions);\n } else {\n return queryAll(':parentHost', {});\n }\n}\n\n/**\n * @allAppHost - Query all :appHost (All <swc-app> instances)\n * Usage: @allAppHost apps: SwcAppInterface[];\n * Usage: @allAppHost() apps: SwcAppInterface[];\n * Usage: @allAppHost({ root: 'shadow' }) apps: SwcAppInterface[];\n */\nexport function allAppHost(target: Object, propertyKey: string | symbol): void;\nexport function allAppHost(): PropertyDecorator;\nexport function allAppHost(options: SwcQueryOptions): PropertyDecorator;\nexport function allAppHost(targetOrOptions?: any, propertyKey?: string | symbol): any {\n if (propertyKey !== undefined && (typeof propertyKey === 'string' || typeof propertyKey === 'symbol')) {\n return queryAll(':appHost', {})(targetOrOptions, propertyKey);\n }\n if (typeof targetOrOptions === 'object' && targetOrOptions !== null) {\n return queryAll(':appHost', targetOrOptions as SwcQueryOptions);\n } else {\n return queryAll(':appHost', {});\n }\n}\n\n/**\n * @allFirstHost - Query all :firstHost (All first components in hierarchy)\n * Usage: @allFirstHost firsts: HTMLElement[];\n * Usage: @allFirstHost() firsts: HTMLElement[];\n * Usage: @allFirstHost({ root: 'shadow' }) firsts: HTMLElement[];\n */\nexport function allFirstHost(target: Object, propertyKey: string | symbol): void;\nexport function allFirstHost(): PropertyDecorator;\nexport function allFirstHost(options: SwcQueryOptions): PropertyDecorator;\nexport function allFirstHost(targetOrOptions?: any, propertyKey?: string | symbol): any {\n if (propertyKey !== undefined && (typeof propertyKey === 'string' || typeof propertyKey === 'symbol')) {\n return queryAll(':firstHost', {})(targetOrOptions, propertyKey);\n }\n if (typeof targetOrOptions === 'object' && targetOrOptions !== null) {\n return queryAll(':firstHost', targetOrOptions as SwcQueryOptions);\n } else {\n return queryAll(':firstHost', {});\n }\n}\n\n/**\n * @allLastHost - Query all :lastHost (All last components in hierarchy)\n * Usage: @allLastHost lasts: HTMLElement[];\n * Usage: @allLastHost() lasts: HTMLElement[];\n * Usage: @allLastHost({ root: 'shadow' }) lasts: HTMLElement[];\n */\nexport function allLastHost(target: Object, propertyKey: string | symbol): void;\nexport function allLastHost(): PropertyDecorator;\nexport function allLastHost(options: SwcQueryOptions): PropertyDecorator;\nexport function allLastHost(targetOrOptions?: any, propertyKey?: string | symbol): any {\n if (propertyKey !== undefined && (typeof propertyKey === 'string' || typeof propertyKey === 'symbol')) {\n return queryAll(':lastHost', {})(targetOrOptions, propertyKey);\n }\n if (typeof targetOrOptions === 'object' && targetOrOptions !== null) {\n return queryAll(':lastHost', targetOrOptions as SwcQueryOptions);\n } else {\n return queryAll(':lastHost', {});\n }\n}\n\n/**\n * @allFirstAppHost - Query all :firstAppHost (All first <swc-app> in hierarchy)\n * Usage: @allFirstAppHost apps: SwcAppInterface[];\n * Usage: @allFirstAppHost() apps: SwcAppInterface[];\n * Usage: @allFirstAppHost({ root: 'shadow' }) apps: SwcAppInterface[];\n */\nexport function allFirstAppHost(target: Object, propertyKey: string | symbol): void;\nexport function allFirstAppHost(): PropertyDecorator;\nexport function allFirstAppHost(options: SwcQueryOptions): PropertyDecorator;\nexport function allFirstAppHost(targetOrOptions?: any, propertyKey?: string | symbol): any {\n if (propertyKey !== undefined && (typeof propertyKey === 'string' || typeof propertyKey === 'symbol')) {\n return queryAll(':firstAppHost', {})(targetOrOptions, propertyKey);\n }\n if (typeof targetOrOptions === 'object' && targetOrOptions !== null) {\n return queryAll(':firstAppHost', targetOrOptions as SwcQueryOptions);\n } else {\n return queryAll(':firstAppHost', {});\n }\n}\n\n/**\n * @allLastAppHost - Query all :lastAppHost (All last <swc-app> in hierarchy)\n * Usage: @allLastAppHost apps: SwcAppInterface[];\n * Usage: @allLastAppHost() apps: SwcAppInterface[];\n * Usage: @allLastAppHost({ root: 'shadow' }) apps: SwcAppInterface[];\n */\nexport function allLastAppHost(target: Object, propertyKey: string | symbol): void;\nexport function allLastAppHost(): PropertyDecorator;\nexport function allLastAppHost(options: SwcQueryOptions): PropertyDecorator;\nexport function allLastAppHost(targetOrOptions?: any, propertyKey?: string | symbol): any {\n if (propertyKey !== undefined && (typeof propertyKey === 'string' || typeof propertyKey === 'symbol')) {\n return queryAll(':lastAppHost', {})(targetOrOptions, propertyKey);\n }\n if (typeof targetOrOptions === 'object' && targetOrOptions !== null) {\n return queryAll(':lastAppHost', targetOrOptions as SwcQueryOptions);\n } else {\n return queryAll(':lastAppHost', {});\n }\n}\n\n\nexport const getQueryAllMetadata = (target: any): QueryAllMetadata[] | undefined => {\n const constructor = target instanceof Function ? target : target.constructor;\n return ReflectUtils.getMetadata(QUERY_ALL_METADATA_KEY, constructor);\n};\n\n", "export const HTML_TAG_ENTRIES: [string, string][] = [\n ['HTMLAnchorElement', 'a'],\n ['HTMLAreaElement', 'area'],\n ['HTMLAudioElement', 'audio'],\n ['HTMLBaseElement', 'base'],\n ['HTMLButtonElement', 'button'],\n ['HTMLCanvasElement', 'canvas'],\n ['HTMLDataElement', 'data'],\n ['HTMLDataListElement', 'datalist'],\n ['HTMLDetailsElement', 'details'],\n ['HTMLDialogElement', 'dialog'],\n ['HTMLDivElement', 'div'],\n ['HTMLDListElement', 'dl'],\n ['HTMLEmbedElement', 'embed'],\n ['HTMLFieldSetElement', 'fieldset'],\n ['HTMLFormElement', 'form'],\n ['HTMLHRElement', 'hr'],\n ['HTMLIFrameElement', 'iframe'],\n ['HTMLImageElement', 'img'],\n ['HTMLInputElement', 'input'],\n ['HTMLLabelElement', 'label'],\n ['HTMLLegendElement', 'legend'],\n ['HTMLLIElement', 'li'],\n ['HTMLLinkElement', 'link'],\n ['HTMLMapElement', 'map'],\n ['HTMLMetaElement', 'meta'],\n ['HTMLMeterElement', 'meter'],\n ['HTMLModElement', 'del'],\n ['HTMLObjectElement', 'object'],\n ['HTMLOListElement', 'ol'],\n ['HTMLOptGroupElement', 'optgroup'],\n ['HTMLOptionElement', 'option'],\n ['HTMLOutputElement', 'output'],\n ['HTMLParagraphElement', 'p'],\n ['HTMLParamElement', 'param'],\n ['HTMLPictureElement', 'picture'],\n ['HTMLPreElement', 'pre'],\n ['HTMLProgressElement', 'progress'],\n ['HTMLQuoteElement', 'blockquote'],\n ['HTMLScriptElement', 'script'],\n ['HTMLSelectElement', 'select'],\n ['HTMLSlotElement', 'slot'],\n ['HTMLSourceElement', 'source'],\n ['HTMLSpanElement', 'span'],\n ['HTMLStyleElement', 'style'],\n ['HTMLTableElement', 'table'],\n ['HTMLTableSectionElement', 'tbody'],\n ['HTMLTableCellElement', 'td'],\n ['HTMLTemplateElement', 'template'],\n ['HTMLTextAreaElement', 'textarea'],\n ['HTMLTimeElement', 'time'],\n ['HTMLTitleElement', 'title'],\n ['HTMLTableRowElement', 'tr'],\n ['HTMLTrackElement', 'track'],\n ['HTMLUListElement', 'ul'],\n ['HTMLVideoElement', 'video'],\n ['HTMLHeadingElement', 'h1'],\n ['HTMLBodyElement', 'body']\n];\n\nexport const DOM_EVENT_NAMES = ['click', 'dblclick', 'mousedown', 'mouseenter', 'mouseleave', 'mousemove', 'mouseout', 'mouseover', 'mouseup', 'contextmenu', 'keydown', 'keypress', 'keyup', 'blur', 'change', 'focus', 'focusin', 'focusout', 'input', 'invalid', 'reset', 'search', 'select', 'submit', 'drag', 'dragend', 'dragenter', 'dragleave', 'dragover', 'dragstart', 'drop', 'copy', 'cut', 'paste', 'abort', 'canplay', 'canplaythrough', 'durationchange', 'emptied', 'ended', 'error', 'loadeddata', 'loadedmetadata', 'loadstart', 'pause', 'play', 'playing', 'progress', 'ratechange', 'seeked', 'seeking', 'stalled', 'suspend', 'timeupdate', 'volumechange', 'waiting', 'scroll', 'resize', 'load', 'unload', 'hashchange', 'connected'];\n\nexport const BROWSER_GLOBALS = ['window', 'document', 'Node', 'Element', 'HTMLElement', 'DocumentFragment', 'CustomEvent', 'customElements', 'NodeFilter', ...HTML_TAG_ENTRIES.map(([className]) => className)];\n", "import { ConstructorType, MethodKeys } from '@dooboostore/core';\nimport { ReflectUtils } from '@dooboostore/core';\nimport { ExceptionHandlerSituationType } from '../exception/ExceptionDecorator';\nimport { SimpleApplication } from '../../SimpleApplication';\n\nexport enum InjectSituationType {\n INDEX = 'SIMPLE_BOOT_CORE://Inject/INDEX'\n}\n\nexport type SituationType = string | symbol | ConstructorType<any> | InjectSituationType | ExceptionHandlerSituationType;\n\nexport class SituationTypeContainer {\n public situationType: SituationType;\n public data: any;\n public index?: number;\n\n constructor({ situationType, data, index }: { situationType: SituationType; data: any; index?: number }) {\n this.situationType = situationType;\n this.data = data;\n this.index = index;\n }\n}\n\nexport class SituationTypeContainers {\n public containers: SituationTypeContainer[] = [];\n\n constructor(containers?: SituationTypeContainer[]) {\n if (containers) {\n this.containers.push(...containers);\n }\n }\n\n public push(...item: SituationTypeContainer[]) {\n this.containers.push(...item);\n }\n\n get length() {\n return this.containers.length;\n }\n\n find(predicate: (value: SituationTypeContainer, index: number, obj: SituationTypeContainer[]) => unknown, thisArg?: any): SituationTypeContainer | undefined {\n return this.containers.find(predicate);\n }\n}\n\n// [\uC544\uD0A4\uD14D\uD2B8\uB2D8\uC758 \uC815\uC11D] \uC8FC\uC785 \uACF5\uD1B5 \uC635\uC158\ntype InjectOptions = {\n situationType?: SituationType;\n proxy?: ConstructorType<ProxyHandler<any>> | ((caller: { application: SimpleApplication; instance: any }) => ProxyHandler<any>);\n optional?: boolean;\n};\n\n// [\uC544\uD0A4\uD14D\uD2B8\uB2D8\uC758 \uC815\uC11D] 3\uB300 \uC8FC\uC785 \uC804\uB7B5\nexport type InjectBySymbol = {\n symbol: symbol;\n factory?: (caller: { instance?: any; methodName?: string | symbol; parameter: any[]; application: SimpleApplication; injectInstance?: any }) => any;\n};\n\nexport type InjectByType<T> = {\n type?: ConstructorType<T> | Function;\n scheme?: string;\n factory?: (caller: { instance?: any; methodName?: string | symbol; parameter: any[]; application: SimpleApplication; injectInstance?: T }) => any;\n};\n\nexport type InjectByFactory<T> = {\n factory: (caller: { instance?: any; methodName?: string | symbol; parameter: any[]; application: SimpleApplication }) => T;\n};\n\nexport type InjectConfig<T = any> = InjectOptions & (InjectBySymbol | InjectByType<T> | InjectByFactory<T>);\n\n// [\uC544\uD0A4\uD14D\uD2B8\uB2D8\uC758 \uC815\uC11D] Type Guards\nexport const isTargetSymbol = (config: InjectConfig): config is InjectOptions & InjectBySymbol => {\n return 'symbol' in config && config.symbol !== undefined;\n};\n\nexport const isTargetType = (config: InjectConfig): config is InjectOptions & { type: ConstructorType<any> } & InjectByType<any> => {\n return 'type' in config && config.type !== undefined;\n};\n\nexport const isTargetScheme = (config: InjectConfig): config is InjectOptions & { scheme: string } & InjectByType<any> => {\n return 'scheme' in config && config.scheme !== undefined;\n};\n\nexport const isTargetFactory = (config: InjectConfig): config is InjectOptions & InjectByFactory<any> => {\n return 'factory' in config && typeof config.factory === 'function' && !('symbol' in config) && !('type' in config) && !('scheme' in config);\n};\n\nexport const isTargetNone = (config: InjectConfig): boolean => {\n return !('symbol' in config) && !('type' in config) && !('scheme' in config) && !isTargetFactory(config);\n};\n\nexport type SaveInjectConfig = {\n index: number;\n type?: ConstructorType<any>;\n propertyKey?: string | symbol;\n config: InjectConfig;\n};\n\nconst InjectMetadataKey = Symbol.for('simple-boot:inject-metadata');\nconst injectProcess = (config: InjectConfig, target: Object, propertyKey: string | symbol | undefined, parameterIndex: number) => {\n if (propertyKey && typeof target === 'object') {\n const otarget = target;\n target = target.constructor;\n const saves = (Reflect.getOwnMetadata(InjectMetadataKey, target, propertyKey) || []) as SaveInjectConfig[];\n const type = ReflectUtils.getParameterTypes(otarget, propertyKey)[parameterIndex];\n saves.push({ index: parameterIndex, config: config, propertyKey, type });\n ReflectUtils.defineMetadata(InjectMetadataKey, saves, target, propertyKey);\n } else if (!propertyKey || typeof target === 'function') {\n const existingInjectdParameters = (ReflectUtils.getMetadata(InjectMetadataKey, target) || []) as SaveInjectConfig[];\n const type = ReflectUtils.getParameterTypes(target)[parameterIndex];\n existingInjectdParameters.push({ index: parameterIndex, config: config, type });\n ReflectUtils.defineMetadata(InjectMetadataKey, existingInjectdParameters, target);\n }\n};\n\nexport function Inject(target: Object, propertyKey: string | symbol | undefined, parameterIndex: number): void;\nexport function Inject<T = any>(config: InjectConfig<T>): ParameterDecorator;\nexport function Inject<T = any>(configOrTarget: Object | InjectConfig<T>, propertyKey?: string | symbol | undefined, parameterIndex?: number): void | ParameterDecorator {\n if (propertyKey && parameterIndex !== undefined) {\n injectProcess({} as any, configOrTarget, propertyKey, parameterIndex);\n } else {\n return (target: Object, propertyKey: string | symbol | undefined, parameterIndex: number) => {\n injectProcess(configOrTarget as InjectConfig, target, propertyKey, parameterIndex);\n };\n }\n}\n\nexport const getInject = (target: any, propertyKey?: string | symbol): SaveInjectConfig[] => {\n return ReflectUtils.findMetadata(InjectMetadataKey, target, propertyKey) ?? [];\n};\n\n// Alias for @inject (lowercase)\nexport const inject = Inject;\n", "import { SimpleApplication } from '@dooboostore/simple-boot/SimpleApplication';\nimport { Router } from '@dooboostore/core-web';\nimport {SwcAttributeConfigType} from \"./elements/SwcAppEngine\";\n\nexport enum InjectSituationType {\n HOST_SET = 'SIMPLE_WEB_COMPONENT://HOSTSET',\n APP_HOST = 'SIMPLE_WEB_COMPONENT://APPHOST',\n APP_HOSTS = 'SIMPLE_WEB_COMPONENT://APPHOSTS',\n HOST = 'SIMPLE_WEB_COMPONENT://HOST',\n PARENT_HOST = 'SIMPLE_WEB_COMPONENT://PARENTHOST',\n HOSTS = 'SIMPLE_WEB_COMPONENT://HOSTS',\n FIRST_HOST = 'SIMPLE_WEB_COMPONENT://FIRSTHOST',\n LAST_HOST = 'SIMPLE_WEB_COMPONENT://LASTHOST',\n FIRST_APP_HOST = 'SIMPLE_WEB_COMPONENT://FIRSTAPPHOST',\n LAST_APP_HOST = 'SIMPLE_WEB_COMPONENT://LASTAPPHOST'\n}\n\nexport type SwcRootType = 'light' | 'shadow' | 'all' | 'auto';\n\nexport type SpecialSelector = ':host' | ':window' | ':document' | ':parentHost' | ':appHost' | ':firstHost' | ':lastHost' | ':firstAppHost' | ':lastAppHost' | ':hosts' | ':appHosts';\n\nexport type SwcQueryOptions = { root?: SwcRootType };\n\nexport type HelperSet = {\n $d: Document;\n $w: Window;\n $q: (selector: string, root?: Element | Document | ShadowRoot) => HTMLElement | null;\n $qa: (selector: string, root?: Element | Document | ShadowRoot) => HTMLElement[];\n $qi: (id: string, root?: Document | ShadowRoot) => HTMLElement | null;\n};\n\nexport type HostSet = {\n $host: HTMLElement; // Current component itself\n $parentHost: HTMLElement | null; // Nearest parent SWC component\n $hosts: HTMLElement[]; // [root, ..., parent, self]\n $firstHost: HTMLElement | null; // Top-most SWC ancestor\n $lastHost: HTMLElement | null; // Same as $parentHost (for backward compatibility or clarity)\n $appHost: SwcAppInterface | null;\n $appHosts: SwcAppInterface[];\n $firstAppHost: SwcAppInterface | null;\n $lastAppHost: SwcAppInterface | null;\n};\n\nexport type HelperHostSet = HelperSet & HostSet & {$this: any};\nexport interface SwcChooseInterface extends HTMLTemplateElement {\n value: any;\n refresh(): void;\n}\nexport interface SwcIfInterface extends HTMLTemplateElement {\n value: any;\n refresh(): void;\n}\nexport interface SwcAppInterface extends HTMLElement {\n simpleApplication?: SimpleApplication;\n router?: Router;\n connect(config?: SwcAttributeConfigType): Promise<void>;\n routing(path: string): Promise<void>;\n reload(): void;\n back(): void;\n forward(): void;\n}\n", "export namespace CanvasUtils {\n export type CanvasUtilsContext = CanvasRenderingContext2D | OffscreenCanvasRenderingContext2D;\n export namespace Context2D {\n /*\n rotate, scale, transform\n rotate\uB294 \uACC4\uC18D \uB204\uC801\uB41C\uB2E4\n ctx.rotate(1);\n ctx.rotate(1);\n ctx.rotate(1);\n rotate3\uC774\uB418\uB294\uAC70\uB2E4.\n */\n\n /* transform\n https://www.w3schools.com/jsref/canvas_transform.asp\n */\n\n /* scale\n https://developer.mozilla.org/en-US/play\n https://www.w3schools.com/jsref/canvas_scale.asp\n https://www.w3schools.com/jsref/tryit.asp?filename=tryhtml5_canvas_scale\n\n */\n /* rotate\n https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/rotate\n\n\n const canvas = document.getElementById(\"canvas\");\n const ctx = canvas.getContext(\"2d\");\n\n // Non-rotated rectangle\n ctx.fillStyle = \"gray\";\n ctx.fillRect(80, 60, 140, 30);\n\n // Matrix transformation\n ctx.translate(150, 75);\n ctx.rotate(Math.PI / 2);\n ctx.translate(-150, -75);\n\n // Rotated rectangle\n ctx.fillStyle = \"red\";\n ctx.fillRect(80, 60, 140, 30);\n\n\n rotate \uD560\uB584\uC5D0\uB294 \uBA3C\uC800 \uD310\uC744 \uC774\uB3D9\uD6C4 \uAE30\uC900\uC810\uC7A1\uACE0 \uB3CC\uB9AC\uACE0 \uB2E4\uC2DC \uB418\uB3CC\uB824\uB193\uACE0 \uD574\uC57C\uB41C\uB2E4\n */\n\n\n /* line\n * lineTo: https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/lineTo\n * closePath: https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/closePath\n */\n\n /* moveTo \uD39C\uC774\uB3D9\n moveTo\uC758 \uC5ED\uD560: moveTo(x, y)\uB294 \uD39C(pen)\uC758 \uC704\uCE58\uB97C \uC0C8\uB85C\uC6B4 \uC88C\uD45C\uB85C \uC774\uB3D9\uC2DC\uD0A4\uC9C0\uB9CC, \uAE30\uC874 \uACBD\uB85C\uC640 \uC5F0\uACB0\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. \uC774\uB294 \uC0C8\uB85C\uC6B4 \uC11C\uBE0C\uD328\uC2A4\uB97C \uC2DC\uC791\uD558\uB294 \uD6A8\uACFC\uB97C \uC90D\uB2C8\uB2E4.\nconst ctx = canvas.getContext(\"2d\");\n\nctx.beginPath();\nctx.moveTo(20, 140); // \uC2DC\uC791\uC810\nctx.lineTo(120, 10); // \uCCAB \uBC88\uC9F8 \uC120\nctx.lineTo(220, 140); // \uB450 \uBC88\uC9F8 \uC120\nctx.closePath(); // (220, 140) -> (20, 140)\uC73C\uB85C \uB2EB\uC74C\nctx.fill();\nctx.stroke();\n\n/////////\nconst canvas = document.getElementById(\"canvas\");\nconst ctx = canvas.getContext(\"2d\");\nctx.fillStyle='pink'\nctx.beginPath(); // Start a new path\nctx.moveTo(50, 50); // Move the pen to (30, 50)\nctx.lineTo(150, 100); // Draw a line to (150, 100)\nctx.lineTo(250, 10); // Draw a line to (150, 100)\nctx.closePath();\nctx.fill()\nctx.stroke(); // Render the path\nctx.beginPath(); // Start a new path\nctx.moveTo(30, 50); // Move the pen to (30, 50)\nctx.lineTo(150, 100); // Draw a line to (150, 100)\nctx.lineTo(650, 100); // Draw a line to (150, 100)\nctx.closePath();\nctx.fill()\nctx.stroke(); // Render the path\n\n\n\n */\n export const resetTransform = (context: CanvasUtilsContext) => {\n context.setTransform(1, 0, 0, 1, 0, 0);\n }\n }\n\n export const fontSize =(ctx:CanvasUtilsContext, config:{text: string, maxWidth:number, maxHeight: number, fontOption?: {fontWeight?: string, fontFamily?: string}}) => {\n const { text, maxWidth, maxHeight, fontOption } = config;\n\n if (!text || maxWidth <= 0 || maxHeight <= 0) {\n return 0;\n }\n\n // \uAE30\uC874 \uC904\uBC14\uAFC8(\\n)\uC744 \uAE30\uC900\uC73C\uB85C \uD14D\uC2A4\uD2B8\uB97C \uB098\uB215\uB2C8\uB2E4. \uC790\uB3D9 \uC904\uBC14\uAFC8\uC740 \uC218\uD589\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.\n const lines = text.split('\\n').filter(line => line.trim().length > 0);\n if (lines.length === 0) {\n return 0;\n }\n\n const lineHeightMultiplier = 1.2; // \uC904 \uB192\uC774 \uBC30\uC728\n\n // 1. \uB192\uC774 \uC81C\uC57D \uC870\uAC74\uC5D0 \uAE30\uBC18\uD55C \uCD5C\uB300 \uD3F0\uD2B8 \uD06C\uAE30 \uACC4\uC0B0\n // (\uC804\uCCB4 \uD14D\uC2A4\uD2B8 \uB192\uC774 = \uC904 \uC218 * \uD3F0\uD2B8 \uD06C\uAE30 * \uC904 \uB192\uC774 \uBC30\uC728)\n const maxFontSizeByHeight = Math.floor(maxHeight / (lines.length * lineHeightMultiplier));\n if (maxFontSizeByHeight <= 0) {\n return 0; // 1px \uD3F0\uD2B8\uB3C4 \uB192\uC774\uC5D0 \uB9DE\uC9C0 \uC54A\uC73C\uBA74 0 \uBC18\uD658\n }\n\n // 2. \uB108\uBE44 \uC81C\uC57D \uC870\uAC74\uC5D0 \uAE30\uBC18\uD55C \uCD5C\uB300 \uD3F0\uD2B8 \uD06C\uAE30 \uACC4\uC0B0 (\uC774\uC9C4 \uD0D0\uC0C9)\n // \uD14D\uC2A4\uD2B8\uC758 \uAC01 \uC904\uC774 maxWidth\uB97C \uB118\uC9C0 \uC54A\uB3C4\uB85D \uD558\uB294 \uCD5C\uB300 \uD3F0\uD2B8 \uD06C\uAE30\uB97C \uCC3E\uC2B5\uB2C8\uB2E4.\n let minSizeForWidth = 1;\n // \uC774\uC9C4 \uD0D0\uC0C9\uC758 \uC0C1\uD55C\uC120\uC740 \uB192\uC774 \uC81C\uC57D\uC73C\uB85C \uC5BB\uC740 \uAC12\uC73C\uB85C \uC124\uC815\uD558\uC5EC \uBD88\uD544\uC694\uD55C \uD0D0\uC0C9\uC744 \uC904\uC785\uB2C8\uB2E4.\n let maxSizeForWidth = maxFontSizeByHeight;\n let bestSizeForWidth = 0;\n\n const maxIterations = 100; // \uBB34\uD55C \uB8E8\uD504 \uBC29\uC9C0\n let iteration = 0;\n\n while (minSizeForWidth <= maxSizeForWidth && iteration < maxIterations) {\n const midSize = Math.floor((minSizeForWidth + maxSizeForWidth) / 2);\n if (midSize === 0) break; // \uD3F0\uD2B8 \uD06C\uAE30\uAC00 0\uC774 \uB418\uBA74 \uC911\uB2E8\n\n ctx.font = `${fontOption?.fontWeight || 'normal'} ${midSize}px ${fontOption?.fontFamily || 'sans-serif'}`;\n\n // \uAC00\uC7A5 \uAE34 \uC904\uC758 \uB108\uBE44\uB97C \uCE21\uC815\uD569\uB2C8\uB2E4. (\uC790\uB3D9 \uC904\uBC14\uAFC8 \uC5C6\uC74C)\n const maxLineWidth = Math.max(...lines.map(line => ctx.measureText(line).width));\n\n if (maxLineWidth <= maxWidth) {\n // \uD604\uC7AC \uD3F0\uD2B8 \uD06C\uAE30\uB85C \uAC00\uC7A5 \uAE34 \uC904\uC774 \uB108\uBE44 \uC81C\uC57D\uC744 \uB9CC\uC871\uD558\uBA74, \uB354 \uD070 \uD06C\uAE30\uB97C \uC2DC\uB3C4\n bestSizeForWidth = midSize;\n minSizeForWidth = midSize + 1;\n } else {\n // \uD604\uC7AC \uD3F0\uD2B8 \uD06C\uAE30\uB85C \uAC00\uC7A5 \uAE34 \uC904\uC774 \uB108\uBE44 \uC81C\uC57D\uC744 \uCD08\uACFC\uD558\uBA74, \uB354 \uC791\uC740 \uD06C\uAE30\uB97C \uC2DC\uB3C4\n maxSizeForWidth = midSize - 1;\n }\n iteration++;\n }\n\n // 3. \uB192\uC774 \uC81C\uC57D\uACFC \uB108\uBE44 \uC81C\uC57D \uC911 \uB354 \uC5C4\uACA9\uD55C(\uC791\uC740) \uD3F0\uD2B8 \uD06C\uAE30\uB97C \uBC18\uD658\uD569\uB2C8\uB2E4.\n return Math.min(bestSizeForWidth, maxFontSizeByHeight);\n }\n export const textMetrics =(context: CanvasUtilsContext, text: string):TextMetrics => {\n return context.measureText( text )\n }\n\n}", "import { Promises } from '@dooboostore/core';\n\nexport namespace ElementUtils {\n export type Attr = { name: string; value: any };\n\n export type LoadImageCallbackType = { onload: (img: HTMLImageElement) => void; onerror: OnErrorEventHandler };\n export type LoadAudioCallbackType = { onload: (img: HTMLAudioElement) => void; onerror: (e: ErrorEvent) => void };\n\n export function removeAllChildren(el: Element): void;\n export function removeAllChildren(el: Element, els: Node | Node[]): void;\n export function removeAllChildren(el: Element, els?: Node | Node[]): void {\n if (!els) {\n el.replaceChildren();\n } else if (Array.isArray(els)) {\n el.replaceChildren(...els);\n } else {\n el.replaceChildren(els);\n }\n }\n\n export function loadImage(src: string): Promise<HTMLImageElement>;\n export function loadImage(src: string, callback: LoadImageCallbackType): void;\n export function loadImage(src: string, callback?: LoadImageCallbackType): Promise<HTMLImageElement> | void {\n let targetCallback: (img: HTMLImageElement) => void;\n let promise: Promise<HTMLImageElement> | undefined = undefined;\n if (callback) {\n targetCallback = callback.onload;\n } else {\n const r = Promises.withResolvers<HTMLImageElement>();\n promise = r.promise;\n targetCallback = r.resolve;\n }\n const img = new Image();\n // img.crossOrigin = 'Anonymous';\n img.onload = () => {\n targetCallback(img);\n };\n if (callback && callback.onerror) {\n img.onerror = callback.onerror;\n }\n img.src = src;\n return promise;\n }\n\n export function loadAudio(src: string): Promise<HTMLAudioElement>;\n export function loadAudio(src: string, callback: LoadAudioCallbackType): void;\n export function loadAudio(src: string, callback?: LoadAudioCallbackType): Promise<HTMLAudioElement> | void {\n let targetCallback: (audio: HTMLAudioElement) => void;\n let error: (e: any) => void;\n let promise: Promise<HTMLAudioElement> | undefined = undefined;\n if (callback) {\n targetCallback = callback.onload;\n error = callback.onerror;\n } else {\n const r = Promises.withResolvers<HTMLAudioElement>();\n promise = r.promise;\n error = r.reject;\n targetCallback = r.resolve;\n }\n const audio = new Audio('path/to/audio1.mp3');\n audio.addEventListener('canplay', () => {\n targetCallback?.(audio);\n });\n audio.addEventListener('error', e => {\n callback?.onerror(e);\n });\n audio.load();\n return promise;\n }\n\n export const toInnerHTML = (documentFragment: DocumentFragment | HTMLElement, config: { document: Document }) => {\n // if (documentFragment) {\n const tempDiv = config.document.createElement('div');\n tempDiv.appendChild(documentFragment.cloneNode(true));\n // console.log('DocumentFragment innerHTML:', tempDiv.innerHTML);\n return tempDiv.innerHTML;\n // }\n };\n // export const fragmentToHTML = (fragment: DocumentFragment, config: { document: Document } = { document }): string => {\n // const tempDiv = config.document.createElement('div');\n // tempDiv.appendChild(fragment.cloneNode(true));\n // return tempDiv.innerHTML;\n // }\n\n export const htmlToFragment = (html: string, config: { document: Document } = { document }): DocumentFragment => {\n const tempDiv = config.document.createElement('div');\n tempDiv.innerHTML = html;\n const fragment = config.document.createDocumentFragment();\n while (tempDiv.firstChild) {\n fragment.appendChild(tempDiv.firstChild);\n }\n return fragment;\n };\n\n /*\n 17 // originalDiv \uC790\uCCB4\uC640 \uC18D\uC131\uB9CC \uBCF5\uC0AC\uD558\uACE0, childSpan\uC740 \uBCF5\uC0AC\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.\n 18 const shallowCopy = originalDiv.cloneNode(false);\n 19 shallowCopy.id = 'shallowCopyDiv'; // ID \uBCC0\uACBD (\uC911\uBCF5 \uBC29\uC9C0)\n 20 console.log('\\n--- \uC595\uC740 \uBCF5\uC0AC\uBCF8 ---');\n 21 console.log(shallowCopy.outerHTML);\n 22 // \uC608\uC0C1 \uCD9C\uB825: <div id=\"shallowCopyDiv\" data-custom=\"\uC6D0\uBCF8 \uB370\uC774\uD130\"></div>\n 23\n 24 // 2. \uAE4A\uC740 \uBCF5\uC0AC (deep: true)\n 25 // originalDiv\uC640 \uADF8 \uC790\uC2DD\uC778 childSpan\uAE4C\uC9C0 \uBAA8\uB450 \uBCF5\uC0AC\uD569\uB2C8\uB2E4.\n 26 const deepCopy = originalDiv.cloneNode(true);\n 27 deepCopy.id = 'deepCopyDiv'; // ID \uBCC0\uACBD (\uC911\uBCF5 \uBC29\uC9C0)\n 28 console.log('\\n--- \uAE4A\uC740 \uBCF5\uC0AC\uBCF8 ---');\n 29 console.log(deepCopy.outerHTML);\n */\n\n export const replaceWith = (targetElement: Element, replaceElement: Element) => {\n targetElement.replaceWith(replaceElement);\n };\n export const nodeList = (documentFragment: DocumentFragment) => {\n return Array.from(documentFragment.childNodes);\n };\n\n export const cloneNodeList = (documentFragment: DocumentFragment) => {\n return Array.from(documentFragment.childNodes).map(node => node.cloneNode(true));\n };\n\n export const querySelector = (e: Element | { start: Element; end: Element }, selector: string) => {\n const elements = ElementUtils.querySelectorAll(e, selector);\n if (elements.length > 0) {\n return elements[0];\n } else {\n return null;\n }\n };\n\n export const querySelectorAll = (e: Element | { start: Node; end: Node }, selector: string) => {\n if (e instanceof Element) {\n return Array.from(e.querySelectorAll(selector));\n } else {\n const startNode = e.start;\n const endNode = e.end;\n if (startNode && endNode && startNode.parentNode === endNode.parentNode) {\n const elements: Element[] = [];\n let currentNode: Node | null = startNode.nextSibling;\n while (currentNode && currentNode !== endNode) {\n if (currentNode.nodeType === Node.ELEMENT_NODE) {\n const currentElement = currentNode as Element;\n if (currentElement.matches(selector)) {\n elements.push(currentElement);\n }\n elements.push(...Array.from(currentElement.querySelectorAll(selector)));\n }\n currentNode = currentNode.nextSibling;\n }\n return elements;\n }\n }\n return [];\n };\n\n export const selectorElements = (selector: string, element: Element | Document = document): Element[] => {\n return Array.prototype.slice.call(element.querySelectorAll(selector));\n };\n\n export const selectorNodes = (selector: string, element: Element | Document = document) => {\n return element.querySelectorAll(selector);\n };\n\n export const removeAttribute = (result: Element, attrs: string[]) => {\n attrs.forEach(it => {\n result.removeAttribute(it);\n });\n };\n\n export const setAttribute = (result: Element, attrs: string[]) => {\n attrs.forEach(it => {\n result.setAttribute(it, '');\n });\n };\n\n export const setAttributeAttr = (result: Element, attrs: Attr[]) => {\n attrs.forEach(it => {\n result.setAttribute(it.name, it.value);\n });\n };\n\n export const getAttributeToObject = (input: Element): any => {\n const attribute = {} as any;\n input.getAttributeNames().forEach(ait => {\n attribute[ait] = input.getAttribute(ait);\n });\n return attribute;\n };\n\n export const getStyleToObject = (input: HTMLElement): any => {\n const style = {} as any;\n for (let i = 0; i < input.style.length; i++) {\n const key = input.style[i];\n style[key] = (input.style as any)[key];\n }\n return style;\n };\n}\n", "export type Attr = { name: string; value: any };\nexport namespace NodeUtils {\n export enum FindNodesFilterResult {\n MATCH_AND_CONTINUE='MATCH_AND_CONTINUE', // Match the node, and continue to its children\n MATCH_AND_SKIP_CHILDREN='MATCH_AND_SKIP_CHILDREN', // Match the node, but do not traverse its children\n NO_MATCH_AND_CONTINUE='NO_MATCH_AND_CONTINUE', // Don't match the node, but continue to its children\n NO_MATCH_AND_SKIP_CHILDREN='NO_MATCH_AND_SKIP_CHILDREN' // Don't match the node, and also skip its children\n }\n // https://stackoverflow.com/questions/3955229/remove-all-child-elements-of-a-dom-node-in-javascript\n export const removeAllChildNode = (node: Node) => {\n // \uCD5C\uC2E0 api node.replaceChildren();\n while (node?.firstChild) {\n node.firstChild.remove();\n }\n };\n\n export const removeAllChildNodeAndAppend = (node: Node, newNode: Node | Node[]) => {\n // \uCD5C\uC2E0 api e.replaceChildren(data);\n removeAllChildNode(node);\n if (Array.isArray(newNode)) {\n newNode.forEach(it => node.appendChild(it));\n return;\n }\n node.appendChild(newNode);\n }\n\n export const appendChild = (parentNode: Node, childNode: Node) => {\n return parentNode.appendChild(childNode);\n };\n\n export const replaceNode = (targetNode: Node, newNode: Node) => {\n // console.log('repalceNode', targetNode, newNode, targetNode.parentNode)\n return targetNode.parentNode?.replaceChild(newNode, targetNode);\n };\n\n export const insertAfter = (targetNode: Node, newNode: Node) => {\n return targetNode.parentNode?.insertBefore(newNode, targetNode.nextSibling);\n };\n export const cloneNode = <N extends Node>(element: N, deep?: boolean) => {\n return element.cloneNode(deep ?? false) as N;\n };\n\n export const findNodes = (rootNode: Node, filter: (node: Node) => FindNodesFilterResult): Node[] => {\n const foundNodes: Node[] = [];\n\n function traverse(node: Node) {\n if (!node) {\n return;\n }\n\n // console.log('----------',node.childNodes)\n node.childNodes.forEach(child => {\n const result = filter(child);\n\n if (\n result === FindNodesFilterResult.MATCH_AND_CONTINUE ||\n result === FindNodesFilterResult.MATCH_AND_SKIP_CHILDREN\n ) {\n foundNodes.push(child);\n }\n\n if (\n result === FindNodesFilterResult.MATCH_AND_CONTINUE ||\n result === FindNodesFilterResult.NO_MATCH_AND_CONTINUE\n ) {\n traverse(child);\n }\n });\n }\n\n traverse(rootNode);\n return foundNodes;\n };\n}\n", "import { Observable } from '@dooboostore/core';\n\nexport namespace DocumentUtils {\n\n export const querySelectorAllByAttributeName = (document: Document | Element, attributeName: string): {element: Element, value: string | null}[] =>{\n const elements: {element:Element, value: (string | null)}[] = [];\n document.querySelectorAll(`[${attributeName}]`)?.forEach((element) => {\n elements.push({element: element, value: element.getAttribute(attributeName)});\n });\n return elements;\n }\n export const eventObservable = <K extends keyof WindowEventMap>(document: Document, type: K, options?: boolean | AddEventListenerOptions): Observable<WindowEventMap[K]> => {\n return new Observable<WindowEventMap[K]>((subscriber) => {\n const handler = (event: WindowEventMap[K]) => subscriber.next(event);\n window.addEventListener(type, handler, options);\n return () => {\n window.removeEventListener(type, handler, options);\n };\n });\n }\n}", "import { Observable } from '@dooboostore/core';\n\nexport namespace EventUtils {\n export const htmlElementEventObservable = <K extends keyof HTMLElementEventMap>(element: HTMLElement | Document, type: K, options?: boolean | AddEventListenerOptions): Observable<HTMLElementEventMap[K]> => {\n return new Observable<HTMLElementEventMap[K]>((subscriber) => {\n const handler = (event: HTMLElementEventMap[K]) => subscriber.next(event);\n element.addEventListener(type, handler, options);\n return () => {\n element.removeEventListener(type, handler as any, options);\n };\n });\n }\n}", "import { Observable } from '@dooboostore/core';\n\nexport namespace WindowUtils {\n\n export const eventObservable = <K extends keyof WindowEventMap>(window: Window, type: K, options?: boolean | AddEventListenerOptions): Observable<WindowEventMap[K]> => {\n return new Observable<WindowEventMap[K]>((subscriber) => {\n const handler = (event: WindowEventMap[K]) => subscriber.next(event);\n window.addEventListener(type, handler, options);\n return () => {\n window.removeEventListener(type, handler, options);\n };\n });\n }\n}\n\n", "export namespace CookieUtils {\n export type Option = {\n expireSecond?: number | null;\n maxAge?: number;\n path?: null | string;\n httpOnly?: boolean;\n secure?: boolean;\n domain?: string;\n sameSite?: 'Strict' | 'Lax' | 'None';\n };\n\n export const names = (doc: Document = document) => {\n const ar = doc.cookie.split('; ');\n const names = [];\n for (let i = 0; i < ar.length; i++) {\n const c = ar[i];\n const nv = c.split('=');\n names.push(nv[0]);\n }\n return names;\n };\n\n export const get = (name: string, doc: Document = document) => {\n const ar = doc.cookie.split('; ');\n for (let i = 0; i < ar.length; i++) {\n const c = ar[i];\n const nv = c.split('=');\n if (nv[0] == name) return decodeURIComponent(nv[1]);\n }\n return null;\n };\n\n export const make = (name: string, value: null | string, option?: Option) => {\n const cookieStr =\n name +\n '=' +\n (value ? encodeURIComponent(value) : '') +\n (option?.path ? `; path=${option?.path}` : '') +\n (option?.expireSecond !== undefined\n ? '; expires=' +\n (() => {\n if (option.expireSecond !== null) {\n const expireDate = new Date();\n expireDate.setTime(expireDate.getTime() + option.expireSecond * 1000); // mmsecond -> second\n return expireDate.toUTCString();\n } else {\n return new Date(0).toUTCString();\n }\n })()\n : '') +\n (option?.domain ? `; Domain=${option?.domain}` : '') +\n (option?.maxAge ? `; Max-Age=${option?.maxAge}` : '') +\n (option?.secure ? '; Secure' : '') +\n (option?.httpOnly ? '; HttpOnly' : '') +\n (option?.sameSite ? `; SameSite=${option.sameSite}` : '');\n return cookieStr;\n };\n\n export const set = (name: string, value: string | null, option: Option, doc: Document = document) => {\n const cookieStr = CookieUtils.make(name, value, option);\n doc.cookie = cookieStr;\n };\n\n export const remove = (name: string, option: Option, doc: Document = document) => {\n CookieUtils.set(name, null, { ...option, expireSecond: null }, doc);\n };\n}\n", "import { ConvertUtils as CoreConverUtils } from '@dooboostore/core';\n\nexport namespace ConvertUtils {\n export const coreConvertUtils = CoreConverUtils;\n\n\n export function toObject<T>(data: HTMLFormElement): T {\n const formData = new FormData(data);\n const obj: any = {};\n formData.forEach((value, key) => {\n // @ts-ignore\n obj[key] = value;\n });\n return obj as T;\n }\n export function toObjectUrl(data: File | Blob): string {\n return URL.createObjectURL(data);\n }\n\n // \uC5D0\uB7EC\uC870\uC2EC CORS: SecurityError: Failed to execute 'convertToBlob' on 'OffscreenCanvas': Tainted \"OffscreenCanvas\" may not be exported.\n // export const toBlob = async (imageBitmap: ImageBitmap) => {\n // const canvas = new OffscreenCanvas(imageBitmap.width, imageBitmap.height);\n // const context = canvas.getContext('2d');\n // context?.drawImage(imageBitmap, 0, 0);\n // return canvas.convertToBlob({ type: 'image/png' });\n // export type ImageConvertConfig = { type: 'image/png' | 'image/jpeg' | string, quality?: number };\n export type ImageConvertConfig = { type: 'image/png' | 'image/jpeg' | string, quality?: number };\n export const isImageConvertConfig = (data: any): data is ImageConvertConfig => {\n return typeof data === 'object' && data !== null && typeof data.type === 'string';\n }\n\n export const toFile = async (imageBitmapOrCanvas: HTMLImageElement | ImageBitmap | HTMLCanvasElement | OffscreenCanvas, config: ImageConvertConfig & {filename: string;}): Promise<File> => {\n const fileName = config.filename;\n delete config['filename'];\n return new File([await ConvertUtils.toBlob({data:imageBitmapOrCanvas, config})], fileName, {type: config.type});\n }\n\n export const toArrayBuffer = async (imageBitmapOrCanvas: File | {data:HTMLImageElement | ImageBitmap | HTMLCanvasElement | OffscreenCanvas, config: ImageConvertConfig}): Promise<ArrayBuffer> => {\n if (imageBitmapOrCanvas instanceof File) {\n return imageBitmapOrCanvas.arrayBuffer();\n }\n return await (await ConvertUtils.toBlob({data:imageBitmapOrCanvas.data, config:imageBitmapOrCanvas.config})).arrayBuffer();\n }\n export const toBlob = async (imageBitmapOrCanvas: File | {data : HTMLImageElement | ImageBitmap | HTMLCanvasElement | OffscreenCanvas, config: ImageConvertConfig }): Promise<Blob> => {\n if (imageBitmapOrCanvas instanceof File) {\n return imageBitmapOrCanvas;\n }\n let canvas: HTMLCanvasElement | OffscreenCanvas;\n if (imageBitmapOrCanvas.data instanceof ImageBitmap || imageBitmapOrCanvas.data instanceof HTMLImageElement) {\n // 1. Canvas \uC0DD\uC131 \uBC0F \uC124\uC815\n canvas = document.createElement('canvas');\n canvas.width = imageBitmapOrCanvas.data.width;\n canvas.height = imageBitmapOrCanvas.data.height;\n const context = canvas.getContext('2d');\n // 2. ImageBitmap\uC744 Canvas\uC5D0 \uADF8\uB9AC\uAE30\n context.drawImage(imageBitmapOrCanvas.data, 0, 0);\n } else {\n // 1. OffscreenCanvas \uB610\uB294 HTMLCanvasElement\uB97C \uC0AC\uC6A9\n canvas = imageBitmapOrCanvas.data;\n }\n // 3. Canvas\uB97C Blob\uC73C\uB85C \uBCC0\uD658 (Promise \uC0AC\uC6A9)\n return new Promise((resolve, reject) => {\n try {\n if (canvas instanceof OffscreenCanvas) {\n // @ts-ignore\n return canvas.convertToBlob({type: imageBitmapOrCanvas.config.type, quality: imageBitmapOrCanvas.config.quality})\n } else {\n canvas.toBlob((blob) => {\n if (blob) {\n resolve(blob);\n } else {\n reject(new Error('Blob \uC0DD\uC131 \uC2E4\uD328'));\n }\n }, imageBitmapOrCanvas.config.type, imageBitmapOrCanvas.config.quality); // 'image/png' \uB610\uB294 'image/jpeg' \uC120\uD0DD \uAC00\uB2A5\n }\n } catch (e) {\n reject(e);\n }\n });\n }\n\n export const toBase64 = async (imageBitmapOrCanvas: File | Blob | HTMLImageElement | ImageBitmap | HTMLCanvasElement | OffscreenCanvas | Promise<File | Blob | HTMLImageElement | ImageBitmap | HTMLCanvasElement | OffscreenCanvas> , config: ImageConvertConfig): Promise<string> => {\n const target = imageBitmapOrCanvas instanceof Promise ? await imageBitmapOrCanvas : imageBitmapOrCanvas;\n if (target instanceof Blob) {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.onload = () => resolve(reader.result as string); // data:image/jpeg;base64,...\n reader.onerror = () => reject(new Error('\uD30C\uC77C \uC77D\uAE30 \uC2E4\uD328'));\n reader.readAsDataURL(target);\n });\n }\n\n let canvas: HTMLCanvasElement | OffscreenCanvas;\n if (target instanceof ImageBitmap || target instanceof HTMLImageElement) {\n // 1. Canvas \uC0DD\uC131 \uBC0F \uC124\uC815\n canvas = document.createElement('canvas');\n canvas.width = target.width;\n canvas.height = target.height;\n const context = canvas.getContext('2d');\n // 2. ImageBitmap\uC744 Canvas\uC5D0 \uADF8\uB9AC\uAE30\n context.drawImage(target, 0, 0);\n } else {\n // 1. OffscreenCanvas \uB610\uB294 HTMLCanvasElement\uB97C \uC0AC\uC6A9\n canvas = target;\n }\n\n\n return new Promise((resolve, reject) => {\n try {\n if (canvas instanceof OffscreenCanvas) {\n // @ts-ignore\n const blob: Blob = canvas.convertToBlob({type: config.type, quality: config.quality})\n if (blob) {\n const reader = new FileReader();\n reader.onloadend = () => {\n // reader.result\uC5D0\uB294 \"data:image/png;base64,iVBORw0KGgo...\" \uC640 \uAC19\uC740 \uBB38\uC790\uC5F4\uC774 \uD3EC\uD568\uB429\uB2C8\uB2E4.\n resolve(reader.result as string);\n };\n reader.onerror = (error) => {\n reject(new Error('Blob\uC744 base64\uB85C \uBCC0\uD658\uD558\uB294 \uC911 \uC624\uB958 \uBC1C\uC0DD: ' + error));\n };\n reader.readAsDataURL(blob);\n } else {\n reject(new Error('Blob \uC0DD\uC131 \uC2E4\uD328'));\n }\n } else {\n const base64String = canvas.toDataURL(config.type, config.quality); // \"data:image/png;base64,...\"\n resolve(base64String);\n }\n } catch (e) {\n reject(e);\n }\n })\n }\n\n export function toImageBitmap(target: File | Blob | HTMLImageElement | HTMLCanvasElement | OffscreenCanvas): Promise<ImageBitmap> {\n return createImageBitmap(target)\n }\n\n // \uC5D0\uB7EC\uC870\uC2EC CORS: SecurityError: Failed to execute 'convertToBlob' on 'OffscreenCanvas': Tainted \"OffscreenCanvas\" may not be exported.\n export const toBlobURL = async (imageBitmapOrCanvas: File | {data: ImageBitmap | HTMLCanvasElement | OffscreenCanvas, config: ImageConvertConfig}): Promise<string> => {\n const blob = await toBlob(imageBitmapOrCanvas);\n return ConvertUtils.toObjectUrl(blob)\n };\n\n export const compressImageToBase64 = async (img: ImageBitmap | File, config: { maxWidth: number } & ImageConvertConfig) => {\n const imageBitmapOrCanvas = await ConvertUtils.compressImage(img, config);\n return ConvertUtils.toBase64(imageBitmapOrCanvas, config);\n }\n\n export async function compressImage(img: ImageBitmap | File, config: { maxWidth: number } & ImageConvertConfig): Promise<Blob>;\n export async function compressImage(img: ImageBitmap | File, config: { maxWidth: number } & ImageBitmapOptions): Promise<ImageBitmap>;\n export async function compressImage(img: ImageBitmap | File, config: { maxWidth: number } & (ImageConvertConfig | ImageBitmapOptions)): Promise<Blob | ImageBitmap> {\n// \uC6D0\uD558\uB294 \uD06C\uAE30 \uC124\uC815 (\uC608: \uCD5C\uB300 \uB108\uBE44 800px)\n// console.log('--------------------11')\n if (img instanceof File) {\n img = await ConvertUtils.toImageBitmap(img);\n }\n // console.log('--------------------22')\n const target = img as ImageBitmap;\n return new Promise<Blob | Promise<ImageBitmap>>((resolve, reject) => {\n const MAX_WIDTH = config.maxWidth;\n let width = target.width;\n let height = target.height;\n\n if (width > MAX_WIDTH) {\n height = (MAX_WIDTH / width) * height;\n width = MAX_WIDTH;\n }\n const canvas = document.createElement('canvas');\n const ctx = canvas.getContext('2d');\n canvas.width = width;\n canvas.height = height;\n ctx.drawImage(target, 0, 0, width, height);\n\n if (isImageConvertConfig(config)) {\n // Canvas\uB97C Blob\uC73C\uB85C \uBCC0\uD658 (\uC555\uCD95 \uD488\uC9C8 0.7)\n canvas.toBlob(async (blob) => {\n resolve(blob);\n }, config.type, config.quality); // JPEG \uD3EC\uB9F7, \uD488\uC9C8 0.7\n } else {\n resolve(createImageBitmap(canvas));\n }\n })\n\n }\n\n export function decodeHtmlEntity(html: string, doc: Document): string {\n const textarea = doc.createElement('textarea');\n textarea.innerHTML = html;\n return textarea.value;\n }\n}\n", "export namespace ClipBoardUtils {\n export const readText = (window: Window): Promise<string> => {\n return window.navigator.clipboard.readText();\n }\n\n export const read = (window: Window): Promise<ClipboardItems> => {\n return window.navigator.clipboard.read();\n }\n\n export const writeText = (data: string, window: Window): Promise<void> => {\n\n if (window.navigator.clipboard) {\n return window.navigator.clipboard\n .writeText(data);\n } else {\n // console.log('copy exec command use');\n return new Promise((resolve, reject) => {\n try {\n const textarea = document.createElement('textarea');\n textarea.value = data;\n textarea.style.position = 'fixed'; // Prevent scrolling to bottom of page in MS Edge.\n textarea.style.opacity = '0'; // Hide the textarea\n document.body.appendChild(textarea);\n textarea.focus();\n textarea.select();\n const copyExec = document.execCommand('copy');\n document.body.removeChild(textarea);\n if (copyExec) {\n resolve();\n // alert('copied!');\n } else {\n reject(new Error('copy failed'));\n }\n } catch (err) {\n reject(err);\n }\n });\n\n }\n }\n export const write = (data: ClipboardItems, clipboard: Clipboard = navigator.clipboard): Promise<void> => {\n return clipboard.write(data);\n }\n}", "export namespace DownloadUtils {\n export const download = (window: Window, url: string | Blob, filename: string = 'download') => {\n /*\n const response = await fetch(imageUrl);\n if (!response.ok) throw new Error('Failed to fetch image');\n const blob = await response.blob();\n */\n const a = window.document.createElement('a');\n const targetUrl = typeof url === 'string' ? url : URL.createObjectURL(url);\n a.href = targetUrl;\n a.download = filename;\n a.style.display = 'none'; // Add this line to hide the element\n window.document.body.appendChild(a);\n a.click();\n window.document.body.removeChild(a);\n URL.revokeObjectURL(targetUrl);\n }\n export const csvDownload = <T>(window: Window, datas: T[], config: {includeHeader?: string, headers: (keyof T)[]}) => {\n\n // const headers = ['category', 'dateISO', 'letter', 'dataset'];\n\n const csv = datas.map(row => {\n return config.headers.map(fieldName => {\n let value = (row as any)[fieldName];\n if (value && typeof value === 'object') {\n value = JSON.stringify(value);\n }\n\n const stringValue = String(value === null || value === undefined ? '' : value);\n if (stringValue.includes(',') || stringValue.includes('\"') || stringValue.includes('\\n')) {\n return `\"${stringValue.replace(/\"/g, '\"\"')}\"`;\n }\n return stringValue;\n }).join(',');\n });\n if(config.includeHeader) {\n csv.unshift(config.headers.join(','));\n }\n const csvString = csv.join('\\r\\n');\n\n const blob = new Blob([csvString], { type: 'text/csv;charset=utf-8;' });\n const url = URL.createObjectURL(blob);\n const link = document.createElement('a');\n link.setAttribute('href', url);\n link.setAttribute('download', 'flag-data.csv');\n link.style.visibility = 'hidden';\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n URL.revokeObjectURL(url);\n }\n}", "export namespace LocationUtils {\n export const hash = (window: Window): string => {\n return window.location.hash.replace('#', '')\n }\n\n export const hashPath = (window: Window): string => {\n return window.location.hash.replace('#', '').split('?')[0]\n }\n\n // search\uB294 \uC55E\uC5D0 ? \uBD99\uC5B4\uC788\uB2E4 \uBE0C\uB77C\uC6B0\uC800\uC5D0\uC11C\uB3C4 location.search\n export const hashSearch = (window: Window): string => {\n const string = window.location.hash.replace('#', '').split('?')[1];\n return string ? `?${string}` : '';\n }\n\n export const hashQueryParams = (window: Window): Map<string, string> => {\n const s = window.location.hash.replace('#', '').split('?')[1] || '';\n return LocationUtils.queryStringToMap(s);\n }\n\n export const path = (window: Window): string => {\n return window.location.pathname;\n }\n\n export const search = (window: Window): string => {\n return window.location.search || '';\n }\n\n\n export const pathQueryParamsObject = (window: Window): { [key:string]: string } => {\n return LocationUtils.queryStringToObject(window.location.search.substring(1));\n }\n\n export const hashQueryParamsObject = (window: Window): { [key:string]: string } => {\n const s = window.location.hash.split('?').pop() ?? '';\n if (s.startsWith('#')) {\n return {};\n } else {\n return LocationUtils.queryStringToObject(s);\n }\n }\n\n export const pathQueryParams = (window: Window): Map<string, string> => {\n return LocationUtils.queryStringToMap(window.location.search.substring(1));\n }\n\n export const queryStringToMap = (s: string) => {\n const params = new Map<string, string>();\n const vars = s.split('&') || [];\n vars.forEach(it => {\n const kv = it.split('=') || [];\n if (kv[0] && kv[0].length > 0) {\n params.set(kv[0], kv[1]);\n }\n })\n return params;\n }\n\n export const queryStringToObject = (s: string): { [key:string]: string } => {\n const params = {} as { [key:string]: string };\n const vars = s.split('&') || [];\n vars.forEach(it => {\n const kv = it.split('=') || [];\n if (kv[0] && kv[0].length > 0) {\n params[kv[0]] = kv[1];\n }\n })\n return params;\n }\n}\n", "export namespace StyleCssUtils {\n\n export const getPropertyValue = (valueName: string, config: { el: Element; window: Window }) => {\n return config.window.getComputedStyle(config.el).getPropertyValue(valueName);\n };\n\n export const setPropertyValue = (valueName: string, value: string, el: HTMLElement) => {\n el.style.setProperty(valueName, value);\n };\n\n export const getComputedStyle = (config: { el: Element; window: Window }) => {\n return config.window.getComputedStyle(config.el);\n };\n\n export const getPropertyEntries = (config: { el?: Element; window: Window }) => {\n const variables = new Set<string>();\n let targetElement = config.el;\n if (!config.el) {\n targetElement = config.window.document.documentElement;\n Array.from(config.window.document.styleSheets).forEach(sheet => {\n try {\n Array.from(sheet.cssRules).forEach(rule => {\n // :root \uB610\uB294 \uB2E4\uB978 \uC120\uD0DD\uC790\uC5D0\uC11C \uCEE4\uC2A4\uD140 \uC18D\uC131 \uCC3E\uAE30\n if ('style' in rule && rule.style instanceof CSSStyleDeclaration) {\n Array.from(rule.style)\n .filter(prop => prop.startsWith('--'))\n .forEach(prop => variables.add(prop));\n }\n });\n } catch (e) {\n console.warn('\uC2A4\uD0C0\uC77C\uC2DC\uD2B8 \uC811\uADFC \uC81C\uD55C:', e); // CORS\uB85C \uC778\uD574 \uC678\uBD80 CSS \uC811\uADFC \uBD88\uAC00 \uC2DC\n }\n });\n }\n\n const computedStyles = config.window.getComputedStyle(targetElement);\n Array.from(computedStyles).filter(prop => prop.startsWith('--')).forEach(it => {\n variables.add(it);\n })\n\n return Array.from(variables).map(it => [it, computedStyles.getPropertyValue(it)])\n };\n\n\n // export class CssVarDebugger {\n // static getAllCssVars(element = document.documentElement) {\n // const styles = getComputedStyle(element);\n // const allVars = {};\n //\n // for (let i = 0; i < styles.length; i++) {\n // const prop = styles[i];\n // if (prop.startsWith('--')) {\n // allVars[prop] = styles.getPropertyValue(prop);\n // }\n // }\n //\n // return allVars;\n // }\n //\n // static logCssVars(selector = ':root') {\n // const element = document.querySelector(selector);\n // console.table(this.getAllCssVars(element));\n // }\n // }\n // // \uD2B9\uC815 \uCEF4\uD3EC\uB10C\uD2B8\uC758 \uB8E8\uD2B8 \uC694\uC18C\uC5D0 \uB300\uD574\n // const componentElement = document.querySelector('\uCEF4\uD3EC\uB10C\uD2B8 \uC120\uD0DD\uC790');\n // const computedStyles = window.getComputedStyle(componentElement);\n // console.log('All CSS variables:',\n // [...computedStyles].filter(prop => prop.startsWith('--')).map(prop =>\n // `${prop}: ${computedStyles.getPropertyValue(prop)}`\n // )\n // );\n // // \uD2B9\uC815 \uC694\uC18C\uC758 CSS \uBCC0\uC218 \uAC12 \uAC00\uC838\uC624\uAE30\n // const element = document.querySelector('\uC120\uD0DD\uC790');\n // const value = getComputedStyle(element).getPropertyValue('--\uBCC0\uC218\uBA85');\n //\n // // \uC804\uC5ED CSS \uBCC0\uC218 \uAC12 \uAC00\uC838\uC624\uAE30 (:root\uC5D0 \uC815\uC758\uB41C \uBCC0\uC218)\n // const globalValue = getComputedStyle(document.documentElement).getPropertyValue('--\uBCC0\uC218\uBA85');\n //\n // // CSS \uBCC0\uC218 \uAC12 \uC124\uC815\uD558\uAE30\n // element.style.setProperty('--\uBCC0\uC218\uBA85', '\uC0C8 \uAC12');\n}\n", "import { Observable } from '@dooboostore/core';\nimport { Subscription } from '@dooboostore/core';\nimport { AutoCloseSubscription } from '@dooboostore/core';\n\nexport namespace AnimationFrameUtils {\n export type FpsConfigParamType = { window: Window; second?: number };\n\n export type FpsCallBackData = {\n fpsConfigParam: FpsConfigParamType;\n fps: number;\n startTimestamp: number;\n timestamp: number;\n };\n\n // fps\n export function fps(params: FpsConfigParamType, callback: (value: FpsCallBackData) => void): Subscription {\n let startTimestamp: number | null = null;\n let stop = false;\n\n const animate = (currentTimestamp: number) => {\n if (startTimestamp !== null) {\n const delta = currentTimestamp - startTimestamp;\n const fps = ((params?.second ?? 1) * 1000) / delta; // \uBC00\uB9AC\uCD08\uB97C \uCD08\uB2F9 \uD504\uB808\uC784\uC73C\uB85C \uBCC0\uD658\n callback({ fpsConfigParam: params, fps, startTimestamp: startTimestamp, timestamp: currentTimestamp });\n }\n startTimestamp = currentTimestamp;\n\n if (!stop) {\n window.requestAnimationFrame(animate);\n }\n };\n\n window.requestAnimationFrame(animate);\n\n\n return new AutoCloseSubscription(()=>stop=true);\n }\n // export function fps(params: FpsConfigParamType): Promise<number>;\n // export function fps(params: FpsConfigParamType, callback?: (value: number) => void): Promise<number> | void {\n // let targetCallback: (value: number) => void;\n // let promise: Promise<number>;\n // if (callback) {\n // targetCallback = callback;\n // } else {\n // const promiseSet = Promises.withResolvers<number>();\n // promise = promiseSet.promise;\n // targetCallback = promiseSet.resolve;\n // }\n // // const second = 1;\n // let startTime = null;\n // let frameCount = 0;\n // const mm = (params.second ?? 0) + 1000;\n //\n // // timestamp\uB294 \uC560\uB2C8\uBA54\uC774\uC158 \uC694\uCCAD\uC774 \uC2DC\uC791\uB41C \uC774\uD6C4 \uACBD\uACFC\uD55C \uC2DC\uAC04\uC744 \uBC00\uB9AC\uCD08 \uB2E8\uC704\uB85C \uB098\uD0C0\uB0C5\uB2C8\uB2E4.\n // const animate = (timestamp: number) => {\n // if (startTime === null) {\n // startTime = timestamp;\n // }\n // frameCount++;\n // // 1\uCD08 \uD6C4\uC5D0 FPS \uACC4\uC0B0\n // if (timestamp - startTime >= mm) {\n // const fps = frameCount / ((timestamp - startTime) / mm);\n // targetCallback(fps); // frameCount\n // } else {\n // window.requestAnimationFrame(animate);\n // }\n // }\n // window.requestAnimationFrame(animate);\n // return promise;\n // }\n\n // export const fpsSubscribe = (config: FpsConfigParamType, callback: (value: number) => void): Subscription => {\n // let stop = false;\n // const data = () => {\n // AnimationFrameUtils.fps(config, (v) => {\n // if (stop) return;\n // callback(v)\n // data();\n // })\n // }\n // data();\n // return {\n // unsubscribe: () => {\n // stop = true;\n // }\n // }\n // }\n\n export const dividePerFpsObservable = ({\n fpsConfig,\n divideSize\n }: {\n fpsConfig: FpsConfigParamType;\n divideSize: number;\n }): Observable<FpsCallBackData & { gapPosition: number; gapSize: number }> => {\n return new Observable<FpsCallBackData & { gapPosition: number; gapSize: number }>(subscriber => {\n const handler = (event: FpsCallBackData & { gapPosition: number; gapSize: number }) => subscriber.next(event);\n // \uB514\uC2A4\uD50C\uB808\uC774\uB9C8\uB2E4 \uB2E4\uB974\uAC8C \uB098\uC62C \uC218 \uC788\uC74C \uBAA8\uB2C8\uD130 \uD5E4\uB974\uCE20\n let fps = 0;\n // 1\uCD08\uB2F9 \uADF8\uB9AC\uACE0 \uC2F6\uC740 \uD69F\uC218 (\uC774\uAC78\uB85C \uC560\uB2C8\uBA54\uC774\uC158\uC744 \uADF8\uB9B4 \uB54C \uBA87\uBC88 \uADF8\uB9B4\uC9C0 \uACB0\uC815) \uC131\uB2A5\uC870\uC808\uAC00\uB2A5\n // private readonly drawCountPerSecond: number = 60;\n const getDrawFpsGap = () => {\n return Math.floor(fps / divideSize);\n };\n\n let gapPosition = 0;\n\n const fpsSubscription = AnimationFrameUtils.fps(fpsConfig, fpsConfig => {\n fps = fpsConfig.fps;\n gapPosition++;\n const gapSize = getDrawFpsGap();\n if (gapPosition >= gapSize) {\n // console.log('dddddddddrrrrraaaww' , fpsConfig, divideSize, animationCount, drawFpsGap)\n handler({ ...fpsConfig, ...{ gapPosition, gapSize } });\n gapPosition = 0;\n }\n });\n\n return () => {\n fpsSubscription.unsubscribe();\n };\n });\n\n // @ts-ignore\n // return {\n // subscribe: (res) => {\n // // \uB514\uC2A4\uD50C\uB808\uC774\uB9C8\uB2E4 \uB2E4\uB974\uAC8C \uB098\uC62C \uC218 \uC788\uC74C \uBAA8\uB2C8\uD130 \uD5E4\uB974\uCE20\n // let fps = 0;\n // // 1\uCD08\uB2F9 \uADF8\uB9AC\uACE0 \uC2F6\uC740 \uD69F\uC218 (\uC774\uAC78\uB85C \uC560\uB2C8\uBA54\uC774\uC158\uC744 \uADF8\uB9B4 \uB54C \uBA87\uBC88 \uADF8\uB9B4\uC9C0 \uACB0\uC815) \uC131\uB2A5\uC870\uC808\uAC00\uB2A5\n // // private readonly drawCountPerSecond: number = 60;\n // const getDrawFpsGap = () => {\n // return Math.floor(fps / divideSize);\n // }\n //\n // let gapPosition = 0;\n //\n // const fpsSubscription = AnimationFrameUtils.fps(fpsConfig, (fpsConfig) => {\n // fps = fpsConfig.fps;\n // gapPosition++;\n // const gapSize = getDrawFpsGap();\n // if (gapPosition >= gapSize) {\n // // console.log('dddddddddrrrrraaaww' , fpsConfig, divideSize, animationCount, drawFpsGap)\n // res({...fpsConfig, ...{gapPosition, gapSize} });\n // gapPosition = 0;\n // }\n // });\n // return {\n // unsubscribe: () => {\n // fpsSubscription.unsubscribe();\n // }\n // };\n // }\n // }\n };\n}\n", "import {ValidUtils as CoreValidUtils} from '@dooboostore/core';\n\nexport namespace ValidUtils {\n export const coreValidUtils = CoreValidUtils;\n export const isBrowser = (callBack?: (win: Window) => void): boolean => {\n const boolean = (typeof window !== 'undefined') && (typeof Window !== 'undefined');\n if (boolean && callBack) {\n callBack(window);\n }\n return boolean;\n };\n\n export const hasParentWindow = (win: Window) => ValidUtils.isBrowser() && win.parent && win !== win.parent;\n\n //////////////\n /**\n * SNS Inapp Browser Check\n * \uCE74\uCE74\uC624\uD1A1 / \uB124\uC774\uBC84 / \uD398\uC774\uC2A4\uBD81 / \uC778\uC2A4\uD0C0\uADF8\uB7A8 \uC9C0\uC6D0\n */\n export const isSocialNetworkServiceInappBrowser = (): boolean => {\n const userAgent = ValidUtils.isBrowser() ? window.navigator.userAgent.toLowerCase() : 'none';\n return /kakaotalk|naver|facebook|insta|FBAN|FBAV/.test(userAgent);\n };\n\n /**\n * IOS Webview \uC811\uC18D\uC778\uC9C0 \uCCB4\uD06C\n */\n export const isWkWebview = (): boolean =>\n ValidUtils.isBrowser() &&\n (window as any)['webkit'] != null &&\n (window as any)['webkit'].messageHandlers != null &&\n (window as any)['webkit'].messageHandlers['System'] != null;\n export function isiPhone(): boolean {\n return ValidUtils.isBrowser() && /iphone|ipad|ipod/i.test(navigator.userAgent.toLowerCase());\n }\n /**\n * Android Webview \uC811\uC18D\uC778\uC9C0 \uCCB4\uD06C\n */\n export const isAndroidWebview = (): boolean => {\n return ValidUtils.isBrowser() && (window as any)['System'] != null;\n };\n\n export const isMobile = (win?: Window): boolean => {\n const targetWindow = win ?? (isBrowser() ? window : undefined);\n if (!targetWindow) {\n return false;\n }\n return /Mobi/i.test(targetWindow.navigator.userAgent);\n };\n\n\n}\n", "import { ReflectUtils, FunctionUtils, ActionExpression } from '@dooboostore/core';\nimport { getAddEventListenerMetadata } from './addEventListener';\nimport { ON_INITIALIZE_METADATA_KEY, ON_BEFORE_CONNECTED_METADATA_KEY, ON_AFTER_CONNECTED_METADATA_KEY, ON_BEFORE_DISCONNECTED_METADATA_KEY, ON_AFTER_DISCONNECTED_METADATA_KEY, ON_BEFORE_ADOPTED_METADATA_KEY, ON_AFTER_ADOPTED_METADATA_KEY, findAllLifecycleMetadata, getOnConnectedInnerHtmlMetadata } from './lifecycles';\nimport { getEmitCustomEventMetadataList } from './emitCustomEvent';\nimport { findAllAttributeChangedMetadata } from './changedAttributeHost';\nimport { findAllAttributeApplyMetadata } from './applyAttribute';\nimport { findAllAttributeMetadata } from './attribute';\nimport { getQueryMetadata } from './query';\nimport { getQueryAllMetadata } from './queryAll';\nimport { SwcUtils } from '../utils/Utils';\nimport { HTML_TAG_ENTRIES, DOM_EVENT_NAMES } from '../config/config';\nimport { SituationTypeContainer, SituationTypeContainers } from '@dooboostore/simple-boot/decorators/inject/Inject';\nimport { InjectSituationType, HostSet } from '../types';\nimport { ConvertUtils } from '@dooboostore/core-web';\n\n// --- Core Interfaces & Types ---\n\nexport const ELEMENT_CONFIG_KEY = Symbol.for('simple-web-component:element-config');\n\nexport interface ElementConfig {\n extends?: string;\n observedAttributes?: string[];\n customElementRegistry?: any;\n window?: Window;\n}\n\nexport interface ElementMetadata extends Omit<ElementConfig, 'window'> {\n name: string;\n window: Window;\n}\n\nexport const getElementConfig = (target: any): ElementMetadata | undefined => {\n const constructor = target instanceof Function ? target : target.constructor;\n return ReflectUtils.getMetadata(ELEMENT_CONFIG_KEY, constructor);\n};\n\nexport const ensureInit = (inst: any) => {\n if (!inst.__swc_initialized) {\n inst._swcId = Math.random().toString(36).substring(2, 11);\n inst._emitHandlers = new Map();\n inst._boundListeners = [];\n inst.__swc_initialized = true;\n\n // const attributeList = findAllQ(inst);\n // attributeList.forEach(meta => {\n // delete (inst as any)[meta.propertyKey];\n // });\n\n const target = inst instanceof Function ? inst : inst.constructor;\n \n // \u2554\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2557\n // \u2551 decorator \uD544\uB4DC\uC758 own property \uC0AD\uC81C \u2551\n // \u2551 \u2551\n // \u2551 \uC774\uC720: \u2551\n // \u2551 1. TypeScript\uB294 \uCD08\uAE30\uAC12\uC774 \uC788\uB294 \uD544\uB4DC\uB97C constructor\uC5D0\uC11C own property\uB85C \uC0DD\uC131 \u2551\n // \u2551 @attributeHost('id') myId: string = \"default\" \u2192 this.myId = \"default\" \u2551\n // \u2551 \u2551\n // \u2551 2. JavaScript\uC758 property lookup\uC740 own property\uB97C \uBA3C\uC800 \uCC3E\uC74C \u2551\n // \u2551 - this.myId \uC811\uADFC \u2551\n // \u2551 - 1\uC21C\uC704: instance\uC758 own property \uC788\uB098? \u2192 \uC788\uC73C\uBA74 \uADF8\uAC83 \uBC18\uD658 \u2551\n // \u2551 - 2\uC21C\uC704: prototype\uC758 getter \uC788\uB098? \u2192 \uC788\uC73C\uBA74 \uD638\uCD9C \u2551\n // \u2551 \u2551\n // \u2551 3. own property\uAC00 \uC788\uC73C\uBA74 prototype\uC758 getter\uB294 \uC808\uB300 \uD638\uCD9C\uB418\uC9C0 \uC54A\uC74C \u2551\n // \u2551 \uB530\uB77C\uC11C getter\uC5D0\uC11C \uC815\uC758\uB41C DOM \uB3D9\uAE30\uD654 \uB85C\uC9C1\uC774 \uC791\uB3D9\uD558\uC9C0 \uC54A\uC74C \u2551\n // \u2551 \u2551\n // \u2551 4. own property\uB97C \uC0AD\uC81C\uD558\uBA74 JavaScript\uAC00 prototype\uC758 getter\uB97C \uCC3E\uAC8C \uB428 \u2551\n // \u2551 \u2192 getter \uD638\uCD9C\uB428 \u2192 DOM \uC18D\uC131 \uAC12 \uB3D9\uAE30\uD654\uB428 \u2551\n // \u255A\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u255D\n \n // @attribute \uD544\uB4DC\uC758 own property \uC0AD\uC81C \u2192 getter/setter \uC791\uB3D9\n const attributeList = findAllAttributeMetadata(target);\n attributeList.forEach(meta => {\n delete (inst as any)[meta.propertyKey];\n });\n \n // @query \uD544\uB4DC\uC758 own property \uC0AD\uC81C \u2192 getter \uC791\uB3D9\n const queryList = getQueryMetadata(target);\n if (queryList) {\n queryList.forEach(meta => {\n delete (inst as any)[meta.propertyKey];\n });\n }\n \n // @queryAll \uD544\uB4DC\uC758 own property \uC0AD\uC81C \u2192 getter \uC791\uB3D9\n const queryAllList = getQueryAllMetadata(target);\n if (queryAllList) {\n queryAllList.forEach(meta => {\n delete (inst as any)[meta.propertyKey];\n });\n }\n\n // Call constructor script if present\n const hostSet = SwcUtils.getHostSet(inst);\n const appHosts = SwcUtils.findAllParentAppHostsDirect(inst);\n inst._executeSwcScript?.('swc-on-constructor', hostSet);\n\n // Call @onInitialize lifecycle methods\n const cMethods = findAllLifecycleMetadata(inst, ON_INITIALIZE_METADATA_KEY);\n if (cMethods) {\n for (const m of cMethods) (inst)._invokeLifecycleMethod(m, hostSet);\n }\n }\n};\n\n// --- Global Event Handling ---\nconst globalDelegatedRoots = new WeakSet<Node>();\n\nconst handleGlobalSwcEvent = async (event: Event) => {\n if ((event as any).__swc_handled) return;\n const path = event.composedPath();\n const type = event.type;\n const attrName = `swc-on-${type}`;\n\n for (const node of path) {\n if (!(node instanceof HTMLElement)) continue;\n const script = node.getAttribute?.(attrName);\n if (script && !getElementConfig(node)) {\n const host: any = SwcUtils.findNearestSwcHost(node);\n if (host && host.isConnected && typeof host.__swc_executeAttributeEvent === 'function') {\n await host.__swc_executeAttributeEvent(node, attrName, script, event);\n (event as any).__swc_handled = true;\n break;\n }\n }\n }\n};\n\nfunction buildEnv(configWindow?: Window) {\n const win: Window = configWindow || ((typeof window !== 'undefined' ? window : undefined) as any);\n const doc: Document = win?.document;\n const builtInTagMap = new Map<any, string>();\n for (const [cls, tag] of HTML_TAG_ENTRIES) {\n if ((win as any)?.[cls]) builtInTagMap.set((win as any)[cls], tag);\n }\n const domHelpers = SwcUtils.getHelperSet(win);\n \n return { win, doc, builtInTagMap, domHelpers };\n}\n\nconst getHandlers = (inst: any) => {\n if (!inst.__swc_attributeEventHandlers) inst.__swc_attributeEventHandlers = new Map();\n return inst.__swc_attributeEventHandlers;\n};\n\nconst setupPrototype = (proto: any) => {\n if (proto.__swc_proto_setup) return;\n proto.__swc_proto_setup = true;\n\n proto._executeSwcScript = function (attrName: string, hostSet: HostSet, extraArgs: Record<string, any> = {}) {\n ensureInit(this);\n const script = this.getAttribute(attrName);\n if (script) {\n try {\n const conf = getElementConfig(this);\n const currentWin = (this as any)._resolveWindow(conf);\n const helpers = SwcUtils.getHelperSet(currentWin);\n const args = { ...hostSet, ...helpers, ...extraArgs, $el: this, $root: this.getRootNode() };\n FunctionUtils.execute({ script, context: this, args });\n } catch (e) {\n console.error(`[SWC] Failed to execute ${attrName}:`, e);\n }\n }\n };\n\n proto._resolveWindow = function (localConfig?: ElementConfig): Window {\n ensureInit(this);\n if (localConfig?.window) return localConfig.window;\n const ancestors = SwcUtils.findAllSwcHosts(this as any);\n for (let i = ancestors.length - 1; i >= 0; i--) {\n const aConf = getElementConfig(ancestors[i]);\n if (aConf?.window) return aConf.window;\n }\n return (typeof window !== 'undefined' ? window : undefined) as Window;\n };\n\n proto._invokeLifecycleMethod = function (methodName: string | symbol, hostSet?: HostSet, extraArgs: any[] = []) {\n ensureInit(this);\n if (typeof (this as any)[methodName] !== 'function') return;\n const useHostSet = hostSet ?? SwcUtils.getHostSet(this);\n const app = useHostSet?.$appHost?.simpleApplication;\n // console.log('---->hh',app, this, methodName);\n if (app) {\n const otherStorage = new Map<any, any>();\n const situations = new SituationTypeContainers([new SituationTypeContainer({ situationType: InjectSituationType.HOST_SET, data: useHostSet }), new SituationTypeContainer({ situationType: InjectSituationType.APP_HOST, data: useHostSet.$appHost }), new SituationTypeContainer({ situationType: InjectSituationType.APP_HOSTS, data: useHostSet.$appHosts }), new SituationTypeContainer({ situationType: InjectSituationType.HOST, data: useHostSet.$host }), new SituationTypeContainer({ situationType: InjectSituationType.HOSTS, data: useHostSet.$hosts }), new SituationTypeContainer({ situationType: InjectSituationType.FIRST_HOST, data: useHostSet.$firstHost }), new SituationTypeContainer({ situationType: InjectSituationType.LAST_HOST, data: useHostSet.$lastHost }), new SituationTypeContainer({ situationType: InjectSituationType.FIRST_APP_HOST, data: useHostSet.$firstAppHost }), new SituationTypeContainer({ situationType: InjectSituationType.LAST_APP_HOST, data: useHostSet.$lastAppHost })]);\n otherStorage.set(SituationTypeContainers, situations);\n\n return app.simstanceManager.executeBindParameterSim(\n {\n target: this,\n targetKey: methodName,\n inputParameters: extraArgs\n },\n otherStorage\n );\n } else {\n return (this as any)[methodName](...extraArgs);\n }\n };\n\n proto._bindAttributeEvent = function (el: HTMLElement, attrName: string, script: string, eventName?: string) {\n ensureInit(this);\n if (!eventName) {\n if (!attrName.startsWith('swc-on-')) return;\n eventName = attrName.substring(7);\n }\n const elHandlers = getHandlers(this);\n let handlers = elHandlers.get(el);\n if (!handlers) {\n handlers = new Map();\n elHandlers.set(el, handlers);\n }\n\n const oldHandler = handlers.get(attrName);\n if (oldHandler) el.removeEventListener(eventName, oldHandler);\n\n const handler = async (event: any) => {\n const hostSet = SwcUtils.getHostSet(el);\n const conf = getElementConfig(this);\n const currentWin = (this as any)._resolveWindow(conf);\n const helpers = SwcUtils.getHelperSet(currentWin);\n const args = {\n event,\n $data: (event as CustomEvent).detail,\n ...hostSet,\n ...helpers,\n $el: el,\n $root: this.getRootNode()\n };\n await FunctionUtils.execute({ script, context: el, args });\n };\n\n el.addEventListener(eventName, handler);\n handlers.set(attrName, handler);\n };\n\n proto.__swc_executeAttributeEvent = async function (el: HTMLElement, attrName: string, script: string, event: Event) {\n ensureInit(this);\n\n const hostSet = SwcUtils.getHostSet(el);\n const conf = getElementConfig(this);\n const currentWin = (this as any)._resolveWindow(conf);\n const currentHelpers = SwcUtils.getHelperSet(currentWin);\n const detail = (event as CustomEvent).detail;\n const args = {\n event,\n $event: event,\n $data: detail,\n $detail: detail,\n ...hostSet,\n ...currentHelpers,\n $el: el,\n $root: this.getRootNode()\n };\n await FunctionUtils.execute({ script, context: el, args });\n };\n};\n\nexport const elementDefine =\n (name: string, config: Partial<ElementConfig> = {}): ClassDecorator =>\n (constructor: any) => {\n const { win, doc, builtInTagMap: BUILT_IN_TAG_MAP, domHelpers: SWC_DOM_HELPERS } = buildEnv(config.window);\n const metadata: ElementMetadata = { ...config, name, window: win };\n\n if (!metadata.window) {\n throw new Error('window is required');\n }\n\n let extendsTagName = metadata.extends;\n if (!extendsTagName) {\n let proto = constructor;\n const BaseHTMLElement = (win as any).HTMLElement;\n while (proto && proto !== BaseHTMLElement && proto !== Function.prototype) {\n extendsTagName = BUILT_IN_TAG_MAP.get(proto);\n if (extendsTagName) break;\n proto = Object.getPrototypeOf(proto);\n }\n metadata.extends = extendsTagName;\n }\n\n const emitCustomEventList = getEmitCustomEventMetadataList(constructor) || [];\n const emitHostCustomEventList = emitCustomEventList.filter(meta => meta.selector === ':host' || meta.selector === '');\n const addEventListenerList = getAddEventListenerMetadata(constructor) || [];\n const attrChangeMap = findAllAttributeChangedMetadata(constructor);\n const attributeList = findAllAttributeMetadata(constructor);\n const applyAttributeMap = findAllAttributeApplyMetadata(constructor);\n\n const swcLifecycleAttributes = ['swc-on-constructor', 'swc-on-connected', 'swc-on-disconnected', 'swc-on-before-connected', 'swc-on-after-connected', 'swc-on-before-disconnected', 'swc-on-after-disconnected', 'swc-on-before-adopted', 'swc-on-after-adopted', 'swc-on-attribute-changed'];\n const swcOnEvents = DOM_EVENT_NAMES.map(e => `swc-on-${e}`);\n\n // Collect all observed attributes from all decorators\n const attributeApplyNames = Array.from(applyAttributeMap.values()).map(it => it.options.name).filter(Boolean) as string[];\n // const attributeListNames = attributeList.map(it => it.options.name || String(it.propertyKey));\n const hostAttributes = attributeList.filter(it => it.selector === ':host').map(it=>it.options.name || String(it.propertyKey));\n\n const mergedObservedAttributes = [...new Set([\n ...(metadata.observedAttributes ?? []),\n ...attrChangeMap.keys(),\n ...attributeApplyNames,\n ...hostAttributes,\n ...emitHostCustomEventList.map(it => (it.options as any).attributeName).filter(Boolean),\n ...swcLifecycleAttributes,\n ...swcOnEvents\n ])];\n\n const connectedInnerHtmlList = getOnConnectedInnerHtmlMetadata(constructor) || [];\n\n const proto = constructor.prototype;\n setupPrototype(proto);\n\n const originalConnected = proto.connectedCallback;\n proto.connectedCallback = function () {\n ensureInit(this);\n\n const hostSet = SwcUtils.getHostSet(this as any);\n const appHost = hostSet.$appHost;\n const conf = getElementConfig(this);\n const currentWin = (this as any)._resolveWindow(conf);\n\n if (connectedInnerHtmlList.some(it => it.options.useShadow === true) && !this.shadowRoot) {\n this.attachShadow({ mode: 'open' });\n }\n\n (this as any)._executeSwcScript('swc-on-before-connected', hostSet);\n const bMethods = findAllLifecycleMetadata(this, ON_BEFORE_CONNECTED_METADATA_KEY);\n if (bMethods) {\n for (const m of bMethods) (this as any)._invokeLifecycleMethod(m, hostSet);\n }\n\n if (connectedInnerHtmlList.length > 0) {\n let sContent = '',\n lContent = '';\n for (const meta of connectedInnerHtmlList) {\n // const res = (this as any)[meta.propertyKey]();\n const res = (this as any)._invokeLifecycleMethod(meta.propertyKey, hostSet);\n // console.log('------res0', res);\n // console.log('------res1', res1);\n if (res !== undefined) {\n if (meta.options.useShadow) sContent += res;\n else lContent += res;\n }\n }\n if (this.shadowRoot) this.shadowRoot.innerHTML = sContent;\n if (lContent) this.innerHTML = lContent;\n }\n\n const root = this.getRootNode();\n if (!globalDelegatedRoots.has(root)) {\n DOM_EVENT_NAMES.forEach(type => {\n root.addEventListener(type, handleGlobalSwcEvent);\n });\n globalDelegatedRoots.add(root);\n }\n\n // Separate delegate and non-delegate listeners\n const delegateListeners: typeof addEventListenerList = [];\n const nonDelegateListeners: typeof addEventListenerList = [];\n \n addEventListenerList.forEach(meta => {\n if (meta.options.delegate && meta.selector !== ':window' && meta.selector !== ':document' && meta.selector !== ':parentHost' && meta.selector !== ':appHost' && meta.selector !== ':firstHost' && meta.selector !== ':lastHost' && meta.selector !== ':firstAppHost' && meta.selector !== ':lastAppHost' && meta.selector !== ':hosts' && meta.selector !== ':appHosts' && meta.selector !== ':host' && meta.selector !== '') {\n delegateListeners.push(meta);\n } else {\n nonDelegateListeners.push(meta);\n }\n });\n\n const delegatesByTypeAndRoot = new Map<string, any[]>();\n delegateListeners.forEach(meta => {\n const r = meta.options.root || 'auto';\n const rootKey = `${meta.type}:${r}`;\n if (!delegatesByTypeAndRoot.has(rootKey)) {\n delegatesByTypeAndRoot.set(rootKey, []);\n }\n delegatesByTypeAndRoot.get(rootKey)!.push(meta);\n });\n\n delegatesByTypeAndRoot.forEach((metaList, typeRootKey) => {\n const [type, rStr] = typeRootKey.split(':');\n const r = rStr === 'auto' ? 'auto' : rStr;\n const opts = { capture: metaList[0].options.capture, once: metaList[0].options.once, passive: metaList[0].options.passive };\n \n const bindRoots: (HTMLElement | ShadowRoot)[] = [];\n if (r === 'auto') bindRoots.push(this.shadowRoot || (this as any));\n else if (r === 'light') bindRoots.push(this as any);\n else if (r === 'shadow' && this.shadowRoot) bindRoots.push(this.shadowRoot);\n else if (r === 'all') {\n bindRoots.push(this as any);\n if (this.shadowRoot) bindRoots.push(this.shadowRoot);\n }\n\n bindRoots.forEach(br => {\n const sortedMetaList = [...metaList].sort((a, b) => {\n const aStop = a.options.stopPropagation ? 1 : 0;\n const bStop = b.options.stopPropagation ? 1 : 0;\n return bStop - aStop;\n });\n \n const unifiedHandler = async (event: Event) => {\n for (const meta of sortedMetaList) {\n const { selector, options } = meta;\n const matchedEl = (event.target as HTMLElement).closest(selector);\n if (matchedEl && (br as any).contains(matchedEl)) {\n // Apply filter if specified\n if (options.filter) {\n const helper = SwcUtils.getHelperAndHostSet(currentWin, matchedEl);\n if (!options.filter(event, helper)) {\n continue; // Skip this listener if filter returns false\n }\n }\n if (options.stopPropagation) event.stopPropagation();\n if (options.stopImmediatePropagation) event.stopImmediatePropagation();\n if (options.preventDefault) event.preventDefault();\n const currentHostSet = SwcUtils.getHostSet(this as any);\n const args = { event, ...currentHostSet, $el: matchedEl, $root: br };\n await (this as any)[meta.propertyKey](event, currentHostSet, matchedEl, args);\n if ((event as any).cancelBubble) break;\n }\n }\n };\n br.addEventListener(type, unifiedHandler, opts);\n (this as any)._boundListeners.push({ target: br, type, handler: unifiedHandler, options: opts });\n });\n });\n\n nonDelegateListeners.forEach(meta => {\n const { selector, type, options } = meta;\n const opts = { capture: options.capture, once: options.once, passive: options.passive };\n const bindTargets: EventTarget[] = [];\n const r = options.root || 'auto';\n const applyRootOption = (target: any) => {\n if (!target) return;\n if (r === 'auto') {\n bindTargets.push(target.shadowRoot || target);\n } else {\n if (r === 'light' || r === 'all') bindTargets.push(target);\n if ((r === 'shadow' || r === 'all') && target.shadowRoot) bindTargets.push(target.shadowRoot);\n }\n };\n\n if (selector === ':window') bindTargets.push(currentWin);\n else if (selector === ':document') bindTargets.push(currentWin.document);\n else if (selector === ':parentHost') applyRootOption(hostSet.$parentHost);\n else if (selector === ':appHost') applyRootOption(hostSet.$appHost);\n else if (selector === ':firstHost') applyRootOption(hostSet.$firstHost);\n else if (selector === ':lastHost') applyRootOption(hostSet.$lastHost);\n else if (selector === ':firstAppHost') applyRootOption(hostSet.$firstAppHost);\n else if (selector === ':lastAppHost') applyRootOption(hostSet.$lastAppHost);\n else if (selector === ':hosts') hostSet.$hosts.forEach(applyRootOption);\n else if (selector === ':appHosts') hostSet.$appHosts.forEach(applyRootOption);\n else if (selector === ':host' || !selector) applyRootOption(this);\n else {\n const searchRoots: (HTMLElement | ShadowRoot)[] = [];\n if (r === 'auto') searchRoots.push(this.shadowRoot || (this as any));\n else if (r === 'light') searchRoots.push(this as any);\n else if (r === 'shadow' && this.shadowRoot) searchRoots.push(this.shadowRoot);\n else if (r === 'all') {\n searchRoots.push(this as any);\n if (this.shadowRoot) searchRoots.push(this.shadowRoot);\n }\n\n searchRoots.forEach(sr => {\n sr.querySelectorAll(selector).forEach(el => bindTargets.push(el));\n });\n }\n\n bindTargets.forEach(t => {\n const handler = async (event: Event) => {\n // Apply filter if specified\n if (options.filter) {\n const helper = SwcUtils.getHelperAndHostSet(currentWin, t as HTMLElement);\n if (!options.filter(event, helper)) {\n return; // Skip if filter returns false\n }\n }\n if (options.stopPropagation) event.stopPropagation();\n if (options.stopImmediatePropagation) event.stopImmediatePropagation();\n if (options.preventDefault) event.preventDefault();\n const currentHostSet = SwcUtils.getHostSet(this as any);\n const args = { event, ...currentHostSet, $el: t, $root: t };\n await (this as any)[meta.propertyKey](event, currentHostSet, args);\n };\n t.addEventListener(type, handler, opts);\n if (options.removeOnDisconnected === true || t === currentWin || t === currentWin.document) {\n (this as any)._boundListeners.push({ target: t, type, handler, options: opts });\n }\n });\n });\n\n if (originalConnected) originalConnected.apply(this);\n\n const aMethods = findAllLifecycleMetadata(this, ON_AFTER_CONNECTED_METADATA_KEY);\n if (aMethods) {\n for (const m of aMethods) (this as any)._invokeLifecycleMethod(m, hostSet);\n }\n (this as any)._executeSwcScript('swc-on-connected', hostSet);\n (this as any)._executeSwcScript('swc-on-after-connected', hostSet);\n (this as any).__swc_connected = true;\n\n // Register to appHost LAST when all lifecycle completed\n // console.log('!!!!!!!!!!!!!!', this, appHost)\n const appHostss = SwcUtils.findAllParentAppHostsDirect(this)\n // const nAppHostSet = SwcUtils.getHostSet(this as any);\n if (appHost && typeof (appHost as any)._connected === 'function') {\n (appHost as any)._connected(this);\n } else if (appHost && typeof (appHost as any)) {\n (appHost as any)._connected_safari ??= [];\n (appHost as any)._connected_safari.push(this);\n }\n };\n\n const originalDisconnected = proto.disconnectedCallback;\n proto.disconnectedCallback = function () {\n const hostSet = SwcUtils.getHostSet(this as any);\n (this as any)._executeSwcScript('swc-on-before-disconnected', hostSet);\n const bMethods = findAllLifecycleMetadata(this, ON_BEFORE_DISCONNECTED_METADATA_KEY);\n if (bMethods) {\n for (const m of bMethods) (this as any)._invokeLifecycleMethod(m, hostSet);\n }\n\n if ((this as any)._boundListeners) {\n (this as any)._boundListeners.forEach((l: any) => l.target.removeEventListener(l.type, l.handler, l.options));\n (this as any)._boundListeners = [];\n }\n\n if (originalDisconnected) originalDisconnected.apply(this);\n\n const aMethods = findAllLifecycleMetadata(this, ON_AFTER_DISCONNECTED_METADATA_KEY);\n if (aMethods) {\n for (const m of aMethods) (this as any)._invokeLifecycleMethod(m, hostSet);\n }\n (this as any)._executeSwcScript('swc-on-disconnected', hostSet);\n (this as any)._executeSwcScript('swc-on-after-disconnected', hostSet);\n (this as any).__swc_connected = false;\n \n // Remove from appHost LAST when disconnected\n const appHost = hostSet.$appHost;\n if (appHost && typeof (appHost as any)._disconnected === 'function') {\n (appHost as any)._disconnected(this);\n }\n };\n\n const originalAdopted = proto.adoptedCallback;\n proto.adoptedCallback = function () {\n const hostSet = SwcUtils.getHostSet(this as any);\n (this as any)._executeSwcScript('swc-on-before-adopted', hostSet);\n const bMethods = findAllLifecycleMetadata(this, ON_BEFORE_ADOPTED_METADATA_KEY);\n if (bMethods) {\n for (const m of bMethods) (this as any)._invokeLifecycleMethod(m, hostSet);\n }\n\n if (originalAdopted) originalAdopted.apply(this);\n\n const aMethods = findAllLifecycleMetadata(this, ON_AFTER_ADOPTED_METADATA_KEY);\n if (aMethods) {\n for (const m of aMethods) (this as any)._invokeLifecycleMethod(m, hostSet);\n }\n (this as any)._executeSwcScript('swc-on-adopted', hostSet);\n (this as any)._executeSwcScript('swc-on-after-adopted', hostSet);\n };\n\n const originalAttributeChanged = proto.attributeChangedCallback;\n proto.attributeChangedCallback = function (name: string, old: string | null, newVal: string | null) {\n if (originalAttributeChanged) originalAttributeChanged.apply(this, [name, old, newVal]);\n\n const hSet = SwcUtils.getHostSet(this as any);\n\n // Process expression directive before passing to handlers\n let processedVal = newVal;\n if (newVal !== null) {\n const ae = new ActionExpression(newVal);\n const expr = ae.getFirstExpression('call-return');\n if (expr) {\n const win = (this as any)._resolveWindow?.() || ((typeof window !== 'undefined' ? window : undefined) as any);\n try {\n const result = FunctionUtils.executeReturn({\n script: ConvertUtils.decodeHtmlEntity(expr.script, win.document),\n context: this,\n args: SwcUtils.getHelperAndHostSet(win,this as any)\n });\n processedVal = String(result);\n } catch (e) {\n console.error(`[SWC] Failed to execute directive {{= ${expr.script} }} on attribute ${name}:`, e);\n processedVal = newVal;\n }\n }\n }\n\n if (name.startsWith('swc-on-') && !swcLifecycleAttributes.includes(name)) {\n if (newVal !== null) {\n const eventName = name.substring(7);\n (this as any)._bindAttributeEvent(this as any, name, newVal, eventName);\n }\n }\n\n const hostCustomEventMeta = emitHostCustomEventList.find(it => (it.options as any).attributeName === name);\n if (hostCustomEventMeta && newVal !== null) {\n (this as any)._bindAttributeEvent(this as any, name, newVal, hostCustomEventMeta.type);\n }\n\n const mKeys = attrChangeMap.get(name);\n if (mKeys && Array.isArray(mKeys)) {\n for (const key of mKeys) (this as any)[key](processedVal, old, name, hSet);\n }\n };\n\n Object.defineProperty(constructor, 'observedAttributes', {\n get: () => mergedObservedAttributes,\n configurable: true\n });\n\n ReflectUtils.defineMetadata(ELEMENT_CONFIG_KEY, metadata, constructor);\n const registry = metadata.customElementRegistry || (win as any)?.customElements;\n if (registry && !registry.get(metadata.name)) {\n registry.define(metadata.name, constructor as any, metadata.extends ? { extends: metadata.extends } : undefined);\n }\n return constructor;\n };\n", "import {ReflectUtils, FunctionUtils, ActionExpression} from '@dooboostore/core';\nimport {ensureInit, getElementConfig} from './elementDefine';\nimport {SwcUtils} from '../utils/Utils';\nimport {SpecialSelector, SwcQueryOptions} from '../types';\nimport { ConvertUtils } from '@dooboostore/core-web';\nexport interface AttributeFieldOptions extends SwcQueryOptions {\n name?: string;\n // connectedInitialize?: boolean;\n type?: typeof Number | typeof Boolean | typeof String;\n}\n\nexport interface AttributeFieldMetadata {\n propertyKey: string | symbol;\n selector: string;\n options: AttributeFieldOptions;\n privateKey: symbol;\n}\n\nexport const ATTRIBUTE_FIELD_METADATA_KEY = Symbol.for('simple-web-component:attribute-field');\n\nconst convertValue = (val: string | null, type: any): any => {\n if (val === null || val === undefined) return val;\n if (type === Number) return Number(val);\n if (type === Boolean) return val === 'false' || val === '0' ? false : true;\n return val;\n};\n\nexport const resolveTargetEls = (inst: any, selector: string, options: AttributeFieldOptions, currentWin: any): HTMLElement[] => {\n const r = options.root || 'auto';\n const results: HTMLElement[] = [];\n\n const applyRoot = (target: any) => {\n if (!target) return;\n if (r === 'auto') {\n results.push(target);\n } else {\n if (r === 'light' || r === 'all') results.push(target);\n if ((r === 'shadow' || r === 'all') && target.shadowRoot) results.push(target.shadowRoot);\n }\n };\n\n if (selector === ':host' || !selector) {\n applyRoot(inst);\n } else if (selector === ':window') {\n results.push(currentWin);\n } else if (selector === ':document') {\n results.push(currentWin.document);\n } else {\n const hostSet = SwcUtils.getHostSet(inst);\n if (selector === ':parentHost') applyRoot(hostSet.$parentHost);\n else if (selector === ':appHost') applyRoot(hostSet.$appHost as any);\n else if (selector === ':firstHost') applyRoot(hostSet.$firstHost);\n else if (selector === ':lastHost') applyRoot(hostSet.$lastHost);\n else if (selector === ':firstAppHost') applyRoot(hostSet.$firstAppHost as any);\n else if (selector === ':lastAppHost') applyRoot(hostSet.$lastAppHost as any);\n else {\n if (r === 'shadow') {\n const found = inst.shadowRoot?.querySelectorAll(selector);\n if (found) results.push(...found);\n } else if (r === 'light') {\n const found = inst.querySelectorAll(selector);\n if (found) results.push(...found);\n } else if (r === 'all') {\n const sMatch = inst.shadowRoot?.querySelectorAll(selector);\n const lMatch = inst.querySelectorAll(selector);\n if (sMatch) results.push(...sMatch);\n if (lMatch) results.push(...lMatch);\n } else {\n const found = (inst.shadowRoot || inst).querySelectorAll(selector);\n if (found) results.push(...found);\n }\n }\n }\n return results;\n};\n\n/**\n * @attribute decorator to sync a field value with an element's attribute.\n */\nexport function attribute(selector: string, options: AttributeFieldOptions = {}): PropertyDecorator {\n return (target: Object, propertyKey: string | symbol) => {\n const constructor = target.constructor;\n const privateKey = Symbol(String(propertyKey));\n //\n const designType = (Reflect as any).getMetadata('design:type', target, propertyKey);\n //\n let metaList = ReflectUtils.getOwnMetadata(ATTRIBUTE_FIELD_METADATA_KEY, constructor) as AttributeFieldMetadata[];\n if (!metaList) {\n metaList = [];\n ReflectUtils.defineMetadata(ATTRIBUTE_FIELD_METADATA_KEY, metaList, constructor);\n }\n metaList.push({propertyKey, selector, options, privateKey});\n\n const applySetAttribute = (inst: any, targets: HTMLElement[], attrName: string, nv: any) => {\n targets.forEach(it => {\n // console.log('sssssssssssss', it, attrName, nv);\n if (it && typeof (it as any).setAttribute === 'function') {\n if (nv === null) {\n (it as any).removeAttribute(attrName);\n } else {\n (it as any).setAttribute(attrName, String(nv));\n }\n } else {\n inst[privateKey] = nv;\n }\n });\n };\n\n try {\n // Own property\uB97C \uC0AD\uC81C\uD558\uC5EC getter\uAC00 \uC791\uB3D9\uD558\uB3C4\uB85D \uD568\n // delete target[propertyKey];\n\n // const defineTarget = target instanceof Function ? target : (target as any).constructor;\n \n Object.defineProperty(target, propertyKey, {\n get(this: any) {\n const attrName = options.name || String(propertyKey);\n const conf = getElementConfig(this);\n const currentWin = this._resolveWindow?.(conf) || ((typeof window !== 'undefined' ? window : undefined) as any);\n const targetType = options.type || designType;\n\n const targets = resolveTargetEls(this, selector, options, currentWin);\n const primaryTarget = targets[0];\n\n if (primaryTarget && typeof (primaryTarget as any).hasAttribute === 'function') {\n if ((primaryTarget as any).hasAttribute(attrName)) {\n let domVal = (primaryTarget as any).getAttribute(attrName);\n \n // \uD45C\uD604\uC2DD \uCCB4\uD06C\n const ae = new ActionExpression(domVal);\n const expr = ae.getFirstExpression('call-return');\n if (expr) {\n try {\n const result = FunctionUtils.executeReturn({\n script: ConvertUtils.decodeHtmlEntity(expr.script, currentWin.document),\n context: this,\n args: SwcUtils.getHelperAndHostSet(currentWin, this)\n });\n return convertValue(result, targetType);\n } catch (e) {\n console.error(`[SWC] Failed to execute directive {{= ${expr.script} }}:`, e);\n return convertValue(domVal, targetType);\n }\n }\n \n return convertValue(domVal, targetType);\n }\n return null;\n }\n\n const data = convertValue(this[privateKey], targetType);\n return data;\n },\n set(this: any, nv: any) {\n // this[propertyKey] = nv;\n // console.log('------>??settttt', this, nv, propertyKey);\n const attrName = options.name || String(propertyKey);\n const conf = getElementConfig(this);\n const currentWin = this._resolveWindow?.(conf) || ((typeof window !== 'undefined' ? window : undefined) as any);\n\n\n // if (!this.__swc_connected) {\n // this[privateKey] = nv;\n // return;\n // }\n\n const targets = resolveTargetEls(this, selector, options, currentWin);\n applySetAttribute(this, targets, attrName, nv);\n },\n enumerable: true,\n configurable: true\n });\n } catch (err) {\n console.error('[SWC] defineProperty error:', err);\n }\n };\n}\n\n/**\n * @attributeHost decorator to sync a field value with the :host element's attribute.\n */\nexport function attributeHost(target: Object, propertyKey: string | symbol): void;\nexport function attributeHost(options: AttributeFieldOptions): PropertyDecorator;\nexport function attributeHost(attrName: string): PropertyDecorator;\nexport function attributeHost(attrName: string, options: AttributeFieldOptions): PropertyDecorator;\nexport function attributeHost(targetOrAttrOrOptions?: any, propertyKeyOrOptions?: any): any {\n if (propertyKeyOrOptions !== undefined && (typeof propertyKeyOrOptions === 'string' || typeof propertyKeyOrOptions === 'symbol')) {\n return attribute(':host', { name: String(propertyKeyOrOptions) })(targetOrAttrOrOptions, propertyKeyOrOptions);\n }\n\n if (typeof targetOrAttrOrOptions === 'string') {\n const attrName = targetOrAttrOrOptions;\n const options = (typeof propertyKeyOrOptions === 'object' ? propertyKeyOrOptions : {}) as AttributeFieldOptions;\n return attribute(':host', { ...options, name: attrName });\n } else if (typeof targetOrAttrOrOptions === 'object') {\n const options = targetOrAttrOrOptions as AttributeFieldOptions;\n return (target: Object, propertyKey: string | symbol) => {\n return attribute(':host', { ...options, name: String(propertyKey) })(target, propertyKey);\n };\n } else {\n return (target: Object, propertyKey: string | symbol) => {\n return attribute(':host', { name: String(propertyKey) })(target, propertyKey);\n };\n }\n}\n\nexport const findAllAttributeMetadata = (target: any): AttributeFieldMetadata[] => {\n const actualTarget = target instanceof Function ? target : target.constructor;\n return ReflectUtils.findAllMetadata<AttributeFieldMetadata[]>(ATTRIBUTE_FIELD_METADATA_KEY, actualTarget).flat();\n};\n", "import { ReflectUtils } from '@dooboostore/core';\nimport { ensureInit, getElementConfig } from './elementDefine';\nimport { HelperHostSet, SwcRootType } from '../types';\nimport { SwcUtils } from \"../utils/Utils\";\n\nexport type ApplyNodePosition = 'beforeBegin' | 'afterBegin' | 'beforeEnd' | 'afterEnd' | 'replace' | 'replaceChildren' | 'innerHtml' | 'innerText' | 'remove';\n\nexport interface ApplyNodeOptions {\n position?: ApplyNodePosition;\n root?: SwcRootType;\n /**\n * Filter function to determine whether to perform DOM operation.\n * If it returns false, the operation is skipped.\n */\n filter?: (target: HTMLElement | ShadowRoot, newValue: any, helper: HelperHostSet) => boolean;\n /**\n * Optional loading content to display while an async method is executing.\n */\n loading?: (helper: HelperHostSet) => any;\n}\n\nexport interface ApplyNodeMetadata {\n propertyKey: string | symbol;\n selector: string;\n options: ApplyNodeOptions;\n}\n\nexport const APPLY_NODE_METADATA_KEY = Symbol.for('simple-web-component:apply-node');\n\nconst normalizeNodes = (res: any, doc: Document): Node[] => {\n const items = Array.isArray(res) ? res : [res];\n return items.map(it => {\n if (it instanceof Node) return it;\n return doc.createTextNode(it !== undefined && it !== null ? String(it) : '');\n });\n};\n\nconst applyToDom = (targetEl: any, res: any, pos: ApplyNodePosition, doc: Document) => {\n if (!targetEl) return;\n \n if (pos === 'innerHtml') {\n targetEl.innerHTML = res !== undefined && res !== null ? String(res) : '';\n return;\n }\n \n if (pos === 'innerText') {\n if (targetEl.innerText !== undefined) {\n targetEl.innerText = res !== undefined && res !== null ? String(res) : '';\n }\n return;\n }\n\n const isShadowRoot = targetEl instanceof ShadowRoot;\n const nodes = normalizeNodes(res, doc);\n if (pos === 'replace') {\n if (!isShadowRoot) targetEl.replaceWith(...nodes);\n } else if (pos === 'replaceChildren') {\n targetEl.replaceChildren(...nodes);\n } else {\n if (pos === 'beforeEnd') targetEl.append(...nodes);\n else if (pos === 'afterBegin') targetEl.prepend(...nodes);\n else if (pos === 'beforeBegin' && !isShadowRoot) targetEl.before(...nodes);\n else if (pos === 'afterEnd' && !isShadowRoot) targetEl.after(...nodes);\n }\n};\n\n/**\n * @applyNode decorator to surgically add/replace nodes to a target element.\n */\nexport function applyNode(selector: string, options: ApplyNodeOptions = { position: 'beforeEnd' }): MethodDecorator {\n return (targetObj: Object, propertyKey: string | symbol, descriptor: PropertyDescriptor) => {\n const constructor = targetObj.constructor;\n let metaList = ReflectUtils.getOwnMetadata(APPLY_NODE_METADATA_KEY, constructor) as Map<string | symbol, ApplyNodeMetadata>;\n if (!metaList) {\n metaList = new Map<string | symbol, ApplyNodeMetadata>();\n ReflectUtils.defineMetadata(APPLY_NODE_METADATA_KEY, metaList, constructor);\n }\n metaList.set(propertyKey, { propertyKey, selector, options });\n\n const original = descriptor.value;\n descriptor.value = function (...args: any[]) {\n ensureInit(this);\n \n const conf = getElementConfig(this);\n const currentWin = (this as any)._resolveWindow?.(conf) || ((typeof window !== 'undefined' ? window : undefined) as Window);\n const currentDoc = currentWin.document;\n const hostSet = SwcUtils.getHelperAndHostSet(currentWin, this);\n \n const getTarget = () => {\n const r = options.root || 'auto';\n const applyRoot = (t: any) => {\n if (!t) return t;\n if (r === 'auto') return t.shadowRoot || t;\n if (r === 'shadow') return t.shadowRoot;\n if (r === 'light') return t;\n if (r === 'all') return t.shadowRoot || t;\n return t;\n };\n\n if (selector === ':host') return applyRoot(this);\n if (selector === ':parentHost') return applyRoot(hostSet.$parentHost);\n if (selector === ':appHost') return applyRoot(hostSet.$appHost);\n if (selector === ':firstHost') return applyRoot(hostSet.$firstHost);\n if (selector === ':lastHost') return applyRoot(hostSet.$lastHost);\n \n const targetRoot = applyRoot(this);\n return targetRoot ? targetRoot.querySelector(selector) : null;\n };\n\n const targetEl = getTarget();\n const res = original.apply(this, args);\n\n const runApply = (target: any, val: any) => {\n const pos = options.position || 'beforeEnd';\n \n // Intelligent Default Filter\n const defaultFilter = (t: any, v: any) => {\n if (v instanceof Node) return !t.contains(v);\n if (pos === 'innerHtml' && typeof v === 'string') return t.innerHTML !== v;\n if (pos === 'replaceChildren' && v instanceof Node) return !t.contains(v);\n return true;\n };\n \n const activeFilter = options.filter || defaultFilter;\n \n if (activeFilter(target, val, hostSet)) {\n applyToDom(target, val, pos, currentDoc);\n }\n };\n\n if (res instanceof Promise) {\n // \uBE44\uB3D9\uAE30\uC77C \uB54C\uB9CC \uB85C\uB529 \uD45C\uC2DC\n if (targetEl && options.loading) {\n const loadingRes = options.loading.call(this, hostSet);\n applyToDom(targetEl, loadingRes, options.position || 'beforeEnd', currentDoc);\n }\n\n return res.then(finalRes => {\n if (finalRes !== undefined && targetEl) runApply(targetEl, finalRes);\n return finalRes;\n });\n } else {\n if (res !== undefined && targetEl) runApply(targetEl, res);\n return res;\n }\n };\n };\n}\n\nexport const findAllApplyNodeMetadata = (target: any): Map<string | symbol, ApplyNodeMetadata> => {\n const result = new Map<string | symbol, ApplyNodeMetadata>();\n const maps = ReflectUtils.findAllMetadata<Map<string | symbol, ApplyNodeMetadata>>(APPLY_NODE_METADATA_KEY, target);\n maps.forEach(map => {\n if (map instanceof Map) {\n map.forEach((v, k) => result.set(k, v));\n }\n });\n return result;\n};\n\nexport function applyNodeHost(options: ApplyNodeOptions): MethodDecorator;\nexport function applyNodeHost(target: Object, propertyKey: string | symbol, descriptor: PropertyDescriptor): void;\nexport function applyNodeHost(targetOrOptions?: any, propertyKey?: string | symbol, descriptor?: PropertyDescriptor): any {\n if (propertyKey !== undefined) return applyNode(':host', { position: 'beforeEnd' })(targetOrOptions, propertyKey, descriptor);\n const opt = targetOrOptions || {};\n return applyNode(':host', { position: 'beforeEnd', ...opt });\n}\n\nexport function applyReplaceChildrenNodeHost(options: ApplyNodeOptions): MethodDecorator;\nexport function applyReplaceChildrenNodeHost(target: Object, propertyKey: string | symbol, descriptor: PropertyDescriptor): void;\nexport function applyReplaceChildrenNodeHost(targetOrOptions?: any, propertyKey?: string | symbol, descriptor?: PropertyDescriptor): any {\n if (propertyKey !== undefined) return applyNode(':host', { position: 'replaceChildren' })(targetOrOptions, propertyKey, descriptor);\n const opt = targetOrOptions || {};\n return applyNode(':host', { position: 'replaceChildren', ...opt });\n}\n\nexport function applyInnerHtmlNodeHost(options: ApplyNodeOptions): MethodDecorator;\nexport function applyInnerHtmlNodeHost(target: Object, propertyKey: string | symbol, descriptor: PropertyDescriptor): void;\nexport function applyInnerHtmlNodeHost(targetOrOptions?: any, propertyKey?: string | symbol, descriptor?: PropertyDescriptor): any {\n if (propertyKey !== undefined) return applyNode(':host', { position: 'innerHtml' })(targetOrOptions, propertyKey, descriptor);\n const opt = targetOrOptions || {};\n return applyNode(':host', { position: 'innerHtml', ...opt });\n}\n\nexport function applyReplaceChildrenNode(selector: string, options: ApplyNodeOptions = {}): MethodDecorator {\n return applyNode(selector, { ...options, position: 'replaceChildren' });\n}\n\nexport function applyInnerHtmlNode(selector: string, options: ApplyNodeOptions = {}): MethodDecorator {\n return applyNode(selector, { ...options, position: 'innerHtml' });\n}\n", "import { ReflectUtils } from '@dooboostore/core';\nimport { ensureInit } from './elementDefine';\nimport { SwcUtils } from '../utils/Utils';\nimport { SwcQueryOptions, HelperHostSet } from '../types';\n\nexport const CLASS_METADATA_KEY = Symbol.for('simple-web-component:class');\n\nexport type ClassAction = 'set' | 'update' | 'add' | 'remove' | 'toggle';\n\nexport interface ClassApplyOptions extends SwcQueryOptions {}\n\nexport interface ClassApplyMetadata {\n propertyKey: string | symbol;\n selector: string;\n action: ClassAction;\n options: ClassApplyOptions;\n}\n\nfunction createClassDecorator(action: ClassAction) {\n return (selector: string, classMapOrOptions?: string | { [className: string]: (el: HTMLElement, value: any, helper: HelperHostSet & { $this: any }) => boolean } | ClassApplyOptions, options: ClassApplyOptions = {}): MethodDecorator => {\n return (target: Object, propertyKey: string | symbol, descriptor: PropertyDescriptor) => {\n const constructor = target.constructor;\n let metaList = ReflectUtils.getOwnMetadata(CLASS_METADATA_KEY, constructor) as Map<string | symbol, ClassApplyMetadata>;\n if (!metaList) {\n metaList = new Map<string | symbol, ClassApplyMetadata>();\n ReflectUtils.defineMetadata(CLASS_METADATA_KEY, metaList, constructor);\n }\n\n let classMap: any = undefined;\n let finalOptions = options;\n\n if (typeof classMapOrOptions === 'string' || (typeof classMapOrOptions === 'object' && classMapOrOptions !== null && !('root' in classMapOrOptions))) {\n classMap = classMapOrOptions;\n } else if (typeof classMapOrOptions === 'object' && classMapOrOptions !== null && 'root' in classMapOrOptions) {\n finalOptions = classMapOrOptions as ClassApplyOptions;\n }\n\n metaList.set(propertyKey, { propertyKey, selector, action, options: finalOptions });\n\n const original = descriptor.value;\n descriptor.value = async function (...args: any[]) {\n ensureInit(this);\n const res = await (original as any).apply(this, args);\n if (res !== undefined) {\n const win = (this as any).ownerDocument?.defaultView || window;\n const host = this as unknown as HTMLElement;\n const hostSet = { ...SwcUtils.getHelperAndHostSet(win, host), $this: this };\n const r = finalOptions.root || 'auto';\n const targetEls: HTMLElement[] = [];\n\n const applyRoot = (t: any) => {\n if (!t || !(t instanceof win.HTMLElement)) return;\n targetEls.push(t);\n };\n\n if (selector === ':parentHost') applyRoot(hostSet.$parentHost);\n else if (selector === ':appHost') applyRoot(hostSet.$appHost);\n else if (selector === ':firstHost') applyRoot(hostSet.$firstHost);\n else if (selector === ':lastHost') applyRoot(hostSet.$lastHost);\n else if (selector === ':firstAppHost') applyRoot(hostSet.$firstAppHost);\n else if (selector === ':lastAppHost') applyRoot(hostSet.$lastAppHost);\n else if (selector === ':hosts') hostSet.$hosts.forEach(applyRoot);\n else if (selector === ':appHosts') hostSet.$appHosts.forEach(applyRoot);\n else if (selector === ':host' || !selector) applyRoot(host);\n else {\n const targetRoot = r === 'auto' ? (host.shadowRoot || host) : (r === 'shadow' ? host.shadowRoot : host);\n if (targetRoot) {\n const found = targetRoot.querySelectorAll(selector);\n if (found) targetEls.push(...(Array.from(found) as HTMLElement[]));\n }\n }\n\n targetEls.forEach(targetEl => {\n const resolvedRes = typeof res === 'function' ? (res as any)(targetEl, hostSet) : res;\n\n if (action === 'set') {\n let classes = '';\n if (classMap && typeof classMap === 'string') {\n classes = resolvedRes ? classMap : '';\n } else if (typeof resolvedRes === 'object' && resolvedRes !== null && !Array.isArray(resolvedRes)) {\n classes = Object.entries(resolvedRes as any)\n .filter(([_, force]) => typeof force === 'function' ? force(targetEl, hostSet) : !!force)\n .map(([cls]) => cls)\n .join(' ');\n } else {\n classes = Array.isArray(resolvedRes) ? (resolvedRes as any[]).join(' ') : String(resolvedRes);\n }\n targetEl.className = classes;\n } else if (action === 'update' || action === 'toggle') {\n if (classMap && typeof classMap === 'string') {\n targetEl.classList.toggle(classMap, !!resolvedRes);\n } else if (typeof resolvedRes === 'object' && resolvedRes !== null && !Array.isArray(resolvedRes)) {\n Object.entries(resolvedRes as any).forEach(([cls, force]) => {\n const isActive = typeof force === 'function' ? force(targetEl, hostSet) : !!force;\n targetEl.classList.toggle(cls, isActive);\n });\n } else {\n const classes = Array.isArray(resolvedRes) ? (resolvedRes as any[]).map(String) : [String(resolvedRes)];\n if (action === 'update') targetEl.classList.add(...classes);\n else classes.forEach(c => targetEl.classList.toggle(c));\n }\n } else if (action === 'add' || action === 'remove') {\n if (classMap && typeof classMap === 'string' && !!resolvedRes) {\n if (action === 'add') targetEl.classList.add(classMap);\n else targetEl.classList.remove(classMap);\n } else if (typeof resolvedRes === 'object' && resolvedRes !== null && !Array.isArray(resolvedRes)) {\n Object.entries(resolvedRes as any).forEach(([cls, force]) => {\n const shouldExecute = typeof force === 'function' ? force(targetEl, hostSet) : !!force;\n if (shouldExecute) {\n if (action === 'add') targetEl.classList.add(cls);\n else targetEl.classList.remove(cls);\n }\n });\n } else {\n const classes = Array.isArray(resolvedRes) ? (resolvedRes as any[]).map(String) : [String(resolvedRes)];\n if (action === 'add') targetEl.classList.add(...classes);\n else targetEl.classList.remove(...classes);\n }\n }\n });\n }\n return res;\n };\n return descriptor;\n };\n };\n}\n\nexport function applyClass(selector: string, action: ClassAction = 'update', options: ClassApplyOptions = {}): MethodDecorator {\n return createClassDecorator(action)(selector, options);\n}\n\nexport const setClass = (selector: string, classMapOrOptions?: string | { [className: string]: (el: HTMLElement, value: any, helper: HelperHostSet & { $this: any }) => boolean } | ClassApplyOptions, options: ClassApplyOptions = {}) => createClassDecorator('set')(selector, classMapOrOptions, options);\nexport const updateClass = (selector: string, classMapOrOptions?: string | { [className: string]: (el: HTMLElement, value: any, helper: HelperHostSet & { $this: any }) => boolean } | ClassApplyOptions, options: ClassApplyOptions = {}) => createClassDecorator('update')(selector, classMapOrOptions, options);\nexport const addClass = (selector: string, classMapOrOptions?: string | { [className: string]: (el: HTMLElement, value: any, helper: HelperHostSet & { $this: any }) => boolean } | ClassApplyOptions, options: ClassApplyOptions = {}) => createClassDecorator('add')(selector, classMapOrOptions, options);\nexport const removeClass = (selector: string, classMapOrOptions?: string | { [className: string]: (el: HTMLElement, value: any, helper: HelperHostSet & { $this: any }) => boolean } | ClassApplyOptions, options: ClassApplyOptions = {}) => createClassDecorator('remove')(selector, classMapOrOptions, options);\nexport const toggleClass = (selector: string, classMapOrOptions?: string | { [className: string]: (el: HTMLElement, value: any, helper: HelperHostSet & { $this: any }) => boolean } | ClassApplyOptions, options: ClassApplyOptions = {}) => createClassDecorator('toggle')(selector, classMapOrOptions, options);\n\n// Host versions\nexport function applyClassHost(action: ClassAction = 'update', options: ClassApplyOptions = {}): MethodDecorator {\n return createClassDecorator(action)(':host', options);\n}\nexport const setClassHost = (classMapOrOptions?: string | { [className: string]: (el: HTMLElement, value: any, helper: HelperHostSet & { $this: any }) => boolean } | ClassApplyOptions, options: ClassApplyOptions = {}) => createClassDecorator('set')(':host', classMapOrOptions, options);\nexport const updateClassHost = (classMapOrOptions?: string | { [className: string]: (el: HTMLElement, value: any, helper: HelperHostSet & { $this: any }) => boolean } | ClassApplyOptions, options: ClassApplyOptions = {}) => createClassDecorator('update')(':host', classMapOrOptions, options);\nexport const addClassHost = (classMapOrOptions?: string | { [className: string]: (el: HTMLElement, value: any, helper: HelperHostSet & { $this: any }) => boolean } | ClassApplyOptions, options: ClassApplyOptions = {}) => createClassDecorator('add')(':host', classMapOrOptions, options);\nexport const removeClassHost = (classMapOrOptions?: string | { [className: string]: (el: HTMLElement, value: any, helper: HelperHostSet & { $this: any }) => boolean } | ClassApplyOptions, options: ClassApplyOptions = {}) => createClassDecorator('remove')(':host', classMapOrOptions, options);\nexport const toggleClassHost = (classMapOrOptions?: string | { [className: string]: (el: HTMLElement, value: any, helper: HelperHostSet & { $this: any }) => boolean } | ClassApplyOptions, options: ClassApplyOptions = {}) => createClassDecorator('toggle')(':host', classMapOrOptions, options);\n\nexport const findAllClassMetadata = (target: any): Map<string | symbol, ClassApplyMetadata> => {\n const result = new Map<string | symbol, ClassApplyMetadata>();\n const maps = ReflectUtils.findAllMetadata<Map<string | symbol, ClassApplyMetadata>>(CLASS_METADATA_KEY, target);\n maps.forEach(map => {\n if (map instanceof Map) {\n map.forEach((v, k) => result.set(k, v));\n }\n });\n return result;\n};\n", "import { ReflectUtils } from '@dooboostore/core';\nimport { ensureInit } from './elementDefine';\nimport { SwcUtils } from '../utils/Utils';\nimport { SwcQueryOptions, HelperHostSet } from '../types';\n\nexport type StyleAction = 'set' | 'update' | 'remove';\n\nexport interface StyleApplyOptions extends SwcQueryOptions {}\n\nexport interface StyleApplyMetadata {\n propertyKey: string | symbol;\n selector: string;\n action: StyleAction;\n options: StyleApplyOptions;\n}\n\nexport const STYLE_METADATA_KEY = Symbol.for('simple-web-component:style');\n\nfunction createStyleDecorator(action: StyleAction) {\n return (selector: string, options: StyleApplyOptions = {}): MethodDecorator => {\n return (target: Object, propertyKey: string | symbol, descriptor: PropertyDescriptor) => {\n const constructor = target.constructor;\n let metaList = ReflectUtils.getOwnMetadata(STYLE_METADATA_KEY, constructor) as Map<string | symbol, StyleApplyMetadata>;\n if (!metaList) {\n metaList = new Map<string | symbol, StyleApplyMetadata>();\n ReflectUtils.defineMetadata(STYLE_METADATA_KEY, metaList, constructor);\n }\n metaList.set(propertyKey, { propertyKey, selector, action, options });\n\n const original = descriptor.value;\n descriptor.value = async function (...args: any[]) {\n ensureInit(this);\n const res = await (original as any).apply(this, args);\n if (res !== undefined) {\n const win = (this as any).ownerDocument?.defaultView || window;\n const host = this as unknown as HTMLElement;\n const hostSet = SwcUtils.getHelperAndHostSet(win, host);\n const r = options.root || 'auto';\n const targetEls: HTMLElement[] = [];\n\n const applyRoot = (t: any) => {\n if (!t || !(t instanceof win.HTMLElement)) return;\n targetEls.push(t);\n };\n\n if (selector === ':parentHost') applyRoot(hostSet.$parentHost);\n else if (selector === ':appHost') applyRoot(hostSet.$appHost);\n else if (selector === ':firstHost') applyRoot(hostSet.$firstHost);\n else if (selector === ':lastHost') applyRoot(hostSet.$lastHost);\n else if (selector === ':firstAppHost') applyRoot(hostSet.$firstAppHost);\n else if (selector === ':lastAppHost') applyRoot(hostSet.$lastAppHost);\n else if (selector === ':hosts') hostSet.$hosts.forEach(applyRoot);\n else if (selector === ':appHosts') hostSet.$appHosts.forEach(applyRoot);\n else if (selector === ':host' || !selector) applyRoot(host);\n else {\n const targetRoot = r === 'auto' ? (host.shadowRoot || host) : (r === 'shadow' ? host.shadowRoot : host);\n if (targetRoot) {\n const found = targetRoot.querySelectorAll(selector);\n if (found) targetEls.push(...(Array.from(found) as HTMLElement[]));\n }\n }\n\n targetEls.forEach(targetEl => {\n const resolvedRes = typeof res === 'function' ? (res as any)(targetEl, hostSet) : res;\n\n if (action === 'set' || action === 'update') {\n if (action === 'set') targetEl.style.cssText = '';\n \n if (typeof resolvedRes === 'object' && resolvedRes !== null && !Array.isArray(resolvedRes)) {\n Object.entries(resolvedRes as any).forEach(([prop, val]) => {\n const finalVal = typeof val === 'function' ? val(targetEl, hostSet) : val;\n if (finalVal === null || finalVal === undefined) {\n targetEl.style.removeProperty(prop);\n } else {\n targetEl.style[prop as any] = String(finalVal);\n }\n });\n } else if (typeof resolvedRes === 'string') {\n targetEl.style.cssText = resolvedRes;\n }\n } else if (action === 'remove') {\n if (typeof resolvedRes === 'object' && resolvedRes !== null && !Array.isArray(resolvedRes)) {\n Object.entries(resolvedRes as any).forEach(([prop, val]) => {\n const shouldRemove = typeof val === 'function' ? val(targetEl, hostSet) : !!val;\n if (shouldRemove) {\n targetEl.style.removeProperty(prop);\n }\n });\n } else {\n const props = Array.isArray(resolvedRes) ? resolvedRes : [resolvedRes];\n props.forEach(p => targetEl.style.removeProperty(String(p)));\n }\n }\n });\n }\n return res;\n };\n return descriptor;\n };\n };\n}\n\nexport function applyStyle(selector: string, action: StyleAction = 'update', options: StyleApplyOptions = {}): MethodDecorator {\n return createStyleDecorator(action)(selector, options);\n}\n\nexport const setStyle = (selector: string, options: StyleApplyOptions = {}) => createStyleDecorator('set')(selector, options);\nexport const updateStyle = (selector: string, options: StyleApplyOptions = {}) => createStyleDecorator('update')(selector, options);\nexport const removeStyle = (selector: string, options: StyleApplyOptions = {}) => createStyleDecorator('remove')(selector, options);\n\n// Host versions\nexport function applyStyleHost(action: StyleAction = 'update', options: StyleApplyOptions = {}): MethodDecorator {\n return createStyleDecorator(action)(':host', options);\n}\nexport const setStyleHost = (options: StyleApplyOptions = {}) => createStyleDecorator('set')(':host', options);\nexport const updateStyleHost = (options: StyleApplyOptions = {}) => createStyleDecorator('update')(':host', options);\nexport const removeStyleHost = (options: StyleApplyOptions = {}) => createStyleDecorator('remove')(':host', options);\n\nexport const findAllStyleMetadata = (target: any): Map<string | symbol, StyleApplyMetadata> => {\n const result = new Map<string | symbol, StyleApplyMetadata>();\n const maps = ReflectUtils.findAllMetadata<Map<string | symbol, StyleApplyMetadata>>(STYLE_METADATA_KEY, target);\n maps.forEach(map => {\n if (map instanceof Map) {\n map.forEach((v, k) => result.set(k, v));\n }\n });\n return result;\n};\n", "import { ReflectUtils } from '@dooboostore/core';\nimport { ensureInit } from './elementDefine';\nimport { SwcUtils } from '../utils/Utils';\nimport { SwcQueryOptions } from '../types';\n\nexport interface PropertySetOptions extends SwcQueryOptions {\n name?: string;\n}\n\nexport interface PropertySetMetadata {\n propertyKey: string | symbol;\n selector: string;\n options: PropertySetOptions;\n}\n\nexport const PROPERTY_SET_METADATA_KEY = Symbol.for('simple-web-component:property-set');\n\nexport const setProperty = (selector: string, propertyNameOrOptions?: string | PropertySetOptions, options: PropertySetOptions = {}): MethodDecorator => {\n return (target: Object, propertyKey: string | symbol, descriptor: PropertyDescriptor) => {\n const constructor = target.constructor;\n let metaList = ReflectUtils.getOwnMetadata(PROPERTY_SET_METADATA_KEY, constructor) as Map<string | symbol, PropertySetMetadata>;\n if (!metaList) {\n metaList = new Map<string | symbol, PropertySetMetadata>();\n ReflectUtils.defineMetadata(PROPERTY_SET_METADATA_KEY, metaList, constructor);\n }\n\n let propertyName = typeof propertyNameOrOptions === 'string' ? propertyNameOrOptions : undefined;\n let finalOptions = options;\n \n if (typeof propertyNameOrOptions === 'object' && propertyNameOrOptions !== null) {\n finalOptions = propertyNameOrOptions as PropertySetOptions;\n }\n\n metaList.set(propertyKey, { \n propertyKey, \n selector, \n options: { ...finalOptions, name: propertyName } \n });\n\n const original = descriptor.value;\n descriptor.value = async function (...args: any[]) {\n ensureInit(this);\n const res = await (original as any).apply(this, args);\n if (res !== undefined) {\n const win = (this as any).ownerDocument?.defaultView || window;\n const host = this as unknown as HTMLElement;\n const hostSet = { ...SwcUtils.getHelperAndHostSet(win, host), $this: this };\n const r = finalOptions.root || 'auto';\n const targetEls: HTMLElement[] = [];\n\n const applyRoot = (t: any) => {\n if (!t || !(t instanceof win.HTMLElement)) return;\n targetEls.push(t);\n };\n\n if (selector === ':parentHost') applyRoot(hostSet.$parentHost);\n else if (selector === ':appHost') applyRoot(hostSet.$appHost);\n else if (selector === ':firstHost') applyRoot(hostSet.$firstHost);\n else if (selector === ':lastHost') applyRoot(hostSet.$lastHost);\n else if (selector === ':firstAppHost') applyRoot(hostSet.$firstAppHost);\n else if (selector === ':lastAppHost') applyRoot(hostSet.$lastAppHost);\n else if (selector === ':hosts') hostSet.$hosts.forEach(applyRoot);\n else if (selector === ':appHosts') hostSet.$appHosts.forEach(applyRoot);\n else if (selector === ':host' || !selector) applyRoot(host);\n else {\n const targetRoot = r === 'auto' ? (host.shadowRoot || host) : (r === 'shadow' ? host.shadowRoot : host);\n if (targetRoot) {\n const found = targetRoot.querySelectorAll(selector);\n if (found) targetEls.push(...(Array.from(found) as HTMLElement[]));\n }\n }\n\n targetEls.forEach(targetEl => {\n const resolvedRes = typeof res === 'function' ? (res as any)(targetEl, hostSet) : res;\n\n if (propertyName) {\n // Case: @setProperty(selector, 'propertyName')\n (targetEl as any)[propertyName] = resolvedRes;\n } else if (typeof resolvedRes === 'object' && resolvedRes !== null && !Array.isArray(resolvedRes)) {\n // Case: @setProperty(selector) with Object return - assign multiple properties\n Object.entries(resolvedRes as any).forEach(([prop, val]) => {\n const finalVal = typeof val === 'function' ? val(targetEl, hostSet) : val;\n (targetEl as any)[prop] = finalVal;\n });\n } else {\n // Simple value - assign to 'value' property by default\n (targetEl as any).value = resolvedRes;\n }\n });\n }\n };\n };\n};\n\nexport const setPropertyHost = (propertyNameOrOptions?: string | PropertySetOptions, options: PropertySetOptions = {}): MethodDecorator => {\n return setProperty(':host', propertyNameOrOptions, options);\n};\n", "import { ReflectUtils } from '@dooboostore/core';\nimport { Router } from '@dooboostore/core-web';\n\nexport const SUBSCRIBE_SWC_APP_ROUTE_CHANGE_METADATA_KEY = Symbol.for('simple-web-component:subscribe-swc-app-route-change');\n\nexport interface SwcAppRouteChangeSubscriberMetadata {\n propertyKey: string | symbol;\n pathPattern?: string | string[];\n filter?: (router: Router) => boolean;\n}\n\nexport interface SwcAppRouteChangeOptions {\n path?: string | string[];\n filter?: (router: Router) => boolean;\n}\n\nfunction createSwcAppRouteChangeSubscriber(options?: SwcAppRouteChangeOptions): MethodDecorator {\n return (target: Object, propertyKey: string | symbol, descriptor?: PropertyDescriptor) => {\n const pathPattern = options?.path;\n const filter = options?.filter;\n\n const constructor = target.constructor;\n let list = ReflectUtils.getOwnMetadata(SUBSCRIBE_SWC_APP_ROUTE_CHANGE_METADATA_KEY, constructor) as SwcAppRouteChangeSubscriberMetadata[];\n if (!list) {\n list = [];\n ReflectUtils.defineMetadata(SUBSCRIBE_SWC_APP_ROUTE_CHANGE_METADATA_KEY, list, constructor);\n }\n list.push({ propertyKey, pathPattern, filter });\n \n return descriptor;\n };\n}\n\n// \uC624\uBC84\uB85C\uB4DC \uC2DC\uADF8\uB2C8\uCC98 - \uC9C1\uC811 \uC0AC\uC6A9 (\uAD04\uD638 \uC5C6\uC74C)\nexport function subscribeSwcAppRouteChange(target: Object, propertyKey: string | symbol, descriptor: PropertyDescriptor): PropertyDescriptor | void;\n// \uC624\uBC84\uB85C\uB4DC \uC2DC\uADF8\uB2C8\uCC98 - \uD568\uC218 \uD638\uCD9C (\uAD04\uD638 \uC788\uC74C)\nexport function subscribeSwcAppRouteChange(): MethodDecorator;\nexport function subscribeSwcAppRouteChange(pathPattern: string): MethodDecorator;\nexport function subscribeSwcAppRouteChange(pathPatterns: string[]): MethodDecorator;\nexport function subscribeSwcAppRouteChange(options: SwcAppRouteChangeOptions): MethodDecorator;\n\n// \uC2E4\uC81C \uAD6C\uD604 (\uC774\uC911 \uBAA8\uB4DC)\nexport function subscribeSwcAppRouteChange(targetOrOptions?: any, propertyKey?: string | symbol, descriptor?: PropertyDescriptor): any {\n // \uC9C1\uC811 \uB370\uCF54\uB808\uC774\uD130\uB85C \uC0AC\uC6A9\uB41C \uACBD\uC6B0 (\uAD04\uD638 \uC5C6\uC74C): @subscribeSwcAppRouteChange\n // propertyKey\uAC00 string | symbol\uC774\uACE0 descriptor\uAC00 \uC788\uC73C\uBA74 \uC9C1\uC811 \uC0AC\uC6A9\n if (propertyKey && (typeof propertyKey === 'string' || typeof propertyKey === 'symbol')) {\n return createSwcAppRouteChangeSubscriber({})(targetOrOptions, propertyKey, descriptor);\n }\n \n // \uD568\uC218\uB85C \uD638\uCD9C\uB41C \uACBD\uC6B0 (\uAD04\uD638 \uC788\uC74C): @subscribeSwcAppRouteChange() / @subscribeSwcAppRouteChange('/path')\n let options: SwcAppRouteChangeOptions = {};\n\n if (Array.isArray(targetOrOptions)) {\n // \uBC30\uC5F4: @subscribeSwcAppRouteChange(['/path1', '/path2'])\n options.path = targetOrOptions;\n } else if (typeof targetOrOptions === 'string') {\n // \uBB38\uC790\uC5F4: @subscribeSwcAppRouteChange('/path')\n options.path = targetOrOptions;\n } else if (targetOrOptions && typeof targetOrOptions === 'object') {\n // \uAC1D\uCCB4: @subscribeSwcAppRouteChange({ path: '/path', filter: ... })\n options = targetOrOptions;\n }\n\n return createSwcAppRouteChangeSubscriber(options);\n}\n\n// Helper function to retrieve route change subscribers metadata\nexport const getSubscribeSwcAppRouteChangeMetadata = (target: any): SwcAppRouteChangeSubscriberMetadata[] | undefined => {\n const constructor = target instanceof Function ? target : target.constructor;\n return ReflectUtils.getOwnMetadata(SUBSCRIBE_SWC_APP_ROUTE_CHANGE_METADATA_KEY, constructor);\n};\n", "import { ConstructorType, GenericClassDecorator } from '@dooboostore/core';\nimport { ReflectUtils } from '@dooboostore/core';\nimport { SimpleApplication } from '../SimpleApplication';\nimport { ValidUtils } from '@dooboostore/core';\n\nexport enum Lifecycle {\n /**\n * The default registration scope, Each resolve will return the same instance (including resolves from child containers)\n */\n Singleton = 'Singleton',\n /**\n * a new instance will be created with each resolve\n */\n Transient = 'Transient'\n}\n\nexport const sims = new Map<ConstructorType<any> | Function, Set<ConstructorType<any> | Function | any>>();\nexport const containers = new Set<SimpleApplication>();\n// console.log('-->',sims)\n\nexport type SimConfigProxy = ((ProxyHandler<any> | ConstructorType<any> | Function)) | (ProxyHandler<any> | ConstructorType<any> | Function)[];\nexport type SimConfigUsing = (ConstructorType<any> | Function | object) | ((ConstructorType<any> | Function | object)[]);\n\nexport interface SimConfig {\n symbol?: symbol | (symbol[]);\n scheme?: string | (string[]);\n scope?: Lifecycle;\n container?: SimpleApplication | symbol | (SimpleApplication | symbol)[];\n autoCreate?: boolean;\n proxy?: SimConfigProxy;\n type?: (ConstructorType<any> | Function) | (ConstructorType<any> | Function)[];\n using?: SimConfigUsing;\n}\n\nexport const SimMetadataKey = Symbol.for('simple-boot:sim-metadata');\n\nconst isNotNullObjetInstance = (target: any) => target != null && target !== undefined && typeof target === 'object';\n\nexport const simProcess = (config: SimConfig, inputTarget: ConstructorType<any> | Function | any) => {\n // default setting\n /*\n // Sim({symbol: TTSymbol, scope: Lifecycle.Transient})(function (){\n // console.log('new TT')\n // return {a: 'name'}\n // })\n // Sim({symbol: TTSymbol, scope: Lifecycle.Transient})(() =>{\n // console.log('new TT')\n // return {a: 'name'}\n // })\n Sim({symbol: TTSymbol, scope: Lifecycle.Transient})({a: 'name'})\n */\n const target = (() => {\n if (typeof inputTarget === 'object') {\n return config.scope === Lifecycle.Singleton ? inputTarget : (ValidUtils.isPlainObject(inputTarget) ? { ...inputTarget }: inputTarget);\n }\n if (ValidUtils.isArrowFunction(inputTarget)) {\n return () => (inputTarget as Function)();\n }\n return inputTarget;\n })();\n\n\n\n\n let targetType: ConstructorType<any> | Function;\n if (isNotNullObjetInstance(target)) {\n targetType = target.constructor;\n } else {\n targetType = target;\n }\n config.scope = config?.scope ?? Lifecycle.Singleton;\n ReflectUtils.defineMetadata(SimMetadataKey, config, targetType);\n const adding = (targetKey: ConstructorType<any> | Function, target: ConstructorType<any> | Function | any = targetKey) => {\n const items = sims.get(targetKey) ?? new Set<ConstructorType<any> | Function | any>();\n items.add(target);\n sims.set(targetKey, items);\n }\n\n\n if (Array.isArray(config?.type)) {\n config?.type.forEach(it => {\n adding(it, target);\n })\n } else if (config.type) {\n adding(config?.type, target);\n } else {\n adding(target)\n }\n // adding(targetType)\n // console.log('----------->', sims)\n}\n// const a = Math.random()+Date.now();\nexport function Sim(target: ConstructorType<any> | Function): void;\nexport function Sim(config: SimConfig): GenericClassDecorator<ConstructorType<any> | Function | any>;\nexport function Sim(configOrTarget: SimConfig | ConstructorType<any> | Function): void | GenericClassDecorator<ConstructorType<any> | Function | any> {\n // console.group('sim')\n // sims.forEach((v,k) => {\n // console.log('sssss->', v, k)\n // })\n // console.groupEnd()\n if (typeof configOrTarget === 'function') {\n simProcess({}, configOrTarget);\n // console.log('---!', Reflect.getMetadata('design:paramtypes', configOrTarget))\n } else {\n return (target: ConstructorType<any> | Function | any) => {\n simProcess(configOrTarget, target);\n }\n }\n}\n\n// Alias for @sim (lowercase)\nexport const sim = Sim;\n\nexport const getSim = (target: ConstructorType<any> | Function | any): SimConfig | undefined => {\n if (target != null && target !== undefined && typeof target === 'object') {\n // proxy \uAC78\uB9B0\uAC70\uB584\uBB38\uC5D0 \uC774\uB807\uAC8C \uD55C\uB2E4. \uC548\uAC78\uB9B0\uAC83\uB3C4 \uC798\uB41C\uB2E4.\n target = Object.getPrototypeOf(target).constructor;\n // target = target.constructor;\n }\n try {\n return ReflectUtils.getMetadata(SimMetadataKey, target);\n } catch (e) {\n }\n}\n\nconst PostConstructMetadataKey = Symbol.for('simple-boot:post-construct-metadata');\nexport type PostConstructMetaType = {property: string};\nconst postConstructProcess = (target: any, config: PostConstructMetaType) => {\n const metas = getPostConstructs(target) ?? [];\n metas.push(config);\n ReflectUtils.defineMetadata(PostConstructMetadataKey, metas, target);\n}\nexport const PostConstruct = (target: any, propertyKey: string, descriptor: PropertyDescriptor) => {\n postConstructProcess(target, {property: propertyKey});\n}\nexport const getPostConstructs = (target: any): PostConstructMetaType[] => {\n return ReflectUtils.getMetadata(PostConstructMetadataKey, target) ?? [];\n}\n\n// Alias for @postConstruct (lowercase)\nexport const postConstruct = PostConstruct;\n", "import { ReflectUtils } from '@dooboostore/core';\nimport { MetaDataPropertyAtomic } from '../MetaDataAtomic';\nimport { ObjectUtils } from '@dooboostore/core';\nimport { ConstructorType } from '@dooboostore/core';\nimport { ReflectMethod } from '../../types/Types';\n\nconst AfterMetadataKey = Symbol.for('simple-boot:after-metadata');\nconst BeforeMetadataKey = Symbol.for('simple-boot:before-metadata');\nconst AroundMetadataKey = Symbol.for('simple-boot:around-metadata');\ntype AOPOption = { type?: ConstructorType<any>; property: string };\ntype AroundOption = {\n before?: (obj: any, propertyKey: string, args: any[]) => any[];\n after?: (obj: any, propertyKey: string, args: any[], beforeReturn: any) => any[];\n};\n\n// after\nexport const After = (data: AOPOption) => {\n return ReflectUtils.metadata(AfterMetadataKey, data);\n};\nexport const getAfter = (target: any, propertyKey: string): AOPOption | undefined => {\n return ReflectUtils.getMetadata(AfterMetadataKey, target, propertyKey);\n};\n\nexport const getAfters = (target: any): MetaDataPropertyAtomic<any, AOPOption | undefined>[] => {\n return (\n ObjectUtils.allProtoTypeName(target)\n .map(it => new MetaDataPropertyAtomic<any, AOPOption | undefined>(target, getAfter(target, it), it))\n .filter(it => it.metaData !== undefined) || []\n );\n};\n\nexport const getProtoAfters = (\n target: any,\n propertyKey: string,\n type?: ConstructorType<any>\n): MetaDataPropertyAtomic<any, AOPOption | undefined>[] => {\n return (\n getAfters(target).filter(it => propertyKey === it.metaData?.property && type === it.metaData.type?.prototype) || []\n );\n};\n\n// before\nexport const Before = (data: AOPOption) => {\n return ReflectUtils.metadata(BeforeMetadataKey, data);\n};\n\nexport const getBefore = (target: any, propertyKey: string): AOPOption | undefined => {\n return ReflectUtils.getMetadata(BeforeMetadataKey, target, propertyKey);\n};\n\nexport const getBefores = (target: any): MetaDataPropertyAtomic<any, AOPOption | undefined>[] => {\n return (\n ObjectUtils.allProtoTypeName(target)\n .map(it => new MetaDataPropertyAtomic<any, AOPOption | undefined>(target, getBefore(target, it), it))\n .filter(it => it.metaData !== undefined) || []\n );\n};\n\nexport const getProtoBefores = (\n target: any,\n propertyKey: string,\n type?: ConstructorType<any>\n): MetaDataPropertyAtomic<any, AOPOption | undefined>[] => {\n return (\n getBefores(target).filter(it => propertyKey === it.metaData?.property && type === it.metaData.type?.prototype) || []\n );\n};\n\nexport class AroundForceReturn {\n constructor(public value: any) {}\n}\n// around\nexport const Around = (config: AroundOption): ReflectMethod => {\n return (target: any, propertyKey: string, descriptor: PropertyDescriptor) => {\n ReflectUtils.defineMetadata(AroundMetadataKey, config, target, propertyKey);\n\n const method = descriptor.value;\n descriptor.value = function (...args: any[]) {\n // console.log('check method')\n\n let before: any = undefined;\n let r: any = undefined;\n if (config.before) {\n try {\n before = config.before?.(this, propertyKey, args);\n } catch (e) {\n if (e instanceof AroundForceReturn) {\n return e.value;\n }\n }\n r = method.apply(this, before);\n } else {\n r = method.apply(this, args);\n }\n\n if (config.after) {\n try {\n r = config.after?.(this, propertyKey, args, r);\n } catch (e) {\n if (e instanceof AroundForceReturn) {\n return e.value;\n }\n }\n }\n return r;\n };\n };\n};\n\nexport const getAround = (target: any, propertyKey: string): AroundOption | undefined => {\n return ReflectUtils.getMetadata(AroundMetadataKey, target, propertyKey);\n};\n\n// Aliases for lowercase\nexport const after = After;\nexport const before = Before;\nexport const around = Around;\n", "import { ConstructorType } from '@dooboostore/core';\nimport {ReflectMethod} from '../../types/Types';\nimport { ReflectUtils } from '@dooboostore/core';\nimport {ObjectUtils} from '@dooboostore/core';\n\nexport enum ExceptionHandlerSituationType {\n ERROR_OBJECT = 'SIMPLE_BOOT_CORE://ExceptionHandler/ERROR_OBJECT',\n PARAMETER = 'SIMPLE_BOOT_CORE://ExceptionHandler/PARAMETER',\n}\nexport type ExceptionHandlerConfig = { type?: ConstructorType<any>; throw?: boolean }\nexport type SaveExceptionHandlerConfig = { propertyKey?: string | symbol; method: Function; config: ExceptionHandlerConfig; }\n\nconst ExceptionHandlerMetadataKey = Symbol.for('simple-boot:exception-handler-metadata');\n\nexport const ExceptionHandler = (config: ExceptionHandlerConfig = {}): ReflectMethod => {\n return (target: any, propertyKey: string, descriptor: PropertyDescriptor) => {\n const saveMappingConfigs = (ReflectUtils.getMetadata(ExceptionHandlerMetadataKey, target.constructor) ?? []) as SaveExceptionHandlerConfig[];\n const method = target[propertyKey];\n saveMappingConfigs.push({propertyKey, method, config});\n ReflectUtils.defineMetadata(ExceptionHandlerMetadataKey, saveMappingConfigs, target.constructor);\n ReflectUtils.defineMetadata(ExceptionHandlerMetadataKey, config, target, propertyKey);\n }\n}\n\nexport const getExceptionHandler = (target: any, propertyKey: string): ExceptionHandlerConfig | undefined => {\n return ReflectUtils.getMetadata(ExceptionHandlerMetadataKey, target, propertyKey);\n}\n\nexport const getExceptionHandlers = (target: any): SaveExceptionHandlerConfig[] | undefined => {\n if (target !== null && undefined !== target && typeof target === 'object') {\n target = target.constructor;\n }\n return ReflectUtils.getMetadata(ExceptionHandlerMetadataKey, target);\n}\n\nexport const targetExceptionHandlers = (target: any, error: any): SaveExceptionHandlerConfig[] => {\n const exceptionHandlers = getExceptionHandlers(target);\n const emptyTargets = exceptionHandlers?.filter(it => it.config.type === undefined);\n const targets = exceptionHandlers?.filter(it => ObjectUtils.isPrototypeOfTarget(it.config.type, error));\n const targetSorts = targets?.sort((a, b) => {\n const aPrototypeOfDepth = ObjectUtils.prototypeOfDepth(error, a.config.type);\n const bPrototypeOfDepth = ObjectUtils.prototypeOfDepth(error, b.config.type);\n return aPrototypeOfDepth.length - bPrototypeOfDepth.length\n });\n return (targetSorts ?? []).concat(...emptyTargets ?? []);\n}\n\nexport const targetExceptionHandler = (target: any, error: any, excludeMethods: Function[] = []): SaveExceptionHandlerConfig | undefined => {\n let exceptionHandlers = targetExceptionHandlers(target, error);\n exceptionHandlers = exceptionHandlers?.filter(it => !excludeMethods.includes(it.method));\n if (exceptionHandlers && exceptionHandlers.length > 0) {\n return exceptionHandlers[0];\n } else {\n return undefined;\n }\n}\n\n// Alias for @exceptionHandler (lowercase)\nexport const exceptionHandler = ExceptionHandler;\n", "export const SimNoProxyKey = Symbol.for('simple-boot:sim-no-proxy-metadata');\nexport const SimNoProxy = (target: any, propertyKey?: string | symbol) => {\n // \uD074\uB798\uC2A4 \uB370\uCF54\uB808\uC774\uD130\uB85C \uC0AC\uC6A9\uB41C \uACBD\uC6B0\n if (propertyKey === undefined) {\n // target\uC740 \uD074\uB798\uC2A4 \uC0DD\uC131\uC790\n Reflect.defineMetadata(SimNoProxyKey, true, target);\n return;\n }\n\n // \uD504\uB85C\uD37C\uD2F0 \uB370\uCF54\uB808\uC774\uD130\uB85C \uC0AC\uC6A9\uB41C \uACBD\uC6B0\n // target\uC740 \uD504\uB85C\uD1A0\uD0C0\uC785, propertyKey\uB294 \uD504\uB85C\uD37C\uD2F0 \uC774\uB984\n Reflect.defineMetadata(SimNoProxyKey, true, target, propertyKey);\n};\n\nexport const getSimNoProxy = (target: any, propertyKey?: string | symbol) => {\n try {\n // if (ValidUtils.isNotNullUndefined(target)) {\n // \uD074\uB798\uC2A4 \uB370\uCF54\uB808\uC774\uD130\n if (propertyKey === undefined) {\n return Reflect.getMetadata(SimNoProxyKey, target);\n }\n // \uD504\uB85C\uD37C\uD2F0 \uB370\uCF54\uB808\uC774\uD130\n return Reflect.getMetadata(SimNoProxyKey, target, propertyKey);\n } catch (e) {\n return undefined;\n }\n // } else {\n // return undefined;\n // }\n};\n\nexport const isSimNoProxy = (target: any, propertyKey?: string | symbol) => {\n if (target === null || target === undefined) {\n return false;\n }\n return getSimNoProxy(target, propertyKey) === true;\n};\n\n// Alias for @simNoProxy (lowercase)\nexport const simNoProxy = SimNoProxy;\n", "\nimport { ReflectUtils } from '@dooboostore/core';\nimport {ReflectMethod} from '../../types/Types';\n\nexport type InjectionConfig = {}\n\nconst InjectionMetadataKey = Symbol('Injection');\nexport function Injection(target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor): void;\nexport function Injection(config?: InjectionConfig): ReflectMethod;\nexport function Injection(configOrTarget?: InjectionConfig | any, propertyKey?: string | symbol, descriptor?: PropertyDescriptor): void | ReflectMethod {\n if (propertyKey && descriptor) {\n const target = configOrTarget;\n ReflectUtils.defineMetadata(InjectionMetadataKey, {}, target, propertyKey);\n } else {\n return (target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor) => {\n const config = configOrTarget;\n ReflectUtils.defineMetadata(InjectionMetadataKey, config ?? {}, target, propertyKey);\n }\n }\n}\n\nexport const getInjection = (target: any, propertyKey: string | symbol): InjectionConfig | undefined => {\n return ReflectUtils.getMetadata(InjectionMetadataKey, target, propertyKey);\n}\n\n// Alias for @injection (lowercase)\nexport const injection = Injection;\n", "import { ConstructorType, GenericClassDecorator } from '@dooboostore/core';\nimport { ReflectUtils } from '@dooboostore/core';\nimport { ReflectMethod} from '../../types/Types';\nimport {RouteFilter} from '../../route/RouteFilter';\n\nexport type Filterss = (RouteFilter | ConstructorType<RouteFilter>)[];\nexport type Filters = RouteFilter | ConstructorType<RouteFilter> | Filterss;\nexport type RoteAndFilter = {filters: Filters, target: ConstructorType<Object>};\nexport type RouteTargetMethod = {target: ConstructorType<Object>, propertyKeys: (string|symbol)[], filters?: Filterss}\nexport type RouteProperty = ConstructorType<Object> | RoteAndFilter | [ConstructorType<Object> | RoteAndFilter, any] | RouteTargetMethod | string | symbol;\nexport type Route = {[name: string]: RouteProperty};\nexport interface RouterConfig {\n path?: string;\n route?: Route;\n routers?: (ConstructorType<Object> | symbol)[];\n filters?: Filters;\n}\n\nexport const RouterMetadataKey = Symbol.for('simple-boot:router-metadata');\nexport const routerProcess = (config: RouterConfig, target: ConstructorType<any> | Function | symbol) => {\n getRoutes(target)?.forEach(it => {\n config.route = (config.route ?? {});\n const paths = Array.isArray(it.config.path) ? it.config.path : [it.config.path];\n for (const path of paths) {\n if (config.route[path]) {\n const route = config.route[path] as RouteTargetMethod;\n route.propertyKeys.push(it.propertyKey);\n route.filters = route.filters ?? [];\n if (Array.isArray(it.config.filters)) {\n route.filters.push(...it.config.filters)\n } else if (it.config.filters) {\n route.filters.push(it.config.filters)\n }\n } else {\n config.route[path] = {target, propertyKeys: [it.propertyKey], filters: it.config.filters} as RouteTargetMethod;\n }\n }\n });\n ReflectUtils.defineMetadata(RouterMetadataKey, config, target);\n}\nexport function Router(target: ConstructorType<any> | Function): void;\nexport function Router(config: RouterConfig): GenericClassDecorator<ConstructorType<any> | Function>;\nexport function Router(configOrTarget: RouterConfig | ConstructorType<any> | Function): void | GenericClassDecorator<ConstructorType<any> | Function> {\n if (typeof configOrTarget === 'function') {\n const routerConfig: RouterConfig = {\n path: ''\n }\n routerProcess(routerConfig, configOrTarget);\n } else {\n return (target: ConstructorType<any> | Function) => {\n configOrTarget.path = configOrTarget.path ?? '';\n routerProcess(configOrTarget, target);\n }\n }\n}\n\nexport const getRouter = (target: ConstructorType<any> | Function | any): RouterConfig | undefined => {\n if (target != null && typeof target === 'object') {\n target = target.constructor;\n }\n try { return ReflectUtils.getMetadata(RouterMetadataKey, target); } catch (e) {}\n}\n\ntype RouteConfig = { path: string | string[], filters?: Filters }\nexport type SaveRouteConfig = { propertyKey: string | symbol; method: Function; config: RouteConfig; }\nexport const RouteMetadataKey = Symbol.for('simple-boot:route-metadata');\n\nexport const Route = (config: RouteConfig): ReflectMethod => {\n return (target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor) => {\n const saveRouteConfigs = (ReflectUtils.getMetadata(RouteMetadataKey, target.constructor) ?? []) as SaveRouteConfig[];\n const method = target[propertyKey];\n saveRouteConfigs.push({propertyKey, method, config});\n ReflectUtils.defineMetadata(RouteMetadataKey, saveRouteConfigs, target.constructor);\n ReflectUtils.defineMetadata(RouteMetadataKey, config, target, propertyKey);\n };\n}\n\nexport const getRoute = (target: any, propertyKey: string | symbol): RouteConfig | undefined => {\n return ReflectUtils.getMetadata(RouteMetadataKey, target, propertyKey);\n}\n\nexport const getRoutes = (target: any): SaveRouteConfig[] | undefined => {\n if (target !== null && undefined !== target && typeof target === 'object') {\n target = target.constructor;\n }\n return ReflectUtils.getMetadata(RouteMetadataKey, target);\n}\n\n// Aliases for lowercase\nexport const router = Router;\nexport const route = Route;\n", "import { RoutingDataSet } from '../route/RouterManager';\n\nexport namespace RouterAction {\n export interface CanActivate {\n canActivate(url: RoutingDataSet, data?: any): Promise<void>;\n }\n export const isCanActivate = (obj: any): obj is CanActivate => {\n return typeof obj?.canActivate === 'function';\n };\n\n export interface OnRouting {\n onRouting(r: RoutingDataSet): Promise<void>;\n }\n\n export const isOnRouting = (obj: any): obj is OnRouting => {\n return typeof obj?.onRouting === 'function';\n };\n\n export interface HasActivate {\n hasActivate(checkObj: any): boolean;\n }\n\n export const isHasActivate = (obj: any): obj is HasActivate => {\n return typeof obj?.hasActivate === 'function';\n };\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["Reflect", "hasOwn", "metadataRegistry", "metadata", "OrdinaryDefineOwnMetadata", "OrdinaryHasOwnMetadata", "OrdinaryGetOwnMetadata", "OrdinaryOwnMetadataKeys", "defineMetadata", "hasOwnMetadata", "getOwnMetadata", "getOwnMetadataKeys", "deleteMetadata", "MapIterator", "Map", "Set", "WeakMap", "import_reflect_metadata", "ValidUtils", "isDefined", "ArrayUtils", "ObjectUtils", "Path", "Script", "StringUtils", "DateUtils", "format", "age", "milliSecond", "MathUtil", "min", "max", "minMax", "sum", "ratio", "x", "bezier", "ConvertUtils", "obj", "RandomUtils", "uuid", "hex", "_Subscription", "e", "Promises", "Result", "p", "_RenderTransactionDrawObj", "startPoint", "points", "index", "Schedule", "UrlUtils", "ReflectUtils", "FunctionUtils", "_Optional", "OptionalUtils", "ImageUtils", "Expression", "Path", "SwcUtils", "host", "match", "host", "containers", "InjectSituationType", "CanvasUtils", "Context2D", "ElementUtils", "attribute", "NodeUtils", "FindNodesFilterResult", "DocumentUtils", "document", "EventUtils", "WindowUtils", "window", "CookieUtils", "names", "ConvertUtils", "ClipBoardUtils", "window", "DownloadUtils", "window", "LocationUtils", "window", "StyleCssUtils", "AnimationFrameUtils", "fps", "fpsConfig", "ValidUtils", "host", "proto", "appHost", "name", "win", "ConvertUtils", "ConvertUtils", "host", "host", "host", "RouterAction"]
7
7
  }