@dooboostore/dom-render 1.0.108 → 1.0.110

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 (236) hide show
  1. package/README.MD +27 -1451
  2. package/dist/cjs/DomRender.js +41 -26
  3. package/dist/cjs/DomRender.js.map +2 -2
  4. package/dist/cjs/DomRenderProxy.js +134 -62
  5. package/dist/cjs/DomRenderProxy.js.map +2 -2
  6. package/dist/cjs/bundle-entry.js +32 -21
  7. package/dist/cjs/bundle-entry.js.map +2 -2
  8. package/dist/cjs/components/ComponentBase.js +24 -6
  9. package/dist/cjs/components/ComponentBase.js.map +2 -2
  10. package/dist/cjs/components/ComponentRouterBase.js +11 -1
  11. package/dist/cjs/components/ComponentRouterBase.js.map +2 -2
  12. package/dist/cjs/components/appender/Appender.js +0 -3
  13. package/dist/cjs/components/appender/Appender.js.map +2 -2
  14. package/dist/cjs/components/checkbox/CheckBox.js.map +2 -2
  15. package/dist/cjs/components/choose/Choose.js +7 -1
  16. package/dist/cjs/components/choose/Choose.js.map +2 -2
  17. package/dist/cjs/components/details/Details.js +2 -2
  18. package/dist/cjs/components/details/Details.js.map +2 -2
  19. package/dist/cjs/components/forOf/ForOf.js.map +2 -2
  20. package/dist/cjs/components/if/If.js +2 -2
  21. package/dist/cjs/components/if/If.js.map +2 -2
  22. package/dist/cjs/components/input/Input.js +2 -2
  23. package/dist/cjs/components/input/Input.js.map +2 -2
  24. package/dist/cjs/components/promise/PromiseSwitch.js +6 -6
  25. package/dist/cjs/components/promise/PromiseSwitch.js.map +2 -2
  26. package/dist/cjs/components/radio/Radio.js.map +2 -2
  27. package/dist/cjs/components/router/Route.js +2 -2
  28. package/dist/cjs/components/router/Route.js.map +2 -2
  29. package/dist/cjs/components/router/RouterOutlet.js +17 -3
  30. package/dist/cjs/components/router/RouterOutlet.js.map +2 -2
  31. package/dist/cjs/components/select/Select.js +26 -12
  32. package/dist/cjs/components/select/Select.js.map +2 -2
  33. package/dist/cjs/components/this/This.js +2 -2
  34. package/dist/cjs/components/this/This.js.map +2 -2
  35. package/dist/cjs/components/timer/Timer.js +15 -13
  36. package/dist/cjs/components/timer/Timer.js.map +2 -2
  37. package/dist/cjs/decorators/DomRenderNoProxy.js +2 -1
  38. package/dist/cjs/decorators/DomRenderNoProxy.js.map +2 -2
  39. package/dist/cjs/events/EventManager.js +9 -2
  40. package/dist/cjs/events/EventManager.js.map +2 -2
  41. package/dist/cjs/lifecycle/OnInitRender.js.map +1 -1
  42. package/dist/cjs/lifecycle/OnRawSetRendered.js +26 -0
  43. package/dist/cjs/lifecycle/OnRawSetRendered.js.map +7 -0
  44. package/dist/cjs/lifecycle/index.js +1 -0
  45. package/dist/cjs/lifecycle/index.js.map +2 -2
  46. package/dist/cjs/operators/DrForOf.js +24 -11
  47. package/dist/cjs/operators/DrForOf.js.map +2 -2
  48. package/dist/cjs/operators/DrIf.js +1 -2
  49. package/dist/cjs/operators/DrIf.js.map +2 -2
  50. package/dist/cjs/operators/DrInnerText.js +2 -2
  51. package/dist/cjs/operators/DrInnerText.js.map +2 -2
  52. package/dist/cjs/operators/DrTargetElement.js +2 -0
  53. package/dist/cjs/operators/DrTargetElement.js.map +2 -2
  54. package/dist/cjs/operators/OperatorExecuter.js +1 -2
  55. package/dist/cjs/operators/OperatorExecuter.js.map +2 -2
  56. package/dist/cjs/package.json +5 -0
  57. package/dist/cjs/rawsets/RawSet.js +392 -115
  58. package/dist/cjs/rawsets/RawSet.js.map +3 -3
  59. package/dist/cjs/rawsets/Render.js.map +1 -1
  60. package/dist/cjs/routers/PathRouter.js +13 -7
  61. package/dist/cjs/routers/PathRouter.js.map +2 -2
  62. package/dist/cjs/routers/Router.js +76 -36
  63. package/dist/cjs/routers/Router.js.map +3 -3
  64. package/dist/esm/DomRender.js +41 -26
  65. package/dist/esm/DomRender.js.map +2 -2
  66. package/dist/esm/DomRenderProxy.js +134 -62
  67. package/dist/esm/DomRenderProxy.js.map +2 -2
  68. package/dist/esm/bundle-entry.js +22 -21
  69. package/dist/esm/bundle-entry.js.map +2 -2
  70. package/dist/esm/components/ComponentBase.js +24 -6
  71. package/dist/esm/components/ComponentBase.js.map +2 -2
  72. package/dist/esm/components/ComponentRouterBase.js +11 -1
  73. package/dist/esm/components/ComponentRouterBase.js.map +2 -2
  74. package/dist/esm/components/appender/Appender.js +0 -3
  75. package/dist/esm/components/appender/Appender.js.map +2 -2
  76. package/dist/esm/components/checkbox/CheckBox.js.map +2 -2
  77. package/dist/esm/components/choose/Choose.js +7 -1
  78. package/dist/esm/components/choose/Choose.js.map +2 -2
  79. package/dist/esm/components/details/Details.js +2 -2
  80. package/dist/esm/components/details/Details.js.map +2 -2
  81. package/dist/esm/components/forOf/ForOf.js.map +2 -2
  82. package/dist/esm/components/if/If.js +2 -2
  83. package/dist/esm/components/if/If.js.map +2 -2
  84. package/dist/esm/components/input/Input.js +2 -2
  85. package/dist/esm/components/input/Input.js.map +2 -2
  86. package/dist/esm/components/promise/PromiseSwitch.js +6 -6
  87. package/dist/esm/components/promise/PromiseSwitch.js.map +2 -2
  88. package/dist/esm/components/radio/Radio.js.map +2 -2
  89. package/dist/esm/components/router/Route.js +2 -2
  90. package/dist/esm/components/router/Route.js.map +2 -2
  91. package/dist/esm/components/router/RouterOutlet.js +18 -4
  92. package/dist/esm/components/router/RouterOutlet.js.map +2 -2
  93. package/dist/esm/components/select/Select.js +26 -12
  94. package/dist/esm/components/select/Select.js.map +2 -2
  95. package/dist/esm/components/this/This.js +2 -2
  96. package/dist/esm/components/this/This.js.map +2 -2
  97. package/dist/esm/components/timer/Timer.js +15 -13
  98. package/dist/esm/components/timer/Timer.js.map +2 -2
  99. package/dist/esm/decorators/DomRenderNoProxy.js +2 -1
  100. package/dist/esm/decorators/DomRenderNoProxy.js.map +2 -2
  101. package/dist/esm/events/EventManager.js +9 -2
  102. package/dist/esm/events/EventManager.js.map +2 -2
  103. package/dist/esm/lifecycle/OnInitRender.js.map +1 -1
  104. package/dist/esm/lifecycle/OnRawSetRendered.js +7 -0
  105. package/dist/esm/lifecycle/OnRawSetRendered.js.map +7 -0
  106. package/dist/esm/lifecycle/index.js +1 -0
  107. package/dist/esm/lifecycle/index.js.map +2 -2
  108. package/dist/esm/operators/DrForOf.js +24 -11
  109. package/dist/esm/operators/DrForOf.js.map +2 -2
  110. package/dist/esm/operators/DrIf.js +1 -2
  111. package/dist/esm/operators/DrIf.js.map +2 -2
  112. package/dist/esm/operators/DrInnerText.js +2 -2
  113. package/dist/esm/operators/DrInnerText.js.map +2 -2
  114. package/dist/esm/operators/DrTargetElement.js +2 -0
  115. package/dist/esm/operators/DrTargetElement.js.map +2 -2
  116. package/dist/esm/operators/OperatorExecuter.js +1 -2
  117. package/dist/esm/operators/OperatorExecuter.js.map +2 -2
  118. package/dist/esm/rawsets/RawSet.js +392 -115
  119. package/dist/esm/rawsets/RawSet.js.map +3 -3
  120. package/dist/esm/routers/PathRouter.js +13 -7
  121. package/dist/esm/routers/PathRouter.js.map +2 -2
  122. package/dist/esm/routers/Router.js +76 -36
  123. package/dist/esm/routers/Router.js.map +3 -3
  124. package/dist/esm-bundle/dooboostore-dom-render.esm.js +14023 -6402
  125. package/dist/esm-bundle/dooboostore-dom-render.esm.js.map +4 -4
  126. package/dist/types/DomRender.d.ts +11 -5
  127. package/dist/types/DomRender.d.ts.map +1 -1
  128. package/dist/types/DomRenderProxy.d.ts +2 -2
  129. package/dist/types/DomRenderProxy.d.ts.map +1 -1
  130. package/dist/types/bundle-entry.d.ts +5 -2
  131. package/dist/types/bundle-entry.d.ts.map +1 -1
  132. package/dist/types/components/ComponentBase.d.ts +8 -2
  133. package/dist/types/components/ComponentBase.d.ts.map +1 -1
  134. package/dist/types/components/ComponentRouterBase.d.ts +8 -0
  135. package/dist/types/components/ComponentRouterBase.d.ts.map +1 -1
  136. package/dist/types/components/appender/Appender.d.ts +0 -2
  137. package/dist/types/components/appender/Appender.d.ts.map +1 -1
  138. package/dist/types/components/checkbox/CheckBox.d.ts.map +1 -1
  139. package/dist/types/components/choose/Choose.d.ts.map +1 -1
  140. package/dist/types/components/details/Details.d.ts +1 -1
  141. package/dist/types/components/details/Details.d.ts.map +1 -1
  142. package/dist/types/components/forOf/ForOf.d.ts.map +1 -1
  143. package/dist/types/components/if/If.d.ts +1 -1
  144. package/dist/types/components/if/If.d.ts.map +1 -1
  145. package/dist/types/components/index.d.ts +2 -1
  146. package/dist/types/components/index.d.ts.map +1 -1
  147. package/dist/types/components/input/Input.d.ts +1 -1
  148. package/dist/types/components/input/Input.d.ts.map +1 -1
  149. package/dist/types/components/promise/PromiseSwitch.d.ts +1 -1
  150. package/dist/types/components/promise/PromiseSwitch.d.ts.map +1 -1
  151. package/dist/types/components/radio/Radio.d.ts.map +1 -1
  152. package/dist/types/components/router/Route.d.ts +1 -1
  153. package/dist/types/components/router/Route.d.ts.map +1 -1
  154. package/dist/types/components/router/RouterOutlet.d.ts +6 -2
  155. package/dist/types/components/router/RouterOutlet.d.ts.map +1 -1
  156. package/dist/types/components/select/Select.d.ts +5 -5
  157. package/dist/types/components/select/Select.d.ts.map +1 -1
  158. package/dist/types/components/this/This.d.ts +1 -1
  159. package/dist/types/components/this/This.d.ts.map +1 -1
  160. package/dist/types/components/timer/Timer.d.ts +6 -4
  161. package/dist/types/components/timer/Timer.d.ts.map +1 -1
  162. package/dist/types/decorators/DomRenderNoProxy.d.ts.map +1 -1
  163. package/dist/types/events/EventManager.d.ts +8 -0
  164. package/dist/types/events/EventManager.d.ts.map +1 -1
  165. package/dist/types/index.d.ts +0 -100
  166. package/dist/types/lifecycle/OnInitRender.d.ts +1 -1
  167. package/dist/types/lifecycle/OnInitRender.d.ts.map +1 -1
  168. package/dist/types/lifecycle/OnRawSetRendered.d.ts +10 -0
  169. package/dist/types/lifecycle/OnRawSetRendered.d.ts.map +1 -0
  170. package/dist/types/lifecycle/index.d.ts +1 -0
  171. package/dist/types/lifecycle/index.d.ts.map +1 -1
  172. package/dist/types/operators/DrForOf.d.ts.map +1 -1
  173. package/dist/types/operators/DrInnerText.d.ts.map +1 -1
  174. package/dist/types/operators/DrTargetElement.d.ts.map +1 -1
  175. package/dist/types/operators/OperatorExecuter.d.ts.map +1 -1
  176. package/dist/types/rawsets/RawSet.d.ts +17 -9
  177. package/dist/types/rawsets/RawSet.d.ts.map +1 -1
  178. package/dist/types/rawsets/Render.d.ts +1 -0
  179. package/dist/types/rawsets/Render.d.ts.map +1 -1
  180. package/dist/types/routers/PathRouter.d.ts.map +1 -1
  181. package/dist/types/routers/Router.d.ts +11 -14
  182. package/dist/types/routers/Router.d.ts.map +1 -1
  183. package/dist/umd-bundle/dooboostore-dom-render.umd.js +14104 -6502
  184. package/dist/umd-bundle/dooboostore-dom-render.umd.js.map +4 -4
  185. package/package.json +9 -8
  186. package/src/DomRender.ts +62 -34
  187. package/src/DomRenderProxy.ts +275 -142
  188. package/src/bundle-entry.ts +5 -3
  189. package/src/components/ComponentBase.ts +33 -11
  190. package/src/components/ComponentRouterBase.ts +17 -2
  191. package/src/components/appender/Appender.ts +0 -5
  192. package/src/components/checkbox/CheckBox.ts +22 -25
  193. package/src/components/choose/Choose.ts +19 -18
  194. package/src/components/details/Details.ts +40 -43
  195. package/src/components/forOf/ForOf.ts +6 -9
  196. package/src/components/if/If.ts +9 -11
  197. package/src/components/input/Input.ts +16 -22
  198. package/src/components/promise/PromiseSwitch.ts +67 -66
  199. package/src/components/radio/Radio.ts +23 -28
  200. package/src/components/router/Route.ts +10 -13
  201. package/src/components/router/RouterOutlet.ts +29 -8
  202. package/src/components/select/Select.ts +47 -33
  203. package/src/components/this/This.ts +13 -12
  204. package/src/components/timer/Timer.ts +29 -65
  205. package/src/decorators/DomRenderNoProxy.ts +3 -1
  206. package/src/events/EventManager.ts +15 -4
  207. package/src/lifecycle/OnInitRender.ts +1 -1
  208. package/src/lifecycle/OnRawSetRendered.ts +15 -0
  209. package/src/lifecycle/index.ts +1 -0
  210. package/src/node_modules/.bin/acorn +17 -0
  211. package/src/node_modules/.bin/browserslist +17 -0
  212. package/src/node_modules/.bin/eslint +17 -0
  213. package/src/node_modules/.bin/sbf +17 -0
  214. package/src/node_modules/.bin/ts-node +17 -0
  215. package/src/node_modules/.bin/ts-node-cwd +17 -0
  216. package/src/node_modules/.bin/ts-node-dev +17 -0
  217. package/src/node_modules/.bin/ts-node-esm +17 -0
  218. package/src/node_modules/.bin/ts-node-script +17 -0
  219. package/src/node_modules/.bin/ts-node-transpile-only +17 -0
  220. package/src/node_modules/.bin/ts-script +17 -0
  221. package/src/node_modules/.bin/tsc +17 -0
  222. package/src/node_modules/.bin/tsnd +17 -0
  223. package/src/node_modules/.bin/tsserver +17 -0
  224. package/src/node_modules/.bin/webpack +17 -0
  225. package/src/node_modules/.bin/webpack-cli +17 -0
  226. package/src/node_modules/.bin/webpack-dev-server +17 -0
  227. package/src/operators/DrForOf.ts +25 -10
  228. package/src/operators/DrIf.ts +1 -1
  229. package/src/operators/DrInnerText.ts +2 -1
  230. package/src/operators/DrTargetElement.ts +14 -0
  231. package/src/operators/OperatorExecuter.ts +1 -2
  232. package/src/rawsets/RawSet.ts +709 -295
  233. package/src/rawsets/Render.ts +1 -0
  234. package/src/routers/PathRouter.ts +14 -7
  235. package/src/routers/Router.ts +107 -61
  236. package/types.d.ts +0 -2825
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/components/select/Select.ts"],
4
- "sourcesContent": ["import { attribute, ChildrenSet, ComponentBase } from '../ComponentBase';\nimport { DomRender, DomRenderRunConfig } from '../../DomRender';\nimport { RawSet } from '../../rawsets/RawSet';\nimport { OnCreateRenderData, OnCreateRenderDataParams } from '../../lifecycle/OnCreateRenderData';\nimport { OnInitRender } from '../../lifecycle/OnInitRender';\nimport { OnDestroyRender } from '../../lifecycle/OnDestroyRender';\nimport { EventUtils } from '@dooboostore/core-web/event/EventUtils';\nimport { type Subscription } from '@dooboostore/core/message/Subscription';\nimport { ValidUtils } from '@dooboostore/core-web/valid/ValidUtils';\nimport { DomRenderNoProxy } from '../../decorators/DomRenderNoProxy';\nimport { OnCreateRender } from '../../lifecycle/OnCreateRender';\nimport { DomRenderConfig } from '../../configs/DomRenderConfig';\nimport { WindowUtils } from '@dooboostore/core-web/window/WindowUtils';\n\n/** 사용법\n <dr-select class=\"card-select-container\" changeSelected=\"${(data) => @this@.changeSelected(data)}$\"> <!-- multiple attribute optional-->\n <dr-select-summary class=\"card-select-summary-container\">\n <dr-select-summary-placeholder>\n <div class=\"card-select-summary-placeholder-container\">카드사별 사용처 안내 페이지 선택</div>\n </dr-select-summary-placeholder>\n <dr-select-summary-selected>\n <div dr-if=\"@this@.selectedCard\" class=\"card-select-summary-selected-container\">\n <img dr-attr=\"{src:@this@.selectedCard?.iconImg}\"> ${@this@.selectedCard?.name}$\n </div>\n </dr-select-summary-selected>\n </dr-select-summary>\n\n <dr-select-body float=\"bottom-left\" class=\"card-select-body-container\">\n <dr-select-option dr-for-of=\"@this@.cards\" value=\"${#it#.name}$\" selected=\"${#nearForOfIndex# === 0}$\" class=\"card-select-body-option-container\">\n <img dr-attr=\"{src:#it#.iconImg}\"> ${#it#.name}$\n </dr-select-option>\n </dr-select-body>\n </dr-select>\n */\n\nexport namespace Select {\n export const selector = 'dr-select';\n\n // Base for simple hide/show components\n class StateComponent extends ComponentBase {\n public hidden = true;\n public value: string | null = null;\n\n constructor(config: any) {\n super(config);\n }\n\n setValue(value: string | null) {\n this.value = value;\n }\n }\n\n // --- Option Child Components ---\n export class OptionSelected extends StateComponent {\n constructor() {\n super({onlyParentType: Option});\n }\n }\n\n export class OptionUnselected extends StateComponent {\n constructor() {\n super({onlyParentType: Option});\n }\n }\n\n export class OptionDisabled extends StateComponent {\n constructor() {\n super({onlyParentType: Option});\n }\n }\n\n // --- Summary Child Components ---\n export class SummaryPlaceholder extends StateComponent {\n constructor() {\n super({onlyParentType: Summary});\n }\n }\n\n export class SummarySelected extends StateComponent {\n private selectedOptions: Select.Option[] = [];\n\n constructor() {\n super({onlyParentType: Summary});\n }\n\n setOptions(options: Option[] = []) {\n this.selectedOptions = options.filter(it => it.selected);\n }\n }\n\n export class SummaryDisabled extends StateComponent {\n private selectedOptions: Select.Option[] = [];\n\n constructor() {\n super({onlyParentType: Summary});\n }\n\n setOptions(options: Option[] = []) {\n this.selectedOptions = options.filter(it => it.selected);\n }\n }\n\n // --- Select Body Component ---\n export type SelectBodyAttribute = {\n float?: 'bottom-left' | 'bottom-right' | 'top-left' | 'top-right';\n class?: string;\n }\n // --- Option Component ---\n export type OptionAttribute = { value: string; selected?: boolean | null; disabled?: boolean | null; class?: string; };\n\n export class Option extends ComponentBase<OptionAttribute> implements OnInitRender {\n public hidden = true;\n @attribute({name: 'value'}) public value: string | null = null;\n @attribute({name: 'selected', converter: v => v !== null && v === true}) public selected = false;\n @attribute({name: 'disabled', converter: v => v !== null && v === true}) public disabled = false;\n @attribute({name: 'class', converter: v => (v ? v : null)}) public classAttr: string | null = null;\n\n // public status: 'selected' | 'unselected' | 'disabled' = 'unselected';\n\n constructor() {\n super({onlyParentType: SelectBody});\n }\n\n onInitRender(param: any, rawSet: RawSet) {\n super.onInitRender(param, rawSet);\n // console.log('-----', this.value, this.selected)\n // this.getElement()?.addEventListener('click', (e) => {\n // e.stopPropagation();\n // if (!this.disabled) {\n // this.getParentThis<Select>().handleOptionClick(this);\n // }\n // });\n this.updateStatus();\n }\n\n // onCreatedThisChild(child: any, data: OnCreateRenderDataParams) {\n // super.onCreatedThisChild(child, data);\n // this.updateStatus();\n // }\n onCreatedThisChildDebounce(childrenSet: ChildrenSet[]) {\n super.onCreatedThisChildDebounce(childrenSet);\n this.updateStatus();\n }\n\n toggleSelected(event: Event) {\n // console.log('isMultiple', this.isMultiple())\n if (!this.disabled) {\n this.selected = this.isMultiple()? !this.selected : true;\n // this.selected = !this.selected;\n this.updateStatus();\n this.getParentThis<SelectBody>().changeOptionState(this);\n } else {\n event.stopPropagation();\n event.preventDefault();\n }\n }\n\n isMultiple() {\n return this.getParentThis<Select.SelectBody>()?.getParentThis<Select.Select>().multiple;\n }\n\n updateStatus() {\n if (this.disabled) {\n this.getChildren(OptionSelected).forEach(c => {\n c.hidden = true;\n c.setValue(this.value)\n });\n this.getChildren(OptionUnselected).forEach(c => {\n c.hidden = true;\n c.setValue(this.value)\n });\n this.getChildren(OptionDisabled).forEach(c => {\n c.hidden = false;\n c.setValue(this.value)\n });\n return;\n }\n\n if (this.selected) {\n this.getChildren(OptionSelected).forEach(c => {\n c.hidden = false;\n c.setValue(this.value)\n });\n this.getChildren(OptionUnselected).forEach(c => {\n c.hidden = true;\n c.setValue(this.value)\n });\n this.getChildren(OptionDisabled).forEach(c => {\n c.hidden = true;\n c.setValue(this.value)\n });\n }\n\n if (!this.selected) {\n this.getChildren(OptionSelected).forEach(c => {\n c.hidden = true;\n c.setValue(this.value)\n });\n this.getChildren(OptionUnselected).forEach(c => {\n c.hidden = false;\n c.setValue(this.value)\n });\n this.getChildren(OptionDisabled).forEach(c => {\n c.hidden = true;\n c.setValue(this.value)\n });\n }\n }\n }\n\n // --- Summary Component ---\n export class Summary extends ComponentBase implements OnInitRender {\n @attribute({name: 'class', converter: v => (v === '' ? null : v)}) public classAttr: string | null = null;\n private options: Select.Option[] = [];\n private disabled: boolean = false;\n public element?: HTMLElement;\n\n constructor() {\n super({onlyParentType: Select});\n }\n\n\n setDisabled(disabled: boolean) {\n this.disabled = disabled;\n this.getChildren(SummaryPlaceholder).forEach(it => it.hidden = true);\n this.getChildren(SummarySelected).forEach(it => it.hidden = true);\n this.getChildren(SummaryDisabled).forEach(it => it.hidden = false);\n\n }\n\n setOptions(options: Option[] = []): void {\n this.options = options;\n\n const selectedOptions = this.options.filter(it => it.selected && !it.disabled);\n if (!this.disabled) {\n if (selectedOptions.length > 0) {\n this.getChildren(SummaryPlaceholder).forEach(it => it.hidden = true);\n this.getChildren(SummarySelected).forEach(c => {\n c.setOptions(options);\n c.hidden = false;\n });\n this.getChildren(SummaryDisabled).forEach(it => it.hidden = true);\n } else {\n this.getChildren(SummaryDisabled).forEach(it => it.hidden = true);\n this.getChildren(SummaryPlaceholder).forEach(it => it.hidden = false);\n this.getChildren(SummarySelected).forEach(c => c.hidden = true);\n }\n }\n }\n\n onInitRender(param: any, rawSet: RawSet) {\n super.onInitRender(param, rawSet);\n // this.getElement()?.addEventListener('click', (e) => {\n // e.stopPropagation();\n // this.getParentThis<Select>().toggle();\n // });\n }\n\n onInitSummaryElement(element: HTMLElement, event: Event) {\n this.element = element;\n }\n\n updateView(hasSelection: boolean) {\n this.getChildren(SummaryPlaceholder).forEach(c => c.hidden = hasSelection);\n this.getChildren(SummarySelected).forEach(c => c.hidden = !hasSelection);\n }\n\n // onCreatedThisChild(child: any, data: OnCreateRenderDataParams) {\n // super.onCreatedThisChild(child, data);\n // }\n onCreatedThisChildDebounce(childrenSet: ChildrenSet[]) {\n super.onCreatedThisChildDebounce(childrenSet);\n this.updateView(this.getParentThis<Select>()?.selectedValues.length > 0);\n }\n\n\n onSummaryClick(element: HTMLElement, event: Event) {\n if (this.getParentThis<Select>()?.disabled) {\n event.stopPropagation();\n event.preventDefault();\n return;\n }\n }\n }\n\n\n export class SelectBody extends ComponentBase<SelectBodyAttribute> {\n @attribute({name: 'class', converter: v => (v === '' ? null : v)}) public classAttr: string | null = null;\n @attribute({name: 'float'}) public float: 'bottom-left' | 'bottom-right' | 'top-left' | 'top-right' | null = null;\n\n constructor() {\n super({onlyParentType: Select});\n }\n\n onCreatedThisChildDebounce(childrenSet: ChildrenSet[]) {\n this.changeOptionState();\n }\n\n changeOptionState(option?: Option) {\n const options = this.getChildren(Option);\n const select = this.getParentThis<Select>();\n // // 멀티플이 아닐때에는 마지막 선택된값으로 처리\n if (!select.multiple) {\n // 내가 선택한게 있으면\n if (option && option.selected) {\n options.filter(it => it !== option).forEach(it => it.selected = false);\n } else {\n const selectedOptions = options.filter(it => it.selected && !it.disabled)\n selectedOptions.forEach((opt, idx) => {\n const isLast = idx === selectedOptions.length - 1;\n if (!isLast) {\n opt.selected = false;\n }\n });\n }\n }\n // console.log('--------', options.map(it=>it.selected))\n select?.setOptions(options);\n }\n }\n\n\n // --- Main Select Component ---\n export type SelectAttribute = {\n multiple?: boolean | null; class?: string;\n changeSelected?: (value: (string | null)[]) => void;\n name?: string;\n float?: 'bottom-left' | 'bottom-right' | 'top-left' | 'top-right';\n disableOtherClickClose?: boolean;\n toggle?: (open: boolean) => void;\n disabled?: boolean | null;\n };\n\n export class Select extends ComponentBase<SelectAttribute> implements OnInitRender, OnCreateRender, OnCreateRenderData, OnDestroyRender {\n @attribute({name: 'multiple', converter: v => v !== null}) public multiple = false;\n @attribute({name: 'disabled', converter: v => v !== null}) public disabled = false;\n @attribute({name: 'class', converter: v => (v === '' ? null : v)}) public classAttr: string | null = null;\n @attribute({name: 'name', converter: v => (v === '' ? null : v)}) public name: string | null = null;\n\n // public isOpen = false;\n public selectedValues: (string | null)[] = [];\n public selectedOptions: Option[] = [];\n public value: string | (string | null)[] | null | undefined;\n\n @DomRenderNoProxy private element?: HTMLDetailsElement;\n @DomRenderNoProxy private documentClickSubscription?: Subscription;\n @DomRenderNoProxy private windowBlurSubscription?: Subscription;\n @DomRenderNoProxy public summaryComponent?: Summary;\n @DomRenderNoProxy public selectBodyComponent?: SelectBody;\n private options?: Select.Option[];\n\n constructor(config?: DomRenderConfig) {\n super();\n // console.log('----Select constructor')\n }\n\n get optionComponents(): Option[] {\n return this.getChildren(Option);\n }\n\n onCreateRender() {\n\n }\n\n onCreateRenderData() {\n\n }\n\n onInitRender(param: any, rawSet: RawSet) {\n super.onInitRender(param, rawSet);\n // console.log('select onInitRender', this.multiple)\n\n if (ValidUtils.isBrowser() && this.rawSet?.dataSet.config.window) {\n const detailsElement = this.element;\n\n const window = this.rawSet.dataSet!.config!.window!;\n const document = window.document;\n this.documentClickSubscription = EventUtils.htmlElementEventObservable(document, 'click').subscribe(event => {\n const isSummaryClick = this.getChildren(Summary).some(it => event.target && it.element?.contains(event.target as Node) || it.element === event.target)\n if (!isSummaryClick && this.getAttribute('disableOtherClickClose')) {\n return;\n }\n if (!isSummaryClick && !this.multiple && detailsElement) {\n detailsElement.open = false;\n return;\n }\n if (!isSummaryClick && detailsElement && !detailsElement?.contains(event?.target as Node)) {\n detailsElement.open = false;\n }\n })\n\n this.windowBlurSubscription = WindowUtils.eventObservable(window, 'blur').subscribe(() => {\n if (detailsElement?.open && window.document.activeElement?.tagName === 'IFRAME') {\n detailsElement.open = false;\n }\n });\n }\n }\n\n\n toggle(element: HTMLDetailsElement, event: Event) {\n // console.log('------>', this.disabled, event)\n // if (this.disabled) {\n // event.stopPropagation();\n // event.preventDefault();\n // return;\n // }\n const toggleAttribute = this.getAttribute('toggle');\n if (toggleAttribute) {\n toggleAttribute?.(element.open);\n }\n }\n\n setOptions(options: Option[]) {\n const summaries = this.getChildren(Summary);\n\n this.options = options;\n\n const values = this.options.filter(it => it.selected && !it.disabled).map(it => it.value)\n this.getAttribute('changeSelected')?.(values);\n summaries?.forEach(it => {\n it.setDisabled(this.disabled);\n if (!this.disabled) {\n it.setOptions(options);\n }\n })\n }\n\n onInitDetailsElement(detailsElement: HTMLDetailsElement) {\n // console.log('detailsElement oninit', detailsElement);\n this.element = detailsElement;\n }\n\n onDrThisUnBind() {\n super.onDrThisUnBind();\n this.onDestroyRender();\n }\n\n onDestroyRender() {\n super.onDestroyRender();\n this.documentClickSubscription?.unsubscribe();\n this.windowBlurSubscription?.unsubscribe();\n }\n\n test() {\n console.log('tttttttt')\n }\n }\n}\n\nconst stateComponentFactory = (name: string, type: any) => {\n return (config?: DomRenderRunConfig) =>\n RawSet.createComponentTargetElement({\n name,\n template: '<div dr-if=\"!@this@.hidden\" dr-option-strip=\"true\">#innerHTML#</div>\\n',\n objFactory: (e, o, r2, constructorParam) => DomRender.run({ rootObject: new type(), config })\n });\n};\n\nexport default {\n select: (config?: DomRenderConfig) => {\n return RawSet.createComponentTargetElement({\n name: Select.selector,\n styles:\n '.dr-select-container {\\n' +\n ' /*position: relative;*/\\n' +\n '\\n' +\n '}\\n' +\n '.dr-select-options-container {\\n' +\n ' display: none;\\n' +\n ' position: absolute;\\n' +\n ' top: 100%;\\n' +\n ' left: 0;\\n' +\n ' right: 0;\\n' +\n ' z-index: 10;\\n' +\n '}\\n' +\n '.dr-select-container.is-open .dr-select-options-container {\\n' +\n ' display: block;\\n' +\n '}\\n' +\n 'summary::-webkit-details-marker {\\n' +\n ' display: none;\\n' +\n '}\\n' +\n '/* Floating styles for dr-select-body */\\n' +\n '.dr-select-body-container {\\n' +\n ' position: absolute;\\n' +\n '}\\n' +\n '\\n' +\n '.dr-select-body-bottom-left-container {\\n' +\n ' position: absolute;\\n' +\n ' left: 0;\\n' +\n ' top: 100%;\\n' +\n '}\\n' +\n '\\n' +\n '.dr-select-body-bottom-right-container {\\n' +\n ' position: absolute;\\n' +\n ' right: 0;\\n' +\n ' top: 100%;\\n' +\n '}\\n' +\n '\\n' +\n '.dr-select-body-top-left-container {\\n' +\n ' position: absolute;\\n' +\n ' left: 0;\\n' +\n ' bottom: 100%;\\n' +\n '}\\n' +\n '\\n' +\n '.dr-select-body-top-right-container {\\n' +\n ' position: absolute;\\n' +\n ' right: 0;\\n' +\n ' bottom: 100%;\\n' +\n '}\\n' +\n '\\n' +\n '/* Reset default details/summary styles */\\n' +\n '.dr-select-container details {\\n' +\n ' display: block; /* Ensure it behaves like a block element */\\n' +\n '}\\n' +\n '\\n' +\n '.dr-select-container summary {\\n' +\n ' display: block; /* Ensure it behaves like a block element */\\n' +\n ' list-style: none; /* Remove default marker */\\n' +\n \" cursor: pointer; /* Indicate it's clickable */\\n\" +\n '}\\n' +\n '\\n' +\n '.dr-select-container summary::-webkit-details-marker,\\n' +\n '.dr-select-container summary::marker {\\n' +\n ' display: none; /* Hide marker for Webkit and standard */\\n' +\n '}',\n template:\n '<details dr-class=\"{\\n' +\n \" 'dr-select-container': true,\\n\" +\n \" 'is-open': @this@.isOpen,\\n\" +\n ' [@this@.classAttr]: @this@.classAttr\\n' +\n ' }\" dr-on-init=\"@this@.onInitDetailsElement($element)\" dr-option-complete=\"@this@.test()\" dr-event-toggle=\"@this@.toggle($element, $event)\">\\n' +\n '\\n' +\n ' #innerHTML#\\n' +\n '</details>\\n' +\n '<select hidden=\"hidden\" name=\"${@this@.name}$\" disabled=\"${@this@.disabled ? \\'disabled\\' : null}$\" style=\"width: 1500px; height:500px\" multiple>\\n' +\n ' <option dr-for-of=\"@this@.options\" value=\"${#it#.value}$\" selected=\"${#it#.selected ? \\'selected\\' : null}$\">#it# ${#it#.value}$</option>\\n' +\n '</select',\n objFactory: (e, o, r2, constructorParam) => DomRender.run({ rootObject: new Select.Select(config), config })\n });\n },\n selectSummary: (config?: DomRenderRunConfig) => {\n return RawSet.createComponentTargetElement({\n name: `${Select.selector}-summary`,\n template:\n '<summary dr-class=\"{[@this@.classAttr]: @this@.classAttr}\"\\n' +\n ' dr-on-init=\"@this@.onInitSummaryElement($element, $event)\"\\n' +\n ' dr-event-click=\"@this@.onSummaryClick($element, $event)\"\\n' +\n '>\\n' +\n '#innerHTML#\\n' +\n '</summary>',\n objFactory: (e, o, r2, constructorParam) => DomRender.run({ rootObject: new Select.Summary(), config })\n });\n },\n selectSummaryPlaceholder: stateComponentFactory(`${Select.selector}-summary-placeholder`, Select.SummaryPlaceholder),\n selectSummarySelected: stateComponentFactory(`${Select.selector}-summary-selected`, Select.SummarySelected),\n selectSummaryDisabled: stateComponentFactory(`${Select.selector}-summary-disabled`, Select.SummaryDisabled),\n\n selectBody: (config?: DomRenderRunConfig) => { // New export\n return RawSet.createComponentTargetElement({\n name: `${Select.selector}-body`,\n template: '<div dr-class=\"{[@this@.classAttr]: @this@.classAttr, \\'dr-select-body-container\\': true, [\\'dr-select-body-\\'+@this@.float+\\'-container\\']: @this@.float}\">#innerHTML#</div>',\n objFactory: (e, o, r2, constructorParam) => {\n return DomRender.run({rootObject: new Select.SelectBody(), config: config});\n }\n })\n },\n\n selectOption: (config?: DomRenderRunConfig) => {\n return RawSet.createComponentTargetElement({\n name: `${Select.selector}-option`,\n template:\n '<a dr-class=\"{[@this@.classAttr]: @this@.classAttr}\" dr-event-click=\"@this@.toggleSelected($event)\">#innerHTML#</a>\\n',\n objFactory: (e, o, r2, constructorParam) => DomRender.run({ rootObject: new Select.Option(), config })\n });\n },\n selectOptionSelected: stateComponentFactory(`${Select.selector}-option-selected`, Select.OptionSelected),\n selectOptionUnselected: stateComponentFactory(`${Select.selector}-option-unselected`, Select.OptionUnselected),\n selectOptionDisabled: stateComponentFactory(`${Select.selector}-option-disabled`, Select.OptionDisabled),\n};"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { attribute, ChildrenSet, ComponentBase } from '../ComponentBase';\nimport { DomRender, DomRenderRunConfig } from '../../DomRender';\nimport { RawSet } from '../../rawsets/RawSet';\nimport { OnCreateRenderData } from '../../lifecycle/OnCreateRenderData';\nimport { OnInitRender } from '../../lifecycle/OnInitRender';\nimport { OnDestroyRender } from '../../lifecycle/OnDestroyRender';\nimport { EventUtils } from '@dooboostore/core-web/event/EventUtils';\nimport { type Subscription } from '@dooboostore/core/message/Subscription';\nimport { ValidUtils } from '@dooboostore/core-web/valid/ValidUtils';\nimport { DomRenderNoProxy } from '../../decorators/DomRenderNoProxy';\nimport { OnCreateRender } from '../../lifecycle/OnCreateRender';\nimport { DomRenderConfig } from '../../configs/DomRenderConfig';\nimport { WindowUtils } from '@dooboostore/core-web/window/WindowUtils';\nimport { OnRawSetRenderedOtherData } from 'src/lifecycle';\n\n/** 사용법\n <dr-select class=\"card-select-container\" changeSelected=\"${(data) => @this@.changeSelected(data)}$\"> <!-- multiple attribute optional-->\n <dr-select-summary class=\"card-select-summary-container\">\n <dr-select-summary-placeholder>\n <div class=\"card-select-summary-placeholder-container\">카드사별 사용처 안내 페이지 선택</div>\n </dr-select-summary-placeholder>\n <dr-select-summary-selected>\n <div dr-if=\"@this@.selectedCard\" class=\"card-select-summary-selected-container\">\n <img dr-attr=\"{src:@this@.selectedCard?.iconImg}\"> ${@this@.selectedCard?.name}$\n </div>\n </dr-select-summary-selected>\n </dr-select-summary>\n\n <dr-select-body float=\"bottom-left\" class=\"card-select-body-container\">\n <dr-select-option dr-for-of=\"@this@.cards\" value=\"${#it#.name}$\" selected=\"${#nearForOfIndex# === 0}$\" class=\"card-select-body-option-container\">\n <img dr-attr=\"{src:#it#.iconImg}\"> ${#it#.name}$\n </dr-select-option>\n </dr-select-body>\n </dr-select>\n */\n\nexport namespace Select {\n export const selector = 'dr-select';\n\n // Base for simple hide/show components\n class StateComponent extends ComponentBase {\n public hidden = true;\n public value: string | null = null;\n\n constructor(config: any) {\n super(config);\n }\n\n setValue(value: string | null) {\n this.value = value;\n }\n }\n\n // --- Option Child Components ---\n export class OptionSelected extends StateComponent {\n constructor() {\n super({onlyParentType: Option});\n }\n }\n\n export class OptionUnselected extends StateComponent {\n constructor() {\n super({onlyParentType: Option});\n }\n }\n\n export class OptionDisabled extends StateComponent {\n constructor() {\n super({onlyParentType: Option});\n }\n }\n\n // --- Summary Child Components ---\n export class SummaryPlaceholder extends StateComponent {\n constructor() {\n super({onlyParentType: Summary});\n }\n }\n\n export class SummarySelected extends StateComponent {\n private selectedOptions: Select.Option[] = [];\n\n constructor() {\n super({onlyParentType: Summary});\n }\n\n setOptions(options: Option[] = []) {\n this.selectedOptions = options.filter(it => it.selected);\n }\n }\n\n export class SummaryDisabled extends StateComponent {\n private selectedOptions: Select.Option[] = [];\n\n constructor() {\n super({onlyParentType: Summary});\n }\n\n setOptions(options: Option[] = []) {\n this.selectedOptions = options.filter(it => it.selected);\n }\n }\n\n // --- Select Body Component ---\n export type SelectBodyAttribute = {\n float?: 'bottom-left' | 'bottom-right' | 'top-left' | 'top-right';\n class?: string;\n }\n // --- Option Component ---\n export type OptionAttribute = { value: string; selected?: boolean | null; disabled?: boolean | null; class?: string; };\n\n export class Option extends ComponentBase<OptionAttribute> implements OnInitRender {\n public hidden = true;\n @attribute({name: 'value'}) public value: string | null = null;\n @attribute({name: 'selected', converter: v => v !== null && v === true}) public selected = false;\n @attribute({name: 'disabled', converter: v => v !== null && v === true}) public disabled = false;\n @attribute({name: 'class', converter: v => (v ? v : null)}) public classAttr: string | null = null;\n\n // public status: 'selected' | 'unselected' | 'disabled' = 'unselected';\n\n constructor() {\n super({onlyParentType: SelectBody});\n }\n\n async onInitRender(param: any, rawSet: RawSet) {\n await super.onInitRender(param, rawSet);\n // console.log('-----', this.value, this.selected)\n // this.getElement()?.addEventListener('click', (e) => {\n // e.stopPropagation();\n // if (!this.disabled) {\n // this.getParentThis<Select>().handleOptionClick(this);\n // }\n // });\n this.updateStatus();\n }\n\n // onCreatedThisChild(child: any, data: OnCreateRenderDataParams) {\n // super.onCreatedThisChild(child, data);\n // this.updateStatus();\n // }\n\n // async onRawSetRendered(rawSet:RawSet, otherData:OnRawSetRenderedOtherData):Promise<void>{\n // await super.onRawSetRendered(rawSet, otherData);\n // }\n onCreatedThisChildDebounce(childrenSet: ChildrenSet[]) {\n super.onCreatedThisChildDebounce(childrenSet);\n this.updateStatus();\n }\n\n toggleSelected(event: Event) {\n // console.log('isMultiple', this.isMultiple())\n if (!this.disabled) {\n this.selected = this.isMultiple()? !this.selected : true;\n // this.selected = !this.selected;\n this.updateStatus();\n this.getParentThis<SelectBody>().changeOptionState(this);\n } else {\n event.stopPropagation();\n event.preventDefault();\n }\n }\n\n isMultiple() {\n return this.getParentThis<Select.SelectBody>()?.getParentThis<Select.Select>().multiple;\n }\n\n updateStatus() {\n if (this.disabled) {\n this.getChildren(OptionSelected).forEach(c => {\n c.hidden = true;\n c.setValue(this.value)\n });\n this.getChildren(OptionUnselected).forEach(c => {\n c.hidden = true;\n c.setValue(this.value)\n });\n this.getChildren(OptionDisabled).forEach(c => {\n c.hidden = false;\n c.setValue(this.value)\n });\n return;\n }\n\n if (this.selected) {\n this.getChildren(OptionSelected).forEach(c => {\n c.hidden = false;\n c.setValue(this.value)\n });\n this.getChildren(OptionUnselected).forEach(c => {\n c.hidden = true;\n c.setValue(this.value)\n });\n this.getChildren(OptionDisabled).forEach(c => {\n c.hidden = true;\n c.setValue(this.value)\n });\n }\n\n if (!this.selected) {\n this.getChildren(OptionSelected).forEach(c => {\n c.hidden = true;\n c.setValue(this.value)\n });\n this.getChildren(OptionUnselected).forEach(c => {\n c.hidden = false;\n c.setValue(this.value)\n });\n this.getChildren(OptionDisabled).forEach(c => {\n c.hidden = true;\n c.setValue(this.value)\n });\n }\n }\n }\n\n // --- Summary Component ---\n export class Summary extends ComponentBase implements OnInitRender {\n @attribute({ name: 'class', converter: v => (v === '' ? null : v) }) public classAttr: string | null = null;\n private options: Select.Option[] = [];\n private disabled: boolean = false;\n public element?: HTMLElement;\n\n // constructor() {\n // super({ onlyParentType: Select });\n // }\n\n setDisabled(disabled: boolean) {\n this.disabled = disabled;\n this.getChildren(SummaryPlaceholder).forEach(it => (it.hidden = true));\n this.getChildren(SummarySelected).forEach(it => (it.hidden = true));\n this.getChildren(SummaryDisabled).forEach(it => (it.hidden = false));\n }\n\n setOptions(options: Option[] = []): void {\n this.options = options;\n\n const selectedOptions = this.options.filter(it => it.selected && !it.disabled);\n if (!this.disabled) {\n if (selectedOptions.length > 0) {\n this.getChildren(SummaryPlaceholder).forEach(it => (it.hidden = true));\n this.getChildren(SummarySelected).forEach(c => {\n c.setOptions(options);\n c.hidden = false;\n });\n this.getChildren(SummaryDisabled).forEach(it => (it.hidden = true));\n } else {\n this.getChildren(SummaryDisabled).forEach(it => (it.hidden = true));\n this.getChildren(SummaryPlaceholder).forEach(it => (it.hidden = false));\n this.getChildren(SummarySelected).forEach(c => (c.hidden = true));\n }\n }\n }\n\n async onInitRender(param: any, rawSet: RawSet) {\n await super.onInitRender(param, rawSet);\n // this.getElement()?.addEventListener('click', (e) => {\n // e.stopPropagation();\n // this.getParentThis<Select>().toggle();\n // });\n }\n\n onInitSummaryElement(element: HTMLElement, event: Event) {\n this.element = element;\n }\n\n updateView(hasSelection: boolean) {\n this.getChildren(SummaryPlaceholder).forEach(c => (c.hidden = hasSelection));\n this.getChildren(SummarySelected).forEach(c => (c.hidden = !hasSelection));\n }\n\n // onCreatedThisChild(child: any, data: OnCreateRenderDataParams) {\n // super.onCreatedThisChild(child, data);\n // }\n // async onRawSetRendered(rawSet: RawSet, otherData: OnRawSetRenderedOtherData): Promise<void> {\n // await super.onRawSetRendered(rawSet, otherData);\n // }\n onCreatedThisChildDebounce(childrenSet: ChildrenSet[]) {\n super.onCreatedThisChildDebounce(childrenSet);\n this.updateView(this.getParentThis<Select>()?.selectedValues?.length > 0);\n }\n\n onSummaryClick(element: HTMLElement, event: Event) {\n if (this.getParentThis<Select>()?.disabled) {\n event.stopPropagation();\n event.preventDefault();\n return;\n }\n }\n }\n\n\n export class SelectBody extends ComponentBase<SelectBodyAttribute> {\n @attribute({ name: 'class', converter: v => (v === '' ? null : v) }) public classAttr: string | null = null;\n @attribute({ name: 'float' }) public float: 'bottom-left' | 'bottom-right' | 'top-left' | 'top-right' | null = null;\n\n constructor() {\n super({ onlyParentType: Select });\n }\n\n async onRawSetRendered(rawSet: RawSet, otherData: OnRawSetRenderedOtherData): Promise<void> {\n await super.onRawSetRendered(rawSet, otherData);\n // }\n // onCreatedThisChildDebounce(childrenSet: ChildrenSet[]) {\n // super.onCreatedThisChildDebounce(childrenSet);\n this.changeOptionState();\n }\n\n changeOptionState(option?: Option) {\n const options = this.getChildren(Option);\n const select = this.getParentThis<Select>();\n // console.log('------opti',option, select);\n // // 멀티플이 아닐때에는 마지막 선택된값으로 처리\n if (!select.multiple) {\n // 내가 선택한게 있으면\n if (option && option.selected) {\n options.filter(it => it !== option).forEach(it => {\n it.selected = false;\n it.updateStatus();\n });\n } else {\n const selectedOptions = options.filter(it => it.selected && !it.disabled);\n selectedOptions.forEach((opt, idx) => {\n const isLast = idx === selectedOptions.length - 1;\n if (!isLast) {\n opt.selected = false;\n opt.updateStatus();\n }\n });\n }\n }\n // console.log('--------', options.map(it=>it.selected))\n select?.setOptions(options);\n }\n }\n\n\n // --- Main Select Component ---\n export type SelectAttribute = {\n multiple?: boolean | null; class?: string;\n changeSelected?: (value: (string | null)[]) => void;\n name?: string;\n float?: 'bottom-left' | 'bottom-right' | 'top-left' | 'top-right';\n disableOtherClickClose?: boolean;\n toggle?: (open: boolean) => void;\n disabled?: boolean | null;\n };\n\n export class Select extends ComponentBase<SelectAttribute> implements OnInitRender, OnCreateRender, OnCreateRenderData, OnDestroyRender {\n @attribute({name: 'multiple', converter: v => v !== null}) public multiple = false;\n @attribute({name: 'disabled', converter: v => v !== null}) public disabled = false;\n @attribute({name: 'class', converter: v => (v === '' ? null : v)}) public classAttr: string | null = null;\n @attribute({name: 'name', converter: v => (v === '' ? null : v)}) public name: string | null = null;\n\n // public isOpen = false;\n public selectedValues: (string | null)[] = [];\n public selectedOptions: Option[] = [];\n public value: string | (string | null)[] | null | undefined;\n\n @DomRenderNoProxy private element?: HTMLDetailsElement;\n @DomRenderNoProxy private documentClickSubscription?: Subscription;\n @DomRenderNoProxy private windowBlurSubscription?: Subscription;\n @DomRenderNoProxy public summaryComponent?: Summary;\n @DomRenderNoProxy public selectBodyComponent?: SelectBody;\n private options?: Select.Option[];\n\n constructor(config?: DomRenderConfig) {\n super();\n // console.log('----Select constructor')\n }\n\n get optionComponents(): Option[] {\n return this.getChildren(Option);\n }\n\n onCreateRender() {\n\n }\n\n onCreateRenderData() {\n\n }\n\n async onInitRender(param: any, rawSet: RawSet) {\n await super.onInitRender(param, rawSet);\n // console.log('select onInitRender', this.multiple)\n\n if (ValidUtils.isBrowser() && this.rawSet?.dataSet.config.window) {\n const detailsElement = this.element;\n\n const window = this.rawSet.dataSet!.config!.window!;\n const document = window.document;\n this.documentClickSubscription = EventUtils.htmlElementEventObservable(document, 'click').subscribe(event => {\n const isSummaryClick = this.getChildren(Summary).some(it => event.target && it.element?.contains(event.target as Node) || it.element === event.target)\n if (!isSummaryClick && this.getAttribute('disableOtherClickClose')) {\n return;\n }\n if (!isSummaryClick && !this.multiple && detailsElement) {\n detailsElement.open = false;\n return;\n }\n if (!isSummaryClick && detailsElement && !detailsElement?.contains(event?.target as Node)) {\n detailsElement.open = false;\n }\n })\n\n this.windowBlurSubscription = WindowUtils.eventObservable(window, 'blur').subscribe(() => {\n if (detailsElement?.open && window.document.activeElement?.tagName === 'IFRAME') {\n detailsElement.open = false;\n }\n });\n }\n }\n\n\n toggle(element: HTMLDetailsElement, event: Event) {\n // console.log('------>', this.disabled, event)\n // if (this.disabled) {\n // event.stopPropagation();\n // event.preventDefault();\n // return;\n // }\n const toggleAttribute = this.getAttribute('toggle');\n if (toggleAttribute) {\n toggleAttribute?.(element.open);\n }\n }\n\n setOptions(options: Option[]) {\n const summaries = this.getChildren(Summary);\n\n this.options = options;\n\n const values = this.options.filter(it => it.selected && !it.disabled).map(it => it.value)\n this.getAttribute('changeSelected')?.(values);\n summaries?.forEach(it => {\n it.setDisabled(this.disabled);\n if (!this.disabled) {\n it.setOptions(options);\n }\n })\n }\n\n onInitDetailsElement(detailsElement: HTMLDetailsElement) {\n // console.log('detailsElement oninit', detailsElement);\n this.element = detailsElement;\n }\n\n onDrThisUnBind() {\n super.onDrThisUnBind();\n this.onDestroyRender();\n }\n\n onDestroyRender() {\n super.onDestroyRender();\n this.documentClickSubscription?.unsubscribe();\n this.windowBlurSubscription?.unsubscribe();\n }\n\n test() {\n console.log('tttttttt')\n }\n }\n}\n\nconst stateComponentFactory = (name: string, type: any) => {\n return (config?: DomRenderRunConfig) =>\n RawSet.createComponentTargetElement({\n name,\n template: '<div dr-if=\"!@this@.hidden\" dr-option-strip=\"true\">#innerHTML#</div>\\n',\n objFactory: (e, o, r2, constructorParam) => DomRender.run({ rootObject: new type(), config })\n });\n};\n\nexport default {\n select: (config?: DomRenderConfig) => {\n return RawSet.createComponentTargetElement({\n name: Select.selector,\n styles:\n '.dr-select-container {\\n' +\n ' position: relative;\\n' +\n '\\n' +\n '}\\n' +\n '.dr-select-options-container {\\n' +\n ' display: none;\\n' +\n ' position: absolute;\\n' +\n ' top: 100%;\\n' +\n ' left: 0;\\n' +\n ' right: 0;\\n' +\n ' z-index: 10;\\n' +\n '}\\n' +\n '.dr-select-container.is-open .dr-select-options-container {\\n' +\n ' display: block;\\n' +\n '}\\n' +\n 'summary::-webkit-details-marker {\\n' +\n ' display: none;\\n' +\n '}\\n' +\n '/* Floating styles for dr-select-body */\\n' +\n '.dr-select-body-container {\\n' +\n ' position: absolute;\\n' +\n '}\\n' +\n '\\n' +\n '.dr-select-body-bottom-left-container {\\n' +\n ' position: absolute;\\n' +\n ' left: 0;\\n' +\n ' top: 100%;\\n' +\n '}\\n' +\n '\\n' +\n '.dr-select-body-bottom-right-container {\\n' +\n ' position: absolute;\\n' +\n ' right: 0;\\n' +\n ' top: 100%;\\n' +\n '}\\n' +\n '\\n' +\n '.dr-select-body-top-left-container {\\n' +\n ' position: absolute;\\n' +\n ' left: 0;\\n' +\n ' bottom: 100%;\\n' +\n '}\\n' +\n '\\n' +\n '.dr-select-body-top-right-container {\\n' +\n ' position: absolute;\\n' +\n ' right: 0;\\n' +\n ' bottom: 100%;\\n' +\n '}\\n' +\n '\\n' +\n '/* Reset default details/summary styles */\\n' +\n '.dr-select-container details {\\n' +\n ' display: block; /* Ensure it behaves like a block element */\\n' +\n '}\\n' +\n '\\n' +\n '.dr-select-container summary {\\n' +\n ' display: block; /* Ensure it behaves like a block element */\\n' +\n ' list-style: none; /* Remove default marker */\\n' +\n \" cursor: pointer; /* Indicate it's clickable */\\n\" +\n '}\\n' +\n '\\n' +\n '.dr-select-container summary::-webkit-details-marker,\\n' +\n '.dr-select-container summary::marker {\\n' +\n ' display: none; /* Hide marker for Webkit and standard */\\n' +\n '}',\n template:\n '<details dr-class=\"{\\n' +\n \" 'dr-select-container': true,\\n\" +\n \" 'is-open': @this@.isOpen,\\n\" +\n ' [@this@.classAttr]: @this@.classAttr\\n' +\n ' }\" dr-on-init=\"@this@.onInitDetailsElement($element)\" dr-option-complete=\"@this@.test()\" dr-event-toggle=\"@this@.toggle($element, $event)\">\\n' +\n '\\n' +\n ' #innerHTML#\\n' +\n '</details>\\n' +\n '<select hidden=\"hidden\" name=\"${@this@.name}$\" disabled=\"${@this@.disabled ? \\'disabled\\' : null}$\" style=\"width: 1500px; height:500px\" multiple>\\n' +\n ' <option dr-for-of=\"@this@.options\" value=\"${#it#.value}$\" selected=\"${#it#.selected ? \\'selected\\' : null}$\">#it# ${#it#.value}$</option>\\n' +\n '</select>',\n objFactory: (e, o, r2, constructorParam) => DomRender.run({ rootObject: new Select.Select(config), config })\n });\n },\n selectSummary: (config?: DomRenderRunConfig) => {\n return RawSet.createComponentTargetElement({\n name: `${Select.selector}-summary`,\n template:\n '<summary dr-class=\"{[@this@.classAttr]: @this@.classAttr}\"\\n' +\n ' dr-on-init=\"@this@.onInitSummaryElement($element, $event)\"\\n' +\n ' dr-event-click=\"@this@.onSummaryClick($element, $event)\"\\n' +\n '>\\n' +\n '#innerHTML#\\n' +\n '</summary>',\n objFactory: (e, o, r2, constructorParam) => DomRender.run({ rootObject: new Select.Summary(), config })\n });\n },\n selectSummaryPlaceholder: stateComponentFactory(`${Select.selector}-summary-placeholder`, Select.SummaryPlaceholder),\n selectSummarySelected: stateComponentFactory(`${Select.selector}-summary-selected`, Select.SummarySelected),\n selectSummaryDisabled: stateComponentFactory(`${Select.selector}-summary-disabled`, Select.SummaryDisabled),\n\n selectBody: (config?: DomRenderRunConfig) => { // New export\n return RawSet.createComponentTargetElement({\n name: `${Select.selector}-body`,\n template: '<div dr-class=\"{[@this@.classAttr]: @this@.classAttr, \\'dr-select-body-container\\': true, [\\'dr-select-body-\\'+@this@.float+\\'-container\\']: @this@.float}\">#innerHTML#</div>',\n objFactory: (e, o, r2, constructorParam) => {\n return DomRender.run({rootObject: new Select.SelectBody(), config: config});\n }\n })\n },\n\n selectOption: (config?: DomRenderRunConfig) => {\n return RawSet.createComponentTargetElement({\n name: `${Select.selector}-option`,\n template:\n '<a dr-class=\"{[@this@.classAttr]: @this@.classAttr}\" dr-event-click=\"@this@.toggleSelected($event)\">#innerHTML#</a>\\n',\n objFactory: (e, o, r2, constructorParam) => DomRender.run({ rootObject: new Select.Option(), config })\n });\n },\n selectOptionSelected: stateComponentFactory(`${Select.selector}-option-selected`, Select.OptionSelected),\n selectOptionUnselected: stateComponentFactory(`${Select.selector}-option-unselected`, Select.OptionUnselected),\n selectOptionDisabled: stateComponentFactory(`${Select.selector}-option-disabled`, Select.OptionDisabled),\n};"],
5
+ "mappings": "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",
6
6
  "names": ["Select"]
7
7
  }
@@ -9,8 +9,8 @@ var This;
9
9
  super(...arguments);
10
10
  this.if = null;
11
11
  }
12
- onInitRender(param, rawSet) {
13
- super.onInitRender(param, rawSet);
12
+ async onInitRender(param, rawSet) {
13
+ await super.onInitRender(param, rawSet);
14
14
  }
15
15
  onDestroyRender(data) {
16
16
  super.onDestroyRender(data);
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/components/this/This.ts"],
4
- "sourcesContent": ["import { ComponentBase } from '../ComponentBase';\nimport { DomRender, DomRenderRunConfig } from '../../DomRender';\nimport { RawSet } from '../../rawsets/RawSet';\nimport { OtherData } from '../../lifecycle/OnChangeAttrRender';\nimport { OnInitRender } from '../../lifecycle/OnInitRender';\nimport { ComponentSet } from '../../components/ComponentSet';\nimport { OnDestroyRenderParams } from '../../lifecycle/OnDestroyRender';\nexport namespace This {\n export const selector = 'dr-this';\n export type Attribute = {\n value: ComponentSet;\n if: boolean | null;\n createArguments: any[];\n onCreated?: (value: any) => void;\n onDestroyRender?: () => void;\n }\n\n export class This extends ComponentBase<Attribute> implements OnInitRender {\n private value?: ComponentSet\n private if?: boolean | null = null;\n private createArguments?: any[]\n\n onInitRender(param: any, rawSet: RawSet) {\n super.onInitRender(param, rawSet);\n }\n\n onDestroyRender(data: OnDestroyRenderParams) {\n super.onDestroyRender(data);\n }\n\n onChangeAttrRender(name: string, value: any, other: OtherData) {\n super.onChangeAttrRender(name, value, other);\n if (this.equalsAttributeName(name, 'value')) {\n this.value = value;\n }\n if (this.equalsAttributeName(name, 'if')) {\n this.if = value;\n }\n if (this.equalsAttributeName(name, 'createArguments')) {\n this.createArguments = value;\n }\n }\n\n created(component: any){\n component??=this.value?.obj;\n this.getAttribute('onCreated')?.(component);\n }\n }\n}\n\nexport default {\n this: (config?: DomRenderRunConfig) => {\n return RawSet.createComponentTargetElement({\n name: This.selector,\n template: '<div dr-this=\"@this@.value\" dr-detect-option-if=\"@this@?.value && @this@?.if\" dr-option-strip=\"true\" dr-on-create:arguments=\"@this@.createArguments\" dr-on-create:callback=\"@this@?.created?.($component)\">#innerHTML#</div>',\n objFactory: (e, o, r2, counstructorParam) => {\n return DomRender.run({rootObject: new This.This(...counstructorParam), config: config});\n }\n })\n }\n}\n\n"],
5
- "mappings": "AAAA,SAAS,qBAAqB;AAC9B,SAAS,iBAAqC;AAC9C,SAAS,cAAc;AAKhB,IAAU;AAAA,CAAV,CAAU,UAAV;AACE,EAAM,iBAAW;AAAA,EASjB,MAAMA,cAAa,cAAiD;AAAA,IAApE;AAAA;AAEL,WAAQ,KAAsB;AAAA;AAAA,IAG9B,aAAa,OAAY,QAAgB;AACvC,YAAM,aAAa,OAAO,MAAM;AAAA,IAClC;AAAA,IAEA,gBAAgB,MAA6B;AAC3C,YAAM,gBAAgB,IAAI;AAAA,IAC5B;AAAA,IAEA,mBAAmB,MAAc,OAAY,OAAkB;AAC7D,YAAM,mBAAmB,MAAM,OAAO,KAAK;AAC3C,UAAI,KAAK,oBAAoB,MAAM,OAAO,GAAG;AAC3C,aAAK,QAAQ;AAAA,MACf;AACA,UAAI,KAAK,oBAAoB,MAAM,IAAI,GAAG;AACxC,aAAK,KAAK;AAAA,MACZ;AACA,UAAI,KAAK,oBAAoB,MAAM,iBAAiB,GAAG;AACrD,aAAK,kBAAkB;AAAA,MACzB;AAAA,IACF;AAAA,IAEA,QAAQ,WAAe;AACrB,gCAAY,KAAK,OAAO;AACxB,WAAK,aAAa,WAAW,IAAI,SAAS;AAAA,IAC5C;AAAA,EACF;AA9BO,QAAM,OAAAA;AAAA,GAVE;AA2CjB,IAAO,eAAQ;AAAA,EACb,MAAM,CAAC,WAAgC;AACrC,WAAO,OAAO,6BAA6B;AAAA,MACzC,MAAM,KAAK;AAAA,MACX,UAAU;AAAA,MACV,YAAY,CAAC,GAAG,GAAG,IAAI,sBAAsB;AAC3C,eAAO,UAAU,IAAI,EAAC,YAAY,IAAI,KAAK,KAAK,GAAG,iBAAiB,GAAG,OAAc,CAAC;AAAA,MACxF;AAAA,IACF,CAAC;AAAA,EACH;AACF;",
4
+ "sourcesContent": ["import { ComponentBase } from '../ComponentBase';\nimport { DomRender, DomRenderRunConfig } from '../../DomRender';\nimport { RawSet } from '../../rawsets/RawSet';\nimport { OtherData } from '../../lifecycle/OnChangeAttrRender';\nimport { OnInitRender } from '../../lifecycle/OnInitRender';\nimport { ComponentSet } from '../../components/ComponentSet';\nimport { OnDestroyRenderParams } from '../../lifecycle/OnDestroyRender';\n\nexport namespace This {\n export const selector = 'dr-this';\n export type Attribute = {\n value: ComponentSet;\n if: boolean | null;\n createArguments: any[];\n onCreated?: (value: any) => void;\n onDestroyRender?: () => void;\n };\n\n export class This extends ComponentBase<Attribute> implements OnInitRender {\n private value?: ComponentSet;\n private if?: boolean | null = null;\n private createArguments?: any[];\n\n async onInitRender(param: any, rawSet: RawSet) {\n await super.onInitRender(param, rawSet);\n }\n\n onDestroyRender(data: OnDestroyRenderParams) {\n super.onDestroyRender(data);\n }\n\n onChangeAttrRender(name: string, value: any, other: OtherData) {\n super.onChangeAttrRender(name, value, other);\n if (this.equalsAttributeName(name, 'value')) {\n this.value = value;\n }\n if (this.equalsAttributeName(name, 'if')) {\n this.if = value;\n }\n if (this.equalsAttributeName(name, 'createArguments')) {\n this.createArguments = value;\n }\n }\n\n created(component: any) {\n component ??= this.value?.obj;\n this.getAttribute('onCreated')?.(component);\n }\n }\n}\n\nexport default {\n this: (config?: DomRenderRunConfig) => {\n return RawSet.createComponentTargetElement({\n name: This.selector,\n template:\n '<div dr-this=\"@this@.value\" dr-detect-option-if=\"@this@?.value && @this@?.if\" dr-option-strip=\"true\" dr-on-create:arguments=\"@this@.createArguments\" dr-on-create:callback=\"@this@?.created?.($component)\">#innerHTML#</div>',\n objFactory: (e, o, r2, counstructorParam) => {\n return DomRender.run({ rootObject: new This.This(...counstructorParam), config: config });\n }\n });\n }\n};\n"],
5
+ "mappings": "AAAA,SAAS,qBAAqB;AAC9B,SAAS,iBAAqC;AAC9C,SAAS,cAAc;AAMhB,IAAU;AAAA,CAAV,CAAU,UAAV;AACE,EAAM,iBAAW;AAAA,EASjB,MAAMA,cAAa,cAAiD;AAAA,IAApE;AAAA;AAEL,WAAQ,KAAsB;AAAA;AAAA,IAG9B,MAAM,aAAa,OAAY,QAAgB;AAC7C,YAAM,MAAM,aAAa,OAAO,MAAM;AAAA,IACxC;AAAA,IAEA,gBAAgB,MAA6B;AAC3C,YAAM,gBAAgB,IAAI;AAAA,IAC5B;AAAA,IAEA,mBAAmB,MAAc,OAAY,OAAkB;AAC7D,YAAM,mBAAmB,MAAM,OAAO,KAAK;AAC3C,UAAI,KAAK,oBAAoB,MAAM,OAAO,GAAG;AAC3C,aAAK,QAAQ;AAAA,MACf;AACA,UAAI,KAAK,oBAAoB,MAAM,IAAI,GAAG;AACxC,aAAK,KAAK;AAAA,MACZ;AACA,UAAI,KAAK,oBAAoB,MAAM,iBAAiB,GAAG;AACrD,aAAK,kBAAkB;AAAA,MACzB;AAAA,IACF;AAAA,IAEA,QAAQ,WAAgB;AACtB,gCAAc,KAAK,OAAO;AAC1B,WAAK,aAAa,WAAW,IAAI,SAAS;AAAA,IAC5C;AAAA,EACF;AA9BO,QAAM,OAAAA;AAAA,GAVE;AA2CjB,IAAO,eAAQ;AAAA,EACb,MAAM,CAAC,WAAgC;AACrC,WAAO,OAAO,6BAA6B;AAAA,MACzC,MAAM,KAAK;AAAA,MACX,UACE;AAAA,MACF,YAAY,CAAC,GAAG,GAAG,IAAI,sBAAsB;AAC3C,eAAO,UAAU,IAAI,EAAE,YAAY,IAAI,KAAK,KAAK,GAAG,iBAAiB,GAAG,OAAe,CAAC;AAAA,MAC1F;AAAA,IACF,CAAC;AAAA,EACH;AACF;",
6
6
  "names": ["This"]
7
7
  }
@@ -5,33 +5,35 @@ var Timer;
5
5
  ((_Timer) => {
6
6
  _Timer.selector = "dr-timer";
7
7
  class Timer2 extends ComponentBase {
8
- onInitRender(param, rawSet) {
9
- super.onInitRender(param, rawSet);
10
- console.log("---2", this.getElement()?.isConnected);
8
+ async onInitRender(param, rawSet) {
9
+ await super.onInitRender(param, rawSet);
10
+ this.getAttribute("onCreated")?.(this);
11
11
  }
12
12
  isRunning() {
13
- return this.timeSecond !== void 0;
13
+ return this.value !== void 0;
14
14
  }
15
15
  start() {
16
- const timeSecond = this.getAttribute("timeSecond");
17
- if (timeSecond) {
18
- this.timeSecond = parseInt(timeSecond);
16
+ const timems = this.getAttribute("value");
17
+ if (timems) {
18
+ this.value = parseInt(timems);
19
+ const intervalValue = this.getAttribute("interval") ?? 1e3;
20
+ console.log("int", this.value, intervalValue);
19
21
  this.interval = setInterval(() => {
20
- if (this.timeSecond) {
21
- this.timeSecond--;
22
+ if (this.value) {
23
+ this.value--;
22
24
  } else {
23
25
  clearInterval(this.interval);
24
- this.timeSecond = void 0;
26
+ this.value = void 0;
25
27
  this.interval = void 0;
26
28
  }
27
- }, 1e3);
29
+ }, intervalValue);
28
30
  }
29
31
  }
30
32
  stop() {
31
33
  if (this.interval) {
32
34
  clearInterval(this.interval);
33
35
  this.interval = void 0;
34
- this.timeSecond = void 0;
36
+ this.value = void 0;
35
37
  }
36
38
  }
37
39
  onChangeAttrRender(name, val, other) {
@@ -48,7 +50,7 @@ var Timer;
48
50
  _Timer.Timer = Timer2;
49
51
  })(Timer || (Timer = {}));
50
52
  var Timer_default = {
51
- choose: (config) => {
53
+ timer: (config) => {
52
54
  return RawSet.createComponentTargetElement({
53
55
  name: `${Timer.selector}`,
54
56
  template: "#innerHTML#",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/components/timer/Timer.ts"],
4
- "sourcesContent": ["import { ComponentBase } from '../ComponentBase';\nimport { DomRender, DomRenderRunConfig } from '../../DomRender';\nimport { RawSet } from '../../rawsets/RawSet';\nimport { OtherData } from '../../lifecycle/OnChangeAttrRender';\nimport { OnDestroyRenderParams } from '../../lifecycle/OnDestroyRender';\n\n\nexport namespace Timer {\n export const selector = 'dr-timer';\n export type Attribute = {\n timeSecond?: string;\n }\n\n // class RadioBase extends ComponentBase<Attribute> {\n // public hidden = true;\n //\n // }\n\n // @Component({\n // template: '<div dr-if=\"!@this@.hidden\" dr-strip=\"true\">#innerHTML#</div>',\n // styles: '',\n // selector: `${selector}.Checked`\n // })\n // export class RadioChecked extends RadioBase {\n // public name = 'Checked';\n //\n // constructor() {\n // super({ onlyParentType: Radio });\n // }\n // }\n //\n // @Component({\n // template: '<div dr-if=\"!@this@.hidden\" dr-strip=\"true\">#innerHTML#</div>',\n // styles: '',\n // selector: `${selector}.UnChecked`\n // })\n // export class UnChecked extends RadioBase {\n // public name = 'unChecked';\n //\n // constructor() {\n // super({ onlyParentType: Radio });\n // }\n // }\n\n // @Component({\n // template: '#innerHTML#',\n // selector: `${selector}`,\n // noStrip: true\n // })\n export class Timer extends ComponentBase<Attribute> {\n private interval?: any;\n private timeSecond?: number;\n\n\n onInitRender(param: any, rawSet: RawSet) {\n super.onInitRender(param, rawSet);\n console.log('---2', this.getElement()?.isConnected)\n // const element = this.getElement();\n // if(element){\n // (element as any).component = this;\n // }\n }\n\n isRunning() {\n return this.timeSecond !== undefined;\n }\n\n start() {\n const timeSecond = this.getAttribute('timeSecond');\n if (timeSecond) {\n this.timeSecond = parseInt(timeSecond);\n this.interval = setInterval(() => {\n // console.log('--------->',this.timeSecond)\n if (this.timeSecond) {\n this.timeSecond--;\n } else {\n clearInterval(this.interval);\n this.timeSecond = undefined;\n this.interval = undefined;\n }\n }, 1000)\n }\n }\n\n\n stop() {\n if (this.interval) {\n clearInterval(this.interval);\n this.interval = undefined;\n this.timeSecond = undefined;\n }\n }\n\n onChangeAttrRender(name: string, val: any, other: OtherData) {\n super.onChangeAttrRender(name, val, other);\n console.log('-----', name, val, this.getElement())\n }\n\n onDestroyRender(data: OnDestroyRenderParams) {\n super.onDestroyRender(data);\n if (this.interval){\n clearInterval(this.interval);\n }\n }\n }\n}\n\n\nexport default {\n choose: (config?: DomRenderRunConfig) => {\n return RawSet.createComponentTargetElement({\n name: `${Timer.selector}`,\n template: '#innerHTML#',\n objFactory: (e,o,r2, counstructorParam) => {\n return DomRender.run({rootObject: new Timer.Timer(...counstructorParam), config: config});\n }\n })\n },\n}"],
5
- "mappings": "AAAA,SAAS,qBAAqB;AAC9B,SAAS,iBAAqC;AAC9C,SAAS,cAAc;AAKhB,IAAU;AAAA,CAAV,CAAU,WAAV;AACE,EAAM,kBAAW;AAAA,EAyCjB,MAAMA,eAAc,cAAyB;AAAA,IAKlD,aAAa,OAAY,QAAgB;AACvC,YAAM,aAAa,OAAO,MAAM;AAChC,cAAQ,IAAI,QAAQ,KAAK,WAAW,GAAG,WAAW;AAAA,IAKpD;AAAA,IAEA,YAAY;AACV,aAAO,KAAK,eAAe;AAAA,IAC7B;AAAA,IAEA,QAAQ;AACN,YAAM,aAAa,KAAK,aAAa,YAAY;AACjD,UAAI,YAAY;AACd,aAAK,aAAa,SAAS,UAAU;AACrC,aAAK,WAAW,YAAY,MAAM;AAEhC,cAAI,KAAK,YAAY;AACnB,iBAAK;AAAA,UACP,OAAO;AACL,0BAAc,KAAK,QAAQ;AAC3B,iBAAK,aAAa;AAClB,iBAAK,WAAW;AAAA,UAClB;AAAA,QACF,GAAG,GAAI;AAAA,MACT;AAAA,IACF;AAAA,IAGA,OAAO;AACL,UAAI,KAAK,UAAU;AACjB,sBAAc,KAAK,QAAQ;AAC3B,aAAK,WAAW;AAChB,aAAK,aAAa;AAAA,MACpB;AAAA,IACF;AAAA,IAEA,mBAAmB,MAAc,KAAU,OAAkB;AAC3D,YAAM,mBAAmB,MAAM,KAAK,KAAK;AACzC,cAAQ,IAAI,SAAS,MAAM,KAAK,KAAK,WAAW,CAAC;AAAA,IACnD;AAAA,IAEA,gBAAgB,MAA6B;AAC3C,YAAM,gBAAgB,IAAI;AAC1B,UAAI,KAAK,UAAS;AAChB,sBAAc,KAAK,QAAQ;AAAA,MAC7B;AAAA,IACF;AAAA,EACF;AAvDO,SAAM,QAAAA;AAAA,GA1CE;AAqGjB,IAAO,gBAAQ;AAAA,EACb,QAAQ,CAAC,WAAgC;AACvC,WAAO,OAAO,6BAA6B;AAAA,MACzC,MAAM,GAAG,MAAM,QAAQ;AAAA,MACvB,UAAU;AAAA,MACV,YAAY,CAAC,GAAE,GAAE,IAAI,sBAAsB;AACzC,eAAO,UAAU,IAAI,EAAC,YAAY,IAAI,MAAM,MAAM,GAAG,iBAAiB,GAAG,OAAc,CAAC;AAAA,MAC1F;AAAA,IACF,CAAC;AAAA,EACH;AACF;",
4
+ "sourcesContent": ["import { ComponentBase } from '../ComponentBase';\nimport { DomRender, DomRenderRunConfig } from '../../DomRender';\nimport { RawSet } from '../../rawsets/RawSet';\nimport { OtherData } from '../../lifecycle/OnChangeAttrRender';\nimport { OnDestroyRenderParams } from '../../lifecycle/OnDestroyRender';\n\nexport namespace Timer {\n export const selector = 'dr-timer';\n export type Attribute = {\n value?: string;\n interval?: number;\n onCreated?: (timer: Timer) => void;\n };\n export class Timer extends ComponentBase<Attribute> {\n private interval?: any;\n private value?: number;\n\n async onInitRender(param: any, rawSet: RawSet) {\n await super.onInitRender(param, rawSet);\n this.getAttribute('onCreated')?.(this);\n // console.log('---2', this.getElement()?.isConnected)\n // const element = this.getElement();\n // if(element){\n // (element as any).component = this;\n // }\n }\n\n isRunning() {\n return this.value !== undefined;\n }\n\n start() {\n const timems = this.getAttribute('value');\n if (timems) {\n this.value = parseInt(timems);\n const intervalValue = this.getAttribute('interval') ?? 1000;\n console.log('int', this.value, intervalValue);\n this.interval = setInterval(() => {\n // console.log('--------->', this.value);\n if (this.value) {\n this.value--;\n } else {\n clearInterval(this.interval);\n this.value = undefined;\n this.interval = undefined;\n }\n }, intervalValue);\n }\n }\n\n stop() {\n if (this.interval) {\n clearInterval(this.interval);\n this.interval = undefined;\n this.value = undefined;\n }\n }\n\n onChangeAttrRender(name: string, val: any, other: OtherData) {\n super.onChangeAttrRender(name, val, other);\n console.log('-----', name, val, this.getElement());\n }\n\n onDestroyRender(data: OnDestroyRenderParams) {\n super.onDestroyRender(data);\n if (this.interval) {\n clearInterval(this.interval);\n }\n }\n }\n}\n\nexport default {\n timer: (config?: DomRenderRunConfig) => {\n return RawSet.createComponentTargetElement({\n name: `${Timer.selector}`,\n template: '#innerHTML#',\n objFactory: (e, o, r2, counstructorParam) => {\n return DomRender.run({ rootObject: new Timer.Timer(...counstructorParam), config: config });\n }\n });\n }\n};"],
5
+ "mappings": "AAAA,SAAS,qBAAqB;AAC9B,SAAS,iBAAqC;AAC9C,SAAS,cAAc;AAIhB,IAAU;AAAA,CAAV,CAAU,WAAV;AACE,EAAM,kBAAW;AAAA,EAMjB,MAAMA,eAAc,cAAyB;AAAA,IAIlD,MAAM,aAAa,OAAY,QAAgB;AAC7C,YAAM,MAAM,aAAa,OAAO,MAAM;AACtC,WAAK,aAAa,WAAW,IAAI,IAAI;AAAA,IAMvC;AAAA,IAEA,YAAY;AACV,aAAO,KAAK,UAAU;AAAA,IACxB;AAAA,IAEA,QAAQ;AACN,YAAM,SAAS,KAAK,aAAa,OAAO;AACxC,UAAI,QAAQ;AACV,aAAK,QAAQ,SAAS,MAAM;AAC5B,cAAM,gBAAgB,KAAK,aAAa,UAAU,KAAK;AACvD,gBAAQ,IAAI,OAAO,KAAK,OAAO,aAAa;AAC5C,aAAK,WAAW,YAAY,MAAM;AAEhC,cAAI,KAAK,OAAO;AACd,iBAAK;AAAA,UACP,OAAO;AACL,0BAAc,KAAK,QAAQ;AAC3B,iBAAK,QAAQ;AACb,iBAAK,WAAW;AAAA,UAClB;AAAA,QACF,GAAG,aAAa;AAAA,MAClB;AAAA,IACF;AAAA,IAEA,OAAO;AACL,UAAI,KAAK,UAAU;AACjB,sBAAc,KAAK,QAAQ;AAC3B,aAAK,WAAW;AAChB,aAAK,QAAQ;AAAA,MACf;AAAA,IACF;AAAA,IAEA,mBAAmB,MAAc,KAAU,OAAkB;AAC3D,YAAM,mBAAmB,MAAM,KAAK,KAAK;AACzC,cAAQ,IAAI,SAAS,MAAM,KAAK,KAAK,WAAW,CAAC;AAAA,IACnD;AAAA,IAEA,gBAAgB,MAA6B;AAC3C,YAAM,gBAAgB,IAAI;AAC1B,UAAI,KAAK,UAAU;AACjB,sBAAc,KAAK,QAAQ;AAAA,MAC7B;AAAA,IACF;AAAA,EACF;AAxDO,SAAM,QAAAA;AAAA,GAPE;AAkEjB,IAAO,gBAAQ;AAAA,EACb,OAAO,CAAC,WAAgC;AACtC,WAAO,OAAO,6BAA6B;AAAA,MACzC,MAAM,GAAG,MAAM,QAAQ;AAAA,MACvB,UAAU;AAAA,MACV,YAAY,CAAC,GAAG,GAAG,IAAI,sBAAsB;AAC3C,eAAO,UAAU,IAAI,EAAE,YAAY,IAAI,MAAM,MAAM,GAAG,iBAAiB,GAAG,OAAe,CAAC;AAAA,MAC5F;AAAA,IACF,CAAC;AAAA,EACH;AACF;",
6
6
  "names": ["Timer"]
7
7
  }
@@ -1,3 +1,4 @@
1
+ import { ValidUtils } from "@dooboostore/core/valid/ValidUtils";
1
2
  const DomRenderNoProxyKey = "DomRender:NoProxy";
2
3
  const DomRenderNoProxy = (target, propertyKey) => {
3
4
  if (propertyKey === void 0) {
@@ -13,7 +14,7 @@ const getDomRenderNoProxy = (target, propertyKey) => {
13
14
  return Reflect.getMetadata(DomRenderNoProxyKey, target, propertyKey);
14
15
  };
15
16
  const isDomRenderNoProxy = (target, propertyKey) => {
16
- return getDomRenderNoProxy(target, propertyKey) === true;
17
+ return ValidUtils.isNullOrUndefined(target) || getDomRenderNoProxy(target, propertyKey) === true;
17
18
  };
18
19
  export {
19
20
  DomRenderNoProxy,
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/decorators/DomRenderNoProxy.ts"],
4
- "sourcesContent": ["export const DomRenderNoProxyKey = 'DomRender:NoProxy'\nexport const DomRenderNoProxy = (target: any, propertyKey?: string | symbol) => {\n // \uD074\uB798\uC2A4 \uB370\uCF54\uB808\uC774\uD130\uB85C \uC0AC\uC6A9\uB41C \uACBD\uC6B0\n if (propertyKey === undefined) {\n // target\uC740 \uD074\uB798\uC2A4 \uC0DD\uC131\uC790\n Reflect.defineMetadata(DomRenderNoProxyKey, true, target);\n return;\n }\n\n // \uD504\uB85C\uD37C\uD2F0 \uB370\uCF54\uB808\uC774\uD130\uB85C \uC0AC\uC6A9\uB41C \uACBD\uC6B0\n // target\uC740 \uD504\uB85C\uD1A0\uD0C0\uC785, propertyKey\uB294 \uD504\uB85C\uD37C\uD2F0 \uC774\uB984\n Reflect.defineMetadata(DomRenderNoProxyKey, true, target, propertyKey);\n};\n\nexport const getDomRenderNoProxy = (target: any, propertyKey?: string | symbol) => {\n // if (ValidUtils.isNotNullUndefined(target)) {\n // \uD074\uB798\uC2A4 \uB370\uCF54\uB808\uC774\uD130\n if (propertyKey === undefined) {\n return Reflect.getMetadata(DomRenderNoProxyKey, target);\n }\n // \uD504\uB85C\uD37C\uD2F0 \uB370\uCF54\uB808\uC774\uD130\n return Reflect.getMetadata(DomRenderNoProxyKey, target, propertyKey);\n // } else {\n // return undefined;\n // }\n}\n\nexport const isDomRenderNoProxy = (target: any, propertyKey?: string | symbol) => {\n return getDomRenderNoProxy(target, propertyKey) === true;\n}"],
5
- "mappings": "AAAO,MAAM,sBAAsB;AAC5B,MAAM,mBAAmB,CAAC,QAAa,gBAAkC;AAE5E,MAAI,gBAAgB,QAAW;AAE7B,YAAQ,eAAe,qBAAqB,MAAM,MAAM;AACxD;AAAA,EACF;AAIA,UAAQ,eAAe,qBAAqB,MAAM,QAAQ,WAAW;AACzE;AAEO,MAAM,sBAAsB,CAAC,QAAa,gBAAkC;AAG/E,MAAI,gBAAgB,QAAW;AAC7B,WAAO,QAAQ,YAAY,qBAAqB,MAAM;AAAA,EACxD;AAEA,SAAO,QAAQ,YAAY,qBAAqB,QAAQ,WAAW;AAIvE;AAEO,MAAM,qBAAqB,CAAC,QAAa,gBAAkC;AAChF,SAAO,oBAAoB,QAAQ,WAAW,MAAM;AACtD;",
4
+ "sourcesContent": ["import { ValidUtils } from '@dooboostore/core/valid/ValidUtils';\n\nexport const DomRenderNoProxyKey = 'DomRender:NoProxy'\nexport const DomRenderNoProxy = (target: any, propertyKey?: string | symbol) => {\n // \uD074\uB798\uC2A4 \uB370\uCF54\uB808\uC774\uD130\uB85C \uC0AC\uC6A9\uB41C \uACBD\uC6B0\n if (propertyKey === undefined) {\n // target\uC740 \uD074\uB798\uC2A4 \uC0DD\uC131\uC790\n Reflect.defineMetadata(DomRenderNoProxyKey, true, target);\n return;\n }\n\n // \uD504\uB85C\uD37C\uD2F0 \uB370\uCF54\uB808\uC774\uD130\uB85C \uC0AC\uC6A9\uB41C \uACBD\uC6B0\n // target\uC740 \uD504\uB85C\uD1A0\uD0C0\uC785, propertyKey\uB294 \uD504\uB85C\uD37C\uD2F0 \uC774\uB984\n Reflect.defineMetadata(DomRenderNoProxyKey, true, target, propertyKey);\n};\n\nexport const getDomRenderNoProxy = (target: any, propertyKey?: string | symbol) => {\n // if (ValidUtils.isNotNullUndefined(target)) {\n // \uD074\uB798\uC2A4 \uB370\uCF54\uB808\uC774\uD130\n if (propertyKey === undefined) {\n return Reflect.getMetadata(DomRenderNoProxyKey, target);\n }\n // \uD504\uB85C\uD37C\uD2F0 \uB370\uCF54\uB808\uC774\uD130\n return Reflect.getMetadata(DomRenderNoProxyKey, target, propertyKey);\n // } else {\n // return undefined;\n // }\n}\n\nexport const isDomRenderNoProxy = (target: any, propertyKey?: string | symbol) => {\n return ValidUtils.isNullOrUndefined(target) || getDomRenderNoProxy(target, propertyKey) === true;\n}"],
5
+ "mappings": "AAAA,SAAS,kBAAkB;AAEpB,MAAM,sBAAsB;AAC5B,MAAM,mBAAmB,CAAC,QAAa,gBAAkC;AAE5E,MAAI,gBAAgB,QAAW;AAE7B,YAAQ,eAAe,qBAAqB,MAAM,MAAM;AACxD;AAAA,EACF;AAIA,UAAQ,eAAe,qBAAqB,MAAM,QAAQ,WAAW;AACzE;AAEO,MAAM,sBAAsB,CAAC,QAAa,gBAAkC;AAG/E,MAAI,gBAAgB,QAAW;AAC7B,WAAO,QAAQ,YAAY,qBAAqB,MAAM;AAAA,EACxD;AAEA,SAAO,QAAQ,YAAY,qBAAqB,QAAQ,WAAW;AAIvE;AAEO,MAAM,qBAAqB,CAAC,QAAa,gBAAkC;AAChF,SAAO,WAAW,kBAAkB,MAAM,KAAK,oBAAoB,QAAQ,WAAW,MAAM;AAC9F;",
6
6
  "names": []
7
7
  }
@@ -337,7 +337,13 @@ const _EventManager = class _EventManager {
337
337
  this.procAttr(childNodes, _EventManager.normalAttrMapAttrName, (it, attribute) => {
338
338
  const map = new Map(JSON.parse(attribute));
339
339
  map.forEach((v, k) => {
340
- const data = ScriptUtils.evaluate(`const $element = this.element; return ${v} `, Object.assign(obj, {
340
+ const variablePaths = v.variablePaths;
341
+ let targetScript = v.originalAttrValue;
342
+ variablePaths.forEach((it2) => {
343
+ let r = ObjectUtils.Path.toOptionalChainPath(it2.inner);
344
+ targetScript = targetScript.replaceAll(it2.origin, `\${${r}}`);
345
+ });
346
+ const data = ObjectUtils.Script.evaluate(`const $element = this.element; return ${"`" + targetScript + "`"} `, Object.assign(obj, {
341
347
  __render: Object.freeze({
342
348
  element: it,
343
349
  attribute: ElementUtils.getAttributeToObject(it)
@@ -527,7 +533,7 @@ const _EventManager = class _EventManager {
527
533
  });
528
534
  }
529
535
  getValue(obj, name, bindObj) {
530
- let r = ScriptUtils.evaluateReturn(name, obj);
536
+ let r = ObjectUtils.Script.evaluateReturn(name, obj);
531
537
  if (typeof r === "function") {
532
538
  r = r.bind(bindObj ?? obj);
533
539
  }
@@ -629,6 +635,7 @@ _EventManager.VARNAMES = [_EventManager.SCRIPTS_VARNAME, _EventManager.FAG_VARNA
629
635
  _EventManager.WINDOW_EVENT_POPSTATE = "popstate";
630
636
  _EventManager.WINDOW_EVENT_RESIZE = "resize";
631
637
  _EventManager.WINDOW_EVENTS = [_EventManager.WINDOW_EVENT_POPSTATE, _EventManager.WINDOW_EVENT_RESIZE];
638
+ _EventManager.noDetectAttr = [_EventManager.normalAttrMapAttrName];
632
639
  _EventManager.attrNames = [
633
640
  _EventManager.valueAttrName,
634
641
  _EventManager.checkedAttrName,
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/events/EventManager.ts"],
4
- "sourcesContent": ["import { DomRenderConfig } from '../configs/DomRenderConfig';\nimport { ScriptUtils } from '@dooboostore/core-web/script/ScriptUtils';\nimport { ElementUtils } from '@dooboostore/core-web/element/ElementUtils';\nimport { Range } from '../iterators/Range';\nimport { DomRenderFinalProxy } from '../types/Types';\nimport { getDomRenderConfig } from '../DomRenderProxy';\nimport { ObjectUtils } from '@dooboostore/core/object/ObjectUtils';\n\ntype HandlerInfo = {\n element: HTMLElement;\n attr: string;\n type: 'link' | 'event' | 'event-param';\n priority: number;\n property?: string; // for link type\n};\n\nexport class EventManager {\n public static readonly attrPrefix = 'dr-';\n public readonly eventNames = [\n 'click', 'mousedown', 'mouseup', 'dblclick', 'mouseover', 'mouseout', 'mousemove', 'mouseenter', 'mouseleave', 'contextmenu',\n 'keyup', 'keydown', 'keypress', 'toggle',\n 'change', 'input', 'submit', 'resize', 'focus', 'blur',\n 'close', 'cancel'\n ];\n\n private readonly delegatableEventMap: { [key: string]: string } = {\n mouseleave: 'mouseout',\n mouseenter: 'mouseover',\n focus: 'focusin',\n blur: 'focusout',\n };\n private readonly directAttachEvents = new Set(['close']);\n\n public static ownerVariablePathAttrName = EventManager.attrPrefix + 'owner-variable-path';\n\n public static readonly eventParam = EventManager.attrPrefix + 'event';\n public static readonly onInitAttrName = EventManager.attrPrefix + 'on-init';\n public static readonly valueAttrName = EventManager.attrPrefix + 'value';\n public static readonly checkedAttrName = EventManager.attrPrefix + 'checked';\n public static readonly selectedAttrName = EventManager.attrPrefix + 'selected';\n public static readonly readonlyAttrName = EventManager.attrPrefix + 'readonly';\n public static readonly disabledAttrName = EventManager.attrPrefix + 'disabled';\n public static readonly hiddenAttrName = EventManager.attrPrefix + 'hidden';\n public static readonly requiredAttrName = EventManager.attrPrefix + 'required';\n public static readonly openAttrName = EventManager.attrPrefix + 'open';\n\n // link\uB294 \uC4F0\uC9C0 \uC54A\uB294\uAC78 \uCD94\uCC9C\uD55C\uB2E4 \uB77C\uC774\uD504 \uC0AC\uC774\uD074 \uAF2C\uC778\uB2E4 \uB2E4\uB978 \uD504\uB808\uC784\uC6CC\uD06C\uC5D0\uC11C\uB3C4 \uC591\uBC29\uD5A5\uC740 \uC9C0\uC591 \uD55C\uB2E4\n public static linkAttrs = [\n {name: EventManager.attrPrefix + 'value-link', property: 'value', event: 'input'},\n {name: EventManager.attrPrefix + 'hidden-link', property: 'value', event: 'input'},\n {name: EventManager.attrPrefix + 'required-link', property: 'value', event: 'input'},\n {name: EventManager.attrPrefix + 'checked-link', property: 'checked', event: 'change'},\n {name: EventManager.attrPrefix + 'open-link', property: 'open', event: 'toggle'},\n ]\n // @ts-ignore \uD569\uC131\uC774\uBCA4\uD2B8(Synthetic) \uCC98\uB9AC\uD558\uBA74\uC11C \uC758\uBBF8\uAC00 \uC5C6\uC5B4\uC84C\uB2E4\n public static readonly linkTargetMapAttrName = EventManager.attrPrefix + 'link-variables';\n\n public static readonly onRenderedInitAttrName = EventManager.attrPrefix + 'on-rendered-init';\n\n public static readonly attrAttrName = EventManager.attrPrefix + 'attr';\n public static readonly normalAttrMapAttrName = EventManager.attrPrefix + 'normal-attr-map';\n public static readonly styleAttrName = EventManager.attrPrefix + 'style';\n public static readonly classAttrName = EventManager.attrPrefix + 'class';\n\n public static readonly VALUE_VARNAME = '$value';\n public static readonly SCRIPTS_VARNAME = '$scripts';\n public static readonly FAG_VARNAME = '$fag';\n public static readonly RAWSET_VARNAME = '$rawSet';\n public static readonly RENDER_VARNAME = '$render';\n public static readonly NEAR_THIS_VARNAME = '$nearThis';\n public static readonly PARENT_THIS_VARNAME = '$parentThis';\n public static readonly ROOT_OBJECT_VARNAME = '$rootObject';\n public static readonly SCRIPT_UTILS_VARNAME = '$scriptUtils';\n public static readonly RANGE_VARNAME = '$range';\n public static readonly ROUTER_VARNAME = '$router';\n public static readonly INNER_HTML_VARNAME = '$innerHTML';\n public static readonly ELEMENT_VARNAME = '$element';\n public static readonly TARGET_VARNAME = '$target';\n public static readonly EVENT_VARNAME = '$event';\n public static readonly COMPONENT_VARNAME = '$component';\n public static readonly INNERHTML_VARNAME = '$innerHTML';\n public static readonly ATTRIBUTE_VARNAME = '$attribute';\n public static readonly CREATOR_META_DATA_VARNAME = '$creatorMetaData';\n public static readonly PARENT_THIS_PATH_VARNAME = '$parentPath';\n public static readonly CURRENT_THIS_VARNAME = '$currentThis';\n public static readonly CURRENT_THIS_PATH_VARNAME = '$currentThisPath';\n public static readonly NEAR_THIS_PATH_VARNAME = '$nearThisPath';\n public static readonly VARNAMES = [EventManager.SCRIPTS_VARNAME, EventManager.FAG_VARNAME, EventManager.RAWSET_VARNAME, EventManager.RANGE_VARNAME, EventManager.ROUTER_VARNAME, EventManager.ELEMENT_VARNAME, EventManager.TARGET_VARNAME, EventManager.EVENT_VARNAME, EventManager.COMPONENT_VARNAME, EventManager.INNERHTML_VARNAME, EventManager.ATTRIBUTE_VARNAME, EventManager.ATTRIBUTE_VARNAME, EventManager.CREATOR_META_DATA_VARNAME, EventManager.PARENT_THIS_PATH_VARNAME, EventManager.PARENT_THIS_VARNAME];\n\n public static readonly WINDOW_EVENT_POPSTATE = 'popstate';\n public static readonly WINDOW_EVENT_RESIZE = 'resize';\n public static readonly WINDOW_EVENTS = [EventManager.WINDOW_EVENT_POPSTATE, EventManager.WINDOW_EVENT_RESIZE];\n public static readonly attrNames = [\n EventManager.valueAttrName,\n EventManager.checkedAttrName,\n EventManager.selectedAttrName,\n EventManager.readonlyAttrName,\n EventManager.disabledAttrName,\n EventManager.hiddenAttrName,\n EventManager.requiredAttrName,\n EventManager.openAttrName,\n EventManager.attrAttrName,\n EventManager.normalAttrMapAttrName,\n EventManager.styleAttrName,\n EventManager.classAttrName,\n EventManager.attrPrefix + 'window-event-' + EventManager.WINDOW_EVENT_POPSTATE,\n EventManager.attrPrefix + 'window-event-' + EventManager.WINDOW_EVENT_RESIZE,\n EventManager.onInitAttrName,\n ...EventManager.linkAttrs.map(it => it.name),\n this.eventParam\n ];\n readonly bindScript = `\n const ${EventManager.VALUE_VARNAME} = this.__render.value;\n const ${EventManager.SCRIPTS_VARNAME} = this.__render.scripts;\n const ${EventManager.RANGE_VARNAME} = this.__render.range;\n const ${EventManager.ROUTER_VARNAME} = this.__render.router;\n const ${EventManager.ATTRIBUTE_VARNAME} = this.__render.attribute;\n const ${EventManager.ELEMENT_VARNAME} = this.__render.element;\n const ${EventManager.COMPONENT_VARNAME} = this.__render.element.component;\n const ${EventManager.TARGET_VARNAME} = this.__render.target;\n const ${EventManager.EVENT_VARNAME} = this.__render.event;\n `;\n\n constructor(private window: Window) {\n this.eventNames.forEach(it => {\n EventManager.attrNames.push(EventManager.attrPrefix + 'event-' + it);\n });\n EventManager.attrNames.push(EventManager.onRenderedInitAttrName);\n\n if (typeof window !== 'undefined') {\n EventManager.WINDOW_EVENTS.forEach(eventName => {\n window?.addEventListener(eventName, (event) => {\n const targetAttr = `dr-window-event-${eventName}`;\n document.querySelectorAll(`[${targetAttr}]`).forEach(it => {\n const script = it.getAttribute(targetAttr);\n if (script) {\n const obj = this.findComponentInstance(it as HTMLElement);\n const config = getDomRenderConfig(obj);\n ScriptUtils.evaluate(`${this.bindScript} ${script} `, this.createExecutionContext(event, it as HTMLElement, obj, config));\n }\n });\n });\n });\n\n const rootElement = this.window.document;\n const listeningEvents = new Set<string>();\n this.eventNames.forEach(eventName => {\n if (this.directAttachEvents.has(eventName)) {\n return;\n }\n const delegatedEventName = this.delegatableEventMap[eventName] || eventName;\n\n if (listeningEvents.has(delegatedEventName)) {\n return;\n }\n listeningEvents.add(delegatedEventName);\n rootElement.addEventListener(delegatedEventName, this.handleEvent.bind(this), true);\n });\n }\n }\n\n private handleEvent(event: Event) {\n const handlers = this.collectHandlers(event);\n // console.log('handlers', handlers, event);\n for (const handler of handlers) {\n if (event.cancelBubble) {\n break;\n }\n\n const componentInstance = this.findComponentInstance(handler.element);\n if (!componentInstance) {\n continue;\n }\n // console.log('executeHandler', event,handler,componentInstance)\n this.executeHandler(event, handler, componentInstance);\n }\n }\n\n private collectHandlers(event: Event): HandlerInfo[] {\n const handlers: HandlerInfo[] = [];\n const root = this.window.document;\n if (!root) return handlers;\n\n const initialTarget = event.target as Node;\n let currentTarget: HTMLElement | null = (initialTarget.nodeType === 1)\n ? (initialTarget as HTMLElement)\n : initialTarget.parentElement;\n const collectedElements = new Set<HTMLElement>();\n\n const eventMap: { [key: string]: string } = {\n mouseout: 'mouseleave',\n mouseover: 'mouseenter',\n focusout: 'blur',\n focusin: 'focus'\n };\n const mappedEventName = eventMap[event.type] || event.type;\n\n while (currentTarget) {\n if (collectedElements.has(currentTarget)) {\n break;\n }\n\n // Priority 1: Link attributes\n const matchingLinkAttr = EventManager.linkAttrs.find(la => la.event === mappedEventName && currentTarget?.hasAttribute(la.name));\n if (matchingLinkAttr) {\n handlers.push({\n element: currentTarget,\n attr: matchingLinkAttr.name,\n type: 'link',\n priority: 1,\n property: matchingLinkAttr.property\n });\n }\n\n // Priority 2: dr-event-* attributes\n const eventAttr = `${EventManager.attrPrefix}event-${mappedEventName}`;\n if (currentTarget.hasAttribute(eventAttr)) {\n handlers.push({\n element: currentTarget,\n attr: eventAttr,\n type: 'event',\n priority: 2\n });\n }\n\n // Priority 3: dr-event with params\n const eventParamAttr = EventManager.eventParam;\n if (currentTarget.hasAttribute(eventParamAttr)) {\n const bindEvents = currentTarget.getAttribute(`${eventParamAttr}:bind`);\n if (bindEvents && bindEvents.split(',').map(s => s.trim()).includes(mappedEventName)) {\n handlers.push({\n element: currentTarget,\n attr: eventParamAttr,\n type: 'event-param',\n priority: 3\n });\n }\n }\n\n collectedElements.add(currentTarget);\n\n if (currentTarget === root.documentElement) {\n break;\n }\n\n currentTarget = currentTarget.parentElement;\n }\n\n return handlers.sort((a, b) => a.priority - b.priority);\n }\n\n private findComponentInstance(element: HTMLElement | null): any {\n let current = element;\n const root = this.window.document;\n while (current) {\n if ((current as any).obj) {\n return (current as any).obj;\n }\n if (current === root.documentElement) {\n break;\n }\n current = current.parentElement;\n }\n return this.window;\n }\n\n private createExecutionContext(event: Event, element: HTMLElement, componentInstance: any, config: DomRenderConfig | undefined, extraVars = {}) {\n // console.log('---------->', config?.eventVariables)\n return Object.assign(componentInstance, {\n __render: Object.freeze({\n event,\n element,\n target: event.target,\n attribute: ElementUtils.getAttributeToObject(element),\n router: config?.router,\n range: Range.range,\n scripts: EventManager.setBindProperty(config?.scripts, componentInstance),\n ...config?.eventVariables,\n ...extraVars\n })\n });\n }\n\n private executeHandler(event: Event, handler: HandlerInfo, componentInstance: any) {\n const {element, type, attr} = handler;\n const config = getDomRenderConfig(componentInstance);\n\n switch (type) {\n case 'link':\n const varName = element.getAttribute(attr);\n if (!varName || !handler.property) return;\n\n if (attr.includes('leave') || attr.includes('enter') || attr.includes('focus') || attr.includes('blur')) {\n const relatedTarget = (event as MouseEvent).relatedTarget as Node;\n if (relatedTarget && element.contains(relatedTarget)) {\n return;\n }\n }\n\n const ownerVariablePath = element.getAttribute(EventManager.ownerVariablePathAttrName);\n let bindObj = componentInstance;\n if (ownerVariablePath) {\n bindObj = ScriptUtils.evaluateReturn(ownerVariablePath, componentInstance);\n }\n\n const mapScript = element.getAttribute(`${attr}:map`);\n let value = (element as any)[handler.property];\n\n if (mapScript) {\n const context = this.createExecutionContext(event, element, bindObj, config, {value});\n value = ScriptUtils.evaluate(`return ${mapScript}`, context);\n }\n\n if (typeof this.getValue(componentInstance, varName, bindObj) === 'function') {\n this.getValue(componentInstance, varName, bindObj)(value, event);\n } else {\n this.setValue(componentInstance, varName, value);\n }\n break;\n\n case 'event':\n const script = element.getAttribute(attr);\n if (!script) return;\n\n if (attr.endsWith('mouseleave') || attr.endsWith('mouseenter') || attr.endsWith('blur') || attr.endsWith('focus')) {\n const relatedTarget = (event as MouseEvent).relatedTarget as Node;\n if (relatedTarget && element.contains(relatedTarget)) {\n return;\n }\n }\n\n const context = this.createExecutionContext(event, element, componentInstance, config);\n const filterScript = element.getAttribute(`${attr}:filter`);\n let filter = true;\n // \uAC1C\uBC1C\uC790\uAC00 \uC0AC\uC6A9\uC911\uC5D0 \uBB38\uC81C\uAC00 \uBC1C\uC0DD\uB420(\uB514\uBC84\uAE45) \uBC84\uADF8\uB97C \uC720\uBC1C\uD560\uC218\uC788\uB294 \uAE30\uB2A5 \uD750\uB984\uC81C\uC5B4\uAC00 \uC548\uB420\uC218\uC788\uC5B4 \uAE30\uB2A5\uC744 \uC81C\uAC70\uD55C\uB2E4.\n // if (filterScript) {\n // filter = ScriptUtils.eval<boolean>(`${this.getBindScript(config)} return ${filterScript}`, context) ?? false;\n // }\n\n if (filter) {\n ScriptUtils.evaluate(`${this.getBindScript(config)} ${script}`, context);\n }\n\n // \uAC1C\uBC1C\uC790\uAC00 \uC0AC\uC6A9\uC911\uC5D0 \uBB38\uC81C\uAC00 \uBC1C\uC0DD\uB420(\uB514\uBC84\uAE45) \uBC84\uADF8\uB97C \uC720\uBC1C\uD560\uC218\uC788\uB294 \uAE30\uB2A5 \uD750\uB984\uC81C\uC5B4\uAC00 \uC548\uB420\uC218\uC788\uC5B4 \uAE30\uB2A5\uC744 \uC81C\uAC70\uD55C\uB2E4.\n // const hasDispatch = element.hasAttribute(`${attr}:dispatch`);\n // if (hasDispatch) {\n // element.dispatchEvent(new Event(event.type));\n // }\n break;\n\n case 'event-param':\n const paramScript = element.getAttribute(attr);\n if (!paramScript) return;\n\n if (attr.endsWith('mouseleave') || attr.endsWith('mouseenter') || attr.endsWith('blur') || attr.endsWith('focus')) {\n const relatedTarget = (event as MouseEvent).relatedTarget as Node;\n if (relatedTarget && element.contains(relatedTarget)) {\n return;\n }\n }\n\n const attributes = ElementUtils.getAttributeToObject(element);\n const params = {} as any;\n const prefix = attr + ':';\n Object.entries(attributes).filter(([k, v]) => k.startsWith(prefix)).forEach(([k, v]) => {\n params[k.slice(prefix.length)] = v;\n });\n\n const paramContext = this.createExecutionContext(event, element, componentInstance, config, {params});\n ScriptUtils.evaluate(`${this.getBindScript(config)} ${paramScript}`, paramContext);\n break;\n }\n }\n\n public findAttrElements(fragment: DocumentFragment | Element, config?: DomRenderConfig): Set<Element> {\n const elements = new Set<Element>();\n const addAttributes = config?.applyEvents?.map(it => it.attrName) ?? [];\n addAttributes.concat([...EventManager.attrNames]).forEach(attrName => {\n fragment?.querySelectorAll(`[${attrName}]`).forEach(it => {\n elements.add(it);\n });\n });\n return elements;\n }\n\n public applyEvent(obj: any, childNodes: Set<ChildNode> | Set<Element>, config?: DomRenderConfig) {\n childNodes.forEach(node => {\n if (node.nodeType === 1) {\n (node as any).obj = obj;\n }\n });\n\n this.procAttr<HTMLInputElement>(childNodes, EventManager.valueAttrName, (it, attribute) => {\n const script = attribute;\n if (script) {\n const data = ScriptUtils.evaluateReturn(script, obj);\n if (it.value !== data) {\n it.value = data;\n }\n }\n });\n this.procAttr<HTMLInputElement>(childNodes, EventManager.checkedAttrName, (it, attribute) => {\n const script = attribute;\n if (script) {\n const data = ScriptUtils.evaluateReturn(script, obj);\n if (it.checked!== data) {\n it.checked = data;\n }\n }\n });\n this.procAttr<HTMLOptionElement>(childNodes, EventManager.selectedAttrName, (it, attribute) => {\n const script = attribute;\n if (script) {\n const data = ScriptUtils.evaluateReturn(script, obj);\n if (it.selected!== data) {\n it.selected = data;\n }\n }\n });\n this.procAttr<HTMLInputElement>(childNodes, EventManager.readonlyAttrName, (it, attribute) => {\n const script = attribute;\n if (script) {\n const data = ScriptUtils.evaluateReturn(script, obj);\n if (it.readOnly!== data) {\n it.readOnly = data;\n }\n }\n });\n this.procAttr<HTMLInputElement>(childNodes, EventManager.disabledAttrName, (it, attribute) => {\n const script = attribute;\n if (script) {\n const data = ScriptUtils.evaluateReturn(script, obj);\n if (it.disabled!== data) {\n it.disabled = data;\n }\n }\n });\n this.procAttr<HTMLElement>(childNodes, EventManager.hiddenAttrName, (it, attribute) => {\n const script = attribute;\n if (script) {\n const data = ScriptUtils.evaluateReturn(script, obj);\n if (it.hidden!== data) {\n it.hidden = data;\n }\n }\n });\n this.procAttr<HTMLInputElement>(childNodes, EventManager.requiredAttrName, (it, attribute) => {\n const script = attribute;\n if (script) {\n const data = ScriptUtils.evaluateReturn(script, obj);\n if (it.required!== data) {\n it.required = data;\n }\n }\n });\n this.procAttr<HTMLDialogElement>(childNodes, EventManager.openAttrName, (it, attribute) => {\n const script = attribute;\n if (script) {\n const data = ScriptUtils.evaluateReturn(script, obj);\n if (it.open!== data) {\n it.open = data;\n }\n }\n });\n\n this.procAttr(childNodes, EventManager.normalAttrMapAttrName, (it, attribute) => {\n const map = new Map<string, string>(JSON.parse(attribute));\n map.forEach((v, k) => {\n const data = ScriptUtils.evaluate(`const $element = this.element; return ${v} `, Object.assign(obj, {\n __render: Object.freeze({\n element: it,\n attribute: ElementUtils.getAttributeToObject(it)\n })\n }));\n if (data === null) {\n it.removeAttribute(k);\n } else {\n it.setAttribute(k, data);\n }\n });\n });\n\n EventManager.WINDOW_EVENTS.forEach(it => {\n this.procAttr<HTMLInputElement>(childNodes, EventManager.attrPrefix + 'window-event-' + it, (it, attribute) => {\n (it as any).obj = obj;\n });\n });\n\n EventManager.linkAttrs.forEach(linkInfo => {\n this.procAttr<HTMLElement>(childNodes, linkInfo.name, (it, varName) => {\n\n // console.log('ink??????????')\n if (varName) {\n const ownerVariablePathName = it.getAttribute(EventManager.ownerVariablePathAttrName);\n const mapScript = it.getAttribute(`${linkInfo.name}:map`);\n let bindObj = obj;\n if (ownerVariablePathName) {\n bindObj = ScriptUtils.evaluateReturn(ownerVariablePathName, obj);\n }\n const getValue = this.getValue(obj, varName, bindObj);\n if (typeof getValue === 'function' && getValue) {\n let setValue = (it as any)[linkInfo.property];\n if (mapScript) {\n setValue = ScriptUtils.evaluate(`${this.getBindScript(config)} return ${mapScript}`, Object.assign(bindObj, {__render: Object.freeze({element: it, target: bindObj, range: Range.range, value: setValue, scripts: EventManager.setBindProperty(config?.scripts, obj), ...config?.eventVariables})}));\n }\n getValue(setValue);\n } else if (getValue) {\n let setValue = getValue;\n if (mapScript) {\n setValue = ScriptUtils.evaluate(`${this.getBindScript(config)} return ${mapScript}`, Object.assign(bindObj, {__render: Object.freeze({element: it, target: bindObj, range: Range.range, value: setValue, scripts: EventManager.setBindProperty(config?.scripts, obj), ...config?.eventVariables})}));\n }\n if (setValue === null) {\n it.removeAttribute(linkInfo.property);\n } else {\n (it as any)[linkInfo.property] = setValue;\n }\n } else if (getValue === undefined) {\n this.setValue(obj, varName, (it as any)[linkInfo.property]);\n }\n }\n });\n });\n\n this.directAttachEvents.forEach(eventName => {\n const attr = `${EventManager.attrPrefix}event-${eventName}`;\n this.procAttr<HTMLElement>(childNodes, attr, (element, script) => {\n const handler = (event: Event) => {\n const componentInstance = this.findComponentInstance(element);\n if (!componentInstance) return;\n\n const context = this.createExecutionContext(event, element, componentInstance, config);\n const filterScript = element.getAttribute(`${attr}:filter`);\n let filter = true;\n if (filterScript) {\n filter = ScriptUtils.evaluate<boolean>(`${this.getBindScript(config)} return ${filterScript}`, context) ?? false;\n }\n if (filter) {\n ScriptUtils.evaluate(`${this.getBindScript(config)} ${script}`, context);\n }\n };\n element.addEventListener(eventName, handler);\n // TODO: Add logic to remove this listener when the element is destroyed.\n });\n });\n\n this.procAttr<HTMLElement>(childNodes, EventManager.onInitAttrName, (it, attribute) => {\n let script = attribute;\n if (script) {\n script = 'return ' + script;\n }\n if (script) {\n ScriptUtils.evaluate(`${this.getBindScript(config)}; ${script} `, Object.assign(obj, {\n __render: Object.freeze({\n element: it,\n attribute: ElementUtils.getAttributeToObject(it),\n ...config?.eventVariables\n })\n }));\n }\n });\n\n this.onRenderedEvent(obj, childNodes, config);\n this.changeVar(obj, childNodes, undefined, config);\n const elements = Array.from(childNodes).filter(it => it.nodeType === 1).map(it => it as Element);\n elements.forEach(it => {\n config?.applyEvents?.filter(ta => it.getAttribute(ta.attrName) !== null).forEach(ta => ta.callBack(it, it.getAttribute(ta.attrName)!, obj));\n });\n }\n\n public onRenderedEvent(obj: any, childNodes: Set<ChildNode> | Set<Element> | Node[], config?: DomRenderConfig) {\n this.procAttr<HTMLInputElement>(childNodes, EventManager.onRenderedInitAttrName, (it, attribute) => {\n if (!it.isConnected) {\n return;\n }\n let script = attribute;\n if (script) {\n script = 'return ' + script;\n }\n if (script) {\n ScriptUtils.evaluate(`${this.getBindScript(config)}; ${script} `, Object.assign(obj, {\n __render: Object.freeze({\n element: it,\n attribute: ElementUtils.getAttributeToObject(it),\n ...config?.eventVariables\n })\n }));\n }\n });\n }\n\n public changeVar(obj: any, elements: Set<Element> | Set<ChildNode>, varName?: string, config?: DomRenderConfig) {\n // console.log('changeVar', obj, elements, varName)\n this.procAttr(elements, EventManager.styleAttrName, (it, attribute) => {\n let script = attribute;\n if (script) {\n script = 'return ' + script;\n }\n if (EventManager.isUsingThisVar(script, varName) || varName === undefined) {\n const data = ScriptUtils.evaluate(`const $element = this.__render.element; ${script} `, Object.assign(obj, {\n __render: Object.freeze({\n element: it,\n attribute: ElementUtils.getAttributeToObject(it)\n })\n }));\n if (typeof data === 'string') {\n it.setAttribute('style', data);\n } else if (Array.isArray(data)) {\n it.setAttribute('style', data.join(';'));\n } else {\n for (const [key, value] of Object.entries(data)) {\n if (it instanceof HTMLElement) {\n (it.style as any)[key] = String(value);\n }\n }\n }\n }\n });\n\n this.procAttr(elements, EventManager.classAttrName, (it, attribute) => {\n let script = attribute;\n if (script) {\n script = 'return ' + script;\n }\n if (EventManager.isUsingThisVar(script, varName) || varName === undefined) {\n const data = ScriptUtils.evaluate(`const $element = this.element; ${script} `, Object.assign(obj, {\n __render: Object.freeze({\n element: it,\n attribute: ElementUtils.getAttributeToObject(it)\n })\n }));\n\n if (typeof data === 'string') {\n it.setAttribute('class', data);\n } else if (Array.isArray(data)) {\n it.setAttribute('class', data.join(' '));\n } else {\n for (const [key, value] of Object.entries(data)) {\n if (it instanceof HTMLElement) {\n if (value) {\n it.classList.add(key);\n } else {\n it.classList.remove(key);\n }\n }\n }\n }\n }\n });\n }\n\n public procAttr<T extends Element = Element>(elements: Set<Element> | Set<ChildNode> | Node[] = new Set(), attrName: string, callBack: (h: T, value: string, attributes: any) => void) {\n const sets = new Set<Element>();\n elements.forEach(it => {\n if (!it) {\n return;\n }\n if (it.nodeType === 1) {\n const e = it as Element;\n sets.add(e);\n e.querySelectorAll<T>(`[${attrName}]`).forEach(it => {\n sets.add(it);\n });\n }\n });\n sets.forEach(it => {\n const attr = it.getAttribute(attrName);\n const attrs = ElementUtils.getAttributeToObject(it);\n if (attr) {\n callBack(it as T, attr, attrs);\n }\n });\n }\n\n public getValue<T = any>(obj: any, name: string, bindObj?: any): T {\n let r = ScriptUtils.evaluateReturn(name, obj);\n if (typeof r === 'function') {\n r = r.bind(bindObj ?? obj);\n }\n return r;\n }\n\n public setValue(obj: any, name: string, value?: any) {\n name = name.replaceAll('this.', 'this.this.');\n ScriptUtils.evaluate(`${name} = this.value;`, {\n this: obj,\n value: value\n });\n }\n\n public static isUsingThisVar(raws: string | null | undefined, varName: string | null | undefined): boolean {\n if (varName && raws) {\n if (varName.startsWith('this.')) {\n varName = varName.replace(/this\\./, '');\n }\n // TODO: \uD6D4.. \uAF2D\uD544\uC694\uD55C\uAC00..? \uD2B8\uB9AC\uAC70\uB420\uB54C \uC2A4\uD06C\uB9BD\uD2B8\uBCC0\uC218 \uAE4C\uC9C0 \uAC10\uC9C0\uD574\uC57C\uB420\uAE4C?\n EventManager.VARNAMES.forEach(it => {\n // raws = raws!.replace(RegExp(it.replace('$', '\\\\$'), 'g'), `this?.___${it}`);\n raws = raws!.replace(RegExp(it.replace('$', '\\\\$'), 'g'), `this.___${it}`);\n });\n const variablePaths = ObjectUtils.Path.detectPathFromScript(raws ?? '', {excludeThis: true});\n return variablePaths.has(varName);\n }\n return false;\n }\n\n public static setBindProperty(scripts: { [p: string]: any } | undefined, obj: any): { [p: string]: any } | undefined {\n if (scripts) {\n const newScripts = Object.assign({}, scripts);\n for (const [key, value] of Object.entries(newScripts)) {\n if (typeof value === 'function') {\n newScripts[key] = value.bind(obj);\n }\n }\n return newScripts;\n }\n }\n\n getBindScript(config?: DomRenderConfig) {\n if (config?.eventVariables) {\n const bindScript = Object.entries(config.eventVariables).filter(([key, value]) => !this.bindScript.includes(`const ${key}`)).map(([key, value]) => {\n return `const ${key} = this.__render.${key};`;\n }).join(';');\n return this.bindScript + '' + bindScript;\n } else {\n return this.bindScript;\n }\n }\n}\n\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { DomRenderConfig } from '../configs/DomRenderConfig';\nimport { ScriptUtils } from '@dooboostore/core-web/script/ScriptUtils';\nimport { ElementUtils } from '@dooboostore/core-web/element/ElementUtils';\nimport { Range } from '../iterators/Range';\nimport { DomRenderFinalProxy } from '../types/Types';\nimport { getDomRenderConfig } from '../DomRenderProxy';\nimport { ObjectUtils } from '@dooboostore/core/object/ObjectUtils';\n\ntype HandlerInfo = {\n element: HTMLElement;\n attr: string;\n type: 'link' | 'event' | 'event-param';\n priority: number;\n property?: string; // for link type\n};\nexport type NormalAttrDataType = {\n originalAttrValue: string;\n variablePaths: {origin: string, inner: string}[];\n}\nexport class EventManager {\n public static readonly attrPrefix = 'dr-';\n public readonly eventNames = [\n 'click', 'mousedown', 'mouseup', 'dblclick', 'mouseover', 'mouseout', 'mousemove', 'mouseenter', 'mouseleave', 'contextmenu',\n 'keyup', 'keydown', 'keypress', 'toggle',\n 'change', 'input', 'submit', 'resize', 'focus', 'blur',\n 'close', 'cancel'\n ];\n\n private readonly delegatableEventMap: { [key: string]: string } = {\n mouseleave: 'mouseout',\n mouseenter: 'mouseover',\n focus: 'focusin',\n blur: 'focusout',\n };\n private readonly directAttachEvents = new Set(['close']);\n\n public static ownerVariablePathAttrName = EventManager.attrPrefix + 'owner-variable-path';\n\n public static readonly eventParam = EventManager.attrPrefix + 'event';\n public static readonly onInitAttrName = EventManager.attrPrefix + 'on-init';\n public static readonly valueAttrName = EventManager.attrPrefix + 'value';\n public static readonly checkedAttrName = EventManager.attrPrefix + 'checked';\n public static readonly selectedAttrName = EventManager.attrPrefix + 'selected';\n public static readonly readonlyAttrName = EventManager.attrPrefix + 'readonly';\n public static readonly disabledAttrName = EventManager.attrPrefix + 'disabled';\n public static readonly hiddenAttrName = EventManager.attrPrefix + 'hidden';\n public static readonly requiredAttrName = EventManager.attrPrefix + 'required';\n public static readonly openAttrName = EventManager.attrPrefix + 'open';\n\n // link\uB294 \uC4F0\uC9C0 \uC54A\uB294\uAC78 \uCD94\uCC9C\uD55C\uB2E4 \uB77C\uC774\uD504 \uC0AC\uC774\uD074 \uAF2C\uC778\uB2E4 \uB2E4\uB978 \uD504\uB808\uC784\uC6CC\uD06C\uC5D0\uC11C\uB3C4 \uC591\uBC29\uD5A5\uC740 \uC9C0\uC591 \uD55C\uB2E4\n public static linkAttrs = [\n {name: EventManager.attrPrefix + 'value-link', property: 'value', event: 'input'},\n {name: EventManager.attrPrefix + 'hidden-link', property: 'value', event: 'input'},\n {name: EventManager.attrPrefix + 'required-link', property: 'value', event: 'input'},\n {name: EventManager.attrPrefix + 'checked-link', property: 'checked', event: 'change'},\n {name: EventManager.attrPrefix + 'open-link', property: 'open', event: 'toggle'},\n ]\n // @ts-ignore \uD569\uC131\uC774\uBCA4\uD2B8(Synthetic) \uCC98\uB9AC\uD558\uBA74\uC11C \uC758\uBBF8\uAC00 \uC5C6\uC5B4\uC84C\uB2E4\n public static readonly linkTargetMapAttrName = EventManager.attrPrefix + 'link-variables';\n\n public static readonly onRenderedInitAttrName = EventManager.attrPrefix + 'on-rendered-init';\n\n public static readonly attrAttrName = EventManager.attrPrefix + 'attr';\n public static readonly normalAttrMapAttrName = EventManager.attrPrefix + 'normal-attr-map';\n public static readonly styleAttrName = EventManager.attrPrefix + 'style';\n public static readonly classAttrName = EventManager.attrPrefix + 'class';\n\n public static readonly VALUE_VARNAME = '$value';\n public static readonly SCRIPTS_VARNAME = '$scripts';\n public static readonly FAG_VARNAME = '$fag';\n public static readonly RAWSET_VARNAME = '$rawSet';\n public static readonly RENDER_VARNAME = '$render';\n public static readonly NEAR_THIS_VARNAME = '$nearThis';\n public static readonly PARENT_THIS_VARNAME = '$parentThis';\n public static readonly ROOT_OBJECT_VARNAME = '$rootObject';\n public static readonly SCRIPT_UTILS_VARNAME = '$scriptUtils';\n public static readonly RANGE_VARNAME = '$range';\n public static readonly ROUTER_VARNAME = '$router';\n public static readonly INNER_HTML_VARNAME = '$innerHTML';\n public static readonly ELEMENT_VARNAME = '$element';\n public static readonly TARGET_VARNAME = '$target';\n public static readonly EVENT_VARNAME = '$event';\n public static readonly COMPONENT_VARNAME = '$component';\n public static readonly INNERHTML_VARNAME = '$innerHTML';\n public static readonly ATTRIBUTE_VARNAME = '$attribute';\n public static readonly CREATOR_META_DATA_VARNAME = '$creatorMetaData';\n public static readonly PARENT_THIS_PATH_VARNAME = '$parentPath';\n public static readonly CURRENT_THIS_VARNAME = '$currentThis';\n public static readonly CURRENT_THIS_PATH_VARNAME = '$currentThisPath';\n public static readonly NEAR_THIS_PATH_VARNAME = '$nearThisPath';\n public static readonly VARNAMES = [EventManager.SCRIPTS_VARNAME, EventManager.FAG_VARNAME, EventManager.RAWSET_VARNAME, EventManager.RANGE_VARNAME, EventManager.ROUTER_VARNAME, EventManager.ELEMENT_VARNAME, EventManager.TARGET_VARNAME, EventManager.EVENT_VARNAME, EventManager.COMPONENT_VARNAME, EventManager.INNERHTML_VARNAME, EventManager.ATTRIBUTE_VARNAME, EventManager.ATTRIBUTE_VARNAME, EventManager.CREATOR_META_DATA_VARNAME, EventManager.PARENT_THIS_PATH_VARNAME, EventManager.PARENT_THIS_VARNAME];\n\n public static readonly WINDOW_EVENT_POPSTATE = 'popstate';\n public static readonly WINDOW_EVENT_RESIZE = 'resize';\n public static readonly WINDOW_EVENTS = [EventManager.WINDOW_EVENT_POPSTATE, EventManager.WINDOW_EVENT_RESIZE];\n public static readonly noDetectAttr = [EventManager.normalAttrMapAttrName]\n public static readonly attrNames = [\n EventManager.valueAttrName,\n EventManager.checkedAttrName,\n EventManager.selectedAttrName,\n EventManager.readonlyAttrName,\n EventManager.disabledAttrName,\n EventManager.hiddenAttrName,\n EventManager.requiredAttrName,\n EventManager.openAttrName,\n EventManager.attrAttrName,\n EventManager.normalAttrMapAttrName,\n EventManager.styleAttrName,\n EventManager.classAttrName,\n EventManager.attrPrefix + 'window-event-' + EventManager.WINDOW_EVENT_POPSTATE,\n EventManager.attrPrefix + 'window-event-' + EventManager.WINDOW_EVENT_RESIZE,\n EventManager.onInitAttrName,\n ...EventManager.linkAttrs.map(it => it.name),\n this.eventParam\n ];\n readonly bindScript = `\n const ${EventManager.VALUE_VARNAME} = this.__render.value;\n const ${EventManager.SCRIPTS_VARNAME} = this.__render.scripts;\n const ${EventManager.RANGE_VARNAME} = this.__render.range;\n const ${EventManager.ROUTER_VARNAME} = this.__render.router;\n const ${EventManager.ATTRIBUTE_VARNAME} = this.__render.attribute;\n const ${EventManager.ELEMENT_VARNAME} = this.__render.element;\n const ${EventManager.COMPONENT_VARNAME} = this.__render.element.component;\n const ${EventManager.TARGET_VARNAME} = this.__render.target;\n const ${EventManager.EVENT_VARNAME} = this.__render.event;\n `;\n\n constructor(private window: Window) {\n this.eventNames.forEach(it => {\n EventManager.attrNames.push(EventManager.attrPrefix + 'event-' + it);\n });\n EventManager.attrNames.push(EventManager.onRenderedInitAttrName);\n\n if (typeof window !== 'undefined') {\n EventManager.WINDOW_EVENTS.forEach(eventName => {\n window?.addEventListener(eventName, (event) => {\n const targetAttr = `dr-window-event-${eventName}`;\n document.querySelectorAll(`[${targetAttr}]`).forEach(it => {\n const script = it.getAttribute(targetAttr);\n if (script) {\n const obj = this.findComponentInstance(it as HTMLElement);\n const config = getDomRenderConfig(obj);\n ScriptUtils.evaluate(`${this.bindScript} ${script} `, this.createExecutionContext(event, it as HTMLElement, obj, config));\n }\n });\n });\n });\n\n const rootElement = this.window.document;\n const listeningEvents = new Set<string>();\n this.eventNames.forEach(eventName => {\n if (this.directAttachEvents.has(eventName)) {\n return;\n }\n const delegatedEventName = this.delegatableEventMap[eventName] || eventName;\n\n if (listeningEvents.has(delegatedEventName)) {\n return;\n }\n listeningEvents.add(delegatedEventName);\n rootElement.addEventListener(delegatedEventName, this.handleEvent.bind(this), true);\n });\n }\n }\n\n private handleEvent(event: Event) {\n const handlers = this.collectHandlers(event);\n // console.log('handlers', handlers, event);\n for (const handler of handlers) {\n if (event.cancelBubble) {\n break;\n }\n\n const componentInstance = this.findComponentInstance(handler.element);\n if (!componentInstance) {\n continue;\n }\n // console.log('executeHandler', event,handler,componentInstance)\n this.executeHandler(event, handler, componentInstance);\n }\n }\n\n private collectHandlers(event: Event): HandlerInfo[] {\n const handlers: HandlerInfo[] = [];\n const root = this.window.document;\n if (!root) return handlers;\n\n const initialTarget = event.target as Node;\n let currentTarget: HTMLElement | null = (initialTarget.nodeType === 1)\n ? (initialTarget as HTMLElement)\n : initialTarget.parentElement;\n const collectedElements = new Set<HTMLElement>();\n\n const eventMap: { [key: string]: string } = {\n mouseout: 'mouseleave',\n mouseover: 'mouseenter',\n focusout: 'blur',\n focusin: 'focus'\n };\n const mappedEventName = eventMap[event.type] || event.type;\n\n while (currentTarget) {\n if (collectedElements.has(currentTarget)) {\n break;\n }\n\n // Priority 1: Link attributes\n const matchingLinkAttr = EventManager.linkAttrs.find(la => la.event === mappedEventName && currentTarget?.hasAttribute(la.name));\n if (matchingLinkAttr) {\n handlers.push({\n element: currentTarget,\n attr: matchingLinkAttr.name,\n type: 'link',\n priority: 1,\n property: matchingLinkAttr.property\n });\n }\n\n // Priority 2: dr-event-* attributes\n const eventAttr = `${EventManager.attrPrefix}event-${mappedEventName}`;\n if (currentTarget.hasAttribute(eventAttr)) {\n handlers.push({\n element: currentTarget,\n attr: eventAttr,\n type: 'event',\n priority: 2\n });\n }\n\n // Priority 3: dr-event with params\n const eventParamAttr = EventManager.eventParam;\n if (currentTarget.hasAttribute(eventParamAttr)) {\n const bindEvents = currentTarget.getAttribute(`${eventParamAttr}:bind`);\n if (bindEvents && bindEvents.split(',').map(s => s.trim()).includes(mappedEventName)) {\n handlers.push({\n element: currentTarget,\n attr: eventParamAttr,\n type: 'event-param',\n priority: 3\n });\n }\n }\n\n collectedElements.add(currentTarget);\n\n if (currentTarget === root.documentElement) {\n break;\n }\n\n currentTarget = currentTarget.parentElement;\n }\n\n return handlers.sort((a, b) => a.priority - b.priority);\n }\n\n private findComponentInstance(element: HTMLElement | null): any {\n let current = element;\n const root = this.window.document;\n while (current) {\n if ((current as any).obj) {\n return (current as any).obj;\n }\n if (current === root.documentElement) {\n break;\n }\n current = current.parentElement;\n }\n return this.window;\n }\n\n private createExecutionContext(event: Event, element: HTMLElement, componentInstance: any, config: DomRenderConfig | undefined, extraVars = {}) {\n // console.log('---------->', config?.eventVariables)\n return Object.assign(componentInstance, {\n __render: Object.freeze({\n event,\n element,\n target: event.target,\n attribute: ElementUtils.getAttributeToObject(element),\n router: config?.router,\n range: Range.range,\n scripts: EventManager.setBindProperty(config?.scripts, componentInstance),\n ...config?.eventVariables,\n ...extraVars\n })\n });\n }\n\n private executeHandler(event: Event, handler: HandlerInfo, componentInstance: any) {\n const {element, type, attr} = handler;\n const config = getDomRenderConfig(componentInstance);\n\n switch (type) {\n case 'link':\n const varName = element.getAttribute(attr);\n if (!varName || !handler.property) return;\n\n if (attr.includes('leave') || attr.includes('enter') || attr.includes('focus') || attr.includes('blur')) {\n const relatedTarget = (event as MouseEvent).relatedTarget as Node;\n if (relatedTarget && element.contains(relatedTarget)) {\n return;\n }\n }\n\n const ownerVariablePath = element.getAttribute(EventManager.ownerVariablePathAttrName);\n let bindObj = componentInstance;\n if (ownerVariablePath) {\n bindObj = ScriptUtils.evaluateReturn(ownerVariablePath, componentInstance);\n }\n\n const mapScript = element.getAttribute(`${attr}:map`);\n let value = (element as any)[handler.property];\n\n if (mapScript) {\n const context = this.createExecutionContext(event, element, bindObj, config, {value});\n value = ScriptUtils.evaluate(`return ${mapScript}`, context);\n }\n\n if (typeof this.getValue(componentInstance, varName, bindObj) === 'function') {\n this.getValue(componentInstance, varName, bindObj)(value, event);\n } else {\n this.setValue(componentInstance, varName, value);\n }\n break;\n\n case 'event':\n const script = element.getAttribute(attr);\n if (!script) return;\n\n if (attr.endsWith('mouseleave') || attr.endsWith('mouseenter') || attr.endsWith('blur') || attr.endsWith('focus')) {\n const relatedTarget = (event as MouseEvent).relatedTarget as Node;\n if (relatedTarget && element.contains(relatedTarget)) {\n return;\n }\n }\n\n const context = this.createExecutionContext(event, element, componentInstance, config);\n const filterScript = element.getAttribute(`${attr}:filter`);\n let filter = true;\n // \uAC1C\uBC1C\uC790\uAC00 \uC0AC\uC6A9\uC911\uC5D0 \uBB38\uC81C\uAC00 \uBC1C\uC0DD\uB420(\uB514\uBC84\uAE45) \uBC84\uADF8\uB97C \uC720\uBC1C\uD560\uC218\uC788\uB294 \uAE30\uB2A5 \uD750\uB984\uC81C\uC5B4\uAC00 \uC548\uB420\uC218\uC788\uC5B4 \uAE30\uB2A5\uC744 \uC81C\uAC70\uD55C\uB2E4.\n // if (filterScript) {\n // filter = ScriptUtils.eval<boolean>(`${this.getBindScript(config)} return ${filterScript}`, context) ?? false;\n // }\n\n if (filter) {\n ScriptUtils.evaluate(`${this.getBindScript(config)} ${script}`, context);\n }\n\n // \uAC1C\uBC1C\uC790\uAC00 \uC0AC\uC6A9\uC911\uC5D0 \uBB38\uC81C\uAC00 \uBC1C\uC0DD\uB420(\uB514\uBC84\uAE45) \uBC84\uADF8\uB97C \uC720\uBC1C\uD560\uC218\uC788\uB294 \uAE30\uB2A5 \uD750\uB984\uC81C\uC5B4\uAC00 \uC548\uB420\uC218\uC788\uC5B4 \uAE30\uB2A5\uC744 \uC81C\uAC70\uD55C\uB2E4.\n // const hasDispatch = element.hasAttribute(`${attr}:dispatch`);\n // if (hasDispatch) {\n // element.dispatchEvent(new Event(event.type));\n // }\n break;\n\n case 'event-param':\n const paramScript = element.getAttribute(attr);\n if (!paramScript) return;\n\n if (attr.endsWith('mouseleave') || attr.endsWith('mouseenter') || attr.endsWith('blur') || attr.endsWith('focus')) {\n const relatedTarget = (event as MouseEvent).relatedTarget as Node;\n if (relatedTarget && element.contains(relatedTarget)) {\n return;\n }\n }\n\n const attributes = ElementUtils.getAttributeToObject(element);\n const params = {} as any;\n const prefix = attr + ':';\n Object.entries(attributes).filter(([k, v]) => k.startsWith(prefix)).forEach(([k, v]) => {\n params[k.slice(prefix.length)] = v;\n });\n\n const paramContext = this.createExecutionContext(event, element, componentInstance, config, {params});\n ScriptUtils.evaluate(`${this.getBindScript(config)} ${paramScript}`, paramContext);\n break;\n }\n }\n\n public findAttrElements(fragment: DocumentFragment | Element, config?: DomRenderConfig): Set<Element> {\n const elements = new Set<Element>();\n const addAttributes = config?.applyEvents?.map(it => it.attrName) ?? [];\n addAttributes.concat([...EventManager.attrNames]).forEach(attrName => {\n fragment?.querySelectorAll(`[${attrName}]`).forEach(it => {\n elements.add(it);\n });\n });\n return elements;\n }\n\n public applyEvent(obj: any, childNodes: Set<ChildNode> | Set<Element>, config?: DomRenderConfig) {\n childNodes.forEach(node => {\n if (node.nodeType === 1) {\n (node as any).obj = obj;\n }\n });\n\n this.procAttr<HTMLInputElement>(childNodes, EventManager.valueAttrName, (it, attribute) => {\n const script = attribute;\n if (script) {\n const data = ScriptUtils.evaluateReturn(script, obj);\n if (it.value !== data) {\n it.value = data;\n }\n }\n });\n this.procAttr<HTMLInputElement>(childNodes, EventManager.checkedAttrName, (it, attribute) => {\n const script = attribute;\n if (script) {\n const data = ScriptUtils.evaluateReturn(script, obj);\n if (it.checked!== data) {\n it.checked = data;\n }\n }\n });\n this.procAttr<HTMLOptionElement>(childNodes, EventManager.selectedAttrName, (it, attribute) => {\n const script = attribute;\n if (script) {\n const data = ScriptUtils.evaluateReturn(script, obj);\n if (it.selected!== data) {\n it.selected = data;\n }\n }\n });\n this.procAttr<HTMLInputElement>(childNodes, EventManager.readonlyAttrName, (it, attribute) => {\n const script = attribute;\n if (script) {\n const data = ScriptUtils.evaluateReturn(script, obj);\n if (it.readOnly!== data) {\n it.readOnly = data;\n }\n }\n });\n this.procAttr<HTMLInputElement>(childNodes, EventManager.disabledAttrName, (it, attribute) => {\n const script = attribute;\n if (script) {\n const data = ScriptUtils.evaluateReturn(script, obj);\n if (it.disabled!== data) {\n it.disabled = data;\n }\n }\n });\n this.procAttr<HTMLElement>(childNodes, EventManager.hiddenAttrName, (it, attribute) => {\n const script = attribute;\n if (script) {\n const data = ScriptUtils.evaluateReturn(script, obj);\n if (it.hidden!== data) {\n it.hidden = data;\n }\n }\n });\n this.procAttr<HTMLInputElement>(childNodes, EventManager.requiredAttrName, (it, attribute) => {\n const script = attribute;\n if (script) {\n const data = ScriptUtils.evaluateReturn(script, obj);\n if (it.required!== data) {\n it.required = data;\n }\n }\n });\n this.procAttr<HTMLDialogElement>(childNodes, EventManager.openAttrName, (it, attribute) => {\n const script = attribute;\n if (script) {\n const data = ScriptUtils.evaluateReturn(script, obj);\n if (it.open!== data) {\n it.open = data;\n }\n }\n });\n\n this.procAttr(childNodes, EventManager.normalAttrMapAttrName, (it, attribute) => {\n const map = new Map<string, NormalAttrDataType>(JSON.parse(attribute));\n map.forEach((v, k) => {\n\n const variablePaths = v.variablePaths;\n let targetScript = v.originalAttrValue;//typeof v.originalAttrValue === 'string' ? JSON.parse(v.originalAttrValue) : v.originalAttrValue;\n variablePaths.forEach(it => {\n let r = ObjectUtils.Path.toOptionalChainPath(it.inner);\n targetScript = targetScript.replaceAll(it.origin,`\\${${r}}`);\n })\n const data = ObjectUtils.Script.evaluate(`const $element = this.element; return ${'`'+targetScript+'`'} `, Object.assign(obj, {\n __render: Object.freeze({\n element: it,\n attribute: ElementUtils.getAttributeToObject(it)\n })\n }));\n if (data === null) {\n it.removeAttribute(k);\n } else {\n it.setAttribute(k, data);\n }\n });\n });\n\n EventManager.WINDOW_EVENTS.forEach(it => {\n this.procAttr<HTMLInputElement>(childNodes, EventManager.attrPrefix + 'window-event-' + it, (it, attribute) => {\n (it as any).obj = obj;\n });\n });\n\n EventManager.linkAttrs.forEach(linkInfo => {\n this.procAttr<HTMLElement>(childNodes, linkInfo.name, (it, varName) => {\n\n // console.log('ink??????????')\n if (varName) {\n const ownerVariablePathName = it.getAttribute(EventManager.ownerVariablePathAttrName);\n const mapScript = it.getAttribute(`${linkInfo.name}:map`);\n let bindObj = obj;\n if (ownerVariablePathName) {\n bindObj = ScriptUtils.evaluateReturn(ownerVariablePathName, obj);\n }\n const getValue = this.getValue(obj, varName, bindObj);\n if (typeof getValue === 'function' && getValue) {\n let setValue = (it as any)[linkInfo.property];\n if (mapScript) {\n setValue = ScriptUtils.evaluate(`${this.getBindScript(config)} return ${mapScript}`, Object.assign(bindObj, {__render: Object.freeze({element: it, target: bindObj, range: Range.range, value: setValue, scripts: EventManager.setBindProperty(config?.scripts, obj), ...config?.eventVariables})}));\n }\n getValue(setValue);\n } else if (getValue) {\n let setValue = getValue;\n if (mapScript) {\n setValue = ScriptUtils.evaluate(`${this.getBindScript(config)} return ${mapScript}`, Object.assign(bindObj, {__render: Object.freeze({element: it, target: bindObj, range: Range.range, value: setValue, scripts: EventManager.setBindProperty(config?.scripts, obj), ...config?.eventVariables})}));\n }\n if (setValue === null) {\n it.removeAttribute(linkInfo.property);\n } else {\n (it as any)[linkInfo.property] = setValue;\n }\n } else if (getValue === undefined) {\n this.setValue(obj, varName, (it as any)[linkInfo.property]);\n }\n }\n });\n });\n\n this.directAttachEvents.forEach(eventName => {\n const attr = `${EventManager.attrPrefix}event-${eventName}`;\n this.procAttr<HTMLElement>(childNodes, attr, (element, script) => {\n const handler = (event: Event) => {\n const componentInstance = this.findComponentInstance(element);\n if (!componentInstance) return;\n\n const context = this.createExecutionContext(event, element, componentInstance, config);\n const filterScript = element.getAttribute(`${attr}:filter`);\n let filter = true;\n if (filterScript) {\n filter = ScriptUtils.evaluate<boolean>(`${this.getBindScript(config)} return ${filterScript}`, context) ?? false;\n }\n if (filter) {\n ScriptUtils.evaluate(`${this.getBindScript(config)} ${script}`, context);\n }\n };\n element.addEventListener(eventName, handler);\n // TODO: Add logic to remove this listener when the element is destroyed.\n });\n });\n\n this.procAttr<HTMLElement>(childNodes, EventManager.onInitAttrName, (it, attribute) => {\n let script = attribute;\n if (script) {\n script = 'return ' + script;\n }\n if (script) {\n ScriptUtils.evaluate(`${this.getBindScript(config)}; ${script} `, Object.assign(obj, {\n __render: Object.freeze({\n element: it,\n attribute: ElementUtils.getAttributeToObject(it),\n ...config?.eventVariables\n })\n }));\n }\n });\n\n this.onRenderedEvent(obj, childNodes, config);\n this.changeVar(obj, childNodes, undefined, config);\n const elements = Array.from(childNodes).filter(it => it.nodeType === 1).map(it => it as Element);\n elements.forEach(it => {\n config?.applyEvents?.filter(ta => it.getAttribute(ta.attrName) !== null).forEach(ta => ta.callBack(it, it.getAttribute(ta.attrName)!, obj));\n });\n }\n\n public onRenderedEvent(obj: any, childNodes: Set<ChildNode> | Set<Element> | Node[], config?: DomRenderConfig) {\n this.procAttr<HTMLInputElement>(childNodes, EventManager.onRenderedInitAttrName, (it, attribute) => {\n if (!it.isConnected) {\n return;\n }\n let script = attribute;\n if (script) {\n script = 'return ' + script;\n }\n if (script) {\n ScriptUtils.evaluate(`${this.getBindScript(config)}; ${script} `, Object.assign(obj, {\n __render: Object.freeze({\n element: it,\n attribute: ElementUtils.getAttributeToObject(it),\n ...config?.eventVariables\n })\n }));\n }\n });\n }\n\n public changeVar(obj: any, elements: Set<Element> | Set<ChildNode>, varName?: string, config?: DomRenderConfig) {\n // console.log('changeVar', obj, elements, varName)\n this.procAttr(elements, EventManager.styleAttrName, (it, attribute) => {\n let script = attribute;\n if (script) {\n script = 'return ' + script;\n }\n if (EventManager.isUsingThisVar(script, varName) || varName === undefined) {\n const data = ScriptUtils.evaluate(`const $element = this.__render.element; ${script} `, Object.assign(obj, {\n __render: Object.freeze({\n element: it,\n attribute: ElementUtils.getAttributeToObject(it)\n })\n }));\n if (typeof data === 'string') {\n it.setAttribute('style', data);\n } else if (Array.isArray(data)) {\n it.setAttribute('style', data.join(';'));\n } else {\n for (const [key, value] of Object.entries(data)) {\n if (it instanceof HTMLElement) {\n (it.style as any)[key] = String(value);\n }\n }\n }\n }\n });\n\n this.procAttr(elements, EventManager.classAttrName, (it, attribute) => {\n let script = attribute;\n if (script) {\n script = 'return ' + script;\n }\n if (EventManager.isUsingThisVar(script, varName) || varName === undefined) {\n const data = ScriptUtils.evaluate(`const $element = this.element; ${script} `, Object.assign(obj, {\n __render: Object.freeze({\n element: it,\n attribute: ElementUtils.getAttributeToObject(it)\n })\n }));\n\n if (typeof data === 'string') {\n it.setAttribute('class', data);\n } else if (Array.isArray(data)) {\n it.setAttribute('class', data.join(' '));\n } else {\n for (const [key, value] of Object.entries(data)) {\n if (it instanceof HTMLElement) {\n if (value) {\n it.classList.add(key);\n } else {\n it.classList.remove(key);\n }\n }\n }\n }\n }\n });\n }\n\n public procAttr<T extends Element = Element>(elements: Set<Element> | Set<ChildNode> | Node[] = new Set(), attrName: string, callBack: (h: T, value: string, attributes: any) => void) {\n const sets = new Set<Element>();\n elements.forEach(it => {\n if (!it) {\n return;\n }\n if (it.nodeType === 1) {\n const e = it as Element;\n sets.add(e);\n e.querySelectorAll<T>(`[${attrName}]`).forEach(it => {\n sets.add(it);\n });\n }\n });\n sets.forEach(it => {\n const attr = it.getAttribute(attrName);\n const attrs = ElementUtils.getAttributeToObject(it);\n if (attr) {\n callBack(it as T, attr, attrs);\n }\n });\n }\n\n public getValue<T = any>(obj: any, name: string, bindObj?: any): T {\n let r = ObjectUtils.Script.evaluateReturn(name, obj);\n if (typeof r === 'function') {\n r = r.bind(bindObj ?? obj);\n }\n return r;\n }\n\n public setValue(obj: any, name: string, value?: any) {\n name = name.replaceAll('this.', 'this.this.');\n ScriptUtils.evaluate(`${name} = this.value;`, {\n this: obj,\n value: value\n });\n }\n\n public static isUsingThisVar(raws: string | null | undefined, varName: string | null | undefined): boolean {\n if (varName && raws) {\n if (varName.startsWith('this.')) {\n varName = varName.replace(/this\\./, '');\n }\n // TODO: \uD6D4.. \uAF2D\uD544\uC694\uD55C\uAC00..? \uD2B8\uB9AC\uAC70\uB420\uB54C \uC2A4\uD06C\uB9BD\uD2B8\uBCC0\uC218 \uAE4C\uC9C0 \uAC10\uC9C0\uD574\uC57C\uB420\uAE4C?\n EventManager.VARNAMES.forEach(it => {\n // raws = raws!.replace(RegExp(it.replace('$', '\\\\$'), 'g'), `this?.___${it}`);\n raws = raws!.replace(RegExp(it.replace('$', '\\\\$'), 'g'), `this.___${it}`);\n });\n const variablePaths = ObjectUtils.Path.detectPathFromScript(raws ?? '', {excludeThis: true});\n return variablePaths.has(varName);\n }\n return false;\n }\n\n public static setBindProperty(scripts: { [p: string]: any } | undefined, obj: any): { [p: string]: any } | undefined {\n if (scripts) {\n const newScripts = Object.assign({}, scripts);\n for (const [key, value] of Object.entries(newScripts)) {\n if (typeof value === 'function') {\n newScripts[key] = value.bind(obj);\n }\n }\n return newScripts;\n }\n }\n\n getBindScript(config?: DomRenderConfig) {\n if (config?.eventVariables) {\n const bindScript = Object.entries(config.eventVariables).filter(([key, value]) => !this.bindScript.includes(`const ${key}`)).map(([key, value]) => {\n return `const ${key} = this.__render.${key};`;\n }).join(';');\n return this.bindScript + '' + bindScript;\n } else {\n return this.bindScript;\n }\n }\n}\n\n"],
5
+ "mappings": "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",
6
6
  "names": ["context", "it"]
7
7
  }