@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,9 +1,9 @@
1
- import { RandomUtils } from '@dooboostore/core/random/RandomUtils';
2
- import { StringUtils } from '@dooboostore/core/string/StringUtils';
1
+ import { RandomUtils } from '@dooboostore/core';
2
+ import { StringUtils } from '@dooboostore/core';
3
3
  import { EventManager, NormalAttrDataType } from '../events/EventManager';
4
4
  import type { DomRenderConfig } from '../configs/DomRenderConfig';
5
- import { Range } from '../iterators/Range';
6
- import { ElementUtils } from '@dooboostore/core-web/element/ElementUtils';
5
+ import { Range } from '@dooboostore/core';
6
+ import { ElementUtils } from '@dooboostore/core-web';
7
7
  import { ComponentSet } from '../components/ComponentSet';
8
8
  import { DrPre } from '../operators/DrPre';
9
9
  import { Dr } from '../operators/Dr';
@@ -30,7 +30,7 @@ import { RawSetType } from './RawSetType';
30
30
  import { Render } from './Render';
31
31
  import { DrThisProperty } from '../operators/DrThisProperty';
32
32
  import { RawSetOperatorType } from './RawSetOperatorType';
33
- import { CssParser, CssRule, isStyleRule, isAtRule } from '@dooboostore/core/parser/css/CssParser';
33
+ import { CssParser, CssRule, isStyleRule, isAtRule } from '@dooboostore/core';
34
34
  import { isOnCreateRenderData, OnCreateRenderDataParams } from '../lifecycle/OnCreateRenderData';
35
35
  import { isOnCreateRender } from '../lifecycle/OnCreateRender';
36
36
  import { isOnChangeAttrRender } from '../lifecycle/OnChangeAttrRender';
@@ -38,9 +38,10 @@ import { isOnInitRender } from '../lifecycle/OnInitRender';
38
38
  import { isOnCreatedThisChild } from '../lifecycle/OnCreatedThisChild';
39
39
  import { isOnDestroyRender, OnDestroyRenderParams } from '../lifecycle/OnDestroyRender';
40
40
  import { DrTargetElementIsElement } from '../operators/DrTargetElementIsElement';
41
- import { ObjectUtils } from '@dooboostore/core/object/ObjectUtils';
42
- import { NodeUtils } from '@dooboostore/core-web/node/NodeUtils';
43
- import { ConvertUtils } from '@dooboostore/core/convert/ConvertUtils';
41
+ import { ObjectUtils } from '@dooboostore/core';
42
+ import { NodeUtils } from '@dooboostore/core-web';
43
+ import { ConvertUtils } from '@dooboostore/core';
44
+ import { DomRenderComponentMetaKey } from './index';
44
45
 
45
46
  export type RenderResult = { raws: RawSet[]; executedOperators: OperatorExecuter[] };
46
47
 
@@ -88,7 +89,13 @@ export class RawSet {
88
89
 
89
90
  public static readonly DR_VARIABLE_NAME_OPTIONNAME = 'dr-option-variable-name';
90
91
  public static readonly DR_ITEM_VARIABLE_NAME_OPTIONNAME = 'dr-option-item-variable-name';
92
+ public static readonly DR_ITEM_VARIABLE_NAME_OPTIONNAME_DEFAULT = 'it';
91
93
  public static readonly DR_ITEM_INDEX_VARIABLE_NAME_OPTIONNAME = 'dr-option-item-index-variable-name';
94
+ public static readonly DR_ITEM_OFFSET_INDEX_VARIABLE_NAME_OPTIONNAME = 'dr-option-item-offset-index-variable-name';
95
+ public static readonly DR_ITEM_INDEX_OFFSET_OPTIONNAME = 'dr-option-item-index-offset';
96
+ public static readonly DR_ITEM_INDEX_VARIABLE_NAME_OPTIONNAME_DEFAULT = 'index';
97
+ public static readonly DR_ITEM_OFFSET_INDEX_VARIABLE_NAME_OPTIONNAME_DEFAULT = 'offsetIndex';
98
+
92
99
  public static readonly DR_INNER_HTML_NAME_OPTIONNAME = 'dr-option-inner-html-name';
93
100
  public static readonly DR_INNER_TEXT_NAME_OPTIONNAME = 'dr-option-inner-text-name';
94
101
  public static readonly DR_INNER_HTML_ESCAPED_NAME_OPTIONNAME = 'dr-option-inner-html-escaped-name';
@@ -98,13 +105,8 @@ export class RawSet {
98
105
 
99
106
  public static readonly DR_ON_CREATE_ARGUMENTS_OPTIONNAME = 'dr-on-create:arguments';
100
107
  public static readonly DR_ON_CREATED_CALLBACK_OPTIONNAME = 'dr-on-create:callback';
101
- /** 우선 쓰는곳이 없어서 deprecated를 걸어놨음
102
- @deprecated
103
- */
104
- public static readonly DR_ON_INIT_ARGUMENTS_OPTIONNAME = 'dr-on-init:arguments';
105
108
  public static readonly DR_ON_CONSTRUCTOR_ARGUMENTS_OPTIONNAME = 'dr-on-constructor:arguments';
106
109
 
107
-
108
110
  public static readonly drAttrsOriginName: Attrs = {
109
111
  dr: RawSet.DR_NAME,
110
112
  drIf: RawSet.DR_IF_NAME,
@@ -131,7 +133,12 @@ export class RawSet {
131
133
  drDetectIfOption: RawSet.DR_DETECT_IF_OPTIONNAME,
132
134
  drDestroyOption: RawSet.DR_DESTROY_OPTIONNAME,
133
135
  drHasKeysOption: RawSet.DR_HAS_KEYS_OPTIONNAME,
134
- drKeyOption: RawSet.DR_KEY_OPTIONNAME
136
+ drKeyOption: RawSet.DR_KEY_OPTIONNAME,
137
+ drItemIndexOffsetOption: RawSet.DR_ITEM_INDEX_OFFSET_OPTIONNAME,
138
+ drVariableNameOption: RawSet.DR_VARIABLE_NAME_OPTIONNAME,
139
+ drItemVariableNameOption: RawSet.DR_ITEM_VARIABLE_NAME_OPTIONNAME,
140
+ drItemIndexVariableNameOption: RawSet.DR_ITEM_INDEX_VARIABLE_NAME_OPTIONNAME,
141
+ drItemOffsetIndexVariableNameOption: RawSet.DR_ITEM_OFFSET_INDEX_VARIABLE_NAME_OPTIONNAME
135
142
  };
136
143
 
137
144
  public static readonly DR_TAGS = [];
@@ -140,9 +147,7 @@ export class RawSet {
140
147
  // RawSet.DR_REPLACE_TARGET_ELEMENT_IS_NAME
141
148
  // ]
142
149
 
143
- public static readonly DR_ELEMENTS = [
144
- RawSet.DR_TARGET_ELEMENT_ELEMENTNAME
145
- ];
150
+ public static readonly DR_ELEMENTS = [RawSet.DR_TARGET_ELEMENT_ELEMENTNAME];
146
151
 
147
152
  public static readonly DR_ATTRIBUTES = [
148
153
  RawSet.DR_NAME,
@@ -187,9 +192,7 @@ export class RawSet {
187
192
 
188
193
  get isConnected() {
189
194
  // console.log('isConnect???', this, this.point.start.isConnected, this.point.end.isConnected);
190
- return (
191
- this.point && this.point.start && this.point.end && this.point.start.isConnected && this.point.end.isConnected
192
- );
195
+ return this.point && this.point.start && this.point.end && this.point.start.isConnected && this.point.end.isConnected;
193
196
  }
194
197
 
195
198
  // 중요
@@ -209,12 +212,7 @@ export class RawSet {
209
212
  // console.log('--', expressionGroups, script)
210
213
  } else if (cNode.nodeType === Node.ELEMENT_NODE) {
211
214
  const element = cNode as Element;
212
- const targetAttrNames = (config?.targetAttrs?.map(it => it.name) ?? []).concat(
213
- RawSet.DR_ATTRIBUTES,
214
- RawSet.DR_DETECT_FILTER_OPTIONNAME,
215
- RawSet.DR_DETECT_IF_OPTIONNAME,
216
- RawSet.DR_DETECT_ATTR_OPTIONNAME
217
- ); // .concat(EventManager.normalAttrMapAttrName);
215
+ 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);
218
216
  const targetScripts = targetAttrNames
219
217
  .map(it => element.getAttribute(it))
220
218
  .filter(it => it)
@@ -316,10 +314,13 @@ export class RawSet {
316
314
  };
317
315
 
318
316
  try {
319
- const newValue = ObjectUtils.Script.evaluateReturn({
320
- bodyScript: __render.bindScript,
321
- returnScript: runText
322
- }, Object.assign(obj, { __render }));
317
+ const newValue = ObjectUtils.Script.evaluateReturn(
318
+ {
319
+ bodyScript: __render.bindScript,
320
+ returnScript: runText
321
+ },
322
+ Object.assign(obj, { __render })
323
+ );
323
324
 
324
325
  const newValueStr = String(newValue);
325
326
  if (this.lastRenderedValue === newValueStr) {
@@ -395,8 +396,7 @@ export class RawSet {
395
396
  // console.log('--->', RawSet.exporesionGrouops(textContent), textContent,runText, runText[0][1])
396
397
  let newNode: Node;
397
398
  if (textContent?.startsWith('#')) {
398
- const r = ObjectUtils.Script.evaluateReturn({ bodyScript: __render.bindScript, returnScript: runText }, Object.assign(obj, { __render })
399
- );
399
+ const r = ObjectUtils.Script.evaluateReturn({ bodyScript: __render.bindScript, returnScript: runText }, Object.assign(obj, { __render }));
400
400
  const template = config.window.document.createElement('template') as HTMLTemplateElement;
401
401
  template.innerHTML = r;
402
402
  newNode = template.content;
@@ -439,7 +439,12 @@ export class RawSet {
439
439
  drDestroyOption: this.getAttributeAndDelete(element, RawSet.DR_DESTROY_OPTIONNAME),
440
440
  drKeyOption: this.getAttributeAndDelete(element, RawSet.DR_KEY_OPTIONNAME),
441
441
  drDetectIfOption: this.getAttribute(element, RawSet.DR_DETECT_IF_OPTIONNAME),
442
- drHasKeysOption: this.getAttribute(element, RawSet.DR_HAS_KEYS_OPTIONNAME)
442
+ drHasKeysOption: this.getAttribute(element, RawSet.DR_HAS_KEYS_OPTIONNAME),
443
+ drItemIndexOffsetOption: this.getAttributeAndDelete(element, RawSet.DR_ITEM_INDEX_OFFSET_OPTIONNAME),
444
+ drVariableNameOption: this.getAttributeAndDelete(element, RawSet.DR_VARIABLE_NAME_OPTIONNAME),
445
+ drItemVariableNameOption: this.getAttributeAndDelete(element, RawSet.DR_ITEM_VARIABLE_NAME_OPTIONNAME),
446
+ drItemIndexVariableNameOption: this.getAttributeAndDelete(element, RawSet.DR_ITEM_INDEX_VARIABLE_NAME_OPTIONNAME),
447
+ drItemOffsetIndexVariableNameOption: this.getAttributeAndDelete(element, RawSet.DR_ITEM_OFFSET_INDEX_VARIABLE_NAME_OPTIONNAME)
443
448
  };
444
449
  drAttrs.push(drAttr);
445
450
  // 아래 순서 중요
@@ -480,7 +485,6 @@ export class RawSet {
480
485
  it.point.parentRawSet = this;
481
486
  });
482
487
 
483
-
484
488
  // console.log('pppppppppppppp', this);
485
489
 
486
490
  // replaceBody와 applyEvent 순서를 바꿨다 20250511
@@ -525,7 +529,6 @@ export class RawSet {
525
529
  }
526
530
  // console.log(`RawSet const it of onThisComponentSetCallBacks took ${performance.now() - t0} milliseconds.`);
527
531
 
528
-
529
532
  for (const it of onElementInitCallBacks) {
530
533
  if (isOnInitRender(this.dataSet.render?.currentThis)) {
531
534
  // TODO: 나중에 파라미터 들어가야될듯. 지금은 리팩토링하느라 빠짐
@@ -566,14 +569,14 @@ export class RawSet {
566
569
  // console.log(`RawSet for (const it of onAttrInitCallBacks) { took ${performance.now() - t0} milliseconds.`);
567
570
 
568
571
  // component destroy
569
- if (obj.__domrender_components) {
570
- Object.entries(obj.__domrender_components).forEach(([key, value]) => {
572
+ if (obj[DomRenderComponentMetaKey.DOMRENDER_COMPONENTS_KEY]) {
573
+ Object.entries(obj[DomRenderComponentMetaKey.DOMRENDER_COMPONENTS_KEY]).forEach(([key, value]) => {
571
574
  const rawSet = (value as any).__rawSet as RawSet;
572
575
  const drAttrs: Attrs | undefined = rawSet?.dataSet.render?.attribute;
573
576
  if (rawSet && !rawSet.isConnected) {
574
577
  const destroyOptions = drAttrs?.drDestroyOption?.split(',') ?? [];
575
- RawSet.destroy(obj.__domrender_components[key], { rawSet: rawSet }, config, destroyOptions);
576
- delete obj.__domrender_components[key];
578
+ RawSet.destroy(obj[DomRenderComponentMetaKey.DOMRENDER_COMPONENTS_KEY][key], { rawSet: rawSet }, config, destroyOptions);
579
+ delete obj[DomRenderComponentMetaKey.DOMRENDER_COMPONENTS_KEY][key];
577
580
  }
578
581
  });
579
582
  }
@@ -609,6 +612,8 @@ export class RawSet {
609
612
  styleBody = styleBody.join('\n');
610
613
  }
611
614
  styleBody = styleBody.replaceAll('#uuid#', componentKey);
615
+ const { cleanedCss, importRules } = RawSet.extractCssImports(styleBody);
616
+ styleBody = cleanedCss;
612
617
  const start = `#${componentKey}-start`;
613
618
  const end = `#${componentKey}-end`;
614
619
  // 이거뭐하는지 까먹었네 뭐였지??..
@@ -632,9 +637,7 @@ export class RawSet {
632
637
  }
633
638
  } else if (isAtRule(rule)) {
634
639
  if (rule.name === 'media') {
635
- const hasRoot = rule.children.some(
636
- childRule => isStyleRule(childRule) && childRule.selector.includes(':root')
637
- );
640
+ const hasRoot = rule.children.some(childRule => isStyleRule(childRule) && childRule.selector.includes(':root'));
638
641
  if (!hasRoot) {
639
642
  rule.children.forEach(childRule => {
640
643
  if (isStyleRule(childRule)) {
@@ -660,6 +663,10 @@ export class RawSet {
660
663
  after = after.replaceAll('/*$', '${');
661
664
  after = after.replaceAll('$*/', '}$');
662
665
 
666
+ if (importRules.length) {
667
+ after = `${importRules.join('\n')}\n${after}`;
668
+ }
669
+
663
670
  if (styleTagWrap) {
664
671
  styleBody = `<style id='${componentKey}-style' domstyle>${after}</style>`;
665
672
  }
@@ -668,13 +675,56 @@ export class RawSet {
668
675
  return styleBody;
669
676
  }
670
677
 
678
+ private static extractCssImports(styleBody: string) {
679
+ const importRules: string[] = [];
680
+ let result = '';
681
+ let i = 0;
682
+ while (i < styleBody.length) {
683
+ const importIndex = styleBody.indexOf('@import', i);
684
+ if (importIndex === -1) {
685
+ result += styleBody.slice(i);
686
+ break;
687
+ }
688
+ result += styleBody.slice(i, importIndex);
689
+
690
+ let j = importIndex + '@import'.length;
691
+ let inSingleQuote = false;
692
+ let inDoubleQuote = false;
693
+ let parenDepth = 0;
694
+ while (j < styleBody.length) {
695
+ const ch = styleBody[j];
696
+ if (ch === '\\') {
697
+ j += 2;
698
+ continue;
699
+ }
700
+ if (!inDoubleQuote && ch === "'") {
701
+ inSingleQuote = !inSingleQuote;
702
+ } else if (!inSingleQuote && ch === '"') {
703
+ inDoubleQuote = !inDoubleQuote;
704
+ } else if (!inSingleQuote && !inDoubleQuote) {
705
+ if (ch === '(') {
706
+ parenDepth += 1;
707
+ } else if (ch === ')' && parenDepth > 0) {
708
+ parenDepth -= 1;
709
+ } else if (ch === ';' && parenDepth === 0) {
710
+ j += 1;
711
+ break;
712
+ }
713
+ }
714
+ j += 1;
715
+ }
716
+ const importRule = styleBody.slice(importIndex, j).trim();
717
+ if (importRule) {
718
+ importRules.push(importRule);
719
+ }
720
+ i = j;
721
+ }
722
+ return { cleanedCss: result, importRules };
723
+ }
724
+
671
725
  public applyEvent(obj: any, fragment = this.dataSet.fragment, config?: DomRenderConfig) {
672
726
  // const t0 = performance.now();
673
- this.dataSet.config.eventManager.applyEvent(
674
- obj,
675
- this.dataSet.config.eventManager.findAttrElements(fragment, config),
676
- config
677
- );
727
+ this.dataSet.config.eventManager.applyEvent(obj, this.dataSet.config.eventManager.findAttrElements(fragment, config), config);
678
728
  // console.log(`RawSet applyEvent took ${performance.now() - t0} milliseconds.`);
679
729
  }
680
730
 
@@ -700,10 +750,7 @@ export class RawSet {
700
750
  let data = element.getAttribute(RawSet.DR_APPENDER_NAME);
701
751
  // if (data && !/\[[0-9]+\]/g.test(data)) {
702
752
  if (data && !/\[.+\]/g.test(data)) {
703
- const currentIndex = ObjectUtils.Script.evaluateReturn(
704
- `${ObjectUtils.Path.toOptionalChainPath(data)}?.length -1`,
705
- obj
706
- );
753
+ const currentIndex = ObjectUtils.Script.evaluateReturn(`${ObjectUtils.Path.toOptionalChainPath(data)}?.length -1`, obj);
707
754
  // console.log('------?', currentIndex)
708
755
  // if (currentIndex === undefined || isNaN(currentIndex)) {
709
756
  // return undefined;
@@ -762,10 +809,7 @@ export class RawSet {
762
809
  // const between = StringUtils.betweenRegexpStr('[$#]\\{', '\\}', StringUtils.deleteEnter((node as Text).data ?? ''))
763
810
  const between = RawSet.expressionGroups(StringUtils.deleteEnter((node as Text).data ?? ''));
764
811
  // console.log('bbbb', between)
765
- const r =
766
- between?.length > 0
767
- ? NodeUtils.FindNodesFilterResult.MATCH_AND_SKIP_CHILDREN
768
- : NodeUtils.FindNodesFilterResult.NO_MATCH_AND_SKIP_CHILDREN;
812
+ const r = between?.length > 0 ? NodeUtils.FindNodesFilterResult.MATCH_AND_SKIP_CHILDREN : NodeUtils.FindNodesFilterResult.NO_MATCH_AND_SKIP_CHILDREN;
769
813
  // console.log('acceptNodeReturn node', r);
770
814
  return r;
771
815
  // return /\$\{.*?\}/g.test(StringUtils.deleteEnter((node as Text).data ?? '')) ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_REJECT;
@@ -786,11 +830,10 @@ export class RawSet {
786
830
  const script = element.getAttribute(EventManager.attrAttrName) ?? '';
787
831
  // console.log('scriptscriptscriptscriptscriptscript,', script)
788
832
  // const keyValuePairs = Array.from(script.matchAll(/['"]?(\w+)['"]?:\s*([^,}]+)/g))
789
- const keyValuePairs = Array.from(script.matchAll(/['"]?([\w-_]+)['"]?:\s*([^,}]+)/g))
790
- .map(match => ({
791
- key: match[1],
792
- value: match[2]
793
- }));
833
+ const keyValuePairs = Array.from(script.matchAll(/['"]?([\w-_]+)['"]?:\s*([^,}]+)/g)).map(match => ({
834
+ key: match[1],
835
+ value: match[2]
836
+ }));
794
837
 
795
838
  (keyValuePairs ?? []).forEach(it => {
796
839
  element.setAttribute(it.key, '${' + it.value + '}$');
@@ -799,10 +842,8 @@ export class RawSet {
799
842
  // element.setAttribute('dr-event-click', 'console.log(11)');
800
843
  const targetElementIs = element.getAttribute(RawSet.DR_REPLACE_TARGET_ELEMENT_IS_NAME);
801
844
  const targetElementNames = config.targetElements?.map(it => it.name.toLowerCase()) ?? [];
802
- targetElementNames.push(...RawSet.DR_ELEMENTS)
803
- const isElement =
804
- targetElementNames.includes(element.tagName.toLowerCase()) ||
805
- targetElementNames.includes(targetElementIs?.toLowerCase() as any);
845
+ targetElementNames.push(...RawSet.DR_ELEMENTS);
846
+ const isElement = targetElementNames.includes(element.tagName.toLowerCase()) || targetElementNames.includes(targetElementIs?.toLowerCase() as any);
806
847
  // if (isElement) {
807
848
  // (element as HTMLElement).style.display = 'none';
808
849
  // (element as HTMLElement).style.width = '100px';
@@ -816,38 +857,41 @@ export class RawSet {
816
857
  const linkVariables = new Map<string, string>();
817
858
  const linkNames = EventManager.linkAttrs.map(it => it.name);
818
859
  const isAttr =
819
- element.getAttributeNames().filter(it => !EventManager.noDetectAttr.includes(it)).filter(it => {
820
- const value = element.getAttribute(it)?.trim();
821
-
822
- // link일때
823
- if (value && linkNames.includes(it)) {
824
- linkVariables.set(it, value);
825
- } else if (value && RawSet.isExpression(value)) {
826
- // 표현식있을떄
827
- const variablePaths: { origin: string; inner: string }[] = RawSet.expressionGroups(value).map(it => ({
828
- origin: it[0].trim(),
829
- inner: it[1].trim()
830
- }));
831
- const isStringTemplate = variablePaths.length > 1 || (variablePaths[0] && variablePaths[0].origin !== value);
832
- // normal Attribute 초반에 셋팅해주기.
833
- // TODO: 이거 하긴했는데 사이드 이팩트?
834
- // let variablePath: string = RawSet.expressionGroups(value)[0][1];
835
- // const originVariable = variablePath;
836
- // variablePath = variablePath.replace(/#[^#]*#/g, '({})');
837
- // const optionalChainPath = ObjectUtils.Path.toOptionalChainPath(variablePath);
838
- // const cval = ObjectUtils.Script.evaluateReturn(optionalChainPath, Object.assign(obj));
839
-
840
- let targetScript = value;
841
- variablePaths.forEach(it => {
842
- let r = it.inner.replace(/#[^#]*#/g, '({})');
843
- r = ObjectUtils.Path.toOptionalChainPath(r);
844
- targetScript = targetScript.replaceAll(it.origin, `\${${r}}`);
845
- });
846
- const cval = ObjectUtils.Script.evaluateReturn('`' + targetScript + '`', Object.assign(obj));
847
-
848
- if (cval === null) {
849
- element.removeAttribute(it);
850
- /* TODO: 여기 더 추가되어야될듯
860
+ element
861
+ .getAttributeNames()
862
+ .filter(it => !EventManager.noDetectAttr.includes(it))
863
+ .filter(it => {
864
+ const value = element.getAttribute(it)?.trim();
865
+
866
+ // link일때
867
+ if (value && linkNames.includes(it)) {
868
+ linkVariables.set(it, value);
869
+ } else if (value && RawSet.isExpression(value)) {
870
+ // 표현식있을떄
871
+ const variablePaths: { origin: string; inner: string }[] = RawSet.expressionGroups(value).map(it => ({
872
+ origin: it[0].trim(),
873
+ inner: it[1].trim()
874
+ }));
875
+ const isStringTemplate = variablePaths.length > 1 || (variablePaths[0] && variablePaths[0].origin !== value);
876
+ // normal Attribute 초반에 셋팅해주기.
877
+ // TODO: 이거 하긴했는데 사이드 이팩트?
878
+ // let variablePath: string = RawSet.expressionGroups(value)[0][1];
879
+ // const originVariable = variablePath;
880
+ // variablePath = variablePath.replace(/#[^#]*#/g, '({})');
881
+ // const optionalChainPath = ObjectUtils.Path.toOptionalChainPath(variablePath);
882
+ // const cval = ObjectUtils.Script.evaluateReturn(optionalChainPath, Object.assign(obj));
883
+
884
+ let targetScript = value;
885
+ variablePaths.forEach(it => {
886
+ let r = it.inner.replace(/#[^#]*#/g, '({})');
887
+ r = ObjectUtils.Path.toOptionalChainPath(r);
888
+ targetScript = targetScript.replaceAll(it.origin, `\${${r}}`);
889
+ });
890
+ const cval = ObjectUtils.Script.evaluateReturn('`' + targetScript + '`', Object.assign(obj));
891
+
892
+ if (cval === null) {
893
+ element.removeAttribute(it);
894
+ /* TODO: 여기 더 추가되어야될듯
851
895
  TODO: 훔..... 없어도될듯?
852
896
  *
853
897
  <select dr-event-change="@this@.onMarketChange($event)" class="market-select">
@@ -857,27 +901,24 @@ export class RawSet {
857
901
  </option>
858
902
  </select>
859
903
  */
860
- // } else if (
861
- // !(element.hasAttribute(RawSet.DR_VARIABLE_NAME_OPTIONNAME) || element.hasAttribute(RawSet.DR_ITEM_VARIABLE_NAME_OPTIONNAME) || element.hasAttribute(RawSet.DR_ITEM_INDEX_VARIABLE_NAME_OPTIONNAME))
862
- // ) {
863
- // element.setAttribute(it, cval);
864
- } else {
865
- element.setAttribute(it, cval);
904
+ // } else if (
905
+ // !(element.hasAttribute(RawSet.DR_VARIABLE_NAME_OPTIONNAME) || element.hasAttribute(RawSet.DR_ITEM_VARIABLE_NAME_OPTIONNAME) || element.hasAttribute(RawSet.DR_ITEM_INDEX_VARIABLE_NAME_OPTIONNAME))
906
+ // ) {
907
+ // element.setAttribute(it, cval);
908
+ } else {
909
+ element.setAttribute(it, cval);
910
+ }
911
+ normalAttrs.set(it, { originalAttrValue: value, variablePaths: variablePaths, isStringTemplate });
912
+ // normalAttrs.set(it, originVariable);
913
+ // console.log('normalAttribute', it, variablePath);
866
914
  }
867
- normalAttrs.set(it, { originalAttrValue: value, variablePaths: variablePaths, isStringTemplate });
868
- // normalAttrs.set(it, originVariable);
869
- // console.log('normalAttribute', it, variablePath);
870
- }
871
- // console.log(element.getAttribute(it), attrExpresion);
872
- const isTargetAttr = targetAttrNames.includes(it.toLowerCase());
873
- return isTargetAttr;
874
- }).length > 0;
915
+ // console.log(element.getAttribute(it), attrExpresion);
916
+ const isTargetAttr = targetAttrNames.includes(it.toLowerCase());
917
+ return isTargetAttr;
918
+ }).length > 0;
875
919
 
876
920
  if (linkVariables.size) {
877
- element.setAttribute(
878
- EventManager.linkTargetMapAttrName,
879
- JSON.stringify(Array.from(linkVariables.entries()))
880
- );
921
+ element.setAttribute(EventManager.linkTargetMapAttrName, JSON.stringify(Array.from(linkVariables.entries())));
881
922
  }
882
923
  // 기본 attribute를 처리하기위해
883
924
  if (normalAttrs.size) {
@@ -893,8 +934,7 @@ export class RawSet {
893
934
  const r = NodeUtils.FindNodesFilterResult.NO_MATCH_AND_CONTINUE;
894
935
  // console.log('acceptNodeReturn nothing', r);
895
936
  return r;
896
- }
897
- )
937
+ });
898
938
 
899
939
  const pars: RawSet[] = [];
900
940
  let currentNode: Node | null;
@@ -981,10 +1021,8 @@ export class RawSet {
981
1021
  // 여기서 등록한 component 추가한다.
982
1022
  const targetElementIs = element.getAttribute(RawSet.DR_REPLACE_TARGET_ELEMENT_IS_NAME);
983
1023
  const targetElementNames = config.targetElements?.map(it => it.name.toLowerCase()) ?? [];
984
- targetElementNames.push(...RawSet.DR_ELEMENTS)
985
- const isElement =
986
- targetElementNames.includes(element.tagName.toLowerCase()) ||
987
- targetElementNames.includes(targetElementIs?.toLowerCase() as any);
1024
+ targetElementNames.push(...RawSet.DR_ELEMENTS);
1025
+ const isElement = targetElementNames.includes(element.tagName.toLowerCase()) || targetElementNames.includes(targetElementIs?.toLowerCase() as any);
988
1026
  // if (isElement) {
989
1027
  // (element as HTMLElement).style.display = 'none'
990
1028
  // }
@@ -1119,30 +1157,19 @@ export class RawSet {
1119
1157
  public static drItOtherEncoding(element: Element | DocumentFragment, postFix?: string) {
1120
1158
  const random = RandomUtils.uuid() + postFix;
1121
1159
  const regex = /#it#/g;
1122
- element
1123
- .querySelectorAll(
1124
- `[${RawSet.DR_IT_OPTIONNAME}], [${RawSet.DR_FOR_OF_NAME}], [${RawSet.DR_REPEAT_NAME}], [${RawSet.DR_APPENDER_NAME}]`
1125
- )
1126
- .forEach(it => {
1127
- it.innerHTML = it.innerHTML.replace(regex, random);
1128
- });
1160
+ element.querySelectorAll(`[${RawSet.DR_IT_OPTIONNAME}], [${RawSet.DR_FOR_OF_NAME}], [${RawSet.DR_REPEAT_NAME}], [${RawSet.DR_APPENDER_NAME}]`).forEach(it => {
1161
+ it.innerHTML = it.innerHTML.replace(regex, random);
1162
+ });
1129
1163
  return random;
1130
1164
  }
1131
1165
 
1132
1166
  public static drItOtherDecoding(element: Element | DocumentFragment, random: string) {
1133
- element
1134
- .querySelectorAll(
1135
- `[${RawSet.DR_IT_OPTIONNAME}], [${RawSet.DR_FOR_OF_NAME}], [${RawSet.DR_REPEAT_NAME}], [${RawSet.DR_APPENDER_NAME}]`
1136
- )
1137
- .forEach(it => {
1138
- it.innerHTML = it.innerHTML.replace(RegExp(random, 'g'), '#it#');
1139
- });
1167
+ element.querySelectorAll(`[${RawSet.DR_IT_OPTIONNAME}], [${RawSet.DR_FOR_OF_NAME}], [${RawSet.DR_REPEAT_NAME}], [${RawSet.DR_APPENDER_NAME}]`).forEach(it => {
1168
+ it.innerHTML = it.innerHTML.replace(RegExp(random, 'g'), '#it#');
1169
+ });
1140
1170
  }
1141
1171
 
1142
- public static drVarDecoding(
1143
- element: Element,
1144
- vars: { name: string; value: string; regex: RegExp; random: string }[]
1145
- ) {
1172
+ public static drVarDecoding(element: Element, vars: { name: string; value: string; regex: RegExp; random: string }[]) {
1146
1173
  element.querySelectorAll(`[${RawSet.DR_THIS_NAME}]`).forEach(it => {
1147
1174
  vars
1148
1175
  .filter(vit => vit.value && vit.name)
@@ -1199,28 +1226,20 @@ export class RawSet {
1199
1226
  return thisRandom;
1200
1227
  }
1201
1228
 
1202
- public static drThisBindEncoding(
1203
- element: Element,
1204
- variable: RegExp,
1205
- config: { config: DomRenderConfig; otherReplaceVariablePath?: string }
1206
- ) {
1229
+ public static drThisBindEncoding(element: Element, variable: RegExp, config: { config: DomRenderConfig; otherReplaceVariablePath?: string }) {
1207
1230
  element.querySelectorAll(`[${RawSet.DR_THIS_NAME}]`).forEach(eIt => {
1208
1231
  let message = eIt.innerHTML;
1209
1232
  // StringUtils.regexExec(/([^(dr\-)])?this(?=.?)/g, message).reverse().forEach(it => {
1210
1233
  StringUtils.regexExec(variable, message)
1211
1234
  .reverse()
1212
1235
  .forEach(it => {
1213
- message =
1214
- message.substr(0, it.index) +
1215
- message.substr(it.index).replace(it[0], `${it[1] ?? ''}${eIt.getAttribute(RawSet.DR_THIS_NAME)}`);
1236
+ message = message.substr(0, it.index) + message.substr(it.index).replace(it[0], `${it[1] ?? ''}${eIt.getAttribute(RawSet.DR_THIS_NAME)}`);
1216
1237
  });
1217
1238
  eIt.innerHTML = message;
1218
1239
  });
1219
1240
 
1220
1241
  const targetElements = config.config.targetElements ?? [];
1221
- const targetElementNames = targetElements
1222
- .map(it => it.name.replaceAll('.', '\\.').replaceAll(':', '\\:'))
1223
- .join(',');
1242
+ const targetElementNames = targetElements.map(it => it.name.replaceAll('.', '\\.').replaceAll(':', '\\:')).join(',');
1224
1243
  const thisRandom = RandomUtils.uuid();
1225
1244
  // console.log('thisRandom', thisRandom, variable);
1226
1245
  element.querySelectorAll(targetElementNames).forEach(it => {
@@ -1236,9 +1255,7 @@ export class RawSet {
1236
1255
  StringUtils.regexExec(variable, message)
1237
1256
  .reverse()
1238
1257
  .forEach(it => {
1239
- message =
1240
- message.substr(0, it.index) +
1241
- message.substr(it.index).replace(it[0], `${it[1] ?? ''}${config.otherReplaceVariablePath}`);
1258
+ message = message.substr(0, it.index) + message.substr(it.index).replace(it[0], `${it[1] ?? ''}${config.otherReplaceVariablePath}`);
1242
1259
  });
1243
1260
  element.innerHTML = message;
1244
1261
  }
@@ -1247,9 +1264,7 @@ export class RawSet {
1247
1264
 
1248
1265
  public static drThisBindDecoding(element: Element, config: { asIs: string; toBe: string; config: DomRenderConfig }) {
1249
1266
  const targetElements = config.config.targetElements ?? [];
1250
- const targetElementNames = targetElements
1251
- .map(it => it.name.replaceAll('.', '\\.').replaceAll(':', '\\:'))
1252
- .join(',');
1267
+ const targetElementNames = targetElements.map(it => it.name.replaceAll('.', '\\.').replaceAll(':', '\\:')).join(',');
1253
1268
  element.querySelectorAll(targetElementNames).forEach(it => {
1254
1269
  it.innerHTML = it.innerHTML.replace(RegExp(config.asIs, 'g'), config.toBe);
1255
1270
  });
@@ -1320,16 +1335,7 @@ export class RawSet {
1320
1335
  return vars;
1321
1336
  }
1322
1337
 
1323
- public static async drThisCreate(
1324
- rawSet: RawSet,
1325
- element: Element,
1326
- drThis: string,
1327
- drVarOption: string,
1328
- drStripOption: boolean | string | null,
1329
- obj: any,
1330
- config: DomRenderConfig,
1331
- set?: ComponentSet
1332
- ): Promise<DocumentFragment | undefined> {
1338
+ 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> {
1333
1339
  // console.log('ttttttttttttttttttttt',element.innerHTML, drThis, set, obj);
1334
1340
  const fag = config.window.document?.createDocumentFragment();
1335
1341
  if (!fag) {
@@ -1339,9 +1345,10 @@ export class RawSet {
1339
1345
  let targetObj = obj;
1340
1346
  if (set) {
1341
1347
  targetObj = set.obj;
1342
- set.setTemplateStyle(await RawSet.fetchTemplateStyle(set));
1343
- const style = RawSet.generateStyleTransform(set.styles ?? [], rawSet.uuid, true);
1344
- targetElement.innerHTML = style + (set.template ?? '');
1348
+ const templateStringSet = await RawSet.fetchTemplateStyle(set, targetObj);
1349
+ set.setTemplateStyle(templateStringSet);
1350
+ const style = RawSet.generateStyleTransform(templateStringSet.styles ?? [], rawSet.uuid, true);
1351
+ targetElement.innerHTML = style + (templateStringSet.template ?? '');
1345
1352
  } else {
1346
1353
  targetObj = ObjectUtils.Script.evaluateReturn(ObjectUtils.Path.toOptionalChainPath(drThis), obj);
1347
1354
  }
@@ -1393,11 +1400,8 @@ export class RawSet {
1393
1400
  render = Object.freeze(render);
1394
1401
 
1395
1402
  // dr-on-create data onCreateRender
1396
- const onCreateDataScript = `return {rootParent: this, render: this.__render}`;
1397
- const onCreateDataParam = ObjectUtils.Script.evaluate<OnCreateRenderDataParams>(
1398
- onCreateDataScript,
1399
- Object.assign(obj, { __render: render })
1400
- );
1403
+ const onCreateDataScript = `{rootParent: this, render: this.__render}`;
1404
+ const onCreateDataParam = ObjectUtils.Script.evaluateReturn<OnCreateRenderDataParams>(onCreateDataScript, Object.assign(obj, { __render: render }));
1401
1405
  if (isOnCreateRenderData(targetObj)) {
1402
1406
  targetObj?.onCreateRenderData(onCreateDataParam as OnCreateRenderDataParams);
1403
1407
  }
@@ -1410,10 +1414,7 @@ export class RawSet {
1410
1414
  const onCreate = element.getAttribute(RawSet.DR_ON_CREATE_ARGUMENTS_OPTIONNAME);
1411
1415
  let createParam: any[] = [];
1412
1416
  if (onCreate) {
1413
- createParam = ObjectUtils.Script.evaluateReturn<any[]>(
1414
- { bodyScript: renderScript, returnScript: ObjectUtils.Path.toOptionalChainPath(onCreate) },
1415
- obj
1416
- );
1417
+ createParam = ObjectUtils.Script.evaluateReturn<any[]>({ bodyScript: renderScript, returnScript: ObjectUtils.Path.toOptionalChainPath(onCreate) }, obj);
1417
1418
  if (!Array.isArray(createParam)) {
1418
1419
  createParam = [createParam];
1419
1420
  }
@@ -1502,9 +1503,7 @@ export class RawSet {
1502
1503
  const componentName = targetElement.getAttribute(RawSet.DR_VARIABLE_NAME_OPTIONNAME) ?? 'component';
1503
1504
  const optionThisName = targetElement.getAttribute(RawSet.DR_THIS_NAME_OPTIONNAME);
1504
1505
  // console.log('11111111111111', optionThisName)
1505
- targetElement
1506
- .getAttributeNames()
1507
- .forEach(it => targetElement.setAttribute(it, targetElement.getAttribute(it)!.replace(/#this#/g, drThis)));
1506
+ targetElement.getAttributeNames().forEach(it => targetElement.setAttribute(it, targetElement.getAttribute(it)!.replace(/#this#/g, drThis)));
1508
1507
  const thisRandom = this.drThisEncoding(targetElement, drThis, { asIs: /@this@/g });
1509
1508
  // console.log('@@@@@@@@@@@@@0', thisRandom);
1510
1509
  // let thisNameRandom: string | undefined = undefined;
@@ -1561,21 +1560,31 @@ export class RawSet {
1561
1560
  return fag;
1562
1561
  }
1563
1562
 
1564
- private static async fetchTemplateStyle(set: { template?: string; styles?: string | string[] }) {
1563
+ 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) {
1565
1564
  // const id = RandomUtils.getRandomString(20);
1566
1565
  const stylePromises: Promise<string>[] = [];
1567
- const templatePromise =
1568
- set.template && set.template.startsWith('lazy://')
1569
- ? (await fetch(set.template.substring(6))).text()
1570
- : Promise.resolve(set.template);
1571
- if (Array.isArray(set.styles)) {
1572
- for (let i = 0; set.styles && i < (set.styles.length ?? 0); i++) {
1573
- const it = set.styles[i];
1574
- stylePromises.push(it.startsWith('lazy://') ? (await fetch(it.substring(6))).text() : Promise.resolve(it));
1566
+
1567
+ const resolveLazy = async (value?: string) => {
1568
+ if (!value) {
1569
+ return value;
1570
+ }
1571
+ return value.startsWith('lazy://') ? (await fetch(value.substring(6))).text() : value;
1572
+ };
1573
+
1574
+ const templateValue = typeof set.template === 'function' ? await set.template(obj as T) : set.template;
1575
+ const templatePromise = typeof templateValue === 'string' ? resolveLazy(templateValue) : Promise.resolve(templateValue);
1576
+
1577
+ const stylesValue = typeof set.styles === 'function' ? await set.styles(obj as T) : set.styles;
1578
+
1579
+ if (Array.isArray(stylesValue)) {
1580
+ for (let i = 0; i < stylesValue.length; i++) {
1581
+ const it = stylesValue[i];
1582
+ stylePromises.push(resolveLazy(it) as Promise<string>);
1575
1583
  }
1576
- } else if (set.styles) {
1577
- stylePromises.push(Promise.resolve(set.styles));
1584
+ } else if (typeof stylesValue === 'string') {
1585
+ stylePromises.push(resolveLazy(stylesValue) as Promise<string>);
1578
1586
  }
1587
+
1579
1588
  // const tempTemplate = config.window.document.createElement('template');
1580
1589
  // tempTemplate.innerHTML = await templatePromise;
1581
1590
  // const tempContainer = config.window.document.createElement('div');
@@ -1585,11 +1594,7 @@ export class RawSet {
1585
1594
  };
1586
1595
  }
1587
1596
 
1588
- public static createComponentTargetAttribute(
1589
- name: string,
1590
- getThisObj: (element: Element, attrValue: string, obj: any, rawSet: RawSet) => any,
1591
- factory: (element: Element, attrValue: string, obj: any, rawSet: RawSet) => DocumentFragment
1592
- ) {
1597
+ 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) {
1593
1598
  const targetAttribute: TargetAttr = {
1594
1599
  name,
1595
1600
  callBack(element: Element, attrValue: string, obj: any, rawSet: RawSet): DocumentFragment {
@@ -1610,36 +1615,16 @@ export class RawSet {
1610
1615
  return targetAttribute;
1611
1616
  }
1612
1617
 
1613
- public static createComponentTargetElement({
1614
- name,
1615
- objFactory,
1616
- template = '',
1617
- styles = [],
1618
- noStrip
1619
- }: {
1620
- name: string;
1621
- noStrip?: boolean;
1622
- objFactory: (element: Element, obj: any, rawSet: RawSet, counstructorParam: any[]) => any;
1623
- template?: string;
1624
- styles?: string | string[];
1625
- }): TargetElement {
1626
- const targetElement: TargetElement = {
1618
+ 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> {
1619
+ const targetElement: TargetElement<T> = {
1627
1620
  name,
1628
- styles,
1629
- template,
1621
+ styles: styles,
1622
+ template: template,
1630
1623
  noStrip,
1631
- async callBack(
1632
- element: Element,
1633
- obj: any,
1634
- rawSet: RawSet,
1635
- attrs: Attrs,
1636
- config: DomRenderConfig
1637
- ): Promise<DocumentFragment | undefined> {
1638
- const templateStyle = await RawSet.fetchTemplateStyle({ template: this.template, styles: this.styles });
1639
- this.template = templateStyle.template;
1640
- this.styles = templateStyle.styles;
1641
- obj.__domrender_components ??= {};
1642
- const domrenderComponents = obj.__domrender_components;
1624
+ async callBack(element: Element, obj: any, rawSet: RawSet, attrs: Attrs, config: DomRenderConfig): Promise<DocumentFragment | undefined> {
1625
+ obj[DomRenderComponentMetaKey.DOMRENDER_COMPONENTS_KEY] ??= {};
1626
+ const domrenderComponents = obj[DomRenderComponentMetaKey.DOMRENDER_COMPONENTS_KEY];
1627
+
1643
1628
  // debugger;
1644
1629
  const renderScript = ` /*createComponentTargetElement*/
1645
1630
  var ${EventManager.RAWSET_VARNAME} = this.__render.rawSet;
@@ -1681,11 +1666,7 @@ export class RawSet {
1681
1666
  //
1682
1667
  // // dr-constructor
1683
1668
  if (constructor) {
1684
- let param =
1685
- ObjectUtils.Script.evaluateReturn(
1686
- { bodyScript: renderScript, returnScript: ObjectUtils.Path.toOptionalChainPath(constructor) },
1687
- Object.assign(obj, { __render: render })
1688
- ) ?? [];
1669
+ let param = ObjectUtils.Script.evaluateReturn({ bodyScript: renderScript, returnScript: ObjectUtils.Path.toOptionalChainPath(constructor) }, Object.assign(obj, { __render: render })) ?? [];
1689
1670
  if (!Array.isArray(param)) {
1690
1671
  param = [param];
1691
1672
  }
@@ -1693,7 +1674,7 @@ export class RawSet {
1693
1674
  }
1694
1675
 
1695
1676
  // // console.log('------22', attrs);
1696
- const instance = (domrenderComponents[rawSet.uuid] = objFactory(element, obj, rawSet, constructorParam));
1677
+ const instance = (domrenderComponents[rawSet.uuid] = await objFactory(element, obj, rawSet, constructorParam));
1697
1678
  render = {
1698
1679
  currentThis: instance,
1699
1680
  // creatorMetaData: i,
@@ -1703,6 +1684,10 @@ export class RawSet {
1703
1684
  // 추적 및 destroy 위해.
1704
1685
  instance.__rawSet = rawSet;
1705
1686
 
1687
+ const templateStyle = await RawSet.fetchTemplateStyle({ template: this.template, styles: this.styles }, instance);
1688
+ this.template = templateStyle.template;
1689
+ this.styles = templateStyle.styles;
1690
+
1706
1691
  let applayTemplate = element.innerHTML;
1707
1692
  let applayTemplateText = element.textContent?.trim() ?? '';
1708
1693
  let applayTemplateEscape = ConvertUtils.escapeHTML(element.innerHTML);
@@ -1736,7 +1721,7 @@ export class RawSet {
1736
1721
  // RawSet.replaceInnerHTML(
1737
1722
  // applayTemplate = StringUtils.regexExecArrayReplace(this.template, RegExp(`#${innerHTMLName}#`, 'g'), applayTemplate)
1738
1723
  // applayTemplate = StringUtils.regexExecArrayReplace(this.template, [RegExp(`#${innerHTMLName}#`, 'g')], applayTemplate)
1739
- applayTemplate = StringUtils.replaceSequentially((this.template ?? ''), [
1724
+ applayTemplate = StringUtils.replaceSequentially(this.template ?? '', [
1740
1725
  {
1741
1726
  regex: new RegExp(`#${innerHTMLName}#`, 'g'),
1742
1727
  callback: () => applayTemplate
@@ -1765,15 +1750,7 @@ export class RawSet {
1765
1750
 
1766
1751
  // 여기서 targetElement의 옷을 벗긴다.
1767
1752
  // console.log('---createComponentTargetElement', element);
1768
- let data = await RawSet.drThisCreate(
1769
- rawSet,
1770
- element,
1771
- `this.__domrender_components.${rawSet.uuid}`,
1772
- '',
1773
- !noStrip,
1774
- obj,
1775
- config
1776
- );
1753
+ let data = await RawSet.drThisCreate(rawSet, element, `this.${DomRenderComponentMetaKey.DOMRENDER_COMPONENTS_KEY}.${rawSet.uuid}`, '', !noStrip, obj, config);
1777
1754
  // const tempDiv = document.createElement("div");
1778
1755
  // tempDiv.appendChild(data.cloneNode(true)); // 원본 보존
1779
1756
  // console.log('-------------ddddddddddddd', element.innerHTML, tempDiv.innerHTML);
@@ -1793,7 +1770,7 @@ export class RawSet {
1793
1770
  // console.log('-----XX', ElementUtils.toInnerHTML(data, {document: config.window.document}));
1794
1771
  // template.innerHTML = template.innerHTML.replace(RegExp(innerHTMLThisRandom, 'g'), 'this.');
1795
1772
  let s = ElementUtils.toInnerHTML(data, { document: config.window.document });
1796
- template.innerHTML = s.replace(RegExp(innerHTMLThisRandom, 'g'), 'this.');;
1773
+ template.innerHTML = s.replace(RegExp(innerHTMLThisRandom, 'g'), 'this.');
1797
1774
  // console.log('ccc?', template.innerHTML);
1798
1775
  // template.innerHTML = '<div>zzzzzzz</div>'
1799
1776
  data = template.content;
@@ -1819,12 +1796,7 @@ export class RawSet {
1819
1796
  return StringUtils.regexExec(reg, data ?? '');
1820
1797
  }
1821
1798
 
1822
- public static destroy(
1823
- obj: any | undefined,
1824
- parameter: OnDestroyRenderParams,
1825
- config: DomRenderConfig,
1826
- destroyOptions: (DestroyOptionType | string)[] = []
1827
- ): void {
1799
+ public static destroy(obj: any | undefined, parameter: OnDestroyRenderParams, config: DomRenderConfig, destroyOptions: (DestroyOptionType | string)[] = []): void {
1828
1800
  // console.log('destroy destroydestroydestroydestroy', obj, parameter, config, destroyOptions);
1829
1801
  if (!destroyOptions.some(it => it === DestroyOptionType.NO_DESTROY)) {
1830
1802
  if (!destroyOptions.some(it => it === DestroyOptionType.NO_MESSENGER_DESTROY)) {
@@ -1832,6 +1804,11 @@ export class RawSet {
1832
1804
  config.messenger.deleteChannelFromObj(obj);
1833
1805
  }
1834
1806
  }
1807
+
1808
+ if (obj && obj.onDestroy === 'function') {
1809
+ obj.onDestroy();
1810
+ }
1811
+
1835
1812
  // console.log('------------destroy', obj);
1836
1813
  if (isOnDestroyRender(obj)) {
1837
1814
  obj.onDestroyRender?.(parameter);
@@ -1871,11 +1848,7 @@ export class RawSet {
1871
1848
  const findPath = (rawSet: RawSet) => {
1872
1849
  if (rawSet && rawSet.point) {
1873
1850
  // jsDom에서 instranceof HTMLMetaElement가 안먹히는것같아? 간혈적으로?
1874
- if (
1875
- rawSet.point?.start &&
1876
- 'getAttribute' in rawSet.point.start &&
1877
- rawSet.point.start.getAttribute('this-path')
1878
- ) {
1851
+ if (rawSet.point?.start && 'getAttribute' in rawSet.point.start && rawSet.point.start.getAttribute('this-path')) {
1879
1852
  paths.push(rawSet.point.start.getAttribute('this-path')!);
1880
1853
  }
1881
1854
  if (rawSet.point.parentRawSet) findPath(rawSet.point.parentRawSet);
@@ -1907,10 +1880,7 @@ export class RawSet {
1907
1880
  let r = ObjectUtils.Path.toOptionalChainPath(variablePaths[0].inner);
1908
1881
  targetScript = targetScript.replaceAll(variablePaths[0].origin, r);
1909
1882
  }
1910
- const cval = ObjectUtils.Script.evaluateReturn(
1911
- { bodyScript: config.script, returnScript: v.isStringTemplate ? '`' + targetScript + '`' : targetScript },
1912
- Object.assign(config.obj, config.renderData ? { __render: config.renderData } : undefined)
1913
- );
1883
+ const cval = ObjectUtils.Script.evaluateReturn({ bodyScript: config.script, returnScript: v.isStringTemplate ? '`' + targetScript + '`' : targetScript }, Object.assign(config.obj, config.renderData ? { __render: config.renderData } : undefined));
1914
1884
  attribute[k] = cval;
1915
1885
  });
1916
1886
  }