@dooboostore/simple-web-component 1.0.18 → 1.0.19

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (589) hide show
  1. package/README.md +96 -77
  2. package/dist/cjs/config/config.js +2 -0
  3. package/dist/cjs/config/config.js.map +2 -2
  4. package/dist/cjs/decorators/addEventListener.js +4 -4
  5. package/dist/cjs/decorators/addEventListener.js.map +2 -2
  6. package/dist/cjs/decorators/appendChild.js +51 -7
  7. package/dist/cjs/decorators/appendChild.js.map +2 -2
  8. package/dist/cjs/decorators/classList.js +104 -0
  9. package/dist/cjs/decorators/classList.js.map +7 -0
  10. package/dist/cjs/decorators/elementDefine.js +306 -424
  11. package/dist/cjs/decorators/elementDefine.js.map +3 -3
  12. package/dist/cjs/decorators/emitCustomEvent.js +61 -9
  13. package/dist/cjs/decorators/emitCustomEvent.js.map +2 -2
  14. package/dist/cjs/decorators/index.js +3 -0
  15. package/dist/cjs/decorators/index.js.map +2 -2
  16. package/dist/cjs/decorators/query.js +56 -32
  17. package/dist/cjs/decorators/query.js.map +2 -2
  18. package/dist/cjs/decorators/queryAll.js +43 -19
  19. package/dist/cjs/decorators/queryAll.js.map +2 -2
  20. package/dist/cjs/decorators/replaceChildren.js +27 -1
  21. package/dist/cjs/decorators/replaceChildren.js.map +2 -2
  22. package/dist/cjs/decorators/setAttribute.js +35 -7
  23. package/dist/cjs/decorators/setAttribute.js.map +2 -2
  24. package/dist/cjs/decorators/style.js +88 -0
  25. package/dist/cjs/decorators/style.js.map +7 -0
  26. package/dist/cjs/elements/SwcAppEngine.js +23 -8
  27. package/dist/cjs/elements/SwcAppEngine.js.map +2 -2
  28. package/dist/cjs/elements/SwcAppMixin.js +52 -0
  29. package/dist/cjs/elements/SwcAppMixin.js.map +7 -0
  30. package/dist/cjs/elements/SwcAsync.js +57 -122
  31. package/dist/cjs/elements/SwcAsync.js.map +3 -3
  32. package/dist/cjs/elements/SwcChoose.js +51 -75
  33. package/dist/cjs/elements/SwcChoose.js.map +3 -3
  34. package/dist/cjs/elements/SwcIf.js +65 -93
  35. package/dist/cjs/elements/SwcIf.js.map +3 -3
  36. package/dist/cjs/elements/SwcLoop.js +72 -173
  37. package/dist/cjs/elements/SwcLoop.js.map +3 -3
  38. package/dist/cjs/elements/SwcSubTemplates.js +12 -37
  39. package/dist/cjs/elements/SwcSubTemplates.js.map +3 -3
  40. package/dist/cjs/elements/index.js +1 -8
  41. package/dist/cjs/elements/index.js.map +2 -2
  42. package/dist/cjs/elements/register.js +831 -0
  43. package/dist/cjs/elements/register.js.map +7 -0
  44. package/dist/cjs/index.js +13 -3
  45. package/dist/cjs/index.js.map +2 -2
  46. package/dist/cjs/types.js.map +1 -1
  47. package/dist/cjs/utils/TemplateUtils.js +103 -0
  48. package/dist/cjs/utils/TemplateUtils.js.map +7 -0
  49. package/dist/cjs/utils/Utils.js +10 -7
  50. package/dist/cjs/utils/Utils.js.map +2 -2
  51. package/dist/esm/config/config.js +2 -0
  52. package/dist/esm/config/config.js.map +2 -2
  53. package/dist/esm/decorators/addEventListener.js +4 -4
  54. package/dist/esm/decorators/addEventListener.js.map +2 -2
  55. package/dist/esm/decorators/appendChild.js +51 -7
  56. package/dist/esm/decorators/appendChild.js.map +2 -2
  57. package/dist/esm/decorators/classList.js +85 -0
  58. package/dist/esm/decorators/classList.js.map +7 -0
  59. package/dist/esm/decorators/elementDefine.js +306 -424
  60. package/dist/esm/decorators/elementDefine.js.map +3 -3
  61. package/dist/esm/decorators/emitCustomEvent.js +61 -9
  62. package/dist/esm/decorators/emitCustomEvent.js.map +2 -2
  63. package/dist/esm/decorators/index.js +3 -0
  64. package/dist/esm/decorators/index.js.map +2 -2
  65. package/dist/esm/decorators/query.js +57 -33
  66. package/dist/esm/decorators/query.js.map +2 -2
  67. package/dist/esm/decorators/queryAll.js +44 -20
  68. package/dist/esm/decorators/queryAll.js.map +2 -2
  69. package/dist/esm/decorators/replaceChildren.js +27 -1
  70. package/dist/esm/decorators/replaceChildren.js.map +2 -2
  71. package/dist/esm/decorators/setAttribute.js +35 -7
  72. package/dist/esm/decorators/setAttribute.js.map +2 -2
  73. package/dist/esm/decorators/style.js +69 -0
  74. package/dist/esm/decorators/style.js.map +7 -0
  75. package/dist/esm/elements/SwcAppEngine.js +23 -8
  76. package/dist/esm/elements/SwcAppEngine.js.map +2 -2
  77. package/dist/esm/elements/SwcAppMixin.js +33 -0
  78. package/dist/esm/elements/SwcAppMixin.js.map +7 -0
  79. package/dist/esm/elements/SwcAsync.js +57 -122
  80. package/dist/esm/elements/SwcAsync.js.map +3 -3
  81. package/dist/esm/elements/SwcChoose.js +51 -75
  82. package/dist/esm/elements/SwcChoose.js.map +3 -3
  83. package/dist/esm/elements/SwcIf.js +65 -93
  84. package/dist/esm/elements/SwcIf.js.map +3 -3
  85. package/dist/esm/elements/SwcLoop.js +71 -172
  86. package/dist/esm/elements/SwcLoop.js.map +3 -3
  87. package/dist/esm/elements/SwcSubTemplates.js +12 -37
  88. package/dist/esm/elements/SwcSubTemplates.js.map +3 -3
  89. package/dist/esm/elements/index.js +1 -8
  90. package/dist/esm/elements/index.js.map +2 -2
  91. package/dist/esm/elements/register.js +812 -0
  92. package/dist/esm/elements/register.js.map +7 -0
  93. package/dist/esm/index.js +13 -3
  94. package/dist/esm/index.js.map +2 -2
  95. package/dist/esm/types.js.map +1 -1
  96. package/dist/esm/utils/TemplateUtils.js +84 -0
  97. package/dist/esm/utils/TemplateUtils.js.map +7 -0
  98. package/dist/esm/utils/Utils.js +6 -3
  99. package/dist/esm/utils/Utils.js.map +2 -2
  100. package/dist/esm-bundle/dooboostore-simple-web-component.esm.js +1010 -5634
  101. package/dist/esm-bundle/dooboostore-simple-web-component.esm.js.map +4 -4
  102. package/dist/types/config/config.d.ts +1 -0
  103. package/dist/types/config/config.d.ts.map +1 -1
  104. package/dist/types/decorators/addEventListener.d.ts +11 -11
  105. package/dist/types/decorators/addEventListener.d.ts.map +1 -1
  106. package/dist/types/decorators/appendChild.d.ts +1 -1
  107. package/dist/types/decorators/appendChild.d.ts.map +1 -1
  108. package/dist/types/decorators/classList.d.ts +34 -0
  109. package/dist/types/decorators/classList.d.ts.map +1 -0
  110. package/dist/types/decorators/elementDefine.d.ts +9 -5
  111. package/dist/types/decorators/elementDefine.d.ts.map +1 -1
  112. package/dist/types/decorators/emitCustomEvent.d.ts +7 -4
  113. package/dist/types/decorators/emitCustomEvent.d.ts.map +1 -1
  114. package/dist/types/decorators/index.d.ts +3 -0
  115. package/dist/types/decorators/index.d.ts.map +1 -1
  116. package/dist/types/decorators/query.d.ts +7 -8
  117. package/dist/types/decorators/query.d.ts.map +1 -1
  118. package/dist/types/decorators/queryAll.d.ts +5 -9
  119. package/dist/types/decorators/queryAll.d.ts.map +1 -1
  120. package/dist/types/decorators/replaceChildren.d.ts.map +1 -1
  121. package/dist/types/decorators/setAttribute.d.ts +13 -3
  122. package/dist/types/decorators/setAttribute.d.ts.map +1 -1
  123. package/dist/types/decorators/style.d.ts +24 -0
  124. package/dist/types/decorators/style.d.ts.map +1 -0
  125. package/dist/types/elements/SwcAppEngine.d.ts +2 -2
  126. package/dist/types/elements/SwcAppEngine.d.ts.map +1 -1
  127. package/dist/types/elements/SwcAppMixin.d.ts +364 -0
  128. package/dist/types/elements/SwcAppMixin.d.ts.map +1 -0
  129. package/dist/types/elements/SwcAsync.d.ts +2 -6
  130. package/dist/types/elements/SwcAsync.d.ts.map +1 -1
  131. package/dist/types/elements/SwcChoose.d.ts +2 -1
  132. package/dist/types/elements/SwcChoose.d.ts.map +1 -1
  133. package/dist/types/elements/SwcIf.d.ts +5 -6
  134. package/dist/types/elements/SwcIf.d.ts.map +1 -1
  135. package/dist/types/elements/SwcLoop.d.ts +4 -10
  136. package/dist/types/elements/SwcLoop.d.ts.map +1 -1
  137. package/dist/types/elements/SwcSubTemplates.d.ts.map +1 -1
  138. package/dist/types/elements/index.d.ts +1 -8
  139. package/dist/types/elements/index.d.ts.map +1 -1
  140. package/dist/types/elements/register.d.ts +2 -0
  141. package/dist/types/elements/register.d.ts.map +1 -0
  142. package/dist/types/index.d.ts +7 -3
  143. package/dist/types/index.d.ts.map +1 -1
  144. package/dist/types/types.d.ts +6 -1
  145. package/dist/types/types.d.ts.map +1 -1
  146. package/dist/types/utils/TemplateUtils.d.ts +54 -0
  147. package/dist/types/utils/TemplateUtils.d.ts.map +1 -0
  148. package/dist/types/utils/Utils.d.ts.map +1 -1
  149. package/dist/umd-bundle/dooboostore-simple-web-component.umd.js +1010 -5634
  150. package/dist/umd-bundle/dooboostore-simple-web-component.umd.js.map +4 -4
  151. package/package.json +2 -2
  152. package/src/config/config.ts +2 -0
  153. package/src/decorators/addEventListener.ts +12 -11
  154. package/src/decorators/appendChild.ts +52 -8
  155. package/src/decorators/classList.ts +117 -0
  156. package/src/decorators/elementDefine.ts +340 -427
  157. package/src/decorators/emitCustomEvent.ts +76 -12
  158. package/src/decorators/index.ts +3 -0
  159. package/src/decorators/query.ts +57 -37
  160. package/src/decorators/queryAll.ts +44 -28
  161. package/src/decorators/replaceChildren.ts +30 -1
  162. package/src/decorators/setAttribute.ts +53 -11
  163. package/src/decorators/style.ts +89 -0
  164. package/src/elements/SwcAppEngine.ts +26 -11
  165. package/src/elements/SwcAppMixin.ts +34 -0
  166. package/src/elements/SwcAsync.ts +57 -127
  167. package/src/elements/SwcChoose.ts +50 -76
  168. package/src/elements/SwcIf.ts +63 -85
  169. package/src/elements/SwcLoop.ts +70 -167
  170. package/src/elements/SwcSubTemplates.ts +0 -13
  171. package/src/elements/index.ts +1 -8
  172. package/src/elements/register.ts +735 -0
  173. package/src/index.ts +16 -5
  174. package/src/types.ts +13 -5
  175. package/src/utils/TemplateUtils.ts +83 -0
  176. package/src/utils/Utils.ts +6 -3
  177. package/dist/cjs/elements/SwcApp.js +0 -55
  178. package/dist/cjs/elements/SwcApp.js.map +0 -7
  179. package/dist/cjs/elements/is/SwcAppAnchor.js +0 -55
  180. package/dist/cjs/elements/is/SwcAppAnchor.js.map +0 -7
  181. package/dist/cjs/elements/is/SwcAppArea.js +0 -55
  182. package/dist/cjs/elements/is/SwcAppArea.js.map +0 -7
  183. package/dist/cjs/elements/is/SwcAppAudio.js +0 -55
  184. package/dist/cjs/elements/is/SwcAppAudio.js.map +0 -7
  185. package/dist/cjs/elements/is/SwcAppBase.js +0 -55
  186. package/dist/cjs/elements/is/SwcAppBase.js.map +0 -7
  187. package/dist/cjs/elements/is/SwcAppBody.js +0 -55
  188. package/dist/cjs/elements/is/SwcAppBody.js.map +0 -7
  189. package/dist/cjs/elements/is/SwcAppButton.js +0 -55
  190. package/dist/cjs/elements/is/SwcAppButton.js.map +0 -7
  191. package/dist/cjs/elements/is/SwcAppCanvas.js +0 -55
  192. package/dist/cjs/elements/is/SwcAppCanvas.js.map +0 -7
  193. package/dist/cjs/elements/is/SwcAppData.js +0 -55
  194. package/dist/cjs/elements/is/SwcAppData.js.map +0 -7
  195. package/dist/cjs/elements/is/SwcAppDataList.js +0 -55
  196. package/dist/cjs/elements/is/SwcAppDataList.js.map +0 -7
  197. package/dist/cjs/elements/is/SwcAppDetails.js +0 -55
  198. package/dist/cjs/elements/is/SwcAppDetails.js.map +0 -7
  199. package/dist/cjs/elements/is/SwcAppDialog.js +0 -55
  200. package/dist/cjs/elements/is/SwcAppDialog.js.map +0 -7
  201. package/dist/cjs/elements/is/SwcAppDiv.js +0 -55
  202. package/dist/cjs/elements/is/SwcAppDiv.js.map +0 -7
  203. package/dist/cjs/elements/is/SwcAppDl.js +0 -55
  204. package/dist/cjs/elements/is/SwcAppDl.js.map +0 -7
  205. package/dist/cjs/elements/is/SwcAppEmbed.js +0 -55
  206. package/dist/cjs/elements/is/SwcAppEmbed.js.map +0 -7
  207. package/dist/cjs/elements/is/SwcAppFieldSet.js +0 -55
  208. package/dist/cjs/elements/is/SwcAppFieldSet.js.map +0 -7
  209. package/dist/cjs/elements/is/SwcAppForm.js +0 -55
  210. package/dist/cjs/elements/is/SwcAppForm.js.map +0 -7
  211. package/dist/cjs/elements/is/SwcAppHeading.js +0 -55
  212. package/dist/cjs/elements/is/SwcAppHeading.js.map +0 -7
  213. package/dist/cjs/elements/is/SwcAppHr.js +0 -55
  214. package/dist/cjs/elements/is/SwcAppHr.js.map +0 -7
  215. package/dist/cjs/elements/is/SwcAppIFrame.js +0 -55
  216. package/dist/cjs/elements/is/SwcAppIFrame.js.map +0 -7
  217. package/dist/cjs/elements/is/SwcAppImage.js +0 -55
  218. package/dist/cjs/elements/is/SwcAppImage.js.map +0 -7
  219. package/dist/cjs/elements/is/SwcAppInput.js +0 -55
  220. package/dist/cjs/elements/is/SwcAppInput.js.map +0 -7
  221. package/dist/cjs/elements/is/SwcAppLabel.js +0 -55
  222. package/dist/cjs/elements/is/SwcAppLabel.js.map +0 -7
  223. package/dist/cjs/elements/is/SwcAppLegend.js +0 -55
  224. package/dist/cjs/elements/is/SwcAppLegend.js.map +0 -7
  225. package/dist/cjs/elements/is/SwcAppLi.js +0 -55
  226. package/dist/cjs/elements/is/SwcAppLi.js.map +0 -7
  227. package/dist/cjs/elements/is/SwcAppLink.js +0 -55
  228. package/dist/cjs/elements/is/SwcAppLink.js.map +0 -7
  229. package/dist/cjs/elements/is/SwcAppMap.js +0 -55
  230. package/dist/cjs/elements/is/SwcAppMap.js.map +0 -7
  231. package/dist/cjs/elements/is/SwcAppMeta.js +0 -55
  232. package/dist/cjs/elements/is/SwcAppMeta.js.map +0 -7
  233. package/dist/cjs/elements/is/SwcAppMeter.js +0 -55
  234. package/dist/cjs/elements/is/SwcAppMeter.js.map +0 -7
  235. package/dist/cjs/elements/is/SwcAppMod.js +0 -55
  236. package/dist/cjs/elements/is/SwcAppMod.js.map +0 -7
  237. package/dist/cjs/elements/is/SwcAppObject.js +0 -55
  238. package/dist/cjs/elements/is/SwcAppObject.js.map +0 -7
  239. package/dist/cjs/elements/is/SwcAppOl.js +0 -55
  240. package/dist/cjs/elements/is/SwcAppOl.js.map +0 -7
  241. package/dist/cjs/elements/is/SwcAppOptGroup.js +0 -55
  242. package/dist/cjs/elements/is/SwcAppOptGroup.js.map +0 -7
  243. package/dist/cjs/elements/is/SwcAppOption.js +0 -55
  244. package/dist/cjs/elements/is/SwcAppOption.js.map +0 -7
  245. package/dist/cjs/elements/is/SwcAppOutput.js +0 -55
  246. package/dist/cjs/elements/is/SwcAppOutput.js.map +0 -7
  247. package/dist/cjs/elements/is/SwcAppParagraph.js +0 -55
  248. package/dist/cjs/elements/is/SwcAppParagraph.js.map +0 -7
  249. package/dist/cjs/elements/is/SwcAppParam.js +0 -55
  250. package/dist/cjs/elements/is/SwcAppParam.js.map +0 -7
  251. package/dist/cjs/elements/is/SwcAppPicture.js +0 -55
  252. package/dist/cjs/elements/is/SwcAppPicture.js.map +0 -7
  253. package/dist/cjs/elements/is/SwcAppPre.js +0 -55
  254. package/dist/cjs/elements/is/SwcAppPre.js.map +0 -7
  255. package/dist/cjs/elements/is/SwcAppProgress.js +0 -55
  256. package/dist/cjs/elements/is/SwcAppProgress.js.map +0 -7
  257. package/dist/cjs/elements/is/SwcAppQuote.js +0 -55
  258. package/dist/cjs/elements/is/SwcAppQuote.js.map +0 -7
  259. package/dist/cjs/elements/is/SwcAppScript.js +0 -55
  260. package/dist/cjs/elements/is/SwcAppScript.js.map +0 -7
  261. package/dist/cjs/elements/is/SwcAppSelect.js +0 -55
  262. package/dist/cjs/elements/is/SwcAppSelect.js.map +0 -7
  263. package/dist/cjs/elements/is/SwcAppSlot.js +0 -55
  264. package/dist/cjs/elements/is/SwcAppSlot.js.map +0 -7
  265. package/dist/cjs/elements/is/SwcAppSource.js +0 -55
  266. package/dist/cjs/elements/is/SwcAppSource.js.map +0 -7
  267. package/dist/cjs/elements/is/SwcAppSpan.js +0 -55
  268. package/dist/cjs/elements/is/SwcAppSpan.js.map +0 -7
  269. package/dist/cjs/elements/is/SwcAppStyle.js +0 -55
  270. package/dist/cjs/elements/is/SwcAppStyle.js.map +0 -7
  271. package/dist/cjs/elements/is/SwcAppTable.js +0 -55
  272. package/dist/cjs/elements/is/SwcAppTable.js.map +0 -7
  273. package/dist/cjs/elements/is/SwcAppTableCell.js +0 -55
  274. package/dist/cjs/elements/is/SwcAppTableCell.js.map +0 -7
  275. package/dist/cjs/elements/is/SwcAppTableRow.js +0 -55
  276. package/dist/cjs/elements/is/SwcAppTableRow.js.map +0 -7
  277. package/dist/cjs/elements/is/SwcAppTableSection.js +0 -55
  278. package/dist/cjs/elements/is/SwcAppTableSection.js.map +0 -7
  279. package/dist/cjs/elements/is/SwcAppTemplate.js +0 -55
  280. package/dist/cjs/elements/is/SwcAppTemplate.js.map +0 -7
  281. package/dist/cjs/elements/is/SwcAppTextArea.js +0 -55
  282. package/dist/cjs/elements/is/SwcAppTextArea.js.map +0 -7
  283. package/dist/cjs/elements/is/SwcAppTime.js +0 -55
  284. package/dist/cjs/elements/is/SwcAppTime.js.map +0 -7
  285. package/dist/cjs/elements/is/SwcAppTitle.js +0 -55
  286. package/dist/cjs/elements/is/SwcAppTitle.js.map +0 -7
  287. package/dist/cjs/elements/is/SwcAppTrack.js +0 -55
  288. package/dist/cjs/elements/is/SwcAppTrack.js.map +0 -7
  289. package/dist/cjs/elements/is/SwcAppUl.js +0 -55
  290. package/dist/cjs/elements/is/SwcAppUl.js.map +0 -7
  291. package/dist/cjs/elements/is/SwcAppVideo.js +0 -55
  292. package/dist/cjs/elements/is/SwcAppVideo.js.map +0 -7
  293. package/dist/cjs/elements/is/index.js +0 -74
  294. package/dist/cjs/elements/is/index.js.map +0 -7
  295. package/dist/esm/elements/SwcApp.js +0 -36
  296. package/dist/esm/elements/SwcApp.js.map +0 -7
  297. package/dist/esm/elements/is/SwcAppAnchor.js +0 -36
  298. package/dist/esm/elements/is/SwcAppAnchor.js.map +0 -7
  299. package/dist/esm/elements/is/SwcAppArea.js +0 -36
  300. package/dist/esm/elements/is/SwcAppArea.js.map +0 -7
  301. package/dist/esm/elements/is/SwcAppAudio.js +0 -36
  302. package/dist/esm/elements/is/SwcAppAudio.js.map +0 -7
  303. package/dist/esm/elements/is/SwcAppBase.js +0 -36
  304. package/dist/esm/elements/is/SwcAppBase.js.map +0 -7
  305. package/dist/esm/elements/is/SwcAppBody.js +0 -36
  306. package/dist/esm/elements/is/SwcAppBody.js.map +0 -7
  307. package/dist/esm/elements/is/SwcAppButton.js +0 -36
  308. package/dist/esm/elements/is/SwcAppButton.js.map +0 -7
  309. package/dist/esm/elements/is/SwcAppCanvas.js +0 -36
  310. package/dist/esm/elements/is/SwcAppCanvas.js.map +0 -7
  311. package/dist/esm/elements/is/SwcAppData.js +0 -36
  312. package/dist/esm/elements/is/SwcAppData.js.map +0 -7
  313. package/dist/esm/elements/is/SwcAppDataList.js +0 -36
  314. package/dist/esm/elements/is/SwcAppDataList.js.map +0 -7
  315. package/dist/esm/elements/is/SwcAppDetails.js +0 -36
  316. package/dist/esm/elements/is/SwcAppDetails.js.map +0 -7
  317. package/dist/esm/elements/is/SwcAppDialog.js +0 -36
  318. package/dist/esm/elements/is/SwcAppDialog.js.map +0 -7
  319. package/dist/esm/elements/is/SwcAppDiv.js +0 -36
  320. package/dist/esm/elements/is/SwcAppDiv.js.map +0 -7
  321. package/dist/esm/elements/is/SwcAppDl.js +0 -36
  322. package/dist/esm/elements/is/SwcAppDl.js.map +0 -7
  323. package/dist/esm/elements/is/SwcAppEmbed.js +0 -36
  324. package/dist/esm/elements/is/SwcAppEmbed.js.map +0 -7
  325. package/dist/esm/elements/is/SwcAppFieldSet.js +0 -36
  326. package/dist/esm/elements/is/SwcAppFieldSet.js.map +0 -7
  327. package/dist/esm/elements/is/SwcAppForm.js +0 -36
  328. package/dist/esm/elements/is/SwcAppForm.js.map +0 -7
  329. package/dist/esm/elements/is/SwcAppHeading.js +0 -36
  330. package/dist/esm/elements/is/SwcAppHeading.js.map +0 -7
  331. package/dist/esm/elements/is/SwcAppHr.js +0 -36
  332. package/dist/esm/elements/is/SwcAppHr.js.map +0 -7
  333. package/dist/esm/elements/is/SwcAppIFrame.js +0 -36
  334. package/dist/esm/elements/is/SwcAppIFrame.js.map +0 -7
  335. package/dist/esm/elements/is/SwcAppImage.js +0 -36
  336. package/dist/esm/elements/is/SwcAppImage.js.map +0 -7
  337. package/dist/esm/elements/is/SwcAppInput.js +0 -36
  338. package/dist/esm/elements/is/SwcAppInput.js.map +0 -7
  339. package/dist/esm/elements/is/SwcAppLabel.js +0 -36
  340. package/dist/esm/elements/is/SwcAppLabel.js.map +0 -7
  341. package/dist/esm/elements/is/SwcAppLegend.js +0 -36
  342. package/dist/esm/elements/is/SwcAppLegend.js.map +0 -7
  343. package/dist/esm/elements/is/SwcAppLi.js +0 -36
  344. package/dist/esm/elements/is/SwcAppLi.js.map +0 -7
  345. package/dist/esm/elements/is/SwcAppLink.js +0 -36
  346. package/dist/esm/elements/is/SwcAppLink.js.map +0 -7
  347. package/dist/esm/elements/is/SwcAppMap.js +0 -36
  348. package/dist/esm/elements/is/SwcAppMap.js.map +0 -7
  349. package/dist/esm/elements/is/SwcAppMeta.js +0 -36
  350. package/dist/esm/elements/is/SwcAppMeta.js.map +0 -7
  351. package/dist/esm/elements/is/SwcAppMeter.js +0 -36
  352. package/dist/esm/elements/is/SwcAppMeter.js.map +0 -7
  353. package/dist/esm/elements/is/SwcAppMod.js +0 -36
  354. package/dist/esm/elements/is/SwcAppMod.js.map +0 -7
  355. package/dist/esm/elements/is/SwcAppObject.js +0 -36
  356. package/dist/esm/elements/is/SwcAppObject.js.map +0 -7
  357. package/dist/esm/elements/is/SwcAppOl.js +0 -36
  358. package/dist/esm/elements/is/SwcAppOl.js.map +0 -7
  359. package/dist/esm/elements/is/SwcAppOptGroup.js +0 -36
  360. package/dist/esm/elements/is/SwcAppOptGroup.js.map +0 -7
  361. package/dist/esm/elements/is/SwcAppOption.js +0 -36
  362. package/dist/esm/elements/is/SwcAppOption.js.map +0 -7
  363. package/dist/esm/elements/is/SwcAppOutput.js +0 -36
  364. package/dist/esm/elements/is/SwcAppOutput.js.map +0 -7
  365. package/dist/esm/elements/is/SwcAppParagraph.js +0 -36
  366. package/dist/esm/elements/is/SwcAppParagraph.js.map +0 -7
  367. package/dist/esm/elements/is/SwcAppParam.js +0 -36
  368. package/dist/esm/elements/is/SwcAppParam.js.map +0 -7
  369. package/dist/esm/elements/is/SwcAppPicture.js +0 -36
  370. package/dist/esm/elements/is/SwcAppPicture.js.map +0 -7
  371. package/dist/esm/elements/is/SwcAppPre.js +0 -36
  372. package/dist/esm/elements/is/SwcAppPre.js.map +0 -7
  373. package/dist/esm/elements/is/SwcAppProgress.js +0 -36
  374. package/dist/esm/elements/is/SwcAppProgress.js.map +0 -7
  375. package/dist/esm/elements/is/SwcAppQuote.js +0 -36
  376. package/dist/esm/elements/is/SwcAppQuote.js.map +0 -7
  377. package/dist/esm/elements/is/SwcAppScript.js +0 -36
  378. package/dist/esm/elements/is/SwcAppScript.js.map +0 -7
  379. package/dist/esm/elements/is/SwcAppSelect.js +0 -36
  380. package/dist/esm/elements/is/SwcAppSelect.js.map +0 -7
  381. package/dist/esm/elements/is/SwcAppSlot.js +0 -36
  382. package/dist/esm/elements/is/SwcAppSlot.js.map +0 -7
  383. package/dist/esm/elements/is/SwcAppSource.js +0 -36
  384. package/dist/esm/elements/is/SwcAppSource.js.map +0 -7
  385. package/dist/esm/elements/is/SwcAppSpan.js +0 -36
  386. package/dist/esm/elements/is/SwcAppSpan.js.map +0 -7
  387. package/dist/esm/elements/is/SwcAppStyle.js +0 -36
  388. package/dist/esm/elements/is/SwcAppStyle.js.map +0 -7
  389. package/dist/esm/elements/is/SwcAppTable.js +0 -36
  390. package/dist/esm/elements/is/SwcAppTable.js.map +0 -7
  391. package/dist/esm/elements/is/SwcAppTableCell.js +0 -36
  392. package/dist/esm/elements/is/SwcAppTableCell.js.map +0 -7
  393. package/dist/esm/elements/is/SwcAppTableRow.js +0 -36
  394. package/dist/esm/elements/is/SwcAppTableRow.js.map +0 -7
  395. package/dist/esm/elements/is/SwcAppTableSection.js +0 -36
  396. package/dist/esm/elements/is/SwcAppTableSection.js.map +0 -7
  397. package/dist/esm/elements/is/SwcAppTemplate.js +0 -36
  398. package/dist/esm/elements/is/SwcAppTemplate.js.map +0 -7
  399. package/dist/esm/elements/is/SwcAppTextArea.js +0 -36
  400. package/dist/esm/elements/is/SwcAppTextArea.js.map +0 -7
  401. package/dist/esm/elements/is/SwcAppTime.js +0 -36
  402. package/dist/esm/elements/is/SwcAppTime.js.map +0 -7
  403. package/dist/esm/elements/is/SwcAppTitle.js +0 -36
  404. package/dist/esm/elements/is/SwcAppTitle.js.map +0 -7
  405. package/dist/esm/elements/is/SwcAppTrack.js +0 -36
  406. package/dist/esm/elements/is/SwcAppTrack.js.map +0 -7
  407. package/dist/esm/elements/is/SwcAppUl.js +0 -36
  408. package/dist/esm/elements/is/SwcAppUl.js.map +0 -7
  409. package/dist/esm/elements/is/SwcAppVideo.js +0 -36
  410. package/dist/esm/elements/is/SwcAppVideo.js.map +0 -7
  411. package/dist/esm/elements/is/index.js +0 -58
  412. package/dist/esm/elements/is/index.js.map +0 -7
  413. package/dist/types/elements/SwcApp.d.ts +0 -9
  414. package/dist/types/elements/SwcApp.d.ts.map +0 -1
  415. package/dist/types/elements/is/SwcAppAnchor.d.ts +0 -9
  416. package/dist/types/elements/is/SwcAppAnchor.d.ts.map +0 -1
  417. package/dist/types/elements/is/SwcAppArea.d.ts +0 -9
  418. package/dist/types/elements/is/SwcAppArea.d.ts.map +0 -1
  419. package/dist/types/elements/is/SwcAppAudio.d.ts +0 -9
  420. package/dist/types/elements/is/SwcAppAudio.d.ts.map +0 -1
  421. package/dist/types/elements/is/SwcAppBase.d.ts +0 -9
  422. package/dist/types/elements/is/SwcAppBase.d.ts.map +0 -1
  423. package/dist/types/elements/is/SwcAppBody.d.ts +0 -9
  424. package/dist/types/elements/is/SwcAppBody.d.ts.map +0 -1
  425. package/dist/types/elements/is/SwcAppButton.d.ts +0 -9
  426. package/dist/types/elements/is/SwcAppButton.d.ts.map +0 -1
  427. package/dist/types/elements/is/SwcAppCanvas.d.ts +0 -9
  428. package/dist/types/elements/is/SwcAppCanvas.d.ts.map +0 -1
  429. package/dist/types/elements/is/SwcAppData.d.ts +0 -9
  430. package/dist/types/elements/is/SwcAppData.d.ts.map +0 -1
  431. package/dist/types/elements/is/SwcAppDataList.d.ts +0 -9
  432. package/dist/types/elements/is/SwcAppDataList.d.ts.map +0 -1
  433. package/dist/types/elements/is/SwcAppDetails.d.ts +0 -9
  434. package/dist/types/elements/is/SwcAppDetails.d.ts.map +0 -1
  435. package/dist/types/elements/is/SwcAppDialog.d.ts +0 -9
  436. package/dist/types/elements/is/SwcAppDialog.d.ts.map +0 -1
  437. package/dist/types/elements/is/SwcAppDiv.d.ts +0 -9
  438. package/dist/types/elements/is/SwcAppDiv.d.ts.map +0 -1
  439. package/dist/types/elements/is/SwcAppDl.d.ts +0 -9
  440. package/dist/types/elements/is/SwcAppDl.d.ts.map +0 -1
  441. package/dist/types/elements/is/SwcAppEmbed.d.ts +0 -9
  442. package/dist/types/elements/is/SwcAppEmbed.d.ts.map +0 -1
  443. package/dist/types/elements/is/SwcAppFieldSet.d.ts +0 -9
  444. package/dist/types/elements/is/SwcAppFieldSet.d.ts.map +0 -1
  445. package/dist/types/elements/is/SwcAppForm.d.ts +0 -9
  446. package/dist/types/elements/is/SwcAppForm.d.ts.map +0 -1
  447. package/dist/types/elements/is/SwcAppHeading.d.ts +0 -9
  448. package/dist/types/elements/is/SwcAppHeading.d.ts.map +0 -1
  449. package/dist/types/elements/is/SwcAppHr.d.ts +0 -9
  450. package/dist/types/elements/is/SwcAppHr.d.ts.map +0 -1
  451. package/dist/types/elements/is/SwcAppIFrame.d.ts +0 -9
  452. package/dist/types/elements/is/SwcAppIFrame.d.ts.map +0 -1
  453. package/dist/types/elements/is/SwcAppImage.d.ts +0 -9
  454. package/dist/types/elements/is/SwcAppImage.d.ts.map +0 -1
  455. package/dist/types/elements/is/SwcAppInput.d.ts +0 -9
  456. package/dist/types/elements/is/SwcAppInput.d.ts.map +0 -1
  457. package/dist/types/elements/is/SwcAppLabel.d.ts +0 -9
  458. package/dist/types/elements/is/SwcAppLabel.d.ts.map +0 -1
  459. package/dist/types/elements/is/SwcAppLegend.d.ts +0 -9
  460. package/dist/types/elements/is/SwcAppLegend.d.ts.map +0 -1
  461. package/dist/types/elements/is/SwcAppLi.d.ts +0 -9
  462. package/dist/types/elements/is/SwcAppLi.d.ts.map +0 -1
  463. package/dist/types/elements/is/SwcAppLink.d.ts +0 -9
  464. package/dist/types/elements/is/SwcAppLink.d.ts.map +0 -1
  465. package/dist/types/elements/is/SwcAppMap.d.ts +0 -9
  466. package/dist/types/elements/is/SwcAppMap.d.ts.map +0 -1
  467. package/dist/types/elements/is/SwcAppMeta.d.ts +0 -9
  468. package/dist/types/elements/is/SwcAppMeta.d.ts.map +0 -1
  469. package/dist/types/elements/is/SwcAppMeter.d.ts +0 -9
  470. package/dist/types/elements/is/SwcAppMeter.d.ts.map +0 -1
  471. package/dist/types/elements/is/SwcAppMod.d.ts +0 -9
  472. package/dist/types/elements/is/SwcAppMod.d.ts.map +0 -1
  473. package/dist/types/elements/is/SwcAppObject.d.ts +0 -9
  474. package/dist/types/elements/is/SwcAppObject.d.ts.map +0 -1
  475. package/dist/types/elements/is/SwcAppOl.d.ts +0 -9
  476. package/dist/types/elements/is/SwcAppOl.d.ts.map +0 -1
  477. package/dist/types/elements/is/SwcAppOptGroup.d.ts +0 -9
  478. package/dist/types/elements/is/SwcAppOptGroup.d.ts.map +0 -1
  479. package/dist/types/elements/is/SwcAppOption.d.ts +0 -9
  480. package/dist/types/elements/is/SwcAppOption.d.ts.map +0 -1
  481. package/dist/types/elements/is/SwcAppOutput.d.ts +0 -9
  482. package/dist/types/elements/is/SwcAppOutput.d.ts.map +0 -1
  483. package/dist/types/elements/is/SwcAppParagraph.d.ts +0 -9
  484. package/dist/types/elements/is/SwcAppParagraph.d.ts.map +0 -1
  485. package/dist/types/elements/is/SwcAppParam.d.ts +0 -9
  486. package/dist/types/elements/is/SwcAppParam.d.ts.map +0 -1
  487. package/dist/types/elements/is/SwcAppPicture.d.ts +0 -9
  488. package/dist/types/elements/is/SwcAppPicture.d.ts.map +0 -1
  489. package/dist/types/elements/is/SwcAppPre.d.ts +0 -9
  490. package/dist/types/elements/is/SwcAppPre.d.ts.map +0 -1
  491. package/dist/types/elements/is/SwcAppProgress.d.ts +0 -9
  492. package/dist/types/elements/is/SwcAppProgress.d.ts.map +0 -1
  493. package/dist/types/elements/is/SwcAppQuote.d.ts +0 -9
  494. package/dist/types/elements/is/SwcAppQuote.d.ts.map +0 -1
  495. package/dist/types/elements/is/SwcAppScript.d.ts +0 -9
  496. package/dist/types/elements/is/SwcAppScript.d.ts.map +0 -1
  497. package/dist/types/elements/is/SwcAppSelect.d.ts +0 -9
  498. package/dist/types/elements/is/SwcAppSelect.d.ts.map +0 -1
  499. package/dist/types/elements/is/SwcAppSlot.d.ts +0 -9
  500. package/dist/types/elements/is/SwcAppSlot.d.ts.map +0 -1
  501. package/dist/types/elements/is/SwcAppSource.d.ts +0 -9
  502. package/dist/types/elements/is/SwcAppSource.d.ts.map +0 -1
  503. package/dist/types/elements/is/SwcAppSpan.d.ts +0 -9
  504. package/dist/types/elements/is/SwcAppSpan.d.ts.map +0 -1
  505. package/dist/types/elements/is/SwcAppStyle.d.ts +0 -9
  506. package/dist/types/elements/is/SwcAppStyle.d.ts.map +0 -1
  507. package/dist/types/elements/is/SwcAppTable.d.ts +0 -9
  508. package/dist/types/elements/is/SwcAppTable.d.ts.map +0 -1
  509. package/dist/types/elements/is/SwcAppTableCell.d.ts +0 -9
  510. package/dist/types/elements/is/SwcAppTableCell.d.ts.map +0 -1
  511. package/dist/types/elements/is/SwcAppTableRow.d.ts +0 -9
  512. package/dist/types/elements/is/SwcAppTableRow.d.ts.map +0 -1
  513. package/dist/types/elements/is/SwcAppTableSection.d.ts +0 -9
  514. package/dist/types/elements/is/SwcAppTableSection.d.ts.map +0 -1
  515. package/dist/types/elements/is/SwcAppTemplate.d.ts +0 -9
  516. package/dist/types/elements/is/SwcAppTemplate.d.ts.map +0 -1
  517. package/dist/types/elements/is/SwcAppTextArea.d.ts +0 -9
  518. package/dist/types/elements/is/SwcAppTextArea.d.ts.map +0 -1
  519. package/dist/types/elements/is/SwcAppTime.d.ts +0 -9
  520. package/dist/types/elements/is/SwcAppTime.d.ts.map +0 -1
  521. package/dist/types/elements/is/SwcAppTitle.d.ts +0 -9
  522. package/dist/types/elements/is/SwcAppTitle.d.ts.map +0 -1
  523. package/dist/types/elements/is/SwcAppTrack.d.ts +0 -9
  524. package/dist/types/elements/is/SwcAppTrack.d.ts.map +0 -1
  525. package/dist/types/elements/is/SwcAppUl.d.ts +0 -9
  526. package/dist/types/elements/is/SwcAppUl.d.ts.map +0 -1
  527. package/dist/types/elements/is/SwcAppVideo.d.ts +0 -9
  528. package/dist/types/elements/is/SwcAppVideo.d.ts.map +0 -1
  529. package/dist/types/elements/is/index.d.ts +0 -58
  530. package/dist/types/elements/is/index.d.ts.map +0 -1
  531. package/src/elements/SwcApp.ts +0 -26
  532. package/src/elements/is/SwcAppAnchor.ts +0 -26
  533. package/src/elements/is/SwcAppArea.ts +0 -26
  534. package/src/elements/is/SwcAppAudio.ts +0 -26
  535. package/src/elements/is/SwcAppBase.ts +0 -26
  536. package/src/elements/is/SwcAppBody.ts +0 -26
  537. package/src/elements/is/SwcAppButton.ts +0 -26
  538. package/src/elements/is/SwcAppCanvas.ts +0 -26
  539. package/src/elements/is/SwcAppData.ts +0 -26
  540. package/src/elements/is/SwcAppDataList.ts +0 -26
  541. package/src/elements/is/SwcAppDetails.ts +0 -26
  542. package/src/elements/is/SwcAppDialog.ts +0 -26
  543. package/src/elements/is/SwcAppDiv.ts +0 -26
  544. package/src/elements/is/SwcAppDl.ts +0 -26
  545. package/src/elements/is/SwcAppEmbed.ts +0 -26
  546. package/src/elements/is/SwcAppFieldSet.ts +0 -26
  547. package/src/elements/is/SwcAppForm.ts +0 -26
  548. package/src/elements/is/SwcAppHeading.ts +0 -26
  549. package/src/elements/is/SwcAppHr.ts +0 -26
  550. package/src/elements/is/SwcAppIFrame.ts +0 -26
  551. package/src/elements/is/SwcAppImage.ts +0 -26
  552. package/src/elements/is/SwcAppInput.ts +0 -26
  553. package/src/elements/is/SwcAppLabel.ts +0 -26
  554. package/src/elements/is/SwcAppLegend.ts +0 -26
  555. package/src/elements/is/SwcAppLi.ts +0 -26
  556. package/src/elements/is/SwcAppLink.ts +0 -26
  557. package/src/elements/is/SwcAppMap.ts +0 -26
  558. package/src/elements/is/SwcAppMeta.ts +0 -26
  559. package/src/elements/is/SwcAppMeter.ts +0 -26
  560. package/src/elements/is/SwcAppMod.ts +0 -26
  561. package/src/elements/is/SwcAppObject.ts +0 -26
  562. package/src/elements/is/SwcAppOl.ts +0 -26
  563. package/src/elements/is/SwcAppOptGroup.ts +0 -26
  564. package/src/elements/is/SwcAppOption.ts +0 -26
  565. package/src/elements/is/SwcAppOutput.ts +0 -26
  566. package/src/elements/is/SwcAppParagraph.ts +0 -26
  567. package/src/elements/is/SwcAppParam.ts +0 -26
  568. package/src/elements/is/SwcAppPicture.ts +0 -26
  569. package/src/elements/is/SwcAppPre.ts +0 -26
  570. package/src/elements/is/SwcAppProgress.ts +0 -26
  571. package/src/elements/is/SwcAppQuote.ts +0 -26
  572. package/src/elements/is/SwcAppScript.ts +0 -26
  573. package/src/elements/is/SwcAppSelect.ts +0 -26
  574. package/src/elements/is/SwcAppSlot.ts +0 -26
  575. package/src/elements/is/SwcAppSource.ts +0 -26
  576. package/src/elements/is/SwcAppSpan.ts +0 -26
  577. package/src/elements/is/SwcAppStyle.ts +0 -26
  578. package/src/elements/is/SwcAppTable.ts +0 -26
  579. package/src/elements/is/SwcAppTableCell.ts +0 -26
  580. package/src/elements/is/SwcAppTableRow.ts +0 -26
  581. package/src/elements/is/SwcAppTableSection.ts +0 -26
  582. package/src/elements/is/SwcAppTemplate.ts +0 -26
  583. package/src/elements/is/SwcAppTextArea.ts +0 -26
  584. package/src/elements/is/SwcAppTime.ts +0 -26
  585. package/src/elements/is/SwcAppTitle.ts +0 -26
  586. package/src/elements/is/SwcAppTrack.ts +0 -26
  587. package/src/elements/is/SwcAppUl.ts +0 -26
  588. package/src/elements/is/SwcAppVideo.ts +0 -26
  589. package/src/elements/is/index.ts +0 -57
@@ -20,7 +20,6 @@ __export(SwcIf_exports, {
20
20
  SwcIf: () => SwcIf
21
21
  });
22
22
  module.exports = __toCommonJS(SwcIf_exports);
23
- var import_elementDefine = require("../decorators/elementDefine");
24
23
  var import_changedAttribute = require("../decorators/changedAttribute");
25
24
  var import_Utils = require("../utils/Utils");
26
25
  var import_FunctionUtils = require("@dooboostore/core/function/FunctionUtils");
@@ -33,135 +32,108 @@ var __decorate = function(decorators, target, key, desc) {
33
32
  var __metadata = function(k, v) {
34
33
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
35
34
  };
36
- let SwcIf = class SwcIf2 extends HTMLTemplateElement {
35
+ class SwcIf extends HTMLTemplateElement {
37
36
  constructor() {
38
37
  super(...arguments);
38
+ this._value = false;
39
39
  this._nodes = [];
40
- this._value = null;
41
40
  }
42
41
  get value() {
43
42
  return this._value;
44
43
  }
45
44
  set value(nv) {
46
- this._value = nv;
45
+ this._value = Boolean(nv);
47
46
  this.render();
48
47
  }
49
- _getTarget() {
50
- const script = this.getAttribute("on-get-portal");
51
- if (!script)
52
- return null;
53
- try {
54
- const res = import_FunctionUtils.FunctionUtils.executeReturn({
55
- script,
56
- context: this,
57
- args: import_Utils.SwcUtils.getHelperAndHostSet(window, this)
58
- });
59
- if (typeof res === "string")
60
- return document.querySelector(res);
61
- if (res instanceof Node)
62
- return res;
63
- } catch (e) {
64
- console.error("[SwcIf] Portal target error:", e);
65
- }
66
- return null;
48
+ _resolvePortal() {
49
+ const portalScript = this.getAttribute("on-get-portal");
50
+ if (!portalScript)
51
+ return this.parentElement;
52
+ const win = this.ownerDocument?.defaultView || window;
53
+ const res = import_FunctionUtils.FunctionUtils.executeReturn({
54
+ script: portalScript,
55
+ context: this,
56
+ args: import_Utils.SwcUtils.getHelperAndHostSet(win, this)
57
+ });
58
+ if (res instanceof HTMLElement)
59
+ return res;
60
+ if (typeof res === "string")
61
+ return win.document.querySelector(res);
62
+ return this.parentElement;
67
63
  }
68
- _executeCallback(attrName, extraArgs) {
69
- const script = this.getAttribute(attrName);
64
+ _executeCloneCallback(attr, args) {
65
+ const script = this.getAttribute(attr);
70
66
  if (!script)
71
67
  return;
72
- const helperHostSet = import_Utils.SwcUtils.getHelperAndHostSet(window, this);
73
- try {
74
- import_FunctionUtils.FunctionUtils.execute({ script, context: this, args: { ...helperHostSet, ...extraArgs } });
75
- } catch (e) {
76
- console.error(`[SwcIf] Error in ${attrName}:`, e);
77
- }
68
+ import_FunctionUtils.FunctionUtils.execute({ script, context: this, args });
78
69
  }
79
- refresh(newValue) {
80
- const script = newValue !== void 0 ? newValue : this.getAttribute("on-get-value");
70
+ refreshValue() {
71
+ const script = this.getAttribute("on-get-value");
81
72
  if (!script) {
82
- this.value = null;
73
+ this.value = false;
83
74
  return;
84
75
  }
85
- if (!this.parentElement)
86
- return;
87
- const helperHostSet = import_Utils.SwcUtils.getHelperAndHostSet(window, this);
88
- try {
89
- const result = import_FunctionUtils.FunctionUtils.executeReturn({
90
- script,
91
- context: this,
92
- args: helperHostSet
93
- });
94
- this.value = result;
95
- } catch (e) {
96
- console.error("[SwcIf] Error in on-get-value:", e);
97
- this.value = null;
76
+ const win = this.ownerDocument?.defaultView || window;
77
+ const res = import_FunctionUtils.FunctionUtils.executeReturn({
78
+ script,
79
+ context: this,
80
+ args: import_Utils.SwcUtils.getHelperAndHostSet(win, this)
81
+ });
82
+ if (res instanceof Promise) {
83
+ res.then((v) => this.value = v).catch(() => this.value = false);
84
+ } else {
85
+ this.value = res;
98
86
  }
99
87
  }
100
88
  render() {
101
89
  this.cleanup();
102
- if (!this.parentElement)
90
+ const portal = this._resolvePortal();
91
+ if (!portal)
103
92
  return;
104
- let fragment = null;
105
- const ctx = { $value: this._value, $nodes: [], $elements: [] };
93
+ const win = this.ownerDocument?.defaultView || window;
94
+ const helperSet = import_Utils.SwcUtils.getHelperAndHostSet(win, this);
95
+ let targetTpl = null;
106
96
  if (this._value) {
107
- const clone = this.content.cloneNode(true);
108
- Array.from(clone.querySelectorAll('template[is="swc-default"]')).forEach((t) => t.remove());
109
- fragment = clone;
97
+ targetTpl = this;
110
98
  } else {
111
- const t = this.content.querySelector('template[is="swc-default"]');
112
- if (t)
113
- fragment = t.content.cloneNode(true);
99
+ targetTpl = this.content.querySelector('template[is="swc-default"]');
114
100
  }
115
- if (fragment) {
116
- this.mount(fragment, ctx);
117
- }
118
- }
119
- mount(fragment, ctx) {
120
- const nodes = Array.from(fragment.childNodes);
121
- const elements = nodes.filter((n) => n.nodeType === 1);
122
- Object.assign(ctx, {
123
- $nodes: nodes,
124
- $elements: elements,
125
- $firstNode: nodes[0],
126
- $lastNode: nodes[nodes.length - 1],
127
- $firstElement: elements[0],
128
- $lastElement: elements[elements.length - 1]
129
- });
130
- this._executeCallback("on-clone-nodes", ctx);
131
- nodes.forEach((node, nodeIndex) => {
132
- if (node instanceof HTMLElement)
133
- node.__swc_host = this;
134
- this._executeCallback("on-clone-node", { ...ctx, $node: node, $nodeIndex: nodeIndex, $isElement: node.nodeType === 1 });
135
- });
136
- this._nodes = nodes;
137
- const target = this._getTarget();
138
- if (target) {
139
- target.appendChild(fragment);
140
- } else {
141
- this.parentElement?.insertBefore(fragment, this.nextSibling);
101
+ if (targetTpl) {
102
+ const clone = targetTpl.content.cloneNode(true);
103
+ if (targetTpl === this) {
104
+ clone.querySelectorAll('template[is^="swc-"]').forEach((t) => t.remove());
105
+ }
106
+ this._nodes = Array.from(clone.childNodes);
107
+ const elements = this._nodes.filter((n) => n.nodeType === 1);
108
+ const groupArgs = { ...helperSet, $value: this._value, $nodes: this._nodes, $elements: elements, $firstElement: elements[0] };
109
+ this._nodes.forEach((node, nodeIdx) => {
110
+ if (node instanceof HTMLElement)
111
+ node.__swc_host = this;
112
+ this._executeCloneCallback("on-clone-node", { ...groupArgs, $node: node, $nodeIndex: nodeIdx, $isElement: node.nodeType === 1 });
113
+ });
114
+ this._executeCloneCallback("on-clone-nodes", groupArgs);
115
+ if (portal === this.parentElement) {
116
+ portal.insertBefore(clone, this.nextSibling);
117
+ } else {
118
+ portal.appendChild(clone);
119
+ }
142
120
  }
143
121
  }
144
122
  cleanup() {
145
- this._nodes.forEach((n) => {
146
- if (n.parentElement)
147
- n.parentElement.removeChild(n);
148
- });
123
+ this._nodes.forEach((n) => n.parentElement?.removeChild(n));
149
124
  this._nodes = [];
150
125
  }
151
126
  connectedCallback() {
152
- this.refresh();
127
+ this.refreshValue();
153
128
  }
154
129
  disconnectedCallback() {
155
130
  this.cleanup();
156
131
  }
157
- };
132
+ }
158
133
  __decorate([
159
134
  (0, import_changedAttribute.changedAttribute)("on-get-value"),
160
135
  __metadata("design:type", Function),
161
- __metadata("design:paramtypes", [String]),
136
+ __metadata("design:paramtypes", []),
162
137
  __metadata("design:returntype", void 0)
163
- ], SwcIf.prototype, "refresh", null);
164
- SwcIf = __decorate([
165
- (0, import_elementDefine.elementDefine)({ name: "swc-if", extends: "template" })
166
- ], SwcIf);
138
+ ], SwcIf.prototype, "refreshValue", null);
167
139
  //# sourceMappingURL=SwcIf.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/elements/SwcIf.ts"],
4
- "sourcesContent": ["import { elementDefine } from '../decorators/elementDefine';\nimport { changedAttribute } from '../decorators/changedAttribute';\nimport { SwcUtils } from '../utils/Utils';\nimport { FunctionUtils } from '@dooboostore/core/function/FunctionUtils';\n\n@elementDefine({ name: 'swc-if', extends: 'template' })\nexport class SwcIf extends HTMLTemplateElement {\n private _nodes: Node[] = [];\n private _value: any = null;\n\n get value(): any {\n return this._value;\n }\n\n set value(nv: any) {\n this._value = nv;\n this.render();\n }\n\n private _getTarget(): Element | DocumentFragment | null {\n const script = this.getAttribute('on-get-portal');\n if (!script) return null;\n try {\n const res = FunctionUtils.executeReturn({\n script,\n context: this,\n args: SwcUtils.getHelperAndHostSet(window, this)\n });\n if (typeof res === 'string') return document.querySelector(res);\n if (res instanceof Node) return res as any;\n } catch (e) {\n console.error('[SwcIf] Portal target error:', e);\n }\n return null;\n }\n\n private _executeCallback(attrName: string, extraArgs: Record<string, any>) {\n const script = this.getAttribute(attrName);\n if (!script) return;\n const helperHostSet = SwcUtils.getHelperAndHostSet(window, this);\n try {\n FunctionUtils.execute({ script, context: this, args: { ...helperHostSet, ...extraArgs } });\n } catch (e) {\n console.error(`[SwcIf] Error in ${attrName}:`, e);\n }\n }\n\n @changedAttribute('on-get-value')\n private refresh(newValue?: string | null) {\n const script = newValue !== undefined ? newValue : this.getAttribute('on-get-value');\n if (!script) {\n this.value = null;\n return;\n }\n if (!this.parentElement) return;\n\n const helperHostSet = SwcUtils.getHelperAndHostSet(window, this);\n try {\n const result = FunctionUtils.executeReturn({\n script,\n context: this,\n args: helperHostSet\n });\n this.value = result;\n } catch (e) {\n console.error('[SwcIf] Error in on-get-value:', e);\n this.value = null;\n }\n }\n\n private render() {\n this.cleanup();\n if (!this.parentElement) return;\n\n let fragment: DocumentFragment | null = null;\n const ctx: any = { $value: this._value, $nodes: [], $elements: [] };\n\n if (this._value) {\n const clone = this.content.cloneNode(true) as DocumentFragment;\n Array.from(clone.querySelectorAll('template[is=\"swc-default\"]')).forEach(t => t.remove());\n fragment = clone;\n } else {\n const t = this.content.querySelector('template[is=\"swc-default\"]') as HTMLTemplateElement;\n if (t) fragment = t.content.cloneNode(true) as DocumentFragment;\n }\n\n if (fragment) {\n this.mount(fragment, ctx);\n }\n }\n\n private mount(fragment: DocumentFragment, ctx: any) {\n const nodes = Array.from(fragment.childNodes);\n const elements = nodes.filter(n => n.nodeType === 1) as HTMLElement[];\n\n Object.assign(ctx, {\n $nodes: nodes,\n $elements: elements,\n $firstNode: nodes[0],\n $lastNode: nodes[nodes.length - 1],\n $firstElement: elements[0],\n $lastElement: elements[elements.length - 1]\n });\n\n this._executeCallback('on-clone-nodes', ctx);\n nodes.forEach((node, nodeIndex) => {\n if (node instanceof HTMLElement) (node as any).__swc_host = this;\n this._executeCallback('on-clone-node', { ...ctx, $node: node, $nodeIndex: nodeIndex, $isElement: node.nodeType === 1 });\n });\n\n this._nodes = nodes;\n const target = this._getTarget();\n if (target) {\n target.appendChild(fragment);\n } else {\n this.parentElement?.insertBefore(fragment, this.nextSibling);\n }\n }\n\n private cleanup() {\n this._nodes.forEach(n => {\n if (n.parentElement) n.parentElement.removeChild(n);\n });\n this._nodes = [];\n }\n\n connectedCallback() {\n this.refresh();\n }\n\n disconnectedCallback() {\n this.cleanup();\n }\n}\n"],
5
- "mappings": "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",
6
- "names": ["SwcIf"]
4
+ "sourcesContent": ["import { changedAttribute } from '../decorators/changedAttribute';\nimport { SwcUtils } from '../utils/Utils';\nimport { FunctionUtils } from '@dooboostore/core/function/FunctionUtils';\n\nexport class SwcIf extends HTMLTemplateElement {\n private _value = false;\n private _nodes: Node[] = [];\n\n get value(): boolean {\n return this._value;\n }\n set value(nv: any) {\n this._value = Boolean(nv);\n this.render();\n }\n\n private _resolvePortal(): Element | null {\n const portalScript = this.getAttribute('on-get-portal');\n if (!portalScript) return this.parentElement;\n\n const win = this.ownerDocument?.defaultView || window;\n const res = FunctionUtils.executeReturn({\n script: portalScript,\n context: this,\n args: SwcUtils.getHelperAndHostSet(win, this)\n });\n\n if (res instanceof HTMLElement) return res;\n if (typeof res === 'string') return win.document.querySelector(res);\n return this.parentElement;\n }\n\n private _executeCloneCallback(attr: string, args: any) {\n const script = this.getAttribute(attr);\n if (!script) return;\n FunctionUtils.execute({ script, context: this, args });\n }\n\n @changedAttribute('on-get-value')\n private refreshValue() {\n const script = this.getAttribute('on-get-value');\n if (!script) {\n this.value = false;\n return;\n }\n const win = this.ownerDocument?.defaultView || window;\n const res = FunctionUtils.executeReturn({\n script,\n context: this,\n args: SwcUtils.getHelperAndHostSet(win, this)\n });\n\n if (res instanceof Promise) {\n res.then(v => (this.value = v)).catch(() => (this.value = false));\n } else {\n this.value = res;\n }\n }\n\n private render() {\n this.cleanup();\n const portal = this._resolvePortal();\n if (!portal) return;\n\n const win = this.ownerDocument?.defaultView || window;\n const helperSet = SwcUtils.getHelperAndHostSet(win, this);\n\n let targetTpl: HTMLTemplateElement | null = null;\n if (this._value) {\n targetTpl = this;\n } else {\n targetTpl = this.content.querySelector('template[is=\"swc-default\"]') as HTMLTemplateElement;\n }\n\n if (targetTpl) {\n const clone = targetTpl.content.cloneNode(true) as DocumentFragment;\n // If it's the host template, remove sub-templates from clone\n if (targetTpl === this) {\n clone.querySelectorAll('template[is^=\"swc-\"]').forEach(t => t.remove());\n }\n\n this._nodes = Array.from(clone.childNodes);\n const elements = this._nodes.filter(n => n.nodeType === 1) as HTMLElement[];\n const groupArgs = { ...helperSet, $value: this._value, $nodes: this._nodes, $elements: elements, $firstElement: elements[0] };\n\n this._nodes.forEach((node, nodeIdx) => {\n if (node instanceof HTMLElement) (node as any).__swc_host = this;\n this._executeCloneCallback('on-clone-node', { ...groupArgs, $node: node, $nodeIndex: nodeIdx, $isElement: node.nodeType === 1 });\n });\n\n this._executeCloneCallback('on-clone-nodes', groupArgs);\n\n if (portal === this.parentElement) {\n portal.insertBefore(clone, this.nextSibling);\n } else {\n portal.appendChild(clone);\n }\n }\n }\n\n private cleanup() {\n this._nodes.forEach(n => n.parentElement?.removeChild(n));\n this._nodes = [];\n }\n\n connectedCallback() {\n this.refreshValue();\n }\n disconnectedCallback() {\n this.cleanup();\n }\n}\n"],
5
+ "mappings": "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",
6
+ "names": []
7
7
  }
@@ -20,7 +20,6 @@ __export(SwcLoop_exports, {
20
20
  SwcLoop: () => SwcLoop
21
21
  });
22
22
  module.exports = __toCommonJS(SwcLoop_exports);
23
- var import_elementDefine = require("../decorators/elementDefine");
24
23
  var import_changedAttribute = require("../decorators/changedAttribute");
25
24
  var import_Utils = require("../utils/Utils");
26
25
  var import_FunctionUtils = require("@dooboostore/core/function/FunctionUtils");
@@ -33,12 +32,11 @@ var __decorate = function(decorators, target, key, desc) {
33
32
  var __metadata = function(k, v) {
34
33
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
35
34
  };
36
- let SwcLoop = class SwcLoop2 extends HTMLTemplateElement {
35
+ class SwcLoop extends HTMLTemplateElement {
37
36
  constructor() {
38
37
  super(...arguments);
39
38
  this._value = [];
40
- this._nodes = [];
41
- this._defaultNodes = [];
39
+ this._nodeGroups = [];
42
40
  }
43
41
  get value() {
44
42
  return this._value;
@@ -47,185 +45,89 @@ let SwcLoop = class SwcLoop2 extends HTMLTemplateElement {
47
45
  this._value = Array.isArray(nv) ? [...nv] : [];
48
46
  this.render();
49
47
  }
50
- getNodes(index) {
51
- return this._nodes[index] || null;
52
- }
53
- _getTarget() {
54
- const script = this.getAttribute("on-get-portal");
55
- if (!script)
56
- return null;
57
- try {
58
- const res = import_FunctionUtils.FunctionUtils.executeReturn({
59
- script,
60
- context: this,
61
- args: import_Utils.SwcUtils.getHelperAndHostSet(window, this)
62
- });
63
- if (typeof res === "string")
64
- return document.querySelector(res);
65
- if (res instanceof Node)
66
- return res;
67
- } catch (e) {
68
- console.error("[SwcLoop] Portal target error:", e);
69
- }
70
- return null;
71
- }
72
- append(...items) {
73
- if (!items.length || !this.parentElement)
74
- return;
75
- if (this._defaultNodes.length > 0)
76
- this._cleanupDefault();
77
- const fragment = document.createDocumentFragment();
78
- const startIndex = this._value.length;
79
- items.forEach((item, i) => {
80
- const index = startIndex + i;
81
- const nodes = this._createItemNodes(item, index);
82
- if (nodes) {
83
- this._nodes.push(nodes);
84
- nodes.forEach((n) => fragment.appendChild(n));
85
- this._value.push(item);
86
- } else {
87
- this._nodes.push(null);
88
- this._value.push(null);
89
- }
90
- });
91
- const target = this._getTarget();
92
- if (target) {
93
- target.appendChild(fragment);
94
- } else {
95
- const lastValidIdx = this._nodes.length - items.length - 1;
96
- let refNode = this;
97
- for (let i = lastValidIdx; i >= 0; i--) {
98
- const group = this._nodes[i];
99
- if (group && group.length > 0) {
100
- refNode = group[group.length - 1];
101
- break;
102
- }
103
- }
104
- this.parentElement.insertBefore(fragment, refNode.nextSibling);
105
- }
106
- }
107
- remove(index) {
108
- const targetIdx = index !== void 0 ? index : this._nodes.length - 1;
109
- if (targetIdx < 0 || targetIdx >= this._nodes.length)
110
- return;
111
- const nodes = this._nodes[targetIdx];
112
- if (nodes) {
113
- nodes.forEach((n) => {
114
- if (n.parentElement)
115
- n.parentElement.removeChild(n);
116
- });
117
- this._nodes[targetIdx] = null;
118
- this._value[targetIdx] = null;
119
- }
120
- const activeRows = this._value.filter((v) => v !== null);
121
- if (activeRows.length === 0) {
122
- this.render();
123
- }
124
- }
125
- _createItemNodes(item, index) {
126
- const clone = this.content.cloneNode(true);
127
- Array.from(clone.querySelectorAll('template[is="swc-default"]')).forEach((t) => t.remove());
128
- const nodes = Array.from(clone.childNodes);
129
- const elements = nodes.filter((n) => n.nodeType === 1);
130
- const groupCtx = {
131
- $index: index,
132
- $item: item,
133
- $nodes: nodes,
134
- $elements: elements,
135
- $firstNode: nodes[0],
136
- $lastNode: nodes[nodes.length - 1],
137
- $firstElement: elements[0],
138
- $lastElement: elements[elements.length - 1],
139
- $isFirst: index === 0,
140
- $isLast: index === this._value.length - 1,
141
- $isEven: index % 2 === 0,
142
- $isOdd: index % 2 !== 0,
143
- $count: this._value.length
144
- };
145
- this._executeCallback("on-clone-nodes", groupCtx);
146
- nodes.forEach((node, nodeIndex) => {
147
- if (node instanceof HTMLElement)
148
- node.__swc_host = this;
149
- this._executeCallback("on-clone-node", { ...groupCtx, $node: node, $nodeIndex: nodeIndex, $isElement: node.nodeType === 1 });
48
+ _resolvePortal() {
49
+ const portalScript = this.getAttribute("on-get-portal");
50
+ if (!portalScript)
51
+ return this.parentElement;
52
+ const win = this.ownerDocument?.defaultView || window;
53
+ const res = import_FunctionUtils.FunctionUtils.executeReturn({
54
+ script: portalScript,
55
+ context: this,
56
+ args: import_Utils.SwcUtils.getHelperAndHostSet(win, this)
150
57
  });
151
- return nodes;
152
- }
153
- _executeCallback(attrName, extraArgs) {
154
- const script = this.getAttribute(attrName);
58
+ if (res instanceof HTMLElement)
59
+ return res;
60
+ if (typeof res === "string")
61
+ return win.document.querySelector(res);
62
+ return this.parentElement;
63
+ }
64
+ _executeCloneCallback(attr, args) {
65
+ const script = this.getAttribute(attr);
155
66
  if (!script)
156
67
  return;
157
- const helperHostSet = import_Utils.SwcUtils.getHelperAndHostSet(window, this);
158
- try {
159
- import_FunctionUtils.FunctionUtils.execute({ script, context: this, args: { ...helperHostSet, ...extraArgs } });
160
- } catch (e) {
161
- console.error(`[SwcLoop] Error in ${attrName}:`, e);
162
- }
68
+ import_FunctionUtils.FunctionUtils.execute({ script, context: this, args });
163
69
  }
164
- refreshValue(newValue) {
165
- const script = newValue !== void 0 ? newValue : this.getAttribute("on-get-value");
70
+ _cleanup() {
71
+ this._nodeGroups.forEach((nodes) => nodes.forEach((n) => n.parentElement?.removeChild(n)));
72
+ this._nodeGroups = [];
73
+ }
74
+ refreshValue() {
75
+ const script = this.getAttribute("on-get-value");
166
76
  if (!script) {
167
77
  this.value = [];
168
78
  return;
169
79
  }
170
- const helperHostSet = import_Utils.SwcUtils.getHelperAndHostSet(window, this);
171
- try {
172
- const res = import_FunctionUtils.FunctionUtils.executeReturn({ script, context: this, args: helperHostSet });
173
- if (Array.isArray(res)) {
174
- this.value = res;
175
- }
176
- } catch (e) {
177
- console.error("[SwcLoop] Failed to get value from on-get-value script:", e);
178
- this.value = [];
80
+ const win = this.ownerDocument?.defaultView || window;
81
+ const res = import_FunctionUtils.FunctionUtils.executeReturn({
82
+ script,
83
+ context: this,
84
+ args: import_Utils.SwcUtils.getHelperAndHostSet(win, this)
85
+ });
86
+ if (res instanceof Promise) {
87
+ res.then((v) => this.value = v).catch(() => this.value = []);
88
+ } else {
89
+ this.value = res;
179
90
  }
180
91
  }
181
92
  render() {
182
93
  this._cleanup();
183
- if (!this.parentElement)
94
+ const portal = this._resolvePortal();
95
+ if (!portal)
184
96
  return;
185
- const activeRows = this._value.filter((v) => v !== null);
186
- const target = this._getTarget();
187
- if (activeRows.length === 0) {
188
- const t = this.content.querySelector('template[is="swc-default"]');
189
- if (t) {
190
- const clone = t.content.cloneNode(true);
191
- this._defaultNodes = Array.from(clone.childNodes);
192
- this._defaultNodes.forEach((n) => {
193
- if (n instanceof HTMLElement)
194
- n.__swc_host = this;
195
- });
196
- if (target)
197
- target.appendChild(clone);
198
- else
199
- this.parentElement.insertBefore(clone, this.nextSibling);
97
+ const win = this.ownerDocument?.defaultView || window;
98
+ const helperSet = import_Utils.SwcUtils.getHelperAndHostSet(win, this);
99
+ const fragment = win.document.createDocumentFragment();
100
+ if (this._value.length === 0) {
101
+ const defaultTpl = this.content.querySelector('template[is="swc-default"]');
102
+ if (defaultTpl) {
103
+ const clone = defaultTpl.content.cloneNode(true);
104
+ const nodes = Array.from(clone.childNodes);
105
+ this._nodeGroups.push(nodes);
106
+ fragment.appendChild(clone);
200
107
  }
201
- return;
108
+ } else {
109
+ this._value.forEach((item, index) => {
110
+ const clone = this.content.cloneNode(true);
111
+ const subTemplates = clone.querySelectorAll('template[is^="swc-"]');
112
+ subTemplates.forEach((t) => t.remove());
113
+ const nodes = Array.from(clone.childNodes);
114
+ const elements = nodes.filter((n) => n.nodeType === 1);
115
+ const groupArgs = { ...helperSet, $item: item, $index: index, $value: this._value, $nodes: nodes, $elements: elements, $firstElement: elements[0] };
116
+ nodes.forEach((node, nodeIdx) => {
117
+ if (node instanceof HTMLElement)
118
+ node.__swc_host = this;
119
+ this._executeCloneCallback("on-clone-node", { ...groupArgs, $node: node, $nodeIndex: nodeIdx, $isElement: node.nodeType === 1 });
120
+ });
121
+ this._executeCloneCallback("on-clone-nodes", groupArgs);
122
+ this._nodeGroups.push(nodes);
123
+ fragment.appendChild(clone);
124
+ });
125
+ }
126
+ if (portal === this.parentElement) {
127
+ portal.insertBefore(fragment, this.nextSibling);
128
+ } else {
129
+ portal.appendChild(fragment);
202
130
  }
203
- const fragment = document.createDocumentFragment();
204
- this._value.forEach((item, index) => {
205
- if (item === null) {
206
- this._nodes.push(null);
207
- return;
208
- }
209
- const nodes = this._createItemNodes(item, index);
210
- this._nodes.push(nodes);
211
- nodes.forEach((n) => fragment.appendChild(n));
212
- });
213
- if (target)
214
- target.appendChild(fragment);
215
- else
216
- this.parentElement.insertBefore(fragment, this.nextSibling);
217
- }
218
- _cleanup() {
219
- this._nodes.forEach((group) => {
220
- if (group)
221
- group.forEach((node) => node.parentElement?.removeChild(node));
222
- });
223
- this._nodes = [];
224
- this._cleanupDefault();
225
- }
226
- _cleanupDefault() {
227
- this._defaultNodes.forEach((n) => n.parentElement?.removeChild(n));
228
- this._defaultNodes = [];
229
131
  }
230
132
  connectedCallback() {
231
133
  this.refreshValue();
@@ -233,14 +135,11 @@ let SwcLoop = class SwcLoop2 extends HTMLTemplateElement {
233
135
  disconnectedCallback() {
234
136
  this._cleanup();
235
137
  }
236
- };
138
+ }
237
139
  __decorate([
238
140
  (0, import_changedAttribute.changedAttribute)("on-get-value"),
239
141
  __metadata("design:type", Function),
240
- __metadata("design:paramtypes", [String]),
142
+ __metadata("design:paramtypes", []),
241
143
  __metadata("design:returntype", void 0)
242
144
  ], SwcLoop.prototype, "refreshValue", null);
243
- SwcLoop = __decorate([
244
- (0, import_elementDefine.elementDefine)({ name: "swc-loop", extends: "template" })
245
- ], SwcLoop);
246
145
  //# sourceMappingURL=SwcLoop.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/elements/SwcLoop.ts"],
4
- "sourcesContent": ["import { elementDefine } from '../decorators/elementDefine';\nimport { changedAttribute } from '../decorators/changedAttribute';\nimport { SwcUtils } from '../utils/Utils';\nimport { FunctionUtils } from '@dooboostore/core/function/FunctionUtils';\n\n@elementDefine({ name: 'swc-loop', extends: 'template' })\nexport class SwcLoop extends HTMLTemplateElement {\n private _value: any[] = [];\n private _nodes: (Node[] | null)[] = [];\n private _defaultNodes: Node[] = [];\n\n get value(): any[] {\n return this._value;\n }\n\n set value(nv: any[]) {\n this._value = Array.isArray(nv) ? [...nv] : [];\n this.render();\n }\n\n getNodes(index: number): Node[] | null {\n return this._nodes[index] || null;\n }\n\n private _getTarget(): Element | DocumentFragment | null {\n const script = this.getAttribute('on-get-portal');\n if (!script) return null;\n try {\n const res = FunctionUtils.executeReturn({\n script,\n context: this,\n args: SwcUtils.getHelperAndHostSet(window, this)\n });\n if (typeof res === 'string') return document.querySelector(res);\n if (res instanceof Node) return res as any;\n } catch (e) {\n console.error('[SwcLoop] Portal target error:', e);\n }\n return null;\n }\n\n append(...items: any[]) {\n if (!items.length || !this.parentElement) return;\n if (this._defaultNodes.length > 0) this._cleanupDefault();\n\n const fragment = document.createDocumentFragment();\n const startIndex = this._value.length;\n\n items.forEach((item, i) => {\n const index = startIndex + i;\n const nodes = this._createItemNodes(item, index);\n if (nodes) {\n this._nodes.push(nodes);\n nodes.forEach(n => fragment.appendChild(n));\n this._value.push(item);\n } else {\n this._nodes.push(null);\n this._value.push(null);\n }\n });\n\n const target = this._getTarget();\n if (target) {\n target.appendChild(fragment);\n } else {\n const lastValidIdx = this._nodes.length - items.length - 1;\n let refNode: Node = this;\n for (let i = lastValidIdx; i >= 0; i--) {\n const group = this._nodes[i];\n if (group && group.length > 0) {\n refNode = group[group.length - 1];\n break;\n }\n }\n this.parentElement.insertBefore(fragment, refNode.nextSibling);\n }\n }\n\n remove(index?: number) {\n const targetIdx = index !== undefined ? index : this._nodes.length - 1;\n if (targetIdx < 0 || targetIdx >= this._nodes.length) return;\n\n const nodes = this._nodes[targetIdx];\n if (nodes) {\n nodes.forEach(n => {\n if (n.parentElement) n.parentElement.removeChild(n);\n });\n this._nodes[targetIdx] = null;\n this._value[targetIdx] = null;\n }\n\n const activeRows = this._value.filter(v => v !== null);\n if (activeRows.length === 0) {\n this.render();\n }\n }\n\n private _createItemNodes(item: any, index: number): Node[] {\n const clone = this.content.cloneNode(true) as DocumentFragment;\n Array.from(clone.querySelectorAll('template[is=\"swc-default\"]')).forEach(t => t.remove());\n\n const nodes = Array.from(clone.childNodes);\n const elements = nodes.filter(n => n.nodeType === 1) as HTMLElement[];\n\n const groupCtx = {\n $index: index,\n $item: item,\n $nodes: nodes,\n $elements: elements,\n $firstNode: nodes[0],\n $lastNode: nodes[nodes.length - 1],\n $firstElement: elements[0],\n $lastElement: elements[elements.length - 1],\n $isFirst: index === 0,\n $isLast: index === this._value.length - 1,\n $isEven: index % 2 === 0,\n $isOdd: index % 2 !== 0,\n $count: this._value.length\n };\n\n this._executeCallback('on-clone-nodes', groupCtx);\n nodes.forEach((node, nodeIndex) => {\n if (node instanceof HTMLElement) (node as any).__swc_host = this;\n this._executeCallback('on-clone-node', { ...groupCtx, $node: node, $nodeIndex: nodeIndex, $isElement: node.nodeType === 1 });\n });\n\n return nodes;\n }\n\n private _executeCallback(attrName: string, extraArgs: Record<string, any>) {\n const script = this.getAttribute(attrName);\n if (!script) return;\n const helperHostSet = SwcUtils.getHelperAndHostSet(window, this);\n try {\n FunctionUtils.execute({ script, context: this, args: { ...helperHostSet, ...extraArgs } });\n } catch (e) {\n console.error(`[SwcLoop] Error in ${attrName}:`, e);\n }\n }\n\n @changedAttribute('on-get-value')\n private refreshValue(newValue?: string | null) {\n const script = newValue !== undefined ? newValue : this.getAttribute('on-get-value');\n if (!script) {\n this.value = [];\n return;\n }\n const helperHostSet = SwcUtils.getHelperAndHostSet(window, this);\n try {\n const res = FunctionUtils.executeReturn({ script, context: this, args: helperHostSet });\n if (Array.isArray(res)) {\n this.value = res;\n }\n } catch (e) {\n console.error('[SwcLoop] Failed to get value from on-get-value script:', e);\n this.value = [];\n }\n }\n\n render() {\n this._cleanup();\n if (!this.parentElement) return;\n\n const activeRows = this._value.filter(v => v !== null);\n const target = this._getTarget();\n\n if (activeRows.length === 0) {\n const t = this.content.querySelector('template[is=\"swc-default\"]') as HTMLTemplateElement;\n if (t) {\n const clone = t.content.cloneNode(true) as DocumentFragment;\n this._defaultNodes = Array.from(clone.childNodes);\n this._defaultNodes.forEach(n => {\n if (n instanceof HTMLElement) (n as any).__swc_host = this;\n });\n if (target) target.appendChild(clone);\n else this.parentElement.insertBefore(clone, this.nextSibling);\n }\n return;\n }\n\n const fragment = document.createDocumentFragment();\n this._value.forEach((item, index) => {\n if (item === null) {\n this._nodes.push(null);\n return;\n }\n const nodes = this._createItemNodes(item, index);\n this._nodes.push(nodes);\n nodes.forEach(n => fragment.appendChild(n));\n });\n\n if (target) target.appendChild(fragment);\n else this.parentElement.insertBefore(fragment, this.nextSibling);\n }\n\n private _cleanup() {\n this._nodes.forEach(group => {\n if (group) group.forEach(node => node.parentElement?.removeChild(node));\n });\n this._nodes = [];\n this._cleanupDefault();\n }\n\n private _cleanupDefault() {\n this._defaultNodes.forEach(n => n.parentElement?.removeChild(n));\n this._defaultNodes = [];\n }\n\n connectedCallback() {\n this.refreshValue();\n }\n disconnectedCallback() {\n this._cleanup();\n }\n}\n"],
5
- "mappings": "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",
6
- "names": ["SwcLoop"]
4
+ "sourcesContent": ["import { changedAttribute } from '../decorators/changedAttribute';\nimport { SwcUtils } from '../utils/Utils';\nimport { FunctionUtils } from '@dooboostore/core/function/FunctionUtils';\n\nexport class SwcLoop extends HTMLTemplateElement {\n private _value: any[] = [];\n private _nodeGroups: Node[][] = [];\n\n get value(): any[] {\n return this._value;\n }\n set value(nv: any[]) {\n this._value = Array.isArray(nv) ? [...nv] : [];\n this.render();\n }\n\n private _resolvePortal(): Element | null {\n const portalScript = this.getAttribute('on-get-portal');\n if (!portalScript) return this.parentElement;\n\n const win = this.ownerDocument?.defaultView || window;\n const res = FunctionUtils.executeReturn({\n script: portalScript,\n context: this,\n args: SwcUtils.getHelperAndHostSet(win, this)\n });\n\n if (res instanceof HTMLElement) return res;\n if (typeof res === 'string') return win.document.querySelector(res);\n return this.parentElement;\n }\n\n private _executeCloneCallback(attr: string, args: any) {\n const script = this.getAttribute(attr);\n if (!script) return;\n FunctionUtils.execute({ script, context: this, args });\n }\n\n private _cleanup() {\n this._nodeGroups.forEach(nodes => nodes.forEach(n => n.parentElement?.removeChild(n)));\n this._nodeGroups = [];\n }\n\n @changedAttribute('on-get-value')\n private refreshValue() {\n const script = this.getAttribute('on-get-value');\n if (!script) {\n this.value = [];\n return;\n }\n const win = this.ownerDocument?.defaultView || window;\n const res = FunctionUtils.executeReturn({\n script,\n context: this,\n args: SwcUtils.getHelperAndHostSet(win, this)\n });\n\n if (res instanceof Promise) {\n res.then(v => (this.value = v)).catch(() => (this.value = []));\n } else {\n this.value = res;\n }\n }\n\n render() {\n this._cleanup();\n const portal = this._resolvePortal();\n if (!portal) return;\n\n const win = this.ownerDocument?.defaultView || window;\n const helperSet = SwcUtils.getHelperAndHostSet(win, this);\n const fragment = win.document.createDocumentFragment();\n\n if (this._value.length === 0) {\n const defaultTpl = this.content.querySelector('template[is=\"swc-default\"]') as HTMLTemplateElement;\n if (defaultTpl) {\n const clone = defaultTpl.content.cloneNode(true);\n const nodes = Array.from(clone.childNodes);\n this._nodeGroups.push(nodes);\n fragment.appendChild(clone);\n }\n } else {\n this._value.forEach((item, index) => {\n const clone = this.content.cloneNode(true) as DocumentFragment;\n // Filter out sub-templates\n const subTemplates = clone.querySelectorAll('template[is^=\"swc-\"]');\n subTemplates.forEach(t => t.remove());\n\n const nodes = Array.from(clone.childNodes);\n const elements = nodes.filter(n => n.nodeType === 1) as HTMLElement[];\n\n const groupArgs = { ...helperSet, $item: item, $index: index, $value: this._value, $nodes: nodes, $elements: elements, $firstElement: elements[0] };\n\n nodes.forEach((node, nodeIdx) => {\n if (node instanceof HTMLElement) (node as any).__swc_host = this;\n this._executeCloneCallback('on-clone-node', { ...groupArgs, $node: node, $nodeIndex: nodeIdx, $isElement: node.nodeType === 1 });\n });\n\n this._executeCloneCallback('on-clone-nodes', groupArgs);\n this._nodeGroups.push(nodes);\n fragment.appendChild(clone);\n });\n }\n\n if (portal === this.parentElement) {\n portal.insertBefore(fragment, this.nextSibling);\n } else {\n portal.appendChild(fragment);\n }\n }\n\n connectedCallback() {\n this.refreshValue();\n }\n disconnectedCallback() {\n this._cleanup();\n }\n}\n"],
5
+ "mappings": "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",
6
+ "names": []
7
7
  }