@dooboostore/dom-render 1.0.107 → 1.0.109

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 (1246) hide show
  1. package/README.MD +27 -1451
  2. package/dist/cjs/DomRender.js +41 -31
  3. package/dist/cjs/DomRender.js.map +2 -2
  4. package/dist/cjs/DomRenderProxy.js +15 -11
  5. package/dist/cjs/DomRenderProxy.js.map +2 -2
  6. package/dist/cjs/bundle-entry.js +67 -0
  7. package/dist/cjs/bundle-entry.js.map +7 -0
  8. package/dist/cjs/components/ComponentBase.js +20 -2
  9. package/dist/cjs/components/ComponentBase.js.map +2 -2
  10. package/dist/cjs/components/ComponentRouterBase.js +11 -5
  11. package/dist/cjs/components/ComponentRouterBase.js.map +2 -2
  12. package/dist/cjs/components/ComponentSet.js +0 -5
  13. package/dist/cjs/components/ComponentSet.js.map +1 -1
  14. package/dist/cjs/components/appender/Appender.js +0 -6
  15. package/dist/cjs/components/appender/Appender.js.map +1 -1
  16. package/dist/cjs/components/checkbox/CheckBox.js +4 -7
  17. package/dist/cjs/components/checkbox/CheckBox.js.map +1 -1
  18. package/dist/cjs/components/choose/Choose.js +5 -11
  19. package/dist/cjs/components/choose/Choose.js.map +2 -2
  20. package/dist/cjs/components/details/Details.js +0 -11
  21. package/dist/cjs/components/details/Details.js.map +1 -1
  22. package/dist/cjs/components/forOf/ForOf.js +0 -6
  23. package/dist/cjs/components/forOf/ForOf.js.map +1 -1
  24. package/dist/cjs/components/if/If.js +1 -3
  25. package/dist/cjs/components/if/If.js.map +1 -1
  26. package/dist/cjs/components/input/Input.js +0 -8
  27. package/dist/cjs/components/input/Input.js.map +1 -1
  28. package/dist/cjs/components/promise/PromiseSwitch.js +1 -20
  29. package/dist/cjs/components/promise/PromiseSwitch.js.map +1 -1
  30. package/dist/cjs/components/radio/Radio.js +4 -7
  31. package/dist/cjs/components/radio/Radio.js.map +1 -1
  32. package/dist/cjs/components/router/RouterOutlet.js +16 -6
  33. package/dist/cjs/components/router/RouterOutlet.js.map +2 -2
  34. package/dist/cjs/components/select/Select.js +20 -6
  35. package/dist/cjs/components/select/Select.js.map +2 -2
  36. package/dist/cjs/components/this/This.js +1 -5
  37. package/dist/cjs/components/this/This.js.map +1 -1
  38. package/dist/cjs/components/timer/Timer.js +14 -18
  39. package/dist/cjs/components/timer/Timer.js.map +2 -2
  40. package/dist/cjs/decorators/DomRenderNoProxy.js +2 -1
  41. package/dist/cjs/decorators/DomRenderNoProxy.js.map +2 -2
  42. package/dist/cjs/events/EventManager.js +56 -58
  43. package/dist/cjs/events/EventManager.js.map +1 -1
  44. package/dist/cjs/index.js.map +1 -1
  45. package/dist/cjs/iterators/Range.js +1 -9
  46. package/dist/cjs/iterators/Range.js.map +1 -1
  47. package/dist/cjs/lifecycle/OnRawSetRendered.js +26 -0
  48. package/dist/cjs/lifecycle/OnRawSetRendered.js.map +7 -0
  49. package/dist/cjs/lifecycle/index.js +1 -0
  50. package/dist/cjs/lifecycle/index.js.map +2 -2
  51. package/dist/cjs/messenger/Messenger.js +5 -8
  52. package/dist/cjs/messenger/Messenger.js.map +1 -1
  53. package/dist/cjs/operators/Appender.js +3 -5
  54. package/dist/cjs/operators/Appender.js.map +1 -1
  55. package/dist/cjs/operators/DrTargetElement.js +2 -0
  56. package/dist/cjs/operators/DrTargetElement.js.map +2 -2
  57. package/dist/cjs/operators/OperatorExecuter.js +1 -2
  58. package/dist/cjs/operators/OperatorExecuter.js.map +2 -2
  59. package/dist/cjs/package.json +2 -0
  60. package/dist/cjs/rawsets/RawSet.js +207 -129
  61. package/dist/cjs/rawsets/RawSet.js.map +3 -3
  62. package/dist/cjs/rawsets/Render.js.map +1 -1
  63. package/dist/cjs/routers/Router.js +24 -12
  64. package/dist/cjs/routers/Router.js.map +3 -3
  65. package/dist/cjs/validators/MultipleValidator.js +0 -3
  66. package/dist/cjs/validators/MultipleValidator.js.map +1 -1
  67. package/dist/cjs/validators/NotRegExpTestValidator.js +0 -3
  68. package/dist/cjs/validators/NotRegExpTestValidator.js.map +1 -1
  69. package/dist/cjs/validators/RegExpTestValidator.js +0 -3
  70. package/dist/cjs/validators/RegExpTestValidator.js.map +1 -1
  71. package/dist/cjs/validators/Validator.js +0 -7
  72. package/dist/cjs/validators/Validator.js.map +1 -1
  73. package/dist/cjs/validators/ValidatorArray.js +2 -4
  74. package/dist/cjs/validators/ValidatorArray.js.map +1 -1
  75. package/dist/esm/DomRender.js +41 -32
  76. package/dist/esm/DomRender.js.map +2 -2
  77. package/dist/esm/DomRenderProxy.js +15 -12
  78. package/dist/esm/DomRenderProxy.js.map +2 -2
  79. package/dist/esm/bundle-entry.js +37 -0
  80. package/dist/esm/bundle-entry.js.map +7 -0
  81. package/dist/esm/components/ComponentBase.js +20 -2
  82. package/dist/esm/components/ComponentBase.js.map +2 -2
  83. package/dist/esm/components/ComponentRouterBase.js +11 -6
  84. package/dist/esm/components/ComponentRouterBase.js.map +2 -2
  85. package/dist/esm/components/ComponentSet.js +0 -6
  86. package/dist/esm/components/ComponentSet.js.map +1 -1
  87. package/dist/esm/components/appender/Appender.js +0 -7
  88. package/dist/esm/components/appender/Appender.js.map +1 -1
  89. package/dist/esm/components/checkbox/CheckBox.js +4 -8
  90. package/dist/esm/components/checkbox/CheckBox.js.map +1 -1
  91. package/dist/esm/components/choose/Choose.js +5 -12
  92. package/dist/esm/components/choose/Choose.js.map +2 -2
  93. package/dist/esm/components/details/Details.js +0 -12
  94. package/dist/esm/components/details/Details.js.map +1 -1
  95. package/dist/esm/components/forOf/ForOf.js +0 -7
  96. package/dist/esm/components/forOf/ForOf.js.map +1 -1
  97. package/dist/esm/components/if/If.js +1 -4
  98. package/dist/esm/components/if/If.js.map +1 -1
  99. package/dist/esm/components/input/Input.js +0 -9
  100. package/dist/esm/components/input/Input.js.map +1 -1
  101. package/dist/esm/components/promise/PromiseSwitch.js +1 -21
  102. package/dist/esm/components/promise/PromiseSwitch.js.map +1 -1
  103. package/dist/esm/components/radio/Radio.js +4 -8
  104. package/dist/esm/components/radio/Radio.js.map +1 -1
  105. package/dist/esm/components/router/RouterOutlet.js +17 -8
  106. package/dist/esm/components/router/RouterOutlet.js.map +2 -2
  107. package/dist/esm/components/select/Select.js +20 -6
  108. package/dist/esm/components/select/Select.js.map +2 -2
  109. package/dist/esm/components/this/This.js +1 -6
  110. package/dist/esm/components/this/This.js.map +1 -1
  111. package/dist/esm/components/timer/Timer.js +14 -19
  112. package/dist/esm/components/timer/Timer.js.map +2 -2
  113. package/dist/esm/decorators/DomRenderNoProxy.js +2 -1
  114. package/dist/esm/decorators/DomRenderNoProxy.js.map +2 -2
  115. package/dist/esm/events/EventManager.js +56 -59
  116. package/dist/esm/events/EventManager.js.map +1 -1
  117. package/dist/esm/index.js.map +1 -1
  118. package/dist/esm/iterators/Range.js +1 -10
  119. package/dist/esm/iterators/Range.js.map +1 -1
  120. package/dist/esm/lifecycle/OnRawSetRendered.js +7 -0
  121. package/dist/esm/lifecycle/OnRawSetRendered.js.map +7 -0
  122. package/dist/esm/lifecycle/index.js +1 -0
  123. package/dist/esm/lifecycle/index.js.map +2 -2
  124. package/dist/esm/messenger/Messenger.js +5 -9
  125. package/dist/esm/messenger/Messenger.js.map +1 -1
  126. package/dist/esm/operators/Appender.js +3 -6
  127. package/dist/esm/operators/Appender.js.map +1 -1
  128. package/dist/esm/operators/DrTargetElement.js +2 -0
  129. package/dist/esm/operators/DrTargetElement.js.map +2 -2
  130. package/dist/esm/operators/OperatorExecuter.js +1 -2
  131. package/dist/esm/operators/OperatorExecuter.js.map +2 -2
  132. package/dist/esm/rawsets/RawSet.js +207 -130
  133. package/dist/esm/rawsets/RawSet.js.map +3 -3
  134. package/dist/esm/routers/Router.js +24 -13
  135. package/dist/esm/routers/Router.js.map +3 -3
  136. package/dist/esm/validators/MultipleValidator.js +0 -4
  137. package/dist/esm/validators/MultipleValidator.js.map +1 -1
  138. package/dist/esm/validators/NotRegExpTestValidator.js +0 -4
  139. package/dist/esm/validators/NotRegExpTestValidator.js.map +1 -1
  140. package/dist/esm/validators/RegExpTestValidator.js +0 -4
  141. package/dist/esm/validators/RegExpTestValidator.js.map +1 -1
  142. package/dist/esm/validators/Validator.js +0 -8
  143. package/dist/esm/validators/Validator.js.map +1 -1
  144. package/dist/esm/validators/ValidatorArray.js +2 -5
  145. package/dist/esm/validators/ValidatorArray.js.map +1 -1
  146. package/dist/esm-bundle/dooboostore-dom-render.esm.js +16498 -3
  147. package/dist/esm-bundle/dooboostore-dom-render.esm.js.map +4 -4
  148. package/dist/types/DomRender.d.ts +45 -0
  149. package/dist/types/DomRender.d.ts.map +1 -0
  150. package/dist/types/DomRenderProxy.d.ts.map +1 -0
  151. package/dist/types/bundle-entry.d.ts +18 -0
  152. package/dist/types/bundle-entry.d.ts.map +1 -0
  153. package/dist/types/components/ComponentBase.d.ts +137 -0
  154. package/dist/types/components/ComponentBase.d.ts.map +1 -0
  155. package/dist/types/components/ComponentRouterBase.d.ts +21 -0
  156. package/dist/types/components/ComponentRouterBase.d.ts.map +1 -0
  157. package/dist/types/components/choose/Choose.d.ts.map +1 -0
  158. package/dist/types/components/index.d.ts +59 -0
  159. package/dist/types/components/index.d.ts.map +1 -0
  160. package/dist/types/components/router/RouterOutlet.d.ts +38 -0
  161. package/dist/types/components/router/RouterOutlet.d.ts.map +1 -0
  162. package/dist/types/components/select/Select.d.ts +154 -0
  163. package/dist/types/components/select/Select.d.ts.map +1 -0
  164. package/dist/types/components/timer/Timer.d.ts +28 -0
  165. package/dist/types/components/timer/Timer.d.ts.map +1 -0
  166. package/dist/types/decorators/DomRenderNoProxy.d.ts.map +1 -0
  167. package/dist/types/index.d.ts +104 -0
  168. package/dist/types/lifecycle/OnRawSetRendered.d.ts +10 -0
  169. package/dist/types/lifecycle/OnRawSetRendered.d.ts.map +1 -0
  170. package/dist/types/lifecycle/index.d.ts +14 -0
  171. package/dist/types/lifecycle/index.d.ts.map +1 -0
  172. package/dist/types/operators/DrTargetElement.d.ts.map +1 -0
  173. package/dist/types/operators/OperatorExecuter.d.ts.map +1 -0
  174. package/dist/types/rawsets/RawSet.d.ts +187 -0
  175. package/dist/types/rawsets/RawSet.d.ts.map +1 -0
  176. package/dist/types/rawsets/Render.d.ts +28 -0
  177. package/dist/types/rawsets/Render.d.ts.map +1 -0
  178. package/dist/types/routers/Router.d.ts +82 -0
  179. package/dist/types/routers/Router.d.ts.map +1 -0
  180. package/dist/umd-bundle/dooboostore-dom-render.umd.js +16485 -7
  181. package/dist/umd-bundle/dooboostore-dom-render.umd.js.map +4 -4
  182. package/package.json +27 -14
  183. package/src/DomRender.ts +201 -0
  184. package/src/DomRenderProxy.ts +683 -0
  185. package/src/bundle-entry.ts +20 -0
  186. package/src/components/ComponentBase.ts +704 -0
  187. package/src/components/ComponentRouterBase.ts +59 -0
  188. package/src/components/ComponentSet.ts +26 -0
  189. package/src/components/a/A.ts +81 -0
  190. package/src/components/a/index.ts +1 -0
  191. package/src/components/appender/Appender.ts +86 -0
  192. package/src/components/appender/index.ts +1 -0
  193. package/src/components/checkbox/CheckBox.ts +137 -0
  194. package/src/components/checkbox/index.ts +1 -0
  195. package/src/components/choose/Choose.ts +115 -0
  196. package/src/components/choose/index.ts +1 -0
  197. package/src/components/details/Details.ts +236 -0
  198. package/src/components/details/index.ts +1 -0
  199. package/src/components/dialog/Dialog.ts +84 -0
  200. package/src/components/dialog/dialog.html +10 -0
  201. package/src/components/dialog/example/ImageEditorDialog.ts +115 -0
  202. package/src/components/dialog/example/imageEditorDialog.css +179 -0
  203. package/src/components/dialog/example/imageEditorDialog.html +48 -0
  204. package/src/components/forOf/ForOf.ts +41 -0
  205. package/src/components/forOf/index.ts +1 -0
  206. package/src/components/if/If.ts +63 -0
  207. package/src/components/if/index.ts +1 -0
  208. package/src/components/index.ts +49 -0
  209. package/src/components/input/Input.ts +125 -0
  210. package/src/components/input/index.ts +1 -0
  211. package/src/components/promise/PromiseSwitch.ts +232 -0
  212. package/src/components/promise/index.ts +1 -0
  213. package/src/components/radio/Radio.ts +129 -0
  214. package/src/components/radio/index.ts +1 -0
  215. package/src/components/router/Route.ts +91 -0
  216. package/src/components/router/RouterOutlet.ts +93 -0
  217. package/src/components/router/index.ts +2 -0
  218. package/src/components/select/Select.ts +594 -0
  219. package/src/components/select/index.ts +1 -0
  220. package/src/components/this/This.ts +62 -0
  221. package/src/components/this/index.ts +1 -0
  222. package/src/components/timer/Timer.ts +87 -0
  223. package/src/components/timer/index.ts +1 -0
  224. package/src/configs/DomRenderConfig.ts +30 -0
  225. package/src/configs/TargetAttr.ts +7 -0
  226. package/src/configs/TargetElement.ts +16 -0
  227. package/src/configs/index.ts +3 -0
  228. package/src/decorators/DomRenderNoProxy.ts +32 -0
  229. package/src/decorators/index.ts +1 -0
  230. package/src/events/EventManager.ts +729 -0
  231. package/src/events/index.ts +1 -0
  232. package/src/index.ts +17 -0
  233. package/src/iterators/Range.ts +73 -0
  234. package/src/iterators/index.ts +1 -0
  235. package/src/lifecycle/OnBeforeReturnGet.ts +3 -0
  236. package/src/lifecycle/OnBeforeReturnSet.ts +6 -0
  237. package/src/lifecycle/OnChangeAttrRender.ts +12 -0
  238. package/src/lifecycle/OnChildRenderedByProperty.ts +9 -0
  239. package/src/lifecycle/OnCreateRender.ts +6 -0
  240. package/src/lifecycle/OnCreateRenderData.ts +11 -0
  241. package/src/lifecycle/OnCreateRendered.ts +11 -0
  242. package/src/lifecycle/OnCreatedThisChild.ts +10 -0
  243. package/src/lifecycle/OnDestroyRender.ts +11 -0
  244. package/src/lifecycle/OnInitRender.ts +9 -0
  245. package/src/lifecycle/OnProxyDomRender.ts +7 -0
  246. package/src/lifecycle/OnRawSetRendered.ts +15 -0
  247. package/src/lifecycle/dr-this/OnDrThisBind.ts +6 -0
  248. package/src/lifecycle/dr-this/OnDrThisUnBind.ts +6 -0
  249. package/src/lifecycle/dr-this/index.ts +2 -0
  250. package/src/lifecycle/index.ts +13 -0
  251. package/src/messenger/DefaultMessenger.ts +5 -0
  252. package/src/messenger/Messenger.ts +222 -0
  253. package/src/messenger/index.ts +2 -0
  254. package/src/operators/Appender.ts +104 -0
  255. package/src/operators/Dr.ts +47 -0
  256. package/src/operators/DrAppender.ts +64 -0
  257. package/src/operators/DrFor.ts +52 -0
  258. package/src/operators/DrForOf.ts +116 -0
  259. package/src/operators/DrForm.ts +72 -0
  260. package/src/operators/DrIf.ts +69 -0
  261. package/src/operators/DrInnerHTML.ts +41 -0
  262. package/src/operators/DrInnerText.ts +40 -0
  263. package/src/operators/DrPre.ts +14 -0
  264. package/src/operators/DrRepeat.ts +64 -0
  265. package/src/operators/DrStripElement.ts +49 -0
  266. package/src/operators/DrTargetAttr.ts +36 -0
  267. package/src/operators/DrTargetElement.ts +133 -0
  268. package/src/operators/DrTargetElementIsElement.ts +76 -0
  269. package/src/operators/DrThis.ts +107 -0
  270. package/src/operators/DrThisProperty.ts +91 -0
  271. package/src/operators/OperatorExecuter.ts +66 -0
  272. package/src/operators/OperatorExecuterAttrRequire.ts +24 -0
  273. package/src/operators/index.ts +19 -0
  274. package/src/rawsets/AttrInitCallBack.ts +1 -0
  275. package/src/rawsets/Attrs.ts +28 -0
  276. package/src/rawsets/CreatorMetaData.ts +19 -0
  277. package/src/rawsets/DestroyOptionType.ts +4 -0
  278. package/src/rawsets/ElementInitCallBack.ts +4 -0
  279. package/src/rawsets/RawSet.ts +1897 -0
  280. package/src/rawsets/RawSetOperatorType.ts +3 -0
  281. package/src/rawsets/RawSetType.ts +7 -0
  282. package/src/rawsets/Render.ts +26 -0
  283. package/src/rawsets/index.ts +9 -0
  284. package/src/routers/HashRouter.ts +106 -0
  285. package/src/routers/PathRouter.ts +93 -0
  286. package/src/routers/Router.ts +232 -0
  287. package/src/routers/index.ts +3 -0
  288. package/src/types/Types.ts +32 -0
  289. package/src/types/index.ts +2 -0
  290. package/src/types/type.ts +24 -0
  291. package/src/validators/AllCheckedValidatorArray.ts +12 -0
  292. package/src/validators/AllUnCheckedValidatorArray.ts +12 -0
  293. package/src/validators/CheckedValidator.ts +11 -0
  294. package/src/validators/CountEqualsCheckedValidatorArray.ts +12 -0
  295. package/src/validators/CountEqualsUnCheckedValidatorArray.ts +12 -0
  296. package/src/validators/CountGreaterThanCheckedValidatorArray.ts +12 -0
  297. package/src/validators/CountGreaterThanEqualsCheckedValidatorArray.ts +12 -0
  298. package/src/validators/CountGreaterThanEqualsUnCheckedValidatorArray.ts +12 -0
  299. package/src/validators/CountGreaterThanUnCheckedValidatorArray.ts +12 -0
  300. package/src/validators/CountLessThanCheckedValidatorArray.ts +12 -0
  301. package/src/validators/CountLessThanEqualsCheckedValidatorArray.ts +12 -0
  302. package/src/validators/CountLessThanEqualsUnCheckedValidatorArray.ts +12 -0
  303. package/src/validators/CountLessThanUnCheckedValidatorArray.ts +12 -0
  304. package/src/validators/CountUnCheckedValidatorArray.ts +12 -0
  305. package/src/validators/EmptyValidator.ts +12 -0
  306. package/src/validators/ExcludeCheckedValidatorArray.ts +16 -0
  307. package/src/validators/FormValidator.ts +19 -0
  308. package/src/validators/IncludeCheckedValidatorArray.ts +16 -0
  309. package/src/validators/MultipleValidator.ts +29 -0
  310. package/src/validators/NonPassValidator.ts +11 -0
  311. package/src/validators/NotEmptyValidator.ts +13 -0
  312. package/src/validators/NotRegExpTestValidator.ts +20 -0
  313. package/src/validators/PassValidator.ts +11 -0
  314. package/src/validators/RegExpTestValidator.ts +21 -0
  315. package/src/validators/RequiredValidator.ts +13 -0
  316. package/src/validators/UnCheckedValidator.ts +11 -0
  317. package/src/validators/ValidMultipleValidator.ts +14 -0
  318. package/src/validators/ValidValidator.ts +11 -0
  319. package/src/validators/ValidValidatorArray.ts +12 -0
  320. package/src/validators/Validator.ts +245 -0
  321. package/src/validators/ValidatorArray.ts +83 -0
  322. package/src/validators/ValueEqualsValidator.ts +11 -0
  323. package/src/validators/ValueNotEqualsValidator.ts +11 -0
  324. package/src/validators/index.ts +31 -0
  325. package/tsconfig.json +24 -0
  326. package/types.d.ts +2873 -0
  327. package/dist/cjs/DomRender.d.js +0 -16
  328. package/dist/cjs/DomRender.d.js.map +0 -7
  329. package/dist/cjs/DomRender.d.ts +0 -39
  330. package/dist/cjs/DomRender.d.ts.map +0 -1
  331. package/dist/cjs/DomRenderProxy.d.js +0 -17
  332. package/dist/cjs/DomRenderProxy.d.js.map +0 -7
  333. package/dist/cjs/DomRenderProxy.d.ts.map +0 -1
  334. package/dist/cjs/components/ComponentBase.d.js +0 -17
  335. package/dist/cjs/components/ComponentBase.d.js.map +0 -7
  336. package/dist/cjs/components/ComponentBase.d.ts +0 -131
  337. package/dist/cjs/components/ComponentBase.d.ts.map +0 -1
  338. package/dist/cjs/components/ComponentRouterBase.d.js +0 -16
  339. package/dist/cjs/components/ComponentRouterBase.d.js.map +0 -7
  340. package/dist/cjs/components/ComponentRouterBase.d.ts +0 -13
  341. package/dist/cjs/components/ComponentRouterBase.d.ts.map +0 -1
  342. package/dist/cjs/components/ComponentSet.d.js +0 -16
  343. package/dist/cjs/components/ComponentSet.d.js.map +0 -7
  344. package/dist/cjs/components/a/A.d.js +0 -24
  345. package/dist/cjs/components/a/A.d.js.map +0 -7
  346. package/dist/cjs/components/a/index.d.js +0 -18
  347. package/dist/cjs/components/a/index.d.js.map +0 -7
  348. package/dist/cjs/components/appender/Appender.d.js +0 -24
  349. package/dist/cjs/components/appender/Appender.d.js.map +0 -7
  350. package/dist/cjs/components/appender/index.d.js +0 -18
  351. package/dist/cjs/components/appender/index.d.js.map +0 -7
  352. package/dist/cjs/components/checkbox/CheckBox.d.js +0 -24
  353. package/dist/cjs/components/checkbox/CheckBox.d.js.map +0 -7
  354. package/dist/cjs/components/checkbox/index.d.js +0 -18
  355. package/dist/cjs/components/checkbox/index.d.js.map +0 -7
  356. package/dist/cjs/components/choose/Choose.d.js +0 -24
  357. package/dist/cjs/components/choose/Choose.d.js.map +0 -7
  358. package/dist/cjs/components/choose/Choose.d.ts.map +0 -1
  359. package/dist/cjs/components/choose/index.d.js +0 -18
  360. package/dist/cjs/components/choose/index.d.js.map +0 -7
  361. package/dist/cjs/components/details/Details.d.js +0 -24
  362. package/dist/cjs/components/details/Details.d.js.map +0 -7
  363. package/dist/cjs/components/details/index.d.js +0 -18
  364. package/dist/cjs/components/details/index.d.js.map +0 -7
  365. package/dist/cjs/components/forOf/ForOf.d.js +0 -24
  366. package/dist/cjs/components/forOf/ForOf.d.js.map +0 -7
  367. package/dist/cjs/components/forOf/index.d.js +0 -18
  368. package/dist/cjs/components/forOf/index.d.js.map +0 -7
  369. package/dist/cjs/components/if/If.d.js +0 -24
  370. package/dist/cjs/components/if/If.d.js.map +0 -7
  371. package/dist/cjs/components/if/index.d.js +0 -18
  372. package/dist/cjs/components/if/index.d.js.map +0 -7
  373. package/dist/cjs/components/index.d.js +0 -34
  374. package/dist/cjs/components/index.d.js.map +0 -7
  375. package/dist/cjs/components/index.d.ts +0 -58
  376. package/dist/cjs/components/index.d.ts.map +0 -1
  377. package/dist/cjs/components/input/Input.d.js +0 -24
  378. package/dist/cjs/components/input/Input.d.js.map +0 -7
  379. package/dist/cjs/components/input/index.d.js +0 -18
  380. package/dist/cjs/components/input/index.d.js.map +0 -7
  381. package/dist/cjs/components/promise/PromiseSwitch.d.js +0 -24
  382. package/dist/cjs/components/promise/PromiseSwitch.d.js.map +0 -7
  383. package/dist/cjs/components/promise/index.d.js +0 -18
  384. package/dist/cjs/components/promise/index.d.js.map +0 -7
  385. package/dist/cjs/components/radio/Radio.d.js +0 -24
  386. package/dist/cjs/components/radio/Radio.d.js.map +0 -7
  387. package/dist/cjs/components/radio/index.d.js +0 -18
  388. package/dist/cjs/components/radio/index.d.js.map +0 -7
  389. package/dist/cjs/components/router/Route.d.js +0 -24
  390. package/dist/cjs/components/router/Route.d.js.map +0 -7
  391. package/dist/cjs/components/router/RouterOutlet.d.js +0 -24
  392. package/dist/cjs/components/router/RouterOutlet.d.js.map +0 -7
  393. package/dist/cjs/components/router/RouterOutlet.d.ts +0 -34
  394. package/dist/cjs/components/router/RouterOutlet.d.ts.map +0 -1
  395. package/dist/cjs/components/router/index.d.js +0 -19
  396. package/dist/cjs/components/router/index.d.js.map +0 -7
  397. package/dist/cjs/components/select/Select.d.js +0 -24
  398. package/dist/cjs/components/select/Select.d.js.map +0 -7
  399. package/dist/cjs/components/select/Select.d.ts +0 -154
  400. package/dist/cjs/components/select/Select.d.ts.map +0 -1
  401. package/dist/cjs/components/select/index.d.js +0 -18
  402. package/dist/cjs/components/select/index.d.js.map +0 -7
  403. package/dist/cjs/components/this/This.d.js +0 -24
  404. package/dist/cjs/components/this/This.d.js.map +0 -7
  405. package/dist/cjs/components/this/index.d.js +0 -18
  406. package/dist/cjs/components/this/index.d.js.map +0 -7
  407. package/dist/cjs/components/timer/Timer.d.js +0 -24
  408. package/dist/cjs/components/timer/Timer.d.js.map +0 -7
  409. package/dist/cjs/components/timer/Timer.d.ts +0 -26
  410. package/dist/cjs/components/timer/Timer.d.ts.map +0 -1
  411. package/dist/cjs/components/timer/index.d.js +0 -18
  412. package/dist/cjs/components/timer/index.d.js.map +0 -7
  413. package/dist/cjs/configs/DomRenderConfig.d.js +0 -16
  414. package/dist/cjs/configs/DomRenderConfig.d.js.map +0 -7
  415. package/dist/cjs/configs/TargetAttr.d.js +0 -16
  416. package/dist/cjs/configs/TargetAttr.d.js.map +0 -7
  417. package/dist/cjs/configs/TargetElement.d.js +0 -16
  418. package/dist/cjs/configs/TargetElement.d.js.map +0 -7
  419. package/dist/cjs/decorators/DomRenderNoProxy.d.js +0 -17
  420. package/dist/cjs/decorators/DomRenderNoProxy.d.js.map +0 -7
  421. package/dist/cjs/decorators/DomRenderNoProxy.d.ts.map +0 -1
  422. package/dist/cjs/events/EventManager.d.js +0 -16
  423. package/dist/cjs/events/EventManager.d.js.map +0 -7
  424. package/dist/cjs/index.d.ts +0 -3
  425. package/dist/cjs/iterators/Range.d.js +0 -16
  426. package/dist/cjs/iterators/Range.d.js.map +0 -7
  427. package/dist/cjs/lifecycle/OnBeforeReturnSet.d.js +0 -16
  428. package/dist/cjs/lifecycle/OnBeforeReturnSet.d.js.map +0 -7
  429. package/dist/cjs/lifecycle/OnChangeAttrRender.d.js +0 -16
  430. package/dist/cjs/lifecycle/OnChangeAttrRender.d.js.map +0 -7
  431. package/dist/cjs/lifecycle/OnChildRenderedByProperty.d.js +0 -16
  432. package/dist/cjs/lifecycle/OnChildRenderedByProperty.d.js.map +0 -7
  433. package/dist/cjs/lifecycle/OnCreateRender.d.js +0 -16
  434. package/dist/cjs/lifecycle/OnCreateRender.d.js.map +0 -7
  435. package/dist/cjs/lifecycle/OnCreateRenderData.d.js +0 -16
  436. package/dist/cjs/lifecycle/OnCreateRenderData.d.js.map +0 -7
  437. package/dist/cjs/lifecycle/OnCreatedThisChild.d.js +0 -16
  438. package/dist/cjs/lifecycle/OnCreatedThisChild.d.js.map +0 -7
  439. package/dist/cjs/lifecycle/OnDestroyRender.d.js +0 -16
  440. package/dist/cjs/lifecycle/OnDestroyRender.d.js.map +0 -7
  441. package/dist/cjs/lifecycle/OnInitRender.d.js +0 -16
  442. package/dist/cjs/lifecycle/OnInitRender.d.js.map +0 -7
  443. package/dist/cjs/lifecycle/OnProxyDomRender.d.js +0 -16
  444. package/dist/cjs/lifecycle/OnProxyDomRender.d.js.map +0 -7
  445. package/dist/cjs/lifecycle/dr-this/OnDrThisBind.d.js +0 -16
  446. package/dist/cjs/lifecycle/dr-this/OnDrThisBind.d.js.map +0 -7
  447. package/dist/cjs/lifecycle/dr-this/OnDrThisUnBind.d.js +0 -16
  448. package/dist/cjs/lifecycle/dr-this/OnDrThisUnBind.d.js.map +0 -7
  449. package/dist/cjs/lifecycle/index.d.ts +0 -13
  450. package/dist/cjs/lifecycle/index.d.ts.map +0 -1
  451. package/dist/cjs/managers/RenderManager.d.ts +0 -2
  452. package/dist/cjs/managers/RenderManager.d.ts.map +0 -1
  453. package/dist/cjs/managers/RenderManager.js +0 -1
  454. package/dist/cjs/managers/RenderManager.js.map +0 -7
  455. package/dist/cjs/managers/index.d.ts +0 -2
  456. package/dist/cjs/managers/index.d.ts.map +0 -1
  457. package/dist/cjs/managers/index.js +0 -18
  458. package/dist/cjs/managers/index.js.map +0 -7
  459. package/dist/cjs/messenger/DefaultMessenger.d.js +0 -16
  460. package/dist/cjs/messenger/DefaultMessenger.d.js.map +0 -7
  461. package/dist/cjs/messenger/Messenger.d.js +0 -16
  462. package/dist/cjs/messenger/Messenger.d.js.map +0 -7
  463. package/dist/cjs/operators/Appender.d.js +0 -16
  464. package/dist/cjs/operators/Appender.d.js.map +0 -7
  465. package/dist/cjs/operators/Dr.d.js +0 -16
  466. package/dist/cjs/operators/Dr.d.js.map +0 -7
  467. package/dist/cjs/operators/DrAppender.d.js +0 -16
  468. package/dist/cjs/operators/DrAppender.d.js.map +0 -7
  469. package/dist/cjs/operators/DrFor.d.js +0 -16
  470. package/dist/cjs/operators/DrFor.d.js.map +0 -7
  471. package/dist/cjs/operators/DrForOf.d.js +0 -16
  472. package/dist/cjs/operators/DrForOf.d.js.map +0 -7
  473. package/dist/cjs/operators/DrForm.d.js +0 -16
  474. package/dist/cjs/operators/DrForm.d.js.map +0 -7
  475. package/dist/cjs/operators/DrIf.d.js +0 -16
  476. package/dist/cjs/operators/DrIf.d.js.map +0 -7
  477. package/dist/cjs/operators/DrInnerHTML.d.js +0 -16
  478. package/dist/cjs/operators/DrInnerHTML.d.js.map +0 -7
  479. package/dist/cjs/operators/DrInnerText.d.js +0 -16
  480. package/dist/cjs/operators/DrInnerText.d.js.map +0 -7
  481. package/dist/cjs/operators/DrPre.d.js +0 -16
  482. package/dist/cjs/operators/DrPre.d.js.map +0 -7
  483. package/dist/cjs/operators/DrRepeat.d.js +0 -16
  484. package/dist/cjs/operators/DrRepeat.d.js.map +0 -7
  485. package/dist/cjs/operators/DrStripElement.d.js +0 -16
  486. package/dist/cjs/operators/DrStripElement.d.js.map +0 -7
  487. package/dist/cjs/operators/DrTargetAttr.d.js +0 -16
  488. package/dist/cjs/operators/DrTargetAttr.d.js.map +0 -7
  489. package/dist/cjs/operators/DrTargetElement.d.js +0 -16
  490. package/dist/cjs/operators/DrTargetElement.d.js.map +0 -7
  491. package/dist/cjs/operators/DrTargetElement.d.ts.map +0 -1
  492. package/dist/cjs/operators/DrTargetElementIsElement.d.js +0 -16
  493. package/dist/cjs/operators/DrTargetElementIsElement.d.js.map +0 -7
  494. package/dist/cjs/operators/DrThis.d.js +0 -16
  495. package/dist/cjs/operators/DrThis.d.js.map +0 -7
  496. package/dist/cjs/operators/DrThisProperty.d.js +0 -16
  497. package/dist/cjs/operators/DrThisProperty.d.js.map +0 -7
  498. package/dist/cjs/operators/OperatorExecuter.d.js +0 -16
  499. package/dist/cjs/operators/OperatorExecuter.d.js.map +0 -7
  500. package/dist/cjs/operators/OperatorExecuter.d.ts.map +0 -1
  501. package/dist/cjs/operators/OperatorExecuterAttrRequire.d.js +0 -16
  502. package/dist/cjs/operators/OperatorExecuterAttrRequire.d.js.map +0 -7
  503. package/dist/cjs/rawsets/AttrInitCallBack.d.js +0 -16
  504. package/dist/cjs/rawsets/AttrInitCallBack.d.js.map +0 -7
  505. package/dist/cjs/rawsets/Attrs.d.js +0 -16
  506. package/dist/cjs/rawsets/Attrs.d.js.map +0 -7
  507. package/dist/cjs/rawsets/CreatorMetaData.d.js +0 -16
  508. package/dist/cjs/rawsets/CreatorMetaData.d.js.map +0 -7
  509. package/dist/cjs/rawsets/DestroyOptionType.d.js +0 -16
  510. package/dist/cjs/rawsets/DestroyOptionType.d.js.map +0 -7
  511. package/dist/cjs/rawsets/ElementInitCallBack.d.js +0 -16
  512. package/dist/cjs/rawsets/ElementInitCallBack.d.js.map +0 -7
  513. package/dist/cjs/rawsets/RawSet.d.js +0 -16
  514. package/dist/cjs/rawsets/RawSet.d.js.map +0 -7
  515. package/dist/cjs/rawsets/RawSet.d.ts +0 -180
  516. package/dist/cjs/rawsets/RawSet.d.ts.map +0 -1
  517. package/dist/cjs/rawsets/RawSetOperatorType.d.js +0 -16
  518. package/dist/cjs/rawsets/RawSetOperatorType.d.js.map +0 -7
  519. package/dist/cjs/rawsets/RawSetType.d.js +0 -16
  520. package/dist/cjs/rawsets/RawSetType.d.js.map +0 -7
  521. package/dist/cjs/rawsets/Render.d.js +0 -16
  522. package/dist/cjs/rawsets/Render.d.js.map +0 -7
  523. package/dist/cjs/rawsets/Render.d.ts +0 -27
  524. package/dist/cjs/rawsets/Render.d.ts.map +0 -1
  525. package/dist/cjs/routers/HashRouter.d.js +0 -16
  526. package/dist/cjs/routers/HashRouter.d.js.map +0 -7
  527. package/dist/cjs/routers/PathRouter.d.js +0 -16
  528. package/dist/cjs/routers/PathRouter.d.js.map +0 -7
  529. package/dist/cjs/routers/Router.d.js +0 -17
  530. package/dist/cjs/routers/Router.d.js.map +0 -7
  531. package/dist/cjs/routers/Router.d.ts +0 -83
  532. package/dist/cjs/routers/Router.d.ts.map +0 -1
  533. package/dist/cjs/types/Types.d.js +0 -16
  534. package/dist/cjs/types/Types.d.js.map +0 -7
  535. package/dist/cjs/validators/NonPassValidator.d.js +0 -16
  536. package/dist/cjs/validators/NonPassValidator.d.js.map +0 -7
  537. package/dist/cjs/validators/Validator.d.js +0 -16
  538. package/dist/cjs/validators/Validator.d.js.map +0 -7
  539. package/dist/cjs/validators/ValidatorArray.d.js +0 -16
  540. package/dist/cjs/validators/ValidatorArray.d.js.map +0 -7
  541. package/dist/esm/DomRender.d.js +0 -1
  542. package/dist/esm/DomRender.d.js.map +0 -7
  543. package/dist/esm/DomRender.d.ts +0 -39
  544. package/dist/esm/DomRender.d.ts.map +0 -1
  545. package/dist/esm/DomRenderProxy.d.js +0 -2
  546. package/dist/esm/DomRenderProxy.d.js.map +0 -7
  547. package/dist/esm/DomRenderProxy.d.ts +0 -41
  548. package/dist/esm/DomRenderProxy.d.ts.map +0 -1
  549. package/dist/esm/components/ComponentBase.d.js +0 -2
  550. package/dist/esm/components/ComponentBase.d.js.map +0 -7
  551. package/dist/esm/components/ComponentBase.d.ts +0 -131
  552. package/dist/esm/components/ComponentBase.d.ts.map +0 -1
  553. package/dist/esm/components/ComponentRouterBase.d.js +0 -1
  554. package/dist/esm/components/ComponentRouterBase.d.js.map +0 -7
  555. package/dist/esm/components/ComponentRouterBase.d.ts +0 -13
  556. package/dist/esm/components/ComponentRouterBase.d.ts.map +0 -1
  557. package/dist/esm/components/ComponentSet.d.js +0 -1
  558. package/dist/esm/components/ComponentSet.d.js.map +0 -7
  559. package/dist/esm/components/ComponentSet.d.ts +0 -22
  560. package/dist/esm/components/ComponentSet.d.ts.map +0 -1
  561. package/dist/esm/components/a/A.d.js +0 -5
  562. package/dist/esm/components/a/A.d.js.map +0 -7
  563. package/dist/esm/components/a/A.d.ts +0 -40
  564. package/dist/esm/components/a/A.d.ts.map +0 -1
  565. package/dist/esm/components/a/index.d.js +0 -2
  566. package/dist/esm/components/a/index.d.js.map +0 -7
  567. package/dist/esm/components/a/index.d.ts +0 -2
  568. package/dist/esm/components/a/index.d.ts.map +0 -1
  569. package/dist/esm/components/appender/Appender.d.js +0 -5
  570. package/dist/esm/components/appender/Appender.d.js.map +0 -7
  571. package/dist/esm/components/appender/Appender.d.ts +0 -23
  572. package/dist/esm/components/appender/Appender.d.ts.map +0 -1
  573. package/dist/esm/components/appender/index.d.js +0 -2
  574. package/dist/esm/components/appender/index.d.js.map +0 -7
  575. package/dist/esm/components/appender/index.d.ts +0 -2
  576. package/dist/esm/components/appender/index.d.ts.map +0 -1
  577. package/dist/esm/components/checkbox/CheckBox.d.js +0 -5
  578. package/dist/esm/components/checkbox/CheckBox.d.js.map +0 -7
  579. package/dist/esm/components/checkbox/CheckBox.d.ts +0 -47
  580. package/dist/esm/components/checkbox/CheckBox.d.ts.map +0 -1
  581. package/dist/esm/components/checkbox/index.d.js +0 -2
  582. package/dist/esm/components/checkbox/index.d.js.map +0 -7
  583. package/dist/esm/components/checkbox/index.d.ts +0 -2
  584. package/dist/esm/components/checkbox/index.d.ts.map +0 -1
  585. package/dist/esm/components/choose/Choose.d.js +0 -5
  586. package/dist/esm/components/choose/Choose.d.js.map +0 -7
  587. package/dist/esm/components/choose/Choose.d.ts +0 -39
  588. package/dist/esm/components/choose/Choose.d.ts.map +0 -1
  589. package/dist/esm/components/choose/index.d.js +0 -2
  590. package/dist/esm/components/choose/index.d.js.map +0 -7
  591. package/dist/esm/components/choose/index.d.ts +0 -2
  592. package/dist/esm/components/choose/index.d.ts.map +0 -1
  593. package/dist/esm/components/details/Details.d.js +0 -5
  594. package/dist/esm/components/details/Details.d.js.map +0 -7
  595. package/dist/esm/components/details/Details.d.ts +0 -57
  596. package/dist/esm/components/details/Details.d.ts.map +0 -1
  597. package/dist/esm/components/details/index.d.js +0 -2
  598. package/dist/esm/components/details/index.d.js.map +0 -7
  599. package/dist/esm/components/details/index.d.ts +0 -2
  600. package/dist/esm/components/details/index.d.ts.map +0 -1
  601. package/dist/esm/components/dialog/Dialog.d.ts +0 -1
  602. package/dist/esm/components/dialog/Dialog.d.ts.map +0 -1
  603. package/dist/esm/components/dialog/example/ImageEditorDialog.d.ts +0 -1
  604. package/dist/esm/components/dialog/example/ImageEditorDialog.d.ts.map +0 -1
  605. package/dist/esm/components/forOf/ForOf.d.js +0 -5
  606. package/dist/esm/components/forOf/ForOf.d.js.map +0 -7
  607. package/dist/esm/components/forOf/ForOf.d.ts +0 -18
  608. package/dist/esm/components/forOf/ForOf.d.ts.map +0 -1
  609. package/dist/esm/components/forOf/index.d.js +0 -2
  610. package/dist/esm/components/forOf/index.d.js.map +0 -7
  611. package/dist/esm/components/forOf/index.d.ts +0 -2
  612. package/dist/esm/components/forOf/index.d.ts.map +0 -1
  613. package/dist/esm/components/if/If.d.js +0 -5
  614. package/dist/esm/components/if/If.d.js.map +0 -7
  615. package/dist/esm/components/if/If.d.ts +0 -21
  616. package/dist/esm/components/if/If.d.ts.map +0 -1
  617. package/dist/esm/components/if/index.d.js +0 -2
  618. package/dist/esm/components/if/index.d.js.map +0 -7
  619. package/dist/esm/components/if/index.d.ts +0 -2
  620. package/dist/esm/components/if/index.d.ts.map +0 -1
  621. package/dist/esm/components/index.d.js +0 -18
  622. package/dist/esm/components/index.d.js.map +0 -7
  623. package/dist/esm/components/index.d.ts +0 -58
  624. package/dist/esm/components/index.d.ts.map +0 -1
  625. package/dist/esm/components/input/Input.d.js +0 -5
  626. package/dist/esm/components/input/Input.d.js.map +0 -7
  627. package/dist/esm/components/input/Input.d.ts +0 -34
  628. package/dist/esm/components/input/Input.d.ts.map +0 -1
  629. package/dist/esm/components/input/index.d.js +0 -2
  630. package/dist/esm/components/input/index.d.js.map +0 -7
  631. package/dist/esm/components/input/index.d.ts +0 -2
  632. package/dist/esm/components/input/index.d.ts.map +0 -1
  633. package/dist/esm/components/promise/PromiseSwitch.d.js +0 -5
  634. package/dist/esm/components/promise/PromiseSwitch.d.js.map +0 -7
  635. package/dist/esm/components/promise/PromiseSwitch.d.ts +0 -56
  636. package/dist/esm/components/promise/PromiseSwitch.d.ts.map +0 -1
  637. package/dist/esm/components/promise/index.d.js +0 -2
  638. package/dist/esm/components/promise/index.d.js.map +0 -7
  639. package/dist/esm/components/promise/index.d.ts +0 -2
  640. package/dist/esm/components/promise/index.d.ts.map +0 -1
  641. package/dist/esm/components/radio/Radio.d.js +0 -5
  642. package/dist/esm/components/radio/Radio.d.js.map +0 -7
  643. package/dist/esm/components/radio/Radio.d.ts +0 -45
  644. package/dist/esm/components/radio/Radio.d.ts.map +0 -1
  645. package/dist/esm/components/radio/index.d.js +0 -2
  646. package/dist/esm/components/radio/index.d.js.map +0 -7
  647. package/dist/esm/components/radio/index.d.ts +0 -2
  648. package/dist/esm/components/radio/index.d.ts.map +0 -1
  649. package/dist/esm/components/router/Route.d.js +0 -5
  650. package/dist/esm/components/router/Route.d.js.map +0 -7
  651. package/dist/esm/components/router/Route.d.ts +0 -36
  652. package/dist/esm/components/router/Route.d.ts.map +0 -1
  653. package/dist/esm/components/router/RouterOutlet.d.js +0 -5
  654. package/dist/esm/components/router/RouterOutlet.d.js.map +0 -7
  655. package/dist/esm/components/router/RouterOutlet.d.ts +0 -34
  656. package/dist/esm/components/router/RouterOutlet.d.ts.map +0 -1
  657. package/dist/esm/components/router/index.d.js +0 -3
  658. package/dist/esm/components/router/index.d.js.map +0 -7
  659. package/dist/esm/components/router/index.d.ts +0 -3
  660. package/dist/esm/components/router/index.d.ts.map +0 -1
  661. package/dist/esm/components/select/Select.d.js +0 -5
  662. package/dist/esm/components/select/Select.d.js.map +0 -7
  663. package/dist/esm/components/select/Select.d.ts +0 -154
  664. package/dist/esm/components/select/Select.d.ts.map +0 -1
  665. package/dist/esm/components/select/index.d.js +0 -2
  666. package/dist/esm/components/select/index.d.js.map +0 -7
  667. package/dist/esm/components/select/index.d.ts +0 -2
  668. package/dist/esm/components/select/index.d.ts.map +0 -1
  669. package/dist/esm/components/this/This.d.js +0 -5
  670. package/dist/esm/components/this/This.d.js.map +0 -7
  671. package/dist/esm/components/this/This.d.ts +0 -31
  672. package/dist/esm/components/this/This.d.ts.map +0 -1
  673. package/dist/esm/components/this/index.d.js +0 -2
  674. package/dist/esm/components/this/index.d.js.map +0 -7
  675. package/dist/esm/components/this/index.d.ts +0 -2
  676. package/dist/esm/components/this/index.d.ts.map +0 -1
  677. package/dist/esm/components/timer/Timer.d.js +0 -5
  678. package/dist/esm/components/timer/Timer.d.js.map +0 -7
  679. package/dist/esm/components/timer/Timer.d.ts +0 -26
  680. package/dist/esm/components/timer/Timer.d.ts.map +0 -1
  681. package/dist/esm/components/timer/index.d.js +0 -2
  682. package/dist/esm/components/timer/index.d.js.map +0 -7
  683. package/dist/esm/components/timer/index.d.ts +0 -2
  684. package/dist/esm/components/timer/index.d.ts.map +0 -1
  685. package/dist/esm/configs/DomRenderConfig.d.js +0 -1
  686. package/dist/esm/configs/DomRenderConfig.d.js.map +0 -7
  687. package/dist/esm/configs/DomRenderConfig.d.ts +0 -39
  688. package/dist/esm/configs/DomRenderConfig.d.ts.map +0 -1
  689. package/dist/esm/configs/TargetAttr.d.js +0 -1
  690. package/dist/esm/configs/TargetAttr.d.js.map +0 -7
  691. package/dist/esm/configs/TargetAttr.d.ts +0 -7
  692. package/dist/esm/configs/TargetAttr.d.ts.map +0 -1
  693. package/dist/esm/configs/TargetElement.d.js +0 -1
  694. package/dist/esm/configs/TargetElement.d.js.map +0 -7
  695. package/dist/esm/configs/TargetElement.d.ts +0 -16
  696. package/dist/esm/configs/TargetElement.d.ts.map +0 -1
  697. package/dist/esm/configs/index.d.ts +0 -4
  698. package/dist/esm/configs/index.d.ts.map +0 -1
  699. package/dist/esm/decorators/DomRenderNoProxy.d.js +0 -2
  700. package/dist/esm/decorators/DomRenderNoProxy.d.js.map +0 -7
  701. package/dist/esm/decorators/DomRenderNoProxy.d.ts +0 -5
  702. package/dist/esm/decorators/DomRenderNoProxy.d.ts.map +0 -1
  703. package/dist/esm/decorators/index.d.ts +0 -2
  704. package/dist/esm/decorators/index.d.ts.map +0 -1
  705. package/dist/esm/events/EventManager.d.js +0 -1
  706. package/dist/esm/events/EventManager.d.js.map +0 -7
  707. package/dist/esm/events/EventManager.d.ts +0 -80
  708. package/dist/esm/events/EventManager.d.ts.map +0 -1
  709. package/dist/esm/events/index.d.ts +0 -2
  710. package/dist/esm/events/index.d.ts.map +0 -1
  711. package/dist/esm/index.d.ts +0 -3
  712. package/dist/esm/index.d.ts.map +0 -1
  713. package/dist/esm/iterators/Range.d.js +0 -1
  714. package/dist/esm/iterators/Range.d.js.map +0 -7
  715. package/dist/esm/iterators/Range.d.ts +0 -24
  716. package/dist/esm/iterators/Range.d.ts.map +0 -1
  717. package/dist/esm/iterators/index.d.ts +0 -2
  718. package/dist/esm/iterators/index.d.ts.map +0 -1
  719. package/dist/esm/lifecycle/OnBeforeReturnGet.d.ts +0 -4
  720. package/dist/esm/lifecycle/OnBeforeReturnGet.d.ts.map +0 -1
  721. package/dist/esm/lifecycle/OnBeforeReturnSet.d.js +0 -1
  722. package/dist/esm/lifecycle/OnBeforeReturnSet.d.js.map +0 -7
  723. package/dist/esm/lifecycle/OnBeforeReturnSet.d.ts +0 -5
  724. package/dist/esm/lifecycle/OnBeforeReturnSet.d.ts.map +0 -1
  725. package/dist/esm/lifecycle/OnChangeAttrRender.d.js +0 -1
  726. package/dist/esm/lifecycle/OnChangeAttrRender.d.js.map +0 -7
  727. package/dist/esm/lifecycle/OnChangeAttrRender.d.ts +0 -9
  728. package/dist/esm/lifecycle/OnChangeAttrRender.d.ts.map +0 -1
  729. package/dist/esm/lifecycle/OnChildRenderedByProperty.d.js +0 -1
  730. package/dist/esm/lifecycle/OnChildRenderedByProperty.d.js.map +0 -7
  731. package/dist/esm/lifecycle/OnChildRenderedByProperty.d.ts +0 -5
  732. package/dist/esm/lifecycle/OnChildRenderedByProperty.d.ts.map +0 -1
  733. package/dist/esm/lifecycle/OnCreateRender.d.js +0 -1
  734. package/dist/esm/lifecycle/OnCreateRender.d.js.map +0 -7
  735. package/dist/esm/lifecycle/OnCreateRender.d.ts +0 -5
  736. package/dist/esm/lifecycle/OnCreateRender.d.ts.map +0 -1
  737. package/dist/esm/lifecycle/OnCreateRenderData.d.js +0 -1
  738. package/dist/esm/lifecycle/OnCreateRenderData.d.js.map +0 -7
  739. package/dist/esm/lifecycle/OnCreateRenderData.d.ts +0 -10
  740. package/dist/esm/lifecycle/OnCreateRenderData.d.ts.map +0 -1
  741. package/dist/esm/lifecycle/OnCreateRendered.d.ts +0 -8
  742. package/dist/esm/lifecycle/OnCreateRendered.d.ts.map +0 -1
  743. package/dist/esm/lifecycle/OnCreatedThisChild.d.js +0 -1
  744. package/dist/esm/lifecycle/OnCreatedThisChild.d.js.map +0 -7
  745. package/dist/esm/lifecycle/OnCreatedThisChild.d.ts +0 -6
  746. package/dist/esm/lifecycle/OnCreatedThisChild.d.ts.map +0 -1
  747. package/dist/esm/lifecycle/OnDestroyRender.d.js +0 -1
  748. package/dist/esm/lifecycle/OnDestroyRender.d.js.map +0 -7
  749. package/dist/esm/lifecycle/OnDestroyRender.d.ts +0 -9
  750. package/dist/esm/lifecycle/OnDestroyRender.d.ts.map +0 -1
  751. package/dist/esm/lifecycle/OnInitRender.d.js +0 -1
  752. package/dist/esm/lifecycle/OnInitRender.d.js.map +0 -7
  753. package/dist/esm/lifecycle/OnInitRender.d.ts +0 -6
  754. package/dist/esm/lifecycle/OnInitRender.d.ts.map +0 -1
  755. package/dist/esm/lifecycle/OnProxyDomRender.d.js +0 -1
  756. package/dist/esm/lifecycle/OnProxyDomRender.d.js.map +0 -7
  757. package/dist/esm/lifecycle/OnProxyDomRender.d.ts +0 -6
  758. package/dist/esm/lifecycle/OnProxyDomRender.d.ts.map +0 -1
  759. package/dist/esm/lifecycle/dr-this/OnDrThisBind.d.js +0 -1
  760. package/dist/esm/lifecycle/dr-this/OnDrThisBind.d.js.map +0 -7
  761. package/dist/esm/lifecycle/dr-this/OnDrThisBind.d.ts +0 -5
  762. package/dist/esm/lifecycle/dr-this/OnDrThisBind.d.ts.map +0 -1
  763. package/dist/esm/lifecycle/dr-this/OnDrThisUnBind.d.js +0 -1
  764. package/dist/esm/lifecycle/dr-this/OnDrThisUnBind.d.js.map +0 -7
  765. package/dist/esm/lifecycle/dr-this/OnDrThisUnBind.d.ts +0 -5
  766. package/dist/esm/lifecycle/dr-this/OnDrThisUnBind.d.ts.map +0 -1
  767. package/dist/esm/lifecycle/dr-this/index.d.ts +0 -3
  768. package/dist/esm/lifecycle/dr-this/index.d.ts.map +0 -1
  769. package/dist/esm/lifecycle/index.d.ts +0 -13
  770. package/dist/esm/lifecycle/index.d.ts.map +0 -1
  771. package/dist/esm/managers/RenderManager.d.ts +0 -2
  772. package/dist/esm/managers/RenderManager.d.ts.map +0 -1
  773. package/dist/esm/managers/RenderManager.js +0 -1
  774. package/dist/esm/managers/RenderManager.js.map +0 -7
  775. package/dist/esm/managers/index.d.ts +0 -2
  776. package/dist/esm/managers/index.d.ts.map +0 -1
  777. package/dist/esm/managers/index.js +0 -2
  778. package/dist/esm/managers/index.js.map +0 -7
  779. package/dist/esm/messenger/DefaultMessenger.d.js +0 -1
  780. package/dist/esm/messenger/DefaultMessenger.d.js.map +0 -7
  781. package/dist/esm/messenger/DefaultMessenger.d.ts +0 -4
  782. package/dist/esm/messenger/DefaultMessenger.d.ts.map +0 -1
  783. package/dist/esm/messenger/Messenger.d.js +0 -1
  784. package/dist/esm/messenger/Messenger.d.js.map +0 -7
  785. package/dist/esm/messenger/Messenger.d.ts +0 -79
  786. package/dist/esm/messenger/Messenger.d.ts.map +0 -1
  787. package/dist/esm/messenger/index.d.ts +0 -3
  788. package/dist/esm/messenger/index.d.ts.map +0 -1
  789. package/dist/esm/operators/Appender.d.js +0 -1
  790. package/dist/esm/operators/Appender.d.js.map +0 -7
  791. package/dist/esm/operators/Appender.d.ts +0 -15
  792. package/dist/esm/operators/Appender.d.ts.map +0 -1
  793. package/dist/esm/operators/Dr.d.js +0 -1
  794. package/dist/esm/operators/Dr.d.js.map +0 -7
  795. package/dist/esm/operators/Dr.d.ts +0 -9
  796. package/dist/esm/operators/Dr.d.ts.map +0 -1
  797. package/dist/esm/operators/DrAppender.d.js +0 -1
  798. package/dist/esm/operators/DrAppender.d.js.map +0 -7
  799. package/dist/esm/operators/DrAppender.d.ts +0 -9
  800. package/dist/esm/operators/DrAppender.d.ts.map +0 -1
  801. package/dist/esm/operators/DrFor.d.js +0 -1
  802. package/dist/esm/operators/DrFor.d.js.map +0 -7
  803. package/dist/esm/operators/DrFor.d.ts +0 -9
  804. package/dist/esm/operators/DrFor.d.ts.map +0 -1
  805. package/dist/esm/operators/DrForOf.d.js +0 -1
  806. package/dist/esm/operators/DrForOf.d.js.map +0 -7
  807. package/dist/esm/operators/DrForOf.d.ts +0 -9
  808. package/dist/esm/operators/DrForOf.d.ts.map +0 -1
  809. package/dist/esm/operators/DrForm.d.js +0 -1
  810. package/dist/esm/operators/DrForm.d.js.map +0 -7
  811. package/dist/esm/operators/DrForm.d.ts +0 -9
  812. package/dist/esm/operators/DrForm.d.ts.map +0 -1
  813. package/dist/esm/operators/DrIf.d.js +0 -1
  814. package/dist/esm/operators/DrIf.d.js.map +0 -7
  815. package/dist/esm/operators/DrIf.d.ts +0 -9
  816. package/dist/esm/operators/DrIf.d.ts.map +0 -1
  817. package/dist/esm/operators/DrInnerHTML.d.js +0 -1
  818. package/dist/esm/operators/DrInnerHTML.d.js.map +0 -7
  819. package/dist/esm/operators/DrInnerHTML.d.ts +0 -9
  820. package/dist/esm/operators/DrInnerHTML.d.ts.map +0 -1
  821. package/dist/esm/operators/DrInnerText.d.js +0 -1
  822. package/dist/esm/operators/DrInnerText.d.js.map +0 -7
  823. package/dist/esm/operators/DrInnerText.d.ts +0 -9
  824. package/dist/esm/operators/DrInnerText.d.ts.map +0 -1
  825. package/dist/esm/operators/DrPre.d.js +0 -1
  826. package/dist/esm/operators/DrPre.d.js.map +0 -7
  827. package/dist/esm/operators/DrPre.d.ts +0 -8
  828. package/dist/esm/operators/DrPre.d.ts.map +0 -1
  829. package/dist/esm/operators/DrRepeat.d.js +0 -1
  830. package/dist/esm/operators/DrRepeat.d.js.map +0 -7
  831. package/dist/esm/operators/DrRepeat.d.ts +0 -9
  832. package/dist/esm/operators/DrRepeat.d.ts.map +0 -1
  833. package/dist/esm/operators/DrStripElement.d.js +0 -1
  834. package/dist/esm/operators/DrStripElement.d.js.map +0 -7
  835. package/dist/esm/operators/DrStripElement.d.ts +0 -9
  836. package/dist/esm/operators/DrStripElement.d.ts.map +0 -1
  837. package/dist/esm/operators/DrTargetAttr.d.js +0 -1
  838. package/dist/esm/operators/DrTargetAttr.d.js.map +0 -7
  839. package/dist/esm/operators/DrTargetAttr.d.ts +0 -8
  840. package/dist/esm/operators/DrTargetAttr.d.ts.map +0 -1
  841. package/dist/esm/operators/DrTargetElement.d.js +0 -1
  842. package/dist/esm/operators/DrTargetElement.d.js.map +0 -7
  843. package/dist/esm/operators/DrTargetElement.d.ts +0 -13
  844. package/dist/esm/operators/DrTargetElement.d.ts.map +0 -1
  845. package/dist/esm/operators/DrTargetElementIsElement.d.js +0 -1
  846. package/dist/esm/operators/DrTargetElementIsElement.d.js.map +0 -7
  847. package/dist/esm/operators/DrTargetElementIsElement.d.ts +0 -8
  848. package/dist/esm/operators/DrTargetElementIsElement.d.ts.map +0 -1
  849. package/dist/esm/operators/DrThis.d.js +0 -1
  850. package/dist/esm/operators/DrThis.d.js.map +0 -7
  851. package/dist/esm/operators/DrThis.d.ts +0 -7
  852. package/dist/esm/operators/DrThis.d.ts.map +0 -1
  853. package/dist/esm/operators/DrThisProperty.d.js +0 -1
  854. package/dist/esm/operators/DrThisProperty.d.js.map +0 -7
  855. package/dist/esm/operators/DrThisProperty.d.ts +0 -11
  856. package/dist/esm/operators/DrThisProperty.d.ts.map +0 -1
  857. package/dist/esm/operators/OperatorExecuter.d.js +0 -1
  858. package/dist/esm/operators/OperatorExecuter.d.js.map +0 -7
  859. package/dist/esm/operators/OperatorExecuter.d.ts +0 -50
  860. package/dist/esm/operators/OperatorExecuter.d.ts.map +0 -1
  861. package/dist/esm/operators/OperatorExecuterAttrRequire.d.js +0 -1
  862. package/dist/esm/operators/OperatorExecuterAttrRequire.d.js.map +0 -7
  863. package/dist/esm/operators/OperatorExecuterAttrRequire.d.ts +0 -9
  864. package/dist/esm/operators/OperatorExecuterAttrRequire.d.ts.map +0 -1
  865. package/dist/esm/operators/index.d.ts +0 -20
  866. package/dist/esm/operators/index.d.ts.map +0 -1
  867. package/dist/esm/rawsets/AttrInitCallBack.d.js +0 -1
  868. package/dist/esm/rawsets/AttrInitCallBack.d.js.map +0 -7
  869. package/dist/esm/rawsets/AttrInitCallBack.d.ts +0 -6
  870. package/dist/esm/rawsets/AttrInitCallBack.d.ts.map +0 -1
  871. package/dist/esm/rawsets/Attrs.d.js +0 -1
  872. package/dist/esm/rawsets/Attrs.d.js.map +0 -7
  873. package/dist/esm/rawsets/Attrs.d.ts +0 -29
  874. package/dist/esm/rawsets/Attrs.d.ts.map +0 -1
  875. package/dist/esm/rawsets/CreatorMetaData.d.js +0 -1
  876. package/dist/esm/rawsets/CreatorMetaData.d.js.map +0 -7
  877. package/dist/esm/rawsets/CreatorMetaData.d.ts +0 -20
  878. package/dist/esm/rawsets/CreatorMetaData.d.ts.map +0 -1
  879. package/dist/esm/rawsets/DestroyOptionType.d.js +0 -1
  880. package/dist/esm/rawsets/DestroyOptionType.d.js.map +0 -7
  881. package/dist/esm/rawsets/DestroyOptionType.d.ts +0 -5
  882. package/dist/esm/rawsets/DestroyOptionType.d.ts.map +0 -1
  883. package/dist/esm/rawsets/ElementInitCallBack.d.js +0 -1
  884. package/dist/esm/rawsets/ElementInitCallBack.d.js.map +0 -7
  885. package/dist/esm/rawsets/ElementInitCallBack.d.ts +0 -9
  886. package/dist/esm/rawsets/ElementInitCallBack.d.ts.map +0 -1
  887. package/dist/esm/rawsets/RawSet.d.js +0 -1
  888. package/dist/esm/rawsets/RawSet.d.js.map +0 -7
  889. package/dist/esm/rawsets/RawSet.d.ts +0 -180
  890. package/dist/esm/rawsets/RawSet.d.ts.map +0 -1
  891. package/dist/esm/rawsets/RawSetOperatorType.d.js +0 -1
  892. package/dist/esm/rawsets/RawSetOperatorType.d.js.map +0 -7
  893. package/dist/esm/rawsets/RawSetOperatorType.d.ts +0 -4
  894. package/dist/esm/rawsets/RawSetOperatorType.d.ts.map +0 -1
  895. package/dist/esm/rawsets/RawSetType.d.js +0 -1
  896. package/dist/esm/rawsets/RawSetType.d.js.map +0 -7
  897. package/dist/esm/rawsets/RawSetType.d.ts +0 -8
  898. package/dist/esm/rawsets/RawSetType.d.ts.map +0 -1
  899. package/dist/esm/rawsets/Render.d.js +0 -1
  900. package/dist/esm/rawsets/Render.d.js.map +0 -7
  901. package/dist/esm/rawsets/Render.d.ts +0 -27
  902. package/dist/esm/rawsets/Render.d.ts.map +0 -1
  903. package/dist/esm/rawsets/index.d.ts +0 -10
  904. package/dist/esm/rawsets/index.d.ts.map +0 -1
  905. package/dist/esm/routers/HashRouter.d.js +0 -1
  906. package/dist/esm/routers/HashRouter.d.js.map +0 -7
  907. package/dist/esm/routers/HashRouter.d.ts +0 -25
  908. package/dist/esm/routers/HashRouter.d.ts.map +0 -1
  909. package/dist/esm/routers/PathRouter.d.js +0 -1
  910. package/dist/esm/routers/PathRouter.d.js.map +0 -7
  911. package/dist/esm/routers/PathRouter.d.ts +0 -24
  912. package/dist/esm/routers/PathRouter.d.ts.map +0 -1
  913. package/dist/esm/routers/Router.d.js +0 -2
  914. package/dist/esm/routers/Router.d.js.map +0 -7
  915. package/dist/esm/routers/Router.d.ts +0 -83
  916. package/dist/esm/routers/Router.d.ts.map +0 -1
  917. package/dist/esm/routers/index.d.ts +0 -4
  918. package/dist/esm/routers/index.d.ts.map +0 -1
  919. package/dist/esm/types/Types.d.js +0 -1
  920. package/dist/esm/types/Types.d.js.map +0 -7
  921. package/dist/esm/types/Types.d.ts +0 -12
  922. package/dist/esm/types/Types.d.ts.map +0 -1
  923. package/dist/esm/types/index.d.ts +0 -2
  924. package/dist/esm/types/index.d.ts.map +0 -1
  925. package/dist/esm/types/type.d.ts +0 -25
  926. package/dist/esm/types/type.d.ts.map +0 -1
  927. package/dist/esm/validators/AllCheckedValidatorArray.d.ts +0 -7
  928. package/dist/esm/validators/AllCheckedValidatorArray.d.ts.map +0 -1
  929. package/dist/esm/validators/AllUnCheckedValidatorArray.d.ts +0 -7
  930. package/dist/esm/validators/AllUnCheckedValidatorArray.d.ts.map +0 -1
  931. package/dist/esm/validators/CheckedValidator.d.ts +0 -6
  932. package/dist/esm/validators/CheckedValidator.d.ts.map +0 -1
  933. package/dist/esm/validators/CountEqualsCheckedValidatorArray.d.ts +0 -8
  934. package/dist/esm/validators/CountEqualsCheckedValidatorArray.d.ts.map +0 -1
  935. package/dist/esm/validators/CountEqualsUnCheckedValidatorArray.d.ts +0 -8
  936. package/dist/esm/validators/CountEqualsUnCheckedValidatorArray.d.ts.map +0 -1
  937. package/dist/esm/validators/CountGreaterThanCheckedValidatorArray.d.ts +0 -8
  938. package/dist/esm/validators/CountGreaterThanCheckedValidatorArray.d.ts.map +0 -1
  939. package/dist/esm/validators/CountGreaterThanEqualsCheckedValidatorArray.d.ts +0 -8
  940. package/dist/esm/validators/CountGreaterThanEqualsCheckedValidatorArray.d.ts.map +0 -1
  941. package/dist/esm/validators/CountGreaterThanEqualsUnCheckedValidatorArray.d.ts +0 -8
  942. package/dist/esm/validators/CountGreaterThanEqualsUnCheckedValidatorArray.d.ts.map +0 -1
  943. package/dist/esm/validators/CountGreaterThanUnCheckedValidatorArray.d.ts +0 -8
  944. package/dist/esm/validators/CountGreaterThanUnCheckedValidatorArray.d.ts.map +0 -1
  945. package/dist/esm/validators/CountLessThanCheckedValidatorArray.d.ts +0 -8
  946. package/dist/esm/validators/CountLessThanCheckedValidatorArray.d.ts.map +0 -1
  947. package/dist/esm/validators/CountLessThanEqualsCheckedValidatorArray.d.ts +0 -8
  948. package/dist/esm/validators/CountLessThanEqualsCheckedValidatorArray.d.ts.map +0 -1
  949. package/dist/esm/validators/CountLessThanEqualsUnCheckedValidatorArray.d.ts +0 -8
  950. package/dist/esm/validators/CountLessThanEqualsUnCheckedValidatorArray.d.ts.map +0 -1
  951. package/dist/esm/validators/CountLessThanUnCheckedValidatorArray.d.ts +0 -8
  952. package/dist/esm/validators/CountLessThanUnCheckedValidatorArray.d.ts.map +0 -1
  953. package/dist/esm/validators/CountUnCheckedValidatorArray.d.ts +0 -8
  954. package/dist/esm/validators/CountUnCheckedValidatorArray.d.ts.map +0 -1
  955. package/dist/esm/validators/EmptyValidator.d.ts +0 -6
  956. package/dist/esm/validators/EmptyValidator.d.ts.map +0 -1
  957. package/dist/esm/validators/ExcludeCheckedValidatorArray.d.ts +0 -9
  958. package/dist/esm/validators/ExcludeCheckedValidatorArray.d.ts.map +0 -1
  959. package/dist/esm/validators/FormValidator.d.ts +0 -8
  960. package/dist/esm/validators/FormValidator.d.ts.map +0 -1
  961. package/dist/esm/validators/IncludeCheckedValidatorArray.d.ts +0 -9
  962. package/dist/esm/validators/IncludeCheckedValidatorArray.d.ts.map +0 -1
  963. package/dist/esm/validators/MultipleValidator.d.ts +0 -9
  964. package/dist/esm/validators/MultipleValidator.d.ts.map +0 -1
  965. package/dist/esm/validators/NonPassValidator.d.js +0 -1
  966. package/dist/esm/validators/NonPassValidator.d.js.map +0 -7
  967. package/dist/esm/validators/NonPassValidator.d.ts +0 -6
  968. package/dist/esm/validators/NonPassValidator.d.ts.map +0 -1
  969. package/dist/esm/validators/NotEmptyValidator.d.ts +0 -6
  970. package/dist/esm/validators/NotEmptyValidator.d.ts.map +0 -1
  971. package/dist/esm/validators/NotRegExpTestValidator.d.ts +0 -7
  972. package/dist/esm/validators/NotRegExpTestValidator.d.ts.map +0 -1
  973. package/dist/esm/validators/PassValidator.d.ts +0 -6
  974. package/dist/esm/validators/PassValidator.d.ts.map +0 -1
  975. package/dist/esm/validators/RegExpTestValidator.d.ts +0 -7
  976. package/dist/esm/validators/RegExpTestValidator.d.ts.map +0 -1
  977. package/dist/esm/validators/RequiredValidator.d.ts +0 -6
  978. package/dist/esm/validators/RequiredValidator.d.ts.map +0 -1
  979. package/dist/esm/validators/UnCheckedValidator.d.ts +0 -6
  980. package/dist/esm/validators/UnCheckedValidator.d.ts.map +0 -1
  981. package/dist/esm/validators/ValidMultipleValidator.d.ts +0 -10
  982. package/dist/esm/validators/ValidMultipleValidator.d.ts.map +0 -1
  983. package/dist/esm/validators/ValidValidator.d.ts +0 -7
  984. package/dist/esm/validators/ValidValidator.d.ts.map +0 -1
  985. package/dist/esm/validators/ValidValidatorArray.d.ts +0 -8
  986. package/dist/esm/validators/ValidValidatorArray.d.ts.map +0 -1
  987. package/dist/esm/validators/Validator.d.js +0 -1
  988. package/dist/esm/validators/Validator.d.js.map +0 -7
  989. package/dist/esm/validators/Validator.d.ts +0 -58
  990. package/dist/esm/validators/Validator.d.ts.map +0 -1
  991. package/dist/esm/validators/ValidatorArray.d.js +0 -1
  992. package/dist/esm/validators/ValidatorArray.d.js.map +0 -7
  993. package/dist/esm/validators/ValidatorArray.d.ts +0 -18
  994. package/dist/esm/validators/ValidatorArray.d.ts.map +0 -1
  995. package/dist/esm/validators/ValueEqualsValidator.d.ts +0 -7
  996. package/dist/esm/validators/ValueEqualsValidator.d.ts.map +0 -1
  997. package/dist/esm/validators/ValueNotEqualsValidator.d.ts +0 -7
  998. package/dist/esm/validators/ValueNotEqualsValidator.d.ts.map +0 -1
  999. package/dist/esm/validators/index.d.ts +0 -32
  1000. package/dist/esm/validators/index.d.ts.map +0 -1
  1001. /package/dist/{cjs → types}/DomRenderProxy.d.ts +0 -0
  1002. /package/dist/{cjs → types}/components/ComponentSet.d.ts +0 -0
  1003. /package/dist/{cjs → types}/components/ComponentSet.d.ts.map +0 -0
  1004. /package/dist/{cjs → types}/components/a/A.d.ts +0 -0
  1005. /package/dist/{cjs → types}/components/a/A.d.ts.map +0 -0
  1006. /package/dist/{cjs → types}/components/a/index.d.ts +0 -0
  1007. /package/dist/{cjs → types}/components/a/index.d.ts.map +0 -0
  1008. /package/dist/{cjs → types}/components/appender/Appender.d.ts +0 -0
  1009. /package/dist/{cjs → types}/components/appender/Appender.d.ts.map +0 -0
  1010. /package/dist/{cjs → types}/components/appender/index.d.ts +0 -0
  1011. /package/dist/{cjs → types}/components/appender/index.d.ts.map +0 -0
  1012. /package/dist/{cjs → types}/components/checkbox/CheckBox.d.ts +0 -0
  1013. /package/dist/{cjs → types}/components/checkbox/CheckBox.d.ts.map +0 -0
  1014. /package/dist/{cjs → types}/components/checkbox/index.d.ts +0 -0
  1015. /package/dist/{cjs → types}/components/checkbox/index.d.ts.map +0 -0
  1016. /package/dist/{cjs → types}/components/choose/Choose.d.ts +0 -0
  1017. /package/dist/{cjs → types}/components/choose/index.d.ts +0 -0
  1018. /package/dist/{cjs → types}/components/choose/index.d.ts.map +0 -0
  1019. /package/dist/{cjs → types}/components/details/Details.d.ts +0 -0
  1020. /package/dist/{cjs → types}/components/details/Details.d.ts.map +0 -0
  1021. /package/dist/{cjs → types}/components/details/index.d.ts +0 -0
  1022. /package/dist/{cjs → types}/components/details/index.d.ts.map +0 -0
  1023. /package/dist/{cjs → types}/components/dialog/Dialog.d.ts +0 -0
  1024. /package/dist/{cjs → types}/components/dialog/Dialog.d.ts.map +0 -0
  1025. /package/dist/{cjs → types}/components/dialog/example/ImageEditorDialog.d.ts +0 -0
  1026. /package/dist/{cjs → types}/components/dialog/example/ImageEditorDialog.d.ts.map +0 -0
  1027. /package/dist/{cjs → types}/components/forOf/ForOf.d.ts +0 -0
  1028. /package/dist/{cjs → types}/components/forOf/ForOf.d.ts.map +0 -0
  1029. /package/dist/{cjs → types}/components/forOf/index.d.ts +0 -0
  1030. /package/dist/{cjs → types}/components/forOf/index.d.ts.map +0 -0
  1031. /package/dist/{cjs → types}/components/if/If.d.ts +0 -0
  1032. /package/dist/{cjs → types}/components/if/If.d.ts.map +0 -0
  1033. /package/dist/{cjs → types}/components/if/index.d.ts +0 -0
  1034. /package/dist/{cjs → types}/components/if/index.d.ts.map +0 -0
  1035. /package/dist/{cjs → types}/components/input/Input.d.ts +0 -0
  1036. /package/dist/{cjs → types}/components/input/Input.d.ts.map +0 -0
  1037. /package/dist/{cjs → types}/components/input/index.d.ts +0 -0
  1038. /package/dist/{cjs → types}/components/input/index.d.ts.map +0 -0
  1039. /package/dist/{cjs → types}/components/promise/PromiseSwitch.d.ts +0 -0
  1040. /package/dist/{cjs → types}/components/promise/PromiseSwitch.d.ts.map +0 -0
  1041. /package/dist/{cjs → types}/components/promise/index.d.ts +0 -0
  1042. /package/dist/{cjs → types}/components/promise/index.d.ts.map +0 -0
  1043. /package/dist/{cjs → types}/components/radio/Radio.d.ts +0 -0
  1044. /package/dist/{cjs → types}/components/radio/Radio.d.ts.map +0 -0
  1045. /package/dist/{cjs → types}/components/radio/index.d.ts +0 -0
  1046. /package/dist/{cjs → types}/components/radio/index.d.ts.map +0 -0
  1047. /package/dist/{cjs → types}/components/router/Route.d.ts +0 -0
  1048. /package/dist/{cjs → types}/components/router/Route.d.ts.map +0 -0
  1049. /package/dist/{cjs → types}/components/router/index.d.ts +0 -0
  1050. /package/dist/{cjs → types}/components/router/index.d.ts.map +0 -0
  1051. /package/dist/{cjs → types}/components/select/index.d.ts +0 -0
  1052. /package/dist/{cjs → types}/components/select/index.d.ts.map +0 -0
  1053. /package/dist/{cjs → types}/components/this/This.d.ts +0 -0
  1054. /package/dist/{cjs → types}/components/this/This.d.ts.map +0 -0
  1055. /package/dist/{cjs → types}/components/this/index.d.ts +0 -0
  1056. /package/dist/{cjs → types}/components/this/index.d.ts.map +0 -0
  1057. /package/dist/{cjs → types}/components/timer/index.d.ts +0 -0
  1058. /package/dist/{cjs → types}/components/timer/index.d.ts.map +0 -0
  1059. /package/dist/{cjs → types}/configs/DomRenderConfig.d.ts +0 -0
  1060. /package/dist/{cjs → types}/configs/DomRenderConfig.d.ts.map +0 -0
  1061. /package/dist/{cjs → types}/configs/TargetAttr.d.ts +0 -0
  1062. /package/dist/{cjs → types}/configs/TargetAttr.d.ts.map +0 -0
  1063. /package/dist/{cjs → types}/configs/TargetElement.d.ts +0 -0
  1064. /package/dist/{cjs → types}/configs/TargetElement.d.ts.map +0 -0
  1065. /package/dist/{cjs → types}/configs/index.d.ts +0 -0
  1066. /package/dist/{cjs → types}/configs/index.d.ts.map +0 -0
  1067. /package/dist/{cjs → types}/decorators/DomRenderNoProxy.d.ts +0 -0
  1068. /package/dist/{cjs → types}/decorators/index.d.ts +0 -0
  1069. /package/dist/{cjs → types}/decorators/index.d.ts.map +0 -0
  1070. /package/dist/{cjs → types}/events/EventManager.d.ts +0 -0
  1071. /package/dist/{cjs → types}/events/EventManager.d.ts.map +0 -0
  1072. /package/dist/{cjs → types}/events/index.d.ts +0 -0
  1073. /package/dist/{cjs → types}/events/index.d.ts.map +0 -0
  1074. /package/dist/{cjs → types}/index.d.ts.map +0 -0
  1075. /package/dist/{cjs → types}/iterators/Range.d.ts +0 -0
  1076. /package/dist/{cjs → types}/iterators/Range.d.ts.map +0 -0
  1077. /package/dist/{cjs → types}/iterators/index.d.ts +0 -0
  1078. /package/dist/{cjs → types}/iterators/index.d.ts.map +0 -0
  1079. /package/dist/{cjs → types}/lifecycle/OnBeforeReturnGet.d.ts +0 -0
  1080. /package/dist/{cjs → types}/lifecycle/OnBeforeReturnGet.d.ts.map +0 -0
  1081. /package/dist/{cjs → types}/lifecycle/OnBeforeReturnSet.d.ts +0 -0
  1082. /package/dist/{cjs → types}/lifecycle/OnBeforeReturnSet.d.ts.map +0 -0
  1083. /package/dist/{cjs → types}/lifecycle/OnChangeAttrRender.d.ts +0 -0
  1084. /package/dist/{cjs → types}/lifecycle/OnChangeAttrRender.d.ts.map +0 -0
  1085. /package/dist/{cjs → types}/lifecycle/OnChildRenderedByProperty.d.ts +0 -0
  1086. /package/dist/{cjs → types}/lifecycle/OnChildRenderedByProperty.d.ts.map +0 -0
  1087. /package/dist/{cjs → types}/lifecycle/OnCreateRender.d.ts +0 -0
  1088. /package/dist/{cjs → types}/lifecycle/OnCreateRender.d.ts.map +0 -0
  1089. /package/dist/{cjs → types}/lifecycle/OnCreateRenderData.d.ts +0 -0
  1090. /package/dist/{cjs → types}/lifecycle/OnCreateRenderData.d.ts.map +0 -0
  1091. /package/dist/{cjs → types}/lifecycle/OnCreateRendered.d.ts +0 -0
  1092. /package/dist/{cjs → types}/lifecycle/OnCreateRendered.d.ts.map +0 -0
  1093. /package/dist/{cjs → types}/lifecycle/OnCreatedThisChild.d.ts +0 -0
  1094. /package/dist/{cjs → types}/lifecycle/OnCreatedThisChild.d.ts.map +0 -0
  1095. /package/dist/{cjs → types}/lifecycle/OnDestroyRender.d.ts +0 -0
  1096. /package/dist/{cjs → types}/lifecycle/OnDestroyRender.d.ts.map +0 -0
  1097. /package/dist/{cjs → types}/lifecycle/OnInitRender.d.ts +0 -0
  1098. /package/dist/{cjs → types}/lifecycle/OnInitRender.d.ts.map +0 -0
  1099. /package/dist/{cjs → types}/lifecycle/OnProxyDomRender.d.ts +0 -0
  1100. /package/dist/{cjs → types}/lifecycle/OnProxyDomRender.d.ts.map +0 -0
  1101. /package/dist/{cjs → types}/lifecycle/dr-this/OnDrThisBind.d.ts +0 -0
  1102. /package/dist/{cjs → types}/lifecycle/dr-this/OnDrThisBind.d.ts.map +0 -0
  1103. /package/dist/{cjs → types}/lifecycle/dr-this/OnDrThisUnBind.d.ts +0 -0
  1104. /package/dist/{cjs → types}/lifecycle/dr-this/OnDrThisUnBind.d.ts.map +0 -0
  1105. /package/dist/{cjs → types}/lifecycle/dr-this/index.d.ts +0 -0
  1106. /package/dist/{cjs → types}/lifecycle/dr-this/index.d.ts.map +0 -0
  1107. /package/dist/{cjs → types}/messenger/DefaultMessenger.d.ts +0 -0
  1108. /package/dist/{cjs → types}/messenger/DefaultMessenger.d.ts.map +0 -0
  1109. /package/dist/{cjs → types}/messenger/Messenger.d.ts +0 -0
  1110. /package/dist/{cjs → types}/messenger/Messenger.d.ts.map +0 -0
  1111. /package/dist/{cjs → types}/messenger/index.d.ts +0 -0
  1112. /package/dist/{cjs → types}/messenger/index.d.ts.map +0 -0
  1113. /package/dist/{cjs → types}/operators/Appender.d.ts +0 -0
  1114. /package/dist/{cjs → types}/operators/Appender.d.ts.map +0 -0
  1115. /package/dist/{cjs → types}/operators/Dr.d.ts +0 -0
  1116. /package/dist/{cjs → types}/operators/Dr.d.ts.map +0 -0
  1117. /package/dist/{cjs → types}/operators/DrAppender.d.ts +0 -0
  1118. /package/dist/{cjs → types}/operators/DrAppender.d.ts.map +0 -0
  1119. /package/dist/{cjs → types}/operators/DrFor.d.ts +0 -0
  1120. /package/dist/{cjs → types}/operators/DrFor.d.ts.map +0 -0
  1121. /package/dist/{cjs → types}/operators/DrForOf.d.ts +0 -0
  1122. /package/dist/{cjs → types}/operators/DrForOf.d.ts.map +0 -0
  1123. /package/dist/{cjs → types}/operators/DrForm.d.ts +0 -0
  1124. /package/dist/{cjs → types}/operators/DrForm.d.ts.map +0 -0
  1125. /package/dist/{cjs → types}/operators/DrIf.d.ts +0 -0
  1126. /package/dist/{cjs → types}/operators/DrIf.d.ts.map +0 -0
  1127. /package/dist/{cjs → types}/operators/DrInnerHTML.d.ts +0 -0
  1128. /package/dist/{cjs → types}/operators/DrInnerHTML.d.ts.map +0 -0
  1129. /package/dist/{cjs → types}/operators/DrInnerText.d.ts +0 -0
  1130. /package/dist/{cjs → types}/operators/DrInnerText.d.ts.map +0 -0
  1131. /package/dist/{cjs → types}/operators/DrPre.d.ts +0 -0
  1132. /package/dist/{cjs → types}/operators/DrPre.d.ts.map +0 -0
  1133. /package/dist/{cjs → types}/operators/DrRepeat.d.ts +0 -0
  1134. /package/dist/{cjs → types}/operators/DrRepeat.d.ts.map +0 -0
  1135. /package/dist/{cjs → types}/operators/DrStripElement.d.ts +0 -0
  1136. /package/dist/{cjs → types}/operators/DrStripElement.d.ts.map +0 -0
  1137. /package/dist/{cjs → types}/operators/DrTargetAttr.d.ts +0 -0
  1138. /package/dist/{cjs → types}/operators/DrTargetAttr.d.ts.map +0 -0
  1139. /package/dist/{cjs → types}/operators/DrTargetElement.d.ts +0 -0
  1140. /package/dist/{cjs → types}/operators/DrTargetElementIsElement.d.ts +0 -0
  1141. /package/dist/{cjs → types}/operators/DrTargetElementIsElement.d.ts.map +0 -0
  1142. /package/dist/{cjs → types}/operators/DrThis.d.ts +0 -0
  1143. /package/dist/{cjs → types}/operators/DrThis.d.ts.map +0 -0
  1144. /package/dist/{cjs → types}/operators/DrThisProperty.d.ts +0 -0
  1145. /package/dist/{cjs → types}/operators/DrThisProperty.d.ts.map +0 -0
  1146. /package/dist/{cjs → types}/operators/OperatorExecuter.d.ts +0 -0
  1147. /package/dist/{cjs → types}/operators/OperatorExecuterAttrRequire.d.ts +0 -0
  1148. /package/dist/{cjs → types}/operators/OperatorExecuterAttrRequire.d.ts.map +0 -0
  1149. /package/dist/{cjs → types}/operators/index.d.ts +0 -0
  1150. /package/dist/{cjs → types}/operators/index.d.ts.map +0 -0
  1151. /package/dist/{cjs → types}/rawsets/AttrInitCallBack.d.ts +0 -0
  1152. /package/dist/{cjs → types}/rawsets/AttrInitCallBack.d.ts.map +0 -0
  1153. /package/dist/{cjs → types}/rawsets/Attrs.d.ts +0 -0
  1154. /package/dist/{cjs → types}/rawsets/Attrs.d.ts.map +0 -0
  1155. /package/dist/{cjs → types}/rawsets/CreatorMetaData.d.ts +0 -0
  1156. /package/dist/{cjs → types}/rawsets/CreatorMetaData.d.ts.map +0 -0
  1157. /package/dist/{cjs → types}/rawsets/DestroyOptionType.d.ts +0 -0
  1158. /package/dist/{cjs → types}/rawsets/DestroyOptionType.d.ts.map +0 -0
  1159. /package/dist/{cjs → types}/rawsets/ElementInitCallBack.d.ts +0 -0
  1160. /package/dist/{cjs → types}/rawsets/ElementInitCallBack.d.ts.map +0 -0
  1161. /package/dist/{cjs → types}/rawsets/RawSetOperatorType.d.ts +0 -0
  1162. /package/dist/{cjs → types}/rawsets/RawSetOperatorType.d.ts.map +0 -0
  1163. /package/dist/{cjs → types}/rawsets/RawSetType.d.ts +0 -0
  1164. /package/dist/{cjs → types}/rawsets/RawSetType.d.ts.map +0 -0
  1165. /package/dist/{cjs → types}/rawsets/index.d.ts +0 -0
  1166. /package/dist/{cjs → types}/rawsets/index.d.ts.map +0 -0
  1167. /package/dist/{cjs → types}/routers/HashRouter.d.ts +0 -0
  1168. /package/dist/{cjs → types}/routers/HashRouter.d.ts.map +0 -0
  1169. /package/dist/{cjs → types}/routers/PathRouter.d.ts +0 -0
  1170. /package/dist/{cjs → types}/routers/PathRouter.d.ts.map +0 -0
  1171. /package/dist/{cjs → types}/routers/index.d.ts +0 -0
  1172. /package/dist/{cjs → types}/routers/index.d.ts.map +0 -0
  1173. /package/dist/{cjs → types}/types/Types.d.ts +0 -0
  1174. /package/dist/{cjs → types}/types/Types.d.ts.map +0 -0
  1175. /package/dist/{cjs → types}/types/index.d.ts +0 -0
  1176. /package/dist/{cjs → types}/types/index.d.ts.map +0 -0
  1177. /package/dist/{cjs → types}/types/type.d.ts +0 -0
  1178. /package/dist/{cjs → types}/types/type.d.ts.map +0 -0
  1179. /package/dist/{cjs → types}/validators/AllCheckedValidatorArray.d.ts +0 -0
  1180. /package/dist/{cjs → types}/validators/AllCheckedValidatorArray.d.ts.map +0 -0
  1181. /package/dist/{cjs → types}/validators/AllUnCheckedValidatorArray.d.ts +0 -0
  1182. /package/dist/{cjs → types}/validators/AllUnCheckedValidatorArray.d.ts.map +0 -0
  1183. /package/dist/{cjs → types}/validators/CheckedValidator.d.ts +0 -0
  1184. /package/dist/{cjs → types}/validators/CheckedValidator.d.ts.map +0 -0
  1185. /package/dist/{cjs → types}/validators/CountEqualsCheckedValidatorArray.d.ts +0 -0
  1186. /package/dist/{cjs → types}/validators/CountEqualsCheckedValidatorArray.d.ts.map +0 -0
  1187. /package/dist/{cjs → types}/validators/CountEqualsUnCheckedValidatorArray.d.ts +0 -0
  1188. /package/dist/{cjs → types}/validators/CountEqualsUnCheckedValidatorArray.d.ts.map +0 -0
  1189. /package/dist/{cjs → types}/validators/CountGreaterThanCheckedValidatorArray.d.ts +0 -0
  1190. /package/dist/{cjs → types}/validators/CountGreaterThanCheckedValidatorArray.d.ts.map +0 -0
  1191. /package/dist/{cjs → types}/validators/CountGreaterThanEqualsCheckedValidatorArray.d.ts +0 -0
  1192. /package/dist/{cjs → types}/validators/CountGreaterThanEqualsCheckedValidatorArray.d.ts.map +0 -0
  1193. /package/dist/{cjs → types}/validators/CountGreaterThanEqualsUnCheckedValidatorArray.d.ts +0 -0
  1194. /package/dist/{cjs → types}/validators/CountGreaterThanEqualsUnCheckedValidatorArray.d.ts.map +0 -0
  1195. /package/dist/{cjs → types}/validators/CountGreaterThanUnCheckedValidatorArray.d.ts +0 -0
  1196. /package/dist/{cjs → types}/validators/CountGreaterThanUnCheckedValidatorArray.d.ts.map +0 -0
  1197. /package/dist/{cjs → types}/validators/CountLessThanCheckedValidatorArray.d.ts +0 -0
  1198. /package/dist/{cjs → types}/validators/CountLessThanCheckedValidatorArray.d.ts.map +0 -0
  1199. /package/dist/{cjs → types}/validators/CountLessThanEqualsCheckedValidatorArray.d.ts +0 -0
  1200. /package/dist/{cjs → types}/validators/CountLessThanEqualsCheckedValidatorArray.d.ts.map +0 -0
  1201. /package/dist/{cjs → types}/validators/CountLessThanEqualsUnCheckedValidatorArray.d.ts +0 -0
  1202. /package/dist/{cjs → types}/validators/CountLessThanEqualsUnCheckedValidatorArray.d.ts.map +0 -0
  1203. /package/dist/{cjs → types}/validators/CountLessThanUnCheckedValidatorArray.d.ts +0 -0
  1204. /package/dist/{cjs → types}/validators/CountLessThanUnCheckedValidatorArray.d.ts.map +0 -0
  1205. /package/dist/{cjs → types}/validators/CountUnCheckedValidatorArray.d.ts +0 -0
  1206. /package/dist/{cjs → types}/validators/CountUnCheckedValidatorArray.d.ts.map +0 -0
  1207. /package/dist/{cjs → types}/validators/EmptyValidator.d.ts +0 -0
  1208. /package/dist/{cjs → types}/validators/EmptyValidator.d.ts.map +0 -0
  1209. /package/dist/{cjs → types}/validators/ExcludeCheckedValidatorArray.d.ts +0 -0
  1210. /package/dist/{cjs → types}/validators/ExcludeCheckedValidatorArray.d.ts.map +0 -0
  1211. /package/dist/{cjs → types}/validators/FormValidator.d.ts +0 -0
  1212. /package/dist/{cjs → types}/validators/FormValidator.d.ts.map +0 -0
  1213. /package/dist/{cjs → types}/validators/IncludeCheckedValidatorArray.d.ts +0 -0
  1214. /package/dist/{cjs → types}/validators/IncludeCheckedValidatorArray.d.ts.map +0 -0
  1215. /package/dist/{cjs → types}/validators/MultipleValidator.d.ts +0 -0
  1216. /package/dist/{cjs → types}/validators/MultipleValidator.d.ts.map +0 -0
  1217. /package/dist/{cjs → types}/validators/NonPassValidator.d.ts +0 -0
  1218. /package/dist/{cjs → types}/validators/NonPassValidator.d.ts.map +0 -0
  1219. /package/dist/{cjs → types}/validators/NotEmptyValidator.d.ts +0 -0
  1220. /package/dist/{cjs → types}/validators/NotEmptyValidator.d.ts.map +0 -0
  1221. /package/dist/{cjs → types}/validators/NotRegExpTestValidator.d.ts +0 -0
  1222. /package/dist/{cjs → types}/validators/NotRegExpTestValidator.d.ts.map +0 -0
  1223. /package/dist/{cjs → types}/validators/PassValidator.d.ts +0 -0
  1224. /package/dist/{cjs → types}/validators/PassValidator.d.ts.map +0 -0
  1225. /package/dist/{cjs → types}/validators/RegExpTestValidator.d.ts +0 -0
  1226. /package/dist/{cjs → types}/validators/RegExpTestValidator.d.ts.map +0 -0
  1227. /package/dist/{cjs → types}/validators/RequiredValidator.d.ts +0 -0
  1228. /package/dist/{cjs → types}/validators/RequiredValidator.d.ts.map +0 -0
  1229. /package/dist/{cjs → types}/validators/UnCheckedValidator.d.ts +0 -0
  1230. /package/dist/{cjs → types}/validators/UnCheckedValidator.d.ts.map +0 -0
  1231. /package/dist/{cjs → types}/validators/ValidMultipleValidator.d.ts +0 -0
  1232. /package/dist/{cjs → types}/validators/ValidMultipleValidator.d.ts.map +0 -0
  1233. /package/dist/{cjs → types}/validators/ValidValidator.d.ts +0 -0
  1234. /package/dist/{cjs → types}/validators/ValidValidator.d.ts.map +0 -0
  1235. /package/dist/{cjs → types}/validators/ValidValidatorArray.d.ts +0 -0
  1236. /package/dist/{cjs → types}/validators/ValidValidatorArray.d.ts.map +0 -0
  1237. /package/dist/{cjs → types}/validators/Validator.d.ts +0 -0
  1238. /package/dist/{cjs → types}/validators/Validator.d.ts.map +0 -0
  1239. /package/dist/{cjs → types}/validators/ValidatorArray.d.ts +0 -0
  1240. /package/dist/{cjs → types}/validators/ValidatorArray.d.ts.map +0 -0
  1241. /package/dist/{cjs → types}/validators/ValueEqualsValidator.d.ts +0 -0
  1242. /package/dist/{cjs → types}/validators/ValueEqualsValidator.d.ts.map +0 -0
  1243. /package/dist/{cjs → types}/validators/ValueNotEqualsValidator.d.ts +0 -0
  1244. /package/dist/{cjs → types}/validators/ValueNotEqualsValidator.d.ts.map +0 -0
  1245. /package/dist/{cjs → types}/validators/index.d.ts +0 -0
  1246. /package/dist/{cjs → types}/validators/index.d.ts.map +0 -0
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../src/index.ts"],
4
- "sourcesContent": ["// export { DomRender, type DomRenderRunConfig, type CreateComponentParam } from './DomRender';\n// export { DomRenderProxy, getDomRenderConfig, getDomRenderOriginObject, getDomRenderProxy, isWrapProxyDomRenderProxy } from './DomRenderProxy';\n//\n// export * from './configs';\n// export * from './decorators';\n// export * from './events';\n// export * from './iterators';\n// export * from './lifecycle';\n// export * from './managers';\n// export * from './messenger';\n// export { Appender as AppenderArray, Dr, DrAppender, DrFor, DrForOf, DrForm, DrIf, DrInnerHTML, DrInnerText, DrPre, DrRepeat, DrStripElement, DrTargetAttr, DrTargetElement, DrTargetElementIsElement, DrThis, DrThisProperty, OperatorExecuter, OperatorExecuterAttrRequire } from './operators';\n// export * from './rawsets';\n// export * from './routers';\n// export * from './types';\n// export * from './validators';\n// export * from './components';\nexport default {}"],
5
- "mappings": ";AAgBA,IAAO,cAAQ,CAAC;",
6
- "names": []
3
+ "sources": ["../../../../node_modules/.pnpm/reflect-metadata@0.2.2/node_modules/reflect-metadata/Reflect.js", "../../src/bundle-entry.ts", "../../../core/src/bundle-entry.ts", "../../../core/src/advice/Advice.ts", "../../../core/src/array/ArrayUtils.ts", "../../../core/src/code/IOS3166_1.ts", "../../../core/src/valid/ValidUtils.ts", "../../../core/src/entity/Point2D.ts", "../../../core/src/entity/Vector.ts", "../../../core/src/entity/Point3D.ts", "../../../core/src/entity/object/obj/Obj.ts", "../../../core/src/math/MathUtil.ts", "../../../core/src/entity/SizeType.ts", "../../../core/src/entity/Rect.ts", "../../../core/src/types.ts", "../../../core/src/object/ObjectUtils.ts", "../../../core/src/convert/ConvertUtils.ts", "../../../core/src/date/DateUtils.ts", "../../../core/src/entity/Ellipse.ts", "../../../core/src/entity/Point2Ds.ts", "../../../core/src/entity/Point2DType.ts", "../../../core/src/entity/Point3Ds.ts", "../../../core/src/entity/Point3DType.ts", "../../../core/src/entity/Polygon.ts", "../../../core/src/entity/Scalar.ts", "../../../core/src/entity/WrapPolygons.ts", "../../../core/src/entity/WrapRects.ts", "../../../core/src/entity/object/grid/grid/LenGrid.ts", "../../../core/src/entity/object/grid/grid/SizeGrid.ts", "../../../core/src/entity/object/obj/RenderDrawObj.ts", "../../../core/src/entity/object/obj/RenderTransactionDrawObj.ts", "../../../core/src/string/StringUtils.ts", "../../../core/src/expression/Expression.ts", "../../../core/src/fetch/Fetcher.ts", "../../../core/src/fetch/HttpFetcher.ts", "../../../core/src/fetch/HttpJsonFetcher.ts", "../../../core/src/function/FunctionUtils.ts", "../../../core/src/promise/Promises.ts", "../../../core/src/image/ImageUtils.ts", "../../../core/src/iterators/Range.ts", "../../../core/src/logger/Logger.ts", "../../../core/src/message/Subscriber..ts", "../../../core/src/message/Observable.ts", "../../../core/src/message/Subject.ts", "../../../core/src/message/BehaviorSubject.ts", "../../../core/src/message/ReplaySubject.ts", "../../../core/src/message/internal/interval.ts", "../../../core/src/message/internal/take.ts", "../../../core/src/message/internal/lastValueFrom.ts", "../../../core/src/message/internal/firstValueFrom.ts", "../../../core/src/message/internal/timer.ts", "../../../core/src/message/internal/of.ts", "../../../core/src/message/internal/fromArray.ts", "../../../core/src/message/internal/fromPromise.ts", "../../../core/src/message/internal/empty.ts", "../../../core/src/message/internal/never.ts", "../../../core/src/message/internal/throwError.ts", "../../../core/src/message/internal/range.ts", "../../../core/src/message/internal/defer.ts", "../../../core/src/message/internal/skip.ts", "../../../core/src/message/internal/takeWhile.ts", "../../../core/src/message/internal/startWith.ts", "../../../core/src/message/internal/concat.ts", "../../../core/src/message/internal/merge.ts", "../../../core/src/message/internal/fromEvent.ts", "../../../core/src/message/internal/toPromise.ts", "../../../core/src/message/index.ts", "../../../core/src/reflect/ReflectUtils.ts", "../../../core/src/optional/Optional.ts", "../../../core/src/optional/OptionalUtils.ts", "../../../core/src/parser/css/CssParser.ts", "../../../core/src/queues/AsyncBlockingQueue.ts", "../../../core/src/random/RandomUtils.ts", "../../../core/src/runs/AutoStartRunner.ts", "../../../core/src/runs/RunnableLoader.ts", "../../../core/src/runs/StoreRunnableLoader.ts", "../../../core/src/schedule/Schedule.ts", "../../../core/src/storage/MemoryStorage.ts", "../../../core/src/storage/StorageUtils.ts", "../../../core/src/transaction/TransactionManager.ts", "../../../core/src/url/UrlUtils.ts", "../../../core-web/src/bundle-entry.ts", "../../../core/src/message/AutoCloseSubscription.ts", "../../../core-web/src/animation/AnimationFrameUtils.ts", "../../../core-web/src/clipboard/ClipBoardUtils.ts", "../../../core-web/src/convert/ConvertUtils.ts", "../../../core-web/src/cookie/CookieUtils.ts", "../../../core-web/src/document/DocumentUtils.ts", "../../../core-web/src/download/DownloadUtils.ts", "../../../core-web/src/element/CanvasUtils.ts", "../../../core-web/src/element/ElementUtils.ts", "../../../core-web/src/event/EventUtils.ts", "../../../core-web/src/location/LocationUtils.ts", "../../../core-web/src/node/NodeUtils.ts", "../../../core-web/src/script/ScriptUtils.ts", "../../../core-web/src/storage/StorageUtils.ts", "../../../core-web/src/stylecss/StyleCssUtils.ts", "../../../core-web/src/valid/ValidUtils.ts", "../../../core-web/src/window/WindowUtils.ts", "../../src/iterators/Range.ts", "../../src/events/EventManager.ts", "../../src/operators/OperatorExecuter.ts", "../../src/operators/DrPre.ts", "../../src/operators/OperatorExecuterAttrRequire.ts", "../../src/operators/Dr.ts", "../../src/operators/DrIf.ts", "../../src/types/Types.ts", "../../src/components/ComponentSet.ts", "../../src/lifecycle/dr-this/OnDrThisUnBind.ts", "../../src/lifecycle/dr-this/OnDrThisBind.ts", "../../src/operators/DrThis.ts", "../../src/validators/Validator.ts", "../../src/validators/NonPassValidator.ts", "../../src/validators/ValidatorArray.ts", "../../src/operators/DrForm.ts", "../../src/operators/DrInnerText.ts", "../../src/operators/DrInnerHTML.ts", "../../src/operators/DrFor.ts", "../../src/operators/DrForOf.ts", "../../src/operators/DrAppender.ts", "../../src/operators/DrRepeat.ts", "../../src/operators/DrTargetElement.ts", "../../src/operators/DrTargetAttr.ts", "../../src/operators/DrStripElement.ts", "../../src/rawsets/DestroyOptionType.ts", "../../src/rawsets/RawSetType.ts", "../../src/operators/DrThisProperty.ts", "../../src/rawsets/RawSetOperatorType.ts", "../../src/lifecycle/OnCreateRenderData.ts", "../../src/lifecycle/OnCreateRender.ts", "../../src/lifecycle/OnChangeAttrRender.ts", "../../src/lifecycle/OnInitRender.ts", "../../src/lifecycle/OnCreatedThisChild.ts", "../../src/lifecycle/OnDestroyRender.ts", "../../src/operators/DrTargetElementIsElement.ts", "../../src/rawsets/RawSet.ts", "../../src/decorators/DomRenderNoProxy.ts", "../../src/lifecycle/OnBeforeReturnSet.ts", "../../src/lifecycle/OnChildRenderedByProperty.ts", "../../src/lifecycle/OnProxyDomRender.ts", "../../src/lifecycle/OnRawSetRendered.ts", "../../src/DomRenderProxy.ts", "../../src/routers/Router.ts", "../../src/routers/PathRouter.ts", "../../src/routers/HashRouter.ts", "../../src/messenger/Messenger.ts", "../../src/messenger/DefaultMessenger.ts", "../../../core/src/message/operators/debounceTime.ts", "../../src/components/ComponentBase.ts", "../../src/components/router/RouterOutlet.ts", "../../src/components/ComponentRouterBase.ts", "../../src/components/a/A.ts", "../../src/components/appender/Appender.ts", "../../src/components/checkbox/CheckBox.ts", "../../src/components/choose/Choose.ts", "../../src/components/details/Details.ts", "../../src/components/forOf/ForOf.ts", "../../src/components/if/If.ts", "../../../core/src/message/operators/map.ts", "../../../core/src/message/operators/distinctUntilChanged.ts", "../../src/components/input/Input.ts", "../../src/components/promise/PromiseSwitch.ts", "../../src/components/radio/Radio.ts", "../../src/components/router/Route.ts", "../../src/components/select/Select.ts", "../../src/components/this/This.ts", "../../src/components/timer/Timer.ts", "../../src/components/index.ts", "../../src/DomRender.ts", "../../src/lifecycle/OnCreateRendered.ts", "../../src/operators/Appender.ts", "../../src/validators/AllCheckedValidatorArray.ts", "../../src/validators/AllUnCheckedValidatorArray.ts", "../../src/validators/CheckedValidator.ts", "../../src/validators/CountEqualsCheckedValidatorArray.ts", "../../src/validators/CountEqualsUnCheckedValidatorArray.ts", "../../src/validators/CountGreaterThanCheckedValidatorArray.ts", "../../src/validators/CountGreaterThanEqualsCheckedValidatorArray.ts", "../../src/validators/CountGreaterThanEqualsUnCheckedValidatorArray.ts", "../../src/validators/CountGreaterThanUnCheckedValidatorArray.ts", "../../src/validators/CountLessThanCheckedValidatorArray.ts", "../../src/validators/CountLessThanEqualsCheckedValidatorArray.ts", "../../src/validators/CountLessThanEqualsUnCheckedValidatorArray.ts", "../../src/validators/CountLessThanUnCheckedValidatorArray.ts", "../../src/validators/CountUnCheckedValidatorArray.ts", "../../src/validators/EmptyValidator.ts", "../../src/validators/ExcludeCheckedValidatorArray.ts", "../../src/validators/FormValidator.ts", "../../src/validators/IncludeCheckedValidatorArray.ts", "../../src/validators/MultipleValidator.ts", "../../src/validators/NotEmptyValidator.ts", "../../src/validators/NotRegExpTestValidator.ts", "../../src/validators/PassValidator.ts", "../../src/validators/RegExpTestValidator.ts", "../../src/validators/RequiredValidator.ts", "../../src/validators/UnCheckedValidator.ts", "../../src/validators/ValidMultipleValidator.ts", "../../src/validators/ValidValidator.ts", "../../src/validators/ValidValidatorArray.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 * as Core from '@dooboostore/core/bundle-entry';\nexport * as CoreWeb from '@dooboostore/core-web/bundle-entry';\n// export { DomRender, type DomRenderRunConfig, type CreateComponentParam } from './DomRender';\n// export { DomRenderProxy, getDomRenderConfig, getDomRenderOriginObject, getDomRenderProxy, isWrapProxyDomRenderProxy } from './DomRenderProxy';\n\nexport * from './DomRender';\nexport * from './DomRenderProxy';\nexport * from './configs';\nexport * from './decorators';\nexport * from './events';\nexport * from './iterators';\nexport * from './lifecycle';\nexport * from './messenger';\nexport * from './operators';\nexport * from './rawsets';\nexport * from './routers';\nexport * from './types';\nexport * from './validators';\nexport { drComponent , If, This, Appender as AppenderComponent, PromiseSwitch, Choose, CheckBox, Radio, Select, Timer, Details, Input, Route, RouterOutlet, A } from './components';", "export * from './advice';\nexport * from './array';\nexport * from './code';\nexport * from './convert';\nexport * from './date';\nexport * from './entity';\nexport * from './expression';\nexport * from './fetch';\nexport * from './function';\nexport * from './image';\nexport * from './iterators';\nexport * from './logger';\nexport * from './math';\nexport * from './message';\nexport * from './object';\nexport * from './reflect';\n// export * from './open-api/open-api';\nexport * from './optional';\nexport * from './parser/css/CssParser';\nexport * from './promise';\nexport * from './queues';\nexport * from './random';\nexport * from './reflect/ReflectUtils';\nexport * from './runs';\nexport * from './schedule';\nexport * from './storage';\nexport * from './string';\nexport * from './transaction';\nexport * from './url';\n// export * from './types';\nexport * from './valid';", "export abstract class Advice<T = any, R = any, C = any> {\n abstract exception(e: T, context?: C): Promise<R>;\n abstract isSupport(e: T, context?: C): Promise<boolean>;\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}", "import { Code } from './Code';\n\nexport enum IOS3166_1_Code {\nGHA = 'GHA',\nGAB = 'GAB',\nGUY = 'GUY',\nGMB = 'GMB',\nGGY = 'GGY',\nGLP = 'GLP',\nGTM = 'GTM',\nGUM = 'GUM',\nGRD = 'GRD',\nGRC = 'GRC',\nGRL = 'GRL',\nGIN = 'GIN',\nGNB = 'GNB',\nNAM = 'NAM',\nNRU = 'NRU',\nNGA = 'NGA',\nATA = 'ATA',\nSSD = 'SSD',\nZAF = 'ZAF',\nNLD = 'NLD',\nNPL = 'NPL',\nNOR = 'NOR',\nNFK = 'NFK',\nNCL = 'NCL',\nNZL = 'NZL',\nNIU = 'NIU',\nNER = 'NER',\nNIC = 'NIC',\nKOR = 'KOR',\nDNK = 'DNK',\nDOM = 'DOM',\nDMA = 'DMA',\nDEU = 'DEU',\nTLS = 'TLS',\nLAO = 'LAO',\nLBR = 'LBR',\nLVA = 'LVA',\nRUS = 'RUS',\nLBN = 'LBN',\nLSO = 'LSO',\nREU = 'REU',\nROU = 'ROU',\nLUX = 'LUX',\nRWA = 'RWA',\nLBY = 'LBY',\nLTU = 'LTU',\nLIE = 'LIE',\nMDG = 'MDG',\nMTQ = 'MTQ',\nMHL = 'MHL',\nMYT = 'MYT',\nMAC = 'MAC',\nMKD = 'MKD',\nMWI = 'MWI',\nMYS = 'MYS',\nMLI = 'MLI',\nIMN = 'IMN',\nMEX = 'MEX',\nMCO = 'MCO',\nMAR = 'MAR',\nMUS = 'MUS',\nMRT = 'MRT',\nMOZ = 'MOZ',\nMNE = 'MNE',\nMSR = 'MSR',\nMDA = 'MDA',\nMDV = 'MDV',\nMLT = 'MLT',\nMNG = 'MNG',\nUSA = 'USA',\nUMI = 'UMI',\nVIR = 'VIR',\nMMR = 'MMR',\nFSM = 'FSM',\nVUT = 'VUT',\nBHR = 'BHR',\nBRB = 'BRB',\nVAT = 'VAT',\nBHS = 'BHS',\nBGD = 'BGD',\nBMU = 'BMU',\nBEN = 'BEN',\nVEN = 'VEN',\nVNM = 'VNM',\nBEL = 'BEL',\nBLR = 'BLR',\nBLZ = 'BLZ',\nBES = 'BES',\nBIH = 'BIH',\nBWA = 'BWA',\nBOL = 'BOL',\nBDI = 'BDI',\nBFA = 'BFA',\nBVT = 'BVT',\nBTN = 'BTN',\nMNP = 'MNP',\nBGR = 'BGR',\nBRA = 'BRA',\nBRN = 'BRN',\nWSM = 'WSM',\nSAU = 'SAU',\nSGS = 'SGS',\nSMR = 'SMR',\nSTP = 'STP',\nMAF = 'MAF',\nBLM = 'BLM',\nSPM = 'SPM',\nESH = 'ESH',\nSEN = 'SEN',\nSRB = 'SRB',\nSYC = 'SYC',\nLCA = 'LCA',\nVCT = 'VCT',\nKNA = 'KNA',\nSHN = 'SHN',\nSOM = 'SOM',\nSLB = 'SLB',\nSDN = 'SDN',\nSUR = 'SUR',\nLKA = 'LKA',\nSJM = 'SJM',\nSWE = 'SWE',\nCHE = 'CHE',\nESP = 'ESP',\nSVK = 'SVK',\nSVN = 'SVN',\nSYR = 'SYR',\nSLE = 'SLE',\nSXM = 'SXM',\nSGP = 'SGP',\nARE = 'ARE',\nABW = 'ABW',\nARM = 'ARM',\nARG = 'ARG',\nASM = 'ASM',\nISL = 'ISL',\nHTI = 'HTI',\nIRL = 'IRL',\nAZE = 'AZE',\nAFG = 'AFG',\nAND = 'AND',\nALB = 'ALB',\nDZA = 'DZA',\nAGO = 'AGO',\nATG = 'ATG',\nAIA = 'AIA',\nERI = 'ERI',\nSWZ = 'SWZ',\nEST = 'EST',\nECU = 'ECU',\nETH = 'ETH',\nSLV = 'SLV',\nGBR = 'GBR',\nVGB = 'VGB',\nIOT = 'IOT',\nYEM = 'YEM',\nOMN = 'OMN',\nAUS = 'AUS',\nAUT = 'AUT',\nHND = 'HND',\nALA = 'ALA',\nJOR = 'JOR',\nUGA = 'UGA',\nURY = 'URY',\nUZB = 'UZB',\nUKR = 'UKR',\nWLF = 'WLF',\nIRQ = 'IRQ',\nIRN = 'IRN',\nISR = 'ISR',\nEGY = 'EGY',\nITA = 'ITA',\nIND = 'IND',\nIDN = 'IDN',\nJPN = 'JPN',\nJAM = 'JAM',\nZMB = 'ZMB',\nJEY = 'JEY',\nGNQ = 'GNQ',\nPRK = 'PRK',\nGEO = 'GEO',\nCHN = 'CHN',\nCAF = 'CAF',\nDJI = 'DJI',\nGIB = 'GIB',\nZWE = 'ZWE',\nTCD = 'TCD',\nCZE = 'CZE',\nCHL = 'CHL',\nCMR = 'CMR',\nCPV = 'CPV',\nKAZ = 'KAZ',\nQAT = 'QAT',\nKHM = 'KHM',\nCAN = 'CAN',\nKEN = 'KEN',\nCYM = 'CYM',\nCOM = 'COM',\nCRI = 'CRI',\nCCK = 'CCK',\nCIV = 'CIV',\nCOL = 'COL',\nCOG = 'COG',\nCOD = 'COD',\nCUB = 'CUB',\nKWT = 'KWT',\nCOK = 'COK',\nCUW = 'CUW',\nHRV = 'HRV',\nCXR = 'CXR',\nKGZ = 'KGZ',\nKIR = 'KIR',\nCYP = 'CYP',\nTWN = 'TWN',\nTJK = 'TJK',\nTZA = 'TZA',\nTHA = 'THA',\nTCA = 'TCA',\nTUR = 'TUR',\nTGO = 'TGO',\nTKL = 'TKL',\nTON = 'TON',\nTKM = 'TKM',\nTUV = 'TUV',\nTUN = 'TUN',\nTTO = 'TTO',\nPAN = 'PAN',\nPRY = 'PRY',\nPAK = 'PAK',\nPNG = 'PNG',\nPLW = 'PLW',\nPSE = 'PSE',\nFRO = 'FRO',\nPER = 'PER',\nPRT = 'PRT',\nFLK = 'FLK',\nPOL = 'POL',\nPRI = 'PRI',\nFRA = 'FRA',\nGUF = 'GUF',\nATF = 'ATF',\nPYF = 'PYF',\nFJI = 'FJI',\nFIN = 'FIN',\nPHL = 'PHL',\nPCN = 'PCN',\nHMD = 'HMD',\nHUN = 'HUN',\nHKG = 'HKG',\n}\n\n\nexport type IOS3166_1_CodeDescriptionDataType = { alpha3: string, alpha2: string, emoji: string, img: string, num: number, en: string, ko: string };\nexport const IOS3166_1_CodeDescription: Record<IOS3166_1_Code, Code<IOS3166_1_CodeDescriptionDataType>> = {\n [IOS3166_1_Code.GHA]: { description: '', data: {emoji:'\uD83C\uDDEC\uD83C\uDDED', alpha2: 'GH', alpha3:'GHA', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/1/19/Flag_of_Ghana.svg/22px-Flag_of_Ghana.svg.png',ko:'\uAC00\uB098', num:288,en:'Ghana'} },\n [IOS3166_1_Code.GAB]: { description: '', data: {emoji:'\uD83C\uDDEC\uD83C\uDDE6', alpha2: 'GA', alpha3:'GAB', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/0/04/Flag_of_Gabon.svg/40px-Flag_of_Gabon.svg.png',ko:'\uAC00\uBD09', num:266,en:'Gabon'} },\n [IOS3166_1_Code.GUY]: { description: '', data: {emoji:'\uD83C\uDDEC\uD83C\uDDFE', alpha2: 'GY', alpha3:'GUY', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/9/99/Flag_of_Guyana.svg/40px-Flag_of_Guyana.svg.png',ko:'\uAC00\uC774\uC544\uB098', num:328,en:'Guyana'} },\n [IOS3166_1_Code.GMB]: { description: '', data: {emoji:'\uD83C\uDDEC\uD83C\uDDF2', alpha2: 'GM', alpha3:'GMB', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/7/77/Flag_of_The_Gambia.svg/40px-Flag_of_The_Gambia.svg.png',ko:'\uAC10\uBE44\uC544', num:270,en:'Gambia'} },\n [IOS3166_1_Code.GGY]: { description: '', data: {emoji:'\uD83C\uDDEC\uD83C\uDDEC', alpha2: 'GG', alpha3:'GGY', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/f/fa/Flag_of_Guernsey.svg/40px-Flag_of_Guernsey.svg.png',ko:'\uAC74\uC9C0\uC12C', num:831,en:'Guernsey Island'} },\n [IOS3166_1_Code.GLP]: { description: '', data: {emoji:'\uD83C\uDDEC\uD83C\uDDF5', alpha2: 'GP', alpha3:'GLP', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/b/b5/Flag_of_France_%282020%E2%80%93present%29.svg/22px-Flag_of_France_%282020%E2%80%93present%29.svg.png',ko:'\uACFC\uB4E4\uB8E8\uD504', num:312,en:'Guadeloupe'} },\n [IOS3166_1_Code.GTM]: { description: '', data: {emoji:'\uD83C\uDDEC\uD83C\uDDF9', alpha2: 'GT', alpha3:'GTM', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/e/ec/Flag_of_Guatemala.svg/40px-Flag_of_Guatemala.svg.png',ko:'\uACFC\uD14C\uB9D0\uB77C', num:320,en:'Guatemala'} },\n [IOS3166_1_Code.GUM]: { description: '', data: {emoji:'\uD83C\uDDEC\uD83C\uDDFA', alpha2: 'GU', alpha3:'GUM', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/0/07/Flag_of_Guam.svg/40px-Flag_of_Guam.svg.png',ko:'\uAD0C', num:316,en:'Guam'} },\n [IOS3166_1_Code.GRD]: { description: '', data: {emoji:'\uD83C\uDDEC\uD83C\uDDE9', alpha2: 'GD', alpha3:'GRD', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/b/bc/Flag_of_Grenada.svg/22px-Flag_of_Grenada.svg.png',ko:'\uADF8\uB808\uB098\uB2E4', num:308,en:'Grenada'} },\n [IOS3166_1_Code.GRC]: { description: '', data: {emoji:'\uD83C\uDDEC\uD83C\uDDF7', alpha2: 'GR', alpha3:'GRC', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/5/5c/Flag_of_Greece.svg/40px-Flag_of_Greece.svg.png',ko:'\uADF8\uB9AC\uC2A4', num:300,en:'Greece'} },\n [IOS3166_1_Code.GRL]: { description: '', data: {emoji:'\uD83C\uDDEC\uD83C\uDDF1', alpha2: 'GL', alpha3:'GRL', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/0/09/Flag_of_Greenland.svg/22px-Flag_of_Greenland.svg.png',ko:'\uADF8\uB9B0\uB780\uB4DC', num:304,en:'Greenland'} },\n [IOS3166_1_Code.GIN]: { description: '', data: {emoji:'\uD83C\uDDEC\uD83C\uDDF3', alpha2: 'GN', alpha3:'GIN', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/e/ed/Flag_of_Guinea.svg/22px-Flag_of_Guinea.svg.png',ko:'\uAE30\uB2C8', num:324,en:'Guineas'} },\n [IOS3166_1_Code.GNB]: { description: '', data: {emoji:'\uD83C\uDDEC\uD83C\uDDFC', alpha2: 'GW', alpha3:'GNB', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/0/01/Flag_of_Guinea-Bissau.svg/22px-Flag_of_Guinea-Bissau.svg.png',ko:'\uAE30\uB2C8\uBE44\uC0AC\uC6B0', num:624,en:'Guinea-Bissau'} },\n [IOS3166_1_Code.NAM]: { description: '', data: {emoji:'\uD83C\uDDF3\uD83C\uDDE6', alpha2: 'NA', alpha3:'NAM', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/0/00/Flag_of_Namibia.svg/22px-Flag_of_Namibia.svg.png',ko:'\uB098\uBBF8\uBE44\uC544', num:516,en:'Namibia'} },\n [IOS3166_1_Code.NRU]: { description: '', data: {emoji:'\uD83C\uDDF3\uD83C\uDDF7', alpha2: 'NR', alpha3:'NRU', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/3/30/Flag_of_Nauru.svg/40px-Flag_of_Nauru.svg.png',ko:'\uB098\uC6B0\uB8E8', num:520,en:'Nauru'} },\n [IOS3166_1_Code.NGA]: { description: '', data: {emoji:'\uD83C\uDDF3\uD83C\uDDEC', alpha2: 'NG', alpha3:'NGA', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/7/79/Flag_of_Nigeria.svg/22px-Flag_of_Nigeria.svg.png',ko:'\uB098\uC774\uC9C0\uB9AC\uC544', num:566,en:'Nigeria'} },\n [IOS3166_1_Code.ATA]: { description: '', data: {emoji:'\uD83C\uDDE6\uD83C\uDDF6', alpha2: 'AQ', alpha3:'ATA', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/b/bb/Proposed_flag_of_Antarctica_%28Graham_Bartram%29.svg/40px-Proposed_flag_of_Antarctica_%28Graham_Bartram%29.svg.png',ko:'\uB0A8\uADF9', num:10,en:'Antarctica'} },\n [IOS3166_1_Code.SSD]: { description: '', data: {emoji:'\uD83C\uDDF8\uD83C\uDDF8', alpha2: 'SS', alpha3:'SSD', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/7/7a/Flag_of_South_Sudan.svg/40px-Flag_of_South_Sudan.svg.png',ko:'\uB0A8\uC218\uB2E8', num:728,en:'South Sudan'} },\n [IOS3166_1_Code.ZAF]: { description: '', data: {emoji:'\uD83C\uDDFF\uD83C\uDDE6', alpha2: 'ZA', alpha3:'ZAF', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/a/af/Flag_of_South_Africa.svg/40px-Flag_of_South_Africa.svg.png',ko:'\uB0A8\uC544\uD504\uB9AC\uCE74 \uACF5\uD654\uAD6D', num:710,en:'South Africa'} },\n [IOS3166_1_Code.NLD]: { description: '', data: {emoji:'\uD83C\uDDF3\uD83C\uDDF1', alpha2: 'NL', alpha3:'NLD', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/2/20/Flag_of_the_Netherlands.svg/22px-Flag_of_the_Netherlands.svg.png',ko:'\uB124\uB35C\uB780\uB4DC', num:528,en:'Netherlands'} },\n [IOS3166_1_Code.NPL]: { description: '', data: {emoji:'\uD83C\uDDF3\uD83C\uDDF5', alpha2: 'NP', alpha3:'NPL', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/9/9b/Flag_of_Nepal.svg/20px-Flag_of_Nepal.svg.png',ko:'\uB124\uD314', num:524,en:'Nepal'} },\n [IOS3166_1_Code.NOR]: { description: '', data: {emoji:'\uD83C\uDDF3\uD83C\uDDF4', alpha2: 'NO', alpha3:'NOR', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/d/d9/Flag_of_Norway.svg/40px-Flag_of_Norway.svg.png',ko:'\uB178\uB974\uC6E8\uC774', num:578,en:'Norway'} },\n [IOS3166_1_Code.NFK]: { description: '', data: {emoji:'\uD83C\uDDF3\uD83C\uDDEB', alpha2: 'NF', alpha3:'NFK', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/4/48/Flag_of_Norfolk_Island.svg/22px-Flag_of_Norfolk_Island.svg.png',ko:'\uB178\uD37D\uC12C', num:574,en:'Norfolk Island'} },\n [IOS3166_1_Code.NCL]: { description: '', data: {emoji:'\uD83C\uDDF3\uD83C\uDDE8', alpha2: 'NC', alpha3:'NCL', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/2/26/Flags_of_New_Caledonia.svg/60px-Flags_of_New_Caledonia.svg.png',ko:'\uB204\uBCA8\uCE7C\uB808\uB3C4\uB2C8', num:540,en:'Nouvel Caledoni'} },\n [IOS3166_1_Code.NZL]: { description: '', data: {emoji:'\uD83C\uDDF3\uD83C\uDDFF', alpha2: 'NZ', alpha3:'NZL', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/3/3e/Flag_of_New_Zealand.svg/40px-Flag_of_New_Zealand.svg.png',ko:'\uB274\uC9C8\uB79C\uB4DC', num:554,en:'New Zealand'} },\n [IOS3166_1_Code.NIU]: { description: '', data: {emoji:'\uD83C\uDDF3\uD83C\uDDFA', alpha2: 'NU', alpha3:'NIU', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/0/01/Flag_of_Niue.svg/22px-Flag_of_Niue.svg.png',ko:'\uB2C8\uC6B0\uC5D0', num:570,en:'in the near future'} },\n [IOS3166_1_Code.NER]: { description: '', data: {emoji:'\uD83C\uDDF3\uD83C\uDDEA', alpha2: 'NE', alpha3:'NER', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/f/f4/Flag_of_Niger.svg/40px-Flag_of_Niger.svg.png',ko:'\uB2C8\uC81C\uB974', num:562,en:'Niger'} },\n [IOS3166_1_Code.NIC]: { description: '', data: {emoji:'\uD83C\uDDF3\uD83C\uDDEE', alpha2: 'NI', alpha3:'NIC', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/1/19/Flag_of_Nicaragua.svg/40px-Flag_of_Nicaragua.svg.png',ko:'\uB2C8\uCE74\uB77C\uACFC', num:558,en:'Nicaragua'} },\n [IOS3166_1_Code.KOR]: { description: '', data: {emoji:'\uD83C\uDDF0\uD83C\uDDF7', alpha2: 'KR', alpha3:'KOR', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/0/09/Flag_of_South_Korea.svg/40px-Flag_of_South_Korea.svg.png',ko:'\uB300\uD55C\uBBFC\uAD6D', num:410,en:'Republic of Korea'} },\n [IOS3166_1_Code.DNK]: { description: '', data: {emoji:'\uD83C\uDDE9\uD83C\uDDF0', alpha2: 'DK', alpha3:'DNK', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/9/9c/Flag_of_Denmark.svg/22px-Flag_of_Denmark.svg.png',ko:'\uB374\uB9C8\uD06C', num:208,en:'Denmark'} },\n [IOS3166_1_Code.DOM]: { description: '', data: {emoji:'\uD83C\uDDE9\uD83C\uDDF4', alpha2: 'DO', alpha3:'DOM', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/9/9f/Flag_of_the_Dominican_Republic.svg/40px-Flag_of_the_Dominican_Republic.svg.png',ko:'\uB3C4\uBBF8\uB2C8\uCE74 \uACF5\uD654\uAD6D', num:214,en:'Dominican Republic'} },\n [IOS3166_1_Code.DMA]: { description: '', data: {emoji:'\uD83C\uDDE9\uD83C\uDDF2', alpha2: 'DM', alpha3:'DMA', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/c/c4/Flag_of_Dominica.svg/22px-Flag_of_Dominica.svg.png',ko:'\uB3C4\uBBF8\uB2C8\uCE74 \uC5F0\uBC29', num:212,en:'Union of Dominicans'} },\n [IOS3166_1_Code.DEU]: { description: '', data: {emoji:'\uD83C\uDDE9\uD83C\uDDEA', alpha2: 'DE', alpha3:'DEU', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/b/ba/Flag_of_Germany.svg/22px-Flag_of_Germany.svg.png',ko:'\uB3C5\uC77C', num:276,en:'Germany'} },\n [IOS3166_1_Code.TLS]: { description: '', data: {emoji:'\uD83C\uDDF9\uD83C\uDDF1', alpha2: 'TL', alpha3:'TLS', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/2/26/Flag_of_East_Timor.svg/40px-Flag_of_East_Timor.svg.png',ko:'\uB3D9\uD2F0\uBAA8\uB974', num:626,en:'East Timor'} },\n [IOS3166_1_Code.LAO]: { description: '', data: {emoji:'\uD83C\uDDF1\uD83C\uDDE6', alpha2: 'LA', alpha3:'LAO', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/5/56/Flag_of_Laos.svg/40px-Flag_of_Laos.svg.png',ko:'\uB77C\uC624\uC2A4', num:418,en:'Laos'} },\n [IOS3166_1_Code.LBR]: { description: '', data: {emoji:'\uD83C\uDDF1\uD83C\uDDF7', alpha2: 'LR', alpha3:'LBR', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/b/b8/Flag_of_Liberia.svg/40px-Flag_of_Liberia.svg.png',ko:'\uB77C\uC774\uBCA0\uB9AC\uC544', num:430,en:'Liberia'} },\n [IOS3166_1_Code.LVA]: { description: '', data: {emoji:'\uD83C\uDDF1\uD83C\uDDFB', alpha2: 'LV', alpha3:'LVA', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/8/84/Flag_of_Latvia.svg/40px-Flag_of_Latvia.svg.png',ko:'\uB77C\uD2B8\uBE44\uC544', num:428,en:'Latvia'} },\n [IOS3166_1_Code.RUS]: { description: '', data: {emoji:'\uD83C\uDDF7\uD83C\uDDFA', alpha2: 'RU', alpha3:'RUS', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/f/f3/Flag_of_Russia.svg/40px-Flag_of_Russia.svg.png',ko:'\uB7EC\uC2DC\uC544', num:643,en:'Russia'} },\n [IOS3166_1_Code.LBN]: { description: '', data: {emoji:'\uD83C\uDDF1\uD83C\uDDE7', alpha2: 'LB', alpha3:'LBN', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/5/59/Flag_of_Lebanon.svg/40px-Flag_of_Lebanon.svg.png',ko:'\uB808\uBC14\uB17C', num:422,en:'Lebanon'} },\n [IOS3166_1_Code.LSO]: { description: '', data: {emoji:'\uD83C\uDDF1\uD83C\uDDF8', alpha2: 'LS', alpha3:'LSO', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/4/4a/Flag_of_Lesotho.svg/40px-Flag_of_Lesotho.svg.png',ko:'\uB808\uC18C\uD1A0', num:426,en:'Lesotho'} },\n [IOS3166_1_Code.REU]: { description: '', data: {emoji:'\uD83C\uDDF7\uD83C\uDDEA', alpha2: 'RE', alpha3:'REU', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/b/b5/Flag_of_France_%282020%E2%80%93present%29.svg/22px-Flag_of_France_%282020%E2%80%93present%29.svg.png',ko:'\uB808\uC704\uB2C8\uC639', num:638,en:'R\u00E9union'} },\n [IOS3166_1_Code.ROU]: { description: '', data: {emoji:'\uD83C\uDDF7\uD83C\uDDF4', alpha2: 'RO', alpha3:'ROU', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/7/73/Flag_of_Romania.svg/22px-Flag_of_Romania.svg.png',ko:'\uB8E8\uB9C8\uB2C8\uC544', num:642,en:'Romania'} },\n [IOS3166_1_Code.LUX]: { description: '', data: {emoji:'\uD83C\uDDF1\uD83C\uDDFA', alpha2: 'LU', alpha3:'LUX', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/d/da/Flag_of_Luxembourg.svg/40px-Flag_of_Luxembourg.svg.png',ko:'\uB8E9\uC148\uBD80\uB974\uD06C', num:442,en:'Luxembourg'} },\n [IOS3166_1_Code.RWA]: { description: '', data: {emoji:'\uD83C\uDDF7\uD83C\uDDFC', alpha2: 'RW', alpha3:'RWA', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/1/17/Flag_of_Rwanda.svg/22px-Flag_of_Rwanda.svg.png',ko:'\uB974\uC644\uB2E4', num:646,en:'Rwanda'} },\n [IOS3166_1_Code.LBY]: { description: '', data: {emoji:'\uD83C\uDDF1\uD83C\uDDFE', alpha2: 'LY', alpha3:'LBY', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/0/05/Flag_of_Libya.svg/40px-Flag_of_Libya.svg.png',ko:'\uB9AC\uBE44\uC544', num:434,en:'Libya'} },\n [IOS3166_1_Code.LTU]: { description: '', data: {emoji:'\uD83C\uDDF1\uD83C\uDDF9', alpha2: 'LT', alpha3:'LTU', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/1/11/Flag_of_Lithuania.svg/40px-Flag_of_Lithuania.svg.png',ko:'\uB9AC\uD22C\uC544\uB2C8\uC544', num:440,en:'Lithuania'} },\n [IOS3166_1_Code.LIE]: { description: '', data: {emoji:'\uD83C\uDDF1\uD83C\uDDEE', alpha2: 'LI', alpha3:'LIE', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/4/47/Flag_of_Liechtenstein.svg/40px-Flag_of_Liechtenstein.svg.png',ko:'\uB9AC\uD788\uD150\uC288\uD0C0\uC778', num:438,en:'Liechtenstein'} },\n [IOS3166_1_Code.MDG]: { description: '', data: {emoji:'\uD83C\uDDF2\uD83C\uDDEC', alpha2: 'MG', alpha3:'MDG', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/b/bc/Flag_of_Madagascar.svg/40px-Flag_of_Madagascar.svg.png',ko:'\uB9C8\uB2E4\uAC00\uC2A4\uCE74\uB974', num:450,en:'Madagascar.'} },\n [IOS3166_1_Code.MTQ]: { description: '', data: {emoji:'\uD83C\uDDF2\uD83C\uDDF6', alpha2: 'MQ', alpha3:'MTQ', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/2/27/Flag-of-Martinique.svg/22px-Flag-of-Martinique.svg.png',ko:'\uB9C8\uB974\uD2F0\uB2C8\uD06C', num:474,en:'Martinique'} },\n [IOS3166_1_Code.MHL]: { description: '', data: {emoji:'\uD83C\uDDF2\uD83C\uDDED', alpha2: 'MH', alpha3:'MHL', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/2/2e/Flag_of_the_Marshall_Islands.svg/40px-Flag_of_the_Marshall_Islands.svg.png',ko:'\uB9C8\uC15C \uC81C\uB3C4', num:584,en:'Marshall Islands'} },\n [IOS3166_1_Code.MYT]: { description: '', data: {emoji:'\uD83C\uDDFE\uD83C\uDDF9', alpha2: 'YT', alpha3:'MYT', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/b/b5/Flag_of_France_%282020%E2%80%93present%29.svg/22px-Flag_of_France_%282020%E2%80%93present%29.svg.png',ko:'\uB9C8\uC694\uD2B8', num:175,en:'Mayotte'} },\n [IOS3166_1_Code.MAC]: { description: '', data: {emoji:'\uD83C\uDDF2\uD83C\uDDF4', alpha2: 'MO', alpha3:'MAC', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/6/63/Flag_of_Macau.svg/40px-Flag_of_Macau.svg.png',ko:'\uB9C8\uCE74\uC624', num:446,en:'Macau'} },\n [IOS3166_1_Code.MKD]: { description: '', data: {emoji:'\uD83C\uDDF2\uD83C\uDDF0', alpha2: 'MK', alpha3:'MKD', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/7/79/Flag_of_North_Macedonia.svg/40px-Flag_of_North_Macedonia.svg.png',ko:'\uBD81\uB9C8\uCF00\uB3C4\uB2C8\uC544', num:807,en:'North Macedonia'} },\n [IOS3166_1_Code.MWI]: { description: '', data: {emoji:'\uD83C\uDDF2\uD83C\uDDFC', alpha2: 'MW', alpha3:'MWI', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/d/d1/Flag_of_Malawi.svg/22px-Flag_of_Malawi.svg.png',ko:'\uB9D0\uB77C\uC704', num:454,en:'Malawi'} },\n [IOS3166_1_Code.MYS]: { description: '', data: {emoji:'\uD83C\uDDF2\uD83C\uDDFE', alpha2: 'MY', alpha3:'MYS', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/6/66/Flag_of_Malaysia.svg/22px-Flag_of_Malaysia.svg.png',ko:'\uB9D0\uB808\uC774\uC2DC\uC544', num:458,en:'Malaysia'} },\n [IOS3166_1_Code.MLI]: { description: '', data: {emoji:'\uD83C\uDDF2\uD83C\uDDF1', alpha2: 'ML', alpha3:'MLI', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/9/92/Flag_of_Mali.svg/40px-Flag_of_Mali.svg.png',ko:'\uB9D0\uB9AC', num:466,en:'Marley'} },\n [IOS3166_1_Code.IMN]: { description: '', data: {emoji:'\uD83C\uDDEE\uD83C\uDDF2', alpha2: 'IM', alpha3:'IMN', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/5/5d/Flag_of_the_Isle_of_Mann.svg/40px-Flag_of_the_Isle_of_Mann.svg.png',ko:'\uB9E8\uC12C', num:833,en:'Isle of Man'} },\n [IOS3166_1_Code.MEX]: { description: '', data: {emoji:'\uD83C\uDDF2\uD83C\uDDFD', alpha2: 'MX', alpha3:'MEX', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/f/fc/Flag_of_Mexico.svg/40px-Flag_of_Mexico.svg.png',ko:'\uBA55\uC2DC\uCF54', num:484,en:'Mexico'} },\n [IOS3166_1_Code.MCO]: { description: '', data: {emoji:'\uD83C\uDDF2\uD83C\uDDE8', alpha2: 'MC', alpha3:'MCO', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/e/ea/Flag_of_Monaco.svg/22px-Flag_of_Monaco.svg.png',ko:'\uBAA8\uB098\uCF54', num:492,en:'Monaco'} },\n [IOS3166_1_Code.MAR]: { description: '', data: {emoji:'\uD83C\uDDF2\uD83C\uDDE6', alpha2: 'MA', alpha3:'MAR', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/2/2c/Flag_of_Morocco.svg/40px-Flag_of_Morocco.svg.png',ko:'\uBAA8\uB85C\uCF54', num:504,en:'Morocco, the Republic of Korea'} },\n [IOS3166_1_Code.MUS]: { description: '', data: {emoji:'\uD83C\uDDF2\uD83C\uDDFA', alpha2: 'MU', alpha3:'MUS', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/7/77/Flag_of_Mauritius.svg/40px-Flag_of_Mauritius.svg.png',ko:'\uBAA8\uB9AC\uC154\uC2A4', num:480,en:'Mauritius'} },\n [IOS3166_1_Code.MRT]: { description: '', data: {emoji:'\uD83C\uDDF2\uD83C\uDDF7', alpha2: 'MR', alpha3:'MRT', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/4/43/Flag_of_Mauritania.svg/40px-Flag_of_Mauritania.svg.png',ko:'\uBAA8\uB9AC\uD0C0\uB2C8', num:478,en:'Mauritania'} },\n [IOS3166_1_Code.MOZ]: { description: '', data: {emoji:'\uD83C\uDDF2\uD83C\uDDFF', alpha2: 'MZ', alpha3:'MOZ', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/d/d0/Flag_of_Mozambique.svg/40px-Flag_of_Mozambique.svg.png',ko:'\uBAA8\uC7A0\uBE44\uD06C', num:508,en:'Mozambique'} },\n [IOS3166_1_Code.MNE]: { description: '', data: {emoji:'\uD83C\uDDF2\uD83C\uDDEA', alpha2: 'ME', alpha3:'MNE', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/6/64/Flag_of_Montenegro.svg/40px-Flag_of_Montenegro.svg.png',ko:'\uBAAC\uD14C\uB124\uADF8\uB85C', num:499,en:'Montenegro'} },\n [IOS3166_1_Code.MSR]: { description: '', data: {emoji:'\uD83C\uDDF2\uD83C\uDDF8', alpha2: 'MS', alpha3:'MSR', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/d/d0/Flag_of_Montserrat.svg/22px-Flag_of_Montserrat.svg.png',ko:'\uBAAC\uD2B8\uC138\uB7AB', num:500,en:'Mont-Serrat'} },\n [IOS3166_1_Code.MDA]: { description: '', data: {emoji:'\uD83C\uDDF2\uD83C\uDDE9', alpha2: 'MD', alpha3:'MDA', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/2/27/Flag_of_Moldova.svg/40px-Flag_of_Moldova.svg.png',ko:'\uBAB0\uB3C4\uBC14', num:498,en:'Moldova'} },\n [IOS3166_1_Code.MDV]: { description: '', data: {emoji:'\uD83C\uDDF2\uD83C\uDDFB', alpha2: 'MV', alpha3:'MDV', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/0/0f/Flag_of_Maldives.svg/40px-Flag_of_Maldives.svg.png',ko:'\uBAB0\uB514\uBE0C', num:462,en:'Maldives'} },\n [IOS3166_1_Code.MLT]: { description: '', data: {emoji:'\uD83C\uDDF2\uD83C\uDDF9', alpha2: 'MT', alpha3:'MLT', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/7/73/Flag_of_Malta.svg/22px-Flag_of_Malta.svg.png',ko:'\uBAB0\uD0C0', num:470,en:'Malta'} },\n [IOS3166_1_Code.MNG]: { description: '', data: {emoji:'\uD83C\uDDF2\uD83C\uDDF3', alpha2: 'MN', alpha3:'MNG', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/4/4c/Flag_of_Mongolia.svg/22px-Flag_of_Mongolia.svg.png',ko:'\uBABD\uACE8', num:496,en:'Mongolia'} },\n [IOS3166_1_Code.USA]: { description: '', data: {emoji:'\uD83C\uDDFA\uD83C\uDDF8', alpha2: 'US', alpha3:'USA', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/a/a4/Flag_of_the_United_States.svg/40px-Flag_of_the_United_States.svg.png',ko:'\uBBF8\uAD6D', num:840,en:'the United States'} },\n [IOS3166_1_Code.UMI]: { description: '', data: {emoji:'\uD83C\uDDFA\uD83C\uDDF2', alpha2: 'UM', alpha3:'UMI', img:'http://upload.wikimedia.org/wikipedia/commons/thumb/a/a4/Flag_of_the_United_States.svg/40px-Flag_of_the_United_States.svg.png',ko:'\uBBF8\uAD6D\uB839 \uAD70\uC18C \uC81C\uB3C4', num:581,en:'the U.S. minor system'} },\n [IOS3166_1_Code.VIR]: { description: '', data: {emoji:'\uD83C\uDDFB\uD83C\uDDEE', alpha2: 'VI', alpha3:'VIR', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/f/f8/Flag_of_the_United_States_Virgin_Islands.svg/22px-Flag_of_the_United_States_Virgin_Islands.svg.png',ko:'\uBBF8\uAD6D\uB839 \uBC84\uC9C4\uC544\uC77C\uB79C\uB4DC', num:850,en:'U.S. Virgin Islands'} },\n [IOS3166_1_Code.MMR]: { description: '', data: {emoji:'\uD83C\uDDF2\uD83C\uDDF2', alpha2: 'MM', alpha3:'MMR', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/8/8c/Flag_of_Myanmar.svg/22px-Flag_of_Myanmar.svg.png',ko:'\uBBF8\uC580\uB9C8', num:104,en:'Myanmar'} },\n [IOS3166_1_Code.FSM]: { description: '', data: {emoji:'\uD83C\uDDEB\uD83C\uDDF2', alpha2: 'FM', alpha3:'FSM', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/e/e4/Flag_of_the_Federated_States_of_Micronesia.svg/40px-Flag_of_the_Federated_States_of_Micronesia.svg.png',ko:'\uBBF8\uD06C\uB85C\uB124\uC2DC\uC544 \uC5F0\uBC29', num:583,en:'Federation of Micronesia'} },\n [IOS3166_1_Code.VUT]: { description: '', data: {emoji:'\uD83C\uDDFB\uD83C\uDDFA', alpha2: 'VU', alpha3:'VUT', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/b/bc/Flag_of_Vanuatu.svg/22px-Flag_of_Vanuatu.svg.png',ko:'\uBC14\uB204\uC544\uD22C', num:548,en:'Vanuatu'} },\n [IOS3166_1_Code.BHR]: { description: '', data: {emoji:'\uD83C\uDDE7\uD83C\uDDED', alpha2: 'BH', alpha3:'BHR', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/2/2c/Flag_of_Bahrain.svg/40px-Flag_of_Bahrain.svg.png',ko:'\uBC14\uB808\uC778', num:48,en:'Bahrain'} },\n [IOS3166_1_Code.BRB]: { description: '', data: {emoji:'\uD83C\uDDE7\uD83C\uDDE7', alpha2: 'BB', alpha3:'BRB', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/e/ef/Flag_of_Barbados.svg/40px-Flag_of_Barbados.svg.png',ko:'\uBC14\uBCA0\uC774\uB3C4\uC2A4', num:52,en:'Barbados'} },\n [IOS3166_1_Code.VAT]: { description: '', data: {emoji:'\uD83C\uDDFB\uD83C\uDDE6', alpha2: 'VA', alpha3:'VAT', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/b/b3/Flag_of_Vatican_City_%282023%E2%80%93present%29.svg/20px-Flag_of_Vatican_City_%282023%E2%80%93present%29.svg.png',ko:'\uBC14\uD2F0\uCE78 \uC2DC\uAD6D', num:336,en:'Vatican City'} },\n [IOS3166_1_Code.BHS]: { description: '', data: {emoji:'\uD83C\uDDE7\uD83C\uDDF8', alpha2: 'BS', alpha3:'BHS', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/9/93/Flag_of_the_Bahamas.svg/40px-Flag_of_the_Bahamas.svg.png',ko:'\uBC14\uD558\uB9C8', num:44,en:'Bahamas'} },\n [IOS3166_1_Code.BGD]: { description: '', data: {emoji:'\uD83C\uDDE7\uD83C\uDDE9', alpha2: 'BD', alpha3:'BGD', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/f/f9/Flag_of_Bangladesh.svg/22px-Flag_of_Bangladesh.svg.png',ko:'\uBC29\uAE00\uB77C\uB370\uC2DC', num:50,en:'Bangladesh'} },\n [IOS3166_1_Code.BMU]: { description: '', data: {emoji:'\uD83C\uDDE7\uD83C\uDDF2', alpha2: 'BM', alpha3:'BMU', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/b/bf/Flag_of_Bermuda.svg/40px-Flag_of_Bermuda.svg.png',ko:'\uBC84\uBBA4\uB2E4', num:60,en:'Bermuda'} },\n [IOS3166_1_Code.BEN]: { description: '', data: {emoji:'\uD83C\uDDE7\uD83C\uDDEF', alpha2: 'BJ', alpha3:'BEN', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/0/0a/Flag_of_Benin.svg/22px-Flag_of_Benin.svg.png',ko:'\uBCA0\uB0C9', num:204,en:'Benin'} },\n [IOS3166_1_Code.VEN]: { description: '', data: {emoji:'\uD83C\uDDFB\uD83C\uDDEA', alpha2: 'VE', alpha3:'VEN', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/0/06/Flag_of_Venezuela.svg/40px-Flag_of_Venezuela.svg.png',ko:'\uBCA0\uB124\uC218\uC5D8\uB77C', num:862,en:'Venezuela'} },\n [IOS3166_1_Code.VNM]: { description: '', data: {emoji:'\uD83C\uDDFB\uD83C\uDDF3', alpha2: 'VN', alpha3:'VNM', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/2/21/Flag_of_Vietnam.svg/40px-Flag_of_Vietnam.svg.png',ko:'\uBCA0\uD2B8\uB0A8', num:704,en:'Vietnam'} },\n [IOS3166_1_Code.BEL]: { description: '', data: {emoji:'\uD83C\uDDE7\uD83C\uDDEA', alpha2: 'BE', alpha3:'BEL', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/9/92/Flag_of_Belgium_%28civil%29.svg/40px-Flag_of_Belgium_%28civil%29.svg.png',ko:'\uBCA8\uAE30\uC5D0', num:56,en:'Belgium'} },\n [IOS3166_1_Code.BLR]: { description: '', data: {emoji:'\uD83C\uDDE7\uD83C\uDDFE', alpha2: 'BY', alpha3:'BLR', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/8/85/Flag_of_Belarus.svg/40px-Flag_of_Belarus.svg.png',ko:'\uBCA8\uB77C\uB8E8\uC2A4', num:112,en:'Belarus'} },\n [IOS3166_1_Code.BLZ]: { description: '', data: {emoji:'\uD83C\uDDE7\uD83C\uDDFF', alpha2: 'BZ', alpha3:'BLZ', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/e/e7/Flag_of_Belize.svg/22px-Flag_of_Belize.svg.png',ko:'\uBCA8\uB9AC\uC988', num:84,en:'Belize'} },\n [IOS3166_1_Code.BES]: { description: '', data: {emoji:'\uD83C\uDDE7\uD83C\uDDF6', alpha2: 'BQ', alpha3:'BES', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/1/1e/Flag_of_Bonaire.svg/40px-Flag_of_Bonaire.svg.png',ko:'\uBCF4\uB124\uB974\uC12C', num:535,en:'Bonner Island'} },\n [IOS3166_1_Code.BIH]: { description: '', data: {emoji:'\uD83C\uDDE7\uD83C\uDDE6', alpha2: 'BA', alpha3:'BIH', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/b/bf/Flag_of_Bosnia_and_Herzegovina.svg/40px-Flag_of_Bosnia_and_Herzegovina.svg.png',ko:'\uBCF4\uC2A4\uB2C8\uC544 \uD5E4\uB974\uCCB4\uACE0\uBE44\uB098', num:70,en:'Bosnia and Herzegovina'} },\n [IOS3166_1_Code.BWA]: { description: '', data: {emoji:'\uD83C\uDDE7\uD83C\uDDFC', alpha2: 'BW', alpha3:'BWA', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/f/fa/Flag_of_Botswana.svg/40px-Flag_of_Botswana.svg.png',ko:'\uBCF4\uCE20\uC640\uB098', num:72,en:'Botswana'} },\n [IOS3166_1_Code.BOL]: { description: '', data: {emoji:'\uD83C\uDDE7\uD83C\uDDF4', alpha2: 'BO', alpha3:'BOL', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/4/48/Flag_of_Bolivia.svg/40px-Flag_of_Bolivia.svg.png',ko:'\uBCFC\uB9AC\uBE44\uC544', num:68,en:'Bolivia'} },\n [IOS3166_1_Code.BDI]: { description: '', data: {emoji:'\uD83C\uDDE7\uD83C\uDDEE', alpha2: 'BI', alpha3:'BDI', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/5/50/Flag_of_Burundi.svg/40px-Flag_of_Burundi.svg.png',ko:'\uBD80\uB8EC\uB514', num:108,en:'Burundi'} },\n [IOS3166_1_Code.BFA]: { description: '', data: {emoji:'\uD83C\uDDE7\uD83C\uDDEB', alpha2: 'BF', alpha3:'BFA', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/3/31/Flag_of_Burkina_Faso.svg/22px-Flag_of_Burkina_Faso.svg.png',ko:'\uBD80\uB974\uD0A4\uB098\uD30C\uC18C', num:854,en:'Burkina Faso'} },\n [IOS3166_1_Code.BVT]: { description: '', data: {emoji:'\uD83C\uDDE7\uD83C\uDDFB', alpha2: 'BV', alpha3:'BVT', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/3/36/BOUVET.png/40px-BOUVET.png',ko:'\uBD80\uBCA0\uC12C', num:74,en:'island of Bube'} },\n [IOS3166_1_Code.BTN]: { description: '', data: {emoji:'\uD83C\uDDE7\uD83C\uDDF9', alpha2: 'BT', alpha3:'BTN', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/9/91/Flag_of_Bhutan.svg/40px-Flag_of_Bhutan.svg.png',ko:'\uBD80\uD0C4', num:64,en:'Bhutan'} },\n [IOS3166_1_Code.MNP]: { description: '', data: {emoji:'\uD83C\uDDF2\uD83C\uDDF5', alpha2: 'MP', alpha3:'MNP', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/e/e0/Flag_of_the_Northern_Mariana_Islands.svg/22px-Flag_of_the_Northern_Mariana_Islands.svg.png',ko:'\uBD81\uB9C8\uB9AC\uC544\uB098 \uC81C\uB3C4', num:580,en:'Northern Mariana Islands'} },\n [IOS3166_1_Code.BGR]: { description: '', data: {emoji:'\uD83C\uDDE7\uD83C\uDDEC', alpha2: 'BG', alpha3:'BGR', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/9/9a/Flag_of_Bulgaria.svg/22px-Flag_of_Bulgaria.svg.png',ko:'\uBD88\uAC00\uB9AC\uC544', num:100,en:'Bulgaria'} },\n [IOS3166_1_Code.BRA]: { description: '', data: {emoji:'\uD83C\uDDE7\uD83C\uDDF7', alpha2: 'BR', alpha3:'BRA', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/0/05/Flag_of_Brazil.svg/40px-Flag_of_Brazil.svg.png',ko:'\uBE0C\uB77C\uC9C8', num:76,en:'Brazil'} },\n [IOS3166_1_Code.BRN]: { description: '', data: {emoji:'\uD83C\uDDE7\uD83C\uDDF3', alpha2: 'BN', alpha3:'BRN', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/9/9c/Flag_of_Brunei.svg/40px-Flag_of_Brunei.svg.png',ko:'\uBE0C\uB8E8\uB098\uC774', num:96,en:'Brunei'} },\n [IOS3166_1_Code.WSM]: { description: '', data: {emoji:'\uD83C\uDDFC\uD83C\uDDF8', alpha2: 'WS', alpha3:'WSM', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/3/31/Flag_of_Samoa.svg/40px-Flag_of_Samoa.svg.png',ko:'\uC0AC\uBAA8\uC544', num:882,en:'Samoa'} },\n [IOS3166_1_Code.SAU]: { description: '', data: {emoji:'\uD83C\uDDF8\uD83C\uDDE6', alpha2: 'SA', alpha3:'SAU', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/0/0d/Flag_of_Saudi_Arabia.svg/40px-Flag_of_Saudi_Arabia.svg.png',ko:'\uC0AC\uC6B0\uB514\uC544\uB77C\uBE44\uC544', num:682,en:'Saudi Arabia'} },\n [IOS3166_1_Code.SGS]: { description: '', data: {emoji:'\uD83C\uDDEC\uD83C\uDDF8', alpha2: 'GS', alpha3:'SGS', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/e/ed/Flag_of_South_Georgia_and_the_South_Sandwich_Islands.svg/22px-Flag_of_South_Georgia_and_the_South_Sandwich_Islands.svg.png',ko:'\uC0AC\uC6B0\uC2A4\uC870\uC9C0\uC544 \uC0AC\uC6B0\uC2A4\uC0CC\uB4DC\uC704\uCE58 \uC81C\uB3C4', num:239,en:'South Georgia South Sandwich Islands'} },\n [IOS3166_1_Code.SMR]: { description: '', data: {emoji:'\uD83C\uDDF8\uD83C\uDDF2', alpha2: 'SM', alpha3:'SMR', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/b/b1/Flag_of_San_Marino.svg/22px-Flag_of_San_Marino.svg.png',ko:'\uC0B0\uB9C8\uB9AC\uB178', num:674,en:'San Marino'} },\n [IOS3166_1_Code.STP]: { description: '', data: {emoji:'\uD83C\uDDF8\uD83C\uDDF9', alpha2: 'ST', alpha3:'STP', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/0/0a/Flag_of_S%C3%A3o_Tom%C3%A9_and_Pr%C3%ADncipe.svg/22px-Flag_of_S%C3%A3o_Tom%C3%A9_and_Pr%C3%ADncipe.svg.png',ko:'\uC0C1\uD22C\uBA54 \uD504\uB9B0\uC2DC\uD398', num:678,en:'Sao Tome Principe'} },\n [IOS3166_1_Code.MAF]: { description: '', data: {emoji:'\uD83C\uDDF2\uD83C\uDDEB', alpha2: 'MF', alpha3:'MAF', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/b/b5/Flag_of_France_%282020%E2%80%93present%29.svg/22px-Flag_of_France_%282020%E2%80%93present%29.svg.png',ko:'\uC0DD\uB9C8\uB974\uD0F1', num:663,en:'Saint-Martin'} },\n [IOS3166_1_Code.BLM]: { description: '', data: {emoji:'\uD83C\uDDE7\uD83C\uDDF1', alpha2: 'BL', alpha3:'BLM', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/b/b4/Flag_of_Saint_Barth%C3%A9lemy_%28local%29.svg/40px-Flag_of_Saint_Barth%C3%A9lemy_%28local%29.svg.png',ko:'\uC0DD\uBC14\uB974\uD154\uB808\uBBF8', num:652,en:'Saint-Bartelemi'} },\n [IOS3166_1_Code.SPM]: { description: '', data: {emoji:'\uD83C\uDDF5\uD83C\uDDF2', alpha2: 'PM', alpha3:'SPM', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/7/74/Flag_of_Saint-Pierre_and_Miquelon.svg/40px-Flag_of_Saint-Pierre_and_Miquelon.svg.png',ko:'\uC0DD\uD53C\uC5D0\uB974 \uBBF8\uD074\uB871', num:666,en:'Saint-Pierre Michael Long'} },\n [IOS3166_1_Code.ESH]: { description: '', data: {emoji:'\uD83C\uDDEA\uD83C\uDDED', alpha2: 'EH', alpha3:'ESH', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/2/26/Flag_of_the_Sahrawi_Arab_Democratic_Republic.svg/40px-Flag_of_the_Sahrawi_Arab_Democratic_Republic.svg.png',ko:'\uC11C\uC0AC\uD558\uB77C', num:732,en:'Speak'} },\n [IOS3166_1_Code.SEN]: { description: '', data: {emoji:'\uD83C\uDDF8\uD83C\uDDF3', alpha2: 'SN', alpha3:'SEN', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/f/fd/Flag_of_Senegal.svg/40px-Flag_of_Senegal.svg.png',ko:'\uC138\uB124\uAC08', num:686,en:'Senegal'} },\n [IOS3166_1_Code.SRB]: { description: '', data: {emoji:'\uD83C\uDDF7\uD83C\uDDF8', alpha2: 'RS', alpha3:'SRB', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/f/ff/Flag_of_Serbia.svg/40px-Flag_of_Serbia.svg.png',ko:'\uC138\uB974\uBE44\uC544', num:688,en:'Serbia'} },\n [IOS3166_1_Code.SYC]: { description: '', data: {emoji:'\uD83C\uDDF8\uD83C\uDDE8', alpha2: 'SC', alpha3:'SYC', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/f/fc/Flag_of_Seychelles.svg/22px-Flag_of_Seychelles.svg.png',ko:'\uC138\uC774\uC178', num:690,en:'Seychelles'} },\n [IOS3166_1_Code.LCA]: { description: '', data: {emoji:'\uD83C\uDDF1\uD83C\uDDE8', alpha2: 'LC', alpha3:'LCA', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/9/9f/Flag_of_Saint_Lucia.svg/40px-Flag_of_Saint_Lucia.svg.png',ko:'\uC138\uC778\uD2B8\uB8E8\uC2DC\uC544', num:662,en:'Saint Lucia'} },\n [IOS3166_1_Code.VCT]: { description: '', data: {emoji:'\uD83C\uDDFB\uD83C\uDDE8', alpha2: 'VC', alpha3:'VCT', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/6/6d/Flag_of_Saint_Vincent_and_the_Grenadines.svg/40px-Flag_of_Saint_Vincent_and_the_Grenadines.svg.png',ko:'\uC138\uC778\uD2B8\uBE48\uC13C\uD2B8 \uADF8\uB808\uB098\uB518', num:670,en:'Saint Vincent and the Grenadines'} },\n [IOS3166_1_Code.KNA]: { description: '', data: {emoji:'\uD83C\uDDF0\uD83C\uDDF3', alpha2: 'KN', alpha3:'KNA', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/f/fe/Flag_of_Saint_Kitts_and_Nevis.svg/22px-Flag_of_Saint_Kitts_and_Nevis.svg.png',ko:'\uC138\uC778\uD2B8\uD0A4\uCE20 \uB124\uBE44\uC2A4', num:659,en:'Saint Kitts and Nevis'} },\n [IOS3166_1_Code.SHN]: { description: '', data: {emoji:'\uD83C\uDDF8\uD83C\uDDED', alpha2: 'SH', alpha3:'SHN', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/0/00/Flag_of_Saint_Helena.svg/40px-Flag_of_Saint_Helena.svg.png',ko:'\uC138\uC778\uD2B8\uD5EC\uB808\uB098', num:654,en:'Saint Helena'} },\n [IOS3166_1_Code.SOM]: { description: '', data: {emoji:'\uD83C\uDDF8\uD83C\uDDF4', alpha2: 'SO', alpha3:'SOM', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/a/a0/Flag_of_Somalia.svg/22px-Flag_of_Somalia.svg.png',ko:'\uC18C\uB9D0\uB9AC\uC544', num:706,en:'Somalia'} },\n [IOS3166_1_Code.SLB]: { description: '', data: {emoji:'\uD83C\uDDF8\uD83C\uDDE7', alpha2: 'SB', alpha3:'SLB', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/7/74/Flag_of_the_Solomon_Islands.svg/40px-Flag_of_the_Solomon_Islands.svg.png',ko:'\uC194\uB85C\uBAAC \uC81C\uB3C4', num:90,en:'Solomon Islands'} },\n [IOS3166_1_Code.SDN]: { description: '', data: {emoji:'\uD83C\uDDF8\uD83C\uDDE9', alpha2: 'SD', alpha3:'SDN', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/0/01/Flag_of_Sudan.svg/22px-Flag_of_Sudan.svg.png',ko:'\uC218\uB2E8', num:729,en:'means'} },\n [IOS3166_1_Code.SUR]: { description: '', data: {emoji:'\uD83C\uDDF8\uD83C\uDDF7', alpha2: 'SR', alpha3:'SUR', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/6/60/Flag_of_Suriname.svg/40px-Flag_of_Suriname.svg.png',ko:'\uC218\uB9AC\uB0A8', num:740,en:'Suriname'} },\n [IOS3166_1_Code.LKA]: { description: '', data: {emoji:'\uD83C\uDDF1\uD83C\uDDF0', alpha2: 'LK', alpha3:'LKA', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/1/11/Flag_of_Sri_Lanka.svg/40px-Flag_of_Sri_Lanka.svg.png',ko:'\uC2A4\uB9AC\uB791\uCE74', num:144,en:'Sri Lanka'} },\n [IOS3166_1_Code.SJM]: { description: '', data: {emoji:'\uD83C\uDDF8\uD83C\uDDEF', alpha2: 'SJ', alpha3:'SJM', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/c/c9/Proposed_flag_of_Svalbard%2C_Norway_%281930%29.svg/22px-Proposed_flag_of_Svalbard%2C_Norway_%281930%29.svg.png',ko:'\uC2A4\uBC1C\uBC14\uB974 \uC580\uB9C8\uC60C', num:744,en:'Svalbard Janmayen'} },\n [IOS3166_1_Code.SWE]: { description: '', data: {emoji:'\uD83C\uDDF8\uD83C\uDDEA', alpha2: 'SE', alpha3:'SWE', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/4/4c/Flag_of_Sweden.svg/40px-Flag_of_Sweden.svg.png',ko:'\uC2A4\uC6E8\uB374', num:752,en:'Sweden'} },\n [IOS3166_1_Code.CHE]: { description: '', data: {emoji:'\uD83C\uDDE8\uD83C\uDDED', alpha2: 'CH', alpha3:'CHE', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/f/f3/Flag_of_Switzerland.svg/20px-Flag_of_Switzerland.svg.png',ko:'\uC2A4\uC704\uC2A4', num:756,en:'Switzerland'} },\n [IOS3166_1_Code.ESP]: { description: '', data: {emoji:'\uD83C\uDDEA\uD83C\uDDF8', alpha2: 'ES', alpha3:'ESP', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/9/9a/Flag_of_Spain.svg/40px-Flag_of_Spain.svg.png',ko:'\uC2A4\uD398\uC778', num:724,en:'Spain'} },\n [IOS3166_1_Code.SVK]: { description: '', data: {emoji:'\uD83C\uDDF8\uD83C\uDDF0', alpha2: 'SK', alpha3:'SVK', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/e/e6/Flag_of_Slovakia.svg/22px-Flag_of_Slovakia.svg.png',ko:'\uC2AC\uB85C\uBC14\uD0A4\uC544', num:703,en:'Slovakia'} },\n [IOS3166_1_Code.SVN]: { description: '', data: {emoji:'\uD83C\uDDF8\uD83C\uDDEE', alpha2: 'SI', alpha3:'SVN', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/f/f0/Flag_of_Slovenia.svg/22px-Flag_of_Slovenia.svg.png',ko:'\uC2AC\uB85C\uBCA0\uB2C8\uC544', num:705,en:'Slovenia'} },\n [IOS3166_1_Code.SYR]: { description: '', data: {emoji:'\uD83C\uDDF8\uD83C\uDDFE', alpha2: 'SY', alpha3:'SYR', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/1/14/Flag_of_the_Syrian_revolution.svg/40px-Flag_of_the_Syrian_revolution.svg.png',ko:'\uC2DC\uB9AC\uC544', num:760,en:'Syria'} },\n [IOS3166_1_Code.SLE]: { description: '', data: {emoji:'\uD83C\uDDF8\uD83C\uDDF1', alpha2: 'SL', alpha3:'SLE', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/1/17/Flag_of_Sierra_Leone.svg/22px-Flag_of_Sierra_Leone.svg.png',ko:'\uC2DC\uC5D0\uB77C\uB9AC\uC628', num:694,en:'Sierra Leone'} },\n [IOS3166_1_Code.SXM]: { description: '', data: {emoji:'\uD83C\uDDF8\uD83C\uDDFD', alpha2: 'SX', alpha3:'SXM', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/d/d3/Flag_of_Sint_Maarten.svg/40px-Flag_of_Sint_Maarten.svg.png',ko:'\uC2E0\uD2B8\uB9C8\uB974\uD134', num:534,en:'Sint Marton'} },\n [IOS3166_1_Code.SGP]: { description: '', data: {emoji:'\uD83C\uDDF8\uD83C\uDDEC', alpha2: 'SG', alpha3:'SGP', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/4/48/Flag_of_Singapore.svg/22px-Flag_of_Singapore.svg.png',ko:'\uC2F1\uAC00\uD3EC\uB974', num:702,en:'Singapore'} },\n [IOS3166_1_Code.ARE]: { description: '', data: {emoji:'\uD83C\uDDE6\uD83C\uDDEA', alpha2: 'AE', alpha3:'ARE', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/c/cb/Flag_of_the_United_Arab_Emirates.svg/40px-Flag_of_the_United_Arab_Emirates.svg.png',ko:'\uC544\uB78D\uC5D0\uBBF8\uB9AC\uD2B8', num:784,en:'United Arab Emirates'} },\n [IOS3166_1_Code.ABW]: { description: '', data: {emoji:'\uD83C\uDDE6\uD83C\uDDFC', alpha2: 'AW', alpha3:'ABW', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/f/f6/Flag_of_Aruba.svg/22px-Flag_of_Aruba.svg.png',ko:'\uC544\uB8E8\uBC14', num:533,en:'Aruba'} },\n [IOS3166_1_Code.ARM]: { description: '', data: {emoji:'\uD83C\uDDE6\uD83C\uDDF2', alpha2: 'AM', alpha3:'ARM', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/2/2f/Flag_of_Armenia.svg/40px-Flag_of_Armenia.svg.png',ko:'\uC544\uB974\uBA54\uB2C8\uC544', num:51,en:'Armenia'} },\n [IOS3166_1_Code.ARG]: { description: '', data: {emoji:'\uD83C\uDDE6\uD83C\uDDF7', alpha2: 'AR', alpha3:'ARG', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/1/1a/Flag_of_Argentina.svg/22px-Flag_of_Argentina.svg.png',ko:'\uC544\uB974\uD5E8\uD2F0\uB098', num:32,en:'Argentina'} },\n [IOS3166_1_Code.ASM]: { description: '', data: {emoji:'\uD83C\uDDE6\uD83C\uDDF8', alpha2: 'AS', alpha3:'ASM', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/8/87/Flag_of_American_Samoa.svg/40px-Flag_of_American_Samoa.svg.png',ko:'\uC544\uBA54\uB9AC\uCE78\uC0AC\uBAA8\uC544', num:16,en:'American Samoa'} },\n [IOS3166_1_Code.ISL]: { description: '', data: {emoji:'\uD83C\uDDEE\uD83C\uDDF8', alpha2: 'IS', alpha3:'ISL', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/c/ce/Flag_of_Iceland.svg/40px-Flag_of_Iceland.svg.png',ko:'\uC544\uC774\uC2AC\uB780\uB4DC', num:352,en:'Iceland'} },\n [IOS3166_1_Code.HTI]: { description: '', data: {emoji:'\uD83C\uDDED\uD83C\uDDF9', alpha2: 'HT', alpha3:'HTI', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/5/56/Flag_of_Haiti.svg/40px-Flag_of_Haiti.svg.png',ko:'\uC544\uC774\uD2F0', num:332,en:'Haiti'} },\n [IOS3166_1_Code.IRL]: { description: '', data: {emoji:'\uD83C\uDDEE\uD83C\uDDEA', alpha2: 'IE', alpha3:'IRL', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/4/45/Flag_of_Ireland.svg/40px-Flag_of_Ireland.svg.png',ko:'\uC544\uC77C\uB79C\uB4DC', num:372,en:'Ireland'} },\n [IOS3166_1_Code.AZE]: { description: '', data: {emoji:'\uD83C\uDDE6\uD83C\uDDFF', alpha2: 'AZ', alpha3:'AZE', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/d/dd/Flag_of_Azerbaijan.svg/40px-Flag_of_Azerbaijan.svg.png',ko:'\uC544\uC81C\uB974\uBC14\uC774\uC794', num:31,en:'Azerbaijan'} },\n [IOS3166_1_Code.AFG]: { description: '', data: {emoji:'\uD83C\uDDE6\uD83C\uDDEB', alpha2: 'AF', alpha3:'AFG', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/5/5c/Flag_of_the_Taliban.svg/40px-Flag_of_the_Taliban.svg.png',ko:'\uC544\uD504\uAC00\uB2C8\uC2A4\uD0C4', num:4,en:'Afghanistan'} },\n [IOS3166_1_Code.AND]: { description: '', data: {emoji:'\uD83C\uDDE6\uD83C\uDDE9', alpha2: 'AD', alpha3:'AND', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/1/19/Flag_of_Andorra.svg/22px-Flag_of_Andorra.svg.png',ko:'\uC548\uB3C4\uB77C', num:20,en:'Andorra'} },\n [IOS3166_1_Code.ALB]: { description: '', data: {emoji:'\uD83C\uDDE6\uD83C\uDDF1', alpha2: 'AL', alpha3:'ALB', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/3/36/Flag_of_Albania.svg/40px-Flag_of_Albania.svg.png',ko:'\uC54C\uBC14\uB2C8\uC544', num:8,en:'Albania'} },\n [IOS3166_1_Code.DZA]: { description: '', data: {emoji:'\uD83C\uDDE9\uD83C\uDDFF', alpha2: 'DZ', alpha3:'DZA', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/7/77/Flag_of_Algeria.svg/40px-Flag_of_Algeria.svg.png',ko:'\uC54C\uC81C\uB9AC', num:12,en:'Algeria'} },\n [IOS3166_1_Code.AGO]: { description: '', data: {emoji:'\uD83C\uDDE6\uD83C\uDDF4', alpha2: 'AO', alpha3:'AGO', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/9/9d/Flag_of_Angola.svg/22px-Flag_of_Angola.svg.png',ko:'\uC559\uACE8\uB77C', num:24,en:'Angola'} },\n [IOS3166_1_Code.ATG]: { description: '', data: {emoji:'\uD83C\uDDE6\uD83C\uDDEC', alpha2: 'AG', alpha3:'ATG', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/8/89/Flag_of_Antigua_and_Barbuda.svg/22px-Flag_of_Antigua_and_Barbuda.svg.png',ko:'\uC564\uD2F0\uAC00 \uBC14\uBD80\uB2E4', num:28,en:'be full of antis'} },\n [IOS3166_1_Code.AIA]: { description: '', data: {emoji:'\uD83C\uDDE6\uD83C\uDDEE', alpha2: 'AI', alpha3:'AIA', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/b/b4/Flag_of_Anguilla.svg/40px-Flag_of_Anguilla.svg.png',ko:'\uC575\uADC8\uB77C', num:660,en:'Anguilla'} },\n [IOS3166_1_Code.ERI]: { description: '', data: {emoji:'\uD83C\uDDEA\uD83C\uDDF7', alpha2: 'ER', alpha3:'ERI', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/2/29/Flag_of_Eritrea.svg/40px-Flag_of_Eritrea.svg.png',ko:'\uC5D0\uB9AC\uD2B8\uB808\uC544', num:232,en:'Eritrea'} },\n [IOS3166_1_Code.SWZ]: { description: '', data: {emoji:'\uD83C\uDDF8\uD83C\uDDFF', alpha2: 'SZ', alpha3:'SWZ', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/f/fb/Flag_of_Eswatini.svg/22px-Flag_of_Eswatini.svg.png',ko:'\uC5D0\uC2A4\uC640\uD2F0\uB2C8', num:748,en:'Eswatini'} },\n [IOS3166_1_Code.EST]: { description: '', data: {emoji:'\uD83C\uDDEA\uD83C\uDDEA', alpha2: 'EE', alpha3:'EST', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/8/8f/Flag_of_Estonia.svg/22px-Flag_of_Estonia.svg.png',ko:'\uC5D0\uC2A4\uD1A0\uB2C8\uC544', num:233,en:'Estonia'} },\n [IOS3166_1_Code.ECU]: { description: '', data: {emoji:'\uD83C\uDDEA\uD83C\uDDE8', alpha2: 'EC', alpha3:'ECU', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/e/e8/Flag_of_Ecuador.svg/40px-Flag_of_Ecuador.svg.png',ko:'\uC5D0\uCF70\uB3C4\uB974', num:218,en:'Ecuador'} },\n [IOS3166_1_Code.ETH]: { description: '', data: {emoji:'\uD83C\uDDEA\uD83C\uDDF9', alpha2: 'ET', alpha3:'ETH', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/7/71/Flag_of_Ethiopia.svg/22px-Flag_of_Ethiopia.svg.png',ko:'\uC5D0\uD2F0\uC624\uD53C\uC544', num:231,en:'Ethiopia'} },\n [IOS3166_1_Code.SLV]: { description: '', data: {emoji:'\uD83C\uDDF8\uD83C\uDDFB', alpha2: 'SV', alpha3:'SLV', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/3/34/Flag_of_El_Salvador.svg/22px-Flag_of_El_Salvador.svg.png',ko:'\uC5D8\uC0B4\uBC14\uB3C4\uB974', num:222,en:'El Salvador'} },\n [IOS3166_1_Code.GBR]: { description: '', data: {emoji:'\uD83C\uDDEC\uD83C\uDDE7', alpha2: 'GB', alpha3:'GBR', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/a/a5/Flag_of_the_United_Kingdom_%281-2%29.svg/40px-Flag_of_the_United_Kingdom_%281-2%29.svg.png',ko:'\uC601\uAD6D', num:826,en:'the United Kingdom'} },\n [IOS3166_1_Code.VGB]: { description: '', data: {emoji:'\uD83C\uDDFB\uD83C\uDDEC', alpha2: 'VG', alpha3:'VGB', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/4/42/Flag_of_the_British_Virgin_Islands.svg/40px-Flag_of_the_British_Virgin_Islands.svg.png',ko:'\uC601\uAD6D\uB839 \uBC84\uC9C4\uC544\uC77C\uB79C\uB4DC', num:92,en:'British Virgin Islands'} },\n [IOS3166_1_Code.IOT]: { description: '', data: {emoji:'\uD83C\uDDEE\uD83C\uDDF4', alpha2: 'IO', alpha3:'IOT', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/6/65/Flag_of_the_Commissioner_of_the_British_Indian_Ocean_Territory.svg/22px-Flag_of_the_Commissioner_of_the_British_Indian_Ocean_Territory.svg.png',ko:'\uC601\uAD6D\uB839 \uC778\uB3C4\uC591 \uC9C0\uC5ED', num:86,en:'the British Indian Ocean region'} },\n [IOS3166_1_Code.YEM]: { description: '', data: {emoji:'\uD83C\uDDFE\uD83C\uDDEA', alpha2: 'YE', alpha3:'YEM', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/8/89/Flag_of_Yemen.svg/40px-Flag_of_Yemen.svg.png',ko:'\uC608\uBA58', num:887,en:'Yemen'} },\n [IOS3166_1_Code.OMN]: { description: '', data: {emoji:'\uD83C\uDDF4\uD83C\uDDF2', alpha2: 'OM', alpha3:'OMN', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/d/dd/Flag_of_Oman.svg/40px-Flag_of_Oman.svg.png',ko:'\uC624\uB9CC', num:512,en:'arrogance'} },\n [IOS3166_1_Code.AUS]: { description: '', data: {emoji:'\uD83C\uDDE6\uD83C\uDDFA', alpha2: 'AU', alpha3:'AUS', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/b/b9/Flag_of_Australia.svg/40px-Flag_of_Australia.svg.png',ko:'\uC624\uC2A4\uD2B8\uB808\uC77C\uB9AC\uC544', num:36,en:'Australia'} },\n [IOS3166_1_Code.AUT]: { description: '', data: {emoji:'\uD83C\uDDE6\uD83C\uDDF9', alpha2: 'AT', alpha3:'AUT', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/4/41/Flag_of_Austria.svg/22px-Flag_of_Austria.svg.png',ko:'\uC624\uC2A4\uD2B8\uB9AC\uC544', num:40,en:'Austria'} },\n [IOS3166_1_Code.HND]: { description: '', data: {emoji:'\uD83C\uDDED\uD83C\uDDF3', alpha2: 'HN', alpha3:'HND', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/8/82/Flag_of_Honduras.svg/40px-Flag_of_Honduras.svg.png',ko:'\uC628\uB450\uB77C\uC2A4', num:340,en:'Honduras'} },\n [IOS3166_1_Code.ALA]: { description: '', data: {emoji:'\uD83C\uDDE6\uD83C\uDDFD', alpha2: 'AX', alpha3:'ALA', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/5/52/Flag_of_%C3%85land.svg/40px-Flag_of_%C3%85land.svg.png',ko:'\uC62C\uB780\uB4DC \uC81C\uB3C4', num:248,en:'the Orland Islands'} },\n [IOS3166_1_Code.JOR]: { description: '', data: {emoji:'\uD83C\uDDEF\uD83C\uDDF4', alpha2: 'JO', alpha3:'JOR', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/c/c0/Flag_of_Jordan.svg/40px-Flag_of_Jordan.svg.png',ko:'\uC694\uB974\uB2E8', num:400,en:'Jordan'} },\n [IOS3166_1_Code.UGA]: { description: '', data: {emoji:'\uD83C\uDDFA\uD83C\uDDEC', alpha2: 'UG', alpha3:'UGA', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/4/4e/Flag_of_Uganda.svg/22px-Flag_of_Uganda.svg.png',ko:'\uC6B0\uAC04\uB2E4', num:800,en:'Uganda'} },\n [IOS3166_1_Code.URY]: { description: '', data: {emoji:'\uD83C\uDDFA\uD83C\uDDFE', alpha2: 'UY', alpha3:'URY', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/f/fe/Flag_of_Uruguay.svg/22px-Flag_of_Uruguay.svg.png',ko:'\uC6B0\uB8E8\uACFC\uC774', num:858,en:'Uruguay'} },\n [IOS3166_1_Code.UZB]: { description: '', data: {emoji:'\uD83C\uDDFA\uD83C\uDDFF', alpha2: 'UZ', alpha3:'UZB', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/8/84/Flag_of_Uzbekistan.svg/40px-Flag_of_Uzbekistan.svg.png',ko:'\uC6B0\uC988\uBCA0\uD0A4\uC2A4\uD0C4', num:860,en:'Uzbekistan'} },\n [IOS3166_1_Code.UKR]: { description: '', data: {emoji:'\uD83C\uDDFA\uD83C\uDDE6', alpha2: 'UA', alpha3:'UKR', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/4/49/Flag_of_Ukraine.svg/22px-Flag_of_Ukraine.svg.png',ko:'\uC6B0\uD06C\uB77C\uC774\uB098', num:804,en:'Ukraine'} },\n [IOS3166_1_Code.WLF]: { description: '', data: {emoji:'\uD83C\uDDFC\uD83C\uDDEB', alpha2: 'WF', alpha3:'WLF', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/b/b5/Flag_of_France_%282020%E2%80%93present%29.svg/22px-Flag_of_France_%282020%E2%80%93present%29.svg.png',ko:'\uC648\uB9AC\uC2A4 \uD478\uD22C\uB098', num:876,en:'Wallis Putuna'} },\n [IOS3166_1_Code.IRQ]: { description: '', data: {emoji:'\uD83C\uDDEE\uD83C\uDDF6', alpha2: 'IQ', alpha3:'IRQ', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/f/f6/Flag_of_Iraq.svg/40px-Flag_of_Iraq.svg.png',ko:'\uC774\uB77C\uD06C', num:368,en:'Iraq'} },\n [IOS3166_1_Code.IRN]: { description: '', data: {emoji:'\uD83C\uDDEE\uD83C\uDDF7', alpha2: 'IR', alpha3:'IRN', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/c/ca/Flag_of_Iran.svg/40px-Flag_of_Iran.svg.png',ko:'\uC774\uB780', num:364,en:'Iran'} },\n [IOS3166_1_Code.ISR]: { description: '', data: {emoji:'\uD83C\uDDEE\uD83C\uDDF1', alpha2: 'IL', alpha3:'ISR', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/d/d4/Flag_of_Israel.svg/22px-Flag_of_Israel.svg.png',ko:'\uC774\uC2A4\uB77C\uC5D8', num:376,en:'Israel'} },\n [IOS3166_1_Code.EGY]: { description: '', data: {emoji:'\uD83C\uDDEA\uD83C\uDDEC', alpha2: 'EG', alpha3:'EGY', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/f/fe/Flag_of_Egypt.svg/22px-Flag_of_Egypt.svg.png',ko:'\uC774\uC9D1\uD2B8', num:818,en:'Egypt.'} },\n [IOS3166_1_Code.ITA]: { description: '', data: {emoji:'\uD83C\uDDEE\uD83C\uDDF9', alpha2: 'IT', alpha3:'ITA', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/0/03/Flag_of_Italy.svg/40px-Flag_of_Italy.svg.png',ko:'\uC774\uD0C8\uB9AC\uC544', num:380,en:'Italy'} },\n [IOS3166_1_Code.IND]: { description: '', data: {emoji:'\uD83C\uDDEE\uD83C\uDDF3', alpha2: 'IN', alpha3:'IND', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/4/41/Flag_of_India.svg/22px-Flag_of_India.svg.png',ko:'\uC778\uB3C4', num:356,en:'India'} },\n [IOS3166_1_Code.IDN]: { description: '', data: {emoji:'\uD83C\uDDEE\uD83C\uDDE9', alpha2: 'ID', alpha3:'IDN', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/9/9f/Flag_of_Indonesia.svg/22px-Flag_of_Indonesia.svg.png',ko:'\uC778\uB3C4\uB124\uC2DC\uC544', num:360,en:'Indonesia'} },\n [IOS3166_1_Code.JPN]: { description: '', data: {emoji:'\uD83C\uDDEF\uD83C\uDDF5', alpha2: 'JP', alpha3:'JPN', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/9/9e/Flag_of_Japan.svg/40px-Flag_of_Japan.svg.png',ko:'\uC77C\uBCF8', num:392,en:'Japan'} },\n [IOS3166_1_Code.JAM]: { description: '', data: {emoji:'\uD83C\uDDEF\uD83C\uDDF2', alpha2: 'JM', alpha3:'JAM', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/0/0a/Flag_of_Jamaica.svg/40px-Flag_of_Jamaica.svg.png',ko:'\uC790\uBA54\uC774\uCE74', num:388,en:'Jamaica'} },\n [IOS3166_1_Code.ZMB]: { description: '', data: {emoji:'\uD83C\uDDFF\uD83C\uDDF2', alpha2: 'ZM', alpha3:'ZMB', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/0/06/Flag_of_Zambia.svg/40px-Flag_of_Zambia.svg.png',ko:'\uC7A0\uBE44\uC544', num:894,en:'Zambia'} },\n [IOS3166_1_Code.JEY]: { description: '', data: {emoji:'\uD83C\uDDEF\uD83C\uDDEA', alpha2: 'JE', alpha3:'JEY', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/1/1c/Flag_of_Jersey.svg/22px-Flag_of_Jersey.svg.png',ko:'\uC800\uC9C0\uC12C', num:832,en:'Jersey Island'} },\n [IOS3166_1_Code.GNQ]: { description: '', data: {emoji:'\uD83C\uDDEC\uD83C\uDDF6', alpha2: 'GQ', alpha3:'GNQ', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/3/31/Flag_of_Equatorial_Guinea.svg/40px-Flag_of_Equatorial_Guinea.svg.png',ko:'\uC801\uB3C4 \uAE30\uB2C8', num:226,en:'Equatorial Guinea'} },\n [IOS3166_1_Code.PRK]: { description: '', data: {emoji:'\uD83C\uDDF0\uD83C\uDDF5', alpha2: 'KP', alpha3:'PRK', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/5/51/Flag_of_North_Korea.svg/40px-Flag_of_North_Korea.svg.png',ko:'\uC870\uC120\uBBFC\uC8FC\uC8FC\uC758\uC778\uBBFC\uACF5\uD654\uAD6D', num:408,en:'Democratic People\\'s Republic of Korea'} },\n [IOS3166_1_Code.GEO]: { description: '', data: {emoji:'\uD83C\uDDEC\uD83C\uDDEA', alpha2: 'GE', alpha3:'GEO', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/0/0f/Flag_of_Georgia.svg/40px-Flag_of_Georgia.svg.png',ko:'\uC870\uC9C0\uC544', num:268,en:'Georgia'} },\n [IOS3166_1_Code.CHN]: { description: '', data: {emoji:'\uD83C\uDDE8\uD83C\uDDF3', alpha2: 'CN', alpha3:'CHN', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/f/fa/Flag_of_the_People%27s_Republic_of_China.svg/22px-Flag_of_the_People%27s_Republic_of_China.svg.png',ko:'\uC911\uAD6D', num:156,en:'China'} },\n [IOS3166_1_Code.CAF]: { description: '', data: {emoji:'\uD83C\uDDE8\uD83C\uDDEB', alpha2: 'CF', alpha3:'CAF', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/6/6f/Flag_of_the_Central_African_Republic.svg/22px-Flag_of_the_Central_African_Republic.svg.png',ko:'\uC911\uC559\uC544\uD504\uB9AC\uCE74 \uACF5\uD654\uAD6D', num:140,en:'Central African Republic'} },\n [IOS3166_1_Code.DJI]: { description: '', data: {emoji:'\uD83C\uDDE9\uD83C\uDDEF', alpha2: 'DJ', alpha3:'DJI', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/3/34/Flag_of_Djibouti.svg/40px-Flag_of_Djibouti.svg.png',ko:'\uC9C0\uBD80\uD2F0', num:262,en:'Djibouti'} },\n [IOS3166_1_Code.GIB]: { description: '', data: {emoji:'\uD83C\uDDEC\uD83C\uDDEE', alpha2: 'GI', alpha3:'GIB', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/0/02/Flag_of_Gibraltar.svg/40px-Flag_of_Gibraltar.svg.png',ko:'\uC9C0\uBE0C\uB864\uD130', num:292,en:'Gibraltar'} },\n [IOS3166_1_Code.ZWE]: { description: '', data: {emoji:'\uD83C\uDDFF\uD83C\uDDFC', alpha2: 'ZW', alpha3:'ZWE', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/6/6a/Flag_of_Zimbabwe.svg/40px-Flag_of_Zimbabwe.svg.png',ko:'\uC9D0\uBC14\uBE0C\uC6E8', num:716,en:'Zimbabwe'} },\n [IOS3166_1_Code.TCD]: { description: '', data: {emoji:'\uD83C\uDDF9\uD83C\uDDE9', alpha2: 'TD', alpha3:'TCD', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/4/4b/Flag_of_Chad.svg/40px-Flag_of_Chad.svg.png',ko:'\uCC28\uB4DC', num:148,en:'Chad'} },\n [IOS3166_1_Code.CZE]: { description: '', data: {emoji:'\uD83C\uDDE8\uD83C\uDDFF', alpha2: 'CZ', alpha3:'CZE', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/c/cb/Flag_of_the_Czech_Republic.svg/40px-Flag_of_the_Czech_Republic.svg.png',ko:'\uCCB4\uCF54', num:203,en:'Czech Republic'} },\n [IOS3166_1_Code.CHL]: { description: '', data: {emoji:'\uD83C\uDDE8\uD83C\uDDF1', alpha2: 'CL', alpha3:'CHL', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/7/78/Flag_of_Chile.svg/40px-Flag_of_Chile.svg.png',ko:'\uCE60\uB808', num:152,en:'Chile'} },\n [IOS3166_1_Code.CMR]: { description: '', data: {emoji:'\uD83C\uDDE8\uD83C\uDDF2', alpha2: 'CM', alpha3:'CMR', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/4/4f/Flag_of_Cameroon.svg/40px-Flag_of_Cameroon.svg.png',ko:'\uCE74\uBA54\uB8EC', num:120,en:'Cameroon'} },\n [IOS3166_1_Code.CPV]: { description: '', data: {emoji:'\uD83C\uDDE8\uD83C\uDDFB', alpha2: 'CV', alpha3:'CPV', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/3/38/Flag_of_Cape_Verde.svg/40px-Flag_of_Cape_Verde.svg.png',ko:'\uCE74\uBCF4\uBCA0\uB974\uB370', num:132,en:'Cabo Verde'} },\n [IOS3166_1_Code.KAZ]: { description: '', data: {emoji:'\uD83C\uDDF0\uD83C\uDDFF', alpha2: 'KZ', alpha3:'KAZ', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/d/d3/Flag_of_Kazakhstan.svg/40px-Flag_of_Kazakhstan.svg.png',ko:'\uCE74\uC790\uD750\uC2A4\uD0C4', num:398,en:'Kazakhstan'} },\n [IOS3166_1_Code.QAT]: { description: '', data: {emoji:'\uD83C\uDDF6\uD83C\uDDE6', alpha2: 'QA', alpha3:'QAT', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/6/65/Flag_of_Qatar.svg/22px-Flag_of_Qatar.svg.png',ko:'\uCE74\uD0C0\uB974', num:634,en:'Qatar'} },\n [IOS3166_1_Code.KHM]: { description: '', data: {emoji:'\uD83C\uDDF0\uD83C\uDDED', alpha2: 'KH', alpha3:'KHM', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/8/83/Flag_of_Cambodia.svg/22px-Flag_of_Cambodia.svg.png',ko:'\uCE84\uBCF4\uB514\uC544', num:116,en:'Cambodia'} },\n [IOS3166_1_Code.CAN]: { description: '', data: {emoji:'\uD83C\uDDE8\uD83C\uDDE6', alpha2: 'CA', alpha3:'CAN', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/c/cf/Flag_of_Canada.svg/22px-Flag_of_Canada.svg.png',ko:'\uCE90\uB098\uB2E4', num:124,en:'Canada'} },\n [IOS3166_1_Code.KEN]: { description: '', data: {emoji:'\uD83C\uDDF0\uD83C\uDDEA', alpha2: 'KE', alpha3:'KEN', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/4/49/Flag_of_Kenya.svg/40px-Flag_of_Kenya.svg.png',ko:'\uCF00\uB0D0', num:404,en:'Kenya'} },\n [IOS3166_1_Code.CYM]: { description: '', data: {emoji:'\uD83C\uDDF0\uD83C\uDDFE', alpha2: 'KY', alpha3:'CYM', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/0/0f/Flag_of_the_Cayman_Islands.svg/22px-Flag_of_the_Cayman_Islands.svg.png',ko:'\uCF00\uC774\uB9E8 \uC81C\uB3C4', num:136,en:'Cayman Islands'} },\n [IOS3166_1_Code.COM]: { description: '', data: {emoji:'\uD83C\uDDF0\uD83C\uDDF2', alpha2: 'KM', alpha3:'COM', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/9/94/Flag_of_the_Comoros.svg/40px-Flag_of_the_Comoros.svg.png',ko:'\uCF54\uBAA8\uB85C', num:174,en:'Comoros'} },\n [IOS3166_1_Code.CRI]: { description: '', data: {emoji:'\uD83C\uDDE8\uD83C\uDDF7', alpha2: 'CR', alpha3:'CRI', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/f/f2/Flag_of_Costa_Rica.svg/40px-Flag_of_Costa_Rica.svg.png',ko:'\uCF54\uC2A4\uD0C0\uB9AC\uCE74', num:188,en:'Costa Rica'} },\n [IOS3166_1_Code.CCK]: { description: '', data: {emoji:'\uD83C\uDDE8\uD83C\uDDE8', alpha2: 'CC', alpha3:'CCK', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/7/74/Flag_of_the_Cocos_%28Keeling%29_Islands.svg/40px-Flag_of_the_Cocos_%28Keeling%29_Islands.svg.png',ko:'\uCF54\uCF54\uC2A4 \uC81C\uB3C4', num:166,en:'Cocos Islands'} },\n [IOS3166_1_Code.CIV]: { description: '', data: {emoji:'\uD83C\uDDE8\uD83C\uDDEE', alpha2: 'CI', alpha3:'CIV', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/f/fe/Flag_of_C%C3%B4te_d%27Ivoire.svg/40px-Flag_of_C%C3%B4te_d%27Ivoire.svg.png',ko:'\uCF54\uD2B8\uB514\uBD80\uC544\uB974', num:384,en:'Ivory Coast'} },\n [IOS3166_1_Code.COL]: { description: '', data: {emoji:'\uD83C\uDDE8\uD83C\uDDF4', alpha2: 'CO', alpha3:'COL', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/2/21/Flag_of_Colombia.svg/40px-Flag_of_Colombia.svg.png',ko:'\uCF5C\uB86C\uBE44\uC544', num:170,en:'Colombia'} },\n [IOS3166_1_Code.COG]: { description: '', data: {emoji:'\uD83C\uDDE8\uD83C\uDDEC', alpha2: 'CG', alpha3:'COG', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/9/92/Flag_of_the_Republic_of_the_Congo.svg/40px-Flag_of_the_Republic_of_the_Congo.svg.png',ko:'\uCF69\uACE0 \uACF5\uD654\uAD6D', num:178,en:'Republic of Congo'} },\n [IOS3166_1_Code.COD]: { description: '', data: {emoji:'\uD83C\uDDE8\uD83C\uDDE9', alpha2: 'CD', alpha3:'COD', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/6/6f/Flag_of_the_Democratic_Republic_of_the_Congo.svg/22px-Flag_of_the_Democratic_Republic_of_the_Congo.svg.png',ko:'\uCF69\uACE0 \uBBFC\uC8FC \uACF5\uD654\uAD6D', num:180,en:'Democratic Republic of the Congo'} },\n [IOS3166_1_Code.CUB]: { description: '', data: {emoji:'\uD83C\uDDE8\uD83C\uDDFA', alpha2: 'CU', alpha3:'CUB', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/b/bd/Flag_of_Cuba.svg/40px-Flag_of_Cuba.svg.png',ko:'\uCFE0\uBC14', num:192,en:'Cuba'} },\n [IOS3166_1_Code.KWT]: { description: '', data: {emoji:'\uD83C\uDDF0\uD83C\uDDFC', alpha2: 'KW', alpha3:'KWT', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/a/aa/Flag_of_Kuwait.svg/40px-Flag_of_Kuwait.svg.png',ko:'\uCFE0\uC6E8\uC774\uD2B8', num:414,en:'Kuwait'} },\n [IOS3166_1_Code.COK]: { description: '', data: {emoji:'\uD83C\uDDE8\uD83C\uDDF0', alpha2: 'CK', alpha3:'COK', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/3/35/Flag_of_the_Cook_Islands.svg/40px-Flag_of_the_Cook_Islands.svg.png',ko:'\uCFE1 \uC81C\uB3C4', num:184,en:'Cook Islands'} },\n [IOS3166_1_Code.CUW]: { description: '', data: {emoji:'\uD83C\uDDE8\uD83C\uDDFC', alpha2: 'CW', alpha3:'CUW', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/b/b1/Flag_of_Cura%C3%A7ao.svg/40px-Flag_of_Cura%C3%A7ao.svg.png',ko:'\uD034\uB77C\uC18C', num:531,en:'Cura\u00E7ao'} },\n [IOS3166_1_Code.HRV]: { description: '', data: {emoji:'\uD83C\uDDED\uD83C\uDDF7', alpha2: 'HR', alpha3:'HRV', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/1/1b/Flag_of_Croatia.svg/40px-Flag_of_Croatia.svg.png',ko:'\uD06C\uB85C\uC544\uD2F0\uC544', num:191,en:'Croatia'} },\n [IOS3166_1_Code.CXR]: { description: '', data: {emoji:'\uD83C\uDDE8\uD83C\uDDFD', alpha2: 'CX', alpha3:'CXR', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/6/67/Flag_of_Christmas_Island.svg/22px-Flag_of_Christmas_Island.svg.png',ko:'\uD06C\uB9AC\uC2A4\uB9C8\uC2A4\uC12C', num:162,en:'Christmas Island'} },\n [IOS3166_1_Code.KGZ]: { description: '', data: {emoji:'\uD83C\uDDF0\uD83C\uDDEC', alpha2: 'KG', alpha3:'KGZ', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/c/c7/Flag_of_Kyrgyzstan.svg/22px-Flag_of_Kyrgyzstan.svg.png',ko:'\uD0A4\uB974\uAE30\uC2A4\uC2A4\uD0C4', num:417,en:'Kyrgyzstan'} },\n [IOS3166_1_Code.KIR]: { description: '', data: {emoji:'\uD83C\uDDF0\uD83C\uDDEE', alpha2: 'KI', alpha3:'KIR', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/d/d3/Flag_of_Kiribati.svg/22px-Flag_of_Kiribati.svg.png',ko:'\uD0A4\uB9AC\uBC14\uC2DC', num:296,en:'Kiribati'} },\n [IOS3166_1_Code.CYP]: { description: '', data: {emoji:'\uD83C\uDDE8\uD83C\uDDFE', alpha2: 'CY', alpha3:'CYP', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/d/d4/Flag_of_Cyprus.svg/22px-Flag_of_Cyprus.svg.png',ko:'\uD0A4\uD504\uB85C\uC2A4', num:196,en:'Cyprus'} },\n [IOS3166_1_Code.TWN]: { description: '', data: {emoji:'\uD83C\uDDF9\uD83C\uDDFC', alpha2: 'TW', alpha3:'TWN', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/7/72/Flag_of_the_Republic_of_China.svg/40px-Flag_of_the_Republic_of_China.svg.png',ko:'\uB300\uB9CC', num:158,en:'Taiwan'} },\n [IOS3166_1_Code.TJK]: { description: '', data: {emoji:'\uD83C\uDDF9\uD83C\uDDEF', alpha2: 'TJ', alpha3:'TJK', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/d/d0/Flag_of_Tajikistan.svg/40px-Flag_of_Tajikistan.svg.png',ko:'\uD0C0\uC9C0\uD0A4\uC2A4\uD0C4', num:762,en:'Tajikistan'} },\n [IOS3166_1_Code.TZA]: { description: '', data: {emoji:'\uD83C\uDDF9\uD83C\uDDFF', alpha2: 'TZ', alpha3:'TZA', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/3/38/Flag_of_Tanzania.svg/40px-Flag_of_Tanzania.svg.png',ko:'\uD0C4\uC790\uB2C8\uC544', num:834,en:'Tanzania'} },\n [IOS3166_1_Code.THA]: { description: '', data: {emoji:'\uD83C\uDDF9\uD83C\uDDED', alpha2: 'TH', alpha3:'THA', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/a/a9/Flag_of_Thailand.svg/22px-Flag_of_Thailand.svg.png',ko:'\uD0DC\uAD6D', num:764,en:'Thailand'} },\n [IOS3166_1_Code.TCA]: { description: '', data: {emoji:'\uD83C\uDDF9\uD83C\uDDE8', alpha2: 'TC', alpha3:'TCA', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/a/a0/Flag_of_the_Turks_and_Caicos_Islands.svg/40px-Flag_of_the_Turks_and_Caicos_Islands.svg.png',ko:'\uD130\uD06C\uC2A4 \uCF00\uC774\uCEE4\uC2A4 \uC81C\uB3C4', num:796,en:'Turks and Caicos Islands'} },\n [IOS3166_1_Code.TUR]: { description: '', data: {emoji:'\uD83C\uDDF9\uD83C\uDDF7', alpha2: 'TR', alpha3:'TUR', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/b/b4/Flag_of_Turkey.svg/22px-Flag_of_Turkey.svg.png',ko:'\uD280\uB974\uD0A4\uC608', num:792,en:'Turkiye'} },\n [IOS3166_1_Code.TGO]: { description: '', data: {emoji:'\uD83C\uDDF9\uD83C\uDDEC', alpha2: 'TG', alpha3:'TGO', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/7/7a/Flag_of_Togo_%283-2%29.svg/40px-Flag_of_Togo_%283-2%29.svg.png',ko:'\uD1A0\uACE0', num:768,en:'Togo'} },\n [IOS3166_1_Code.TKL]: { description: '', data: {emoji:'\uD83C\uDDF9\uD83C\uDDF0', alpha2: 'TK', alpha3:'TKL', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/8/8e/Flag_of_Tokelau.svg/40px-Flag_of_Tokelau.svg.png',ko:'\uD1A0\uCF08\uB77C\uC6B0', num:772,en:'Tokelau'} },\n [IOS3166_1_Code.TON]: { description: '', data: {emoji:'\uD83C\uDDF9\uD83C\uDDF4', alpha2: 'TO', alpha3:'TON', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/9/9a/Flag_of_Tonga.svg/22px-Flag_of_Tonga.svg.png',ko:'\uD1B5\uAC00', num:776,en:'the whole house'} },\n [IOS3166_1_Code.TKM]: { description: '', data: {emoji:'\uD83C\uDDF9\uD83C\uDDF2', alpha2: 'TM', alpha3:'TKM', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/1/1b/Flag_of_Turkmenistan.svg/40px-Flag_of_Turkmenistan.svg.png',ko:'\uD22C\uB974\uD06C\uBA54\uB2C8\uC2A4\uD0C4', num:795,en:'Turkmenistan'} },\n [IOS3166_1_Code.TUV]: { description: '', data: {emoji:'\uD83C\uDDF9\uD83C\uDDFB', alpha2: 'TV', alpha3:'TUV', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/3/38/Flag_of_Tuvalu.svg/40px-Flag_of_Tuvalu.svg.png',ko:'\uD22C\uBC1C\uB8E8', num:798,en:'Tuvalu'} },\n [IOS3166_1_Code.TUN]: { description: '', data: {emoji:'\uD83C\uDDF9\uD83C\uDDF3', alpha2: 'TN', alpha3:'TUN', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/c/ce/Flag_of_Tunisia.svg/40px-Flag_of_Tunisia.svg.png',ko:'\uD280\uB2C8\uC9C0', num:788,en:'Tunisia'} },\n [IOS3166_1_Code.TTO]: { description: '', data: {emoji:'\uD83C\uDDF9\uD83C\uDDF9', alpha2: 'TT', alpha3:'TTO', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/6/64/Flag_of_Trinidad_and_Tobago.svg/40px-Flag_of_Trinidad_and_Tobago.svg.png',ko:'\uD2B8\uB9AC\uB2C8\uB2E4\uB4DC \uD1A0\uBC14\uACE0', num:780,en:'Trinidad and Tobago'} },\n [IOS3166_1_Code.PAN]: { description: '', data: {emoji:'\uD83C\uDDF5\uD83C\uDDE6', alpha2: 'PA', alpha3:'PAN', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/a/ab/Flag_of_Panama.svg/40px-Flag_of_Panama.svg.png',ko:'\uD30C\uB098\uB9C8', num:591,en:'Panama'} },\n [IOS3166_1_Code.PRY]: { description: '', data: {emoji:'\uD83C\uDDF5\uD83C\uDDFE', alpha2: 'PY', alpha3:'PRY', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/2/27/Flag_of_Paraguay.svg/40px-Flag_of_Paraguay.svg.png',ko:'\uD30C\uB77C\uACFC\uC774', num:600,en:'Paraguay'} },\n [IOS3166_1_Code.PAK]: { description: '', data: {emoji:'\uD83C\uDDF5\uD83C\uDDF0', alpha2: 'PK', alpha3:'PAK', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/3/32/Flag_of_Pakistan.svg/40px-Flag_of_Pakistan.svg.png',ko:'\uD30C\uD0A4\uC2A4\uD0C4', num:586,en:'Pakistan'} },\n [IOS3166_1_Code.PNG]: { description: '', data: {emoji:'\uD83C\uDDF5\uD83C\uDDEC', alpha2: 'PG', alpha3:'PNG', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/e/e3/Flag_of_Papua_New_Guinea.svg/22px-Flag_of_Papua_New_Guinea.svg.png',ko:'\uD30C\uD478\uC544\uB274\uAE30\uB2C8', num:598,en:'Papua New Guinea'} },\n [IOS3166_1_Code.PLW]: { description: '', data: {emoji:'\uD83C\uDDF5\uD83C\uDDFC', alpha2: 'PW', alpha3:'PLW', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/4/48/Flag_of_Palau.svg/22px-Flag_of_Palau.svg.png',ko:'\uD314\uB77C\uC6B0', num:585,en:'Palau'} },\n [IOS3166_1_Code.PSE]: { description: '', data: {emoji:'\uD83C\uDDF5\uD83C\uDDF8', alpha2: 'PS', alpha3:'PSE', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/0/00/Flag_of_Palestine.svg/40px-Flag_of_Palestine.svg.png',ko:'\uD314\uB808\uC2A4\uD0C0\uC778', num:275,en:'Palestine'} },\n [IOS3166_1_Code.FRO]: { description: '', data: {emoji:'\uD83C\uDDEB\uD83C\uDDF4', alpha2: 'FO', alpha3:'FRO', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/3/3c/Flag_of_the_Faroe_Islands.svg/40px-Flag_of_the_Faroe_Islands.svg.png',ko:'\uD398\uB85C \uC81C\uB3C4', num:234,en:'Faroe Islands'} },\n [IOS3166_1_Code.PER]: { description: '', data: {emoji:'\uD83C\uDDF5\uD83C\uDDEA', alpha2: 'PE', alpha3:'PER', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/c/cf/Flag_of_Peru.svg/40px-Flag_of_Peru.svg.png',ko:'\uD398\uB8E8', num:604,en:'Peru, Republic of'} },\n [IOS3166_1_Code.PRT]: { description: '', data: {emoji:'\uD83C\uDDF5\uD83C\uDDF9', alpha2: 'PT', alpha3:'PRT', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/5/5c/Flag_of_Portugal.svg/22px-Flag_of_Portugal.svg.png',ko:'\uD3EC\uB974\uD22C\uAC08', num:620,en:'Portugal'} },\n [IOS3166_1_Code.FLK]: { description: '', data: {emoji:'\uD83C\uDDEB\uD83C\uDDF0', alpha2: 'FK', alpha3:'FLK', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/8/83/Flag_of_the_Falkland_Islands.svg/40px-Flag_of_the_Falkland_Islands.svg.png',ko:'\uD3EC\uD074\uB79C\uB4DC \uC81C\uB3C4', num:238,en:'Falkland Islands'} },\n [IOS3166_1_Code.POL]: { description: '', data: {emoji:'\uD83C\uDDF5\uD83C\uDDF1', alpha2: 'PL', alpha3:'POL', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/1/12/Flag_of_Poland.svg/22px-Flag_of_Poland.svg.png',ko:'\uD3F4\uB780\uB4DC', num:616,en:'Poland'} },\n [IOS3166_1_Code.PRI]: { description: '', data: {emoji:'\uD83C\uDDF5\uD83C\uDDF7', alpha2: 'PR', alpha3:'PRI', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/2/28/Flag_of_Puerto_Rico.svg/40px-Flag_of_Puerto_Rico.svg.png',ko:'\uD478\uC5D0\uB974\uD1A0\uB9AC\uCF54', num:630,en:'Puerto Rico'} },\n [IOS3166_1_Code.FRA]: { description: '', data: {emoji:'\uD83C\uDDEB\uD83C\uDDF7', alpha2: 'FR', alpha3:'FRA', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/4/4a/Flag_of_France_%282024%E2%80%93present%29.svg/40px-Flag_of_France_%282024%E2%80%93present%29.svg.png',ko:'\uD504\uB791\uC2A4', num:250,en:'France'} },\n [IOS3166_1_Code.GUF]: { description: '', data: {emoji:'\uD83C\uDDEC\uD83C\uDDEB', alpha2: 'GF', alpha3:'GUF', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/2/29/Flag_of_French_Guiana.svg/22px-Flag_of_French_Guiana.svg.png',ko:'\uD504\uB791\uC2A4\uB839 \uAE30\uC544\uB098', num:254,en:'French Guiana'} },\n [IOS3166_1_Code.ATF]: { description: '', data: {emoji:'\uD83C\uDDF9\uD83C\uDDEB', alpha2: 'TF', alpha3:'ATF', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/a/a7/Flag_of_the_French_Southern_and_Antarctic_Lands.svg/22px-Flag_of_the_French_Southern_and_Antarctic_Lands.svg.png',ko:'\uD504\uB791\uC2A4\uB839 \uB0A8\uBC29 \uBC0F \uB0A8\uADF9 \uC9C0\uC5ED', num:260,en:'French Southern and Antarctic regions'} },\n [IOS3166_1_Code.PYF]: { description: '', data: {emoji:'\uD83C\uDDF5\uD83C\uDDEB', alpha2: 'PF', alpha3:'PYF', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/d/db/Flag_of_French_Polynesia.svg/22px-Flag_of_French_Polynesia.svg.png',ko:'\uD504\uB791\uC2A4\uB839 \uD3F4\uB9AC\uB124\uC2DC\uC544', num:258,en:'French Polynesia'} },\n [IOS3166_1_Code.FJI]: { description: '', data: {emoji:'\uD83C\uDDEB\uD83C\uDDEF', alpha2: 'FJ', alpha3:'FJI', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/b/ba/Flag_of_Fiji.svg/22px-Flag_of_Fiji.svg.png',ko:'\uD53C\uC9C0', num:242,en:'Fiji'} },\n [IOS3166_1_Code.FIN]: { description: '', data: {emoji:'\uD83C\uDDEB\uD83C\uDDEE', alpha2: 'FI', alpha3:'FIN', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/b/bc/Flag_of_Finland.svg/40px-Flag_of_Finland.svg.png',ko:'\uD540\uB780\uB4DC', num:246,en:'Finland'} },\n [IOS3166_1_Code.PHL]: { description: '', data: {emoji:'\uD83C\uDDF5\uD83C\uDDED', alpha2: 'PH', alpha3:'PHL', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/9/99/Flag_of_the_Philippines.svg/40px-Flag_of_the_Philippines.svg.png',ko:'\uD544\uB9AC\uD540', num:608,en:'Philippines'} },\n [IOS3166_1_Code.PCN]: { description: '', data: {emoji:'\uD83C\uDDF5\uD83C\uDDF3', alpha2: 'PN', alpha3:'PCN', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/8/88/Flag_of_the_Pitcairn_Islands.svg/22px-Flag_of_the_Pitcairn_Islands.svg.png',ko:'\uD54F\uCF00\uC5B8 \uC81C\uB3C4', num:612,en:'Pitcairn Islands'} },\n [IOS3166_1_Code.HMD]: { description: '', data: {emoji:'\uD83C\uDDED\uD83C\uDDF2', alpha2: 'HM', alpha3:'HMD', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/b/b9/Flag_of_Australia.svg/40px-Flag_of_Australia.svg.png',ko:'\uD5C8\uB4DC \uB9E5\uB3C4\uB110\uB4DC \uC81C\uB3C4', num:334,en:'the Heard MacDonald Islands'} },\n [IOS3166_1_Code.HUN]: { description: '', data: {emoji:'\uD83C\uDDED\uD83C\uDDFA', alpha2: 'HU', alpha3:'HUN', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/c/c1/Flag_of_Hungary.svg/40px-Flag_of_Hungary.svg.png',ko:'\uD5DD\uAC00\uB9AC', num:348,en:'Hungary'} },\n [IOS3166_1_Code.HKG]: { description: '', data: {emoji:'\uD83C\uDDED\uD83C\uDDF0', alpha2: 'HK', alpha3:'HKG', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/5/5b/Flag_of_Hong_Kong.svg/22px-Flag_of_Hong_Kong.svg.png',ko:'\uD64D\uCF69', num:344,en:'Hong Kong'} },\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\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> | ((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> | ((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 const isNotNullUndefined = <T>(data: T | null | undefined): data is NonNullable<T> => {\n return data !== null && data !== undefined;\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", "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", "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", "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", "export type WithRequiredProperty<Type, Key extends keyof Type> = Type & {\n [Property in Key]-?: Type[Property];\n};\nexport type Optional<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\nexport interface ConstructorType<T> {\n new (...args: any[]): T;\n}\nexport type Method = (...args: any[]) => any;\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};\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", "import { ValidUtils } from '../valid/ValidUtils';\nimport type { ConstructorType } from '../types';\nimport { isDefined } from '../types';\n\nexport namespace ObjectUtils {\n\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 }\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) || []).filter(it => it !== 'constructor').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) || []).filter(it => it !== 'constructor').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\n export const pickRandomKey = <T>(target: T): keyof T => {\n\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\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(Object.entries(value).filter(([_, v]) => v !== undefined && v !== null).map(([k, v]) => [k, cleanValue(v)])\n );\n } else {\n return Object.fromEntries(\n Object.entries(value).filter(([_, v]) => v !== undefined && v !== null)\n );\n }\n }\n return value;\n };\n\n return cleanValue(target) as T;\n };\n\n\n export namespace Path {\n export const isFunctionScript = (script: string): boolean => {\n return script.trim().startsWith('function');\n }\n\n export const isArrowFunctionScript = (script: string): boolean => {\n return /^\\s*\\([^)]*\\)\\s*=>/.test(script);\n }\n\n export const toOptionalChainPath = (path: string): string => {\n if (!path) {\n return '';\n }\n // Add this check for object literals\n if (path.trim().startsWith('{') && path.trim().endsWith('}')) {\n return path;\n }\n if (isFunctionScript(path) || isArrowFunctionScript(path)) {\n return path;\n }\n \n // Check for ternary operator pattern (? :)\n if (path.includes(' ? ') && path.includes(' : ')) {\n // Handle ternary operator - only convert property access parts, not the ternary operator itself\n const parts = path.split(/(\\s+\\?\\s+|\\s+:\\s+)/);\n const result = parts.map((part, index) => {\n // Only process the first part (before ?) for optional chaining\n if (index === 0) {\n const tokens = part.match(/[^?.[\\]]+|\\[[^\\]]*\\]/g);\n if (tokens && tokens.length > 1) {\n return tokens.join('?.');\n }\n }\n return part;\n });\n return result.join('');\n }\n \n // Handle function calls by processing the entire path with regex replacement\n if (path.includes('(')) {\n // Replace function calls with a placeholder, process the path, then restore function calls\n const functionCallMatches: Array<{original: string, processed: string, placeholder: string}> = [];\n let tempPath = path;\n let counter = 0;\n \n // Find and process function calls with their arguments\n const functionCallRegex = /(\\w+)\\(([^()]*(?:\\([^()]*\\)[^()]*)*)\\)/g;\n let match;\n \n while ((match = functionCallRegex.exec(path)) !== null) {\n const fullMatch = match[0];\n const funcName = match[1];\n const funcArgs = match[2];\n const placeholder = `__FUNC_CALL_${counter}__`;\n \n // Process function arguments recursively\n const processedArgs = funcArgs ? toOptionalChainPath(funcArgs) : '';\n const processedFuncCall = `${funcName}?.(${processedArgs})`;\n \n functionCallMatches.push({\n original: fullMatch,\n processed: processedFuncCall,\n placeholder: placeholder\n });\n \n tempPath = tempPath.replace(fullMatch, placeholder);\n counter++;\n }\n \n // Process the path without function calls\n const tokens = tempPath.match(/[^?.[\\]]+|\\[[^\\]]*\\]/g);\n let processedPath = '';\n if (tokens && tokens.length > 1) {\n processedPath = tokens.join('?.');\n } else {\n processedPath = tempPath;\n }\n \n // Restore function calls\n for (const funcMatch of functionCallMatches) {\n processedPath = processedPath.replace(funcMatch.placeholder, funcMatch.processed);\n }\n \n return processedPath;\n }\n \n // Tokenize the path by '.', '[', ']', and '?' to handle property access and existing optional chaining.\n const tokens = path.match(/[^?.[\\]]+|\\[[^\\]]*\\]/g);\n if (!tokens) {\n return path; // Return original path if no tokens are found (e.g., path is just '.')\n }\n // Join tokens with '?.', effectively creating the optional chain path.\n return tokens.join('?.');\n };\n\n export const removeOptionalChainOperator = (path: string): string => {\n if (!path) {\n return '';\n }\n // Replace all optional chaining operators with standard ones.\n return path.replace(/\\?\\./g, '.').replace(/\\.\\[/g, '[');\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') { // 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 { // 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\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 // 전역 컨텍스트와 함께 실행\n const func = new Function('window', 'document', 'console', `\"use strict\"; ${script}; `);\n func.call(destUser, globalContext.window, globalContext.document, globalContext.console);\n } catch (e) {\n console.error('detectPathFromScript error:', 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.filter(it => isDefined(it)).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 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 { 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 jsonToMap = (jsonStr: any): Map<string, string> => {\n return new Map(JSON.parse(jsonStr));\n };\n\n\n export const decodeURIString = (data: string) => {\n return decodeURIComponent(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 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 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 // 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", "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 { Point2D } from './Point2D';\nimport { Rect } from './Rect';\nimport { Point2Ds } from './Point2Ds';\n\nexport class Ellipse extends Point2D {\n public radiusX: number;\n public radiusY: number;\n public rotation: number; // in radians\n public startAngle: number; // in radians\n public endAngle: number; // in radians\n\n constructor(x: number, y: number, radiusX: number, radiusY: number, rotation: number = 0, startAngle: number = 0, endAngle: number = 2 * Math.PI) {\n super(x, y);\n this.radiusX = radiusX;\n this.radiusY = radiusY;\n this.rotation = rotation;\n this.startAngle = startAngle;\n this.endAngle = endAngle;\n }\n\n isIn(point: Point2D): boolean {\n if (this.radiusX <= 0 || this.radiusY <= 0) {\n return false;\n }\n\n // 1. Translate point to ellipse's local coordinates\n const translatedX = point.x - this.x;\n const translatedY = point.y - this.y;\n\n // 2. Rotate the translated point backwards by the ellipse's rotation\n const cos = Math.cos(-this.rotation);\n const sin = Math.sin(-this.rotation);\n const localX = translatedX * cos - translatedY * sin;\n const localY = translatedX * sin + translatedY * cos;\n\n // 3. Check if the point is within the ellipse equation\n const isInsideEllipse = (localX * localX) / (this.radiusX * this.radiusX) + (localY * localY) / (this.radiusY * this.radiusY) <= 1;\n\n if (!isInsideEllipse) {\n return false;\n }\n\n // 4. Check if the point is within the start and end angles (for arcs)\n const angle = Math.atan2(localY, localX);\n\n // Normalize angle to be between 0 and 2*PI\n const normalizedAngle = angle < 0 ? angle + 2 * Math.PI : angle;\n\n if (this.startAngle < this.endAngle) {\n return normalizedAngle >= this.startAngle && normalizedAngle <= this.endAngle;\n } else { // For arcs that cross the 0-radian line (e.g., from 3/2 PI to 1/2 PI)\n return normalizedAngle >= this.startAngle || normalizedAngle <= this.endAngle;\n }\n }\n\n isOut(point: Point2D): boolean {\n return !this.isIn(point);\n }\n\n isOverlap(data: Point2D | Rect | Point2Ds | Ellipse): boolean {\n if (data instanceof Point2D) {\n return this.isIn(data);\n } else if (data instanceof Rect) {\n // This is a simplified check. For full accuracy, polygon-ellipse collision is needed.\n const rectAsPoints = new Point2Ds([data.leftTop, data.rightTop, data.rightBottom, data.leftBottom]);\n if (rectAsPoints.isOverlap(this)) return true;\n return this.toRect().isOverlap(data); // Check bounding boxes\n } else if (data instanceof Point2Ds) {\n return data.isOverlap(this);\n } else if ((data as any) instanceof Ellipse) {\n // This is a simplified check and doesn't handle all rotation cases perfectly.\n const distance = Math.sqrt(Math.pow(this.x - (data as Ellipse).x, 2) + Math.pow(this.y - (data as Ellipse).y, 2));\n const avgRadius1 = (this.radiusX + this.radiusY) / 2;\n const avgRadius2 = ((data as Ellipse).radiusX + (data as Ellipse).radiusY) / 2;\n return distance <= (avgRadius1 + avgRadius2);\n }\n return false;\n }\n\n toRect(): Rect {\n // Returns the axis-aligned bounding box for the ellipse (including rotation)\n if (this.rotation === 0) {\n return new Rect(this.x - this.radiusX, this.y - this.radiusY, this.radiusX * 2, this.radiusY * 2);\n }\n const angle = this.rotation;\n const cos = Math.cos(angle);\n const sin = Math.sin(angle);\n const w = this.radiusX;\n const h = this.radiusY;\n\n const extentsX = Math.sqrt(w * w * cos * cos + h * h * sin * sin);\n const extentsY = Math.sqrt(w * w * sin * sin + h * h * cos * cos);\n\n return new Rect(this.x - extentsX, this.y - extentsY, extentsX * 2, extentsY * 2);\n }\n}\n", "import { Point2D } from './Point2D';\nimport { Rect } from './Rect';\nimport { Ellipse } from './Ellipse';\n\nexport class Point2Ds {\n public points: Point2D[];\n\n constructor(points: Point2D[]) {\n this.points = points;\n }\n\n copy() {\n return new Point2Ds(this.points.map(p => p.copy()));\n }\n\n isIn(point: Point2D): boolean {\n let isInside = false;\n const n = this.points.length;\n\n for (let i = 0, j = n - 1; i < n; j = i++) {\n const p1 = this.points[i];\n const p2 = this.points[j];\n\n const intersect = ((p1.y > point.y) !== (p2.y > point.y))\n && (point.x < (p2.x - p1.x) * (point.y - p1.y) / (p2.y - p1.y) + p1.x);\n\n if (intersect) {\n isInside = !isInside;\n }\n }\n\n return isInside;\n }\n\n isOut(point: Point2D): boolean {\n return !this.isIn(point);\n }\n\n isOverlap(data: Point2D | Point2Ds | Rect | Ellipse): boolean {\n if (data instanceof Point2D) {\n return this.isIn(data);\n }\n\n if (data instanceof Ellipse) {\n return data.isOverlap(this);\n }\n\n const targetPoints = data instanceof Rect ? [data.leftTop, data.rightTop, data.rightBottom, data.leftBottom] : data.points;\n\n for (const point of targetPoints) {\n if (this.isIn(point)) {\n return true;\n }\n }\n\n for (const point of this.points) {\n if (data.isIn(point)) {\n return true;\n }\n }\n\n return false;\n }\n\n toRect(): Rect {\n if (this.points.length === 0) {\n return new Rect(0, 0, 0, 0);\n }\n\n let minX = this.points[0].x;\n let minY = this.points[0].y;\n let maxX = this.points[0].x;\n let maxY = this.points[0].y;\n\n for (let i = 1; i < this.points.length; i++) {\n const p = this.points[i];\n minX = Math.min(minX, p.x);\n minY = Math.min(minY, p.y);\n maxX = Math.max(maxX, p.x);\n maxY = Math.max(maxY, p.y);\n }\n\n return new Rect(minX, minY, maxX - minX, maxY - minY);\n }\n}", "export type Point2DType = {\n x: number;\n y: number;\n};\nexport const isPoint2DType = (obj: any): obj is Point2DType =>\n !!obj && typeof obj.x === 'number' && typeof obj.y === 'number';", "import { Point3D } from './Point3D';\nimport { Rect } from './Rect';\n\nexport class Point3Ds {\n public points: Point3D[];\n\n constructor(points: Point3D[]) {\n this.points = points;\n }\n\n copy(): Point3Ds {\n return new Point3Ds(this.points.map(p => p.copy()));\n }\n\n /**\n * Calculates the Axis-Aligned Bounding Box of the points.\n * An Axis-Aligned Bounding Box is the smallest box that contains all the points, aligned with the coordinate axes.\n * @returns An object with the minimum and maximum corner points of the box.\n */\n getAxisAlignedBoundingBox(): { min: Point3D, max: Point3D } {\n if (this.points.length === 0) {\n return { min: new Point3D(0, 0, 0), max: new Point3D(0, 0, 0) };\n }\n\n const min = this.points[0].copy();\n const max = this.points[0].copy();\n\n for (let i = 1; i < this.points.length; i++) {\n const p = this.points[i];\n min.x = Math.min(min.x, p.x);\n min.y = Math.min(min.y, p.y);\n min.z = Math.min(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.z);\n }\n\n return { min, max };\n }\n\n /**\n * Checks if a point is inside the Axis-Aligned Bounding Box of this set of points.\n * Note: This is a check against the bounding box, not the exact shape of the polyhedron.\n * @param point The point to check.\n * @returns True if the point is inside the bounding box, false otherwise.\n */\n isIn(point: Point3D): boolean {\n if (this.points.length === 0) {\n return false;\n }\n const { min, max } = this.getAxisAlignedBoundingBox();\n return (\n point.x >= min.x && point.x <= max.x &&\n point.y >= min.y && point.y <= max.y &&\n point.z >= min.z && point.z <= max.z\n );\n }\n\n /**\n * Checks if a point is outside the Axis-Aligned Bounding Box of this set of points.\n * @param point The point to check.\n * @returns True if the point is outside the bounding box, false otherwise.\n */\n isOut(point: Point3D): boolean {\n return !this.isIn(point);\n }\n\n /**\n * Checks for overlap with another 3D object based on their Axis-Aligned Bounding Boxes.\n * @param data The object to check for overlap with (Point3D or Point3Ds).\n * @returns True if their bounding boxes overlap, false otherwise.\n */\n isOverlap(data: Point3D | Point3Ds): boolean {\n if (data instanceof Point3D) {\n return this.isIn(data);\n }\n\n if (data instanceof Point3Ds) {\n if (this.points.length === 0 || data.points.length === 0) {\n return false;\n }\n const a = this.getAxisAlignedBoundingBox();\n const b = data.getAxisAlignedBoundingBox();\n\n // Check for overlap on each axis\n const xOverlap = a.min.x <= b.max.x && a.max.x >= b.min.x;\n const yOverlap = a.min.y <= b.max.y && a.max.y >= b.min.y;\n const zOverlap = a.min.z <= b.max.z && a.max.z >= b.min.z;\n\n return xOverlap && yOverlap && zOverlap;\n }\n\n return false;\n }\n\n toRect(): Rect {\n if (this.points.length === 0) {\n return new Rect(0, 0, 0, 0);\n }\n\n const { min, max } = this.getAxisAlignedBoundingBox();\n return new Rect(min.x, min.y, max.x - min.x, max.y - min.y);\n }\n}\n", "export type Point3DType = {\n x: number;\n y: number;\n z: number;\n};\nexport const isPoint3DType = (obj: any): obj is Point3DType =>\n !!obj && typeof obj.x === 'number' && typeof obj.y === 'number' && typeof obj.z === 'number';", "import { Point2D } from './Point2D';\nimport { Rect } from './Rect';\nimport { Ellipse } from './Ellipse';\nimport { Point2Ds } from './Point2Ds';\n\n/**\n * Represents a polygon, a closed shape defined by a sequence of connected points.\n * This class uses the Point2Ds class for its core geometric calculations.\n */\nexport class Polygon {\n /**\n * An instance of Point2Ds used for geometric calculations.\n * @private\n */\n private _point2ds: Point2Ds;\n\n /**\n * Creates a new Polygon instance.\n * @param points An array of Point2D objects representing the vertices of the polygon in order.\n */\n constructor(points: Point2D[]) {\n this._point2ds = new Point2Ds(points);\n }\n\n get point2ds() {\n return this._point2ds.points;\n }\n\n\n /**\n * Creates a deep copy of this polygon.\n * @returns A new Polygon instance with the same points.\n */\n copy(): Polygon {\n return new Polygon(this._point2ds.points.map(p => p.copy()));\n }\n\n /**\n * Checks if a given point is inside the polygon.\n * Uses the ray-casting algorithm.\n * @param point The point to check.\n * @returns True if the point is inside the polygon, false otherwise.\n */\n isIn(point: Point2D): boolean {\n return this._point2ds.isIn(point);\n }\n\n /**\n * Checks if a given point is outside the polygon.\n * @param point The point to check.\n * @returns True if the point is outside the polygon, false otherwise.\n */\n isOut(point: Point2D): boolean {\n return !this.isIn(point);\n }\n\n /**\n * Checks if this polygon overlaps with another geometric shape.\n * This check is based on vertex containment and may not cover all edge-crossing scenarios without vertex containment.\n * @param data The geometric shape to check for overlap with (Point2D, Rect, Ellipse, or another Polygon).\n * @returns True if the shapes overlap, false otherwise.\n */\n isOverlap(data: Point2D | Rect | Ellipse | Polygon): boolean {\n if (data instanceof Polygon) {\n // Check for overlap with another Polygon by using their underlying Point2Ds instances.\n return this._point2ds.isOverlap(data._point2ds);\n }\n // For other shapes, delegate the check to the Point2Ds instance.\n return this._point2ds.isOverlap(data);\n }\n\n /**\n * Calculates the axis-aligned bounding box of the polygon.\n * @returns A Rect representing the smallest rectangle that contains all vertices of the polygon.\n */\n toRect(): Rect {\n return this._point2ds.toRect();\n }\n}\n", "export class Scalar {\n private _value: number;\n\n constructor(value: number = 0) {\n this._value = value;\n }\n\n // \uAC12 \uAC00\uC838\uC624\uAE30\n get value(): number {\n return this._value;\n }\n\n // \uAC12 \uC124\uC815\uD558\uAE30\n set value(value: number) {\n this._value = value;\n }\n\n // \uAC12 \uC9C1\uC811 \uC124\uC815\n public set(value: number): Scalar {\n this._value = value;\n return this;\n }\n\n // \uAC12 \uBCF5\uC0AC\uD574\uC11C \uC0C8 \uC778\uC2A4\uD134\uC2A4 \uBC18\uD658\n public get(): Scalar {\n return new Scalar(this._value);\n }\n\n // \uB367\uC148\n public add(value: number | Scalar): Scalar {\n if (value instanceof Scalar) {\n this._value += value.value;\n } else {\n this._value += value;\n }\n return this;\n }\n\n public static add(s1: Scalar, s2: Scalar): Scalar {\n return new Scalar(s1.value + s2.value);\n }\n\n // \uBE84\uC148\n public sub(value: number | Scalar): Scalar {\n if (value instanceof Scalar) {\n this._value -= value.value;\n } else {\n this._value -= value;\n }\n return this;\n }\n\n public static sub(s1: Scalar, s2: Scalar): Scalar {\n return new Scalar(s1.value - s2.value);\n }\n\n // \uACF1\uC148\n public mult(value: number | Scalar): Scalar {\n if (value instanceof Scalar) {\n this._value *= value.value;\n } else {\n this._value *= value;\n }\n return this;\n }\n\n public static mult(s1: Scalar, s2: Scalar): Scalar {\n return new Scalar(s1.value * s2.value);\n }\n\n // \uB098\uB217\uC148\n public div(value: number | Scalar): Scalar {\n if (value instanceof Scalar) {\n if (value.value === 0) throw new Error(\"Division by zero\");\n this._value /= value.value;\n } else {\n if (value === 0) throw new Error(\"Division by zero\");\n this._value /= value;\n }\n return this;\n }\n\n public static div(s1: Scalar, s2: Scalar): Scalar {\n if (s2.value === 0) throw new Error(\"Division by zero\");\n return new Scalar(s1.value / s2.value);\n }\n\n // \uC808\uB313\uAC12\n public abs(): Scalar {\n this._value = Math.abs(this._value);\n return this;\n }\n\n public static abs(s: Scalar): Scalar {\n return new Scalar(Math.abs(s.value));\n }\n\n // \uBB38\uC790\uC5F4\uB85C \uBCC0\uD658\n public toString(): string {\n return `${this._value}`;\n }\n\n // \uC22B\uC790\uB85C \uBCC0\uD658\n public toNumber(): number {\n return this._value;\n }\n}", "import { Polygon } from './Polygon';\nimport { Rect } from './Rect';\nimport { Point2D } from './Point2D';\nimport { Ellipse } from './Ellipse';\n\n/**\n * Manages a collection of Polygon objects, providing methods for aggregation and spatial queries.\n * It also maintains an overall bounding box for the contained polygons.\n */\nexport class WrapPolygons {\n private _polygons: Set<Polygon>;\n private _x: number;\n private _y: number;\n private _width: number;\n private _height: number;\n private _initialX: number; // Added\n private _initialY: number; // Added\n private _initialWidth: number; // Added\n private _initialHeight: number; // Added\n\n /**\n * Creates a new WrapPolygons instance.\n * @param x The initial x-coordinate of the overall bounding box.\n * @param y The initial y-coordinate of the overall bounding box.\n * @param width The initial width of the overall bounding box.\n * @param height The initial height of the overall bounding box.\n * @param polygons An array of Polygon objects to initialize the collection.\n */\n constructor(\n x: number = 0,\n y: number = 0,\n width: number = 0,\n height: number = 0,\n polygons: Polygon[] = []\n ) {\n this._polygons = new Set(polygons);\n\n // Store the initial bounds provided\n this._initialX = x; // Stored\n this._initialY = y; // Stored\n this._initialWidth = width; // Stored\n this._initialHeight = height; // Stored\n\n // Initialize _x, _y, _width, _height with the provided initial bounds.\n // These will be updated by _calculateOverallBounds based on actual polygons.\n this._x = x;\n this._y = y;\n this._width = width;\n this._height = height;\n\n // Calculate and set the initial overall bounds based on the provided polygons and initial bounds.\n this._calculateOverallBounds();\n }\n\n get polygons() {\n return Array.from(this._polygons.values());\n }\n\n get x() {\n return this._x;\n }\n\n set x(value: number) {\n if (this._x === value) return;\n const offsetX = value - this._x;\n this._x = value;\n this._applyTranslationToPoints(offsetX, 0);\n }\n\n get y() {\n return this._y;\n }\n\n set y(value: number) {\n if (this._y === value) return;\n const offsetY = value - this._y;\n this._y = value;\n this._applyTranslationToPoints(0, offsetY);\n }\n\n get width() {\n return this._width;\n }\n\n set width(value: number) {\n if (this._width === value) return;\n const oldWidth = this._width;\n this._width = value;\n\n if (oldWidth === 0) {\n console.warn(\"Cannot scale polygons proportionally if old width was 0.\");\n return;\n }\n const scaleX = this._width / oldWidth;\n this._applyScalingToPoints(scaleX, 1, this._x, this._y);\n }\n\n get height() {\n return this._height;\n }\n\n set height(value: number) {\n if (this._height === value) return;\n const oldHeight = this._height;\n this._height = value;\n\n if (oldHeight === 0) {\n console.warn(\"Cannot scale polygons proportionally if old height was 0.\");\n return;\n }\n const scaleY = this._height / oldHeight;\n this._applyScalingToPoints(1, scaleY, this._x, this._y);\n }\n\n /**\n * Recalculates the overall bounding box (x, y, width, height) of all contained polygons.\n * This method should be called after adding or removing polygons if the bounds need to be updated.\n * @private\n */\n private _calculateOverallBounds(): void {\n if (this.polygons.length === 0) {\n // If no polygons, revert to initial bounds\n this._x = this._initialX;\n this._y = this._initialY;\n this._width = this._initialWidth;\n this._height = this._initialHeight;\n return;\n }\n\n let minX = Infinity;\n let minY = Infinity;\n let maxX = -Infinity;\n let maxY = -Infinity;\n\n for (const polygon of this.polygons) {\n const rect = polygon.toRect();\n minX = Math.min(minX, rect.x);\n minY = Math.min(minY, rect.y);\n maxX = Math.max(maxX, rect.x + rect.width);\n maxY = Math.max(maxY, rect.y + rect.height);\n }\n\n // Ensure the bounds are at least as large as the initial bounds\n minX = Math.min(minX, this._initialX);\n minY = Math.min(minY, this._initialY);\n maxX = Math.max(maxX, this._initialX + this._initialWidth);\n maxY = Math.max(maxY, this._initialY + this._initialHeight);\n\n this._x = minX;\n this._y = minY;\n this._width = maxX - minX;\n this._height = maxY - minY;\n }\n\n /**\n * Applies translation to all Point2D objects within the polygons.\n * @param offsetX The amount to translate along the x-axis.\n * @param offsetY The amount to translate along the y-axis.\n * @private\n */\n private _applyTranslationToPoints(offsetX: number, offsetY: number): void {\n if (offsetX === 0 && offsetY === 0) return;\n for (const polygon of Array.from(this.polygons)) {\n // Assuming Polygon has a private 'point2ds' property which is a Point2ds object\n // And Point2ds has a 'points' array of Point2D objects\n for (const point of polygon['point2ds']) {\n point.x += offsetX;\n point.y += offsetY;\n }\n }\n }\n\n /**\n * Applies scaling to all Point2D objects within the polygons relative to a given origin.\n * @param scaleX The scaling factor along the x-axis.\n * @param scaleY The scaling factor along the y-axis.\n * @param originX The x-coordinate of the scaling origin.\n * @param originY The y-coordinate of the scaling origin.\n * @private\n */\n private _applyScalingToPoints(scaleX: number, scaleY: number, originX: number, originY: number): void {\n if (scaleX === 1 && scaleY === 1) return;\n for (const polygon of Array.from(this.polygons)) {\n for (const point of polygon['point2ds']) {\n // Translate point so origin is at (0,0)\n const translatedX = point.x - originX;\n const translatedY = point.y - originY;\n\n // Scale\n const scaledX = translatedX * scaleX;\n const scaledY = translatedY * scaleY;\n\n // Translate back\n point.x = scaledX + originX;\n point.y = scaledY + originY;\n }\n }\n }\n\n /**\n * Adds one or more polygons to the collection and updates the overall bounds.\n * @param newPolygons The Polygon objects to add. \n */\n add(...newPolygons: Polygon[]): void {\n newPolygons.forEach(polygon => this._polygons.add(polygon));\n this._calculateOverallBounds();\n }\n\n /**\n * Removes a specific polygon from the collection and updates the overall bounds.\n * @param polygonToRemove The Polygon object to remove.\n */\n remove(polygonToRemove: Polygon): void {\n if (this._polygons.delete(polygonToRemove)) {\n this._calculateOverallBounds();\n }\n }\n\n /**\n * Creates a deep copy of this WrapPolygons instance, including copies of all contained polygons.\n * @returns A new WrapPolygons instance.\n */\n copy(): WrapPolygons {\n return new WrapPolygons(\n this._initialX,\n this._initialY,\n this._initialWidth,\n this._initialHeight,\n Array.from(this.polygons).map(p => p.copy())\n );\n }\n\n /**\n * Checks if a given point is inside any of the polygons in the collection.\n * @param point The point to check.\n * @returns True if the point is inside at least one polygon, false otherwise.\n */\n isIn(point: Point2D): boolean {\n for (const polygon of Array.from(this.polygons)) {\n if (polygon.isIn(point)) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Checks if a given point is outside all polygons in the collection.\n * @param point The point to check.\n * @returns True if the point is outside all polygons, false otherwise.\n */\n isOut(point: Point2D): boolean {\n return !this.isIn(point);\n }\n\n /**\n * Checks for overlap between this collection of polygons and another geometric shape.\n * @param data The geometric shape to check for overlap with (Point2D, Rect, Ellipse, or another WrapPolygons).\n * @returns True if any polygon in the collection overlaps with the given shape, false otherwise.\n */\n isOverlap(data: Point2D | Rect | Ellipse | WrapPolygons): boolean {\n if (data instanceof Point2D) {\n return this.isIn(data);\n }\n\n if (data instanceof WrapPolygons) {\n for (const p1 of Array.from(this.polygons)) {\n for (const p2 of Array.from(data.polygons)) {\n if (p1.isOverlap(p2)) {\n return true;\n }\n }\n }\n return false;\n }\n\n // For other shapes, check each polygon individually\n for (const polygon of Array.from(this.polygons)) {\n if (polygon.isOverlap(data)) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Returns a Rect representing the overall axis-aligned bounding box of all polygons in the collection.\n * @returns A Rect object.\n */\n toRect(): Rect {\n return new Rect(this.x, this.y, this.width, this.height);\n }\n\n /**\n * Returns a Rect representing the overall axis-aligned bounding box of only the contained polygons,\n * without considering the initial bounds of the WrapPolygons instance.\n * @returns A Rect object. Returns a Rect at (0,0) with 0 width/height if no polygons are present.\n */\n getContainedPolygonsOverallBounds(): Rect {\n if (this._polygons.size === 0) {\n return new Rect(0, 0, 0, 0);\n }\n\n let minX = Infinity;\n let minY = Infinity;\n let maxX = -Infinity;\n let maxY = -Infinity;\n\n for (const polygon of Array.from(this._polygons)) {\n const rect = polygon.toRect();\n minX = Math.min(minX, rect.x);\n minY = Math.min(minY, rect.y);\n maxX = Math.max(maxX, rect.x + rect.width);\n maxY = Math.max(maxY, rect.y + rect.height);\n }\n\n return new Rect(minX, minY, maxX - minX, maxY - minY);\n }\n\n /**\n * Filters the polygons in the collection, returning a new WrapPolygons instance\n * containing only those polygons that are entirely contained within the target Rect.\n * @param targetRect The Rect to check containment against.\n * @returns A new WrapPolygons instance with filtered polygons.\n */\n filterPolygonsIn(targetRect: Rect): WrapPolygons {\n const filtered = Array.from(this.polygons).filter(p => targetRect.isIn(p.toRect())); // Simplified: checks bounding box containment\n return new WrapPolygons(\n this._initialX,\n this._initialY,\n this._initialWidth,\n this._initialHeight,\n filtered\n );\n }\n\n /**\n * Filters the polygons in the collection, returning a new WrapPolygons instance\n * containing only those polygons that do not overlap with the target Rect.\n * @param targetRect The Rect to check non-overlap against.\n * @returns A new WrapPolygons instance with filtered polygons.\n */\n filterPolygonsOut(targetRect: Rect): WrapPolygons {\n const filtered = Array.from(this.polygons).filter(p => !p.isOverlap(targetRect));\n return new WrapPolygons(\n this._initialX,\n this._initialY,\n this._initialWidth,\n this._initialHeight,\n filtered\n );\n }\n\n /**\n * Filters the polygons in the collection, returning a new WrapPolygons instance\n * containing only those polygons that overlap with the target Rect.\n * @param targetRect The Rect to check overlap against.\n * @returns A new WrapPolygons instance with filtered polygons.\n */\n filterPolygonsOverlap(targetRect: Rect): WrapPolygons {\n const filtered = Array.from(this.polygons).filter(p => p.isOverlap(targetRect));\n return new WrapPolygons(\n this._initialX,\n this._initialY,\n this._initialWidth,\n this._initialHeight,\n filtered\n );\n }\n\n /**\n * Merges a new polygon with existing polygons in the collection if they overlap or are within a certain proximity.\n * If no overlap/proximity is found, the new polygon is simply added.\n * @param newPolygon The Polygon to merge or add. \n * @param mergeThresholdPx The maximum distance (in pixels) for polygons to be considered for merging. Default is 0.\n */\n merge(newPolygon: Polygon, mergeThresholdPx: number = 0): boolean {\n const newPolygonRect = newPolygon.toRect();\n // Expand the new polygon's bounding box by the threshold for proximity check\n const expandedNewPolygonRect = new Rect(\n newPolygonRect.x - mergeThresholdPx,\n newPolygonRect.y - mergeThresholdPx,\n newPolygonRect.width + (2 * mergeThresholdPx),\n newPolygonRect.height + (2 * mergeThresholdPx)\n );\n\n let merged = false;\n const polygonsToMerge: Polygon[] = [];\n const remainingPolygons: Polygon[] = [];\n\n // Find all existing polygons that overlap with the expanded newPolygonRect\n for (const existingPolygon of Array.from(this.polygons)) {\n if (existingPolygon.isOverlap(expandedNewPolygonRect)) {\n polygonsToMerge.push(existingPolygon);\n } else {\n remainingPolygons.push(existingPolygon);\n }\n }\n\n if (polygonsToMerge.length > 0) {\n // If there are polygons to merge, combine all their points with the newPolygon's points\n let allPoints: Point2D[] = [];\n // Add points from the new polygon\n // Accessing private point2ds directly for its points array\n allPoints.push(...newPolygon['point2ds']);\n\n // Add points from all overlapping existing polygons\n for (const p of polygonsToMerge) {\n allPoints.push(...p['point2ds']);\n }\n\n // Create a new Polygon from the combined points\n // Note: This simple combination of points might not result in a geometrically correct union\n // for complex polygons (e.g., self-intersections, holes).\n // For a robust solution, a dedicated polygon union algorithm would be needed.\n const combinedPolygon = new Polygon(allPoints);\n\n // Clear existing polygons and add the new combined one\n this._polygons.clear();\n this.add(...remainingPolygons, combinedPolygon); // Add remaining and the new combined polygon\n merged = true;\n } else {\n // No overlap/proximity, just add the new polygon\n this.add(newPolygon);\n }\n\n this._calculateOverallBounds(); // Recalculate overall bounds after merge/add\n return merged;\n }\n}", "import { Rect } from './Rect';\nimport { SizeType } from './SizeType';\nimport { ArrayUtils } from '../array/ArrayUtils';\nimport { Point2D } from './Point2D';\nimport { Ellipse } from './Ellipse';\n\nexport class WrapRects {\n public rects: Set<Rect>;\n private _x: number;\n private _y: number;\n private _width: number;\n private _height: number;\n private _initialX: number;\n private _initialY: number;\n private _initialWidth: number;\n private _initialHeight: number;\n\n constructor(x: number, y: number, width: number, height: number, rects: Rect[] = []) {\n this._initialX = x;\n this._initialY = y;\n this._initialWidth = width;\n this._initialHeight = height;\n\n // Initialize _x, _y, _width, _height with the provided initial bounds.\n // These will be updated by _updateContentBounds based on actual rects.\n this._x = x;\n this._y = y;\n this._width = width;\n this._height = height;\n\n this.rects = new Set();\n // Add rects directly without transformation in the constructor\n rects.forEach(rect => this.rects.add(rect));\n\n // Ensure the overall bounds are correctly set after initial rects are processed\n // This will calculate the actual bounds of the contained rects and ensure they are not smaller than initial bounds.\n const currentOverallBounds = this._updateContentBounds();\n this._x = currentOverallBounds.x;\n this._y = currentOverallBounds.y;\n this._width = currentOverallBounds.width;\n this._height = currentOverallBounds.height;\n }\n\n private _updateContentBounds(): Rect {\n if (this.rects.size === 0) {\n // If no rects, revert to initial bounds\n return new Rect(this._initialX, this._initialY, this._initialWidth, this._initialHeight);\n }\n\n let minX = Infinity;\n let minY = Infinity;\n let maxX = -Infinity;\n let maxY = -Infinity;\n\n for (const r of Array.from(this.rects)) {\n minX = Math.min(minX, r.x);\n minY = Math.min(minY, r.y);\n maxX = Math.max(maxX, r.x + r.width);\n maxY = Math.max(maxY, r.y + r.height);\n }\n\n // Ensure the bounds are at least as large as the initial bounds\n minX = Math.min(minX, this._initialX);\n minY = Math.min(minY, this._initialY);\n maxX = Math.max(maxX, this._initialX + this._initialWidth);\n maxY = Math.max(maxY, this._initialY + this._initialHeight);\n\n return new Rect(minX, minY, maxX - minX, maxY - minY);\n }\n\n get x() {\n return this._x;\n }\n\n set x(value: number) {\n if (this._x === value) return;\n const offsetX = value - this._x;\n this._x = value;\n this._applyTranslationToRects(offsetX, 0);\n }\n\n get y() {\n return this._y;\n }\n\n set y(value: number) {\n if (this._y === value) return;\n const offsetY = value - this._y;\n this._y = value;\n this._applyTranslationToRects(0, offsetY);\n }\n\n get width() {\n return this._width;\n }\n\n set width(value: number) {\n if (this._width === value) return;\n const oldWidth = this._width;\n this._width = value;\n\n if (oldWidth === 0) {\n console.warn(\"Cannot scale rects proportionally if old width was 0.\");\n return;\n }\n const scaleX = this._width / oldWidth;\n this._applyScalingToRects(scaleX, 1, this._x, this._y);\n }\n\n get height() {\n return this._height;\n }\n\n set height(value: number) {\n if (this._height === value) return;\n const oldHeight = this._height;\n this._height = value;\n\n if (oldHeight === 0) {\n console.warn(\"Cannot scale rects proportionally if old height was 0.\");\n return;\n }\n const scaleY = this._height / oldHeight;\n this._applyScalingToRects(1, scaleY, this._x, this._y);\n }\n\n private _applyTranslationToRects(offsetX: number, offsetY: number): void {\n if (offsetX === 0 && offsetY === 0) return;\n for (const rect of Array.from(this.rects)) {\n rect.x += offsetX;\n rect.y += offsetY;\n }\n }\n\n private _applyScalingToRects(scaleX: number, scaleY: number, originX: number, originY: number): void {\n if (scaleX === 1 && scaleY === 1) return;\n for (const rect of Array.from(this.rects)) {\n // Translate rect so origin is at (0,0)\n const translatedX = rect.x - originX;\n const translatedY = rect.y - originY;\n\n // Scale position\n const scaledX = translatedX * scaleX;\n const scaledY = translatedY * scaleY;\n\n // Scale dimensions\n rect.width *= scaleX;\n rect.height *= scaleY;\n\n // Translate back\n rect.x = scaledX + originX;\n rect.y = scaledY + originY;\n }\n }\n\n add(...newRects: Rect[]): void {\n newRects.forEach(rect => this.rects.add(rect));\n // Note: _updateContentBounds now only calculates and returns the bounds, it doesn't set this.x,y,width,height\n // The setters for x,y,width,height are responsible for applying transformations to internal rects.\n // So, after adding new rects, we need to ensure the overall bounds are updated.\n const currentOverallBounds = this._updateContentBounds();\n this._x = currentOverallBounds.x;\n this._y = currentOverallBounds.y;\n this._width = currentOverallBounds.width;\n this._height = currentOverallBounds.height;\n }\n\n remove(rectToRemove: Rect): void {\n if (this.rects.delete(rectToRemove)) {\n const currentOverallBounds = this._updateContentBounds();\n this._x = currentOverallBounds.x;\n this._y = currentOverallBounds.y;\n this._width = currentOverallBounds.width;\n this._height = currentOverallBounds.height;\n }\n }\n\n getContainedRectsOverallBounds(): Rect {\n if (this.rects.size === 0) {\n return new Rect(0, 0, 0, 0);\n }\n\n let minX = Infinity;\n let minY = Infinity;\n let maxX = -Infinity;\n let maxY = -Infinity;\n\n for (const r of Array.from(this.rects)) {\n minX = Math.min(minX, r.x);\n minY = Math.min(minY, r.y);\n maxX = Math.max(maxX, r.x + r.width);\n maxY = Math.max(maxY, r.y + r.height);\n }\n\n return new Rect(minX, minY, maxX - minX, maxY - minY);\n }\n\n copy(): WrapRects {\n return new WrapRects(\n this._initialX,\n this._initialY,\n this._initialWidth,\n this._initialHeight,\n Array.from(this.rects).map(r => r.copy())\n );\n }\n\n // \uC815\uD655\uD558\uAC8C \uB098\uC758 \uC548\uCABD\uC5D0 \uC11C\uB9CC \uC788\uB294\uAC70\n toFilterRectsIn(targetRect: Rect): WrapRects {\n const filteredRects = Array.from(this.rects).filter(r => targetRect.isIn(r));\n return new WrapRects(\n this._initialX,\n this._initialY,\n this._initialWidth,\n this._initialHeight,\n filteredRects\n );\n }\n\n toFilterRectsOut(targetRect: Rect): WrapRects {\n const filteredRects = Array.from(this.rects).filter(r => !targetRect.isOverlap(r));\n return new WrapRects(\n this._initialX,\n this._initialY,\n this._initialWidth,\n this._initialHeight,\n filteredRects\n );\n }\n\n // \uB0B4\uAC00 \uD3EC\uD568\uD55C\uACF3\uC5D0 \uACB9\uCCD0\uC788\uB294\uAC70\n toFilterRectsOverlap(targetRect: Rect): WrapRects {\n const filteredRects = Array.from(this.rects).filter(r => targetRect.isOverlap(r));\n return new WrapRects(\n this._initialX,\n this._initialY,\n this._initialWidth,\n this._initialHeight,\n filteredRects\n );\n }\n\n findEmptySpace(size: SizeType, searchArea?: Rect): Rect | null {\n const bounds = searchArea || new Rect(this.x, this.y, this.width, this.height);\n const step = 1; // Check every 1 unit\n\n for (let y = bounds.y; y < bounds.y + bounds.height - size.height; y += step) {\n for (let x = bounds.x; x < bounds.x + bounds.width - size.width; x += step) {\n const candidateRect = new Rect(x, y, size.width, size.height);\n let overlaps = false;\n for (const existingRect of Array.from(this.rects)) {\n if (candidateRect.isOverlap(existingRect)) {\n overlaps = true;\n break;\n }\n }\n if (!overlaps) {\n return candidateRect;\n }\n }\n }\n return null;\n }\n\n findRandomEmptySpace(size: SizeType, searchArea?: Rect, maxAttempts: number = 100): Rect | null {\n const bounds = searchArea || new Rect(this.x, this.y, this.width, this.height);\n\n for (let i = 0; i < maxAttempts; i++) {\n const randomX = Math.random() * (bounds.width - size.width) + bounds.x;\n const randomY = Math.random() * (bounds.height - size.height) + bounds.y;\n const candidateRect = new Rect(randomX, randomY, size.width, size.height);\n\n let overlaps = false;\n for (const existingRect of Array.from(this.rects.values())) {\n if (candidateRect.isOverlap(existingRect)) {\n overlaps = true;\n break;\n }\n }\n if (!overlaps) {\n return candidateRect;\n }\n }\n return null;\n }\n\n\n addRandomEmptySpaces(sizes: SizeType[], searchArea?: Rect, maxAttempts?: number) {\n const rs: Rect[] = [];\n sizes.forEach(size => {\n const emptySpace = this.findRandomEmptySpace(size, searchArea, maxAttempts);\n if (emptySpace) {\n this.add(emptySpace);\n rs.push(emptySpace);\n }\n });\n return rs;\n }\n\n addRandomEmptySpace(size: SizeType, searchArea?: Rect, maxAttempts?: number): Rect | null {\n const emptySpace = this.findRandomEmptySpace(size, searchArea, maxAttempts);\n if (emptySpace) {\n this.add(emptySpace);\n }\n return emptySpace;\n }\n\n addRandomSpace(size: SizeType, searchArea?: Rect): Rect {\n const bounds = searchArea || new Rect(this.x, this.y, this.width, this.height);\n const randomX = Math.random() * (bounds.width - size.width) + bounds.x;\n const randomY = Math.random() * (bounds.height - size.height) + bounds.y;\n const newRect = new Rect(randomX, randomY, size.width, size.height);\n this.add(newRect);\n return newRect;\n }\n\n isIn(point: Point2D): boolean {\n return this.toRect().isIn(point);\n }\n\n isOut(point: Point2D): boolean {\n return !this.isIn(point);\n }\n\n isOverlap(data: Point2D | Rect | Ellipse | WrapRects): boolean {\n if (data instanceof Point2D) {\n return this.isIn(data);\n }\n\n if (data instanceof Ellipse) {\n return data.isOverlap(this.toRect());\n }\n\n if (data instanceof Rect) {\n return this.toRect().isOverlap(data);\n }\n\n if (data instanceof WrapRects) {\n return this.toRect().isOverlap(data.toRect());\n }\n\n return false;\n }\n\n toRect(): Rect {\n return new Rect(this.x, this.y, this.width, this.height);\n }\n}", "import {Drawable} from \"../../../draw/Drawable\";\nimport { DrawData } from '../../../../entity/draw/DrawData';\n\nexport class LenGrid implements Drawable {\n\n draw(draw: DrawData) {\n const splitSize = 10;\n let wUnit = draw.canvas.width / splitSize;\n let hUnit = draw.canvas.height / splitSize;\n draw.context.strokeStyle = '#c8c8c8';\n draw.context.lineWidth = 0.5;\n for (let i = 0; i < splitSize; i++) {\n draw.context.beginPath();\n draw.context.moveTo(wUnit * i, 0);\n draw.context.lineTo(wUnit * i, draw.canvas.height);\n draw.context.stroke();\n }\n for (let i = 0; i < splitSize; i++) {\n draw.context.beginPath();\n draw.context.moveTo(0, hUnit * i);\n draw.context.lineTo(draw.canvas.width, hUnit * i);\n draw.context.stroke();\n }\n }\n}\n", "import {Drawable} from \"../../../draw/Drawable\";\nimport { DrawData } from '../../../../entity/draw/DrawData';\n\nexport class SizeGrid implements Drawable {\n\n\n constructor(public size = 10) {\n }\n\n draw(draw: DrawData) {\n let splitSize = draw.canvas.width / this.size;\n let wUnit = splitSize;\n let hUnit = splitSize;\n draw.context.strokeStyle = '#373737';\n draw.context.lineWidth = 0.5;\n draw.context.setLineDash([4, 2]);\n for (let i = 0; wUnit * i <= draw.canvas.width; i++) {\n draw.context.beginPath();\n draw.context.moveTo(wUnit * i, 0);\n draw.context.lineTo(wUnit * i, draw.canvas.height);\n draw.context.stroke();\n }\n for (let i = 0; hUnit * i <= draw.canvas.height; i++) {\n draw.context.beginPath();\n draw.context.moveTo(0, hUnit * i);\n draw.context.lineTo(draw.canvas.width, hUnit * i);\n draw.context.stroke();\n }\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 { 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 export const regexExecArrayReplace = (origin: string, regexpExecArrayOrRegex: RegExpExecArray[] | RegExp, replace: string | ((data: RegExpExecArray) => string)) => {\n // console.log('------origin', origin ,regexpExecArrayOrRegex, replace)\n const regexpExecArrays = Array.isArray(regexpExecArrayOrRegex) ? regexpExecArrayOrRegex : StringUtils.regexExec(regexpExecArrayOrRegex, origin);\n regexpExecArrays.reverse().forEach(it => {\n const r = typeof replace === 'string' ? replace : replace(it);\n origin = origin.substr(0, it.index) + origin.substr(it.index).replace(it[0], r);\n })\n // console.log('------origin2', origin)\n return origin;\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\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", "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 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}", "export type FetcherRequest<TARGET, RESPONSE, CONFIG, RESPONSE_TRANSFORM = RESPONSE> = {\n target: TARGET;\n config?: CONFIG & { hasErrorChecker?: (data: RESPONSE) => any };\n transform?: (data: RESPONSE) => RESPONSE_TRANSFORM;\n errorTransform?: (data?: any) => Promise<any>;\n before?: () => void;\n error?: (e?: any) => void;\n afterSuccess?: () => void;\n finally?: () => void;\n};\n\nexport abstract class Fetcher<TARGET, RESPONSE, CONFIG, PIPE extends { responseData?: RESPONSE }> {\n protected createPipe<T = RESPONSE>(config: FetcherRequest<TARGET, RESPONSE, CONFIG, T>): PIPE {\n return {} as PIPE;\n }\n protected abstract before<T = RESPONSE>(config: FetcherRequest<TARGET, RESPONSE, CONFIG, T>, pipe: PIPE): void;\n protected abstract afterSuccess<T = RESPONSE>(config: FetcherRequest<TARGET, RESPONSE, CONFIG, T>, pipe: PIPE): void;\n protected abstract afterSuccessTransform<T = RESPONSE>(\n config: FetcherRequest<TARGET, RESPONSE, CONFIG, T>,\n pipe: PIPE\n ): void;\n protected abstract finally<T = RESPONSE>(config: FetcherRequest<TARGET, RESPONSE, CONFIG, T>, pipe: PIPE): void;\n protected abstract error<T = RESPONSE>(\n config: FetcherRequest<TARGET, RESPONSE, CONFIG, T>,\n pipe: PIPE,\n e?: any\n ): void;\n\n public fetch<T = RESPONSE>(config: FetcherRequest<TARGET, RESPONSE, CONFIG, T>): Promise<T> {\n return new Promise<T>((resolve, reject) => {\n const pipe = this.createPipe(config);\n Promise.resolve()\n .then(() => {\n this.before(config, pipe);\n config?.before?.();\n })\n .then(() => {\n return this.execute(config);\n // return this.execute(config.target, config?.config);\n })\n .then(data => {\n const hasError = config.config?.hasErrorChecker?.(data);\n if (hasError) {\n throw hasError;\n }\n pipe.responseData = data;\n this.afterSuccess(config, pipe);\n config?.afterSuccess?.();\n const gdata = (config?.transform ? config.transform(data) : data) as T;\n this.afterSuccessTransform(config, pipe);\n resolve(gdata);\n })\n .catch(async e => {\n this.error(config, pipe, e);\n config?.error?.();\n if (config?.errorTransform) {\n e = await config.errorTransform(e);\n }\n e = await this.errorTransform(e);\n reject(e);\n })\n .finally(() => {\n this.finally(config, pipe);\n config?.finally?.();\n });\n });\n }\n\n protected abstract errorTransform(e: any): Promise<any>;\n protected abstract execute<T=RESPONSE>(fetcherRequest: FetcherRequest<TARGET, RESPONSE, CONFIG, T>): Promise<RESPONSE>;\n}\n", "import { Fetcher, FetcherRequest } from './Fetcher';\nimport { ConvertUtils } from '../convert/ConvertUtils';\n\nexport type RequestInitType = RequestInit & { timeout?: number };\nexport type RequestInfo = {\n requestInfo: string | URL;\n init: RequestInitType;\n};\nexport type HttpFetcherTarget =\n | URL\n | string\n | { url: URL | string; searchParams?: { [key: string]: any } | URLSearchParams | [string, unknown][] };\nexport type HttpFetcherConfig<CONFIG, RESPONSE = Response> = {\n fetch?: RequestInitType;\n fetcher?: typeof fetch;\n config?: CONFIG;\n allowedResponseNotOk?: boolean;\n beforeProxyFetch?: <T extends RequestInfo | URL>(\n config: BeforeProxyFetchParams<T>\n ) => Promise<BeforeProxyFetchParams<T>>;\n afterProxyFetch?: <T extends RequestInfo | URL>(config: AfterProxyFetchParams<T>) => Promise<Response>;\n skipGlobalBeforeProxyFetch?: boolean;\n skipGlobalAfterProxyFetch?: boolean;\n fetchResponseBeforeCallBack?: (config: HttpFetcherConfig<CONFIG, RESPONSE>) => void;\n fetchResponseAfterCallBack?: (data: Response, config: HttpFetcherConfig<CONFIG, RESPONSE>) => void;\n hasResponseErrorChecker?: (data: Response, config: HttpFetcherConfig<CONFIG, RESPONSE>) => any;\n};\nexport type BeforeProxyFetchParams<T = RequestInfo | URL> = {\n requestInfo: T;\n init?: RequestInit;\n};\nexport type AfterProxyFetchParams<T = RequestInfo | URL> = {\n fetch: {\n target: URL;\n requestInit: RequestInit;\n }\n config: BeforeProxyFetchParams<T>;\n response: Response;\n};\n\nexport type FetchSet = { target: URL, requestInit?: RequestInit };\n\nexport class HttpResponseError<T = any> extends Error {\n public error?: any;\n public body?: T;\n public response?: Response;\n}\n\nexport const isHttpResponseError = (data: any): data is HttpResponseError => {\n return data instanceof HttpResponseError;\n}\n\nexport type HttpFetcherRequest<RESPONSE = Response, CONFIG = any, T = RESPONSE> = FetcherRequest<\n HttpFetcherTarget,\n RESPONSE,\n HttpFetcherConfig<CONFIG, RESPONSE>,\n T\n>\n\nexport class HttpFetcher<\n CONFIG = any,\n RESPONSE = Response,\n PIPE extends { responseData?: RESPONSE | undefined } = any\n> extends Fetcher<HttpFetcherTarget, RESPONSE, HttpFetcherConfig<CONFIG, RESPONSE>, PIPE> {\n get<T = RESPONSE>(config: HttpFetcherRequest<RESPONSE, CONFIG, T>): Promise<T> {\n config.config ??= {};\n config.config.fetch = config.config?.fetch ?? {};\n config.config.fetch.method = 'GET';\n return this.fetch(config);\n }\n\n post<T = RESPONSE>(\n config: HttpFetcherRequest<RESPONSE, CONFIG, T>\n ): Promise<T> {\n config.config ??= {};\n config.config.fetch = config.config?.fetch ?? {};\n config.config.fetch.method = 'POST';\n return this.fetch(config);\n }\n\n patch<T = RESPONSE>(\n config: HttpFetcherRequest<RESPONSE, CONFIG, T>\n ): Promise<T> {\n config.config ??= {};\n config.config.fetch = config.config?.fetch ?? {};\n config.config.fetch.method = 'PATCH';\n return this.fetch(config);\n }\n\n put<T = RESPONSE>(\n config: HttpFetcherRequest<RESPONSE, CONFIG, T>\n ): Promise<T> {\n config.config ??= {};\n config.config.fetch = config.config?.fetch ?? {};\n config.config.fetch.method = 'PUT';\n return this.fetch(config);\n }\n\n head<T = RESPONSE>(\n config: HttpFetcherRequest<RESPONSE, CONFIG, T>\n ): Promise<T> {\n config.config ??= {};\n config.config.fetch = config.config?.fetch ?? {};\n config.config.fetch.method = 'HEAD';\n return this.fetch(config);\n }\n\n delete<T = RESPONSE>(\n config: HttpFetcherRequest<RESPONSE, CONFIG, T>\n ): Promise<T> {\n config.config ??= {};\n config.config.fetch = config.config?.fetch ?? {};\n config.config.fetch.method = 'DELETE';\n return this.fetch(config);\n }\n\n protected async beforeProxyFetch<T = RequestInfo | URL>(\n config: BeforeProxyFetchParams<T>\n ): Promise<BeforeProxyFetchParams<T>> {\n return config;\n }\n\n protected async afterProxyFetch<T = RequestInfo | URL>(config: AfterProxyFetchParams<T>): Promise<Response> {\n return config.response;\n }\n\n protected afterSuccess<T>(\n config: HttpFetcherRequest<RESPONSE, CONFIG, T>,\n pipe: PIPE\n ): void {}\n\n protected afterSuccessTransform<T>(\n config: HttpFetcherRequest<RESPONSE, CONFIG, T>,\n pipe: PIPE\n ): void {}\n\n protected before<T>(\n config: HttpFetcherRequest<RESPONSE, CONFIG, T>,\n pipe: PIPE\n ): void {}\n\n protected error<T>(\n config: HttpFetcherRequest<RESPONSE, CONFIG, T>,\n pipe: PIPE,\n e: any\n ): void {}\n\n protected finally<T>(\n config: HttpFetcherRequest<RESPONSE, CONFIG, T>,\n pipe: PIPE\n ): void {}\n\n protected beforeFetch(fetch: FetchSet): void {}\n\n protected afterFetch(fetch: FetchSet, response: Response): void {}\n\n // protected async errorTransform(e: any): Promise<HttpResponseError<any>> {\n protected async errorTransform(e: any): Promise<HttpResponseError> {\n const httpResponseError = new HttpResponseError<any>();\n httpResponseError.error = e;\n if (e instanceof Response) {\n httpResponseError.response = e;\n try {\n httpResponseError.body = await e.clone().text();\n httpResponseError.message = e.statusText;\n } catch (e: any) {\n httpResponseError.body = e;\n httpResponseError.message = e.message;\n }\n } else {\n httpResponseError.body = e;\n httpResponseError.message = e.message;\n }\n return httpResponseError;\n }\n\n protected async execute<T = RESPONSE>(\n fetcherRequest: HttpFetcherRequest<RESPONSE, CONFIG, T>\n ): Promise<any | RESPONSE> {\n let target = fetcherRequest.target;\n let config = fetcherRequest.config;\n // target data setting\n if (!(target instanceof URL) && typeof target !== 'string') {\n // const url: URL | string = target.url;\n // if (typeof target.url === 'string') {\n // }\n const searchParams = ConvertUtils.toURLSearchParams(target.searchParams ?? {});\n\n try {\n const url = typeof target.url === 'string' ? new URL(target.url) : target.url;\n searchParams.forEach((value, key) => {\n url.searchParams.append(key, value);\n });\n target = url;\n } catch (e) {\n if (typeof (target as any).url === 'string') {\n const searchParamString = searchParams.toString();\n target = (target as any).url + (searchParamString ? '?' + searchParamString : '');\n } else {\n target = '';\n }\n }\n }\n\n // before proxy fetch\n const beforeProxyData = { requestInfo: target, init: config?.fetch } as BeforeProxyFetchParams<URL>;\n let beforeData = config?.beforeProxyFetch\n ? await config?.beforeProxyFetch(config as any)\n : beforeProxyData.requestInfo;\n beforeData = config?.skipGlobalBeforeProxyFetch ? beforeProxyData : await this.beforeProxyFetch(beforeProxyData);\n target = beforeData.requestInfo as URL;\n if (beforeData.init) {\n config ??= {};\n config.fetch = beforeData.init;\n }\n\n let abortedTimeout: NodeJS.Timeout | undefined;\n if (config?.fetch && 'timeout' in config.fetch) {\n const abortController = new AbortController();\n abortedTimeout = setTimeout(() => {\n if (config?.fetch?.signal) {\n const inputSignal = config.fetch.signal;\n const listener = () => {\n if (!abortController.signal.aborted) {\n abortController.abort();\n }\n inputSignal.removeEventListener('abort', listener);\n };\n inputSignal.addEventListener('abort', listener);\n }\n if (!abortController.signal.aborted) {\n abortController.abort();\n }\n }, config.fetch.timeout);\n config.fetch.signal = abortController.signal;\n }\n\n this.beforeFetch({ target, requestInit: config?.fetch });\n return (config.fetcher??fetch)(target, config?.fetch)\n .then(async it => {\n // console.log('httpFetch!!!', Array.from(it.headers))\n this.afterFetch({ target: target as URL, requestInit: config?.fetch }, it);\n // after proxy fetch\n // @ts-ignore\n const afterProxyData: AfterProxyFetchParams<any> = {\n fetch: { target: target as URL, requestInit: config.fetch },\n config: beforeData,\n response: it\n };\n it = config?.afterProxyFetch ? await config.afterProxyFetch(afterProxyData) : it;\n // @ts-ignore\n it = config?.skipGlobalAfterProxyFetch ? it : await this.afterProxyFetch(afterProxyData);\n config?.fetchResponseAfterCallBack?.(it, config);\n if (!config?.allowedResponseNotOk && !it.ok) {\n throw it;\n }\n const data = config?.hasResponseErrorChecker?.(it, config);\n if (data) {\n throw data;\n }\n return it;\n })\n .finally(() => {\n if (abortedTimeout) {\n clearTimeout(abortedTimeout);\n }\n });\n }\n}\n", "import {\n HttpFetcher,\n HttpFetcherConfig,\n HttpFetcherRequest,\n HttpFetcherTarget,\n HttpResponseError,\n RequestInitType\n} from './HttpFetcher';\nimport { FetcherRequest } from './Fetcher';\n\nexport type HttpJsonFetcherConfig<CONFIG, RESPONSE> = HttpFetcherConfig<CONFIG> & {\n bypassTransform?: boolean;\n transformText?: boolean;\n // parsingExceptionDefault?: (e: any) => any;\n executeTransform?: (response: Response) => Promise<RESPONSE>;\n};\nexport type RequestJsonInit = Omit<RequestInitType, 'body'> & { body?: any | null };\n// type RequestJsonInit = Omit<RequestInitType, 'body'>;\nexport type HttpAnyBodyFetcherConfig<C, R> = Omit<HttpJsonFetcherConfig<C, R>, 'fetch'> & { fetch?: RequestJsonInit };\n\n// export class HttpJsonResponseError<T = any> extends HttpResponseError {\n// }\n//\n// export const isHttpJsonResponseError = (data: any): data is HttpJsonResponseError => {\n// return data instanceof HttpJsonResponseError;\n// }\n// export type HttpJsonFetcherRequest<RESPONSE = Response, CONFIG = any, T = RESPONSE> = HttpFetcherRequest<HttpFetcherTarget, RESPONSE, HttpJsonFetcherConfig<CONFIG, RESPONSE>>;\nexport type HttpJsonFetcherRequest<RESPONSE = any, CONFIG = any, T = RESPONSE> = FetcherRequest<\n HttpFetcherTarget,\n RESPONSE,\n HttpJsonFetcherConfig<CONFIG, RESPONSE>,\n T\n>;\n\nexport class HttpJsonFetcher<CONFIG, PIPE extends { responseData?: any }> extends HttpFetcher<CONFIG, any, PIPE> {\n private updateJsonFetchConfigAndData<RESPONSE, T = RESPONSE>(\n config: HttpJsonFetcherRequest<RESPONSE, CONFIG, T>\n ) {\n const headers = {\n 'Content-Type': 'application/json',\n Accept: 'application/json, text/plain, */*'\n };\n config.config ??= {};\n config.config.fetch ??= {};\n config.config.fetch.headers ??= {};\n config.config!.fetch!.headers = {...headers, ...config.config!.fetch?.headers};\n if (config.config?.fetch?.body && typeof config.config?.fetch?.body !== 'string') {\n config.config.fetch.body = JSON.stringify(config.config.fetch.body);\n }\n return config;\n }\n\n get<RESPONSE, T = RESPONSE>(config: HttpJsonFetcherRequest<RESPONSE, CONFIG, T>): Promise<T> {\n return super.get(config);\n }\n\n delete<RESPONSE, T = RESPONSE>(config: HttpJsonFetcherRequest<RESPONSE, CONFIG, T>): Promise<T> {\n return super.delete(config);\n }\n\n post<RESPONSE, T = RESPONSE>(config: HttpJsonFetcherRequest<RESPONSE, CONFIG, T>): Promise<T> {\n return super.post(config);\n }\n\n patch<RESPONSE, T = RESPONSE>(config: HttpJsonFetcherRequest<RESPONSE, CONFIG, T>): Promise<T> {\n return super.patch(config);\n }\n\n put<RESPONSE, T = RESPONSE>(config: HttpJsonFetcherRequest<RESPONSE, CONFIG, T>): Promise<T> {\n return super.put(config);\n }\n\n head<RESPONSE, T = RESPONSE>(config: HttpJsonFetcherRequest<RESPONSE, CONFIG, T>): Promise<T> {\n return super.head(config);\n }\n\n postJson<RESPONSE, T = RESPONSE>(config: HttpJsonFetcherRequest<RESPONSE, CONFIG, T>): Promise<T> {\n return super.post(this.updateJsonFetchConfigAndData(config));\n }\n\n patchJson<RESPONSE, T = RESPONSE>(config: HttpJsonFetcherRequest<RESPONSE, CONFIG, T>): Promise<T> {\n return super.patch(this.updateJsonFetchConfigAndData(config));\n }\n\n putJson<RESPONSE, T = RESPONSE>(config: HttpJsonFetcherRequest<RESPONSE, CONFIG, T>): Promise<T> {\n return super.put(this.updateJsonFetchConfigAndData(config));\n }\n\n protected async errorTransform(e: any): Promise<HttpResponseError> {\n const httpResponseError = new HttpResponseError();\n httpResponseError.error = e;\n if (e instanceof Response) {\n httpResponseError.response = e;\n try {\n httpResponseError.body = await e.clone().json();\n httpResponseError.message = e.statusText;\n } catch (parseError: any) {\n httpResponseError.body = parseError; // Store the parsing error\n httpResponseError.message = parseError.message; // Use parsing error message\n }\n } else {\n httpResponseError.body = e;\n httpResponseError.message = e.message;\n }\n return httpResponseError;\n }\n\n // protected execute(target: HttpFetcherTarget, config?: HttpJsonFetcherConfig<C, any>): Promise<any> {\n protected execute(fetcherRequest: FetcherRequest<HttpFetcherTarget, any, HttpJsonFetcherConfig<CONFIG, any>>): Promise<any> {\n\n return super.execute(fetcherRequest).then((response: Response) => {\n // fetch\uC5D0 \uC788\uB294 content-length\uB294 \uC11C\uBC84\uC5D0\uC11C \uBCF4\uB0B8\uAC12\uC774 0 \uC774\uC5EC\uB3C4 \uC790\uCCB4\uC801\uC73C\uB85C \uB530\uB85C \uD310\uB2E8\uD574\uC11C 0\uC774\uC0C1\uC774 \uB098\uC624\uB294\uACBD\uC6B0\uAC00 \uC788\uB2E4. \uADF8\uB9AC\uACE0 \uC11C\uBC84\uC5D0\uC11C\uC8FC\uB294 header\uAC12\uB3C4 \uBBFF\uAE34 \uC5B4\uB835\uB2E4.\n // const contentLength = response.headers.get('Content-Length');\n // const hasBody = contentLength && parseInt(contentLength, 10) > 0;\n // console.log('hgasbody', hasBody)\n const config = fetcherRequest.config;\n if (config?.bypassTransform) {\n return response;\n }\n if (config?.executeTransform) {\n return config.executeTransform(response);\n } else {\n if (config?.transformText) {\n return response?.text();\n } else {\n return response?.text().then(it => {\n if ((it ?? '').length > 0) {\n return JSON.parse(it);\n }\n })\n }\n }\n });\n // .catch(e => {\n // if (config?.parsingExceptionDefault) {\n // return config.parsingExceptionDefault(e);\n // } else {\n // throw e;\n // }\n // });\n }\n}\n", "export class FunctionUtils {\n static 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 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 static eval<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", "import { Subscription } from '../message/Subscription';\nimport { ConstructorType } from '../types';\nimport { ValidUtils } from '../valid/ValidUtils';\n\nexport namespace Promises {\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> =\n | PromiseFulfilledResult<T>\n | (Omit<PromiseRejectedResult, 'reason'> & { reason: E });\n\n export type LoopConfig = { age: number };\n export type ObservableLoop<T> = {\n subscribe: (callback: {\n then?: (data: T, config: LoopConfig & {duration: number}) => void,\n catch?: (e: any, config: LoopConfig & {duration: number}) => void,\n delayThen?: (config: LoopConfig & { duration: number, isCatch: boolean, data?: T }) => void,\n }) => Subscription;\n }\n export const loop = <T>(config: {\n factory: (config: LoopConfig) => Promise<T>,\n delay?: number,\n loopDelay?: number\n }\n ): ObservableLoop<T> => {\n\n return {\n subscribe: (callback) => {\n\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)\n return loopExecute();\n };\n\n setTimeout(() => {\n loopExecute();\n }, config.delay ?? 0);\n\n return {\n get closed() {\n return stop;\n },\n unsubscribe: () => {\n stop = true;\n }\n }\n\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 export const transaction = <T, B = unknown, A = unknown>(\n promise: Promise<T> | (() => Promise<T>),\n config?: {\n delay?: number;\n before?: () => B;\n after?: () => A;\n then?: (it: T, data: { before?: B }) => void;\n catch?: (e: any, data: { before?: B; after?: A }) => void;\n disabledCatchThrow?: boolean;\n finally?: (data: { before?: B; after?: A; data?: T }) => void;\n }\n ) => {\n const p = typeof promise === 'function' ? promise() : promise;\n let after: A | undefined;\n let before: B | undefined;\n let promiseData: T | undefined;\n new Promise<T>((resolve, reject) => {\n const execute = () => {\n before = config?.before?.();\n p.then(data => {\n resolve(data);\n });\n after = config?.after?.();\n };\n setTimeout(() => {\n execute();\n }, config?.delay ?? 0);\n // if (config?.delay) {\n // } else {\n // setTimeout(() => {\n // execute();\n // },1000);\n // }\n })\n .then(data => {\n promiseData = data;\n config?.then?.(data, {before: before});\n })\n .catch(e => {\n config?.catch?.(e, {before: before, after: after});\n if (!config?.disabledCatchThrow) {\n throw e;\n }\n })\n .finally(() => {\n config?.finally?.({before: before, after: after, data: promiseData});\n });\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\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\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\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 { 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}", "// within rangeResult.ts\n// @ts-ignore\nexport class RangeResult implements IteratorResult<number> {\n done: boolean;\n value: number;\n\n constructor(value: number | undefined, done: boolean) {\n this.done = done;\n this.value = value ?? 0;\n }\n}\n\nexport class RangeIterator implements Iterator<number> {\n private _first: number;\n private _current: number;\n private _last: number;\n private _step: number;\n constructor(first: number, last: number, step: number) {\n this._current = this._first = first;\n this._last = last;\n this._step = step;\n }\n\n next(value?: any): IteratorResult<number> {\n let r: RangeResult;\n if (this._first < this._last && this._current < this._last) {\n r = new RangeResult(this._current, false);\n this._current += this._step;\n } else if (this._first < this._last && this._current === this._last) {\n r = new RangeResult(this._current, false);\n this._current += this._step;\n } else if (this._first > this._last && this._current > this._last) {\n r = new RangeResult(this._current, false);\n this._current -= this._step;\n } else if (this._first > this._last && this._current === this._last) {\n r = new RangeResult(this._current, false);\n this._current -= this._step;\n } else if (this._current === this._last) {\n r = new RangeResult(this._current, false);\n this._current -= this._step;\n } else {\n r = new RangeResult(undefined, true);\n }\n return r;\n }\n}\n\nexport class Range implements Iterable<number> {\n public readonly isRange = true;\n\n constructor(\n public first: number,\n public last: number,\n public step: number = 1\n ) {}\n\n [Symbol.iterator](): Iterator<number> {\n return new RangeIterator(this.first, this.last, this.step);\n }\n\n map<U>(callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any): U[] {\n return Array.from(this).map(callbackfn);\n }\n\n public static range(first: number | string, last?: number, step: number = 1): Range {\n if (typeof first === 'number' && last === undefined) {\n return new Range(0, first, step);\n } else if (typeof first === 'string') {\n const [_first, _last = '0'] = first.split('..');\n const [__last, _step = '1'] = _last.split(',');\n return new Range(Number(_first.trim()), Number(__last.trim()), Number(_step.trim()));\n } else {\n return new Range(first, last ?? 0, step);\n }\n }\n}\n", "// import { InspectOptions } from 'node:util';\nimport { DateUtils } from '../date/DateUtils';\n\nexport enum LoggerLevel {\n LOG = 'LOG',\n ERROR = 'ERROR',\n WARN = 'WARN',\n INFO = 'INFO',\n DEBUG = 'DEBUG',\n TRACE = 'TRACE',\n OFF = 'OFF'\n}\n\n// logFormat\n// ${date:'yyyy-MM-dd'} ${level} ${line} ${file} ${message}\n// dateFormat : yyyy-MM-dd HH:mm:ss\nexport type LoggerConfig = { level: LoggerLevel, format?: string };\n//\n// export interface Logger {\n// log(...args: any[]): void;\n//\n// error(...args: any[]): void;\n//\n// warn(...args: any[]): void;\n//\n// info(...args: any[]): void;\n//\n// debug(...args: any[]): void;\n//\n// trace(...args: any[]): void;\n// }\n\nexport class Logger {\n constructor(protected config?: LoggerConfig) {}\n\n public setConfig(config: LoggerConfig) {\n this.config = config;\n }\n\n private _log(logLevel: LoggerLevel, ...args: any[]) {\n const now = new Date();\n let file, line;\n // const isNode = typeof process !== \"undefined\" && process.versions && process.versions.node;\n // console.log('------------isNode', isNode);\n // \uD658\uACBD\uBCC4 \uC2A4\uD0DD \uCD94\uCD9C\n // if (isNode) {\n // const stackObj = {} as any;\n // Error.captureStackTrace(stackObj, this._log);\n // const stack = stackObj?.stack.split(\"\\n\")[1];\n // const match = stack.match(/at (.*):(\\d+):(\\d+)/);\n // const path = isNode ? require(\"path\") : null;\n // file = path.basename(match[1]);\n // line = match[2];\n // } else {\n const err = new Error();\n const stackLines = err.stack.split(\"\\n\");\n // console.log('------------', stackLines);\n let stack = stackLines[3];\n const match = stack.match(/(?:at\\s)?(?:.*\\s)?(?:\\(|\\@)?(.*):(\\d+):(\\d+)/);\n // console.log('mmmmmmmmmmmmm', match);\n file = match[1]; //new URL(match[1]).pathname.split(\"/\").pop();\n line = `${match[2]}:${match[3]}`;\n // }\n\n // \uCD9C\uB825 \uBB38\uC790\uC5F4 \uC0DD\uC131\n // const formattedDate = formatDate(now);\n const message = args.map(arg =>\n typeof arg === \"object\" ? JSON.stringify(arg) : String(arg)\n ).join(\" \");\n\n const format = this.config?.format ?? '';\n // \uD3EC\uB9F7 \uD30C\uC2F1 \uBC0F \uC801\uC6A9\n let output = format;\n // \uB0A0\uC9DC \uCC98\uB9AC: ${date:'\uD615\uC2DD'}\n const dateMatch = format.match(/\\${date:'([^']+)'\\}/);\n if (dateMatch) {\n const dateFormat = dateMatch[1];\n output = output.replace(dateMatch[0], DateUtils.format(now, dateFormat));\n }\n // // \uC904 \uBC88\uD638 \uCC98\uB9AC: ${line:\uC790\uB9BF\uC218}\n output = output.replace(\"${line}\", line);\n output = output.replace(\"${level}\", logLevel);\n // const lineMatch = format.match(/\\${line:(\\d+)\\}/);\n // if (lineMatch) {\n // const digits = parseInt(lineMatch[1], 10);\n // const paddedLine = String(line).padStart(digits, \"0\");\n // output = output.replace(lineMatch[0], paddedLine);\n // }\n // \uD30C\uC77C\uBA85 \uCC98\uB9AC\n output = output.replace(\"${file}\", file.split('/').pop() ?? '');\n // \uBA54\uC2DC\uC9C0 \uCC98\uB9AC\n output = output.replace(\"${message}\", message);\n return output;\n\n // const output = `[${formattedDate}] [${file}:${line}] ${message}`;\n //\n // // \uCEA1\uCC98 \uBC0F \uCD9C\uB825\n // capturedOutput += output + \"\\n\";\n }\n\n\n public log(msg: string,...args: any[]) {\n if (this.config?.level === LoggerLevel.OFF) {\n return;\n }\n console.log(this._log(LoggerLevel.LOG, msg),...args);\n }\n // public logDir(obj: any, option?: InspectOptions) {\n // if (this.config?.level === LoggerLevel.OFF) {\n // return;\n // }\n // console.dir(obj, option);\n // }\n\n public error(msg: string, ...args: any[]) {\n if (this.config?.level === LoggerLevel.OFF) {\n return;\n }\n (console.error ?? console.log)(this._log(LoggerLevel.ERROR, msg), ...args);\n }\n // public errorDir(obj: any, option?: InspectOptions) {\n // if (this.config?.level === LoggerLevel.OFF) {\n // return;\n // }\n // console.dir(obj, option);\n // }\n\n public warn(msg: string,...args: any[]) {\n if (\n this.config?.level === LoggerLevel.ERROR ||\n this.config?.level === LoggerLevel.LOG ||\n this.config?.level === LoggerLevel.OFF\n ) {\n return;\n }\n (console.warn ?? console.log)(this._log(LoggerLevel.WARN, msg),...args);\n }\n // public warnDir(obj: any, option?: InspectOptions) {\n // if (\n // this.config?.level === LoggerLevel.ERROR ||\n // this.config?.level === LoggerLevel.LOG ||\n // this.config?.level === LoggerLevel.OFF\n // ) {\n // return;\n // }\n // console.dir(obj, option);\n // }\n\n public info(msg: string,...args: any[]) {\n if (\n this.config?.level === LoggerLevel.WARN ||\n this.config?.level === LoggerLevel.ERROR ||\n this.config?.level === LoggerLevel.LOG ||\n this.config?.level === LoggerLevel.OFF\n ) {\n return;\n }\n (console.info ?? console.log)(this._log(LoggerLevel.INFO, msg),...args);\n }\n // public infoDir(obj: any, option?: InspectOptions) {\n // if (\n // this.config?.level === LoggerLevel.WARN ||\n // this.config?.level === LoggerLevel.ERROR ||\n // this.config?.level === LoggerLevel.LOG ||\n // this.config?.level === LoggerLevel.OFF\n // ) {\n // return;\n // }\n // console.dir(obj, option);\n // }\n\n public debug(msg: string, ...args: any[]) {\n if (\n this.config?.level === LoggerLevel.INFO ||\n this.config?.level === LoggerLevel.WARN ||\n this.config?.level === LoggerLevel.ERROR ||\n this.config?.level === LoggerLevel.LOG ||\n this.config?.level === LoggerLevel.OFF\n ) {\n return;\n }\n (console.debug ?? console.log)(this._log(LoggerLevel.DEBUG, msg),...args);\n }\n // public debugDir(obj: any, option?: InspectOptions) {\n // if (\n // this.config?.level === LoggerLevel.INFO ||\n // this.config?.level === LoggerLevel.WARN ||\n // this.config?.level === LoggerLevel.ERROR ||\n // this.config?.level === LoggerLevel.LOG ||\n // this.config?.level === LoggerLevel.OFF\n // ) {\n // return;\n // }\n // console.dir(obj, option);\n // }\n\n public trace(...args: any[]) {\n if (this.config?.level === LoggerLevel.TRACE) {\n (console.trace ?? console.log)(...args);\n }\n }\n // public traceDir(obj: any, option?: InspectOptions) {\n // if (this.config?.level === LoggerLevel.TRACE) {\n // console.dir(obj, option);\n // }\n // }\n}\n", "import { Subscription } from './Subscription';\nimport { Observer } from './Observer';\n\nexport class Subscriber<T, E = any> implements Subscription, Observer<T, E>{\n closed = false;\n constructor(private destination: Observer<T, E>) {\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 unsubscribe(): void {\n this.closed = true;\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, any>) => Observable<R, any>;\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(observer: Partial<Observer<T, E>>): Subscription;\n subscribe(d: ObserverCallBack<T>, e?: ErrorCallBack, c?: CompleteCallBack): Subscription;\n subscribe(observer: Partial<Observer<T, E>> | ObserverCallBack<T>, e?: ErrorCallBack, c?: CompleteCallBack): Subscription {\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\n let teardownLogic: Subscription | (() => void) | void;\n if (this._producerFunction) {\n teardownLogic = this._producerFunction(internalSubscriber);\n }\n\n let closed = false;\n return {\n get closed() {\n return closed;\n },\n unsubscribe: () => {\n // console.log('unsubscribe-->', teardownLogic)\n // Execute the teardown logic returned by the producer function\n if (typeof teardownLogic === 'function') {\n teardownLogic();\n } else if (teardownLogic && typeof teardownLogic.unsubscribe === 'function') {\n teardownLogic.unsubscribe();\n }\n closed = true;\n }\n }\n }\n\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>(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>, op31: OperatorFunction<AE, AF>): 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>(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>, op31: OperatorFunction<AE, AF>, op32: OperatorFunction<AF, AG>): 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>(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>, op31: OperatorFunction<AE, AF>, op32: OperatorFunction<AF, AG>, op33: OperatorFunction<AG, AH>): 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>(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>, op31: OperatorFunction<AE, AF>, op32: OperatorFunction<AF, AG>, op33: OperatorFunction<AG, AH>, op34: OperatorFunction<AH, AI>): 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>(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>, op31: OperatorFunction<AE, AF>, op32: OperatorFunction<AF, AG>, op33: OperatorFunction<AG, AH>, op34: OperatorFunction<AH, AI>, op35: OperatorFunction<AI, AJ>): 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>(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>, op31: OperatorFunction<AE, AF>, op32: OperatorFunction<AF, AG>, op33: OperatorFunction<AG, AH>, op34: OperatorFunction<AH, AI>, op35: OperatorFunction<AI, AJ>, op36: OperatorFunction<AJ, AK>): 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>(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>, op31: OperatorFunction<AE, AF>, op32: OperatorFunction<AF, AG>, op33: OperatorFunction<AG, AH>, op34: OperatorFunction<AH, AI>, op35: OperatorFunction<AI, AJ>, op36: OperatorFunction<AJ, AK>, op37: OperatorFunction<AK, AL>): 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>(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>, op31: OperatorFunction<AE, AF>, op32: OperatorFunction<AF, AG>, op33: OperatorFunction<AG, AH>, op34: OperatorFunction<AH, AI>, op35: OperatorFunction<AI, AJ>, op36: OperatorFunction<AJ, AK>, op37: OperatorFunction<AK, AL>, op38: OperatorFunction<AL, AM>): 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>(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>, op31: OperatorFunction<AE, AF>, op32: OperatorFunction<AF, AG>, op33: OperatorFunction<AG, AH>, op34: OperatorFunction<AH, AI>, op35: OperatorFunction<AI, AJ>, op36: OperatorFunction<AJ, AK>, op37: OperatorFunction<AK, AL>, op38: OperatorFunction<AL, AM>, op39: OperatorFunction<AM, AN>): 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>(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>, op31: OperatorFunction<AE, AF>, op32: OperatorFunction<AF, AG>, op33: OperatorFunction<AG, AH>, op34: OperatorFunction<AH, AI>, op35: OperatorFunction<AI, AJ>, op36: OperatorFunction<AJ, AK>, op37: OperatorFunction<AK, AL>, op38: OperatorFunction<AL, AM>, op39: OperatorFunction<AM, AN>, op40: OperatorFunction<AN, AO>): 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>(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>, op31: OperatorFunction<AE, AF>, op32: OperatorFunction<AF, AG>, op33: OperatorFunction<AG, AH>, op34: OperatorFunction<AH, AI>, op35: OperatorFunction<AI, AJ>, op36: OperatorFunction<AJ, AK>, op37: OperatorFunction<AK, AL>, op38: OperatorFunction<AL, AM>, op39: OperatorFunction<AM, AN>, op40: OperatorFunction<AN, AO>, op41: OperatorFunction<AO, AP>): 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>(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>, op31: OperatorFunction<AE, AF>, op32: OperatorFunction<AF, AG>, op33: OperatorFunction<AG, AH>, op34: OperatorFunction<AH, AI>, op35: OperatorFunction<AI, AJ>, op36: OperatorFunction<AJ, AK>, op37: OperatorFunction<AK, AL>, op38: OperatorFunction<AL, AM>, op39: OperatorFunction<AM, AN>, op40: OperatorFunction<AN, AO>, op41: OperatorFunction<AO, AP>, op42: OperatorFunction<AP, AQ>): 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>(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>, op31: OperatorFunction<AE, AF>, op32: OperatorFunction<AF, AG>, op33: OperatorFunction<AG, AH>, op34: OperatorFunction<AH, AI>, op35: OperatorFunction<AI, AJ>, op36: OperatorFunction<AJ, AK>, op37: OperatorFunction<AK, AL>, op38: OperatorFunction<AL, AM>, op39: OperatorFunction<AM, AN>, op40: OperatorFunction<AN, AO>, op41: OperatorFunction<AO, AP>, op42: OperatorFunction<AP, AQ>, op43: OperatorFunction<AQ, AR>): 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>(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>, op31: OperatorFunction<AE, AF>, op32: OperatorFunction<AF, AG>, op33: OperatorFunction<AG, AH>, op34: OperatorFunction<AH, AI>, op35: OperatorFunction<AI, AJ>, op36: OperatorFunction<AJ, AK>, op37: OperatorFunction<AK, AL>, op38: OperatorFunction<AL, AM>, op39: OperatorFunction<AM, AN>, op40: OperatorFunction<AN, AO>, op41: OperatorFunction<AO, AP>, op42: OperatorFunction<AP, AQ>, op43: OperatorFunction<AQ, AR>, op44: OperatorFunction<AR, AS>): 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>(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>, op31: OperatorFunction<AE, AF>, op32: OperatorFunction<AF, AG>, op33: OperatorFunction<AG, AH>, op34: OperatorFunction<AH, AI>, op35: OperatorFunction<AI, AJ>, op36: OperatorFunction<AJ, AK>, op37: OperatorFunction<AK, AL>, op38: OperatorFunction<AL, AM>, op39: OperatorFunction<AM, AN>, op40: OperatorFunction<AN, AO>, op41: OperatorFunction<AO, AP>, op42: OperatorFunction<AP, AQ>, op43: OperatorFunction<AQ, AR>, op44: OperatorFunction<AR, AS>, op45: OperatorFunction<AS, AT>): 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>(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>, op31: OperatorFunction<AE, AF>, op32: OperatorFunction<AF, AG>, op33: OperatorFunction<AG, AH>, op34: OperatorFunction<AH, AI>, op35: OperatorFunction<AI, AJ>, op36: OperatorFunction<AJ, AK>, op37: OperatorFunction<AK, AL>, op38: OperatorFunction<AL, AM>, op39: OperatorFunction<AM, AN>, op40: OperatorFunction<AN, AO>, op41: OperatorFunction<AO, AP>, op42: OperatorFunction<AP, AQ>, op43: OperatorFunction<AQ, AR>, op44: OperatorFunction<AR, AS>, op45: OperatorFunction<AS, AT>, op46: OperatorFunction<AT, AU>): 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>(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>, op31: OperatorFunction<AE, AF>, op32: OperatorFunction<AF, AG>, op33: OperatorFunction<AG, AH>, op34: OperatorFunction<AH, AI>, op35: OperatorFunction<AI, AJ>, op36: OperatorFunction<AJ, AK>, op37: OperatorFunction<AK, AL>, op38: OperatorFunction<AL, AM>, op39: OperatorFunction<AM, AN>, op40: OperatorFunction<AN, AO>, op41: OperatorFunction<AO, AP>, op42: OperatorFunction<AP, AQ>, op43: OperatorFunction<AQ, AR>, op44: OperatorFunction<AR, AS>, op45: OperatorFunction<AS, AT>, op46: OperatorFunction<AT, AU>, op47: OperatorFunction<AU, AV>): 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>(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>, op31: OperatorFunction<AE, AF>, op32: OperatorFunction<AF, AG>, op33: OperatorFunction<AG, AH>, op34: OperatorFunction<AH, AI>, op35: OperatorFunction<AI, AJ>, op36: OperatorFunction<AJ, AK>, op37: OperatorFunction<AK, AL>, op38: OperatorFunction<AL, AM>, op39: OperatorFunction<AM, AN>, op40: OperatorFunction<AN, AO>, op41: OperatorFunction<AO, AP>, op42: OperatorFunction<AP, AQ>, op43: OperatorFunction<AQ, AR>, op44: OperatorFunction<AR, AS>, op45: OperatorFunction<AS, AT>, op46: OperatorFunction<AT, AU>, op47: OperatorFunction<AU, AV>, op48: OperatorFunction<AV, AW>): 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>(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>, op31: OperatorFunction<AE, AF>, op32: OperatorFunction<AF, AG>, op33: OperatorFunction<AG, AH>, op34: OperatorFunction<AH, AI>, op35: OperatorFunction<AI, AJ>, op36: OperatorFunction<AJ, AK>, op37: OperatorFunction<AK, AL>, op38: OperatorFunction<AL, AM>, op39: OperatorFunction<AM, AN>, op40: OperatorFunction<AN, AO>, op41: OperatorFunction<AO, AP>, op42: OperatorFunction<AP, AQ>, op43: OperatorFunction<AQ, AR>, op44: OperatorFunction<AR, AS>, op45: OperatorFunction<AS, AT>, op46: OperatorFunction<AT, AU>, op47: OperatorFunction<AU, AV>, op48: OperatorFunction<AV, AW>, op49: OperatorFunction<AW, AX>): 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>(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>, op31: OperatorFunction<AE, AF>, op32: OperatorFunction<AF, AG>, op33: OperatorFunction<AG, AH>, op34: OperatorFunction<AH, AI>, op35: OperatorFunction<AI, AJ>, op36: OperatorFunction<AJ, AK>, op37: OperatorFunction<AK, AL>, op38: OperatorFunction<AL, AM>, op39: OperatorFunction<AM, AN>, op40: OperatorFunction<AN, AO>, op41: OperatorFunction<AO, AP>, op42: OperatorFunction<AP, AQ>, op43: OperatorFunction<AQ, AR>, op44: OperatorFunction<AR, AS>, op45: OperatorFunction<AS, AT>, op46: OperatorFunction<AT, AU>, op47: OperatorFunction<AU, AV>, op48: OperatorFunction<AV, AW>, op49: OperatorFunction<AW, AX>, op50: OperatorFunction<AX, AY>): 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}", "import { Observer } from './Observer';\nimport { Observable, OperatorFunction } from './Observable';\nimport { Subscription } from './Subscription';\nimport { CompleteCallBack, ErrorCallBack, ObserverCallBack, Subscribable } from './Subscribable';\n\nexport class Subject<T, E = any> extends Observable<T, E> implements Observer<T, E> {\n private _observers = new Set<Partial<Observer<T, E>>>();\n private _isStopped = false;\n private _hasError = false;\n private _error: E | undefined;\n\n constructor() {\n // Call parent Observable constructor with our own subscribe logic\n super((subscriber) => {\n return this._subscribeToSubject(subscriber);\n });\n }\n\n protected _subscribeToSubject(subscriber: any): Subscription {\n const partialObserver: Partial<Observer<T, E>> = {\n next: subscriber.next.bind(subscriber),\n error: subscriber.error.bind(subscriber),\n complete: subscriber.complete.bind(subscriber)\n };\n\n if (this._isStopped) {\n if (this._hasError) {\n partialObserver.error?.(this._error!);\n } else {\n partialObserver.complete?.();\n }\n return { closed: true, unsubscribe: () => {} }; // Already stopped, return dummy subscription\n }\n\n this._observers.add(partialObserver);\n\n let closed = false;\n\n return {\n get closed() {\n return closed;\n },\n unsubscribe: () => {\n this._observers.delete(partialObserver);\n closed = true;\n }\n };\n }\n\n next(data: T): void {\n if (this._isStopped) {\n return; // Subject is stopped, no more emissions\n }\n this._observers.forEach(observer => {\n observer.next?.(data)\n });\n }\n\n error(err: E): void {\n if (this._isStopped) {\n return; // Subject is stopped, no more errors\n }\n this._hasError = true;\n this._error = err;\n this._isStopped = true; // Subject stops after error\n this._observers.forEach(observer => observer.error?.(err));\n this._observers.clear(); // Clear observers after error\n }\n\n complete(): void {\n if (this._isStopped) {\n return; // Subject is stopped, no more completions\n }\n this._isStopped = true; // Subject stops after completion\n this._observers.forEach(observer => observer.complete?.());\n this._observers.clear(); // Clear observers after completion\n }\n\n\n\n asObservable(): Observable<T, E> {\n // Returns a new Observable that wraps this Subject's subscribe method.\n // This hides the next/error/complete methods from the consumer.\n return new Observable<T, E>(subscriber => {\n return this._subscribeToSubject(subscriber);\n });\n }\n}", "import { Subject } from './Subject';\nimport { Subscription } from './Subscription';\nimport { Observer } from './Observer';\nimport { CompleteCallBack, ErrorCallBack, ObserverCallBack } from './Subscribable';\n\nexport class BehaviorSubject<T, E = any> extends Subject<T, E> {\n private _value: T; // BehaviorSubject always has a current value\n\n constructor(initialValue: T) {\n super();\n this._value = initialValue; // Store the initial value\n }\n\n next(data: T): void {\n this._value = data; // Update the current value\n super.next(data); // Multicast to all current subscribers\n }\n\n protected _subscribeToSubject(subscriber: any): Subscription {\n // Call parent's subscribe logic first\n const subscription = super._subscribeToSubject(subscriber);\n\n // Immediately emit the current value to the new subscriber\n // Only if the subject has not completed or errored\n if (!(this as any)._isStopped) { // _isStopped is from Subject\n subscriber.next(this._value);\n } else if ((this as any)._hasError) { // _hasError is from Subject\n subscriber.error((this as any)._error!); // _error is from Subject\n } else {\n subscriber.complete();\n }\n\n return subscription;\n }\n\n getValue(): T {\n if ((this as any)._hasError) {\n throw (this as any)._error;\n }\n return this._value;\n }\n}", "import { Subject } from './Subject';\nimport { Subscription } from './Subscription';\nimport { Observer } from './Observer';\nimport { CompleteCallBack, ErrorCallBack, ObserverCallBack } from './Subscribable';\n\nexport class ReplaySubject<T, E = any> extends Subject<T, E> {\n private _buffer: T[] = [];\n // Removed: private _error: E | undefined;\n // Removed: private _isStopped = false;\n\n constructor(private bufferSize: number = Infinity) {\n super();\n }\n\n next(data: T): void {\n // Rely on parent Subject's _isStopped\n if ((this as any)._isStopped) {\n return; // Cannot emit after stopped\n }\n this._buffer.push(data);\n if (this._buffer.length > this.bufferSize) {\n this._buffer.shift(); // Remove oldest if buffer exceeds size\n }\n super.next(data); // Multicast to current subscribers\n }\n\n error(err: E): void {\n // Rely on parent Subject to manage _isStopped and _error\n super.error(err); // Multicast error and stop\n }\n\n complete(): void {\n // Rely on parent Subject to manage _isStopped\n super.complete(); // Multicast complete and stop\n }\n\n protected _subscribeToSubject(subscriber: any): Subscription {\n // Emit buffered values to the new subscriber first\n this._buffer.forEach(value => subscriber.next(value));\n\n // If the subject has already completed or errored, emit that status\n // Rely on parent Subject's _isStopped, _hasError, _error\n if ((this as any)._isStopped) {\n if ((this as any)._hasError) {\n subscriber.error((this as any)._error);\n } else {\n subscriber.complete();\n }\n return { closed: true, unsubscribe: () => {} }; // Return dummy subscription as it's already done\n }\n\n // Then, call super._subscribeToSubject to add the observer for future values\n return super._subscribeToSubject(subscriber);\n }\n}\n", "import { Observable } from '../Observable';\n\n/**\n * Creates an Observable that emits sequential numbers every specified\n * interval of time.\n *\n * @param period The interval size in milliseconds\n * @return An Observable that emits a sequential number each time interval.\n */\nexport function interval(period: number = 0): Observable<number> {\n // Handle negative periods by treating them as 0\n if (period < 0) {\n period = 0;\n }\n\n return new Observable<number>(subscriber => {\n let count = 0;\n let intervalId: NodeJS.Timeout;\n\n // Start emitting after the first period has passed\n intervalId = setInterval(() => {\n subscriber.next(count++);\n }, period);\n\n // Return cleanup function\n return () => {\n clearInterval(intervalId);\n };\n });\n}", "import { Observable, OperatorFunction } from '../Observable';\n\n/**\n * Emits only the first `count` values emitted by the source Observable.\n *\n * @param count The maximum number of `next` values to emit.\n * @return A function that returns an Observable that emits only the first\n * `count` values emitted by the source Observable.\n */\nexport function take<T>(count: number): OperatorFunction<T, T> {\n return (source: Observable<T, any>): Observable<T, any> => {\n // Handle count <= 0 by returning immediately completing Observable\n if (count <= 0) {\n return new Observable<T>(subscriber => {\n subscriber.complete();\n });\n }\n\n return new Observable<T>(subscriber => {\n let seen = 0;\n \n const subscription = source.subscribe({\n next: (value) => {\n // Increment the number of values we have seen\n if (++seen <= count) {\n subscriber.next(value);\n // If we have met or passed our allowed count, complete\n if (count <= seen) {\n subscriber.complete();\n }\n }\n },\n error: (err) => {\n subscriber.error(err);\n },\n complete: () => {\n subscriber.complete();\n }\n });\n\n // Return the subscription for teardown\n return subscription;\n });\n };\n}", "import { Observable } from '../Observable';\n\nexport interface LastValueFromConfig<T> {\n defaultValue: T;\n}\n\nexport class EmptyError extends Error {\n constructor(message: string = 'No elements in sequence') {\n super(message);\n this.name = 'EmptyError';\n }\n}\n\nexport function lastValueFrom<T, D>(source: Observable<T>, config: LastValueFromConfig<D>): Promise<T | D>;\nexport function lastValueFrom<T>(source: Observable<T>): Promise<T>;\n\n/**\n * Converts an observable to a promise by subscribing to the observable,\n * waiting for it to complete, and resolving the returned promise with the\n * last value from the observed stream.\n *\n * @param source the observable to convert to a promise\n * @param config a configuration object to define the `defaultValue` to use if the source completes without emitting a value\n */\nexport function lastValueFrom<T, D>(source: Observable<T>, config?: LastValueFromConfig<D>): Promise<T | D> {\n const hasConfig = typeof config === 'object';\n return new Promise<T | D>((resolve, reject) => {\n let _hasValue = false;\n let _value: T;\n \n source.subscribe({\n next: (value) => {\n _value = value;\n _hasValue = true;\n },\n error: reject,\n complete: () => {\n if (_hasValue) {\n resolve(_value);\n } else if (hasConfig) {\n resolve(config!.defaultValue);\n } else {\n reject(new EmptyError());\n }\n },\n });\n });\n}", "import { Observable } from '../Observable';\nimport { EmptyError } from './lastValueFrom'; // Reusing EmptyError from lastValueFrom\n\n/**\n * Converts an observable to a promise by subscribing to the observable,\n * and returning a promise that will resolve with the first value emitted\n * by the observable. The subscription is then immediately unsubscribed.\n *\n * If the observable stream completes before any values were emitted, the\n * returned promise will reject with {@link EmptyError}.\n *\n * If the observable stream emits an error, the returned promise will reject\n * with that error.\n *\n * @param source The observable to convert to a promise.\n * @return A promise that resolves with the first value from the observable,\n * or rejects with an error or EmptyError.\n */\nexport function firstValueFrom<T>(source: Observable<T>): Promise<T> {\n return new Promise<T>((resolve, reject) => {\n let _hasValue = false;\n\n const subscription = source.subscribe({\n next: (value) => {\n _hasValue = true;\n resolve(value);\n subscription.unsubscribe(); // Unsubscribe immediately after first value\n },\n error: reject,\n complete: () => {\n if (!_hasValue) {\n reject(new EmptyError());\n }\n },\n });\n });\n}", "import { Observable } from '../Observable';\n\n/**\n * Creates an Observable that starts emitting after an `initialDelay` and emits ever increasing numbers\n * after each `period` of time thereafter.\n *\n * @param initialDelay The initial delay time to wait before emitting the first value\n * @param period The period of time between emissions of the subsequent numbers\n * @return An Observable that emits a sequential number each period of time after an initial delay\n */\nexport function timer(initialDelay: number, period?: number): Observable<number> {\n return new Observable<number>(subscriber => {\n let count = 0;\n let intervalId: NodeJS.Timeout | undefined;\n\n // Initial delay\n const timeoutId = setTimeout(() => {\n subscriber.next(count++);\n \n // If period is specified, continue emitting at intervals\n if (period !== undefined && period >= 0) {\n intervalId = setInterval(() => {\n subscriber.next(count++);\n }, period);\n } else {\n // If no period, complete after first emission\n subscriber.complete();\n }\n }, Math.max(0, initialDelay));\n\n // Return cleanup function\n return () => {\n clearTimeout(timeoutId);\n if (intervalId) {\n clearInterval(intervalId);\n }\n };\n });\n}", "import { Observable } from '../Observable';\n\n/**\n * Converts the arguments to an observable sequence.\n *\n * @param values A comma separated list of arguments you want to be emitted\n * @return An Observable that emits the arguments described above and then completes.\n */\nexport function of<T>(...values: T[]): Observable<T> {\n return new Observable<T>(subscriber => {\n for (const value of values) {\n subscriber.next(value);\n }\n subscriber.complete();\n });\n}", "import { Observable } from '../Observable';\n\n/**\n * Creates an Observable from an Array.\n *\n * @param input An array to be converted to Observable\n * @return An Observable that emits the items from the array and then completes.\n */\nexport function fromArray<T>(input: T[]): Observable<T> {\n return new Observable<T>(subscriber => {\n for (const item of input) {\n subscriber.next(item);\n }\n subscriber.complete();\n });\n}", "import { Observable } from '../Observable';\n\n/**\n * Converts a Promise to an Observable.\n *\n * @param promise A promise to be converted to Observable\n * @return An Observable that emits the resolved value of the Promise and then completes,\n * or emits an error if the Promise rejects.\n */\nexport function fromPromise<T>(promise: Promise<T>): Observable<T> {\n return new Observable<T>(subscriber => {\n promise\n .then(value => {\n subscriber.next(value);\n subscriber.complete();\n })\n .catch(error => {\n subscriber.error(error);\n });\n });\n}", "import { Observable } from '../Observable';\n\n/**\n * Creates an Observable that emits no items to the Observer and immediately\n * emits a complete notification.\n *\n * @return An Observable that emits only the complete notification.\n */\nexport function empty<T = never>(): Observable<T> {\n return new Observable<T>(subscriber => {\n subscriber.complete();\n });\n}", "import { Observable } from '../Observable';\n\n/**\n * Creates an Observable that emits no items to the Observer and never completes.\n *\n * @return An Observable that never emits anything.\n */\nexport function never<T = never>(): Observable<T> {\n return new Observable<T>(() => {\n // Do nothing - never emit, never complete, never error\n });\n}", "import { Observable } from '../Observable';\n\n/**\n * Creates an Observable that emits no items to the Observer and immediately\n * emits an error notification.\n *\n * @param error The particular Error to pass to the error notification.\n * @return An Observable that emits only the error notification.\n */\nexport function throwError<T = never>(error: any): Observable<T> {\n return new Observable<T>(subscriber => {\n subscriber.error(error);\n });\n}", "import { Observable } from '../Observable';\n\n/**\n * Creates an Observable that emits a sequence of numbers within a specified range.\n *\n * @param start The value of the first integer in the sequence.\n * @param count The number of sequential integers to generate.\n * @return An Observable that emits a finite range of sequential integers.\n */\nexport function range(start: number, count: number): Observable<number> {\n return new Observable<number>(subscriber => {\n if (count <= 0) {\n subscriber.complete();\n return;\n }\n\n const end = start + count;\n for (let i = start; i < end; i++) {\n subscriber.next(i);\n }\n subscriber.complete();\n });\n}", "import { Observable } from '../Observable';\n\n/**\n * Creates an Observable that, on subscribe, calls an Observable factory to\n * make an Observable for each new Observer.\n *\n * @param observableFactory The Observable factory function to invoke for each\n * Observer that subscribes to the output Observable. May also return a Promise,\n * which will be converted on the fly to an Observable.\n * @return An Observable whose Observers' subscriptions trigger an invocation\n * of the given Observable factory function.\n */\nexport function defer<T>(observableFactory: () => Observable<T> | Promise<T>): Observable<T> {\n return new Observable<T>(subscriber => {\n let result: Observable<T> | Promise<T>;\n\n try {\n result = observableFactory();\n } catch (err) {\n subscriber.error(err);\n return;\n }\n\n // If result is a Promise, convert it to Observable\n if (result && typeof (result as any).then === 'function') {\n const promise = result as Promise<T>;\n promise\n .then(value => {\n subscriber.next(value);\n subscriber.complete();\n })\n .catch(error => {\n subscriber.error(error);\n });\n } else {\n // If result is an Observable, subscribe to it\n const observable = result as Observable<T>;\n return observable.subscribe({\n next: (value) => subscriber.next(value),\n error: (err) => subscriber.error(err),\n complete: () => subscriber.complete()\n });\n }\n });\n}", "import { Observable, OperatorFunction } from '../Observable';\n\n/**\n * Returns an Observable that skips the first `count` items emitted by the source Observable.\n *\n * @param count The number of times, items emitted by source Observable should be skipped.\n * @return An Observable that skips the first `count` values emitted by the source Observable.\n */\nexport function skip<T>(count: number): OperatorFunction<T, T> {\n return (source: Observable<T, any>): Observable<T, any> => {\n return new Observable<T>(subscriber => {\n let skipped = 0;\n \n const subscription = source.subscribe({\n next: (value) => {\n if (skipped < count) {\n skipped++;\n } else {\n subscriber.next(value);\n }\n },\n error: (err) => {\n subscriber.error(err);\n },\n complete: () => {\n subscriber.complete();\n }\n });\n\n return subscription;\n });\n };\n}", "import { Observable, OperatorFunction } from '../Observable';\n\n/**\n * Emits values emitted by the source Observable so long as each value satisfies\n * the given predicate, and then completes as soon as this predicate is not satisfied.\n *\n * @param predicate A function that evaluates each value emitted by the source Observable.\n * If it returns `true`, the value is emitted, if `false` the Observable completes.\n * @param inclusive When set to `true` the value that caused predicate to return `false` will also be emitted.\n * @return An Observable that emits values from the source Observable so long as each value\n * satisfies the condition defined by the predicate, then completes.\n */\nexport function takeWhile<T>(\n predicate: (value: T, index: number) => boolean,\n inclusive: boolean = false\n): OperatorFunction<T, T> {\n return (source: Observable<T, any>): Observable<T, any> => {\n return new Observable<T>(subscriber => {\n let index = 0;\n \n const subscription = source.subscribe({\n next: (value) => {\n const result = predicate(value, index++);\n \n if (result) {\n subscriber.next(value);\n } else {\n if (inclusive) {\n subscriber.next(value);\n }\n subscriber.complete();\n }\n },\n error: (err) => {\n subscriber.error(err);\n },\n complete: () => {\n subscriber.complete();\n }\n });\n\n return subscription;\n });\n };\n}", "import { Observable, OperatorFunction } from '../Observable';\n\n/**\n * Returns an Observable that emits the items you specify as arguments before it begins\n * to emit items emitted by the source Observable.\n *\n * @param values Items you want the modified Observable to emit first.\n * @return An Observable that emits the given values and then emits the items emitted by the source Observable.\n */\nexport function startWith<T>(...values: T[]): OperatorFunction<T, T> {\n return (source: Observable<T, any>): Observable<T, any> => {\n return new Observable<T>(subscriber => {\n // First emit the starting values\n for (const value of values) {\n subscriber.next(value);\n }\n \n // Then subscribe to the source\n const subscription = source.subscribe({\n next: (value) => {\n subscriber.next(value);\n },\n error: (err) => {\n subscriber.error(err);\n },\n complete: () => {\n subscriber.complete();\n }\n });\n\n return subscription;\n });\n };\n}", "import { Observable } from '../Observable';\n\n/**\n * Creates an output Observable which sequentially emits all values from the first given\n * Observable and then moves on to the next.\n *\n * @param observables Input Observables to concatenate.\n * @return An Observable that emits items from all the input Observables sequentially.\n */\nexport function concat<T>(...observables: Observable<T>[]): Observable<T> {\n return new Observable<T>(subscriber => {\n let currentIndex = 0;\n let currentSubscription: any;\n\n function subscribeToNext() {\n if (currentIndex >= observables.length) {\n subscriber.complete();\n return;\n }\n\n const currentObservable = observables[currentIndex++];\n currentSubscription = currentObservable.subscribe({\n next: (value) => {\n subscriber.next(value);\n },\n error: (err) => {\n subscriber.error(err);\n },\n complete: () => {\n subscribeToNext();\n }\n });\n }\n\n subscribeToNext();\n\n return () => {\n if (currentSubscription) {\n currentSubscription.unsubscribe();\n }\n };\n });\n}", "import { Observable } from '../Observable';\n\n/**\n * Creates an output Observable which concurrently emits all values from every given input Observable.\n *\n * @param observables Input Observables to merge together.\n * @return An Observable that emits items from all the input Observables concurrently.\n */\nexport function merge<T>(...observables: Observable<T>[]): Observable<T> {\n return new Observable<T>(subscriber => {\n if (observables.length === 0) {\n subscriber.complete();\n return;\n }\n\n let completedCount = 0;\n const subscriptions: any[] = [];\n\n for (const observable of observables) {\n const subscription = observable.subscribe({\n next: (value) => {\n subscriber.next(value);\n },\n error: (err) => {\n subscriber.error(err);\n },\n complete: () => {\n completedCount++;\n if (completedCount === observables.length) {\n subscriber.complete();\n }\n }\n });\n subscriptions.push(subscription);\n }\n\n return () => {\n subscriptions.forEach(sub => sub.unsubscribe());\n };\n });\n}", "import { Observable } from '../Observable';\n\n/**\n * Creates an Observable that emits events of a specific type from a given event target.\n *\n * @param target The DOM event target (e.g., an HTMLElement, Document, Window).\n * @param eventName The name of the event to listen for (e.g., 'click', 'mousemove').\n * @return An Observable that emits events of the specified type.\n */\nexport function fromEvent<T extends Event>(\n target: EventTarget,\n eventName: string\n): Observable<T> {\n return new Observable<T>(subscriber => {\n const handler = (event: Event) => {\n subscriber.next(event as T);\n };\n\n target.addEventListener(eventName, handler);\n\n // Return a teardown function that removes the event listener\n return () => {\n target.removeEventListener(eventName, handler);\n };\n });\n}\n", "import { Observable } from '../Observable';\nimport { EmptyError } from './lastValueFrom'; // Reusing EmptyError from lastValueFrom\n\n/**\n * Converts an observable to a promise by subscribing to the observable,\n * and returning a promise that will resolve with the last value emitted\n * by the observable when it completes.\n *\n * If the observable stream completes before any values were emitted, the\n * returned promise will reject with {@link EmptyError}.\n *\n * If the observable stream emits an error, the returned promise will reject\n * with that error.\n *\n * @param source The observable to convert to a promise.\n * @return A promise that resolves with the last value from the observable,\n * or rejects with an error or EmptyError.\n */\nexport function toPromise<T>(source: Observable<T>): Promise<T> {\n return new Promise<T>((resolve, reject) => {\n let _hasValue = false;\n let _value: T;\n\n source.subscribe({\n next: (value) => {\n _value = value;\n _hasValue = true;\n },\n error: reject,\n complete: () => {\n if (_hasValue) {\n resolve(_value);\n } else {\n reject(new EmptyError());\n }\n },\n });\n });\n}", "export * from './Store';\nexport * from './Subject';\nexport * from './BehaviorSubject';\nexport * from './ReplaySubject';\nexport * from './ReplayForwardSubject';\nexport * from './Observable';\nexport * from './Subscription';\n\n// Internal utilities\nexport * from './internal';\n\nexport const debounce = <T>(fn: (data: T) => void, delay: number) => {\n // @ts-ignore\n let timer: NodeJS.Timeout | null = null;\n return (data: T) => {\n if (timer) {\n clearTimeout(timer);\n }\n timer = setTimeout(() => {\n fn(data);\n timer = null;\n }, delay);\n };\n};\n\nexport const throttleTime = <Args extends [...unknown[]]>(fn: (...args: Args) => void, delay: number) => {\n // @ts-ignore\n let timer: NodeJS.Timeout | null = null;\n return (...args: Args) => {\n if (!timer) {\n timer = setTimeout(() => {\n fn(...args);\n timer = null;\n }, delay);\n }\n };\n};\n\nexport const throttle = <Args extends [...unknown[]]>(fn: (...args: Args) => void, delay: number) => {\n let lastTime = 0;\n return (...args: Args) => {\n const now = Date.now();\n if (now - lastTime >= delay) {\n fn(...args);\n lastTime = now;\n }\n };\n};\n", "import { ConstructorType } from '../types';\nexport namespace ReflectUtils {\n export const getParameterTypes = (target: any, propertyKey?: string | symbol): ConstructorType<any>[] => {\n // console.log('---------param')\n if (propertyKey) {\n return Reflect.getMetadata('design:paramtypes', target, propertyKey) || [];\n } else {\n return Reflect.getMetadata('design:paramtypes', target) || [];\n }\n }\n\n\n export const getReturnType = (target: any, propertyKey: string | symbol): any => {\n return Reflect.getMetadata('design:returntype', target, propertyKey);\n }\n\n // @Reflect.metadata(\"design:type\", Point)\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 getMetadataKeys = (target: any) => {\n return Reflect.getMetadataKeys(target);\n }\n\n export const getOwnMetadata = (metadataKey: any, target: any, propertyKey?: string): number[] | 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 ReflectUtils.getMetadataKeys(target).map(it => ReflectUtils.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 // console.log(\"Reflect:\",Reflect)\n if (propertyKey && Reflect.defineMetadata) {\n Reflect.defineMetadata(metadataKey, value, target, propertyKey);\n } else if (Reflect.defineMetadata) {\n Reflect.defineMetadata(metadataKey, value, target);\n // Reflect.defineMetadata(\"design:paramtypes\", value, target);\n }\n // console.log(\"Reflect:\",Reflect.getMetadata(metadataKey, target))\n // console.log(\"Reflect:\",Reflect.getMetadata('design:paramtypes', target))\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}", "export interface CssDeclaration {\n [property: string]: string;\n}\n\n// --- Content item types for maintaining order ---\nexport interface CssDeclarationItem {\n type: 'declaration';\n property: string;\n value: string;\n}\n\nexport interface CssRuleItem {\n type: 'rule';\n rule: CssRule;\n}\n\nexport interface CssCommentItem {\n type: 'comment';\n text: string;\n}\n\nexport type CssContentItem = CssDeclarationItem | CssRuleItem | CssCommentItem;\n\n// --- Base CSS Node Class with common functionality ---\nexport abstract class CssNode {\n public content: CssContentItem[]; // Maintains order of declarations and rules\n\n constructor(content: CssContentItem[] = []) {\n this.content = content;\n }\n\n // --- Computed properties for backward compatibility ---\n public get declarations(): CssDeclaration {\n const declarations: CssDeclaration = {};\n this.content.forEach(item => {\n if (item.type === 'declaration') {\n declarations[item.property] = item.value;\n }\n });\n return declarations;\n }\n\n public get children(): CssRule[] {\n return this.content\n .filter(item => item.type === 'rule')\n .map(item => (item as CssRuleItem).rule);\n }\n\n public abstract stringify(indent?: number): string;\n\n // --- Common Manipulation Methods for content ---\n protected _addRules(rulesToAdd: CssRule[], atIndex?: number): this {\n const ruleItems: CssRuleItem[] = rulesToAdd.map(rule => ({ type: 'rule', rule }));\n if (atIndex === undefined) {\n this.content.push(...ruleItems);\n } else {\n // Find the actual content index for the rule at the given children index\n const ruleContentIndices = this.content\n .map((item, idx) => ({ item, idx }))\n .filter(({ item }) => item.type === 'rule')\n .map(({ idx }) => idx);\n\n const insertIndex = atIndex < ruleContentIndices.length ? ruleContentIndices[atIndex] : this.content.length;\n this.content.splice(insertIndex, 0, ...ruleItems);\n }\n return this;\n }\n\n public append(ruleOrCss: CssRule | string): this {\n const rulesToAdd = CssParser._parseInputToRules(ruleOrCss);\n return this._addRules(rulesToAdd);\n }\n\n public prepend(ruleOrCss: CssRule | string): this {\n const rulesToAdd = CssParser._parseInputToRules(ruleOrCss);\n return this._addRules(rulesToAdd, 0);\n }\n\n public insertAt(index: number, ruleOrCss: CssRule | string): this {\n const rulesToAdd = CssParser._parseInputToRules(ruleOrCss);\n return this._addRules(rulesToAdd, index);\n }\n\n public insertBefore(target: CssRule, newRuleOrCss: CssRule | string): this {\n const contentIndex = this.content.findIndex(item =>\n item.type === 'rule' && item.rule === target\n );\n if (contentIndex > -1) {\n const rulesToAdd = CssParser._parseInputToRules(newRuleOrCss);\n const ruleItems: CssRuleItem[] = rulesToAdd.map(rule => ({ type: 'rule', rule }));\n this.content.splice(contentIndex, 0, ...ruleItems);\n }\n return this;\n }\n\n public insertAfter(target: CssRule, newRuleOrCss: CssRule | string): this {\n const contentIndex = this.content.findIndex(item =>\n item.type === 'rule' && item.rule === target\n );\n if (contentIndex > -1) {\n const rulesToAdd = CssParser._parseInputToRules(newRuleOrCss);\n const ruleItems: CssRuleItem[] = rulesToAdd.map(rule => ({ type: 'rule', rule }));\n this.content.splice(contentIndex + 1, 0, ...ruleItems);\n }\n return this;\n }\n\n public replace(target: CssRule, newRuleOrCss: CssRule | string): this {\n const contentIndex = this.content.findIndex(item =>\n item.type === 'rule' && item.rule === target\n );\n if (contentIndex > -1) {\n const rulesToReplace = CssParser._parseInputToRules(newRuleOrCss);\n const ruleItems: CssRuleItem[] = rulesToReplace.map(rule => ({ type: 'rule', rule }));\n this.content.splice(contentIndex, 1, ...ruleItems);\n }\n return this;\n }\n\n public remove(target: CssRule): this {\n const contentIndex = this.content.findIndex(item =>\n item.type === 'rule' && item.rule === target\n );\n if (contentIndex > -1) {\n this.content.splice(contentIndex, 1);\n }\n return this;\n }\n}\n\n// --- Style Rule Class ---\nexport class StyleRule extends CssNode {\n public selector: string;\n\n constructor(selector: string, content: CssContentItem[] = []) {\n super(content);\n this.selector = selector;\n }\n\n public stringify(indent = 0): string {\n const indentStr = ' '.repeat(indent);\n const innerIndentStr = ' '.repeat(indent + 1);\n\n if (this.content.length === 0) {\n return `${indentStr}${this.selector} {}`;\n }\n\n const contentLines: string[] = [];\n\n for (const item of this.content) {\n if (item.type === 'declaration') {\n const kebabProperty = CssParser._camelToKebab(item.property);\n contentLines.push(`${innerIndentStr}${kebabProperty}: ${item.value};`);\n } else if (item.type === 'rule') {\n contentLines.push(item.rule.stringify(indent + 1));\n } else if (item.type === 'comment') {\n contentLines.push(`${innerIndentStr}/* ${item.text} */`);\n }\n }\n\n const innerContent = contentLines.join('\\n');\n return `${indentStr}${this.selector} {\\n${innerContent}\\n${indentStr}}`;\n }\n}\n\n// --- At Rule Class ---\nexport class AtRule extends CssNode {\n public name: string;\n public condition: string;\n\n constructor(name: string, condition: string, content: CssContentItem[] = []) {\n super(content);\n this.name = name;\n this.condition = condition;\n }\n\n public stringify(indent = 0): string {\n const indentStr = ' '.repeat(indent);\n const innerIndentStr = ' '.repeat(indent + 1);\n const prelude = `@${this.name}${this.condition ? ' ' + this.condition : ''}`;\n\n if (this.content.length === 0) {\n return `${indentStr}${prelude};`;\n }\n\n const contentLines: string[] = [];\n\n for (const item of this.content) {\n if (item.type === 'declaration') {\n const kebabProperty = CssParser._camelToKebab(item.property);\n contentLines.push(`${innerIndentStr}${kebabProperty}: ${item.value};`);\n } else if (item.type === 'rule') {\n contentLines.push(item.rule.stringify(indent + 1));\n } else if (item.type === 'comment') {\n contentLines.push(`${innerIndentStr}/* ${item.text} */`);\n }\n }\n\n const innerContent = contentLines.join('\\n');\n return `${indentStr}${prelude} {\\n${innerContent}\\n${indentStr}}`;\n }\n}\n\nexport type CssRule = StyleRule | AtRule;\n\n// --- The main parser class ---\n\nexport class CssParser extends CssNode {\n constructor(css: string = '') {\n const content = CssParser._parseTopLevel(css);\n super(content);\n }\n\n // --- Accessors ---\n public get rules(): Readonly<CssRule[]> {\n return this.children;\n }\n\n // --- Stringify ---\n public stringify(indent = 0): string {\n if (this.content.length === 0) {\n return '';\n }\n\n const contentLines: string[] = [];\n\n for (const item of this.content) {\n if (item.type === 'declaration') {\n const kebabProperty = CssParser._camelToKebab(item.property);\n contentLines.push(`${kebabProperty}: ${item.value};`);\n } else if (item.type === 'rule') {\n contentLines.push(item.rule.stringify(indent));\n } else if (item.type === 'comment') {\n contentLines.push(`/* ${item.text} */`);\n }\n }\n\n return contentLines.join('\\n');\n }\n\n // --- Static parsing method ---\n private static _parseTopLevel(css: string): CssContentItem[] {\n const cleanedCss = CssParser._cleanCss(css);\n\n // Parse top-level content including comments, declarations, and rules\n return CssParser._parseContent(cleanedCss);\n }\n\n // --- Parsing Logic ---\n private static _cleanCss(css: string): string {\n // Don't remove comments - we'll parse them as content items\n return css.trim();\n }\n\n // --- Universal content parser that handles comments, declarations, and rules ---\n private static _parseContent(css: string): CssContentItem[] {\n const content: CssContentItem[] = [];\n let i = 0;\n\n while (i < css.length) {\n // Skip whitespace\n while (i < css.length && /\\s/.test(css[i])) {\n i++;\n }\n if (i >= css.length) break;\n\n // Handle comments\n if (css[i] === '/' && i + 1 < css.length && css[i + 1] === '*') {\n const commentStart = i + 2;\n let commentEnd = css.indexOf('*/', commentStart);\n if (commentEnd === -1) {\n commentEnd = css.length;\n i = css.length;\n } else {\n const commentText = css.substring(commentStart, commentEnd).trim();\n content.push({ type: 'comment', text: commentText });\n i = commentEnd + 2;\n }\n continue;\n }\n\n // Find the next significant token\n const nextBraceIndex = css.indexOf('{', i);\n const nextSemicolonIndex = css.indexOf(';', i);\n const nextCommentIndex = css.indexOf('/*', i);\n\n // Determine what comes first\n const nextTokens = [\n { type: 'brace', index: nextBraceIndex },\n { type: 'semicolon', index: nextSemicolonIndex },\n { type: 'comment', index: nextCommentIndex }\n ].filter(token => token.index !== -1).sort((a, b) => a.index - b.index);\n\n if (nextTokens.length === 0) {\n // No more tokens, parse remaining as declaration if it contains ':'\n const remaining = css.substring(i).trim();\n if (remaining && remaining.includes(':')) {\n const parts = remaining.split(':');\n if (parts.length >= 2) {\n const prop = parts[0].trim();\n const val = parts.slice(1).join(':').trim();\n if (prop && val) {\n content.push({ type: 'declaration', property: prop, value: val });\n }\n }\n }\n break;\n }\n\n const nextToken = nextTokens[0];\n\n if (nextToken.type === 'comment') {\n // Handle comment (already handled above, but just in case)\n i = nextToken.index;\n continue;\n }\n\n if (nextToken.type === 'brace') {\n // This is a rule (selector or at-rule)\n const prelude = css.substring(i, nextToken.index).trim();\n if (prelude) {\n const blockEndIndex = CssParser._findMatchingBrace(css, nextToken.index);\n if (blockEndIndex !== -1) {\n const blockContent = css.substring(nextToken.index + 1, blockEndIndex).trim();\n\n if (prelude.startsWith('@')) {\n // At-rule\n const name = prelude.match(/^@([^\\s]+)/)?.[1] || 'unknown';\n const condition = prelude.replace(/^@[^\\s]+\\s*/, '').trim();\n const childContent = CssParser._parseContent(blockContent);\n content.push({ type: 'rule', rule: new AtRule(name, condition, childContent) });\n } else {\n // Style rule\n const childContent = CssParser._parseContent(blockContent);\n content.push({ type: 'rule', rule: new StyleRule(prelude, childContent) });\n }\n i = blockEndIndex + 1;\n continue;\n }\n }\n }\n\n if (nextToken.type === 'semicolon') {\n // This could be a declaration or at-rule without block\n const statement = css.substring(i, nextToken.index).trim();\n if (statement) {\n if (statement.startsWith('@')) {\n // At-rule without block\n const name = statement.match(/^@([^\\s]+)/)?.[1] || 'unknown';\n const condition = statement.replace(/^@[^\\s]+\\s*/, '').trim();\n content.push({ type: 'rule', rule: new AtRule(name, condition, []) });\n } else if (statement.includes(':')) {\n // Declaration\n const parts = statement.split(':');\n if (parts.length >= 2) {\n const prop = parts[0].trim();\n const val = parts.slice(1).join(':').trim();\n if (prop && val) {\n content.push({ type: 'declaration', property: prop, value: val });\n }\n }\n }\n }\n i = nextToken.index + 1;\n continue;\n }\n\n // Fallback: move to next character\n i++;\n }\n\n return content;\n }\n\n private static _parseBlockContent(css: string): { content: CssContentItem[] } {\n // Use the universal content parser\n return { content: CssParser._parseContent(css) };\n }\n\n private static _parseRules(css: string): CssRule[] {\n const rules: CssRule[] = [];\n let currentIndex = 0;\n css = css.trim();\n\n const recursiveAtRules = ['media', 'supports', 'container', 'scope', 'layer'];\n\n while (currentIndex < css.length) {\n while (currentIndex < css.length && /\\s/.test(css[currentIndex])) {\n currentIndex++;\n }\n if (currentIndex >= css.length) {\n break;\n }\n\n const nextBraceIndex = css.indexOf('{', currentIndex);\n const nextSemicolonIndex = css.indexOf(';', currentIndex);\n\n if (nextBraceIndex !== -1 && (nextBraceIndex < nextSemicolonIndex || nextSemicolonIndex === -1)) {\n const prelude = css.substring(currentIndex, nextBraceIndex).trim();\n if (!prelude) {\n currentIndex = nextBraceIndex + 1;\n continue;\n }\n\n const blockEndIndex = CssParser._findMatchingBrace(css, nextBraceIndex);\n if (blockEndIndex === -1) {\n console.error(\"Malformed CSS: No matching brace for selector -> \", prelude);\n return rules;\n }\n\n const blockContent = css.substring(nextBraceIndex + 1, blockEndIndex).trim();\n\n if (prelude.startsWith('@')) {\n const name = prelude.match(/^@([^\\s]+)/)?.[1] || 'unknown';\n const condition = prelude.replace(/^@[^\\s]+\\s*/, '').trim();\n const content = CssParser._parseContent(blockContent);\n rules.push(new AtRule(name, condition, content));\n } else {\n const content = CssParser._parseContent(blockContent);\n rules.push(new StyleRule(prelude, content));\n }\n currentIndex = blockEndIndex + 1;\n\n } else if (nextSemicolonIndex !== -1) {\n const statement = css.substring(currentIndex, nextSemicolonIndex).trim();\n if (statement.startsWith('@')) {\n const name = statement.match(/^@([^\\s]+)/)?.[1] || 'unknown';\n const condition = statement.replace(/^@[^\\s]+\\s*/, '').trim();\n rules.push(new AtRule(name, condition, []));\n }\n currentIndex = nextSemicolonIndex + 1;\n } else {\n break;\n }\n }\n return rules;\n }\n\n private static _findMatchingBrace(str: string, startIndex: number): number {\n let depth = 1;\n for (let i = startIndex + 1; i < str.length; i++) {\n if (str[i] === '{') {\n depth++;\n } else if (str[i] === '}') {\n depth--;\n if (depth === 0) {\n return i;\n }\n }\n }\n return -1;\n }\n\n private static _parseDeclarations(declarationString: string): CssDeclaration {\n const declarations: CssDeclaration = {};\n const declarationPairs = declarationString.split(';');\n\n for (const pair of declarationPairs) {\n if (pair.trim() === '') {\n continue;\n }\n const parts = pair.split(':');\n if (parts.length >= 2) {\n const property = parts[0].trim();\n const value = parts.slice(1).join(':').trim();\n if (property && value) {\n declarations[property] = value;\n }\n }\n }\n return declarations;\n }\n\n public static _declarationsToCSS(declarations: CssDeclaration, indent: number): string {\n const indentStr = ' '.repeat(indent);\n return Object.entries(declarations)\n .map(([prop, value]) => `${indentStr}${CssParser._camelToKebab(prop)}: ${value};`)\n .join('\\n');\n }\n\n public static _camelToKebab(camelCase: string): string {\n return camelCase.replace(/([a-z0-9]|(?=[A-Z]))([A-Z])/g, '$1-$2').toLowerCase();\n }\n\n // Helper to parse string input to CssRule[]\n public static _parseInputToRules(ruleOrCss: CssRule | string): CssRule[] {\n if (typeof ruleOrCss === 'string') {\n const parsed = new CssParser(ruleOrCss).rules;\n if (parsed.length === 0) {\n console.warn('Provided CSS string resulted in no rules.');\n }\n return [...parsed];\n } else {\n return [ruleOrCss];\n }\n }\n}\n\n// --- Type Guards ---\n\nexport function isRule(obj: any): obj is CssRule {\n return obj instanceof StyleRule || obj instanceof AtRule;\n}\n\nexport function isStyleRule(rule: any): rule is StyleRule {\n return rule instanceof StyleRule;\n}\n\nexport function isAtRule(rule: any): rule is AtRule {\n return rule instanceof AtRule;\n}\n\nexport function isCssDeclarationItem(item: any): item is CssDeclarationItem {\n return item && typeof item === 'object' && item.type === 'declaration' &&\n typeof item.property === 'string' && typeof item.value === 'string';\n}\n\nexport function isCssRuleItem(item: any): item is CssRuleItem {\n return item && typeof item === 'object' && item.type === 'rule' && isRule(item.rule);\n}\n\nexport function isCssCommentItem(item: any): item is CssCommentItem {\n return item && typeof item === 'object' && item.type === 'comment' && typeof item.text === 'string';\n}", "export class AsyncBlockingQueue<T> {\n private _promises: Promise<T>[];\n private _resolvers: ((t: T) => void)[];\n\n constructor() {\n this._resolvers = [];\n this._promises = [];\n }\n\n private _add() {\n this._promises.push(new Promise(resolve => {\n this._resolvers.push(resolve);\n }));\n }\n\n enqueue(t: T) {\n if (!this._resolvers.length) this._add();\n const resolve = this._resolvers.shift()!;\n resolve(t);\n }\n\n dequeue() {\n if (!this._promises.length) this._add();\n const promise = this._promises.shift()!;\n return promise;\n }\n\n isEmpty() {\n return !this._promises.length;\n }\n\n isBlocked() {\n return !!this._resolvers.length;\n }\n\n get length() {\n return this._promises.length - this._resolvers.length;\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 { Runnable } from './Runnable';\n\nexport abstract class AutoStartRunner implements Runnable {\n protected constructor() {\n this.run();\n }\n\n abstract run(...params: any[]): any;\n}\n", "import { Runnable } from './Runnable';\n\nexport abstract class RunnableLoader<T> implements Runnable<Promise<T>> {\n protected loaded?: T;\n public run(...params: any[]): Promise<T> {\n return this.load()\n .then(it => {\n this.loaded = it;\n this.completed(this.loaded);\n return it;\n })\n .catch(e => {\n this.error(e);\n throw e;\n });\n }\n\n stop() {\n this.unload(this.loaded);\n }\n\n protected abstract load(): Promise<T>;\n\n protected abstract unload(installed?: T): Promise<void>;\n\n protected abstract completed(installed: T): Promise<void>;\n\n protected abstract error(e: any): Promise<void>;\n}\n", "import { RunnableLoader } from './RunnableLoader';\nimport { Observable } from '../message/Observable';\nimport { StoreLoaderState } from '../store/StoreLoader';\n\nexport abstract class StoreRunnableLoader<T> extends RunnableLoader<T> {\n public abstract observable: Observable<StoreLoaderState<T>>;\n}\n", "import { Runnable } from '../runs/Runnable';\n\nexport namespace Schedule {\n export const TOKEN = Symbol('Schedule');\n export type State = 'INITIALIZE' | 'RUNNING' | 'DONE-AND-WAITING' | 'STOPPED' | 'ERROR' | 'SUCCESS';\n}\n\nexport interface Schedule<T = void> extends Runnable<void, T> {\n spec: string;\n name?: string;\n description?: string;\n history?: { state: Schedule.State; date: Date; data: any }[];\n state: Schedule.State;\n isReady?: boolean;\n totalCount: number;\n successCount: number;\n errorCount: number;\n\n run(data: T): Promise<void>;\n execute(data: T): Promise<void>;\n}\n\nexport abstract class ScheduleBase<T = void> implements Schedule<T> {\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; data: any }[];\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(data?: any, date: Date = new Date()) {\n this._history ??= [];\n this._history.push({ state: 'RUNNING', date, data });\n }\n private addError(data?: any, date: Date = new Date()) {\n this._history ??= [];\n this._history.push({ state: 'ERROR', date, data });\n }\n private addSuccess(data?: any, date: Date = new Date()) {\n this._history ??= [];\n this._history.push({ state: 'SUCCESS', date, data });\n }\n\n\n async run(data: T) {\n this._state = 'RUNNING';\n this.addStart();\n const startDate = new Date();\n try {\n console.log('Running schedule', this.name, startDate);\n await this.execute(data);\n this._successCount++;\n this.addSuccess();\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 }\n\n abstract execute(data: T): Promise<void>;\n}\n", "import { Storage } from './Storage';\ntype ItemSet = { key: string; value: string };\n\nexport class MemoryStorage implements Storage {\n private memory: ItemSet[];\n constructor() {\n this.memory = [];\n }\n\n get length(): number {\n return this.memory.length;\n }\n\n clear(): void {\n this.memory = [];\n }\n\n getItemSet(key: string): ItemSet | null;\n getItemSet(key: number): ItemSet | null;\n getItemSet(keyOrIndex: string | number): ItemSet | null {\n const item =\n typeof keyOrIndex === 'string' ? this.memory.find(item => item.key === keyOrIndex) : this.memory[keyOrIndex];\n return item ?? null;\n }\n\n findIndex(key: string): number | null {\n const idx = this.memory.findIndex(item => item.key === key);\n return idx < 0 ? null : idx;\n }\n\n getItem(key: string): string | null {\n const item = this.getItemSet(key);\n if (item) {\n return item.value;\n }\n return null;\n }\n\n key(index: number): string | null {\n return this.memory[index].key ?? null;\n }\n\n removeItem(key: string): void {\n const index = this.findIndex(key);\n if (index !== null) {\n this.memory.splice(index, 1);\n }\n }\n\n setItem(key: string, value: string): void {\n const prev = this.getItemSet(key);\n if (prev) {\n prev.value = value;\n }\n this.memory.push({ key, value });\n }\n}\n", "import { Storage } from './Storage';\nexport class StorageUtils {\n public static setStorageItem(k: string, v: string | any, storage: Storage) {\n if (typeof v === 'object') {\n v = JSON.stringify(v);\n }\n storage.setItem(k, v);\n }\n\n public static getStorageItem(k: string, storage: Storage) {\n return storage.getItem(k);\n }\n\n public static removeStorageItem(k: string, storage: Storage) {\n return storage.removeItem(k);\n }\n\n public static getStorageJsonObjectItem<T>(k: string, storage: Storage): T | null {\n const item = storage.getItem(k);\n if (item) {\n try {\n return JSON.parse(item);\n } catch (e) {\n return null;\n }\n } else {\n return null;\n }\n }\n\n public static cutStorageItem(k: string, storage: Storage) {\n const data = StorageUtils.getStorageItem(k, storage);\n StorageUtils.removeStorageItem(k, storage);\n return data;\n }\n\n public static cutStorageJsonObjectItem<T>(k: string, storage: Storage): T | null {\n const item = StorageUtils.getStorageJsonObjectItem(k, storage);\n StorageUtils.removeStorageItem(k, storage);\n return (item as T) ?? null;\n }\n\n public static clearStorage(storage: Storage) {\n storage.clear();\n }\n}\n", "import { Transaction } from './Transaction';\nimport { ConstructorType } from '../types';\n\nexport class TransactionManager {\n private createdTransactions: Transaction[] = [];\n constructor(private transaction: Map<string | Symbol | ConstructorType<any>, Transaction> = new Map()) {}\n\n setTransaction(key: string | Symbol | ConstructorType<any>, transaction: Transaction) {\n return this.transaction.set(key, transaction);\n }\n\n hasTransaction(key: string | Symbol | ConstructorType<any>) {\n return this.transaction.has(key);\n }\n\n deleteTransaction(key: string | Symbol | ConstructorType<any>) {\n return this.transaction.delete(key);\n }\n\n getTransaction<T = any, I = any>(type: string | Symbol | ConstructorType<T>): Transaction<I, T> | undefined {\n const transaction = this.transaction.get(type);\n if (transaction) {\n this.createdTransactions.push(transaction);\n return transaction as Transaction<I, T>;\n } else {\n return undefined;\n }\n }\n\n async try() {\n // console.log('try', this.transaction);\n }\n //\n async catch(e: any) {\n // console.log('error', e, this.transaction);\n for (let createdTransaction of this.createdTransactions) {\n try {\n await createdTransaction.catch(e);\n } catch (e) {}\n }\n }\n\n async finally() {\n // console.log('finally', this.transaction);\n for (let createdTransaction of this.createdTransactions) {\n try {\n await createdTransaction.finally();\n } catch (e) {}\n }\n this.transaction.clear();\n }\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}", "import 'reflect-metadata'\nexport * as Core from '@dooboostore/core/bundle-entry'\nexport * from './animation';\nexport * from './clipboard';\nexport * from './convert';\nexport * from './cookie';\nexport * from './document';\nexport * from './download';\nexport * from './element';\nexport * from './event';\nexport * from './image';\nexport * from './location';\nexport * from './node';\nexport * from './script';\nexport * from './storage';\nexport * from './stylecss';\nexport * from './valid';\nexport * from './window';", "import { Subscription } from './Subscription';\n\nexport class AutoCloseSubscription implements Subscription {\n closed = false;\n constructor(private userUnsubscribe: () => void) {}\n\n unsubscribe(): void {\n this.userUnsubscribe();\n this.closed = true;\n }\n}\n", "import { Observable } from '@dooboostore/core/message/Observable';\nimport { Subscription } from '@dooboostore/core/message/Subscription';\nimport { AutoCloseSubscription } from '@dooboostore/core/message/AutoCloseSubscription';\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", "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}", "import { ConvertUtils as CoreConverUtils } from '@dooboostore/core/convert/ConvertUtils';\n\nexport namespace ConvertUtils {\n export const coreConvertUtils = CoreConverUtils;\n\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(imageBitmapOrCanvas, config)], fileName, {type: config.type});\n }\n\n export const toBlob = async (imageBitmapOrCanvas: File | 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 instanceof ImageBitmap || imageBitmapOrCanvas instanceof HTMLImageElement) {\n // 1. Canvas \uC0DD\uC131 \uBC0F \uC124\uC815\n canvas = document.createElement('canvas');\n canvas.width = imageBitmapOrCanvas.width;\n canvas.height = imageBitmapOrCanvas.height;\n const context = canvas.getContext('2d');\n // 2. ImageBitmap\uC744 Canvas\uC5D0 \uADF8\uB9AC\uAE30\n context.drawImage(imageBitmapOrCanvas, 0, 0);\n } else {\n // 1. OffscreenCanvas \uB610\uB294 HTMLCanvasElement\uB97C \uC0AC\uC6A9\n canvas = imageBitmapOrCanvas;\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: config.type, quality: 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 }, config.type, 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: ImageBitmap | HTMLCanvasElement | OffscreenCanvas, config: ImageConvertConfig): Promise<string> => {\n const blob = await toBlob(imageBitmapOrCanvas, config);\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\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 { Observable } from '@dooboostore/core/message/Observable';\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}", "export namespace DownloadUtils {\n export const download = (window: Window, url: string, filename: string = 'download') => {\n const a = window.document.createElement('a');\n a.href = url;\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(url);\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 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/promise/Promises';\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\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, 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\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/*\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 }\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\nexport const selectorElements = (selector: string, element: Element|Document = document): Element[] => {\n return Array.prototype.slice.call(element.querySelectorAll(selector));\n }\n\nexport const selectorNodes = (selector: string, element: Element|Document = document) => {\n return element.querySelectorAll(selector);\n }\n\nexport const removeAttribute = (result: Element, attrs: string[]) => {\n attrs.forEach(it => {\n result.removeAttribute(it)\n });\n }\n\nexport const setAttribute = (result: Element, attrs: string[]) => {\n attrs.forEach(it => {\n result.setAttribute(it, '')\n });\n }\n\nexport const setAttributeAttr = (result: Element, attrs: Attr[]) => {\n attrs.forEach(it => {\n result.setAttribute(it.name, it.value)\n });\n }\n\nexport 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\nexport 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}", "import { Observable } from '@dooboostore/core/message/Observable';\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}", "export class LocationUtils {\n static hash(window: Window): string {\n return window.location.hash.replace('#', '')\n }\n\n static hashPath(window: Window): string {\n return window.location.hash.replace('#', '').split('?')[0]\n }\n\n static hashSearch(window: Window): string {\n return window.location.hash.replace('#', '').split('?')[1]\n }\n\n static hashQueryParams(window: Window): Map<string, string> {\n const s = window.location.hash.replace('#', '').split('?')[1] || '';\n return this.queryStringToMap(s);\n }\n\n static path(window: Window): string {\n return window.location.pathname;\n }\n\n static pathQueryParamsObject(window: Window): { [key:string]: string } {\n return this.queryStringToObject(window.location.search.substring(1));\n }\n\n static hashQueryParamsObject(window: Window): { [key:string]: string } {\n const s = window.location.hash.split('?').pop() ?? '';\n if (s.startsWith('#')) {\n return {};\n } else {\n return this.queryStringToObject(s);\n }\n }\n\n static pathQueryParams(window: Window): Map<string, string> {\n return this.queryStringToMap(window.location.search.substring(1));\n }\n\n private static 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 private static 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 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 while (node?.firstChild) {\n node.firstChild.remove();\n }\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 addNode = (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 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", "\nimport { ObjectUtils } from '@dooboostore/core/object/ObjectUtils';\n\nexport class ScriptUtils {\n\n /**\n * @deprecated Use ObjectUtils.Script.evalReturn instead\n */\n public static evaluateReturn<T = any>(script: string | { bodyScript: string, returnScript: string }, thisTarget: any = {}): T {\n return ObjectUtils.Script.evaluateReturn(script, thisTarget);\n }\n\n /**\n * @deprecated Use ObjectUtils.Script.eval instead\n */\n public static evaluate<T = any>(script: string, thisTarget: any = {}): T | undefined {\n return ObjectUtils.Script.evaluate(script, thisTarget); // Changed from eval to runScript\n }\n\n /**\n * @deprecated Use ObjectUtils.Script.eval instead\n */\n // public static getVariablePaths(script: string): 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 // let items;\n // if (typeof p === 'string' && isNaN(Number(p))) {\n // items = this.prefix ? this.prefix + '.' + p : p;\n // this.usingVars.add(items);\n // } else if (typeof p === 'string' && !isNaN(Number(p))) {\n // items = this.prefix ? this.prefix + '[' + p + ']' : p;\n // this.usingVars.add(items);\n // }\n // return new Proxy(() => {}, new GetDetectProxy(items));\n // }\n // }\n //\n // const destUser = new Proxy(() => {}, new GetDetectProxy());\n //\n // try {\n // // \uB3D9\uC801\uC73C\uB85C \uD568\uC218 \uC0DD\uC131 \uD6C4 bind\n // // const boundFunc = new Function(\"return this.value\").bind(obj);\n // // console.log(boundFunc()); // 42\n //\n // // eslint-disable-next-line no-new-func,no-unused-expressions\n // Function(`\"use strict\"; ${script}; `).bind(destUser)();\n // } catch (e) {\n // console.error(e);\n // }\n // console.log('-------usingV', usingVars)\n // return usingVars;\n // }\n\n\n\n public static loadElement(\n document: Document,\n name: string,\n option: { attribute?: { [key: string]: string }; body?: string; created: (tag: HTMLElement) => void }\n ) {\n return new Promise((resolve, reject) => {\n const tag = document.createElement(name);\n if (option?.body) {\n tag.innerHTML = option.body;\n } else {\n tag.onload = resolve;\n }\n tag.onerror = reject;\n if (option?.attribute) {\n for (const [key, value] of Object.entries(option.attribute)) {\n tag.setAttribute(key, value);\n }\n }\n option.created(tag);\n if (option?.body && tag.parentNode) {\n resolve(tag);\n }\n // document.head.append(tag);\n });\n }\n\n public static loadStyleSheet(document: Document, href: string, attribute: { [key: string]: string } = {}) {\n // const tag = document.createElement('link');\n // tag.type = 'text/css';\n // tag.setAttribute('rel', 'stylesheet');\n // tag.href = href;\n // for (const [key, value] of Object.entries(attribute)) {\n // tag.setAttribute(key, value);\n // }\n // target.append(tag)\n attribute.type = 'text/css';\n attribute.rel = 'stylesheet';\n attribute.href = href;\n return ScriptUtils.loadElement(document, 'link', {\n attribute,\n created: e => {\n document.head.append(e);\n }\n });\n }\n\n public static loadScript(document: Document, src: string, attribute: { [key: string]: string } = {}) {\n attribute.type = attribute?.type ?? 'text/javascript';\n attribute.src = src;\n return ScriptUtils.loadElement(document, 'script', { attribute, created: e => document.head.append(e) });\n }\n public static loadScriptBody(document: Document, body: string, attribute: { [key: string]: string } = {}) {\n attribute.type = attribute?.type ?? 'text/javascript';\n return ScriptUtils.loadElement(document, 'script', { body, attribute, created: e => document.head.append(e) });\n }\n}\n", "export class StorageUtils {\n public static setLocalStorageItem(k: string, v: string | any, window: Window) {\n if (typeof v === 'object') {\n v = JSON.stringify(v);\n }\n window.localStorage.setItem(k, v);\n }\n\n public static setSessionStorageItem(k: string, v: string | any, window: Window) {\n if (typeof v === 'object') {\n v = JSON.stringify(v);\n }\n window.sessionStorage.setItem(k, v);\n }\n\n public static getLocalStorageItem(k: string, window: Window) {\n return window.localStorage.getItem(k);\n }\n\n public static getSessionStorageItem(k: string, window: Window) {\n return window.sessionStorage.getItem(k);\n }\n\n public static cutLocalStorageItem(k: string, window: Window) {\n const data = StorageUtils.getLocalStorageItem(k, window);\n StorageUtils.removeLocalStorageItem(k, window);\n return data;\n }\n\n public static cutSessionStorageItem(k: string, window: Window) {\n const data = StorageUtils.getSessionStorageItem(k, window);\n StorageUtils.removeSessionStorageItem(k, window);\n return data;\n }\n\n public static removeLocalStorageItem(k: string, window: Window) {\n return window.localStorage.removeItem(k);\n }\n\n public static removeSessionStorageItem(k: string, window: Window) {\n return window.sessionStorage.removeItem(k);\n }\n\n public static getLocalStorageJsonItem<T>(k: string, window: Window): T | undefined {\n const item = window.localStorage.getItem(k);\n if (item) {\n try {\n return JSON.parse(item);\n } catch (e) {\n return undefined;\n }\n } else {\n return undefined;\n }\n }\n\n public static getSessionStorageJsonItem<T>(k: string, window: Window): T | undefined {\n const item = window.sessionStorage.getItem(k);\n if (item) {\n try {\n return JSON.parse(item);\n } catch (e) {\n return undefined;\n }\n } else {\n return undefined;\n }\n }\n\n public static cutLocalStorageJsonItem<T>(k: string, window: Window): T | undefined {\n const item = StorageUtils.getLocalStorageJsonItem(k, window);\n StorageUtils.removeLocalStorageItem(k, window);\n return item as (T | undefined);\n }\n\n public static cutSessionStorageJsonItem<T>(k: string, window: Window): T | undefined {\n const item = StorageUtils.getSessionStorageJsonItem(k, window);\n StorageUtils.removeSessionStorageItem(k, window);\n return item as T | undefined;\n }\n\n public static clearLocalStorage(window: Window) {\n window.localStorage.clear();\n }\n\n public static clearSessionStorage(window: Window) {\n window.sessionStorage.clear();\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 {ValidUtils as CoreValidUtils} from '@dooboostore/core/valid/ValidUtils';\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 { Observable } from '@dooboostore/core/message/Observable';\nimport { Subscription } from '@dooboostore/core/message/Subscription';\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", "// within rangeResult.ts\n// @ts-ignore\nexport class RangeResult implements IteratorResult<number> {\n done: boolean;\n value: number;\n\n constructor(value: number | undefined, done: boolean) {\n this.done = done;\n this.value = value ?? 0;\n }\n}\n\nexport class RangeIterator implements Iterator<number> {\n private _first: number;\n private _current: number;\n private _last: number\n private _step: number\n constructor(first: number, last: number, step: number) {\n this._current = this._first = first;\n this._last = last;\n this._step = step;\n }\n\n next(value?: any): IteratorResult<number> {\n let r: RangeResult;\n if (this._first < this._last && this._current < this._last) {\n r = new RangeResult(this._current, false);\n this._current += this._step\n } else if (this._first < this._last && this._current === this._last) {\n r = new RangeResult(this._current, false);\n this._current += this._step\n } else if (this._first > this._last && this._current > this._last) {\n r = new RangeResult(this._current, false);\n this._current -= this._step\n } else if (this._first > this._last && this._current === this._last) {\n r = new RangeResult(this._current, false);\n this._current -= this._step\n } else if (this._current === this._last) {\n r = new RangeResult(this._current, false);\n this._current -= this._step\n } else {\n r = new RangeResult(undefined, true);\n }\n return r;\n }\n}\n\nexport class Range implements Iterable<number> {\n public readonly isRange = true;\n\n constructor(public first: number, public last: number, public step: number = 1) {\n }\n\n [Symbol.iterator](): Iterator<number> {\n return new RangeIterator(this.first, this.last, this.step);\n }\n\n map<U>(callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any): U[] {\n return Array.from(this).map(callbackfn)\n }\n\n public static range(first: number | string, last?: number, step: number = 1): Range {\n if (typeof first === 'number' && last === undefined) {\n return new Range(0, first, step);\n } else if (typeof first === 'string') {\n const [_first, _last = '0'] = first.split('..');\n const [__last, _step = '1'] = _last.split(',');\n return new Range(Number(_first.trim()), Number(__last.trim()), Number(_step.trim()));\n } else {\n return new Range(first, last ?? 0, step);\n }\n }\n}\n", "import { DomRenderConfig } from '../configs/DomRenderConfig';\nimport { ScriptUtils } from '@dooboostore/core-web/script/ScriptUtils';\nimport { ElementUtils } from '@dooboostore/core-web/element/ElementUtils';\nimport { Range } from '../iterators/Range';\nimport { DomRenderFinalProxy } from '../types/Types';\nimport { getDomRenderConfig } from '../DomRenderProxy';\nimport { ObjectUtils } from '@dooboostore/core/object/ObjectUtils';\n\ntype HandlerInfo = {\n element: HTMLElement;\n attr: string;\n type: 'link' | 'event' | 'event-param';\n priority: number;\n property?: string; // for link type\n};\n\nexport class EventManager {\n public static readonly attrPrefix = 'dr-';\n public readonly eventNames = [\n 'click', 'mousedown', 'mouseup', 'dblclick', 'mouseover', 'mouseout', 'mousemove', 'mouseenter', 'mouseleave', 'contextmenu',\n 'keyup', 'keydown', 'keypress', 'toggle',\n 'change', 'input', 'submit', 'resize', 'focus', 'blur',\n 'close', 'cancel'\n ];\n\n private readonly delegatableEventMap: { [key: string]: string } = {\n mouseleave: 'mouseout',\n mouseenter: 'mouseover',\n focus: 'focusin',\n blur: 'focusout',\n };\n private readonly directAttachEvents = new Set(['close']);\n\n public static ownerVariablePathAttrName = EventManager.attrPrefix + 'owner-variable-path';\n\n public static readonly eventParam = EventManager.attrPrefix + 'event';\n public static readonly onInitAttrName = EventManager.attrPrefix + 'on-init';\n public static readonly valueAttrName = EventManager.attrPrefix + 'value';\n public static readonly checkedAttrName = EventManager.attrPrefix + 'checked';\n public static readonly selectedAttrName = EventManager.attrPrefix + 'selected';\n public static readonly readonlyAttrName = EventManager.attrPrefix + 'readonly';\n public static readonly disabledAttrName = EventManager.attrPrefix + 'disabled';\n public static readonly hiddenAttrName = EventManager.attrPrefix + 'hidden';\n public static readonly requiredAttrName = EventManager.attrPrefix + 'required';\n public static readonly openAttrName = EventManager.attrPrefix + 'open';\n\n // link\uB294 \uC4F0\uC9C0 \uC54A\uB294\uAC78 \uCD94\uCC9C\uD55C\uB2E4 \uB77C\uC774\uD504 \uC0AC\uC774\uD074 \uAF2C\uC778\uB2E4 \uB2E4\uB978 \uD504\uB808\uC784\uC6CC\uD06C\uC5D0\uC11C\uB3C4 \uC591\uBC29\uD5A5\uC740 \uC9C0\uC591 \uD55C\uB2E4\n public static linkAttrs = [\n {name: EventManager.attrPrefix + 'value-link', property: 'value', event: 'input'},\n {name: EventManager.attrPrefix + 'hidden-link', property: 'value', event: 'input'},\n {name: EventManager.attrPrefix + 'required-link', property: 'value', event: 'input'},\n {name: EventManager.attrPrefix + 'checked-link', property: 'checked', event: 'change'},\n {name: EventManager.attrPrefix + 'open-link', property: 'open', event: 'toggle'},\n ]\n // @ts-ignore \uD569\uC131\uC774\uBCA4\uD2B8(Synthetic) \uCC98\uB9AC\uD558\uBA74\uC11C \uC758\uBBF8\uAC00 \uC5C6\uC5B4\uC84C\uB2E4\n public static readonly linkTargetMapAttrName = EventManager.attrPrefix + 'link-variables';\n\n public static readonly onRenderedInitAttrName = EventManager.attrPrefix + 'on-rendered-init';\n\n public static readonly attrAttrName = EventManager.attrPrefix + 'attr';\n public static readonly normalAttrMapAttrName = EventManager.attrPrefix + 'normal-attr-map';\n public static readonly styleAttrName = EventManager.attrPrefix + 'style';\n public static readonly classAttrName = EventManager.attrPrefix + 'class';\n\n public static readonly VALUE_VARNAME = '$value';\n public static readonly SCRIPTS_VARNAME = '$scripts';\n public static readonly FAG_VARNAME = '$fag';\n public static readonly RAWSET_VARNAME = '$rawSet';\n public static readonly RENDER_VARNAME = '$render';\n public static readonly NEAR_THIS_VARNAME = '$nearThis';\n public static readonly PARENT_THIS_VARNAME = '$parentThis';\n public static readonly ROOT_OBJECT_VARNAME = '$rootObject';\n public static readonly SCRIPT_UTILS_VARNAME = '$scriptUtils';\n public static readonly RANGE_VARNAME = '$range';\n public static readonly ROUTER_VARNAME = '$router';\n public static readonly INNER_HTML_VARNAME = '$innerHTML';\n public static readonly ELEMENT_VARNAME = '$element';\n public static readonly TARGET_VARNAME = '$target';\n public static readonly EVENT_VARNAME = '$event';\n public static readonly COMPONENT_VARNAME = '$component';\n public static readonly INNERHTML_VARNAME = '$innerHTML';\n public static readonly ATTRIBUTE_VARNAME = '$attribute';\n public static readonly CREATOR_META_DATA_VARNAME = '$creatorMetaData';\n public static readonly PARENT_THIS_PATH_VARNAME = '$parentPath';\n public static readonly CURRENT_THIS_VARNAME = '$currentThis';\n public static readonly CURRENT_THIS_PATH_VARNAME = '$currentThisPath';\n public static readonly NEAR_THIS_PATH_VARNAME = '$nearThisPath';\n public static readonly VARNAMES = [EventManager.SCRIPTS_VARNAME, EventManager.FAG_VARNAME, EventManager.RAWSET_VARNAME, EventManager.RANGE_VARNAME, EventManager.ROUTER_VARNAME, EventManager.ELEMENT_VARNAME, EventManager.TARGET_VARNAME, EventManager.EVENT_VARNAME, EventManager.COMPONENT_VARNAME, EventManager.INNERHTML_VARNAME, EventManager.ATTRIBUTE_VARNAME, EventManager.ATTRIBUTE_VARNAME, EventManager.CREATOR_META_DATA_VARNAME, EventManager.PARENT_THIS_PATH_VARNAME, EventManager.PARENT_THIS_VARNAME];\n\n public static readonly WINDOW_EVENT_POPSTATE = 'popstate';\n public static readonly WINDOW_EVENT_RESIZE = 'resize';\n public static readonly WINDOW_EVENTS = [EventManager.WINDOW_EVENT_POPSTATE, EventManager.WINDOW_EVENT_RESIZE];\n public static readonly attrNames = [\n EventManager.valueAttrName,\n EventManager.checkedAttrName,\n EventManager.selectedAttrName,\n EventManager.readonlyAttrName,\n EventManager.disabledAttrName,\n EventManager.hiddenAttrName,\n EventManager.requiredAttrName,\n EventManager.openAttrName,\n EventManager.attrAttrName,\n EventManager.normalAttrMapAttrName,\n EventManager.styleAttrName,\n EventManager.classAttrName,\n EventManager.attrPrefix + 'window-event-' + EventManager.WINDOW_EVENT_POPSTATE,\n EventManager.attrPrefix + 'window-event-' + EventManager.WINDOW_EVENT_RESIZE,\n EventManager.onInitAttrName,\n ...EventManager.linkAttrs.map(it => it.name),\n this.eventParam\n ];\n readonly bindScript = `\n const ${EventManager.VALUE_VARNAME} = this.__render.value;\n const ${EventManager.SCRIPTS_VARNAME} = this.__render.scripts;\n const ${EventManager.RANGE_VARNAME} = this.__render.range;\n const ${EventManager.ROUTER_VARNAME} = this.__render.router;\n const ${EventManager.ATTRIBUTE_VARNAME} = this.__render.attribute;\n const ${EventManager.ELEMENT_VARNAME} = this.__render.element;\n const ${EventManager.COMPONENT_VARNAME} = this.__render.element.component;\n const ${EventManager.TARGET_VARNAME} = this.__render.target;\n const ${EventManager.EVENT_VARNAME} = this.__render.event;\n `;\n\n constructor(private window: Window) {\n this.eventNames.forEach(it => {\n EventManager.attrNames.push(EventManager.attrPrefix + 'event-' + it);\n });\n EventManager.attrNames.push(EventManager.onRenderedInitAttrName);\n\n if (typeof window !== 'undefined') {\n EventManager.WINDOW_EVENTS.forEach(eventName => {\n window?.addEventListener(eventName, (event) => {\n const targetAttr = `dr-window-event-${eventName}`;\n document.querySelectorAll(`[${targetAttr}]`).forEach(it => {\n const script = it.getAttribute(targetAttr);\n if (script) {\n const obj = this.findComponentInstance(it as HTMLElement);\n const config = getDomRenderConfig(obj);\n ScriptUtils.evaluate(`${this.bindScript} ${script} `, this.createExecutionContext(event, it as HTMLElement, obj, config));\n }\n });\n });\n });\n\n const rootElement = this.window.document;\n const listeningEvents = new Set<string>();\n this.eventNames.forEach(eventName => {\n if (this.directAttachEvents.has(eventName)) {\n return;\n }\n const delegatedEventName = this.delegatableEventMap[eventName] || eventName;\n\n if (listeningEvents.has(delegatedEventName)) {\n return;\n }\n listeningEvents.add(delegatedEventName);\n rootElement.addEventListener(delegatedEventName, this.handleEvent.bind(this), true);\n });\n }\n }\n\n private handleEvent(event: Event) {\n const handlers = this.collectHandlers(event);\n // console.log('handlers', handlers, event);\n for (const handler of handlers) {\n if (event.cancelBubble) {\n break;\n }\n\n const componentInstance = this.findComponentInstance(handler.element);\n if (!componentInstance) {\n continue;\n }\n // console.log('executeHandler', event,handler,componentInstance)\n this.executeHandler(event, handler, componentInstance);\n }\n }\n\n private collectHandlers(event: Event): HandlerInfo[] {\n const handlers: HandlerInfo[] = [];\n const root = this.window.document;\n if (!root) return handlers;\n\n const initialTarget = event.target as Node;\n let currentTarget: HTMLElement | null = (initialTarget.nodeType === 1)\n ? (initialTarget as HTMLElement)\n : initialTarget.parentElement;\n const collectedElements = new Set<HTMLElement>();\n\n const eventMap: { [key: string]: string } = {\n mouseout: 'mouseleave',\n mouseover: 'mouseenter',\n focusout: 'blur',\n focusin: 'focus'\n };\n const mappedEventName = eventMap[event.type] || event.type;\n\n while (currentTarget) {\n if (collectedElements.has(currentTarget)) {\n break;\n }\n\n // Priority 1: Link attributes\n const matchingLinkAttr = EventManager.linkAttrs.find(la => la.event === mappedEventName && currentTarget?.hasAttribute(la.name));\n if (matchingLinkAttr) {\n handlers.push({\n element: currentTarget,\n attr: matchingLinkAttr.name,\n type: 'link',\n priority: 1,\n property: matchingLinkAttr.property\n });\n }\n\n // Priority 2: dr-event-* attributes\n const eventAttr = `${EventManager.attrPrefix}event-${mappedEventName}`;\n if (currentTarget.hasAttribute(eventAttr)) {\n handlers.push({\n element: currentTarget,\n attr: eventAttr,\n type: 'event',\n priority: 2\n });\n }\n\n // Priority 3: dr-event with params\n const eventParamAttr = EventManager.eventParam;\n if (currentTarget.hasAttribute(eventParamAttr)) {\n const bindEvents = currentTarget.getAttribute(`${eventParamAttr}:bind`);\n if (bindEvents && bindEvents.split(',').map(s => s.trim()).includes(mappedEventName)) {\n handlers.push({\n element: currentTarget,\n attr: eventParamAttr,\n type: 'event-param',\n priority: 3\n });\n }\n }\n\n collectedElements.add(currentTarget);\n\n if (currentTarget === root.documentElement) {\n break;\n }\n\n currentTarget = currentTarget.parentElement;\n }\n\n return handlers.sort((a, b) => a.priority - b.priority);\n }\n\n private findComponentInstance(element: HTMLElement | null): any {\n let current = element;\n const root = this.window.document;\n while (current) {\n if ((current as any).obj) {\n return (current as any).obj;\n }\n if (current === root.documentElement) {\n break;\n }\n current = current.parentElement;\n }\n return this.window;\n }\n\n private createExecutionContext(event: Event, element: HTMLElement, componentInstance: any, config: DomRenderConfig | undefined, extraVars = {}) {\n // console.log('---------->', config?.eventVariables)\n return Object.assign(componentInstance, {\n __render: Object.freeze({\n event,\n element,\n target: event.target,\n attribute: ElementUtils.getAttributeToObject(element),\n router: config?.router,\n range: Range.range,\n scripts: EventManager.setBindProperty(config?.scripts, componentInstance),\n ...config?.eventVariables,\n ...extraVars\n })\n });\n }\n\n private executeHandler(event: Event, handler: HandlerInfo, componentInstance: any) {\n const {element, type, attr} = handler;\n const config = getDomRenderConfig(componentInstance);\n\n switch (type) {\n case 'link':\n const varName = element.getAttribute(attr);\n if (!varName || !handler.property) return;\n\n if (attr.includes('leave') || attr.includes('enter') || attr.includes('focus') || attr.includes('blur')) {\n const relatedTarget = (event as MouseEvent).relatedTarget as Node;\n if (relatedTarget && element.contains(relatedTarget)) {\n return;\n }\n }\n\n const ownerVariablePath = element.getAttribute(EventManager.ownerVariablePathAttrName);\n let bindObj = componentInstance;\n if (ownerVariablePath) {\n bindObj = ScriptUtils.evaluateReturn(ownerVariablePath, componentInstance);\n }\n\n const mapScript = element.getAttribute(`${attr}:map`);\n let value = (element as any)[handler.property];\n\n if (mapScript) {\n const context = this.createExecutionContext(event, element, bindObj, config, {value});\n value = ScriptUtils.evaluate(`return ${mapScript}`, context);\n }\n\n if (typeof this.getValue(componentInstance, varName, bindObj) === 'function') {\n this.getValue(componentInstance, varName, bindObj)(value, event);\n } else {\n this.setValue(componentInstance, varName, value);\n }\n break;\n\n case 'event':\n const script = element.getAttribute(attr);\n if (!script) return;\n\n if (attr.endsWith('mouseleave') || attr.endsWith('mouseenter') || attr.endsWith('blur') || attr.endsWith('focus')) {\n const relatedTarget = (event as MouseEvent).relatedTarget as Node;\n if (relatedTarget && element.contains(relatedTarget)) {\n return;\n }\n }\n\n const context = this.createExecutionContext(event, element, componentInstance, config);\n const filterScript = element.getAttribute(`${attr}:filter`);\n let filter = true;\n // \uAC1C\uBC1C\uC790\uAC00 \uC0AC\uC6A9\uC911\uC5D0 \uBB38\uC81C\uAC00 \uBC1C\uC0DD\uB420(\uB514\uBC84\uAE45) \uBC84\uADF8\uB97C \uC720\uBC1C\uD560\uC218\uC788\uB294 \uAE30\uB2A5 \uD750\uB984\uC81C\uC5B4\uAC00 \uC548\uB420\uC218\uC788\uC5B4 \uAE30\uB2A5\uC744 \uC81C\uAC70\uD55C\uB2E4.\n // if (filterScript) {\n // filter = ScriptUtils.eval<boolean>(`${this.getBindScript(config)} return ${filterScript}`, context) ?? false;\n // }\n\n if (filter) {\n ScriptUtils.evaluate(`${this.getBindScript(config)} ${script}`, context);\n }\n\n // \uAC1C\uBC1C\uC790\uAC00 \uC0AC\uC6A9\uC911\uC5D0 \uBB38\uC81C\uAC00 \uBC1C\uC0DD\uB420(\uB514\uBC84\uAE45) \uBC84\uADF8\uB97C \uC720\uBC1C\uD560\uC218\uC788\uB294 \uAE30\uB2A5 \uD750\uB984\uC81C\uC5B4\uAC00 \uC548\uB420\uC218\uC788\uC5B4 \uAE30\uB2A5\uC744 \uC81C\uAC70\uD55C\uB2E4.\n // const hasDispatch = element.hasAttribute(`${attr}:dispatch`);\n // if (hasDispatch) {\n // element.dispatchEvent(new Event(event.type));\n // }\n break;\n\n case 'event-param':\n const paramScript = element.getAttribute(attr);\n if (!paramScript) return;\n\n if (attr.endsWith('mouseleave') || attr.endsWith('mouseenter') || attr.endsWith('blur') || attr.endsWith('focus')) {\n const relatedTarget = (event as MouseEvent).relatedTarget as Node;\n if (relatedTarget && element.contains(relatedTarget)) {\n return;\n }\n }\n\n const attributes = ElementUtils.getAttributeToObject(element);\n const params = {} as any;\n const prefix = attr + ':';\n Object.entries(attributes).filter(([k, v]) => k.startsWith(prefix)).forEach(([k, v]) => {\n params[k.slice(prefix.length)] = v;\n });\n\n const paramContext = this.createExecutionContext(event, element, componentInstance, config, {params});\n ScriptUtils.evaluate(`${this.getBindScript(config)} ${paramScript}`, paramContext);\n break;\n }\n }\n\n public findAttrElements(fragment: DocumentFragment | Element, config?: DomRenderConfig): Set<Element> {\n const elements = new Set<Element>();\n const addAttributes = config?.applyEvents?.map(it => it.attrName) ?? [];\n addAttributes.concat([...EventManager.attrNames]).forEach(attrName => {\n fragment?.querySelectorAll(`[${attrName}]`).forEach(it => {\n elements.add(it);\n });\n });\n return elements;\n }\n\n public applyEvent(obj: any, childNodes: Set<ChildNode> | Set<Element>, config?: DomRenderConfig) {\n childNodes.forEach(node => {\n if (node.nodeType === 1) {\n (node as any).obj = obj;\n }\n });\n\n this.procAttr<HTMLInputElement>(childNodes, EventManager.valueAttrName, (it, attribute) => {\n const script = attribute;\n if (script) {\n const data = ScriptUtils.evaluateReturn(script, obj);\n if (it.value !== data) {\n it.value = data;\n }\n }\n });\n this.procAttr<HTMLInputElement>(childNodes, EventManager.checkedAttrName, (it, attribute) => {\n const script = attribute;\n if (script) {\n const data = ScriptUtils.evaluateReturn(script, obj);\n if (it.checked!== data) {\n it.checked = data;\n }\n }\n });\n this.procAttr<HTMLOptionElement>(childNodes, EventManager.selectedAttrName, (it, attribute) => {\n const script = attribute;\n if (script) {\n const data = ScriptUtils.evaluateReturn(script, obj);\n if (it.selected!== data) {\n it.selected = data;\n }\n }\n });\n this.procAttr<HTMLInputElement>(childNodes, EventManager.readonlyAttrName, (it, attribute) => {\n const script = attribute;\n if (script) {\n const data = ScriptUtils.evaluateReturn(script, obj);\n if (it.readOnly!== data) {\n it.readOnly = data;\n }\n }\n });\n this.procAttr<HTMLInputElement>(childNodes, EventManager.disabledAttrName, (it, attribute) => {\n const script = attribute;\n if (script) {\n const data = ScriptUtils.evaluateReturn(script, obj);\n if (it.disabled!== data) {\n it.disabled = data;\n }\n }\n });\n this.procAttr<HTMLElement>(childNodes, EventManager.hiddenAttrName, (it, attribute) => {\n const script = attribute;\n if (script) {\n const data = ScriptUtils.evaluateReturn(script, obj);\n if (it.hidden!== data) {\n it.hidden = data;\n }\n }\n });\n this.procAttr<HTMLInputElement>(childNodes, EventManager.requiredAttrName, (it, attribute) => {\n const script = attribute;\n if (script) {\n const data = ScriptUtils.evaluateReturn(script, obj);\n if (it.required!== data) {\n it.required = data;\n }\n }\n });\n this.procAttr<HTMLDialogElement>(childNodes, EventManager.openAttrName, (it, attribute) => {\n const script = attribute;\n if (script) {\n const data = ScriptUtils.evaluateReturn(script, obj);\n if (it.open!== data) {\n it.open = data;\n }\n }\n });\n\n this.procAttr(childNodes, EventManager.normalAttrMapAttrName, (it, attribute) => {\n const map = new Map<string, string>(JSON.parse(attribute));\n map.forEach((v, k) => {\n const data = ScriptUtils.evaluate(`const $element = this.element; return ${v} `, Object.assign(obj, {\n __render: Object.freeze({\n element: it,\n attribute: ElementUtils.getAttributeToObject(it)\n })\n }));\n if (data === null) {\n it.removeAttribute(k);\n } else {\n it.setAttribute(k, data);\n }\n });\n });\n\n EventManager.WINDOW_EVENTS.forEach(it => {\n this.procAttr<HTMLInputElement>(childNodes, EventManager.attrPrefix + 'window-event-' + it, (it, attribute) => {\n (it as any).obj = obj;\n });\n });\n\n EventManager.linkAttrs.forEach(linkInfo => {\n this.procAttr<HTMLElement>(childNodes, linkInfo.name, (it, varName) => {\n\n // console.log('ink??????????')\n if (varName) {\n const ownerVariablePathName = it.getAttribute(EventManager.ownerVariablePathAttrName);\n const mapScript = it.getAttribute(`${linkInfo.name}:map`);\n let bindObj = obj;\n if (ownerVariablePathName) {\n bindObj = ScriptUtils.evaluateReturn(ownerVariablePathName, obj);\n }\n const getValue = this.getValue(obj, varName, bindObj);\n if (typeof getValue === 'function' && getValue) {\n let setValue = (it as any)[linkInfo.property];\n if (mapScript) {\n setValue = ScriptUtils.evaluate(`${this.getBindScript(config)} return ${mapScript}`, Object.assign(bindObj, {__render: Object.freeze({element: it, target: bindObj, range: Range.range, value: setValue, scripts: EventManager.setBindProperty(config?.scripts, obj), ...config?.eventVariables})}));\n }\n getValue(setValue);\n } else if (getValue) {\n let setValue = getValue;\n if (mapScript) {\n setValue = ScriptUtils.evaluate(`${this.getBindScript(config)} return ${mapScript}`, Object.assign(bindObj, {__render: Object.freeze({element: it, target: bindObj, range: Range.range, value: setValue, scripts: EventManager.setBindProperty(config?.scripts, obj), ...config?.eventVariables})}));\n }\n if (setValue === null) {\n it.removeAttribute(linkInfo.property);\n } else {\n (it as any)[linkInfo.property] = setValue;\n }\n } else if (getValue === undefined) {\n this.setValue(obj, varName, (it as any)[linkInfo.property]);\n }\n }\n });\n });\n\n this.directAttachEvents.forEach(eventName => {\n const attr = `${EventManager.attrPrefix}event-${eventName}`;\n this.procAttr<HTMLElement>(childNodes, attr, (element, script) => {\n const handler = (event: Event) => {\n const componentInstance = this.findComponentInstance(element);\n if (!componentInstance) return;\n\n const context = this.createExecutionContext(event, element, componentInstance, config);\n const filterScript = element.getAttribute(`${attr}:filter`);\n let filter = true;\n if (filterScript) {\n filter = ScriptUtils.evaluate<boolean>(`${this.getBindScript(config)} return ${filterScript}`, context) ?? false;\n }\n if (filter) {\n ScriptUtils.evaluate(`${this.getBindScript(config)} ${script}`, context);\n }\n };\n element.addEventListener(eventName, handler);\n // TODO: Add logic to remove this listener when the element is destroyed.\n });\n });\n\n this.procAttr<HTMLElement>(childNodes, EventManager.onInitAttrName, (it, attribute) => {\n let script = attribute;\n if (script) {\n script = 'return ' + script;\n }\n if (script) {\n ScriptUtils.evaluate(`${this.getBindScript(config)}; ${script} `, Object.assign(obj, {\n __render: Object.freeze({\n element: it,\n attribute: ElementUtils.getAttributeToObject(it),\n ...config?.eventVariables\n })\n }));\n }\n });\n\n this.onRenderedEvent(obj, childNodes, config);\n this.changeVar(obj, childNodes, undefined, config);\n const elements = Array.from(childNodes).filter(it => it.nodeType === 1).map(it => it as Element);\n elements.forEach(it => {\n config?.applyEvents?.filter(ta => it.getAttribute(ta.attrName) !== null).forEach(ta => ta.callBack(it, it.getAttribute(ta.attrName)!, obj));\n });\n }\n\n public onRenderedEvent(obj: any, childNodes: Set<ChildNode> | Set<Element> | Node[], config?: DomRenderConfig) {\n this.procAttr<HTMLInputElement>(childNodes, EventManager.onRenderedInitAttrName, (it, attribute) => {\n if (!it.isConnected) {\n return;\n }\n let script = attribute;\n if (script) {\n script = 'return ' + script;\n }\n if (script) {\n ScriptUtils.evaluate(`${this.getBindScript(config)}; ${script} `, Object.assign(obj, {\n __render: Object.freeze({\n element: it,\n attribute: ElementUtils.getAttributeToObject(it),\n ...config?.eventVariables\n })\n }));\n }\n });\n }\n\n public changeVar(obj: any, elements: Set<Element> | Set<ChildNode>, varName?: string, config?: DomRenderConfig) {\n // console.log('changeVar', obj, elements, varName)\n this.procAttr(elements, EventManager.styleAttrName, (it, attribute) => {\n let script = attribute;\n if (script) {\n script = 'return ' + script;\n }\n if (EventManager.isUsingThisVar(script, varName) || varName === undefined) {\n const data = ScriptUtils.evaluate(`const $element = this.__render.element; ${script} `, Object.assign(obj, {\n __render: Object.freeze({\n element: it,\n attribute: ElementUtils.getAttributeToObject(it)\n })\n }));\n if (typeof data === 'string') {\n it.setAttribute('style', data);\n } else if (Array.isArray(data)) {\n it.setAttribute('style', data.join(';'));\n } else {\n for (const [key, value] of Object.entries(data)) {\n if (it instanceof HTMLElement) {\n (it.style as any)[key] = String(value);\n }\n }\n }\n }\n });\n\n this.procAttr(elements, EventManager.classAttrName, (it, attribute) => {\n let script = attribute;\n if (script) {\n script = 'return ' + script;\n }\n if (EventManager.isUsingThisVar(script, varName) || varName === undefined) {\n const data = ScriptUtils.evaluate(`const $element = this.element; ${script} `, Object.assign(obj, {\n __render: Object.freeze({\n element: it,\n attribute: ElementUtils.getAttributeToObject(it)\n })\n }));\n\n if (typeof data === 'string') {\n it.setAttribute('class', data);\n } else if (Array.isArray(data)) {\n it.setAttribute('class', data.join(' '));\n } else {\n for (const [key, value] of Object.entries(data)) {\n if (it instanceof HTMLElement) {\n if (value) {\n it.classList.add(key);\n } else {\n it.classList.remove(key);\n }\n }\n }\n }\n }\n });\n }\n\n public procAttr<T extends Element = Element>(elements: Set<Element> | Set<ChildNode> | Node[] = new Set(), attrName: string, callBack: (h: T, value: string, attributes: any) => void) {\n const sets = new Set<Element>();\n elements.forEach(it => {\n if (!it) {\n return;\n }\n if (it.nodeType === 1) {\n const e = it as Element;\n sets.add(e);\n e.querySelectorAll<T>(`[${attrName}]`).forEach(it => {\n sets.add(it);\n });\n }\n });\n sets.forEach(it => {\n const attr = it.getAttribute(attrName);\n const attrs = ElementUtils.getAttributeToObject(it);\n if (attr) {\n callBack(it as T, attr, attrs);\n }\n });\n }\n\n public getValue<T = any>(obj: any, name: string, bindObj?: any): T {\n let r = ScriptUtils.evaluateReturn(name, obj);\n if (typeof r === 'function') {\n r = r.bind(bindObj ?? obj);\n }\n return r;\n }\n\n public setValue(obj: any, name: string, value?: any) {\n name = name.replaceAll('this.', 'this.this.');\n ScriptUtils.evaluate(`${name} = this.value;`, {\n this: obj,\n value: value\n });\n }\n\n public static isUsingThisVar(raws: string | null | undefined, varName: string | null | undefined): boolean {\n if (varName && raws) {\n if (varName.startsWith('this.')) {\n varName = varName.replace(/this\\./, '');\n }\n // TODO: \uD6D4.. \uAF2D\uD544\uC694\uD55C\uAC00..? \uD2B8\uB9AC\uAC70\uB420\uB54C \uC2A4\uD06C\uB9BD\uD2B8\uBCC0\uC218 \uAE4C\uC9C0 \uAC10\uC9C0\uD574\uC57C\uB420\uAE4C?\n EventManager.VARNAMES.forEach(it => {\n // raws = raws!.replace(RegExp(it.replace('$', '\\\\$'), 'g'), `this?.___${it}`);\n raws = raws!.replace(RegExp(it.replace('$', '\\\\$'), 'g'), `this.___${it}`);\n });\n const variablePaths = ObjectUtils.Path.detectPathFromScript(raws ?? '', {excludeThis: true});\n return variablePaths.has(varName);\n }\n return false;\n }\n\n public static setBindProperty(scripts: { [p: string]: any } | undefined, obj: any): { [p: string]: any } | undefined {\n if (scripts) {\n const newScripts = Object.assign({}, scripts);\n for (const [key, value] of Object.entries(newScripts)) {\n if (typeof value === 'function') {\n newScripts[key] = value.bind(obj);\n }\n }\n return newScripts;\n }\n }\n\n getBindScript(config?: DomRenderConfig) {\n if (config?.eventVariables) {\n const bindScript = Object.entries(config.eventVariables).filter(([key, value]) => !this.bindScript.includes(`const ${key}`)).map(([key, value]) => {\n return `const ${key} = this.__render.${key};`;\n }).join(';');\n return this.bindScript + '' + bindScript;\n } else {\n return this.bindScript;\n }\n }\n}\n\n", "import { AttrInitCallBack } from '../rawsets/AttrInitCallBack';\nimport { ElementInitCallBack } from '../rawsets/ElementInitCallBack';\nimport { ComponentSet } from '../components/ComponentSet';\nimport { RawSet } from '../rawsets/RawSet';\nimport { Render } from '../rawsets/Render';\nimport { Attrs } from '../rawsets/Attrs';\nimport { DomRenderConfig } from '../configs/DomRenderConfig';\nimport { ObjectUtils } from '@dooboostore/core/object/ObjectUtils';\n\nexport interface OperatorAround {\n beforeAttr?: (value: string | null | undefined, opratorExecutor: OperatorExecuter) => string | null | undefined,\n before?: (data: any, opratorExecutor: OperatorExecuter) => any,\n after?: (data: any, opratorExecutor: OperatorExecuter) => void,\n}\n\nexport enum ExecuteState {\n EXECUTE,\n NO_EXECUTE,\n STOP\n}\n\nexport type AfterCallBack = {\n onAttrInitCallBacks: AttrInitCallBack[],\n onElementInitCallBacks: ElementInitCallBack[],\n onThisComponentSetCallBacks: ComponentSet[]\n}\nexport type ReturnContainer = { raws: RawSet[], fag: DocumentFragment };\n\nexport type ElementSource = { element: Element, attrs: Attrs, attr?: string | null, attrName?: string | undefined };\n\nexport type Source = { config: DomRenderConfig, operatorAround?: OperatorAround, obj: any };\n\nexport abstract class OperatorExecuter<T = any> {\n constructor(public rawSet: RawSet,\n public render: Render,\n public returnContainer: ReturnContainer,\n public elementSource: ElementSource,\n public source: Source,\n public afterCallBack: AfterCallBack,\n public startingExecute = true) {\n };\n\n async start(): Promise<ExecuteState> {\n let attrValue = this.elementSource.attr;\n // console.log('OperatorExecuter ', attrValue, this);\n if (this.source.operatorAround?.beforeAttr) {\n attrValue = this.source.operatorAround.beforeAttr(attrValue, this) ?? '';\n }\n\n let r = attrValue;\n if (r && this.startingExecute) {\n const optionalPath = ObjectUtils.Path.toOptionalChainPath(attrValue);\n r = ObjectUtils.Script.evaluate(` ${this.render.bindScript}; return ${optionalPath}`, Object.assign(this.source.obj, {__render: this.render}));\n }\n if (this.source.operatorAround?.before) {\n r = this.source.operatorAround?.before(r, this);\n }\n\n const state = await this.execute(r as unknown as T)\n\n this.source.operatorAround?.after?.(r, this);\n return state;\n };\n\n abstract execute(value: T): Promise<ExecuteState>;\n}\n", "import {AfterCallBack, ElementSource, ExecuteState, OperatorExecuter, ReturnContainer, Source} from './OperatorExecuter';\nimport {RawSet} from '../rawsets/RawSet';\nimport {Render} from '../rawsets/Render';\n\nexport class DrPre extends OperatorExecuter<null> {\n constructor(rawSet: RawSet, render: Render, returnContainer: ReturnContainer, elementSource: ElementSource, source: Source, afterCallBack: AfterCallBack) {\n source.operatorAround = undefined;\n super(rawSet, render, returnContainer, elementSource, source, afterCallBack);\n }\n\n async execute(value: null): Promise<ExecuteState> {\n return (value != null) ? ExecuteState.EXECUTE : ExecuteState.NO_EXECUTE;\n }\n}\n", "import {RawSet} from '../rawsets/RawSet';\nimport {Render} from '../rawsets/Render';\nimport {AfterCallBack, ElementSource, ExecuteState, OperatorExecuter, ReturnContainer, Source} from './OperatorExecuter';\n\nexport abstract class OperatorExecuterAttrRequire<T> extends OperatorExecuter<T> {\n constructor(rawSet: RawSet,\n render: Render,\n returnContainer: ReturnContainer,\n elementSource: ElementSource,\n source: Source,\n afterCallBack: AfterCallBack,\n startingExecute = true) {\n super(rawSet, render, returnContainer, elementSource, source, afterCallBack, startingExecute);\n };\n\n async execute(data: T): Promise<ExecuteState> {\n if (!this.elementSource.attr) {\n return ExecuteState.NO_EXECUTE;\n }\n return await this.executeAttrRequire(data);\n }\n\n protected abstract executeAttrRequire(attr: T): Promise<ExecuteState>;\n}\n", "import {OperatorExecuterAttrRequire} from './OperatorExecuterAttrRequire';\nimport {ScriptUtils} from '@dooboostore/core-web/script/ScriptUtils';\nimport {RawSet} from '../rawsets/RawSet';\nimport {Render} from '../rawsets/Render';\nimport {AfterCallBack, ElementSource, ExecuteState, ReturnContainer, Source} from './OperatorExecuter';\n\nexport class Dr extends OperatorExecuterAttrRequire<null> {\n constructor(rawSet: RawSet, render: Render, returnContainer: ReturnContainer, elementSource: ElementSource, source: Source, afterCallBack: AfterCallBack) {\n super(rawSet, render, returnContainer, elementSource, source, afterCallBack);\n }\n\n async executeAttrRequire(data: null): Promise<ExecuteState> {\n const itRandom = RawSet.drItOtherEncoding(this.elementSource.element);\n const vars = RawSet.drVarEncoding(this.elementSource.element, this.elementSource.attrs.drVarOption ?? '');\n const newTemp = this.source.config.window.document.createElement('temp');\n ScriptUtils.evaluate(`\n ${this.render.bindScript}\n const n = $element.cloneNode(true);\n var destIt = ${this.elementSource.attrs.drItOption};\n if (destIt !== undefined) {\n n.getAttributeNames().forEach(it => n.setAttribute(it, n.getAttribute(it).replace(/\\\\#it\\\\#/g, destIt)))\n // console.log('----', n.innerHTML);\n n.innerHTML = n.innerHTML.replace(/\\\\#it\\\\#/g, destIt);\n // console.log('----', n.innerHTML);\n }\n if (this.__render.drStripOption === 'true') {\n Array.from(n.childNodes).forEach(it => this.__fag.append(it));\n } else {\n this.__render.fag.append(n);\n }`, Object.assign(this.source.obj, {\n __render: Object.freeze({\n fag: newTemp,\n drStripOption: this.elementSource.attrs.drStripOption,\n ...this.render\n } as Render)\n }));\n RawSet.drVarDecoding(newTemp, vars);\n RawSet.drItOtherDecoding(newTemp, itRandom);\n const tempalte = this.source.config.window.document.createElement('template');\n tempalte.innerHTML = newTemp.innerHTML;\n this.returnContainer.fag.append(tempalte.content)\n const rr = RawSet.checkPointCreates(this.returnContainer.fag, this.source.obj, this.source.config)\n this.elementSource.element.parentNode?.replaceChild(this.returnContainer.fag, this.elementSource.element);\n this.returnContainer.raws.push(...rr);\n return ExecuteState.EXECUTE;\n }\n}\n", "import { OperatorExecuterAttrRequire } from './OperatorExecuterAttrRequire';\nimport { ScriptUtils } from '@dooboostore/core-web/script/ScriptUtils';\nimport { RawSet } from '../rawsets/RawSet';\nimport { Render } from '../rawsets/Render';\nimport { AfterCallBack, ElementSource, ExecuteState, ReturnContainer, Source } from './OperatorExecuter';\nimport { ObjectUtils } from '@dooboostore/core/object/ObjectUtils';\n\nexport class DrIf extends OperatorExecuterAttrRequire<string> {\n constructor(rawSet: RawSet, render: Render, returnContainer: ReturnContainer, elementSource: ElementSource, source: Source, afterCallBack: AfterCallBack) {\n source.operatorAround = undefined;\n super(rawSet, render, returnContainer, elementSource, source, afterCallBack, false);\n }\n\n async executeAttrRequire(attr: string): Promise<ExecuteState> {\n const itRandom = RawSet.drItOtherEncoding(this.elementSource.element, 'DrIf');\n const vars = RawSet.drVarEncoding(this.elementSource.element, this.elementSource.attrs.drVarOption ?? '');\n const newTemp = this.source.config.window.document.createElement('temp');\n // Object.entries(this.__render.drAttr).filter(([k,v]) => k !== 'drIf' && v).forEach(([k, v]) => n.setAttribute(this.__render.drAttrsOriginName[k], v)); <-- \uC774\uBD80\uBD84\uC740 \uB2E4\uB978 attr\uC5D0\uB3C4 \uC801\uC6A9\uC744 \uD560\uC9C0\uB9D0\uC9C0 \uC0DD\uAC01\uD574\uC57C\uB428 \uC5D8\uB9AC\uBA3C\uD2B8 \uC874\uC7AC\uC720\uBB34\uC5D0 \uB530\uB77C\uC11C \uC801\uC6A9\uC744 \uD560\uC9C0\uB9D0\uC9C0 \uACB0\uC815\uD574\uC57C\uB428\n const keepgoing = ScriptUtils.evaluate(`\n ${this.render.bindScript}\n ${this.elementSource.attrs.drBeforeOption ?? ''}\n if ($rawSet.data === (${ObjectUtils.Path.toOptionalChainPath(attr)})) {\n return false;\n }\n $rawSet.data = ${ObjectUtils.Path.toOptionalChainPath(attr)};\n if($rawSet.data) {\n const n = $element.cloneNode(true);\n Object.entries(this.__render.drAttr).filter(([k,v]) => k !== 'drIf' && v).forEach(([k, v]) => n.setAttribute(this.__render.drAttrsOriginName[k], v));\n var destIt = ${this.elementSource.attrs.drItOption};\n if (destIt !== undefined) {\n // \uC5EC\uAE30\uAC00 ..\uC544\uC8FC \uD5DB\uAC08\uB9AC\uB294\uB370...\n Array.from(n.getAttributeNames()).forEach(it => n.setAttribute(it, n.getAttribute(it).replace(/\\\\#DrIFIt\\\\#/g, destIt)))\n n.innerHTML = n.innerHTML.replace(/\\\\#DrIFIt\\\\#/g, destIt);\n }\n if (this.__render.drStripOption === 'true') {\n Array.from(n.childNodes).forEach(it => this.__render.fag.append(it));\n } else {\n this.__render.fag.append(n);\n }\n }\n ${this.elementSource.attrs.drAfterOption ?? ''};\n return true;\n `, Object.assign(this.source.obj,\n {\n __render: Object.freeze({\n fag: newTemp,\n drAttr: this.elementSource.attrs,\n drAttrsOriginName: RawSet.drAttrsOriginName,\n drStripOption: this.elementSource.attrs.drStripOption,\n ...this.render\n } as Render)\n }\n ));\n // TODO: \uBB50\uC9C0?? \uC9C0\uC6CC\uC57C\uB418\uB294\uAC70 \uC544\uB2CC\uAC00?\n if (keepgoing === false) {\n return ExecuteState.STOP;\n }\n RawSet.drVarDecoding(newTemp, vars);\n RawSet.drItOtherDecoding(newTemp, itRandom);\n // const bypass = (newTemp.innerHTML ?? '').trim().length <= 0;\n const tempalte = this.source.config.window.document.createElement('template');\n tempalte.innerHTML = newTemp.innerHTML;\n this.returnContainer.fag.append(tempalte.content);\n const rr = RawSet.checkPointCreates(this.returnContainer.fag, this.source.obj, this.source.config);\n this.elementSource.element.parentNode?.replaceChild(this.returnContainer.fag, this.elementSource.element);\n this.returnContainer.raws.push(...rr);\n return ExecuteState.EXECUTE;\n }\n}\n", "export class Shield {\n [name: string]: any\n}\nexport class DomRenderFinalProxy<T extends object> implements ProxyHandler<T> {\n set(target: T, p: string | symbol, value: any, receiver: any): boolean {\n (target as any)[p] = value;\n return true;\n }\n\n get(target: T, p: string | symbol, receiver: any): any {\n return (target as any)[p];\n }\n\n public static final<T = any> (obj: T): T {\n (obj as any)._DomRender_isFinal = true;\n return obj;\n }\n\n public static isFinal<T = any> (obj: T) {\n return '_DomRender_isFinal' in (obj as any);\n }\n\n public static unFinal<T = any> (obj: T): T {\n delete (obj as any)._DomRender_isFinal;\n return obj;\n }\n\n has(target: T, p: string | symbol): boolean {\n return p === '_DomRender_isFinal' || p in target;\n }\n}\n\n", "import { DomRenderFinalProxy } from '../types/Types';\n\nexport type ComponentSetConfig = {objPath?: string | null, beforeComponentSet?: ComponentSet};\nexport class ComponentSet<T = any> {\n private _config: ComponentSetConfig;\n private _template?: string;\n private _styles?: string[] | string;\n constructor(public obj: T, source: {template?: string, styles?: (string[]) | string}, config?: ComponentSetConfig) {\n this._template = source.template;\n this._styles = source.styles;\n this._config = DomRenderFinalProxy.final(Object.assign({objPath: 'obj'} as ComponentSetConfig, config))\n }\n get template() {\n return this._template;\n }\n get styles() {\n return this._styles;\n }\n get config() {\n return this._config;\n }\n public setTemplateStyle(set: {template?: string, styles?: string | (string[])}) {\n this._template = set.template;\n this._styles = set.styles;\n }\n}\n", "export interface OnDrThisUnBind {\n onDrThisUnBind(): void;\n}\nexport const isOnDrThisUnBind = (obj: any): obj is OnDrThisUnBind => {\n return typeof obj?.onDrThisUnBind === 'function';\n}", "export interface OnDrThisBind {\n onDrThisBind(): void;\n}\nexport const isOnDrThisBind = (obj: any): obj is OnDrThisBind => {\n return typeof obj?.onDrThisBind === 'function';\n}", "import { OperatorExecuterAttrRequire } from './OperatorExecuterAttrRequire';\nimport { RawSet } from '../rawsets/RawSet';\nimport { ComponentSet } from '../components/ComponentSet';\nimport { ExecuteState } from './OperatorExecuter';\nimport { isOnDrThisUnBind } from '../lifecycle/dr-this/OnDrThisUnBind';\nimport { isOnDrThisBind } from '../lifecycle/dr-this/OnDrThisBind';\nimport { ScriptUtils } from '@dooboostore/core-web/script/ScriptUtils';\nimport { Render } from '../rawsets/Render';\n\nexport class DrThis extends OperatorExecuterAttrRequire<string> {\n async executeAttrRequire(attr: any): Promise<ExecuteState> {\n // const e = this.elementSource;\n // console.log('drThis!!!!!!!!!!!!!', this.elementSource.attrs.drDetectIfOption, this.elementSource.attrs.drIfOption);\n const optionIf = this.elementSource.attrs.drDetectIfOption ?? this.elementSource.attrs.drIfOption;\n const ok = ScriptUtils.evaluate(`\n ${this.render.bindScript}\n try {\n const ok = ${this.elementSource.attrs.drThis};\n const option = ${optionIf};\n if (option!==null) {\n return !!(ok && option); \n }\n // console.log('vv', ${this.elementSource.attrs.drThis}, ${this.elementSource.attrs.drIfOption}, '${this.elementSource.attrs.drIfOption}');\n return !!ok;\n } catch(e) {\n return false;\n }\n `, Object.assign(this.source.obj,\n {\n __render: Object.freeze({\n drAttr: this.elementSource.attrs,\n drAttrsOriginName: RawSet.drAttrsOriginName,\n ...this.render\n } as Render)\n }\n ));\n // console.log('----zxvxcv-----!!!aa!', ok);\n // if (!ok) {\n // this.elementSource.element.remove();\n // return ExecuteState.STOP;\n // }\n\n // console.log('----zxvxcv-----!!!!', attr);\n if (attr && this.elementSource.attrs.drThis && ok) {\n let thisPath = this.elementSource.attrs.drThis;\n // let optionIf = this.elementSource.attrs.drIfOption;\n // console.log('drThis!!!!!!!!!!!!!, ', optionIf)\n if (attr instanceof ComponentSet) {\n // console.log('drThis!!!!!!!!!!->', attr)\n // if (this.rawSet.data) {\n // const destroyOptions = this.elementSource.attrs.drDestroyOption?.split(',') ?? [];\n // debugger;\n // RawSet.destroy((this.rawSet.data as ComponentSet).obj, [], this.source.config, destroyOptions);\n // }\n if (attr.config?.beforeComponentSet?.obj !== attr.obj) {\n if (isOnDrThisUnBind(attr.config.beforeComponentSet?.obj)) {\n attr.config.beforeComponentSet?.obj?.onDrThisUnBind?.();\n }\n }\n // this.rawSet.dataSet ??= {};\n // this.rawSet.dataSet.data = attr;\n if (attr.config?.beforeComponentSet?.obj !== attr.obj) {\n if (isOnDrThisBind(attr.obj)) {\n attr.obj?.onDrThisBind?.();\n }\n }\n // \uC911\uC694: componentSet \uC758 objPath\uB97C \uBCF4\uACE0 \uD310\uB2E8\uD558\uB294 \uC911\uC694\uD55C\uBD80\uBD84\n thisPath = `${this.elementSource.attrs.drThis}${attr.config.objPath ? ('.' + attr.config.objPath) : ''}`;\n // const zthisPath = `${this.elementSource.attrs.drThis}${attr.config.objPath ? ('?.' + attr.config.objPath) : ''}`;\n // console.log('thisPaththisPaththisPath',thisPath)\n this.setThisPath(thisPath);\n const componentBody = await RawSet.drThisCreate(this.rawSet, this.elementSource.element, thisPath, this.elementSource.attrs.drVarOption ?? '', this.elementSource.attrs.drStripOption, this.source.obj, this.source.config, attr);\n if (componentBody) {\n this.returnContainer.fag.append(componentBody)\n this.afterCallBack.onThisComponentSetCallBacks.push(attr);\n }\n\n } else {\n this.setThisPath(thisPath);\n const fragment = await RawSet.drThisCreate(this.rawSet, this.elementSource.element, this.elementSource.attrs.drThis, this.elementSource.attrs.drVarOption ?? '', this.elementSource.attrs.drStripOption, this.source.obj, this.source.config);\n if (fragment) {\n this.returnContainer.fag.append(fragment)\n }\n }\n\n\n // console.log('!!!!!!!!!zzz', Array.from(this.returnContainer.fag.childNodes), this.elementSource.element);\n const rr = RawSet.checkPointCreates(this.returnContainer.fag, this.source.obj, this.source.config)\n this.elementSource.element.parentNode?.replaceChild(this.returnContainer.fag, this.elementSource.element);\n this.returnContainer.raws.push(...rr);\n } else {\n this.elementSource.element.remove();\n }\n return ExecuteState.EXECUTE;\n }\n\n\n setThisPath(thisPath: string) {\n\n // if (this.rawSet.point.start instanceof HTMLMetaElement && this.rawSet.point.end instanceof HTMLMetaElement) {\n\n if (this.rawSet.point.start instanceof this.source.config.window.HTMLMetaElement && this.rawSet.point.end instanceof this.source.config.window.HTMLMetaElement) {\n this.rawSet.point.start.setAttribute('this-path', thisPath)\n this.rawSet.point.end.setAttribute('this-path', thisPath)\n }\n }\n}\n", "\nexport type Valid<T = any, E = Element> = (value?: T, target?: E, event?: Event) => boolean;\nexport type ValidAction<T = any, E = Element> = (valid: boolean, value?: T, target?: E, event?: Event) => void;\n// export interface Valid<T = any, E = Element> {\n// valid(value?: T, target?: E, event?: Event): boolean;\n// }\nexport abstract class Validator<T = any, E = Element> {\n private _target?: E;\n private _event?: Event;\n private _autoValid!: boolean;\n private _autoValidAction!: boolean;\n private _validAction?: ValidAction<T, E>;\n constructor(protected _value?: T, target?: E, event?: Event, autoValid = true, autoValidAction = true) {\n this.setTarget(target);\n this.setEvent(event);\n this.setAutoValid(autoValid)\n this.setAutoValidAction(autoValidAction)\n }\n\n getValidAction(): ValidAction<T, E> | undefined {\n return this._validAction;\n }\n\n setValidAction(value: ValidAction<T, E>) {\n this._validAction = value;\n return this;\n }\n\n getAutoValid() {\n return this._autoValid;\n }\n\n setAutoValid(autoValid: boolean) {\n this._autoValid = autoValid;\n return this;\n }\n\n getAutoValidAction() {\n return this._autoValidAction;\n }\n\n setAutoValidAction(autoValid: boolean) {\n this._autoValidAction = autoValid;\n return this;\n }\n\n getEvent() {\n return this._event;\n }\n\n setEvent(event: Event | undefined) {\n if (event) {\n this._event = this.domRenderFinal(event);\n }\n return this;\n }\n\n getTarget() {\n return this._target;\n }\n\n targetFocus() {\n (this._target as any)?.focus?.();\n }\n\n targetReset() {\n (this._target as any)?.reset?.();\n }\n\n targetDispatchEvent(event: Event) {\n return (this._target as any)?.dispatchEvent(event);\n }\n\n setTarget(target: E | undefined) {\n if (target) {\n this._target = this.domRenderFinal(target);\n }\n return this;\n }\n\n private domRenderFinal(obj: any) {\n (obj as any)._DomRender_isFinal = true;\n return obj\n }\n\n get value(): T | undefined {\n if (this._value === undefined || this._value === null) {\n this._value = (this.getTarget() as any)?.value;\n }\n return this._value;\n }\n\n set value(value: T | undefined) {\n // console.log('---?set?', value, this)\n this._value = value;\n this.tickValue(value);\n }\n\n protected tickValue(value: T | undefined) {\n this.changeValue(value);\n const target = this.getTarget() as any;\n if (target && target?.value !== undefined && target?.value !== null) {\n try {\n target.value = this._value;\n } catch (e) {\n console.error('set value function is blocked ')\n }\n }\n if (this.getAutoValidAction()) {\n this.validAction();\n } else if (this.getAutoValid()) {\n this.valid();\n }\n }\n\n set(value?:T, target?: E, event?: Event) {\n this.setTarget(target);\n this.setEvent(event)\n this.value = value;\n }\n\n changeValue(value: T | undefined) {\n }\n\n get checked(): boolean {\n return (this.getTarget() as any)?.checked ?? false;\n }\n\n set checked(checked: boolean) {\n const target = this.getTarget() as any;\n if (target) {\n target.checked = checked;\n }\n }\n\n get selectedIndex(): number {\n return (this.getTarget() as any)?.selectedIndex ?? -1;\n }\n\n set selectedIndex(selectedIndex: number) {\n const target = this.getTarget() as any;\n if (target) {\n target.selectedIndex = selectedIndex;\n }\n }\n\n public querySelector(selector: string) {\n return (this.getTarget() as unknown as Element)?.querySelector(selector);\n }\n\n public querySelectorALL(selector: string) {\n return (this.getTarget() as unknown as Element)?.querySelectorAll(selector);\n }\n\n public validAction() {\n const valid = this.valid();\n this.getValidAction()?.(valid, this.value, this.getTarget(), this.getEvent());\n return valid;\n }\n\n // public childValidAction() {\n // const valid = this.childValids();\n // this.getValidAction()?.(valid, this.value, this.getTarget(), this.getEvent());\n // return valid;\n // }\n\n public abstract valid(): boolean;\n\n public inValid(): boolean {\n return !this.valid();\n };\n\n public allValid() {\n return this.valid() && this.childInValid();\n }\n\n public allValidAction() {\n return this.validAction() && this.childInValidAction();\n }\n\n public allInValid() {\n return !this.allValid();\n }\n\n public allInValidAction() {\n return !this.allValidAction();\n }\n\n public childValid(): boolean {\n return !this.childInValid();\n }\n\n public childValue(): {[key: string]: any } {\n const data = {} as any;\n this.childValidators().filter(([k, v]) => {\n data[k] = v.value;\n });\n return data;\n }\n\n public childValidAction(): boolean {\n return !this.childInValidAction();\n }\n\n public childInValid(): boolean {\n const inValid = this.childValidators().filter(([k, v]) => !v.valid());\n return inValid.length > 0;\n }\n\n public childInValidValidator(): [string, Validator<any, Element>][] {\n const inValid = this.childValidators().filter(([k, v]) => !v.valid());\n return inValid;\n }\n\n public childInValidAction(): boolean {\n const inValid = this.childValidators().filter(([k, v]) => !v.validAction());\n return inValid.length > 0;\n }\n\n public childValidator(name: string): Validator | undefined {\n return Object.entries(this).find(([k, v]) => ( k === name && (v instanceof Validator)))?.[1];\n }\n\n public childValidators(): [string, Validator][] {\n return Object.entries(this).filter(([k, v]) => (v instanceof Validator));\n }\n\n public childValidValidator(): [string, Validator][] {\n return this.childValidators().filter(it => it[1].valid());\n }\n\n public syncValue() {\n this.value = (this.getTarget() as any)?.value;\n }\n\n public allSyncValue() {\n this.childValidators().forEach(([k, e]) => {\n e.syncValue();\n })\n }\n\n public get length() {\n return (this.value as any)?.length ?? 0;\n }\n}", "import {Validator} from './Validator';\n\nexport class NonPassValidator<T = any, E = Element> extends Validator<T, E> {\n constructor(value?: T, target?: E, event?: Event, autoValid = true) {\n super(value, target, event, autoValid);\n }\n\n valid(): boolean {\n return false;\n }\n}\n", "import {Validator} from './Validator';\nimport {NonPassValidator} from './NonPassValidator';\n\nexport type MakeValidator<T = any, E = Element> = (value: T, target: E, event?: Event) => Validator<T, E>;\n\nexport abstract class ValidatorArray<T = any, E = Element> extends Validator<Validator<T, E>[], E> {\n private _makeValidatorFactory: MakeValidator<T, E> = (value: T, target: E, event?: Event): Validator<T, E> => {\n return new NonPassValidator(value, target, event);\n }\n\n constructor(value?: Validator<T, E>[], target?: E, event?: Event, autoValid = true) {\n super(value, target, event, autoValid);\n }\n\n getMakeValidatorFactory(): MakeValidator<T, E> {\n return this._makeValidatorFactory;\n }\n\n setMakeValidatorFactory(value: MakeValidator<T, E>) {\n this._makeValidatorFactory = value;\n return this;\n }\n\n setArrayValue(target: E, value: T, event?: Event) {\n this.value?.filter(it => {\n if (it.getTarget()) {\n return it.getTarget() === target;\n } else {\n return false;\n }\n }).forEach(it => {\n it.set(value, target, event);\n });\n this.tickValue(this.value)\n }\n\n addValidator(value: T, target: E, event?: Event) {\n if (!this.value) {\n this.value = [];\n }\n if (value instanceof Validator) {\n this.value?.push(value)\n } else {\n this.value?.push(this.makeValidator(value, target, event))\n }\n this.tickValue(this.value)\n }\n\n allChecked(checked: boolean) {\n this.checked = checked;\n this.value?.forEach(it => {\n it.checked = checked;\n })\n }\n\n getValidators() {\n return this._value;\n }\n\n getValidator(e: E) {\n return this.value?.filter(it => it.getTarget() === e)[0]\n }\n\n getValidatorByValue(value: T) {\n const validatorByValue = this.getValidatorByValues(value)[0];\n return validatorByValue;\n }\n\n getValidatorByValues(value: T) {\n return this.value?.filter(it => it.value === value) ?? [];\n }\n\n removeElement(e: E) {\n const value = this.value;\n if (value) {\n this.value = value.filter(it => it.getTarget() !== e);\n }\n }\n\n makeValidator(value: T, target: E, event?: Event): Validator<T, E> {\n return this._makeValidatorFactory(value, target, event);\n };\n}\n", "import {ScriptUtils} from '@dooboostore/core-web/script/ScriptUtils';\nimport {RawSet} from '../rawsets/RawSet';\nimport {Validator} from '../validators/Validator';\nimport {EventManager} from '../events/EventManager';\nimport {ValidatorArray} from '../validators/ValidatorArray';\nimport {Render} from '../rawsets/Render';\nimport {OperatorExecuterAttrRequire} from './OperatorExecuterAttrRequire';\nimport {AfterCallBack, ElementSource, ExecuteState, ReturnContainer, Source} from './OperatorExecuter';\n\nexport class DrForm extends OperatorExecuterAttrRequire<string> {\n constructor(rawSet: RawSet, render: Render, returnContainer: ReturnContainer, elementSource: ElementSource, source: Source, afterCallBack: AfterCallBack) {\n super(rawSet, render, returnContainer, elementSource, source, afterCallBack, false);\n }\n\n async executeAttrRequire(attr: string): Promise<ExecuteState> {\n RawSet.drFormOtherMoveAttr(this.elementSource.element, 'name', 'temp-name', this.source.config);\n const data = ScriptUtils.evaluateReturn(`${attr}`, this.source.obj);\n\n const childs = Array.from(this.elementSource.element.querySelectorAll('[name]'));\n\n const fromName = ScriptUtils.evaluateReturn(this.elementSource.element.getAttribute(`${RawSet.DR_FORM_NAME}:name`) ?? '', this.source.obj);\n const thisName = fromName ?? this.elementSource.element.getAttribute('name');\n // // \uC790\uAE30\uC790\uC2E0\uC774 Input \uB300\uC0C1\uC77C\uB54C\n if (childs.length <= 0 && thisName) {\n childs.push(this.elementSource.element);\n } else {\n if (data instanceof Validator) {\n data.setTarget(this.elementSource.element);\n }\n }\n childs.forEach(it => {\n const eventName = it.getAttribute(`${RawSet.DR_FORM_NAME}:event`) ?? 'change'\n const validatorName = it.getAttribute(`${RawSet.DR_FORM_NAME}:validator`);\n const attrEventName = EventManager.attrPrefix + 'event-' + eventName;\n let varpath = ScriptUtils.evaluateReturn(this.elementSource.element.getAttribute(`${RawSet.DR_FORM_NAME}:name`) ?? '', this.source.obj) ?? it.getAttribute('name');\n if (varpath != null) {\n if (validatorName) {\n ScriptUtils.evaluate(`\n ${this.render.bindScript}\n const validator = typeof ${validatorName} ==='function' ? new ${validatorName}() : ${validatorName};\n ${attr}['${varpath}'] = validator;\n `,\n Object.assign(this.source.obj, {\n __render: Object.freeze({\n drStripOption: this.elementSource.attrs.drStripOption,\n ...this.render\n } as Render)\n }\n ));\n }\n varpath = `${attr}['${varpath}']`;\n const data = ScriptUtils.evaluateReturn(`${varpath}`, this.source.obj);\n if (data instanceof ValidatorArray) {\n it.setAttribute(attrEventName, `${varpath}.setArrayValue($target, $target.value, $event); ${it.getAttribute(attrEventName) ?? ''};`);\n data.addValidator((it as any).value, it);\n } else if (data instanceof Validator) {\n // varpath += (varpath ? '.value' : 'value');\n // varpath = drAttr.drForm + '.' + varpath;\n // it.setAttribute(attrEventName, `${varpath} = $target.value; ${target}=$target; ${event}=$event;`);\n it.setAttribute(attrEventName, `${varpath}.set($target.value, $target, $event); ${it.getAttribute(attrEventName) ?? ''};`);\n data.setTarget(it);\n data.value = (it as any).value;\n } else {\n it.setAttribute(attrEventName, `${varpath} = $target.value;`);\n }\n }\n })\n RawSet.drFormOtherMoveAttr(this.elementSource.element, 'temp-name', 'name', this.source.config);\n this.returnContainer.raws.push(...RawSet.checkPointCreates(this.elementSource.element, this.source.obj, this.source.config));\n return ExecuteState.EXECUTE;\n }\n}\n", "import {OperatorExecuterAttrRequire} from './OperatorExecuterAttrRequire';\nimport {ScriptUtils} from '@dooboostore/core-web/script/ScriptUtils';\nimport {RawSet} from '../rawsets/RawSet';\nimport {Render} from '../rawsets/Render';\nimport {AfterCallBack, ElementSource, ExecuteState, ReturnContainer, Source} from './OperatorExecuter';\n\nexport class DrInnerText extends OperatorExecuterAttrRequire<string> {\n constructor(rawSet: RawSet, render: Render, returnContainer: ReturnContainer, elementSource: ElementSource, source: Source, afterCallBack: AfterCallBack) {\n super(rawSet, render, returnContainer, elementSource, source, afterCallBack, false);\n }\n\n async executeAttrRequire(attr: string): Promise<ExecuteState> {\n const newTemp = this.source.config.window.document.createElement('temp');\n ScriptUtils.evaluate(` \n ${this.render.bindScript}\n const n = $element.cloneNode(true); \n ${this.elementSource.attrs.drBeforeOption ?? ''}\n n.innerText = ${attr};\n if (this.__render.drStripOption === 'true') {\n Array.from(n.childNodes).forEach(it => this.__render.fag.append(it));\n } else {\n this.__render.fag.append(n);\n }\n ${this.elementSource.attrs.drAfterOption ?? ''}\n `, Object.assign(this.source.obj, {\n __render: Object.freeze({\n drStripOption: this.elementSource.attrs.drStripOption,\n fag: newTemp,\n ...this.render\n } as Render)\n }));\n const tempalte = this.source.config.window.document.createElement('template');\n tempalte.innerHTML = newTemp.innerHTML;\n this.returnContainer.fag.append(tempalte.content);\n const rr = RawSet.checkPointCreates(this.returnContainer.fag, this.source.obj, this.source.config);\n this.elementSource.element.parentNode?.replaceChild(this.returnContainer.fag, this.elementSource.element);\n this.returnContainer.raws.push(...rr);\n return ExecuteState.EXECUTE;\n }\n}\n", "import {OperatorExecuterAttrRequire} from './OperatorExecuterAttrRequire';\nimport {ScriptUtils} from '@dooboostore/core-web/script/ScriptUtils';\nimport {RawSet} from '../rawsets/RawSet';\nimport {Render} from '../rawsets/Render';\nimport {AfterCallBack, ElementSource, ExecuteState, ReturnContainer, Source} from './OperatorExecuter';\n\nexport class DrInnerHTML extends OperatorExecuterAttrRequire<string> {\n constructor(rawSet: RawSet, render: Render, returnContainer: ReturnContainer, elementSource: ElementSource, source: Source, afterCallBack: AfterCallBack) {\n super(rawSet, render, returnContainer, elementSource, source, afterCallBack, false);\n }\n\n async executeAttrRequire(attr: string): Promise<ExecuteState> {\n const newTemp = this.source.config.window.document.createElement('temp');\n ScriptUtils.evaluate(`\n ${this.render.bindScript}\n const n = $element.cloneNode(true);\n ${this.elementSource.attrs.drBeforeOption ?? ''}\n n.innerHTML = ${attr};\n if (this.__render.drStripOption === 'true') {\n Array.from(n.childNodes).forEach(it => this.__render.fag.append(it));\n } else {\n this.__render.fag.append(n);\n }\n ${this.elementSource.attrs.drAfterOption ?? ''}\n `, Object.assign(this.source.obj, {\n __render: Object.freeze({\n drStripOption: this.elementSource.attrs.drStripOption,\n fag: newTemp,\n ...this.render\n // eslint-disable-next-line no-use-before-define\n } as Render)\n }));\n const tempalte = this.source.config.window.document.createElement('template');\n tempalte.innerHTML = newTemp.innerHTML;\n this.returnContainer.fag.append(tempalte.content);\n const rr = RawSet.checkPointCreates(this.returnContainer.fag, this.source.obj, this.source.config);\n this.elementSource.element.parentNode?.replaceChild(this.returnContainer.fag, this.elementSource.element);\n this.returnContainer.raws.push(...rr);\n return ExecuteState.EXECUTE;\n }\n}\n", "import { OperatorExecuterAttrRequire} from './OperatorExecuterAttrRequire';\nimport {ScriptUtils} from '@dooboostore/core-web/script/ScriptUtils';\nimport {RawSet} from '../rawsets/RawSet';\nimport {Render} from '../rawsets/Render';\nimport {AfterCallBack, ElementSource, ExecuteState, ReturnContainer, Source} from './OperatorExecuter';\n\nexport class DrFor extends OperatorExecuterAttrRequire<string> {\n constructor(rawSet: RawSet, render: Render, returnContainer: ReturnContainer, elementSource: ElementSource, source: Source, afterCallBack: AfterCallBack) {\n source.operatorAround = undefined;\n super(rawSet, render, returnContainer, elementSource, source, afterCallBack, false);\n }\n\n async executeAttrRequire(attr: string): Promise<ExecuteState> {\n const itRandom = RawSet.drItOtherEncoding(this.elementSource.element);\n const vars = RawSet.drVarEncoding(this.elementSource.element, this.elementSource.attrs.drVarOption ?? '');\n const newTemp = this.source.config.window.document.createElement('temp');\n // console.log('-----asdad',attr , this.elementSource.attrs.drItOption);\n ScriptUtils.evaluate(`\n ${this.render.bindScript}\n ${this.elementSource.attrs.drBeforeOption ?? ''}\n for(${attr}) {\n const n = this.__render.element.cloneNode(true);\n var destIt = ${this.elementSource.attrs.drItOption};\n if (destIt !== undefined) {\n n.getAttributeNames().forEach(it => n.setAttribute(it, n.getAttribute(it).replace(/\\\\#it\\\\#/g, destIt).replace(/\\\\#nearForIt\\\\#/g, destIt).replace(/\\\\#nearForIndex\\\\#/g, destIt))) \n n.innerHTML = n.innerHTML.replace(/\\\\#it\\\\#/g, destIt).replace(/\\\\#index\\\\#/g, destIt);\n }\n if (this.__render.drStripOption === 'true') {\n Array.from(n.childNodes).forEach(it => this.__render.fag.append(it));\n } else {\n this.__render.fag.append(n);\n }\n }\n ${this.elementSource.attrs.drAfterOption ?? ''}\n `, Object.assign(this.source.obj, {\n __render: Object.freeze({\n fag: newTemp,\n drStripOption: this.elementSource.attrs.drStripOption,\n ...this.render\n })\n }));\n RawSet.drVarDecoding(newTemp, vars);\n RawSet.drItOtherDecoding(newTemp, itRandom);\n const tempalte = this.source.config.window.document.createElement('template');\n tempalte.innerHTML = newTemp.innerHTML;\n this.returnContainer.fag.append(tempalte.content)\n const rr = RawSet.checkPointCreates(this.returnContainer.fag, this.source.obj, this.source.config)\n this.elementSource.element.parentNode?.replaceChild(this.returnContainer.fag, this.elementSource.element);\n this.returnContainer.raws.push(...rr)\n return ExecuteState.EXECUTE;\n }\n}\n", "import { OperatorExecuterAttrRequire } from './OperatorExecuterAttrRequire';\nimport { ScriptUtils } from '@dooboostore/core-web/script/ScriptUtils';\nimport { RawSet } from '../rawsets/RawSet';\nimport { Render } from '../rawsets/Render';\nimport { AfterCallBack, ElementSource, ExecuteState, ReturnContainer, Source } from './OperatorExecuter';\nimport { ObjectUtils } from '@dooboostore/core/object/ObjectUtils';\n\nexport class DrForOf extends OperatorExecuterAttrRequire<string> {\n constructor(rawSet: RawSet, render: Render, returnContainer: ReturnContainer, elementSource: ElementSource, source: Source, afterCallBack: AfterCallBack) {\n source.operatorAround = undefined;\n super(rawSet, render, returnContainer, elementSource, source, afterCallBack, false);\n }\n\n async executeAttrRequire(attr: string): Promise<ExecuteState> {\n // console.log('\uD0C0\uC9C0\uB3C4\uC54A\uB0D0?')\n const itRandom = RawSet.drItOtherEncoding(this.elementSource.element, 'DrForOf');\n const vars = RawSet.drVarEncoding(this.elementSource.element, this.elementSource.attrs.drVarOption ?? '');\n const newTemp = this.source.config.window.document.createElement('temp');\n // console.log('----!', this.elementSource.attrs)\n // ScriptUtils.evalReturn()\n ScriptUtils.evaluate(`\n ${this.render.bindScript}\n ${this.elementSource.attrs.drBeforeOption ?? ''}\n var i = -1; \n const forOf = ${ObjectUtils.Path.toOptionalChainPath(attr)};\n const forOfStr = \\`${attr}\\`.trim();\n // console.log('forOf---',forOf);\n if (forOf) {\n for(const it of forOf) {\n i++;\n var destIt = it;\n if (/\\\\[(.*,?)\\\\],/g.test(forOfStr)) {\n if (typeof it === 'string') {\n destIt = it;\n } else {\n destIt = forOfStr.substring(1, forOfStr.length-1).split(',')[i];\n }\n } else if (forOf.isRange) {\n destIt = it;\n } else {\n destIt = forOfStr + '[' + i +']'\n }\n const n = this.__render.element.cloneNode(true);\n // console.log('zzzzzzzzzzz', n.getAttribute('${RawSet.DR_DETECT_ATTR_OPTIONNAME}'));\n Object.entries(this.__render.drAttr).filter(([k,v]) => k !== 'drForOf' && k !== 'drNextOption' && v).forEach(([k, v]) => n.setAttribute(this.__render.drAttrsOriginName[k], v));\n // console.log('---------'+destIt,n, Array.from(n.getAttributeNames()).map(it=>({name:it,attr: n.getAttribute(it)})));\n // console.log('---------destItdestIt',destIt);\n n.getAttributeNames().forEach(it => n.setAttribute(it, n.getAttribute(it).replace(/\\\\#it\\\\#/g, destIt).replace(/\\\\#nearForOfIt\\\\#/g, destIt).replace(/\\\\#it\\\\#/g, destIt).replace(/\\\\#nearForOfIndex\\\\#/g, i)))\n const drOptionAttr = n.getAttribute('${RawSet.DR_DETECT_ATTR_OPTIONNAME}');\n if (drOptionAttr) {\n const drOptionAttrResult = $scriptUtils.evaluateReturn(drOptionAttr, this);\n Array.from(Object.entries(drOptionAttrResult??{})).forEach(([k,v])=>{\n if (v === null) {\n n.removeAttribute(k);\n } else {\n n.setAttribute(k,v);\n }\n })\n }\n \n const drOptionFilter = n.getAttribute('${RawSet.DR_DETECT_FILTER_OPTIONNAME}');\n if (drOptionFilter) {\n const drOptionFilterResult = $scriptUtils.evaluateReturn(drOptionFilter, this);\n // console.log('---drforof----', drOptionFilter, drOptionFilterResult)\n if (!drOptionFilterResult) {\n continue;\n }\n }\n\n n.innerHTML = n.innerHTML.replace(/\\\\#it\\\\#/g, destIt).replace(/\\\\#index\\\\#/g, i);\n // console.log('!@@@@', n.innerHTML);\n // DR_THIS_OPTIONNAME \uB294 \uC81C\uAC70\uD55C\uB2E4 \uAF2C\uC778\uB2E4. strip \uD560\uB54C \uB9C9 \uAF2C\uC5EC\uBC84\uB9B0\uB2E4.\n // const drOptionThis = n.getAttribute('${RawSet.DR_THIS_OPTIONNAME}');\n // if (drOptionThis) {\n // n.setAttribute('${RawSet.DR_THIS_NAME}', drOptionThis)\n // }\n if (this.__render.drStripOption === 'true') {\n Array.from(n.childNodes).forEach(it => this.__render.fag.append(it));\n } else {\n this.__render.fag.append(n);\n }\n \n }\n \n if('${this.elementSource.attrs.drNextOption}' !== 'null') {\n const n = this.__render.element.cloneNode(true);\n Object.entries(this.__render.drAttr).filter(([k,v]) => k !== 'drForOf' && k !== 'drNextOption' && v).forEach(([k, v]) => n.setAttribute(this.__render.drAttrsOriginName[k], v));\n const [name, idx] = '${this.elementSource.attrs.drNextOption}'.split(',');\n n.setAttribute('${RawSet.DR_FOR_OF_NAME}', name + '[' + idx + ']');\n n.setAttribute('${RawSet.DR_NEXT_OPTIONNAME}', name + ',' + (Number(idx) + 1));\n this.__render.fag.append(n);\n }\n }\n ${this.elementSource.attrs.drAfterOption ?? ''}\n `, Object.assign(this.source.obj, {\n __render: Object.freeze({\n drStripOption: this.elementSource.attrs.drStripOption,\n drAttr: this.elementSource.attrs,\n drAttrsOriginName: RawSet.drAttrsOriginName,\n fag: newTemp,\n ...this.render\n // eslint-disable-next-line no-use-before-define\n } as Render)\n }));\n RawSet.drVarDecoding(newTemp, vars);\n RawSet.drItOtherDecoding(newTemp, itRandom);\n const tempalte = this.source.config.window.document.createElement('template');\n tempalte.innerHTML = newTemp.innerHTML;\n this.returnContainer.fag.append(tempalte.content)\n const rr = RawSet.checkPointCreates(this.returnContainer.fag, this.source.obj, this.source.config);\n this.elementSource.element.parentNode?.replaceChild(this.returnContainer.fag, this.elementSource.element);\n // const rrr = rr.flatMap(it => it.render(obj, config));// .flat();\n this.returnContainer.raws.push(...rr)\n return ExecuteState.EXECUTE;\n }\n}\n", "import {OperatorExecuterAttrRequire} from './OperatorExecuterAttrRequire';\nimport {ScriptUtils} from '@dooboostore/core-web/script/ScriptUtils';\nimport {RawSet} from '../rawsets/RawSet';\nimport {Render} from '../rawsets/Render';\nimport {AfterCallBack, ElementSource, ExecuteState, ReturnContainer, Source} from './OperatorExecuter';\n\nexport class DrAppender extends OperatorExecuterAttrRequire<string> {\n constructor(rawSet: RawSet, render: Render, returnContainer: ReturnContainer, elementSource: ElementSource, source: Source, afterCallBack: AfterCallBack) {\n source.operatorAround = undefined;\n super(rawSet, render, returnContainer, elementSource, source, afterCallBack, false);\n }\n\n async executeAttrRequire(attr: string): Promise<ExecuteState> {\n const itRandom = RawSet.drItOtherEncoding(this.elementSource.element);\n const vars = RawSet.drVarEncoding(this.elementSource.element, this.elementSource.attrs.drVarOption ?? '');\n const newTemp = this.source.config.window.document.createElement('temp');\n ScriptUtils.evaluate(`\n try{\n ${this.render.bindScript}\n ${this.elementSource.attrs.drBeforeOption ?? ''}\n const ifWrap = document.createElement('div');\n // ifWrap.setAttribute('${RawSet.DR_STRIP_OPTIONNAME}', 'true');\n // ifWrap.setAttribute('${RawSet.DR_IF_NAME}', '${this.elementSource.attrs.drAppender} && ${this.elementSource.attrs.drAppender}.length > 0');\n const n = this.__render.element.cloneNode(true);\n Object.entries(this.__render.drAttr).filter(([k,v]) => k !== 'drAppender' && v).forEach(([k, v]) => n.setAttribute(this.__render.drAttrsOriginName[k], v));\n const length = ${this.elementSource.attrs.drAppender}.length;\n if (length > 0) {\n n.setAttribute('${RawSet.DR_FOR_OF_NAME}', '${this.elementSource.attrs.drAppender}[' + (length-1) + ']');\n n.setAttribute('${RawSet.DR_NEXT_OPTIONNAME}', '${this.elementSource.attrs.drAppender},' + length);\n } else {\n n.setAttribute('${RawSet.DR_FOR_OF_NAME}', '${this.elementSource.attrs.drAppender}[0]');\n n.setAttribute('${RawSet.DR_NEXT_OPTIONNAME}', '${this.elementSource.attrs.drAppender},' + 1);\n }\n // console.log('appender--->', Array.from(n.getAttributeNames()).map(it=>({name:it,attr: n.getAttribute(it)})));\n // const drOptionThis = n.getAttribute('${RawSet.DR_THIS_OPTIONNAME}');\n // if (drOptionThis) {\n // }\n // ifWrap.append(n);\n // this.__render.fag.append(ifWrap);\n this.__render.fag.append(n);\n ${this.elementSource.attrs.drAfterOption ?? ''}\n }catch(e){}\n `, Object.assign(this.source.obj, {\n __render: Object.freeze({\n drStripOption: this.elementSource.attrs.drStripOption,\n drAttr: this.elementSource.attrs,\n drAttrsOriginName: RawSet.drAttrsOriginName,\n fag: newTemp,\n ...this.render\n // eslint-disable-next-line no-use-before-define\n } as Render)\n }));\n RawSet.drVarDecoding(newTemp, vars);\n RawSet.drItOtherDecoding(newTemp, itRandom);\n const tempalte = this.source.config.window.document.createElement('template');\n tempalte.innerHTML = newTemp.innerHTML;\n this.returnContainer.fag.append(tempalte.content)\n const rr = RawSet.checkPointCreates(this.returnContainer.fag, this.source.obj, this.source.config);\n this.elementSource.element.parentNode?.replaceChild(this.returnContainer.fag, this.elementSource.element);\n // const rrr = rr.flatMap(it => it.render(obj, config));// .flat();\n this.returnContainer.raws.push(...rr)\n return ExecuteState.EXECUTE;\n }\n}\n", "import {OperatorExecuterAttrRequire} from './OperatorExecuterAttrRequire';\nimport {ScriptUtils} from '@dooboostore/core-web/script/ScriptUtils';\nimport {RawSet} from '../rawsets/RawSet';\nimport {EventManager} from '../events/EventManager';\nimport {Render} from '../rawsets/Render';\nimport {AfterCallBack, ElementSource, ExecuteState, ReturnContainer, Source} from './OperatorExecuter';\n\nexport class DrRepeat extends OperatorExecuterAttrRequire<string> {\n constructor(rawSet: RawSet, render: Render, returnContainer: ReturnContainer, elementSource: ElementSource, source: Source, afterCallBack: AfterCallBack) {\n source.operatorAround = undefined;\n super(rawSet, render, returnContainer, elementSource, source, afterCallBack, false);\n }\n\n async executeAttrRequire(attr: string): Promise<ExecuteState> {\n const itRandom = RawSet.drItOtherEncoding(this.elementSource.element);\n const vars = RawSet.drVarEncoding(this.elementSource.element, this.elementSource.attrs.drVarOption ?? '');\n const newTemp = this.source.config.window.document.createElement('temp');\n ScriptUtils.evaluate(`\n ${this.render.bindScript}\n ${this.elementSource.attrs.drBeforeOption ?? ''}\n var i = 0; \n const repeat = ${attr};\n const repeatStr = \\`${attr}\\`;\n let range = repeat;\n if (typeof repeat === 'number') {\n range = ${EventManager.RANGE_VARNAME}(repeat);\n } \n for(const it of range) {\n var destIt = it;\n if (range.isRange) {\n destIt = it;\n } else {\n destIt = repeatStr + '[' + i +']'\n }\n const n = this.__render.element.cloneNode(true);\n n.getAttributeNames().forEach(it => n.setAttribute(it, n.getAttribute(it).replace(/\\\\#it\\\\#/g, destIt).replace(/\\\\#nearRangeIt\\\\#/g, destIt).replace(/\\\\#nearRangeIndex\\\\#/g, destIt)))\n n.innerHTML = n.innerHTML.replace(/\\\\#it\\\\#/g, destIt).replace(/\\\\#index\\\\#/g, destIt);\n \n if (this.__render.drStripOption === 'true') {\n Array.from(n.childNodes).forEach(it => this.__render.fag.append(it));\n } else {\n this.__render.fag.append(n);\n }\n i++;\n }\n ${this.elementSource.attrs.drAfterOption ?? ''}\n `, Object.assign(this.source.obj, {\n __render: Object.freeze({\n fag: newTemp,\n drStripOption: this.elementSource.attrs.drStripOption,\n ...this.render\n })\n }));\n RawSet.drVarDecoding(newTemp, vars);\n RawSet.drItOtherDecoding(newTemp, itRandom);\n const tempalte = this.source.config.window.document.createElement('template');\n tempalte.innerHTML = newTemp.innerHTML;\n this.returnContainer.fag.append(tempalte.content)\n const rr = RawSet.checkPointCreates(this.returnContainer.fag, this.source.obj, this.source.config)\n this.elementSource.element.parentNode?.replaceChild(this.returnContainer.fag, this.elementSource.element);\n this.returnContainer.raws.push(...rr)\n return ExecuteState.EXECUTE;\n }\n}\n", "import { ScriptUtils } from '@dooboostore/core-web/script/ScriptUtils';\nimport { RawSet } from '../rawsets/RawSet';\nimport { CreatorMetaData } from '../rawsets/CreatorMetaData';\nimport {\n AfterCallBack,\n ElementSource,\n ExecuteState,\n OperatorExecuter,\n ReturnContainer,\n Source\n} from './OperatorExecuter';\nimport { Render } from '../rawsets/Render';\nimport { ElementUtils } from '@dooboostore/core-web/element/ElementUtils';\n\ndeclare global {\n interface Window {\n HTMLMetaElement: typeof HTMLMetaElement;\n }\n}\n\n// \uC5EC\uAE30\uC11C \uC0AC\uC6A9\uC790\uAC00 \uB4F1\uB85D\uD55C TargetElement\uAC00 \uB4E4\uC5B4\uAC04\uB2E4.\nexport class DrTargetElement extends OperatorExecuter<void> {\n constructor(\n rawSet: RawSet,\n render: Render,\n returnContainer: ReturnContainer,\n elementSource: ElementSource,\n source: Source,\n afterCallBack: AfterCallBack\n ) {\n source.operatorAround = undefined;\n super(rawSet, render, returnContainer, elementSource, source, afterCallBack, false);\n }\n\n async execute(): Promise<ExecuteState> {\n const targetElement = this.source.config?.targetElements?.find(\n it => it.name.toLowerCase() === this.elementSource.element.tagName.toLowerCase()\n );\n if (targetElement) {\n if (\n this.rawSet.point.start instanceof this.source.config.window.HTMLMetaElement &&\n this.rawSet.point.end instanceof this.source.config.window.HTMLMetaElement\n ) {\n this.rawSet.point.start.setAttribute('this-path', `this.__domrender_components.${this.rawSet.uuid}`);\n this.rawSet.point.end.setAttribute('this-path', `this.__domrender_components.${this.rawSet.uuid}`);\n }\n\n const documentFragment = await targetElement.callBack(\n this.elementSource.element,\n this.source.obj,\n this.rawSet,\n this.elementSource.attrs,\n this.source.config\n );\n if (documentFragment) {\n const detectAction = this.elementSource.element.getAttribute(RawSet.DR_DETECT_NAME);\n // const dictionaryKey = this.elementSource.element.getAttribute(RawSet.DR_DICTIONARY_OPTIONKEYNAME);\n // console.log('dictionaryKey', dictionaryKey);\n // const render = (documentFragment as any).render;\n this.rawSet.dataSet.fragment = documentFragment;\n // if (documentFragment) {\n // const tempDiv = this.source.config.window.document.createElement('div');\n // tempDiv.appendChild(documentFragment.cloneNode(true));\n // console.log('DocumentFragment innerHTML:', tempDiv.innerHTML);\n // }\n\n // this.rawSet.dataSet??={};\n // this.rawSet.dataSet.data = render.component;\n if (detectAction && this.rawSet.dataSet.render) {\n // TODO: \uC5C6\uC5B4\uC838\uC57C\uB420\uB4EF?\n this.rawSet.detect = {\n action: () => {\n const script = `var $component = this.__render.component; var $element = this.__render.element; var $innerHTML = this.__render.innerHTML; var $attribute = this.__render.attribute; ${detectAction} `;\n ScriptUtils.evaluate(\n script,\n Object.assign(this.source.obj, {\n __render: this.rawSet.dataSet.render\n })\n );\n }\n };\n }\n // fag.append(documentFragment)\n\n // console.log('----------1', ElementUtils.toInnerHTML(documentFragment, {document: this.source.config.window.document}));\n // await Promises.sleep(1000)\n let targetFragment = documentFragment;\n if (targetElement.noStrip) {\n // documentFragment.firstElementChild.classList.add(`${this.rawSet.uuid}___DrTargetElement`)\n const fragment = this.source.config.window.document.createDocumentFragment();\n Array.from(documentFragment.firstElementChild?.childNodes || []).forEach(child => {\n // fragment.appendChild(child.cloneNode(true));\n fragment.appendChild(child);\n });\n // fragment.append(documentFragment.firstElementChild);\n targetFragment = fragment;\n }\n // console.log('----------2', ElementUtils.toInnerHTML(targetFragment, {document: this.source.config.window.document}));\n const rr = RawSet.checkPointCreates(targetFragment, this.source.obj, this.source.config);\n rr.forEach((it, index) => {\n\n // const z = ElementUtils.toInnerHTML(it.dataSet.fragment, {document: this.source.config.window.document});\n // console.log('-z--z('+index+')', z, it);\n // it.point.start;\n // // \uC0C8\uB85C\uC6B4 comment element \uCD94\uAC00\n // const comment = this.source.config.window.document.createComment('\uC0C8\uB85C \uB9CC\uB4E0 comment element');\n // it.point.start.parentNode?.insertBefore(comment, it.point.start.nextSibling);\n })\n // for (let rawSet of rr) {\n // await rawSet.render(this.source.obj, this.source.config)\n // }\n // console.log('cccccccccccccccccccccc', rr, typeof Window);\n if (targetElement.noStrip) {\n Array.from(targetFragment.childNodes || []).forEach(child => {\n documentFragment.firstElementChild?.appendChild(child);\n });\n }\n this.elementSource.element.parentNode?.replaceChild(documentFragment, this.elementSource.element);\n this.returnContainer.raws.push(...rr);\n this.afterCallBack.onElementInitCallBacks.push({\n name: targetElement.name.toLowerCase(),\n obj: this.source.obj,\n targetElement,\n creatorMetaData: targetElement.__creatorMetaData as CreatorMetaData\n });\n // console.log('sssssssssssssss', this.source.obj);\n targetElement?.complete?.(this.elementSource.element, this.source.obj, this.rawSet);\n }\n return ExecuteState.EXECUTE;\n }\n return ExecuteState.NO_EXECUTE;\n }\n}\n", "import {RawSet} from '../rawsets/RawSet';\nimport {TargetAttr} from '../configs/TargetAttr';\nimport {AfterCallBack, ElementSource, ExecuteState, OperatorExecuter, ReturnContainer, Source} from './OperatorExecuter';\nimport {Render} from '../rawsets/Render';\n\nexport class DrTargetAttr extends OperatorExecuter<void> {\n constructor(rawSet: RawSet, render: Render, returnContainer: ReturnContainer, elementSource: ElementSource, source: Source, afterCallBack: AfterCallBack) {\n source.operatorAround = undefined;\n super(rawSet, render, returnContainer, elementSource, source, afterCallBack, false);\n }\n\n async execute(): Promise<ExecuteState> {\n const attributeNames = this.elementSource.element.getAttributeNames();\n const targetAttr: TargetAttr | undefined = this.source.config?.targetAttrs?.find(it => attributeNames.includes(it.name));\n if (targetAttr) {\n const attrName = targetAttr.name;\n const attrValue = this.rawSet.getAttributeAndDelete(this.elementSource.element, attrName)\n if (attrValue && attrName && (!this.elementSource.attrs.drForOf && !this.elementSource.attrs.drFor && !this.elementSource.attrs.drRepeat)) {\n const documentFragment = targetAttr.callBack(this.elementSource.element, attrValue, this.source.obj, this.rawSet);\n if (documentFragment) {\n const rr = RawSet.checkPointCreates(documentFragment, this.source.obj, this.source.config)\n this.elementSource.element.parentNode?.replaceChild(documentFragment, this.elementSource.element);\n this.returnContainer.raws.push(...rr);\n this.afterCallBack.onAttrInitCallBacks.push({\n attrName,\n attrValue,\n obj: this.source.obj\n });\n targetAttr?.complete?.(this.elementSource.element, attrValue, this.source.obj, this.rawSet);\n }\n }\n return ExecuteState.EXECUTE;\n }\n return ExecuteState.NO_EXECUTE;\n }\n}\n", "import { OperatorExecuterAttrRequire } from './OperatorExecuterAttrRequire';\nimport { ScriptUtils } from '@dooboostore/core-web/script/ScriptUtils';\nimport { RawSet } from '../rawsets/RawSet';\nimport { Render } from '../rawsets/Render';\nimport { AfterCallBack, ElementSource, ExecuteState, ReturnContainer, Source } from './OperatorExecuter';\n\nexport class DrStripElement extends OperatorExecuterAttrRequire<string> {\n constructor(rawSet: RawSet, render: Render, returnContainer: ReturnContainer, elementSource: ElementSource, source: Source, afterCallBack: AfterCallBack) {\n source.operatorAround = undefined;\n super(rawSet, render, returnContainer, elementSource, source, afterCallBack, false);\n }\n\n async executeAttrRequire(attr: string): Promise<ExecuteState> {\n // const itRandom = RawSet.drItOtherEncoding(this.elementSource.element, 'DrStripElement');\n // const vars = RawSet.drVarEncoding(this.elementSource.element, this.elementSource.attrs.drVarOption ?? '');\n const newTemp = this.source.config.window.document.createElement('temp');\n // Object.entries(this.__render.drAttr).filter(([k,v]) => k !== 'drIf' && v).forEach(([k, v]) => n.setAttribute(this.__render.drAttrsOriginName[k], v)); <-- \uC774\uBD80\uBD84\uC740 \uB2E4\uB978 attr\uC5D0\uB3C4 \uC801\uC6A9\uC744 \uD560\uC9C0\uB9D0\uC9C0 \uC0DD\uAC01\uD574\uC57C\uB428 \uC5D8\uB9AC\uBA3C\uD2B8 \uC874\uC7AC\uC720\uBB34\uC5D0 \uB530\uB77C\uC11C \uC801\uC6A9\uC744 \uD560\uC9C0\uB9D0\uC9C0 \uACB0\uC815\uD574\uC57C\uB428\n ScriptUtils.evaluate(`\n ${this.render.bindScript}\n ${this.elementSource.attrs.drBeforeOption ?? ''}\n const n = $element.cloneNode(true);\n if(${attr}) {\n Array.from(n.childNodes).forEach(it => this.__render.fag.append(it));\n } else {\n this.__render.fag.append(n);\n }\n ${this.elementSource.attrs.drAfterOption ?? ''};\n return true;\n `, Object.assign(this.source.obj,\n {\n __render: Object.freeze({\n fag: newTemp,\n drAttr: this.elementSource.attrs,\n drAttrsOriginName: RawSet.drAttrsOriginName,\n drStripOption: this.elementSource.attrs.drStripOption,\n ...this.render\n } as Render)\n }\n ));\n\n const tempalte = this.source.config.window.document.createElement('template');\n tempalte.innerHTML = newTemp.innerHTML;\n this.returnContainer.fag.append(tempalte.content);\n const rr = RawSet.checkPointCreates(this.returnContainer.fag, this.source.obj, this.source.config);\n this.elementSource.element.parentNode?.replaceChild(this.returnContainer.fag, this.elementSource.element);\n this.returnContainer.raws.push(...rr);\n return ExecuteState.EXECUTE;\n }\n}\n", "export enum DestroyOptionType {\n NO_DESTROY = 'NO_DESTROY',\n NO_MESSENGER_DESTROY = 'NO_MESSENGER_DESTROY'\n}", "export enum RawSetType {\n TEXT = 'TEXT',\n STYLE_TEXT = 'STYLE_TEXT',\n TARGET_ELEMENT = 'TARGET_ELEMENT',\n TARGET_ATTR = 'TARGET_ATTR',\n UNKOWN = 'UNKOWN',\n}", "import {OperatorExecuterAttrRequire} from './OperatorExecuterAttrRequire';\nimport {ScriptUtils} from '@dooboostore/core-web/script/ScriptUtils';\nimport {RawSet} from '../rawsets/RawSet';\nimport {Render} from '../rawsets/Render';\nimport {AfterCallBack, ElementSource, ExecuteState, ReturnContainer, Source} from './OperatorExecuter';\nimport {DomRenderConfig} from '../configs/DomRenderConfig';\n\nexport class DrThisProperty extends OperatorExecuterAttrRequire<string> {\n constructor(rawSet: RawSet, render: Render, returnContainer: ReturnContainer, elementSource: ElementSource, source: Source, afterCallBack: AfterCallBack) {\n source.operatorAround = undefined;\n super(rawSet, render, returnContainer, elementSource, source, afterCallBack, false);\n }\n\n async executeAttrRequire(attr: string): Promise<ExecuteState> {\n const itRandom = RawSet.drItOtherEncoding(this.elementSource.element, 'DrThisProperty');\n const vars = RawSet.drVarEncoding(this.elementSource.element, this.elementSource.attrs.drVarOption ?? '');\n const newTemp = this.source.config.window.document.createElement('temp');\n const dictioanry = ScriptUtils.evaluateReturn(attr, this.source.obj)\n const dictionaryKey = this.elementSource.attrs.drKeyOption ?? '';\n // console.log('--->', attr, dictionaryKey)\n // if (!(dictioanry instanceof Dictionary)) {\n // return ExecuteState.STOP;\n // }\n // await new Promise(resolve => setTimeout(resolve, 1000));\n // console.log('!!!!!!!!!!!!!!', this.rawSet);\n ScriptUtils.evaluate(`\n ${this.render.bindScript}\n ${this.elementSource.attrs.drBeforeOption ?? ''}\n var i = 0; \n const dictionary = ${attr};\n const dictionaryKey = '${dictionaryKey}';\n const dictionaryStr = \\`${attr}\\`.trim();\n // console.log('----@#!@#@!#', this.__render.oldChild);\n if (dictionary) {\n for(const it in dictionary) {\n var destIt = dictionaryStr + '[\"' + it + '\"]';\n const n = this.__render.element.cloneNode(true);\n n.setAttribute('dr-this', destIt);\n n.setAttribute('${RawSet.DR_KEY_OPTIONNAME}', it);\n // n.setAttribute('dr-dictionary-key', it);\n this.__render.fag.append(n);\n i++;\n }\n this.__render.rawset.point.start.setAttribute('${RawSet.DR_HAS_KEYS_OPTIONNAME}',Object.keys(dictionary).join(','));\n }\n ${this.elementSource.attrs.drAfterOption ?? ''}\n `, Object.assign(this.source.obj, {\n __render: Object.freeze({\n drStripOption: this.elementSource.attrs.drStripOption,\n drAttr: this.elementSource.attrs,\n drAttrsOriginName: RawSet.drAttrsOriginName,\n fag: newTemp,\n ...this.render\n } as Render)\n }));\n RawSet.drVarDecoding(newTemp, vars);\n RawSet.drItOtherDecoding(newTemp, itRandom);\n const tempalte = this.source.config.window.document.createElement('template');\n tempalte.innerHTML = newTemp.innerHTML;\n this.returnContainer.fag.append(tempalte.content);\n const rr = RawSet.checkPointCreates(this.returnContainer.fag, this.source.obj, this.source.config);\n this.elementSource.element.parentNode?.replaceChild(this.returnContainer.fag, this.elementSource.element);\n // const rrr = rr.flatMap(it => it.render(obj, config));// .flat();\n this.returnContainer.raws.push(...rr);\n return ExecuteState.EXECUTE;\n }\n\n\n public static append(obj: any, fullPath: string, key: string, rawSet: RawSet, config: DomRenderConfig) {\n const genNode = config.window.document.importNode(rawSet.dataSet.fragment, true);\n // console.log('---> append', rawSet, genNode);\n const rawSets: RawSet[] = [];\n for (const cNode of Array.from(genNode.childNodes.values())) {\n const element = cNode.cloneNode(true) as Element;\n element.removeAttribute(RawSet.DR_THIS_PROPERTY_NAME);\n element.setAttribute(RawSet.DR_THIS_NAME, `this.${fullPath}`);\n element.setAttribute(RawSet.DR_KEY_OPTIONNAME, key);\n // rawSet.point.end.after(element);\n const fg = config.window.document.createDocumentFragment()\n fg.append(element);\n rawSets.push(...RawSet.checkPointCreates(fg, obj, config));\n rawSet.point.end.before(fg);\n const start = (rawSet.point.start as Element);\n const keys = start.getAttribute(RawSet.DR_HAS_KEYS_OPTIONNAME)?.split(',') ?? [];\n keys.push(key);\n start.setAttribute(RawSet.DR_HAS_KEYS_OPTIONNAME, keys.join(','));\n rawSets.forEach(async (it) => await it.render(obj, config));\n }\n return rawSets;\n }\n}\n", "export enum RawSetOperatorType {\n DR_THIS_PROPERTY = 'this-property'\n}", "import { Render } from '../rawsets/Render';\n\nexport type OnCreateRenderDataParams = { rootParent: any, render?: Render };\n\nexport interface OnCreateRenderData {\n onCreateRenderData(data: OnCreateRenderDataParams): void;\n}\n\nexport const isOnCreateRenderData = (obj: any): obj is OnCreateRenderData => {\n return typeof obj?.onCreateRenderData === 'function';\n}", "export interface OnCreateRender {\n onCreateRender(...param: any[]): void;\n}\nexport const isOnCreateRender = (obj: any): obj is OnCreateRender => {\n return typeof obj?.onCreateRender === 'function';\n}", "import { RawSet } from '../rawsets/RawSet';\n\nexport type OtherData = {\n rawSet?: RawSet\n}\nexport interface OnChangeAttrRender {\n onChangeAttrRender(name: string, value: any, other: OtherData): void;\n}\n\nexport const isOnChangeAttrRender = (obj: any): obj is OnChangeAttrRender => {\n return typeof obj?.onChangeAttrRender === 'function';\n}\n", "import { RawSet } from '../rawsets/RawSet';\n\nexport interface OnInitRender {\n onInitRender(param: any, rawSet:RawSet): void;\n}\n\nexport function isOnInitRender(obj: any): obj is OnInitRender {\n return typeof obj?.onInitRender === 'function';\n}", "import { OnCreateRenderDataParams } from '../lifecycle/OnCreateRenderData';\n\n\nexport interface OnCreatedThisChild {\n onCreatedThisChild(child: any, childData: OnCreateRenderDataParams): void;\n}\n\nexport const isOnCreatedThisChild= (obj: any): obj is OnCreatedThisChild => {\n return typeof obj?.onCreatedThisChild === 'function';\n}", "import { RawSet } from '../rawsets/RawSet';\n\nexport type OnDestroyRenderParams = { rawSet: RawSet };\n\nexport interface OnDestroyRender {\n onDestroyRender(data?: OnDestroyRenderParams): void;\n}\n\nexport const isOnDestroyRender = (obj: any): obj is OnDestroyRender => {\n return typeof obj?.onDestroyRender === 'function';\n};", "import { RawSet } from '../rawsets/RawSet';\nimport { CreatorMetaData } from '../rawsets/CreatorMetaData';\nimport { AfterCallBack, ElementSource, ExecuteState, OperatorExecuter, ReturnContainer, Source } from './OperatorExecuter';\nimport { Render } from '../rawsets/Render';\nimport { ScriptUtils } from '@dooboostore/core-web/script/ScriptUtils';\n\n\n// \uC5EC\uAE30\uC11C \uC0AC\uC6A9\uC790\uAC00 \uB4F1\uB85D\uD55C TargetElement\uAC00 \uB4E4\uC5B4\uAC04\uB2E4.\nexport class DrTargetElementIsElement extends OperatorExecuter<string | null> {\n constructor(rawSet: RawSet, render: Render, returnContainer: ReturnContainer, elementSource: ElementSource, source: Source, afterCallBack: AfterCallBack) {\n source.operatorAround = undefined;\n super(rawSet, render, returnContainer, elementSource, source, afterCallBack, false);\n }\n\n async execute(attr: string | null): Promise<ExecuteState> {\n if (!attr) {\n return ExecuteState.NO_EXECUTE;\n }\n const targetElement = this.source.config?.targetElements?.find(it => it.name.toLowerCase() === attr.toLowerCase());\n // console.log('--------------tar', targetElement)\n if (targetElement) {\n if (this.rawSet.point.start instanceof this.source.config.window.HTMLMetaElement && this.rawSet.point.end instanceof this.source.config.window.HTMLMetaElement) {\n this.rawSet.point.start.setAttribute('this-path', `this.__domrender_components.${this.rawSet.uuid}`)\n this.rawSet.point.end.setAttribute('this-path', `this.__domrender_components.${this.rawSet.uuid}`)\n }\n\n\n const documentFragment = await targetElement.callBack(this.elementSource.element, this.source.obj, this.rawSet, this.elementSource.attrs, this.source.config);\n if (documentFragment) {\n const detectAction = this.elementSource.element.getAttribute(RawSet.DR_DETECT_NAME);\n this.rawSet.dataSet.fragment = documentFragment;\n if (detectAction && this.rawSet.dataSet.render) {\n // TODO: \uC5C6\uC5B4\uC838\uC57C\uB420\uB4EF?\n this.rawSet.detect = {\n action: () => {\n const script = `var $component = this.__render.component; var $element = this.__render.element; var $innerHTML = this.__render.innerHTML; var $attribute = this.__render.attribute; ${detectAction} `;\n ScriptUtils.evaluate(script, Object.assign(this.source.obj, {\n __render: this.rawSet.dataSet.render\n }))\n }\n };\n }\n\n // dr-replace-target-element-is \uB294 \uBB34\uC870\uAC74 NoStrip\uB85C \uCC98\uB9AC\n const noStrip = targetElement.noStrip\n\n let targetFragment = documentFragment;\n if (noStrip) {\n const fragment = this.source.config.window.document.createDocumentFragment()\n Array.from(documentFragment.firstElementChild?.childNodes || []).forEach(child => {\n fragment.appendChild(child);\n });\n targetFragment = fragment;\n }\n\n const rr = RawSet.checkPointCreates(targetFragment, this.source.obj, this.source.config)\n if (noStrip) {\n Array.from(targetFragment.childNodes||[]).forEach(child => {\n documentFragment.firstElementChild?.appendChild(child)\n })\n }\n this.elementSource.element.parentNode?.replaceChild(documentFragment, this.elementSource.element);\n this.returnContainer.raws.push(...rr);\n this.afterCallBack.onElementInitCallBacks.push({\n name: targetElement.name.toLowerCase(),\n obj: this.source.obj,\n targetElement,\n creatorMetaData: targetElement.__creatorMetaData as CreatorMetaData\n });\n targetElement?.complete?.(this.elementSource.element, this.source.obj, this.rawSet);\n }\n return ExecuteState.EXECUTE;\n }\n return ExecuteState.NO_EXECUTE;\n }\n}\n", "import { RandomUtils } from '@dooboostore/core/random/RandomUtils';\nimport { StringUtils } from '@dooboostore/core/string/StringUtils';\nimport { EventManager } from '../events/EventManager';\nimport type { DomRenderConfig } from '../configs/DomRenderConfig';\nimport { Range } from '../iterators/Range';\nimport { ElementUtils } from '@dooboostore/core-web/element/ElementUtils';\nimport { ComponentSet } from '../components/ComponentSet';\nimport { DrPre } from '../operators/DrPre';\nimport { Dr } from '../operators/Dr';\nimport { DrIf } from '../operators/DrIf';\nimport { ExecuteState, OperatorExecuter } from '../operators/OperatorExecuter';\nimport { DrThis } from '../operators/DrThis';\nimport { DrForm } from '../operators/DrForm';\nimport { DrInnerText } from '../operators/DrInnerText';\nimport { DrInnerHTML } from '../operators/DrInnerHTML';\nimport { DrFor } from '../operators/DrFor';\nimport { DrForOf } from '../operators/DrForOf';\nimport { DrAppender } from '../operators/DrAppender';\nimport { DrRepeat } from '../operators/DrRepeat';\nimport { DrTargetElement } from '../operators/DrTargetElement';\nimport { DrTargetAttr } from '../operators/DrTargetAttr';\nimport { DrStripElement } from '../operators/DrStripElement';\nimport { TargetElement } from '../configs/TargetElement';\nimport { TargetAttr } from '../configs/TargetAttr';\nimport { DestroyOptionType } from './DestroyOptionType';\nimport { Attrs } from './Attrs';\nimport { AttrInitCallBack } from './AttrInitCallBack';\nimport { ElementInitCallBack } from './ElementInitCallBack';\nimport { RawSetType } from './RawSetType';\nimport { Render } from './Render';\nimport { DrThisProperty } from '../operators/DrThisProperty';\nimport { RawSetOperatorType } from './RawSetOperatorType';\nimport { CssParser, CssRule, isStyleRule, isAtRule } from '@dooboostore/core/parser/css/CssParser';\nimport { isOnCreateRenderData, OnCreateRenderDataParams } from '../lifecycle/OnCreateRenderData';\nimport { isOnCreateRender } from '../lifecycle/OnCreateRender';\nimport { isOnChangeAttrRender } from '../lifecycle/OnChangeAttrRender';\nimport { isOnInitRender } from '../lifecycle/OnInitRender';\nimport { isOnCreatedThisChild } from '../lifecycle/OnCreatedThisChild';\nimport { isOnDestroyRender, OnDestroyRenderParams } from '../lifecycle/OnDestroyRender';\nimport { DrTargetElementIsElement } from '../operators/DrTargetElementIsElement';\nimport { ObjectUtils } from '@dooboostore/core/object/ObjectUtils';\nimport { NodeUtils } from '@dooboostore/core-web/node/NodeUtils';\n\n\nexport type RenderResult = { raws: RawSet[]; executedOperators: OperatorExecuter[] };\n\nexport class RawSet {\n public static readonly DR_NAME = 'dr';\n public static readonly DR_IF_NAME = 'dr-if';\n public static readonly DR_FOR_NAME = 'dr-for';\n public static readonly DR_FOR_OF_NAME = 'dr-for-of';\n public static readonly DR_THIS_PROPERTY_NAME = 'dr-this-property';\n public static readonly DR_REPEAT_NAME = 'dr-repeat';\n public static readonly DR_THIS_NAME = 'dr-this';\n public static readonly DR_FORM_NAME = 'dr-form';\n public static readonly DR_PRE_NAME = 'dr-pre';\n public static readonly DR_APPENDER_NAME = 'dr-appender';\n public static readonly DR_INNERHTML_NAME = 'dr-inner-html';\n public static readonly DR_INNERTEXT_NAME = 'dr-inner-text';\n public static readonly DR_DETECT_NAME = 'dr-detect';\n public static readonly DR_STRIP_NAME = 'dr-strip';\n public static readonly DR_REPLACE_TARGET_ELEMENT_IS_NAME = 'dr-replace-target-element-is';\n\n // \uAC10\uC9C0\uCC98\uB9AC\uB418\uB294 \uC635\uC158\n public static readonly DR_DETECT_IF_OPTIONNAME = 'dr-detect-option-if';\n public static readonly DR_DETECT_FILTER_OPTIONNAME = 'dr-detect-option-filter';\n public static readonly DR_DETECT_ATTR_OPTIONNAME = 'dr-detect-option-attr';\n\n /**\n * @deprecated\n */\n public static readonly DR_THIS_OPTIONNAME = 'dr-option-this';\n public static readonly DR_ATTR_OPTIONNAME = 'dr-option-attr';\n public static readonly DR_IF_OPTIONNAME = 'dr-option-if';\n public static readonly DR_IT_OPTIONNAME = 'dr-option-it';\n public static readonly DR_VAR_OPTIONNAME = 'dr-option-var';\n public static readonly DR_AFTER_OPTIONNAME = 'dr-option-after';\n public static readonly DR_NEXT_OPTIONNAME = 'dr-option-next';\n public static readonly DR_BEFORE_OPTIONNAME = 'dr-option-before';\n public static readonly DR_COMPLETE_OPTIONNAME = 'dr-option-complete';\n public static readonly DR_STRIP_OPTIONNAME = 'dr-option-strip';\n public static readonly DR_DESTROY_OPTIONNAME = 'dr-option-destroy';\n\n public static readonly DR_THIS_NAME_OPTIONNAME = 'dr-option-this-name';\n /**\n * @deprecated\n */\n public static readonly DR_COMPONENT_NAME_OPTIONNAME = 'dr-option-component-name';\n public static readonly DR_COMPONENT_INNER_HTML_NAME_OPTIONNAME = 'dr-option-component-inner-html-name';\n public static readonly DR_KEY_OPTIONNAME = 'dr-option-key';\n public static readonly DR_HAS_KEYS_OPTIONNAME = 'dr-option-has-keys';\n\n public static readonly DR_ON_CREATE_ARGUMENTS_OPTIONNAME = 'dr-on-create:arguments';\n public static readonly DR_ON_CREATED_CALLBACK_OPTIONNAME = 'dr-on-create:callback';\n /** \uC6B0\uC120 \uC4F0\uB294\uACF3\uC774 \uC5C6\uC5B4\uC11C deprecated\uB97C \uAC78\uC5B4\uB1A8\uC74C\n @deprecated\n */\n public static readonly DR_ON_INIT_ARGUMENTS_OPTIONNAME = 'dr-on-init:arguments';\n public static readonly DR_ON_CONSTRUCTOR_ARGUMENTS_OPTIONNAME = 'dr-on-constructor:arguments';\n\n public static readonly drAttrsOriginName: Attrs = {\n dr: RawSet.DR_NAME,\n drIf: RawSet.DR_IF_NAME,\n drFor: RawSet.DR_FOR_NAME,\n drForOf: RawSet.DR_FOR_OF_NAME,\n drThisProperty: RawSet.DR_THIS_PROPERTY_NAME,\n drAppender: RawSet.DR_APPENDER_NAME,\n drRepeat: RawSet.DR_REPEAT_NAME,\n drThis: RawSet.DR_THIS_NAME,\n drForm: RawSet.DR_FORM_NAME,\n drPre: RawSet.DR_PRE_NAME,\n drInnerHTML: RawSet.DR_INNERHTML_NAME,\n drInnerText: RawSet.DR_INNERTEXT_NAME,\n drItOption: RawSet.DR_IT_OPTIONNAME,\n drVarOption: RawSet.DR_VAR_OPTIONNAME,\n drAfterOption: RawSet.DR_AFTER_OPTIONNAME,\n drNextOption: RawSet.DR_NEXT_OPTIONNAME,\n drBeforeOption: RawSet.DR_BEFORE_OPTIONNAME,\n drCompleteOption: RawSet.DR_COMPLETE_OPTIONNAME,\n drStripElement: RawSet.DR_STRIP_NAME,\n drReplaceTargetElementIs: RawSet.DR_REPLACE_TARGET_ELEMENT_IS_NAME,\n drStripOption: RawSet.DR_STRIP_OPTIONNAME,\n drIfOption: RawSet.DR_IF_OPTIONNAME,\n drDetectIfOption: RawSet.DR_DETECT_IF_OPTIONNAME,\n drDestroyOption: RawSet.DR_DESTROY_OPTIONNAME,\n drHasKeysOption: RawSet.DR_HAS_KEYS_OPTIONNAME,\n drKeyOption: RawSet.DR_KEY_OPTIONNAME\n };\n\n public static readonly DR_TAGS = [];\n\n // public static readonly DR_REPLACE_ACTION_ATTRIBUTES = [\n // RawSet.DR_REPLACE_TARGET_ELEMENT_IS_NAME\n // ]\n\n public static readonly DR_ATTRIBUTES = [\n RawSet.DR_NAME,\n RawSet.DR_APPENDER_NAME,\n RawSet.DR_IF_NAME,\n RawSet.DR_FOR_OF_NAME,\n RawSet.DR_THIS_PROPERTY_NAME,\n RawSet.DR_FOR_NAME,\n RawSet.DR_THIS_NAME,\n RawSet.DR_FORM_NAME,\n RawSet.DR_PRE_NAME,\n RawSet.DR_INNERHTML_NAME,\n RawSet.DR_INNERTEXT_NAME,\n RawSet.DR_REPEAT_NAME,\n RawSet.DR_DETECT_NAME,\n RawSet.DR_STRIP_NAME\n ] as const;\n\n constructor(\n public uuid: string,\n public type: RawSetType,\n public point: {\n start: Comment | Text | HTMLMetaElement;\n node: Node;\n end: Comment | Text | HTMLMetaElement;\n innerHTML?: string;\n // thisVariableName?: string | null,\n parent?: Node | null;\n parentRawSet?: RawSet;\n childrenRawSets?: RawSet[];\n },\n public dataSet: {\n config: DomRenderConfig;\n fragment: DocumentFragment;\n render?: Render;\n },\n public detect?: { action: Function }\n ) {\n // point.start.rawSet = this;\n // console.log('rawset constructor->', (this.point.node as Element).getAttributeNames());\n }\n\n get isConnected() {\n // console.log('isConnect???', this, this.point.start.isConnected, this.point.end.isConnected);\n return this.point && this.point.start && this.point.end && this.point.start.isConnected && this.point.end.isConnected;\n }\n\n // \uC911\uC694\n getUsingTriggerVariables(config?: DomRenderConfig): Set<string> {\n const usingTriggerVariables = new Set<string>();\n // console.log('------data', this.dataSet)\n this.dataSet.fragment.childNodes.forEach((cNode, key) => {\n // console.log('-----aaaa-data', cNode, key)\n let script = '';\n if (cNode.nodeType === Node.TEXT_NODE) {\n script = `\\`${(cNode as Text).textContent ?? ''}\\``;\n const expressionGroups = RawSet.expressionGroups(script);\n // console.log('???????', script, expressionGroups)\n if (expressionGroups[0].length > 1) {\n script = expressionGroups[0][1] as string;\n }\n // console.log('--', expressionGroups, script)\n } else if (cNode.nodeType === Node.ELEMENT_NODE) {\n const element = cNode as Element;\n const targetAttrNames = (config?.targetAttrs?.map(it => it.name) ?? []).concat(\n RawSet.DR_ATTRIBUTES,\n RawSet.DR_DETECT_FILTER_OPTIONNAME,\n RawSet.DR_DETECT_IF_OPTIONNAME,\n RawSet.DR_DETECT_ATTR_OPTIONNAME\n ); // .concat(EventManager.normalAttrMapAttrName);\n const targetScripts = targetAttrNames\n .map(it => element.getAttribute(it))\n .filter(it => it)\n .map(it => `(${it})`);\n const targetAttrMap = element.getAttribute(EventManager.normalAttrMapAttrName);\n // console.log('targetAttrMap-->', targetAttrMap)\n if (targetAttrMap) {\n new Map<string, string>(JSON.parse(targetAttrMap)).forEach((v, k) => {\n targetScripts.push(`(${v})`);\n });\n }\n // console.log('targetScriptstargetScripts', targetScripts)\n script = targetScripts.join(';');\n // script = targetScripts.map(it=>`try{${it}}catch(e){}`).join(';');\n\n // attribute\uCABD \uCCB4\uD06C\uD558\uB294\uAC70 \uCD94\uAC00\n // console.log('----!!!!!-->', targetAttrNames)\n // const otherAttrs = element.getAttributeNames()\n // .filter(it => !targetAttrNames.includes(it.toLowerCase()) && RawSet.isExporesion(element.getAttribute(it)))\n // .map(it => {\n // return `\\`${element.getAttribute(it) ?? ''}\\``;\n // }).join(';');\n // script += ';' + otherAttrs\n }\n if (script) {\n // console.log('------1-',script)\n script = script.replace(/#[^#]*#/g, '({})');\n // console.log('------2-',script)\n // script = script.replace('}$','}');\n // script = script.replace('@this@','this');\n // console.log('----------->', script)\n\n // TODO: \uD6D4.. \uAF2D\uD544\uC694\uD55C\uAC00..? \uD2B8\uB9AC\uAC70\uB420\uB54C \uC2A4\uD06C\uB9BD\uD2B8\uBCC0\uC218 \uAE4C\uC9C0 \uAC10\uC9C0\uD574\uC57C\uB420\uAE4C?\n EventManager.VARNAMES.forEach(it => {\n // script = script.replace(RegExp(it.replace('$', '\\\\$'), 'g'), `this?.___${it}`);\n // script = script.replace(RegExp(it.replace('$', '\\\\$'), 'g'), `this.___${it}`);\n script = script.replace(RegExp(it.replace('$', '\\\\$'), 'g'), `this.___${it}`);\n // console.log('scripts-->', script)\n });\n // console.log('--------1--', script);\n // script = script.replaceAll('#{','${').replaceAll('}#', '}')\n // console.log('--------2--', script);\n // TODO: \uD6D4.. \uAF2D\uD544\uC694\uD55C\uAC00..? \uD2B8\uB9AC\uAC70\uB420\uB54C \uC2A4\uD06C\uB9BD\uD2B8\uBCC0\uC218 \uAE4C\uC9C0 \uAC10\uC9C0\uD574\uC57C\uB420\uAE4C?\n Array.from(ObjectUtils.Path.detectPathFromScript(script, { excludeThis: true }))\n .filter(it => !it.startsWith(`___${EventManager.SCRIPTS_VARNAME}`))\n .forEach(it => usingTriggerVariables.add(it));\n }\n });\n // console.log('usingTriggerVariable----------->', usingTriggerVariables)\n return usingTriggerVariables;\n }\n\n // \uC911\uC694 render \uCC98\uB9AC \uBD80\uBD84\n // public async render(obj: any, config: DomRenderConfig): Promise<RawSet[]> {\n // }\n public async render(obj: any, config: DomRenderConfig): Promise<RenderResult> {\n // console.log('render!!!!!!!!!!!!!!')\n const genNode = config.window.document.importNode(this.dataSet.fragment, true);\n const raws: RawSet[] = [];\n const onAttrInitCallBacks: AttrInitCallBack[] = [];\n const onElementInitCallBacks: ElementInitCallBack[] = [];\n const onThisComponentSetCallBacks: ComponentSet[] = [];\n const drAttrs: Attrs[] = [];\n // console.log('rawSet render!!', obj, config, this, Array.from(genNode.childNodes.values()));\n const executedOperators: OperatorExecuter[] = [];\n for (const cNode of Array.from(genNode.childNodes.values())) {\n // console.log('cNodecNodecNode', cNode);\n let attribute = {};\n if (cNode.nodeType === Node.ELEMENT_NODE) {\n attribute = ElementUtils.getAttributeToObject(cNode as Element);\n }\n\n const __render = Object.freeze({\n rawSet: this,\n scripts: EventManager.setBindProperty(config?.scripts, obj),\n router: config?.router,\n range: Range.range,\n element: cNode,\n attribute: attribute,\n rootObject: obj,\n scriptUtils: ObjectUtils.Script,\n nearThis: this.findNearThis(obj),\n parentThis: this.findParentThis(obj),\n bindScript: ` /** render **/\n const ${EventManager.SCRIPTS_VARNAME} = this.__render.scripts;\n const ${EventManager.RAWSET_VARNAME} = this.__render.rawSet;\n const ${EventManager.ELEMENT_VARNAME} = this.__render.element;\n const ${EventManager.ATTRIBUTE_VARNAME} = this.__render.attribute;\n const ${EventManager.RANGE_VARNAME} = this.__render.range;\n const ${EventManager.ROUTER_VARNAME} = this.__render.router;\n const ${EventManager.NEAR_THIS_VARNAME} = this.__render.nearThis;\n const ${EventManager.PARENT_THIS_VARNAME} = this.__render.parentThis;\n const ${EventManager.SCRIPT_UTILS_VARNAME} = this.__render.scriptUtils;\n const ${EventManager.ROOT_OBJECT_VARNAME} = this.__render.rootObject;\n `\n }) as unknown as Render;\n\n // const normalAttribute = attribute[EventManager.normalAttrMapAttrName];\n // if (normalAttribute) {\n // new Map<string, string>(JSON.parse(normalAttribute)).forEach((v, k) => {\n // const cval = ScriptUtils.evalReturn({ bodyScript: __render.bindScript, returnScript: v }, Object.assign(obj, { __render: __render }));\n // console.log('-----------',v,k, cval);\n // attribute[v] = cval;\n // });\n // }\n\n const fag = config.window.document.createDocumentFragment();\n if (cNode.nodeType === Node.TEXT_NODE && cNode.textContent) {\n // console.log('text-->', this, obj, config, cNode.textContent);\n // console.log('text-->', Array.from(this.fragment.childNodes))\n const textContent = cNode.textContent;\n const runText = RawSet.expressionGroups(textContent)[0][1];\n // console.log('--->', RawSet.exporesionGrouops(textContent), textContent,runText, runText[0][1])\n let newNode: Node;\n if (textContent?.startsWith('#')) {\n const r = ObjectUtils.Script.evaluate(`${__render.bindScript} return ${runText}`, Object.assign(obj, { __render }));\n const template = config.window.document.createElement('template') as HTMLTemplateElement;\n template.innerHTML = r;\n newNode = template.content;\n } else {\n const r = ObjectUtils.Script.evaluate(`${__render.bindScript} return ${runText}`, Object.assign(obj, { __render }));\n newNode = config.window.document.createTextNode(r);\n }\n cNode.parentNode?.replaceChild(newNode, cNode);\n // console.log('-------', this.point.start.parentNode.nodeName)\n // \uC911\uC694 style value change \uB410\uC744\uB54C \uB2E4\uC2DC \uCC98\uB9AC\uD574\uC57C\uB418\uAE30\uB584\uBB38\uC5D0: \uB9C8\uC9C0\uB9C9\uC5D0 completed \uC5C6\uB294 attr \uAC00\uC9C0\uACE0 \uD310\uB2E8 \uD558\uB2C8\uAE50\n if (this.type === RawSetType.STYLE_TEXT && this.point.parent) {\n (this.point.parent as Element).removeAttribute('completed');\n }\n } else if (cNode.nodeType === Node.ELEMENT_NODE) {\n const element = cNode as Element;\n // console.log('target-->', element)\n const drAttr: Attrs = {\n dr: this.getAttributeAndDelete(element, RawSet.DR_NAME),\n drIf: this.getAttributeAndDelete(element, RawSet.DR_IF_NAME),\n drFor: this.getAttributeAndDelete(element, RawSet.DR_FOR_NAME),\n drForOf: this.getAttributeAndDelete(element, RawSet.DR_FOR_OF_NAME),\n drThisProperty: this.getAttributeAndDelete(element, RawSet.DR_THIS_PROPERTY_NAME),\n drAppender: this.getAttributeAndDelete(element, RawSet.DR_APPENDER_NAME),\n drRepeat: this.getAttributeAndDelete(element, RawSet.DR_REPEAT_NAME),\n drThis: this.getAttributeAndDelete(element, RawSet.DR_THIS_NAME),\n drForm: this.getAttributeAndDelete(element, RawSet.DR_FORM_NAME),\n drPre: this.getAttributeAndDelete(element, RawSet.DR_PRE_NAME),\n drInnerHTML: this.getAttributeAndDelete(element, RawSet.DR_INNERHTML_NAME),\n drInnerText: this.getAttributeAndDelete(element, RawSet.DR_INNERTEXT_NAME),\n drStripElement: this.getAttributeAndDelete(element, RawSet.DR_STRIP_NAME),\n drReplaceTargetElementIs: this.getAttributeAndDelete(element, RawSet.DR_REPLACE_TARGET_ELEMENT_IS_NAME),\n drItOption: this.getAttributeAndDelete(element, RawSet.DR_IT_OPTIONNAME),\n drIfOption: this.getAttributeAndDelete(element, RawSet.DR_IF_OPTIONNAME),\n drVarOption: this.getAttributeAndDelete(element, RawSet.DR_VAR_OPTIONNAME),\n drNextOption: this.getAttributeAndDelete(element, RawSet.DR_NEXT_OPTIONNAME),\n drAfterOption: this.getAttributeAndDelete(element, RawSet.DR_AFTER_OPTIONNAME),\n drBeforeOption: this.getAttributeAndDelete(element, RawSet.DR_BEFORE_OPTIONNAME),\n drCompleteOption: this.getAttributeAndDelete(element, RawSet.DR_COMPLETE_OPTIONNAME),\n drStripOption: this.getAttributeAndDelete(element, RawSet.DR_STRIP_OPTIONNAME),\n drDestroyOption: this.getAttributeAndDelete(element, RawSet.DR_DESTROY_OPTIONNAME),\n drKeyOption: this.getAttributeAndDelete(element, RawSet.DR_KEY_OPTIONNAME),\n drDetectIfOption: this.getAttribute(element, RawSet.DR_DETECT_IF_OPTIONNAME),\n drHasKeysOption: this.getAttribute(element, RawSet.DR_HAS_KEYS_OPTIONNAME)\n };\n drAttrs.push(drAttr);\n // \uC544\uB798 \uC21C\uC11C \uC911\uC694\n const operators = [\n new DrPre( this, __render, { raws, fag }, { element, attrName: RawSet.DR_PRE_NAME, attr: drAttr.drPre, attrs: drAttr }, { config, obj, operatorAround: config.operatorAround?.drPre }, { onAttrInitCallBacks, onElementInitCallBacks, onThisComponentSetCallBacks } ),\n new Dr( this, __render, { raws, fag }, { element, attrName: RawSet.DR_NAME, attr: drAttr.dr, attrs: drAttr }, { config, obj, operatorAround: config.operatorAround?.dr }, { onAttrInitCallBacks, onElementInitCallBacks, onThisComponentSetCallBacks } ),\n // new Dr(this, __render, {raws, fag}, {element, attrName: EventManager.onRenderedInitAttrName, attr: drAttr.dr, attrs: drAttr}, {config, obj, operatorAround: config.operatorAround?.dr}, {onAttrInitCallBacks, onElementInitCallBacks, onThisComponentSetCallBacks}),\n new DrIf( this, __render, { raws, fag }, { element, attrName: RawSet.DR_IF_NAME, attr: drAttr.drIf, attrs: drAttr }, { config, obj, operatorAround: config.operatorAround?.drIf }, { onAttrInitCallBacks, onElementInitCallBacks, onThisComponentSetCallBacks } ),\n new DrStripElement( this, __render, { raws, fag }, { element, attrName: RawSet.DR_STRIP_NAME, attr: drAttr.drStripElement, attrs: drAttr }, { config, obj, operatorAround: config.operatorAround?.drThis }, { onAttrInitCallBacks, onElementInitCallBacks, onThisComponentSetCallBacks } ),\n new DrThis( this, __render, { raws, fag }, { element, attrName: RawSet.DR_THIS_NAME, attr: drAttr.drThis, attrs: drAttr }, { config, obj, operatorAround: config.operatorAround?.drThis }, { onAttrInitCallBacks, onElementInitCallBacks, onThisComponentSetCallBacks } ),\n new DrForm( this, __render, { raws, fag }, { element, attrName: RawSet.DR_FOR_NAME, attr: drAttr.drForm, attrs: drAttr }, { config, obj, operatorAround: config.operatorAround?.drForm }, { onAttrInitCallBacks, onElementInitCallBacks, onThisComponentSetCallBacks } ),\n new DrInnerText( this, __render, { raws, fag }, { element, attrName: RawSet.DR_INNERTEXT_NAME, attr: drAttr.drInnerText, attrs: drAttr }, { config, obj, operatorAround: config.operatorAround?.drInnerText }, { onAttrInitCallBacks, onElementInitCallBacks, onThisComponentSetCallBacks } ),\n new DrInnerHTML( this, __render, { raws, fag }, { element, attrName: RawSet.DR_INNERHTML_NAME, attr: drAttr.drInnerHTML, attrs: drAttr }, { config, obj, operatorAround: config.operatorAround?.drInnerHTML }, { onAttrInitCallBacks, onElementInitCallBacks, onThisComponentSetCallBacks } ),\n new DrFor( this, __render, { raws, fag }, { element, attrName: RawSet.DR_FOR_NAME, attr: drAttr.drFor, attrs: drAttr }, { config, obj, operatorAround: config.operatorAround?.drFor }, { onAttrInitCallBacks, onElementInitCallBacks, onThisComponentSetCallBacks } ),\n new DrForOf( this, __render, { raws, fag }, { element, attrName: RawSet.DR_FOR_OF_NAME, attr: drAttr.drForOf, attrs: drAttr }, { config, obj, operatorAround: config.operatorAround?.drForOf }, { onAttrInitCallBacks, onElementInitCallBacks, onThisComponentSetCallBacks } ),\n new DrThisProperty( this, __render, { raws, fag }, { element, attrName: RawSet.DR_THIS_PROPERTY_NAME, attr: drAttr.drThisProperty, attrs: drAttr }, { config, obj, operatorAround: config.operatorAround?.drThisProperty }, { onAttrInitCallBacks, onElementInitCallBacks, onThisComponentSetCallBacks } ),\n new DrAppender( this, __render, { raws, fag }, { element, attrName: RawSet.DR_APPENDER_NAME, attr: drAttr.drAppender, attrs: drAttr }, { config, obj, operatorAround: config.operatorAround?.drAppender }, { onAttrInitCallBacks, onElementInitCallBacks, onThisComponentSetCallBacks } ),\n new DrRepeat( this, __render, { raws, fag }, { element, attrName: RawSet.DR_REPEAT_NAME, attr: drAttr.drRepeat, attrs: drAttr }, { config, obj, operatorAround: config.operatorAround?.drRepeat }, { onAttrInitCallBacks, onElementInitCallBacks, onThisComponentSetCallBacks } ),\n new DrTargetElementIsElement( this, __render, { raws, fag }, { element, attrName: RawSet.DR_REPLACE_TARGET_ELEMENT_IS_NAME, attr: drAttr.drReplaceTargetElementIs, attrs: drAttr }, { config, obj }, { onAttrInitCallBacks, onElementInitCallBacks, onThisComponentSetCallBacks } ),\n new DrTargetElement( this, __render, { raws, fag }, { element, attrs: drAttr }, { config, obj }, { onAttrInitCallBacks, onElementInitCallBacks, onThisComponentSetCallBacks } ),\n new DrTargetAttr( this, __render, { raws, fag }, { element, attrs: drAttr }, { config, obj }, { onAttrInitCallBacks, onElementInitCallBacks, onThisComponentSetCallBacks } )\n ];\n\n for (const operator of operators) {\n const state = await operator.start();\n if (state === ExecuteState.EXECUTE) {\n executedOperators.push(operator);\n break;\n } else if (state === ExecuteState.STOP) {\n return { raws, executedOperators };\n }\n }\n }\n }\n\n this.point.childrenRawSets = raws;\n raws.forEach(it => {\n it.point.parentRawSet = this;\n });\n\n // console.log('pppppppppppppp', this);\n\n // replaceBody\uC640 applyEvent \uC21C\uC11C\uB97C \uBC14\uAFE8\uB2E4 20250511\n const childrenNodes = Array.from(genNode.childNodes);\n this.applyEvent(obj, genNode, config);\n this.replaceBody(genNode); // \uC911\uC694 \uC5EC\uAE30\uC11C \uB9C8\uC9C0\uB9C9\uC5D0 \uC5F0\uC158\uB41C \uAC12\uC744 \uADF8\uB824\uC900\uB2E4.\n // console.log('rawSEt!!!!!!!', obj, this.near)\n // console.log('rawSEt!!!!!!!', obj, this.findNearThis(obj),childrenNodes,config)\n // console.log('rawSEt!!!!!!!', obj, drAttrs)\n this.onRenderedEvent(obj, childrenNodes, config);\n\n drAttrs.forEach(it => {\n if (it.drCompleteOption) {\n // genNode.childNodes\n const render = Object.freeze({\n rawSet: this,\n fag: genNode,\n scripts: EventManager.setBindProperty(config?.scripts, obj)\n } as Render);\n ObjectUtils.Script.evaluate(\n `\n const ${EventManager.FAG_VARNAME} = this.__render.fag;\n const ${EventManager.SCRIPTS_VARNAME} = this.__render.scripts;\n const ${EventManager.RAWSET_VARNAME} = this.__render.rawSet;\n ${it.drCompleteOption}`,\n Object.assign(obj, { __render: render })\n );\n }\n });\n\n // \uC911\uC694 style isolation \uB098\uC911\uC5D0 :scope\uB85C \uB300\uCCB4 \uAC00\uB2A5\uD560\uB4EF.\n // 2023.9.4\uC77C \uC5C6\uC570 style \uCC98\uC74C\uB4E4\uC5B4\uC62C\uB54C \uCC98\uB9AC\uD558\uB294\uAC78\uB85C \uBC14\uAFC8\n // RawSet.generateStyleSheetsLocal(config);\n for (const it of onThisComponentSetCallBacks) {\n if (isOnInitRender(it.obj)) {\n it.obj?.onInitRender?.({}, this);\n }\n }\n for (const it of onElementInitCallBacks) {\n if (isOnInitRender(this.dataSet.render?.currentThis)) {\n // TODO: \uB098\uC911\uC5D0 \uD30C\uB77C\uBBF8\uD130 \uB4E4\uC5B4\uAC00\uC57C\uB420\uB4EF. \uC9C0\uAE08\uC740 \uB9AC\uD329\uD1A0\uB9C1\uD558\uB290\uB77C \uBE60\uC9D0\n // console.log('!!!!!!!!!!!!!!!!!!!!!!!!!!!!!', it, this.dataSet);\n // dr-on-init:arguments\n\n // if (isOnInitRender()) {\n // it.targetElement.__render.component.onInitRender?.(...param);\n // }\n // if (it.targetElement?.__render?.element && it.targetElement?.__render?.component) {\n // const oninit = it.targetElement.__render.element.getAttribute(RawSet.DR_ON_INIT_ARGUMENTS_OPTIONNAME); // dr-on-component-init\n // let param = [];\n // if (oninit) {\n // const script = `${it.targetElement.__render.renderScript} return ${oninit} `;\n // param = ScriptUtils.eval(script, Object.assign(obj, {\n // __render: it.targetElement.__render\n // }));\n // if (!Array.isArray(param)) {\n // param = [param];\n // }\n // }\n //\n // if (isOnInitRender(it.targetElement.__render.component)) {\n // it.targetElement.__render.component.onInitRender?.(...param);\n // }\n // }\n this.dataSet.render.currentThis.onInitRender({}, this);\n }\n\n config?.onElementInit?.(it.name, obj, this, it.targetElement);\n }\n\n // TODO: \uC774\uBD80\uBD84\uB3C4 \uC704\uC5D0 targetElement \uCC98\uB7FC \uD574\uC57C\uB420\uAE4C?\n for (const it of onAttrInitCallBacks) {\n config?.onAttrInit?.(it.attrName, it.attrValue, obj, this);\n }\n\n // component destroy\n if (obj.__domrender_components) {\n Object.entries(obj.__domrender_components).forEach(([key, value]) => {\n const rawSet = (value as any).__rawSet as RawSet;\n const drAttrs: Attrs | undefined = rawSet?.dataSet.render?.attribute;\n if (rawSet && !rawSet.isConnected) {\n const destroyOptions = drAttrs?.drDestroyOption?.split(',') ?? [];\n RawSet.destroy(obj.__domrender_components[key], { rawSet: rawSet }, config, destroyOptions);\n delete obj.__domrender_components[key];\n }\n });\n }\n // console.log('-------raws',raws)\n return { raws: raws, executedOperators: executedOperators };\n }\n\n // \uC911\uC694 \uC2A4\uD0C0\uC77C \uC801\uC6A9 \uBD80\uBD84\n private static generateRuleSelector(start: string, end: string, sit: string) {\n const selectorText = `:is(${start} ~ *:not(${start} ~ ${end} ~ *))`;\n if (sit.startsWith('## ')) {\n return sit.replace(/^## /, '');\n } else if (sit.startsWith('.')) {\n return `${selectorText}${sit}, ${selectorText} ${sit}`;\n } else if (sit.includes('::')) {\n const reg = sit.match(/(.*)::(.*)$/);\n const first = reg?.[1];\n const extracted = reg?.[2];\n const divText = `${start} ~ ${first}:not(${start} ~ ${end} ~ *)`;\n return `${selectorText} ${first}, ${divText}::${extracted}`;\n } else {\n const divText = `${start} ~ ${sit}:not(${start} ~ ${end} ~ *)`;\n return `${selectorText} ${sit}, ${divText}`;\n }\n }\n\n public static generateStyleTransform(styleBody: string | string[], componentKey: string, styleTagWrap = true) {\n // console.log('style!!!!!!!!!!!!!!!!1', styleBody, componentKey, styleTagWrap);\n if (Array.isArray(styleBody)) {\n styleBody = styleBody.join('\\n');\n }\n styleBody = styleBody.replaceAll('#uuid#', componentKey);\n const start = `#${componentKey}-start`;\n const end = `#${componentKey}-end`;\n // \uC774\uAC70\uBB50\uD558\uB294\uC9C0 \uAE4C\uBA39\uC5C8\uB124 \uBB50\uC600\uC9C0??..\n // \uB3D9\uC801\uC73C\uB85C \uCC98\uB9AC\uD558\uB294\uAC83\uAC19\uC740\uB370.. css \uC5D0\uC11C\uB294 \uB3D9\uC801\uC73C\uB85C \uCC98\uB9AC\uD558\uB294\uAC78 \uC9C0\uD5A5 \uD574\uC57C\uB420\uAC83\uAC19\uC740\uB370 \uC774\uAE30\uB2A5 deprecated \uD560\uC9C0 \uACE0\uBBFC\uC911\n // const before = StringUtils.regexExecArrayReplace(styleBody, /(\\$\\{.*?\\}\\$)/g, (data) => {\n // // console.log('\uB3D9\uC801?', `var(--domrender-${data[0]})`)\n // return `var(--domrender-${data[0]})`;\n // });\n // const before = styleBody;\n // console.log('before@@@@@@@@@@@', before)\n const cssParser = new CssParser(styleBody);\n\n const processRule = (rule: CssRule) => {\n if (isStyleRule(rule)) {\n const isRoot = rule.selector.includes(':root');\n if (!isRoot) {\n // Handle comma-separated selectors\n const selectors = rule.selector.split(',').map(s => s.trim());\n const transformedSelectors = selectors.map(selector => this.generateRuleSelector(start, end, selector));\n rule.selector = transformedSelectors.join(', ');\n }\n } else if (isAtRule(rule)) {\n if (rule.name === 'media') {\n const hasRoot = rule.children.some(\n childRule => isStyleRule(childRule) && childRule.selector.includes(':root')\n );\n if (!hasRoot) {\n rule.children.forEach(childRule => {\n if (isStyleRule(childRule)) {\n const selectors = childRule.selector.split(',').map(s => s.trim());\n const transformedSelectors = selectors.map(selector => this.generateRuleSelector(start, end, selector));\n childRule.selector = transformedSelectors.join(', ');\n }\n });\n }\n }\n }\n };\n\n cssParser.rules.forEach(processRule);\n\n let after = cssParser.stringify();\n // let after = StringUtils.regexExecArrayReplace(stringify as string, /(var\\(--domrender-(\\$\\{.*?\\}\\$)?\\))/g, (data) => {\n // return data[2];\n // });\n // console.log('after@@@@@@@@@@@', after)\n\n // \uC5EC\uAE30\uC11C \uC120\uC5B8 selector \uC790\uCCB4\uC5D0\uB3C4 \uCC98\uB9AC\uAC00\uB2A5\uD558\uB3C4\uB85D \uD55C\uB2E4 20250518\n after = after.replaceAll('/*$', '${');\n after = after.replaceAll('$*/', '}$');\n\n if (styleTagWrap) {\n styleBody = `<style id='${componentKey}-style' domstyle>${after}</style>`;\n }\n\n // console.log('style!!!!!!!!!!!!!!2', styleBody);\n return styleBody;\n }\n\n public applyEvent(obj: any, fragment = this.dataSet.fragment, config?: DomRenderConfig) {\n this.dataSet.config.eventManager.applyEvent(\n obj,\n this.dataSet.config.eventManager.findAttrElements(fragment, config),\n config\n );\n }\n\n public onRenderedEvent(obj: any, nodes: Node[], config?: DomRenderConfig) {\n this.dataSet.config.eventManager.onRenderedEvent(obj, nodes, config);\n }\n\n public getAttribute(element: Element, attr: string) {\n const data = element.getAttribute(attr);\n return data;\n }\n\n public getAttributeAndDelete(element: Element, attr: string) {\n const data = element.getAttribute(attr);\n // if (data)\n // element.setAttribute(`origin-${attr}`, data);\n\n element.removeAttribute(attr);\n return data;\n }\n\n public getDrAppendAttributeAndDelete(element: Element, obj: any) {\n let data = element.getAttribute(RawSet.DR_APPENDER_NAME);\n // if (data && !/\\[[0-9]+\\]/g.test(data)) {\n if (data && !/\\[.+\\]/g.test(data)) {\n const currentIndex = ObjectUtils.Script.evaluateReturn(`${ObjectUtils.Path.toOptionalChainPath(data)}?.length -1`, obj);\n // console.log('------?', currentIndex)\n // if (currentIndex === undefined || isNaN(currentIndex)) {\n // return undefined;\n // }\n // const currentIndex = ScriptUtils.evalReturn(`${data}.length`, obj);\n data = `${data}[${currentIndex}]`;\n element.setAttribute(RawSet.DR_APPENDER_NAME, data);\n // element.setAttribute(RawSet.DR_IF_NAME, data);\n // element.setAttribute('dr-id', data);\n // console.log('-->', element)\n }\n\n // if (data && !/\\.childs\\[[0-9]+\\]/g.test(data)) {\n // const currentIndex = ScriptUtils.evalReturn(`${data}.currentIndex`, obj);\n // data = `${data}.childs[${currentIndex}]`;\n // element.setAttribute(RawSet.DR_APPENDER_NAME, data)\n // }\n element.removeAttribute(RawSet.DR_APPENDER_NAME);\n return data;\n }\n\n public replaceBody(genNode: Node) {\n this.childAllRemove();\n this.point.start.parentNode?.insertBefore(genNode, this.point.start.nextSibling); // \uC911\uC694 start checkpoint \uB2E4\uC74C\uC778 end checkpoint \uC55E\uC5D0 \uB123\uB294\uB2E4. \uC989 \uC911\uAC04 \uAEF4\uB123\uAE30 (\uB098\uC911\uC5D0 meta tag\uB85C \uBCC0\uACBD\uC744 \uD574\uB3C4\uB420\uB4EF\uD558\uAE34\uD55C\uB370..)\n }\n\n // \uC911\uC694 important\n public static checkPointCreates(element: Node, obj: any, config: DomRenderConfig): RawSet[] {\n // console.log('!@@@@@@@@@@@@@@@@', obj);\n // const NodeFilter = (config.window as any).NodeFilter;\n // const thisVariableName = (element as any).__domrender_this_variable_name;\n // let html = element instanceof DocumentFragment ? ElementUtils.toInnerHTML(element, {document: config.window.document}) : (element as HTMLElement).outerHTML;\n // console.log('==============html-->', element, html);\n const NodeFilter = (config.window as any).NodeFilter;\n const Node = (config.window as any).Node;\n const processedNodes = new Set<Node>();\n\n\n\n const findNodes = NodeUtils.findNodes(element, (node) => {\n // console.log('nodeType', node.nodeType, node, (node as any).tagName, (node as any).data);\n // for (const processedNode of processedNodes) {\n // console.log('pre check!!', Array.from(processedNodes),processedNode !== node , processedNode.contains(node));\n // // if(processedNode.contains(node)){\n // console.log('---prechecker--html', (processedNode as HTMLElement).outerHTML,'------', (node as HTMLElement).outerHTML);\n // // }\n // if (processedNode !== node && processedNode.contains(node)) {\n // console.log('acceptNodeReturn contain', NodeFilter.FILTER_REJECT);\n // return NodeFilter.FILTER_REJECT;\n // }\n // }\n\n if (node.nodeType === Node.TEXT_NODE) {\n // console.log('nodeText--->', node.textContent)\n // console.log('????????', node.parentElement, node.parentElement?.getAttribute('dr-pre'));\n // console.log('???????/',node.textContent, node.parentElement?.getAttribute('dr-pre'))\n // TODO: \uB098\uC911\uC5D0\n // const between = StringUtils.betweenRegexpStr('[$#]\\\\{', '\\\\}', StringUtils.deleteEnter((node as Text).data ?? ''))\n const between = RawSet.expressionGroups(StringUtils.deleteEnter((node as Text).data ?? ''));\n // console.log('bbbb', between)\n const r = between?.length > 0 ? NodeUtils.FindNodesFilterResult.MATCH_AND_SKIP_CHILDREN : NodeUtils.FindNodesFilterResult.NO_MATCH_AND_SKIP_CHILDREN;\n // console.log('acceptNodeReturn node', r);\n return r;\n // return /\\$\\{.*?\\}/g.test(StringUtils.deleteEnter((node as Text).data ?? '')) ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_REJECT;\n // return /[$#]\\{.*?\\}/g.test(StringUtils.deleteEnter((node as Text).data ?? '')) ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_REJECT;\n } else if (node.nodeType === Node.ELEMENT_NODE) {\n const element = node as Element;\n // if (typeof Window === 'undefined' && element.getAttribute('ttt') === 'visual') {\n // return NodeFilter.FILTER_REJECT;\n // }\n // console.log('nodeHTML-->', element.outerHTML);\n if (element.hasAttribute(RawSet.DR_PRE_NAME)) {\n let r = NodeUtils.FindNodesFilterResult.NO_MATCH_AND_SKIP_CHILDREN;\n // console.log('acceptNodeReturn', r);\n return r;\n }\n if (element.hasAttribute(EventManager.attrAttrName)) {\n const script = element.getAttribute(EventManager.attrAttrName) ?? '';\n // console.log('scriptscriptscriptscriptscriptscript,', script)\n const keyValuePairs = Array.from(script.matchAll(/(\\w+):\\s*([^,}]+)/g)).map(match => ({\n key: match[1],\n value: match[2]\n }));\n (keyValuePairs ?? []).forEach(it => {\n element.setAttribute(it.key, '${' + it.value + '}$');\n });\n }\n // element.setAttribute('dr-event-click', 'console.log(11)');\n const targetElementIs = element.getAttribute(RawSet.DR_REPLACE_TARGET_ELEMENT_IS_NAME);\n const targetElementNames = config.targetElements?.map(it => it.name.toLowerCase()) ?? [];\n const isElement =\n targetElementNames.includes(element.tagName.toLowerCase()) ||\n targetElementNames.includes(targetElementIs?.toLowerCase() as any);\n // if (isElement) {\n // (element as HTMLElement).style.display = 'none';\n // (element as HTMLElement).style.width = '100px';\n // (element as HTMLElement).style.height = '100px';\n // console.log((element as HTMLElement).outerHTML)\n // }\n // console.log('------targetElementIstargetElementIs>', targetElementNames, '---', isElement, targetElementIs);\n // const targetAttrNames = (config.targetAttrs?.map(it => it.name) ?? []).concat([...RawSet.DR_ATTRIBUTES,...EventManager.RAWSET_CHECK_ATTRIBUTE]);\n const targetAttrNames = (config.targetAttrs?.map(it => it.name) ?? []).concat([...RawSet.DR_ATTRIBUTES]);\n const normalAttrs = new Map<string, string>();\n const linkVariables = new Map<string, string>();\n const linkNames = EventManager.linkAttrs.map(it => it.name);\n const isAttr =\n element.getAttributeNames().filter(it => {\n const value = element.getAttribute(it);\n\n // link\uC77C\uB54C\n if (value && linkNames.includes(it)) {\n linkVariables.set(it, value);\n } else if (value && RawSet.isExpression(value)) {\n // \uD45C\uD604\uC2DD\uC788\uC744\uB584\n let variablePath: string = RawSet.expressionGroups(value)[0][1];\n // console.log('0-----',variablePath, node);\n // normal Attribute \uCD08\uBC18\uC5D0 \uC14B\uD305\uD574\uC8FC\uAE30.\n // TODO: \uC774\uAC70 \uD558\uAE34\uD588\uB294\uB370 \uC0AC\uC774\uB4DC \uC774\uD329\uD2B8?\n const originVariable = variablePath;\n variablePath = variablePath.replace(/#[^#]*#/g, '({})');\n // console.log('1-----',variablePath, node);\n const optionalChainPath = ObjectUtils.Path.toOptionalChainPath(variablePath);\n // console.log('2-----',optionalChainPath);\n const cval = ObjectUtils.Script.evaluateReturn(optionalChainPath, Object.assign(obj));\n // const cval = ScriptUtils.evalReturn(variablePath, Object.assign(obj));\n if (cval === null) {\n element.removeAttribute(it);\n } else {\n element.setAttribute(it, cval);\n }\n normalAttrs.set(it, originVariable);\n // console.log('normalAttribute', it, variablePath);\n }\n // console.log(element.getAttribute(it), attrExpresion);\n const isTargetAttr = targetAttrNames.includes(it.toLowerCase());\n return isTargetAttr;\n }).length > 0;\n\n if (linkVariables.size) {\n element.setAttribute(\n EventManager.linkTargetMapAttrName,\n JSON.stringify(Array.from(linkVariables.entries()))\n );\n }\n // \uAE30\uBCF8 attribute\uB97C \uCC98\uB9AC\uD558\uAE30\uC704\uD574\n if (normalAttrs.size) {\n element.setAttribute(EventManager.normalAttrMapAttrName, JSON.stringify(Array.from(normalAttrs.entries())));\n }\n // if (isElement) {\n // element.setAttribute('www', '@this@');\n // }\n const r = isAttr || isElement ? NodeUtils.FindNodesFilterResult.MATCH_AND_SKIP_CHILDREN : NodeUtils.FindNodesFilterResult.NO_MATCH_AND_CONTINUE;\n // console.log('acceptNodeReturn element', r);\n return r;\n }\n const r = NodeUtils.FindNodesFilterResult.NO_MATCH_AND_CONTINUE;\n // console.log('acceptNodeReturn nothing', r);\n return r;\n }\n )\n\n\n /**\n nodeIterator.nextNode() \uD560\uB54C \uADF8\uB54C \uD638\uCD9C\uC2DC\uC810\uC5D0 \uC544\uB798 \uB85C\uC9C1\uC5D0\uC11C \uB2E4\uC74C \uB178\uB4DC\uB97C \uCC3E\uB294\uB2E4.\n \uBE0C\uB77C\uC6B0\uC800\uB294 nodeIterator.nextNode() \uD574\uC11C \uB3D9\uAE30\uB85C dom\uC744 \uC870\uC791\uD558\uAC70\uB098 \uC62E\uAE30\uBA74 \uB2E4\uC74C nextNode\uD560\uB54C \uADF8 \uC62E\uACA8\uC9C4 \uB300\uC0C1\uC740 \uC81C\uC678\uB41C\uB2E4\n \uD558\uC9C0\uB9CC jsdom\uC740 \uADF8\uB300\uB85C \uB0A8\uC544\uC788\uC5B4 \uC544\uC8FC \uC608\uAE30\uCE58\uBABB\uD55C \uC0AC\uAC74\uC774 \uBC1C\uC0DD\uB41C\uB2E4 5\uC2DC\uAC04\uC740 \uC0BD\uC9C8..\uD588\uB2E4.. \uB530\uB77C\uC11C \uC911\uBCF5\uBC29\uC9C0 \uCC98\uB9AC\uD558\uC600\uB2E4\n */\n // const nodeIterator = config.window.document?.createNodeIterator(element, NodeFilter.SHOW_ALL, {\n // acceptNode(node) {\n // console.log('nodeType', node.nodeType, node, (node as any).tagName, (node as any).data);\n // for (const processedNode of processedNodes) {\n // console.log('pre check!!', Array.from(processedNodes),processedNode !== node , processedNode.contains(node));\n // // if(processedNode.contains(node)){\n // console.log('---prechecker--html', (processedNode as HTMLElement).outerHTML,'------', (node as HTMLElement).outerHTML);\n // // }\n // if (processedNode !== node && processedNode.contains(node)) {\n // console.log('acceptNodeReturn contain', NodeFilter.FILTER_REJECT);\n // return NodeFilter.FILTER_REJECT;\n // }\n // }\n //\n // if (node.nodeType === Node.TEXT_NODE) {\n // console.log('nodeText--->', node.textContent)\n // // console.log('????????', node.parentElement, node.parentElement?.getAttribute('dr-pre'));\n // // console.log('???????/',node.textContent, node.parentElement?.getAttribute('dr-pre'))\n // // TODO: \uB098\uC911\uC5D0\n // // const between = StringUtils.betweenRegexpStr('[$#]\\\\{', '\\\\}', StringUtils.deleteEnter((node as Text).data ?? ''))\n // const between = RawSet.expressionGroups(StringUtils.deleteEnter((node as Text).data ?? ''));\n // // console.log('bbbb', between)\n // const r = between?.length > 0 ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_REJECT;\n // console.log('acceptNodeReturn node', r);\n // return r;\n // // return /\\$\\{.*?\\}/g.test(StringUtils.deleteEnter((node as Text).data ?? '')) ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_REJECT;\n // // return /[$#]\\{.*?\\}/g.test(StringUtils.deleteEnter((node as Text).data ?? '')) ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_REJECT;\n // } else if (node.nodeType === Node.ELEMENT_NODE) {\n // const element = node as Element;\n // // if (typeof Window === 'undefined' && element.getAttribute('ttt') === 'visual') {\n // // return NodeFilter.FILTER_REJECT;\n // // }\n // console.log('nodeHTML-->', element.outerHTML);\n // if (element.hasAttribute(RawSet.DR_PRE_NAME)) {\n // console.log('acceptNodeReturn', NodeFilter.FILTER_REJECT);\n // return NodeFilter.FILTER_REJECT;\n // }\n // if (element.hasAttribute(EventManager.attrAttrName)) {\n // const script = element.getAttribute(EventManager.attrAttrName) ?? '';\n // // console.log('scriptscriptscriptscriptscriptscript,', script)\n // const keyValuePairs = Array.from(script.matchAll(/(\\w+):\\s*([^,}]+)/g)).map(match => ({\n // key: match[1],\n // value: match[2]\n // }));\n // (keyValuePairs ?? []).forEach(it => {\n // element.setAttribute(it.key, '${' + it.value + '}$');\n // });\n // // console.log('-------k', keyValuePairs)\n //\n // // const drAttr = ScriptUtils.evalReturn(script, obj)\n // // Object.entries(drAttr).forEach(([key, value]) => {\n // // const keyValuePairs = Array.from(a.matchAll(/(\\w+):\\s*([^,}]+)/g)).map(match => ({ key: match[1], value: match[2] }));\n // // console.log(keyValuePairs);\n // // // \uCD9C\uB825: [{ key: 'value', value: 'this.child.obj.name' }, { key: 'wow', value: 'this.ww' }, { key: 'zz', value: '22' }, { key: 'v', value: '\"ee\"' }]\n // //\n // // console.log('-----------------', key,value)\n // // element.setAttribute(key, '${'+(value)+'}$');\n // // })\n // // EventManager.attrNames.filter(it => it in drAttr).forEach(it => {\n // // if (drAttr[it] === null) {\n // // element.removeAttribute(it);\n // // } else {\n // // element.setAttribute(it, drAttr[it]);\n // // }\n // // })\n // // console.log('-------->', Array.from(element.attributes), element.getAttribute('dr-attr'), obj)\n // }\n // // element.setAttribute('dr-event-click', 'console.log(11)');\n // const targetElementIs = element.getAttribute(RawSet.DR_REPLACE_TARGET_ELEMENT_IS_NAME);\n // const targetElementNames = config.targetElements?.map(it => it.name.toLowerCase()) ?? [];\n // const isElement =\n // targetElementNames.includes(element.tagName.toLowerCase()) ||\n // targetElementNames.includes(targetElementIs?.toLowerCase() as any);\n // // if (isElement) {\n // // (element as HTMLElement).style.display = 'none';\n // // (element as HTMLElement).style.width = '100px';\n // // (element as HTMLElement).style.height = '100px';\n // // console.log((element as HTMLElement).outerHTML)\n // // }\n // // console.log('------targetElementIstargetElementIs>', targetElementNames, '---', isElement, targetElementIs);\n // // const targetAttrNames = (config.targetAttrs?.map(it => it.name) ?? []).concat([...RawSet.DR_ATTRIBUTES,...EventManager.RAWSET_CHECK_ATTRIBUTE]);\n // const targetAttrNames = (config.targetAttrs?.map(it => it.name) ?? []).concat([...RawSet.DR_ATTRIBUTES]);\n // const normalAttrs = new Map<string, string>();\n // const linkVariables = new Map<string, string>();\n // const linkNames = EventManager.linkAttrs.map(it => it.name);\n // const isAttr =\n // element.getAttributeNames().filter(it => {\n // const value = element.getAttribute(it);\n //\n // // link\uC77C\uB54C\n // if (value && linkNames.includes(it)) {\n // linkVariables.set(it, value);\n // } else if (value && RawSet.isExpression(value)) {\n // // \uD45C\uD604\uC2DD\uC788\uC744\uB584\n // let variablePath: string = RawSet.expressionGroups(value)[0][1];\n // // console.log('0-----',variablePath, node);\n // // normal Attribute \uCD08\uBC18\uC5D0 \uC14B\uD305\uD574\uC8FC\uAE30.\n // // TODO: \uC774\uAC70 \uD558\uAE34\uD588\uB294\uB370 \uC0AC\uC774\uB4DC \uC774\uD329\uD2B8?\n // const originVariable = variablePath;\n // variablePath = variablePath.replace(/#[^#]*#/g, '({})');\n // // console.log('1-----',variablePath, node);\n // const optionalChainPath = ObjectUtils.Path.toOptionalChainPath(variablePath);\n // // console.log('2-----',optionalChainPath);\n // const cval = ObjectUtils.Script.evaluateReturn(optionalChainPath, Object.assign(obj));\n // // const cval = ScriptUtils.evalReturn(variablePath, Object.assign(obj));\n // if (cval === null) {\n // element.removeAttribute(it);\n // } else {\n // element.setAttribute(it, cval);\n // }\n // normalAttrs.set(it, originVariable);\n // // console.log('normalAttribute', it, variablePath);\n // }\n // // console.log(element.getAttribute(it), attrExpresion);\n // const isTargetAttr = targetAttrNames.includes(it.toLowerCase());\n // return isTargetAttr;\n // }).length > 0;\n //\n // if (linkVariables.size) {\n // element.setAttribute(\n // EventManager.linkTargetMapAttrName,\n // JSON.stringify(Array.from(linkVariables.entries()))\n // );\n // }\n // // \uAE30\uBCF8 attribute\uB97C \uCC98\uB9AC\uD558\uAE30\uC704\uD574\n // if (normalAttrs.size) {\n // element.setAttribute(EventManager.normalAttrMapAttrName, JSON.stringify(Array.from(normalAttrs.entries())));\n // }\n // // if (isElement) {\n // // element.setAttribute('www', '@this@');\n // // }\n // const r = isAttr || isElement ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_REJECT;\n // console.log('acceptNodeReturn element', r);\n // return r;\n // }\n // console.log('acceptNodeReturn nothing', NodeFilter.FILTER_REJECT);\n // return NodeFilter.FILTER_REJECT;\n // }\n // });\n const pars: RawSet[] = [];\n let currentNode: Node | null;\n const name = RandomUtils.uuid();\n // console.log('name==', name);\n // eslint-disable-next-line no-cond-assign\n // while ((currentNode = nodeIterator?.nextNode())) {\n // console.log('findNodes~~', findNodes);\n for (const currentNode of findNodes) {\n // \uC5EC\uAE30\uC5D0\uC11C \uBD80\uBAA8\uC778\uAC70 \uC778\uC9C0\uC2DC\uCF1C\uC900\uB2E4 \uC704\uCABD \uC5D0\uC11C \uB2E4\uC2DC\uCC3E\uC744\uB584 \uAC78\uB7EC\uC9C4\uB2E4.. JSDOM ..\uC774\uB188\uC774 \uC989\uAC01\uC801\uC778 \uCC98\uB9AC\uB97C \uBABB\uD574\uC918\uC11C \uC218\uB3D9 \uAC80\uC99D \uB85C\uC9C1 \uB123\uC5C8\uB2E4.\n processedNodes.add(currentNode);\n // console.log('currentNode!!!!', currentNode);\n if (currentNode.nodeType === Node.TEXT_NODE) {\n const text = (currentNode as Text).textContent ?? '';\n const template = config.window.document?.createElement('template');\n if (!template) break;\n // const a = StringUtils.regexExec(/\\$\\{.*?\\}/g, text);\n // const a = StringUtils.regexExec(/[$#]\\{.*?\\}/g, text);\n // const a = StringUtils.betweenRegexpStr('[$#]\\\\{', '\\\\}', text); // <--TODO: \uB098\uC911\uC5D0..\n const groups = RawSet.expressionGroups(text);\n const map = groups.map(it => ({\n uuid: `${RandomUtils.alphabet(40)}_${obj?.constructor?.name}`,\n content: it[0],\n regexArr: it\n }));\n // console.log('create!!',map);\n let lasterIndex = 0;\n for (let i = 0; i < map.length; i++) {\n const it = map[i];\n // console.log('itttttttttttt', it);\n const regexArr = it.regexArr;\n // \uC911\uC694: text\uACBD\uC6B0 asdasd ${this.name}$ \uC774\uB807\uAC8C \uC788\uB2E4\uBA74 \uC55E\uBD80\uBD84 asdasd <-- \uC774\uBD80\uBD84\uC740 \uC0B4\uB824\uC57C\uB418\uB2C8\uAE50 \uC544\uB798\uCC98\uB7FC \uC9DC\uB984\n const preparedText = regexArr.input.substring(lasterIndex, regexArr.index);\n // const preparedText = regexArr[1];\n // const start = config.window.document.createElement('meta');\n // start.setAttribute('id', `${it.uuid}-start`);\n // const end = config.window.document.createElement('meta');\n // end.setAttribute('id', `${it.uuid}-end`);\n let type: RawSetType;\n if (currentNode.parentNode && currentNode.parentNode.nodeName.toUpperCase() === 'STYLE') {\n type = RawSetType.STYLE_TEXT;\n } else {\n type = RawSetType.TEXT;\n }\n const node = config.window.document.createTextNode(preparedText);\n const startEndPoint = RawSet.createStartEndPoint({ id: it.uuid, type }, config);\n // layout setting\n // console.log('createTextNode', node);\n template.content.append(node); // expression \uC55E \uBD80\uBD84 \uB123\uC5B4\uC918\uC57C \uC55E\uBD80\uBD84 \uC77C\uBC18 text \uC548\uC9E4\uB9B0\uB2E4.\n template.content.append(startEndPoint.start); // add start checkpoint\n template.content.append(startEndPoint.end); // add end checkpoint\n\n // content \uC548\uCABD RawSet render \uD560\uB54C start \uC640 end \uC0AC\uC774\uC5D0 fragment \uC5F0\uC0B0\uD574\uC11C \uB4E4\uC5B4\uAC04\uB2E4.\n const fragment = config.window.document.createDocumentFragment();\n fragment.append(config.window.document.createTextNode(it.content));\n // (startEndPoint.start as any).khh = RandomUtils.decimal(0,10)\n pars.push(\n new RawSet(\n it.uuid,\n type,\n {\n start: startEndPoint.start,\n node: currentNode,\n end: startEndPoint.end,\n parent: currentNode.parentNode\n // thisVariableName: thisVariableName\n },\n { fragment: fragment, config: config }\n )\n );\n lasterIndex = regexArr.index + it.content.length;\n }\n template.content.append(config.window.document.createTextNode(text.substring(lasterIndex, text.length)));\n currentNode?.parentNode?.replaceChild(template.content, currentNode); // <-- \uC5EC\uAE30\uC11C text\uB97C fragment\uB85C replace\uD588\uAE30\uB54C\uBB38\uC5D0 \uCD94\uC801 \uBCC0\uACBD\uC774 \uAC00\uB2A5\uD558\uB2E4.\n } else if (currentNode.nodeType === Node.ELEMENT_NODE) {\n // const uuid = `${RandomUtils.alphabet(40)}___${obj?.constructor?.name}`;\n const uuid = `${RandomUtils.alphabet(40)}`;\n const element = currentNode as Element;\n // console.log('create ElementTarget', uuid, element.outerHTML);\n const fragment = config.window.document.createDocumentFragment();\n const elementType: RawSetType = RawSetType.TARGET_ELEMENT;\n const startEndPoint = RawSet.createStartEndPoint({ node: element, id: uuid, type: elementType }, config);\n // \uC5EC\uAE30\uC11C \uB4F1\uB85D\uD55C component \uCD94\uAC00\uD55C\uB2E4.\n const targetElementIs = element.getAttribute(RawSet.DR_REPLACE_TARGET_ELEMENT_IS_NAME);\n const targetElementNames = config.targetElements?.map(it => it.name.toLowerCase()) ?? [];\n const isElement =\n targetElementNames.includes(element.tagName.toLowerCase()) ||\n targetElementNames.includes(targetElementIs?.toLowerCase() as any);\n // if (isElement) {\n // (element as HTMLElement).style.display = 'none'\n // }\n // const isElement = targetElementNames.includes(element.tagName.toLowerCase());\n const targetAttrNames = (config.targetAttrs?.map(it => it.name) ?? []).concat(RawSet.DR_ATTRIBUTES);\n const isAttr = element.getAttributeNames().filter(it => targetAttrNames.includes(it.toLowerCase())).length > 0;\n currentNode?.parentNode?.insertBefore(startEndPoint.start, currentNode);\n currentNode?.parentNode?.insertBefore(startEndPoint.end, currentNode.nextSibling);\n fragment.append(currentNode);\n // const tempDiv = document.createElement('div');\n // tempDiv.appendChild(fragment.cloneNode(true)); // fragment \uBCF5\uC0AC\uBCF8 \uCD94\uAC00\n // console.log('------',tempDiv.innerHTML);\n // console.log();\n const rawSet = new RawSet(\n uuid,\n isElement ? elementType : isAttr ? RawSetType.TARGET_ATTR : RawSetType.UNKOWN,\n {\n start: startEndPoint.start,\n node: currentNode,\n end: startEndPoint.end,\n parent: currentNode.parentNode\n // thisVariableName: thisVariableName\n },\n { config: config, fragment: fragment }\n );\n pars.push(rawSet);\n }\n }\n // config\n const util = ElementUtils;\n // console.log('parsparsparsparsparsparsparsparsparspars', pars, name);\n return pars;\n // const lastpars: RawSet[] = []\n //\n // pars.forEach(it => {\n // // it.uuid\n // const parents = pars.filter(it => it.dataSet.fragment.getElementById(it.uuid+'-start'))\n //\n // console.log('vvvvvvvvv', parents);\n // if (parents.length>0) {\n // parents.forEach(sit => {\n // sit.dataSet.fragment.getElementById(sit.uuid + '-start')?.replaceWith(it.dataSet.fragment);\n // it.dataSet.fragment.getElementById(sit.uuid + '-end').remove();\n // console.log('rrr');\n // // ElementUtils.toInnerHTML(it.dataSet.fragment, {document: config.window.document});\n // // ElementUtils.toInnerHTML(it.dataSet.fragment\n // });\n // } else {\n // lastpars.push(it)\n // }\n // })\n // console.log('zzzzzz', lastpars);\n // return lastpars;\n }\n\n public static createStartEndPoint(data: { node?: Node; id: string; type: RawSetType }, config: DomRenderConfig) {\n if (data.type === RawSetType.TARGET_ELEMENT && data.node) {\n const element = data.node as Element;\n const start: HTMLMetaElement = config.window.document.createElement('meta');\n const end: HTMLMetaElement = config.window.document.createElement('meta');\n start.setAttribute('id', `${data.id}-start`);\n start.setAttribute('dr-start-point', '');\n const keys = element.getAttribute(RawSet.DR_KEY_OPTIONNAME);\n const thisPropertyType = element.getAttribute(RawSet.DR_THIS_PROPERTY_NAME);\n if (thisPropertyType) {\n start.setAttribute('type', RawSetOperatorType.DR_THIS_PROPERTY);\n }\n if (keys) {\n element.removeAttribute(RawSet.DR_KEY_OPTIONNAME);\n start.setAttribute(RawSet.DR_KEY_OPTIONNAME, keys);\n }\n end.setAttribute('id', `${data.id}-end`);\n end.setAttribute('dr-end-point', '');\n return { start, end };\n } else if (data.type === RawSetType.STYLE_TEXT) {\n return {\n start: config.window.document.createTextNode(`/*start text ${data.id}*/`),\n end: config.window.document.createTextNode(`/*end text ${data.id}*/`)\n };\n } else {\n // text\n return {\n start: config.window.document.createComment(`start text ${data.id}`),\n end: config.window.document.createComment(`end text ${data.id}`)\n };\n }\n }\n\n public remove() {\n this.childAllRemove();\n this.point.end.remove();\n this.point.start.remove();\n }\n\n public childAllRemove() {\n let next = this.point.start.nextSibling;\n while (next) {\n if (next === this.point.end) {\n break;\n }\n next.remove();\n next = this.point.start.nextSibling;\n }\n }\n\n public childs(stopNext?: (node: Node) => boolean) {\n const childs: any[] = [];\n let next = this.point.start.nextSibling;\n while (next && next !== this.point.end) {\n if (stopNext?.(next)) {\n return;\n }\n childs.push(next);\n next = next.nextSibling;\n }\n return childs;\n }\n\n public getHasRawSet(key: string) {\n let rawSet: RawSet | undefined;\n this.childs(node => {\n const drKey = (node as Element).getAttribute?.(RawSet.DR_KEY_OPTIONNAME);\n if (drKey && drKey === key) {\n rawSet = (node as any).rawSet as RawSet;\n return true;\n }\n return false;\n });\n return rawSet;\n }\n\n public static drItOtherEncoding(element: Element | DocumentFragment, postFix?: string) {\n const random = RandomUtils.uuid() + postFix;\n const regex = /#it#/g;\n element\n .querySelectorAll(\n `[${RawSet.DR_IT_OPTIONNAME}], [${RawSet.DR_FOR_OF_NAME}], [${RawSet.DR_REPEAT_NAME}], [${RawSet.DR_APPENDER_NAME}]`\n )\n .forEach(it => {\n it.innerHTML = it.innerHTML.replace(regex, random);\n });\n return random;\n }\n\n public static drItOtherDecoding(element: Element | DocumentFragment, random: string) {\n element\n .querySelectorAll(\n `[${RawSet.DR_IT_OPTIONNAME}], [${RawSet.DR_FOR_OF_NAME}], [${RawSet.DR_REPEAT_NAME}], [${RawSet.DR_APPENDER_NAME}]`\n )\n .forEach(it => {\n it.innerHTML = it.innerHTML.replace(RegExp(random, 'g'), '#it#');\n });\n }\n\n public static drVarDecoding(\n element: Element,\n vars: { name: string; value: string; regex: RegExp; random: string }[]\n ) {\n element.querySelectorAll(`[${RawSet.DR_THIS_NAME}]`).forEach(it => {\n vars\n .filter(vit => vit.value && vit.name)\n .forEach(vit => {\n it.innerHTML = it.innerHTML.replace(RegExp(vit.random, 'g'), vit.value);\n });\n });\n }\n\n public static replaceInnerHTML(element: Element, config: { asIs: string | RegExp; toBe?: string }): string {\n const innerHTML = element.innerHTML;\n const tobe = (config.toBe = config.toBe ?? RandomUtils.uuid());\n if (config.asIs instanceof RegExp) {\n element.innerHTML = innerHTML.replace(config.asIs, config.toBe);\n } else {\n element.innerHTML = innerHTML.replaceAll(config.asIs, config.toBe);\n }\n return tobe;\n }\n\n public static drThisEncoding(element: Element, drThis: string, config: { asIs: RegExp; toBe?: string }): string {\n const thisRandom = (config.toBe = config?.toBe ?? RandomUtils.uuid());\n // const thisRegex = /(?<!(dr-|\\.))this(?=.?)/g;\n // const thisRegex = /[^(dr\\-)]this(?=.?)/g;\n // const thisRegex = /[^(dr\\-)]this\\./g;\n // safari \uB54C\uBB38\uC5D0 \uC804\uC704 \uAC80\uC0C9 regex\uAC00 \uC548\uB428 \uC544 \uC9DC\uC99D\uB098\uC11C \uC774\uAC78\uB85C\uD568.\n // element.querySelectorAll(`[${RawSet.DR_PRE_NAME}]`).forEach(it => {\n // let message = it.innerHTML;\n // })\n element.querySelectorAll(`[${RawSet.DR_PRE_NAME}]`).forEach(it => {\n it.innerHTML = it.innerHTML.replace(config.asIs, thisRandom);\n });\n element.querySelectorAll(`[${RawSet.DR_THIS_NAME}]`).forEach(it => {\n // console.log('rrrrrrrrand?', drThis,config);\n let message = it.innerHTML;\n // StringUtils.regexExec(/([^(dr\\-)])?this(?=.?)/g, message).reverse().forEach(it => {\n StringUtils.regexExec(config.asIs, message)\n .reverse()\n .forEach(it => {\n message = message.substr(0, it.index) + message.substr(it.index).replace(it[0], `${it[1] ?? ''}${drThis}`);\n });\n it.innerHTML = message;\n });\n\n // console.log('changggg', element.innerHTML);\n let message = element.innerHTML;\n StringUtils.regexExec(config.asIs, message)\n .reverse()\n .forEach(it => {\n message = message.substr(0, it.index) + message.substr(it.index).replace(it[0], `${it[1] ?? ''}${drThis}`);\n });\n element.innerHTML = message;\n return thisRandom;\n }\n\n public static drThisBindEncoding(\n element: Element,\n variable: RegExp,\n config: { config: DomRenderConfig; otherReplaceVariablePath?: string }\n ) {\n element.querySelectorAll(`[${RawSet.DR_THIS_NAME}]`).forEach(eIt => {\n let message = eIt.innerHTML;\n // StringUtils.regexExec(/([^(dr\\-)])?this(?=.?)/g, message).reverse().forEach(it => {\n StringUtils.regexExec(variable, message)\n .reverse()\n .forEach(it => {\n message =\n message.substr(0, it.index) +\n message.substr(it.index).replace(it[0], `${it[1] ?? ''}${eIt.getAttribute(RawSet.DR_THIS_NAME)}`);\n });\n eIt.innerHTML = message;\n });\n\n const targetElements = config.config.targetElements ?? [];\n const targetElementNames = targetElements\n .map(it => it.name.replaceAll('.', '\\\\.').replaceAll(':', '\\\\:'))\n .join(',');\n const thisRandom = RandomUtils.uuid();\n element.querySelectorAll(targetElementNames).forEach(it => {\n it.innerHTML = it.innerHTML.replace(variable, thisRandom);\n });\n\n element.querySelectorAll(`[${RawSet.DR_REPLACE_TARGET_ELEMENT_IS_NAME}]`).forEach(it => {\n it.innerHTML = it.innerHTML.replace(variable, thisRandom);\n });\n\n if (config.otherReplaceVariablePath) {\n let message = element.innerHTML;\n StringUtils.regexExec(variable, message)\n .reverse()\n .forEach(it => {\n message =\n message.substr(0, it.index) +\n message.substr(it.index).replace(it[0], `${it[1] ?? ''}${config.otherReplaceVariablePath}`);\n });\n element.innerHTML = message;\n }\n return thisRandom;\n }\n\n public static drThisBindDecoding(element: Element, config: { asIs: string; toBe: string; config: DomRenderConfig }) {\n const targetElements = config.config.targetElements ?? [];\n const targetElementNames = targetElements\n .map(it => it.name.replaceAll('.', '\\\\.').replaceAll(':', '\\\\:'))\n .join(',');\n element.querySelectorAll(targetElementNames).forEach(it => {\n it.innerHTML = it.innerHTML.replace(RegExp(config.asIs, 'g'), config.toBe);\n });\n element.querySelectorAll(`[${RawSet.DR_REPLACE_TARGET_ELEMENT_IS_NAME}]`).forEach(it => {\n it.innerHTML = it.innerHTML.replace(RegExp(config.asIs, 'g'), config.toBe);\n });\n }\n\n public static drThisDecoding(element: Element, config: { asIs: string; toBe: string }) {\n element.querySelectorAll(`[${RawSet.DR_PRE_NAME}]`).forEach(it => {\n it.innerHTML = it.innerHTML.replace(RegExp(config.asIs, 'g'), config.toBe);\n });\n element.querySelectorAll(`[${RawSet.DR_THIS_NAME}]`).forEach(it => {\n it.innerHTML = it.innerHTML.replace(RegExp(config.asIs, 'g'), config.toBe);\n });\n }\n\n public static drFormOtherMoveAttr(element: Element, as: string, to: string, config: DomRenderConfig) {\n element.querySelectorAll(`[${RawSet.DR_FORM_NAME}]`).forEach(subElement => {\n const nodeIterator = config.window.document?.createNodeIterator(subElement, NodeFilter.SHOW_ELEMENT, {\n acceptNode(node) {\n if (node.nodeType === Node.ELEMENT_NODE) {\n const element = node as Element;\n return element.hasAttribute(as) ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_REJECT;\n } else {\n return NodeFilter.FILTER_REJECT;\n }\n }\n });\n\n let node;\n // eslint-disable-next-line no-cond-assign\n while ((node = nodeIterator?.nextNode())) {\n const element = node as Element;\n element.setAttribute(to, element.getAttribute(as) ?? '');\n element.removeAttribute(as);\n }\n });\n }\n\n public static drVarEncoding(element: Element, drVarOption: string) {\n const vars = (drVarOption?.split(',') ?? []).map(it => {\n const s = it.trim().split('=');\n const name = s[0]?.trim();\n const value = s[1]?.trim();\n return {\n name,\n value,\n // regex: RegExp('(?<!(dr-|\\\\.))var\\\\.' + s[0] + '(?=.?)', 'g'),\n regex: RegExp('\\\\$var\\\\.' + name + '(?=.?)', 'g'),\n random: RandomUtils.uuid()\n };\n });\n // console.log('asd', element.innerHTML);\n // element.querySelectorAll(`[${RawSet.DR_THIS_NAME}]`).forEach(it => {\n element.querySelectorAll(`[${RawSet.DR_VAR_OPTIONNAME}]`).forEach(it => {\n vars\n .filter(vit => vit.value && vit.name)\n .forEach(vit => {\n it.innerHTML = it.innerHTML.replace(vit.regex, vit.random);\n });\n });\n vars\n .filter(vit => vit.value && vit.name)\n .forEach(vit => {\n element.innerHTML = element.innerHTML.replace(vit.regex, vit.value);\n });\n return vars;\n }\n\n public static async drThisCreate(\n rawSet: RawSet,\n element: Element,\n drThis: string,\n drVarOption: string,\n drStripOption: boolean | string | null,\n obj: any,\n config: DomRenderConfig,\n set?: ComponentSet\n ): Promise<DocumentFragment | undefined> {\n // console.log('ttttttttttttttttttttt',element.innerHTML, drThis, set, obj);\n const fag = config.window.document?.createDocumentFragment();\n if (!fag) {\n return;\n }\n const targetElement = element.cloneNode(true) as Element;\n let targetObj = obj;\n if (set) {\n targetObj = set.obj;\n set.setTemplateStyle(await RawSet.fetchTemplateStyle(set));\n const style = RawSet.generateStyleTransform(set.styles ?? [], rawSet.uuid, true);\n targetElement.innerHTML = style + (set.template ?? '');\n } else {\n targetObj = ObjectUtils.Script.evaluateReturn(ObjectUtils.Path.toOptionalChainPath(drThis), obj);\n }\n\n const componentKey = rawSet.uuid;\n const renderScript = ` /*drThisCreate*/\n // console.log('-----', this.__render);\n var ${EventManager.RENDER_VARNAME} = this.__render; \n var ${EventManager.RAWSET_VARNAME} = this.__render.rawSet; \n var ${EventManager.COMPONENT_VARNAME} = this.__render.component; \n var ${EventManager.ELEMENT_VARNAME} = this.__render.element; \n var ${EventManager.ROUTER_VARNAME} = this.__render.router; \n var ${EventManager.INNER_HTML_VARNAME} = this.__render.innerHTML; \n var ${EventManager.ATTRIBUTE_VARNAME} = this.__render.attribute; \n var ${EventManager.PARENT_THIS_PATH_VARNAME} = this.__render.parentThisPath; \n var ${EventManager.CURRENT_THIS_VARNAME} = this.__render.currentThis; \n var ${EventManager.CURRENT_THIS_PATH_VARNAME} = this.__render.currentThisPath; \n var ${EventManager.PARENT_THIS_VARNAME} = this.__render.parentThis; \n var ${EventManager.NEAR_THIS_PATH_VARNAME} = this.__render.nearThisPath; \n var ${EventManager.NEAR_THIS_VARNAME} = this.__render.nearThis; \n var ${EventManager.CREATOR_META_DATA_VARNAME} = this.__render.creatorMetaData;\n `;\n\n const parentThisPath = rawSet.findParentThisPath();\n const parentThis = rawSet.findParentThis(obj);\n const nearThisPath = rawSet.findNearThisPath();\n const nearThis = rawSet.findNearThis(obj);\n // console.log('ttttttttttttttttt',parentThisPath, parentThis, nearThisPath, nearThis);\n // console.log('-element.innerHTMLelement.innerHTMLelement.innerHTML',element.innerHTML);\n let render = {\n renderScript: renderScript,\n element: element,\n getElement: () => config.window.document.querySelector(`[class*=\"${rawSet.uuid}\"]`),\n innerHTML: element.innerHTML,\n // attribute: ObjectUtils.toDeleteKey(attribute, [...Object.values(RawSet.drAttrsOriginName), ...Object.values(EventManager.VARNAMES)]),\n rawSet: rawSet,\n router: config.router,\n componentKey: componentKey,\n currentThis: targetObj,\n currentThisPath: drThis,\n parentThisPath: parentThisPath,\n parentThis: parentThis,\n nearThisPath: nearThisPath,\n nearThis: nearThis,\n scripts: EventManager.setBindProperty(config.scripts ?? {}, obj)\n } as Render;\n // const attribute = DomUtils.getAttributeToObject(element);\n render.attribute = RawSet.getAttributeObject(element, { script: renderScript, obj: obj, renderData: render });\n render = Object.freeze(render);\n\n // dr-on-create data onCreateRender\n const onCreateDataScript = `return {rootParent: this, render: this.__render}`;\n const onCreateDataParam = ObjectUtils.Script.evaluate<OnCreateRenderDataParams>(\n onCreateDataScript,\n Object.assign(obj, { __render: render })\n );\n if (isOnCreateRenderData(targetObj)) {\n targetObj?.onCreateRenderData(onCreateDataParam as OnCreateRenderDataParams);\n }\n // \uBD80\uBAA8\uC5D0\uAC8C\uB3C4 \uC790\uC2DD this \uC0DD\uC131\uB41C\uAC70 \uC54C\uB824\uC8FC\uB294 callback\n if (onCreateDataParam?.render?.parentThis && isOnCreatedThisChild(onCreateDataParam?.render?.parentThis)) {\n onCreateDataParam.render.parentThis.onCreatedThisChild(targetObj, onCreateDataParam as OnCreateRenderDataParams);\n }\n\n // dr-on-create onCreateRender\n const onCreate = element.getAttribute(RawSet.DR_ON_CREATE_ARGUMENTS_OPTIONNAME);\n let createParam: any[] = [];\n if (onCreate) {\n createParam = ObjectUtils.Script.evaluateReturn<any[]>(\n { bodyScript: renderScript, returnScript: ObjectUtils.Path.toOptionalChainPath(onCreate) },\n obj\n );\n if (!Array.isArray(createParam)) {\n createParam = [createParam];\n }\n }\n\n if (isOnCreateRender(targetObj)) {\n targetObj.onCreateRender(...createParam);\n }\n\n // console.log('\uB9E4\uBC88\uD0C0\uB098?');\n // \uC911\uC694 dr-normal-attr-map\n // const normalAttrMap = element.getAttribute(EventManager.normalAttrMapAttrName);\n const targetAttrObject = RawSet.getAttributeObject(element, { script: renderScript, obj: obj, renderData: render });\n if (targetAttrObject) {\n rawSet.dataSet.render ??= {};\n rawSet.dataSet.render.attribute = targetAttrObject;\n Object.entries(targetAttrObject).forEach(([key, cval], index) => {\n // console.log('ooooooooooooooooo', key, cval);\n // const script = `${renderScript} return ${value} `;\n // const cval = ScriptUtils.eval(script, Object.assign(obj, { __render: render }));\n // // element.setAttribute(key, cval);\n if (isOnChangeAttrRender(targetObj)) {\n targetObj.onChangeAttrRender(key, cval, { rawSet: rawSet });\n }\n });\n }\n\n // dr-on-component-init\n // const oninit = element.getAttribute(`${EventManager.attrPrefix}on-component-init`); // dr-on-component-init\n const oninit = element.getAttribute(RawSet.DR_ON_CREATED_CALLBACK_OPTIONNAME); // dr-on-component-init\n // console.log('--------drThisCreate!!!', oninit)\n if (oninit) {\n const script = `${renderScript} ${oninit} `;\n ObjectUtils.Script.evaluate(script, Object.assign(obj, { __render: render }));\n }\n\n targetElement.querySelectorAll(EventManager.attrNames.map(it => `[${it}]`).join(',')).forEach(it => {\n it.setAttribute(EventManager.ownerVariablePathAttrName, 'this');\n });\n\n // console.log('targetElement',targetElement);\n // attribute\n // const componentName = element.getAttribute(RawSet.DR_COMPONENT_NAME_OPTIONNAME) ?? 'component';\n const componentNameReplaceKey = RandomUtils.uuid();\n // if (componentName) {\n // RawSet.replaceInnerHTML(element, {asIs: `#${componentName}#`, toBe: 'this'})\n // }\n // const innerHTMLName = element.getAttribute(RawSet.DR_COMPONENT_INNER_HTML_NAME_OPTIONNAME) ?? 'innerHTML';\n // const innerHTMLNameReplaceKey = RandomUtils.uuid();\n // if (innerHTMLName) {\n // RawSet.replaceInnerHTML(element, {asIs: `#${innerHTMLName}#`, toBe: innerHTMLNameReplaceKey})\n // }\n\n rawSet.point.innerHTML = element.innerHTML;\n // \uC774\uAC78 \uC65C \uBE90\uC5C8\uC9C0... \uB2E4\uC2DC\uB123\uC5C8\uC74C \uADF8\uB7F0\uB370 \uC870\uAE08 \uB85C\uC9C1\uC774.. \uAC80\uC99D\uC774..\n const innerHTMLName = targetElement.getAttribute(RawSet.DR_COMPONENT_INNER_HTML_NAME_OPTIONNAME) ?? 'innerHTML';\n if (innerHTMLName) {\n // console.log('---------', element.innerHTML);\n RawSet.replaceInnerHTML(targetElement, { asIs: `#${innerHTMLName}#`, toBe: element.innerHTML });\n }\n\n // console.log('aa-asIs', targetElement.innerHTML);\n const optionThisName = targetElement.getAttribute(RawSet.DR_THIS_NAME_OPTIONNAME);\n // console.log('11111111111111', optionThisName)\n targetElement\n .getAttributeNames()\n .forEach(it => targetElement.setAttribute(it, targetElement.getAttribute(it)!.replace(/#this#/g, drThis)));\n const thisRandom = this.drThisEncoding(targetElement, drThis, { asIs: /@this@/g });\n // console.log('@@@@@@@@@@@@@0', targetElement.innerHTML);\n // let thisNameRandom: string | undefined = undefined;\n if (optionThisName) {\n // console.log('-----0', element.innerHTML, '\\n', targetElement.innerHTML)\n targetElement.innerHTML = targetElement.innerHTML.replaceAll(`@${optionThisName}@`, drThis);\n // console.log('-----1', element.innerHTML, '\\n', targetElement.innerHTML)\n // thisNameRandom = this.drThisBindEncoding(targetElement, new RegExp(`@${optionThisName}@`, 'g'), {config: config, otherReplaceVariablePath: drThis});\n }\n const nearThisRandom = this.drThisBindEncoding(targetElement, /@nearThis@/g, {\n config: config,\n otherReplaceVariablePath: rawSet.findNearThisPath()\n });\n const parentThisRandom = this.drThisBindEncoding(targetElement, /@parentThis@/g, {\n config: config,\n otherReplaceVariablePath: rawSet.findParentThisPath()\n });\n // console.log('@@@@@@@@@@@@@1', targetElement.innerHTML, rawSet.findParentThisPath());\n // console.log('@@@@@@@@@@@@@-----------', rawSet.point?.parentRawSet?.point?.start, rawSet.point?.parentRawSet?.point?.start instanceof HTMLMetaElement);\n // if (rawSet.point?.parentRawSet?.point?.start instanceof HTMLMetaElement) {\n // console.log('@@@@@@@@@@@@@-----------', rawSet.point?.parentRawSet?.point?.start.getAttribute('this-path'));\n // }\n // console.log('@@@@@@@@@@@@@2', targetElement.innerHTML);\n // const nearThisRandom = this.drThisEncoding(targetElement, rawSet.findNearThisPath(), {asIs: /@nearThis@/g});\n // const parentThisRandom = this.drThisEncoding(targetElement, rawSet.findParentThisPath(), {asIs: /@parentThis@/g});\n // console.log('aa-toBe', targetElement.innerHTML);\n // console.log('------', rawSet.findNearThisPath());\n // console.log('------', rawSet.findParentThisPath());\n const vars = this.drVarEncoding(targetElement, drVarOption);\n this.drVarDecoding(targetElement, vars);\n this.drThisDecoding(targetElement, { asIs: thisRandom, toBe: '@this@' });\n // if (optionThisName && thisNameRandom)\n // this.drThisBindDecoding(targetElement, {config: config, asIs: thisNameRandom, toBe: `@${optionThisName}@`});\n this.drThisBindDecoding(targetElement, { config: config, asIs: nearThisRandom, toBe: '@nearThis@' });\n this.drThisBindDecoding(targetElement, { config: config, asIs: parentThisRandom, toBe: '@parentThis@' });\n // if (componentName) {\n // RawSet.replaceInnerHTML(element, {asIs: componentNameReplaceKey, toBe: `#${componentName}#`})\n // }\n // if (innerHTMLName) {\n // RawSet.replaceInnerHTML(targetElement, {asIs: innerHTMLNameReplaceKey, toBe: `#${innerHTMLName}#`})\n // }\n // console.log('ddddddddddddd', targetElement.innerHTML);\n if (drStripOption && (drStripOption === true || drStripOption === 'true')) {\n // console.log('------childNodes', Array.from(n.childNodes))\n Array.from(targetElement.childNodes).forEach(it => fag.append(it));\n } else {\n targetElement.classList.add(`${rawSet.uuid}`);\n fag.append(targetElement);\n }\n // (fag as any).__domrender_this_variable_name = drThis;\n // console.log('set __domrender_this_variable_name', (fag as any).__domrender_this_variable_name)\n return fag;\n }\n\n private static async fetchTemplateStyle(set: { template?: string; styles?: string | string[] }) {\n // const id = RandomUtils.getRandomString(20);\n const stylePromises: Promise<string>[] = [];\n const templatePromise =\n set.template && set.template.startsWith('lazy://')\n ? (await fetch(set.template.substring(6))).text()\n : Promise.resolve(set.template);\n if (Array.isArray(set.styles)) {\n for (let i = 0; set.styles && i < (set.styles.length ?? 0); i++) {\n const it = set.styles[i];\n stylePromises.push(it.startsWith('lazy://') ? (await fetch(it.substring(6))).text() : Promise.resolve(it));\n }\n } else if (set.styles) {\n stylePromises.push(Promise.resolve(set.styles));\n }\n // const tempTemplate = config.window.document.createElement('template');\n // tempTemplate.innerHTML = await templatePromise;\n // const tempContainer = config.window.document.createElement('div');\n return {\n template: await templatePromise,\n styles: await Promise.all(stylePromises)\n };\n }\n\n public static createComponentTargetAttribute(\n name: string,\n getThisObj: (element: Element, attrValue: string, obj: any, rawSet: RawSet) => any,\n factory: (element: Element, attrValue: string, obj: any, rawSet: RawSet) => DocumentFragment\n ) {\n const targetAttribute: TargetAttr = {\n name,\n callBack(element: Element, attrValue: string, obj: any, rawSet: RawSet): DocumentFragment {\n const thisObj = getThisObj(element, attrValue, obj, rawSet);\n const data = factory(element, attrValue, obj, rawSet);\n // rawSet.point.thisVariableName = (data as any).__domrender_this_variable_name;\n if (thisObj) {\n // const i = thisObj.__domrender_component_new = (thisObj.__domrender_component_new ?? new Proxy({}, new DomRenderFinalProxy())) as CreatorMetaData;\n // i.thisVariableName = rawSet.point.thisVariableName;\n // i.rawSet = rawSet;\n // i.innerHTML = element.innerHTML;\n // i.rootCreator = new Proxy(obj, new DomRenderFinalProxy());\n // i.creator = new Proxy(rawSet.point.thisVariableName ? ScriptUtils.evalReturn(rawSet.point.thisVariableName, obj) : obj, new DomRenderFinalProxy());\n }\n return data;\n }\n };\n return targetAttribute;\n }\n\n public static createComponentTargetElement({\n name,\n objFactory,\n template = '',\n styles = [],\n noStrip\n }: {\n name: string;\n noStrip?: boolean;\n objFactory: (element: Element, obj: any, rawSet: RawSet, counstructorParam: any[]) => any;\n template?: string;\n styles?: string | string[];\n }): TargetElement {\n const targetElement: TargetElement = {\n name,\n styles,\n template,\n noStrip,\n async callBack(\n element: Element,\n obj: any,\n rawSet: RawSet,\n attrs: Attrs,\n config: DomRenderConfig\n ): Promise<DocumentFragment | undefined> {\n const templateStyle = await RawSet.fetchTemplateStyle({ template: this.template, styles: this.styles });\n this.template = templateStyle.template;\n this.styles = templateStyle.styles;\n obj.__domrender_components ??= {};\n const domrenderComponents = obj.__domrender_components;\n // debugger;\n const renderScript = ` /*createComponentTargetElement*/\n // console.log('-------------------',this.__render);\n var ${EventManager.RAWSET_VARNAME} = this.__render.rawSet; \n var ${EventManager.COMPONENT_VARNAME} = this.__render.component; \n var ${EventManager.ELEMENT_VARNAME} = this.__render.element; \n var ${EventManager.ROUTER_VARNAME} = this.__render.router; \n var ${EventManager.INNER_HTML_VARNAME} = this.__render.innerHTML; \n var ${EventManager.ATTRIBUTE_VARNAME} = this.__render.attribute; \n var ${EventManager.PARENT_THIS_PATH_VARNAME} = this.__render.parentThisPath; \n var ${EventManager.PARENT_THIS_VARNAME} = this.__render.parentThis; \n var ${EventManager.NEAR_THIS_PATH_VARNAME} = this.__render.nearThisPath; \n var ${EventManager.NEAR_THIS_VARNAME} = this.__render.nearThis; \n var ${EventManager.CREATOR_META_DATA_VARNAME} = this.__render.creatorMetaData;\n `;\n const parentThisPath = rawSet.findParentThisPath();\n const parentThis = rawSet.findParentThis(obj);\n const nearThisPath = rawSet.findNearThisPath();\n const nearThis = rawSet.findNearThis(obj);\n let render = {\n renderScript,\n element: element,\n innerHTML: element.innerHTML,\n // attribute: attribute,\n getElement: () => config.window.document.querySelector(`[class*=\"${rawSet.uuid}\"]`),\n rawSet: rawSet,\n router: config.router,\n componentKey: rawSet.uuid,\n nearThisPath: nearThisPath,\n nearThis: nearThis,\n parentThisPath: parentThisPath,\n parentThis: parentThis,\n scripts: EventManager.setBindProperty(config.scripts ?? {}, obj)\n } as Render;\n const constructor = element.getAttribute(RawSet.DR_ON_CONSTRUCTOR_ARGUMENTS_OPTIONNAME);\n let constructorParam = [];\n // script \uBD80\uBD84\uC740 \uCC98\uB9AC\uB418\uC5B4 \uBC14\uC778\uB529 \uC2DC\uCF1C\uC900\uB2E4\n render.attribute = RawSet.getAttributeObject(element, { script: renderScript, obj: obj, renderData: render });\n render = Object.freeze(render);\n //\n // // dr-constructor\n if (constructor) {\n let param =\n ObjectUtils.Script.evaluateReturn(\n { bodyScript: renderScript, returnScript: ObjectUtils.Path.toOptionalChainPath(constructor) },\n Object.assign(obj, { __render: render })\n ) ?? [];\n if (!Array.isArray(param)) {\n param = [param];\n }\n constructorParam = param;\n }\n\n // // console.log('------22', attrs);\n const instance = (domrenderComponents[rawSet.uuid] = objFactory(element, obj, rawSet, constructorParam));\n render = {\n currentThis: instance,\n // creatorMetaData: i,\n ...render\n };\n rawSet.dataSet.render = render;\n // \uCD94\uC801 \uBC0F destroy \uC704\uD574.\n instance.__rawSet = rawSet;\n\n //\n // const i = instance.__domrender_component_new = (instance.__domrender_component_new ?? new Proxy({}, new DomRenderFinalProxy())) as CreatorMetaData;\n // i.thisVariableName = rawSet.point.thisVariableName;\n // i.thisFullVariableName = `this.__domrender_components.${componentKey}`;\n // i.componentKey = componentKey;\n // i.rawSet = rawSet;\n // i.attribute = attribute;\n // i.router = config.router;\n // i.scripts = render.scripts;\n // i.drAttrs = attrs;\n // i.innerHTML = element.innerHTML;\n // i.rootCreator = new Proxy(obj, new DomRenderFinalProxy());\n // i.creator = new Proxy(rawSet.point.thisVariableName ? ObjectUtils.Script.evalReturn(rawSet.point.thisVariableName, obj) : obj, new DomRenderFinalProxy());\n // this.__creatorMetaData = i;\n // render = {\n // component: instance,\n // creatorMetaData: i,\n // ...render\n // };\n //\n // // \uC911\uC694 dr-normal-attr-map\n // const normalAttrMap = element.getAttribute(EventManager.normalAttrMapAttrName);\n // if (isOnChangeAttrRender(instance) && normalAttrMap) {\n // new Map<string, string>(JSON.parse(normalAttrMap)).forEach((value, key) => {\n // const script = `${renderScript} return ${value} `;\n // const cval = ObjectUtils.Script.eval(script, Object.assign(obj, { __render: render }));\n // // element.setAttribute(key, cval);\n // instance.onChangeAttrRender(key, cval);\n // });\n // }\n //\n // // dr-on-create data\n // const onCreateDataScript = `return {rootParent: this, render: this.__render}`;\n // const onCreateDataParam = ObjectUtils.Script.eval(onCreateDataScript, Object.assign(obj, { __render: render }));\n // if (isOnCreateRenderData(instance)) {\n // instance?.onCreateRenderData(onCreateDataParam);\n // }\n //\n // // dr-on-create onCreateRender\n // const onCreate = element.getAttribute(RawSet.DR_ON_CREATE_ARGUMENTS_OPTIONNAME);\n // this.__render = render;\n // let createParam = [];\n // if (onCreate) {\n // const script = `${renderScript} return ${onCreate} `;\n // createParam = ObjectUtils.Script.eval(script, Object.assign(obj, { __render: render }));\n // if (!Array.isArray(createParam)) {\n // createParam = [createParam];\n // }\n // }\n // if (isOnCreateRender(instance)) {\n // instance?.onCreateRender?.(...createParam);\n // }\n let applayTemplate = element.innerHTML;\n let innerHTMLThisRandom;\n const componentName = element.getAttribute(RawSet.DR_COMPONENT_NAME_OPTIONNAME) ?? 'component';\n const innerHTMLName = element.getAttribute(RawSet.DR_COMPONENT_INNER_HTML_NAME_OPTIONNAME) ?? 'innerHTML';\n if (applayTemplate) {\n // if (rawSet.point.thisVariableName) {\n // \uB118\uC5B4\uC628 innerHTML\uC5D0 this\uAC00 \uC788\uC73C\uBA74 \uD574\uB2F9\uC548\uB418\uAC8C \uC6B0\uC120 \uCE58\uD658.\n innerHTMLThisRandom = RandomUtils.uuid();\n applayTemplate = applayTemplate.replace(/this\\./g, innerHTMLThisRandom);\n // }\n applayTemplate = applayTemplate.replace(RegExp(`#${componentName}#`, 'g'), 'this');\n }\n // applayTemplate = template.replace(RegExp(`#${innerHTMLName}#`, 'g'), applayTemplate);\n applayTemplate = (this.template ?? '').replace(RegExp(`#${innerHTMLName}#`, 'g'), applayTemplate);\n // dr-on-component-init\n // const oninit = element.getAttribute(`${EventManager.attrPrefix}on-component-init`); // dr-on-component-init\n // const oninit = element.getAttribute(RawSet.DR_ON_CREATED_CALLBACK_OPTIONNAME); // dr-on-component-init\n // if (oninit) {\n // const script = `${renderScript} ${oninit} `;\n // ObjectUtils.Script.eval(script, Object.assign(obj, {\n // __render: render\n // }));\n // }\n\n const style = RawSet.generateStyleTransform(this.styles, rawSet.uuid, true);\n element.innerHTML = style + (applayTemplate ?? '');\n\n // \uC5EC\uAE30\uC11C targetElement\uC758 \uC637\uC744 \uBC97\uAE34\uB2E4.\n // console.log('---createComponentTargetElement', element);\n let data = await RawSet.drThisCreate(\n rawSet,\n element,\n `this.__domrender_components.${rawSet.uuid}`,\n '',\n !noStrip,\n obj,\n config\n );\n // const tempDiv = document.createElement(\"div\");\n // tempDiv.appendChild(data.cloneNode(true)); // \uC6D0\uBCF8 \uBCF4\uC874\n // console.log('-------------ddddddddddddd', element.innerHTML, tempDiv.innerHTML);\n // let data = await RawSet.drThisCreate(rawSet, element, `this.__domrender_components.${componentKey}`, '', false, obj, config);\n\n // \uB118\uC5B4\uC628 innerHTML\uC5D0 this\uAC00 \uC788\uB294\uAC78 \uB2E4\uC2DC \uBCF5\uD638\uD654\uD574\uC11C \uC81C\uB300\uB85C \uC791\uB3D9\uD558\uB3C4\uB85D\uD55C\uB2E4. \uBD80\uBAA8\uC5D0\uC11C\uC758 this\uBA74 \uBD80\uBAA8\uAEC4\uB85C \uC791\uB3D9\uB418\uAC8C\n if (data && innerHTMLThisRandom) {\n const template = config.window.document.createElement('template') as HTMLTemplateElement;\n template.content.append(data);\n template.innerHTML = template.innerHTML.replace(RegExp(innerHTMLThisRandom, 'g'), 'this.');\n data = template.content;\n }\n // (data as any).render = render;\n return data;\n }\n // complete\n };\n return targetElement;\n }\n\n public static isExpression(data: string | null) {\n // const reg = /(?:[$#]\\{(?:(([$#]\\{)??[^$#]?[^{]*?)\\}[$#]))/g;\n const reg = /[$#]\\{([\\s\\S.]*?)\\}[$#]/g;\n return reg.test(data ?? '');\n }\n\n public static 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 public static destroy(\n obj: any | undefined,\n parameter: OnDestroyRenderParams,\n config: DomRenderConfig,\n destroyOptions: (DestroyOptionType | string)[] = []\n ): void {\n // console.log('destroy destroydestroydestroydestroy', obj, parameter, config, destroyOptions);\n if (!destroyOptions.some(it => it === DestroyOptionType.NO_DESTROY)) {\n if (!destroyOptions.some(it => it === DestroyOptionType.NO_MESSENGER_DESTROY)) {\n if (config.messenger && obj) {\n config.messenger.deleteChannelFromObj(obj);\n }\n }\n // console.log('------------destroy', obj);\n if (isOnDestroyRender(obj)) {\n obj.onDestroyRender?.(parameter);\n }\n }\n }\n\n public findNearThis = (obj: any, rawSet: RawSet = this) => {\n const path = this.findNearThisPath(rawSet);\n if (path) {\n const optionalPath = ObjectUtils.Path.toOptionalChainPath(path);\n // console.log('ppppp-', path, optionalPath)\n return ObjectUtils.Script.evaluateReturn(optionalPath, obj);\n }\n };\n\n public findParentThis = (obj: any, rawSet: RawSet = this) => {\n const path = this.findParentThisPath(rawSet);\n if (path) {\n const optionalPath = ObjectUtils.Path.toOptionalChainPath(path);\n return ObjectUtils.Script.evaluateReturn(optionalPath, obj);\n }\n };\n\n public findNearThisPath = (rawSet: RawSet = this): string | undefined => {\n const paths = this.findThisPaths(rawSet);\n return paths[paths.length - 1];\n };\n\n public findParentThisPath = (rawSet: RawSet = this): string | undefined => {\n const paths = this.findThisPaths(rawSet);\n return paths[paths.length - 2];\n };\n\n public findThisPaths = (rawSet: RawSet = this): string[] => {\n const paths: string[] = [];\n const findPath = (rawSet: RawSet) => {\n if (rawSet && rawSet.point) {\n // jsDom\uC5D0\uC11C instranceof HTMLMetaElement\uAC00 \uC548\uBA39\uD788\uB294\uAC83\uAC19\uC544? \uAC04\uD608\uC801\uC73C\uB85C?\n if (rawSet.point?.start && ('getAttribute' in rawSet.point.start) && rawSet.point.start.getAttribute('this-path')) {\n paths.push(rawSet.point.start.getAttribute('this-path')!);\n }\n if (rawSet.point.parentRawSet) findPath(rawSet.point.parentRawSet);\n }\n };\n findPath(rawSet);\n paths.push('this');\n return paths.reverse();\n };\n\n public static getAttributeObject(element: Element, config: { script: string; obj: any; renderData?: any }) {\n if (!element) {\n return undefined;\n }\n const attribute = ElementUtils.getAttributeToObject(element);\n const normalAttribute = attribute[EventManager.normalAttrMapAttrName];\n if (normalAttribute) {\n new Map<string, string>(JSON.parse(normalAttribute)).forEach((v, k) => {\n const cval = ObjectUtils.Script.evaluateReturn(\n { bodyScript: config.script, returnScript: v },\n Object.assign(config.obj, config.renderData ? { __render: config.renderData } : undefined)\n );\n attribute[k] = cval;\n });\n }\n return attribute;\n }\n}\n", "import { ValidUtils } from '@dooboostore/core/valid/ValidUtils';\n\nexport const DomRenderNoProxyKey = 'DomRender:NoProxy'\nexport const DomRenderNoProxy = (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(DomRenderNoProxyKey, 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(DomRenderNoProxyKey, true, target, propertyKey);\n};\n\nexport const getDomRenderNoProxy = (target: any, propertyKey?: string | symbol) => {\n // if (ValidUtils.isNotNullUndefined(target)) {\n // \uD074\uB798\uC2A4 \uB370\uCF54\uB808\uC774\uD130\n if (propertyKey === undefined) {\n return Reflect.getMetadata(DomRenderNoProxyKey, target);\n }\n // \uD504\uB85C\uD37C\uD2F0 \uB370\uCF54\uB808\uC774\uD130\n return Reflect.getMetadata(DomRenderNoProxyKey, target, propertyKey);\n // } else {\n // return undefined;\n // }\n}\n\nexport const isDomRenderNoProxy = (target: any, propertyKey?: string | symbol) => {\n return ValidUtils.isNullOrUndefined(target) || getDomRenderNoProxy(target, propertyKey) === true;\n}", "export interface OnBeforeReturnSet {\n onBeforeReturnSet(name: string, value: any, fullPath?: string[]): void;\n}\nexport function isOnBeforeReturnSet(obj: any): obj is OnBeforeReturnSet {\n return typeof obj?.onBeforeReturnSet === 'function';\n}\n", "import { RawSet } from '../rawsets/RawSet';\n\nexport interface OnChildRenderedByProperty {\n onChildRenderedByProperty(key: string, value: any): void;\n}\n\nexport function isOnChildRenderedByProperty(obj: any): obj is OnChildRenderedByProperty {\n return typeof obj?.onChildRenderedByProperty === 'function';\n}", "import {DomRenderConfig} from '../configs/DomRenderConfig';\n\nexport interface OnProxyDomRender {\n onProxyDomRender(config: DomRenderConfig): void;\n}\nexport const isOnProxyDomRender = (obj: any): obj is OnProxyDomRender =>\n typeof obj?.onProxyDomRender === 'function';", "import { RawSet, RenderResult } from '../rawsets/RawSet';\n\nexport type OnRawSetRenderedOtherData = {\n path?: string\n renderResult?: RenderResult\n // rawSet?: RawSet\n}\nexport interface OnRawSetRendered {\n// TODO: \uD638\uCD9C\uB41C\uACF3\uC5D0\uC11C \uB610 \uBCC0\uC218\uB97C \uC218\uC815\uD558\uAC8C\uB418\uBA74 \uBB34\uD55C\uB8E8\uD504\uB2C8\uAE50 \uC660\uB9CC\uD558\uBA74 \uC0AC\uC6A9\uBABB\uD558\uAC8C \uD574\uC57C\uD55C\uB2E4.\n onRawSetRendered (rawSet: RawSet,otherData: OnRawSetRenderedOtherData): Promise<void>;\n}\n\nexport const isOnRawSetRendered= (obj: any): obj is OnRawSetRendered => {\n return typeof obj?.onRawSetRendered === 'function';\n}\n", "import { RawSet, RenderResult } from './rawsets/RawSet';\nimport { EventManager } from './events/EventManager';\nimport { DomRenderConfig } from './configs/DomRenderConfig';\nimport { ScriptUtils } from '@dooboostore/core-web/script/ScriptUtils';\nimport { DomRenderFinalProxy, Shield } from './types/Types';\nimport { RawSetType } from './rawsets/RawSetType';\nimport { DrThisProperty } from './operators/DrThisProperty';\nimport { RawSetOperatorType } from './rawsets/RawSetOperatorType';\nimport { ComponentSet } from './components/ComponentSet';\nimport { DomRenderNoProxyKey, isDomRenderNoProxy } from './decorators/DomRenderNoProxy';\nimport { isOnCreateRender } from './lifecycle/OnCreateRender';\nimport { isOnInitRender } from './lifecycle/OnInitRender';\nimport { isOnCreateRenderData } from './lifecycle/OnCreateRenderData';\nimport { isOnChangeAttrRender } from './lifecycle/OnChangeAttrRender';\nimport { DocumentUtils } from '@dooboostore/core-web/document/DocumentUtils';\nimport { isDefined } from '@dooboostore/core/types';\nimport { isOnBeforeReturnSet } from './lifecycle/OnBeforeReturnSet';\nimport { isOnChildRenderedByProperty } from './lifecycle/OnChildRenderedByProperty';\nimport { ObjectUtils } from '@dooboostore/core/object/ObjectUtils';\nimport {ValidUtils} from '@dooboostore/core/valid/ValidUtils'\nimport { isOnProxyDomRender } from './lifecycle/OnProxyDomRender';\nimport { isOnRawSetRendered } from './lifecycle/OnRawSetRendered';\n\nconst excludeGetSetPropertys = ['onBeforeReturnGet', 'onBeforeReturnSet', '__domrender_components', '__render', '_DomRender_isFinal', '_domRender_ref', '_rawSets', '_domRender_proxy', '_targets', '_DomRender_origin', '_DomRender_ref', '_DomRender_proxy'];\nexport const isWrapProxyDomRenderProxy = <T>(obj: T): boolean => {\n return obj && typeof obj === 'object' && ('_DomRender_isProxy' in obj);\n};\nexport const getDomRenderOriginObject = <T>(obj: T):T => {\n if (isWrapProxyDomRenderProxy(obj)) {\n return (obj as any)._domRender_origin;\n }\n return obj;\n}\nexport const getDomRenderConfig = (obj: any): DomRenderConfig | undefined => {\n if (isWrapProxyDomRenderProxy(obj)) {\n return obj._domRender_config;\n }\n return undefined;\n}\n//@ts-ignore\nexport const getDomRenderProxy = <T>(obj: T): DomRenderProxy<T> | undefined => {\n if (isWrapProxyDomRenderProxy(obj)) {\n //@ts-ignore\n return (obj as any)._domRender_proxy as DomRenderProxy<T>;\n }\n return undefined;\n}\nexport class DomRenderProxy<T extends object> implements ProxyHandler<T> {\n public _domRender_ref = new Map<object, Set<string>>();\n public _rawSets = new Map<string, Set<RawSet>>();\n public _domRender_proxy?: T;\n // public _firstTarget: Node;\n public _targets = new Set<Node>();\n\n constructor(public _domRender_origin: T, target: Node | null | undefined, public _domRender_config: DomRenderConfig) {\n if (target) {\n this._targets.add(target);\n // this._firstTarget = target;\n }\n\n // setInterval(() => {\n // this._rawSets.forEach(it => {\n // Array.from(it).forEach(it => {\n // console.log(it, it.isConnected)\n // })\n // });\n // }, 1000)\n }\n\n public static unFinal<T = any>(obj: T): T {\n return DomRenderFinalProxy.unFinal(obj);\n }\n\n public static final<T = any>(obj: T): T {\n return DomRenderFinalProxy.final(obj);\n }\n\n public static isFinal<T = any>(obj: T) {\n return ValidUtils.isNull(obj) || DomRenderFinalProxy.isFinal(obj);\n }\n\n public run(objProxy: T) {\n this._domRender_proxy = objProxy;\n if (isOnProxyDomRender(objProxy)) {\n objProxy.onProxyDomRender(this._domRender_config);\n }\n const obj = getDomRenderOriginObject<any>(objProxy);\n if (obj) {\n Object.keys(obj).forEach(it => {\n // Reflect \uBA54\uD0C0\uB370\uC774\uD130\uC5D0\uC11C domRender:NoProxy \uC5EC\uBD80 \uD655\uC778\n try {\n const isNoProxy = Reflect.getMetadata(DomRenderNoProxyKey, obj, it) || Reflect.getMetadata(DomRenderNoProxyKey, Object.getPrototypeOf(obj).constructor);\n if (isNoProxy) {\n return obj;\n }\n } catch (e) {\n }\n const target = obj[it];\n if (target !== undefined && target !== null && typeof target === 'object' && !DomRenderProxy.isFinal(target) && !Object.isFrozen(target) && !(obj instanceof Shield)) {\n const isExcluded = this._domRender_config.proxyExcludeTyps?.some(it => target instanceof it) ?? false;\n // const filter = this._domRender_config.proxyExcludeTyps?.filter(it => target instanceof it) ?? [];\n if (!isExcluded) {\n const proxyAfter = this.proxy(objProxy, target, it);\n obj[it] = proxyAfter;\n }\n }\n });\n }\n // console.log('target', this._targets);\n this._targets.forEach(target => {\n this.initRender(target);\n });\n }\n\n public initRender(target: Node, rawSet?: RawSet) {\n\n // if (target instanceof Element) {\n // target.setAttribute('dr-this', 'this');\n // const rawSets = RawSet.checkPointCreates(target, this._domRender_proxy, this.config);\n // this.render(rawSets)\n // return;\n // }\n //\n if (target instanceof Element) {\n // \uC911\uC694: \uB098\uB97C\uD1B5\uD574 \uC774\uC5B4\uC9C4\uACF3\uC758 \uC704\uCE58\uB97C \uB0A8\uACA8\uC57C\uB41C\uB2E4 \uC548\uADF8\uB7EC\uBA74 TargetElement\uB294 \uC54C\uC218 \uC788\uB294 \uBC29\uBC95\uC774 \uC5C6\uB2E4. \uC5EC\uAE30\uC11C \uD754\uC801\uC744 \uB0A8\uACA8\uC918\uC57C \uD55C\uB2E4.\n // const targetElementNames = (this.config.targetElements?.map(it => it.name.toLowerCase().replaceAll('.', '\\\\.')) ?? []).join(',');\n // Array.from(target.querySelectorAll(targetElementNames)).forEach(it => it.setAttribute(EventManager.parentVariablePathAttrName, '@this@'));\n target.innerHTML = target.innerHTML.replace(/@this@/g, 'this');\n }\n // TODO: \uD55C\uACF3\uC5D0\uC11C \uCC98\uB9AC \uD544\uC694\uD560\uB4EF.. \uB108\uBB34 \uC0B0\uBC1C\uC801\uC73C\uB85C \uC788\uC74C.\n const onCreate = (target as any).getAttribute?.(RawSet.DR_ON_CREATE_ARGUMENTS_OPTIONNAME);\n let createParam: any[] = [];\n if (onCreate) {\n createParam = ScriptUtils.evaluateReturn(onCreate, this._domRender_proxy);\n if (!Array.isArray(createParam)) {\n createParam = [createParam];\n }\n }\n\n if (isOnCreateRenderData(this._domRender_proxy)) {\n this._domRender_proxy?.onCreateRenderData({ rootParent: this._domRender_proxy });\n }\n\n if (isOnCreateRender(this._domRender_proxy)) {\n this._domRender_proxy.onCreateRender(...createParam);\n }\n\n // const innerHTML = (target as any).innerHTML ?? '';\n this._targets.add(target);\n const rawSets = RawSet.checkPointCreates(target, this._domRender_proxy, this._domRender_config);\n // console.log('initRender -------rawSet', rawSets)\n // \uC911\uC694 \uCD08\uAE30\uC5D0 \uD55C\uBC88 \uD295\uACA8\uC918\uC57C\uD568.\n this._domRender_config.eventManager.applyEvent(this._domRender_proxy, this._domRender_config.eventManager.findAttrElements(target as Element, this._domRender_config), this._domRender_config);\n rawSets.forEach(it => {\n const variables = it.getUsingTriggerVariables(this._domRender_config);\n if (variables.size <= 0) {\n this.addRawSet('', it);\n } else {\n variables.forEach(sit => {\n this.addRawSet(sit, it);\n });\n }\n });\n this.render(this.getRawSets()).then(it => {\n // const render = {target} as Render;\n // const creatorMetaData = {\n // creator: this._domRender_proxy,\n // rootCreator: this._domRender_proxy,\n // innerHTML\n // } as CreatorMetaData;\n const onInit = (target as any).getAttribute?.(RawSet.DR_ON_INIT_ARGUMENTS_OPTIONNAME);\n let initParam: any;\n if (onCreate) {\n initParam = ScriptUtils.evaluateReturn(onCreate, this._domRender_proxy);\n // if (!Array.isArray(initParam)) {\n // initParam = [initParam];\n // }\n }\n if (isOnInitRender(this._domRender_proxy)) {\n this._domRender_proxy.onInitRender(initParam, rawSet ?? {dataSet: {config: this._domRender_config}} as any);\n }\n });\n\n }\n\n public getRawSets() {\n const set = new Set<RawSet>();\n this._rawSets.forEach((v, k) => {\n v.forEach(it => set.add(it));\n });\n return Array.from(set);\n }\n\n // \uC911\uC694 important\n public async render(raws?: RawSet[] | string, fullPathStr?: string) {\n if (typeof raws === 'string') {\n const iter = this._rawSets.get(raws);\n if (iter) {\n raws = Array.from(iter);\n } else {\n raws = undefined;\n }\n }\n const removeRawSets: RawSet[] = [];\n const rawSets = raws ?? this.getRawSets();\n\n // console.log('----', rawSets);\n for (const it of rawSets as RawSet[]) {\n it.getUsingTriggerVariables(this._domRender_config).forEach(path => {\n // console.log('getUsingTriggerVariables->', path);\n this.addRawSet(path, it);\n });\n\n let renderResult: RenderResult | undefined;\n if (it.isConnected) {\n // \uC911\uC694 render\uB420\uB54C targetAttribute \uCCB4\uD06C \uD574\uC57C\uD568.\n const targetAttrMap = (it.point.node as Element)?.getAttribute?.(EventManager.normalAttrMapAttrName);\n // console.log('sssssssssSSS?',it, targetAttrMap)\n // console.log('----2', it, fullPathStr, targetAttrMap, (it.fragment as any).render, it.isConnected, this.getRawSets());\n if (it.detect?.action) {\n it.detect.action();\n // } else if (it.type === RawSetType.TARGET_ELEMENT && it.data && fullPathStr && targetAttrMap && (it.fragment as any).render) {\n } else if (it.type === RawSetType.TARGET_ELEMENT && it.dataSet?.render?.currentThis && fullPathStr && targetAttrMap) {\n new Map<string, string>(JSON.parse(targetAttrMap)).forEach((v, k) => {\n // it?.data.onChangeAttrRender(k, null, v);\n const isUsing = EventManager.isUsingThisVar(v, `this.${fullPathStr}`);\n if (isUsing) {\n const targetAttrObject = RawSet.getAttributeObject((it.point.node as Element), { script: it.dataSet?.render?.renderScript ?? '', obj: Object.assign(this._domRender_proxy ?? {}, { __render: it.dataSet?.render }) });\n it.dataSet.render??={};\n it.dataSet.render.attribute = targetAttrObject;\n // const render = it.dataSet?.render;\n // console.log('render-->!!!!!', it.dataSet.render);\n // const script = `${render.renderScript} return ${v} `;\n // const cval = ScriptUtils.eval(script, Object.assign(this._domRender_proxy ?? {}, { __render: render }));\n if (isOnChangeAttrRender(it.dataSet?.render?.currentThis)) {\n it.dataSet?.render?.currentThis?.onChangeAttrRender?.(k, targetAttrObject[k], { rawSet: it });\n }\n }\n // console.log('---?', v, fullPathStr, isUsing);\n });\n // ------------------->\n } else {\n const rawSets = await it.render(this._domRender_proxy, this._domRender_config);\n renderResult = rawSets;\n // \uADF8\uC678 \uC790\uC2DD\uB4E4 render\n if (rawSets && rawSets.raws.length > 0) {\n await this.render(rawSets.raws);\n }\n }\n } else {\n removeRawSets.push(it);\n }\n\n const t = it.findNearThis(this._domRender_proxy)\n // TODO: \uD638\uCD9C\uB41C\uACF3\uC5D0\uC11C \uB610 \uBCC0\uC218\uB97C \uC218\uC815\uD558\uAC8C\uB418\uBA74 \uBB34\uD55C\uB8E8\uD504\uB2C8\uAE50 \uC660\uB9CC\uD558\uBA74 \uC0AC\uC6A9\uBABB\uD558\uAC8C \uD574\uC57C\uD55C\uB2E4.\n if(isOnRawSetRendered(t)){\n await t.onRawSetRendered(it, {path: fullPathStr, renderResult});\n }\n // console.log('----', it);\n }\n\n if (removeRawSets.length > 0) {\n this.removeRawSet(...removeRawSets);\n }\n return this.getRawSets();\n }\n\n // domrender_ref\uB85C \uCC3E\uB294\uAC78\uB85C \uBC14\uAFC8\n // public findRootDomRenderProxy(): DomRenderProxy<any> {\n // let current:DomRenderProxy<any> = this;\n // while (current.parentProxy) {\n // current = current.parentProxy;\n // }\n // return current;\n // }\n\n public root(pathInfos: {path: string, obj: any}[][], value?: any, lastDoneExecute = true): {path: string, obj:any}[][] {\n // console.log('root--->', paths, value, this._domRender_ref, this._domRender_origin);\n const fullPaths: {path: string, obj:any}[][] = [];\n if (this._domRender_ref.size > 0) {\n this._domRender_ref.forEach((it, key) => {\n if ('_DomRender_isProxy' in key) {\n it.forEach(sit => {\n try {\n\n const concat = pathInfos.concat([[{path: sit, obj: key}]]);\n const items:{path: string, obj:any}[][] = (key as any)._DomRender_proxy?.root(concat, value, lastDoneExecute);\n\n fullPaths.push(items.flat());\n // fullPaths.push({path: items.map(it=>it.path).join(','), obj: this._domRender_proxy});\n // fullPaths.push({path: items.map(it=>it.path).join(','), obj: this._domRender_proxy});\n } catch (e) {\n // \uC624\uBE0C\uC81D\uD2B8\uB4E4 \uC5C6\uC5B4\uC84C\uC744\uC218\uB3C4\uC788\uB2E4 Destroy\uC2DC\uC810\uC5D0\uC11C \uC624\uB958\uB098\uB294\uACBD\uC6B0\uAC00 \uC788\uB2E4. \uB530\uB77C\uC11C \uCC38\uC870 \uD558\uB294\uBD80\uBD84 \uC5C6\uC5B4\uC838\uC57C\uD55C\uB2E4.\n // console.error(e)\n // it.delete(sit);\n }\n });\n }\n });\n } else {\n // const firstPathStr = paths.slice(1).reverse().join('.');\n const strings = pathInfos.reverse().map(it=>it.map(it=>it.path).join(','));\n // array\uAC19\uC740\uACBD\uC6B0\uB3C4 \uD0A4\uAC12\uC73C\uB85C \uC811\uADFC\uD558\uAE30\uB54C\uBB38\uC5D0 \uD2B9\uC815 \uC778\uB371\uC2A4\uB97C \uCC3E\uC544\uC11C \uADF8\uBD80\uBD84\uB9CC \uBC14\uAFD4\uC904\uC218 \uC788\uB2E4.\n const fullPathStr = strings.map(it => isNaN(Number(it)) ? '.' + it : `[${it}]`).join('').slice(1);\n // console.log('-------fullPathStr', fullPathStr, lastDoneExecute);\n if (lastDoneExecute) {\n // const firstData = ScriptUtils.evalReturn('this.' + firstPathStr, this._domRender_proxy);\n // console.log('-------', firstPathStr, firstData);\n // if (firstData instanceof Dictionary) {\n // }\n const iterable = this._rawSets.get(fullPathStr);\n // array check\n const front = strings.slice(0, strings.length - 1).map(it => isNaN(Number(it)) ? '.' + it : `[${it}]`).join('');\n const lastPropertyName = strings[strings.length - 1];\n const path = 'this' + front;\n const data = ScriptUtils.evaluateReturn(ObjectUtils.Path.toOptionalChainPath(path), this._domRender_proxy);\n // console.log('root-->', this._rawSets, path, data );\n // console.log('--!!!!', fullPathStr, iterable, data, front, last);\n // \uC65C\uC5EC\uAE30\uC11C promise\uB97C \uD588\uC744\uAE4C\uB97C \uC0DD\uAC01\uD574\uBCF4\uBA74......\uD6D4.. \uBCC0\uC218\uBCC0\uACBD\uACFC \uD654\uBA74 \uBFCC\uB824\uC8FC\uB294\uAC78 \uB3D9\uAE30\uB85C\uD558\uBA74 \uC131\uB2A5\uC774 \uC548\uB098\uC624\uACE0 \uBE44\uD604\uC2E4\uC801\uC774\uB2E4. \uADF8\uB798\uC11C promise\n new Promise<RawSet[]>(async resolve => {\n let rData: RawSet[] = [];\n const firstPathStr = front.slice(1);\n\n // check dictionary\n // console.log('-promise-------', firstPathStr, this)\n const firstTargets = this._rawSets.get(firstPathStr);\n const firstTargetDictionary: RawSet[] = [];\n firstTargets?.forEach(it => {\n // console.log('----forEach---', it);\n const type = (it.point.start as Element)?.getAttribute?.('type');\n if (type === RawSetOperatorType.DR_THIS_PROPERTY) {\n firstTargetDictionary.push(it);\n }\n });\n if (firstTargetDictionary.length > 0) {\n // console.log('ddddddddddd', firstTargetDictionary);\n const rawSets: RawSet[] = [];\n let skip = false;\n firstTargetDictionary.forEach(it => {\n const startElement = it.point.start as Element;\n const keys = startElement.getAttribute(RawSet.DR_HAS_KEYS_OPTIONNAME)?.split(',') ?? [];\n if (value === undefined) {\n const rawSet = it.getHasRawSet(lastPropertyName);\n rawSet?.remove();\n startElement.setAttribute(RawSet.DR_HAS_KEYS_OPTIONNAME, keys.filter(it => it !== lastPropertyName).join(','));\n }\n if (!keys.includes(lastPropertyName)) {\n const raws = DrThisProperty.append(this._domRender_proxy, fullPathStr, lastPropertyName, it, this._domRender_config);\n if (raws) {\n rawSets.push(...raws);\n }\n } else {\n skip = true;\n }\n });\n if (skip === false || rawSets.length > 0) {\n rData = await this.render(rawSets);\n }\n }\n\n if (lastPropertyName === 'length' && Array.isArray(data)) {\n const aIterable = this._rawSets.get(firstPathStr);\n if (aIterable) {\n rData = await this.render(Array.from(aIterable));\n }\n } else if (iterable) {\n // console.log('------------',iterable, fullPaths)\n rData = await this.render(Array.from(iterable), fullPathStr);\n }\n\n\n\n // console.log('-----------', this, lastPropertyName );\n // this._targets.forEach(it => {\n // // return;\n // if (it.nodeType === Node.DOCUMENT_FRAGMENT_NODE || it.nodeType === Node.ELEMENT_NODE) {\n // const targets = eventManager.findAttrElements((it as DocumentFragment | Element), this.config);\n // eventManager.changeVar(this._domRender_proxy, targets, `this.${fullPathStr}`, this.config);\n // }\n // });\n\n\n this._targets.forEach(it => {\n // return;\n if (it.nodeType === Node.DOCUMENT_FRAGMENT_NODE || it.nodeType === Node.ELEMENT_NODE) {\n const targets = this._domRender_config.eventManager.findAttrElements((it as DocumentFragment | Element), this._domRender_config);\n this._domRender_config.eventManager.changeVar(this._domRender_proxy, targets, `this.${fullPathStr}`, this._domRender_config);\n }\n });\n\n //\uB79C\uB354\uB300\uC0C1\uB41C\uAC8C\uC788\uC73C\uBA74\n if(rData?.length > 0 && isOnChildRenderedByProperty(data)) {\n const propertyValue = ScriptUtils.evaluateReturn(`this.${lastPropertyName}`, data)\n data.onChildRenderedByProperty(lastPropertyName, propertyValue);\n // data\n }\n resolve(rData);\n }).then(it => {\n // console.log('DonrenderProxy root RenderDone')\n });\n }\n fullPaths.push([{path:fullPathStr, obj: this._domRender_proxy}]);\n }\n\n // console.log('dddddd', fullPaths.flatMap(it=>it).map(it=>it.path))\n return fullPaths;\n }\n\n public set(target: T, p: string | symbol, value: any, receiver: T): boolean {\n // console.log('set------->', target, p, value, receiver, Date.now())\n // console.log('set------->', p,value)\n // console.log('set------->', target, p, value, receiver, Date.now())\n // try {\n // const isNoProxy = Reflect.getMetadata(DomRenderNoProxyKey, target, p) || Reflect.getMetadata(DomRenderNoProxyKey, Object.getPrototypeOf(obj).constructor);\n // if (isNoProxy) {\n // return obj;\n // }\n // }catch (e) {}\n\n // console.log('set-->', p, value, target, receiver, Reflect.getMetadata(DomRenderNoProxyKey, target, p) );\n\n if (\n (typeof p === 'string' && p !== '__domrender_components' && excludeGetSetPropertys.includes(p)) ||\n Reflect.getMetadata(DomRenderNoProxyKey, target, p)\n ) {\n (target as any)[p] = value;\n return true;\n }\n // const old = (target as any)[p];\n // console.log('set proxy-->', target, p, value, this._rawSets, this._domRender_ref);\n // if (typeof p === 'string' && '__render' === p) {\n // (target as any)[p] = value;\n // return true;\n // }\n // console.log('set--?', p, target, value);\n\n if (typeof p === 'string') {\n value = this.proxy(receiver, value, p);\n }\n\n // console.log('set typeChecked', (target as any)[p] instanceof ComponentSet, value instanceof ComponentSet);\n // if ((target as any)[p] instanceof ComponentSet) {\n // (target as any)[p]?.obj?.onDrThisUnBind?.();\n // }\n // is ComponentSet\n if ((value instanceof ComponentSet) && ((target as any)[p] instanceof ComponentSet)) {\n value.config.beforeComponentSet = (target as any)[p];\n }\n (target as any)[p] = value;\n let fullPathInfo: {path: string, obj:any}[][] = [];\n if (typeof p === 'string') {\n fullPathInfo = this.root([[{path:p, obj: this._domRender_proxy}]], value)\n }\n\n // console.log('setRooot', fullPathInfo);\n\n\n //normal attribute \uB610\uD55C \uB9C1\uD06C\uB791 \uAC19\uC740 \uC99D\uC138\uB77C\uC11C \uC774\uB807\uAC8C \uD574\uC918\uC57C\uD55C\uB2E4!!\n // const rootDomRenderProxy = this.findRootDomRenderProxy();\n // console.log('set!!!!!!!', fullPathInfo, rootDomRenderProxy)\n // console.log('--------rootDom',fullPathInfo, rootDomRenderProxy, rootDomRenderProxy._domRender_proxy)\n const rootElement = this._domRender_config.rootElement ?? this._domRender_config.window.document;\n DocumentUtils.querySelectorAllByAttributeName(rootElement, EventManager.normalAttrMapAttrName)?.forEach(elementInfo => {\n // @ts-ignore\n // const optionalPath = ObjectUtils.Path.toOptionalChainPath(elementInfo.value);\n const targets = new Map<string,string>(ScriptUtils.evaluateReturn<[string, string][]>(elementInfo.value));\n Array.from(targets.entries()).filter(([key, value])=>value.trim()).filter(isDefined).flatMap(([key,valueScript])=> {\n return fullPathInfo.flat().filter(it => valueScript.includes(`this.${it.path}`)).flatMap(it=> ({key, valueScript: valueScript, pathInfo: it}));\n }).forEach(it=> {\n const optionalPath = ObjectUtils.Path.toOptionalChainPath(it.valueScript);\n const value1 = ScriptUtils.evaluateReturn(optionalPath, it.pathInfo.obj);\n // console.log('proxy set!Attribut======', it.key, value1)\n if (value1 === null) {\n elementInfo.element.removeAttribute(it.key);\n elementInfo.element[it.key] = null;\n } else {\n elementInfo.element.setAttribute(it.key, value1);\n elementInfo.element[it.key] = value1\n }\n })\n })\n\n //\uC5EC\uAE30\uC11C \uB9C1\uD06C \uAC19\uC740\uAC70 \uD574\uC918\uC57C\uD568 *-link\uB85C \uBCC0\uC218\uAC12\uC774 \uBCC0\uACBD\uB418\uBA74 \uADF8\uAC78 \uCC38\uACE0\uD558\uACE0\uC788\uB294 \uB2E4\uB978\uAC83\uB4E4\uC5D0\uB3C4 \uD574\uC918\uC57C\uD55C\uB2E4.\n DocumentUtils.querySelectorAllByAttributeName(rootElement, EventManager.linkTargetMapAttrName)?.forEach(elementInfo => {\n // @ts-ignore\n const targets = new Map<string,string>(ScriptUtils.evaluateReturn<[string, string][]>(elementInfo.value));\n\n Array.from(targets.entries()).filter(([key, value])=>value.trim()).filter(isDefined).flatMap(([key,valueScript])=> {\n return fullPathInfo.flat().filter(it => valueScript.includes(`this.${it.path}`)).flatMap(it=> ({key, valueScript: valueScript, pathInfo: it}));\n }).forEach(info=> {\n const value1 = ScriptUtils.evaluateReturn(info.valueScript, info.pathInfo.obj);\n const applyAttributeName = EventManager.linkAttrs.find(it => it.name === info.key);\n if (applyAttributeName) {\n if (value1 === null) {\n elementInfo.element.removeAttribute(applyAttributeName.property);\n } else {\n // console.log('ppppppppppppppppppppppp', applyAttributeName, elementInfo)\n elementInfo.element.setAttribute(applyAttributeName.property, value1);\n }\n }\n })\n\n Array.from(targets.entries()).filter(([key, value])=>value.trim()).filter(isDefined).flatMap(([key,valueScript])=> {\n return fullPathInfo.flat().filter(it => valueScript.includes(`this.${it.path}`)).flatMap(it=> ({key, valueScript: valueScript, pathInfo: it}));\n }).forEach(info=> {\n const linkInfo = EventManager.linkAttrs.find(it=>it.name === info.key)\n if (linkInfo) {\n elementInfo.element[linkInfo.property] = value\n }\n })\n })\n\n // console.log('---end',receiver);\n if (('onBeforeReturnSet' in receiver) && typeof p === 'string' && !(this._domRender_config.proxyExcludeOnBeforeReturnSets ?? []).concat(excludeGetSetPropertys).includes(p)) {\n if(isOnBeforeReturnSet(receiver)){\n receiver.onBeforeReturnSet?.(p, value, fullPathInfo.map(it => it.map(it=>it.path).join()));\n }\n }\n return true;\n }\n\n get(target: T, p: string | symbol, receiver: any): any {\n // console.log('get-->', target, p, receiver);\n if (p === '_DomRender_origin' || p === '_domRender_origin') {\n return this._domRender_origin;\n } else if (p === '_DomRender_ref' || p === '_domRender_ref') {\n return this._domRender_ref;\n } else if (p === '_DomRender_config' || p ==='_domRender_config') {\n return this._domRender_config;\n } else if (p === '_DomRender_proxy' || p ==='_domRender_proxy') {\n return this;\n } else {\n // Date\uB77C\uB358\uC9C0 \uC774\uB7F0\uB188\uB4E4\uC740-_-\uD504\uB85D\uC2DC\uAC00 \uC774\uC0C1\uD558\uAC8C \uB3D9\uC791\uD574\uC11C\n // console.log('--->', p, target, target.bind, 'bind' in target)\n // if ((p in target) && ('bind' in target)) {\n // try{\n // return (target as any)[p].bind(target);\n // }catch (e) {\n // console.error(e)\n // }\n // } else {\n // return (target as any)[p]\n // }\n // return (p in target) ? (target as any)[p].bind(target) : (target as any)[p]\n // console.log('-->', p, Object.prototype.toString.call((target as any)[p]), (target as any)[p])\n // return (target as any)[p]\n let it = (target as any)[p];\n if (it && typeof it === 'object' && ('_DomRender_isProxy' in it) && Object.prototype.toString.call(it._DomRender_origin) === '[object Date]') {\n it = it._DomRender_origin;\n }\n\n if (('onBeforeReturnGet' in receiver) && typeof p === 'string' && !(this._domRender_config.proxyExcludeOnBeforeReturnGets ?? []).concat(excludeGetSetPropertys).includes(p)) {\n (receiver as any)?.onBeforeReturnGet?.(p, it, this.root([[{path:p, obj: this._domRender_proxy}]], it, false));\n }\n return it;\n }\n }\n\n deleteProperty(target: T, p: string | symbol): boolean {\n delete (target as any)[p];\n if (typeof p === 'string') {\n this.root([[{path:p, obj: this._domRender_proxy}]]);\n }\n return true;\n }\n\n has(target: T, p: string | symbol): boolean {\n return p === '_DomRender_isProxy' || p in target;\n }\n\n proxy(parentProxy: T, obj: T | any, p: string) {\n try {\n // const isNoProxy = Reflect.getMetadata(DomRenderNoProxyKey, obj, p) || Reflect.getMetadata(DomRenderNoProxyKey, Object.getPrototypeOf(obj).constructor);\n const isObject = typeof obj === 'object';\n const isNoProxy = isObject && isDomRenderNoProxy(obj,p)\n const isExclude = (this._domRender_config.proxyExcludeTyps?.some(it => obj instanceof it)) ?? false;\n const isFinal = isObject && DomRenderProxy.isFinal(obj);\n const isFrozen = Object.isFrozen(obj);\n const isShield = obj instanceof Shield;\n if (obj === undefined || obj === null || isNoProxy || isExclude || ValidUtils.isNullOrUndefined(obj) || !isObject || isFinal || isFrozen || isShield) {\n return obj;\n }\n } catch (e) {\n }\n\n\n/*\n const proxyTarget = (this._domRender_config.proxyExcludeTyps?.filter(it => obj instanceof it) ?? []).length <= 0;\n if (proxyTarget && obj !== undefined && obj !== null && typeof obj === 'object' && !('_DomRender_isProxy' in obj) && !DomRenderProxy.isFinal(obj) && !Object.isFrozen(obj) && !(obj instanceof Shield)) {\n const domRender = new DomRenderProxy(obj, undefined, this._domRender_config);\n domRender.addRef(parentProxy, p);\n const proxy = new Proxy(obj, domRender);\n domRender.run(proxy);\n return proxy;\n }\n if (proxyTarget && obj !== undefined && obj !== null && typeof obj === 'object' && ('_DomRender_isProxy' in obj) && !DomRenderProxy.isFinal(obj) && !Object.isFrozen(obj) && !(obj instanceof Shield)) {\n const d = (obj as any)._DomRender_proxy as DomRenderProxy<T>;\n d.addRef(this._domRender_proxy!, p);\n return obj;\n } else {\n return obj;\n }\n */\n if ( !isWrapProxyDomRenderProxy(obj)) {\n const domRender = new DomRenderProxy(obj, undefined, this._domRender_config);\n domRender.addRef(parentProxy, p);\n const proxy = new Proxy(obj, domRender);\n domRender.run(proxy);\n return proxy;\n }\n if (isWrapProxyDomRenderProxy(obj)) {\n const d = (obj as any)._DomRender_proxy as DomRenderProxy<T>;\n d.addRef(this._domRender_proxy!, p);\n return obj;\n } else {\n return obj;\n }\n }\n\n public addRef(parent: object, path: string) {\n if (!this._domRender_ref.get(parent)) {\n this._domRender_ref.set(parent, new Set<string>());\n }\n this._domRender_ref.get(parent)?.add(path);\n }\n\n public addRawSetAndRender(path: string, rawSet: RawSet) {\n this.addRawSet(path, rawSet);\n this.render([rawSet]);\n }\n\n public addRawSet(path: string, rawSet: RawSet) {\n // console.log('addRawSet--> path:', path, 'rawSet:', rawSet)\n if (!this._rawSets.get(path)) {\n this._rawSets.set(path, new Set<RawSet>());\n }\n this._rawSets.get(path)?.add(rawSet);\n }\n\n // public removeRawSet(...raws: RawSet[]) {\n // this._rawSets.forEach(it => {\n // raws.forEach(sit => it.delete(sit));\n // })\n // this.garbageRawSet();\n // }\n\n public removeRawSet(...raws: RawSet[]) {\n this._rawSets.forEach(it => {\n it.forEach(sit => {\n if (!sit.isConnected) {\n it.delete(sit);\n } else if (raws.includes(sit)) {\n it.delete(sit);\n }\n });\n });\n this.targetGarbageRawSet();\n }\n\n private targetGarbageRawSet() {\n this._targets.forEach(it => {\n if (!it.isConnected) {\n this._targets.delete(it);\n }\n });\n }\n\n private garbageRawSet() {\n this._targets.forEach(it => {\n if (!it.isConnected) {\n this._targets.delete(it);\n }\n });\n\n this._rawSets.forEach(it => {\n it.forEach(sit => {\n if (!sit.isConnected) {\n it.delete(sit);\n }\n });\n });\n }\n}\n", "import { ConvertUtils } from '@dooboostore/core/convert/ConvertUtils';\nimport { Observable } from '@dooboostore/core/message/Observable';\nimport { BehaviorSubject } from '@dooboostore/core/message/BehaviorSubject';\nimport { Expression } from '@dooboostore/core/expression/Expression';\nimport ToURLSearchParamsParams = ConvertUtils.ToURLSearchParamsParams;\n\nexport type RouteData = {\n path: string;\n url: string;\n data?: any;\n searchParams: URLSearchParams;\n pathData?: any;\n router: Router;\n currentTarget?:PopCurrentState;\n}\nexport type PopStateCurrentTargetDomrenderRouter = { currentTargetName: 'domRenderRouter' };\nexport type PopCurrentState = PopStateCurrentTargetDomrenderRouter;\nexport const isPopStateCurrentTargetDomrenderRouter = (obj: any): obj is PopStateCurrentTargetDomrenderRouter =>\n obj?.currentTargetName === 'domRenderRouter';\n\nexport type RouterConfig<T = any> = { rootObject?: T, window: Window, firstUrl?: string,\n // changeStateConvertDate?:(data: any)=>any\n};\nexport type ChangeStateResult = {data?: any}\nexport type RouteAction = string | { path?: string, searchParams?: ToURLSearchParamsParams };\n\n/*\n this.option.window.addEventListener('popstate', (event) => { // history.back, forward\uC5D0\uB9CC popstate \uBC1C\uC0DD\uB418\uACE0 \uAC12\uC774 \uB3C4\uCD9C\uB41C\uB2E4\n console.log('popstate-------!!', event.state, this.domRenderConfig.window.history.state)\n })\n */\nexport abstract class Router<T = any> {\n private behaviorSubject: BehaviorSubject<RouteData>;\n private _config: RouterConfig<T>;\n\n constructor(config: RouterConfig<any>) {\n this._config = config;\n\n let routeData: RouteData;\n if (config?.firstUrl) {\n const path = config.firstUrl.split('?');\n routeData = {\n url: config.firstUrl,\n path: path[0],\n searchParams: new URLSearchParams(path[1]??''),\n router: this,\n }\n this.behaviorSubject = new BehaviorSubject<RouteData>(routeData);\n this.go(config.firstUrl);\n } else {\n routeData = this.getRouteData();\n this.behaviorSubject = new BehaviorSubject<RouteData>(routeData);\n }\n this.config.window.addEventListener('popstate', (event: PopStateEvent) => {\n // domrender\uC5D0\uC11C \uBC1C\uC0DD\uD558\uC9C0 \uC54A\uC740 \uC989 back, previous \uC77C\uB584\uC5D0\uB3C4 \uC774\uBCA4\uD2B8\uAC00\uB3C4\uB85D \uCC98\uB9AC\n if(!isPopStateCurrentTargetDomrenderRouter(event.state)) {\n // console.log('-------');\n const routeData = this.getRouteData();\n this.behaviorSubject.next(routeData);\n }\n })\n }\n\n\n get observable(): Observable<RouteData> {\n return this.behaviorSubject.asObservable();\n }\n\n get searchParamObject() {\n return ConvertUtils.toObject(this.getSearchParams());\n }\n\n get config() {\n return this._config;\n }\n\n public getSearchFirstParamsObject<T = any>(defaultValue?: T) {\n const a = ConvertUtils.toObject<T>(this.getSearchParams(), {firstValue: true});\n return Object.assign({}, defaultValue, a);\n }\n\n public getHashSearchFirstParamsObject<T = any>() {\n return ConvertUtils.toObject<T>(this.getHashSearchParams(), {firstValue: true});\n }\n\n // async attach(): Promise<void> {\n // // const proxy = getDomRenderProxy(this.config.rootObject)\n // // if (proxy) {\n // // const key = `___${EventManager.ROUTER_VARNAME}`;\n // // await proxy.render(key);\n // // }\n // }\n\n testRegexp(regexp?: string): boolean {\n if (regexp) {\n const b = RegExp(regexp).test(this.getPathName());\n return b;\n }else {\n return false;\n }\n }\n\n test(urlExpression?: string): boolean {\n if (urlExpression && this.getPathData(urlExpression)) {\n return true;\n } else {\n return false;\n }\n }\n\n getRouteData(config?: {urlExpression?: string, currentTarget?: PopCurrentState}): RouteData {\n const newVar = {\n path: this.getPathName(),\n url: this.getUrl(),\n searchParams: this.getSearchParams()\n } as RouteData;\n\n const data = this.getData();\n if (data) {\n newVar.data = data;\n }\n if (config?.urlExpression) {\n const data = this.getPathData(config.urlExpression);\n if (data) {\n newVar.pathData = data;\n }\n }\n newVar.router = this;\n newVar.currentTarget = config?.currentTarget;\n return Object.freeze(newVar);\n }\n\n pushState(data: any, title: string | undefined, path: string):ChangeStateResult {\n // data = this.config.changeStateConvertDate?this.config.changeStateConvertDate(data): data;\n // console.log('--->pushState', data);\n this.config.window.history.pushState(data, title??'', path);\n this.behaviorSubject.next(this.getRouteData({currentTarget: {currentTargetName: 'domRenderRouter'}}));\n return {data};\n }\n\n replaceState(data: any, title: string | undefined, path: string):ChangeStateResult {\n // data = this.config.changeStateConvertDate?this.config.changeStateConvertDate(data): data;\n // console.log('--->replaceState', data);\n this.config.window.history.replaceState(data, title??'', path);\n this.behaviorSubject.next(this.getRouteData({currentTarget: {currentTargetName: 'domRenderRouter'}}));\n return {data};\n }\n\n private dispatchPopStateEvent(data?: any) {\n this.config.window.dispatchEvent(new PopStateEvent('popstate', {state: {...data, currentTargetName: 'domRenderRouter'}}));\n }\n\n reload(data?: any) {\n this.config.window.dispatchEvent(new PopStateEvent('popstate', {state: data}));\n }\n\n getData(): any {\n return this.config.window.history.state;\n }\n\n getPathData(urlExpression: string, currentUrl = this.getPathName()): any {\n return Expression.Path.pathNameData(currentUrl, urlExpression);\n }\n\n async go(config: string | { path: RouteAction, data?: any, replace?: boolean, title?: string, disabledPopEvent?: boolean, scrollToTop?: boolean } | string): Promise<void> {\n if (typeof config === 'string') {\n config = { path: config };\n }\n\n // let data: ChangeStateResult | undefined = undefined;\n if (config?.replace) {\n this.replace(config.path, config.data, config.title);\n } else {\n this.push(config.path, config.data, config.title);\n }\n // if (!this.config.disableAttach) {\n // await this.attach();\n // }\n \n // \uC2A4\uD06C\uB864 \uC81C\uC5B4 (\uAE30\uBCF8\uAC12: true - \uB9E8 \uC704\uB85C \uC2A4\uD06C\uB864)\n if (config.scrollToTop !== false) {\n try {\n this._config.window?.scrollTo?.(0, 0);\n }catch (e){}\n }\n \n // console.log('----------', data, config)\n if (!config.disabledPopEvent) {\n this.dispatchPopStateEvent(config?.data);\n }\n }\n\n toUrl(data: RouteAction) {\n let targetPath: string;\n if (typeof data === 'string') {\n targetPath = data;\n } else {\n const tpath = data.path ?? this.getPathName();\n const s = data.searchParams ? ConvertUtils.toURLSearchParams(data.searchParams).toString() : '';\n // data.searchParams\n targetPath = `${tpath}${s.length > 0 ? '?' : ''}${s}`;\n }\n return targetPath;\n }\n\n\n abstract push(path: RouteAction, data?: any, title?: string): void;\n\n abstract replace(path: RouteAction, data?: any, title?: string): void;\n\n abstract pushDeleteSearchParam(name: string | string[], data?: any, title?: string): void;\n\n abstract pushDeleteHashSearchParam(name: string | string[], data?: any, title?: string): void;\n\n abstract pushAddSearchParam(params:[[string, string]], data?: any, title?: string): void;\n\n abstract replaceDeleteSearchParam(name: string | string[], data?: any, title?: string): void;\n\n abstract replaceDeleteHashSearchParam(name: string | string[], data?: any, title?: string): void;\n\n abstract replaceAddSearchParam(params:[[string, string]], data?: any, title?: string): void;\n\n abstract getSearchParams(data?:{delete?:string[], append?:[[string, string]]}): URLSearchParams;\n\n abstract getHashSearchParams(data?:{delete?:string[], append?:[[string, string]]}): URLSearchParams;\n\n abstract getUrl(): string;\n\n abstract getHref(): string;\n\n abstract getPathName(): string;\n}\n", "import { ChangeStateResult, RouteAction, Router, RouterConfig } from './Router';\n\nexport class PathRouter extends Router {\n constructor(config: RouterConfig) {\n super(config);\n }\n\n getSearchParams(data?:{delete?:string[], append?:[[string, string]]}): URLSearchParams {\n const searchParams = (new URL(this.config.window.document.location.href)).searchParams;\n data?.delete?.forEach(it => {\n searchParams.delete(it);\n })\n\n data?.append?.forEach(it => {\n searchParams.append(it[0], it[1]);\n })\n return searchParams;\n\n }\n\n push(path: RouteAction, data?: any, title: string = ''): ChangeStateResult {\n return super.pushState(data, title, this.toUrl(path));\n }\n\n replace(path: RouteAction, data?: any, title: string = ''): ChangeStateResult {\n return super.replaceState(data, title, this.toUrl(path));\n }\n\n pushDeleteSearchParam(name: string, data?: any, title?: string): void {\n const s = this.getSearchParams({delete: [name]});\n this.push({searchParams: s}, data, title);\n }\n\n pushDeleteHashSearchParam(name: string, data?: any, title?: string) {\n const s = this.getHashSearchParams({delete: [name]});\n const size = Array.from(s.entries()).length;\n const href = `${this.config.window.location.pathname}${this.config.window.location.search}${size > 0 ? '#' + s.toString() : ''}`;\n super.pushState(data, title, href);\n }\n\n pushAddSearchParam(params:[[string, string]], data?: any, title?: string): void {\n const s = this.getSearchParams({append: params});\n this.push({searchParams: s}, data, title);\n }\n replaceDeleteSearchParam(name: string | string[], data?: any, title?: string): void {\n const s = this.getSearchParams({delete: Array.isArray(name) ? name : [name]});\n this.replace({searchParams: s}, data, title);\n }\n\n replaceDeleteHashSearchParam(name: string | string[], data?: any, title?: string) {\n const s = this.getHashSearchParams({delete: Array.isArray(name) ? name : [name]});\n const size = Array.from(s.entries()).length;\n const href = `${this.config.window.location.pathname}${this.config.window.location.search}${size > 0 ? '#' + s.toString() : ''}`;\n super.replaceState(data, title, href);\n }\n\n replaceAddSearchParam(params:[[string, string]], data?: any, title?: string): void {\n const s = this.getSearchParams({append: params});\n this.replace({searchParams: s}, data, title);\n }\n\n\n getUrl(): string {\n const url = new URL(this.config.window.document.location.href);\n return url.pathname + url.search;\n }\n\n getHref(): string {\n return this.config.window.location.href;\n }\n\n getPathName(): string {\n return this.config.window.location.pathname;\n }\n\n getHashSearchParams(data?:{delete?:string[], append?:[[string, string]]}): URLSearchParams {\n // http://local.com/#wow=222&wow=bb&z=2\n const searchParams = new URLSearchParams(this.config.window.location.hash.slice(1));\n\n data?.delete?.forEach(it => {\n searchParams.delete(it);\n })\n\n data?.append?.forEach(it => {\n searchParams.append(it[0], it[1]);\n })\n return searchParams;\n\n // return undefined;\n }\n\n\n}\n", "import { ChangeStateResult, RouteAction, Router, RouterConfig } from './Router';\nimport { LocationUtils } from '@dooboostore/core-web/location/LocationUtils';\n\n\nexport class HashRouter extends Router {\n\n constructor(config: RouterConfig) {\n super(config);\n }\n\n\n getSearchParams(data?: { delete?: string[], append?: [[string, string]] }): URLSearchParams {\n const hashSearch = LocationUtils.hashSearch(this.config.window);\n const searchParams = hashSearch ? new URLSearchParams(hashSearch) : (new URL(this.config.window.document.location.href)).searchParams;\n\n\n data?.delete?.forEach(it => {\n searchParams.delete(it);\n })\n\n data?.append?.forEach(it => {\n searchParams.append(it[0], it[1]);\n })\n return searchParams;\n }\n\n push(path: RouteAction, data?: any, title: string = ''): ChangeStateResult {\n if (path === '/') {\n return super.pushState(data, title, '/');\n } else {\n return super.pushState(data, title, `#${this.toUrl(path)}`);\n }\n }\n\n replace(path: RouteAction, data?: any, title?: string):ChangeStateResult {\n if (path === '/') {\n return super.replaceState(data, title, '/');\n } else {\n return super.replaceState(data, title, `#${this.toUrl(path)}`);\n }\n }\n\n setDeleteHashSearchParam(name: string, data?: any, title?: string) {\n }\n\n pushDeleteHashSearchParam(name: string | string[], data: any, title: string | undefined): void {\n const s = this.getHashSearchParams({delete:Array.isArray(name) ? name : [name]});\n const size = Array.from(s.entries()).length;\n const href = `${this.config.window.location.pathname}${this.config.window.location.search}${size > 0 ? '#' + s.toString() : ''}`;\n super.pushState(data, title, href);\n }\n\n pushDeleteSearchParam(name: string | string[], data?: any, title?: string): void {\n const s = this.getSearchParams({delete:Array.isArray(name) ? name : [name]});\n this.push({searchParams: s}, data, title);\n }\n\n pushAddSearchParam(params:[[string, string]], data?: any, title?: string): void {\n const s = this.getSearchParams({append: params});\n this.push({searchParams: s}, data, title);\n }\n\n replaceDeleteHashSearchParam(name: string | string[], data: any, title: string | undefined): void {\n const s = this.getHashSearchParams({delete: Array.isArray(name) ? name : [name]});\n const size = Array.from(s.entries()).length;\n const href = `${this.config.window.location.pathname}${this.config.window.location.search}${size > 0 ? '#' + s.toString() : ''}`;\n super.pushState(data, title, href);\n }\n\n replaceDeleteSearchParam(name: string | string[], data?: any, title?: string): void {\n const s = this.getSearchParams({delete: Array.isArray(name) ? name : [name]});\n this.push({searchParams: s}, data, title);\n }\n\n replaceAddSearchParam(params:[[string, string]], data?: any, title?: string): void {\n const s = this.getSearchParams({append: params});\n this.push({searchParams: s}, data, title);\n }\n\n getUrl(): string {\n return LocationUtils.hash(this.config.window) || '/';\n }\n\n getHref(): string {\n return this.config.window.location.href;\n }\n\n getPathName(): string {\n return LocationUtils.hashPath(this.config.window) || '/';\n }\n\n getHashSearchParams(data?:{delete?:string[], append?:[[string, string]]}): URLSearchParams {\n const hash = this.config.window.location.hash;\n const queryIndex = hash.indexOf('?');\n const searchParams = (queryIndex !== -1) ? new URLSearchParams(hash.slice(queryIndex + 1)) : new URLSearchParams();;\n data?.delete?.forEach(it => {\n searchParams.delete(it);\n })\n data?.append?.forEach(it => {\n searchParams.append(it[0], it[1]);\n })\n return searchParams;\n\n }\n\n}\n", "import { ConstructorType } from '@dooboostore/core/types';\nimport {DomRenderFinalProxy} from '../types/Types';\nimport {DomRenderConfig} from '../configs/DomRenderConfig';\n\nenum CallBackType {\n FILTER,\n MAP,\n SUBSCRIBE\n}\n\nexport type ChannelData = {\n channel: Channel;\n data?: (any | undefined);\n}\nexport type ChannelMetaData = {\n channel?: Channel;\n action?: string;\n}\n\nexport class ChannelSubscription {\n constructor(public channel: Channel, public subscriber: ChannelSubscriber) {\n }\n\n unsubscribe() {\n this.subscriber.unsubscribe();\n }\n}\n\nexport class ChannelSubscriber<SD = any> {\n public parentSubscriber?: ChannelSubscriber;\n public callbacks: ({ type: CallBackType, callback: (data: any, metaData: ChannelMetaData) => any | undefined })[] = [];\n\n constructor(public channel: Channel) {\n }\n\n exeCallback(data: any, metaData: ChannelMetaData) {\n for (const callback of this.callbacks) {\n if (callback.type === CallBackType.FILTER && !callback.callback(data, metaData)) {\n break;\n } else if (callback.type === CallBackType.MAP) {\n data = callback.callback(data, metaData);\n } else if (callback.type === CallBackType.SUBSCRIBE) {\n data = callback.callback(data, metaData);\n break;\n }\n }\n return data;\n }\n\n // chaining point\n filter<D = SD>(callback: (data: D, meta: ChannelMetaData) => boolean): ChannelSubscriber<SD> {\n this.callbacks.push({type: CallBackType.FILTER, callback});\n return this;\n }\n\n map<D = SD, R = any>(callback: (data: D, meta: ChannelMetaData) => R): ChannelSubscriber<R> {\n this.callbacks.push({type: CallBackType.MAP, callback});\n return this as unknown as ChannelSubscriber<R>;\n }\n\n subscribe(callback: (data: SD, metaData: ChannelMetaData) => any | undefined) {\n this.callbacks.push({type: CallBackType.SUBSCRIBE, callback});\n this.channel.subscribers.add(this);\n return new ChannelSubscription(this.channel, this);\n }\n\n unsubscribe() {\n this.channel.subscribers.delete(this);\n }\n\n deleteSubscriber() {\n this.unsubscribe();\n this.channel.subscribers.delete(this);\n }\n}\n\nexport class Channel {\n public subscribers = new Set<ChannelSubscriber>();\n\n constructor(private messenger: Messenger, public obj: object, public key: string) {\n }\n\n publish(key: string | object | ConstructorType<any>, data: any, action?: string) {\n const rtns: ChannelData[] = [];\n this.messenger.getChannels(key)?.forEach(it => {\n try {\n it.subscribers.forEach(its => {\n const rdata = its.exeCallback(data, {channel: this, action});\n rtns.push({channel: it, data: rdata});\n });\n } catch (e) {\n console.error(e);\n }\n });\n return rtns;\n }\n\n allPublish(data: any, action: string) {\n const rtns: (any | undefined)[][] = [];\n this.messenger.getAllChannelKeys().forEach(it => {\n rtns.push(this.publish(it, data));\n });\n return rtns.flat();\n }\n\n // string point\n filter<D = any>(filterF: (data: D, meta: ChannelMetaData) => boolean) {\n const subscriber = new ChannelSubscriber<D>(this);\n subscriber.filter(filterF);\n return subscriber;\n }\n\n map<D = any, R = any>(filterF: (data: D, meta: ChannelMetaData) => R): ChannelSubscriber<R> {\n const subscriber = new ChannelSubscriber<R>(this);\n subscriber.map(filterF);\n return subscriber;\n }\n\n subscribe<D = any>(subscribeCallback: (data: D, meta: ChannelMetaData) => any | void | undefined) {\n const subscriber = new ChannelSubscriber<D>(this);\n return subscriber.subscribe(subscribeCallback);\n };\n\n deleteChannel() {\n this.messenger.deleteChannel(this);\n };\n}\n\ntype MessengerEventDetail = {\n key: string | object | ConstructorType<any>;\n data?: any;\n action?: string;\n result?: (c: ChannelData[]) => void;\n}\n\ntype MessengerSubscribeEventDetail = {\n obj: any;\n key?: string | object | ConstructorType<any>;\n init: (channel: Channel, subscription: ChannelSubscription) => void;\n subscribe: (data: any, meta: ChannelMetaData) => void;\n}\n\nexport abstract class Messenger {\n private channels = new Set<Channel>();\n static readonly EVENT_PUBLISH_KEY = 'domRenderMessenger_publish';\n static readonly EVENT_SUBSCRIBE_KEY = 'domRenderMessenger_subscribe';\n constructor(private config: DomRenderConfig) {\n this.config.window.addEventListener(Messenger.EVENT_PUBLISH_KEY, (e: Event) => {\n const detail = ((e as CustomEvent).detail as MessengerEventDetail);\n // console.log('--->', detail)\n const rtns: ChannelData[] = [];\n this.getChannels(detail.key)?.forEach(it => {\n try {\n it.subscribers.forEach(its => {\n const rdata = its.exeCallback(detail.data, {action: detail.action});\n rtns.push({channel: it, data: rdata});\n });\n } catch (e) {\n console.error(e);\n }\n });\n detail.result?.(rtns);\n });\n this.config.window.addEventListener(Messenger.EVENT_SUBSCRIBE_KEY, (e: Event) => {\n const detail = ((e as CustomEvent).detail as MessengerSubscribeEventDetail);\n // console.log('--->', detail)\n const channel = this.createChannel(detail.obj, detail.key);\n detail.init(channel, channel.subscribe(detail.subscribe));\n });\n }\n\n public static publish(window: Window, detail: MessengerEventDetail) {\n window.dispatchEvent(new CustomEvent(Messenger.EVENT_PUBLISH_KEY, {detail}));\n }\n\n public static subscribe(window: Window, detail: MessengerSubscribeEventDetail) {\n window.dispatchEvent(new CustomEvent(Messenger.EVENT_SUBSCRIBE_KEY, {detail}));\n }\n\n createChannel(obj: any, key = obj.constructor.name): Channel {\n const channel = DomRenderFinalProxy.final(new Channel(this, obj, key)) as Channel;\n this.channels.add(channel);\n // this.channels.get(key) ? this.channels.get(key)!.push(channel) : this.channels.set(key, [channel]);\n return channel;\n }\n\n deleteChannel(channel: Channel) {\n this.channels.delete(channel);\n }\n\n deleteChannelFromObj(obj: any) {\n if (obj) {\n this.channels.forEach(it => {\n if (it.obj === obj) {\n // console.log('dddddddddddd', obj)\n this.deleteChannel(it);\n }\n });\n }\n }\n\n addChannel(channel: Channel) {\n this.channels.add(channel);\n }\n\n getChannels(key: string | object | ConstructorType<any>): Channel[] {\n if (typeof key === 'object') {\n key = key.constructor.name;\n } else if (typeof key === 'function') {\n key = key.name;\n }\n return Array.from(this.channels.values()).filter(it => it.key === key);\n }\n\n getAllChannels(): Channel[] {\n return Array.from(this.channels.values());\n }\n\n getAllChannelKeys(): string[] {\n return Array.from(this.channels.values()).map(it => it.key);\n }\n}\n", "import {Messenger} from './Messenger';\n\nexport class DefaultMessenger extends Messenger {\n\n}", "import { Observable } from '../Observable';\n\nexport function debounceTime<T>(duration: number) {\n return (source: Observable<T, any>): Observable<T, any> => {\n return new Observable(subscriber => {\n let timeoutId: any = null;\n let lastValue: T | undefined;\n let hasValue = false;\n\n const subscription = source.subscribe({\n next: (value) => {\n clearTimeout(timeoutId);\n lastValue = value;\n hasValue = true;\n timeoutId = setTimeout(() => {\n if (hasValue) {\n subscriber.next(lastValue!);\n hasValue = false; // Reset after emitting\n }\n }, duration);\n },\n error: (err) => {\n clearTimeout(timeoutId);\n subscriber.error(err);\n },\n complete: () => {\n clearTimeout(timeoutId);\n // Emit the last value if it's pending\n if (hasValue) {\n subscriber.next(lastValue!);\n }\n subscriber.complete();\n }\n });\n return subscription; // Return the subscription for teardown\n });\n };\n}\n", "import { ElementUtils } from '@dooboostore/core-web/element/ElementUtils';\nimport { OnChangeAttrRender, OtherData } from '../lifecycle/OnChangeAttrRender';\nimport { OnCreateRenderData, OnCreateRenderDataParams } from '../lifecycle/OnCreateRenderData';\nimport { RawSet } from '../rawsets/RawSet';\nimport { ConstructorType } from '@dooboostore/core/types';\nimport { OnCreatedThisChild } from '../lifecycle/OnCreatedThisChild';\nimport { DomRenderNoProxy } from '../decorators/DomRenderNoProxy';\nimport { OnInitRender } from '../lifecycle/OnInitRender';\nimport { ConvertUtils } from '@dooboostore/core/convert/ConvertUtils';\nimport { OnDestroyRender, OnDestroyRenderParams } from '../lifecycle/OnDestroyRender';\nimport { OnDrThisUnBind } from '../lifecycle/dr-this/OnDrThisUnBind';\nimport { OnDrThisBind } from '../lifecycle/dr-this/OnDrThisBind';\nimport type { Render } from '../rawsets/Render';\nimport { ReflectUtils } from '@dooboostore/core/reflect/ReflectUtils';\nimport { DomRenderConfig } from '../configs/DomRenderConfig';\nimport { Subject } from '@dooboostore/core/message/Subject';\nimport { debounceTime } from '@dooboostore/core/message/operators/debounceTime';\nimport type { Subscription } from '@dooboostore/core/message/Subscription';\nimport { OnRawSetRendered, OnRawSetRenderedOtherData } from \"../lifecycle/OnRawSetRendered\";\n\n\nexport const ATTRIBUTE_METADATA_KEY = Symbol('attribute');\nexport const QUERY_METADATA_KEY = Symbol('query');\nexport const EVENT_METADATA_KEY = Symbol('event');\n\nexport interface AttributeMetadata {\n propertyKey: string | symbol;\n name: string;\n converter?: (value: any | string | null) => any;\n isMethod: boolean;\n}\n\nexport interface QueryMetadata {\n selector: string;\n propertyKey: string | symbol;\n isMethod: boolean;\n convert?: (e: Element) => any;\n onDestroy?: (componentInstance: any, element: Element) => void;\n refreshTime?: number; // milliseconds\n refreshRawSetRendered?: boolean;\n}\n\nexport interface EventMetadata {\n query: string;\n eventName: string;\n methodName: string | symbol;\n onDestroy?: (componentInstance: any, element: Element) => void;\n refreshTime?: number; // milliseconds\n refreshRawSetRendered?: boolean;\n}\n\nexport function attribute(nameOrOptions?: string | { name?: string, converter?: (value: any | string | null) => any }): (target: object, propertyKey: string | symbol, descriptor?: PropertyDescriptor) => void {\n return (target: object, propertyKey: string | symbol, descriptor?: PropertyDescriptor) => {\n const attributes = ReflectUtils.getMetadata<AttributeMetadata[]>(ATTRIBUTE_METADATA_KEY, target.constructor) || [];\n \n let name: string;\n let converter: ((value: any | string | null) => any) | undefined;\n \n if (typeof nameOrOptions === 'string') {\n name = nameOrOptions;\n } else if (nameOrOptions) {\n name = nameOrOptions.name || String(propertyKey);\n converter = nameOrOptions.converter;\n } else {\n name = String(propertyKey);\n }\n \n const attributeMetadata: AttributeMetadata = {\n propertyKey: propertyKey,\n name: name,\n converter: converter,\n isMethod: !!descriptor\n };\n \n attributes.push(attributeMetadata);\n ReflectUtils.defineMetadata(ATTRIBUTE_METADATA_KEY, attributes, target.constructor);\n };\n}\n\nexport function query(selectorOrOptions: string | { selector: string, convert?: (e: Element) => any, onDestroy?: (componentInstance: any, element: Element) => void, refreshIntervalTime?: number, refreshRawSetRendered?: boolean }): (target: object, propertyKey: string | symbol, descriptor?: PropertyDescriptor) => void {\n return (target: object, propertyKey: string | symbol, descriptor?: PropertyDescriptor) => {\n const queries = ReflectUtils.getMetadata<QueryMetadata[]>(QUERY_METADATA_KEY, target.constructor) || [];\n \n let selector: string;\n let convert: ((e: Element) => any) | undefined;\n let onDestroy: ((componentInstance: any, element: Element) => void) | undefined;\n let refreshTime: number | undefined;\n let refreshRawSetRendered: boolean | undefined;\n\n if (typeof selectorOrOptions === 'string') {\n selector = selectorOrOptions;\n } else {\n selector = selectorOrOptions.selector;\n convert = selectorOrOptions.convert;\n onDestroy = selectorOrOptions.onDestroy;\n refreshTime = selectorOrOptions.refreshIntervalTime;\n refreshRawSetRendered = selectorOrOptions.refreshRawSetRendered;\n }\n \n const queryMetadata: QueryMetadata = {\n selector: selector,\n propertyKey: propertyKey,\n isMethod: !!descriptor,\n convert: convert,\n onDestroy: onDestroy,\n refreshTime: refreshTime,\n refreshRawSetRendered\n };\n \n queries.push(queryMetadata);\n ReflectUtils.defineMetadata(QUERY_METADATA_KEY, queries, target.constructor);\n };\n}\n\nexport function event(options: { query: string, name: string, onDestroy?: (componentInstance: any, element: Element) => void, refreshTime?: number, refreshRawSetRendered?: boolean }): MethodDecorator {\n return (target: object, propertyKey: string | symbol, descriptor: PropertyDescriptor) => {\n const events = ReflectUtils.getMetadata<EventMetadata[]>(EVENT_METADATA_KEY, target.constructor) || [];\n \n const eventMetadata: EventMetadata = {\n query: options.query,\n eventName: options.name,\n methodName: propertyKey,\n onDestroy: options.onDestroy,\n refreshTime: options.refreshTime,\n refreshRawSetRendered: options.refreshRawSetRendered\n };\n \n events.push(eventMetadata);\n ReflectUtils.defineMetadata(EVENT_METADATA_KEY, events, target.constructor);\n };\n}\n\n\nexport type ComponentBaseConfig = { onlyParentType?: ConstructorType<any>[] | ConstructorType<any>, createChildrenDebounce?: number };\n\nexport type ChildrenSet = { instance: any, data: OnCreateRenderDataParams };\n\nexport class ComponentBase<T = any, C extends ComponentBaseConfig = ComponentBaseConfig> implements OnChangeAttrRender, OnCreateRenderData, OnCreatedThisChild, OnDrThisBind, OnDrThisUnBind, OnInitRender, OnDestroyRender, OnRawSetRendered {\n @DomRenderNoProxy\n private _rawSet?: RawSet;\n @DomRenderNoProxy\n private _children: ChildrenSet[] = [];\n @DomRenderNoProxy\n private _render: Render | undefined;\n @DomRenderNoProxy\n private _attribute?: T;\n @DomRenderNoProxy\n private _boundEventListeners: { element: Element, eventName: string, listener: (e: Event) => void }[] = [];\n @DomRenderNoProxy\n private _queryBindings: { element: Element, metadata: QueryMetadata }[] = [];\n @DomRenderNoProxy\n private _eventBindings: { element: Element, metadata: EventMetadata, listener: (e: Event) => void }[] = [];\n @DomRenderNoProxy\n private _refreshTimers: Map<QueryMetadata | EventMetadata, NodeJS.Timeout> = new Map();\n\n @DomRenderNoProxy\n private childrenSetSubject = new Subject<ChildrenSet[]>();\n @DomRenderNoProxy\n private createChildrenDebounceSubscription?: Subscription | undefined;\n\n constructor(private _config?: C) {\n }\n get componentConfig(): C | undefined {\n return this._config;\n }\n get render(): Render | undefined {\n return this._render;\n }\n\n get rawSet(): RawSet | undefined {\n return this._rawSet;\n }\n\n get domRenderConfig(): DomRenderConfig | undefined {\n return this.rawSet?.dataSet.config;\n }\n\n private _queryElements(selector: string, rawSet:RawSet): Element[] {\n const e = this.getElement();\n // console.log('queryElement-->', e);\n if (e) {\n return ElementUtils.querySelectorAll(e, selector);\n } else {\n let startNode = rawSet.point?.start;\n let endNode = rawSet.point?.end;\n // console.log('-----', startNode, endNode)\n // console.log('-----', startNode?.isConnected, endNode?.isConnected)\n if (rawSet.point?.start && startNode && !startNode.isConnected && startNode instanceof HTMLElement && startNode.hasAttribute('id')) {\n rawSet.point.start = startNode = rawSet.dataSet.config.window.document.querySelector('#' + startNode.id) as HTMLMetaElement\n }\n if (rawSet.point?.end && endNode && !endNode.isConnected && endNode instanceof HTMLElement && endNode.hasAttribute('id')) {\n rawSet.point.end = endNode = rawSet.dataSet.config.window.document.querySelector('#' + endNode.id) as HTMLMetaElement\n }\n if (startNode && endNode) {\n // console.log('query!!', startNode, endNode);\n return ElementUtils.querySelectorAll({ start: startNode as Element, end: endNode as Element }, selector);\n }\n }\n return [];\n }\n\n private _cleanupEventListeners() {\n for (const { element, eventName, listener } of this._boundEventListeners) {\n element.removeEventListener(eventName, listener);\n }\n this._boundEventListeners = [];\n }\n\n private _cleanupQueryBindings() {\n for (const { element, metadata } of this._queryBindings) {\n if (metadata.onDestroy) {\n metadata.onDestroy(this, element);\n }\n this._clearRefreshTimer(metadata);\n }\n this._queryBindings = [];\n }\n\n private _cleanupEventBindings() {\n for (const { element, metadata, listener } of this._eventBindings) {\n element.removeEventListener(metadata.eventName, listener);\n if (metadata.onDestroy) {\n metadata.onDestroy(this, element);\n }\n this._clearRefreshTimer(metadata);\n }\n this._eventBindings = [];\n }\n\n private _applyQueryBinding(queryInfo: QueryMetadata, elements: Element[], newElementsOnly: Element[] = elements) {\n const { propertyKey, isMethod, convert } = queryInfo;\n \n // Track bindings for cleanup\n elements.forEach(element => {\n this._queryBindings.push({ element, metadata: queryInfo });\n });\n \n // Apply convert function if provided\n const processedElements = convert ? elements.map(convert) : elements;\n const processedNewElements = convert ? newElementsOnly.map(convert) : newElementsOnly;\n \n if (isMethod) {\n const method = (this as any)[propertyKey];\n if (typeof method === 'function') {\n const paramTypes = ReflectUtils.getParameterTypes(this, propertyKey);\n if (paramTypes && paramTypes.length > 0 && paramTypes[0] === Array) {\n // For array methods, pass only new elements\n method.call(this, processedNewElements, processedElements);\n } else {\n // For single element methods, pass first new element\n if (processedNewElements.length > 0) {\n method.call(this, processedNewElements[0]);\n }\n }\n }\n } else {\n // For properties, always set all elements (not just new ones)\n const propertyType = ReflectUtils.getType(this, propertyKey);\n if (propertyType === Array) {\n (this as any)[propertyKey] = processedElements;\n } else {\n (this as any)[propertyKey] = processedElements[0] || null;\n }\n }\n }\n\n private _setupQueryDecorators(rawSet: RawSet) {\n if (!rawSet) return;\n\n const queries = ReflectUtils.getMetadata<QueryMetadata[]>(QUERY_METADATA_KEY, this.constructor);\n // console.group('_setupQueryDecorators')\n // console.log('queries', queries);\n if (queries && Array.isArray(queries)) {\n for (const queryInfo of queries) {\n const elements = this._queryElements(queryInfo.selector, rawSet);\n // console.log('------elements', elements);\n this._applyQueryBinding(queryInfo, elements);\n \n // Setup refresh timer if specified\n this._setupRefreshTimer(queryInfo);\n }\n }\n // console.groupEnd();\n }\n\n private _updateQueryBinding(queryInfo: QueryMetadata, rawSet: RawSet, forceUpdate = false) {\n const newElements = this._queryElements(queryInfo.selector, rawSet);\n \n // Get current bindings for this query\n const currentBindings = this._queryBindings.filter(binding => binding.metadata === queryInfo);\n const currentElements = currentBindings.map(binding => binding.element);\n \n // Check if elements have changed\n const elementsChanged = forceUpdate || !this._arraysEqual(currentElements, newElements);\n \n if (elementsChanged) {\n let addedElements: Element[] = [];\n \n if (forceUpdate) {\n // Force update: cleanup all old bindings, treat all as new\n currentBindings.forEach(({ element, metadata }) => {\n if (metadata.onDestroy) {\n metadata.onDestroy(this, element);\n }\n });\n addedElements = newElements;\n } else {\n // Smart update: only cleanup removed elements, find added elements\n const removedElements = currentElements.filter(element => !newElements.includes(element));\n addedElements = newElements.filter(element => !currentElements.includes(element));\n \n removedElements.forEach(element => {\n if (queryInfo.onDestroy) {\n queryInfo.onDestroy(this, element);\n }\n });\n }\n \n // Remove old bindings\n this._queryBindings = this._queryBindings.filter(binding => binding.metadata !== queryInfo);\n \n // Apply new bindings, but pass only added elements to methods\n this._applyQueryBinding(queryInfo, newElements, addedElements);\n }\n }\n\n private _updateQueryDecorators(rawSet: RawSet) {\n if (!rawSet) return;\n\n const queries = ReflectUtils.getMetadata<QueryMetadata[]>(QUERY_METADATA_KEY, this.constructor);\n if (queries && Array.isArray(queries)) {\n for (const queryInfo of queries) {\n this._updateQueryBinding(queryInfo, rawSet);\n }\n }\n }\n\n private _arraysEqual(arr1: Element[], arr2: Element[]): boolean {\n if (arr1.length !== arr2.length) return false;\n return arr1.every((element, index) => element === arr2[index]);\n }\n\n private _setupRefreshTimer(metadata: QueryMetadata | EventMetadata) {\n if (!metadata.refreshTime || !this._rawSet) return;\n\n const timer = setInterval(() => {\n if (!this._rawSet) return;\n\n if ('selector' in metadata) {\n // QueryMetadata\n this._updateQueryBinding(metadata as QueryMetadata, this._rawSet);\n } else {\n // EventMetadata\n this._updateEventBinding(metadata as EventMetadata, this._rawSet);\n }\n }, metadata.refreshTime);\n\n this._refreshTimers.set(metadata, timer);\n }\n\n private _clearRefreshTimer(metadata: QueryMetadata | EventMetadata) {\n const timer = this._refreshTimers.get(metadata);\n if (timer) {\n clearInterval(timer);\n this._refreshTimers.delete(metadata);\n }\n }\n\n private _clearAllRefreshTimers() {\n for (const timer of Array.from(this._refreshTimers.values())) {\n clearInterval(timer);\n }\n this._refreshTimers.clear();\n }\n\n async onRawSetRendered(rawSet: RawSet, otherData: OnRawSetRenderedOtherData): Promise<void> {\n const queries = ReflectUtils.getMetadata<QueryMetadata[]>(QUERY_METADATA_KEY, this.constructor);\n if (queries) {\n queries.filter(it => it.refreshRawSetRendered).forEach(queryInfo => {\n this._updateQueryBinding(queryInfo, rawSet, true);\n });\n }\n\n const events = ReflectUtils.getMetadata<EventMetadata[]>(EVENT_METADATA_KEY, this.constructor);\n if (events) {\n events.filter(it => it.refreshRawSetRendered).forEach(eventInfo => {\n this._updateEventBinding(eventInfo, rawSet, true);\n });\n }\n }\n /**\n * Manually refresh all query and event decorators\n * Useful when DOM elements are dynamically added/removed and you want to update bindings\n */\n refreshDecorators(): void {\n if (this._rawSet) {\n this._updateQueryDecorators(this._rawSet);\n this._updateEventDecorators(this._rawSet);\n }\n }\n\n /**\n * Manually refresh specific query decorators by property key\n * @param propertyKeys - Array of property keys to refresh, or single property key\n */\n refreshQueryDecorators(propertyKeys: (string | symbol) | (string | symbol)[]): void {\n if (!this._rawSet) return;\n\n const keys = Array.isArray(propertyKeys) ? propertyKeys : [propertyKeys];\n const queries = ReflectUtils.getMetadata<QueryMetadata[]>(QUERY_METADATA_KEY, this.constructor);\n \n if (queries && Array.isArray(queries)) {\n for (const queryInfo of queries) {\n if (keys.includes(queryInfo.propertyKey)) {\n this._updateQueryBinding(queryInfo, this._rawSet, true); // Force update\n }\n }\n }\n }\n\n /**\n * Manually refresh specific event decorators by method name\n * @param methodNames - Array of method names to refresh, or single method name\n */\n refreshEventDecorators(methodNames: (string | symbol) | (string | symbol)[]): void {\n if (!this._rawSet) return;\n\n const names = Array.isArray(methodNames) ? methodNames : [methodNames];\n const events = ReflectUtils.getMetadata<EventMetadata[]>(EVENT_METADATA_KEY, this.constructor);\n \n if (events && Array.isArray(events)) {\n for (const eventInfo of events) {\n if (names.includes(eventInfo.methodName)) {\n this._updateEventBinding(eventInfo, this._rawSet, true); // Force update\n }\n }\n }\n }\n\n private _applyEventBinding(eventInfo: EventMetadata, elements: Element[]) {\n elements.forEach(element => {\n const listener = (this as any)[eventInfo.methodName].bind(this);\n // console.log('bind?????', element);\n element.addEventListener(eventInfo.eventName, listener);\n \n // Track bindings for cleanup\n this._eventBindings.push({ element, metadata: eventInfo, listener });\n this._boundEventListeners.push({ element, eventName: eventInfo.eventName, listener });\n });\n }\n\n private _setupEventDecorators(rawSet: RawSet) {\n if (!rawSet) return;\n\n const events = ReflectUtils.getMetadata<EventMetadata[]>(EVENT_METADATA_KEY, this.constructor);\n if (events && Array.isArray(events)) {\n for (const eventInfo of events) {\n const elements = this._queryElements(eventInfo.query, rawSet);\n this._applyEventBinding(eventInfo, elements);\n \n // Setup refresh timer if specified\n this._setupRefreshTimer(eventInfo);\n }\n }\n }\n\n private _updateEventBinding(eventInfo: EventMetadata, rawSet: RawSet, forceUpdate = false) {\n const newElements = this._queryElements(eventInfo.query, rawSet);\n \n // Get current bindings for this event\n const currentBindings = this._eventBindings.filter(binding => binding.metadata === eventInfo);\n const currentElements = currentBindings.map(binding => binding.element);\n \n // Check if elements have changed\n const elementsChanged = forceUpdate || !this._arraysEqual(currentElements, newElements);\n \n if (elementsChanged) {\n if (forceUpdate) {\n // Force update: cleanup all old bindings\n currentBindings.forEach(({ element, metadata, listener }) => {\n element.removeEventListener(metadata.eventName, listener);\n if (metadata.onDestroy) {\n metadata.onDestroy(this, element);\n }\n });\n } else {\n // Smart update: only cleanup removed elements\n const removedElements = currentElements.filter(element => !newElements.includes(element));\n const removedBindings = currentBindings.filter(binding => removedElements.includes(binding.element));\n \n removedBindings.forEach(({ element, metadata, listener }) => {\n element.removeEventListener(metadata.eventName, listener);\n if (metadata.onDestroy) {\n metadata.onDestroy(this, element);\n }\n });\n }\n \n // Remove old bindings from tracking arrays\n this._eventBindings = this._eventBindings.filter(binding => binding.metadata !== eventInfo);\n this._boundEventListeners = this._boundEventListeners.filter(binding => \n !currentBindings.some(cb => cb.element === binding.element && cb.metadata.eventName === binding.eventName)\n );\n \n // Apply new bindings\n this._applyEventBinding(eventInfo, newElements);\n }\n }\n\n private _updateEventDecorators(rawSet: RawSet) {\n if (!rawSet) return;\n\n const events = ReflectUtils.getMetadata<EventMetadata[]>(EVENT_METADATA_KEY, this.constructor);\n if (events && Array.isArray(events)) {\n for (const eventInfo of events) {\n this._updateEventBinding(eventInfo, rawSet);\n }\n }\n }\n\n getAttribute<K extends keyof T>(name: K, attribute = this._attribute): T[K] | null {\n const target = attribute as any;\n if (!target) {\n return null;\n }\n\n const nameString = String(name);\n let p = nameString;\n if (p in target) {\n return target[p];\n }\n p = ConvertUtils.snakeToCamelCase(nameString);\n if (p in target) {\n return target[p];\n }\n p = ConvertUtils.camelToSnakeCase(nameString);\n if (p in target) {\n return target[p];\n }\n p = nameString.toUpperCase()\n if (p in target) {\n return target[p];\n }\n p = nameString.toLowerCase()\n if (p in target) {\n return target[p];\n }\n return null;\n }\n\n hasAttribute(name: keyof T) {\n return this.getAttribute(name) !==null;\n }\n\n equalsAttributeName(n: string, name: keyof T) {\n return n === name ||\n ConvertUtils.snakeToCamelCase(n) === name ||\n ConvertUtils.camelToSnakeCase(n) === name ||\n n.toUpperCase() === (name as string).toUpperCase() ||\n n.toLowerCase() === (name as string).toLowerCase()\n ;\n }\n\n get uuid(): string | undefined {\n return this._rawSet?.uuid;\n }\n\n get childrenSet() {\n return this._children;\n }\n\n get children(): any[] {\n return this._children.map(it=>it.instance);\n }\n\n getElement<T extends Element>(): T | undefined {\n return (this.render ?? this.rawSet?.dataSet?.render)?.getElement?.();\n }\n\n getFirstChild<T>(type: ConstructorType<T>): T | undefined {\n return this._children.find(it => it instanceof type)?.instance;\n }\n\n getParentThis<P>():P {\n return this.render?.parentThis as P;\n }\n\n getChildren<C extends ConstructorType<any>>(type: C): InstanceType<C>[];\n getChildren<C extends ConstructorType<any>[]>(types: C): InstanceType<C[number]>[];\n getChildren(typeOrTypes: ConstructorType<any> | ConstructorType<any>[]): any[] {\n const targets = Array.isArray(typeOrTypes) ? typeOrTypes : [typeOrTypes];\n return this._children.filter(childSet =>\n targets.some(targetConstructor => childSet.instance instanceof targetConstructor)\n )?.map(it=>it.instance);\n }\n\n\n\n private setRawSet(rawSet: RawSet) {\n this._rawSet = rawSet;\n if (this._rawSet) {\n this.setAttribute(this._rawSet.dataSet?.render?.attribute as T);\n }\n }\n\n setAttribute(attribute: T) {\n this._attribute = attribute;\n }\n\n // TODO: rawSet isConnected로 체크해서 들어가있는것만 처리되도록 또는 이미들어가있는것도 뺴야될것같은데.. 적용하긴했음..지켜봐야될듯.\n onCreatedThisChild(child: any, data: OnCreateRenderDataParams) {\n // console.log('onCreatedThisChild------------------------',child, data, data.render?.rawSet?.isConnected)\n const n = [...this._children];\n n.push({instance:child, data});\n this._children = n.filter(it=>it.data.render?.rawSet?.isConnected)\n this.childrenSetSubject.next(this._children);\n \n // Update decorators when children change (DOM might have changed)\n // Only update if elements actually changed\n if (this._rawSet) {\n this._updateQueryDecorators(this._rawSet);\n this._updateEventDecorators(this._rawSet);\n }\n }\n\n onCreatedThisChildDebounce(childrenSet: ChildrenSet[]) {\n\n }\n\n onCreateRenderData(data: OnCreateRenderDataParams): void {\n this._render = data.render;\n if (data.render?.rawSet) {\n this.setRawSet(data.render.rawSet);\n }\n if (this._config?.onlyParentType) {\n const isOk = Array.isArray(this._config?.onlyParentType) ? this._config?.onlyParentType : [this._config?.onlyParentType].some(it => data.render?.parentThis instanceof it);\n if (!isOk) {\n throw new Error('only my parentThis ' + this._config?.onlyParentType);\n }\n }\n }\n\n onChangeAttrRender(name: string, value: any, other: OtherData): void {\n if (other.rawSet) {\n this.setRawSet(other.rawSet);\n }\n\n const attributes = ReflectUtils.getMetadata<AttributeMetadata[]>(ATTRIBUTE_METADATA_KEY, this.constructor);\n if (attributes && Array.isArray(attributes)) {\n for (const attrInfo of attributes) {\n if (this.equalsAttributeName(name, attrInfo.name as any)) {\n const finalValue = attrInfo.converter ? attrInfo.converter(value) : value;\n if (attrInfo.isMethod) {\n const method = (this as any)[attrInfo.propertyKey];\n if (typeof method === 'function') {\n method.call(this, finalValue);\n }\n } else {\n (this as any)[attrInfo.propertyKey] = finalValue;\n }\n }\n }\n }\n }\n\n onInitRender(param: any, rawSet: RawSet) {\n this.createChildrenDebounceSubscription = this.childrenSetSubject.pipe(debounceTime(this.componentConfig?.createChildrenDebounce??0)).subscribe(it => {\n this.onCreatedThisChildDebounce(it);\n });\n if (rawSet) {\n this.setRawSet(rawSet);\n\n const e = this.getElement();\n if (e) {\n (e as any).component = this;\n }\n\n // Setup decorators\n this._setupQueryDecorators(rawSet);\n this._setupEventDecorators(rawSet);\n }\n }\n\n onDrThisBind() {\n // Logic moved to onInitRender for robustness\n }\n\n onDrThisUnBind() {\n this.onDestroy();\n }\n\n onDestroyRender(data?: OnDestroyRenderParams): void {\n this.onDestroy();\n }\n\n onDestroy() {\n this._cleanupEventListeners();\n this._cleanupQueryBindings();\n this._cleanupEventBindings();\n this._clearAllRefreshTimers();\n this.createChildrenDebounceSubscription?.unsubscribe();\n }\n\n}\n", "import { ChildrenSet, ComponentBase } from '../ComponentBase';\nimport { DomRender, DomRenderRunConfig } from '../../DomRender';\nimport { RawSet } from '../../rawsets/RawSet';\nimport { OtherData } from '../../lifecycle/OnChangeAttrRender';\nimport { OnInitRender } from '../../lifecycle/OnInitRender';\nimport { ComponentSet } from '../../components/ComponentSet';\nimport { OnDestroyRenderParams } from '../../lifecycle/OnDestroyRender';\nimport { ComponentRouterBase, isOnCreatedOutletDebounce } from '../../components/ComponentRouterBase';\nimport { OnCreateRenderDataParams } from 'src/lifecycle';\nexport namespace RouterOutlet {\n export const selector = 'dr-router-outlet';\n export type Attribute = {\n value: ComponentSet;\n if: boolean | null;\n createArguments: any[];\n onCreated?: (value: any) => void;\n onCreatedDebounce?: (value: any) => void;\n onDestroyRender?: () => void;\n };\n\n export class RouterOutlet extends ComponentBase<Attribute> implements OnInitRender {\n private value?: ComponentSet;\n private if?: boolean | null = null;\n private createArguments?: any[];\n\n setValue(value: ComponentSet) {\n this.value = value;\n // console.log('sssssssssss');\n }\n\n onInitRender(param: any, rawSet: RawSet) {\n super.onInitRender(param, rawSet);\n const c = this.getParentThis();\n const userValue = this.getAttribute('value');\n if (userValue) {\n this.value = userValue;\n } else if (c instanceof ComponentRouterBase) {\n this.value = c.child;\n }\n // console.log('------',c);\n }\n\n onDestroyRender(data: OnDestroyRenderParams) {\n super.onDestroyRender(data);\n }\n\n onChangeAttrRender(name: string, value: any, other: OtherData) {\n super.onChangeAttrRender(name, value, other);\n if (this.equalsAttributeName(name, 'value')) {\n this.value = value;\n }\n if (this.equalsAttributeName(name, 'if')) {\n this.if = value;\n }\n if (this.equalsAttributeName(name, 'createArguments')) {\n this.createArguments = value;\n }\n }\n\n onCreatedThisChild(child:any, data:OnCreateRenderDataParams){\n super.onCreatedThisChild(child, data);\n // console.log('outlet--oncreatedThisChild',child);\n }\n\n onCreatedThisChildDebounce(childrenSet: ChildrenSet[]) {\n super.onCreatedThisChildDebounce(childrenSet);\n let parentThis = this.getParentThis();\n // console.log('---', parentThis);\n if (isOnCreatedOutletDebounce(parentThis)) {\n parentThis.onCreatedOutletDebounce(this.value?.obj);\n }\n this.getAttribute('onCreatedDebounce')?.(this.value?.obj);\n }\n created(component: any) {\n component ??= this.value?.obj;\n this.getAttribute('onCreated')?.(component);\n }\n }\n}\n\nexport default {\n // TODO: \uC65C \uC774\uB188\uB9CC webpack\uC5D0\uC11C \uC21C\uD658\uCC38\uC870 \uC5D0\uB7EC\uB098\uB294\uC9C0\uBAA8\uB974\uACA0\uB2E4.. \uC65C \uC774\uB188\uB9CC.. \uADF8\uB798\uC11C \uC774\uB807\uAC8C \uD558\uAE34\uD568.\n routerOutlet: (config?: DomRenderRunConfig, executer?: { run: (...data: any[]) => any }) => {\n return RawSet.createComponentTargetElement({\n name: RouterOutlet.selector,\n template:\n '<div dr-this=\"@this@.value\" dr-detect-option-if=\"@this@?.value && @this@?.if\" dr-option-strip=\"true\" dr-on-create:arguments=\"@this@.createArguments\" dr-on-create:callback=\"@this@?.created?.($component)\">#innerHTML#</div>',\n objFactory: (e, o, r2, counstructorParam) => {\n return executer?.run({ rootObject: new RouterOutlet.RouterOutlet(...counstructorParam), config: config });\n }\n });\n }\n};\n", "import { ChildrenSet, ComponentBase, ComponentBaseConfig } from './ComponentBase';\nimport { ComponentSet } from './ComponentSet';\nimport { isOnDrThisUnBind } from '../lifecycle/dr-this/OnDrThisUnBind';\nimport {RouterOutlet} from '../components/router/RouterOutlet';\n\nexport interface OnCreatedOutlet {\n onCreatedOutlet(child: any): void;\n}\nexport const isOnCreatedOutlet = (obj: any): obj is OnCreatedOutlet =>\n typeof obj?.onCreatedOutlet === 'function';\n\nexport interface OnCreatedOutletDebounce {\n onCreatedOutletDebounce(child: any): void;\n}\nexport const isOnCreatedOutletDebounce = (obj: any): obj is OnCreatedOutletDebounce =>\n typeof obj?.onCreatedOutletDebounce === 'function';\nexport type ComponentRouterBaseConfig = ComponentBaseConfig & { sameRouteNoApply?: boolean };\n\nexport abstract class ComponentRouterBase<T = any>\n extends ComponentBase<T, ComponentRouterBaseConfig>\n{\n // OnDrThisBind\n public child?: ComponentSet;\n\n constructor(_config?: ComponentRouterBaseConfig) {\n super(_config);\n }\n\n // get child() {\n // return this._child;\n // }\n\n\n setChild(child: ComponentSet) {\n console.log('setChild!!', child, (this as any).name)\n if (child) {\n this.child = child;\n } else {\n this.child = undefined;\n }\n const routerOutletChildren = this.getChildren(RouterOutlet.RouterOutlet);\n routerOutletChildren.forEach(it => {\n it.setValue(this.child)\n })\n }\n\n onDrThisUnBind(): void {\n super.onDrThisUnBind();\n if (this.child && isOnDrThisUnBind(this.child?.obj)) {\n this.child.obj.onDrThisUnBind();\n }\n }\n\n onCreatedThisChildDebounce(childrenSet: ChildrenSet[]) {\n super.onCreatedThisChildDebounce(childrenSet);\n }\n\n\n}\n", "import { attribute, ComponentBase } from '../ComponentBase';\nimport { DomRender, DomRenderRunConfig } from '../../DomRender';\nimport { RawSet } from '../../rawsets/RawSet';\n\nexport namespace A {\n export const selector = 'dr-a';\n\n export type ClickCallbackData = {\n event: MouseEvent,\n attributes: {\n href: string | null;\n target: string | null;\n style: string | null;\n class: string | null;\n replace?: boolean;\n scrollToTop?: boolean;\n }\n }\n\n export type Attribute = {\n href?: string | null;\n target?: string | null;\n style?: string | null;\n class?: string | null;\n click?: ((data: ClickCallbackData) => void) | null;\n replace?: boolean | null;\n scrollToTop?: boolean | null;\n };\n\n export class A extends ComponentBase<Attribute> {\n @attribute({ converter: v => v || null }) href: string | null = null;\n @attribute({ converter: v => v || null }) target: string | null = null;\n @attribute({ converter: v => v || null }) style: string | null = null;\n @attribute({ name: 'class', converter: v => v || null }) classAttr: string | null = null;\n @attribute() click?: ((data: ClickCallbackData) => void) | null = null;\n @attribute({ converter: v => v !== null && String(v) !== 'false' }) replace = false;\n @attribute({ converter: v => v !== null && String(v) !== 'false' }) scrollToTop = true;\n\n onClick(event: MouseEvent) {\n if (this.click) {\n const attributes = {\n href: this.href,\n target: this.target,\n style: this.style,\n class: this.classAttr,\n replace: this.replace,\n scrollToTop: this.scrollToTop\n };\n this.click({ event, attributes });\n }\n\n if (event.defaultPrevented) {\n return;\n }\n\n if (this.target !== '_blank' && this.href) {\n event.preventDefault();\n // console.log('scrollTop', this.scrollToTop);\n this.domRenderConfig?.router?.go({path: this.href, replace: this.replace, scrollToTop: this.scrollToTop });\n }\n }\n }\n}\n\nexport default {\n a: (config?: DomRenderRunConfig) => {\n return RawSet.createComponentTargetElement({\n name: A.selector,\n template: `<a\n href=\"\\${@this@.href}$\"\n target=\"\\${@this@.target}$\"\n style=\"\\${@this@.style}$\"\n class=\"\\${@this@.classAttr}$\"\n dr-event-click=\"@this@.onClick($event)\"\n >#innerHTML#</a>`,\n objFactory: (e, o, r2, constructorParam) => {\n return DomRender.run({ rootObject: new A.A(...constructorParam), config });\n },\n });\n },\n};\n", "import { ComponentBase } from '../ComponentBase';\nimport { DomRender, DomRenderRunConfig } from '../../DomRender';\nimport { RawSet } from '../../rawsets/RawSet';\nimport { OtherData } from '../../lifecycle/OnChangeAttrRender';\nimport { OnInitRender } from '../../lifecycle/OnInitRender';\nimport { Appender as DomRenderAppender } from '../../operators/Appender';\n\n\nexport namespace Appender {\n export const selector = 'dr-appender';\n // export type AppenderInterface<D> = {\n // push(...data:D[]):void;\n // set(key: string, ...v:D[]):void\n // delete(key: string):void\n // clear():void\n // }\n export type Attribute<D> = {\n value: DomRenderAppender<D>;\n onCreate?: (appender: DomRenderAppender) => void;\n }\n\n // @Component({\n // template: '<div dr-appender=\"@this@.appender\" dr-option-strip=\"true\">#innerHTML#</div>',\n // selector: `${selector}`\n // })\n export class Appender<D> extends ComponentBase<Attribute<D>> implements OnInitRender {\n private value?:DomRenderAppender\n\n // onCreateRender(...param: any) {\n // console.log('--onCreateRender')\n // }\n\n // test() {\n // console.log('t', this.getAttribute('appender'))\n // }\n onInitRender(param: any, rawSet: RawSet) {\n // console.log('--onInitRender onInitRender')\n super.onInitRender(param, rawSet);\n\n\n }\n\n // push(...data:D[]) {\n // console.log('push/////', data);\n // this.appender.push(...data);\n // }\n //\n // set(key: string, v: D): void {\n // this.appender.set(key, v)\n // }\n //\n // delete(key: string): void {\n // this.appender.delete(key);\n // }\n //\n // clear(): void {\n // this.appender.clear();\n // }\n\n\n\n\n onChangeAttrRender(name: string, value: any, other: OtherData) {\n super.onChangeAttrRender(name, value, other);\n if(this.equalsAttributeName(name, 'value')) {\n this.value = value;\n }\n // console.log('------>appender', name, value);\n }\n }\n}\n\n\nexport default {\n appender: (config?: DomRenderRunConfig) => {\n return RawSet.createComponentTargetElement({\n name: Appender.selector,\n template: '<div dr-appender=\"@this@.value\" dr-option-strip=\"true\">#innerHTML#</div>',\n objFactory: (e,o,r2, counstructorParam) => {\n return DomRender.run({rootObject: new Appender.Appender(...counstructorParam), config: config});\n }\n })\n },\n}\n\n\n", "import { ComponentBase } from '../ComponentBase';\nimport { DomRender, DomRenderRunConfig } from '../../DomRender';\nimport { RawSet } from '../../rawsets/RawSet';\nimport { OtherData } from '../../lifecycle/OnChangeAttrRender';\nimport { OnInitRender } from '../../lifecycle/OnInitRender';\nimport { ComponentSet } from '../../components/ComponentSet';\nimport { OnCreateRenderDataParams } from '../../lifecycle/OnCreateRenderData';\n\nexport namespace CheckBox {\n export const selector = 'dr-checkbox';\n export type Attribute = {\n class?: string;\n }\n export type ChangeOption = { type: 'initialize' | 'event' | 'attributeChange' };\n export type WrapAttribute = {\n class?: string;\n name?: string;\n checked?: boolean;\n change?: (checked: boolean, option: ChangeOption) => void\n }\n\n class CheckBoxBase extends ComponentBase<Attribute> {\n public hidden = true;\n }\n\n // @Component({\n // template: '<div dr-if=\"!@this@.hidden\" dr-strip=\"true\">#innerHTML#</div>',\n // styles: '',\n // selector: `${selector}.Checked`\n // })\n export class Checked extends CheckBoxBase {\n public name = 'checked';\n\n constructor() {\n super({onlyParentType: CheckBox});\n }\n }\n\n // @Component({\n // template: '<div dr-if=\"!@this@.hidden\" dr-strip=\"true\">#innerHTML#</div>',\n // styles: '',\n // selector: `${selector}.UnChecked`\n // })\n export class UnChecked extends CheckBoxBase {\n public name = 'unChecked';\n\n constructor() {\n super({onlyParentType: CheckBox});\n }\n }\n\n // @Component({\n // template: template,\n // styles: style,\n // selector: `${selector}`\n // })\n export class CheckBox extends ComponentBase<WrapAttribute> {\n private checked = false;\n private inputElement?: HTMLInputElement;\n\n change(option: ChangeOption, checked?: boolean) { checked = checked ?? this.checked;\n this.checked = checked;\n this.setChildrenHidden(checked);\n this.getAttribute('change')?.(checked, option);\n }\n\n private setChildrenHidden(checked: boolean) {\n this.getChildren(Checked).forEach(it => {\n it.hidden = !checked;\n });\n this.getChildren(UnChecked).forEach(it => {\n it.hidden = checked;\n });\n }\n\n onCreatedThisChild(child: CheckBoxBase, childData: OnCreateRenderDataParams): void {\n super.onCreatedThisChild(child, childData);\n this.setChildrenHidden(this.checked);\n }\n\n onInitInputElement(element: HTMLInputElement) {\n // console.log('---cr', element)\n this.inputElement = element;\n this.inputElement.checked = !!this.getAttribute('checked');\n this.change({type: 'initialize'}, !!this.getAttribute('checked'));\n }\n\n onChangeAttrRender(name: string, val: any, other: OtherData) {\n super.onChangeAttrRender(name, val, other);\n // console.log('Checkbox ChangeAttr------', name, val, this.inputElement)\n if (this.inputElement && this.getAttribute('checked') !== this.checked) {\n this.inputElement.checked = !!this.getAttribute('checked');\n this.change({type: 'attributeChange'}, !!this.getAttribute('checked'));\n }\n }\n\n }\n}\n\n\n\nexport default {\n checkBoxChecked: (config?: DomRenderRunConfig) => {\n return RawSet.createComponentTargetElement({\n name: `${CheckBox.selector}-checked`,\n template: '<div dr-if=\"!@this@.hidden\" dr-option-strip=\"true\">#innerHTML#</div>',\n objFactory: (e,o,r2, counstructorParam) => {\n return DomRender.run({rootObject: new CheckBox.Checked(), config: config});\n }\n })\n },\n checkBoxUnchecked: (config?: DomRenderRunConfig) => {\n return RawSet.createComponentTargetElement({\n name: `${CheckBox.selector}-unchecked`,\n template: '<div dr-if=\"!@this@.hidden\" dr-option-strip=\"true\" >#innerHTML#</div>',\n objFactory: (e,o,r2, counstructorParam) => {\n return DomRender.run({rootObject: new CheckBox.UnChecked(), config: config});\n }\n })\n },\n checkBox: (config?: DomRenderRunConfig) => {\n return RawSet.createComponentTargetElement({\n name: `${CheckBox.selector}`,\n template: '<label class=\"${@this@.getAttribute(\\'class\\')}$\">\\n' +\n ' <input\\n' +\n ' name=\"${@this@.getAttribute(\\'name\\')}$\"\\n' +\n ' dr-on-init=\"@this@.onInitInputElement($element)\"\\n' +\n ' dr-event-change=\"@this@.change({type: \\'event\\'},$element.checked);\"\\n' +\n ' type=\"checkbox\" hidden=\"hidden\"/>\\n' +\n ' #innerHTML#\\n' +\n '</label>',\n objFactory: (e,o,r2, counstructorParam) => {\n return DomRender.run({rootObject: new CheckBox.CheckBox(...counstructorParam), config: config});\n }\n })\n },\n}", "import { ComponentBase } from '../ComponentBase';\nimport { DomRender, DomRenderRunConfig } from '../../DomRender';\nimport { RawSet } from '../../rawsets/RawSet';\nimport { OtherData } from '../../lifecycle/OnChangeAttrRender';\nimport { OnInitRender } from '../../lifecycle/OnInitRender';\nimport { ComponentSet } from '../../components/ComponentSet';\nimport { OnCreateRenderDataParams } from '../../lifecycle/OnCreateRenderData';\n\nexport namespace Choose {\n export const selector = 'dr-choose';\n export type Attribute<D> = {\n data: D;\n }\n export type WhenAttribute<D> = {\n test: (data?: D | null) => boolean;\n }\n\n class ChildOtherWiseBase<A> extends ComponentBase<A> {\n public hidden = true;\n }\n\n class ChildBase<D> extends ChildOtherWiseBase<WhenAttribute<D>> {\n data?: D;\n }\n\n export class When<D> extends ChildBase<D> {\n constructor() {\n super({onlyParentType: Choose<D>});\n }\n }\n\n export class OtherWise<D> extends ChildBase<D> {\n constructor() {\n super({onlyParentType: Choose<D>});\n }\n }\n\n export class Choose<D> extends ComponentBase<Attribute<D>> {\n\n private choose?: When<D> | OtherWise<D>;\n\n onCreatedThisChild(child: any, data: OnCreateRenderDataParams) {\n super.onCreatedThisChild(child, data);\n this.setChange(child);\n }\n\n onChangeAttrRender(name: string, value: any, other: OtherData) {\n super.onChangeAttrRender(name, value, other);\n if (this.equalsAttributeName(name, 'data')) {\n this.choose = undefined;\n const children = this.getChildren([When, OtherWise]).sort((a, b) => (a instanceof OtherWise ? 1 : 0) - (b instanceof OtherWise ? 1 : 0));\n children.forEach(it => this.setChange(it as any));\n\n }\n }\n\n private setChange(child: When<D> | OtherWise<D>) {\n child.data = this.getAttribute('data') as any;\n // when.hidden = true;\n\n console.log('eeeeeee?', child, child.getAttribute('test'), this.getAttribute('data'));\n if (!this.choose && child instanceof When && child.getAttribute('test')?.(this.getAttribute('data'))) {\n console.log('eeeeeee?2');\n // console.log('------------', child.attribute?.test?.(this.attribute?.data))\n this.choose = child;\n if (child.hidden) {\n child.hidden = false;\n }\n // console.log('--------', when)\n } else if (this.choose !== child) {\n child.hidden = true;\n }\n\n console.log('eeeeeee?3');\n if (!this.choose && child instanceof OtherWise) {\n this.choose = child;\n if (child.hidden) {\n child.hidden = false;\n }\n }\n console.log('eeeeeee?34');\n }\n }\n}\n\n\nexport default {\n chooseWhen: (config?: DomRenderRunConfig) => {\n return RawSet.createComponentTargetElement({\n name: `${Choose.selector}-when`,\n template: '<div dr-if=\"!@this@.hidden\" dr-option-strip=\"true\" >#innerHTML#</div>',\n objFactory: (e, o, r2, counstructorParam) => {\n return DomRender.run({rootObject: new Choose.When(), config: config});\n }\n })\n },\n chooseOtherWise: (config?: DomRenderRunConfig) => {\n return RawSet.createComponentTargetElement({\n name: `${Choose.selector}-other-wise`,\n template: '<div dr-if=\"!@this@.hidden\" dr-option-strip=\"true\" >#innerHTML#</div>',\n objFactory: (e, o, r2, counstructorParam) => {\n return DomRender.run({rootObject: new Choose.OtherWise(), config: config});\n }\n })\n },\n choose: (config?: DomRenderRunConfig) => {\n return RawSet.createComponentTargetElement({\n name: `${Choose.selector}`,\n template: '#innerHTML#',\n objFactory: (e, o, r2, counstructorParam) => {\n return DomRender.run({rootObject: new Choose.Choose(...counstructorParam), config: config});\n }\n })\n },\n}", "import { ComponentBase } from '../ComponentBase';\nimport { DomRender, DomRenderRunConfig } from '../../DomRender';\nimport { RawSet } from '../../rawsets/RawSet';\nimport { OtherData } from '../../lifecycle/OnChangeAttrRender';\nimport { OnInitRender } from '../../lifecycle/OnInitRender';\nimport { OnCreateRenderDataParams } from '../../lifecycle/OnCreateRenderData';\nimport { OnCreateRender } from '../../lifecycle/OnCreateRender';\nimport { type Subscription } from '@dooboostore/core/message/Subscription';\nimport { ValidUtils } from '@dooboostore/core-web/valid/ValidUtils';\nimport { EventUtils } from '@dooboostore/core-web/event/EventUtils';\n\n\nexport namespace Details {\n export const selector = 'dr-details';\n\n export type Attribute = {\n class?: string;\n toggle_form_reset?: boolean;\n disableOtherClickClose?: boolean;\n toggle?: (open: boolean) => void;\n }\n export type BodyAttribute = {\n float?: 'bottom-left' | 'bottom-right' | 'top-left' | 'top-right'\n } & Attribute\n\n export type FormAttribute = {\n disabledSubmit?: null;\n submit?: (event: SubmitEvent, element: HTMLFormElement)=>void;\n } & BodyAttribute\n\n // @Component({\n // template: '<summary class=\"${`${@this@.getAttribute(\\'class\\')} details-summary-container`}$\">#innerHTML#</summary>',\n // styles: '',\n // selector: `${selector}.Summary`\n // })\n export class Summary extends ComponentBase<Attribute> {\n constructor() {\n super({onlyParentType: [Details]});\n }\n }\n\n // @Component({\n // template: '<div class=\"${`${@this@.getAttribute(\\'class\\')} details-body-container details-body-${@this@.getAttribute(\\'float\\')}-container`}$\" dr-on-init=\"@this@.$element = $element;\">#innerHTML#</div>',\n // selector: `${selector}.Body`\n // })\n export class Body extends ComponentBase<BodyAttribute> {\n private $element?: HTMLDivElement;\n constructor() {\n super({onlyParentType: [Details]});\n }\n }\n\n export const isBody = (instance: any): instance is Body => {\n return instance instanceof Body;\n }\n\n\n\n\n // @Component({\n // template: '<form class=\"${`${@this@.getAttribute(\\'class\\')} details-body-container details-body-${@this@.getAttribute(\\'float\\')}-container details-form-container`}$\" dr-on-init=\"@this@.$element = $element;\" dr-event-submit=\"@this@.submit($element,$event);\">#innerHTML#</form>',\n // styles: detailsFormStyle,\n // selector: `${selector}.Form`\n // })\n export class Form extends ComponentBase<FormAttribute> {\n private $element?: HTMLFormElement;\n constructor() {\n super({onlyParentType: [Details]});\n }\n submit(element: HTMLFormElement, event: SubmitEvent) {\n if (this.hasAttribute('disabledSubmit')) {\n event.preventDefault();\n }\n if (this.hasAttribute('submit')) {\n this.getAttribute('submit')?.(event, element);\n }\n }\n reset() {\n this.$element?.reset();\n }\n }\n export const isForm = (instance: any): instance is Form => {\n return instance instanceof Form;\n }\n\n // @Component({\n // template: template,\n // styles: style,\n // // noStrip: true,\n // selector: `${selector}`\n // })\n export class Details extends ComponentBase<Attribute> implements OnCreateRender, OnInitRender {\n // private detailsElement?: HTMLDetailsElement;\n private documentClickSubscription?: Subscription;\n private toggleSubscription?: Subscription;\n private element?: HTMLDetailsElement;\n onCreateRenderData(data: OnCreateRenderDataParams) {\n super.onCreateRenderData(data);\n }\n\n onCreateRender(...param: any[]): void {\n }\n\n toggle(element: HTMLDetailsElement) {\n const toggleAttribute = this.getAttribute('toggle');\n if (toggleAttribute) {\n toggleAttribute?.(element.open);\n }\n }\n onInitRender(param: any, rawSet: RawSet): void {\n super.onInitRender(param,rawSet);\n\n if (ValidUtils.isBrowser() && this.rawSet?.dataSet.config.window) {\n const detailsElement = this.element;\n\n const document = this.rawSet.dataSet!.config!.window!.document!;\n this.documentClickSubscription = EventUtils.htmlElementEventObservable(document, 'click').subscribe(event => {\n if (this.getAttribute('disableOtherClickClose')) {\n return;\n }\n if (detailsElement && !detailsElement?.contains(event?.target as Node)){\n detailsElement.open = false;\n }\n })\n if (detailsElement) {\n this.toggleSubscription = EventUtils.htmlElementEventObservable(detailsElement, 'toggle').subscribe(it => {\n if (ValidUtils.coreValidUtils.isNotNullUndefined(this.getAttribute('toggle_form_reset'))) {\n this.children?.filter(isForm).forEach(it => {\n it.reset();\n })\n }\n })\n }\n }\n // console.log('aaaaaaaaaaaaaaaaaaaaa', rawSet);\n }\n\n onChangeAttrRender(name: string, value: any, other: OtherData) {\n super.onChangeAttrRender(name, value, other);\n }\n\n\n onDestroyRender(...metaData: any[]): void {\n this.toggleSubscription?.unsubscribe();\n this.documentClickSubscription?.unsubscribe();\n // console.log('onDestroyRender', metaData);\n // if (ValidUtils.isBrowser()) {\n // document.removeEventListener('click', this.ccc)\n // }\n }\n\n // changeAttribute(attribute: { className: string } | undefined) {\n // }\n\n }\n}\n\nexport default {\n detailsSummary: (config?: DomRenderRunConfig) => {\n return RawSet.createComponentTargetElement({\n name: `${Details.selector}-summary`,\n template: '<summary class=\"${`${@this@.getAttribute(\\'class\\')} details-summary-container`}$\">#innerHTML#</summary>',\n objFactory: (e,o,r2, counstructorParam) => {\n return DomRender.run({rootObject: new Details.Summary(), config: config});\n }\n })\n },\n detailsBody: (config?: DomRenderRunConfig) => {\n return RawSet.createComponentTargetElement({\n name: `${Details.selector}-body`,\n template: '<div class=\"${`${@this@.getAttribute(\\'class\\')} details-body-container details-body-${@this@.getAttribute(\\'float\\')}-container`}$\" dr-on-init=\"@this@.$element = $element;\">#innerHTML#</div>',\n objFactory: (e,o,r2, counstructorParam) => {\n return DomRender.run({rootObject: new Details.Body(), config: config});\n }\n })\n },\n detailsForm: (config?: DomRenderRunConfig) => {\n return RawSet.createComponentTargetElement({\n name: `${Details.selector}-form`,\n template: '<form class=\"${`${@this@.getAttribute(\\'class\\')} details-body-container details-body-${@this@.getAttribute(\\'float\\')}-container details-form-container`}$\" dr-on-init=\"@this@.$element = $element;\" dr-event-submit=\"@this@.submit($element,$event);\">#innerHTML#</form>',\n objFactory: (e,o,r2, counstructorParam) => {\n return DomRender.run({rootObject: new Details.Form(), config: config});\n }\n })\n },\n details: (config?: DomRenderRunConfig) => {\n return RawSet.createComponentTargetElement({\n name: `${Details.selector}`,\n styles: `\n .details-container {\n position: relative;\n }\n\n .details-container .details-body-container {\n position: absolute;\n }\n\n\n .details-container .details-body-bottom-left-container {\n position: absolute;\n left: 0;\n top: 100%;\n /*margin-top: 0px;*/\n /*width: max-content;*/\n }\n\n .details-container .details-body-bottom-right-container {\n position: absolute;\n right: 0;\n top: 100%;\n /*margin-top: 0px;*/\n /*width: max-content;*/\n }\n\n .details-container .details-body-top-left-container {\n position: absolute;\n left: 0;\n bottom: 100%;\n /*margin-bottom: 0px;*/\n /*width: max-content;*/\n }\n\n .details-container .details-body-top-right-container {\n position: absolute;\n right: 0;\n bottom: 100%;\n /*margin-bottom: 0px;*/\n }\n `,\n template: '<details class=\"${`${@this@.getAttribute(\\'class\\')} details-container`}$\" dr-on-init=\"@this@.element = $element;\" dr-event-toggle=\"@this@.toggle($element)\"> #innerHTML# </details>',\n objFactory: (e,o,r2, counstructorParam) => {\n return DomRender.run({rootObject: new Details.Details(...counstructorParam), config: config});\n }\n })\n },\n}", "import { ComponentBase } from '../ComponentBase';\nimport { DomRender, DomRenderRunConfig } from '../../DomRender';\nimport { RawSet } from '../../rawsets/RawSet';\nimport { OtherData } from '../../lifecycle/OnChangeAttrRender';\n\n\nexport namespace ForOf {\n export const selector = 'System:ForOf';\n export type Attribute<D> = {\n value: D;\n }\n\n // @Component({\n // template: '<div dr-for-of=\"@this@.data\" dr-option-strip=\"true\">#innerHTML#</div>',\n // selector: `${selector}`\n // })\n export class ForOf<D> extends ComponentBase<Attribute<D>> {\n private value?: D;\n\n onChangeAttrRender(name: string, value: any, other: OtherData) {\n super.onChangeAttrRender(name, value, other);\n if (this.equalsAttributeName(name, 'value')) {\n this.value = value;\n }\n }\n\n }\n}\n\n\nexport default {\n forOf: (config?: DomRenderRunConfig) => {\n return RawSet.createComponentTargetElement({\n name: ForOf.selector,\n template: '<div dr-for-of=\"@this@.data\" dr-option-strip=\"true\">#innerHTML#</div>',\n objFactory: (e,o,r2, counstructorParam) => {\n return DomRender.run({rootObject: new ForOf.ForOf(...counstructorParam), config: config});\n }\n })\n },\n}", "import { ComponentBase } from '../ComponentBase';\nimport { OtherData } from '../../lifecycle/OnChangeAttrRender';\nimport { DomRender, DomRenderRunConfig } from '../../DomRender';\nimport { OnInitRender } from '../../lifecycle/OnInitRender';\nimport { RawSet } from '../../rawsets/RawSet';\nimport { DomRenderConfig } from '../../configs/DomRenderConfig';\n\nexport namespace If {\n export const selector = 'dr-if';\n // export type AppenderInterface<D> = {\n // push(...data:D[]):void;\n // set(key: string, ...v:D[]):void\n // delete(key: string):void\n // clear():void\n // }\n export type Attribute<D> = {\n value?: null | boolean;\n }\n\n export class If<D> extends ComponentBase<Attribute<D>> implements OnInitRender {\n private sw: boolean = false;\n\n onInitRender(param: any, rawSet: RawSet) {\n super.onInitRender(param, rawSet);\n }\n\n onChangeAttrRender(name: string, value: any, other: OtherData) {\n super.onChangeAttrRender(name, value, other);\n\n if (this.equalsAttributeName(name, 'value')) {\n // console.log('------',this,name, value)\n this.sw = value;\n }\n }\n }\n}\n\n// const iif = DomRender.createComponent({\n// type: If.If,\n// tagName: If.selector,\n// template: '<div dr-if=\"@this@.sw\" dr-option-strip=\"true\">#innerHTML#</div>' });\nexport default {\n if: (config?: DomRenderConfig) => {\n\n\n // if (!customElements.get(If.selector)) {\n // customElements.define(If.selector, class extends HTMLElement {\n // constructor() {\n // super();\n // this.hidden = true;\n // }\n // });\n // }\n\n return RawSet.createComponentTargetElement({\n name: If.selector,\n template: '<div dr-if=\"@this@.sw\" dr-option-strip=\"true\">#innerHTML#</div>',\n objFactory: (e, o, r2, counstructorParam) => {\n return DomRender.run({rootObject: new If.If(...counstructorParam), config: config});\n }\n })\n },\n}\n", "import { Observable } from '../Observable';\n\nexport function map<T, R>(project: (value: T, index: number) => R) {\n return (source: Observable<T, any>): Observable<R, any> => {\n return new Observable(subscriber => {\n let index = 0;\n const subscription = source.subscribe({\n next: (value) => {\n try {\n subscriber.next(project(value, index++));\n } catch (err) {\n subscriber.error(err as any);\n }\n },\n error: (err) => {\n subscriber.error(err);\n },\n complete: () => {\n subscriber.complete();\n }\n });\n return subscription; // Return the subscription for teardown\n });\n };\n}\n", "import { Observable } from '../Observable';\n\nexport function distinctUntilChanged<T>(\n comparator?: (prev: T, curr: T) => boolean\n) {\n return (source: Observable<T, any>): Observable<T, any> => {\n return new Observable(subscriber => {\n let hasValue = false;\n let previousValue: T;\n\n const subscription = source.subscribe({\n next: (value) => {\n const areEqual = hasValue\n ? comparator\n ? comparator(previousValue, value)\n : previousValue === value\n : false;\n\n if (!areEqual) {\n hasValue = true;\n previousValue = value;\n subscriber.next(value);\n }\n },\n error: (err) => {\n subscriber.error(err);\n },\n complete: () => {\n subscriber.complete();\n }\n });\n return subscription; // Return the subscription for teardown\n });\n };\n}\n", "import { ComponentBase } from '../ComponentBase';\nimport { DomRender, DomRenderRunConfig } from '../../DomRender';\nimport { RawSet } from '../../rawsets/RawSet';\nimport { OtherData } from '../../lifecycle/OnChangeAttrRender';\nimport { OnCreateRender } from '../../lifecycle/OnCreateRender';\nimport { OnDestroyRender, OnDestroyRenderParams } from '../../lifecycle/OnDestroyRender';\nimport { Subscription } from '@dooboostore/core/message/Subscription';\nimport { ValidUtils } from '@dooboostore/core/valid/ValidUtils';\nimport { map } from '@dooboostore/core/message/operators/map';\nimport { EventUtils } from '@dooboostore/core-web/event/EventUtils';\nimport { debounceTime } from '@dooboostore/core/message/operators/debounceTime';\nimport { distinctUntilChanged } from '@dooboostore/core/message/operators/distinctUntilChanged';\n\n\nexport namespace Input {\n export const selector = `dr-input`;\n export type Attribute = {\n name?: string;\n type?: string;\n id?: string;\n class?: string;\n debounceTime?: number;\n distinct?: boolean;\n input?: (value: string, element: Element) => void\n\n }\n\n export class Base extends ComponentBase<any> {\n\n }\n\n // @Component({\n // selector: `${selector}`,\n // template,\n // styles,\n // })\n export class Input extends Base implements OnCreateRender, OnDestroyRender {\n private element?: HTMLInputElement;\n private inputSubscription?: Subscription;\n private resetSubscripton?: Subscription;\n\n onCreateRender(...param: any[]): void {\n }\n\n\n onInitRender(param: any, rawSet: RawSet) {\n super.onInitRender(param, rawSet);\n // console.log('dr-input, rawSet', rawSet)\n const inputElement = this.element;\n const debounceTimeAttribute = this.getAttribute('debounceTime');\n const debounceTimeValue = ValidUtils.isNotNullUndefined(debounceTimeAttribute) ? Number(debounceTimeAttribute) : 0;\n const distinct = ValidUtils.isNotNullUndefined(this.getAttribute('distinct'));\n\n if (inputElement) {\n const makeDeboundceDistinctUtilChanged = () => {\n // let result$ = EventUtils.htmlElementEventObservable(inputElement,'input');\n\n let result$ = EventUtils.htmlElementEventObservable(inputElement, 'input').pipe(\n map((event: Event) => {\n const target = event.target;\n if (target instanceof HTMLInputElement) {\n return target.value.trim();\n }\n console.warn('Input event target is not an HTMLInputElement:', target);\n return '';\n })\n );\n\n if (ValidUtils.isNotNullUndefined(debounceTimeValue) && debounceTimeValue > 0) {\n result$ = result$.pipe(debounceTime(debounceTimeValue));\n }\n if (ValidUtils.isNotNullUndefined(distinct) && distinct === true) {\n result$ = result$.pipe(distinctUntilChanged());\n }\n return result$;\n };\n this.inputSubscription = makeDeboundceDistinctUtilChanged().subscribe(it => {\n // console.log('change?????????????', it);\n this.getAttribute('input')?.(it, inputElement);\n });\n\n if (inputElement.form) {\n this.resetSubscripton = EventUtils.htmlElementEventObservable(inputElement.form, 'reset').subscribe(it => {\n // console.log('rrrraaa?,', this.inputSubscription, it)\n this.inputSubscription?.unsubscribe();\n this.inputSubscription = makeDeboundceDistinctUtilChanged().subscribe(it => {\n // console.log('rrrr?')\n this.getAttribute('input')?.(it, inputElement);\n });\n })\n }\n }\n\n\n }\n\n onChangeAttrRender(name: string, value: any, other: OtherData) {\n super.onChangeAttrRender(name, value, other);\n // console.log('-------->',name, value)\n if (name === 'value') {\n // console.log('changeAttribu', name, value)\n // this.wow = {value: value};\n // this.name = value;\n }\n }\n\n onDestroyRender(metaData?: OnDestroyRenderParams): void {\n this.resetSubscripton?.unsubscribe();\n this.inputSubscription?.unsubscribe();\n }\n\n }\n}\n\nexport default {\n input: (config?: DomRenderRunConfig) => {\n return RawSet.createComponentTargetElement({\n name: `${Input.selector}`,\n template: '<Input type=\"${@this@.getAttribute(\\'type\\')}$\" class=\"${@this@.getAttribute(\\'class\\')}$\" id=\"${@this@.getAttribute(\\'id\\')}$\" name=\"${@this@.getAttribute(\\'name\\')}$\" dr-on-init=\"@this@.element=$element\" >#innerHTML#',\n objFactory: (e, o, r2, counstructorParam) => {\n return DomRender.run({rootObject: new Input.Input(...counstructorParam), config: config});\n }\n })\n },\n}", "import { ComponentBase } from '../ComponentBase';\nimport { DomRender, DomRenderRunConfig } from '../../DomRender';\nimport { RawSet } from '../../rawsets/RawSet';\nimport { OtherData } from '../../lifecycle/OnChangeAttrRender';\n\n\nimport { ValidUtils } from '@dooboostore/core/valid/ValidUtils';\nimport { Promises } from '@dooboostore/core/promise/Promises';\nimport { OnCreateRenderDataParams } from '../../lifecycle/OnCreateRenderData';\n\nexport namespace PromiseSwitch {\n export const selector = 'dr-promise-switch';\n export type ChangeParams<T> = { status: 'pending' } | { status: 'finally' } | { status: 'fulfilled', data: T } | { status: 'rejected', data: any };\n export type Attribute = {\n // trigger?: boolean;\n data: Promise<any> | (() => Promise<any>);\n change?: <T>(data: ChangeParams<T>) => void;\n }\n\n class ChildBase<T = any> extends ComponentBase<T> {\n public hidden = true;\n }\n\n // @Component({\n // template: '<div dr-if=\"!@this@.hidden\" dr-strip=\"true\">#innerHTML#</div>',\n // selector: `${selector}.Default`\n // })\n export class Default extends ChildBase {\n }\n\n // @Component({\n // template: '<div dr-if=\"!@this@.hidden\" dr-strip=\"true\">#innerHTML#</div>',\n // selector: `${selector}.Pending`\n // // selector: `System-PromiseSwitch.Pending`\n // })\n export class Pending extends ChildBase<{ defaultView?: null }> {\n // onChangeAttrRender(name: string, value: any, other: OtherData) {\n // super.onChangeAttrRender(name, value, other);\n // if (this.equalsAttributeName(name, 'defaultView')) {\n // // console.log('--------------', value)\n // if (value !== null) {\n // this.hidden = false;\n // } else {\n // this.hidden = true;\n // }\n // // console.log('--------------', this.hidden)\n // }\n // }\n }\n\n // @Component({\n // template: '<div dr-if=\"!@this@.hidden\" dr-strip=\"true\">#innerHTML#</div>',\n // selector: `${selector}.Fulfilled`\n // })\n export class Fulfilled<T = any> extends ChildBase {\n private data?: T;\n\n setData(data: T) {\n this.data = data;\n }\n }\n\n // @Component({\n // template: '<div dr-if=\"!@this@.hidden\" dr-strip=\"true\">#innerHTML#</div>',\n // selector: `${selector}.Rejected`\n // })\n export class Rejected<T = any> extends ChildBase {\n private data?: T;\n\n setData(data: T) {\n this.data = data;\n }\n }\n\n\n /*\n <dr-promise-switch data=\"${@this@.pickWorldPromise}$\">\n ${@nearThis@.promiseState.status}$\n <dr-promise-switch-default>\n <button class=\"random-world-button\" dr-event-click=\"@this@.pickWorld()\">\n <i class=\"fa-solid fa-dice\"></i>\n </button>\n </dr-promise-switch-default>\n <dr-promise-switch-pending>\n <button class=\"random-world-button disabled spin\" >\n <i class=\"fa-solid fa-dice\"></i>\n </button>\n </dr-promise-switch-pending>\n </dr-promise-switch>\n */\n // @Component({\n // template: '#innerHTML#',\n // selector: `${selector}`\n // })\n export class PromiseSwitch extends ComponentBase<Attribute> {\n // private promise?: {\n // state: 'reject' | 'resolve',\n //\n // }\n private promiseState?: Promises.Result.PromiseState<any, unknown>;\n private status?: Promises.Result.PromiseState<any, unknown>[\"status\"];\n\n onCreatedThisChild(child: any, data: OnCreateRenderDataParams) {\n super.onCreatedThisChild(child, data);\n this.childStateChange();\n }\n\n childStateChange() {\n const defaults = this.getChildren(Default);\n const pendings = this.getChildren(Pending);\n const fulfilleds = this.getChildren(Fulfilled);\n const rejecteds = this.getChildren(Rejected);\n const full = [...fulfilleds, ...rejecteds, ...pendings, ...defaults]\n // console.log('----!!!!!!-------', this.promiseState, full)\n if (this.promiseState === undefined) {\n this.status = undefined;\n full.filter(it => !it.hidden).forEach(it => it.hidden = true)\n defaults.filter(it => it.hidden).forEach(it => it.hidden = false);\n pendings.filter(it => it.getAttribute('defaultView') && it.hidden).forEach(it => it.hidden = false);\n } else if (this.promiseState.status === 'pending') {\n this.status = 'pending';\n full.filter(it => !it.hidden).forEach(it => it.hidden = true)\n pendings.filter(it => it.hidden).forEach(it => it.hidden = false);\n } else if (this.promiseState.status === 'fulfilled') {\n this.status = 'fulfilled';\n const value = this.promiseState.value;\n // console.log('-----------fulfilled promises', value);\n full.filter(it => !it.hidden).forEach(it => it.hidden = true)\n fulfilleds.forEach(it => {\n it.setData(value)\n })\n fulfilleds.filter(it => it.hidden).forEach(it => it.hidden = false);\n } else if (this.promiseState.status === 'rejected') {\n this.status = 'rejected';\n const value = this.promiseState.reason;\n full.filter(it => !it.hidden).forEach(it => it.hidden = true)\n rejecteds.forEach(it => {\n it.setData(value)\n })\n rejecteds.filter(it => it.hidden).forEach(it => it.hidden = false);\n }\n return this.status;\n // console.log('----!!!!!!-end------', this.promiseState, full.map(it=>it.hidden))\n }\n\n onChangeAttrRender(name: string, value: any, other: OtherData) {\n super.onChangeAttrRender(name, value, other);\n // console.log('-----------changer promises', name, value, this.getChildren(Default));\n if (this.equalsAttributeName(name, 'data') && value) {\n // this.childStateChange();\n this.promiseState = undefined;\n this.status = undefined;\n this.promiseState = Promises.Result.wrap(typeof value === 'function' ? value() : value as Promise<any>);\n this.getAttribute('change')?.({status: 'pending'});\n this.childStateChange();\n // console.log('----?', this.promiseState)\n this.promiseState.then(data => {\n // console.log('------------then', data);\n this.childStateChange();\n this.getAttribute('change')?.({status: 'fulfilled', data: data});\n return data;\n }).catch((e) => {\n // console.log('catch', e)\n this.childStateChange();\n this.getAttribute('change')?.({status: 'rejected', data: e});\n throw e;\n }).finally(() => {\n // console.log('-------------finally--------rrrrrrrrrrr', this.promiseState)\n // this.childStateChange();\n this.getAttribute('change')?.({status: 'finally'});\n })\n // await this.promiseState;\n\n\n // console.log('---------------------rrrrrrrrrrr', this.promiseState)\n } else if(this.equalsAttributeName(name, 'data') && ValidUtils.isNullOrUndefined(value)) {\n this.promiseState = undefined;\n this.childStateChange();\n }\n }\n }\n}\n\n\nexport default {\n promiseDefault: (config?: DomRenderRunConfig) => {\n return RawSet.createComponentTargetElement({\n name: `${PromiseSwitch.selector}-default`,\n template: '<div dr-if=\"!@this@.hidden\" dr-option-strip=\"true\">#innerHTML#</div>',\n objFactory: (e,o,r2, counstructorParam) => {\n return DomRender.run({rootObject: new PromiseSwitch.Default(...counstructorParam), config: config});\n }\n })\n },\n promisePending: (config?: DomRenderRunConfig) => {\n return RawSet.createComponentTargetElement({\n name: `${PromiseSwitch.selector}-pending`,\n template: '<div dr-if=\"!@this@.hidden\" dr-option-strip=\"true\">#innerHTML#</div>',\n objFactory: (e,o,r2, counstructorParam) => {\n return DomRender.run({rootObject: new PromiseSwitch.Pending(...counstructorParam), config: config});\n }\n })\n },\n promiseFulfilled: (config?: DomRenderRunConfig) => {\n return RawSet.createComponentTargetElement({\n name: `${PromiseSwitch.selector}-fulfilled`,\n template: '<div dr-if=\"!@this@.hidden\" dr-option-strip=\"true\">#innerHTML#</div>',\n objFactory: (e,o,r2, counstructorParam) => {\n return DomRender.run({rootObject: new PromiseSwitch.Fulfilled(...counstructorParam), config: config});\n }\n })\n },\n promiseRejected: (config?: DomRenderRunConfig) => {\n return RawSet.createComponentTargetElement({\n name: `${PromiseSwitch.selector}-rejected`,\n template: '<div dr-if=\"!@this@.hidden\" dr-option-strip=\"true\">#innerHTML#</div>',\n objFactory: (e,o,r2, counstructorParam) => {\n return DomRender.run({rootObject: new PromiseSwitch.Rejected(...counstructorParam), config: config});\n }\n })\n },\n promiseSwitch: (config?: DomRenderRunConfig) => {\n return RawSet.createComponentTargetElement({\n name: `${PromiseSwitch.selector}`,\n template: '#innerHTML#',\n objFactory: (e,o,r2, counstructorParam) => {\n return DomRender.run({rootObject: new PromiseSwitch.PromiseSwitch(...counstructorParam), config: config});\n }\n })\n },\n\n}\n", "import { ComponentBase } from '../ComponentBase';\nimport { DomRender, DomRenderRunConfig } from '../../DomRender';\nimport { RawSet } from '../../rawsets/RawSet';\nimport { OtherData } from '../../lifecycle/OnChangeAttrRender';\nimport { OnInitRender } from '../../lifecycle/OnInitRender';\nimport { ComponentSet } from '../../components/ComponentSet';\nimport { OnCreateRenderDataParams } from '../../lifecycle/OnCreateRenderData';\n\n\n\nexport namespace Radio {\n export const selector = 'System:Radio';\n export type Attribute = {\n class?: string;\n }\n export type LabelAttribute = {\n class?: string;\n name?: string;\n value?: string;\n checked?: boolean;\n on_change_checked?: (checked: boolean, element: HTMLInputElement) => void\n }\n\n class RadioBase extends ComponentBase<Attribute> {\n public hidden = true;\n }\n\n export class Checked extends RadioBase {\n public name = 'Checked';\n\n constructor() {\n super({onlyParentType: Radio});\n }\n }\n\n export class UnChecked extends RadioBase {\n public name = 'unChecked';\n\n constructor() {\n super({onlyParentType: Radio});\n }\n }\n\n export class Radio extends ComponentBase<LabelAttribute> {\n private checked = false;\n private inputElement?: HTMLInputElement;\n\n change(checked?: boolean) { checked = checked ?? this.checked;\n this.checked = checked;\n this.setChildrenHidden(checked);\n console.log('radio checked!!!!!!!', checked, this.checked, this.inputElement?.checked)\n if (this.getAttribute('on_change_checked')) {\n this.getAttribute('on_change_checked')?.(checked, this.inputElement!);\n }\n }\n\n private setChildrenHidden(checked: boolean) {\n this.getChildren(Checked).forEach(it => {\n it.hidden = !checked;\n });\n this.getChildren(UnChecked).forEach(it => {\n it.hidden = checked;\n });\n }\n\n onCreatedThisChild(child: RadioBase, childData: OnCreateRenderDataParams): void {\n super.onCreatedThisChild(child, childData);\n this.setChildrenHidden(this.checked);\n }\n\n onInitInputElement(element: HTMLInputElement) {\n this.inputElement = element;\n }\n\n onChangeAttrRender(name: string, val: any, other: OtherData) {\n super.onChangeAttrRender(name, val, other);\n if (this.inputElement && this.getAttribute('checked') !== this.checked) {\n this.inputElement.checked = !!this.getAttribute('checked');\n console.log('----changeAttribute', this.getAttribute('checked'))\n this.change(!!this.getAttribute('checked'));\n }\n }\n\n }\n}\n\n\n\nexport default {\n radioChecked: (config?: DomRenderRunConfig) => {\n return RawSet.createComponentTargetElement({\n name: `${Radio.selector}-checked`,\n template: '<div dr-if=\"!@this@.hidden\" dr-option-strip=\"true\" >#innerHTML#</div>',\n objFactory: (e,o,r2, counstructorParam) => {\n return DomRender.run({rootObject: new Radio.Checked(), config: config});\n }\n })\n },\n radioUnChecked: (config?: DomRenderRunConfig) => {\n return RawSet.createComponentTargetElement({\n name: `${Radio.selector}-unchecked`,\n template: '<div dr-if=\"!@this@.hidden\" dr-option-strip=\"true\" >#innerHTML#</div>',\n objFactory: (e,o,r2, counstructorParam) => {\n return DomRender.run({rootObject: new Radio.UnChecked(), config: config});\n }\n })\n },\n radio: (config?: DomRenderRunConfig) => {\n return RawSet.createComponentTargetElement({\n name: `${Radio.selector}`,\n template: '<label class=\"${@this@.getAttribute(\\'class\\')}$\">\\n' +\n ' <input\\n' +\n ' name=\"${@this@.getAttribute(\\'name\\')}$\"\\n' +\n ' checked=\"${@this@.getAttribute(\\'checked\\')}$\"\\n' +\n ' value=\"${@this@.getAttribute(\\'value\\')}$\"\\n' +\n ' dr-on-init=\"@this@.onInitInputElement($element)\"\\n' +\n ' dr-event-change=\"@this@.change($element.checked);\"\\n' +\n ' type=\"radio\"\\n' +\n '\\n' +\n ' />\\n' +\n ' ${@this@.getAttribute(\\'checked\\')}$\\n' +\n ' #innerHTML#\\n' +\n '</label>',\n objFactory: (e,o,r2, counstructorParam) => {\n return DomRender.run({rootObject: new Radio.Radio(...counstructorParam), config: config});\n }\n })\n },\n}", "import { attribute, ComponentBase } from '../ComponentBase';\nimport { OtherData } from '../../lifecycle/OnChangeAttrRender';\nimport { DomRender } from '../../DomRender';\nimport { OnInitRender } from '../../lifecycle/OnInitRender';\nimport { RawSet } from '../../rawsets/RawSet';\nimport type { DomRenderConfig } from '../../configs/DomRenderConfig';\nimport { DomRenderNoProxy } from '../../decorators/DomRenderNoProxy';\nimport { OnDestroyRenderParams } from '../../lifecycle/OnDestroyRender';\nimport { Subscription } from '@dooboostore/core/message/Subscription';\nimport { If } from '../if/If';\n\nexport namespace Route {\n export const selector = 'dr-route';\n export type Attribute<D> = {\n value?: null | string;\n }\n\n abstract class CheckerBase<D> extends ComponentBase<Attribute<D>> implements OnInitRender {\n protected sw: boolean = false;\n @attribute({name: 'value'})\n value?: string;\n @DomRenderNoProxy\n private inputDomRenderConfig?: DomRenderConfig;\n private routerSubscription?: Subscription;\n\n constructor(domRenderConfig?: DomRenderConfig) {\n super();\n this.inputDomRenderConfig = domRenderConfig;\n }\n\n onInitRender(param: any, rawSet: RawSet) {\n super.onInitRender(param, rawSet);\n this.routerSubscription = this.inputDomRenderConfig?.router?.observable.subscribe(it => {\n if (this.value && this.inputDomRenderConfig) {\n this.sw = this.check(this.inputDomRenderConfig);\n } else {\n this.sw = false;\n }\n });\n }\n\n onDrThisBind() {\n super.onDrThisBind();\n }\n\n onDrThisUnBind() {\n super.onDrThisUnBind();\n }\n\n onDestroyRender(data?: OnDestroyRenderParams) {\n super.onDestroyRender(data);\n this.routerSubscription?.unsubscribe();\n }\n\n abstract check(config?: DomRenderConfig): boolean;\n }\n\n\n export class Match<D> extends CheckerBase<D> {\n check(config?: DomRenderConfig): boolean {\n return !!config?.router?.test(this.value);\n }\n }\n\n export class Regexp<D> extends CheckerBase<D> {\n check(config?: DomRenderConfig): boolean {\n return !!config?.router?.testRegexp(this.value);\n }\n }\n}\n\nexport default {\n match: (config?: DomRenderConfig) => {\n return RawSet.createComponentTargetElement({\n name: `${Route.selector}-match`,\n template: '<div dr-if=\"@this@.sw\" dr-option-strip=\"true\">#innerHTML#</div>',\n objFactory: (e, o, r2, counstructorParam) => {\n return DomRender.run({rootObject: new Route.Match(config), config: config});\n }\n })\n },\n regexp: (config?: DomRenderConfig) => {\n return RawSet.createComponentTargetElement({\n name: `${Route.selector}-regexp`,\n template: '<div dr-if=\"@this@.sw\" dr-option-strip=\"true\">#innerHTML#</div>',\n objFactory: (e, o, r2, counstructorParam) => {\n return DomRender.run({rootObject: new Route.Regexp(config), config: config});\n }\n })\n },\n}\n", "import { attribute, ChildrenSet, ComponentBase } from '../ComponentBase';\nimport { DomRender, DomRenderRunConfig } from '../../DomRender';\nimport { RawSet } from '../../rawsets/RawSet';\nimport { OnCreateRenderData, OnCreateRenderDataParams } from '../../lifecycle/OnCreateRenderData';\nimport { OnInitRender } from '../../lifecycle/OnInitRender';\nimport { OnDestroyRender } from '../../lifecycle/OnDestroyRender';\nimport { EventUtils } from '@dooboostore/core-web/event/EventUtils';\nimport { type Subscription } from '@dooboostore/core/message/Subscription';\nimport { ValidUtils } from '@dooboostore/core-web/valid/ValidUtils';\nimport { DomRenderNoProxy } from '../../decorators/DomRenderNoProxy';\nimport { OnCreateRender } from '../../lifecycle/OnCreateRender';\nimport { DomRenderConfig } from '../../configs/DomRenderConfig';\nimport { WindowUtils } from '@dooboostore/core-web/window/WindowUtils';\nimport { OnRawSetRenderedOtherData } from 'src/lifecycle';\n\n/** 사용법\n <dr-select class=\"card-select-container\" changeSelected=\"${(data) => @this@.changeSelected(data)}$\"> <!-- multiple attribute optional-->\n <dr-select-summary class=\"card-select-summary-container\">\n <dr-select-summary-placeholder>\n <div class=\"card-select-summary-placeholder-container\">카드사별 사용처 안내 페이지 선택</div>\n </dr-select-summary-placeholder>\n <dr-select-summary-selected>\n <div dr-if=\"@this@.selectedCard\" class=\"card-select-summary-selected-container\">\n <img dr-attr=\"{src:@this@.selectedCard?.iconImg}\"> ${@this@.selectedCard?.name}$\n </div>\n </dr-select-summary-selected>\n </dr-select-summary>\n\n <dr-select-body float=\"bottom-left\" class=\"card-select-body-container\">\n <dr-select-option dr-for-of=\"@this@.cards\" value=\"${#it#.name}$\" selected=\"${#nearForOfIndex# === 0}$\" class=\"card-select-body-option-container\">\n <img dr-attr=\"{src:#it#.iconImg}\"> ${#it#.name}$\n </dr-select-option>\n </dr-select-body>\n </dr-select>\n */\n\nexport namespace Select {\n export const selector = 'dr-select';\n\n // Base for simple hide/show components\n class StateComponent extends ComponentBase {\n public hidden = true;\n public value: string | null = null;\n\n constructor(config: any) {\n super(config);\n }\n\n setValue(value: string | null) {\n this.value = value;\n }\n }\n\n // --- Option Child Components ---\n export class OptionSelected extends StateComponent {\n constructor() {\n super({onlyParentType: Option});\n }\n }\n\n export class OptionUnselected extends StateComponent {\n constructor() {\n super({onlyParentType: Option});\n }\n }\n\n export class OptionDisabled extends StateComponent {\n constructor() {\n super({onlyParentType: Option});\n }\n }\n\n // --- Summary Child Components ---\n export class SummaryPlaceholder extends StateComponent {\n constructor() {\n super({onlyParentType: Summary});\n }\n }\n\n export class SummarySelected extends StateComponent {\n private selectedOptions: Select.Option[] = [];\n\n constructor() {\n super({onlyParentType: Summary});\n }\n\n setOptions(options: Option[] = []) {\n this.selectedOptions = options.filter(it => it.selected);\n }\n }\n\n export class SummaryDisabled extends StateComponent {\n private selectedOptions: Select.Option[] = [];\n\n constructor() {\n super({onlyParentType: Summary});\n }\n\n setOptions(options: Option[] = []) {\n this.selectedOptions = options.filter(it => it.selected);\n }\n }\n\n // --- Select Body Component ---\n export type SelectBodyAttribute = {\n float?: 'bottom-left' | 'bottom-right' | 'top-left' | 'top-right';\n class?: string;\n }\n // --- Option Component ---\n export type OptionAttribute = { value: string; selected?: boolean | null; disabled?: boolean | null; class?: string; };\n\n export class Option extends ComponentBase<OptionAttribute> implements OnInitRender {\n public hidden = true;\n @attribute({name: 'value'}) public value: string | null = null;\n @attribute({name: 'selected', converter: v => v !== null && v === true}) public selected = false;\n @attribute({name: 'disabled', converter: v => v !== null && v === true}) public disabled = false;\n @attribute({name: 'class', converter: v => (v ? v : null)}) public classAttr: string | null = null;\n\n // public status: 'selected' | 'unselected' | 'disabled' = 'unselected';\n\n constructor() {\n super({onlyParentType: SelectBody});\n }\n\n onInitRender(param: any, rawSet: RawSet) {\n super.onInitRender(param, rawSet);\n // console.log('-----', this.value, this.selected)\n // this.getElement()?.addEventListener('click', (e) => {\n // e.stopPropagation();\n // if (!this.disabled) {\n // this.getParentThis<Select>().handleOptionClick(this);\n // }\n // });\n this.updateStatus();\n }\n\n // onCreatedThisChild(child: any, data: OnCreateRenderDataParams) {\n // super.onCreatedThisChild(child, data);\n // this.updateStatus();\n // }\n\n // async onRawSetRendered(rawSet:RawSet, otherData:OnRawSetRenderedOtherData):Promise<void>{\n // await super.onRawSetRendered(rawSet, otherData);\n // }\n onCreatedThisChildDebounce(childrenSet: ChildrenSet[]) {\n super.onCreatedThisChildDebounce(childrenSet);\n this.updateStatus();\n }\n\n toggleSelected(event: Event) {\n // console.log('isMultiple', this.isMultiple())\n if (!this.disabled) {\n this.selected = this.isMultiple()? !this.selected : true;\n // this.selected = !this.selected;\n this.updateStatus();\n this.getParentThis<SelectBody>().changeOptionState(this);\n } else {\n event.stopPropagation();\n event.preventDefault();\n }\n }\n\n isMultiple() {\n return this.getParentThis<Select.SelectBody>()?.getParentThis<Select.Select>().multiple;\n }\n\n updateStatus() {\n if (this.disabled) {\n this.getChildren(OptionSelected).forEach(c => {\n c.hidden = true;\n c.setValue(this.value)\n });\n this.getChildren(OptionUnselected).forEach(c => {\n c.hidden = true;\n c.setValue(this.value)\n });\n this.getChildren(OptionDisabled).forEach(c => {\n c.hidden = false;\n c.setValue(this.value)\n });\n return;\n }\n\n if (this.selected) {\n this.getChildren(OptionSelected).forEach(c => {\n c.hidden = false;\n c.setValue(this.value)\n });\n this.getChildren(OptionUnselected).forEach(c => {\n c.hidden = true;\n c.setValue(this.value)\n });\n this.getChildren(OptionDisabled).forEach(c => {\n c.hidden = true;\n c.setValue(this.value)\n });\n }\n\n if (!this.selected) {\n this.getChildren(OptionSelected).forEach(c => {\n c.hidden = true;\n c.setValue(this.value)\n });\n this.getChildren(OptionUnselected).forEach(c => {\n c.hidden = false;\n c.setValue(this.value)\n });\n this.getChildren(OptionDisabled).forEach(c => {\n c.hidden = true;\n c.setValue(this.value)\n });\n }\n }\n }\n\n // --- Summary Component ---\n export class Summary extends ComponentBase implements OnInitRender {\n @attribute({ name: 'class', converter: v => (v === '' ? null : v) }) public classAttr: string | null = null;\n private options: Select.Option[] = [];\n private disabled: boolean = false;\n public element?: HTMLElement;\n\n // constructor() {\n // super({ onlyParentType: Select });\n // }\n\n setDisabled(disabled: boolean) {\n this.disabled = disabled;\n this.getChildren(SummaryPlaceholder).forEach(it => (it.hidden = true));\n this.getChildren(SummarySelected).forEach(it => (it.hidden = true));\n this.getChildren(SummaryDisabled).forEach(it => (it.hidden = false));\n }\n\n setOptions(options: Option[] = []): void {\n this.options = options;\n\n const selectedOptions = this.options.filter(it => it.selected && !it.disabled);\n if (!this.disabled) {\n if (selectedOptions.length > 0) {\n this.getChildren(SummaryPlaceholder).forEach(it => (it.hidden = true));\n this.getChildren(SummarySelected).forEach(c => {\n c.setOptions(options);\n c.hidden = false;\n });\n this.getChildren(SummaryDisabled).forEach(it => (it.hidden = true));\n } else {\n this.getChildren(SummaryDisabled).forEach(it => (it.hidden = true));\n this.getChildren(SummaryPlaceholder).forEach(it => (it.hidden = false));\n this.getChildren(SummarySelected).forEach(c => (c.hidden = true));\n }\n }\n }\n\n onInitRender(param: any, rawSet: RawSet) {\n super.onInitRender(param, rawSet);\n // this.getElement()?.addEventListener('click', (e) => {\n // e.stopPropagation();\n // this.getParentThis<Select>().toggle();\n // });\n }\n\n onInitSummaryElement(element: HTMLElement, event: Event) {\n this.element = element;\n }\n\n updateView(hasSelection: boolean) {\n this.getChildren(SummaryPlaceholder).forEach(c => (c.hidden = hasSelection));\n this.getChildren(SummarySelected).forEach(c => (c.hidden = !hasSelection));\n }\n\n // onCreatedThisChild(child: any, data: OnCreateRenderDataParams) {\n // super.onCreatedThisChild(child, data);\n // }\n // async onRawSetRendered(rawSet: RawSet, otherData: OnRawSetRenderedOtherData): Promise<void> {\n // await super.onRawSetRendered(rawSet, otherData);\n // }\n onCreatedThisChildDebounce(childrenSet: ChildrenSet[]) {\n super.onCreatedThisChildDebounce(childrenSet);\n this.updateView(this.getParentThis<Select>()?.selectedValues?.length > 0);\n }\n\n onSummaryClick(element: HTMLElement, event: Event) {\n if (this.getParentThis<Select>()?.disabled) {\n event.stopPropagation();\n event.preventDefault();\n return;\n }\n }\n }\n\n\n export class SelectBody extends ComponentBase<SelectBodyAttribute> {\n @attribute({ name: 'class', converter: v => (v === '' ? null : v) }) public classAttr: string | null = null;\n @attribute({ name: 'float' }) public float: 'bottom-left' | 'bottom-right' | 'top-left' | 'top-right' | null = null;\n\n constructor() {\n super({ onlyParentType: Select });\n }\n\n async onRawSetRendered(rawSet: RawSet, otherData: OnRawSetRenderedOtherData): Promise<void> {\n await super.onRawSetRendered(rawSet, otherData);\n // }\n // onCreatedThisChildDebounce(childrenSet: ChildrenSet[]) {\n // super.onCreatedThisChildDebounce(childrenSet);\n this.changeOptionState();\n }\n\n changeOptionState(option?: Option) {\n const options = this.getChildren(Option);\n const select = this.getParentThis<Select>();\n // console.log('------opti',option, select);\n // // 멀티플이 아닐때에는 마지막 선택된값으로 처리\n if (!select.multiple) {\n // 내가 선택한게 있으면\n if (option && option.selected) {\n options.filter(it => it !== option).forEach(it => {\n it.selected = false;\n it.updateStatus();\n });\n } else {\n const selectedOptions = options.filter(it => it.selected && !it.disabled);\n selectedOptions.forEach((opt, idx) => {\n const isLast = idx === selectedOptions.length - 1;\n if (!isLast) {\n opt.selected = false;\n opt.updateStatus();\n }\n });\n }\n }\n // console.log('--------', options.map(it=>it.selected))\n select?.setOptions(options);\n }\n }\n\n\n // --- Main Select Component ---\n export type SelectAttribute = {\n multiple?: boolean | null; class?: string;\n changeSelected?: (value: (string | null)[]) => void;\n name?: string;\n float?: 'bottom-left' | 'bottom-right' | 'top-left' | 'top-right';\n disableOtherClickClose?: boolean;\n toggle?: (open: boolean) => void;\n disabled?: boolean | null;\n };\n\n export class Select extends ComponentBase<SelectAttribute> implements OnInitRender, OnCreateRender, OnCreateRenderData, OnDestroyRender {\n @attribute({name: 'multiple', converter: v => v !== null}) public multiple = false;\n @attribute({name: 'disabled', converter: v => v !== null}) public disabled = false;\n @attribute({name: 'class', converter: v => (v === '' ? null : v)}) public classAttr: string | null = null;\n @attribute({name: 'name', converter: v => (v === '' ? null : v)}) public name: string | null = null;\n\n // public isOpen = false;\n public selectedValues: (string | null)[] = [];\n public selectedOptions: Option[] = [];\n public value: string | (string | null)[] | null | undefined;\n\n @DomRenderNoProxy private element?: HTMLDetailsElement;\n @DomRenderNoProxy private documentClickSubscription?: Subscription;\n @DomRenderNoProxy private windowBlurSubscription?: Subscription;\n @DomRenderNoProxy public summaryComponent?: Summary;\n @DomRenderNoProxy public selectBodyComponent?: SelectBody;\n private options?: Select.Option[];\n\n constructor(config?: DomRenderConfig) {\n super();\n // console.log('----Select constructor')\n }\n\n get optionComponents(): Option[] {\n return this.getChildren(Option);\n }\n\n onCreateRender() {\n\n }\n\n onCreateRenderData() {\n\n }\n\n onInitRender(param: any, rawSet: RawSet) {\n super.onInitRender(param, rawSet);\n // console.log('select onInitRender', this.multiple)\n\n if (ValidUtils.isBrowser() && this.rawSet?.dataSet.config.window) {\n const detailsElement = this.element;\n\n const window = this.rawSet.dataSet!.config!.window!;\n const document = window.document;\n this.documentClickSubscription = EventUtils.htmlElementEventObservable(document, 'click').subscribe(event => {\n const isSummaryClick = this.getChildren(Summary).some(it => event.target && it.element?.contains(event.target as Node) || it.element === event.target)\n if (!isSummaryClick && this.getAttribute('disableOtherClickClose')) {\n return;\n }\n if (!isSummaryClick && !this.multiple && detailsElement) {\n detailsElement.open = false;\n return;\n }\n if (!isSummaryClick && detailsElement && !detailsElement?.contains(event?.target as Node)) {\n detailsElement.open = false;\n }\n })\n\n this.windowBlurSubscription = WindowUtils.eventObservable(window, 'blur').subscribe(() => {\n if (detailsElement?.open && window.document.activeElement?.tagName === 'IFRAME') {\n detailsElement.open = false;\n }\n });\n }\n }\n\n\n toggle(element: HTMLDetailsElement, event: Event) {\n // console.log('------>', this.disabled, event)\n // if (this.disabled) {\n // event.stopPropagation();\n // event.preventDefault();\n // return;\n // }\n const toggleAttribute = this.getAttribute('toggle');\n if (toggleAttribute) {\n toggleAttribute?.(element.open);\n }\n }\n\n setOptions(options: Option[]) {\n const summaries = this.getChildren(Summary);\n\n this.options = options;\n\n const values = this.options.filter(it => it.selected && !it.disabled).map(it => it.value)\n this.getAttribute('changeSelected')?.(values);\n summaries?.forEach(it => {\n it.setDisabled(this.disabled);\n if (!this.disabled) {\n it.setOptions(options);\n }\n })\n }\n\n onInitDetailsElement(detailsElement: HTMLDetailsElement) {\n // console.log('detailsElement oninit', detailsElement);\n this.element = detailsElement;\n }\n\n onDrThisUnBind() {\n super.onDrThisUnBind();\n this.onDestroyRender();\n }\n\n onDestroyRender() {\n super.onDestroyRender();\n this.documentClickSubscription?.unsubscribe();\n this.windowBlurSubscription?.unsubscribe();\n }\n\n test() {\n console.log('tttttttt')\n }\n }\n}\n\nconst stateComponentFactory = (name: string, type: any) => {\n return (config?: DomRenderRunConfig) =>\n RawSet.createComponentTargetElement({\n name,\n template: '<div dr-if=\"!@this@.hidden\" dr-option-strip=\"true\">#innerHTML#</div>\\n',\n objFactory: (e, o, r2, constructorParam) => DomRender.run({ rootObject: new type(), config })\n });\n};\n\nexport default {\n select: (config?: DomRenderConfig) => {\n return RawSet.createComponentTargetElement({\n name: Select.selector,\n styles:\n '.dr-select-container {\\n' +\n ' position: relative;\\n' +\n '\\n' +\n '}\\n' +\n '.dr-select-options-container {\\n' +\n ' display: none;\\n' +\n ' position: absolute;\\n' +\n ' top: 100%;\\n' +\n ' left: 0;\\n' +\n ' right: 0;\\n' +\n ' z-index: 10;\\n' +\n '}\\n' +\n '.dr-select-container.is-open .dr-select-options-container {\\n' +\n ' display: block;\\n' +\n '}\\n' +\n 'summary::-webkit-details-marker {\\n' +\n ' display: none;\\n' +\n '}\\n' +\n '/* Floating styles for dr-select-body */\\n' +\n '.dr-select-body-container {\\n' +\n ' position: absolute;\\n' +\n '}\\n' +\n '\\n' +\n '.dr-select-body-bottom-left-container {\\n' +\n ' position: absolute;\\n' +\n ' left: 0;\\n' +\n ' top: 100%;\\n' +\n '}\\n' +\n '\\n' +\n '.dr-select-body-bottom-right-container {\\n' +\n ' position: absolute;\\n' +\n ' right: 0;\\n' +\n ' top: 100%;\\n' +\n '}\\n' +\n '\\n' +\n '.dr-select-body-top-left-container {\\n' +\n ' position: absolute;\\n' +\n ' left: 0;\\n' +\n ' bottom: 100%;\\n' +\n '}\\n' +\n '\\n' +\n '.dr-select-body-top-right-container {\\n' +\n ' position: absolute;\\n' +\n ' right: 0;\\n' +\n ' bottom: 100%;\\n' +\n '}\\n' +\n '\\n' +\n '/* Reset default details/summary styles */\\n' +\n '.dr-select-container details {\\n' +\n ' display: block; /* Ensure it behaves like a block element */\\n' +\n '}\\n' +\n '\\n' +\n '.dr-select-container summary {\\n' +\n ' display: block; /* Ensure it behaves like a block element */\\n' +\n ' list-style: none; /* Remove default marker */\\n' +\n \" cursor: pointer; /* Indicate it's clickable */\\n\" +\n '}\\n' +\n '\\n' +\n '.dr-select-container summary::-webkit-details-marker,\\n' +\n '.dr-select-container summary::marker {\\n' +\n ' display: none; /* Hide marker for Webkit and standard */\\n' +\n '}',\n template:\n '<details dr-class=\"{\\n' +\n \" 'dr-select-container': true,\\n\" +\n \" 'is-open': @this@.isOpen,\\n\" +\n ' [@this@.classAttr]: @this@.classAttr\\n' +\n ' }\" dr-on-init=\"@this@.onInitDetailsElement($element)\" dr-option-complete=\"@this@.test()\" dr-event-toggle=\"@this@.toggle($element, $event)\">\\n' +\n '\\n' +\n ' #innerHTML#\\n' +\n '</details>\\n' +\n '<select hidden=\"hidden\" name=\"${@this@.name}$\" disabled=\"${@this@.disabled ? \\'disabled\\' : null}$\" style=\"width: 1500px; height:500px\" multiple>\\n' +\n ' <option dr-for-of=\"@this@.options\" value=\"${#it#.value}$\" selected=\"${#it#.selected ? \\'selected\\' : null}$\">#it# ${#it#.value}$</option>\\n' +\n '</select>',\n objFactory: (e, o, r2, constructorParam) => DomRender.run({ rootObject: new Select.Select(config), config })\n });\n },\n selectSummary: (config?: DomRenderRunConfig) => {\n return RawSet.createComponentTargetElement({\n name: `${Select.selector}-summary`,\n template:\n '<summary dr-class=\"{[@this@.classAttr]: @this@.classAttr}\"\\n' +\n ' dr-on-init=\"@this@.onInitSummaryElement($element, $event)\"\\n' +\n ' dr-event-click=\"@this@.onSummaryClick($element, $event)\"\\n' +\n '>\\n' +\n '#innerHTML#\\n' +\n '</summary>',\n objFactory: (e, o, r2, constructorParam) => DomRender.run({ rootObject: new Select.Summary(), config })\n });\n },\n selectSummaryPlaceholder: stateComponentFactory(`${Select.selector}-summary-placeholder`, Select.SummaryPlaceholder),\n selectSummarySelected: stateComponentFactory(`${Select.selector}-summary-selected`, Select.SummarySelected),\n selectSummaryDisabled: stateComponentFactory(`${Select.selector}-summary-disabled`, Select.SummaryDisabled),\n\n selectBody: (config?: DomRenderRunConfig) => { // New export\n return RawSet.createComponentTargetElement({\n name: `${Select.selector}-body`,\n template: '<div dr-class=\"{[@this@.classAttr]: @this@.classAttr, \\'dr-select-body-container\\': true, [\\'dr-select-body-\\'+@this@.float+\\'-container\\']: @this@.float}\">#innerHTML#</div>',\n objFactory: (e, o, r2, constructorParam) => {\n return DomRender.run({rootObject: new Select.SelectBody(), config: config});\n }\n })\n },\n\n selectOption: (config?: DomRenderRunConfig) => {\n return RawSet.createComponentTargetElement({\n name: `${Select.selector}-option`,\n template:\n '<a dr-class=\"{[@this@.classAttr]: @this@.classAttr}\" dr-event-click=\"@this@.toggleSelected($event)\">#innerHTML#</a>\\n',\n objFactory: (e, o, r2, constructorParam) => DomRender.run({ rootObject: new Select.Option(), config })\n });\n },\n selectOptionSelected: stateComponentFactory(`${Select.selector}-option-selected`, Select.OptionSelected),\n selectOptionUnselected: stateComponentFactory(`${Select.selector}-option-unselected`, Select.OptionUnselected),\n selectOptionDisabled: stateComponentFactory(`${Select.selector}-option-disabled`, Select.OptionDisabled),\n};", "import { ComponentBase } from '../ComponentBase';\nimport { DomRender, DomRenderRunConfig } from '../../DomRender';\nimport { RawSet } from '../../rawsets/RawSet';\nimport { OtherData } from '../../lifecycle/OnChangeAttrRender';\nimport { OnInitRender } from '../../lifecycle/OnInitRender';\nimport { ComponentSet } from '../../components/ComponentSet';\nimport { OnDestroyRenderParams } from '../../lifecycle/OnDestroyRender';\nexport namespace This {\n export const selector = 'dr-this';\n export type Attribute = {\n value: ComponentSet;\n if: boolean | null;\n createArguments: any[];\n onCreated?: (value: any) => void;\n onDestroyRender?: () => void;\n }\n\n export class This extends ComponentBase<Attribute> implements OnInitRender {\n private value?: ComponentSet\n private if?: boolean | null = null;\n private createArguments?: any[]\n\n onInitRender(param: any, rawSet: RawSet) {\n super.onInitRender(param, rawSet);\n }\n\n onDestroyRender(data: OnDestroyRenderParams) {\n super.onDestroyRender(data);\n }\n\n onChangeAttrRender(name: string, value: any, other: OtherData) {\n super.onChangeAttrRender(name, value, other);\n if (this.equalsAttributeName(name, 'value')) {\n this.value = value;\n }\n if (this.equalsAttributeName(name, 'if')) {\n this.if = value;\n }\n if (this.equalsAttributeName(name, 'createArguments')) {\n this.createArguments = value;\n }\n }\n\n created(component: any){\n component??=this.value?.obj;\n this.getAttribute('onCreated')?.(component);\n }\n }\n}\n\nexport default {\n this: (config?: DomRenderRunConfig) => {\n return RawSet.createComponentTargetElement({\n name: This.selector,\n template: '<div dr-this=\"@this@.value\" dr-detect-option-if=\"@this@?.value && @this@?.if\" dr-option-strip=\"true\" dr-on-create:arguments=\"@this@.createArguments\" dr-on-create:callback=\"@this@?.created?.($component)\">#innerHTML#</div>',\n objFactory: (e, o, r2, counstructorParam) => {\n return DomRender.run({rootObject: new This.This(...counstructorParam), config: config});\n }\n })\n }\n}\n\n", "import { ComponentBase } from '../ComponentBase';\nimport { DomRender, DomRenderRunConfig } from '../../DomRender';\nimport { RawSet } from '../../rawsets/RawSet';\nimport { OtherData } from '../../lifecycle/OnChangeAttrRender';\nimport { OnDestroyRenderParams } from '../../lifecycle/OnDestroyRender';\n\n\nexport namespace Timer {\n export const selector = 'dr-timer';\n export type Attribute = {\n value?: string;\n interval?: number;\n onCreated?: (timer: Timer) => void;\n }\n export class Timer extends ComponentBase<Attribute> {\n private interval?: any;\n private value?: number;\n\n\n onInitRender(param: any, rawSet: RawSet) {\n super.onInitRender(param, rawSet);\n this.getAttribute('onCreated')?.(this);\n // console.log('---2', this.getElement()?.isConnected)\n // const element = this.getElement();\n // if(element){\n // (element as any).component = this;\n // }\n }\n\n isRunning() {\n return this.value !== undefined;\n }\n\n start() {\n const timems = this.getAttribute('value');\n if (timems) {\n this.value = parseInt(timems);\n const intervalValue = this.getAttribute('interval') ?? 1000;\n console.log('int', this.value, intervalValue);\n this.interval = setInterval(() => {\n console.log('--------->',this.value)\n if (this.value) {\n this.value--;\n } else {\n clearInterval(this.interval);\n this.value = undefined;\n this.interval = undefined;\n }\n }, intervalValue)\n }\n }\n\n\n stop() {\n if (this.interval) {\n clearInterval(this.interval);\n this.interval = undefined;\n this.value = undefined;\n }\n }\n\n onChangeAttrRender(name: string, val: any, other: OtherData) {\n super.onChangeAttrRender(name, val, other);\n console.log('-----', name, val, this.getElement())\n }\n\n onDestroyRender(data: OnDestroyRenderParams) {\n super.onDestroyRender(data);\n if (this.interval){\n clearInterval(this.interval);\n }\n }\n }\n}\n\n\nexport default {\n timer: (config?: DomRenderRunConfig) => {\n return RawSet.createComponentTargetElement({\n name: `${Timer.selector}`,\n template: '#innerHTML#',\n objFactory: (e,o,r2, counstructorParam) => {\n return DomRender.run({rootObject: new Timer.Timer(...counstructorParam), config: config});\n }\n })\n },\n}", "export * from './ComponentBase';\nexport * from './ComponentRouterBase';\nexport * from './ComponentSet';\nexport * from './a';\nexport * from './appender';\nexport * from './checkbox';\nexport * from './choose';\nexport * from './details';\nexport * from './forOf';\nexport * from './if';\nexport * from './input';\nexport * from './promise';\nexport * from './radio';\nexport * from './router';\nexport * from './select';\nexport * from './this';\nexport * from './timer';\n\nimport If from './if/If';\nimport This from './this/This';\nimport Appender from './appender/Appender';\nimport PromiseSwitch from './promise/PromiseSwitch';\nimport Choose from './choose/Choose';\nimport CheckBox from './checkbox/CheckBox';\nimport Radio from './radio/Radio';\nimport RouterOutlet from './router/RouterOutlet';\nimport Select from './select/Select';\nimport Timer from './timer/Timer';\nimport Details from './details/Details';\nimport Input from './input/Input';\nimport Route from './router/Route';\nimport A from './a/A';\n\nexport const drComponent = {\n ...If,\n ...This,\n ...Appender,\n ...PromiseSwitch,\n ...Choose,\n ...CheckBox,\n ...Radio,\n ...Select,\n ...Timer,\n ...Details,\n ...Input,\n ...Route,\n ...RouterOutlet,\n ...A,\n}", "import { DomRenderProxy } from './DomRenderProxy';\nimport { DomRenderConfig } from './configs/DomRenderConfig';\nimport { PathRouter } from './routers/PathRouter';\nimport { HashRouter } from './routers/HashRouter';\nimport { ConstructorType } from '@dooboostore/core/types';\nimport { DomRenderFinalProxy } from './types/Types';\nimport { RawSet } from './rawsets/RawSet';\nimport { DefaultMessenger } from './messenger/DefaultMessenger';\nimport { Router } from './routers/Router';\nimport { drComponent } from './components';\nimport { EventManager } from './events/EventManager';\nimport { RandomUtils } from '@dooboostore/core/random/RandomUtils';\n\nexport type DomRenderRunConfig<T = any> = Omit<DomRenderConfig<T>, 'router' | 'uuid' | 'eventManager' | 'messenger' | 'root' | 'rootElement'> & { routerType?: 'path' | 'hash' | ((obj: T, targetConfig: DomRenderConfig) => Router) | Router };\nexport type CreateComponentParam = { type: ConstructorType<any> | any, tagName?: string, noStrip?: boolean, template?: string, styles?: string[] | string };\nlet eventManager: EventManager | null = null;\nexport type DomRenderRunParameter<T extends object> = { rootObject: T | (() => T), target?: Element | null, config?: DomRenderRunConfig | DomRenderConfig };\n\nexport type ExecuteConfig = { firstUrl?: string };\n\nexport class DomRender<T extends object = any> {\n private _config: DomRenderConfig;\n private _target: Element | null | undefined;\n private _rootObject: T;\n private _router: Router;\n private _eventManager: EventManager;\n\n constructor(parameter: DomRenderRunParameter<T>, executeConfig?: ExecuteConfig) {\n const s = DomRender.runSet(parameter,executeConfig);\n this._config = s.config;\n this._target = s.target;\n this._rootObject = s.rootObject;\n this._router = s.config.router;\n this._eventManager = s.config.eventManager;\n // if (executeConfig && executeConfig?.autoGo) {\n // this._config.router?.go(executeConfig.autoGo);\n // }\n }\n\n public get rootObject(): T {\n return this._rootObject;\n }\n\n public get config(): DomRenderConfig {\n return this._config;\n }\n public get router(): Router {\n return this._router;\n }\n\n public get eventManager(): EventManager {\n return this._eventManager;\n }\n public get target(): Element | null | undefined {\n return this._target;\n }\n\n public static run<T extends object>(data: DomRenderRunParameter<T>): T {\n return DomRender.runSet(data).rootObject;\n }\n\n public static runSet<T extends object>({\n rootObject,\n target,\n config\n }: DomRenderRunParameter<T>, executeConfig?: ExecuteConfig): { rootObject: T; target?: Element | null; config: DomRenderConfig } {\n // public static run<T extends object>({rootObject, target, config}: DomRenderRunParameter<T>): T {\n // console.log('runSet')\n rootObject = typeof rootObject === 'function' ? rootObject() : rootObject;\n let targetObject = rootObject;\n if ('_DomRender_isProxy' in rootObject) {\n if (target) {\n ((rootObject as any)._DomRender_proxy as DomRenderProxy<T>).initRender(target);\n }\n targetObject = rootObject;\n // return targetObject;\n return { rootObject: targetObject, target, config: (rootObject as any)._domRender_config };\n }\n const targetConfig = Object.assign({}, config) as DomRenderConfig;\n eventManager ??= new EventManager(targetConfig.window);\n\n targetConfig.uuid = RandomUtils.uuid4();\n targetConfig.messenger = DomRenderFinalProxy.final(targetConfig.messenger ?? new DefaultMessenger(targetConfig));\n targetConfig.proxyExcludeTyps = targetConfig.proxyExcludeTyps ?? [];\n targetConfig.targetElements ??= [];\n\n if (typeof Window !== 'undefined' && !targetConfig.proxyExcludeTyps.some(it => it === Window)) {\n targetConfig.proxyExcludeTyps.push(Window);\n }\n if (typeof Map !== 'undefined' && !targetConfig.proxyExcludeTyps.some(it => it === Map)) {\n targetConfig.proxyExcludeTyps.push(Map);\n }\n if (typeof Set !== 'undefined' && !targetConfig.proxyExcludeTyps.some(it => it === Set)) {\n targetConfig.proxyExcludeTyps.push(Set);\n }\n if (typeof Promise !== 'undefined' && !targetConfig.proxyExcludeTyps.some(it => it === Promise)) {\n targetConfig.proxyExcludeTyps.push(Promise);\n }\n if (typeof ResizeObserver !== 'undefined' && !targetConfig.proxyExcludeTyps.some(it => it === ResizeObserver)) {\n targetConfig.proxyExcludeTyps.push(ResizeObserver);\n }\n if (typeof ImageBitmap !== 'undefined' && !targetConfig.proxyExcludeTyps.some(it => it === ImageBitmap)) {\n targetConfig.proxyExcludeTyps.push(ImageBitmap);\n }\n if ( typeof CanvasRenderingContext2D !== 'undefined' && !targetConfig.proxyExcludeTyps.some(it => it === CanvasRenderingContext2D) ) {\n targetConfig.proxyExcludeTyps.push(CanvasRenderingContext2D);\n }\n if ( typeof CSSStyleDeclaration !== 'undefined' && !targetConfig.proxyExcludeTyps.some(it => it === CSSStyleDeclaration) ) {\n targetConfig.proxyExcludeTyps.push(CSSStyleDeclaration);\n }\n if ( typeof Date !== 'undefined' && !targetConfig.proxyExcludeTyps.some(it => it === Date) ) {\n targetConfig.proxyExcludeTyps.push(Date);\n }\n if ( typeof MutationObserver !== 'undefined' && !targetConfig.proxyExcludeTyps.some(it => it === IntersectionObserver) ) {\n targetConfig.proxyExcludeTyps.push(IntersectionObserver);\n }\n if ( typeof IntersectionObserver !== 'undefined' && !targetConfig.proxyExcludeTyps.some(it => it === IntersectionObserver) ) {\n targetConfig.proxyExcludeTyps.push(IntersectionObserver);\n }\n if (typeof HTMLElement !== 'undefined' && !targetConfig.proxyExcludeTyps.some(it => it === HTMLElement)) {\n targetConfig.proxyExcludeTyps.push(HTMLElement);\n }\n // if (typeof HTMLCanvasElement !== 'undefined' && !targetConfig.proxyExcludeTyps.some(it => it === HTMLCanvasElement)) {\n // targetConfig.proxyExcludeTyps.push(HTMLCanvasElement);\n // }\n if (!targetConfig.proxyExcludeTyps.some(it => it === RawSet)) {\n targetConfig.proxyExcludeTyps.push(RawSet);\n }\n if (!targetConfig.proxyExcludeTyps.some(it => it === DomRender)) {\n targetConfig.proxyExcludeTyps.push(DomRender);\n }\n targetConfig.rootElement = target;\n targetConfig.eventManager = eventManager;\n // (targetConfig.window as any).domRender ??= {configs: []};\n // (targetConfig.window as any).domRender.configs.push(targetConfig);\n const domRender = new DomRenderProxy(rootObject, target, targetConfig);\n const dest = new Proxy(rootObject, domRender);\n targetObject = dest;\n targetConfig.root = targetObject;\n\n // proxy \uB41C targetObject\uB97C \uB123\uC5B4\uC918\uC57C\uB418\uC11C \uB4A4\uCABD\uC5D0\uC11C router\uB97C \uC0DD\uC131\uD574\uC57C\uD568\n if (!targetConfig.router) {\n let targetRouter: Router<any> | undefined;\n if ('routerType' in config && config?.routerType === 'hash') {\n targetRouter = new HashRouter({ rootObject: targetObject, window: targetConfig.window, firstUrl: executeConfig?.firstUrl });\n } else if ('routerType' in config && config?.routerType === 'path') {\n targetRouter = new PathRouter({ rootObject: targetObject, window: targetConfig.window, firstUrl: executeConfig?.firstUrl });\n } else if ('routerType' in config && typeof config?.routerType === 'function') {\n targetRouter = config.routerType(targetObject, targetConfig);\n } else if ('routerType' in config && typeof config?.routerType === 'object') {\n targetRouter = config.routerType;\n }\n targetConfig.router = targetRouter;\n }\n\n for (const value of Object.values(drComponent)) {\n const a = value(targetConfig, DomRender);\n if (!targetConfig.targetElements.some(it => it.name === a.name)) {\n targetConfig.targetElements.push(a);\n }\n }\n // console.log('cccccccccccccccccc', targetRouter)\n // targetRouter.go({path: targetRouter.getUrl()})\n // if (!config.router) {\n // if (config.routerType === 'path') {\n // config.router = new PathRouter(targetObject, config.window);\n // } else if (config.routerType === 'hash') {\n // config.router = new HashRouter(targetObject, config.window);\n // } else { // none\n // config.router = new HashRouter(targetObject, config.window);\n // }\n // }\n domRender.run(targetObject);\n return { rootObject: targetObject, config: targetConfig, target };\n // return targetObject;\n }\n\n public static createComponent(param: CreateComponentParam) {\n // console.log('===>', typeof param.type, param.type.name, param.type.constructor.name)\n const component = RawSet.createComponentTargetElement({\n name: param.tagName ?? (typeof param.type === 'function' ? param.type.name : param.type.constructor.name),\n objFactory: (e, o, r2, counstructorParam) => {\n return typeof param.type === 'function' ? new param.type(...counstructorParam) : param.type;\n },\n noStrip: param.noStrip,\n template: param.template ?? '',\n styles: Array.isArray(param.styles) ? param.styles : param.styles ? [param.styles] : undefined\n });\n return component;\n }\n\n // ?? \uC5B8\uC81C \uC4F0\uB294\uAC70\uC9C0?? \uD6D4..\n public static createAttribute(\n attrName: string,\n getThisObj: (element: Element, attrValue: string, obj: any, rawSet: RawSet) => any,\n factory: (element: Element, attrValue: string, obj: any, rawSet: RawSet) => DocumentFragment\n ) {\n const targetAttribute = RawSet.createComponentTargetAttribute(attrName, getThisObj, factory);\n return targetAttribute;\n }\n}\n", "// TODO: \uB098\uC911\uC5D0 \uB123\uC5B4\uC57C\uB420\uAE4C \uC790\uC2DDelement\uAC00 \uC644\uB8CC\uB418\uC5C8\uC744\uB54C\uB294 on-rendered..\uBB50\uC774\uB7F0\uAC8C\uC788\uC5B4\uC11C. \uC774\uAC8C \uB2E4\uB978 \uD504\uB808\uC784\uC6CC\uD06C\uCC98\uB7FC \uC790\uC2DD\uB4E4\uC774 \uB2E4 \uB9CC\uB4E4\uC5B4\uC9C0\uACE0 \uB0B4\uAC00 \uB9CC\uB4E4\uC5B4\uC9C0\uB294\uAC8C \uC544\uB2C8\uB77C. \uBE44\uB3D9\uAE30\uC801\uC73C\uB85C \uC774\uB8E8\uC5B4\uC9C0\uB2C8\uAE50 \uC54C\uC218\uAC00\uC5C6\uAE34\uD55C\uB370..\n// \uD6D4.. \uC6B0\uC120 \uBCF4\uB958 \uC544\uBB34\uB3C4 \uC0AC\uC6A9\uD558\uB294\uACF3\uC740 \uC5C6\uC74C\n/**\n * @deprecated \uC544\uC9C1 \uC801\uC6A9\uC548\uB428\n */\nexport interface OnCreateRendered {\n onCreateRendered(...param: any[]): void;\n}\nexport const isOnCreateRendered = (obj: any): obj is OnCreateRendered => {\n return typeof obj?.onCreateRendered === 'function';\n}", "export class Appender<T = any> implements Iterable<T> {\n // eslint-disable-next-line no-undef\n [key: number]: T[] | undefined;\n\n length = 0;\n\n keyMap: Map<string, number> = new Map();\n\n isAppender = true;\n constructor(...defaultDatas: T[]) {\n // console.log('defaultDatas', defaultDatas);\n this.push(...defaultDatas);\n // (this.childs as any).isAppender = true;\n }\n\n [Symbol.iterator](): Iterator<T> {\n const items = this.getAll();\n let idx = 0;\n return {\n next(value?: any): IteratorResult<T, any> {\n let r: IteratorResult<T> = {value: undefined, done: true};\n if (items.length > idx) {\n r = {value: items[idx], done: false};\n }\n idx++;\n return r;\n }\n }\n }\n\n set(key: string, ...v:T[]) {\n const o = this.keyMap.get(key);\n // console.log('set!!', o);\n if (o !== undefined) {\n this[o] = v;\n } else {\n this.keyMap.set(key, this.length);\n // console.log('setPush', v)\n this.push(...v);\n }\n }\n\n delete(key: string) {\n const o = this.keyMap.get(key);\n if (o !== undefined) {\n this[o] = [];\n this.keyMap.delete(key);\n // this.length--;\n }\n }\n\n\n getAll(): T[] {\n return this.getAlls().flat();\n }\n\n getAlls(): T[][] {\n const map = Array.from({length: this.length}).filter((it, idx) => this[idx]).map((it, idx) => this[idx]);\n return map as T[][];\n }\n\n push(...items: T[]): void {\n // console.log('----1>', items, items.length, this.length);\n if (items && items.length > 0) {\n (items as any).index = this.length;\n this[this.length++] = items;\n // this[this.length] = [];\n }\n // console.log('----2>', items, items.length, this.length);\n // console.log('---22->', this.length)\n // const appender = this.childs[this.lastIndex];\n // appender.values = items;\n // this.childs.push(new Appender(appender.index + 1));\n }\n\n // delete(idx: number): void {\n // // if (idx in this) {\n // // console.log('---------dele',idx)\n // // delete this[idx];\n // // this.length = this.length - 1;\n // // }\n // this.length = this.length - 1;\n // }\n\n // \uC778\uB371\uC2A4 \uC811\uADFC\uC744 \uC704\uD55C getter\uC640 setter \uCD94\uAC00\n // get(index: number): T | undefined {\n // return this.storage[index];\n // }\n //\n // set(index: number, value: T): void {\n // this.storage[index] = value;\n // this.length = Math.max(this.length, index + 1);\n // }\n\n\n clear(): void {\n // console.log('length', this.length);\n for (let i = 0; i < this.length; i++) {\n delete this[i];\n }\n this.keyMap.clear();\n this.length = 0;\n }\n}", "import {Validator} from './Validator';\nimport {ValidatorArray} from './ValidatorArray';\n\nexport class AllCheckedValidatorArray<T = any, E = Element> extends ValidatorArray<T, E> {\n constructor(value?: Validator<T, E>[], target?: E, event?: Event, autoValid = true) {\n super(value, target, event, autoValid);\n }\n\n valid(): boolean {\n return !((this.value ?? []).filter(it => !it.checked).length > 0);\n }\n}", "import {Validator} from './Validator';\nimport {ValidatorArray} from './ValidatorArray';\n\nexport class AllUnCheckedValidatorArray<T = any, E = Element> extends ValidatorArray<T, E> {\n constructor(value?: Validator<T, E>[], target?: E, event?: Event, autoValid = true) {\n super(value, target, event, autoValid);\n }\n\n valid(): boolean {\n return !((this.value ?? []).filter(it => it.checked).length > 0);\n }\n}\n", "import {Validator} from './Validator';\n\nexport class CheckedValidator<T = any, E = HTMLElement> extends Validator<T, E> {\n constructor(value?: T, target?: E, event?: Event, autoValid = true) {\n super(value, target, event, autoValid);\n }\n\n valid(): boolean {\n return (this.getTarget() as any)?.checked ?? false;\n }\n}\n", "import {Validator} from './Validator';\nimport {ValidatorArray} from './ValidatorArray';\n\nexport class CountEqualsCheckedValidatorArray<T = any, E = Element> extends ValidatorArray<T, E> {\n constructor(public count: number, value?: Validator<T, E>[], target?: E, event?: Event, autoValid = true) {\n super(value, target, event, autoValid);\n }\n\n valid(): boolean {\n return (this.value ?? []).filter(it => it.checked).length === this.count;\n }\n}\n", "import {Validator} from './Validator';\nimport {ValidatorArray} from './ValidatorArray';\n\nexport class CountEqualsUnCheckedValidatorArray<T = any, E = Element> extends ValidatorArray<T, E> {\n constructor(public count: number, value?: Validator<T, E>[], target?: E, event?: Event, autoValid = true) {\n super(value, target, event, autoValid);\n }\n\n valid(): boolean {\n return (this.value ?? []).filter(it => !it.checked).length === this.count;\n }\n}\n", "import {Validator} from './Validator';\nimport {ValidatorArray} from './ValidatorArray';\n\nexport class CountGreaterThanCheckedValidatorArray<T = any, E = Element> extends ValidatorArray<T, E> {\n constructor(public count: number, value?: Validator<T, E>[], target?: E, event?: Event, autoValid = true) {\n super(value, target, event, autoValid);\n }\n\n valid(): boolean {\n return (this.value ?? []).filter(it => it.checked).length > this.count;\n }\n}\n", "import {Validator} from './Validator';\nimport {ValidatorArray} from './ValidatorArray';\n\nexport class CountGreaterThanEqualsCheckedValidatorArray<T = any, E = Element> extends ValidatorArray<T, E> {\n constructor(public count: number, value?: Validator<T, E>[], target?: E, event?: Event, autoValid = true) {\n super(value, target, event, autoValid);\n }\n\n valid(): boolean {\n return (this.value ?? []).filter(it => it.checked).length >= this.count;\n }\n}\n", "import {Validator} from './Validator';\nimport {ValidatorArray} from './ValidatorArray';\n\nexport class CountGreaterThanEqualsUnCheckedValidatorArray<T = any, E = Element> extends ValidatorArray<T, E> {\n constructor(public count: number, value?: Validator<T, E>[], target?: E, event?: Event, autoValid = true) {\n super(value, target, event, autoValid);\n }\n\n valid(): boolean {\n return (this.value ?? []).filter(it => !it.checked).length >= this.count;\n }\n}\n", "import {Validator} from './Validator';\nimport {ValidatorArray} from './ValidatorArray';\n\nexport class CountGreaterThanUnCheckedValidatorArray<T = any, E = Element> extends ValidatorArray<T, E> {\n constructor(public count: number, value?: Validator<T, E>[], target?: E, event?: Event, autoValid = true) {\n super(value, target, event, autoValid);\n }\n\n valid(): boolean {\n return (this.value ?? []).filter(it => !it.checked).length > this.count;\n }\n}\n", "import {Validator} from './Validator';\nimport {ValidatorArray} from './ValidatorArray';\n\nexport class CountLessThanCheckedValidatorArray<T = any, E = Element> extends ValidatorArray<T, E> {\n constructor(public count: number, value?: Validator<T, E>[], target?: E, event?: Event, autoValid = true) {\n super(value, target, event, autoValid);\n }\n\n valid(): boolean {\n return (this.value ?? []).filter(it => it.checked).length < this.count;\n }\n}\n", "import {Validator} from './Validator';\nimport {ValidatorArray} from './ValidatorArray';\n\nexport class CountLessThanEqualsCheckedValidatorArray<T = any, E = Element> extends ValidatorArray<T, E> {\n constructor(public count: number, value?: Validator<T, E>[], target?: E, event?: Event, autoValid = true) {\n super(value, target, event, autoValid);\n }\n\n valid(): boolean {\n return (this.value ?? []).filter(it => it.checked).length <= this.count;\n }\n}\n", "import {Validator} from './Validator';\nimport {ValidatorArray} from './ValidatorArray';\n\nexport class CountLessThanEqualsUnCheckedValidatorArray<T = any, E = Element> extends ValidatorArray<T, E> {\n constructor(public count: number, value?: Validator<T, E>[], target?: E, event?: Event, autoValid = true) {\n super(value, target, event, autoValid);\n }\n\n valid(): boolean {\n return (this.value ?? []).filter(it => !it.checked).length <= this.count;\n }\n}\n", "import {Validator} from './Validator';\nimport {ValidatorArray} from './ValidatorArray';\n\nexport class CountLessThanUnCheckedValidatorArray<T = any, E = Element> extends ValidatorArray<T, E> {\n constructor(public count: number, value?: Validator<T, E>[], target?: E, event?: Event, autoValid = true) {\n super(value, target, event, autoValid);\n }\n\n valid(): boolean {\n return (this.value ?? []).filter(it => !it.checked).length < this.count;\n }\n}\n", "import {Validator} from './Validator';\nimport {ValidatorArray} from './ValidatorArray';\n\nexport class CountUnCheckedValidatorArray<T = any, E = Element> extends ValidatorArray<T, E> {\n constructor(public count: number, value?: Validator<T, E>[], target?: E, event?: Event, autoValid = true) {\n super(value, target, event, autoValid);\n }\n\n valid(): boolean {\n return (this.value ?? []).filter(it => !it.checked).length >= this.count;\n }\n}\n", "import {Validator} from './Validator';\n\nexport class EmptyValidator<T = any, E = Element> extends Validator<T, E> {\n constructor(value?: T, target?: E, event?: Event, autoValid = true) {\n super(value, target, event, autoValid);\n }\n\n valid(): boolean {\n const value = this.value;\n return value === undefined || value === null || ((value as any)?.length ?? 0) <= 0;\n }\n}\n", "import {Validator} from './Validator';\nimport {ValidatorArray} from './ValidatorArray';\n\nexport class ExcludeCheckedValidatorArray<T = any, E = Element> extends ValidatorArray<T, E> {\n constructor(public include: any[], public allRequired: boolean = false, value?: Validator<T, E>[], target?: E, event?: Event, autoValid = true) {\n super(value, target, event, autoValid);\n }\n\n valid(): boolean {\n const valus = this.value ?? [];\n const unCheckedValue = valus.filter(it => !it.checked).map(it => it.value);\n return unCheckedValue.length > 0 &&\n (!(unCheckedValue.filter(it => !this.include.includes(it)).length > 0)) &&\n (this.allRequired ? unCheckedValue.filter(it => this.include.includes(it)).length === this.include.length : true)\n }\n}\n", "import {Validator} from './Validator';\n\nexport class FormValidator<E = HTMLFormElement> extends Validator<void, E> {\n constructor(target?: E, event?: Event, autoValid = true) {\n super(undefined, target, event, autoValid)\n }\n\n validAction(): boolean {\n return super.childValidAction();\n }\n\n valid(): boolean {\n return this.childValid()\n }\n\n reset() {\n this.targetReset();\n }\n}\n", "import {Validator} from './Validator';\nimport {ValidatorArray} from './ValidatorArray';\n\nexport class IncludeCheckedValidatorArray<T = any, E = Element> extends ValidatorArray<T, E> {\n constructor(public include: any[], public allRequired: boolean = false, value?: Validator<T, E>[], target?: E, event?: Event, autoValid = true) {\n super(value, target, event, autoValid);\n }\n\n valid(): boolean {\n const valus = this.value ?? [];\n const checkedValue = valus.filter(it => it.checked).map(it => it.value);\n return checkedValue.length > 0 &&\n (!(checkedValue.filter(it => !this.include.includes(it)).length > 0)) &&\n (this.allRequired ? checkedValue.filter(it => this.include.includes(it)).length === this.include.length : true)\n }\n}\n", "import {Validator} from './Validator';\n\nexport class MultipleValidator<T = any, E = Element> extends Validator<T, E> {\n public validators: Validator<T, E>[];\n constructor(validators: Validator<T, E>[], value?: T, target?: E, event?: Event, autoValid: boolean = true) {\n super(value, target, event, autoValid);\n this.validators = validators.map(it => {\n it.setAutoValid(false);\n it.setAutoValidAction(false);\n return it;\n })\n this.validators.forEach(it => {\n it.set(this.value, this.getTarget(), this.getEvent())\n });\n }\n\n changeValue(value: T | undefined) {\n this.validators.forEach(it => it.set(this.value, this.getTarget(), this.getEvent()));\n }\n\n validAction(): boolean {\n return !(this.validators.filter(it => !it.validAction()).length > 0);\n }\n\n valid(): boolean {\n // console.log('mm', this.validators)\n return !(this.validators.filter(it => !it.valid()).length > 0);\n }\n}\n", "import {Validator} from './Validator';\n\nexport class NotEmptyValidator<T = any, E = Element> extends Validator<T, E> {\n constructor(value?: T, target?: E, event?: Event, autoValid = true) {\n super(value, target, event, autoValid);\n }\n\n valid(): boolean {\n const value = this.value;\n // console.log('NotEmptyValidator', value, value !== undefined && value !== null && ((value as any)?.length ?? 0) > 0)\n return value !== undefined && value !== null && ((value as any)?.length ?? 0) > 0;\n }\n}\n", "import {Validator} from './Validator';\nimport {DomRenderProxy} from '../DomRenderProxy';\n\nexport class NotRegExpTestValidator<T = any, E = Element> extends Validator<T, E> {\n public regexp: RegExp;\n constructor(regexp: RegExp, value?: T, target?: E, event?: Event, autoValid = true) {\n super(value, target, event, autoValid);\n this.regexp = DomRenderProxy.final(regexp)\n }\n\n valid(): boolean {\n const value = this.value as unknown as string;\n const regExp = (this.regexp as any)._DomRender_origin ?? this.regexp;\n if (value) {\n return !regExp.test(value);\n } else {\n return true;\n }\n }\n}\n", "import {Validator} from './Validator';\n\nexport class PassValidator<T = any, E = Element> extends Validator<T, E> {\n constructor(value?: T, target?: E, event?: Event, autoValid = true) {\n super(value, target, event, autoValid);\n }\n\n valid(): boolean {\n return true;\n }\n}\n", "import {Validator} from './Validator';\nimport {DomRenderProxy} from '../DomRenderProxy';\n\nexport class RegExpTestValidator<T = any, E = Element> extends Validator<T, E> {\n public regexp: RegExp;\n constructor(regexp: RegExp, value?: T, target?: E, event?: Event, autoValid = true) {\n super(value, target, event, autoValid);\n this.regexp = DomRenderProxy.final(regexp)\n }\n\n valid(): boolean {\n const value = this.value as unknown as string;\n const regExp = (this.regexp as any)._DomRender_origin ?? this.regexp;\n // console.log('regexp-->', value, this.regexp, regExp.test(value))\n if (value) {\n return regExp.test(value);\n } else {\n return false;\n }\n }\n}\n", "import {Validator} from './Validator';\n\nexport class RequiredValidator<T = any, E = Element> extends Validator<T, E> {\n constructor(value?: T, target?: E, event?: Event, autoValid = true) {\n super(value, target, event, autoValid);\n }\n\n valid(): boolean {\n const value = this.value;\n // console.log('required', value, value !== undefined && value !== null)\n return value !== undefined && value !== null;\n }\n}\n", "import {Validator} from './Validator';\n\nexport class UnCheckedValidator<T = any, E = HTMLElement> extends Validator<T, E> {\n constructor(value?: T, target?: E, event?: Event, autoValid = true) {\n super(value, target, event, autoValid);\n }\n\n valid(): boolean {\n return !((this.getTarget() as any)?.checked ?? false);\n }\n}\n", "import {Validator} from './Validator';\nimport {MultipleValidator} from './MultipleValidator';\n\nexport type ValidMulltiple<T = any, E = Element> = (validators: Validator<T, E>[], value?: T, target?: E, event?: Event) => boolean;\n\nexport class ValidMultipleValidator<T = any, E = Element> extends MultipleValidator<T, E> {\n constructor(public validMultipleCallback: ValidMulltiple<T, E>, public validators: Validator<T, E>[], value?: T, target?: E, event?: Event, autoValid: boolean = true) {\n super(validators, value, target, event, autoValid);\n }\n\n valid(): boolean {\n return this.validMultipleCallback(this.validators, this.value, this.getTarget(), this.getEvent());\n }\n}\n", "import {Valid, Validator} from './Validator';\n\nexport class ValidValidator<T = any, E = Element> extends Validator<T, E> {\n constructor(public validCallBack: Valid<T, E>, value?: T, target?: E, event?: Event, autoValid = true) {\n super(value, target, event, autoValid);\n }\n\n valid(value?:T, target?:E, event?:Event): boolean {\n return this.validCallBack(value, target, event);\n }\n}\n", "import {Valid, Validator} from './Validator';\nimport {ValidatorArray} from './ValidatorArray';\n\nexport class ValidValidatorArray<T = any, E = Element> extends ValidatorArray<T, E> {\n constructor(public validCallBack: Valid<Validator<T, E>[], E>, value?: Validator<T, E>[], target?: E, event?: Event, autoValid = true) {\n super(value, target, event, autoValid);\n }\n\n valid(): boolean {\n return this.validCallBack(this.value, this.getTarget(), this.getEvent());\n }\n}\n"],
5
+ "mappings": "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M;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AACNA,kBAAA,KAAA,IAAM;AA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",
6
+ "names": ["Reflect", "map", "hasOwn", "_a", "metadataRegistry", "metadata", "OrdinaryDefineOwnMetadata", "OrdinaryHasOwnMetadata", "OrdinaryGetOwnMetadata", "OrdinaryOwnMetadataKeys", "defineMetadata", "hasOwnMetadata", "getOwnMetadata", "getOwnMetadataKeys", "deleteMetadata", "MapIterator", "Map", "Set", "WeakMap", "import_reflect_metadata", "ArrayUtils", "IOS3166_1_Code", "ValidUtils", "MathUtil", "min", "max", "minMax", "sum", "ratio", "x", "bezier", "ObjectUtils", "Path", "tokens", "Script", "ConvertUtils", "map", "obj", "DateUtils", "format", "age", "milliSecond", "_RenderTransactionDrawObj", "startPoint", "points", "index", "StringUtils", "Expression", "Group", "Path", "fetch", "e", "_a", "_b", "Promises", "Result", "p", "ImageUtils", "LoggerLevel", "e", "timer", "ReflectUtils", "_Optional", "OptionalUtils", "RandomUtils", "uuid", "hex", "Schedule", "item", "e", "UrlUtils", "bundle_entry_exports", "ConvertUtils", "StorageUtils", "ValidUtils", "AnimationFrameUtils", "fps", "fpsConfig", "ClipBoardUtils", "window", "ConvertUtils", "CookieUtils", "names", "DocumentUtils", "document", "DownloadUtils", "window", "CanvasUtils", "Context2D", "ElementUtils", "attribute", "EventUtils", "window", "NodeUtils", "FindNodesFilterResult", "document", "attribute", "StorageUtils", "window", "StyleCssUtils", "ValidUtils", "WindowUtils", "window", "RangeResult", "RangeIterator", "Range", "window", "Range", "context", "attribute", "map", "it", "ExecuteState", "data", "DestroyOptionType", "RawSetType", "RawSetOperatorType", "rawSet", "attribute", "Range", "drAttrs", "NodeFilter", "Node", "r", "element", "currentNode", "map", "message", "it", "node", "_a", "template", "it", "_a", "rawSets", "concat", "skip", "value", "routeData", "data", "e", "window", "timer", "attribute", "RouterOutlet", "A", "__decorate", "Appender", "CheckBox", "Choose", "Details", "ValidUtils", "document", "it", "ForOf", "If", "Input", "it", "PromiseSwitch", "Radio", "Route", "__decorate", "__decorate", "Select", "ValidUtils", "window", "document", "_a", "This", "Timer", "Appender", "map"]
7
7
  }