@dooboostore/dom-parser 1.0.2 → 1.0.3

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 (518) hide show
  1. package/dist/cjs/DomParser.js +10 -1
  2. package/dist/cjs/DomParser.js.map +2 -2
  3. package/dist/cjs/factory/ElementFactory.js +27 -6
  4. package/dist/cjs/factory/ElementFactory.js.map +2 -2
  5. package/dist/cjs/index.js +4 -0
  6. package/dist/cjs/index.js.map +2 -2
  7. package/dist/cjs/node/CharacterData.js.map +1 -1
  8. package/dist/cjs/node/ChildNode.js +0 -15
  9. package/dist/cjs/node/ChildNode.js.map +3 -3
  10. package/dist/cjs/node/ChildNodeBase.js +20 -0
  11. package/dist/cjs/node/ChildNodeBase.js.map +2 -2
  12. package/dist/cjs/node/Comment.js.map +2 -2
  13. package/dist/cjs/node/Document.js +0 -27
  14. package/dist/cjs/node/Document.js.map +4 -4
  15. package/dist/cjs/node/DocumentBase.js +168 -205
  16. package/dist/cjs/node/DocumentBase.js.map +2 -2
  17. package/dist/cjs/node/DocumentFragment.js +0 -15
  18. package/dist/cjs/node/DocumentFragment.js.map +3 -3
  19. package/dist/cjs/node/DocumentFragmentBase.js.map +2 -2
  20. package/dist/cjs/node/Node.js.map +1 -1
  21. package/dist/cjs/node/NodeBase.js +44 -2
  22. package/dist/cjs/node/NodeBase.js.map +2 -2
  23. package/dist/cjs/node/NodeFilter.js +43 -0
  24. package/dist/cjs/node/NodeFilter.js.map +7 -0
  25. package/dist/cjs/node/NodeIterator.js +1 -28
  26. package/dist/cjs/node/NodeIterator.js.map +2 -2
  27. package/dist/cjs/node/ParentNode.js +0 -15
  28. package/dist/cjs/node/ParentNode.js.map +3 -3
  29. package/dist/cjs/node/ParentNodeBase.js +10 -10
  30. package/dist/cjs/node/ParentNodeBase.js.map +3 -3
  31. package/dist/cjs/node/ShadowRootBase.js +79 -0
  32. package/dist/cjs/node/ShadowRootBase.js.map +7 -0
  33. package/dist/cjs/node/Text.js +0 -15
  34. package/dist/cjs/node/Text.js.map +3 -3
  35. package/dist/cjs/node/TextBase.js +0 -3
  36. package/dist/cjs/node/TextBase.js.map +2 -2
  37. package/dist/cjs/node/TreeWalker.js +272 -0
  38. package/dist/cjs/node/TreeWalker.js.map +7 -0
  39. package/dist/cjs/node/collection/{HTMLCollection.js → HTMLCollectionImp.js} +7 -6
  40. package/dist/cjs/node/collection/HTMLCollectionImp.js.map +7 -0
  41. package/dist/cjs/node/collection/HTMLCollectionOfImp.js +26 -0
  42. package/dist/cjs/node/collection/HTMLCollectionOfImp.js.map +7 -0
  43. package/dist/cjs/node/collection/NodeList.js.map +1 -1
  44. package/dist/cjs/node/collection/{NodeListOf.js → NodeListOfImp.js} +6 -6
  45. package/dist/cjs/node/collection/NodeListOfImp.js.map +7 -0
  46. package/dist/cjs/node/collection/StylePropertyMapImpl.js +65 -0
  47. package/dist/cjs/node/collection/StylePropertyMapImpl.js.map +7 -0
  48. package/dist/cjs/node/collection/index.js +6 -6
  49. package/dist/cjs/node/collection/index.js.map +2 -2
  50. package/dist/cjs/node/elements/Element.js +0 -15
  51. package/dist/cjs/node/elements/Element.js.map +3 -3
  52. package/dist/cjs/node/elements/ElementBase.js +163 -331
  53. package/dist/cjs/node/elements/ElementBase.js.map +3 -3
  54. package/dist/cjs/node/elements/HTMLAreaElement.js.map +2 -2
  55. package/dist/cjs/node/{collection/HTMLCollectionOf.js → elements/HTMLAudioElement.js} +9 -16
  56. package/dist/cjs/node/elements/HTMLAudioElement.js.map +7 -0
  57. package/dist/cjs/node/elements/HTMLButtonElement.js +1 -1
  58. package/dist/cjs/node/elements/HTMLButtonElement.js.map +2 -2
  59. package/dist/cjs/node/elements/HTMLDListElement.js +29 -0
  60. package/dist/cjs/node/elements/HTMLDListElement.js.map +7 -0
  61. package/dist/cjs/node/elements/HTMLDataElement.js +29 -0
  62. package/dist/cjs/node/elements/HTMLDataElement.js.map +7 -0
  63. package/dist/cjs/node/elements/HTMLDataListElement.js +29 -0
  64. package/dist/cjs/node/elements/HTMLDataListElement.js.map +7 -0
  65. package/dist/cjs/node/elements/HTMLDetailsElement.js +29 -0
  66. package/dist/cjs/node/elements/HTMLDetailsElement.js.map +7 -0
  67. package/dist/cjs/node/elements/HTMLDialogElement.js +29 -0
  68. package/dist/cjs/node/elements/HTMLDialogElement.js.map +7 -0
  69. package/dist/cjs/node/elements/HTMLElement.js +10 -0
  70. package/dist/cjs/node/elements/HTMLElement.js.map +2 -2
  71. package/dist/cjs/node/elements/HTMLElementBase.js +41 -43
  72. package/dist/cjs/node/elements/HTMLElementBase.js.map +2 -2
  73. package/dist/cjs/node/elements/HTMLEmbedElement.js.map +2 -2
  74. package/dist/cjs/node/elements/HTMLFieldSetElement.js +29 -0
  75. package/dist/cjs/node/elements/HTMLFieldSetElement.js.map +7 -0
  76. package/dist/cjs/node/elements/HTMLHRElement.js +29 -0
  77. package/dist/cjs/node/elements/HTMLHRElement.js.map +7 -0
  78. package/dist/cjs/node/elements/HTMLIFrameElement.js +29 -0
  79. package/dist/cjs/node/elements/HTMLIFrameElement.js.map +7 -0
  80. package/dist/cjs/node/elements/HTMLLabelElement.js +29 -0
  81. package/dist/cjs/node/elements/HTMLLabelElement.js.map +7 -0
  82. package/dist/cjs/node/elements/HTMLLegendElement.js +29 -0
  83. package/dist/cjs/node/elements/HTMLLegendElement.js.map +7 -0
  84. package/dist/cjs/node/elements/HTMLMapElement.js +29 -0
  85. package/dist/cjs/node/elements/HTMLMapElement.js.map +7 -0
  86. package/dist/cjs/node/elements/HTMLMeterElement.js +29 -0
  87. package/dist/cjs/node/elements/HTMLMeterElement.js.map +7 -0
  88. package/dist/cjs/node/elements/HTMLModElement.js +29 -0
  89. package/dist/cjs/node/elements/HTMLModElement.js.map +7 -0
  90. package/dist/cjs/node/elements/HTMLObjectElement.js +29 -0
  91. package/dist/cjs/node/elements/HTMLObjectElement.js.map +7 -0
  92. package/dist/cjs/node/elements/HTMLOptGroupElement.js +29 -0
  93. package/dist/cjs/node/elements/HTMLOptGroupElement.js.map +7 -0
  94. package/dist/cjs/node/elements/HTMLOptionElement.js +29 -0
  95. package/dist/cjs/node/elements/HTMLOptionElement.js.map +7 -0
  96. package/dist/cjs/node/elements/HTMLOutputElement.js +29 -0
  97. package/dist/cjs/node/elements/HTMLOutputElement.js.map +7 -0
  98. package/dist/cjs/node/elements/HTMLParamElement.js +29 -0
  99. package/dist/cjs/node/elements/HTMLParamElement.js.map +7 -0
  100. package/dist/cjs/node/elements/HTMLPictureElement.js +29 -0
  101. package/dist/cjs/node/elements/HTMLPictureElement.js.map +7 -0
  102. package/dist/cjs/node/elements/HTMLPreElement.js +29 -0
  103. package/dist/cjs/node/elements/HTMLPreElement.js.map +7 -0
  104. package/dist/cjs/node/elements/HTMLProgressElement.js +29 -0
  105. package/dist/cjs/node/elements/HTMLProgressElement.js.map +7 -0
  106. package/dist/cjs/node/elements/HTMLQuoteElement.js +29 -0
  107. package/dist/cjs/node/elements/HTMLQuoteElement.js.map +7 -0
  108. package/dist/cjs/node/elements/HTMLSelectElement.js +29 -0
  109. package/dist/cjs/node/elements/HTMLSelectElement.js.map +7 -0
  110. package/dist/cjs/node/elements/HTMLSlotElement.js +29 -0
  111. package/dist/cjs/node/elements/HTMLSlotElement.js.map +7 -0
  112. package/dist/cjs/node/elements/HTMLSourceElement.js +29 -0
  113. package/dist/cjs/node/elements/HTMLSourceElement.js.map +7 -0
  114. package/dist/cjs/node/elements/HTMLTableElement.js.map +2 -2
  115. package/dist/cjs/node/elements/HTMLTbodyElement.js.map +2 -2
  116. package/dist/cjs/node/elements/HTMLTdElement.js.map +2 -2
  117. package/dist/cjs/node/elements/HTMLTemplateElement.js.map +2 -2
  118. package/dist/cjs/node/elements/HTMLTextAreaElement.js +29 -0
  119. package/dist/cjs/node/elements/HTMLTextAreaElement.js.map +7 -0
  120. package/dist/cjs/node/elements/HTMLTfootElement.js.map +2 -2
  121. package/dist/cjs/node/elements/HTMLTheadElement.js.map +2 -2
  122. package/dist/cjs/node/elements/HTMLTimeElement.js +29 -0
  123. package/dist/cjs/node/elements/HTMLTimeElement.js.map +7 -0
  124. package/dist/cjs/node/elements/HTMLTrElement.js.map +2 -2
  125. package/dist/cjs/node/elements/HTMLTrackElement.js +29 -0
  126. package/dist/cjs/node/elements/HTMLTrackElement.js.map +7 -0
  127. package/dist/cjs/node/elements/HTMLVideoElement.js +29 -0
  128. package/dist/cjs/node/elements/HTMLVideoElement.js.map +7 -0
  129. package/dist/cjs/node/elements/index.js +181 -92
  130. package/dist/cjs/node/elements/index.js.map +2 -2
  131. package/dist/cjs/node/index.js +6 -16
  132. package/dist/cjs/node/index.js.map +2 -2
  133. package/dist/cjs/utils/CSSSelector.js.map +2 -2
  134. package/dist/cjs/window/CustomElementRegistryImp.js +105 -0
  135. package/dist/cjs/window/CustomElementRegistryImp.js.map +7 -0
  136. package/dist/cjs/window/Window.js +0 -15
  137. package/dist/cjs/window/Window.js.map +3 -3
  138. package/dist/cjs/window/WindowBase.js +210 -613
  139. package/dist/cjs/window/WindowBase.js.map +2 -2
  140. package/dist/cjs/window/index.js +0 -5
  141. package/dist/cjs/window/index.js.map +2 -2
  142. package/dist/esm/DomParser.js +10 -1
  143. package/dist/esm/DomParser.js.map +2 -2
  144. package/dist/esm/factory/ElementFactory.js +27 -6
  145. package/dist/esm/factory/ElementFactory.js.map +2 -2
  146. package/dist/esm/index.js +4 -0
  147. package/dist/esm/index.js.map +2 -2
  148. package/dist/esm/node/ChildNodeBase.js +20 -0
  149. package/dist/esm/node/ChildNodeBase.js.map +2 -2
  150. package/dist/esm/node/Comment.js.map +2 -2
  151. package/dist/esm/node/Document.js +0 -8
  152. package/dist/esm/node/Document.js.map +4 -4
  153. package/dist/esm/node/DocumentBase.js +165 -202
  154. package/dist/esm/node/DocumentBase.js.map +2 -2
  155. package/dist/esm/node/DocumentFragmentBase.js.map +2 -2
  156. package/dist/esm/node/Node.js.map +1 -1
  157. package/dist/esm/node/NodeBase.js +45 -22
  158. package/dist/esm/node/NodeBase.js.map +2 -2
  159. package/dist/esm/node/NodeFilter.js +24 -0
  160. package/dist/esm/node/NodeFilter.js.map +7 -0
  161. package/dist/esm/node/NodeIterator.js +1 -28
  162. package/dist/esm/node/NodeIterator.js.map +2 -2
  163. package/dist/esm/node/ParentNodeBase.js +4 -4
  164. package/dist/esm/node/ParentNodeBase.js.map +2 -2
  165. package/dist/esm/node/ShadowRootBase.js +60 -0
  166. package/dist/esm/node/ShadowRootBase.js.map +7 -0
  167. package/dist/esm/node/TextBase.js +0 -3
  168. package/dist/esm/node/TextBase.js.map +2 -2
  169. package/dist/esm/node/TreeWalker.js +253 -0
  170. package/dist/esm/node/TreeWalker.js.map +7 -0
  171. package/dist/esm/node/collection/{HTMLCollection.js → HTMLCollectionImp.js} +4 -3
  172. package/dist/esm/node/collection/HTMLCollectionImp.js.map +7 -0
  173. package/dist/esm/node/collection/HTMLCollectionOfImp.js +7 -0
  174. package/dist/esm/node/collection/HTMLCollectionOfImp.js.map +7 -0
  175. package/dist/esm/node/collection/NodeList.js.map +1 -1
  176. package/dist/esm/node/collection/{NodeListOf.js → NodeListOfImp.js} +3 -3
  177. package/dist/esm/node/collection/NodeListOfImp.js.map +7 -0
  178. package/dist/esm/node/collection/StylePropertyMapImpl.js +46 -0
  179. package/dist/esm/node/collection/StylePropertyMapImpl.js.map +7 -0
  180. package/dist/esm/node/collection/index.js +6 -6
  181. package/dist/esm/node/collection/index.js.map +2 -2
  182. package/dist/esm/node/elements/ElementBase.js +163 -331
  183. package/dist/esm/node/elements/ElementBase.js.map +3 -3
  184. package/dist/esm/node/elements/HTMLAreaElement.js.map +2 -2
  185. package/dist/esm/node/elements/HTMLAudioElement.js +10 -0
  186. package/dist/esm/node/elements/HTMLAudioElement.js.map +7 -0
  187. package/dist/esm/node/elements/HTMLButtonElement.js +1 -1
  188. package/dist/esm/node/elements/HTMLButtonElement.js.map +2 -2
  189. package/dist/esm/node/elements/HTMLDListElement.js +10 -0
  190. package/dist/esm/node/elements/HTMLDListElement.js.map +7 -0
  191. package/dist/esm/node/elements/HTMLDataElement.js +10 -0
  192. package/dist/esm/node/elements/HTMLDataElement.js.map +7 -0
  193. package/dist/esm/node/elements/HTMLDataListElement.js +10 -0
  194. package/dist/esm/node/elements/HTMLDataListElement.js.map +7 -0
  195. package/dist/esm/node/elements/HTMLDetailsElement.js +10 -0
  196. package/dist/esm/node/elements/HTMLDetailsElement.js.map +7 -0
  197. package/dist/esm/node/elements/HTMLDialogElement.js +10 -0
  198. package/dist/esm/node/elements/HTMLDialogElement.js.map +7 -0
  199. package/dist/esm/node/elements/HTMLElement.js +6 -0
  200. package/dist/esm/node/elements/HTMLElement.js.map +3 -3
  201. package/dist/esm/node/elements/HTMLElementBase.js +40 -42
  202. package/dist/esm/node/elements/HTMLElementBase.js.map +2 -2
  203. package/dist/esm/node/elements/HTMLEmbedElement.js.map +2 -2
  204. package/dist/esm/node/elements/HTMLFieldSetElement.js +10 -0
  205. package/dist/esm/node/elements/HTMLFieldSetElement.js.map +7 -0
  206. package/dist/esm/node/elements/HTMLHRElement.js +10 -0
  207. package/dist/esm/node/elements/HTMLHRElement.js.map +7 -0
  208. package/dist/esm/node/elements/HTMLIFrameElement.js +10 -0
  209. package/dist/esm/node/elements/HTMLIFrameElement.js.map +7 -0
  210. package/dist/esm/node/elements/HTMLLabelElement.js +10 -0
  211. package/dist/esm/node/elements/HTMLLabelElement.js.map +7 -0
  212. package/dist/esm/node/elements/HTMLLegendElement.js +10 -0
  213. package/dist/esm/node/elements/HTMLLegendElement.js.map +7 -0
  214. package/dist/esm/node/elements/HTMLMapElement.js +10 -0
  215. package/dist/esm/node/elements/HTMLMapElement.js.map +7 -0
  216. package/dist/esm/node/elements/HTMLMeterElement.js +10 -0
  217. package/dist/esm/node/elements/HTMLMeterElement.js.map +7 -0
  218. package/dist/esm/node/elements/HTMLModElement.js +10 -0
  219. package/dist/esm/node/elements/HTMLModElement.js.map +7 -0
  220. package/dist/esm/node/elements/HTMLObjectElement.js +10 -0
  221. package/dist/esm/node/elements/HTMLObjectElement.js.map +7 -0
  222. package/dist/esm/node/elements/HTMLOptGroupElement.js +10 -0
  223. package/dist/esm/node/elements/HTMLOptGroupElement.js.map +7 -0
  224. package/dist/esm/node/elements/HTMLOptionElement.js +10 -0
  225. package/dist/esm/node/elements/HTMLOptionElement.js.map +7 -0
  226. package/dist/esm/node/elements/HTMLOutputElement.js +10 -0
  227. package/dist/esm/node/elements/HTMLOutputElement.js.map +7 -0
  228. package/dist/esm/node/elements/HTMLParamElement.js +10 -0
  229. package/dist/esm/node/elements/HTMLParamElement.js.map +7 -0
  230. package/dist/esm/node/elements/HTMLPictureElement.js +10 -0
  231. package/dist/esm/node/elements/HTMLPictureElement.js.map +7 -0
  232. package/dist/esm/node/elements/HTMLPreElement.js +10 -0
  233. package/dist/esm/node/elements/HTMLPreElement.js.map +7 -0
  234. package/dist/esm/node/elements/HTMLProgressElement.js +10 -0
  235. package/dist/esm/node/elements/HTMLProgressElement.js.map +7 -0
  236. package/dist/esm/node/elements/HTMLQuoteElement.js +10 -0
  237. package/dist/esm/node/elements/HTMLQuoteElement.js.map +7 -0
  238. package/dist/esm/node/elements/HTMLSelectElement.js +10 -0
  239. package/dist/esm/node/elements/HTMLSelectElement.js.map +7 -0
  240. package/dist/esm/node/elements/HTMLSlotElement.js +10 -0
  241. package/dist/esm/node/elements/HTMLSlotElement.js.map +7 -0
  242. package/dist/esm/node/elements/HTMLSourceElement.js +10 -0
  243. package/dist/esm/node/elements/HTMLSourceElement.js.map +7 -0
  244. package/dist/esm/node/elements/HTMLTableElement.js.map +2 -2
  245. package/dist/esm/node/elements/HTMLTbodyElement.js.map +2 -2
  246. package/dist/esm/node/elements/HTMLTdElement.js.map +2 -2
  247. package/dist/esm/node/elements/HTMLTemplateElement.js.map +2 -2
  248. package/dist/esm/node/elements/HTMLTextAreaElement.js +10 -0
  249. package/dist/esm/node/elements/HTMLTextAreaElement.js.map +7 -0
  250. package/dist/esm/node/elements/HTMLTfootElement.js.map +2 -2
  251. package/dist/esm/node/elements/HTMLTheadElement.js.map +2 -2
  252. package/dist/esm/node/elements/HTMLTimeElement.js +10 -0
  253. package/dist/esm/node/elements/HTMLTimeElement.js.map +7 -0
  254. package/dist/esm/node/elements/HTMLTrElement.js.map +2 -2
  255. package/dist/esm/node/elements/HTMLTrackElement.js +10 -0
  256. package/dist/esm/node/elements/HTMLTrackElement.js.map +7 -0
  257. package/dist/esm/node/elements/HTMLVideoElement.js +10 -0
  258. package/dist/esm/node/elements/HTMLVideoElement.js.map +7 -0
  259. package/dist/esm/node/elements/index.js +182 -93
  260. package/dist/esm/node/elements/index.js.map +2 -2
  261. package/dist/esm/node/index.js +7 -17
  262. package/dist/esm/node/index.js.map +2 -2
  263. package/dist/esm/utils/CSSSelector.js.map +2 -2
  264. package/dist/esm/window/CustomElementRegistryImp.js +86 -0
  265. package/dist/esm/window/CustomElementRegistryImp.js.map +7 -0
  266. package/dist/esm/window/WindowBase.js +259 -597
  267. package/dist/esm/window/WindowBase.js.map +2 -2
  268. package/dist/esm/window/index.js +0 -5
  269. package/dist/esm/window/index.js.map +2 -2
  270. package/dist/esm-bundle/dooboostore-dom-parser.esm.js +3449 -3551
  271. package/dist/esm-bundle/dooboostore-dom-parser.esm.js.map +4 -4
  272. package/dist/types/DomParser.d.ts.map +1 -1
  273. package/dist/types/factory/ElementFactory.d.ts +1 -1
  274. package/dist/types/factory/ElementFactory.d.ts.map +1 -1
  275. package/dist/types/index.d.ts +3 -1
  276. package/dist/types/index.d.ts.map +1 -1
  277. package/dist/types/node/CharacterData.d.ts +0 -2
  278. package/dist/types/node/CharacterData.d.ts.map +1 -1
  279. package/dist/types/node/ChildNode.d.ts +0 -38
  280. package/dist/types/node/ChildNode.d.ts.map +1 -1
  281. package/dist/types/node/ChildNodeBase.d.ts +6 -4
  282. package/dist/types/node/ChildNodeBase.d.ts.map +1 -1
  283. package/dist/types/node/Comment.d.ts +1 -1
  284. package/dist/types/node/Comment.d.ts.map +1 -1
  285. package/dist/types/node/Document.d.ts +0 -856
  286. package/dist/types/node/Document.d.ts.map +1 -1
  287. package/dist/types/node/DocumentBase.d.ts +68 -110
  288. package/dist/types/node/DocumentBase.d.ts.map +1 -1
  289. package/dist/types/node/DocumentFragment.d.ts +0 -38
  290. package/dist/types/node/DocumentFragment.d.ts.map +1 -1
  291. package/dist/types/node/DocumentFragmentBase.d.ts +1 -8
  292. package/dist/types/node/DocumentFragmentBase.d.ts.map +1 -1
  293. package/dist/types/node/Node.d.ts +0 -213
  294. package/dist/types/node/Node.d.ts.map +1 -1
  295. package/dist/types/node/NodeBase.d.ts +11 -8
  296. package/dist/types/node/NodeBase.d.ts.map +1 -1
  297. package/dist/types/node/NodeFilter.d.ts +25 -0
  298. package/dist/types/node/NodeFilter.d.ts.map +1 -0
  299. package/dist/types/node/NodeIterator.d.ts +0 -34
  300. package/dist/types/node/NodeIterator.d.ts.map +1 -1
  301. package/dist/types/node/ParentNode.d.ts +0 -84
  302. package/dist/types/node/ParentNode.d.ts.map +1 -1
  303. package/dist/types/node/ParentNodeBase.d.ts +0 -5
  304. package/dist/types/node/ParentNodeBase.d.ts.map +1 -1
  305. package/dist/types/node/ShadowRootBase.d.ts +36 -0
  306. package/dist/types/node/ShadowRootBase.d.ts.map +1 -0
  307. package/dist/types/node/Text.d.ts +0 -24
  308. package/dist/types/node/Text.d.ts.map +1 -1
  309. package/dist/types/node/TextBase.d.ts +2 -3
  310. package/dist/types/node/TextBase.d.ts.map +1 -1
  311. package/dist/types/node/TreeWalker.d.ts +48 -0
  312. package/dist/types/node/TreeWalker.d.ts.map +1 -0
  313. package/dist/types/node/collection/{HTMLCollection.d.ts → HTMLCollectionImp.d.ts} +2 -3
  314. package/dist/types/node/collection/HTMLCollectionImp.d.ts.map +1 -0
  315. package/dist/types/node/collection/HTMLCollectionOfImp.d.ts +9 -0
  316. package/dist/types/node/collection/HTMLCollectionOfImp.d.ts.map +1 -0
  317. package/dist/types/node/collection/NodeList.d.ts +0 -1
  318. package/dist/types/node/collection/NodeList.d.ts.map +1 -1
  319. package/dist/types/node/collection/{NodeListOf.d.ts → NodeListOfImp.d.ts} +3 -4
  320. package/dist/types/node/collection/NodeListOfImp.d.ts.map +1 -0
  321. package/dist/types/node/collection/StylePropertyMapImpl.d.ts +20 -0
  322. package/dist/types/node/collection/StylePropertyMapImpl.d.ts.map +1 -0
  323. package/dist/types/node/collection/index.d.ts +3 -3
  324. package/dist/types/node/collection/index.d.ts.map +1 -1
  325. package/dist/types/node/elements/Element.d.ts +0 -687
  326. package/dist/types/node/elements/Element.d.ts.map +1 -1
  327. package/dist/types/node/elements/ElementBase.d.ts +98 -74
  328. package/dist/types/node/elements/ElementBase.d.ts.map +1 -1
  329. package/dist/types/node/elements/HTMLAreaElement.d.ts +0 -1
  330. package/dist/types/node/elements/HTMLAreaElement.d.ts.map +1 -1
  331. package/dist/types/node/elements/HTMLAudioElement.d.ts +8 -0
  332. package/dist/types/node/elements/HTMLAudioElement.d.ts.map +1 -0
  333. package/dist/types/node/elements/HTMLButtonElement.d.ts +1 -1
  334. package/dist/types/node/elements/HTMLButtonElement.d.ts.map +1 -1
  335. package/dist/types/node/elements/HTMLDListElement.d.ts +5 -0
  336. package/dist/types/node/elements/HTMLDListElement.d.ts.map +1 -0
  337. package/dist/types/node/elements/HTMLDataElement.d.ts +5 -0
  338. package/dist/types/node/elements/HTMLDataElement.d.ts.map +1 -0
  339. package/dist/types/node/elements/HTMLDataListElement.d.ts +5 -0
  340. package/dist/types/node/elements/HTMLDataListElement.d.ts.map +1 -0
  341. package/dist/types/node/elements/HTMLDetailsElement.d.ts +5 -0
  342. package/dist/types/node/elements/HTMLDetailsElement.d.ts.map +1 -0
  343. package/dist/types/node/elements/HTMLDialogElement.d.ts +5 -0
  344. package/dist/types/node/elements/HTMLDialogElement.d.ts.map +1 -0
  345. package/dist/types/node/elements/HTMLElement.d.ts +2 -119
  346. package/dist/types/node/elements/HTMLElement.d.ts.map +1 -1
  347. package/dist/types/node/elements/HTMLElementBase.d.ts +126 -5
  348. package/dist/types/node/elements/HTMLElementBase.d.ts.map +1 -1
  349. package/dist/types/node/elements/HTMLEmbedElement.d.ts +0 -1
  350. package/dist/types/node/elements/HTMLEmbedElement.d.ts.map +1 -1
  351. package/dist/types/node/elements/HTMLFieldSetElement.d.ts +5 -0
  352. package/dist/types/node/elements/HTMLFieldSetElement.d.ts.map +1 -0
  353. package/dist/types/node/elements/HTMLHRElement.d.ts +5 -0
  354. package/dist/types/node/elements/HTMLHRElement.d.ts.map +1 -0
  355. package/dist/types/node/elements/HTMLIFrameElement.d.ts +5 -0
  356. package/dist/types/node/elements/HTMLIFrameElement.d.ts.map +1 -0
  357. package/dist/types/node/elements/HTMLLabelElement.d.ts +5 -0
  358. package/dist/types/node/elements/HTMLLabelElement.d.ts.map +1 -0
  359. package/dist/types/node/elements/HTMLLegendElement.d.ts +5 -0
  360. package/dist/types/node/elements/HTMLLegendElement.d.ts.map +1 -0
  361. package/dist/types/node/elements/HTMLMapElement.d.ts +5 -0
  362. package/dist/types/node/elements/HTMLMapElement.d.ts.map +1 -0
  363. package/dist/types/node/elements/HTMLMeterElement.d.ts +5 -0
  364. package/dist/types/node/elements/HTMLMeterElement.d.ts.map +1 -0
  365. package/dist/types/node/elements/HTMLModElement.d.ts +5 -0
  366. package/dist/types/node/elements/HTMLModElement.d.ts.map +1 -0
  367. package/dist/types/node/elements/HTMLObjectElement.d.ts +5 -0
  368. package/dist/types/node/elements/HTMLObjectElement.d.ts.map +1 -0
  369. package/dist/types/node/elements/HTMLOptGroupElement.d.ts +5 -0
  370. package/dist/types/node/elements/HTMLOptGroupElement.d.ts.map +1 -0
  371. package/dist/types/node/elements/HTMLOptionElement.d.ts +5 -0
  372. package/dist/types/node/elements/HTMLOptionElement.d.ts.map +1 -0
  373. package/dist/types/node/elements/HTMLOutputElement.d.ts +5 -0
  374. package/dist/types/node/elements/HTMLOutputElement.d.ts.map +1 -0
  375. package/dist/types/node/elements/HTMLParamElement.d.ts +5 -0
  376. package/dist/types/node/elements/HTMLParamElement.d.ts.map +1 -0
  377. package/dist/types/node/elements/HTMLPictureElement.d.ts +5 -0
  378. package/dist/types/node/elements/HTMLPictureElement.d.ts.map +1 -0
  379. package/dist/types/node/elements/HTMLPreElement.d.ts +5 -0
  380. package/dist/types/node/elements/HTMLPreElement.d.ts.map +1 -0
  381. package/dist/types/node/elements/HTMLProgressElement.d.ts +5 -0
  382. package/dist/types/node/elements/HTMLProgressElement.d.ts.map +1 -0
  383. package/dist/types/node/elements/HTMLQuoteElement.d.ts +5 -0
  384. package/dist/types/node/elements/HTMLQuoteElement.d.ts.map +1 -0
  385. package/dist/types/node/elements/HTMLSelectElement.d.ts +5 -0
  386. package/dist/types/node/elements/HTMLSelectElement.d.ts.map +1 -0
  387. package/dist/types/node/elements/HTMLSlotElement.d.ts +5 -0
  388. package/dist/types/node/elements/HTMLSlotElement.d.ts.map +1 -0
  389. package/dist/types/node/elements/HTMLSourceElement.d.ts +5 -0
  390. package/dist/types/node/elements/HTMLSourceElement.d.ts.map +1 -0
  391. package/dist/types/node/elements/HTMLTableElement.d.ts +3 -4
  392. package/dist/types/node/elements/HTMLTableElement.d.ts.map +1 -1
  393. package/dist/types/node/elements/HTMLTbodyElement.d.ts +2 -3
  394. package/dist/types/node/elements/HTMLTbodyElement.d.ts.map +1 -1
  395. package/dist/types/node/elements/HTMLTemplateElement.d.ts +0 -1
  396. package/dist/types/node/elements/HTMLTemplateElement.d.ts.map +1 -1
  397. package/dist/types/node/elements/HTMLTextAreaElement.d.ts +5 -0
  398. package/dist/types/node/elements/HTMLTextAreaElement.d.ts.map +1 -0
  399. package/dist/types/node/elements/HTMLTfootElement.d.ts +2 -3
  400. package/dist/types/node/elements/HTMLTfootElement.d.ts.map +1 -1
  401. package/dist/types/node/elements/HTMLTheadElement.d.ts +2 -3
  402. package/dist/types/node/elements/HTMLTheadElement.d.ts.map +1 -1
  403. package/dist/types/node/elements/HTMLTimeElement.d.ts +5 -0
  404. package/dist/types/node/elements/HTMLTimeElement.d.ts.map +1 -0
  405. package/dist/types/node/elements/HTMLTrElement.d.ts +2 -3
  406. package/dist/types/node/elements/HTMLTrElement.d.ts.map +1 -1
  407. package/dist/types/node/elements/HTMLTrackElement.d.ts +5 -0
  408. package/dist/types/node/elements/HTMLTrackElement.d.ts.map +1 -0
  409. package/dist/types/node/elements/HTMLVideoElement.d.ts +8 -0
  410. package/dist/types/node/elements/HTMLVideoElement.d.ts.map +1 -0
  411. package/dist/types/node/elements/index.d.ts +106 -52
  412. package/dist/types/node/elements/index.d.ts.map +1 -1
  413. package/dist/types/node/index.d.ts +4 -7
  414. package/dist/types/node/index.d.ts.map +1 -1
  415. package/dist/types/utils/CSSSelector.d.ts +0 -1
  416. package/dist/types/utils/CSSSelector.d.ts.map +1 -1
  417. package/dist/types/window/CustomElementRegistryImp.d.ts +18 -0
  418. package/dist/types/window/CustomElementRegistryImp.d.ts.map +1 -0
  419. package/dist/types/window/Window.d.ts +0 -619
  420. package/dist/types/window/Window.d.ts.map +1 -1
  421. package/dist/types/window/WindowBase.d.ts +253 -286
  422. package/dist/types/window/WindowBase.d.ts.map +1 -1
  423. package/dist/types/window/index.d.ts +0 -1
  424. package/dist/types/window/index.d.ts.map +1 -1
  425. package/dist/umd-bundle/dooboostore-dom-parser.umd.js +3460 -3562
  426. package/dist/umd-bundle/dooboostore-dom-parser.umd.js.map +4 -4
  427. package/package.json +1 -1
  428. package/src/DomParser.ts +28 -20
  429. package/src/factory/ElementFactory.ts +79 -53
  430. package/src/index.ts +11 -10
  431. package/src/node/CharacterData.ts +0 -2
  432. package/src/node/ChildNode.ts +42 -42
  433. package/src/node/ChildNodeBase.ts +60 -39
  434. package/src/node/Comment.ts +60 -60
  435. package/src/node/Document.ts +129 -882
  436. package/src/node/DocumentBase.ts +371 -467
  437. package/src/node/DocumentFragment.ts +38 -44
  438. package/src/node/DocumentFragmentBase.ts +4 -9
  439. package/src/node/Node.ts +231 -224
  440. package/src/node/NodeBase.ts +469 -443
  441. package/src/node/NodeFilter.ts +50 -0
  442. package/src/node/NodeIterator.ts +117 -172
  443. package/src/node/ParentNode.ts +93 -93
  444. package/src/node/ParentNodeBase.ts +7 -10
  445. package/src/node/ShadowRootBase.ts +87 -0
  446. package/src/node/Text.ts +30 -30
  447. package/src/node/TextBase.ts +92 -94
  448. package/src/node/TreeWalker.ts +280 -0
  449. package/src/node/collection/{HTMLCollection.ts → HTMLCollectionImp.ts} +3 -2
  450. package/src/node/collection/HTMLCollectionOfImp.ts +12 -0
  451. package/src/node/collection/NodeList.ts +1 -1
  452. package/src/node/collection/{NodeListOf.ts → NodeListOfImp.ts} +3 -3
  453. package/src/node/collection/StylePropertyMapImpl.ts +60 -0
  454. package/src/node/collection/index.ts +3 -3
  455. package/src/node/elements/Element.ts +212 -772
  456. package/src/node/elements/ElementBase.ts +840 -1204
  457. package/src/node/elements/HTMLAreaElement.ts +0 -1
  458. package/src/node/elements/HTMLAudioElement.ts +10 -0
  459. package/src/node/elements/HTMLButtonElement.ts +63 -63
  460. package/src/node/elements/HTMLDListElement.ts +2 -0
  461. package/src/node/elements/HTMLDataElement.ts +6 -0
  462. package/src/node/elements/HTMLDataListElement.ts +2 -0
  463. package/src/node/elements/HTMLDetailsElement.ts +2 -0
  464. package/src/node/elements/HTMLDialogElement.ts +2 -0
  465. package/src/node/elements/HTMLElement.ts +2 -137
  466. package/src/node/elements/HTMLElementBase.ts +466 -355
  467. package/src/node/elements/HTMLEmbedElement.ts +0 -1
  468. package/src/node/elements/HTMLFieldSetElement.ts +2 -0
  469. package/src/node/elements/HTMLHRElement.ts +2 -0
  470. package/src/node/elements/HTMLIFrameElement.ts +2 -0
  471. package/src/node/elements/HTMLLabelElement.ts +2 -0
  472. package/src/node/elements/HTMLLegendElement.ts +2 -0
  473. package/src/node/elements/HTMLMapElement.ts +2 -0
  474. package/src/node/elements/HTMLMeterElement.ts +2 -0
  475. package/src/node/elements/HTMLModElement.ts +2 -0
  476. package/src/node/elements/HTMLObjectElement.ts +2 -0
  477. package/src/node/elements/HTMLOptGroupElement.ts +2 -0
  478. package/src/node/elements/HTMLOptionElement.ts +2 -0
  479. package/src/node/elements/HTMLOutputElement.ts +2 -0
  480. package/src/node/elements/HTMLParamElement.ts +2 -0
  481. package/src/node/elements/HTMLPictureElement.ts +2 -0
  482. package/src/node/elements/HTMLPreElement.ts +2 -0
  483. package/src/node/elements/HTMLProgressElement.ts +2 -0
  484. package/src/node/elements/HTMLQuoteElement.ts +2 -0
  485. package/src/node/elements/HTMLSelectElement.ts +2 -0
  486. package/src/node/elements/HTMLSlotElement.ts +2 -0
  487. package/src/node/elements/HTMLSourceElement.ts +2 -0
  488. package/src/node/elements/HTMLTableElement.ts +3 -7
  489. package/src/node/elements/HTMLTbodyElement.ts +2 -3
  490. package/src/node/elements/HTMLTdElement.ts +1 -1
  491. package/src/node/elements/HTMLTemplateElement.ts +3 -6
  492. package/src/node/elements/HTMLTextAreaElement.ts +2 -0
  493. package/src/node/elements/HTMLTfootElement.ts +2 -3
  494. package/src/node/elements/HTMLTheadElement.ts +2 -3
  495. package/src/node/elements/HTMLTimeElement.ts +2 -0
  496. package/src/node/elements/HTMLTrElement.ts +3 -4
  497. package/src/node/elements/HTMLTrackElement.ts +2 -0
  498. package/src/node/elements/HTMLVideoElement.ts +10 -0
  499. package/src/node/elements/index.ts +226 -149
  500. package/src/node/index.ts +8 -8
  501. package/src/utils/CSSSelector.ts +0 -1
  502. package/src/window/CustomElementRegistryImp.ts +120 -0
  503. package/src/window/Window.ts +716 -715
  504. package/src/window/WindowBase.ts +482 -847
  505. package/src/window/index.ts +0 -1
  506. package/tsconfig.json +1 -0
  507. package/dist/cjs/node/collection/HTMLCollection.js.map +0 -7
  508. package/dist/cjs/node/collection/HTMLCollectionOf.js.map +0 -7
  509. package/dist/cjs/node/collection/NodeListOf.js.map +0 -7
  510. package/dist/esm/node/collection/HTMLCollection.js.map +0 -7
  511. package/dist/esm/node/collection/HTMLCollectionOf.js +0 -17
  512. package/dist/esm/node/collection/HTMLCollectionOf.js.map +0 -7
  513. package/dist/esm/node/collection/NodeListOf.js.map +0 -7
  514. package/dist/types/node/collection/HTMLCollection.d.ts.map +0 -1
  515. package/dist/types/node/collection/HTMLCollectionOf.d.ts +0 -14
  516. package/dist/types/node/collection/HTMLCollectionOf.d.ts.map +0 -1
  517. package/dist/types/node/collection/NodeListOf.d.ts.map +0 -1
  518. package/src/node/collection/HTMLCollectionOf.ts +0 -26
@@ -1,9 +1,9 @@
1
1
  import { ParentNodeBase } from "../ParentNodeBase.js";
2
- import { HTMLCollection } from "../collection/index.js";
3
- import { ElementFactory } from "../../factory/ElementFactory.js";
2
+ import { HTMLCollectionImp, HTMLCollectionOfImp } from "../collection/index.js";
4
3
  import { ELEMENT_NODE, TEXT_NODE, ATTRIBUTE_NODE } from "../Node.js";
5
4
  import { CSSSelector } from "../../utils/CSSSelector.js";
6
5
  import { NodeBase } from "../NodeBase.js";
6
+ import { ShadowRootBase } from "../ShadowRootBase.js";
7
7
  class DOMException extends Error {
8
8
  constructor(message, name = "DOMException") {
9
9
  super(message);
@@ -11,16 +11,23 @@ class DOMException extends Error {
11
11
  this.name = name;
12
12
  }
13
13
  }
14
- class ElementBase extends ParentNodeBase {
15
- constructor(_tagName, ownerDocument) {
14
+ const _ElementBase = class _ElementBase extends ParentNodeBase {
15
+ constructor(_tagName = "DIV", ownerDocument) {
16
16
  super(ELEMENT_NODE, _tagName.toUpperCase(), ownerDocument);
17
17
  this._tagName = _tagName;
18
18
  this._id = "";
19
19
  this._className = "";
20
20
  this._attributes = /* @__PURE__ */ new Map();
21
+ this._shadowRoot = null;
21
22
  this.onfullscreenchange = null;
22
23
  this.onfullscreenerror = null;
23
24
  }
25
+ animate(keyframes, options) {
26
+ throw new Error("Method not implemented.");
27
+ }
28
+ getAnimations(options) {
29
+ throw new Error("Method not implemented.");
30
+ }
24
31
  get tagName() {
25
32
  return this._tagName.toUpperCase();
26
33
  }
@@ -66,10 +73,12 @@ class ElementBase extends ParentNodeBase {
66
73
  if (value !== null && value !== void 0) {
67
74
  const stringValue = String(value);
68
75
  const escapedValue = this.escapeHTMLEntities(stringValue);
69
- const { TextBase } = require("../TextBase");
70
- const textNode = new TextBase(escapedValue, this._ownerDocument);
71
- this._childNodesInternal.push(textNode);
72
- textNode._parentNodeInternal = this;
76
+ const { TextBase } = _ElementBase.dependencies;
77
+ if (TextBase) {
78
+ const textNode = new TextBase(escapedValue, this._ownerDocument);
79
+ this._childNodesInternal.push(textNode);
80
+ textNode._parentNodeInternal = this;
81
+ }
73
82
  }
74
83
  }
75
84
  set innerHTML(value) {
@@ -95,6 +104,9 @@ class ElementBase extends ParentNodeBase {
95
104
  return `<${tagName}${attrs} />`;
96
105
  } else {
97
106
  let childHTML = "";
107
+ if (element.shadowRoot) {
108
+ childHTML += `<template shadowrootmode="${element.shadowRoot.mode}">${element.shadowRoot.innerHTML}</template>`;
109
+ }
98
110
  for (const child of element._childNodesInternal || []) {
99
111
  if (child.nodeType === TEXT_NODE) {
100
112
  childHTML += child._nodeValue || "";
@@ -110,8 +122,12 @@ class ElementBase extends ParentNodeBase {
110
122
  /**
111
123
  * Improved HTML parser for innerHTML using a stack-based approach
112
124
  */
113
- parseAndAppendHTML(html) {
114
- const ElementFactory2 = require("../../factory/ElementFactory").ElementFactory;
125
+ parseAndAppendHTML(html, targetNode = this) {
126
+ const { ElementFactory, TextBase, Comment } = _ElementBase.dependencies;
127
+ if (!ElementFactory) {
128
+ console.error("SWC DOM Parser: ElementFactory dependency not injected.");
129
+ return;
130
+ }
115
131
  let i = 0;
116
132
  const length = html.length;
117
133
  while (i < length) {
@@ -120,18 +136,14 @@ class ElementBase extends ParentNodeBase {
120
136
  let text = html.substring(i).trim();
121
137
  if (text) {
122
138
  text = this.fixBrokenClosingTags(text);
123
- const { TextBase } = require("../TextBase");
124
- const textNode = new TextBase(text, this._ownerDocument);
125
- this.appendChild(textNode);
139
+ if (TextBase) targetNode.appendChild(new TextBase(text, this._ownerDocument));
126
140
  }
127
141
  break;
128
142
  } else if (nextTagStart > i) {
129
143
  let text = html.substring(i, nextTagStart).trim();
130
144
  if (text) {
131
145
  text = this.fixBrokenClosingTags(text);
132
- const { TextBase } = require("../TextBase");
133
- const textNode = new TextBase(text, this._ownerDocument);
134
- this.appendChild(textNode);
146
+ if (TextBase) targetNode.appendChild(new TextBase(text, this._ownerDocument));
135
147
  }
136
148
  }
137
149
  i = nextTagStart;
@@ -142,9 +154,7 @@ class ElementBase extends ParentNodeBase {
142
154
  const commentEnd = html.indexOf("-->", i);
143
155
  if (commentEnd !== -1) {
144
156
  const commentContent = html.substring(i + 4, commentEnd);
145
- const { Comment } = require("../Comment");
146
- const commentNode = new Comment(commentContent, this._ownerDocument);
147
- this.appendChild(commentNode);
157
+ if (Comment) targetNode.appendChild(new Comment(commentContent, this._ownerDocument));
148
158
  i = commentEnd + 3;
149
159
  continue;
150
160
  }
@@ -153,17 +163,15 @@ class ElementBase extends ParentNodeBase {
153
163
  const parts2 = tagContent.slice(0, -1).trim().split(/\s+/);
154
164
  const tagName2 = parts2[0];
155
165
  const attributeString2 = tagContent.slice(tagName2.length, -1).trim();
156
- const element = ElementFactory2.createElement(tagName2, this._ownerDocument);
166
+ const element = ElementFactory.createElement(tagName2, this._ownerDocument);
157
167
  this.parseAttributes(element, attributeString2);
158
- this.appendChild(element);
168
+ targetNode.appendChild(element);
159
169
  i = tagEnd + 1;
160
170
  continue;
161
171
  }
162
172
  if (tagContent.startsWith("/")) {
163
173
  const closingTagText = `<${tagContent}>`;
164
- const { TextBase } = require("../TextBase");
165
- const textNode = new TextBase(closingTagText, this._ownerDocument);
166
- this.appendChild(textNode);
174
+ if (TextBase) targetNode.appendChild(new TextBase(closingTagText, this._ownerDocument));
167
175
  i = tagEnd + 1;
168
176
  continue;
169
177
  }
@@ -171,44 +179,38 @@ class ElementBase extends ParentNodeBase {
171
179
  const tagName = parts[0];
172
180
  const attributeString = tagContent.slice(tagName.length).trim();
173
181
  if (tagName === "style" || tagName === "script") {
174
- const closingTag2 = `</${tagName}>`;
175
- const closingTagIndex2 = html.indexOf(closingTag2, tagEnd + 1);
182
+ const closingTag = `</${tagName}>`;
183
+ const closingTagIndex2 = html.indexOf(closingTag, tagEnd + 1);
176
184
  if (closingTagIndex2 !== -1) {
177
- const element = ElementFactory2.createElement(tagName, this._ownerDocument);
185
+ const element = ElementFactory.createElement(tagName, this._ownerDocument);
178
186
  this.parseAttributes(element, attributeString);
179
187
  const content = html.substring(tagEnd + 1, closingTagIndex2);
180
- if (content) {
181
- const { TextBase } = require("../TextBase");
182
- const textNode = new TextBase(content, this._ownerDocument);
183
- element.appendChild(textNode);
188
+ if (content && TextBase) {
189
+ element.appendChild(new TextBase(content, this._ownerDocument));
184
190
  }
185
- this.appendChild(element);
186
- i = closingTagIndex2 + closingTag2.length;
191
+ targetNode.appendChild(element);
192
+ i = closingTagIndex2 + closingTag.length;
187
193
  continue;
188
194
  }
189
195
  }
190
- const closingTag = `</${tagName}>`;
191
196
  const closingTagIndex = this.findMatchingClosingTag(html, tagName, tagEnd + 1);
192
197
  if (closingTagIndex !== -1) {
193
- const element = ElementFactory2.createElement(tagName, this._ownerDocument);
198
+ const element = ElementFactory.createElement(tagName, this._ownerDocument);
194
199
  this.parseAttributes(element, attributeString);
195
200
  const content = html.substring(tagEnd + 1, closingTagIndex);
196
201
  if (content.trim()) {
197
202
  element.innerHTML = content;
198
203
  }
199
- this.appendChild(element);
200
- i = closingTagIndex + closingTag.length;
204
+ targetNode.appendChild(element);
205
+ i = closingTagIndex + (tagName.length + 3);
201
206
  } else {
202
- const element = ElementFactory2.createElement(tagName, this._ownerDocument);
207
+ const element = ElementFactory.createElement(tagName, this._ownerDocument);
203
208
  this.parseAttributes(element, attributeString);
204
- this.appendChild(element);
209
+ targetNode.appendChild(element);
205
210
  i = tagEnd + 1;
206
211
  }
207
212
  }
208
213
  }
209
- /**
210
- * Find the real end of a tag, considering quoted attributes
211
- */
212
214
  findTagEnd(html, startIndex) {
213
215
  let i = startIndex + 1;
214
216
  let inQuotes = false;
@@ -219,9 +221,7 @@ class ElementBase extends ParentNodeBase {
219
221
  if (char === '"' || char === "'") {
220
222
  inQuotes = true;
221
223
  quoteChar = char;
222
- } else if (char === ">") {
223
- return i;
224
- }
224
+ } else if (char === ">") return i;
225
225
  } else {
226
226
  if (char === quoteChar) {
227
227
  inQuotes = false;
@@ -232,16 +232,9 @@ class ElementBase extends ParentNodeBase {
232
232
  }
233
233
  return -1;
234
234
  }
235
- /**
236
- * Fix broken closing tags in text content
237
- * Converts patterns like "/div>" to "</div>"
238
- */
239
235
  fixBrokenClosingTags(text) {
240
236
  return text.replace(/\/(\w+)>/g, "</$1>");
241
237
  }
242
- /**
243
- * Find the matching closing tag, accounting for nested tags of the same type
244
- */
245
238
  findMatchingClosingTag(html, tagName, startIndex) {
246
239
  const openTag = `<${tagName}`;
247
240
  const closeTag = `</${tagName}>`;
@@ -250,135 +243,70 @@ class ElementBase extends ParentNodeBase {
250
243
  while (i < html.length && depth > 0) {
251
244
  const nextOpen = html.indexOf(openTag, i);
252
245
  const nextClose = html.indexOf(closeTag, i);
253
- if (nextClose === -1) {
254
- return -1;
255
- }
246
+ if (nextClose === -1) return -1;
256
247
  if (nextOpen !== -1 && nextOpen < nextClose) {
257
248
  const afterTag = html.charAt(nextOpen + openTag.length);
258
- if (afterTag === " " || afterTag === ">" || afterTag === "/") {
259
- depth++;
260
- }
249
+ if (afterTag === " " || afterTag === ">" || afterTag === "/") depth++;
261
250
  i = nextOpen + openTag.length;
262
251
  } else {
263
252
  depth--;
264
- if (depth === 0) {
265
- return nextClose;
266
- }
253
+ if (depth === 0) return nextClose;
267
254
  i = nextClose + closeTag.length;
268
255
  }
269
256
  }
270
257
  return -1;
271
258
  }
272
- /**
273
- * Parse attributes from attribute string
274
- */
275
259
  parseAttributes(element, attributeString) {
276
260
  let position = 0;
277
261
  const length = attributeString.length;
278
262
  while (position < length) {
279
- while (position < length && /\s/.test(attributeString[position])) {
280
- position++;
281
- }
263
+ while (position < length && /\s/.test(attributeString[position])) position++;
282
264
  if (position >= length) break;
283
265
  const nameStart = position;
284
- while (position < length && /[\w:-]/.test(attributeString[position])) {
285
- position++;
286
- }
266
+ while (position < length && /[\w:-]/.test(attributeString[position])) position++;
287
267
  if (position === nameStart) {
288
268
  position++;
289
269
  continue;
290
270
  }
291
271
  const name = attributeString.substring(nameStart, position);
292
- while (position < length && /\s/.test(attributeString[position])) {
293
- position++;
294
- }
272
+ while (position < length && /\s/.test(attributeString[position])) position++;
295
273
  let value = "";
296
274
  if (position < length && attributeString[position] === "=") {
297
275
  position++;
298
- while (position < length && /\s/.test(attributeString[position])) {
299
- position++;
300
- }
276
+ while (position < length && /\s/.test(attributeString[position])) position++;
301
277
  if (position < length) {
302
278
  const quote = attributeString[position];
303
279
  if (quote === '"' || quote === "'") {
304
280
  position++;
305
281
  const valueStart = position;
306
- while (position < length && attributeString[position] !== quote) {
307
- position++;
308
- }
282
+ while (position < length && attributeString[position] !== quote) position++;
309
283
  value = attributeString.substring(valueStart, position);
310
- if (position < length && attributeString[position] === quote) {
311
- position++;
312
- }
284
+ if (position < length && attributeString[position] === quote) position++;
313
285
  } else {
314
286
  const valueStart = position;
315
- while (position < length && !/\s/.test(attributeString[position])) {
316
- position++;
317
- }
287
+ while (position < length && !/\s/.test(attributeString[position])) position++;
318
288
  value = attributeString.substring(valueStart, position);
319
289
  }
320
290
  }
321
291
  }
322
- value = this.decodeHTMLEntities(value);
323
- element.setAttribute(name, value);
292
+ element.setAttribute(name, this.decodeHTMLEntities(value));
324
293
  }
325
294
  }
326
- /**
327
- * Escape HTML entities in a string to prevent XSS
328
- */
329
295
  escapeHTMLEntities(str) {
330
- const entityMap = {
331
- "&": "&amp;",
332
- "<": "&lt;",
333
- ">": "&gt;",
334
- '"': "&quot;",
335
- "'": "&#39;"
336
- };
337
- return str.replace(/[&<>"']/g, (char) => {
338
- return entityMap[char] || char;
339
- });
296
+ const entityMap = { "&": "&amp;", "<": "&lt;", ">": "&gt;", '"': "&quot;", "'": "&#39;" };
297
+ return str.replace(/[&<>"']/g, (char) => entityMap[char] || char);
340
298
  }
341
- /**
342
- * Decode HTML entities in a string
343
- */
344
299
  decodeHTMLEntities(str) {
345
- const entityMap = {
346
- "&amp;": "&",
347
- "&lt;": "<",
348
- "&gt;": ">",
349
- "&quot;": '"',
350
- "&#39;": "'",
351
- "&#34;": '"',
352
- "&apos;": "'",
353
- "&copy;": "\xA9",
354
- "&reg;": "\xAE",
355
- "&trade;": "\u2122",
356
- "&nbsp;": " ",
357
- "&hellip;": "\u2026",
358
- "&mdash;": "\u2014",
359
- "&ndash;": "\u2013",
360
- "&lsquo;": "\u2018",
361
- "&rsquo;": "\u2019",
362
- "&ldquo;": '"',
363
- "&rdquo;": '"'
364
- };
300
+ const entityMap = { "&amp;": "&", "&lt;": "<", "&gt;": ">", "&quot;": '"', "&#39;": "'", "&#34;": '"', "&apos;": "'", "&copy;": "\xA9", "&reg;": "\xAE", "&trade;": "\u2122", "&nbsp;": " ", "&hellip;": "\u2026", "&mdash;": "\u2014", "&ndash;": "\u2013", "&lsquo;": "\u2018", "&rsquo;": "\u2019", "&ldquo;": '"', "&rdquo;": '"' };
365
301
  return str.replace(/&[a-zA-Z0-9#]+;/g, (entity) => {
366
- if (entityMap[entity]) {
367
- return entityMap[entity];
368
- }
302
+ if (entityMap[entity]) return entityMap[entity];
369
303
  if (entity.startsWith("&#") && entity.endsWith(";")) {
370
- const numStr = entity.slice(2, -1);
371
- const num = parseInt(numStr, 10);
372
- if (!isNaN(num)) {
373
- return String.fromCharCode(num);
374
- }
304
+ const num = parseInt(entity.slice(2, -1), 10);
305
+ return isNaN(num) ? entity : String.fromCharCode(num);
375
306
  }
376
307
  if (entity.startsWith("&#x") && entity.endsWith(";")) {
377
- const hexStr = entity.slice(3, -1);
378
- const num = parseInt(hexStr, 16);
379
- if (!isNaN(num)) {
380
- return String.fromCharCode(num);
381
- }
308
+ const num = parseInt(entity.slice(3, -1), 16);
309
+ return isNaN(num) ? entity : String.fromCharCode(num);
382
310
  }
383
311
  return entity;
384
312
  });
@@ -387,11 +315,7 @@ class ElementBase extends ParentNodeBase {
387
315
  const attrs = Array.from(this._attributes.entries()).map(([name, value]) => value === "" ? ` ${name}` : ` ${name}="${value.replace(/"/g, "&quot;")}"`).join("");
388
316
  const selfClosingTags = ["img", "input", "br", "hr", "meta", "link", "area", "base", "col", "embed", "source", "track", "wbr"];
389
317
  const isSelfClosing = selfClosingTags.includes(this.tagName.toLowerCase());
390
- if (isSelfClosing) {
391
- return `<${this.tagName.toLowerCase()}${attrs} />`;
392
- } else {
393
- return `<${this.tagName.toLowerCase()}${attrs}>${this.innerHTML}</${this.tagName.toLowerCase()}>`;
394
- }
318
+ return isSelfClosing ? `<${this.tagName.toLowerCase()}${attrs} />` : `<${this.tagName.toLowerCase()}${attrs}>${this.innerHTML}</${this.tagName.toLowerCase()}>`;
395
319
  }
396
320
  get namespaceURI() {
397
321
  return "http://www.w3.org/1999/xhtml";
@@ -399,28 +323,20 @@ class ElementBase extends ParentNodeBase {
399
323
  get prefix() {
400
324
  return null;
401
325
  }
402
- // Attribute methods
403
326
  getAttribute(qualifiedName) {
404
- const value = this._attributes.get(qualifiedName.toLowerCase());
405
- return value !== void 0 ? value : null;
327
+ return this._attributes.get(qualifiedName.toLowerCase()) ?? null;
406
328
  }
407
329
  setAttribute(qualifiedName, value) {
408
330
  const name = qualifiedName.toLowerCase();
409
331
  this._attributes.set(name, value);
410
- if (name === "id") {
411
- this._id = value;
412
- } else if (name === "class") {
413
- this._className = value;
414
- }
332
+ if (name === "id") this._id = value;
333
+ else if (name === "class") this._className = value;
415
334
  }
416
335
  removeAttribute(qualifiedName) {
417
336
  const name = qualifiedName.toLowerCase();
418
337
  this._attributes.delete(name);
419
- if (name === "id") {
420
- this._id = "";
421
- } else if (name === "class") {
422
- this._className = "";
423
- }
338
+ if (name === "id") this._id = "";
339
+ else if (name === "class") this._className = "";
424
340
  }
425
341
  hasAttribute(qualifiedName) {
426
342
  return this._attributes.has(qualifiedName.toLowerCase());
@@ -428,82 +344,74 @@ class ElementBase extends ParentNodeBase {
428
344
  closest(selectors) {
429
345
  let element = this;
430
346
  while (element) {
431
- if (element.matches && element.matches(selectors)) {
432
- return element;
433
- }
347
+ if (element.matches && element.matches(selectors)) return element;
434
348
  element = element.parentElement;
435
349
  }
436
350
  return null;
437
351
  }
438
- /**
439
- * Returns true if the element would be selected by the specified CSS selector; otherwise, returns false.
440
- *
441
- * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/matches)
442
- */
443
352
  matches(selectors) {
444
353
  return CSSSelector.matches(this, selectors);
445
354
  }
446
- // ChildNode methods are inherited from ParentNodeBase -> ChildNodeBase
447
- // Additional Element properties and methods - Not implemented yet
448
355
  get attributes() {
449
356
  return new NamedNodeMapImpl(this._attributes);
450
357
  }
451
358
  get clientHeight() {
452
- throw new Error("Element.clientHeight is not implemented yet");
359
+ return 0;
453
360
  }
454
361
  get clientLeft() {
455
- throw new Error("Element.clientLeft is not implemented yet");
362
+ return 0;
456
363
  }
457
364
  get clientTop() {
458
- throw new Error("Element.clientTop is not implemented yet");
365
+ return 0;
459
366
  }
460
367
  get clientWidth() {
461
- throw new Error("Element.clientWidth is not implemented yet");
368
+ return 0;
462
369
  }
463
370
  get currentCSSZoom() {
464
- throw new Error("Element.currentCSSZoom is not implemented yet");
371
+ return 1;
465
372
  }
466
373
  get part() {
467
- throw new Error("Element.part is not implemented yet");
374
+ return { length: 0, value: "", add: () => {
375
+ }, remove: () => {
376
+ }, contains: () => false, toggle: () => false, replace: () => false, item: () => null };
468
377
  }
469
378
  get scrollHeight() {
470
- throw new Error("Element.scrollHeight is not implemented yet");
379
+ return 0;
471
380
  }
472
381
  get scrollLeft() {
473
- throw new Error("Element.scrollLeft is not implemented yet");
382
+ return 0;
474
383
  }
475
- set scrollLeft(value) {
476
- throw new Error("Element.scrollLeft setter is not implemented yet");
384
+ set scrollLeft(_) {
477
385
  }
478
386
  get scrollTop() {
479
- throw new Error("Element.scrollTop is not implemented yet");
387
+ return 0;
480
388
  }
481
- set scrollTop(value) {
482
- throw new Error("Element.scrollTop setter is not implemented yet");
389
+ set scrollTop(_) {
483
390
  }
484
391
  get scrollWidth() {
485
- throw new Error("Element.scrollWidth is not implemented yet");
392
+ return 0;
486
393
  }
487
394
  get shadowRoot() {
488
- throw new Error("Element.shadowRoot is not implemented yet");
395
+ return this._shadowRoot;
489
396
  }
490
397
  get slot() {
491
- throw new Error("Element.slot is not implemented yet");
398
+ return this.getAttribute("slot") || "";
492
399
  }
493
400
  set slot(value) {
494
- throw new Error("Element.slot setter is not implemented yet");
401
+ this.setAttribute("slot", value);
495
402
  }
496
- // Methods - Not implemented yet
497
403
  attachShadow(init) {
498
- throw new Error("Element.attachShadow() is not implemented yet");
404
+ if (this._shadowRoot) throw new DOMException("Shadow root already attached", "NotSupportedError");
405
+ this._shadowRoot = new ShadowRootBase(this, init, this._ownerDocument);
406
+ return this._shadowRoot;
499
407
  }
500
- checkVisibility(options) {
501
- throw new Error("Element.checkVisibility() is not implemented yet");
408
+ checkVisibility(_options) {
409
+ return true;
502
410
  }
503
411
  computedStyleMap() {
504
- throw new Error("Element.computedStyleMap() is not implemented yet");
412
+ return /* @__PURE__ */ new Map();
505
413
  }
506
- getAttributeNS(namespace, localName) {
414
+ getAttributeNS(_ns, localName) {
507
415
  return this.getAttribute(localName);
508
416
  }
509
417
  getAttributeNames() {
@@ -511,29 +419,17 @@ class ElementBase extends ParentNodeBase {
511
419
  }
512
420
  getAttributeNode(qualifiedName) {
513
421
  const value = this.getAttribute(qualifiedName);
514
- if (value !== null) {
515
- return new AttrImpl(qualifiedName, value);
516
- }
517
- return null;
422
+ return value !== null ? new AttrImpl(qualifiedName, value) : null;
518
423
  }
519
- getAttributeNodeNS(namespace, localName) {
424
+ getAttributeNodeNS(_ns, localName) {
520
425
  return this.getAttributeNode(localName);
521
426
  }
522
427
  getBoundingClientRect() {
523
- return {
524
- bottom: 0,
525
- height: 0,
526
- left: 0,
527
- right: 0,
528
- top: 0,
529
- width: 0,
530
- x: 0,
531
- y: 0,
532
- toJSON: () => ({})
533
- };
428
+ return { bottom: 0, height: 0, left: 0, right: 0, top: 0, width: 0, x: 0, y: 0, toJSON: () => ({}) };
534
429
  }
535
430
  getClientRects() {
536
- throw new Error("Element.getClientRects() is not implemented yet");
431
+ return { length: 0, item: () => null, [Symbol.iterator]: function* () {
432
+ } };
537
433
  }
538
434
  getElementsByClassName(classNames) {
539
435
  const result = [];
@@ -543,55 +439,37 @@ class ElementBase extends ParentNodeBase {
543
439
  return classes.every((cls) => elementClasses.includes(cls));
544
440
  };
545
441
  const traverse = (node) => {
546
- if (node.nodeType === ELEMENT_NODE) {
547
- const element = node;
548
- if (hasAllClasses(element, classNameList)) {
549
- result.push(element);
550
- }
551
- }
552
- for (let i = 0; i < node.childNodes.length; i++) {
553
- traverse(node.childNodes[i]);
554
- }
442
+ if (node.nodeType === ELEMENT_NODE && hasAllClasses(node, classNameList)) result.push(node);
443
+ for (let i = 0; i < node.childNodes.length; i++) traverse(node.childNodes[i]);
555
444
  };
556
- for (let i = 0; i < this.childNodes.length; i++) {
557
- traverse(this.childNodes[i]);
558
- }
559
- return new HTMLCollection(result);
445
+ for (let i = 0; i < this.childNodes.length; i++) traverse(this.childNodes[i]);
446
+ return new HTMLCollectionOfImp(result);
560
447
  }
561
448
  getElementsByTagName(qualifiedName) {
562
449
  const result = [];
563
450
  const tagName = qualifiedName.toLowerCase();
564
451
  const isWildcard = tagName === "*";
565
452
  const traverse = (node) => {
566
- if (node.nodeType === ELEMENT_NODE) {
567
- const element = node;
568
- if (isWildcard || element.localName === tagName) {
569
- result.push(element);
570
- }
571
- }
572
- for (let i = 0; i < node.childNodes.length; i++) {
573
- traverse(node.childNodes[i]);
574
- }
453
+ if (node.nodeType === ELEMENT_NODE && (isWildcard || node.localName === tagName)) result.push(node);
454
+ for (let i = 0; i < node.childNodes.length; i++) traverse(node.childNodes[i]);
575
455
  };
576
- for (let i = 0; i < this.childNodes.length; i++) {
577
- traverse(this.childNodes[i]);
578
- }
579
- return new HTMLCollection(result);
456
+ for (let i = 0; i < this.childNodes.length; i++) traverse(this.childNodes[i]);
457
+ return new HTMLCollectionImp(result);
580
458
  }
581
- getElementsByTagNameNS(namespace, localName) {
459
+ getElementsByTagNameNS(_ns, localName) {
582
460
  return this.getElementsByTagName(localName);
583
461
  }
584
- getHTML(options) {
585
- throw new Error("Element.getHTML() is not implemented yet");
462
+ getHTML(_options) {
463
+ return this.outerHTML;
586
464
  }
587
- hasAttributeNS(namespace, localName) {
465
+ hasAttributeNS(_ns, localName) {
588
466
  return this.hasAttribute(localName);
589
467
  }
590
468
  hasAttributes() {
591
469
  return this._attributes.size > 0;
592
470
  }
593
- hasPointerCapture(pointerId) {
594
- throw new Error("Element.hasPointerCapture() is not implemented yet");
471
+ hasPointerCapture(_id) {
472
+ return false;
595
473
  }
596
474
  insertAdjacentElement(where, element) {
597
475
  const position = where.toLowerCase();
@@ -603,22 +481,16 @@ class ElementBase extends ParentNodeBase {
603
481
  }
604
482
  return null;
605
483
  case "afterbegin":
606
- if (this.firstChild) {
607
- this.insertBefore(element, this.firstChild);
608
- } else {
609
- this.appendChild(element);
610
- }
484
+ if (this.firstChild) this.insertBefore(element, this.firstChild);
485
+ else this.appendChild(element);
611
486
  return element;
612
487
  case "beforeend":
613
488
  this.appendChild(element);
614
489
  return element;
615
490
  case "afterend":
616
491
  if (this.parentNode) {
617
- if (this.nextSibling) {
618
- this.parentNode.insertBefore(element, this.nextSibling);
619
- } else {
620
- this.parentNode.appendChild(element);
621
- }
492
+ if (this.nextSibling) this.parentNode.insertBefore(element, this.nextSibling);
493
+ else this.parentNode.appendChild(element);
622
494
  return element;
623
495
  }
624
496
  return null;
@@ -631,32 +503,22 @@ class ElementBase extends ParentNodeBase {
631
503
  const tempDiv = this._ownerDocument.createElement("div");
632
504
  tempDiv.innerHTML = html;
633
505
  const fragment = this._ownerDocument.createDocumentFragment();
634
- while (tempDiv.firstChild) {
635
- fragment.appendChild(tempDiv.firstChild);
636
- }
506
+ while (tempDiv.firstChild) fragment.appendChild(tempDiv.firstChild);
637
507
  switch (pos) {
638
508
  case "beforebegin":
639
- if (this.parentNode) {
640
- this.parentNode.insertBefore(fragment, this);
641
- }
509
+ if (this.parentNode) this.parentNode.insertBefore(fragment, this);
642
510
  break;
643
511
  case "afterbegin":
644
- if (this.firstChild) {
645
- this.insertBefore(fragment, this.firstChild);
646
- } else {
647
- this.appendChild(fragment);
648
- }
512
+ if (this.firstChild) this.insertBefore(fragment, this.firstChild);
513
+ else this.appendChild(fragment);
649
514
  break;
650
515
  case "beforeend":
651
516
  this.appendChild(fragment);
652
517
  break;
653
518
  case "afterend":
654
519
  if (this.parentNode) {
655
- if (this.nextSibling) {
656
- this.parentNode.insertBefore(fragment, this.nextSibling);
657
- } else {
658
- this.parentNode.appendChild(fragment);
659
- }
520
+ if (this.nextSibling) this.parentNode.insertBefore(fragment, this.nextSibling);
521
+ else this.parentNode.appendChild(fragment);
660
522
  }
661
523
  break;
662
524
  default:
@@ -668,36 +530,28 @@ class ElementBase extends ParentNodeBase {
668
530
  const textNode = this._ownerDocument.createTextNode(data);
669
531
  switch (position) {
670
532
  case "beforebegin":
671
- if (this.parentNode) {
672
- this.parentNode.insertBefore(textNode, this);
673
- }
533
+ if (this.parentNode) this.parentNode.insertBefore(textNode, this);
674
534
  break;
675
535
  case "afterbegin":
676
- if (this.firstChild) {
677
- this.insertBefore(textNode, this.firstChild);
678
- } else {
679
- this.appendChild(textNode);
680
- }
536
+ if (this.firstChild) this.insertBefore(textNode, this.firstChild);
537
+ else this.appendChild(textNode);
681
538
  break;
682
539
  case "beforeend":
683
540
  this.appendChild(textNode);
684
541
  break;
685
542
  case "afterend":
686
543
  if (this.parentNode) {
687
- if (this.nextSibling) {
688
- this.parentNode.insertBefore(textNode, this.nextSibling);
689
- } else {
690
- this.parentNode.appendChild(textNode);
691
- }
544
+ if (this.nextSibling) this.parentNode.insertBefore(textNode, this.nextSibling);
545
+ else this.parentNode.appendChild(textNode);
692
546
  }
693
547
  break;
694
548
  default:
695
549
  throw new DOMException(`Invalid position: ${where}`, "SyntaxError");
696
550
  }
697
551
  }
698
- releasePointerCapture(pointerId) {
552
+ releasePointerCapture(_id) {
699
553
  }
700
- removeAttributeNS(namespace, localName) {
554
+ removeAttributeNS(_ns, localName) {
701
555
  this.removeAttribute(localName);
702
556
  }
703
557
  removeAttributeNode(attr) {
@@ -708,21 +562,21 @@ class ElementBase extends ParentNodeBase {
708
562
  }
709
563
  throw new DOMException("The attribute node is not an attribute of this element", "NotFoundError");
710
564
  }
711
- requestFullscreen(options) {
712
- throw new Error("Element.requestFullscreen() is not implemented yet");
565
+ requestFullscreen(_opt) {
566
+ return Promise.resolve();
713
567
  }
714
- requestPointerLock(options) {
715
- throw new Error("Element.requestPointerLock() is not implemented yet");
568
+ requestPointerLock(_opt) {
569
+ return Promise.resolve();
716
570
  }
717
- scroll(optionsOrX, y) {
571
+ scroll(_x, _y) {
718
572
  }
719
- scrollBy(optionsOrX, y) {
573
+ scrollBy(_x, _y) {
720
574
  }
721
- scrollIntoView(arg) {
575
+ scrollIntoView(_arg) {
722
576
  }
723
- scrollTo(optionsOrX, y) {
577
+ scrollTo(_x, _y) {
724
578
  }
725
- setAttributeNS(namespace, qualifiedName, value) {
579
+ setAttributeNS(_ns, qualifiedName, value) {
726
580
  this.setAttribute(qualifiedName, value);
727
581
  }
728
582
  setAttributeNode(attr) {
@@ -734,8 +588,9 @@ class ElementBase extends ParentNodeBase {
734
588
  return this.setAttributeNode(attr);
735
589
  }
736
590
  setHTMLUnsafe(html) {
591
+ this.innerHTML = html;
737
592
  }
738
- setPointerCapture(pointerId) {
593
+ setPointerCapture(_id) {
739
594
  }
740
595
  toggleAttribute(qualifiedName, force) {
741
596
  const hasAttr = this.hasAttribute(qualifiedName);
@@ -749,31 +604,31 @@ class ElementBase extends ParentNodeBase {
749
604
  return hasAttr;
750
605
  }
751
606
  webkitMatchesSelector(selectors) {
752
- return false;
607
+ return this.matches(selectors);
753
608
  }
754
- // EventTarget methods - Not implemented yet
755
609
  addEventListener(type, listener, options) {
756
610
  }
757
611
  removeEventListener(type, listener, options) {
758
612
  }
759
- dispatchEvent(event) {
613
+ dispatchEvent(_event) {
760
614
  return true;
761
615
  }
762
616
  cloneNode(deep) {
617
+ const { ElementFactory } = _ElementBase.dependencies;
763
618
  const clone = ElementFactory.createElement(this.tagName, this._ownerDocument);
764
- for (const [name, value] of this._attributes) {
765
- clone.setAttribute(name, value);
766
- }
619
+ for (const [name, value] of this._attributes) clone.setAttribute(name, value);
767
620
  if (deep) {
768
- for (const child of this._childNodesInternal) {
769
- if (child && "cloneNode" in child) {
770
- clone.appendChild(child.cloneNode(true));
771
- }
772
- }
621
+ for (const child of this._childNodesInternal) if (child && "cloneNode" in child) clone.appendChild(child.cloneNode(true));
773
622
  }
774
623
  return clone;
775
624
  }
776
- }
625
+ };
626
+ /**
627
+ * Static dependencies to break circular references without using 'require' or 'global'.
628
+ * These are injected by the main DomParser entry point.
629
+ */
630
+ _ElementBase.dependencies = {};
631
+ let ElementBase = _ElementBase;
777
632
  class DOMTokenListImpl {
778
633
  constructor(element) {
779
634
  this.element = element;
@@ -789,16 +644,12 @@ class DOMTokenListImpl {
789
644
  }
790
645
  add(...tokens) {
791
646
  const classes = new Set(this.element.className.split(/\s+/).filter((c) => c.length > 0));
792
- for (const token of tokens) {
793
- classes.add(token);
794
- }
647
+ tokens.forEach((t) => classes.add(t));
795
648
  this.element.className = Array.from(classes).join(" ");
796
649
  }
797
650
  remove(...tokens) {
798
651
  const classes = new Set(this.element.className.split(/\s+/).filter((c) => c.length > 0));
799
- for (const token of tokens) {
800
- classes.delete(token);
801
- }
652
+ tokens.forEach((t) => classes.delete(t));
802
653
  this.element.className = Array.from(classes).join(" ");
803
654
  }
804
655
  contains(token) {
@@ -852,16 +703,12 @@ class NamedNodeMapImpl {
852
703
  const value = this.attributes.get(qualifiedName.toLowerCase());
853
704
  return value !== void 0 ? new AttrImpl(qualifiedName, value) : null;
854
705
  }
855
- getNamedItemNS(namespace, localName) {
706
+ getNamedItemNS(_ns, localName) {
856
707
  return this.getNamedItem(localName);
857
708
  }
858
709
  item(index) {
859
710
  const keys = Array.from(this.attributes.keys());
860
- if (index >= 0 && index < keys.length) {
861
- const key = keys[index];
862
- const value = this.attributes.get(key);
863
- return new AttrImpl(key, value);
864
- }
711
+ if (index >= 0 && index < keys.length) return new AttrImpl(keys[index], this.attributes.get(keys[index]));
865
712
  return null;
866
713
  }
867
714
  removeNamedItem(qualifiedName) {
@@ -872,7 +719,7 @@ class NamedNodeMapImpl {
872
719
  }
873
720
  throw new DOMException("The attribute is not found", "NotFoundError");
874
721
  }
875
- removeNamedItemNS(namespace, localName) {
722
+ removeNamedItemNS(_ns, localName) {
876
723
  return this.removeNamedItem(localName);
877
724
  }
878
725
  setNamedItem(attr) {
@@ -883,42 +730,27 @@ class NamedNodeMapImpl {
883
730
  setNamedItemNS(attr) {
884
731
  return this.setNamedItem(attr);
885
732
  }
886
- // Iterator implementation
887
733
  *[Symbol.iterator]() {
888
- const keys = Array.from(this.attributes.keys());
889
- for (const key of keys) {
890
- const value = this.attributes.get(key);
891
- yield new AttrImpl(key, value);
892
- }
734
+ for (const [key, value] of this.attributes) yield new AttrImpl(key, value);
893
735
  }
894
- // Additional iterator methods for compatibility
895
736
  keys() {
896
737
  return this.attributes.keys();
897
738
  }
898
739
  values() {
899
740
  const self = this;
900
741
  return function* () {
901
- for (const [key, value] of self.attributes) {
902
- yield new AttrImpl(key, value);
903
- }
742
+ for (const [key, value] of self.attributes) yield new AttrImpl(key, value);
904
743
  }();
905
744
  }
906
745
  entries() {
907
746
  const self = this;
908
747
  return function* () {
909
- for (const [key, value] of self.attributes) {
910
- yield [key, new AttrImpl(key, value)];
911
- }
748
+ for (const [key, value] of self.attributes) yield [key, new AttrImpl(key, value)];
912
749
  }();
913
750
  }
914
- // forEach method for compatibility
915
751
  forEach(callback, thisArg) {
916
752
  const keys = Array.from(this.attributes.keys());
917
- keys.forEach((key, index) => {
918
- const value = this.attributes.get(key);
919
- const attr = new AttrImpl(key, value);
920
- callback.call(thisArg, attr, index, this);
921
- });
753
+ keys.forEach((key, index) => callback.call(thisArg, new AttrImpl(key, this.attributes.get(key)), index, this));
922
754
  }
923
755
  }
924
756
  export {