@dooboostore/simple-web-component 1.0.6 → 1.0.7

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 (339) hide show
  1. package/README.md +134 -87
  2. package/dist/cjs/decorators/addEventListener.js.map +1 -1
  3. package/dist/cjs/decorators/elementDefine.js +59 -35
  4. package/dist/cjs/decorators/elementDefine.js.map +2 -2
  5. package/dist/cjs/decorators/query.js +27 -5
  6. package/dist/cjs/decorators/query.js.map +2 -2
  7. package/dist/cjs/decorators/queryAll.js +27 -5
  8. package/dist/cjs/decorators/queryAll.js.map +2 -2
  9. package/dist/cjs/decorators/state.js.map +1 -1
  10. package/dist/cjs/elements/SwcChoose.js.map +2 -2
  11. package/dist/cjs/elements/SwcForOf.js +3 -1
  12. package/dist/cjs/elements/SwcForOf.js.map +2 -2
  13. package/dist/cjs/elements/SwcObject.js +8 -6
  14. package/dist/cjs/elements/SwcObject.js.map +2 -2
  15. package/dist/cjs/index.js +3 -6
  16. package/dist/cjs/index.js.map +2 -2
  17. package/dist/cjs/is/SwcIfAnchor.js +1 -1
  18. package/dist/cjs/is/SwcIfAnchor.js.map +2 -2
  19. package/dist/cjs/is/SwcIfArea.js +1 -1
  20. package/dist/cjs/is/SwcIfArea.js.map +2 -2
  21. package/dist/cjs/is/SwcIfAudio.js +1 -1
  22. package/dist/cjs/is/SwcIfAudio.js.map +2 -2
  23. package/dist/cjs/is/SwcIfBase.js +1 -1
  24. package/dist/cjs/is/SwcIfBase.js.map +2 -2
  25. package/dist/cjs/is/SwcIfButton.js +1 -1
  26. package/dist/cjs/is/SwcIfButton.js.map +2 -2
  27. package/dist/cjs/is/SwcIfCanvas.js +1 -1
  28. package/dist/cjs/is/SwcIfCanvas.js.map +2 -2
  29. package/dist/cjs/is/SwcIfData.js +1 -1
  30. package/dist/cjs/is/SwcIfData.js.map +2 -2
  31. package/dist/cjs/is/SwcIfDataList.js +1 -1
  32. package/dist/cjs/is/SwcIfDataList.js.map +2 -2
  33. package/dist/cjs/is/SwcIfDetails.js +1 -1
  34. package/dist/cjs/is/SwcIfDetails.js.map +2 -2
  35. package/dist/cjs/is/SwcIfDialog.js +1 -1
  36. package/dist/cjs/is/SwcIfDialog.js.map +2 -2
  37. package/dist/cjs/is/SwcIfDiv.js +1 -1
  38. package/dist/cjs/is/SwcIfDiv.js.map +2 -2
  39. package/dist/cjs/is/SwcIfDl.js +1 -1
  40. package/dist/cjs/is/SwcIfDl.js.map +2 -2
  41. package/dist/cjs/is/SwcIfEmbed.js +1 -1
  42. package/dist/cjs/is/SwcIfEmbed.js.map +2 -2
  43. package/dist/cjs/is/SwcIfFieldSet.js +1 -1
  44. package/dist/cjs/is/SwcIfFieldSet.js.map +2 -2
  45. package/dist/cjs/is/SwcIfForm.js +1 -1
  46. package/dist/cjs/is/SwcIfForm.js.map +2 -2
  47. package/dist/cjs/is/SwcIfHeading.js +1 -1
  48. package/dist/cjs/is/SwcIfHeading.js.map +2 -2
  49. package/dist/cjs/is/SwcIfHr.js +1 -1
  50. package/dist/cjs/is/SwcIfHr.js.map +2 -2
  51. package/dist/cjs/is/SwcIfIFrame.js +1 -1
  52. package/dist/cjs/is/SwcIfIFrame.js.map +2 -2
  53. package/dist/cjs/is/SwcIfImage.js +1 -1
  54. package/dist/cjs/is/SwcIfImage.js.map +2 -2
  55. package/dist/cjs/is/SwcIfInput.js +1 -1
  56. package/dist/cjs/is/SwcIfInput.js.map +2 -2
  57. package/dist/cjs/is/SwcIfLabel.js +1 -1
  58. package/dist/cjs/is/SwcIfLabel.js.map +2 -2
  59. package/dist/cjs/is/SwcIfLegend.js +1 -1
  60. package/dist/cjs/is/SwcIfLegend.js.map +2 -2
  61. package/dist/cjs/is/SwcIfLi.js +1 -1
  62. package/dist/cjs/is/SwcIfLi.js.map +2 -2
  63. package/dist/cjs/is/SwcIfLink.js +1 -1
  64. package/dist/cjs/is/SwcIfLink.js.map +2 -2
  65. package/dist/cjs/is/SwcIfMap.js +1 -1
  66. package/dist/cjs/is/SwcIfMap.js.map +2 -2
  67. package/dist/cjs/is/SwcIfMeta.js +1 -1
  68. package/dist/cjs/is/SwcIfMeta.js.map +2 -2
  69. package/dist/cjs/is/SwcIfMeter.js +1 -1
  70. package/dist/cjs/is/SwcIfMeter.js.map +2 -2
  71. package/dist/cjs/is/SwcIfMod.js +1 -1
  72. package/dist/cjs/is/SwcIfMod.js.map +2 -2
  73. package/dist/cjs/is/SwcIfObject.js +1 -1
  74. package/dist/cjs/is/SwcIfObject.js.map +2 -2
  75. package/dist/cjs/is/SwcIfOl.js +1 -1
  76. package/dist/cjs/is/SwcIfOl.js.map +2 -2
  77. package/dist/cjs/is/SwcIfOptGroup.js +1 -1
  78. package/dist/cjs/is/SwcIfOptGroup.js.map +2 -2
  79. package/dist/cjs/is/SwcIfOption.js +1 -1
  80. package/dist/cjs/is/SwcIfOption.js.map +2 -2
  81. package/dist/cjs/is/SwcIfOutput.js +1 -1
  82. package/dist/cjs/is/SwcIfOutput.js.map +2 -2
  83. package/dist/cjs/is/SwcIfParagraph.js +1 -1
  84. package/dist/cjs/is/SwcIfParagraph.js.map +2 -2
  85. package/dist/cjs/is/SwcIfParam.js +1 -1
  86. package/dist/cjs/is/SwcIfParam.js.map +2 -2
  87. package/dist/cjs/is/SwcIfPicture.js +1 -1
  88. package/dist/cjs/is/SwcIfPicture.js.map +2 -2
  89. package/dist/cjs/is/SwcIfPre.js +1 -1
  90. package/dist/cjs/is/SwcIfPre.js.map +2 -2
  91. package/dist/cjs/is/SwcIfProgress.js +1 -1
  92. package/dist/cjs/is/SwcIfProgress.js.map +2 -2
  93. package/dist/cjs/is/SwcIfQuote.js +1 -1
  94. package/dist/cjs/is/SwcIfQuote.js.map +2 -2
  95. package/dist/cjs/is/SwcIfScript.js +1 -1
  96. package/dist/cjs/is/SwcIfScript.js.map +2 -2
  97. package/dist/cjs/is/SwcIfSelect.js +1 -1
  98. package/dist/cjs/is/SwcIfSelect.js.map +2 -2
  99. package/dist/cjs/is/SwcIfSlot.js +1 -1
  100. package/dist/cjs/is/SwcIfSlot.js.map +2 -2
  101. package/dist/cjs/is/SwcIfSource.js +1 -1
  102. package/dist/cjs/is/SwcIfSource.js.map +2 -2
  103. package/dist/cjs/is/SwcIfSpan.js +1 -1
  104. package/dist/cjs/is/SwcIfSpan.js.map +2 -2
  105. package/dist/cjs/is/SwcIfStyle.js +1 -1
  106. package/dist/cjs/is/SwcIfStyle.js.map +2 -2
  107. package/dist/cjs/is/SwcIfTable.js +1 -1
  108. package/dist/cjs/is/SwcIfTable.js.map +2 -2
  109. package/dist/cjs/is/SwcIfTableCell.js +1 -1
  110. package/dist/cjs/is/SwcIfTableCell.js.map +2 -2
  111. package/dist/cjs/is/SwcIfTableRow.js +1 -1
  112. package/dist/cjs/is/SwcIfTableRow.js.map +2 -2
  113. package/dist/cjs/is/SwcIfTableSection.js +1 -1
  114. package/dist/cjs/is/SwcIfTableSection.js.map +2 -2
  115. package/dist/cjs/is/SwcIfTemplate.js +1 -1
  116. package/dist/cjs/is/SwcIfTemplate.js.map +2 -2
  117. package/dist/cjs/is/SwcIfTextArea.js +1 -1
  118. package/dist/cjs/is/SwcIfTextArea.js.map +2 -2
  119. package/dist/cjs/is/SwcIfTime.js +1 -1
  120. package/dist/cjs/is/SwcIfTime.js.map +2 -2
  121. package/dist/cjs/is/SwcIfTitle.js +1 -1
  122. package/dist/cjs/is/SwcIfTitle.js.map +2 -2
  123. package/dist/cjs/is/SwcIfTrack.js +1 -1
  124. package/dist/cjs/is/SwcIfTrack.js.map +2 -2
  125. package/dist/cjs/is/SwcIfUl.js +1 -1
  126. package/dist/cjs/is/SwcIfUl.js.map +2 -2
  127. package/dist/cjs/is/SwcIfVideo.js +1 -1
  128. package/dist/cjs/is/SwcIfVideo.js.map +2 -2
  129. package/dist/esm/decorators/addEventListener.js.map +1 -1
  130. package/dist/esm/decorators/elementDefine.js +59 -35
  131. package/dist/esm/decorators/elementDefine.js.map +2 -2
  132. package/dist/esm/decorators/query.js +27 -5
  133. package/dist/esm/decorators/query.js.map +2 -2
  134. package/dist/esm/decorators/queryAll.js +27 -5
  135. package/dist/esm/decorators/queryAll.js.map +2 -2
  136. package/dist/esm/decorators/state.js.map +1 -1
  137. package/dist/esm/elements/SwcChoose.js.map +2 -2
  138. package/dist/esm/elements/SwcForOf.js +3 -1
  139. package/dist/esm/elements/SwcForOf.js.map +2 -2
  140. package/dist/esm/elements/SwcObject.js +8 -6
  141. package/dist/esm/elements/SwcObject.js.map +2 -2
  142. package/dist/esm/index.js +3 -6
  143. package/dist/esm/index.js.map +2 -2
  144. package/dist/esm/is/SwcIfAnchor.js +1 -1
  145. package/dist/esm/is/SwcIfAnchor.js.map +2 -2
  146. package/dist/esm/is/SwcIfArea.js +1 -1
  147. package/dist/esm/is/SwcIfArea.js.map +2 -2
  148. package/dist/esm/is/SwcIfAudio.js +1 -1
  149. package/dist/esm/is/SwcIfAudio.js.map +2 -2
  150. package/dist/esm/is/SwcIfBase.js +1 -1
  151. package/dist/esm/is/SwcIfBase.js.map +2 -2
  152. package/dist/esm/is/SwcIfButton.js +1 -1
  153. package/dist/esm/is/SwcIfButton.js.map +2 -2
  154. package/dist/esm/is/SwcIfCanvas.js +1 -1
  155. package/dist/esm/is/SwcIfCanvas.js.map +2 -2
  156. package/dist/esm/is/SwcIfData.js +1 -1
  157. package/dist/esm/is/SwcIfData.js.map +2 -2
  158. package/dist/esm/is/SwcIfDataList.js +1 -1
  159. package/dist/esm/is/SwcIfDataList.js.map +2 -2
  160. package/dist/esm/is/SwcIfDetails.js +1 -1
  161. package/dist/esm/is/SwcIfDetails.js.map +2 -2
  162. package/dist/esm/is/SwcIfDialog.js +1 -1
  163. package/dist/esm/is/SwcIfDialog.js.map +2 -2
  164. package/dist/esm/is/SwcIfDiv.js +1 -1
  165. package/dist/esm/is/SwcIfDiv.js.map +2 -2
  166. package/dist/esm/is/SwcIfDl.js +1 -1
  167. package/dist/esm/is/SwcIfDl.js.map +2 -2
  168. package/dist/esm/is/SwcIfEmbed.js +1 -1
  169. package/dist/esm/is/SwcIfEmbed.js.map +2 -2
  170. package/dist/esm/is/SwcIfFieldSet.js +1 -1
  171. package/dist/esm/is/SwcIfFieldSet.js.map +2 -2
  172. package/dist/esm/is/SwcIfForm.js +1 -1
  173. package/dist/esm/is/SwcIfForm.js.map +2 -2
  174. package/dist/esm/is/SwcIfHeading.js +1 -1
  175. package/dist/esm/is/SwcIfHeading.js.map +2 -2
  176. package/dist/esm/is/SwcIfHr.js +1 -1
  177. package/dist/esm/is/SwcIfHr.js.map +2 -2
  178. package/dist/esm/is/SwcIfIFrame.js +1 -1
  179. package/dist/esm/is/SwcIfIFrame.js.map +2 -2
  180. package/dist/esm/is/SwcIfImage.js +1 -1
  181. package/dist/esm/is/SwcIfImage.js.map +2 -2
  182. package/dist/esm/is/SwcIfInput.js +1 -1
  183. package/dist/esm/is/SwcIfInput.js.map +2 -2
  184. package/dist/esm/is/SwcIfLabel.js +1 -1
  185. package/dist/esm/is/SwcIfLabel.js.map +2 -2
  186. package/dist/esm/is/SwcIfLegend.js +1 -1
  187. package/dist/esm/is/SwcIfLegend.js.map +2 -2
  188. package/dist/esm/is/SwcIfLi.js +1 -1
  189. package/dist/esm/is/SwcIfLi.js.map +2 -2
  190. package/dist/esm/is/SwcIfLink.js +1 -1
  191. package/dist/esm/is/SwcIfLink.js.map +2 -2
  192. package/dist/esm/is/SwcIfMap.js +1 -1
  193. package/dist/esm/is/SwcIfMap.js.map +2 -2
  194. package/dist/esm/is/SwcIfMeta.js +1 -1
  195. package/dist/esm/is/SwcIfMeta.js.map +2 -2
  196. package/dist/esm/is/SwcIfMeter.js +1 -1
  197. package/dist/esm/is/SwcIfMeter.js.map +2 -2
  198. package/dist/esm/is/SwcIfMod.js +1 -1
  199. package/dist/esm/is/SwcIfMod.js.map +2 -2
  200. package/dist/esm/is/SwcIfObject.js +1 -1
  201. package/dist/esm/is/SwcIfObject.js.map +2 -2
  202. package/dist/esm/is/SwcIfOl.js +1 -1
  203. package/dist/esm/is/SwcIfOl.js.map +2 -2
  204. package/dist/esm/is/SwcIfOptGroup.js +1 -1
  205. package/dist/esm/is/SwcIfOptGroup.js.map +2 -2
  206. package/dist/esm/is/SwcIfOption.js +1 -1
  207. package/dist/esm/is/SwcIfOption.js.map +2 -2
  208. package/dist/esm/is/SwcIfOutput.js +1 -1
  209. package/dist/esm/is/SwcIfOutput.js.map +2 -2
  210. package/dist/esm/is/SwcIfParagraph.js +1 -1
  211. package/dist/esm/is/SwcIfParagraph.js.map +2 -2
  212. package/dist/esm/is/SwcIfParam.js +1 -1
  213. package/dist/esm/is/SwcIfParam.js.map +2 -2
  214. package/dist/esm/is/SwcIfPicture.js +1 -1
  215. package/dist/esm/is/SwcIfPicture.js.map +2 -2
  216. package/dist/esm/is/SwcIfPre.js +1 -1
  217. package/dist/esm/is/SwcIfPre.js.map +2 -2
  218. package/dist/esm/is/SwcIfProgress.js +1 -1
  219. package/dist/esm/is/SwcIfProgress.js.map +2 -2
  220. package/dist/esm/is/SwcIfQuote.js +1 -1
  221. package/dist/esm/is/SwcIfQuote.js.map +2 -2
  222. package/dist/esm/is/SwcIfScript.js +1 -1
  223. package/dist/esm/is/SwcIfScript.js.map +2 -2
  224. package/dist/esm/is/SwcIfSelect.js +1 -1
  225. package/dist/esm/is/SwcIfSelect.js.map +2 -2
  226. package/dist/esm/is/SwcIfSlot.js +1 -1
  227. package/dist/esm/is/SwcIfSlot.js.map +2 -2
  228. package/dist/esm/is/SwcIfSource.js +1 -1
  229. package/dist/esm/is/SwcIfSource.js.map +2 -2
  230. package/dist/esm/is/SwcIfSpan.js +1 -1
  231. package/dist/esm/is/SwcIfSpan.js.map +2 -2
  232. package/dist/esm/is/SwcIfStyle.js +1 -1
  233. package/dist/esm/is/SwcIfStyle.js.map +2 -2
  234. package/dist/esm/is/SwcIfTable.js +1 -1
  235. package/dist/esm/is/SwcIfTable.js.map +2 -2
  236. package/dist/esm/is/SwcIfTableCell.js +1 -1
  237. package/dist/esm/is/SwcIfTableCell.js.map +2 -2
  238. package/dist/esm/is/SwcIfTableRow.js +1 -1
  239. package/dist/esm/is/SwcIfTableRow.js.map +2 -2
  240. package/dist/esm/is/SwcIfTableSection.js +1 -1
  241. package/dist/esm/is/SwcIfTableSection.js.map +2 -2
  242. package/dist/esm/is/SwcIfTemplate.js +1 -1
  243. package/dist/esm/is/SwcIfTemplate.js.map +2 -2
  244. package/dist/esm/is/SwcIfTextArea.js +1 -1
  245. package/dist/esm/is/SwcIfTextArea.js.map +2 -2
  246. package/dist/esm/is/SwcIfTime.js +1 -1
  247. package/dist/esm/is/SwcIfTime.js.map +2 -2
  248. package/dist/esm/is/SwcIfTitle.js +1 -1
  249. package/dist/esm/is/SwcIfTitle.js.map +2 -2
  250. package/dist/esm/is/SwcIfTrack.js +1 -1
  251. package/dist/esm/is/SwcIfTrack.js.map +2 -2
  252. package/dist/esm/is/SwcIfUl.js +1 -1
  253. package/dist/esm/is/SwcIfUl.js.map +2 -2
  254. package/dist/esm/is/SwcIfVideo.js +1 -1
  255. package/dist/esm/is/SwcIfVideo.js.map +2 -2
  256. package/dist/esm-bundle/dooboostore-simple-web-component.esm.js +1938 -2014
  257. package/dist/esm-bundle/dooboostore-simple-web-component.esm.js.map +4 -4
  258. package/dist/types/decorators/addEventListener.d.ts +1 -1
  259. package/dist/types/decorators/addEventListener.d.ts.map +1 -1
  260. package/dist/types/decorators/elementDefine.d.ts.map +1 -1
  261. package/dist/types/decorators/query.d.ts +5 -2
  262. package/dist/types/decorators/query.d.ts.map +1 -1
  263. package/dist/types/decorators/queryAll.d.ts +5 -2
  264. package/dist/types/decorators/queryAll.d.ts.map +1 -1
  265. package/dist/types/decorators/state.d.ts +1 -1
  266. package/dist/types/decorators/state.d.ts.map +1 -1
  267. package/dist/types/elements/SwcChoose.d.ts.map +1 -1
  268. package/dist/types/elements/SwcForOf.d.ts.map +1 -1
  269. package/dist/types/elements/SwcObject.d.ts.map +1 -1
  270. package/dist/types/index.d.ts +3 -6
  271. package/dist/types/index.d.ts.map +1 -1
  272. package/dist/umd-bundle/dooboostore-simple-web-component.umd.js +1938 -2014
  273. package/dist/umd-bundle/dooboostore-simple-web-component.umd.js.map +4 -4
  274. package/package.json +4 -4
  275. package/src/decorators/addEventListener.ts +1 -1
  276. package/src/decorators/elementDefine.ts +64 -35
  277. package/src/decorators/query.ts +35 -8
  278. package/src/decorators/queryAll.ts +35 -8
  279. package/src/decorators/state.ts +1 -1
  280. package/src/elements/SwcChoose.ts +1 -5
  281. package/src/elements/SwcForOf.ts +2 -1
  282. package/src/elements/SwcObject.ts +8 -6
  283. package/src/index.ts +3 -6
  284. package/src/is/SwcIfAnchor.ts +1 -1
  285. package/src/is/SwcIfArea.ts +1 -1
  286. package/src/is/SwcIfAudio.ts +1 -1
  287. package/src/is/SwcIfBase.ts +1 -1
  288. package/src/is/SwcIfButton.ts +1 -1
  289. package/src/is/SwcIfCanvas.ts +1 -1
  290. package/src/is/SwcIfData.ts +1 -1
  291. package/src/is/SwcIfDataList.ts +1 -1
  292. package/src/is/SwcIfDetails.ts +1 -1
  293. package/src/is/SwcIfDialog.ts +1 -1
  294. package/src/is/SwcIfDiv.ts +1 -1
  295. package/src/is/SwcIfDl.ts +1 -1
  296. package/src/is/SwcIfEmbed.ts +1 -1
  297. package/src/is/SwcIfFieldSet.ts +1 -1
  298. package/src/is/SwcIfForm.ts +1 -1
  299. package/src/is/SwcIfHeading.ts +1 -1
  300. package/src/is/SwcIfHr.ts +1 -1
  301. package/src/is/SwcIfIFrame.ts +1 -1
  302. package/src/is/SwcIfImage.ts +1 -1
  303. package/src/is/SwcIfInput.ts +1 -1
  304. package/src/is/SwcIfLabel.ts +1 -1
  305. package/src/is/SwcIfLegend.ts +1 -1
  306. package/src/is/SwcIfLi.ts +1 -1
  307. package/src/is/SwcIfLink.ts +1 -1
  308. package/src/is/SwcIfMap.ts +1 -1
  309. package/src/is/SwcIfMeta.ts +1 -1
  310. package/src/is/SwcIfMeter.ts +1 -1
  311. package/src/is/SwcIfMod.ts +1 -1
  312. package/src/is/SwcIfObject.ts +1 -1
  313. package/src/is/SwcIfOl.ts +1 -1
  314. package/src/is/SwcIfOptGroup.ts +1 -1
  315. package/src/is/SwcIfOption.ts +1 -1
  316. package/src/is/SwcIfOutput.ts +1 -1
  317. package/src/is/SwcIfParagraph.ts +1 -1
  318. package/src/is/SwcIfParam.ts +1 -1
  319. package/src/is/SwcIfPicture.ts +1 -1
  320. package/src/is/SwcIfPre.ts +1 -1
  321. package/src/is/SwcIfProgress.ts +1 -1
  322. package/src/is/SwcIfQuote.ts +1 -1
  323. package/src/is/SwcIfScript.ts +1 -1
  324. package/src/is/SwcIfSelect.ts +1 -1
  325. package/src/is/SwcIfSlot.ts +1 -1
  326. package/src/is/SwcIfSource.ts +1 -1
  327. package/src/is/SwcIfSpan.ts +1 -1
  328. package/src/is/SwcIfStyle.ts +1 -1
  329. package/src/is/SwcIfTable.ts +1 -1
  330. package/src/is/SwcIfTableCell.ts +1 -1
  331. package/src/is/SwcIfTableRow.ts +1 -1
  332. package/src/is/SwcIfTableSection.ts +1 -1
  333. package/src/is/SwcIfTemplate.ts +1 -1
  334. package/src/is/SwcIfTextArea.ts +1 -1
  335. package/src/is/SwcIfTime.ts +1 -1
  336. package/src/is/SwcIfTitle.ts +1 -1
  337. package/src/is/SwcIfTrack.ts +1 -1
  338. package/src/is/SwcIfUl.ts +1 -1
  339. package/src/is/SwcIfVideo.ts +1 -1
package/README.md CHANGED
@@ -1,14 +1,14 @@
1
1
  # @dooboostore/simple-web-component
2
2
 
3
- A ultra-lightweight, high-performance Web Component library that brings **Modern Reactivity** to **Standard Web Technologies**. Build complex, nested UIs using native Shadow DOM, Slots, and MutationObservers without the overhead of a Virtual DOM.
3
+ An ultra-lightweight, high-performance Web Component library that brings **Modern Reactivity** to **Standard Web Technologies**. Build complex, high-performance UIs using native Shadow DOM, Slots, and MutationObservers without the weight of a Virtual DOM.
4
4
 
5
- ## 🚀 Key Features
5
+ ## 🚀 Why @dooboostore/simple-web-component?
6
6
 
7
- - **Standard-First**: Uses the native `is` attribute to enhance standard HTML tags (`ul`, `table`, `div`, etc.). Your markup stays clean and semantic.
8
7
  - **Surgical Updates**: Powered by Proxy-based reactivity. It updates only the specific **Text Nodes or Attributes** bound to data—no full-tree diffing.
9
- - **Deep Reactivity**: The `@state` decorator detects changes deep inside objects and arrays automatically.
10
- - **Hybrid Rendering**: Seamlessly combine **Shadow DOM** (for encapsulation) and **Light DOM** (for slotting and SEO) in a single component.
11
- - **Scoped Context (`as`)**: Perfectly isolate data between parent and child components using explicit aliases.
8
+ - **Standard-First**: Keep your HTML semantic. Use the native `is` attribute to enhance standard tags (`ul`, `table`, `div`, etc.).
9
+ - **Zero Boilerplate**: Define queries, events, and lifecycles declaratively using decorators.
10
+ - **Scoped Context (`as`)**: Effortlessly isolate and share data between parent and child components using explicit aliases.
11
+ - **Hybrid Rendering**: Seamlessly combine **Shadow DOM** and **Light DOM** in a single component.
12
12
 
13
13
  ---
14
14
 
@@ -18,132 +18,179 @@ A ultra-lightweight, high-performance Web Component library that brings **Modern
18
18
  pnpm add @dooboostore/simple-web-component
19
19
  ```
20
20
 
21
- ### Safari Support (Essential)
22
- Safari does not natively support "Customized Built-in Elements". You **must** include the polyfill at the top of your entry point:
23
-
21
+ ### Safari Support (Required)
22
+ Include this polyfill at the very top of your entry point to support the `is` attribute in Safari:
24
23
  ```javascript
25
24
  import '@ungap/custom-elements';
25
+ import 'reflect-metadata';
26
26
  ```
27
27
 
28
28
  ---
29
29
 
30
- ## 💡 Practical Examples
30
+ ## 💡 Practical Showcase
31
31
 
32
- ### 1. Complex Nesting & Scoped Context (`as`)
33
- Avoid naming collisions by aliasing your components. Access parent data from children using the same alias.
32
+ ### 1. Basic Reactive Component
33
+ A counter where only the number part is updated in the DOM when you click.
34
34
 
35
35
  ```typescript
36
- @elementDefine({ name: 'parent-comp' })
37
- class Parent extends HTMLElement {
38
- @state count = 10;
36
+ import { elementDefine, innerHtml, state, addEventListener } from '@dooboostore/simple-web-component';
37
+
38
+ @elementDefine('my-counter')
39
+ class MyCounter extends HTMLElement {
40
+ @state count = 0;
41
+
39
42
  @innerHtml({ useShadow: true })
40
43
  render() {
41
44
  return `
42
- <div>Parent Count: {{t1.count}}</div>
43
- <slot></slot>
45
+ <p>Count: <strong>{{count}}</strong></p>
46
+ <button id="inc"> +1 </button>
44
47
  `;
45
48
  }
49
+
50
+ @addEventListener({ type: 'click', query: '#inc' })
51
+ onInc() {
52
+ this.count++; // 👈 Surgical Update!
53
+ }
54
+ }
55
+ ```
56
+
57
+ ### 2. Nested Scopes with `as="alias"`
58
+ Access parent data from deeply nested children without naming collisions.
59
+
60
+ ```typescript
61
+ @elementDefine({ name: 'parent-comp' })
62
+ class Parent extends HTMLElement {
63
+ @state user = { name: 'Alice', score: 100 };
64
+ @innerHtml({ useShadow: true })
65
+ render() { return `<h3>User: {{p.user.name}}</h3><slot></slot>`; }
46
66
  }
47
67
 
48
68
  @elementDefine({ name: 'child-comp' })
49
69
  class Child extends HTMLElement {
50
- @state count = 0;
70
+ @state score = 0;
51
71
  @innerHtml({ useShadow: true })
52
72
  render() {
53
73
  return `
54
- <div>Child Count: {{t2.count}}</div>
55
- <div>Parent's Count via Alias: {{t1.count}}</div>
74
+ <div>Child Score: {{c.score}}</div>
75
+ <div>Parent's Score: {{p.user.score}}</div> <!-- 👈 Scoped Access -->
56
76
  `;
57
77
  }
58
78
  }
59
79
  ```
60
-
61
80
  ```html
62
- <parent-comp as="t1">
63
- <child-comp as="t2"></child-comp>
81
+ <parent-comp as="p">
82
+ <child-comp as="c"></child-comp>
64
83
  </parent-comp>
65
84
  ```
66
85
 
67
- ### 2. High-Performance Looping (`swc-for-of`)
68
- Render thousands of items efficiently. Keeps your native `ul > li` or `tbody > tr` structure intact.
69
-
70
- ```html
71
- <ul is="swc-for-of-ul" id="my-list" as="item" as-index="i">
72
- <li class="user-row">
73
- <strong>#{{i}}</strong>: {{item.name}}
74
- <button onbtn-click="alert($data.id)">Select</button>
75
- </li>
76
- </ul>
86
+ ---
77
87
 
78
- <script>
79
- const list = document.querySelector('#my-list');
80
- list.swcValue = [{ id: 1, name: 'Alice' }, { id: 2, name: 'Bob' }];
81
-
82
- // Surgical Update: only the 3rd row is created and appended.
83
- list.swcValue.push({ id: 3, name: 'Charlie' });
84
- </script>
85
- ```
88
+ ## 📑 Decorator Deep Dive
89
+
90
+ ### `@elementDefine(config)`
91
+ Registers the class as a Custom Element.
92
+ - `name`: (Required) Tag name.
93
+ - `extends`: (Optional) Native tag to extend.
94
+ - `autoRemoveEventListeners`: (Optional) Auto-cleanup on disconnect.
95
+
96
+ ### `@innerHtml(options?)`
97
+ Defines markup. Supports **Async (Promises)**.
98
+ - `root`: `'shadow'` (Shadow DOM) or `'light'` (Light DOM). Default depends on `useShadow`.
99
+ - `useShadow`: Shortcut to set `root: 'shadow'`.
100
+
101
+ ### `@state(alias?)`
102
+ Declares a property as reactive. Tracks changes in nested objects/arrays.
103
+ - `alias`: Custom name for templates (e.g. `{{alias.path}}`).
104
+
105
+ ### `@attribute(options?)`
106
+ Syncs property with HTML attribute.
107
+ - `name`: HTML attribute name.
108
+ - `type`: `String`, `Number`, `Boolean`, `Object`.
109
+ - `disableReflect`: If `true`, stops JS -> HTML sync.
110
+
111
+ ### `@query(selector?, options?)`
112
+ Lazy-loads elements.
113
+ - `selector`: CSS selector. If omitted, targets the **Host**.
114
+ - `root`: `'shadow' | 'light' | 'all' | 'auto'` (Default: `'auto'`).
115
+
116
+ ### `@addEventListener(options)`
117
+ Declarative event binding. Method receives `(event, targetElement)`.
118
+ - `type`: Event type.
119
+ - `query`: CSS selector.
120
+ - `root`: Search scope for target.
121
+ - `stopPropagation`, `preventDefault`, `stopImmediatePropagation`: Event modifiers.
86
122
 
87
- ### 3. Surgical Object Binding (`swc-object`)
88
- Bind a complex object to a template. Updates happen instantly when properties change.
123
+ ---
89
124
 
90
- ```html
91
- <div is="swc-object-div" id="profile" as="u">
92
- <img src="{{u.avatarUrl}}" alt="{{u.name}}'s avatar">
93
- <h3>{{u.name}}</h3>
94
- <p>Status: {{u.status}}</p>
95
- </div>
125
+ ## ⏳ Lifecycle Hooks
126
+ Multiple methods per hook are supported.
96
127
 
97
- <script>
98
- const el = document.querySelector('#profile');
99
- el.swcValue = { name: 'Dev', status: 'Online', avatarUrl: '...' };
100
-
101
- // Surgical Update: Only the <p> text changes.
102
- el.swcValue.status = 'Busy';
103
- </script>
104
- ```
128
+ | Hook | Timing |
129
+ | :--- | :--- |
130
+ | `@onBeforeConnected` | Before template injection. |
131
+ | `@onAfterConnected` | After injection (Alias: `@onConnected`). |
132
+ | `@onBeforeDisconnected`| Before element removal. |
133
+ | `@onAfterDisconnected` | After removal and cleanup (Alias: `@onDisconnected`). |
134
+ | `@onAttributeChanged(key)`| When an attribute (or `*`) changes. |
135
+ | `@onAddEventListener` | Callback when any listener is attached. |
105
136
 
106
137
  ---
107
138
 
108
- ## 📑 API Reference
109
-
110
- ### Core Decorators
139
+ ## 🛠 Built-in Logic Components (`is` Variants)
111
140
 
112
- | Decorator | Target | Description |
113
- | :--- | :--- | :--- |
114
- | `@elementDefine(config)` | Class | Registers the component. `config: { name, extends, autoRemoveEventListeners }`. |
115
- | `@innerHtml(options)` | Method | Defines HTML content. `options: { useShadow }`. Can be used multiple times to combine templates. |
116
- | `@state` | Field | Declares a reactive property. Triggers surgical updates on change. Supports `@state('alias')`. |
117
- | `@attribute(options)` | Field | Syncs class property with HTML attribute. `options: { name, type, disableReflect }`. |
118
- | `@query(selector)` | Field/Method | Lazy-loads an element. Can be used as a property or a callback method. |
119
- | `@addEventListener(opts)`| Method | Declarative event binding. Automatically re-binds if DOM changes. |
120
- | `@emitCustomEvent(type)` | Method | Dispatches a `CustomEvent`. 리턴값은 부모 템플릿의 `$data`로 전달됩니다. |
141
+ Every standard tag has logic variants prefixed with `swc-`. Use **`swcValue`** to bind data.
121
142
 
122
- ### Lifecycle Hooks
143
+ ### `swc-for-of-[tag]` (Looping)
144
+ ```html
145
+ <ul is="swc-for-of-ul" swcValue="{{items}}" as="item" as-index="i">
146
+ <li>{{i}}. {{item.name}}</li>
147
+ </ul>
148
+ ```
123
149
 
124
- Every hook supports **multiple methods** per component.
150
+ ### `swc-if-[tag]` / `swc-choose-[tag]` (Conditionals)
151
+ Elements are physically added/removed from the DOM.
152
+ ```html
153
+ <div is="swc-choose-div" swcValue="{{status}}">
154
+ <span is="swc-when-span" test="loading">Loading...</span>
155
+ <div is="swc-other-div">Success!</div>
156
+ </div>
157
+ ```
125
158
 
126
- | Hook | Timing |
127
- | :--- | :--- |
128
- | `@onBeforeConnected` | Before content is injected. |
129
- | `@onAfterConnected` | After content injection and binding (Alias: `@onConnected`). |
130
- | `@onBeforeDisconnected`| Before the element is removed. |
131
- | `@onAfterDisconnected` | After removal and auto-cleanup (Alias: `@onDisconnected`). |
132
- | `@onAttributeChanged(key)`| When a specific (or wildcard `*`) attribute changes. |
133
- | `@onAddEventListener` | Callback when any `@addEventListener` is triggered. |
159
+ ### `swc-object-[tag]` (Binding)
160
+ ```html
161
+ <div is="swc-object-div" swcValue="{{user}}" as="u">
162
+ <h3>{{u.name}}</h3>
163
+ </div>
164
+ ```
134
165
 
135
166
  ---
136
167
 
137
- ## 🛠 Built-in Logic Components (`is` variants)
168
+ ## 📜 Full Feature Integration Example
138
169
 
139
- Every standard HTML tag has logic variants. The naming pattern is `swc-[logic]-[tag]`.
170
+ ```typescript
171
+ @elementDefine('app-root')
172
+ class AppRoot extends HTMLElement {
173
+ @state profile = { name: 'John', loggedIn: true };
140
174
 
141
- - **ForOf**: `swc-for-of-ul`, `swc-for-of-tbody`, `swc-for-of-div` ...
142
- - **If**: `swc-if-div`, `swc-if-span`, `swc-if-section` ...
143
- - **Choose**: `swc-choose-div`, `swc-choose-section` ...
144
- - **Object**: `swc-object-div`, `swc-object-article` ...
175
+ @onConnected
176
+ init() { console.log('App Started'); }
145
177
 
146
- ---
178
+ @innerHtml({ useShadow: true })
179
+ render() {
180
+ return `
181
+ <div is="swc-if-div" swcValue="{{profile.loggedIn}}">
182
+ <h1>Welcome, {{profile.name}}!</h1>
183
+ <button id="logout">Logout</button>
184
+ </div>
185
+ `;
186
+ }
187
+
188
+ @addEventListener({ type: 'click', query: '#logout' })
189
+ onLogout() {
190
+ this.profile.loggedIn = false; // Surgical UI change
191
+ }
192
+ }
193
+ ```
147
194
 
148
- ## 📜 License
195
+ ## License
149
196
  MIT
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/decorators/addEventListener.ts"],
4
- "sourcesContent": ["import { ReflectUtils } from '@dooboostore/core/reflect/ReflectUtils';\n\nexport interface AddEventListenerOptions extends EventListenerOptions {\n query?: string;\n type: string;\n useShadow?: boolean;\n capture?: boolean;\n once?: boolean;\n passive?: boolean;\n stopPropagation?: boolean;\n stopImmediatePropagation?: boolean;\n preventDefault?: boolean;\n}\n\nexport interface AddEventListenerMetadata {\n options: AddEventListenerOptions;\n propertyKey: string | symbol;\n}\n\nexport const ADD_EVENT_LISTENER_METADATA_KEY = Symbol('simple-web-component:add-event-listener');\n\nexport function addEventListener(type: string, query?: string): MethodDecorator;\nexport function addEventListener(options: AddEventListenerOptions): MethodDecorator;\nexport function addEventListener(arg1: string | AddEventListenerOptions, arg2?: string): MethodDecorator {\n return (target: Object, propertyKey: string | symbol, descriptor: PropertyDescriptor) => {\n const constructor = target.constructor;\n const options: AddEventListenerOptions = typeof arg1 === 'string' ? { type: arg1, query: arg2 } : arg1;\n\n let listeners = ReflectUtils.getMetadata<AddEventListenerMetadata[]>(ADD_EVENT_LISTENER_METADATA_KEY, constructor);\n if (!listeners) {\n listeners = [];\n ReflectUtils.defineMetadata(ADD_EVENT_LISTENER_METADATA_KEY, listeners, constructor);\n }\n listeners.push({ options, propertyKey });\n };\n}\n\nexport const getAddEventListenerMetadata = (target: any): AddEventListenerMetadata[] | undefined => {\n const constructor = target instanceof Function ? target : target.constructor;\n return ReflectUtils.getMetadata(ADD_EVENT_LISTENER_METADATA_KEY, constructor);\n};\n"],
4
+ "sourcesContent": ["import { ReflectUtils } from '@dooboostore/core/reflect/ReflectUtils';\n\nexport interface AddEventListenerOptions extends EventListenerOptions {\n query?: string;\n type: string;\n root?: 'light' | 'shadow' | 'all' | 'auto';\n capture?: boolean;\n once?: boolean;\n passive?: boolean;\n stopPropagation?: boolean;\n stopImmediatePropagation?: boolean;\n preventDefault?: boolean;\n}\n\nexport interface AddEventListenerMetadata {\n options: AddEventListenerOptions;\n propertyKey: string | symbol;\n}\n\nexport const ADD_EVENT_LISTENER_METADATA_KEY = Symbol('simple-web-component:add-event-listener');\n\nexport function addEventListener(type: string, query?: string): MethodDecorator;\nexport function addEventListener(options: AddEventListenerOptions): MethodDecorator;\nexport function addEventListener(arg1: string | AddEventListenerOptions, arg2?: string): MethodDecorator {\n return (target: Object, propertyKey: string | symbol, descriptor: PropertyDescriptor) => {\n const constructor = target.constructor;\n const options: AddEventListenerOptions = typeof arg1 === 'string' ? { type: arg1, query: arg2 } : arg1;\n\n let listeners = ReflectUtils.getMetadata<AddEventListenerMetadata[]>(ADD_EVENT_LISTENER_METADATA_KEY, constructor);\n if (!listeners) {\n listeners = [];\n ReflectUtils.defineMetadata(ADD_EVENT_LISTENER_METADATA_KEY, listeners, constructor);\n }\n listeners.push({ options, propertyKey });\n };\n}\n\nexport const getAddEventListenerMetadata = (target: any): AddEventListenerMetadata[] | undefined => {\n const constructor = target instanceof Function ? target : target.constructor;\n return ReflectUtils.getMetadata(ADD_EVENT_LISTENER_METADATA_KEY, constructor);\n};\n"],
5
5
  "mappings": ";;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,0BAA6B;AAmBtB,MAAM,kCAAkC,OAAO,yCAAyC;AAIxF,SAAS,iBAAiB,MAAwC,MAAgC;AACvG,SAAO,CAAC,QAAgB,aAA8B,eAAmC;AACvF,UAAM,cAAc,OAAO;AAC3B,UAAM,UAAmC,OAAO,SAAS,WAAW,EAAE,MAAM,MAAM,OAAO,KAAK,IAAI;AAElG,QAAI,YAAY,iCAAa,YAAwC,iCAAiC,WAAW;AACjH,QAAI,CAAC,WAAW;AACd,kBAAY,CAAC;AACb,uCAAa,eAAe,iCAAiC,WAAW,WAAW;AAAA,IACrF;AACA,cAAU,KAAK,EAAE,SAAS,YAAY,CAAC;AAAA,EACzC;AACF;AAEO,MAAM,8BAA8B,CAAC,WAAwD;AAClG,QAAM,cAAc,kBAAkB,WAAW,SAAS,OAAO;AACjE,SAAO,iCAAa,YAAY,iCAAiC,WAAW;AAC9E;",
6
6
  "names": []
7
7
  }
@@ -161,19 +161,37 @@ const elementDefine = (inConfig) => (constructor) => {
161
161
  }
162
162
  _syncDecorators() {
163
163
  this._buildStateMap();
164
+ const getSearchRoots = (rootOption) => {
165
+ const roots = [];
166
+ if (rootOption === "shadow") {
167
+ if (this.shadowRoot) roots.push(this.shadowRoot);
168
+ } else if (rootOption === "light") {
169
+ roots.push(this);
170
+ } else if (rootOption === "all") {
171
+ if (this.shadowRoot) roots.push(this.shadowRoot);
172
+ roots.push(this);
173
+ } else {
174
+ roots.push(this.shadowRoot || this);
175
+ }
176
+ return roots;
177
+ };
164
178
  const queryMetadata = (0, import_query.getQueryMetadata)(this);
165
179
  if (queryMetadata) {
166
180
  queryMetadata.filter((it) => it.isMethod).forEach((it) => {
167
- const root = it.options.useShadow !== false && this.shadowRoot ? this.shadowRoot : this;
168
- const element = root.querySelector(it.selector);
169
- if (element) {
170
- let bound = this._boundElements.get(element);
181
+ const searchRoots = getSearchRoots(it.options.root);
182
+ let foundEl = null;
183
+ for (const root of searchRoots) {
184
+ foundEl = it.selector ? root.querySelector(it.selector) : this;
185
+ if (foundEl) break;
186
+ }
187
+ if (foundEl) {
188
+ let bound = this._boundElements.get(foundEl);
171
189
  if (!bound) {
172
190
  bound = /* @__PURE__ */ new Set();
173
- this._boundElements.set(element, bound);
191
+ this._boundElements.set(foundEl, bound);
174
192
  }
175
193
  if (!bound.has(it.propertyKey)) {
176
- this[it.propertyKey](element);
194
+ this[it.propertyKey](foundEl);
177
195
  bound.add(it.propertyKey);
178
196
  }
179
197
  }
@@ -182,41 +200,47 @@ const elementDefine = (inConfig) => (constructor) => {
182
200
  const queryAllMetadata = (0, import_queryAll.getQueryAllMetadata)(this);
183
201
  if (queryAllMetadata) {
184
202
  queryAllMetadata.filter((it) => it.isMethod).forEach((it) => {
185
- const root = it.options.useShadow !== false && this.shadowRoot ? this.shadowRoot : this;
186
- const elements = root.querySelectorAll(it.selector);
187
- this[it.propertyKey](elements);
203
+ const searchRoots = getSearchRoots(it.options.root);
204
+ const allElements = [];
205
+ searchRoots.forEach((root) => {
206
+ const found = it.selector ? root.querySelectorAll(it.selector) : [this];
207
+ allElements.push(...Array.from(found));
208
+ });
209
+ this[it.propertyKey](allElements);
188
210
  });
189
211
  }
190
212
  const eventListeners = (0, import_addEventListener.getAddEventListenerMetadata)(this);
191
213
  if (eventListeners) {
192
214
  eventListeners.forEach((it) => {
193
- const { query, type, useShadow, ...options } = it.options;
194
- const root = useShadow !== false && this.shadowRoot ? this.shadowRoot : this;
195
- const targetElements = query ? root.querySelectorAll(query) : [this];
196
- targetElements.forEach((targetElement) => {
197
- if (targetElement) {
198
- let bound = this._boundElements.get(targetElement);
199
- if (!bound) {
200
- bound = /* @__PURE__ */ new Set();
201
- this._boundElements.set(targetElement, bound);
202
- }
203
- const eventKey = `event:${String(it.propertyKey)}:${type}`;
204
- if (!bound.has(eventKey)) {
205
- const handler = (event) => {
206
- if (it.options.stopImmediatePropagation) event.stopImmediatePropagation();
207
- if (it.options.stopPropagation) event.stopPropagation();
208
- if (it.options.preventDefault) event.preventDefault();
209
- this[it.propertyKey](event, targetElement);
210
- };
211
- targetElement.addEventListener(type, handler, options);
212
- bound.add(eventKey);
213
- if (config.autoRemoveEventListeners) this._activeListeners.push({ el: targetElement, type, handler, options });
214
- const addEventMethods = (0, import_lifecycles.getLifecycleMetadata)(this, import_lifecycles.ON_ADD_EVENT_LISTENER_METADATA_KEY);
215
- addEventMethods?.forEach((m) => {
216
- if (typeof this[m] === "function") this[m](targetElement, type, handler);
217
- });
215
+ const { query, type, root: rootOption, ...options } = it.options;
216
+ const searchRoots = getSearchRoots(rootOption);
217
+ searchRoots.forEach((root) => {
218
+ const targetElements = query ? root.querySelectorAll(query) : [this];
219
+ targetElements.forEach((targetElement) => {
220
+ if (targetElement) {
221
+ let bound = this._boundElements.get(targetElement);
222
+ if (!bound) {
223
+ bound = /* @__PURE__ */ new Set();
224
+ this._boundElements.set(targetElement, bound);
225
+ }
226
+ const eventKey = `event:${String(it.propertyKey)}:${type}`;
227
+ if (!bound.has(eventKey)) {
228
+ const handler = (event) => {
229
+ if (it.options.stopImmediatePropagation) event.stopImmediatePropagation();
230
+ if (it.options.stopPropagation) event.stopPropagation();
231
+ if (it.options.preventDefault) event.preventDefault();
232
+ this[it.propertyKey](event, targetElement);
233
+ };
234
+ targetElement.addEventListener(type, handler, options);
235
+ bound.add(eventKey);
236
+ if (config.autoRemoveEventListeners) this._activeListeners.push({ el: targetElement, type, handler, options });
237
+ const addEventMethods = (0, import_lifecycles.getLifecycleMetadata)(this, import_lifecycles.ON_ADD_EVENT_LISTENER_METADATA_KEY);
238
+ addEventMethods?.forEach((m) => {
239
+ if (typeof this[m] === "function") this[m](targetElement, type, handler);
240
+ });
241
+ }
218
242
  }
219
- }
243
+ });
220
244
  });
221
245
  });
222
246
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/decorators/elementDefine.ts"],
4
- "sourcesContent": ["import { ReflectUtils } from '@dooboostore/core/reflect/ReflectUtils';\nimport { getInnerHtmlMetadataList } from './innerHtml';\nimport { getQueryMetadata } from './query';\nimport { getQueryAllMetadata } from './queryAll';\nimport { getAddEventListenerMetadata } from './addEventListener';\nimport { getLifecycleMetadata, 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, ON_ATTRIBUTE_CHANGED_METADATA_KEY, ATTRIBUTE_CHANGED_WILDCARD } from './lifecycles';\nimport { getAttributeMetadataList } from './attribute';\nimport { getStateMetadataList } from './state';\nimport { getEmitCustomEventMetadataList } from './emitCustomEvent';\nimport { SwcUtils } from '../utils/Utils';\n\nexport interface ElementConfig {\n name: string;\n extends?: string;\n observedAttributes?: string[];\n customElementRegistry?: CustomElementRegistry;\n autoRemoveEventListeners?: boolean;\n}\n\nexport const ELEMENT_CONFIG_KEY = Symbol('simple-web-component:element-config');\nexport const STATE_CHANGE_EVENT = 'swc:state-change';\n\nconst BUILT_IN_TAG_MAP = new Map<any, string>();\n\nconst registerTag = (className: string, tagName: string) => {\n if (typeof globalThis !== 'undefined' && (globalThis as any)[className]) {\n BUILT_IN_TAG_MAP.set((globalThis as any)[className], tagName);\n }\n};\n\n[\n ['HTMLAnchorElement', 'a'],\n ['HTMLAreaElement', 'area'],\n ['HTMLAudioElement', 'audio'],\n ['HTMLBaseElement', 'base'],\n ['HTMLButtonElement', 'button'],\n ['HTMLCanvasElement', 'canvas'],\n ['HTMLDataElement', 'data'],\n ['HTMLDataListElement', 'datalist'],\n ['HTMLDetailsElement', 'details'],\n ['HTMLDialogElement', 'dialog'],\n ['HTMLDivElement', 'div'],\n ['HTMLDListElement', 'dl'],\n ['HTMLEmbedElement', 'embed'],\n ['HTMLFieldSetElement', 'fieldset'],\n ['HTMLFormElement', 'form'],\n ['HTMLHRElement', 'hr'],\n ['HTMLIFrameElement', 'iframe'],\n ['HTMLImageElement', 'img'],\n ['HTMLInputElement', 'input'],\n ['HTMLLabelElement', 'label'],\n ['HTMLLegendElement', 'legend'],\n ['HTMLLIElement', 'li'],\n ['HTMLLinkElement', 'link'],\n ['HTMLMapElement', 'map'],\n ['HTMLMetaElement', 'meta'],\n ['HTMLMeterElement', 'meter'],\n ['HTMLModElement', 'del'],\n ['HTMLObjectElement', 'object'],\n ['HTMLOListElement', 'ol'],\n ['HTMLOptGroupElement', 'optgroup'],\n ['HTMLOptionElement', 'option'],\n ['HTMLOutputElement', 'output'],\n ['HTMLParagraphElement', 'p'],\n ['HTMLParamElement', 'param'],\n ['HTMLPictureElement', 'picture'],\n ['HTMLPreElement', 'pre'],\n ['HTMLProgressElement', 'progress'],\n ['HTMLQuoteElement', 'blockquote'],\n ['HTMLScriptElement', 'script'],\n ['HTMLSelectElement', 'select'],\n ['HTMLSlotElement', 'slot'],\n ['HTMLSourceElement', 'source'],\n ['HTMLSpanElement', 'span'],\n ['HTMLStyleElement', 'style'],\n ['HTMLTableElement', 'table'],\n ['HTMLTableSectionElement', 'tbody'],\n ['HTMLTableCellElement', 'td'],\n ['HTMLTemplateElement', 'template'],\n ['HTMLTextAreaElement', 'textarea'],\n ['HTMLTimeElement', 'time'],\n ['HTMLTitleElement', 'title'],\n ['HTMLTableRowElement', 'tr'],\n ['HTMLTrackElement', 'track'],\n ['HTMLUListElement', 'ul'],\n ['HTMLVideoElement', 'video'],\n ['HTMLHeadingElement', 'h1']\n].forEach(([cls, tag]) => registerTag(cls, tag));\n\nexport const elementDefine =\n (inConfig: ElementConfig | string): ClassDecorator =>\n (constructor: any) => {\n const config: ElementConfig = typeof inConfig === 'string' ? { name: inConfig } : inConfig;\n\n let extendsTagName = config.extends;\n if (!extendsTagName) {\n let proto = Object.getPrototypeOf(constructor);\n while (proto && proto !== HTMLElement && proto !== Function.prototype) {\n extendsTagName = BUILT_IN_TAG_MAP.get(proto);\n if (extendsTagName) break;\n proto = Object.getPrototypeOf(proto);\n }\n }\n\n const attributePropsList = getAttributeMetadataList(constructor);\n const emitCustomEventList = getEmitCustomEventMetadataList(constructor);\n const stateList = getStateMetadataList(constructor);\n const observedFromProps = attributePropsList ? attributePropsList.map(it => it.options.name!) : [];\n const observedFromEmits = emitCustomEventList ? emitCustomEventList.map(it => it.options.attributeName!) : [];\n const mergedObservedAttributes = [...new Set([...(config.observedAttributes ?? []), ...observedFromProps, ...observedFromEmits])];\n\n const NewClass = class extends (constructor as any) {\n private _swcId = Math.random().toString(36).substring(2, 11);\n private _observer: MutationObserver | null = null;\n private _boundElements = new WeakMap<Element, Set<string | symbol>>();\n private _activeListeners: Array<{ el: Element | HTMLElement; type: string; handler: EventListener; options?: any }> = [];\n private _emitHandlers = new Map<string, EventListener>();\n private _stateBindings = new Map<string, any[]>();\n private _internalStates = new Map<string | symbol, any>();\n private _externalSources = new Map<string, HTMLElement>();\n\n static get observedAttributes() {\n return mergedObservedAttributes;\n }\n\n constructor(...args: any[]) {\n super(...args);\n if (stateList) {\n stateList.forEach(meta => {\n const key = meta.propertyKey;\n const stateName = meta.options.name!;\n const initialVal = (this as any)[key];\n this._internalStates.set(\n key,\n SwcUtils.createReactiveProxy(initialVal, () => this._updateState(stateName))\n );\n Object.defineProperty(this, key, {\n get: () => this._internalStates.get(key),\n set: newVal => {\n if (this._internalStates.get(key) === newVal) return;\n this._internalStates.set(\n key,\n SwcUtils.createReactiveProxy(newVal, () => this._updateState(stateName))\n );\n this._updateState(stateName);\n },\n enumerable: true,\n configurable: true\n });\n });\n }\n const innerHtmlList = getInnerHtmlMetadataList(this);\n if (innerHtmlList?.some(it => it.options.useShadow === true) && !this.shadowRoot) {\n this.attachShadow({ mode: 'open' });\n }\n }\n\n private _syncDecorators() {\n this._buildStateMap();\n const queryMetadata = getQueryMetadata(this);\n if (queryMetadata) {\n queryMetadata\n .filter(it => it.isMethod)\n .forEach(it => {\n const root = it.options.useShadow !== false && this.shadowRoot ? this.shadowRoot : this;\n const element = root.querySelector(it.selector);\n if (element) {\n let bound = this._boundElements.get(element);\n if (!bound) {\n bound = new Set();\n this._boundElements.set(element, bound);\n }\n if (!bound.has(it.propertyKey)) {\n (this as any)[it.propertyKey](element);\n bound.add(it.propertyKey);\n }\n }\n });\n }\n const queryAllMetadata = getQueryAllMetadata(this);\n if (queryAllMetadata) {\n queryAllMetadata\n .filter(it => it.isMethod)\n .forEach(it => {\n const root = it.options.useShadow !== false && this.shadowRoot ? this.shadowRoot : this;\n const elements = root.querySelectorAll(it.selector);\n (this as any)[it.propertyKey](elements);\n });\n }\n const eventListeners = getAddEventListenerMetadata(this);\n if (eventListeners) {\n eventListeners.forEach(it => {\n const { query, type, useShadow, ...options } = it.options;\n const root = useShadow !== false && this.shadowRoot ? this.shadowRoot : this;\n const targetElements = query ? root.querySelectorAll(query) : [this as any as Element];\n targetElements.forEach(targetElement => {\n if (targetElement) {\n let bound = this._boundElements.get(targetElement);\n if (!bound) {\n bound = new Set();\n this._boundElements.set(targetElement, bound);\n }\n const eventKey = `event:${String(it.propertyKey)}:${type}`;\n if (!bound.has(eventKey)) {\n const handler = (event: any) => {\n if (it.options.stopImmediatePropagation) event.stopImmediatePropagation();\n if (it.options.stopPropagation) event.stopPropagation();\n if (it.options.preventDefault) event.preventDefault();\n (this as any)[it.propertyKey](event, targetElement);\n };\n targetElement.addEventListener(type, handler, options);\n bound.add(eventKey);\n if (config.autoRemoveEventListeners) this._activeListeners.push({ el: targetElement, type, handler, options });\n const addEventMethods = getLifecycleMetadata(this, ON_ADD_EVENT_LISTENER_METADATA_KEY);\n addEventMethods?.forEach(m => {\n if (typeof (this as any)[m] === 'function') (this as any)[m](targetElement, type, handler);\n });\n }\n }\n });\n });\n }\n }\n\n private _buildStateMap() {\n this._stateBindings.clear();\n this._externalSources.clear();\n const scan = (root: Node) => {\n const walker = document.createTreeWalker(root, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_TEXT);\n let node: Node | null = null;\n while ((node = walker.nextNode())) {\n if (node.nodeType === Node.TEXT_NODE) this._parseAndBind(node, 'text');\n else if (node.nodeType === Node.ELEMENT_NODE) {\n const el = node as HTMLElement;\n const alias = el.getAttribute('as');\n if (alias) {\n this._externalSources.set(alias, el);\n el.addEventListener(STATE_CHANGE_EVENT, () => this._updateState(alias));\n }\n Array.from(el.attributes).forEach(attr => this._parseAndBind(attr, 'attribute', el));\n }\n }\n };\n if (this.shadowRoot) scan(this.shadowRoot);\n scan(this as any as Node);\n }\n\n private _parseAndBind(node: Node | Attr, type: 'text' | 'attribute', owner?: HTMLElement) {\n const content = node.textContent || '';\n const matches = Array.from(content.matchAll(/{{(.*?)}}/g));\n if (matches.length === 0) return;\n matches.forEach(match => {\n const fullPath = match[1].trim();\n const rootName = fullPath.split('.')[0];\n const isState = stateList?.some(s => s.options.name === rootName);\n const isLogicKey = (this as any)._asKey === rootName || (this as any)._asIndexKey === rootName;\n const isExternal = this._externalSources.has(rootName);\n const isSelfAlias = this.getAttribute('as') === rootName;\n if (!isState && !isLogicKey && !isExternal && !isSelfAlias) return;\n if (!this._stateBindings.has(rootName)) this._stateBindings.set(rootName, []);\n const tplKey = `__swc_original_${this._swcId}`;\n if (!(node as any)[tplKey]) (node as any)[tplKey] = content;\n this._stateBindings.get(rootName)!.push({ node, type, owner, path: fullPath });\n this._updateState(rootName);\n });\n }\n\n private _updateState(stateName: string) {\n if (!this._stateBindings) return;\n this._executeBindingUpdate(stateName);\n const selfAlias = this.getAttribute('as');\n if (selfAlias && selfAlias !== stateName) this._executeBindingUpdate(selfAlias);\n this.dispatchEvent(new CustomEvent(STATE_CHANGE_EVENT, { bubbles: true, composed: true }));\n }\n\n private _executeBindingUpdate(stateName: string) {\n const bindings = this._stateBindings.get(stateName);\n if (!bindings) return;\n const tplKey = `__swc_original_${this._swcId}`;\n bindings.forEach(bin => {\n let text = (bin.node as any)[tplKey];\n const matches = Array.from(text.matchAll(/{{(.*?)}}/g));\n for (const match of matches) {\n const path = match[1].trim();\n const root = path.split('.')[0];\n let val: any = undefined;\n let current: HTMLElement | null = this as any as HTMLElement;\n while (current) {\n const currentNewClass = current as any;\n if (current.getAttribute('as') === root) {\n val = SwcUtils.getValueByPath(current, path.split('.').slice(1).join('.') || 'value', 'value');\n if (val !== undefined) break;\n }\n const externalSource = currentNewClass._externalSources?.get(root);\n if (externalSource) {\n val = SwcUtils.getValueByPath(externalSource, path.split('.').slice(1).join('.') || 'value', 'value');\n if (val !== undefined) break;\n }\n const cStates = getStateMetadataList(current.constructor);\n const cAttrs = getAttributeMetadataList(current.constructor);\n const sMeta = cStates?.find(s => s.options.name === root);\n const aMeta = cAttrs?.find(a => a.options.name === root);\n if (sMeta || aMeta) {\n let aPath = path;\n if (sMeta && sMeta.options.name !== String(sMeta.propertyKey)) aPath = path.replace(sMeta.options.name!, String(sMeta.propertyKey));\n else if (aMeta && aMeta.options.name !== String(aMeta.propertyKey)) aPath = path.replace(aMeta.options.name!, String(aMeta.propertyKey));\n val = SwcUtils.getValueByPath(current, aPath, root);\n if (val !== undefined) break;\n }\n current = current.parentElement || (current.getRootNode() as any).host;\n }\n if (val !== undefined) {\n const strVal = val === null || val === undefined ? '' : typeof val === 'object' ? '[Object]' : String(val);\n text = text.replace(match[0], strVal);\n if (bin.type === 'attribute' && bin.owner) {\n if (val === null || val === undefined) bin.owner.removeAttribute(bin.attrName!);\n else bin.owner.setAttribute(bin.attrName!, text);\n }\n }\n }\n if (bin.type === 'text') bin.node.textContent = text;\n });\n }\n\n disconnectedCallback() {\n const bMethods = getLifecycleMetadata(this, ON_BEFORE_DISCONNECTED_METADATA_KEY);\n bMethods?.forEach(m => {\n if (typeof (this as any)[m] === 'function') (this as any)[m]();\n });\n if (this._observer) this._observer.disconnect();\n if (config.autoRemoveEventListeners) {\n this._activeListeners.forEach(({ el, type, handler, options }) => el.removeEventListener(type, handler, options));\n this._activeListeners = [];\n }\n if (super.disconnectedCallback) super.disconnectedCallback();\n const aMethods = getLifecycleMetadata(this, ON_AFTER_DISCONNECTED_METADATA_KEY);\n aMethods?.forEach(m => {\n if (typeof (this as any)[m] === 'function') (this as any)[m]();\n });\n }\n\n adoptedCallback() {\n const bMethods = getLifecycleMetadata(this, ON_BEFORE_ADOPTED_METADATA_KEY);\n bMethods?.forEach(m => {\n if (typeof (this as any)[m] === 'function') (this as any)[m]();\n });\n if (super.adoptedCallback) super.adoptedCallback();\n const aMethods = getLifecycleMetadata(this, ON_AFTER_ADOPTED_METADATA_KEY);\n aMethods?.forEach(m => {\n if (typeof (this as any)[m] === 'function') (this as any)[m]();\n });\n }\n\n async connectedCallback() {\n const bMethods = getLifecycleMetadata(this, ON_BEFORE_CONNECTED_METADATA_KEY);\n bMethods?.forEach(m => {\n if (typeof (this as any)[m] === 'function') (this as any)[m]();\n });\n if (typeof (this as any).initCore === 'function') (this as any).initCore();\n const iHtmlList = getInnerHtmlMetadataList(this);\n let sContent = '';\n let lContent = '';\n if (iHtmlList) {\n for (const meta of iHtmlList) {\n const result = await (this as any)[meta.propertyKey]();\n if (result !== undefined) {\n if (meta.options.useShadow === true) sContent += result;\n else lContent += result;\n }\n }\n }\n if (this.shadowRoot) this.shadowRoot.innerHTML = sContent;\n if (lContent) this.innerHTML = lContent;\n (this as any)._syncDecorators();\n this._observer = new MutationObserver(() => (this as any)._syncDecorators());\n this._observer.observe(this.shadowRoot || this, { childList: true, subtree: true });\n if (super.connectedCallback) await super.connectedCallback();\n const aMethods = getLifecycleMetadata(this, ON_AFTER_CONNECTED_METADATA_KEY);\n aMethods?.forEach(m => {\n if (typeof (this as any)[m] === 'function') (this as any)[m]();\n });\n }\n\n attributeChangedCallback(name: string, oldValue: string | null, newValue: string | null) {\n if (super.attributeChangedCallback) super.attributeChangedCallback(name, oldValue, newValue);\n if (attributePropsList) {\n attributePropsList.forEach(meta => {\n if (meta.options.name === name) {\n if (String((this as any)[meta.propertyKey]) !== String(newValue)) (this as any)[meta.propertyKey] = newValue;\n }\n });\n }\n if (typeof (this as any)._updateState === 'function') (this as any)._updateState(name);\n const aMethodsMap = getLifecycleMetadata(constructor, ON_ATTRIBUTE_CHANGED_METADATA_KEY) as Map<string, (string | symbol)[]>;\n const mKeys = aMethodsMap?.get(name);\n if (mKeys && Array.isArray(mKeys))\n mKeys.forEach(key => {\n if (typeof (this as any)[key] === 'function') (this as any)[key](newValue, oldValue, name);\n });\n if (emitCustomEventList) {\n const eMeta = emitCustomEventList.find(it => it.options.attributeName === name);\n if (eMeta) {\n const eType = eMeta.options.type;\n const oHandler = this._emitHandlers.get(eType);\n if (oHandler) this.removeEventListener(eType, oHandler);\n if (newValue) {\n const nHandler = (e: Event) => {\n new Function('event', '$data', newValue).call(this, e, (e as CustomEvent).detail);\n };\n this.addEventListener(eType, nHandler);\n this._emitHandlers.set(eType, nHandler);\n }\n }\n }\n const wMethodsKeys = aMethodsMap?.get(ATTRIBUTE_CHANGED_WILDCARD);\n if (wMethodsKeys && Array.isArray(wMethodsKeys))\n wMethodsKeys.forEach(key => {\n if (typeof (this as any)[key] === 'function') (this as any)[key](newValue, oldValue, name);\n });\n }\n };\n\n const registry = config.customElementRegistry || (typeof customElements !== 'undefined' ? customElements : undefined);\n if (registry && !registry.get(config.name)) {\n registry.define(config.name, NewClass as any, config.extends ? { extends: config.extends } : undefined);\n }\n ReflectUtils.defineMetadata(ELEMENT_CONFIG_KEY, config, NewClass);\n return NewClass as any;\n };\n\nexport const getElementConfig = (target: any): ElementConfig | undefined => {\n const constructor = target instanceof Function ? target : target.constructor;\n return ReflectUtils.getMetadata(ELEMENT_CONFIG_KEY, constructor);\n};\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { ReflectUtils } from '@dooboostore/core/reflect/ReflectUtils';\nimport { getInnerHtmlMetadataList } from './innerHtml';\nimport { getQueryMetadata } from './query';\nimport { getQueryAllMetadata } from './queryAll';\nimport { getAddEventListenerMetadata } from './addEventListener';\nimport { getLifecycleMetadata, 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, ON_ATTRIBUTE_CHANGED_METADATA_KEY, ATTRIBUTE_CHANGED_WILDCARD } from './lifecycles';\nimport { getAttributeMetadataList } from './attribute';\nimport { getStateMetadataList } from './state';\nimport { getEmitCustomEventMetadataList } from './emitCustomEvent';\nimport { SwcUtils } from '../utils/Utils';\n\nexport interface ElementConfig {\n name: string;\n extends?: string;\n observedAttributes?: string[];\n customElementRegistry?: CustomElementRegistry;\n autoRemoveEventListeners?: boolean;\n}\n\nexport const ELEMENT_CONFIG_KEY = Symbol('simple-web-component:element-config');\nexport const STATE_CHANGE_EVENT = 'swc:state-change';\n\nconst BUILT_IN_TAG_MAP = new Map<any, string>();\n\nconst registerTag = (className: string, tagName: string) => {\n if (typeof globalThis !== 'undefined' && (globalThis as any)[className]) {\n BUILT_IN_TAG_MAP.set((globalThis as any)[className], tagName);\n }\n};\n\n[\n ['HTMLAnchorElement', 'a'],\n ['HTMLAreaElement', 'area'],\n ['HTMLAudioElement', 'audio'],\n ['HTMLBaseElement', 'base'],\n ['HTMLButtonElement', 'button'],\n ['HTMLCanvasElement', 'canvas'],\n ['HTMLDataElement', 'data'],\n ['HTMLDataListElement', 'datalist'],\n ['HTMLDetailsElement', 'details'],\n ['HTMLDialogElement', 'dialog'],\n ['HTMLDivElement', 'div'],\n ['HTMLDListElement', 'dl'],\n ['HTMLEmbedElement', 'embed'],\n ['HTMLFieldSetElement', 'fieldset'],\n ['HTMLFormElement', 'form'],\n ['HTMLHRElement', 'hr'],\n ['HTMLIFrameElement', 'iframe'],\n ['HTMLImageElement', 'img'],\n ['HTMLInputElement', 'input'],\n ['HTMLLabelElement', 'label'],\n ['HTMLLegendElement', 'legend'],\n ['HTMLLIElement', 'li'],\n ['HTMLLinkElement', 'link'],\n ['HTMLMapElement', 'map'],\n ['HTMLMetaElement', 'meta'],\n ['HTMLMeterElement', 'meter'],\n ['HTMLModElement', 'del'],\n ['HTMLObjectElement', 'object'],\n ['HTMLOListElement', 'ol'],\n ['HTMLOptGroupElement', 'optgroup'],\n ['HTMLOptionElement', 'option'],\n ['HTMLOutputElement', 'output'],\n ['HTMLParagraphElement', 'p'],\n ['HTMLParamElement', 'param'],\n ['HTMLPictureElement', 'picture'],\n ['HTMLPreElement', 'pre'],\n ['HTMLProgressElement', 'progress'],\n ['HTMLQuoteElement', 'blockquote'],\n ['HTMLScriptElement', 'script'],\n ['HTMLSelectElement', 'select'],\n ['HTMLSlotElement', 'slot'],\n ['HTMLSourceElement', 'source'],\n ['HTMLSpanElement', 'span'],\n ['HTMLStyleElement', 'style'],\n ['HTMLTableElement', 'table'],\n ['HTMLTableSectionElement', 'tbody'],\n ['HTMLTableCellElement', 'td'],\n ['HTMLTemplateElement', 'template'],\n ['HTMLTextAreaElement', 'textarea'],\n ['HTMLTimeElement', 'time'],\n ['HTMLTitleElement', 'title'],\n ['HTMLTableRowElement', 'tr'],\n ['HTMLTrackElement', 'track'],\n ['HTMLUListElement', 'ul'],\n ['HTMLVideoElement', 'video'],\n ['HTMLHeadingElement', 'h1']\n].forEach(([cls, tag]) => registerTag(cls, tag));\n\nexport const elementDefine =\n (inConfig: ElementConfig | string): ClassDecorator =>\n (constructor: any) => {\n const config: ElementConfig = typeof inConfig === 'string' ? { name: inConfig } : inConfig;\n\n let extendsTagName = config.extends;\n if (!extendsTagName) {\n let proto = Object.getPrototypeOf(constructor);\n while (proto && proto !== HTMLElement && proto !== Function.prototype) {\n extendsTagName = BUILT_IN_TAG_MAP.get(proto);\n if (extendsTagName) break;\n proto = Object.getPrototypeOf(proto);\n }\n }\n\n const attributePropsList = getAttributeMetadataList(constructor);\n const emitCustomEventList = getEmitCustomEventMetadataList(constructor);\n const stateList = getStateMetadataList(constructor);\n const observedFromProps = attributePropsList ? attributePropsList.map(it => it.options.name!) : [];\n const observedFromEmits = emitCustomEventList ? emitCustomEventList.map(it => it.options.attributeName!) : [];\n const mergedObservedAttributes = [...new Set([...(config.observedAttributes ?? []), ...observedFromProps, ...observedFromEmits])];\n\n const NewClass = class extends (constructor as any) {\n private _swcId = Math.random().toString(36).substring(2, 11);\n private _observer: MutationObserver | null = null;\n private _boundElements = new WeakMap<Element, Set<string | symbol>>();\n private _activeListeners: Array<{ el: Element | HTMLElement; type: string; handler: EventListener; options?: any }> = [];\n private _emitHandlers = new Map<string, EventListener>();\n private _stateBindings = new Map<string, any[]>();\n private _internalStates = new Map<string | symbol, any>();\n private _externalSources = new Map<string, HTMLElement>();\n\n static get observedAttributes() {\n return mergedObservedAttributes;\n }\n\n constructor(...args: any[]) {\n super(...args);\n if (stateList) {\n stateList.forEach(meta => {\n const key = meta.propertyKey;\n const stateName = meta.options.name!;\n const initialVal = (this as any)[key];\n this._internalStates.set(\n key,\n SwcUtils.createReactiveProxy(initialVal, () => this._updateState(stateName))\n );\n Object.defineProperty(this, key, {\n get: () => this._internalStates.get(key),\n set: newVal => {\n if (this._internalStates.get(key) === newVal) return;\n this._internalStates.set(\n key,\n SwcUtils.createReactiveProxy(newVal, () => this._updateState(stateName))\n );\n this._updateState(stateName);\n },\n enumerable: true,\n configurable: true\n });\n });\n }\n const innerHtmlList = getInnerHtmlMetadataList(this);\n if (innerHtmlList?.some(it => it.options.useShadow === true) && !this.shadowRoot) {\n this.attachShadow({ mode: 'open' });\n }\n }\n\n private _syncDecorators() {\n this._buildStateMap();\n\n const getSearchRoots = (rootOption?: string): Node[] => {\n const roots: Node[] = [];\n if (rootOption === 'shadow') {\n if (this.shadowRoot) roots.push(this.shadowRoot);\n } else if (rootOption === 'light') {\n roots.push(this as any as Node);\n } else if (rootOption === 'all') {\n if (this.shadowRoot) roots.push(this.shadowRoot);\n roots.push(this as any as Node);\n } else {\n // Default: 'auto'\n roots.push(this.shadowRoot || (this as any as Node));\n }\n return roots;\n };\n\n const queryMetadata = getQueryMetadata(this);\n if (queryMetadata) {\n queryMetadata\n .filter(it => it.isMethod)\n .forEach(it => {\n const searchRoots = getSearchRoots(it.options.root);\n let foundEl: Element | null = null;\n for (const root of searchRoots) {\n foundEl = it.selector ? (root as HTMLElement).querySelector(it.selector) : (this as any as Element);\n if (foundEl) break;\n }\n if (foundEl) {\n let bound = this._boundElements.get(foundEl);\n if (!bound) {\n bound = new Set();\n this._boundElements.set(foundEl, bound);\n }\n if (!bound.has(it.propertyKey)) {\n (this as any)[it.propertyKey](foundEl);\n bound.add(it.propertyKey);\n }\n }\n });\n }\n\n const queryAllMetadata = getQueryAllMetadata(this);\n if (queryAllMetadata) {\n queryAllMetadata\n .filter(it => it.isMethod)\n .forEach(it => {\n const searchRoots = getSearchRoots(it.options.root);\n const allElements: Element[] = [];\n searchRoots.forEach(root => {\n const found = it.selector ? (root as HTMLElement).querySelectorAll(it.selector) : [this as any as Element];\n allElements.push(...Array.from(found));\n });\n (this as any)[it.propertyKey](allElements);\n });\n }\n\n const eventListeners = getAddEventListenerMetadata(this);\n if (eventListeners) {\n eventListeners.forEach(it => {\n const { query, type, root: rootOption, ...options } = it.options;\n const searchRoots = getSearchRoots(rootOption);\n searchRoots.forEach(root => {\n const targetElements = query ? (root as HTMLElement).querySelectorAll(query) : [this as any as Element];\n targetElements.forEach(targetElement => {\n if (targetElement) {\n let bound = this._boundElements.get(targetElement);\n if (!bound) {\n bound = new Set();\n this._boundElements.set(targetElement, bound);\n }\n const eventKey = `event:${String(it.propertyKey)}:${type}`;\n if (!bound.has(eventKey)) {\n const handler = (event: any) => {\n if (it.options.stopImmediatePropagation) event.stopImmediatePropagation();\n if (it.options.stopPropagation) event.stopPropagation();\n if (it.options.preventDefault) event.preventDefault();\n (this as any)[it.propertyKey](event, targetElement);\n };\n targetElement.addEventListener(type, handler, options);\n bound.add(eventKey);\n if (config.autoRemoveEventListeners) this._activeListeners.push({ el: targetElement, type, handler, options });\n const addEventMethods = getLifecycleMetadata(this, ON_ADD_EVENT_LISTENER_METADATA_KEY);\n addEventMethods?.forEach(m => {\n if (typeof (this as any)[m] === 'function') (this as any)[m](targetElement, type, handler);\n });\n }\n }\n });\n });\n });\n }\n }\n\n private _buildStateMap() {\n this._stateBindings.clear();\n this._externalSources.clear();\n const scan = (root: Node) => {\n const walker = document.createTreeWalker(root, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_TEXT);\n let node: Node | null = null;\n while ((node = walker.nextNode())) {\n if (node.nodeType === Node.TEXT_NODE) this._parseAndBind(node, 'text');\n else if (node.nodeType === Node.ELEMENT_NODE) {\n const el = node as HTMLElement;\n const alias = el.getAttribute('as');\n if (alias) {\n this._externalSources.set(alias, el);\n el.addEventListener(STATE_CHANGE_EVENT, () => this._updateState(alias));\n }\n Array.from(el.attributes).forEach(attr => this._parseAndBind(attr, 'attribute', el));\n }\n }\n };\n if (this.shadowRoot) scan(this.shadowRoot);\n scan(this as any as Node);\n }\n\n private _parseAndBind(node: Node | Attr, type: 'text' | 'attribute', owner?: HTMLElement) {\n const content = node.textContent || '';\n const matches = Array.from(content.matchAll(/{{(.*?)}}/g));\n if (matches.length === 0) return;\n matches.forEach(match => {\n const fullPath = match[1].trim();\n const rootName = fullPath.split('.')[0];\n const isState = stateList?.some(s => s.options.name === rootName);\n const isLogicKey = (this as any)._asKey === rootName || (this as any)._asIndexKey === rootName;\n const isExternal = this._externalSources.has(rootName);\n const isSelfAlias = this.getAttribute('as') === rootName;\n if (!isState && !isLogicKey && !isExternal && !isSelfAlias) return;\n if (!this._stateBindings.has(rootName)) this._stateBindings.set(rootName, []);\n const tplKey = `__swc_original_${this._swcId}`;\n if (!(node as any)[tplKey]) (node as any)[tplKey] = content;\n this._stateBindings.get(rootName)!.push({ node, type, owner, path: fullPath });\n this._updateState(rootName);\n });\n }\n\n private _updateState(stateName: string) {\n if (!this._stateBindings) return;\n this._executeBindingUpdate(stateName);\n const selfAlias = this.getAttribute('as');\n if (selfAlias && selfAlias !== stateName) this._executeBindingUpdate(selfAlias);\n this.dispatchEvent(new CustomEvent(STATE_CHANGE_EVENT, { bubbles: true, composed: true }));\n }\n\n private _executeBindingUpdate(stateName: string) {\n const bindings = this._stateBindings.get(stateName);\n if (!bindings) return;\n const tplKey = `__swc_original_${this._swcId}`;\n bindings.forEach(bin => {\n let text = (bin.node as any)[tplKey];\n const matches = Array.from(text.matchAll(/{{(.*?)}}/g));\n for (const match of matches) {\n const path = match[1].trim();\n const root = path.split('.')[0];\n let val: any = undefined;\n let current: HTMLElement | null = this as any as HTMLElement;\n while (current) {\n const currentNewClass = current as any;\n if (current.getAttribute('as') === root) {\n val = SwcUtils.getValueByPath(current, path.split('.').slice(1).join('.') || 'value', 'value');\n if (val !== undefined) break;\n }\n const externalSource = currentNewClass._externalSources?.get(root);\n if (externalSource) {\n val = SwcUtils.getValueByPath(externalSource, path.split('.').slice(1).join('.') || 'value', 'value');\n if (val !== undefined) break;\n }\n const cStates = getStateMetadataList(current.constructor);\n const cAttrs = getAttributeMetadataList(current.constructor);\n const sMeta = cStates?.find(s => s.options.name === root);\n const aMeta = cAttrs?.find(a => a.options.name === root);\n if (sMeta || aMeta) {\n let aPath = path;\n if (sMeta && sMeta.options.name !== String(sMeta.propertyKey)) aPath = path.replace(sMeta.options.name!, String(sMeta.propertyKey));\n else if (aMeta && aMeta.options.name !== String(aMeta.propertyKey)) aPath = path.replace(aMeta.options.name!, String(aMeta.propertyKey));\n val = SwcUtils.getValueByPath(current, aPath, root);\n if (val !== undefined) break;\n }\n current = current.parentElement || (current.getRootNode() as any).host;\n }\n if (val !== undefined) {\n const strVal = val === null || val === undefined ? '' : typeof val === 'object' ? '[Object]' : String(val);\n text = text.replace(match[0], strVal);\n if (bin.type === 'attribute' && bin.owner) {\n if (val === null || val === undefined) bin.owner.removeAttribute(bin.attrName!);\n else bin.owner.setAttribute(bin.attrName!, text);\n }\n }\n }\n if (bin.type === 'text') bin.node.textContent = text;\n });\n }\n\n disconnectedCallback() {\n const bMethods = getLifecycleMetadata(this, ON_BEFORE_DISCONNECTED_METADATA_KEY);\n bMethods?.forEach(m => {\n if (typeof (this as any)[m] === 'function') (this as any)[m]();\n });\n if (this._observer) this._observer.disconnect();\n if (config.autoRemoveEventListeners) {\n this._activeListeners.forEach(({ el, type, handler, options }) => el.removeEventListener(type, handler, options));\n this._activeListeners = [];\n }\n if (super.disconnectedCallback) super.disconnectedCallback();\n const aMethods = getLifecycleMetadata(this, ON_AFTER_DISCONNECTED_METADATA_KEY);\n aMethods?.forEach(m => {\n if (typeof (this as any)[m] === 'function') (this as any)[m]();\n });\n }\n\n adoptedCallback() {\n const bMethods = getLifecycleMetadata(this, ON_BEFORE_ADOPTED_METADATA_KEY);\n bMethods?.forEach(m => {\n if (typeof (this as any)[m] === 'function') (this as any)[m]();\n });\n if (super.adoptedCallback) super.adoptedCallback();\n const aMethods = getLifecycleMetadata(this, ON_AFTER_ADOPTED_METADATA_KEY);\n aMethods?.forEach(m => {\n if (typeof (this as any)[m] === 'function') (this as any)[m]();\n });\n }\n\n async connectedCallback() {\n const bMethods = getLifecycleMetadata(this, ON_BEFORE_CONNECTED_METADATA_KEY);\n bMethods?.forEach(m => {\n if (typeof (this as any)[m] === 'function') (this as any)[m]();\n });\n if (typeof (this as any).initCore === 'function') (this as any).initCore();\n const iHtmlList = getInnerHtmlMetadataList(this);\n let sContent = '';\n let lContent = '';\n if (iHtmlList) {\n for (const meta of iHtmlList) {\n const result = await (this as any)[meta.propertyKey]();\n if (result !== undefined) {\n if (meta.options.useShadow === true) sContent += result;\n else lContent += result;\n }\n }\n }\n if (this.shadowRoot) this.shadowRoot.innerHTML = sContent;\n if (lContent) this.innerHTML = lContent;\n (this as any)._syncDecorators();\n this._observer = new MutationObserver(() => (this as any)._syncDecorators());\n this._observer.observe(this.shadowRoot || this, { childList: true, subtree: true });\n if (super.connectedCallback) await super.connectedCallback();\n const aMethods = getLifecycleMetadata(this, ON_AFTER_CONNECTED_METADATA_KEY);\n aMethods?.forEach(m => {\n if (typeof (this as any)[m] === 'function') (this as any)[m]();\n });\n }\n\n attributeChangedCallback(name: string, oldValue: string | null, newValue: string | null) {\n if (super.attributeChangedCallback) super.attributeChangedCallback(name, oldValue, newValue);\n if (attributePropsList) {\n attributePropsList.forEach(meta => {\n if (meta.options.name === name) {\n if (String((this as any)[meta.propertyKey]) !== String(newValue)) (this as any)[meta.propertyKey] = newValue;\n }\n });\n }\n if (typeof (this as any)._updateState === 'function') (this as any)._updateState(name);\n const aMethodsMap = getLifecycleMetadata(constructor, ON_ATTRIBUTE_CHANGED_METADATA_KEY) as Map<string, (string | symbol)[]>;\n const mKeys = aMethodsMap?.get(name);\n if (mKeys && Array.isArray(mKeys))\n mKeys.forEach(key => {\n if (typeof (this as any)[key] === 'function') (this as any)[key](newValue, oldValue, name);\n });\n if (emitCustomEventList) {\n const eMeta = emitCustomEventList.find(it => it.options.attributeName === name);\n if (eMeta) {\n const eType = eMeta.options.type;\n const oHandler = this._emitHandlers.get(eType);\n if (oHandler) this.removeEventListener(eType, oHandler);\n if (newValue) {\n const nHandler = (e: Event) => {\n new Function('event', '$data', newValue).call(this, e, (e as CustomEvent).detail);\n };\n this.addEventListener(eType, nHandler);\n this._emitHandlers.set(eType, nHandler);\n }\n }\n }\n const wMethodsKeys = aMethodsMap?.get(ATTRIBUTE_CHANGED_WILDCARD);\n if (wMethodsKeys && Array.isArray(wMethodsKeys))\n wMethodsKeys.forEach(key => {\n if (typeof (this as any)[key] === 'function') (this as any)[key](newValue, oldValue, name);\n });\n }\n };\n\n const registry = config.customElementRegistry || (typeof customElements !== 'undefined' ? customElements : undefined);\n if (registry && !registry.get(config.name)) {\n registry.define(config.name, NewClass as any, config.extends ? { extends: config.extends } : undefined);\n }\n ReflectUtils.defineMetadata(ELEMENT_CONFIG_KEY, config, NewClass);\n return NewClass as any;\n };\n\nexport const getElementConfig = (target: any): ElementConfig | undefined => {\n const constructor = target instanceof Function ? target : target.constructor;\n return ReflectUtils.getMetadata(ELEMENT_CONFIG_KEY, constructor);\n};\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,0BAA6B;AAC7B,uBAAyC;AACzC,mBAAiC;AACjC,sBAAoC;AACpC,8BAA4C;AAC5C,wBAAmV;AACnV,uBAAyC;AACzC,mBAAqC;AACrC,6BAA+C;AAC/C,mBAAyB;AAUlB,MAAM,qBAAqB,OAAO,qCAAqC;AACvE,MAAM,qBAAqB;AAElC,MAAM,mBAAmB,oBAAI,IAAiB;AAE9C,MAAM,cAAc,CAAC,WAAmB,YAAoB;AAC1D,MAAI,OAAO,eAAe,eAAgB,WAAmB,SAAS,GAAG;AACvE,qBAAiB,IAAK,WAAmB,SAAS,GAAG,OAAO;AAAA,EAC9D;AACF;AAEA;AAAA,EACE,CAAC,qBAAqB,GAAG;AAAA,EACzB,CAAC,mBAAmB,MAAM;AAAA,EAC1B,CAAC,oBAAoB,OAAO;AAAA,EAC5B,CAAC,mBAAmB,MAAM;AAAA,EAC1B,CAAC,qBAAqB,QAAQ;AAAA,EAC9B,CAAC,qBAAqB,QAAQ;AAAA,EAC9B,CAAC,mBAAmB,MAAM;AAAA,EAC1B,CAAC,uBAAuB,UAAU;AAAA,EAClC,CAAC,sBAAsB,SAAS;AAAA,EAChC,CAAC,qBAAqB,QAAQ;AAAA,EAC9B,CAAC,kBAAkB,KAAK;AAAA,EACxB,CAAC,oBAAoB,IAAI;AAAA,EACzB,CAAC,oBAAoB,OAAO;AAAA,EAC5B,CAAC,uBAAuB,UAAU;AAAA,EAClC,CAAC,mBAAmB,MAAM;AAAA,EAC1B,CAAC,iBAAiB,IAAI;AAAA,EACtB,CAAC,qBAAqB,QAAQ;AAAA,EAC9B,CAAC,oBAAoB,KAAK;AAAA,EAC1B,CAAC,oBAAoB,OAAO;AAAA,EAC5B,CAAC,oBAAoB,OAAO;AAAA,EAC5B,CAAC,qBAAqB,QAAQ;AAAA,EAC9B,CAAC,iBAAiB,IAAI;AAAA,EACtB,CAAC,mBAAmB,MAAM;AAAA,EAC1B,CAAC,kBAAkB,KAAK;AAAA,EACxB,CAAC,mBAAmB,MAAM;AAAA,EAC1B,CAAC,oBAAoB,OAAO;AAAA,EAC5B,CAAC,kBAAkB,KAAK;AAAA,EACxB,CAAC,qBAAqB,QAAQ;AAAA,EAC9B,CAAC,oBAAoB,IAAI;AAAA,EACzB,CAAC,uBAAuB,UAAU;AAAA,EAClC,CAAC,qBAAqB,QAAQ;AAAA,EAC9B,CAAC,qBAAqB,QAAQ;AAAA,EAC9B,CAAC,wBAAwB,GAAG;AAAA,EAC5B,CAAC,oBAAoB,OAAO;AAAA,EAC5B,CAAC,sBAAsB,SAAS;AAAA,EAChC,CAAC,kBAAkB,KAAK;AAAA,EACxB,CAAC,uBAAuB,UAAU;AAAA,EAClC,CAAC,oBAAoB,YAAY;AAAA,EACjC,CAAC,qBAAqB,QAAQ;AAAA,EAC9B,CAAC,qBAAqB,QAAQ;AAAA,EAC9B,CAAC,mBAAmB,MAAM;AAAA,EAC1B,CAAC,qBAAqB,QAAQ;AAAA,EAC9B,CAAC,mBAAmB,MAAM;AAAA,EAC1B,CAAC,oBAAoB,OAAO;AAAA,EAC5B,CAAC,oBAAoB,OAAO;AAAA,EAC5B,CAAC,2BAA2B,OAAO;AAAA,EACnC,CAAC,wBAAwB,IAAI;AAAA,EAC7B,CAAC,uBAAuB,UAAU;AAAA,EAClC,CAAC,uBAAuB,UAAU;AAAA,EAClC,CAAC,mBAAmB,MAAM;AAAA,EAC1B,CAAC,oBAAoB,OAAO;AAAA,EAC5B,CAAC,uBAAuB,IAAI;AAAA,EAC5B,CAAC,oBAAoB,OAAO;AAAA,EAC5B,CAAC,oBAAoB,IAAI;AAAA,EACzB,CAAC,oBAAoB,OAAO;AAAA,EAC5B,CAAC,sBAAsB,IAAI;AAC7B,EAAE,QAAQ,CAAC,CAAC,KAAK,GAAG,MAAM,YAAY,KAAK,GAAG,CAAC;AAExC,MAAM,gBACX,CAAC,aACD,CAAC,gBAAqB;AACpB,QAAM,SAAwB,OAAO,aAAa,WAAW,EAAE,MAAM,SAAS,IAAI;AAElF,MAAI,iBAAiB,OAAO;AAC5B,MAAI,CAAC,gBAAgB;AACnB,QAAI,QAAQ,OAAO,eAAe,WAAW;AAC7C,WAAO,SAAS,UAAU,eAAe,UAAU,SAAS,WAAW;AACrE,uBAAiB,iBAAiB,IAAI,KAAK;AAC3C,UAAI,eAAgB;AACpB,cAAQ,OAAO,eAAe,KAAK;AAAA,IACrC;AAAA,EACF;AAEA,QAAM,yBAAqB,2CAAyB,WAAW;AAC/D,QAAM,0BAAsB,uDAA+B,WAAW;AACtE,QAAM,gBAAY,mCAAqB,WAAW;AAClD,QAAM,oBAAoB,qBAAqB,mBAAmB,IAAI,QAAM,GAAG,QAAQ,IAAK,IAAI,CAAC;AACjG,QAAM,oBAAoB,sBAAsB,oBAAoB,IAAI,QAAM,GAAG,QAAQ,aAAc,IAAI,CAAC;AAC5G,QAAM,2BAA2B,CAAC,GAAG,oBAAI,IAAI,CAAC,GAAI,OAAO,sBAAsB,CAAC,GAAI,GAAG,mBAAmB,GAAG,iBAAiB,CAAC,CAAC;AAEhI,QAAM,WAAW,cAAe,YAAoB;AAAA,IAclD,eAAe,MAAa;AAC1B,YAAM,GAAG,IAAI;AAdf,WAAQ,SAAS,KAAK,OAAO,EAAE,SAAS,EAAE,EAAE,UAAU,GAAG,EAAE;AAC3D,WAAQ,YAAqC;AAC7C,WAAQ,iBAAiB,oBAAI,QAAuC;AACpE,WAAQ,mBAA8G,CAAC;AACvH,WAAQ,gBAAgB,oBAAI,IAA2B;AACvD,WAAQ,iBAAiB,oBAAI,IAAmB;AAChD,WAAQ,kBAAkB,oBAAI,IAA0B;AACxD,WAAQ,mBAAmB,oBAAI,IAAyB;AAQtD,UAAI,WAAW;AACb,kBAAU,QAAQ,UAAQ;AACxB,gBAAM,MAAM,KAAK;AACjB,gBAAM,YAAY,KAAK,QAAQ;AAC/B,gBAAM,aAAc,KAAa,GAAG;AACpC,eAAK,gBAAgB;AAAA,YACnB;AAAA,YACA,sBAAS,oBAAoB,YAAY,MAAM,KAAK,aAAa,SAAS,CAAC;AAAA,UAC7E;AACA,iBAAO,eAAe,MAAM,KAAK;AAAA,YAC/B,KAAK,MAAM,KAAK,gBAAgB,IAAI,GAAG;AAAA,YACvC,KAAK,YAAU;AACb,kBAAI,KAAK,gBAAgB,IAAI,GAAG,MAAM,OAAQ;AAC9C,mBAAK,gBAAgB;AAAA,gBACnB;AAAA,gBACA,sBAAS,oBAAoB,QAAQ,MAAM,KAAK,aAAa,SAAS,CAAC;AAAA,cACzE;AACA,mBAAK,aAAa,SAAS;AAAA,YAC7B;AAAA,YACA,YAAY;AAAA,YACZ,cAAc;AAAA,UAChB,CAAC;AAAA,QACH,CAAC;AAAA,MACH;AACA,YAAM,oBAAgB,2CAAyB,IAAI;AACnD,UAAI,eAAe,KAAK,QAAM,GAAG,QAAQ,cAAc,IAAI,KAAK,CAAC,KAAK,YAAY;AAChF,aAAK,aAAa,EAAE,MAAM,OAAO,CAAC;AAAA,MACpC;AAAA,IACF;AAAA,IAlCA,WAAW,qBAAqB;AAC9B,aAAO;AAAA,IACT;AAAA,IAkCQ,kBAAkB;AACxB,WAAK,eAAe;AAEpB,YAAM,iBAAiB,CAAC,eAAgC;AACtD,cAAM,QAAgB,CAAC;AACvB,YAAI,eAAe,UAAU;AAC3B,cAAI,KAAK,WAAY,OAAM,KAAK,KAAK,UAAU;AAAA,QACjD,WAAW,eAAe,SAAS;AACjC,gBAAM,KAAK,IAAmB;AAAA,QAChC,WAAW,eAAe,OAAO;AAC/B,cAAI,KAAK,WAAY,OAAM,KAAK,KAAK,UAAU;AAC/C,gBAAM,KAAK,IAAmB;AAAA,QAChC,OAAO;AAEL,gBAAM,KAAK,KAAK,cAAe,IAAoB;AAAA,QACrD;AACA,eAAO;AAAA,MACT;AAEA,YAAM,oBAAgB,+BAAiB,IAAI;AAC3C,UAAI,eAAe;AACjB,sBACG,OAAO,QAAM,GAAG,QAAQ,EACxB,QAAQ,QAAM;AACb,gBAAM,cAAc,eAAe,GAAG,QAAQ,IAAI;AAClD,cAAI,UAA0B;AAC9B,qBAAW,QAAQ,aAAa;AAC9B,sBAAU,GAAG,WAAY,KAAqB,cAAc,GAAG,QAAQ,IAAK;AAC5E,gBAAI,QAAS;AAAA,UACf;AACA,cAAI,SAAS;AACX,gBAAI,QAAQ,KAAK,eAAe,IAAI,OAAO;AAC3C,gBAAI,CAAC,OAAO;AACV,sBAAQ,oBAAI,IAAI;AAChB,mBAAK,eAAe,IAAI,SAAS,KAAK;AAAA,YACxC;AACA,gBAAI,CAAC,MAAM,IAAI,GAAG,WAAW,GAAG;AAC9B,cAAC,KAAa,GAAG,WAAW,EAAE,OAAO;AACrC,oBAAM,IAAI,GAAG,WAAW;AAAA,YAC1B;AAAA,UACF;AAAA,QACF,CAAC;AAAA,MACL;AAEA,YAAM,uBAAmB,qCAAoB,IAAI;AACjD,UAAI,kBAAkB;AACpB,yBACG,OAAO,QAAM,GAAG,QAAQ,EACxB,QAAQ,QAAM;AACb,gBAAM,cAAc,eAAe,GAAG,QAAQ,IAAI;AAClD,gBAAM,cAAyB,CAAC;AAChC,sBAAY,QAAQ,UAAQ;AAC1B,kBAAM,QAAQ,GAAG,WAAY,KAAqB,iBAAiB,GAAG,QAAQ,IAAI,CAAC,IAAsB;AACzG,wBAAY,KAAK,GAAG,MAAM,KAAK,KAAK,CAAC;AAAA,UACvC,CAAC;AACD,UAAC,KAAa,GAAG,WAAW,EAAE,WAAW;AAAA,QAC3C,CAAC;AAAA,MACL;AAEA,YAAM,qBAAiB,qDAA4B,IAAI;AACvD,UAAI,gBAAgB;AAClB,uBAAe,QAAQ,QAAM;AAC3B,gBAAM,EAAE,OAAO,MAAM,MAAM,YAAY,GAAG,QAAQ,IAAI,GAAG;AACzD,gBAAM,cAAc,eAAe,UAAU;AAC7C,sBAAY,QAAQ,UAAQ;AAC1B,kBAAM,iBAAiB,QAAS,KAAqB,iBAAiB,KAAK,IAAI,CAAC,IAAsB;AACtG,2BAAe,QAAQ,mBAAiB;AACtC,kBAAI,eAAe;AACjB,oBAAI,QAAQ,KAAK,eAAe,IAAI,aAAa;AACjD,oBAAI,CAAC,OAAO;AACV,0BAAQ,oBAAI,IAAI;AAChB,uBAAK,eAAe,IAAI,eAAe,KAAK;AAAA,gBAC9C;AACA,sBAAM,WAAW,SAAS,OAAO,GAAG,WAAW,CAAC,IAAI,IAAI;AACxD,oBAAI,CAAC,MAAM,IAAI,QAAQ,GAAG;AACxB,wBAAM,UAAU,CAAC,UAAe;AAC9B,wBAAI,GAAG,QAAQ,yBAA0B,OAAM,yBAAyB;AACxE,wBAAI,GAAG,QAAQ,gBAAiB,OAAM,gBAAgB;AACtD,wBAAI,GAAG,QAAQ,eAAgB,OAAM,eAAe;AACpD,oBAAC,KAAa,GAAG,WAAW,EAAE,OAAO,aAAa;AAAA,kBACpD;AACA,gCAAc,iBAAiB,MAAM,SAAS,OAAO;AACrD,wBAAM,IAAI,QAAQ;AAClB,sBAAI,OAAO,yBAA0B,MAAK,iBAAiB,KAAK,EAAE,IAAI,eAAe,MAAM,SAAS,QAAQ,CAAC;AAC7G,wBAAM,sBAAkB,wCAAqB,MAAM,oDAAkC;AACrF,mCAAiB,QAAQ,OAAK;AAC5B,wBAAI,OAAQ,KAAa,CAAC,MAAM,WAAY,CAAC,KAAa,CAAC,EAAE,eAAe,MAAM,OAAO;AAAA,kBAC3F,CAAC;AAAA,gBACH;AAAA,cACF;AAAA,YACF,CAAC;AAAA,UACH,CAAC;AAAA,QACH,CAAC;AAAA,MACH;AAAA,IACF;AAAA,IAEQ,iBAAiB;AACvB,WAAK,eAAe,MAAM;AAC1B,WAAK,iBAAiB,MAAM;AAC5B,YAAM,OAAO,CAAC,SAAe;AAC3B,cAAM,SAAS,SAAS,iBAAiB,MAAM,WAAW,eAAe,WAAW,SAAS;AAC7F,YAAI,OAAoB;AACxB,eAAQ,OAAO,OAAO,SAAS,GAAI;AACjC,cAAI,KAAK,aAAa,KAAK,UAAW,MAAK,cAAc,MAAM,MAAM;AAAA,mBAC5D,KAAK,aAAa,KAAK,cAAc;AAC5C,kBAAM,KAAK;AACX,kBAAM,QAAQ,GAAG,aAAa,IAAI;AAClC,gBAAI,OAAO;AACT,mBAAK,iBAAiB,IAAI,OAAO,EAAE;AACnC,iBAAG,iBAAiB,oBAAoB,MAAM,KAAK,aAAa,KAAK,CAAC;AAAA,YACxE;AACA,kBAAM,KAAK,GAAG,UAAU,EAAE,QAAQ,UAAQ,KAAK,cAAc,MAAM,aAAa,EAAE,CAAC;AAAA,UACrF;AAAA,QACF;AAAA,MACF;AACA,UAAI,KAAK,WAAY,MAAK,KAAK,UAAU;AACzC,WAAK,IAAmB;AAAA,IAC1B;AAAA,IAEQ,cAAc,MAAmB,MAA4B,OAAqB;AACxF,YAAM,UAAU,KAAK,eAAe;AACpC,YAAM,UAAU,MAAM,KAAK,QAAQ,SAAS,YAAY,CAAC;AACzD,UAAI,QAAQ,WAAW,EAAG;AAC1B,cAAQ,QAAQ,WAAS;AACvB,cAAM,WAAW,MAAM,CAAC,EAAE,KAAK;AAC/B,cAAM,WAAW,SAAS,MAAM,GAAG,EAAE,CAAC;AACtC,cAAM,UAAU,WAAW,KAAK,OAAK,EAAE,QAAQ,SAAS,QAAQ;AAChE,cAAM,aAAc,KAAa,WAAW,YAAa,KAAa,gBAAgB;AACtF,cAAM,aAAa,KAAK,iBAAiB,IAAI,QAAQ;AACrD,cAAM,cAAc,KAAK,aAAa,IAAI,MAAM;AAChD,YAAI,CAAC,WAAW,CAAC,cAAc,CAAC,cAAc,CAAC,YAAa;AAC5D,YAAI,CAAC,KAAK,eAAe,IAAI,QAAQ,EAAG,MAAK,eAAe,IAAI,UAAU,CAAC,CAAC;AAC5E,cAAM,SAAS,kBAAkB,KAAK,MAAM;AAC5C,YAAI,CAAE,KAAa,MAAM,EAAG,CAAC,KAAa,MAAM,IAAI;AACpD,aAAK,eAAe,IAAI,QAAQ,EAAG,KAAK,EAAE,MAAM,MAAM,OAAO,MAAM,SAAS,CAAC;AAC7E,aAAK,aAAa,QAAQ;AAAA,MAC5B,CAAC;AAAA,IACH;AAAA,IAEQ,aAAa,WAAmB;AACtC,UAAI,CAAC,KAAK,eAAgB;AAC1B,WAAK,sBAAsB,SAAS;AACpC,YAAM,YAAY,KAAK,aAAa,IAAI;AACxC,UAAI,aAAa,cAAc,UAAW,MAAK,sBAAsB,SAAS;AAC9E,WAAK,cAAc,IAAI,YAAY,oBAAoB,EAAE,SAAS,MAAM,UAAU,KAAK,CAAC,CAAC;AAAA,IAC3F;AAAA,IAEQ,sBAAsB,WAAmB;AAC/C,YAAM,WAAW,KAAK,eAAe,IAAI,SAAS;AAClD,UAAI,CAAC,SAAU;AACf,YAAM,SAAS,kBAAkB,KAAK,MAAM;AAC5C,eAAS,QAAQ,SAAO;AACtB,YAAI,OAAQ,IAAI,KAAa,MAAM;AACnC,cAAM,UAAU,MAAM,KAAK,KAAK,SAAS,YAAY,CAAC;AACtD,mBAAW,SAAS,SAAS;AAC3B,gBAAM,OAAO,MAAM,CAAC,EAAE,KAAK;AAC3B,gBAAM,OAAO,KAAK,MAAM,GAAG,EAAE,CAAC;AAC9B,cAAI,MAAW;AACf,cAAI,UAA8B;AAClC,iBAAO,SAAS;AACd,kBAAM,kBAAkB;AACxB,gBAAI,QAAQ,aAAa,IAAI,MAAM,MAAM;AACvC,oBAAM,sBAAS,eAAe,SAAS,KAAK,MAAM,GAAG,EAAE,MAAM,CAAC,EAAE,KAAK,GAAG,KAAK,SAAS,OAAO;AAC7F,kBAAI,QAAQ,OAAW;AAAA,YACzB;AACA,kBAAM,iBAAiB,gBAAgB,kBAAkB,IAAI,IAAI;AACjE,gBAAI,gBAAgB;AAClB,oBAAM,sBAAS,eAAe,gBAAgB,KAAK,MAAM,GAAG,EAAE,MAAM,CAAC,EAAE,KAAK,GAAG,KAAK,SAAS,OAAO;AACpG,kBAAI,QAAQ,OAAW;AAAA,YACzB;AACA,kBAAM,cAAU,mCAAqB,QAAQ,WAAW;AACxD,kBAAM,aAAS,2CAAyB,QAAQ,WAAW;AAC3D,kBAAM,QAAQ,SAAS,KAAK,OAAK,EAAE,QAAQ,SAAS,IAAI;AACxD,kBAAM,QAAQ,QAAQ,KAAK,OAAK,EAAE,QAAQ,SAAS,IAAI;AACvD,gBAAI,SAAS,OAAO;AAClB,kBAAI,QAAQ;AACZ,kBAAI,SAAS,MAAM,QAAQ,SAAS,OAAO,MAAM,WAAW,EAAG,SAAQ,KAAK,QAAQ,MAAM,QAAQ,MAAO,OAAO,MAAM,WAAW,CAAC;AAAA,uBACzH,SAAS,MAAM,QAAQ,SAAS,OAAO,MAAM,WAAW,EAAG,SAAQ,KAAK,QAAQ,MAAM,QAAQ,MAAO,OAAO,MAAM,WAAW,CAAC;AACvI,oBAAM,sBAAS,eAAe,SAAS,OAAO,IAAI;AAClD,kBAAI,QAAQ,OAAW;AAAA,YACzB;AACA,sBAAU,QAAQ,iBAAkB,QAAQ,YAAY,EAAU;AAAA,UACpE;AACA,cAAI,QAAQ,QAAW;AACrB,kBAAM,SAAS,QAAQ,QAAQ,QAAQ,SAAY,KAAK,OAAO,QAAQ,WAAW,aAAa,OAAO,GAAG;AACzG,mBAAO,KAAK,QAAQ,MAAM,CAAC,GAAG,MAAM;AACpC,gBAAI,IAAI,SAAS,eAAe,IAAI,OAAO;AACzC,kBAAI,QAAQ,QAAQ,QAAQ,OAAW,KAAI,MAAM,gBAAgB,IAAI,QAAS;AAAA,kBACzE,KAAI,MAAM,aAAa,IAAI,UAAW,IAAI;AAAA,YACjD;AAAA,UACF;AAAA,QACF;AACA,YAAI,IAAI,SAAS,OAAQ,KAAI,KAAK,cAAc;AAAA,MAClD,CAAC;AAAA,IACH;AAAA,IAEA,uBAAuB;AACrB,YAAM,eAAW,wCAAqB,MAAM,qDAAmC;AAC/E,gBAAU,QAAQ,OAAK;AACrB,YAAI,OAAQ,KAAa,CAAC,MAAM,WAAY,CAAC,KAAa,CAAC,EAAE;AAAA,MAC/D,CAAC;AACD,UAAI,KAAK,UAAW,MAAK,UAAU,WAAW;AAC9C,UAAI,OAAO,0BAA0B;AACnC,aAAK,iBAAiB,QAAQ,CAAC,EAAE,IAAI,MAAM,SAAS,QAAQ,MAAM,GAAG,oBAAoB,MAAM,SAAS,OAAO,CAAC;AAChH,aAAK,mBAAmB,CAAC;AAAA,MAC3B;AACA,UAAI,MAAM,qBAAsB,OAAM,qBAAqB;AAC3D,YAAM,eAAW,wCAAqB,MAAM,oDAAkC;AAC9E,gBAAU,QAAQ,OAAK;AACrB,YAAI,OAAQ,KAAa,CAAC,MAAM,WAAY,CAAC,KAAa,CAAC,EAAE;AAAA,MAC/D,CAAC;AAAA,IACH;AAAA,IAEA,kBAAkB;AAChB,YAAM,eAAW,wCAAqB,MAAM,gDAA8B;AAC1E,gBAAU,QAAQ,OAAK;AACrB,YAAI,OAAQ,KAAa,CAAC,MAAM,WAAY,CAAC,KAAa,CAAC,EAAE;AAAA,MAC/D,CAAC;AACD,UAAI,MAAM,gBAAiB,OAAM,gBAAgB;AACjD,YAAM,eAAW,wCAAqB,MAAM,+CAA6B;AACzE,gBAAU,QAAQ,OAAK;AACrB,YAAI,OAAQ,KAAa,CAAC,MAAM,WAAY,CAAC,KAAa,CAAC,EAAE;AAAA,MAC/D,CAAC;AAAA,IACH;AAAA,IAEA,MAAM,oBAAoB;AACxB,YAAM,eAAW,wCAAqB,MAAM,kDAAgC;AAC5E,gBAAU,QAAQ,OAAK;AACrB,YAAI,OAAQ,KAAa,CAAC,MAAM,WAAY,CAAC,KAAa,CAAC,EAAE;AAAA,MAC/D,CAAC;AACD,UAAI,OAAQ,KAAa,aAAa,WAAY,CAAC,KAAa,SAAS;AACzE,YAAM,gBAAY,2CAAyB,IAAI;AAC/C,UAAI,WAAW;AACf,UAAI,WAAW;AACf,UAAI,WAAW;AACb,mBAAW,QAAQ,WAAW;AAC5B,gBAAM,SAAS,MAAO,KAAa,KAAK,WAAW,EAAE;AACrD,cAAI,WAAW,QAAW;AACxB,gBAAI,KAAK,QAAQ,cAAc,KAAM,aAAY;AAAA,gBAC5C,aAAY;AAAA,UACnB;AAAA,QACF;AAAA,MACF;AACA,UAAI,KAAK,WAAY,MAAK,WAAW,YAAY;AACjD,UAAI,SAAU,MAAK,YAAY;AAC/B,MAAC,KAAa,gBAAgB;AAC9B,WAAK,YAAY,IAAI,iBAAiB,MAAO,KAAa,gBAAgB,CAAC;AAC3E,WAAK,UAAU,QAAQ,KAAK,cAAc,MAAM,EAAE,WAAW,MAAM,SAAS,KAAK,CAAC;AAClF,UAAI,MAAM,kBAAmB,OAAM,MAAM,kBAAkB;AAC3D,YAAM,eAAW,wCAAqB,MAAM,iDAA+B;AAC3E,gBAAU,QAAQ,OAAK;AACrB,YAAI,OAAQ,KAAa,CAAC,MAAM,WAAY,CAAC,KAAa,CAAC,EAAE;AAAA,MAC/D,CAAC;AAAA,IACH;AAAA,IAEA,yBAAyB,MAAc,UAAyB,UAAyB;AACvF,UAAI,MAAM,yBAA0B,OAAM,yBAAyB,MAAM,UAAU,QAAQ;AAC3F,UAAI,oBAAoB;AACtB,2BAAmB,QAAQ,UAAQ;AACjC,cAAI,KAAK,QAAQ,SAAS,MAAM;AAC9B,gBAAI,OAAQ,KAAa,KAAK,WAAW,CAAC,MAAM,OAAO,QAAQ,EAAG,CAAC,KAAa,KAAK,WAAW,IAAI;AAAA,UACtG;AAAA,QACF,CAAC;AAAA,MACH;AACA,UAAI,OAAQ,KAAa,iBAAiB,WAAY,CAAC,KAAa,aAAa,IAAI;AACrF,YAAM,kBAAc,wCAAqB,aAAa,mDAAiC;AACvF,YAAM,QAAQ,aAAa,IAAI,IAAI;AACnC,UAAI,SAAS,MAAM,QAAQ,KAAK;AAC9B,cAAM,QAAQ,SAAO;AACnB,cAAI,OAAQ,KAAa,GAAG,MAAM,WAAY,CAAC,KAAa,GAAG,EAAE,UAAU,UAAU,IAAI;AAAA,QAC3F,CAAC;AACH,UAAI,qBAAqB;AACvB,cAAM,QAAQ,oBAAoB,KAAK,QAAM,GAAG,QAAQ,kBAAkB,IAAI;AAC9E,YAAI,OAAO;AACT,gBAAM,QAAQ,MAAM,QAAQ;AAC5B,gBAAM,WAAW,KAAK,cAAc,IAAI,KAAK;AAC7C,cAAI,SAAU,MAAK,oBAAoB,OAAO,QAAQ;AACtD,cAAI,UAAU;AACZ,kBAAM,WAAW,CAAC,MAAa;AAC7B,kBAAI,SAAS,SAAS,SAAS,QAAQ,EAAE,KAAK,MAAM,GAAI,EAAkB,MAAM;AAAA,YAClF;AACA,iBAAK,iBAAiB,OAAO,QAAQ;AACrC,iBAAK,cAAc,IAAI,OAAO,QAAQ;AAAA,UACxC;AAAA,QACF;AAAA,MACF;AACA,YAAM,eAAe,aAAa,IAAI,4CAA0B;AAChE,UAAI,gBAAgB,MAAM,QAAQ,YAAY;AAC5C,qBAAa,QAAQ,SAAO;AAC1B,cAAI,OAAQ,KAAa,GAAG,MAAM,WAAY,CAAC,KAAa,GAAG,EAAE,UAAU,UAAU,IAAI;AAAA,QAC3F,CAAC;AAAA,IACL;AAAA,EACF;AAEA,QAAM,WAAW,OAAO,0BAA0B,OAAO,mBAAmB,cAAc,iBAAiB;AAC3G,MAAI,YAAY,CAAC,SAAS,IAAI,OAAO,IAAI,GAAG;AAC1C,aAAS,OAAO,OAAO,MAAM,UAAiB,OAAO,UAAU,EAAE,SAAS,OAAO,QAAQ,IAAI,MAAS;AAAA,EACxG;AACA,mCAAa,eAAe,oBAAoB,QAAQ,QAAQ;AAChE,SAAO;AACT;AAEK,MAAM,mBAAmB,CAAC,WAA2C;AAC1E,QAAM,cAAc,kBAAkB,WAAW,SAAS,OAAO;AACjE,SAAO,iCAAa,YAAY,oBAAoB,WAAW;AACjE;",
6
6
  "names": []
7
7
  }