@dooboostore/dom-render 1.0.112 → 1.0.113

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 (519) hide show
  1. package/README.MD +449 -15
  2. package/dist/cjs/DomRender.js +6 -6
  3. package/dist/cjs/DomRender.js.map +3 -3
  4. package/dist/cjs/DomRenderProxy.js +124 -101
  5. package/dist/cjs/DomRenderProxy.js.map +3 -3
  6. package/dist/cjs/bundle-entry.js +1 -3
  7. package/dist/cjs/bundle-entry.js.map +2 -2
  8. package/dist/cjs/components/ComponentBase.js +46 -34
  9. package/dist/cjs/components/ComponentBase.js.map +3 -3
  10. package/dist/cjs/components/ComponentSet.js.map +2 -2
  11. package/dist/cjs/components/details/Details.js +6 -6
  12. package/dist/cjs/components/details/Details.js.map +3 -3
  13. package/dist/cjs/components/input/Input.js +12 -14
  14. package/dist/cjs/components/input/Input.js.map +3 -3
  15. package/dist/cjs/components/promise/PromiseSwitch.js +4 -4
  16. package/dist/cjs/components/promise/PromiseSwitch.js.map +3 -3
  17. package/dist/cjs/components/router/Route.js.map +1 -1
  18. package/dist/cjs/components/router/RouterOutlet.js +3 -0
  19. package/dist/cjs/components/router/RouterOutlet.js.map +2 -2
  20. package/dist/cjs/components/select/Select.js +6 -6
  21. package/dist/cjs/components/select/Select.js.map +3 -3
  22. package/dist/cjs/components/this/This.js +3 -0
  23. package/dist/cjs/components/this/This.js.map +2 -2
  24. package/dist/cjs/configs/DomRenderConfig.js.map +1 -1
  25. package/dist/cjs/configs/TargetElement.js.map +1 -1
  26. package/dist/cjs/decorators/DomRenderNoProxy.js +5 -5
  27. package/dist/cjs/decorators/DomRenderNoProxy.js.map +3 -3
  28. package/dist/cjs/events/EventManager.js +153 -124
  29. package/dist/cjs/events/EventManager.js.map +3 -3
  30. package/dist/cjs/index.js +31 -1
  31. package/dist/cjs/index.js.map +2 -2
  32. package/dist/cjs/messenger/Messenger.js.map +1 -1
  33. package/dist/cjs/operators/Dr.js +2 -2
  34. package/dist/cjs/operators/Dr.js.map +2 -2
  35. package/dist/cjs/operators/DrAppender.js +98 -35
  36. package/dist/cjs/operators/DrAppender.js.map +2 -2
  37. package/dist/cjs/operators/DrFor.js +2 -2
  38. package/dist/cjs/operators/DrFor.js.map +2 -2
  39. package/dist/cjs/operators/DrForOf.js +98 -119
  40. package/dist/cjs/operators/DrForOf.js.map +2 -2
  41. package/dist/cjs/operators/DrForm.js +11 -11
  42. package/dist/cjs/operators/DrForm.js.map +3 -3
  43. package/dist/cjs/operators/DrIf.js +4 -4
  44. package/dist/cjs/operators/DrIf.js.map +2 -2
  45. package/dist/cjs/operators/DrInnerHTML.js +2 -2
  46. package/dist/cjs/operators/DrInnerHTML.js.map +2 -2
  47. package/dist/cjs/operators/DrInnerText.js +2 -2
  48. package/dist/cjs/operators/DrInnerText.js.map +2 -2
  49. package/dist/cjs/operators/DrRepeat.js +2 -2
  50. package/dist/cjs/operators/DrRepeat.js.map +2 -2
  51. package/dist/cjs/operators/DrStripElement.js +2 -2
  52. package/dist/cjs/operators/DrStripElement.js.map +2 -2
  53. package/dist/cjs/operators/DrTargetElement.js +5 -4
  54. package/dist/cjs/operators/DrTargetElement.js.map +2 -2
  55. package/dist/cjs/operators/DrTargetElementIsElement.js +5 -4
  56. package/dist/cjs/operators/DrTargetElementIsElement.js.map +2 -2
  57. package/dist/cjs/operators/DrThis.js +2 -2
  58. package/dist/cjs/operators/DrThis.js.map +2 -2
  59. package/dist/cjs/operators/DrThisProperty.js +4 -4
  60. package/dist/cjs/operators/DrThisProperty.js.map +2 -2
  61. package/dist/cjs/operators/OperatorExecuter.js +3 -3
  62. package/dist/cjs/operators/OperatorExecuter.js.map +2 -2
  63. package/dist/cjs/rawsets/Attrs.js.map +1 -1
  64. package/dist/cjs/rawsets/CreatorMetaData.js.map +1 -1
  65. package/dist/cjs/rawsets/RawSet.js +237 -214
  66. package/dist/cjs/rawsets/RawSet.js.map +3 -3
  67. package/dist/cjs/rawsets/Render.js.map +1 -1
  68. package/dist/cjs/rawsets/index.js +30 -0
  69. package/dist/cjs/rawsets/index.js.map +3 -3
  70. package/dist/esm/DomRender.js +3 -3
  71. package/dist/esm/DomRender.js.map +1 -1
  72. package/dist/esm/DomRenderProxy.js +110 -87
  73. package/dist/esm/DomRenderProxy.js.map +3 -3
  74. package/dist/esm/bundle-entry.js +1 -3
  75. package/dist/esm/bundle-entry.js.map +2 -2
  76. package/dist/esm/components/ComponentBase.js +21 -9
  77. package/dist/esm/components/ComponentBase.js.map +2 -2
  78. package/dist/esm/components/ComponentSet.js.map +2 -2
  79. package/dist/esm/components/details/Details.js +2 -2
  80. package/dist/esm/components/details/Details.js.map +1 -1
  81. package/dist/esm/components/input/Input.js +6 -8
  82. package/dist/esm/components/input/Input.js.map +2 -2
  83. package/dist/esm/components/promise/PromiseSwitch.js +2 -2
  84. package/dist/esm/components/promise/PromiseSwitch.js.map +1 -1
  85. package/dist/esm/components/router/Route.js.map +1 -1
  86. package/dist/esm/components/router/RouterOutlet.js +3 -0
  87. package/dist/esm/components/router/RouterOutlet.js.map +2 -2
  88. package/dist/esm/components/select/Select.js +3 -3
  89. package/dist/esm/components/select/Select.js.map +1 -1
  90. package/dist/esm/components/this/This.js +3 -0
  91. package/dist/esm/components/this/This.js.map +2 -2
  92. package/dist/esm/decorators/DomRenderNoProxy.js +2 -2
  93. package/dist/esm/decorators/DomRenderNoProxy.js.map +1 -1
  94. package/dist/esm/events/EventManager.js +120 -91
  95. package/dist/esm/events/EventManager.js.map +2 -2
  96. package/dist/esm/index.js +49 -1
  97. package/dist/esm/index.js.map +2 -2
  98. package/dist/esm/messenger/Messenger.js.map +1 -1
  99. package/dist/esm/operators/Dr.js +1 -1
  100. package/dist/esm/operators/Dr.js.map +2 -2
  101. package/dist/esm/operators/DrAppender.js +98 -35
  102. package/dist/esm/operators/DrAppender.js.map +2 -2
  103. package/dist/esm/operators/DrFor.js +1 -1
  104. package/dist/esm/operators/DrFor.js.map +2 -2
  105. package/dist/esm/operators/DrForOf.js +98 -119
  106. package/dist/esm/operators/DrForOf.js.map +2 -2
  107. package/dist/esm/operators/DrForm.js +3 -3
  108. package/dist/esm/operators/DrForm.js.map +2 -2
  109. package/dist/esm/operators/DrIf.js +1 -1
  110. package/dist/esm/operators/DrIf.js.map +2 -2
  111. package/dist/esm/operators/DrInnerHTML.js +1 -1
  112. package/dist/esm/operators/DrInnerHTML.js.map +2 -2
  113. package/dist/esm/operators/DrInnerText.js +1 -1
  114. package/dist/esm/operators/DrInnerText.js.map +2 -2
  115. package/dist/esm/operators/DrRepeat.js +1 -1
  116. package/dist/esm/operators/DrRepeat.js.map +2 -2
  117. package/dist/esm/operators/DrStripElement.js +1 -1
  118. package/dist/esm/operators/DrStripElement.js.map +2 -2
  119. package/dist/esm/operators/DrTargetElement.js +4 -3
  120. package/dist/esm/operators/DrTargetElement.js.map +2 -2
  121. package/dist/esm/operators/DrTargetElementIsElement.js +4 -3
  122. package/dist/esm/operators/DrTargetElementIsElement.js.map +2 -2
  123. package/dist/esm/operators/DrThis.js +1 -1
  124. package/dist/esm/operators/DrThis.js.map +1 -1
  125. package/dist/esm/operators/DrThisProperty.js +2 -2
  126. package/dist/esm/operators/DrThisProperty.js.map +1 -1
  127. package/dist/esm/operators/OperatorExecuter.js +1 -1
  128. package/dist/esm/operators/OperatorExecuter.js.map +1 -1
  129. package/dist/esm/rawsets/RawSet.js +195 -172
  130. package/dist/esm/rawsets/RawSet.js.map +2 -2
  131. package/dist/esm/rawsets/index.js +26 -0
  132. package/dist/esm/rawsets/index.js.map +3 -3
  133. package/dist/esm-bundle/dooboostore-dom-render.esm.js +11429 -8895
  134. package/dist/esm-bundle/dooboostore-dom-render.esm.js.map +4 -4
  135. package/dist/types/DomRender.d.ts +3 -3
  136. package/dist/types/DomRender.d.ts.map +1 -1
  137. package/dist/types/DomRenderProxy.d.ts +4 -0
  138. package/dist/types/DomRenderProxy.d.ts.map +1 -1
  139. package/dist/types/bundle-entry.d.ts +1 -3
  140. package/dist/types/bundle-entry.d.ts.map +1 -1
  141. package/dist/types/components/ComponentBase.d.ts +1 -1
  142. package/dist/types/components/ComponentBase.d.ts.map +1 -1
  143. package/dist/types/components/ComponentSet.d.ts +4 -4
  144. package/dist/types/components/ComponentSet.d.ts.map +1 -1
  145. package/dist/types/components/a/A.d.ts +1 -1
  146. package/dist/types/components/appender/Appender.d.ts +1 -1
  147. package/dist/types/components/checkbox/CheckBox.d.ts +3 -3
  148. package/dist/types/components/choose/Choose.d.ts +3 -3
  149. package/dist/types/components/details/Details.d.ts +4 -4
  150. package/dist/types/components/forOf/ForOf.d.ts +1 -1
  151. package/dist/types/components/if/If.d.ts +1 -1
  152. package/dist/types/components/index.d.ts +39 -39
  153. package/dist/types/components/index.d.ts.map +1 -1
  154. package/dist/types/components/input/Input.d.ts +1 -1
  155. package/dist/types/components/input/Input.d.ts.map +1 -1
  156. package/dist/types/components/promise/PromiseSwitch.d.ts +5 -5
  157. package/dist/types/components/radio/Radio.d.ts +3 -3
  158. package/dist/types/components/router/Route.d.ts +2 -2
  159. package/dist/types/components/router/RouterOutlet.d.ts +2 -1
  160. package/dist/types/components/router/RouterOutlet.d.ts.map +1 -1
  161. package/dist/types/components/select/Select.d.ts +10 -10
  162. package/dist/types/components/this/This.d.ts +2 -1
  163. package/dist/types/components/this/This.d.ts.map +1 -1
  164. package/dist/types/components/timer/Timer.d.ts +1 -1
  165. package/dist/types/configs/DomRenderConfig.d.ts +2 -2
  166. package/dist/types/configs/DomRenderConfig.d.ts.map +1 -1
  167. package/dist/types/configs/TargetElement.d.ts +3 -3
  168. package/dist/types/configs/TargetElement.d.ts.map +1 -1
  169. package/dist/types/events/EventManager.d.ts +4 -0
  170. package/dist/types/events/EventManager.d.ts.map +1 -1
  171. package/dist/types/index.d.ts +12 -0
  172. package/dist/types/index.d.ts.map +1 -1
  173. package/dist/types/messenger/Messenger.d.ts +1 -1
  174. package/dist/types/messenger/Messenger.d.ts.map +1 -1
  175. package/dist/types/operators/Dr.d.ts.map +1 -1
  176. package/dist/types/operators/DrAppender.d.ts.map +1 -1
  177. package/dist/types/operators/DrFor.d.ts.map +1 -1
  178. package/dist/types/operators/DrForOf.d.ts.map +1 -1
  179. package/dist/types/operators/DrForm.d.ts.map +1 -1
  180. package/dist/types/operators/DrIf.d.ts.map +1 -1
  181. package/dist/types/operators/DrInnerHTML.d.ts.map +1 -1
  182. package/dist/types/operators/DrInnerText.d.ts.map +1 -1
  183. package/dist/types/operators/DrRepeat.d.ts.map +1 -1
  184. package/dist/types/operators/DrStripElement.d.ts.map +1 -1
  185. package/dist/types/operators/DrTargetElementIsElement.d.ts.map +1 -1
  186. package/dist/types/rawsets/Attrs.d.ts +5 -0
  187. package/dist/types/rawsets/Attrs.d.ts.map +1 -1
  188. package/dist/types/rawsets/CreatorMetaData.d.ts +1 -1
  189. package/dist/types/rawsets/CreatorMetaData.d.ts.map +1 -1
  190. package/dist/types/rawsets/RawSet.d.ts +10 -8
  191. package/dist/types/rawsets/RawSet.d.ts.map +1 -1
  192. package/dist/types/rawsets/Render.d.ts +1 -1
  193. package/dist/types/rawsets/Render.d.ts.map +1 -1
  194. package/dist/types/rawsets/index.d.ts +20 -0
  195. package/dist/types/rawsets/index.d.ts.map +1 -1
  196. package/dist/umd-bundle/dooboostore-dom-render.umd.js +11491 -8957
  197. package/dist/umd-bundle/dooboostore-dom-render.umd.js.map +4 -4
  198. package/package.json +6 -10
  199. package/src/DomRender.ts +5 -5
  200. package/src/DomRenderProxy.ts +195 -124
  201. package/src/bundle-entry.ts +2 -4
  202. package/src/components/ComponentBase.ts +30 -11
  203. package/src/components/ComponentSet.ts +3 -3
  204. package/src/components/details/Details.ts +3 -3
  205. package/src/components/dialog/example/ImageEditorDialog.ts +10 -10
  206. package/src/components/input/Input.ts +7 -9
  207. package/src/components/promise/PromiseSwitch.ts +2 -2
  208. package/src/components/router/Route.ts +1 -1
  209. package/src/components/router/RouterOutlet.ts +4 -0
  210. package/src/components/select/Select.ts +4 -4
  211. package/src/components/this/This.ts +3 -0
  212. package/src/configs/DomRenderConfig.ts +9 -9
  213. package/src/configs/TargetElement.ts +3 -3
  214. package/src/decorators/DomRenderNoProxy.ts +2 -2
  215. package/src/events/EventManager.ts +171 -101
  216. package/src/index.ts +32 -17
  217. package/src/messenger/Messenger.ts +1 -1
  218. package/src/operators/Dr.ts +1 -2
  219. package/src/operators/DrAppender.ts +121 -56
  220. package/src/operators/DrFor.ts +1 -2
  221. package/src/operators/DrForOf.ts +102 -128
  222. package/src/operators/DrForm.ts +3 -4
  223. package/src/operators/DrIf.ts +1 -2
  224. package/src/operators/DrInnerHTML.ts +1 -2
  225. package/src/operators/DrInnerText.ts +1 -2
  226. package/src/operators/DrRepeat.ts +1 -2
  227. package/src/operators/DrStripElement.ts +1 -2
  228. package/src/operators/DrTargetElement.ts +4 -4
  229. package/src/operators/DrTargetElementIsElement.ts +4 -3
  230. package/src/operators/DrThis.ts +1 -1
  231. package/src/operators/DrThisProperty.ts +2 -2
  232. package/src/operators/OperatorExecuter.ts +1 -1
  233. package/src/rawsets/Attrs.ts +32 -27
  234. package/src/rawsets/CreatorMetaData.ts +1 -1
  235. package/src/rawsets/RawSet.ts +226 -256
  236. package/src/rawsets/Render.ts +1 -1
  237. package/src/rawsets/index.ts +23 -0
  238. package/tsconfig.json +2 -1
  239. package/dist/cjs/iterators/Range.js +0 -85
  240. package/dist/cjs/iterators/Range.js.map +0 -7
  241. package/dist/cjs/iterators/index.js +0 -18
  242. package/dist/cjs/iterators/index.js.map +0 -7
  243. package/dist/cjs/routers/HashRouter.js +0 -110
  244. package/dist/cjs/routers/HashRouter.js.map +0 -7
  245. package/dist/cjs/routers/PathRouter.js +0 -102
  246. package/dist/cjs/routers/PathRouter.js.map +0 -7
  247. package/dist/cjs/routers/Router.js +0 -192
  248. package/dist/cjs/routers/Router.js.map +0 -7
  249. package/dist/cjs/routers/index.js +0 -20
  250. package/dist/cjs/routers/index.js.map +0 -7
  251. package/dist/cjs/validators/AllCheckedValidatorArray.js +0 -32
  252. package/dist/cjs/validators/AllCheckedValidatorArray.js.map +0 -7
  253. package/dist/cjs/validators/AllUnCheckedValidatorArray.js +0 -32
  254. package/dist/cjs/validators/AllUnCheckedValidatorArray.js.map +0 -7
  255. package/dist/cjs/validators/CheckedValidator.js +0 -32
  256. package/dist/cjs/validators/CheckedValidator.js.map +0 -7
  257. package/dist/cjs/validators/CountEqualsCheckedValidatorArray.js +0 -33
  258. package/dist/cjs/validators/CountEqualsCheckedValidatorArray.js.map +0 -7
  259. package/dist/cjs/validators/CountEqualsUnCheckedValidatorArray.js +0 -33
  260. package/dist/cjs/validators/CountEqualsUnCheckedValidatorArray.js.map +0 -7
  261. package/dist/cjs/validators/CountGreaterThanCheckedValidatorArray.js +0 -33
  262. package/dist/cjs/validators/CountGreaterThanCheckedValidatorArray.js.map +0 -7
  263. package/dist/cjs/validators/CountGreaterThanEqualsCheckedValidatorArray.js +0 -33
  264. package/dist/cjs/validators/CountGreaterThanEqualsCheckedValidatorArray.js.map +0 -7
  265. package/dist/cjs/validators/CountGreaterThanEqualsUnCheckedValidatorArray.js +0 -33
  266. package/dist/cjs/validators/CountGreaterThanEqualsUnCheckedValidatorArray.js.map +0 -7
  267. package/dist/cjs/validators/CountGreaterThanUnCheckedValidatorArray.js +0 -33
  268. package/dist/cjs/validators/CountGreaterThanUnCheckedValidatorArray.js.map +0 -7
  269. package/dist/cjs/validators/CountLessThanCheckedValidatorArray.js +0 -33
  270. package/dist/cjs/validators/CountLessThanCheckedValidatorArray.js.map +0 -7
  271. package/dist/cjs/validators/CountLessThanEqualsCheckedValidatorArray.js +0 -33
  272. package/dist/cjs/validators/CountLessThanEqualsCheckedValidatorArray.js.map +0 -7
  273. package/dist/cjs/validators/CountLessThanEqualsUnCheckedValidatorArray.js +0 -33
  274. package/dist/cjs/validators/CountLessThanEqualsUnCheckedValidatorArray.js.map +0 -7
  275. package/dist/cjs/validators/CountLessThanUnCheckedValidatorArray.js +0 -33
  276. package/dist/cjs/validators/CountLessThanUnCheckedValidatorArray.js.map +0 -7
  277. package/dist/cjs/validators/CountUnCheckedValidatorArray.js +0 -33
  278. package/dist/cjs/validators/CountUnCheckedValidatorArray.js.map +0 -7
  279. package/dist/cjs/validators/EmptyValidator.js +0 -33
  280. package/dist/cjs/validators/EmptyValidator.js.map +0 -7
  281. package/dist/cjs/validators/ExcludeCheckedValidatorArray.js +0 -36
  282. package/dist/cjs/validators/ExcludeCheckedValidatorArray.js.map +0 -7
  283. package/dist/cjs/validators/FormValidator.js +0 -38
  284. package/dist/cjs/validators/FormValidator.js.map +0 -7
  285. package/dist/cjs/validators/IncludeCheckedValidatorArray.js +0 -36
  286. package/dist/cjs/validators/IncludeCheckedValidatorArray.js.map +0 -7
  287. package/dist/cjs/validators/MultipleValidator.js +0 -46
  288. package/dist/cjs/validators/MultipleValidator.js.map +0 -7
  289. package/dist/cjs/validators/NonPassValidator.js +0 -32
  290. package/dist/cjs/validators/NonPassValidator.js.map +0 -7
  291. package/dist/cjs/validators/NotEmptyValidator.js +0 -33
  292. package/dist/cjs/validators/NotEmptyValidator.js.map +0 -7
  293. package/dist/cjs/validators/NotRegExpTestValidator.js +0 -40
  294. package/dist/cjs/validators/NotRegExpTestValidator.js.map +0 -7
  295. package/dist/cjs/validators/PassValidator.js +0 -32
  296. package/dist/cjs/validators/PassValidator.js.map +0 -7
  297. package/dist/cjs/validators/RegExpTestValidator.js +0 -40
  298. package/dist/cjs/validators/RegExpTestValidator.js.map +0 -7
  299. package/dist/cjs/validators/RequiredValidator.js +0 -33
  300. package/dist/cjs/validators/RequiredValidator.js.map +0 -7
  301. package/dist/cjs/validators/UnCheckedValidator.js +0 -32
  302. package/dist/cjs/validators/UnCheckedValidator.js.map +0 -7
  303. package/dist/cjs/validators/ValidMultipleValidator.js +0 -34
  304. package/dist/cjs/validators/ValidMultipleValidator.js.map +0 -7
  305. package/dist/cjs/validators/ValidValidator.js +0 -33
  306. package/dist/cjs/validators/ValidValidator.js.map +0 -7
  307. package/dist/cjs/validators/ValidValidatorArray.js +0 -33
  308. package/dist/cjs/validators/ValidValidatorArray.js.map +0 -7
  309. package/dist/cjs/validators/Validator.js +0 -206
  310. package/dist/cjs/validators/Validator.js.map +0 -7
  311. package/dist/cjs/validators/ValidatorArray.js +0 -91
  312. package/dist/cjs/validators/ValidatorArray.js.map +0 -7
  313. package/dist/cjs/validators/ValueEqualsValidator.js +0 -33
  314. package/dist/cjs/validators/ValueEqualsValidator.js.map +0 -7
  315. package/dist/cjs/validators/ValueNotEqualsValidator.js +0 -33
  316. package/dist/cjs/validators/ValueNotEqualsValidator.js.map +0 -7
  317. package/dist/cjs/validators/index.js +0 -48
  318. package/dist/cjs/validators/index.js.map +0 -7
  319. package/dist/esm/iterators/Range.js +0 -66
  320. package/dist/esm/iterators/Range.js.map +0 -7
  321. package/dist/esm/iterators/index.js +0 -2
  322. package/dist/esm/iterators/index.js.map +0 -7
  323. package/dist/esm/routers/HashRouter.js +0 -91
  324. package/dist/esm/routers/HashRouter.js.map +0 -7
  325. package/dist/esm/routers/PathRouter.js +0 -83
  326. package/dist/esm/routers/PathRouter.js.map +0 -7
  327. package/dist/esm/routers/Router.js +0 -173
  328. package/dist/esm/routers/Router.js.map +0 -7
  329. package/dist/esm/routers/index.js +0 -4
  330. package/dist/esm/routers/index.js.map +0 -7
  331. package/dist/esm/validators/AllCheckedValidatorArray.js +0 -13
  332. package/dist/esm/validators/AllCheckedValidatorArray.js.map +0 -7
  333. package/dist/esm/validators/AllUnCheckedValidatorArray.js +0 -13
  334. package/dist/esm/validators/AllUnCheckedValidatorArray.js.map +0 -7
  335. package/dist/esm/validators/CheckedValidator.js +0 -13
  336. package/dist/esm/validators/CheckedValidator.js.map +0 -7
  337. package/dist/esm/validators/CountEqualsCheckedValidatorArray.js +0 -14
  338. package/dist/esm/validators/CountEqualsCheckedValidatorArray.js.map +0 -7
  339. package/dist/esm/validators/CountEqualsUnCheckedValidatorArray.js +0 -14
  340. package/dist/esm/validators/CountEqualsUnCheckedValidatorArray.js.map +0 -7
  341. package/dist/esm/validators/CountGreaterThanCheckedValidatorArray.js +0 -14
  342. package/dist/esm/validators/CountGreaterThanCheckedValidatorArray.js.map +0 -7
  343. package/dist/esm/validators/CountGreaterThanEqualsCheckedValidatorArray.js +0 -14
  344. package/dist/esm/validators/CountGreaterThanEqualsCheckedValidatorArray.js.map +0 -7
  345. package/dist/esm/validators/CountGreaterThanEqualsUnCheckedValidatorArray.js +0 -14
  346. package/dist/esm/validators/CountGreaterThanEqualsUnCheckedValidatorArray.js.map +0 -7
  347. package/dist/esm/validators/CountGreaterThanUnCheckedValidatorArray.js +0 -14
  348. package/dist/esm/validators/CountGreaterThanUnCheckedValidatorArray.js.map +0 -7
  349. package/dist/esm/validators/CountLessThanCheckedValidatorArray.js +0 -14
  350. package/dist/esm/validators/CountLessThanCheckedValidatorArray.js.map +0 -7
  351. package/dist/esm/validators/CountLessThanEqualsCheckedValidatorArray.js +0 -14
  352. package/dist/esm/validators/CountLessThanEqualsCheckedValidatorArray.js.map +0 -7
  353. package/dist/esm/validators/CountLessThanEqualsUnCheckedValidatorArray.js +0 -14
  354. package/dist/esm/validators/CountLessThanEqualsUnCheckedValidatorArray.js.map +0 -7
  355. package/dist/esm/validators/CountLessThanUnCheckedValidatorArray.js +0 -14
  356. package/dist/esm/validators/CountLessThanUnCheckedValidatorArray.js.map +0 -7
  357. package/dist/esm/validators/CountUnCheckedValidatorArray.js +0 -14
  358. package/dist/esm/validators/CountUnCheckedValidatorArray.js.map +0 -7
  359. package/dist/esm/validators/EmptyValidator.js +0 -14
  360. package/dist/esm/validators/EmptyValidator.js.map +0 -7
  361. package/dist/esm/validators/ExcludeCheckedValidatorArray.js +0 -17
  362. package/dist/esm/validators/ExcludeCheckedValidatorArray.js.map +0 -7
  363. package/dist/esm/validators/FormValidator.js +0 -19
  364. package/dist/esm/validators/FormValidator.js.map +0 -7
  365. package/dist/esm/validators/IncludeCheckedValidatorArray.js +0 -17
  366. package/dist/esm/validators/IncludeCheckedValidatorArray.js.map +0 -7
  367. package/dist/esm/validators/MultipleValidator.js +0 -27
  368. package/dist/esm/validators/MultipleValidator.js.map +0 -7
  369. package/dist/esm/validators/NonPassValidator.js +0 -13
  370. package/dist/esm/validators/NonPassValidator.js.map +0 -7
  371. package/dist/esm/validators/NotEmptyValidator.js +0 -14
  372. package/dist/esm/validators/NotEmptyValidator.js.map +0 -7
  373. package/dist/esm/validators/NotRegExpTestValidator.js +0 -21
  374. package/dist/esm/validators/NotRegExpTestValidator.js.map +0 -7
  375. package/dist/esm/validators/PassValidator.js +0 -13
  376. package/dist/esm/validators/PassValidator.js.map +0 -7
  377. package/dist/esm/validators/RegExpTestValidator.js +0 -21
  378. package/dist/esm/validators/RegExpTestValidator.js.map +0 -7
  379. package/dist/esm/validators/RequiredValidator.js +0 -14
  380. package/dist/esm/validators/RequiredValidator.js.map +0 -7
  381. package/dist/esm/validators/UnCheckedValidator.js +0 -13
  382. package/dist/esm/validators/UnCheckedValidator.js.map +0 -7
  383. package/dist/esm/validators/ValidMultipleValidator.js +0 -15
  384. package/dist/esm/validators/ValidMultipleValidator.js.map +0 -7
  385. package/dist/esm/validators/ValidValidator.js +0 -14
  386. package/dist/esm/validators/ValidValidator.js.map +0 -7
  387. package/dist/esm/validators/ValidValidatorArray.js +0 -14
  388. package/dist/esm/validators/ValidValidatorArray.js.map +0 -7
  389. package/dist/esm/validators/Validator.js +0 -187
  390. package/dist/esm/validators/Validator.js.map +0 -7
  391. package/dist/esm/validators/ValidatorArray.js +0 -72
  392. package/dist/esm/validators/ValidatorArray.js.map +0 -7
  393. package/dist/esm/validators/ValueEqualsValidator.js +0 -14
  394. package/dist/esm/validators/ValueEqualsValidator.js.map +0 -7
  395. package/dist/esm/validators/ValueNotEqualsValidator.js +0 -14
  396. package/dist/esm/validators/ValueNotEqualsValidator.js.map +0 -7
  397. package/dist/esm/validators/index.js +0 -32
  398. package/dist/esm/validators/index.js.map +0 -7
  399. package/dist/types/iterators/Range.d.ts +0 -24
  400. package/dist/types/iterators/Range.d.ts.map +0 -1
  401. package/dist/types/iterators/index.d.ts +0 -2
  402. package/dist/types/iterators/index.d.ts.map +0 -1
  403. package/dist/types/routers/HashRouter.d.ts +0 -26
  404. package/dist/types/routers/HashRouter.d.ts.map +0 -1
  405. package/dist/types/routers/PathRouter.d.ts +0 -25
  406. package/dist/types/routers/PathRouter.d.ts.map +0 -1
  407. package/dist/types/routers/Router.d.ts +0 -83
  408. package/dist/types/routers/Router.d.ts.map +0 -1
  409. package/dist/types/routers/index.d.ts +0 -4
  410. package/dist/types/routers/index.d.ts.map +0 -1
  411. package/dist/types/validators/AllCheckedValidatorArray.d.ts +0 -7
  412. package/dist/types/validators/AllCheckedValidatorArray.d.ts.map +0 -1
  413. package/dist/types/validators/AllUnCheckedValidatorArray.d.ts +0 -7
  414. package/dist/types/validators/AllUnCheckedValidatorArray.d.ts.map +0 -1
  415. package/dist/types/validators/CheckedValidator.d.ts +0 -6
  416. package/dist/types/validators/CheckedValidator.d.ts.map +0 -1
  417. package/dist/types/validators/CountEqualsCheckedValidatorArray.d.ts +0 -8
  418. package/dist/types/validators/CountEqualsCheckedValidatorArray.d.ts.map +0 -1
  419. package/dist/types/validators/CountEqualsUnCheckedValidatorArray.d.ts +0 -8
  420. package/dist/types/validators/CountEqualsUnCheckedValidatorArray.d.ts.map +0 -1
  421. package/dist/types/validators/CountGreaterThanCheckedValidatorArray.d.ts +0 -8
  422. package/dist/types/validators/CountGreaterThanCheckedValidatorArray.d.ts.map +0 -1
  423. package/dist/types/validators/CountGreaterThanEqualsCheckedValidatorArray.d.ts +0 -8
  424. package/dist/types/validators/CountGreaterThanEqualsCheckedValidatorArray.d.ts.map +0 -1
  425. package/dist/types/validators/CountGreaterThanEqualsUnCheckedValidatorArray.d.ts +0 -8
  426. package/dist/types/validators/CountGreaterThanEqualsUnCheckedValidatorArray.d.ts.map +0 -1
  427. package/dist/types/validators/CountGreaterThanUnCheckedValidatorArray.d.ts +0 -8
  428. package/dist/types/validators/CountGreaterThanUnCheckedValidatorArray.d.ts.map +0 -1
  429. package/dist/types/validators/CountLessThanCheckedValidatorArray.d.ts +0 -8
  430. package/dist/types/validators/CountLessThanCheckedValidatorArray.d.ts.map +0 -1
  431. package/dist/types/validators/CountLessThanEqualsCheckedValidatorArray.d.ts +0 -8
  432. package/dist/types/validators/CountLessThanEqualsCheckedValidatorArray.d.ts.map +0 -1
  433. package/dist/types/validators/CountLessThanEqualsUnCheckedValidatorArray.d.ts +0 -8
  434. package/dist/types/validators/CountLessThanEqualsUnCheckedValidatorArray.d.ts.map +0 -1
  435. package/dist/types/validators/CountLessThanUnCheckedValidatorArray.d.ts +0 -8
  436. package/dist/types/validators/CountLessThanUnCheckedValidatorArray.d.ts.map +0 -1
  437. package/dist/types/validators/CountUnCheckedValidatorArray.d.ts +0 -8
  438. package/dist/types/validators/CountUnCheckedValidatorArray.d.ts.map +0 -1
  439. package/dist/types/validators/EmptyValidator.d.ts +0 -6
  440. package/dist/types/validators/EmptyValidator.d.ts.map +0 -1
  441. package/dist/types/validators/ExcludeCheckedValidatorArray.d.ts +0 -9
  442. package/dist/types/validators/ExcludeCheckedValidatorArray.d.ts.map +0 -1
  443. package/dist/types/validators/FormValidator.d.ts +0 -8
  444. package/dist/types/validators/FormValidator.d.ts.map +0 -1
  445. package/dist/types/validators/IncludeCheckedValidatorArray.d.ts +0 -9
  446. package/dist/types/validators/IncludeCheckedValidatorArray.d.ts.map +0 -1
  447. package/dist/types/validators/MultipleValidator.d.ts +0 -9
  448. package/dist/types/validators/MultipleValidator.d.ts.map +0 -1
  449. package/dist/types/validators/NonPassValidator.d.ts +0 -6
  450. package/dist/types/validators/NonPassValidator.d.ts.map +0 -1
  451. package/dist/types/validators/NotEmptyValidator.d.ts +0 -6
  452. package/dist/types/validators/NotEmptyValidator.d.ts.map +0 -1
  453. package/dist/types/validators/NotRegExpTestValidator.d.ts +0 -7
  454. package/dist/types/validators/NotRegExpTestValidator.d.ts.map +0 -1
  455. package/dist/types/validators/PassValidator.d.ts +0 -6
  456. package/dist/types/validators/PassValidator.d.ts.map +0 -1
  457. package/dist/types/validators/RegExpTestValidator.d.ts +0 -7
  458. package/dist/types/validators/RegExpTestValidator.d.ts.map +0 -1
  459. package/dist/types/validators/RequiredValidator.d.ts +0 -6
  460. package/dist/types/validators/RequiredValidator.d.ts.map +0 -1
  461. package/dist/types/validators/UnCheckedValidator.d.ts +0 -6
  462. package/dist/types/validators/UnCheckedValidator.d.ts.map +0 -1
  463. package/dist/types/validators/ValidMultipleValidator.d.ts +0 -10
  464. package/dist/types/validators/ValidMultipleValidator.d.ts.map +0 -1
  465. package/dist/types/validators/ValidValidator.d.ts +0 -7
  466. package/dist/types/validators/ValidValidator.d.ts.map +0 -1
  467. package/dist/types/validators/ValidValidatorArray.d.ts +0 -8
  468. package/dist/types/validators/ValidValidatorArray.d.ts.map +0 -1
  469. package/dist/types/validators/Validator.d.ts +0 -58
  470. package/dist/types/validators/Validator.d.ts.map +0 -1
  471. package/dist/types/validators/ValidatorArray.d.ts +0 -18
  472. package/dist/types/validators/ValidatorArray.d.ts.map +0 -1
  473. package/dist/types/validators/ValueEqualsValidator.d.ts +0 -7
  474. package/dist/types/validators/ValueEqualsValidator.d.ts.map +0 -1
  475. package/dist/types/validators/ValueNotEqualsValidator.d.ts +0 -7
  476. package/dist/types/validators/ValueNotEqualsValidator.d.ts.map +0 -1
  477. package/dist/types/validators/index.d.ts +0 -32
  478. package/dist/types/validators/index.d.ts.map +0 -1
  479. package/src/DomRenderProxy.ts_cache_back +0 -1031
  480. package/src/iterators/Range.ts +0 -73
  481. package/src/iterators/index.ts +0 -1
  482. package/src/routers/HashRouter.ts +0 -110
  483. package/src/routers/PathRouter.ts +0 -105
  484. package/src/routers/Router.ts +0 -278
  485. package/src/routers/index.ts +0 -3
  486. package/src/validators/AllCheckedValidatorArray.ts +0 -12
  487. package/src/validators/AllUnCheckedValidatorArray.ts +0 -12
  488. package/src/validators/CheckedValidator.ts +0 -11
  489. package/src/validators/CountEqualsCheckedValidatorArray.ts +0 -12
  490. package/src/validators/CountEqualsUnCheckedValidatorArray.ts +0 -12
  491. package/src/validators/CountGreaterThanCheckedValidatorArray.ts +0 -12
  492. package/src/validators/CountGreaterThanEqualsCheckedValidatorArray.ts +0 -12
  493. package/src/validators/CountGreaterThanEqualsUnCheckedValidatorArray.ts +0 -12
  494. package/src/validators/CountGreaterThanUnCheckedValidatorArray.ts +0 -12
  495. package/src/validators/CountLessThanCheckedValidatorArray.ts +0 -12
  496. package/src/validators/CountLessThanEqualsCheckedValidatorArray.ts +0 -12
  497. package/src/validators/CountLessThanEqualsUnCheckedValidatorArray.ts +0 -12
  498. package/src/validators/CountLessThanUnCheckedValidatorArray.ts +0 -12
  499. package/src/validators/CountUnCheckedValidatorArray.ts +0 -12
  500. package/src/validators/EmptyValidator.ts +0 -12
  501. package/src/validators/ExcludeCheckedValidatorArray.ts +0 -16
  502. package/src/validators/FormValidator.ts +0 -19
  503. package/src/validators/IncludeCheckedValidatorArray.ts +0 -16
  504. package/src/validators/MultipleValidator.ts +0 -29
  505. package/src/validators/NonPassValidator.ts +0 -11
  506. package/src/validators/NotEmptyValidator.ts +0 -13
  507. package/src/validators/NotRegExpTestValidator.ts +0 -20
  508. package/src/validators/PassValidator.ts +0 -11
  509. package/src/validators/RegExpTestValidator.ts +0 -21
  510. package/src/validators/RequiredValidator.ts +0 -13
  511. package/src/validators/UnCheckedValidator.ts +0 -11
  512. package/src/validators/ValidMultipleValidator.ts +0 -14
  513. package/src/validators/ValidValidator.ts +0 -11
  514. package/src/validators/ValidValidatorArray.ts +0 -12
  515. package/src/validators/Validator.ts +0 -245
  516. package/src/validators/ValidatorArray.ts +0 -83
  517. package/src/validators/ValueEqualsValidator.ts +0 -11
  518. package/src/validators/ValueNotEqualsValidator.ts +0 -11
  519. package/src/validators/index.ts +0 -31
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/rawsets/RawSet.ts"],
4
- "sourcesContent": ["import { RandomUtils } from '@dooboostore/core/random/RandomUtils';\nimport { StringUtils } from '@dooboostore/core/string/StringUtils';\nimport { EventManager, NormalAttrDataType } 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';\nimport { ConvertUtils } from '@dooboostore/core/convert/ConvertUtils';\n\nexport type RenderResult = { raws: RawSet[]; executedOperators: OperatorExecuter[] };\n\n// let renderCnt = 0;\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 // elementName\n public static readonly DR_TARGET_ELEMENT_ELEMENTNAME = 'dr-target-element';\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 public static readonly DR_VARIABLE_NAME_OPTIONNAME = 'dr-option-variable-name';\n public static readonly DR_ITEM_VARIABLE_NAME_OPTIONNAME = 'dr-option-item-variable-name';\n public static readonly DR_ITEM_INDEX_VARIABLE_NAME_OPTIONNAME = 'dr-option-item-index-variable-name';\n public static readonly DR_INNER_HTML_NAME_OPTIONNAME = 'dr-option-inner-html-name';\n public static readonly DR_INNER_TEXT_NAME_OPTIONNAME = 'dr-option-inner-text-name';\n public static readonly DR_INNER_HTML_ESCAPED_NAME_OPTIONNAME = 'dr-option-inner-html-escaped-name';\n\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\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_ELEMENTS = [\n RawSet.DR_TARGET_ELEMENT_ELEMENTNAME\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, // TODO: DrDetect \uC624\uD37C\uB808\uC774\uD130 \uAD6C\uD604 \uD544\uC694\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 (\n this.point && this.point.start && this.point.end && this.point.start.isConnected && this.point.end.isConnected\n );\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, NormalAttrDataType>(JSON.parse(targetAttrMap)).forEach((v, k) => {\n const variablePaths = v.variablePaths;\n // let targetScript = v.originalAttrValue;\n // variablePaths.forEach(it => {\n // let r = ObjectUtils.Path.toOptionalChainPath(it.inner);\n // targetScript = targetScript.replaceAll(it.origin,`\\${${r}}`);\n // })\n // targetScripts.push(`(${targetScript})`);\n // \uBCC0\uC218 \uCCB4\uD06C\uB9CC \uD558\uB294\uAC70\uB2C8\uAE50 \uC774\uB807\uAC8C\n variablePaths.forEach(it => targetScripts.push(`(${it.inner})`));\n // console.log('targetScripts', targetScripts);\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 private lastRenderedValue: string | undefined;\n public async render(obj: any, config: DomRenderConfig): Promise<RenderResult> {\n // console.log('render!!!!!!!!!!!!!!')\n // renderCnt++;\n // const t0 = performance.now();\n // console.group('RawSet render', this);\n // Dirty Checking Optimization for Text Nodes\n if (this.dataSet.fragment.childNodes.length === 1 && this.dataSet.fragment.childNodes[0].nodeType === Node.TEXT_NODE) {\n const textContent = this.dataSet.fragment.childNodes[0].textContent;\n if (textContent) {\n const runText = RawSet.expressionGroups(textContent)[0][1];\n const __render = {\n rawSet: this,\n scripts: EventManager.setBindProperty(config?.scripts, obj),\n router: config?.router,\n range: Range.range,\n element: this.dataSet.fragment.childNodes[0],\n 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 };\n\n try {\n const newValue = ObjectUtils.Script.evaluateReturn({\n bodyScript: __render.bindScript,\n returnScript: runText\n }, Object.assign(obj, { __render }));\n\n const newValueStr = String(newValue);\n if (this.lastRenderedValue === newValueStr) {\n // console.log('\u2713 Skipping render: Value unchanged', newValue);\n return { raws: [], executedOperators: [] };\n }\n // console.log('\u2717 Rendering: Value changed', this.lastRenderedValue, '->', newValue);\n // Update lastRenderedValue BEFORE proceeding with render\n // This ensures the value is cached even if render fails partway through\n this.lastRenderedValue = newValueStr;\n } catch (e) {\n // Evaluation failed, proceed with normal render\n // console.log('\u26A0 Dirty check failed, proceeding with render', e);\n }\n }\n }\n\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.evaluateReturn({ bodyScript: __render.bindScript, returnScript: runText }, Object.assign(obj, { __render })\n );\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.evaluateReturn({ bodyScript: __render.bindScript, returnScript: 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\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 // console.log(`RawSet aa took ${performance.now() - t0} milliseconds. children`, childrenNodes);\n this.applyEvent(obj, genNode, config);\n // console.log(`RawSet xxxxxxxxxx took ${performance.now() - t0} milliseconds.`);\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 replaceBody took ${performance.now() - t0} milliseconds.`);\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 // console.log(`RawSet onRenderedEvent took ${performance.now() - t0} milliseconds.`);\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 // console.log(`RawSet drAttrs.forEach took ${performance.now() - t0} milliseconds.`);\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 await it.obj?.onInitRender?.({}, this);\n }\n }\n // console.log(`RawSet const it of onThisComponentSetCallBacks took ${performance.now() - t0} milliseconds.`);\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 await this.dataSet.render.currentThis.onInitRender({}, this);\n }\n\n config?.onElementInit?.(it.name, obj, this, it.targetElement);\n }\n // console.log(`RawSet for (const it of onElementInitCallBacks) { took ${performance.now() - t0} milliseconds.`);\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 // console.log(`RawSet for (const it of onAttrInitCallBacks) { took ${performance.now() - t0} milliseconds.`);\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(`RawSet if (obj.__domrender_components) { took ${performance.now() - t0} milliseconds.`);\n // console.log('-------raws',raws)\n // console.log(`RawSet render took ${performance.now() - t0} milliseconds. END!!`, renderCnt);\n console.groupEnd();\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 // const t0 = performance.now();\n this.dataSet.config.eventManager.applyEvent(\n obj,\n this.dataSet.config.eventManager.findAttrElements(fragment, config),\n config\n );\n // console.log(`RawSet applyEvent took ${performance.now() - t0} milliseconds.`);\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(\n `${ObjectUtils.Path.toOptionalChainPath(data)}?.length -1`,\n obj\n );\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 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 =\n between?.length > 0\n ? NodeUtils.FindNodesFilterResult.MATCH_AND_SKIP_CHILDREN\n : 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 // console.log('elementAttrAttrName-->', element.outerHTML);\n const script = element.getAttribute(EventManager.attrAttrName) ?? '';\n // console.log('scriptscriptscriptscriptscriptscript,', script)\n // const keyValuePairs = Array.from(script.matchAll(/['\"]?(\\w+)['\"]?:\\s*([^,}]+)/g))\n const keyValuePairs = Array.from(script.matchAll(/['\"]?([\\w-_]+)['\"]?:\\s*([^,}]+)/g))\n .map(match => ({\n key: match[1],\n value: match[2]\n }));\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 targetElementNames.push(...RawSet.DR_ELEMENTS)\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, NormalAttrDataType>();\n const linkVariables = new Map<string, string>();\n const linkNames = EventManager.linkAttrs.map(it => it.name);\n const isAttr =\n element.getAttributeNames().filter(it => !EventManager.noDetectAttr.includes(it)).filter(it => {\n const value = element.getAttribute(it)?.trim();\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 const variablePaths: { origin: string; inner: string }[] = RawSet.expressionGroups(value).map(it => ({\n origin: it[0].trim(),\n inner: it[1].trim()\n }));\n const isStringTemplate = variablePaths.length > 1 || (variablePaths[0] && variablePaths[0].origin !== value);\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 // let variablePath: string = RawSet.expressionGroups(value)[0][1];\n // const originVariable = variablePath;\n // variablePath = variablePath.replace(/#[^#]*#/g, '({})');\n // const optionalChainPath = ObjectUtils.Path.toOptionalChainPath(variablePath);\n // const cval = ObjectUtils.Script.evaluateReturn(optionalChainPath, Object.assign(obj));\n\n let targetScript = value;\n variablePaths.forEach(it => {\n let r = it.inner.replace(/#[^#]*#/g, '({})');\n r = ObjectUtils.Path.toOptionalChainPath(r);\n targetScript = targetScript.replaceAll(it.origin, `\\${${r}}`);\n });\n const cval = ObjectUtils.Script.evaluateReturn('`' + targetScript + '`', Object.assign(obj));\n\n if (cval === null) {\n element.removeAttribute(it);\n /* TODO: \uC5EC\uAE30 \uB354 \uCD94\uAC00\uB418\uC5B4\uC57C\uB420\uB4EF\n TODO: \uD6D4..... \uC5C6\uC5B4\uB3C4\uB420\uB4EF?\n *\n <select dr-event-change=\"@this@.onMarketChange($event)\" class=\"market-select\">\n <option>\uB9C8\uCF13 \uC120\uD0DD (${@this@.markets?.length??0}$\uAC1C)</option>\n <option dr-for-of=\"@this@.markets\" dr-option-item-variable-name=\"market\" value=\"${#market#.uuid}$\" dr-attr=\"{selected: #market#.uuid === @this@.marketUUID ? 'selected' : null}\">\n ${#market#.name}$\n </option>\n </select>\n */\n // } else if (\n // !(element.hasAttribute(RawSet.DR_VARIABLE_NAME_OPTIONNAME) || element.hasAttribute(RawSet.DR_ITEM_VARIABLE_NAME_OPTIONNAME) || element.hasAttribute(RawSet.DR_ITEM_INDEX_VARIABLE_NAME_OPTIONNAME))\n // ) {\n // element.setAttribute(it, cval);\n } else {\n element.setAttribute(it, cval);\n }\n normalAttrs.set(it, { originalAttrValue: value, variablePaths: variablePaths, isStringTemplate });\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 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 const p = currentNode?.parentNode;\n p?.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 targetElementNames.push(...RawSet.DR_ELEMENTS)\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 // console.log('rrrrrrrrrrrrr', thisRandom);\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 // console.log('thisRandom', thisRandom, variable);\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 const innerText = element.textContent?.trim() ?? '';\n const escapedInnerHTML = ConvertUtils.escapeHTML(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_INNER_HTML_NAME_OPTIONNAME) ?? 'innerHTML';\n const innerTEXTName = targetElement.getAttribute(RawSet.DR_INNER_TEXT_NAME_OPTIONNAME) ?? 'innerTEXT';\n const innerHTMLEscapedName = targetElement.getAttribute(RawSet.DR_INNER_HTML_ESCAPED_NAME_OPTIONNAME) ?? 'innerHTMLEscaped';\n const templateReplacements: StringUtils.SequentialReplacement[] = [];\n if (innerHTMLName) {\n templateReplacements.push({\n regex: new RegExp(`#${innerHTMLName}#`, 'g'),\n callback: () => element.innerHTML\n });\n }\n if (innerTEXTName) {\n templateReplacements.push({\n regex: new RegExp(`#${innerTEXTName}#`, 'g'),\n callback: () => innerText\n });\n }\n if (innerHTMLEscapedName) {\n templateReplacements.push({\n regex: new RegExp(`#${innerHTMLEscapedName}#`, 'g'),\n callback: () => escapedInnerHTML\n });\n }\n\n if (templateReplacements.length > 0) {\n targetElement.innerHTML = StringUtils.replaceSequentially(targetElement.innerHTML, templateReplacements);\n }\n\n // console.log('aa-asIs', targetElement.innerHTML);\n const componentName = targetElement.getAttribute(RawSet.DR_VARIABLE_NAME_OPTIONNAME) ?? 'component';\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', thisRandom);\n // let thisNameRandom: string | undefined = undefined;\n targetElement.innerHTML = targetElement.innerHTML.replaceAll(`#${componentName}#`, drThis);\n\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 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 let applayTemplate = element.innerHTML;\n let applayTemplateText = element.textContent?.trim() ?? '';\n let applayTemplateEscape = ConvertUtils.escapeHTML(element.innerHTML);\n let innerHTMLThisRandom;\n const componentName = element.getAttribute(RawSet.DR_VARIABLE_NAME_OPTIONNAME) ?? 'component';\n const innerHTMLName = element.getAttribute(RawSet.DR_INNER_HTML_NAME_OPTIONNAME) ?? 'innerHTML';\n const innerTEXTName = element.getAttribute(RawSet.DR_INNER_TEXT_NAME_OPTIONNAME) ?? 'innerTEXT';\n const innerHTMLEscapedName = element.getAttribute(RawSet.DR_INNER_HTML_ESCAPED_NAME_OPTIONNAME) ?? 'innerHTMLEscaped';\n\n // if (element.getAttribute(RawSet.DR_COMPONENT_VARIABLE_NAME_OPTIONNAME)) {\n // console.log('vvvvvvv', element.getAttribute(RawSet.DR_COMPONENT_VARIABLE_NAME_OPTIONNAME));\n // }\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 = StringUtils.replaceSequentially(applayTemplate, [\n {\n regex: /this\\./g,\n callback: () => innerHTMLThisRandom\n },\n {\n regex: new RegExp(`#${componentName}#`, 'g'),\n callback: () => nearThisPath\n }\n ]);\n // }\n // applayTemplate = applayTemplate.replace(RegExp(`#${componentName}#`, 'g'), 'this');\n }\n // applayTemplate = template.replace(RegExp(`#${innerHTMLName}#`, 'g'), applayTemplate);\n // RawSet.replaceInnerHTML(\n // applayTemplate = StringUtils.regexExecArrayReplace(this.template, RegExp(`#${innerHTMLName}#`, 'g'), applayTemplate)\n // applayTemplate = StringUtils.regexExecArrayReplace(this.template, [RegExp(`#${innerHTMLName}#`, 'g')], applayTemplate)\n applayTemplate = StringUtils.replaceSequentially((this.template ?? ''), [\n {\n regex: new RegExp(`#${innerHTMLName}#`, 'g'),\n callback: () => applayTemplate\n },\n {\n regex: new RegExp(`#${innerTEXTName}#`, 'g'),\n callback: () => applayTemplateText\n },\n {\n regex: new RegExp(`#${innerHTMLEscapedName}#`, 'g'),\n callback: () => applayTemplateEscape\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 // 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 // console.log('!!!!!@', (data && innerHTMLThisRandom) ,innerHTMLThisRandom);\n if (data && innerHTMLThisRandom) {\n const template = config.window.document.createElement('template') as HTMLTemplateElement;\n\n // console.log('------->', template.content);\n // \uBE0C\uB77C\uC6B0\uC800\uC5D0\uC11C\uB294 \uC774\uAC8C\uB418\uB294\uB370 linkedom \uC5D0\uC11C\uB294 \uC548\uB41C\uB2E4. \uADF8\uB798\uC11C innerhtml\uB85C \uCC98\uB9AC\uD568\n // template.content.append(data);\n // console.log('-------', template.innerHTML);\n // const d = config.window.document.createElement('div')\n // d.innerHTML='<a></a>'\n // console.log('-----XX', ElementUtils.toInnerHTML(data, {document: config.window.document}));\n // template.innerHTML = template.innerHTML.replace(RegExp(innerHTMLThisRandom, 'g'), 'this.');\n let s = ElementUtils.toInnerHTML(data, { document: config.window.document });\n template.innerHTML = s.replace(RegExp(innerHTMLThisRandom, 'g'), 'this.');;\n // console.log('ccc?', template.innerHTML);\n // template.innerHTML = '<div>zzzzzzz</div>'\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 (\n rawSet.point?.start &&\n 'getAttribute' in rawSet.point.start &&\n rawSet.point.start.getAttribute('this-path')\n ) {\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, NormalAttrDataType>(JSON.parse(normalAttribute)).forEach((v, k) => {\n const variablePaths = v.variablePaths;\n let targetScript = v.originalAttrValue.trim();\n\n //\uC911\uC694!! expression \uD558\uB098\uB9CC \uC874\uC7AC \uBC0F \uADF8\uC678\uAC83\uB4E4\uC774 \uC5C6\uC744\uB54C \uADF8\uC790\uCCB4\uAC00 \uAC12\uC774\uB2E4 \uADF8\uC678 \uC5EC\uB7EC\uAC1C \uC788\uC73C\uBA74 \uBB38\uC790\uC5F4 \uD569\uCE58\uB294\uAC78\uB85C \uAC04\uC8FC\uD55C\uB2E4.\n if (v.isStringTemplate) {\n variablePaths.forEach(it => {\n let r = ObjectUtils.Path.toOptionalChainPath(it.inner);\n targetScript = targetScript.replaceAll(it.origin, `\\${${r}}`);\n });\n } else {\n let r = ObjectUtils.Path.toOptionalChainPath(variablePaths[0].inner);\n targetScript = targetScript.replaceAll(variablePaths[0].origin, r);\n }\n const cval = ObjectUtils.Script.evaluateReturn(\n { bodyScript: config.script, returnScript: v.isStringTemplate ? '`' + targetScript + '`' : targetScript },\n Object.assign(config.obj, config.renderData ? { __render: config.renderData } : undefined)\n );\n attribute[k] = cval;\n });\n }\n // console.log('attribute', attribute);\n return attribute;\n }\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { RandomUtils } from '@dooboostore/core';\nimport { StringUtils } from '@dooboostore/core';\nimport { EventManager, NormalAttrDataType } from '../events/EventManager';\nimport type { DomRenderConfig } from '../configs/DomRenderConfig';\nimport { Range } from '@dooboostore/core';\nimport { ElementUtils } from '@dooboostore/core-web';\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';\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';\nimport { NodeUtils } from '@dooboostore/core-web';\nimport { ConvertUtils } from '@dooboostore/core';\nimport { DomRenderComponentMetaKey } from './index';\n\nexport type RenderResult = { raws: RawSet[]; executedOperators: OperatorExecuter[] };\n\n// let renderCnt = 0;\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 // elementName\n public static readonly DR_TARGET_ELEMENT_ELEMENTNAME = 'dr-target-element';\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 public static readonly DR_VARIABLE_NAME_OPTIONNAME = 'dr-option-variable-name';\n public static readonly DR_ITEM_VARIABLE_NAME_OPTIONNAME = 'dr-option-item-variable-name';\n public static readonly DR_ITEM_VARIABLE_NAME_OPTIONNAME_DEFAULT = 'it';\n public static readonly DR_ITEM_INDEX_VARIABLE_NAME_OPTIONNAME = 'dr-option-item-index-variable-name';\n public static readonly DR_ITEM_OFFSET_INDEX_VARIABLE_NAME_OPTIONNAME = 'dr-option-item-offset-index-variable-name';\n public static readonly DR_ITEM_INDEX_OFFSET_OPTIONNAME = 'dr-option-item-index-offset';\n public static readonly DR_ITEM_INDEX_VARIABLE_NAME_OPTIONNAME_DEFAULT = 'index';\n public static readonly DR_ITEM_OFFSET_INDEX_VARIABLE_NAME_OPTIONNAME_DEFAULT = 'offsetIndex';\n\n public static readonly DR_INNER_HTML_NAME_OPTIONNAME = 'dr-option-inner-html-name';\n public static readonly DR_INNER_TEXT_NAME_OPTIONNAME = 'dr-option-inner-text-name';\n public static readonly DR_INNER_HTML_ESCAPED_NAME_OPTIONNAME = 'dr-option-inner-html-escaped-name';\n\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 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 drItemIndexOffsetOption: RawSet.DR_ITEM_INDEX_OFFSET_OPTIONNAME,\n drVariableNameOption: RawSet.DR_VARIABLE_NAME_OPTIONNAME,\n drItemVariableNameOption: RawSet.DR_ITEM_VARIABLE_NAME_OPTIONNAME,\n drItemIndexVariableNameOption: RawSet.DR_ITEM_INDEX_VARIABLE_NAME_OPTIONNAME,\n drItemOffsetIndexVariableNameOption: RawSet.DR_ITEM_OFFSET_INDEX_VARIABLE_NAME_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_ELEMENTS = [RawSet.DR_TARGET_ELEMENT_ELEMENTNAME];\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, // TODO: DrDetect \uC624\uD37C\uB808\uC774\uD130 \uAD6C\uD604 \uD544\uC694\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(RawSet.DR_ATTRIBUTES, RawSet.DR_DETECT_FILTER_OPTIONNAME, RawSet.DR_DETECT_IF_OPTIONNAME, RawSet.DR_DETECT_ATTR_OPTIONNAME); // .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, NormalAttrDataType>(JSON.parse(targetAttrMap)).forEach((v, k) => {\n const variablePaths = v.variablePaths;\n // let targetScript = v.originalAttrValue;\n // variablePaths.forEach(it => {\n // let r = ObjectUtils.Path.toOptionalChainPath(it.inner);\n // targetScript = targetScript.replaceAll(it.origin,`\\${${r}}`);\n // })\n // targetScripts.push(`(${targetScript})`);\n // \uBCC0\uC218 \uCCB4\uD06C\uB9CC \uD558\uB294\uAC70\uB2C8\uAE50 \uC774\uB807\uAC8C\n variablePaths.forEach(it => targetScripts.push(`(${it.inner})`));\n // console.log('targetScripts', targetScripts);\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 private lastRenderedValue: string | undefined;\n public async render(obj: any, config: DomRenderConfig): Promise<RenderResult> {\n // console.log('render!!!!!!!!!!!!!!')\n // renderCnt++;\n // const t0 = performance.now();\n // console.group('RawSet render', this);\n // Dirty Checking Optimization for Text Nodes\n if (this.dataSet.fragment.childNodes.length === 1 && this.dataSet.fragment.childNodes[0].nodeType === Node.TEXT_NODE) {\n const textContent = this.dataSet.fragment.childNodes[0].textContent;\n if (textContent) {\n const runText = RawSet.expressionGroups(textContent)[0][1];\n const __render = {\n rawSet: this,\n scripts: EventManager.setBindProperty(config?.scripts, obj),\n router: config?.router,\n range: Range.range,\n element: this.dataSet.fragment.childNodes[0],\n 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 };\n\n try {\n const newValue = ObjectUtils.Script.evaluateReturn(\n {\n bodyScript: __render.bindScript,\n returnScript: runText\n },\n Object.assign(obj, { __render })\n );\n\n const newValueStr = String(newValue);\n if (this.lastRenderedValue === newValueStr) {\n // console.log('\u2713 Skipping render: Value unchanged', newValue);\n return { raws: [], executedOperators: [] };\n }\n // console.log('\u2717 Rendering: Value changed', this.lastRenderedValue, '->', newValue);\n // Update lastRenderedValue BEFORE proceeding with render\n // This ensures the value is cached even if render fails partway through\n this.lastRenderedValue = newValueStr;\n } catch (e) {\n // Evaluation failed, proceed with normal render\n // console.log('\u26A0 Dirty check failed, proceeding with render', e);\n }\n }\n }\n\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.evaluateReturn({ bodyScript: __render.bindScript, returnScript: 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.evaluateReturn({ bodyScript: __render.bindScript, returnScript: 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 drItemIndexOffsetOption: this.getAttributeAndDelete(element, RawSet.DR_ITEM_INDEX_OFFSET_OPTIONNAME),\n drVariableNameOption: this.getAttributeAndDelete(element, RawSet.DR_VARIABLE_NAME_OPTIONNAME),\n drItemVariableNameOption: this.getAttributeAndDelete(element, RawSet.DR_ITEM_VARIABLE_NAME_OPTIONNAME),\n drItemIndexVariableNameOption: this.getAttributeAndDelete(element, RawSet.DR_ITEM_INDEX_VARIABLE_NAME_OPTIONNAME),\n drItemOffsetIndexVariableNameOption: this.getAttributeAndDelete(element, RawSet.DR_ITEM_OFFSET_INDEX_VARIABLE_NAME_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 // console.log(`RawSet aa took ${performance.now() - t0} milliseconds. children`, childrenNodes);\n this.applyEvent(obj, genNode, config);\n // console.log(`RawSet xxxxxxxxxx took ${performance.now() - t0} milliseconds.`);\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 replaceBody took ${performance.now() - t0} milliseconds.`);\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 // console.log(`RawSet onRenderedEvent took ${performance.now() - t0} milliseconds.`);\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 // console.log(`RawSet drAttrs.forEach took ${performance.now() - t0} milliseconds.`);\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 await it.obj?.onInitRender?.({}, this);\n }\n }\n // console.log(`RawSet const it of onThisComponentSetCallBacks took ${performance.now() - t0} milliseconds.`);\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 await this.dataSet.render.currentThis.onInitRender({}, this);\n }\n\n config?.onElementInit?.(it.name, obj, this, it.targetElement);\n }\n // console.log(`RawSet for (const it of onElementInitCallBacks) { took ${performance.now() - t0} milliseconds.`);\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 // console.log(`RawSet for (const it of onAttrInitCallBacks) { took ${performance.now() - t0} milliseconds.`);\n\n // component destroy\n if (obj[DomRenderComponentMetaKey.DOMRENDER_COMPONENTS_KEY]) {\n Object.entries(obj[DomRenderComponentMetaKey.DOMRENDER_COMPONENTS_KEY]).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[DomRenderComponentMetaKey.DOMRENDER_COMPONENTS_KEY][key], { rawSet: rawSet }, config, destroyOptions);\n delete obj[DomRenderComponentMetaKey.DOMRENDER_COMPONENTS_KEY][key];\n }\n });\n }\n // console.log(`RawSet if (obj.__domrender_components) { took ${performance.now() - t0} milliseconds.`);\n // console.log('-------raws',raws)\n // console.log(`RawSet render took ${performance.now() - t0} milliseconds. END!!`, renderCnt);\n console.groupEnd();\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 { cleanedCss, importRules } = RawSet.extractCssImports(styleBody);\n styleBody = cleanedCss;\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(childRule => isStyleRule(childRule) && childRule.selector.includes(':root'));\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 (importRules.length) {\n after = `${importRules.join('\\n')}\\n${after}`;\n }\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 private static extractCssImports(styleBody: string) {\n const importRules: string[] = [];\n let result = '';\n let i = 0;\n while (i < styleBody.length) {\n const importIndex = styleBody.indexOf('@import', i);\n if (importIndex === -1) {\n result += styleBody.slice(i);\n break;\n }\n result += styleBody.slice(i, importIndex);\n\n let j = importIndex + '@import'.length;\n let inSingleQuote = false;\n let inDoubleQuote = false;\n let parenDepth = 0;\n while (j < styleBody.length) {\n const ch = styleBody[j];\n if (ch === '\\\\') {\n j += 2;\n continue;\n }\n if (!inDoubleQuote && ch === \"'\") {\n inSingleQuote = !inSingleQuote;\n } else if (!inSingleQuote && ch === '\"') {\n inDoubleQuote = !inDoubleQuote;\n } else if (!inSingleQuote && !inDoubleQuote) {\n if (ch === '(') {\n parenDepth += 1;\n } else if (ch === ')' && parenDepth > 0) {\n parenDepth -= 1;\n } else if (ch === ';' && parenDepth === 0) {\n j += 1;\n break;\n }\n }\n j += 1;\n }\n const importRule = styleBody.slice(importIndex, j).trim();\n if (importRule) {\n importRules.push(importRule);\n }\n i = j;\n }\n return { cleanedCss: result, importRules };\n }\n\n public applyEvent(obj: any, fragment = this.dataSet.fragment, config?: DomRenderConfig) {\n // const t0 = performance.now();\n this.dataSet.config.eventManager.applyEvent(obj, this.dataSet.config.eventManager.findAttrElements(fragment, config), config);\n // console.log(`RawSet applyEvent took ${performance.now() - t0} milliseconds.`);\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 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 // console.log('elementAttrAttrName-->', element.outerHTML);\n const script = element.getAttribute(EventManager.attrAttrName) ?? '';\n // console.log('scriptscriptscriptscriptscriptscript,', script)\n // const keyValuePairs = Array.from(script.matchAll(/['\"]?(\\w+)['\"]?:\\s*([^,}]+)/g))\n const keyValuePairs = Array.from(script.matchAll(/['\"]?([\\w-_]+)['\"]?:\\s*([^,}]+)/g)).map(match => ({\n key: match[1],\n value: match[2]\n }));\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 targetElementNames.push(...RawSet.DR_ELEMENTS);\n const isElement = targetElementNames.includes(element.tagName.toLowerCase()) || 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, NormalAttrDataType>();\n const linkVariables = new Map<string, string>();\n const linkNames = EventManager.linkAttrs.map(it => it.name);\n const isAttr =\n element\n .getAttributeNames()\n .filter(it => !EventManager.noDetectAttr.includes(it))\n .filter(it => {\n const value = element.getAttribute(it)?.trim();\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 const variablePaths: { origin: string; inner: string }[] = RawSet.expressionGroups(value).map(it => ({\n origin: it[0].trim(),\n inner: it[1].trim()\n }));\n const isStringTemplate = variablePaths.length > 1 || (variablePaths[0] && variablePaths[0].origin !== value);\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 // let variablePath: string = RawSet.expressionGroups(value)[0][1];\n // const originVariable = variablePath;\n // variablePath = variablePath.replace(/#[^#]*#/g, '({})');\n // const optionalChainPath = ObjectUtils.Path.toOptionalChainPath(variablePath);\n // const cval = ObjectUtils.Script.evaluateReturn(optionalChainPath, Object.assign(obj));\n\n let targetScript = value;\n variablePaths.forEach(it => {\n let r = it.inner.replace(/#[^#]*#/g, '({})');\n r = ObjectUtils.Path.toOptionalChainPath(r);\n targetScript = targetScript.replaceAll(it.origin, `\\${${r}}`);\n });\n const cval = ObjectUtils.Script.evaluateReturn('`' + targetScript + '`', Object.assign(obj));\n\n if (cval === null) {\n element.removeAttribute(it);\n /* TODO: \uC5EC\uAE30 \uB354 \uCD94\uAC00\uB418\uC5B4\uC57C\uB420\uB4EF\n TODO: \uD6D4..... \uC5C6\uC5B4\uB3C4\uB420\uB4EF?\n *\n <select dr-event-change=\"@this@.onMarketChange($event)\" class=\"market-select\">\n <option>\uB9C8\uCF13 \uC120\uD0DD (${@this@.markets?.length??0}$\uAC1C)</option>\n <option dr-for-of=\"@this@.markets\" dr-option-item-variable-name=\"market\" value=\"${#market#.uuid}$\" dr-attr=\"{selected: #market#.uuid === @this@.marketUUID ? 'selected' : null}\">\n ${#market#.name}$\n </option>\n </select>\n */\n // } else if (\n // !(element.hasAttribute(RawSet.DR_VARIABLE_NAME_OPTIONNAME) || element.hasAttribute(RawSet.DR_ITEM_VARIABLE_NAME_OPTIONNAME) || element.hasAttribute(RawSet.DR_ITEM_INDEX_VARIABLE_NAME_OPTIONNAME))\n // ) {\n // element.setAttribute(it, cval);\n } else {\n element.setAttribute(it, cval);\n }\n normalAttrs.set(it, { originalAttrValue: value, variablePaths: variablePaths, isStringTemplate });\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(EventManager.linkTargetMapAttrName, JSON.stringify(Array.from(linkVariables.entries())));\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 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 const p = currentNode?.parentNode;\n p?.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 targetElementNames.push(...RawSet.DR_ELEMENTS);\n const isElement = targetElementNames.includes(element.tagName.toLowerCase()) || 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.querySelectorAll(`[${RawSet.DR_IT_OPTIONNAME}], [${RawSet.DR_FOR_OF_NAME}], [${RawSet.DR_REPEAT_NAME}], [${RawSet.DR_APPENDER_NAME}]`).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.querySelectorAll(`[${RawSet.DR_IT_OPTIONNAME}], [${RawSet.DR_FOR_OF_NAME}], [${RawSet.DR_REPEAT_NAME}], [${RawSet.DR_APPENDER_NAME}]`).forEach(it => {\n it.innerHTML = it.innerHTML.replace(RegExp(random, 'g'), '#it#');\n });\n }\n\n public static drVarDecoding(element: Element, vars: { name: string; value: string; regex: RegExp; random: string }[]) {\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 // console.log('rrrrrrrrrrrrr', thisRandom);\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(element: Element, variable: RegExp, config: { config: DomRenderConfig; otherReplaceVariablePath?: string }) {\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 = message.substr(0, it.index) + 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.map(it => it.name.replaceAll('.', '\\\\.').replaceAll(':', '\\\\:')).join(',');\n const thisRandom = RandomUtils.uuid();\n // console.log('thisRandom', thisRandom, variable);\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 = message.substr(0, it.index) + 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.map(it => it.name.replaceAll('.', '\\\\.').replaceAll(':', '\\\\:')).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(rawSet: RawSet, element: Element, drThis: string, drVarOption: string, drStripOption: boolean | string | null, obj: any, config: DomRenderConfig, set?: ComponentSet): 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 const templateStringSet = await RawSet.fetchTemplateStyle(set, targetObj);\n set.setTemplateStyle(templateStringSet);\n const style = RawSet.generateStyleTransform(templateStringSet.styles ?? [], rawSet.uuid, true);\n targetElement.innerHTML = style + (templateStringSet.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 = `{rootParent: this, render: this.__render}`;\n const onCreateDataParam = ObjectUtils.Script.evaluateReturn<OnCreateRenderDataParams>(onCreateDataScript, Object.assign(obj, { __render: render }));\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[]>({ bodyScript: renderScript, returnScript: ObjectUtils.Path.toOptionalChainPath(onCreate) }, obj);\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 const innerText = element.textContent?.trim() ?? '';\n const escapedInnerHTML = ConvertUtils.escapeHTML(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_INNER_HTML_NAME_OPTIONNAME) ?? 'innerHTML';\n const innerTEXTName = targetElement.getAttribute(RawSet.DR_INNER_TEXT_NAME_OPTIONNAME) ?? 'innerTEXT';\n const innerHTMLEscapedName = targetElement.getAttribute(RawSet.DR_INNER_HTML_ESCAPED_NAME_OPTIONNAME) ?? 'innerHTMLEscaped';\n const templateReplacements: StringUtils.SequentialReplacement[] = [];\n if (innerHTMLName) {\n templateReplacements.push({\n regex: new RegExp(`#${innerHTMLName}#`, 'g'),\n callback: () => element.innerHTML\n });\n }\n if (innerTEXTName) {\n templateReplacements.push({\n regex: new RegExp(`#${innerTEXTName}#`, 'g'),\n callback: () => innerText\n });\n }\n if (innerHTMLEscapedName) {\n templateReplacements.push({\n regex: new RegExp(`#${innerHTMLEscapedName}#`, 'g'),\n callback: () => escapedInnerHTML\n });\n }\n\n if (templateReplacements.length > 0) {\n targetElement.innerHTML = StringUtils.replaceSequentially(targetElement.innerHTML, templateReplacements);\n }\n\n // console.log('aa-asIs', targetElement.innerHTML);\n const componentName = targetElement.getAttribute(RawSet.DR_VARIABLE_NAME_OPTIONNAME) ?? 'component';\n const optionThisName = targetElement.getAttribute(RawSet.DR_THIS_NAME_OPTIONNAME);\n // console.log('11111111111111', optionThisName)\n targetElement.getAttributeNames().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', thisRandom);\n // let thisNameRandom: string | undefined = undefined;\n targetElement.innerHTML = targetElement.innerHTML.replaceAll(`#${componentName}#`, drThis);\n\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<T>(set: { template?: string | ((instance: T) => Promise<string> | string); styles?: string | string[] | ((instance: T) => Promise<string | string[]> | string | string[]) }, obj?: T) {\n // const id = RandomUtils.getRandomString(20);\n const stylePromises: Promise<string>[] = [];\n\n const resolveLazy = async (value?: string) => {\n if (!value) {\n return value;\n }\n return value.startsWith('lazy://') ? (await fetch(value.substring(6))).text() : value;\n };\n\n const templateValue = typeof set.template === 'function' ? await set.template(obj as T) : set.template;\n const templatePromise = typeof templateValue === 'string' ? resolveLazy(templateValue) : Promise.resolve(templateValue);\n\n const stylesValue = typeof set.styles === 'function' ? await set.styles(obj as T) : set.styles;\n\n if (Array.isArray(stylesValue)) {\n for (let i = 0; i < stylesValue.length; i++) {\n const it = stylesValue[i];\n stylePromises.push(resolveLazy(it) as Promise<string>);\n }\n } else if (typeof stylesValue === 'string') {\n stylePromises.push(resolveLazy(stylesValue) as Promise<string>);\n }\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(name: string, getThisObj: (element: Element, attrValue: string, obj: any, rawSet: RawSet) => any, factory: (element: Element, attrValue: string, obj: any, rawSet: RawSet) => DocumentFragment) {\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<T = any>({ name, objFactory, template = '', styles = [], noStrip }: { name: string; noStrip?: boolean; objFactory: (element: Element, obj: any, rawSet: RawSet, counstructorParam: any[]) => any; template?: string | ((instance: T) => Promise<string>); styles?: string | string[] | ((instance: T) => Promise<string>) }): TargetElement<T> {\n const targetElement: TargetElement<T> = {\n name,\n styles: styles,\n template: template,\n noStrip,\n async callBack(element: Element, obj: any, rawSet: RawSet, attrs: Attrs, config: DomRenderConfig): Promise<DocumentFragment | undefined> {\n obj[DomRenderComponentMetaKey.DOMRENDER_COMPONENTS_KEY] ??= {};\n const domrenderComponents = obj[DomRenderComponentMetaKey.DOMRENDER_COMPONENTS_KEY];\n\n // debugger;\n const renderScript = ` /*createComponentTargetElement*/\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 = ObjectUtils.Script.evaluateReturn({ bodyScript: renderScript, returnScript: ObjectUtils.Path.toOptionalChainPath(constructor) }, Object.assign(obj, { __render: render })) ?? [];\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] = await 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 const templateStyle = await RawSet.fetchTemplateStyle({ template: this.template, styles: this.styles }, instance);\n this.template = templateStyle.template;\n this.styles = templateStyle.styles;\n\n let applayTemplate = element.innerHTML;\n let applayTemplateText = element.textContent?.trim() ?? '';\n let applayTemplateEscape = ConvertUtils.escapeHTML(element.innerHTML);\n let innerHTMLThisRandom;\n const componentName = element.getAttribute(RawSet.DR_VARIABLE_NAME_OPTIONNAME) ?? 'component';\n const innerHTMLName = element.getAttribute(RawSet.DR_INNER_HTML_NAME_OPTIONNAME) ?? 'innerHTML';\n const innerTEXTName = element.getAttribute(RawSet.DR_INNER_TEXT_NAME_OPTIONNAME) ?? 'innerTEXT';\n const innerHTMLEscapedName = element.getAttribute(RawSet.DR_INNER_HTML_ESCAPED_NAME_OPTIONNAME) ?? 'innerHTMLEscaped';\n\n // if (element.getAttribute(RawSet.DR_COMPONENT_VARIABLE_NAME_OPTIONNAME)) {\n // console.log('vvvvvvv', element.getAttribute(RawSet.DR_COMPONENT_VARIABLE_NAME_OPTIONNAME));\n // }\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 = StringUtils.replaceSequentially(applayTemplate, [\n {\n regex: /this\\./g,\n callback: () => innerHTMLThisRandom\n },\n {\n regex: new RegExp(`#${componentName}#`, 'g'),\n callback: () => nearThisPath\n }\n ]);\n // }\n // applayTemplate = applayTemplate.replace(RegExp(`#${componentName}#`, 'g'), 'this');\n }\n // applayTemplate = template.replace(RegExp(`#${innerHTMLName}#`, 'g'), applayTemplate);\n // RawSet.replaceInnerHTML(\n // applayTemplate = StringUtils.regexExecArrayReplace(this.template, RegExp(`#${innerHTMLName}#`, 'g'), applayTemplate)\n // applayTemplate = StringUtils.regexExecArrayReplace(this.template, [RegExp(`#${innerHTMLName}#`, 'g')], applayTemplate)\n applayTemplate = StringUtils.replaceSequentially(this.template ?? '', [\n {\n regex: new RegExp(`#${innerHTMLName}#`, 'g'),\n callback: () => applayTemplate\n },\n {\n regex: new RegExp(`#${innerTEXTName}#`, 'g'),\n callback: () => applayTemplateText\n },\n {\n regex: new RegExp(`#${innerHTMLEscapedName}#`, 'g'),\n callback: () => applayTemplateEscape\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 // 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(rawSet, element, `this.${DomRenderComponentMetaKey.DOMRENDER_COMPONENTS_KEY}.${rawSet.uuid}`, '', !noStrip, obj, config);\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 // console.log('!!!!!@', (data && innerHTMLThisRandom) ,innerHTMLThisRandom);\n if (data && innerHTMLThisRandom) {\n const template = config.window.document.createElement('template') as HTMLTemplateElement;\n\n // console.log('------->', template.content);\n // \uBE0C\uB77C\uC6B0\uC800\uC5D0\uC11C\uB294 \uC774\uAC8C\uB418\uB294\uB370 linkedom \uC5D0\uC11C\uB294 \uC548\uB41C\uB2E4. \uADF8\uB798\uC11C innerhtml\uB85C \uCC98\uB9AC\uD568\n // template.content.append(data);\n // console.log('-------', template.innerHTML);\n // const d = config.window.document.createElement('div')\n // d.innerHTML='<a></a>'\n // console.log('-----XX', ElementUtils.toInnerHTML(data, {document: config.window.document}));\n // template.innerHTML = template.innerHTML.replace(RegExp(innerHTMLThisRandom, 'g'), 'this.');\n let s = ElementUtils.toInnerHTML(data, { document: config.window.document });\n template.innerHTML = s.replace(RegExp(innerHTMLThisRandom, 'g'), 'this.');\n // console.log('ccc?', template.innerHTML);\n // template.innerHTML = '<div>zzzzzzz</div>'\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(obj: any | undefined, parameter: OnDestroyRenderParams, config: DomRenderConfig, destroyOptions: (DestroyOptionType | string)[] = []): 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\n if (obj && obj.onDestroy === 'function') {\n obj.onDestroy();\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, NormalAttrDataType>(JSON.parse(normalAttribute)).forEach((v, k) => {\n const variablePaths = v.variablePaths;\n let targetScript = v.originalAttrValue.trim();\n\n //\uC911\uC694!! expression \uD558\uB098\uB9CC \uC874\uC7AC \uBC0F \uADF8\uC678\uAC83\uB4E4\uC774 \uC5C6\uC744\uB54C \uADF8\uC790\uCCB4\uAC00 \uAC12\uC774\uB2E4 \uADF8\uC678 \uC5EC\uB7EC\uAC1C \uC788\uC73C\uBA74 \uBB38\uC790\uC5F4 \uD569\uCE58\uB294\uAC78\uB85C \uAC04\uC8FC\uD55C\uB2E4.\n if (v.isStringTemplate) {\n variablePaths.forEach(it => {\n let r = ObjectUtils.Path.toOptionalChainPath(it.inner);\n targetScript = targetScript.replaceAll(it.origin, `\\${${r}}`);\n });\n } else {\n let r = ObjectUtils.Path.toOptionalChainPath(variablePaths[0].inner);\n targetScript = targetScript.replaceAll(variablePaths[0].origin, r);\n }\n const cval = ObjectUtils.Script.evaluateReturn({ bodyScript: config.script, returnScript: v.isStringTemplate ? '`' + targetScript + '`' : targetScript }, Object.assign(config.obj, config.renderData ? { __render: config.renderData } : undefined));\n attribute[k] = cval;\n });\n }\n // console.log('attribute', attribute);\n return attribute;\n }\n}\n"],
5
+ "mappings": "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",
6
6
  "names": ["rawSet", "drAttrs", "NodeFilter", "Node", "r", "element", "it", "currentNode", "message", "node", "template"]
7
7
  }