@dooboostore/simple-web-component 1.0.18 → 1.0.19

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 (589) hide show
  1. package/README.md +96 -77
  2. package/dist/cjs/config/config.js +2 -0
  3. package/dist/cjs/config/config.js.map +2 -2
  4. package/dist/cjs/decorators/addEventListener.js +4 -4
  5. package/dist/cjs/decorators/addEventListener.js.map +2 -2
  6. package/dist/cjs/decorators/appendChild.js +51 -7
  7. package/dist/cjs/decorators/appendChild.js.map +2 -2
  8. package/dist/cjs/decorators/classList.js +104 -0
  9. package/dist/cjs/decorators/classList.js.map +7 -0
  10. package/dist/cjs/decorators/elementDefine.js +306 -424
  11. package/dist/cjs/decorators/elementDefine.js.map +3 -3
  12. package/dist/cjs/decorators/emitCustomEvent.js +61 -9
  13. package/dist/cjs/decorators/emitCustomEvent.js.map +2 -2
  14. package/dist/cjs/decorators/index.js +3 -0
  15. package/dist/cjs/decorators/index.js.map +2 -2
  16. package/dist/cjs/decorators/query.js +56 -32
  17. package/dist/cjs/decorators/query.js.map +2 -2
  18. package/dist/cjs/decorators/queryAll.js +43 -19
  19. package/dist/cjs/decorators/queryAll.js.map +2 -2
  20. package/dist/cjs/decorators/replaceChildren.js +27 -1
  21. package/dist/cjs/decorators/replaceChildren.js.map +2 -2
  22. package/dist/cjs/decorators/setAttribute.js +35 -7
  23. package/dist/cjs/decorators/setAttribute.js.map +2 -2
  24. package/dist/cjs/decorators/style.js +88 -0
  25. package/dist/cjs/decorators/style.js.map +7 -0
  26. package/dist/cjs/elements/SwcAppEngine.js +23 -8
  27. package/dist/cjs/elements/SwcAppEngine.js.map +2 -2
  28. package/dist/cjs/elements/SwcAppMixin.js +52 -0
  29. package/dist/cjs/elements/SwcAppMixin.js.map +7 -0
  30. package/dist/cjs/elements/SwcAsync.js +57 -122
  31. package/dist/cjs/elements/SwcAsync.js.map +3 -3
  32. package/dist/cjs/elements/SwcChoose.js +51 -75
  33. package/dist/cjs/elements/SwcChoose.js.map +3 -3
  34. package/dist/cjs/elements/SwcIf.js +65 -93
  35. package/dist/cjs/elements/SwcIf.js.map +3 -3
  36. package/dist/cjs/elements/SwcLoop.js +72 -173
  37. package/dist/cjs/elements/SwcLoop.js.map +3 -3
  38. package/dist/cjs/elements/SwcSubTemplates.js +12 -37
  39. package/dist/cjs/elements/SwcSubTemplates.js.map +3 -3
  40. package/dist/cjs/elements/index.js +1 -8
  41. package/dist/cjs/elements/index.js.map +2 -2
  42. package/dist/cjs/elements/register.js +831 -0
  43. package/dist/cjs/elements/register.js.map +7 -0
  44. package/dist/cjs/index.js +13 -3
  45. package/dist/cjs/index.js.map +2 -2
  46. package/dist/cjs/types.js.map +1 -1
  47. package/dist/cjs/utils/TemplateUtils.js +103 -0
  48. package/dist/cjs/utils/TemplateUtils.js.map +7 -0
  49. package/dist/cjs/utils/Utils.js +10 -7
  50. package/dist/cjs/utils/Utils.js.map +2 -2
  51. package/dist/esm/config/config.js +2 -0
  52. package/dist/esm/config/config.js.map +2 -2
  53. package/dist/esm/decorators/addEventListener.js +4 -4
  54. package/dist/esm/decorators/addEventListener.js.map +2 -2
  55. package/dist/esm/decorators/appendChild.js +51 -7
  56. package/dist/esm/decorators/appendChild.js.map +2 -2
  57. package/dist/esm/decorators/classList.js +85 -0
  58. package/dist/esm/decorators/classList.js.map +7 -0
  59. package/dist/esm/decorators/elementDefine.js +306 -424
  60. package/dist/esm/decorators/elementDefine.js.map +3 -3
  61. package/dist/esm/decorators/emitCustomEvent.js +61 -9
  62. package/dist/esm/decorators/emitCustomEvent.js.map +2 -2
  63. package/dist/esm/decorators/index.js +3 -0
  64. package/dist/esm/decorators/index.js.map +2 -2
  65. package/dist/esm/decorators/query.js +57 -33
  66. package/dist/esm/decorators/query.js.map +2 -2
  67. package/dist/esm/decorators/queryAll.js +44 -20
  68. package/dist/esm/decorators/queryAll.js.map +2 -2
  69. package/dist/esm/decorators/replaceChildren.js +27 -1
  70. package/dist/esm/decorators/replaceChildren.js.map +2 -2
  71. package/dist/esm/decorators/setAttribute.js +35 -7
  72. package/dist/esm/decorators/setAttribute.js.map +2 -2
  73. package/dist/esm/decorators/style.js +69 -0
  74. package/dist/esm/decorators/style.js.map +7 -0
  75. package/dist/esm/elements/SwcAppEngine.js +23 -8
  76. package/dist/esm/elements/SwcAppEngine.js.map +2 -2
  77. package/dist/esm/elements/SwcAppMixin.js +33 -0
  78. package/dist/esm/elements/SwcAppMixin.js.map +7 -0
  79. package/dist/esm/elements/SwcAsync.js +57 -122
  80. package/dist/esm/elements/SwcAsync.js.map +3 -3
  81. package/dist/esm/elements/SwcChoose.js +51 -75
  82. package/dist/esm/elements/SwcChoose.js.map +3 -3
  83. package/dist/esm/elements/SwcIf.js +65 -93
  84. package/dist/esm/elements/SwcIf.js.map +3 -3
  85. package/dist/esm/elements/SwcLoop.js +71 -172
  86. package/dist/esm/elements/SwcLoop.js.map +3 -3
  87. package/dist/esm/elements/SwcSubTemplates.js +12 -37
  88. package/dist/esm/elements/SwcSubTemplates.js.map +3 -3
  89. package/dist/esm/elements/index.js +1 -8
  90. package/dist/esm/elements/index.js.map +2 -2
  91. package/dist/esm/elements/register.js +812 -0
  92. package/dist/esm/elements/register.js.map +7 -0
  93. package/dist/esm/index.js +13 -3
  94. package/dist/esm/index.js.map +2 -2
  95. package/dist/esm/types.js.map +1 -1
  96. package/dist/esm/utils/TemplateUtils.js +84 -0
  97. package/dist/esm/utils/TemplateUtils.js.map +7 -0
  98. package/dist/esm/utils/Utils.js +6 -3
  99. package/dist/esm/utils/Utils.js.map +2 -2
  100. package/dist/esm-bundle/dooboostore-simple-web-component.esm.js +1010 -5634
  101. package/dist/esm-bundle/dooboostore-simple-web-component.esm.js.map +4 -4
  102. package/dist/types/config/config.d.ts +1 -0
  103. package/dist/types/config/config.d.ts.map +1 -1
  104. package/dist/types/decorators/addEventListener.d.ts +11 -11
  105. package/dist/types/decorators/addEventListener.d.ts.map +1 -1
  106. package/dist/types/decorators/appendChild.d.ts +1 -1
  107. package/dist/types/decorators/appendChild.d.ts.map +1 -1
  108. package/dist/types/decorators/classList.d.ts +34 -0
  109. package/dist/types/decorators/classList.d.ts.map +1 -0
  110. package/dist/types/decorators/elementDefine.d.ts +9 -5
  111. package/dist/types/decorators/elementDefine.d.ts.map +1 -1
  112. package/dist/types/decorators/emitCustomEvent.d.ts +7 -4
  113. package/dist/types/decorators/emitCustomEvent.d.ts.map +1 -1
  114. package/dist/types/decorators/index.d.ts +3 -0
  115. package/dist/types/decorators/index.d.ts.map +1 -1
  116. package/dist/types/decorators/query.d.ts +7 -8
  117. package/dist/types/decorators/query.d.ts.map +1 -1
  118. package/dist/types/decorators/queryAll.d.ts +5 -9
  119. package/dist/types/decorators/queryAll.d.ts.map +1 -1
  120. package/dist/types/decorators/replaceChildren.d.ts.map +1 -1
  121. package/dist/types/decorators/setAttribute.d.ts +13 -3
  122. package/dist/types/decorators/setAttribute.d.ts.map +1 -1
  123. package/dist/types/decorators/style.d.ts +24 -0
  124. package/dist/types/decorators/style.d.ts.map +1 -0
  125. package/dist/types/elements/SwcAppEngine.d.ts +2 -2
  126. package/dist/types/elements/SwcAppEngine.d.ts.map +1 -1
  127. package/dist/types/elements/SwcAppMixin.d.ts +364 -0
  128. package/dist/types/elements/SwcAppMixin.d.ts.map +1 -0
  129. package/dist/types/elements/SwcAsync.d.ts +2 -6
  130. package/dist/types/elements/SwcAsync.d.ts.map +1 -1
  131. package/dist/types/elements/SwcChoose.d.ts +2 -1
  132. package/dist/types/elements/SwcChoose.d.ts.map +1 -1
  133. package/dist/types/elements/SwcIf.d.ts +5 -6
  134. package/dist/types/elements/SwcIf.d.ts.map +1 -1
  135. package/dist/types/elements/SwcLoop.d.ts +4 -10
  136. package/dist/types/elements/SwcLoop.d.ts.map +1 -1
  137. package/dist/types/elements/SwcSubTemplates.d.ts.map +1 -1
  138. package/dist/types/elements/index.d.ts +1 -8
  139. package/dist/types/elements/index.d.ts.map +1 -1
  140. package/dist/types/elements/register.d.ts +2 -0
  141. package/dist/types/elements/register.d.ts.map +1 -0
  142. package/dist/types/index.d.ts +7 -3
  143. package/dist/types/index.d.ts.map +1 -1
  144. package/dist/types/types.d.ts +6 -1
  145. package/dist/types/types.d.ts.map +1 -1
  146. package/dist/types/utils/TemplateUtils.d.ts +54 -0
  147. package/dist/types/utils/TemplateUtils.d.ts.map +1 -0
  148. package/dist/types/utils/Utils.d.ts.map +1 -1
  149. package/dist/umd-bundle/dooboostore-simple-web-component.umd.js +1010 -5634
  150. package/dist/umd-bundle/dooboostore-simple-web-component.umd.js.map +4 -4
  151. package/package.json +2 -2
  152. package/src/config/config.ts +2 -0
  153. package/src/decorators/addEventListener.ts +12 -11
  154. package/src/decorators/appendChild.ts +52 -8
  155. package/src/decorators/classList.ts +117 -0
  156. package/src/decorators/elementDefine.ts +340 -427
  157. package/src/decorators/emitCustomEvent.ts +76 -12
  158. package/src/decorators/index.ts +3 -0
  159. package/src/decorators/query.ts +57 -37
  160. package/src/decorators/queryAll.ts +44 -28
  161. package/src/decorators/replaceChildren.ts +30 -1
  162. package/src/decorators/setAttribute.ts +53 -11
  163. package/src/decorators/style.ts +89 -0
  164. package/src/elements/SwcAppEngine.ts +26 -11
  165. package/src/elements/SwcAppMixin.ts +34 -0
  166. package/src/elements/SwcAsync.ts +57 -127
  167. package/src/elements/SwcChoose.ts +50 -76
  168. package/src/elements/SwcIf.ts +63 -85
  169. package/src/elements/SwcLoop.ts +70 -167
  170. package/src/elements/SwcSubTemplates.ts +0 -13
  171. package/src/elements/index.ts +1 -8
  172. package/src/elements/register.ts +735 -0
  173. package/src/index.ts +16 -5
  174. package/src/types.ts +13 -5
  175. package/src/utils/TemplateUtils.ts +83 -0
  176. package/src/utils/Utils.ts +6 -3
  177. package/dist/cjs/elements/SwcApp.js +0 -55
  178. package/dist/cjs/elements/SwcApp.js.map +0 -7
  179. package/dist/cjs/elements/is/SwcAppAnchor.js +0 -55
  180. package/dist/cjs/elements/is/SwcAppAnchor.js.map +0 -7
  181. package/dist/cjs/elements/is/SwcAppArea.js +0 -55
  182. package/dist/cjs/elements/is/SwcAppArea.js.map +0 -7
  183. package/dist/cjs/elements/is/SwcAppAudio.js +0 -55
  184. package/dist/cjs/elements/is/SwcAppAudio.js.map +0 -7
  185. package/dist/cjs/elements/is/SwcAppBase.js +0 -55
  186. package/dist/cjs/elements/is/SwcAppBase.js.map +0 -7
  187. package/dist/cjs/elements/is/SwcAppBody.js +0 -55
  188. package/dist/cjs/elements/is/SwcAppBody.js.map +0 -7
  189. package/dist/cjs/elements/is/SwcAppButton.js +0 -55
  190. package/dist/cjs/elements/is/SwcAppButton.js.map +0 -7
  191. package/dist/cjs/elements/is/SwcAppCanvas.js +0 -55
  192. package/dist/cjs/elements/is/SwcAppCanvas.js.map +0 -7
  193. package/dist/cjs/elements/is/SwcAppData.js +0 -55
  194. package/dist/cjs/elements/is/SwcAppData.js.map +0 -7
  195. package/dist/cjs/elements/is/SwcAppDataList.js +0 -55
  196. package/dist/cjs/elements/is/SwcAppDataList.js.map +0 -7
  197. package/dist/cjs/elements/is/SwcAppDetails.js +0 -55
  198. package/dist/cjs/elements/is/SwcAppDetails.js.map +0 -7
  199. package/dist/cjs/elements/is/SwcAppDialog.js +0 -55
  200. package/dist/cjs/elements/is/SwcAppDialog.js.map +0 -7
  201. package/dist/cjs/elements/is/SwcAppDiv.js +0 -55
  202. package/dist/cjs/elements/is/SwcAppDiv.js.map +0 -7
  203. package/dist/cjs/elements/is/SwcAppDl.js +0 -55
  204. package/dist/cjs/elements/is/SwcAppDl.js.map +0 -7
  205. package/dist/cjs/elements/is/SwcAppEmbed.js +0 -55
  206. package/dist/cjs/elements/is/SwcAppEmbed.js.map +0 -7
  207. package/dist/cjs/elements/is/SwcAppFieldSet.js +0 -55
  208. package/dist/cjs/elements/is/SwcAppFieldSet.js.map +0 -7
  209. package/dist/cjs/elements/is/SwcAppForm.js +0 -55
  210. package/dist/cjs/elements/is/SwcAppForm.js.map +0 -7
  211. package/dist/cjs/elements/is/SwcAppHeading.js +0 -55
  212. package/dist/cjs/elements/is/SwcAppHeading.js.map +0 -7
  213. package/dist/cjs/elements/is/SwcAppHr.js +0 -55
  214. package/dist/cjs/elements/is/SwcAppHr.js.map +0 -7
  215. package/dist/cjs/elements/is/SwcAppIFrame.js +0 -55
  216. package/dist/cjs/elements/is/SwcAppIFrame.js.map +0 -7
  217. package/dist/cjs/elements/is/SwcAppImage.js +0 -55
  218. package/dist/cjs/elements/is/SwcAppImage.js.map +0 -7
  219. package/dist/cjs/elements/is/SwcAppInput.js +0 -55
  220. package/dist/cjs/elements/is/SwcAppInput.js.map +0 -7
  221. package/dist/cjs/elements/is/SwcAppLabel.js +0 -55
  222. package/dist/cjs/elements/is/SwcAppLabel.js.map +0 -7
  223. package/dist/cjs/elements/is/SwcAppLegend.js +0 -55
  224. package/dist/cjs/elements/is/SwcAppLegend.js.map +0 -7
  225. package/dist/cjs/elements/is/SwcAppLi.js +0 -55
  226. package/dist/cjs/elements/is/SwcAppLi.js.map +0 -7
  227. package/dist/cjs/elements/is/SwcAppLink.js +0 -55
  228. package/dist/cjs/elements/is/SwcAppLink.js.map +0 -7
  229. package/dist/cjs/elements/is/SwcAppMap.js +0 -55
  230. package/dist/cjs/elements/is/SwcAppMap.js.map +0 -7
  231. package/dist/cjs/elements/is/SwcAppMeta.js +0 -55
  232. package/dist/cjs/elements/is/SwcAppMeta.js.map +0 -7
  233. package/dist/cjs/elements/is/SwcAppMeter.js +0 -55
  234. package/dist/cjs/elements/is/SwcAppMeter.js.map +0 -7
  235. package/dist/cjs/elements/is/SwcAppMod.js +0 -55
  236. package/dist/cjs/elements/is/SwcAppMod.js.map +0 -7
  237. package/dist/cjs/elements/is/SwcAppObject.js +0 -55
  238. package/dist/cjs/elements/is/SwcAppObject.js.map +0 -7
  239. package/dist/cjs/elements/is/SwcAppOl.js +0 -55
  240. package/dist/cjs/elements/is/SwcAppOl.js.map +0 -7
  241. package/dist/cjs/elements/is/SwcAppOptGroup.js +0 -55
  242. package/dist/cjs/elements/is/SwcAppOptGroup.js.map +0 -7
  243. package/dist/cjs/elements/is/SwcAppOption.js +0 -55
  244. package/dist/cjs/elements/is/SwcAppOption.js.map +0 -7
  245. package/dist/cjs/elements/is/SwcAppOutput.js +0 -55
  246. package/dist/cjs/elements/is/SwcAppOutput.js.map +0 -7
  247. package/dist/cjs/elements/is/SwcAppParagraph.js +0 -55
  248. package/dist/cjs/elements/is/SwcAppParagraph.js.map +0 -7
  249. package/dist/cjs/elements/is/SwcAppParam.js +0 -55
  250. package/dist/cjs/elements/is/SwcAppParam.js.map +0 -7
  251. package/dist/cjs/elements/is/SwcAppPicture.js +0 -55
  252. package/dist/cjs/elements/is/SwcAppPicture.js.map +0 -7
  253. package/dist/cjs/elements/is/SwcAppPre.js +0 -55
  254. package/dist/cjs/elements/is/SwcAppPre.js.map +0 -7
  255. package/dist/cjs/elements/is/SwcAppProgress.js +0 -55
  256. package/dist/cjs/elements/is/SwcAppProgress.js.map +0 -7
  257. package/dist/cjs/elements/is/SwcAppQuote.js +0 -55
  258. package/dist/cjs/elements/is/SwcAppQuote.js.map +0 -7
  259. package/dist/cjs/elements/is/SwcAppScript.js +0 -55
  260. package/dist/cjs/elements/is/SwcAppScript.js.map +0 -7
  261. package/dist/cjs/elements/is/SwcAppSelect.js +0 -55
  262. package/dist/cjs/elements/is/SwcAppSelect.js.map +0 -7
  263. package/dist/cjs/elements/is/SwcAppSlot.js +0 -55
  264. package/dist/cjs/elements/is/SwcAppSlot.js.map +0 -7
  265. package/dist/cjs/elements/is/SwcAppSource.js +0 -55
  266. package/dist/cjs/elements/is/SwcAppSource.js.map +0 -7
  267. package/dist/cjs/elements/is/SwcAppSpan.js +0 -55
  268. package/dist/cjs/elements/is/SwcAppSpan.js.map +0 -7
  269. package/dist/cjs/elements/is/SwcAppStyle.js +0 -55
  270. package/dist/cjs/elements/is/SwcAppStyle.js.map +0 -7
  271. package/dist/cjs/elements/is/SwcAppTable.js +0 -55
  272. package/dist/cjs/elements/is/SwcAppTable.js.map +0 -7
  273. package/dist/cjs/elements/is/SwcAppTableCell.js +0 -55
  274. package/dist/cjs/elements/is/SwcAppTableCell.js.map +0 -7
  275. package/dist/cjs/elements/is/SwcAppTableRow.js +0 -55
  276. package/dist/cjs/elements/is/SwcAppTableRow.js.map +0 -7
  277. package/dist/cjs/elements/is/SwcAppTableSection.js +0 -55
  278. package/dist/cjs/elements/is/SwcAppTableSection.js.map +0 -7
  279. package/dist/cjs/elements/is/SwcAppTemplate.js +0 -55
  280. package/dist/cjs/elements/is/SwcAppTemplate.js.map +0 -7
  281. package/dist/cjs/elements/is/SwcAppTextArea.js +0 -55
  282. package/dist/cjs/elements/is/SwcAppTextArea.js.map +0 -7
  283. package/dist/cjs/elements/is/SwcAppTime.js +0 -55
  284. package/dist/cjs/elements/is/SwcAppTime.js.map +0 -7
  285. package/dist/cjs/elements/is/SwcAppTitle.js +0 -55
  286. package/dist/cjs/elements/is/SwcAppTitle.js.map +0 -7
  287. package/dist/cjs/elements/is/SwcAppTrack.js +0 -55
  288. package/dist/cjs/elements/is/SwcAppTrack.js.map +0 -7
  289. package/dist/cjs/elements/is/SwcAppUl.js +0 -55
  290. package/dist/cjs/elements/is/SwcAppUl.js.map +0 -7
  291. package/dist/cjs/elements/is/SwcAppVideo.js +0 -55
  292. package/dist/cjs/elements/is/SwcAppVideo.js.map +0 -7
  293. package/dist/cjs/elements/is/index.js +0 -74
  294. package/dist/cjs/elements/is/index.js.map +0 -7
  295. package/dist/esm/elements/SwcApp.js +0 -36
  296. package/dist/esm/elements/SwcApp.js.map +0 -7
  297. package/dist/esm/elements/is/SwcAppAnchor.js +0 -36
  298. package/dist/esm/elements/is/SwcAppAnchor.js.map +0 -7
  299. package/dist/esm/elements/is/SwcAppArea.js +0 -36
  300. package/dist/esm/elements/is/SwcAppArea.js.map +0 -7
  301. package/dist/esm/elements/is/SwcAppAudio.js +0 -36
  302. package/dist/esm/elements/is/SwcAppAudio.js.map +0 -7
  303. package/dist/esm/elements/is/SwcAppBase.js +0 -36
  304. package/dist/esm/elements/is/SwcAppBase.js.map +0 -7
  305. package/dist/esm/elements/is/SwcAppBody.js +0 -36
  306. package/dist/esm/elements/is/SwcAppBody.js.map +0 -7
  307. package/dist/esm/elements/is/SwcAppButton.js +0 -36
  308. package/dist/esm/elements/is/SwcAppButton.js.map +0 -7
  309. package/dist/esm/elements/is/SwcAppCanvas.js +0 -36
  310. package/dist/esm/elements/is/SwcAppCanvas.js.map +0 -7
  311. package/dist/esm/elements/is/SwcAppData.js +0 -36
  312. package/dist/esm/elements/is/SwcAppData.js.map +0 -7
  313. package/dist/esm/elements/is/SwcAppDataList.js +0 -36
  314. package/dist/esm/elements/is/SwcAppDataList.js.map +0 -7
  315. package/dist/esm/elements/is/SwcAppDetails.js +0 -36
  316. package/dist/esm/elements/is/SwcAppDetails.js.map +0 -7
  317. package/dist/esm/elements/is/SwcAppDialog.js +0 -36
  318. package/dist/esm/elements/is/SwcAppDialog.js.map +0 -7
  319. package/dist/esm/elements/is/SwcAppDiv.js +0 -36
  320. package/dist/esm/elements/is/SwcAppDiv.js.map +0 -7
  321. package/dist/esm/elements/is/SwcAppDl.js +0 -36
  322. package/dist/esm/elements/is/SwcAppDl.js.map +0 -7
  323. package/dist/esm/elements/is/SwcAppEmbed.js +0 -36
  324. package/dist/esm/elements/is/SwcAppEmbed.js.map +0 -7
  325. package/dist/esm/elements/is/SwcAppFieldSet.js +0 -36
  326. package/dist/esm/elements/is/SwcAppFieldSet.js.map +0 -7
  327. package/dist/esm/elements/is/SwcAppForm.js +0 -36
  328. package/dist/esm/elements/is/SwcAppForm.js.map +0 -7
  329. package/dist/esm/elements/is/SwcAppHeading.js +0 -36
  330. package/dist/esm/elements/is/SwcAppHeading.js.map +0 -7
  331. package/dist/esm/elements/is/SwcAppHr.js +0 -36
  332. package/dist/esm/elements/is/SwcAppHr.js.map +0 -7
  333. package/dist/esm/elements/is/SwcAppIFrame.js +0 -36
  334. package/dist/esm/elements/is/SwcAppIFrame.js.map +0 -7
  335. package/dist/esm/elements/is/SwcAppImage.js +0 -36
  336. package/dist/esm/elements/is/SwcAppImage.js.map +0 -7
  337. package/dist/esm/elements/is/SwcAppInput.js +0 -36
  338. package/dist/esm/elements/is/SwcAppInput.js.map +0 -7
  339. package/dist/esm/elements/is/SwcAppLabel.js +0 -36
  340. package/dist/esm/elements/is/SwcAppLabel.js.map +0 -7
  341. package/dist/esm/elements/is/SwcAppLegend.js +0 -36
  342. package/dist/esm/elements/is/SwcAppLegend.js.map +0 -7
  343. package/dist/esm/elements/is/SwcAppLi.js +0 -36
  344. package/dist/esm/elements/is/SwcAppLi.js.map +0 -7
  345. package/dist/esm/elements/is/SwcAppLink.js +0 -36
  346. package/dist/esm/elements/is/SwcAppLink.js.map +0 -7
  347. package/dist/esm/elements/is/SwcAppMap.js +0 -36
  348. package/dist/esm/elements/is/SwcAppMap.js.map +0 -7
  349. package/dist/esm/elements/is/SwcAppMeta.js +0 -36
  350. package/dist/esm/elements/is/SwcAppMeta.js.map +0 -7
  351. package/dist/esm/elements/is/SwcAppMeter.js +0 -36
  352. package/dist/esm/elements/is/SwcAppMeter.js.map +0 -7
  353. package/dist/esm/elements/is/SwcAppMod.js +0 -36
  354. package/dist/esm/elements/is/SwcAppMod.js.map +0 -7
  355. package/dist/esm/elements/is/SwcAppObject.js +0 -36
  356. package/dist/esm/elements/is/SwcAppObject.js.map +0 -7
  357. package/dist/esm/elements/is/SwcAppOl.js +0 -36
  358. package/dist/esm/elements/is/SwcAppOl.js.map +0 -7
  359. package/dist/esm/elements/is/SwcAppOptGroup.js +0 -36
  360. package/dist/esm/elements/is/SwcAppOptGroup.js.map +0 -7
  361. package/dist/esm/elements/is/SwcAppOption.js +0 -36
  362. package/dist/esm/elements/is/SwcAppOption.js.map +0 -7
  363. package/dist/esm/elements/is/SwcAppOutput.js +0 -36
  364. package/dist/esm/elements/is/SwcAppOutput.js.map +0 -7
  365. package/dist/esm/elements/is/SwcAppParagraph.js +0 -36
  366. package/dist/esm/elements/is/SwcAppParagraph.js.map +0 -7
  367. package/dist/esm/elements/is/SwcAppParam.js +0 -36
  368. package/dist/esm/elements/is/SwcAppParam.js.map +0 -7
  369. package/dist/esm/elements/is/SwcAppPicture.js +0 -36
  370. package/dist/esm/elements/is/SwcAppPicture.js.map +0 -7
  371. package/dist/esm/elements/is/SwcAppPre.js +0 -36
  372. package/dist/esm/elements/is/SwcAppPre.js.map +0 -7
  373. package/dist/esm/elements/is/SwcAppProgress.js +0 -36
  374. package/dist/esm/elements/is/SwcAppProgress.js.map +0 -7
  375. package/dist/esm/elements/is/SwcAppQuote.js +0 -36
  376. package/dist/esm/elements/is/SwcAppQuote.js.map +0 -7
  377. package/dist/esm/elements/is/SwcAppScript.js +0 -36
  378. package/dist/esm/elements/is/SwcAppScript.js.map +0 -7
  379. package/dist/esm/elements/is/SwcAppSelect.js +0 -36
  380. package/dist/esm/elements/is/SwcAppSelect.js.map +0 -7
  381. package/dist/esm/elements/is/SwcAppSlot.js +0 -36
  382. package/dist/esm/elements/is/SwcAppSlot.js.map +0 -7
  383. package/dist/esm/elements/is/SwcAppSource.js +0 -36
  384. package/dist/esm/elements/is/SwcAppSource.js.map +0 -7
  385. package/dist/esm/elements/is/SwcAppSpan.js +0 -36
  386. package/dist/esm/elements/is/SwcAppSpan.js.map +0 -7
  387. package/dist/esm/elements/is/SwcAppStyle.js +0 -36
  388. package/dist/esm/elements/is/SwcAppStyle.js.map +0 -7
  389. package/dist/esm/elements/is/SwcAppTable.js +0 -36
  390. package/dist/esm/elements/is/SwcAppTable.js.map +0 -7
  391. package/dist/esm/elements/is/SwcAppTableCell.js +0 -36
  392. package/dist/esm/elements/is/SwcAppTableCell.js.map +0 -7
  393. package/dist/esm/elements/is/SwcAppTableRow.js +0 -36
  394. package/dist/esm/elements/is/SwcAppTableRow.js.map +0 -7
  395. package/dist/esm/elements/is/SwcAppTableSection.js +0 -36
  396. package/dist/esm/elements/is/SwcAppTableSection.js.map +0 -7
  397. package/dist/esm/elements/is/SwcAppTemplate.js +0 -36
  398. package/dist/esm/elements/is/SwcAppTemplate.js.map +0 -7
  399. package/dist/esm/elements/is/SwcAppTextArea.js +0 -36
  400. package/dist/esm/elements/is/SwcAppTextArea.js.map +0 -7
  401. package/dist/esm/elements/is/SwcAppTime.js +0 -36
  402. package/dist/esm/elements/is/SwcAppTime.js.map +0 -7
  403. package/dist/esm/elements/is/SwcAppTitle.js +0 -36
  404. package/dist/esm/elements/is/SwcAppTitle.js.map +0 -7
  405. package/dist/esm/elements/is/SwcAppTrack.js +0 -36
  406. package/dist/esm/elements/is/SwcAppTrack.js.map +0 -7
  407. package/dist/esm/elements/is/SwcAppUl.js +0 -36
  408. package/dist/esm/elements/is/SwcAppUl.js.map +0 -7
  409. package/dist/esm/elements/is/SwcAppVideo.js +0 -36
  410. package/dist/esm/elements/is/SwcAppVideo.js.map +0 -7
  411. package/dist/esm/elements/is/index.js +0 -58
  412. package/dist/esm/elements/is/index.js.map +0 -7
  413. package/dist/types/elements/SwcApp.d.ts +0 -9
  414. package/dist/types/elements/SwcApp.d.ts.map +0 -1
  415. package/dist/types/elements/is/SwcAppAnchor.d.ts +0 -9
  416. package/dist/types/elements/is/SwcAppAnchor.d.ts.map +0 -1
  417. package/dist/types/elements/is/SwcAppArea.d.ts +0 -9
  418. package/dist/types/elements/is/SwcAppArea.d.ts.map +0 -1
  419. package/dist/types/elements/is/SwcAppAudio.d.ts +0 -9
  420. package/dist/types/elements/is/SwcAppAudio.d.ts.map +0 -1
  421. package/dist/types/elements/is/SwcAppBase.d.ts +0 -9
  422. package/dist/types/elements/is/SwcAppBase.d.ts.map +0 -1
  423. package/dist/types/elements/is/SwcAppBody.d.ts +0 -9
  424. package/dist/types/elements/is/SwcAppBody.d.ts.map +0 -1
  425. package/dist/types/elements/is/SwcAppButton.d.ts +0 -9
  426. package/dist/types/elements/is/SwcAppButton.d.ts.map +0 -1
  427. package/dist/types/elements/is/SwcAppCanvas.d.ts +0 -9
  428. package/dist/types/elements/is/SwcAppCanvas.d.ts.map +0 -1
  429. package/dist/types/elements/is/SwcAppData.d.ts +0 -9
  430. package/dist/types/elements/is/SwcAppData.d.ts.map +0 -1
  431. package/dist/types/elements/is/SwcAppDataList.d.ts +0 -9
  432. package/dist/types/elements/is/SwcAppDataList.d.ts.map +0 -1
  433. package/dist/types/elements/is/SwcAppDetails.d.ts +0 -9
  434. package/dist/types/elements/is/SwcAppDetails.d.ts.map +0 -1
  435. package/dist/types/elements/is/SwcAppDialog.d.ts +0 -9
  436. package/dist/types/elements/is/SwcAppDialog.d.ts.map +0 -1
  437. package/dist/types/elements/is/SwcAppDiv.d.ts +0 -9
  438. package/dist/types/elements/is/SwcAppDiv.d.ts.map +0 -1
  439. package/dist/types/elements/is/SwcAppDl.d.ts +0 -9
  440. package/dist/types/elements/is/SwcAppDl.d.ts.map +0 -1
  441. package/dist/types/elements/is/SwcAppEmbed.d.ts +0 -9
  442. package/dist/types/elements/is/SwcAppEmbed.d.ts.map +0 -1
  443. package/dist/types/elements/is/SwcAppFieldSet.d.ts +0 -9
  444. package/dist/types/elements/is/SwcAppFieldSet.d.ts.map +0 -1
  445. package/dist/types/elements/is/SwcAppForm.d.ts +0 -9
  446. package/dist/types/elements/is/SwcAppForm.d.ts.map +0 -1
  447. package/dist/types/elements/is/SwcAppHeading.d.ts +0 -9
  448. package/dist/types/elements/is/SwcAppHeading.d.ts.map +0 -1
  449. package/dist/types/elements/is/SwcAppHr.d.ts +0 -9
  450. package/dist/types/elements/is/SwcAppHr.d.ts.map +0 -1
  451. package/dist/types/elements/is/SwcAppIFrame.d.ts +0 -9
  452. package/dist/types/elements/is/SwcAppIFrame.d.ts.map +0 -1
  453. package/dist/types/elements/is/SwcAppImage.d.ts +0 -9
  454. package/dist/types/elements/is/SwcAppImage.d.ts.map +0 -1
  455. package/dist/types/elements/is/SwcAppInput.d.ts +0 -9
  456. package/dist/types/elements/is/SwcAppInput.d.ts.map +0 -1
  457. package/dist/types/elements/is/SwcAppLabel.d.ts +0 -9
  458. package/dist/types/elements/is/SwcAppLabel.d.ts.map +0 -1
  459. package/dist/types/elements/is/SwcAppLegend.d.ts +0 -9
  460. package/dist/types/elements/is/SwcAppLegend.d.ts.map +0 -1
  461. package/dist/types/elements/is/SwcAppLi.d.ts +0 -9
  462. package/dist/types/elements/is/SwcAppLi.d.ts.map +0 -1
  463. package/dist/types/elements/is/SwcAppLink.d.ts +0 -9
  464. package/dist/types/elements/is/SwcAppLink.d.ts.map +0 -1
  465. package/dist/types/elements/is/SwcAppMap.d.ts +0 -9
  466. package/dist/types/elements/is/SwcAppMap.d.ts.map +0 -1
  467. package/dist/types/elements/is/SwcAppMeta.d.ts +0 -9
  468. package/dist/types/elements/is/SwcAppMeta.d.ts.map +0 -1
  469. package/dist/types/elements/is/SwcAppMeter.d.ts +0 -9
  470. package/dist/types/elements/is/SwcAppMeter.d.ts.map +0 -1
  471. package/dist/types/elements/is/SwcAppMod.d.ts +0 -9
  472. package/dist/types/elements/is/SwcAppMod.d.ts.map +0 -1
  473. package/dist/types/elements/is/SwcAppObject.d.ts +0 -9
  474. package/dist/types/elements/is/SwcAppObject.d.ts.map +0 -1
  475. package/dist/types/elements/is/SwcAppOl.d.ts +0 -9
  476. package/dist/types/elements/is/SwcAppOl.d.ts.map +0 -1
  477. package/dist/types/elements/is/SwcAppOptGroup.d.ts +0 -9
  478. package/dist/types/elements/is/SwcAppOptGroup.d.ts.map +0 -1
  479. package/dist/types/elements/is/SwcAppOption.d.ts +0 -9
  480. package/dist/types/elements/is/SwcAppOption.d.ts.map +0 -1
  481. package/dist/types/elements/is/SwcAppOutput.d.ts +0 -9
  482. package/dist/types/elements/is/SwcAppOutput.d.ts.map +0 -1
  483. package/dist/types/elements/is/SwcAppParagraph.d.ts +0 -9
  484. package/dist/types/elements/is/SwcAppParagraph.d.ts.map +0 -1
  485. package/dist/types/elements/is/SwcAppParam.d.ts +0 -9
  486. package/dist/types/elements/is/SwcAppParam.d.ts.map +0 -1
  487. package/dist/types/elements/is/SwcAppPicture.d.ts +0 -9
  488. package/dist/types/elements/is/SwcAppPicture.d.ts.map +0 -1
  489. package/dist/types/elements/is/SwcAppPre.d.ts +0 -9
  490. package/dist/types/elements/is/SwcAppPre.d.ts.map +0 -1
  491. package/dist/types/elements/is/SwcAppProgress.d.ts +0 -9
  492. package/dist/types/elements/is/SwcAppProgress.d.ts.map +0 -1
  493. package/dist/types/elements/is/SwcAppQuote.d.ts +0 -9
  494. package/dist/types/elements/is/SwcAppQuote.d.ts.map +0 -1
  495. package/dist/types/elements/is/SwcAppScript.d.ts +0 -9
  496. package/dist/types/elements/is/SwcAppScript.d.ts.map +0 -1
  497. package/dist/types/elements/is/SwcAppSelect.d.ts +0 -9
  498. package/dist/types/elements/is/SwcAppSelect.d.ts.map +0 -1
  499. package/dist/types/elements/is/SwcAppSlot.d.ts +0 -9
  500. package/dist/types/elements/is/SwcAppSlot.d.ts.map +0 -1
  501. package/dist/types/elements/is/SwcAppSource.d.ts +0 -9
  502. package/dist/types/elements/is/SwcAppSource.d.ts.map +0 -1
  503. package/dist/types/elements/is/SwcAppSpan.d.ts +0 -9
  504. package/dist/types/elements/is/SwcAppSpan.d.ts.map +0 -1
  505. package/dist/types/elements/is/SwcAppStyle.d.ts +0 -9
  506. package/dist/types/elements/is/SwcAppStyle.d.ts.map +0 -1
  507. package/dist/types/elements/is/SwcAppTable.d.ts +0 -9
  508. package/dist/types/elements/is/SwcAppTable.d.ts.map +0 -1
  509. package/dist/types/elements/is/SwcAppTableCell.d.ts +0 -9
  510. package/dist/types/elements/is/SwcAppTableCell.d.ts.map +0 -1
  511. package/dist/types/elements/is/SwcAppTableRow.d.ts +0 -9
  512. package/dist/types/elements/is/SwcAppTableRow.d.ts.map +0 -1
  513. package/dist/types/elements/is/SwcAppTableSection.d.ts +0 -9
  514. package/dist/types/elements/is/SwcAppTableSection.d.ts.map +0 -1
  515. package/dist/types/elements/is/SwcAppTemplate.d.ts +0 -9
  516. package/dist/types/elements/is/SwcAppTemplate.d.ts.map +0 -1
  517. package/dist/types/elements/is/SwcAppTextArea.d.ts +0 -9
  518. package/dist/types/elements/is/SwcAppTextArea.d.ts.map +0 -1
  519. package/dist/types/elements/is/SwcAppTime.d.ts +0 -9
  520. package/dist/types/elements/is/SwcAppTime.d.ts.map +0 -1
  521. package/dist/types/elements/is/SwcAppTitle.d.ts +0 -9
  522. package/dist/types/elements/is/SwcAppTitle.d.ts.map +0 -1
  523. package/dist/types/elements/is/SwcAppTrack.d.ts +0 -9
  524. package/dist/types/elements/is/SwcAppTrack.d.ts.map +0 -1
  525. package/dist/types/elements/is/SwcAppUl.d.ts +0 -9
  526. package/dist/types/elements/is/SwcAppUl.d.ts.map +0 -1
  527. package/dist/types/elements/is/SwcAppVideo.d.ts +0 -9
  528. package/dist/types/elements/is/SwcAppVideo.d.ts.map +0 -1
  529. package/dist/types/elements/is/index.d.ts +0 -58
  530. package/dist/types/elements/is/index.d.ts.map +0 -1
  531. package/src/elements/SwcApp.ts +0 -26
  532. package/src/elements/is/SwcAppAnchor.ts +0 -26
  533. package/src/elements/is/SwcAppArea.ts +0 -26
  534. package/src/elements/is/SwcAppAudio.ts +0 -26
  535. package/src/elements/is/SwcAppBase.ts +0 -26
  536. package/src/elements/is/SwcAppBody.ts +0 -26
  537. package/src/elements/is/SwcAppButton.ts +0 -26
  538. package/src/elements/is/SwcAppCanvas.ts +0 -26
  539. package/src/elements/is/SwcAppData.ts +0 -26
  540. package/src/elements/is/SwcAppDataList.ts +0 -26
  541. package/src/elements/is/SwcAppDetails.ts +0 -26
  542. package/src/elements/is/SwcAppDialog.ts +0 -26
  543. package/src/elements/is/SwcAppDiv.ts +0 -26
  544. package/src/elements/is/SwcAppDl.ts +0 -26
  545. package/src/elements/is/SwcAppEmbed.ts +0 -26
  546. package/src/elements/is/SwcAppFieldSet.ts +0 -26
  547. package/src/elements/is/SwcAppForm.ts +0 -26
  548. package/src/elements/is/SwcAppHeading.ts +0 -26
  549. package/src/elements/is/SwcAppHr.ts +0 -26
  550. package/src/elements/is/SwcAppIFrame.ts +0 -26
  551. package/src/elements/is/SwcAppImage.ts +0 -26
  552. package/src/elements/is/SwcAppInput.ts +0 -26
  553. package/src/elements/is/SwcAppLabel.ts +0 -26
  554. package/src/elements/is/SwcAppLegend.ts +0 -26
  555. package/src/elements/is/SwcAppLi.ts +0 -26
  556. package/src/elements/is/SwcAppLink.ts +0 -26
  557. package/src/elements/is/SwcAppMap.ts +0 -26
  558. package/src/elements/is/SwcAppMeta.ts +0 -26
  559. package/src/elements/is/SwcAppMeter.ts +0 -26
  560. package/src/elements/is/SwcAppMod.ts +0 -26
  561. package/src/elements/is/SwcAppObject.ts +0 -26
  562. package/src/elements/is/SwcAppOl.ts +0 -26
  563. package/src/elements/is/SwcAppOptGroup.ts +0 -26
  564. package/src/elements/is/SwcAppOption.ts +0 -26
  565. package/src/elements/is/SwcAppOutput.ts +0 -26
  566. package/src/elements/is/SwcAppParagraph.ts +0 -26
  567. package/src/elements/is/SwcAppParam.ts +0 -26
  568. package/src/elements/is/SwcAppPicture.ts +0 -26
  569. package/src/elements/is/SwcAppPre.ts +0 -26
  570. package/src/elements/is/SwcAppProgress.ts +0 -26
  571. package/src/elements/is/SwcAppQuote.ts +0 -26
  572. package/src/elements/is/SwcAppScript.ts +0 -26
  573. package/src/elements/is/SwcAppSelect.ts +0 -26
  574. package/src/elements/is/SwcAppSlot.ts +0 -26
  575. package/src/elements/is/SwcAppSource.ts +0 -26
  576. package/src/elements/is/SwcAppSpan.ts +0 -26
  577. package/src/elements/is/SwcAppStyle.ts +0 -26
  578. package/src/elements/is/SwcAppTable.ts +0 -26
  579. package/src/elements/is/SwcAppTableCell.ts +0 -26
  580. package/src/elements/is/SwcAppTableRow.ts +0 -26
  581. package/src/elements/is/SwcAppTableSection.ts +0 -26
  582. package/src/elements/is/SwcAppTemplate.ts +0 -26
  583. package/src/elements/is/SwcAppTextArea.ts +0 -26
  584. package/src/elements/is/SwcAppTime.ts +0 -26
  585. package/src/elements/is/SwcAppTitle.ts +0 -26
  586. package/src/elements/is/SwcAppTrack.ts +0 -26
  587. package/src/elements/is/SwcAppUl.ts +0 -26
  588. package/src/elements/is/SwcAppVideo.ts +0 -26
  589. package/src/elements/is/index.ts +0 -57
@@ -1,49 +1,84 @@
1
1
  import { ReflectUtils } from '@dooboostore/core/reflect/ReflectUtils';
2
2
  import { FunctionUtils } from '@dooboostore/core/function/FunctionUtils';
3
3
  import { getOnConnectedInnerHtmlMetadata } from './onConnectedInnerHtml';
4
- import { getQueryMetadata } from './query';
5
- import { getQueryAllMetadata } from './queryAll';
6
4
  import { getAddEventListenerMetadata } from './addEventListener';
7
- import { ON_BEFORE_CONNECTED_METADATA_KEY, ON_AFTER_CONNECTED_METADATA_KEY, ON_BEFORE_DISCONNECTED_METADATA_KEY, ON_AFTER_DISCONNECTED_METADATA_KEY, ON_BEFORE_ADOPTED_METADATA_KEY, ON_AFTER_ADOPTED_METADATA_KEY, ON_ADD_EVENT_LISTENER_METADATA_KEY, ATTRIBUTE_CHANGED_WILDCARD, findAllLifecycleMetadata } from './lifecycles';
5
+ import { ON_BEFORE_CONNECTED_METADATA_KEY, ON_AFTER_CONNECTED_METADATA_KEY, ON_BEFORE_DISCONNECTED_METADATA_KEY, ON_AFTER_DISCONNECTED_METADATA_KEY, ON_BEFORE_ADOPTED_METADATA_KEY, ON_AFTER_ADOPTED_METADATA_KEY, findAllLifecycleMetadata } from './lifecycles';
8
6
  import { getEmitCustomEventMetadataList } from './emitCustomEvent';
9
- import { changedAttribute, findAllAttributeChangedMetadata } from './changedAttribute';
10
- import { setAttribute, findAllSetAttributeMetadata } from './setAttribute';
7
+ import { findAllAttributeChangedMetadata } from './changedAttribute';
8
+ import { findAllSetAttributeMetadata } from './setAttribute';
11
9
  import { findAllReplaceChildrenMetadata } from './replaceChildren';
12
10
  import { findAllAppendChildMetadata } from './appendChild';
11
+ import { findAllClassListMetadata } from './classList';
12
+ import { findAllStyleMetadata } from './style';
13
13
  import { SwcUtils } from '../utils/Utils';
14
14
  import { HTML_TAG_ENTRIES, DOM_EVENT_NAMES } from '../config/config';
15
- import { SituationType, SituationTypeContainer, SituationTypeContainers } from '@dooboostore/simple-boot/decorators/inject/Inject';
16
- import { ConstructorType } from '@dooboostore/core/types';
17
- import { SimpleApplication } from '@dooboostore/simple-boot/SimpleApplication';
18
- import { Router } from '@dooboostore/core-web/routers/Router';
19
- import { InjectSituationType, HostSet, SwcAppInterface } from '../types';
15
+ import { SituationTypeContainer, SituationTypeContainers } from '@dooboostore/simple-boot/decorators/inject/Inject';
16
+ import { InjectSituationType, HostSet } from '../types';
20
17
 
21
- // --- Core Interfaces & Types ---
18
+ // --- Core Interfaces & Types (Moved back from base.ts) ---
19
+
20
+ export const ELEMENT_CONFIG_KEY = Symbol('simple-web-component:element-config');
22
21
 
23
22
  export interface ElementConfig {
24
- name: string;
25
23
  extends?: string;
26
24
  observedAttributes?: string[];
27
- customElementRegistry?: CustomElementRegistry;
25
+ customElementRegistry?: any;
28
26
  window?: Window;
29
27
  }
30
28
 
31
- export const ELEMENT_CONFIG_KEY = Symbol('simple-web-component:element-config');
29
+ export interface ElementMetadata extends Omit<ElementConfig, 'window'> {
30
+ name: string;
31
+ window: Window;
32
+ }
32
33
 
33
- // Shared state for global delegation to prevent multiple listeners on the same root
34
+ export const getElementConfig = (target: any): ElementMetadata | undefined => {
35
+ const constructor = target instanceof Function ? target : target.constructor;
36
+ return ReflectUtils.getMetadata(ELEMENT_CONFIG_KEY, constructor);
37
+ };
38
+
39
+ export const ensureInit = (inst: any) => {
40
+ if (!inst.__swc_initialized) {
41
+ inst._swcId = Math.random().toString(36).substring(2, 11);
42
+ inst._emitHandlers = new Map();
43
+ inst._boundListeners = [];
44
+ inst.__swc_initialized = true;
45
+
46
+ // Call constructor script if present
47
+ const hostSet = SwcUtils.getHostSet(inst);
48
+ inst._executeSwcScript?.('swc-on-constructor', hostSet);
49
+ }
50
+ };
51
+
52
+ // --- Global Event Handling ---
34
53
  const globalDelegatedRoots = new WeakSet<Node>();
35
54
 
36
- // --- Environment Initialization Helper ---
55
+ const handleGlobalSwcEvent = async (event: Event) => {
56
+ if ((event as any).__swc_handled) return;
57
+ const path = event.composedPath();
58
+ const type = event.type;
59
+ const attrName = `swc-on-${type}`;
60
+
61
+ for (const node of path) {
62
+ if (!(node instanceof HTMLElement)) continue;
63
+ const script = node.getAttribute?.(attrName);
64
+ if (script && !getElementConfig(node)) {
65
+ const host: any = SwcUtils.findNearestSwcHost(node);
66
+ if (host && host.isConnected && typeof host.__swc_executeAttributeEvent === 'function') {
67
+ await host.__swc_executeAttributeEvent(node, attrName, script, event);
68
+ (event as any).__swc_handled = true;
69
+ break;
70
+ }
71
+ }
72
+ }
73
+ };
37
74
 
38
75
  function buildEnv(configWindow?: Window) {
39
- const win: any = configWindow || (typeof window !== 'undefined' ? window : undefined);
76
+ const win: Window = configWindow || ((typeof window !== 'undefined' ? window : undefined) as any);
40
77
  const doc: Document = win?.document;
41
-
42
78
  const builtInTagMap = new Map<any, string>();
43
79
  for (const [cls, tag] of HTML_TAG_ENTRIES) {
44
80
  if (win?.[cls]) builtInTagMap.set(win[cls], tag);
45
81
  }
46
-
47
82
  const domHelpers = SwcUtils.getHelperSet(win);
48
83
  return { win, doc, builtInTagMap, domHelpers };
49
84
  }
@@ -53,479 +88,357 @@ const getHandlers = (inst: any) => {
53
88
  return inst.__swc_attributeEventHandlers;
54
89
  };
55
90
 
91
+ const setupPrototype = (proto: any) => {
92
+ if (proto.__swc_proto_setup) return;
93
+ proto.__swc_proto_setup = true;
94
+
95
+ proto._executeSwcScript = function (attrName: string, hostSet: HostSet, extraArgs: Record<string, any> = {}) {
96
+ ensureInit(this);
97
+ const script = this.getAttribute(attrName);
98
+ if (script) {
99
+ try {
100
+ const conf = getElementConfig(this);
101
+ const currentWin = (this as any)._resolveWindow(conf);
102
+ const helpers = SwcUtils.getHelperSet(currentWin);
103
+ const args = { ...hostSet, ...helpers, ...extraArgs, $el: this, $root: this.getRootNode() };
104
+ FunctionUtils.execute({ script, context: this, args });
105
+ } catch (e) {
106
+ console.error(`[SWC] Failed to execute ${attrName}:`, e);
107
+ }
108
+ }
109
+ };
110
+
111
+ proto._resolveWindow = function (localConfig?: ElementConfig): Window {
112
+ ensureInit(this);
113
+ if (localConfig?.window) return localConfig.window;
114
+ const ancestors = SwcUtils.findAllSwcHosts(this as any);
115
+ for (let i = ancestors.length - 1; i >= 0; i--) {
116
+ const aConf = getElementConfig(ancestors[i]);
117
+ if (aConf?.window) return aConf.window;
118
+ }
119
+ return (typeof window !== 'undefined' ? window : undefined) as Window;
120
+ };
121
+
122
+ proto._invokeLifecycleMethod = function (methodName: string | symbol, hostSet: HostSet, extraArgs: any[] = []) {
123
+ ensureInit(this);
124
+ if (typeof (this as any)[methodName] !== 'function') return;
125
+ const app = hostSet.$appHost?.simpleApplication;
126
+
127
+ if (app) {
128
+ const otherStorage = new Map<any, any>();
129
+ const situations = new SituationTypeContainers([new SituationTypeContainer({ situationType: InjectSituationType.HOST_SET, data: hostSet }), new SituationTypeContainer({ situationType: InjectSituationType.APP_HOST, data: hostSet.$appHost }), new SituationTypeContainer({ situationType: InjectSituationType.APP_HOSTS, data: hostSet.$appHosts }), new SituationTypeContainer({ situationType: InjectSituationType.HOST, data: hostSet.$host }), new SituationTypeContainer({ situationType: InjectSituationType.HOSTS, data: hostSet.$hosts }), new SituationTypeContainer({ situationType: InjectSituationType.FIRST_HOST, data: hostSet.$firstHost }), new SituationTypeContainer({ situationType: InjectSituationType.LAST_HOST, data: hostSet.$lastHost }), new SituationTypeContainer({ situationType: InjectSituationType.FIRST_APP_HOST, data: hostSet.$firstAppHost }), new SituationTypeContainer({ situationType: InjectSituationType.LAST_APP_HOST, data: hostSet.$lastAppHost })]);
130
+ otherStorage.set(SituationTypeContainers, situations);
131
+
132
+ return app.simstanceManager.executeBindParameterSimPromise(
133
+ {
134
+ target: this,
135
+ targetKey: methodName,
136
+ inputParameters: extraArgs
137
+ },
138
+ otherStorage
139
+ );
140
+ } else {
141
+ return (this as any)[methodName](...extraArgs);
142
+ }
143
+ };
144
+
145
+ proto._bindAttributeEvent = function (el: HTMLElement, attrName: string, script: string, eventName?: string) {
146
+ ensureInit(this);
147
+ if (!eventName) {
148
+ if (!attrName.startsWith('swc-on-')) return;
149
+ eventName = attrName.substring(7);
150
+ }
151
+ const elHandlers = getHandlers(this);
152
+ let handlers = elHandlers.get(el);
153
+ if (!handlers) {
154
+ handlers = new Map();
155
+ elHandlers.set(el, handlers);
156
+ }
157
+
158
+ const oldHandler = handlers.get(attrName);
159
+ if (oldHandler) el.removeEventListener(eventName, oldHandler);
160
+
161
+ const handler = async (event: any) => {
162
+ const hostSet = SwcUtils.getHostSet(el);
163
+ const conf = getElementConfig(this);
164
+ const currentWin = (this as any)._resolveWindow(conf);
165
+ const helpers = SwcUtils.getHelperSet(currentWin);
166
+ const args = {
167
+ event,
168
+ $data: (event as CustomEvent).detail,
169
+ ...hostSet,
170
+ ...helpers,
171
+ $el: el,
172
+ $root: this.getRootNode()
173
+ };
174
+ await FunctionUtils.execute({ script, context: el, args });
175
+ };
176
+
177
+ el.addEventListener(eventName, handler);
178
+ handlers.set(attrName, handler);
179
+ };
180
+
181
+ proto.__swc_executeAttributeEvent = async function (el: HTMLElement, attrName: string, script: string, event: Event) {
182
+ ensureInit(this);
183
+ const hostSet = SwcUtils.getHostSet(el);
184
+ const conf = getElementConfig(this);
185
+ const currentWin = (this as any)._resolveWindow(conf);
186
+ const currentHelpers = SwcUtils.getHelperSet(currentWin);
187
+ const args = {
188
+ event,
189
+ $data: (event as CustomEvent).detail,
190
+ ...hostSet,
191
+ ...currentHelpers,
192
+ $el: el,
193
+ $root: this.getRootNode()
194
+ };
195
+ await FunctionUtils.execute({ script, context: el, args });
196
+ };
197
+ };
198
+
56
199
  export const elementDefine =
57
- (inConfig: ElementConfig | string): ClassDecorator =>
200
+ (name: string, config: Partial<ElementConfig> = {}): ClassDecorator =>
58
201
  (constructor: any) => {
59
- const config: ElementConfig = typeof inConfig === 'string' ? { name: inConfig } : inConfig;
60
202
  const { win, doc, builtInTagMap: BUILT_IN_TAG_MAP, domHelpers: SWC_DOM_HELPERS } = buildEnv(config.window);
61
- config.window = win;
203
+ const metadata: ElementMetadata = { ...config, name, window: win };
62
204
 
63
- let extendsTagName = config.extends;
205
+ if (!metadata.window) {
206
+ throw new Error('window is required');
207
+ }
208
+
209
+ let extendsTagName = metadata.extends;
64
210
  if (!extendsTagName) {
65
211
  let proto = constructor;
66
- while (proto && proto !== HTMLElement && proto !== Function.prototype) {
212
+ const BaseHTMLElement = (win as any).HTMLElement;
213
+ while (proto && proto !== BaseHTMLElement && proto !== Function.prototype) {
67
214
  extendsTagName = BUILT_IN_TAG_MAP.get(proto);
68
215
  if (extendsTagName) break;
69
216
  proto = Object.getPrototypeOf(proto);
70
217
  }
71
- config.extends = extendsTagName;
218
+ metadata.extends = extendsTagName;
72
219
  }
73
220
 
74
221
  const emitCustomEventList = getEmitCustomEventMetadataList(constructor) || [];
75
222
  const addEventListenerList = getAddEventListenerMetadata(constructor) || [];
76
223
  const attrChangeMap = findAllAttributeChangedMetadata(constructor);
77
- const setAttrMap = findAllSetAttributeMetadata(constructor);
78
- const replaceChildrenMap = findAllReplaceChildrenMetadata(constructor);
79
- const appendChildMap = findAllAppendChildMetadata(constructor);
80
224
 
81
225
  const swcLifecycleAttributes = ['swc-on-constructor', 'swc-on-connected', 'swc-on-disconnected', 'swc-on-before-connected', 'swc-on-after-connected', 'swc-on-before-disconnected', 'swc-on-after-disconnected', 'swc-on-before-adopted', 'swc-on-after-adopted', 'swc-on-attribute-changed'];
82
226
  const swcOnEvents = DOM_EVENT_NAMES.map(e => `swc-on-${e}`);
83
227
 
84
- const mergedObservedAttributes = [...new Set([...(config.observedAttributes ?? []), ...attrChangeMap.keys(), ...setAttrMap.keys(), ...emitCustomEventList.map(it => it.options.attributeName!), ...swcLifecycleAttributes, ...swcOnEvents])];
85
- const connectedInnerHtmlList = getOnConnectedInnerHtmlMetadata(constructor) || [];
86
-
87
- const NewClass = class extends (constructor as any) {
88
- private _swcId = Math.random().toString(36).substring(2, 11);
89
- private _emitHandlers = new Map<string, EventListener>();
90
- private _boundListeners: Array<{ target: EventTarget; type: string; handler: EventListener; options?: any }> = [];
91
-
92
- private _executeSwcScript(attrName: string, hostSet: HostSet, extraArgs: Record<string, any> = {}) {
93
- const script = this.getAttribute(attrName);
94
- if (script) {
95
- try {
96
- const args = { ...hostSet, ...SWC_DOM_HELPERS, ...extraArgs };
97
- FunctionUtils.execute({ script, context: this, args });
98
- } catch (e) {
99
- console.error(`[SWC] Failed to execute ${attrName}:`, e);
100
- }
101
- }
102
- }
228
+ // Collect all observed attributes from all decorators
229
+ const mergedObservedAttributes = [...new Set([...(metadata.observedAttributes ?? []), ...attrChangeMap.keys(), ...Array.from(findAllSetAttributeMetadata(constructor).values()).map(it => it.name), ...emitCustomEventList.map(it => it.options.attributeName!), ...swcLifecycleAttributes, ...swcOnEvents])];
103
230
 
104
- private async _invokeLifecycleMethod(methodName: string | symbol, hostSet: HostSet, extraArgs: any[] = []) {
105
- if (typeof (this as any)[methodName] !== 'function') return;
106
- const app = hostSet.$appHost?.simpleApplication;
107
-
108
- if (app) {
109
- const otherStorage = new Map<any, any>();
110
- const situations = new SituationTypeContainers([new SituationTypeContainer({ situationType: InjectSituationType.HOST_SET, data: hostSet }), new SituationTypeContainer({ situationType: InjectSituationType.APP_HOST, data: hostSet.$appHost }), new SituationTypeContainer({ situationType: InjectSituationType.APP_HOSTS, data: hostSet.$appHosts }), new SituationTypeContainer({ situationType: InjectSituationType.HOST, data: hostSet.$host }), new SituationTypeContainer({ situationType: InjectSituationType.HOSTS, data: hostSet.$hosts }), new SituationTypeContainer({ situationType: InjectSituationType.FIRST_HOST, data: hostSet.$firstHost }), new SituationTypeContainer({ situationType: InjectSituationType.LAST_HOST, data: hostSet.$lastHost }), new SituationTypeContainer({ situationType: InjectSituationType.FIRST_APP_HOST, data: hostSet.$firstAppHost }), new SituationTypeContainer({ situationType: InjectSituationType.LAST_APP_HOST, data: hostSet.$lastAppHost })]);
111
- otherStorage.set(SituationTypeContainers, situations);
112
-
113
- return app.simstanceManager.executeBindParameterSimPromise(
114
- {
115
- target: this,
116
- targetKey: methodName,
117
- inputParameters: extraArgs
118
- },
119
- otherStorage
120
- );
121
- } else {
122
- return (this as any)[methodName](...extraArgs);
123
- }
124
- }
125
-
126
- private _bindAttributeEvent(el: HTMLElement, attrName: string, script: string, eventName?: string) {
127
- if (!eventName) {
128
- if (!attrName.startsWith('swc-on-')) return;
129
- eventName = attrName.substring(7);
130
- }
131
- if (swcLifecycleAttributes.includes(attrName)) return;
132
-
133
- const elHandlers = getHandlers(this);
134
- let handlers = elHandlers.get(el);
135
- if (!handlers) {
136
- handlers = new Map();
137
- elHandlers.set(el, handlers);
138
- }
231
+ const connectedInnerHtmlList = getOnConnectedInnerHtmlMetadata(constructor) || [];
139
232
 
140
- const oldHandler = handlers.get(attrName);
141
- if (oldHandler) el.removeEventListener(eventName, oldHandler);
233
+ const proto = constructor.prototype;
234
+ setupPrototype(proto);
142
235
 
143
- const handler = (event: any) => {
144
- const hostSet = SwcUtils.getHostSet(el);
145
- const args = {
146
- event,
147
- $data: (event as CustomEvent).detail,
148
- ...hostSet,
149
- ...SWC_DOM_HELPERS
150
- };
151
- FunctionUtils.execute({ script, context: el, args });
152
- };
236
+ const originalConnected = proto.connectedCallback;
237
+ proto.connectedCallback = function () {
238
+ ensureInit(this);
153
239
 
154
- el.addEventListener(eventName, handler);
155
- handlers.set(attrName, handler);
240
+ if (connectedInnerHtmlList.some(it => it.options.useShadow === true) && !this.shadowRoot) {
241
+ this.attachShadow({ mode: 'open' });
156
242
  }
157
243
 
158
- constructor(...args: any[]) {
159
- super(...args);
160
- const hostSet = SwcUtils.getHostSet(this as any);
161
- this._executeSwcScript('swc-on-constructor', hostSet);
162
-
163
- if (connectedInnerHtmlList.some(it => it.options.useShadow === true) && !this.shadowRoot) {
164
- this.attachShadow({ mode: 'open' });
165
- }
166
- }
244
+ const conf = getElementConfig(this);
245
+ const currentWin = (this as any)._resolveWindow(conf);
246
+ const hostSet = SwcUtils.getHostSet(this as any);
167
247
 
168
- static get observedAttributes() {
169
- return mergedObservedAttributes;
248
+ (this as any)._executeSwcScript('swc-on-before-connected', hostSet);
249
+ const bMethods = findAllLifecycleMetadata(this, ON_BEFORE_CONNECTED_METADATA_KEY);
250
+ if (bMethods) {
251
+ for (const m of bMethods) (this as any)._invokeLifecycleMethod(m, hostSet);
170
252
  }
171
253
 
172
- async connectedCallback() {
173
- const conf = getElementConfig(this);
174
- const currentWin = conf?.window || window;
175
- const currentDoc = currentWin.document;
176
-
177
- const hostSet = SwcUtils.getHostSet(this as any);
178
-
179
- this._executeSwcScript('swc-on-before-connected', hostSet);
180
- const bMethods = findAllLifecycleMetadata(this, ON_BEFORE_CONNECTED_METADATA_KEY);
181
- if (bMethods) {
182
- for (const m of bMethods) await this._invokeLifecycleMethod(m, hostSet);
183
- }
254
+ if (typeof (this as any).initCore === 'function') (this as any).initCore();
184
255
 
185
- if (typeof (this as any).initCore === 'function') (this as any).initCore();
186
-
187
- if (connectedInnerHtmlList.length > 0) {
188
- let sContent = '',
189
- lContent = '';
190
- for (const meta of connectedInnerHtmlList) {
191
- const res = await (this as any)[meta.propertyKey]();
192
- if (res !== undefined) {
193
- if (meta.options.useShadow) sContent += res;
194
- else lContent += res;
195
- }
256
+ if (connectedInnerHtmlList.length > 0) {
257
+ let sContent = '',
258
+ lContent = '';
259
+ for (const meta of connectedInnerHtmlList) {
260
+ const res = (this as any)[meta.propertyKey]();
261
+ if (res !== undefined) {
262
+ if (meta.options.useShadow) sContent += res;
263
+ else lContent += res;
196
264
  }
197
- if (this.shadowRoot) this.shadowRoot.innerHTML = sContent;
198
- if (lContent) this.innerHTML = lContent;
199
265
  }
266
+ if (this.shadowRoot) this.shadowRoot.innerHTML = sContent;
267
+ if (lContent) this.innerHTML = lContent;
268
+ }
200
269
 
201
- // --- Optimized Host Delegation ---
202
- const createDelegationHandler = (delegateHost: any) => (event: Event) => {
203
- if ((event as any).__swc_handled) return;
204
-
205
- const path = event.composedPath();
206
- const type = event.type;
207
- const attrName = `swc-on-${type}`;
208
-
209
- for (const node of path) {
210
- if (node === delegateHost) break;
211
- if (!(node instanceof HTMLElement)) continue;
212
-
213
- const script = node.getAttribute?.(attrName);
214
- if (script && !getElementConfig(node)) {
215
- const host = SwcUtils.findNearestSwcHost(node);
216
- if (host) {
217
- const childHostSet = SwcUtils.getHostSet(node);
218
- const args = {
219
- event,
220
- $data: (event as CustomEvent).detail,
221
- ...childHostSet,
222
- ...SWC_DOM_HELPERS
223
- };
224
- FunctionUtils.execute({ script, context: node, args });
225
- (event as any).__swc_handled = true;
226
- break;
227
- }
228
- }
229
- }
230
- };
231
-
232
- // 1. Local Delegation (To itself)
270
+ const root = this.getRootNode();
271
+ if (!globalDelegatedRoots.has(root)) {
233
272
  DOM_EVENT_NAMES.forEach(type => {
234
- const handler = createDelegationHandler(this);
235
- this.addEventListener(type, handler);
236
- this._boundListeners.push({ target: this as any, type, handler });
273
+ root.addEventListener(type, handleGlobalSwcEvent);
237
274
  });
275
+ globalDelegatedRoots.add(root);
276
+ }
238
277
 
239
- // 2. Structural/Global Delegation (If no parent host exists)
240
- const hasParentHost = SwcUtils.findAllSwcHosts(this as any).length > 0;
241
- if (!hasParentHost) {
242
- const root = this.getRootNode();
243
- if (!globalDelegatedRoots.has(root)) {
244
- DOM_EVENT_NAMES.forEach(type => {
245
- const handler = createDelegationHandler(root);
246
- root.addEventListener(type, handler);
247
- });
248
- globalDelegatedRoots.add(root);
249
- }
250
- }
251
-
252
- // --- @addEventListener binding (Direct/Delegate/Global) ---
253
- addEventListenerList.forEach(meta => {
254
- const { selector, type, options } = meta;
255
- const { root, capture, once, passive, stopPropagation, stopImmediatePropagation, preventDefault, delegate, removeOnDisconnected } = options;
256
- const opts = { capture, once, passive };
257
-
258
- const bindTargets: EventTarget[] = [];
259
-
260
- if (selector === ':window') {
261
- bindTargets.push(currentWin);
262
- } else if (selector === ':document') {
263
- bindTargets.push(currentDoc);
264
- } else if (selector === ':parentHost') {
265
- if (hostSet.$parentHost) bindTargets.push(hostSet.$parentHost);
266
- } else if (selector === ':appHost') {
267
- if (hostSet.$appHost) bindTargets.push(hostSet.$appHost);
268
- } else if (selector === ':firstHost') {
269
- if (hostSet.$firstHost) bindTargets.push(hostSet.$firstHost);
270
- } else if (selector === ':lastHost') {
271
- if (hostSet.$lastHost) bindTargets.push(hostSet.$lastHost);
272
- } else if (selector === ':firstAppHost') {
273
- if (hostSet.$firstAppHost) bindTargets.push(hostSet.$firstAppHost);
274
- } else if (selector === ':lastAppHost') {
275
- if (hostSet.$lastAppHost) bindTargets.push(hostSet.$lastAppHost);
276
- } else if (!selector || selector === ':host') {
277
- bindTargets.push(this as any);
278
- } else if (delegate) {
279
- const bindRoots: (HTMLElement | ShadowRoot)[] = [];
280
- const r = root || 'auto';
281
- if (r === 'auto') bindRoots.push(this.shadowRoot || (this as any));
282
- else if (r === 'light') bindRoots.push(this as any);
283
- else if (r === 'shadow') {
284
- if (this.shadowRoot) bindRoots.push(this.shadowRoot as any);
285
- } else if (r === 'all') {
286
- bindRoots.push(this as any);
287
- if (this.shadowRoot) bindRoots.push(this.shadowRoot as any);
288
- }
289
-
290
- bindRoots.forEach(br => {
291
- const handler = (event: Event) => {
292
- const matchedEl = (event.target as HTMLElement).closest(selector);
293
- if (matchedEl && (br as any).contains(matchedEl)) {
294
- if (stopPropagation) event.stopPropagation();
295
- if (stopImmediatePropagation) event.stopImmediatePropagation();
296
- if (preventDefault) event.preventDefault();
297
- const currentHostSet = SwcUtils.getHostSet(this as any);
298
- this._invokeLifecycleMethod(meta.propertyKey, currentHostSet, [event, currentHostSet, matchedEl]);
299
- }
300
- };
301
- br.addEventListener(type, handler, opts);
302
- const self: any = this;
303
- if (removeOnDisconnected === true || (br !== self && br !== self.shadowRoot)) {
304
- this._boundListeners.push({ target: br, type, handler, options: opts });
305
- }
306
- });
278
+ addEventListenerList.forEach(meta => {
279
+ const { selector, type, options } = meta;
280
+ const opts = { capture: options.capture, once: options.once, passive: options.passive };
281
+ const bindTargets: EventTarget[] = [];
282
+ const r = options.root || 'auto';
283
+ const applyRootOption = (target: any) => {
284
+ if (!target) return;
285
+ if (r === 'auto') {
286
+ bindTargets.push(target.shadowRoot || target);
307
287
  } else {
308
- const searchRoots: (HTMLElement | ShadowRoot)[] = [];
309
- const r = root || 'auto';
310
- if (r === 'auto') searchRoots.push((this.shadowRoot || (this as any)) as any);
311
- else if (r === 'light') searchRoots.push(this as any);
312
- else if (r === 'shadow') {
313
- if (this.shadowRoot) searchRoots.push(this.shadowRoot as any);
314
- } else if (r === 'all') {
315
- searchRoots.push(this as any);
316
- if (this.shadowRoot) searchRoots.push(this.shadowRoot as any);
317
- }
288
+ if (r === 'light' || r === 'all') bindTargets.push(target);
289
+ if ((r === 'shadow' || r === 'all') && target.shadowRoot) bindTargets.push(target.shadowRoot);
290
+ }
291
+ };
318
292
 
319
- searchRoots.forEach(sr => {
320
- sr.querySelectorAll(selector).forEach(el => bindTargets.push(el));
321
- });
293
+ if (selector === ':window') bindTargets.push(currentWin);
294
+ else if (selector === ':document') bindTargets.push(currentWin.document);
295
+ else if (selector === ':parentHost') applyRootOption(hostSet.$parentHost);
296
+ else if (selector === ':appHost') applyRootOption(hostSet.$appHost);
297
+ else if (selector === ':firstHost') applyRootOption(hostSet.$firstHost);
298
+ else if (selector === ':lastHost') applyRootOption(hostSet.$lastHost);
299
+ else if (selector === ':firstAppHost') applyRootOption(hostSet.$firstAppHost);
300
+ else if (selector === ':lastAppHost') applyRootOption(hostSet.$lastAppHost);
301
+ else if (selector === ':hosts') hostSet.$hosts.forEach(applyRootOption);
302
+ else if (selector === ':appHosts') hostSet.$appHosts.forEach(applyRootOption);
303
+ else if (selector === ':host' || !selector) applyRootOption(this);
304
+ else if (options.delegate) {
305
+ const bindRoots: (HTMLElement | ShadowRoot)[] = [];
306
+ if (r === 'auto') bindRoots.push(this.shadowRoot || (this as any));
307
+ else if (r === 'light') bindRoots.push(this as any);
308
+ else if (r === 'shadow' && this.shadowRoot) bindRoots.push(this.shadowRoot);
309
+ else if (r === 'all') {
310
+ bindRoots.push(this as any);
311
+ if (this.shadowRoot) bindRoots.push(this.shadowRoot);
322
312
  }
323
313
 
324
- bindTargets.forEach(target => {
325
- const handler = (event: Event) => {
326
- if (stopPropagation) event.stopPropagation();
327
- if (stopImmediatePropagation) event.stopImmediatePropagation();
328
- if (preventDefault) event.preventDefault();
329
- const currentHostSet = SwcUtils.getHostSet(this as any);
330
- this._invokeLifecycleMethod(meta.propertyKey, currentHostSet, [event, currentHostSet]);
314
+ bindRoots.forEach(br => {
315
+ const handler = async (event: Event) => {
316
+ const matchedEl = (event.target as HTMLElement).closest(selector);
317
+ if (matchedEl && (br as any).contains(matchedEl)) {
318
+ if (options.stopPropagation) event.stopPropagation();
319
+ if (options.stopImmediatePropagation) event.stopImmediatePropagation();
320
+ if (options.preventDefault) event.preventDefault();
321
+ const currentHostSet = SwcUtils.getHostSet(this as any);
322
+ const args = { event, ...currentHostSet, $el: matchedEl, $root: br };
323
+ await (this as any)._invokeLifecycleMethod(meta.propertyKey, currentHostSet, [event, currentHostSet, matchedEl, args]);
324
+ }
331
325
  };
332
- target.addEventListener(type, handler, opts);
333
- if (removeOnDisconnected === true || target === currentWin || target === currentDoc) {
334
- this._boundListeners.push({ target, type, handler, options: opts });
326
+ br.addEventListener(type, handler, opts);
327
+ if (options.removeOnDisconnected === true || (br !== this && br !== this.shadowRoot)) {
328
+ (this as any)._boundListeners.push({ target: br, type, handler, options: opts });
335
329
  }
336
330
  });
337
- });
331
+ } else {
332
+ const searchRoots: (HTMLElement | ShadowRoot)[] = [];
333
+ if (r === 'auto') searchRoots.push(this.shadowRoot || (this as any));
334
+ else if (r === 'light') searchRoots.push(this as any);
335
+ else if (r === 'shadow' && this.shadowRoot) searchRoots.push(this.shadowRoot);
336
+ else if (r === 'all') {
337
+ searchRoots.push(this as any);
338
+ if (this.shadowRoot) searchRoots.push(this.shadowRoot);
339
+ }
338
340
 
339
- if (super.connectedCallback) await super.connectedCallback();
340
- const aMethods = findAllLifecycleMetadata(this, ON_AFTER_CONNECTED_METADATA_KEY);
341
- if (aMethods) {
342
- for (const m of aMethods) await this._invokeLifecycleMethod(m, hostSet);
341
+ searchRoots.forEach(sr => {
342
+ sr.querySelectorAll(selector).forEach(el => bindTargets.push(el));
343
+ });
343
344
  }
344
345
 
345
- this._executeSwcScript('swc-on-connected', hostSet);
346
- this._executeSwcScript('swc-on-after-connected', hostSet);
347
- }
348
-
349
- disconnectedCallback() {
350
- const hostSet = SwcUtils.getHostSet(this as any);
351
- this._executeSwcScript('swc-on-before-disconnected', hostSet);
352
- const bMethods = findAllLifecycleMetadata(this, ON_BEFORE_DISCONNECTED_METADATA_KEY);
353
- if (bMethods) bMethods.forEach(m => this._invokeLifecycleMethod(m, hostSet));
354
-
355
- this._boundListeners.forEach(l => l.target.removeEventListener(l.type, l.handler, l.options));
356
- this._boundListeners = [];
357
-
358
- if (super.disconnectedCallback) super.disconnectedCallback();
346
+ bindTargets.forEach(t => {
347
+ const handler = async (event: Event) => {
348
+ if (options.stopPropagation) event.stopPropagation();
349
+ if (options.stopImmediatePropagation) event.stopImmediatePropagation();
350
+ if (options.preventDefault) event.preventDefault();
351
+ const currentHostSet = SwcUtils.getHostSet(this as any);
352
+ const args = { event, ...currentHostSet, $el: t, $root: t };
353
+ await (this as any)._invokeLifecycleMethod(meta.propertyKey, currentHostSet, [event, currentHostSet, args]);
354
+ };
355
+ t.addEventListener(type, handler, opts);
356
+ if (options.removeOnDisconnected === true || t === currentWin || t === currentWin.document) {
357
+ (this as any)._boundListeners.push({ target: t, type, handler, options: opts });
358
+ }
359
+ });
360
+ });
359
361
 
360
- const aMethods = findAllLifecycleMetadata(this, ON_AFTER_DISCONNECTED_METADATA_KEY);
361
- if (aMethods) aMethods.forEach(m => this._invokeLifecycleMethod(m, hostSet));
362
- this._executeSwcScript('swc-on-disconnected', hostSet);
363
- this._executeSwcScript('swc-on-after-disconnected', hostSet);
362
+ if (originalConnected) originalConnected.apply(this);
363
+ const aMethods = findAllLifecycleMetadata(this, ON_AFTER_CONNECTED_METADATA_KEY);
364
+ if (aMethods) {
365
+ for (const m of aMethods) (this as any)._invokeLifecycleMethod(m, hostSet);
364
366
  }
367
+ (this as any)._executeSwcScript('swc-on-connected', hostSet);
368
+ (this as any)._executeSwcScript('swc-on-after-connected', hostSet);
369
+ };
365
370
 
366
- adoptedCallback() {
367
- const hostSet = SwcUtils.getHostSet(this as any);
368
- this._executeSwcScript('swc-on-before-adopted', hostSet);
369
- const bMethods = findAllLifecycleMetadata(this, ON_BEFORE_ADOPTED_METADATA_KEY);
370
- if (bMethods) bMethods.forEach(m => this._invokeLifecycleMethod(m, hostSet));
371
-
372
- if (super.adoptedCallback) super.adoptedCallback();
373
-
374
- const aMethods = findAllLifecycleMetadata(this, ON_AFTER_ADOPTED_METADATA_KEY);
375
- if (aMethods) aMethods.forEach(m => this._invokeLifecycleMethod(m, hostSet));
376
- this._executeSwcScript('swc-on-adopted', hostSet);
377
- this._executeSwcScript('swc-on-after-adopted', hostSet);
371
+ const originalDisconnected = proto.disconnectedCallback;
372
+ proto.disconnectedCallback = function () {
373
+ const hostSet = SwcUtils.getHostSet(this as any);
374
+ (this as any)._executeSwcScript('swc-on-before-disconnected', hostSet);
375
+ const bMethods = findAllLifecycleMetadata(this, ON_BEFORE_DISCONNECTED_METADATA_KEY);
376
+ if (bMethods) {
377
+ for (const m of bMethods) (this as any)._invokeLifecycleMethod(m, hostSet);
378
378
  }
379
379
 
380
- attributeChangedCallback(name: string, old: string | null, newVal: string | null) {
381
- if (super.attributeChangedCallback) super.attributeChangedCallback(name, old, newVal);
380
+ if ((this as any)._boundListeners) {
381
+ (this as any)._boundListeners.forEach((l: any) => l.target.removeEventListener(l.type, l.handler, l.options));
382
+ (this as any)._boundListeners = [];
383
+ }
382
384
 
383
- if (name.startsWith('swc-on-') && !swcLifecycleAttributes.includes(name)) {
384
- if (newVal !== null) {
385
- const customEventMeta = emitCustomEventList.find(it => it.options.attributeName === name);
386
- const eventName = customEventMeta ? customEventMeta.options.type : name.substring(7);
387
- this._bindAttributeEvent(this as any, name, newVal, eventName);
388
- }
389
- }
385
+ if (originalDisconnected) originalDisconnected.apply(this);
390
386
 
391
- const mKeys = attrChangeMap.get(name);
392
- if (mKeys && Array.isArray(mKeys)) {
393
- const hSet = SwcUtils.getHostSet(this as any);
394
- mKeys.forEach(key => this._invokeLifecycleMethod(key, hSet, [newVal, old, name]));
395
- }
387
+ const aMethods = findAllLifecycleMetadata(this, ON_AFTER_DISCONNECTED_METADATA_KEY);
388
+ if (aMethods) {
389
+ for (const m of aMethods) (this as any)._invokeLifecycleMethod(m, hostSet);
396
390
  }
391
+ (this as any)._executeSwcScript('swc-on-disconnected', hostSet);
392
+ (this as any)._executeSwcScript('swc-on-after-disconnected', hostSet);
397
393
  };
398
394
 
399
- // --- @setAttribute wrapping logic ---
400
- setAttrMap.forEach((methodName, attrName) => {
401
- const original = NewClass.prototype[methodName as any];
402
- if (typeof original === 'function') {
403
- NewClass.prototype[methodName as any] = function (...args: any[]) {
404
- const res = original.apply(this, args);
405
- if (res !== undefined) {
406
- if (res === null) this.removeAttribute(attrName);
407
- else this.setAttribute(attrName, String(res));
408
- }
409
- return res;
410
- };
395
+ const originalAdopted = proto.adoptedCallback;
396
+ proto.adoptedCallback = function () {
397
+ const hostSet = SwcUtils.getHostSet(this as any);
398
+ (this as any)._executeSwcScript('swc-on-before-adopted', hostSet);
399
+ const bMethods = findAllLifecycleMetadata(this, ON_BEFORE_ADOPTED_METADATA_KEY);
400
+ if (bMethods) {
401
+ for (const m of bMethods) (this as any)._invokeLifecycleMethod(m, hostSet);
411
402
  }
412
- });
413
403
 
414
- // --- @emitCustomEvent wrapping logic ---
415
- emitCustomEventList.forEach(meta => {
416
- const { propertyKey, options } = meta;
417
- const original = NewClass.prototype[propertyKey as any];
418
- if (typeof original === 'function') {
419
- NewClass.prototype[propertyKey as any] = function (...args: any[]) {
420
- const detail = original.apply(this, args);
421
- const event = new CustomEvent(options.type, {
422
- detail,
423
- bubbles: options.bubbles,
424
- composed: options.composed,
425
- cancelable: options.cancelable
426
- });
427
- this.dispatchEvent(event);
428
- return detail;
429
- };
404
+ if (originalAdopted) originalAdopted.apply(this);
405
+
406
+ const aMethods = findAllLifecycleMetadata(this, ON_AFTER_ADOPTED_METADATA_KEY);
407
+ if (aMethods) {
408
+ for (const m of aMethods) (this as any)._invokeLifecycleMethod(m, hostSet);
430
409
  }
431
- });
410
+ (this as any)._executeSwcScript('swc-on-adopted', hostSet);
411
+ (this as any)._executeSwcScript('swc-on-after-adopted', hostSet);
412
+ };
432
413
 
433
- // --- @replaceChildren wrapping logic ---
434
- replaceChildrenMap.forEach((selector, methodName) => {
435
- const original = NewClass.prototype[methodName as any];
436
- if (typeof original === 'function') {
437
- NewClass.prototype[methodName as any] = function (...args: any[]) {
438
- const res = original.apply(this, args);
439
- if (res !== undefined) {
440
- const conf = getElementConfig(this);
441
- const currentWin = conf?.window || window;
442
- const currentDoc = currentWin.document;
443
-
444
- let targetEl: Element | null = null;
445
- if (selector === ':host' || !selector) {
446
- targetEl = this;
447
- } else {
448
- targetEl = (this.shadowRoot || this).querySelector(selector);
449
- }
414
+ const originalAttributeChanged = proto.attributeChangedCallback;
415
+ proto.attributeChangedCallback = function (name: string, old: string | null, newVal: string | null) {
416
+ if (originalAttributeChanged) originalAttributeChanged.apply(this, [name, old, newVal]);
450
417
 
451
- if (targetEl) {
452
- const nodes: (Node | string)[] = Array.isArray(res) ? res : [res];
453
- const normalizedNodes = nodes.map(n => {
454
- if (typeof n === 'string') {
455
- const t = currentDoc.createElement('template');
456
- t.innerHTML = n;
457
- return t.content;
458
- }
459
- return n as Node;
460
- });
461
- (targetEl as any).replaceChildren(...normalizedNodes);
462
- }
463
- }
464
- return res;
465
- };
418
+ if (name.startsWith('swc-on-') && !swcLifecycleAttributes.includes(name)) {
419
+ if (newVal !== null) {
420
+ const customEventMeta = emitCustomEventList.find(it => it.options.attributeName === name);
421
+ const eventName = customEventMeta ? customEventMeta.type : name.substring(7);
422
+ (this as any)._bindAttributeEvent(this as any, name, newVal, eventName);
423
+ }
466
424
  }
467
- });
468
425
 
469
- // --- @appendChild wrapping logic ---
470
- appendChildMap.forEach((meta, methodName) => {
471
- const { selector, options } = meta;
472
- const original = NewClass.prototype[methodName as any];
473
- if (typeof original === 'function') {
474
- NewClass.prototype[methodName as any] = function (...args: any[]) {
475
- const res = original.apply(this, args);
476
- if (res !== undefined) {
477
- const conf = getElementConfig(this);
478
- const currentWin = conf?.window || window;
479
- const currentDoc = currentWin.document;
480
-
481
- let targetEl: Element | null = null;
482
- if (selector === ':host' || !selector) {
483
- targetEl = this;
484
- } else {
485
- targetEl = (this.shadowRoot || this).querySelector(selector);
486
- }
487
-
488
- if (targetEl) {
489
- const nodes: (Node | string)[] = Array.isArray(res) ? res : [res];
490
- const normalizedNodes = nodes.map(n => {
491
- if (typeof n === 'string') {
492
- const t = currentDoc.createElement('template');
493
- t.innerHTML = n;
494
- return t.content;
495
- }
496
- return n as Node;
497
- });
498
-
499
- const pos = options.position || 'lastChild';
500
- if (pos === 'lastChild') (targetEl as any).append(...normalizedNodes);
501
- else if (pos === 'firstChild') (targetEl as any).prepend(...normalizedNodes);
502
- else if (pos === 'nextSibling') (targetEl as any).after(...normalizedNodes);
503
- else if (pos === 'previousSibling') (targetEl as any).before(...normalizedNodes);
504
- }
505
- }
506
- return res;
507
- };
426
+ const mKeys = attrChangeMap.get(name);
427
+ if (mKeys && Array.isArray(mKeys)) {
428
+ const hSet = SwcUtils.getHostSet(this as any);
429
+ for (const key of mKeys) (this as any)._invokeLifecycleMethod(key, hSet, [newVal, old, name]);
508
430
  }
509
- });
431
+ };
510
432
 
511
- const originalProto = constructor.prototype;
512
- const newProto = NewClass.prototype;
513
- Object.getOwnPropertyNames(originalProto).forEach(name => {
514
- if (name === 'constructor') return;
515
- const keys = Reflect.getMetadataKeys(originalProto, name);
516
- keys.forEach(key => Reflect.defineMetadata(key, Reflect.getMetadata(key, originalProto, name), newProto, name));
433
+ Object.defineProperty(constructor, 'observedAttributes', {
434
+ get: () => mergedObservedAttributes,
435
+ configurable: true
517
436
  });
518
437
 
519
- ReflectUtils.defineMetadata(ELEMENT_CONFIG_KEY, config, NewClass);
520
- ReflectUtils.defineMetadata(ELEMENT_CONFIG_KEY, config, constructor);
521
- const registry = config.customElementRegistry || (win as any)?.customElements;
522
- if (registry && !registry.get(config.name)) {
523
- registry.define(config.name, NewClass as any, config.extends ? { extends: config.extends } : undefined);
438
+ ReflectUtils.defineMetadata(ELEMENT_CONFIG_KEY, metadata, constructor);
439
+ const registry = metadata.customElementRegistry || (win as any)?.customElements;
440
+ if (registry && !registry.get(metadata.name)) {
441
+ registry.define(metadata.name, constructor as any, metadata.extends ? { extends: metadata.extends } : undefined);
524
442
  }
525
- return NewClass as any;
443
+ return constructor;
526
444
  };
527
-
528
- export const getElementConfig = (target: any): ElementConfig | undefined => {
529
- const constructor = target instanceof Function ? target : target.constructor;
530
- return ReflectUtils.getMetadata(ELEMENT_CONFIG_KEY, constructor);
531
- };