@dooboostore/simple-web-component 1.0.17 → 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 (601) hide show
  1. package/README.md +130 -143
  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 +92 -0
  7. package/dist/cjs/decorators/appendChild.js.map +7 -0
  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 +309 -349
  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 +5 -1
  15. package/dist/cjs/decorators/index.js.map +2 -2
  16. package/dist/cjs/decorators/{innerHtml.js → onConnectedInnerHtml.js} +8 -8
  17. package/dist/cjs/decorators/onConnectedInnerHtml.js.map +7 -0
  18. package/dist/cjs/decorators/query.js +61 -21
  19. package/dist/cjs/decorators/query.js.map +2 -2
  20. package/dist/cjs/decorators/queryAll.js +61 -19
  21. package/dist/cjs/decorators/queryAll.js.map +2 -2
  22. package/dist/cjs/decorators/replaceChildren.js +79 -0
  23. package/dist/cjs/decorators/replaceChildren.js.map +7 -0
  24. package/dist/cjs/decorators/setAttribute.js +35 -7
  25. package/dist/cjs/decorators/setAttribute.js.map +2 -2
  26. package/dist/cjs/decorators/style.js +88 -0
  27. package/dist/cjs/decorators/style.js.map +7 -0
  28. package/dist/cjs/elements/SwcAppEngine.js +23 -8
  29. package/dist/cjs/elements/SwcAppEngine.js.map +2 -2
  30. package/dist/cjs/elements/SwcAppMixin.js +52 -0
  31. package/dist/cjs/elements/SwcAppMixin.js.map +7 -0
  32. package/dist/cjs/elements/SwcAsync.js +57 -122
  33. package/dist/cjs/elements/SwcAsync.js.map +3 -3
  34. package/dist/cjs/elements/SwcChoose.js +51 -75
  35. package/dist/cjs/elements/SwcChoose.js.map +3 -3
  36. package/dist/cjs/elements/SwcIf.js +65 -93
  37. package/dist/cjs/elements/SwcIf.js.map +3 -3
  38. package/dist/cjs/elements/SwcLoop.js +72 -173
  39. package/dist/cjs/elements/SwcLoop.js.map +3 -3
  40. package/dist/cjs/elements/SwcSubTemplates.js +12 -37
  41. package/dist/cjs/elements/SwcSubTemplates.js.map +3 -3
  42. package/dist/cjs/elements/index.js +1 -8
  43. package/dist/cjs/elements/index.js.map +2 -2
  44. package/dist/cjs/elements/register.js +831 -0
  45. package/dist/cjs/elements/register.js.map +7 -0
  46. package/dist/cjs/index.js +22 -2
  47. package/dist/cjs/index.js.map +2 -2
  48. package/dist/cjs/types.js.map +1 -1
  49. package/dist/cjs/utils/TemplateUtils.js +103 -0
  50. package/dist/cjs/utils/TemplateUtils.js.map +7 -0
  51. package/dist/cjs/utils/Utils.js +10 -7
  52. package/dist/cjs/utils/Utils.js.map +2 -2
  53. package/dist/esm/config/config.js +2 -0
  54. package/dist/esm/config/config.js.map +2 -2
  55. package/dist/esm/decorators/addEventListener.js +4 -4
  56. package/dist/esm/decorators/addEventListener.js.map +2 -2
  57. package/dist/esm/decorators/appendChild.js +73 -0
  58. package/dist/esm/decorators/appendChild.js.map +7 -0
  59. package/dist/esm/decorators/classList.js +85 -0
  60. package/dist/esm/decorators/classList.js.map +7 -0
  61. package/dist/esm/decorators/elementDefine.js +309 -349
  62. package/dist/esm/decorators/elementDefine.js.map +3 -3
  63. package/dist/esm/decorators/emitCustomEvent.js +61 -9
  64. package/dist/esm/decorators/emitCustomEvent.js.map +2 -2
  65. package/dist/esm/decorators/index.js +5 -1
  66. package/dist/esm/decorators/index.js.map +2 -2
  67. package/dist/esm/decorators/{innerHtml.js → onConnectedInnerHtml.js} +5 -5
  68. package/dist/esm/decorators/onConnectedInnerHtml.js.map +7 -0
  69. package/dist/esm/decorators/query.js +62 -22
  70. package/dist/esm/decorators/query.js.map +2 -2
  71. package/dist/esm/decorators/queryAll.js +62 -20
  72. package/dist/esm/decorators/queryAll.js.map +2 -2
  73. package/dist/esm/decorators/replaceChildren.js +60 -0
  74. package/dist/esm/decorators/replaceChildren.js.map +7 -0
  75. package/dist/esm/decorators/setAttribute.js +35 -7
  76. package/dist/esm/decorators/setAttribute.js.map +2 -2
  77. package/dist/esm/decorators/style.js +69 -0
  78. package/dist/esm/decorators/style.js.map +7 -0
  79. package/dist/esm/elements/SwcAppEngine.js +23 -8
  80. package/dist/esm/elements/SwcAppEngine.js.map +2 -2
  81. package/dist/esm/elements/SwcAppMixin.js +33 -0
  82. package/dist/esm/elements/SwcAppMixin.js.map +7 -0
  83. package/dist/esm/elements/SwcAsync.js +57 -122
  84. package/dist/esm/elements/SwcAsync.js.map +3 -3
  85. package/dist/esm/elements/SwcChoose.js +51 -75
  86. package/dist/esm/elements/SwcChoose.js.map +3 -3
  87. package/dist/esm/elements/SwcIf.js +65 -93
  88. package/dist/esm/elements/SwcIf.js.map +3 -3
  89. package/dist/esm/elements/SwcLoop.js +71 -172
  90. package/dist/esm/elements/SwcLoop.js.map +3 -3
  91. package/dist/esm/elements/SwcSubTemplates.js +12 -37
  92. package/dist/esm/elements/SwcSubTemplates.js.map +3 -3
  93. package/dist/esm/elements/index.js +1 -8
  94. package/dist/esm/elements/index.js.map +2 -2
  95. package/dist/esm/elements/register.js +812 -0
  96. package/dist/esm/elements/register.js.map +7 -0
  97. package/dist/esm/index.js +18 -2
  98. package/dist/esm/index.js.map +2 -2
  99. package/dist/esm/types.js.map +1 -1
  100. package/dist/esm/utils/TemplateUtils.js +84 -0
  101. package/dist/esm/utils/TemplateUtils.js.map +7 -0
  102. package/dist/esm/utils/Utils.js +6 -3
  103. package/dist/esm/utils/Utils.js.map +2 -2
  104. package/dist/esm-bundle/dooboostore-simple-web-component.esm.js +1091 -5545
  105. package/dist/esm-bundle/dooboostore-simple-web-component.esm.js.map +4 -4
  106. package/dist/types/config/config.d.ts +1 -0
  107. package/dist/types/config/config.d.ts.map +1 -1
  108. package/dist/types/decorators/addEventListener.d.ts +11 -11
  109. package/dist/types/decorators/addEventListener.d.ts.map +1 -1
  110. package/dist/types/decorators/appendChild.d.ts +17 -0
  111. package/dist/types/decorators/appendChild.d.ts.map +1 -0
  112. package/dist/types/decorators/classList.d.ts +34 -0
  113. package/dist/types/decorators/classList.d.ts.map +1 -0
  114. package/dist/types/decorators/elementDefine.d.ts +9 -5
  115. package/dist/types/decorators/elementDefine.d.ts.map +1 -1
  116. package/dist/types/decorators/emitCustomEvent.d.ts +7 -4
  117. package/dist/types/decorators/emitCustomEvent.d.ts.map +1 -1
  118. package/dist/types/decorators/index.d.ts +5 -1
  119. package/dist/types/decorators/index.d.ts.map +1 -1
  120. package/dist/types/decorators/onConnectedInnerHtml.d.ts +15 -0
  121. package/dist/types/decorators/onConnectedInnerHtml.d.ts.map +1 -0
  122. package/dist/types/decorators/query.d.ts +7 -8
  123. package/dist/types/decorators/query.d.ts.map +1 -1
  124. package/dist/types/decorators/queryAll.d.ts +5 -9
  125. package/dist/types/decorators/queryAll.d.ts.map +1 -1
  126. package/dist/types/decorators/replaceChildren.d.ts +9 -0
  127. package/dist/types/decorators/replaceChildren.d.ts.map +1 -0
  128. package/dist/types/decorators/setAttribute.d.ts +13 -3
  129. package/dist/types/decorators/setAttribute.d.ts.map +1 -1
  130. package/dist/types/decorators/style.d.ts +24 -0
  131. package/dist/types/decorators/style.d.ts.map +1 -0
  132. package/dist/types/elements/SwcAppEngine.d.ts +2 -2
  133. package/dist/types/elements/SwcAppEngine.d.ts.map +1 -1
  134. package/dist/types/elements/SwcAppMixin.d.ts +364 -0
  135. package/dist/types/elements/SwcAppMixin.d.ts.map +1 -0
  136. package/dist/types/elements/SwcAsync.d.ts +2 -6
  137. package/dist/types/elements/SwcAsync.d.ts.map +1 -1
  138. package/dist/types/elements/SwcChoose.d.ts +2 -1
  139. package/dist/types/elements/SwcChoose.d.ts.map +1 -1
  140. package/dist/types/elements/SwcIf.d.ts +5 -6
  141. package/dist/types/elements/SwcIf.d.ts.map +1 -1
  142. package/dist/types/elements/SwcLoop.d.ts +4 -10
  143. package/dist/types/elements/SwcLoop.d.ts.map +1 -1
  144. package/dist/types/elements/SwcSubTemplates.d.ts.map +1 -1
  145. package/dist/types/elements/index.d.ts +1 -8
  146. package/dist/types/elements/index.d.ts.map +1 -1
  147. package/dist/types/elements/register.d.ts +2 -0
  148. package/dist/types/elements/register.d.ts.map +1 -0
  149. package/dist/types/index.d.ts +9 -2
  150. package/dist/types/index.d.ts.map +1 -1
  151. package/dist/types/types.d.ts +6 -1
  152. package/dist/types/types.d.ts.map +1 -1
  153. package/dist/types/utils/TemplateUtils.d.ts +54 -0
  154. package/dist/types/utils/TemplateUtils.d.ts.map +1 -0
  155. package/dist/types/utils/Utils.d.ts.map +1 -1
  156. package/dist/umd-bundle/dooboostore-simple-web-component.umd.js +1091 -5545
  157. package/dist/umd-bundle/dooboostore-simple-web-component.umd.js.map +4 -4
  158. package/package.json +2 -2
  159. package/src/config/config.ts +2 -0
  160. package/src/decorators/addEventListener.ts +12 -11
  161. package/src/decorators/appendChild.ts +86 -0
  162. package/src/decorators/classList.ts +117 -0
  163. package/src/decorators/elementDefine.ts +345 -349
  164. package/src/decorators/emitCustomEvent.ts +76 -12
  165. package/src/decorators/index.ts +5 -1
  166. package/src/decorators/{innerHtml.ts → onConnectedInnerHtml.ts} +7 -6
  167. package/src/decorators/query.ts +63 -31
  168. package/src/decorators/queryAll.ts +60 -28
  169. package/src/decorators/replaceChildren.ts +64 -0
  170. package/src/decorators/setAttribute.ts +53 -11
  171. package/src/decorators/style.ts +89 -0
  172. package/src/elements/SwcAppEngine.ts +26 -11
  173. package/src/elements/SwcAppMixin.ts +34 -0
  174. package/src/elements/SwcAsync.ts +57 -127
  175. package/src/elements/SwcChoose.ts +50 -76
  176. package/src/elements/SwcIf.ts +63 -85
  177. package/src/elements/SwcLoop.ts +70 -167
  178. package/src/elements/SwcSubTemplates.ts +0 -13
  179. package/src/elements/index.ts +1 -8
  180. package/src/elements/register.ts +735 -0
  181. package/src/index.ts +18 -4
  182. package/src/types.ts +13 -5
  183. package/src/utils/TemplateUtils.ts +83 -0
  184. package/src/utils/Utils.ts +6 -3
  185. package/dist/cjs/decorators/innerHtml.js.map +0 -7
  186. package/dist/cjs/elements/SwcApp.js +0 -55
  187. package/dist/cjs/elements/SwcApp.js.map +0 -7
  188. package/dist/cjs/elements/is/SwcAppAnchor.js +0 -55
  189. package/dist/cjs/elements/is/SwcAppAnchor.js.map +0 -7
  190. package/dist/cjs/elements/is/SwcAppArea.js +0 -55
  191. package/dist/cjs/elements/is/SwcAppArea.js.map +0 -7
  192. package/dist/cjs/elements/is/SwcAppAudio.js +0 -55
  193. package/dist/cjs/elements/is/SwcAppAudio.js.map +0 -7
  194. package/dist/cjs/elements/is/SwcAppBase.js +0 -55
  195. package/dist/cjs/elements/is/SwcAppBase.js.map +0 -7
  196. package/dist/cjs/elements/is/SwcAppBody.js +0 -55
  197. package/dist/cjs/elements/is/SwcAppBody.js.map +0 -7
  198. package/dist/cjs/elements/is/SwcAppButton.js +0 -55
  199. package/dist/cjs/elements/is/SwcAppButton.js.map +0 -7
  200. package/dist/cjs/elements/is/SwcAppCanvas.js +0 -55
  201. package/dist/cjs/elements/is/SwcAppCanvas.js.map +0 -7
  202. package/dist/cjs/elements/is/SwcAppData.js +0 -55
  203. package/dist/cjs/elements/is/SwcAppData.js.map +0 -7
  204. package/dist/cjs/elements/is/SwcAppDataList.js +0 -55
  205. package/dist/cjs/elements/is/SwcAppDataList.js.map +0 -7
  206. package/dist/cjs/elements/is/SwcAppDetails.js +0 -55
  207. package/dist/cjs/elements/is/SwcAppDetails.js.map +0 -7
  208. package/dist/cjs/elements/is/SwcAppDialog.js +0 -55
  209. package/dist/cjs/elements/is/SwcAppDialog.js.map +0 -7
  210. package/dist/cjs/elements/is/SwcAppDiv.js +0 -55
  211. package/dist/cjs/elements/is/SwcAppDiv.js.map +0 -7
  212. package/dist/cjs/elements/is/SwcAppDl.js +0 -55
  213. package/dist/cjs/elements/is/SwcAppDl.js.map +0 -7
  214. package/dist/cjs/elements/is/SwcAppEmbed.js +0 -55
  215. package/dist/cjs/elements/is/SwcAppEmbed.js.map +0 -7
  216. package/dist/cjs/elements/is/SwcAppFieldSet.js +0 -55
  217. package/dist/cjs/elements/is/SwcAppFieldSet.js.map +0 -7
  218. package/dist/cjs/elements/is/SwcAppForm.js +0 -55
  219. package/dist/cjs/elements/is/SwcAppForm.js.map +0 -7
  220. package/dist/cjs/elements/is/SwcAppHeading.js +0 -55
  221. package/dist/cjs/elements/is/SwcAppHeading.js.map +0 -7
  222. package/dist/cjs/elements/is/SwcAppHr.js +0 -55
  223. package/dist/cjs/elements/is/SwcAppHr.js.map +0 -7
  224. package/dist/cjs/elements/is/SwcAppIFrame.js +0 -55
  225. package/dist/cjs/elements/is/SwcAppIFrame.js.map +0 -7
  226. package/dist/cjs/elements/is/SwcAppImage.js +0 -55
  227. package/dist/cjs/elements/is/SwcAppImage.js.map +0 -7
  228. package/dist/cjs/elements/is/SwcAppInput.js +0 -55
  229. package/dist/cjs/elements/is/SwcAppInput.js.map +0 -7
  230. package/dist/cjs/elements/is/SwcAppLabel.js +0 -55
  231. package/dist/cjs/elements/is/SwcAppLabel.js.map +0 -7
  232. package/dist/cjs/elements/is/SwcAppLegend.js +0 -55
  233. package/dist/cjs/elements/is/SwcAppLegend.js.map +0 -7
  234. package/dist/cjs/elements/is/SwcAppLi.js +0 -55
  235. package/dist/cjs/elements/is/SwcAppLi.js.map +0 -7
  236. package/dist/cjs/elements/is/SwcAppLink.js +0 -55
  237. package/dist/cjs/elements/is/SwcAppLink.js.map +0 -7
  238. package/dist/cjs/elements/is/SwcAppMap.js +0 -55
  239. package/dist/cjs/elements/is/SwcAppMap.js.map +0 -7
  240. package/dist/cjs/elements/is/SwcAppMeta.js +0 -55
  241. package/dist/cjs/elements/is/SwcAppMeta.js.map +0 -7
  242. package/dist/cjs/elements/is/SwcAppMeter.js +0 -55
  243. package/dist/cjs/elements/is/SwcAppMeter.js.map +0 -7
  244. package/dist/cjs/elements/is/SwcAppMod.js +0 -55
  245. package/dist/cjs/elements/is/SwcAppMod.js.map +0 -7
  246. package/dist/cjs/elements/is/SwcAppObject.js +0 -55
  247. package/dist/cjs/elements/is/SwcAppObject.js.map +0 -7
  248. package/dist/cjs/elements/is/SwcAppOl.js +0 -55
  249. package/dist/cjs/elements/is/SwcAppOl.js.map +0 -7
  250. package/dist/cjs/elements/is/SwcAppOptGroup.js +0 -55
  251. package/dist/cjs/elements/is/SwcAppOptGroup.js.map +0 -7
  252. package/dist/cjs/elements/is/SwcAppOption.js +0 -55
  253. package/dist/cjs/elements/is/SwcAppOption.js.map +0 -7
  254. package/dist/cjs/elements/is/SwcAppOutput.js +0 -55
  255. package/dist/cjs/elements/is/SwcAppOutput.js.map +0 -7
  256. package/dist/cjs/elements/is/SwcAppParagraph.js +0 -55
  257. package/dist/cjs/elements/is/SwcAppParagraph.js.map +0 -7
  258. package/dist/cjs/elements/is/SwcAppParam.js +0 -55
  259. package/dist/cjs/elements/is/SwcAppParam.js.map +0 -7
  260. package/dist/cjs/elements/is/SwcAppPicture.js +0 -55
  261. package/dist/cjs/elements/is/SwcAppPicture.js.map +0 -7
  262. package/dist/cjs/elements/is/SwcAppPre.js +0 -55
  263. package/dist/cjs/elements/is/SwcAppPre.js.map +0 -7
  264. package/dist/cjs/elements/is/SwcAppProgress.js +0 -55
  265. package/dist/cjs/elements/is/SwcAppProgress.js.map +0 -7
  266. package/dist/cjs/elements/is/SwcAppQuote.js +0 -55
  267. package/dist/cjs/elements/is/SwcAppQuote.js.map +0 -7
  268. package/dist/cjs/elements/is/SwcAppScript.js +0 -55
  269. package/dist/cjs/elements/is/SwcAppScript.js.map +0 -7
  270. package/dist/cjs/elements/is/SwcAppSelect.js +0 -55
  271. package/dist/cjs/elements/is/SwcAppSelect.js.map +0 -7
  272. package/dist/cjs/elements/is/SwcAppSlot.js +0 -55
  273. package/dist/cjs/elements/is/SwcAppSlot.js.map +0 -7
  274. package/dist/cjs/elements/is/SwcAppSource.js +0 -55
  275. package/dist/cjs/elements/is/SwcAppSource.js.map +0 -7
  276. package/dist/cjs/elements/is/SwcAppSpan.js +0 -55
  277. package/dist/cjs/elements/is/SwcAppSpan.js.map +0 -7
  278. package/dist/cjs/elements/is/SwcAppStyle.js +0 -55
  279. package/dist/cjs/elements/is/SwcAppStyle.js.map +0 -7
  280. package/dist/cjs/elements/is/SwcAppTable.js +0 -55
  281. package/dist/cjs/elements/is/SwcAppTable.js.map +0 -7
  282. package/dist/cjs/elements/is/SwcAppTableCell.js +0 -55
  283. package/dist/cjs/elements/is/SwcAppTableCell.js.map +0 -7
  284. package/dist/cjs/elements/is/SwcAppTableRow.js +0 -55
  285. package/dist/cjs/elements/is/SwcAppTableRow.js.map +0 -7
  286. package/dist/cjs/elements/is/SwcAppTableSection.js +0 -55
  287. package/dist/cjs/elements/is/SwcAppTableSection.js.map +0 -7
  288. package/dist/cjs/elements/is/SwcAppTemplate.js +0 -55
  289. package/dist/cjs/elements/is/SwcAppTemplate.js.map +0 -7
  290. package/dist/cjs/elements/is/SwcAppTextArea.js +0 -55
  291. package/dist/cjs/elements/is/SwcAppTextArea.js.map +0 -7
  292. package/dist/cjs/elements/is/SwcAppTime.js +0 -55
  293. package/dist/cjs/elements/is/SwcAppTime.js.map +0 -7
  294. package/dist/cjs/elements/is/SwcAppTitle.js +0 -55
  295. package/dist/cjs/elements/is/SwcAppTitle.js.map +0 -7
  296. package/dist/cjs/elements/is/SwcAppTrack.js +0 -55
  297. package/dist/cjs/elements/is/SwcAppTrack.js.map +0 -7
  298. package/dist/cjs/elements/is/SwcAppUl.js +0 -55
  299. package/dist/cjs/elements/is/SwcAppUl.js.map +0 -7
  300. package/dist/cjs/elements/is/SwcAppVideo.js +0 -55
  301. package/dist/cjs/elements/is/SwcAppVideo.js.map +0 -7
  302. package/dist/cjs/elements/is/index.js +0 -74
  303. package/dist/cjs/elements/is/index.js.map +0 -7
  304. package/dist/esm/decorators/innerHtml.js.map +0 -7
  305. package/dist/esm/elements/SwcApp.js +0 -36
  306. package/dist/esm/elements/SwcApp.js.map +0 -7
  307. package/dist/esm/elements/is/SwcAppAnchor.js +0 -36
  308. package/dist/esm/elements/is/SwcAppAnchor.js.map +0 -7
  309. package/dist/esm/elements/is/SwcAppArea.js +0 -36
  310. package/dist/esm/elements/is/SwcAppArea.js.map +0 -7
  311. package/dist/esm/elements/is/SwcAppAudio.js +0 -36
  312. package/dist/esm/elements/is/SwcAppAudio.js.map +0 -7
  313. package/dist/esm/elements/is/SwcAppBase.js +0 -36
  314. package/dist/esm/elements/is/SwcAppBase.js.map +0 -7
  315. package/dist/esm/elements/is/SwcAppBody.js +0 -36
  316. package/dist/esm/elements/is/SwcAppBody.js.map +0 -7
  317. package/dist/esm/elements/is/SwcAppButton.js +0 -36
  318. package/dist/esm/elements/is/SwcAppButton.js.map +0 -7
  319. package/dist/esm/elements/is/SwcAppCanvas.js +0 -36
  320. package/dist/esm/elements/is/SwcAppCanvas.js.map +0 -7
  321. package/dist/esm/elements/is/SwcAppData.js +0 -36
  322. package/dist/esm/elements/is/SwcAppData.js.map +0 -7
  323. package/dist/esm/elements/is/SwcAppDataList.js +0 -36
  324. package/dist/esm/elements/is/SwcAppDataList.js.map +0 -7
  325. package/dist/esm/elements/is/SwcAppDetails.js +0 -36
  326. package/dist/esm/elements/is/SwcAppDetails.js.map +0 -7
  327. package/dist/esm/elements/is/SwcAppDialog.js +0 -36
  328. package/dist/esm/elements/is/SwcAppDialog.js.map +0 -7
  329. package/dist/esm/elements/is/SwcAppDiv.js +0 -36
  330. package/dist/esm/elements/is/SwcAppDiv.js.map +0 -7
  331. package/dist/esm/elements/is/SwcAppDl.js +0 -36
  332. package/dist/esm/elements/is/SwcAppDl.js.map +0 -7
  333. package/dist/esm/elements/is/SwcAppEmbed.js +0 -36
  334. package/dist/esm/elements/is/SwcAppEmbed.js.map +0 -7
  335. package/dist/esm/elements/is/SwcAppFieldSet.js +0 -36
  336. package/dist/esm/elements/is/SwcAppFieldSet.js.map +0 -7
  337. package/dist/esm/elements/is/SwcAppForm.js +0 -36
  338. package/dist/esm/elements/is/SwcAppForm.js.map +0 -7
  339. package/dist/esm/elements/is/SwcAppHeading.js +0 -36
  340. package/dist/esm/elements/is/SwcAppHeading.js.map +0 -7
  341. package/dist/esm/elements/is/SwcAppHr.js +0 -36
  342. package/dist/esm/elements/is/SwcAppHr.js.map +0 -7
  343. package/dist/esm/elements/is/SwcAppIFrame.js +0 -36
  344. package/dist/esm/elements/is/SwcAppIFrame.js.map +0 -7
  345. package/dist/esm/elements/is/SwcAppImage.js +0 -36
  346. package/dist/esm/elements/is/SwcAppImage.js.map +0 -7
  347. package/dist/esm/elements/is/SwcAppInput.js +0 -36
  348. package/dist/esm/elements/is/SwcAppInput.js.map +0 -7
  349. package/dist/esm/elements/is/SwcAppLabel.js +0 -36
  350. package/dist/esm/elements/is/SwcAppLabel.js.map +0 -7
  351. package/dist/esm/elements/is/SwcAppLegend.js +0 -36
  352. package/dist/esm/elements/is/SwcAppLegend.js.map +0 -7
  353. package/dist/esm/elements/is/SwcAppLi.js +0 -36
  354. package/dist/esm/elements/is/SwcAppLi.js.map +0 -7
  355. package/dist/esm/elements/is/SwcAppLink.js +0 -36
  356. package/dist/esm/elements/is/SwcAppLink.js.map +0 -7
  357. package/dist/esm/elements/is/SwcAppMap.js +0 -36
  358. package/dist/esm/elements/is/SwcAppMap.js.map +0 -7
  359. package/dist/esm/elements/is/SwcAppMeta.js +0 -36
  360. package/dist/esm/elements/is/SwcAppMeta.js.map +0 -7
  361. package/dist/esm/elements/is/SwcAppMeter.js +0 -36
  362. package/dist/esm/elements/is/SwcAppMeter.js.map +0 -7
  363. package/dist/esm/elements/is/SwcAppMod.js +0 -36
  364. package/dist/esm/elements/is/SwcAppMod.js.map +0 -7
  365. package/dist/esm/elements/is/SwcAppObject.js +0 -36
  366. package/dist/esm/elements/is/SwcAppObject.js.map +0 -7
  367. package/dist/esm/elements/is/SwcAppOl.js +0 -36
  368. package/dist/esm/elements/is/SwcAppOl.js.map +0 -7
  369. package/dist/esm/elements/is/SwcAppOptGroup.js +0 -36
  370. package/dist/esm/elements/is/SwcAppOptGroup.js.map +0 -7
  371. package/dist/esm/elements/is/SwcAppOption.js +0 -36
  372. package/dist/esm/elements/is/SwcAppOption.js.map +0 -7
  373. package/dist/esm/elements/is/SwcAppOutput.js +0 -36
  374. package/dist/esm/elements/is/SwcAppOutput.js.map +0 -7
  375. package/dist/esm/elements/is/SwcAppParagraph.js +0 -36
  376. package/dist/esm/elements/is/SwcAppParagraph.js.map +0 -7
  377. package/dist/esm/elements/is/SwcAppParam.js +0 -36
  378. package/dist/esm/elements/is/SwcAppParam.js.map +0 -7
  379. package/dist/esm/elements/is/SwcAppPicture.js +0 -36
  380. package/dist/esm/elements/is/SwcAppPicture.js.map +0 -7
  381. package/dist/esm/elements/is/SwcAppPre.js +0 -36
  382. package/dist/esm/elements/is/SwcAppPre.js.map +0 -7
  383. package/dist/esm/elements/is/SwcAppProgress.js +0 -36
  384. package/dist/esm/elements/is/SwcAppProgress.js.map +0 -7
  385. package/dist/esm/elements/is/SwcAppQuote.js +0 -36
  386. package/dist/esm/elements/is/SwcAppQuote.js.map +0 -7
  387. package/dist/esm/elements/is/SwcAppScript.js +0 -36
  388. package/dist/esm/elements/is/SwcAppScript.js.map +0 -7
  389. package/dist/esm/elements/is/SwcAppSelect.js +0 -36
  390. package/dist/esm/elements/is/SwcAppSelect.js.map +0 -7
  391. package/dist/esm/elements/is/SwcAppSlot.js +0 -36
  392. package/dist/esm/elements/is/SwcAppSlot.js.map +0 -7
  393. package/dist/esm/elements/is/SwcAppSource.js +0 -36
  394. package/dist/esm/elements/is/SwcAppSource.js.map +0 -7
  395. package/dist/esm/elements/is/SwcAppSpan.js +0 -36
  396. package/dist/esm/elements/is/SwcAppSpan.js.map +0 -7
  397. package/dist/esm/elements/is/SwcAppStyle.js +0 -36
  398. package/dist/esm/elements/is/SwcAppStyle.js.map +0 -7
  399. package/dist/esm/elements/is/SwcAppTable.js +0 -36
  400. package/dist/esm/elements/is/SwcAppTable.js.map +0 -7
  401. package/dist/esm/elements/is/SwcAppTableCell.js +0 -36
  402. package/dist/esm/elements/is/SwcAppTableCell.js.map +0 -7
  403. package/dist/esm/elements/is/SwcAppTableRow.js +0 -36
  404. package/dist/esm/elements/is/SwcAppTableRow.js.map +0 -7
  405. package/dist/esm/elements/is/SwcAppTableSection.js +0 -36
  406. package/dist/esm/elements/is/SwcAppTableSection.js.map +0 -7
  407. package/dist/esm/elements/is/SwcAppTemplate.js +0 -36
  408. package/dist/esm/elements/is/SwcAppTemplate.js.map +0 -7
  409. package/dist/esm/elements/is/SwcAppTextArea.js +0 -36
  410. package/dist/esm/elements/is/SwcAppTextArea.js.map +0 -7
  411. package/dist/esm/elements/is/SwcAppTime.js +0 -36
  412. package/dist/esm/elements/is/SwcAppTime.js.map +0 -7
  413. package/dist/esm/elements/is/SwcAppTitle.js +0 -36
  414. package/dist/esm/elements/is/SwcAppTitle.js.map +0 -7
  415. package/dist/esm/elements/is/SwcAppTrack.js +0 -36
  416. package/dist/esm/elements/is/SwcAppTrack.js.map +0 -7
  417. package/dist/esm/elements/is/SwcAppUl.js +0 -36
  418. package/dist/esm/elements/is/SwcAppUl.js.map +0 -7
  419. package/dist/esm/elements/is/SwcAppVideo.js +0 -36
  420. package/dist/esm/elements/is/SwcAppVideo.js.map +0 -7
  421. package/dist/esm/elements/is/index.js +0 -58
  422. package/dist/esm/elements/is/index.js.map +0 -7
  423. package/dist/types/decorators/innerHtml.d.ts +0 -12
  424. package/dist/types/decorators/innerHtml.d.ts.map +0 -1
  425. package/dist/types/elements/SwcApp.d.ts +0 -9
  426. package/dist/types/elements/SwcApp.d.ts.map +0 -1
  427. package/dist/types/elements/is/SwcAppAnchor.d.ts +0 -9
  428. package/dist/types/elements/is/SwcAppAnchor.d.ts.map +0 -1
  429. package/dist/types/elements/is/SwcAppArea.d.ts +0 -9
  430. package/dist/types/elements/is/SwcAppArea.d.ts.map +0 -1
  431. package/dist/types/elements/is/SwcAppAudio.d.ts +0 -9
  432. package/dist/types/elements/is/SwcAppAudio.d.ts.map +0 -1
  433. package/dist/types/elements/is/SwcAppBase.d.ts +0 -9
  434. package/dist/types/elements/is/SwcAppBase.d.ts.map +0 -1
  435. package/dist/types/elements/is/SwcAppBody.d.ts +0 -9
  436. package/dist/types/elements/is/SwcAppBody.d.ts.map +0 -1
  437. package/dist/types/elements/is/SwcAppButton.d.ts +0 -9
  438. package/dist/types/elements/is/SwcAppButton.d.ts.map +0 -1
  439. package/dist/types/elements/is/SwcAppCanvas.d.ts +0 -9
  440. package/dist/types/elements/is/SwcAppCanvas.d.ts.map +0 -1
  441. package/dist/types/elements/is/SwcAppData.d.ts +0 -9
  442. package/dist/types/elements/is/SwcAppData.d.ts.map +0 -1
  443. package/dist/types/elements/is/SwcAppDataList.d.ts +0 -9
  444. package/dist/types/elements/is/SwcAppDataList.d.ts.map +0 -1
  445. package/dist/types/elements/is/SwcAppDetails.d.ts +0 -9
  446. package/dist/types/elements/is/SwcAppDetails.d.ts.map +0 -1
  447. package/dist/types/elements/is/SwcAppDialog.d.ts +0 -9
  448. package/dist/types/elements/is/SwcAppDialog.d.ts.map +0 -1
  449. package/dist/types/elements/is/SwcAppDiv.d.ts +0 -9
  450. package/dist/types/elements/is/SwcAppDiv.d.ts.map +0 -1
  451. package/dist/types/elements/is/SwcAppDl.d.ts +0 -9
  452. package/dist/types/elements/is/SwcAppDl.d.ts.map +0 -1
  453. package/dist/types/elements/is/SwcAppEmbed.d.ts +0 -9
  454. package/dist/types/elements/is/SwcAppEmbed.d.ts.map +0 -1
  455. package/dist/types/elements/is/SwcAppFieldSet.d.ts +0 -9
  456. package/dist/types/elements/is/SwcAppFieldSet.d.ts.map +0 -1
  457. package/dist/types/elements/is/SwcAppForm.d.ts +0 -9
  458. package/dist/types/elements/is/SwcAppForm.d.ts.map +0 -1
  459. package/dist/types/elements/is/SwcAppHeading.d.ts +0 -9
  460. package/dist/types/elements/is/SwcAppHeading.d.ts.map +0 -1
  461. package/dist/types/elements/is/SwcAppHr.d.ts +0 -9
  462. package/dist/types/elements/is/SwcAppHr.d.ts.map +0 -1
  463. package/dist/types/elements/is/SwcAppIFrame.d.ts +0 -9
  464. package/dist/types/elements/is/SwcAppIFrame.d.ts.map +0 -1
  465. package/dist/types/elements/is/SwcAppImage.d.ts +0 -9
  466. package/dist/types/elements/is/SwcAppImage.d.ts.map +0 -1
  467. package/dist/types/elements/is/SwcAppInput.d.ts +0 -9
  468. package/dist/types/elements/is/SwcAppInput.d.ts.map +0 -1
  469. package/dist/types/elements/is/SwcAppLabel.d.ts +0 -9
  470. package/dist/types/elements/is/SwcAppLabel.d.ts.map +0 -1
  471. package/dist/types/elements/is/SwcAppLegend.d.ts +0 -9
  472. package/dist/types/elements/is/SwcAppLegend.d.ts.map +0 -1
  473. package/dist/types/elements/is/SwcAppLi.d.ts +0 -9
  474. package/dist/types/elements/is/SwcAppLi.d.ts.map +0 -1
  475. package/dist/types/elements/is/SwcAppLink.d.ts +0 -9
  476. package/dist/types/elements/is/SwcAppLink.d.ts.map +0 -1
  477. package/dist/types/elements/is/SwcAppMap.d.ts +0 -9
  478. package/dist/types/elements/is/SwcAppMap.d.ts.map +0 -1
  479. package/dist/types/elements/is/SwcAppMeta.d.ts +0 -9
  480. package/dist/types/elements/is/SwcAppMeta.d.ts.map +0 -1
  481. package/dist/types/elements/is/SwcAppMeter.d.ts +0 -9
  482. package/dist/types/elements/is/SwcAppMeter.d.ts.map +0 -1
  483. package/dist/types/elements/is/SwcAppMod.d.ts +0 -9
  484. package/dist/types/elements/is/SwcAppMod.d.ts.map +0 -1
  485. package/dist/types/elements/is/SwcAppObject.d.ts +0 -9
  486. package/dist/types/elements/is/SwcAppObject.d.ts.map +0 -1
  487. package/dist/types/elements/is/SwcAppOl.d.ts +0 -9
  488. package/dist/types/elements/is/SwcAppOl.d.ts.map +0 -1
  489. package/dist/types/elements/is/SwcAppOptGroup.d.ts +0 -9
  490. package/dist/types/elements/is/SwcAppOptGroup.d.ts.map +0 -1
  491. package/dist/types/elements/is/SwcAppOption.d.ts +0 -9
  492. package/dist/types/elements/is/SwcAppOption.d.ts.map +0 -1
  493. package/dist/types/elements/is/SwcAppOutput.d.ts +0 -9
  494. package/dist/types/elements/is/SwcAppOutput.d.ts.map +0 -1
  495. package/dist/types/elements/is/SwcAppParagraph.d.ts +0 -9
  496. package/dist/types/elements/is/SwcAppParagraph.d.ts.map +0 -1
  497. package/dist/types/elements/is/SwcAppParam.d.ts +0 -9
  498. package/dist/types/elements/is/SwcAppParam.d.ts.map +0 -1
  499. package/dist/types/elements/is/SwcAppPicture.d.ts +0 -9
  500. package/dist/types/elements/is/SwcAppPicture.d.ts.map +0 -1
  501. package/dist/types/elements/is/SwcAppPre.d.ts +0 -9
  502. package/dist/types/elements/is/SwcAppPre.d.ts.map +0 -1
  503. package/dist/types/elements/is/SwcAppProgress.d.ts +0 -9
  504. package/dist/types/elements/is/SwcAppProgress.d.ts.map +0 -1
  505. package/dist/types/elements/is/SwcAppQuote.d.ts +0 -9
  506. package/dist/types/elements/is/SwcAppQuote.d.ts.map +0 -1
  507. package/dist/types/elements/is/SwcAppScript.d.ts +0 -9
  508. package/dist/types/elements/is/SwcAppScript.d.ts.map +0 -1
  509. package/dist/types/elements/is/SwcAppSelect.d.ts +0 -9
  510. package/dist/types/elements/is/SwcAppSelect.d.ts.map +0 -1
  511. package/dist/types/elements/is/SwcAppSlot.d.ts +0 -9
  512. package/dist/types/elements/is/SwcAppSlot.d.ts.map +0 -1
  513. package/dist/types/elements/is/SwcAppSource.d.ts +0 -9
  514. package/dist/types/elements/is/SwcAppSource.d.ts.map +0 -1
  515. package/dist/types/elements/is/SwcAppSpan.d.ts +0 -9
  516. package/dist/types/elements/is/SwcAppSpan.d.ts.map +0 -1
  517. package/dist/types/elements/is/SwcAppStyle.d.ts +0 -9
  518. package/dist/types/elements/is/SwcAppStyle.d.ts.map +0 -1
  519. package/dist/types/elements/is/SwcAppTable.d.ts +0 -9
  520. package/dist/types/elements/is/SwcAppTable.d.ts.map +0 -1
  521. package/dist/types/elements/is/SwcAppTableCell.d.ts +0 -9
  522. package/dist/types/elements/is/SwcAppTableCell.d.ts.map +0 -1
  523. package/dist/types/elements/is/SwcAppTableRow.d.ts +0 -9
  524. package/dist/types/elements/is/SwcAppTableRow.d.ts.map +0 -1
  525. package/dist/types/elements/is/SwcAppTableSection.d.ts +0 -9
  526. package/dist/types/elements/is/SwcAppTableSection.d.ts.map +0 -1
  527. package/dist/types/elements/is/SwcAppTemplate.d.ts +0 -9
  528. package/dist/types/elements/is/SwcAppTemplate.d.ts.map +0 -1
  529. package/dist/types/elements/is/SwcAppTextArea.d.ts +0 -9
  530. package/dist/types/elements/is/SwcAppTextArea.d.ts.map +0 -1
  531. package/dist/types/elements/is/SwcAppTime.d.ts +0 -9
  532. package/dist/types/elements/is/SwcAppTime.d.ts.map +0 -1
  533. package/dist/types/elements/is/SwcAppTitle.d.ts +0 -9
  534. package/dist/types/elements/is/SwcAppTitle.d.ts.map +0 -1
  535. package/dist/types/elements/is/SwcAppTrack.d.ts +0 -9
  536. package/dist/types/elements/is/SwcAppTrack.d.ts.map +0 -1
  537. package/dist/types/elements/is/SwcAppUl.d.ts +0 -9
  538. package/dist/types/elements/is/SwcAppUl.d.ts.map +0 -1
  539. package/dist/types/elements/is/SwcAppVideo.d.ts +0 -9
  540. package/dist/types/elements/is/SwcAppVideo.d.ts.map +0 -1
  541. package/dist/types/elements/is/index.d.ts +0 -58
  542. package/dist/types/elements/is/index.d.ts.map +0 -1
  543. package/src/elements/SwcApp.ts +0 -26
  544. package/src/elements/is/SwcAppAnchor.ts +0 -26
  545. package/src/elements/is/SwcAppArea.ts +0 -26
  546. package/src/elements/is/SwcAppAudio.ts +0 -26
  547. package/src/elements/is/SwcAppBase.ts +0 -26
  548. package/src/elements/is/SwcAppBody.ts +0 -26
  549. package/src/elements/is/SwcAppButton.ts +0 -26
  550. package/src/elements/is/SwcAppCanvas.ts +0 -26
  551. package/src/elements/is/SwcAppData.ts +0 -26
  552. package/src/elements/is/SwcAppDataList.ts +0 -26
  553. package/src/elements/is/SwcAppDetails.ts +0 -26
  554. package/src/elements/is/SwcAppDialog.ts +0 -26
  555. package/src/elements/is/SwcAppDiv.ts +0 -26
  556. package/src/elements/is/SwcAppDl.ts +0 -26
  557. package/src/elements/is/SwcAppEmbed.ts +0 -26
  558. package/src/elements/is/SwcAppFieldSet.ts +0 -26
  559. package/src/elements/is/SwcAppForm.ts +0 -26
  560. package/src/elements/is/SwcAppHeading.ts +0 -26
  561. package/src/elements/is/SwcAppHr.ts +0 -26
  562. package/src/elements/is/SwcAppIFrame.ts +0 -26
  563. package/src/elements/is/SwcAppImage.ts +0 -26
  564. package/src/elements/is/SwcAppInput.ts +0 -26
  565. package/src/elements/is/SwcAppLabel.ts +0 -26
  566. package/src/elements/is/SwcAppLegend.ts +0 -26
  567. package/src/elements/is/SwcAppLi.ts +0 -26
  568. package/src/elements/is/SwcAppLink.ts +0 -26
  569. package/src/elements/is/SwcAppMap.ts +0 -26
  570. package/src/elements/is/SwcAppMeta.ts +0 -26
  571. package/src/elements/is/SwcAppMeter.ts +0 -26
  572. package/src/elements/is/SwcAppMod.ts +0 -26
  573. package/src/elements/is/SwcAppObject.ts +0 -26
  574. package/src/elements/is/SwcAppOl.ts +0 -26
  575. package/src/elements/is/SwcAppOptGroup.ts +0 -26
  576. package/src/elements/is/SwcAppOption.ts +0 -26
  577. package/src/elements/is/SwcAppOutput.ts +0 -26
  578. package/src/elements/is/SwcAppParagraph.ts +0 -26
  579. package/src/elements/is/SwcAppParam.ts +0 -26
  580. package/src/elements/is/SwcAppPicture.ts +0 -26
  581. package/src/elements/is/SwcAppPre.ts +0 -26
  582. package/src/elements/is/SwcAppProgress.ts +0 -26
  583. package/src/elements/is/SwcAppQuote.ts +0 -26
  584. package/src/elements/is/SwcAppScript.ts +0 -26
  585. package/src/elements/is/SwcAppSelect.ts +0 -26
  586. package/src/elements/is/SwcAppSlot.ts +0 -26
  587. package/src/elements/is/SwcAppSource.ts +0 -26
  588. package/src/elements/is/SwcAppSpan.ts +0 -26
  589. package/src/elements/is/SwcAppStyle.ts +0 -26
  590. package/src/elements/is/SwcAppTable.ts +0 -26
  591. package/src/elements/is/SwcAppTableCell.ts +0 -26
  592. package/src/elements/is/SwcAppTableRow.ts +0 -26
  593. package/src/elements/is/SwcAppTableSection.ts +0 -26
  594. package/src/elements/is/SwcAppTemplate.ts +0 -26
  595. package/src/elements/is/SwcAppTextArea.ts +0 -26
  596. package/src/elements/is/SwcAppTime.ts +0 -26
  597. package/src/elements/is/SwcAppTitle.ts +0 -26
  598. package/src/elements/is/SwcAppTrack.ts +0 -26
  599. package/src/elements/is/SwcAppUl.ts +0 -26
  600. package/src/elements/is/SwcAppVideo.ts +0 -26
  601. package/src/elements/is/index.ts +0 -57
@@ -1,7 +1,9 @@
1
1
  import { ReflectUtils } from '@dooboostore/core/reflect/ReflectUtils';
2
+ import { SpecialSelector, SwcQueryOptions } from '../types';
3
+ import { ensureInit, getElementConfig } from './elementDefine';
4
+ import { SwcUtils } from '../utils/Utils';
2
5
 
3
- export interface EmitCustomEventOptions {
4
- type: string;
6
+ export interface EmitCustomEventBaseOptions {
5
7
  attributeName?: string;
6
8
  bubbles?: boolean;
7
9
  composed?: boolean;
@@ -10,28 +12,90 @@ export interface EmitCustomEventOptions {
10
12
 
11
13
  export interface EmitCustomEventMetadata {
12
14
  propertyKey: string | symbol;
13
- options: EmitCustomEventOptions;
15
+ selector: string;
16
+ type: string;
17
+ options: EmitCustomEventBaseOptions & SwcQueryOptions;
14
18
  }
15
19
 
16
20
  export const EMIT_CUSTOM_EVENT_METADATA_KEY = Symbol('simple-web-component:emit-custom-event');
21
+ export function emitCustomEvent(target: SpecialSelector, type: string, options?: EmitCustomEventBaseOptions): MethodDecorator;
22
+ export function emitCustomEvent(selector: string, type: string, options?: EmitCustomEventBaseOptions & SwcQueryOptions): MethodDecorator;
23
+ /**
24
+ * @emitCustomEvent decorator to dispatch custom events to a target.
25
+ */
26
+ export function emitCustomEvent(selectorOrTarget: string, type: string, options: any = {}): MethodDecorator {
27
+ return (targetObj: Object, propertyKey: string | symbol, descriptor: PropertyDescriptor) => {
28
+ const constructor = targetObj.constructor;
17
29
 
18
- export function emitCustomEvent(typeOrOptions: string | EmitCustomEventOptions): MethodDecorator {
19
- return (target: Object, propertyKey: string | symbol) => {
20
- const constructor = target.constructor;
21
- const options: EmitCustomEventOptions = typeof typeOrOptions === 'string' ? { type: typeOrOptions } : typeOrOptions;
30
+ const fullOptions: any = { ...options, type };
22
31
 
23
- if (!options.attributeName) {
24
- options.attributeName = `swc-on-${options.type}`;
32
+ if (!fullOptions.attributeName) {
33
+ fullOptions.attributeName = `swc-on-${type}`;
25
34
  }
26
- if (options.bubbles === undefined) options.bubbles = true;
27
- if (options.composed === undefined) options.composed = true;
35
+ if (fullOptions.bubbles === undefined) fullOptions.bubbles = true;
36
+ if (fullOptions.composed === undefined) fullOptions.composed = true;
28
37
 
29
38
  let list = ReflectUtils.getMetadata<EmitCustomEventMetadata[]>(EMIT_CUSTOM_EVENT_METADATA_KEY, constructor);
30
39
  if (!list) {
31
40
  list = [];
32
41
  ReflectUtils.defineMetadata(EMIT_CUSTOM_EVENT_METADATA_KEY, list, constructor);
33
42
  }
34
- list.push({ propertyKey, options });
43
+ list.push({ propertyKey, selector: selectorOrTarget, type, options: fullOptions });
44
+
45
+ const original = descriptor.value;
46
+ descriptor.value = async function (...args: any[]) {
47
+ ensureInit(this);
48
+ const detail = await original.apply(this, args);
49
+ const event = new CustomEvent(type, {
50
+ detail,
51
+ bubbles: fullOptions.bubbles,
52
+ composed: fullOptions.composed,
53
+ cancelable: fullOptions.cancelable
54
+ });
55
+
56
+ const hostSet = SwcUtils.getHostSet(this as any);
57
+ const conf = getElementConfig(this);
58
+ const currentWin = (this as any)._resolveWindow?.(conf) || ((typeof window !== 'undefined' ? window : undefined) as Window);
59
+
60
+ const eventTargets: EventTarget[] = [];
61
+ if (selectorOrTarget === ':window') eventTargets.push(currentWin);
62
+ else if (selectorOrTarget === ':document') eventTargets.push(currentWin.document);
63
+ else if (selectorOrTarget === ':parentHost') {
64
+ if (hostSet.$parentHost) eventTargets.push(hostSet.$parentHost);
65
+ } else if (selectorOrTarget === ':appHost') {
66
+ if (hostSet.$appHost) eventTargets.push(hostSet.$appHost);
67
+ } else if (selectorOrTarget === ':firstHost') {
68
+ if (hostSet.$firstHost) eventTargets.push(hostSet.$firstHost);
69
+ } else if (selectorOrTarget === ':lastHost') {
70
+ if (hostSet.$lastHost) eventTargets.push(hostSet.$lastHost);
71
+ } else if (selectorOrTarget === ':firstAppHost') {
72
+ if (hostSet.$firstAppHost) eventTargets.push(hostSet.$firstAppHost);
73
+ } else if (selectorOrTarget === ':lastAppHost') {
74
+ if (hostSet.$lastAppHost) eventTargets.push(hostSet.$lastAppHost);
75
+ } else if (selectorOrTarget === ':hosts') {
76
+ hostSet.$hosts.forEach(h => eventTargets.push(h));
77
+ } else if (selectorOrTarget === ':appHosts') {
78
+ hostSet.$appHosts.forEach(h => eventTargets.push(h));
79
+ } else if (selectorOrTarget === ':host' || !selectorOrTarget) eventTargets.push(this as any);
80
+ else {
81
+ const r = fullOptions.root || 'auto';
82
+ const searchRoots: (HTMLElement | ShadowRoot)[] = [];
83
+ if (r === 'auto') searchRoots.push(this.shadowRoot || (this as any));
84
+ else if (r === 'light') searchRoots.push(this as any);
85
+ else if (r === 'shadow' && this.shadowRoot) searchRoots.push(this.shadowRoot);
86
+ else if (r === 'all') {
87
+ searchRoots.push(this as any);
88
+ if (this.shadowRoot) searchRoots.push(this.shadowRoot);
89
+ }
90
+
91
+ searchRoots.forEach(sr => {
92
+ sr.querySelectorAll(selectorOrTarget).forEach(el => eventTargets.push(el));
93
+ });
94
+ }
95
+
96
+ eventTargets.forEach(t => t.dispatchEvent(event));
97
+ return detail;
98
+ };
35
99
  };
36
100
  }
37
101
 
@@ -3,7 +3,11 @@ export * from './elementDefine';
3
3
  export * from './changedAttribute';
4
4
  export * from './setAttribute';
5
5
  export * from './emitCustomEvent';
6
- export * from './innerHtml';
6
+ export * from './replaceChildren';
7
+ export * from './appendChild';
7
8
  export * from './lifecycles';
8
9
  export * from './query';
9
10
  export * from './queryAll';
11
+ export * from './onConnectedInnerHtml';
12
+ export * from './classList';
13
+ export * from './style';
@@ -11,9 +11,12 @@ export interface InnerHtmlMetadata {
11
11
 
12
12
  export const INNER_HTML_METADATA_KEY = Symbol('simple-web-component:inner-html');
13
13
 
14
- export function innerHtml(options: InnerHtmlOptions): MethodDecorator;
15
- export function innerHtml(target: Object, propertyKey: string | symbol, descriptor: PropertyDescriptor): void;
16
- export function innerHtml(arg1?: InnerHtmlOptions | Object, arg2?: string | symbol, arg3?: PropertyDescriptor): MethodDecorator | void {
14
+ /**
15
+ * @onConnectedInnerHtml decorator to define the initial HTML content when connected.
16
+ */
17
+ export function onConnectedInnerHtml(options: InnerHtmlOptions): MethodDecorator;
18
+ export function onConnectedInnerHtml(target: Object, propertyKey: string | symbol, descriptor: PropertyDescriptor): void;
19
+ export function onConnectedInnerHtml(arg1?: InnerHtmlOptions | Object, arg2?: string | symbol, arg3?: PropertyDescriptor): MethodDecorator | void {
17
20
  const decorator = (options: InnerHtmlOptions, target: Object, propertyKey: string | symbol) => {
18
21
  const constructor = target.constructor;
19
22
  let list = ReflectUtils.getMetadata<InnerHtmlMetadata[]>(INNER_HTML_METADATA_KEY, constructor);
@@ -25,17 +28,15 @@ export function innerHtml(arg1?: InnerHtmlOptions | Object, arg2?: string | symb
25
28
  };
26
29
 
27
30
  if (arg2) {
28
- // Used as @innerHtml
29
31
  return decorator({}, arg1!, arg2);
30
32
  }
31
33
 
32
- // Used as @innerHtml(options)
33
34
  return (target: Object, propertyKey: string | symbol) => {
34
35
  decorator((arg1 as InnerHtmlOptions) || {}, target, propertyKey);
35
36
  };
36
37
  }
37
38
 
38
- export const getInnerHtmlMetadataList = (target: any): InnerHtmlMetadata[] | undefined => {
39
+ export const getOnConnectedInnerHtmlMetadata = (target: any): InnerHtmlMetadata[] | undefined => {
39
40
  const constructor = target instanceof Function ? target : target.constructor;
40
41
  return ReflectUtils.getMetadata(INNER_HTML_METADATA_KEY, constructor);
41
42
  };
@@ -1,71 +1,103 @@
1
1
  import { ReflectUtils } from '@dooboostore/core/reflect/ReflectUtils';
2
- import { getElementConfig } from './elementDefine';
2
+ import { getElementConfig, ensureInit } from './elementDefine';
3
3
  import { SwcUtils } from '../utils/Utils';
4
+ import { SpecialSelector, SwcQueryOptions } from '../types';
4
5
 
5
- export interface QueryOptions {
6
- root?: 'light' | 'shadow' | 'all' | 'auto';
7
- }
6
+ export type QueryOptions = { root?: 'light' | 'shadow' | 'all' | 'auto' };
8
7
 
9
8
  export interface QueryMetadata {
10
- selector: string;
11
- options: QueryOptions;
12
9
  propertyKey: string | symbol;
10
+ selector: string;
11
+ options: SwcQueryOptions;
13
12
  }
14
13
 
15
14
  export const QUERY_METADATA_KEY = Symbol('simple-web-component:query');
16
15
 
16
+ export function query(target: SpecialSelector): PropertyDecorator;
17
+ export function query(selector: string, options?: SwcQueryOptions): PropertyDecorator;
17
18
  /**
18
19
  * @query decorator to inject a single element into a class property.
19
20
  */
20
- export function query(selector: string, options: QueryOptions = {}): PropertyDecorator {
21
- return (target: Object, propertyKey: string | symbol, descriptor?: never): void => {
21
+ export function query(selectorOrTarget: string, options: any = {}): PropertyDecorator {
22
+ return (targetObj: Object, propertyKey: string | symbol, descriptor?: never): void => {
22
23
  if (descriptor !== undefined) {
23
24
  throw new Error(`@query decorator cannot be used on methods. (Method: ${String(propertyKey)})`);
24
25
  }
25
26
 
26
- const constructor = target.constructor;
27
+ const constructor = targetObj.constructor;
27
28
  let queries = ReflectUtils.getMetadata<QueryMetadata[]>(QUERY_METADATA_KEY, constructor);
28
29
  if (!queries) {
29
30
  queries = [];
30
31
  ReflectUtils.defineMetadata(QUERY_METADATA_KEY, queries, constructor);
31
32
  }
32
- queries.push({ selector, options, propertyKey });
33
+ queries.push({ propertyKey, selector: selectorOrTarget, options });
33
34
 
34
- Object.defineProperty(target, propertyKey, {
35
+ // const propertyType = Reflect.getMetadata("design:type", targetObj, propertyKey);
36
+ // console.log(`Property ${String(propertyKey)} type is:`, propertyType.name);
37
+ Object.defineProperty(targetObj, propertyKey, {
35
38
  get(this: HTMLElement) {
39
+ ensureInit(this);
40
+ const selector = selectorOrTarget;
41
+
42
+ const r = options.root || 'auto';
43
+ const applyRoot = (t: any) => {
44
+ if (!t || !(t instanceof HTMLElement)) return t;
45
+ if (r === 'auto') return t.shadowRoot || t;
46
+ if (r === 'shadow') return t.shadowRoot;
47
+ if (r === 'light') return t;
48
+ if (r === 'all') return t.shadowRoot || t; // query only returns one, so shadow preferred
49
+ return t;
50
+ };
51
+
36
52
  // --- Special Selectors: HostSet ---
37
53
  const hostSet = SwcUtils.getHostSet(this);
38
- if (selector === ':parentHost') return hostSet.$parentHost;
39
- if (selector === ':appHost') return hostSet.$appHost;
40
- if (selector === ':firstHost') return hostSet.$firstHost;
41
- if (selector === ':lastHost') return hostSet.$lastHost;
42
- if (selector === ':firstAppHost') return hostSet.$firstAppHost;
43
- if (selector === ':lastAppHost') return hostSet.$lastAppHost;
54
+ if (selector === ':parentHost') return applyRoot(hostSet.$parentHost);
55
+ if (selector === ':appHost') return applyRoot(hostSet.$appHost);
56
+ if (selector === ':firstHost') return applyRoot(hostSet.$firstHost);
57
+ if (selector === ':lastHost') return applyRoot(hostSet.$lastHost);
58
+ if (selector === ':firstAppHost') return applyRoot(hostSet.$firstAppHost);
59
+ if (selector === ':lastAppHost') return applyRoot(hostSet.$lastAppHost);
44
60
 
45
61
  // --- Special Selectors: Env ---
46
62
  const config = getElementConfig(this);
47
63
  const win = config?.window || window;
48
- const doc = win.document;
49
-
50
64
  if (selector === ':window') return win;
51
- if (selector === ':document') return doc;
52
- if (!selector || selector === ':host') return this;
65
+ if (selector === ':document') return win.document;
66
+ if (selector === ':host') return applyRoot(this);
53
67
 
54
68
  // --- Standard Selectors ---
55
- const r = options.root || 'auto';
56
-
57
- if (r === 'shadow') {
58
- return this.shadowRoot ? this.shadowRoot.querySelector(selector) : null;
59
- }
60
- if (r === 'light') {
61
- return this.querySelector(selector);
62
- }
69
+ if (r === 'shadow') return this.shadowRoot ? this.shadowRoot.querySelector(selector) : null;
70
+ if (r === 'light') return this.querySelector(selector);
63
71
  if (r === 'all') {
64
- return this.shadowRoot?.querySelector(selector) || this.querySelector(selector);
72
+ const shadowMatch = this.shadowRoot ? this.shadowRoot.querySelector(selector) : null;
73
+ return shadowMatch || this.querySelector(selector);
65
74
  }
66
- // auto
67
75
  return (this.shadowRoot || this).querySelector(selector);
68
76
  },
77
+ set(this: HTMLElement, nv: any) {
78
+ ensureInit(this);
79
+ if (nv === null || nv === undefined) {
80
+ const selector = selectorOrTarget;
81
+ if (selector.startsWith(':') && selector !== ':host') return;
82
+
83
+ const r = options.root || 'auto';
84
+ const targets: Element[] = [];
85
+
86
+ if (r === 'shadow') {
87
+ if (this.shadowRoot?.querySelector(selector)) targets.push(this.shadowRoot.querySelector(selector)!);
88
+ } else if (r === 'light') {
89
+ if (this.querySelector(selector)) targets.push(this.querySelector(selector)!);
90
+ } else if (r === 'all') {
91
+ if (this.shadowRoot?.querySelector(selector)) targets.push(this.shadowRoot.querySelector(selector)!);
92
+ if (this.querySelector(selector)) targets.push(this.querySelector(selector)!);
93
+ } else {
94
+ const el = (this.shadowRoot || this).querySelector(selector);
95
+ if (el) targets.push(el);
96
+ }
97
+
98
+ targets.forEach(t => t.remove());
99
+ }
100
+ },
69
101
  enumerable: true,
70
102
  configurable: true
71
103
  });
@@ -1,69 +1,101 @@
1
1
  import { ReflectUtils } from '@dooboostore/core/reflect/ReflectUtils';
2
- import { getElementConfig } from './elementDefine';
2
+ import { getElementConfig, ensureInit } from './elementDefine';
3
3
  import { SwcUtils } from '../utils/Utils';
4
-
5
- export interface QueryAllOptions {
6
- root?: 'light' | 'shadow' | 'all' | 'auto';
7
- }
4
+ import { SpecialSelector, SwcQueryOptions } from '../types';
8
5
 
9
6
  export interface QueryAllMetadata {
10
- selector: string;
11
- options: QueryAllOptions;
12
7
  propertyKey: string | symbol;
8
+ selector: string;
9
+ options: SwcQueryOptions;
13
10
  }
14
11
 
15
12
  export const QUERY_ALL_METADATA_KEY = Symbol('simple-web-component:query-all');
16
13
 
14
+ export function queryAll(target: SpecialSelector): PropertyDecorator;
15
+ export function queryAll(selector: string, options?: SwcQueryOptions): PropertyDecorator;
17
16
  /**
18
17
  * @queryAll decorator to inject a list of elements into a class property.
19
18
  */
20
- export function queryAll(selector: string, options: QueryAllOptions = {}): PropertyDecorator {
21
- return (target: Object, propertyKey: string | symbol, descriptor?: never): void => {
19
+ export function queryAll(selectorOrTarget: string, options: any = {}): PropertyDecorator {
20
+ return (targetObj: Object, propertyKey: string | symbol, descriptor?: never): void => {
22
21
  if (descriptor !== undefined) {
23
22
  throw new Error(`@queryAll decorator cannot be used on methods. (Method: ${String(propertyKey)})`);
24
23
  }
25
24
 
26
- const constructor = target.constructor;
25
+ const constructor = targetObj.constructor;
27
26
  let queries = ReflectUtils.getMetadata<QueryAllMetadata[]>(QUERY_ALL_METADATA_KEY, constructor);
28
27
  if (!queries) {
29
28
  queries = [];
30
29
  ReflectUtils.defineMetadata(QUERY_ALL_METADATA_KEY, queries, constructor);
31
30
  }
32
- queries.push({ selector, options, propertyKey });
31
+ queries.push({ propertyKey, selector: selectorOrTarget, options });
33
32
 
34
- Object.defineProperty(target, propertyKey, {
33
+ Object.defineProperty(targetObj, propertyKey, {
35
34
  get(this: HTMLElement) {
35
+ ensureInit(this);
36
+ const selector = selectorOrTarget;
37
+
38
+ const r = options.root || 'auto';
39
+ const applyRoot = (t: any): any[] => {
40
+ if (!t) return [];
41
+ const items = Array.isArray(t) ? t : [t];
42
+ const results: any[] = [];
43
+ items.forEach(it => {
44
+ if (!(it instanceof HTMLElement)) {
45
+ results.push(it);
46
+ return;
47
+ }
48
+ if (r === 'auto') results.push(it.shadowRoot || it);
49
+ else {
50
+ if (r === 'light' || r === 'all') results.push(it);
51
+ if ((r === 'shadow' || r === 'all') && it.shadowRoot) results.push(it.shadowRoot);
52
+ }
53
+ });
54
+ return results;
55
+ };
56
+
36
57
  // --- Special Selectors: HostSet ---
37
58
  const hostSet = SwcUtils.getHostSet(this);
38
- if (selector === ':hosts') return hostSet.$hosts;
39
- if (selector === ':appHosts') return hostSet.$appHosts;
59
+ if (selector === ':hosts') return applyRoot(hostSet.$hosts);
60
+ if (selector === ':appHosts') return applyRoot(hostSet.$appHosts);
40
61
 
41
62
  // --- Special Selectors: Env ---
42
63
  const config = getElementConfig(this);
43
64
  const win = config?.window || window;
44
- const doc = win.document;
45
-
46
65
  if (selector === ':window') return [win];
47
- if (selector === ':document') return [doc];
48
- if (!selector || selector === ':host') return [this];
66
+ if (selector === ':document') return [win.document];
67
+ if (selector === ':host') return applyRoot(this);
49
68
 
50
69
  // --- Standard Selectors ---
51
- const r = options.root || 'auto';
52
-
53
- if (r === 'shadow') {
54
- return this.shadowRoot ? this.shadowRoot.querySelectorAll(selector) : [];
55
- }
56
- if (r === 'light') {
57
- return this.querySelectorAll(selector);
58
- }
70
+ if (r === 'shadow') return this.shadowRoot ? Array.from(this.shadowRoot.querySelectorAll(selector)) : [];
71
+ if (r === 'light') return Array.from(this.querySelectorAll(selector));
59
72
  if (r === 'all') {
60
73
  const sNodes = this.shadowRoot ? Array.from(this.shadowRoot.querySelectorAll(selector)) : [];
61
74
  const lNodes = Array.from(this.querySelectorAll(selector));
62
75
  return [...sNodes, ...lNodes];
63
76
  }
64
- // auto
65
77
  const root = this.shadowRoot || this;
66
- return root.querySelectorAll(selector);
78
+ return Array.from(root.querySelectorAll(selector));
79
+ },
80
+ set(this: HTMLElement, nv: any) {
81
+ ensureInit(this);
82
+ if (nv === null || nv === undefined || (Array.isArray(nv) && nv.length === 0)) {
83
+ const selector = selectorOrTarget;
84
+ if (selector.startsWith(':') && selector !== ':host') return;
85
+
86
+ const r = options.root || 'auto';
87
+ let targets: (Element | Node)[] = [];
88
+ if (r === 'shadow') targets = this.shadowRoot ? Array.from(this.shadowRoot.querySelectorAll(selector)) : [];
89
+ else if (r === 'light') targets = Array.from(this.querySelectorAll(selector));
90
+ else if (r === 'all') {
91
+ const sNodes = this.shadowRoot ? Array.from(this.shadowRoot.querySelectorAll(selector)) : [];
92
+ const lNodes = Array.from(this.querySelectorAll(selector));
93
+ targets = [...sNodes, ...lNodes];
94
+ } else {
95
+ targets = Array.from((this.shadowRoot || this).querySelectorAll(selector));
96
+ }
97
+ targets.forEach(t => (t as Element).remove());
98
+ }
67
99
  },
68
100
  enumerable: true,
69
101
  configurable: true
@@ -0,0 +1,64 @@
1
+ import { ReflectUtils } from '@dooboostore/core/reflect/ReflectUtils';
2
+ import { ensureInit, getElementConfig } from './elementDefine';
3
+
4
+ export const REPLACE_CHILDREN_METADATA_KEY = Symbol('simple-web-component:replace-children');
5
+
6
+ /**
7
+ * @replaceChildren decorator to surgically replace children of a target element.
8
+ * Usage: @replaceChildren('#container') renderPart() { return '<div>New Content</div>'; }
9
+ */
10
+ export function replaceChildren(selector: string): MethodDecorator {
11
+ return (target: Object, propertyKey: string | symbol, descriptor: PropertyDescriptor) => {
12
+ const constructor = target.constructor;
13
+ let meta = ReflectUtils.getOwnMetadata(REPLACE_CHILDREN_METADATA_KEY, constructor) as Map<string | symbol, string>;
14
+ if (!meta) {
15
+ meta = new Map<string | symbol, string>();
16
+ ReflectUtils.defineMetadata(REPLACE_CHILDREN_METADATA_KEY, meta, constructor);
17
+ }
18
+ meta.set(propertyKey, selector);
19
+
20
+ const original = descriptor.value;
21
+ descriptor.value = async function (...args: any[]) {
22
+ ensureInit(this);
23
+ const res = await original.apply(this, args);
24
+ if (res !== undefined) {
25
+ const conf = getElementConfig(this);
26
+ const currentWin = (this as any)._resolveWindow?.(conf) || ((typeof window !== 'undefined' ? window : undefined) as Window);
27
+ const currentDoc = currentWin.document;
28
+
29
+ let targetEl: Element | null = null;
30
+ if (selector === ':host' || !selector) {
31
+ targetEl = this as any;
32
+ } else {
33
+ targetEl = (this.shadowRoot || (this as any)).querySelector(selector);
34
+ }
35
+
36
+ if (targetEl) {
37
+ if (typeof res === 'string') {
38
+ targetEl.textContent = res;
39
+ } else {
40
+ const nodes: Node[] = Array.isArray(res) ? res.map(n => (typeof n === 'string' ? currentDoc.createTextNode(n) : n)) : [res as Node];
41
+ (targetEl as any).replaceChildren(...nodes);
42
+ }
43
+ }
44
+ }
45
+ return res;
46
+ };
47
+ };
48
+ }
49
+
50
+ export const getReplaceChildrenMetadata = (target: any): Map<string | symbol, string> | undefined => {
51
+ const constructor = target instanceof Function ? target : target.constructor;
52
+ return ReflectUtils.getMetadata(REPLACE_CHILDREN_METADATA_KEY, constructor);
53
+ };
54
+
55
+ export const findAllReplaceChildrenMetadata = (target: any): Map<string | symbol, string> => {
56
+ const result = new Map<string | symbol, string>();
57
+ const maps = ReflectUtils.findAllMetadata<Map<string | symbol, string>>(REPLACE_CHILDREN_METADATA_KEY, target);
58
+ maps.forEach(map => {
59
+ if (map instanceof Map) {
60
+ map.forEach((v, k) => result.set(k, v));
61
+ }
62
+ });
63
+ return result;
64
+ };
@@ -1,27 +1,69 @@
1
1
  import { ReflectUtils } from '@dooboostore/core/reflect/ReflectUtils';
2
+ import { ensureInit, getElementConfig } from './elementDefine';
3
+ import { SwcUtils } from '../utils/Utils';
4
+
5
+ export interface SetAttributeMetadata {
6
+ propertyKey: string | symbol;
7
+ selector: string;
8
+ name: string;
9
+ }
2
10
 
3
11
  export const SET_ATTRIBUTE_METADATA_KEY = Symbol('simple-web-component:set-attribute');
4
12
 
5
- export function setAttribute(attributeName?: string): MethodDecorator {
6
- return (target: Object, propertyKey: string | symbol) => {
13
+ /**
14
+ * @setAttribute decorator to surgically update an attribute of a target element.
15
+ * Usage: @setAttribute(':host', 'count')
16
+ * Usage: @setAttribute('#child', 'disabled')
17
+ */
18
+ export function setAttribute(selector: string, name: string): MethodDecorator {
19
+ return (target: Object, propertyKey: string | symbol, descriptor: PropertyDescriptor) => {
7
20
  const constructor = target.constructor;
8
- let meta = ReflectUtils.getOwnMetadata(SET_ATTRIBUTE_METADATA_KEY, constructor) as Map<string, string | symbol>;
9
- if (!meta) {
10
- meta = new Map<string, string | symbol>();
11
- ReflectUtils.defineMetadata(SET_ATTRIBUTE_METADATA_KEY, meta, constructor);
21
+ let metaList = ReflectUtils.getOwnMetadata(SET_ATTRIBUTE_METADATA_KEY, constructor) as Map<string | symbol, SetAttributeMetadata>;
22
+ if (!metaList) {
23
+ metaList = new Map<string | symbol, SetAttributeMetadata>();
24
+ ReflectUtils.defineMetadata(SET_ATTRIBUTE_METADATA_KEY, metaList, constructor);
12
25
  }
13
- meta.set(attributeName || String(propertyKey), propertyKey);
26
+ metaList.set(propertyKey, { propertyKey, selector, name });
27
+
28
+ const original = descriptor.value;
29
+ descriptor.value = async function (...args: any[]) {
30
+ ensureInit(this);
31
+ const res = await original.apply(this, args);
32
+ if (res !== undefined) {
33
+ const hostSet = SwcUtils.getHostSet(this as any);
34
+ const conf = getElementConfig(this);
35
+ const currentWin = (this as any)._resolveWindow?.(conf) || ((typeof window !== 'undefined' ? window : undefined) as Window);
36
+
37
+ let targetEl: HTMLElement | null = null;
38
+ if (selector === ':host' || !selector) targetEl = this as any;
39
+ else if (selector === ':window') targetEl = currentWin as any;
40
+ else if (selector === ':document') targetEl = currentWin.document as any;
41
+ else if (selector === ':parentHost') targetEl = hostSet.$parentHost;
42
+ else if (selector === ':appHost') targetEl = hostSet.$appHost;
43
+ else if (selector === ':firstHost') targetEl = hostSet.$firstHost;
44
+ else if (selector === ':lastHost') targetEl = hostSet.$lastHost;
45
+ else if (selector === ':firstAppHost') targetEl = hostSet.$firstAppHost;
46
+ else if (selector === ':lastAppHost') targetEl = hostSet.$lastAppHost;
47
+ else targetEl = (this.shadowRoot || (this as any)).querySelector(selector);
48
+
49
+ if (targetEl) {
50
+ if (res === null) targetEl.removeAttribute(name);
51
+ else targetEl.setAttribute(name, String(res));
52
+ }
53
+ }
54
+ return res;
55
+ };
14
56
  };
15
57
  }
16
58
 
17
- export const getSetAttributeMetadata = (target: any): Map<string, string | symbol> | undefined => {
59
+ export const getSetAttributeMetadata = (target: any): Map<string | symbol, SetAttributeMetadata> | undefined => {
18
60
  const constructor = target instanceof Function ? target : target.constructor;
19
61
  return ReflectUtils.getMetadata(SET_ATTRIBUTE_METADATA_KEY, constructor);
20
62
  };
21
63
 
22
- export const findAllSetAttributeMetadata = (target: any): Map<string, string | symbol> => {
23
- const result = new Map<string, string | symbol>();
24
- const maps = ReflectUtils.findAllMetadata<any>(SET_ATTRIBUTE_METADATA_KEY, target);
64
+ export const findAllSetAttributeMetadata = (target: any): Map<string | symbol, SetAttributeMetadata> => {
65
+ const result = new Map<string | symbol, SetAttributeMetadata>();
66
+ const maps = ReflectUtils.findAllMetadata<Map<string | symbol, SetAttributeMetadata>>(SET_ATTRIBUTE_METADATA_KEY, target);
25
67
  maps.forEach(map => {
26
68
  if (map instanceof Map) {
27
69
  map.forEach((v, k) => result.set(k, v));
@@ -0,0 +1,89 @@
1
+ import { ReflectUtils } from '@dooboostore/core/reflect/ReflectUtils';
2
+ import { ensureInit } from './elementDefine';
3
+ import { SwcUtils } from '../utils/Utils';
4
+
5
+ export type StyleAction = 'set' | 'update' | 'remove';
6
+
7
+ export interface StyleMetadata {
8
+ propertyKey: string | symbol;
9
+ selector: string;
10
+ action: StyleAction;
11
+ }
12
+
13
+ export const STYLE_METADATA_KEY = Symbol('simple-web-component:style');
14
+
15
+ function createStyleDecorator(action: StyleAction) {
16
+ return (selector: string): MethodDecorator => {
17
+ return (target: Object, propertyKey: string | symbol, descriptor: PropertyDescriptor) => {
18
+ const constructor = target.constructor;
19
+ let metaList = ReflectUtils.getOwnMetadata(STYLE_METADATA_KEY, constructor) as Map<string | symbol, StyleMetadata>;
20
+ if (!metaList) {
21
+ metaList = new Map<string | symbol, StyleMetadata>();
22
+ ReflectUtils.defineMetadata(STYLE_METADATA_KEY, metaList, constructor);
23
+ }
24
+ metaList.set(propertyKey, { propertyKey, selector, action });
25
+
26
+ const original = descriptor.value;
27
+ descriptor.value = async function (...args: any[]) {
28
+ ensureInit(this);
29
+ const res = await original.apply(this, args);
30
+ if (res !== undefined) {
31
+ const hostSet = SwcUtils.getHostSet(this as any);
32
+ let targetEl: HTMLElement | null = null;
33
+ if (selector === ':host' || !selector) targetEl = this as any;
34
+ else if (selector === ':parentHost') targetEl = hostSet.$parentHost;
35
+ else if (selector === ':appHost') targetEl = hostSet.$appHost;
36
+ else targetEl = (this.shadowRoot || (this as any)).querySelector(selector);
37
+
38
+ if (targetEl) {
39
+ if (action === 'set') {
40
+ targetEl.style.cssText = '';
41
+ if (typeof res === 'object' && res !== null) {
42
+ Object.assign(targetEl.style, res);
43
+ } else if (typeof res === 'string') {
44
+ targetEl.style.cssText = res;
45
+ }
46
+ } else if (action === 'update') {
47
+ if (typeof res === 'object' && res !== null) {
48
+ Object.assign(targetEl.style, res);
49
+ }
50
+ } else if (action === 'remove') {
51
+ const props = Array.isArray(res) ? res : [res];
52
+ props.forEach(p => targetEl!.style.removeProperty(String(p)));
53
+ }
54
+ }
55
+ }
56
+ return res;
57
+ };
58
+ };
59
+ };
60
+ }
61
+
62
+ /**
63
+ * @setStyle decorator to surgically set styles on a target element (replaces all existing styles).
64
+ * Usage: @setStyle('#box') getStyles() { return { color: 'red', display: 'block' }; }
65
+ */
66
+ export const setStyle = createStyleDecorator('set');
67
+
68
+ /**
69
+ * @updateStyle decorator to surgically update styles on a target element (merges with existing styles).
70
+ * Usage: @updateStyle('#box') updateStyles() { return { color: 'blue' }; }
71
+ */
72
+ export const updateStyle = createStyleDecorator('update');
73
+
74
+ /**
75
+ * @removeStyle decorator to surgically remove styles from a target element.
76
+ * Usage: @removeStyle('#box') clearStyles() { return ['color', 'display']; }
77
+ */
78
+ export const removeStyle = createStyleDecorator('remove');
79
+
80
+ export const findAllStyleMetadata = (target: any): Map<string | symbol, StyleMetadata> => {
81
+ const result = new Map<string | symbol, StyleMetadata>();
82
+ const maps = ReflectUtils.findAllMetadata<Map<string | symbol, StyleMetadata>>(STYLE_METADATA_KEY, target);
83
+ maps.forEach(map => {
84
+ if (map instanceof Map) {
85
+ map.forEach((v, k) => result.set(k, v));
86
+ }
87
+ });
88
+ return result;
89
+ };