@dooboostore/dom-parser 1.0.1 → 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 (519) hide show
  1. package/dist/cjs/DomParser.js +43 -13
  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 +169 -202
  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 +164 -322
  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 +153 -3
  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 +233 -515
  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 +43 -13
  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 +166 -199
  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 +164 -322
  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 +153 -3
  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 +282 -499
  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 +3755 -3548
  271. package/dist/esm-bundle/dooboostore-dom-parser.esm.js.map +4 -4
  272. package/dist/types/DomParser.d.ts +4 -0
  273. package/dist/types/DomParser.d.ts.map +1 -1
  274. package/dist/types/factory/ElementFactory.d.ts +1 -1
  275. package/dist/types/factory/ElementFactory.d.ts.map +1 -1
  276. package/dist/types/index.d.ts +3 -1
  277. package/dist/types/index.d.ts.map +1 -1
  278. package/dist/types/node/CharacterData.d.ts +0 -2
  279. package/dist/types/node/CharacterData.d.ts.map +1 -1
  280. package/dist/types/node/ChildNode.d.ts +0 -38
  281. package/dist/types/node/ChildNode.d.ts.map +1 -1
  282. package/dist/types/node/ChildNodeBase.d.ts +6 -4
  283. package/dist/types/node/ChildNodeBase.d.ts.map +1 -1
  284. package/dist/types/node/Comment.d.ts +1 -1
  285. package/dist/types/node/Comment.d.ts.map +1 -1
  286. package/dist/types/node/Document.d.ts +0 -856
  287. package/dist/types/node/Document.d.ts.map +1 -1
  288. package/dist/types/node/DocumentBase.d.ts +68 -108
  289. package/dist/types/node/DocumentBase.d.ts.map +1 -1
  290. package/dist/types/node/DocumentFragment.d.ts +0 -38
  291. package/dist/types/node/DocumentFragment.d.ts.map +1 -1
  292. package/dist/types/node/DocumentFragmentBase.d.ts +1 -8
  293. package/dist/types/node/DocumentFragmentBase.d.ts.map +1 -1
  294. package/dist/types/node/Node.d.ts +0 -213
  295. package/dist/types/node/Node.d.ts.map +1 -1
  296. package/dist/types/node/NodeBase.d.ts +11 -8
  297. package/dist/types/node/NodeBase.d.ts.map +1 -1
  298. package/dist/types/node/NodeFilter.d.ts +25 -0
  299. package/dist/types/node/NodeFilter.d.ts.map +1 -0
  300. package/dist/types/node/NodeIterator.d.ts +0 -34
  301. package/dist/types/node/NodeIterator.d.ts.map +1 -1
  302. package/dist/types/node/ParentNode.d.ts +0 -84
  303. package/dist/types/node/ParentNode.d.ts.map +1 -1
  304. package/dist/types/node/ParentNodeBase.d.ts +0 -5
  305. package/dist/types/node/ParentNodeBase.d.ts.map +1 -1
  306. package/dist/types/node/ShadowRootBase.d.ts +36 -0
  307. package/dist/types/node/ShadowRootBase.d.ts.map +1 -0
  308. package/dist/types/node/Text.d.ts +0 -24
  309. package/dist/types/node/Text.d.ts.map +1 -1
  310. package/dist/types/node/TextBase.d.ts +2 -3
  311. package/dist/types/node/TextBase.d.ts.map +1 -1
  312. package/dist/types/node/TreeWalker.d.ts +48 -0
  313. package/dist/types/node/TreeWalker.d.ts.map +1 -0
  314. package/dist/types/node/collection/{HTMLCollection.d.ts → HTMLCollectionImp.d.ts} +2 -3
  315. package/dist/types/node/collection/HTMLCollectionImp.d.ts.map +1 -0
  316. package/dist/types/node/collection/HTMLCollectionOfImp.d.ts +9 -0
  317. package/dist/types/node/collection/HTMLCollectionOfImp.d.ts.map +1 -0
  318. package/dist/types/node/collection/NodeList.d.ts +0 -1
  319. package/dist/types/node/collection/NodeList.d.ts.map +1 -1
  320. package/dist/types/node/collection/{NodeListOf.d.ts → NodeListOfImp.d.ts} +3 -4
  321. package/dist/types/node/collection/NodeListOfImp.d.ts.map +1 -0
  322. package/dist/types/node/collection/StylePropertyMapImpl.d.ts +20 -0
  323. package/dist/types/node/collection/StylePropertyMapImpl.d.ts.map +1 -0
  324. package/dist/types/node/collection/index.d.ts +3 -3
  325. package/dist/types/node/collection/index.d.ts.map +1 -1
  326. package/dist/types/node/elements/Element.d.ts +0 -686
  327. package/dist/types/node/elements/Element.d.ts.map +1 -1
  328. package/dist/types/node/elements/ElementBase.d.ts +97 -73
  329. package/dist/types/node/elements/ElementBase.d.ts.map +1 -1
  330. package/dist/types/node/elements/HTMLAreaElement.d.ts +0 -1
  331. package/dist/types/node/elements/HTMLAreaElement.d.ts.map +1 -1
  332. package/dist/types/node/elements/HTMLAudioElement.d.ts +8 -0
  333. package/dist/types/node/elements/HTMLAudioElement.d.ts.map +1 -0
  334. package/dist/types/node/elements/HTMLButtonElement.d.ts +1 -1
  335. package/dist/types/node/elements/HTMLButtonElement.d.ts.map +1 -1
  336. package/dist/types/node/elements/HTMLDListElement.d.ts +5 -0
  337. package/dist/types/node/elements/HTMLDListElement.d.ts.map +1 -0
  338. package/dist/types/node/elements/HTMLDataElement.d.ts +5 -0
  339. package/dist/types/node/elements/HTMLDataElement.d.ts.map +1 -0
  340. package/dist/types/node/elements/HTMLDataListElement.d.ts +5 -0
  341. package/dist/types/node/elements/HTMLDataListElement.d.ts.map +1 -0
  342. package/dist/types/node/elements/HTMLDetailsElement.d.ts +5 -0
  343. package/dist/types/node/elements/HTMLDetailsElement.d.ts.map +1 -0
  344. package/dist/types/node/elements/HTMLDialogElement.d.ts +5 -0
  345. package/dist/types/node/elements/HTMLDialogElement.d.ts.map +1 -0
  346. package/dist/types/node/elements/HTMLElement.d.ts +2 -88
  347. package/dist/types/node/elements/HTMLElement.d.ts.map +1 -1
  348. package/dist/types/node/elements/HTMLElementBase.d.ts +133 -3
  349. package/dist/types/node/elements/HTMLElementBase.d.ts.map +1 -1
  350. package/dist/types/node/elements/HTMLEmbedElement.d.ts +0 -1
  351. package/dist/types/node/elements/HTMLEmbedElement.d.ts.map +1 -1
  352. package/dist/types/node/elements/HTMLFieldSetElement.d.ts +5 -0
  353. package/dist/types/node/elements/HTMLFieldSetElement.d.ts.map +1 -0
  354. package/dist/types/node/elements/HTMLHRElement.d.ts +5 -0
  355. package/dist/types/node/elements/HTMLHRElement.d.ts.map +1 -0
  356. package/dist/types/node/elements/HTMLIFrameElement.d.ts +5 -0
  357. package/dist/types/node/elements/HTMLIFrameElement.d.ts.map +1 -0
  358. package/dist/types/node/elements/HTMLLabelElement.d.ts +5 -0
  359. package/dist/types/node/elements/HTMLLabelElement.d.ts.map +1 -0
  360. package/dist/types/node/elements/HTMLLegendElement.d.ts +5 -0
  361. package/dist/types/node/elements/HTMLLegendElement.d.ts.map +1 -0
  362. package/dist/types/node/elements/HTMLMapElement.d.ts +5 -0
  363. package/dist/types/node/elements/HTMLMapElement.d.ts.map +1 -0
  364. package/dist/types/node/elements/HTMLMeterElement.d.ts +5 -0
  365. package/dist/types/node/elements/HTMLMeterElement.d.ts.map +1 -0
  366. package/dist/types/node/elements/HTMLModElement.d.ts +5 -0
  367. package/dist/types/node/elements/HTMLModElement.d.ts.map +1 -0
  368. package/dist/types/node/elements/HTMLObjectElement.d.ts +5 -0
  369. package/dist/types/node/elements/HTMLObjectElement.d.ts.map +1 -0
  370. package/dist/types/node/elements/HTMLOptGroupElement.d.ts +5 -0
  371. package/dist/types/node/elements/HTMLOptGroupElement.d.ts.map +1 -0
  372. package/dist/types/node/elements/HTMLOptionElement.d.ts +5 -0
  373. package/dist/types/node/elements/HTMLOptionElement.d.ts.map +1 -0
  374. package/dist/types/node/elements/HTMLOutputElement.d.ts +5 -0
  375. package/dist/types/node/elements/HTMLOutputElement.d.ts.map +1 -0
  376. package/dist/types/node/elements/HTMLParamElement.d.ts +5 -0
  377. package/dist/types/node/elements/HTMLParamElement.d.ts.map +1 -0
  378. package/dist/types/node/elements/HTMLPictureElement.d.ts +5 -0
  379. package/dist/types/node/elements/HTMLPictureElement.d.ts.map +1 -0
  380. package/dist/types/node/elements/HTMLPreElement.d.ts +5 -0
  381. package/dist/types/node/elements/HTMLPreElement.d.ts.map +1 -0
  382. package/dist/types/node/elements/HTMLProgressElement.d.ts +5 -0
  383. package/dist/types/node/elements/HTMLProgressElement.d.ts.map +1 -0
  384. package/dist/types/node/elements/HTMLQuoteElement.d.ts +5 -0
  385. package/dist/types/node/elements/HTMLQuoteElement.d.ts.map +1 -0
  386. package/dist/types/node/elements/HTMLSelectElement.d.ts +5 -0
  387. package/dist/types/node/elements/HTMLSelectElement.d.ts.map +1 -0
  388. package/dist/types/node/elements/HTMLSlotElement.d.ts +5 -0
  389. package/dist/types/node/elements/HTMLSlotElement.d.ts.map +1 -0
  390. package/dist/types/node/elements/HTMLSourceElement.d.ts +5 -0
  391. package/dist/types/node/elements/HTMLSourceElement.d.ts.map +1 -0
  392. package/dist/types/node/elements/HTMLTableElement.d.ts +3 -4
  393. package/dist/types/node/elements/HTMLTableElement.d.ts.map +1 -1
  394. package/dist/types/node/elements/HTMLTbodyElement.d.ts +2 -3
  395. package/dist/types/node/elements/HTMLTbodyElement.d.ts.map +1 -1
  396. package/dist/types/node/elements/HTMLTemplateElement.d.ts +0 -1
  397. package/dist/types/node/elements/HTMLTemplateElement.d.ts.map +1 -1
  398. package/dist/types/node/elements/HTMLTextAreaElement.d.ts +5 -0
  399. package/dist/types/node/elements/HTMLTextAreaElement.d.ts.map +1 -0
  400. package/dist/types/node/elements/HTMLTfootElement.d.ts +2 -3
  401. package/dist/types/node/elements/HTMLTfootElement.d.ts.map +1 -1
  402. package/dist/types/node/elements/HTMLTheadElement.d.ts +2 -3
  403. package/dist/types/node/elements/HTMLTheadElement.d.ts.map +1 -1
  404. package/dist/types/node/elements/HTMLTimeElement.d.ts +5 -0
  405. package/dist/types/node/elements/HTMLTimeElement.d.ts.map +1 -0
  406. package/dist/types/node/elements/HTMLTrElement.d.ts +2 -3
  407. package/dist/types/node/elements/HTMLTrElement.d.ts.map +1 -1
  408. package/dist/types/node/elements/HTMLTrackElement.d.ts +5 -0
  409. package/dist/types/node/elements/HTMLTrackElement.d.ts.map +1 -0
  410. package/dist/types/node/elements/HTMLVideoElement.d.ts +8 -0
  411. package/dist/types/node/elements/HTMLVideoElement.d.ts.map +1 -0
  412. package/dist/types/node/elements/index.d.ts +106 -52
  413. package/dist/types/node/elements/index.d.ts.map +1 -1
  414. package/dist/types/node/index.d.ts +4 -7
  415. package/dist/types/node/index.d.ts.map +1 -1
  416. package/dist/types/utils/CSSSelector.d.ts +0 -1
  417. package/dist/types/utils/CSSSelector.d.ts.map +1 -1
  418. package/dist/types/window/CustomElementRegistryImp.d.ts +18 -0
  419. package/dist/types/window/CustomElementRegistryImp.d.ts.map +1 -0
  420. package/dist/types/window/Window.d.ts +0 -619
  421. package/dist/types/window/Window.d.ts.map +1 -1
  422. package/dist/types/window/WindowBase.d.ts +261 -284
  423. package/dist/types/window/WindowBase.d.ts.map +1 -1
  424. package/dist/types/window/index.d.ts +0 -1
  425. package/dist/types/window/index.d.ts.map +1 -1
  426. package/dist/umd-bundle/dooboostore-dom-parser.umd.js +3765 -3558
  427. package/dist/umd-bundle/dooboostore-dom-parser.umd.js.map +4 -4
  428. package/package.json +1 -1
  429. package/src/DomParser.ts +458 -429
  430. package/src/factory/ElementFactory.ts +79 -53
  431. package/src/index.ts +11 -10
  432. package/src/node/CharacterData.ts +0 -2
  433. package/src/node/ChildNode.ts +42 -42
  434. package/src/node/ChildNodeBase.ts +60 -39
  435. package/src/node/Comment.ts +60 -60
  436. package/src/node/Document.ts +129 -882
  437. package/src/node/DocumentBase.ts +371 -462
  438. package/src/node/DocumentFragment.ts +38 -44
  439. package/src/node/DocumentFragmentBase.ts +4 -9
  440. package/src/node/Node.ts +231 -224
  441. package/src/node/NodeBase.ts +469 -443
  442. package/src/node/NodeFilter.ts +50 -0
  443. package/src/node/NodeIterator.ts +117 -172
  444. package/src/node/ParentNode.ts +93 -93
  445. package/src/node/ParentNodeBase.ts +7 -10
  446. package/src/node/ShadowRootBase.ts +87 -0
  447. package/src/node/Text.ts +30 -30
  448. package/src/node/TextBase.ts +92 -94
  449. package/src/node/TreeWalker.ts +280 -0
  450. package/src/node/collection/{HTMLCollection.ts → HTMLCollectionImp.ts} +3 -2
  451. package/src/node/collection/HTMLCollectionOfImp.ts +12 -0
  452. package/src/node/collection/NodeList.ts +1 -1
  453. package/src/node/collection/{NodeListOf.ts → NodeListOfImp.ts} +3 -3
  454. package/src/node/collection/StylePropertyMapImpl.ts +60 -0
  455. package/src/node/collection/index.ts +3 -3
  456. package/src/node/elements/Element.ts +212 -771
  457. package/src/node/elements/ElementBase.ts +840 -1195
  458. package/src/node/elements/HTMLAreaElement.ts +0 -1
  459. package/src/node/elements/HTMLAudioElement.ts +10 -0
  460. package/src/node/elements/HTMLButtonElement.ts +63 -63
  461. package/src/node/elements/HTMLDListElement.ts +2 -0
  462. package/src/node/elements/HTMLDataElement.ts +6 -0
  463. package/src/node/elements/HTMLDataListElement.ts +2 -0
  464. package/src/node/elements/HTMLDetailsElement.ts +2 -0
  465. package/src/node/elements/HTMLDialogElement.ts +2 -0
  466. package/src/node/elements/HTMLElement.ts +2 -102
  467. package/src/node/elements/HTMLElementBase.ts +453 -156
  468. package/src/node/elements/HTMLEmbedElement.ts +0 -1
  469. package/src/node/elements/HTMLFieldSetElement.ts +2 -0
  470. package/src/node/elements/HTMLHRElement.ts +2 -0
  471. package/src/node/elements/HTMLIFrameElement.ts +2 -0
  472. package/src/node/elements/HTMLLabelElement.ts +2 -0
  473. package/src/node/elements/HTMLLegendElement.ts +2 -0
  474. package/src/node/elements/HTMLMapElement.ts +2 -0
  475. package/src/node/elements/HTMLMeterElement.ts +2 -0
  476. package/src/node/elements/HTMLModElement.ts +2 -0
  477. package/src/node/elements/HTMLObjectElement.ts +2 -0
  478. package/src/node/elements/HTMLOptGroupElement.ts +2 -0
  479. package/src/node/elements/HTMLOptionElement.ts +2 -0
  480. package/src/node/elements/HTMLOutputElement.ts +2 -0
  481. package/src/node/elements/HTMLParamElement.ts +2 -0
  482. package/src/node/elements/HTMLPictureElement.ts +2 -0
  483. package/src/node/elements/HTMLPreElement.ts +2 -0
  484. package/src/node/elements/HTMLProgressElement.ts +2 -0
  485. package/src/node/elements/HTMLQuoteElement.ts +2 -0
  486. package/src/node/elements/HTMLSelectElement.ts +2 -0
  487. package/src/node/elements/HTMLSlotElement.ts +2 -0
  488. package/src/node/elements/HTMLSourceElement.ts +2 -0
  489. package/src/node/elements/HTMLTableElement.ts +3 -7
  490. package/src/node/elements/HTMLTbodyElement.ts +2 -3
  491. package/src/node/elements/HTMLTdElement.ts +1 -1
  492. package/src/node/elements/HTMLTemplateElement.ts +3 -6
  493. package/src/node/elements/HTMLTextAreaElement.ts +2 -0
  494. package/src/node/elements/HTMLTfootElement.ts +2 -3
  495. package/src/node/elements/HTMLTheadElement.ts +2 -3
  496. package/src/node/elements/HTMLTimeElement.ts +2 -0
  497. package/src/node/elements/HTMLTrElement.ts +3 -4
  498. package/src/node/elements/HTMLTrackElement.ts +2 -0
  499. package/src/node/elements/HTMLVideoElement.ts +10 -0
  500. package/src/node/elements/index.ts +226 -149
  501. package/src/node/index.ts +8 -8
  502. package/src/utils/CSSSelector.ts +0 -1
  503. package/src/window/CustomElementRegistryImp.ts +120 -0
  504. package/src/window/Window.ts +716 -715
  505. package/src/window/WindowBase.ts +842 -998
  506. package/src/window/index.ts +0 -1
  507. package/tsconfig.json +1 -0
  508. package/dist/cjs/node/collection/HTMLCollection.js.map +0 -7
  509. package/dist/cjs/node/collection/HTMLCollectionOf.js.map +0 -7
  510. package/dist/cjs/node/collection/NodeListOf.js.map +0 -7
  511. package/dist/esm/node/collection/HTMLCollection.js.map +0 -7
  512. package/dist/esm/node/collection/HTMLCollectionOf.js +0 -17
  513. package/dist/esm/node/collection/HTMLCollectionOf.js.map +0 -7
  514. package/dist/esm/node/collection/NodeListOf.js.map +0 -7
  515. package/dist/types/node/collection/HTMLCollection.d.ts.map +0 -1
  516. package/dist/types/node/collection/HTMLCollectionOf.d.ts +0 -14
  517. package/dist/types/node/collection/HTMLCollectionOf.d.ts.map +0 -1
  518. package/dist/types/node/collection/NodeListOf.d.ts.map +0 -1
  519. 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) {
@@ -88,13 +97,16 @@ class ElementBase extends ParentNodeBase {
88
97
  */
89
98
  generateChildElementHTML(element) {
90
99
  const tagName = element.tagName.toLowerCase();
91
- const attrs = Array.from(element._attributes?.entries() || []).map(([name, value]) => value === "" ? ` ${name}` : ` ${name}="${value.replace(/"/g, """)}"`).join("");
100
+ const attrs = Array.from(element._attributes?.entries() || []).map(([name, value]) => value === "" ? ` ${name}` : ` ${name}="${String(value).replace(/"/g, """)}"`).join("");
92
101
  const selfClosingTags = ["img", "input", "br", "hr", "meta", "link", "area", "base", "col", "embed", "source", "track", "wbr"];
93
102
  const isSelfClosing = selfClosingTags.includes(tagName);
94
103
  if (isSelfClosing) {
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,19 +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
- throw new Error("Element.getBoundingClientRect() is not implemented yet");
428
+ return { bottom: 0, height: 0, left: 0, right: 0, top: 0, width: 0, x: 0, y: 0, toJSON: () => ({}) };
524
429
  }
525
430
  getClientRects() {
526
- throw new Error("Element.getClientRects() is not implemented yet");
431
+ return { length: 0, item: () => null, [Symbol.iterator]: function* () {
432
+ } };
527
433
  }
528
434
  getElementsByClassName(classNames) {
529
435
  const result = [];
@@ -533,55 +439,37 @@ class ElementBase extends ParentNodeBase {
533
439
  return classes.every((cls) => elementClasses.includes(cls));
534
440
  };
535
441
  const traverse = (node) => {
536
- if (node.nodeType === ELEMENT_NODE) {
537
- const element = node;
538
- if (hasAllClasses(element, classNameList)) {
539
- result.push(element);
540
- }
541
- }
542
- for (let i = 0; i < node.childNodes.length; i++) {
543
- traverse(node.childNodes[i]);
544
- }
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]);
545
444
  };
546
- for (let i = 0; i < this.childNodes.length; i++) {
547
- traverse(this.childNodes[i]);
548
- }
549
- return new HTMLCollection(result);
445
+ for (let i = 0; i < this.childNodes.length; i++) traverse(this.childNodes[i]);
446
+ return new HTMLCollectionOfImp(result);
550
447
  }
551
448
  getElementsByTagName(qualifiedName) {
552
449
  const result = [];
553
450
  const tagName = qualifiedName.toLowerCase();
554
451
  const isWildcard = tagName === "*";
555
452
  const traverse = (node) => {
556
- if (node.nodeType === ELEMENT_NODE) {
557
- const element = node;
558
- if (isWildcard || element.localName === tagName) {
559
- result.push(element);
560
- }
561
- }
562
- for (let i = 0; i < node.childNodes.length; i++) {
563
- traverse(node.childNodes[i]);
564
- }
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]);
565
455
  };
566
- for (let i = 0; i < this.childNodes.length; i++) {
567
- traverse(this.childNodes[i]);
568
- }
569
- return new HTMLCollection(result);
456
+ for (let i = 0; i < this.childNodes.length; i++) traverse(this.childNodes[i]);
457
+ return new HTMLCollectionImp(result);
570
458
  }
571
- getElementsByTagNameNS(namespace, localName) {
459
+ getElementsByTagNameNS(_ns, localName) {
572
460
  return this.getElementsByTagName(localName);
573
461
  }
574
- getHTML(options) {
575
- throw new Error("Element.getHTML() is not implemented yet");
462
+ getHTML(_options) {
463
+ return this.outerHTML;
576
464
  }
577
- hasAttributeNS(namespace, localName) {
465
+ hasAttributeNS(_ns, localName) {
578
466
  return this.hasAttribute(localName);
579
467
  }
580
468
  hasAttributes() {
581
469
  return this._attributes.size > 0;
582
470
  }
583
- hasPointerCapture(pointerId) {
584
- throw new Error("Element.hasPointerCapture() is not implemented yet");
471
+ hasPointerCapture(_id) {
472
+ return false;
585
473
  }
586
474
  insertAdjacentElement(where, element) {
587
475
  const position = where.toLowerCase();
@@ -593,22 +481,16 @@ class ElementBase extends ParentNodeBase {
593
481
  }
594
482
  return null;
595
483
  case "afterbegin":
596
- if (this.firstChild) {
597
- this.insertBefore(element, this.firstChild);
598
- } else {
599
- this.appendChild(element);
600
- }
484
+ if (this.firstChild) this.insertBefore(element, this.firstChild);
485
+ else this.appendChild(element);
601
486
  return element;
602
487
  case "beforeend":
603
488
  this.appendChild(element);
604
489
  return element;
605
490
  case "afterend":
606
491
  if (this.parentNode) {
607
- if (this.nextSibling) {
608
- this.parentNode.insertBefore(element, this.nextSibling);
609
- } else {
610
- this.parentNode.appendChild(element);
611
- }
492
+ if (this.nextSibling) this.parentNode.insertBefore(element, this.nextSibling);
493
+ else this.parentNode.appendChild(element);
612
494
  return element;
613
495
  }
614
496
  return null;
@@ -621,32 +503,22 @@ class ElementBase extends ParentNodeBase {
621
503
  const tempDiv = this._ownerDocument.createElement("div");
622
504
  tempDiv.innerHTML = html;
623
505
  const fragment = this._ownerDocument.createDocumentFragment();
624
- while (tempDiv.firstChild) {
625
- fragment.appendChild(tempDiv.firstChild);
626
- }
506
+ while (tempDiv.firstChild) fragment.appendChild(tempDiv.firstChild);
627
507
  switch (pos) {
628
508
  case "beforebegin":
629
- if (this.parentNode) {
630
- this.parentNode.insertBefore(fragment, this);
631
- }
509
+ if (this.parentNode) this.parentNode.insertBefore(fragment, this);
632
510
  break;
633
511
  case "afterbegin":
634
- if (this.firstChild) {
635
- this.insertBefore(fragment, this.firstChild);
636
- } else {
637
- this.appendChild(fragment);
638
- }
512
+ if (this.firstChild) this.insertBefore(fragment, this.firstChild);
513
+ else this.appendChild(fragment);
639
514
  break;
640
515
  case "beforeend":
641
516
  this.appendChild(fragment);
642
517
  break;
643
518
  case "afterend":
644
519
  if (this.parentNode) {
645
- if (this.nextSibling) {
646
- this.parentNode.insertBefore(fragment, this.nextSibling);
647
- } else {
648
- this.parentNode.appendChild(fragment);
649
- }
520
+ if (this.nextSibling) this.parentNode.insertBefore(fragment, this.nextSibling);
521
+ else this.parentNode.appendChild(fragment);
650
522
  }
651
523
  break;
652
524
  default:
@@ -658,36 +530,28 @@ class ElementBase extends ParentNodeBase {
658
530
  const textNode = this._ownerDocument.createTextNode(data);
659
531
  switch (position) {
660
532
  case "beforebegin":
661
- if (this.parentNode) {
662
- this.parentNode.insertBefore(textNode, this);
663
- }
533
+ if (this.parentNode) this.parentNode.insertBefore(textNode, this);
664
534
  break;
665
535
  case "afterbegin":
666
- if (this.firstChild) {
667
- this.insertBefore(textNode, this.firstChild);
668
- } else {
669
- this.appendChild(textNode);
670
- }
536
+ if (this.firstChild) this.insertBefore(textNode, this.firstChild);
537
+ else this.appendChild(textNode);
671
538
  break;
672
539
  case "beforeend":
673
540
  this.appendChild(textNode);
674
541
  break;
675
542
  case "afterend":
676
543
  if (this.parentNode) {
677
- if (this.nextSibling) {
678
- this.parentNode.insertBefore(textNode, this.nextSibling);
679
- } else {
680
- this.parentNode.appendChild(textNode);
681
- }
544
+ if (this.nextSibling) this.parentNode.insertBefore(textNode, this.nextSibling);
545
+ else this.parentNode.appendChild(textNode);
682
546
  }
683
547
  break;
684
548
  default:
685
549
  throw new DOMException(`Invalid position: ${where}`, "SyntaxError");
686
550
  }
687
551
  }
688
- releasePointerCapture(pointerId) {
552
+ releasePointerCapture(_id) {
689
553
  }
690
- removeAttributeNS(namespace, localName) {
554
+ removeAttributeNS(_ns, localName) {
691
555
  this.removeAttribute(localName);
692
556
  }
693
557
  removeAttributeNode(attr) {
@@ -698,21 +562,21 @@ class ElementBase extends ParentNodeBase {
698
562
  }
699
563
  throw new DOMException("The attribute node is not an attribute of this element", "NotFoundError");
700
564
  }
701
- requestFullscreen(options) {
702
- throw new Error("Element.requestFullscreen() is not implemented yet");
565
+ requestFullscreen(_opt) {
566
+ return Promise.resolve();
703
567
  }
704
- requestPointerLock(options) {
705
- throw new Error("Element.requestPointerLock() is not implemented yet");
568
+ requestPointerLock(_opt) {
569
+ return Promise.resolve();
706
570
  }
707
- scroll(optionsOrX, y) {
571
+ scroll(_x, _y) {
708
572
  }
709
- scrollBy(optionsOrX, y) {
573
+ scrollBy(_x, _y) {
710
574
  }
711
- scrollIntoView(arg) {
575
+ scrollIntoView(_arg) {
712
576
  }
713
- scrollTo(optionsOrX, y) {
577
+ scrollTo(_x, _y) {
714
578
  }
715
- setAttributeNS(namespace, qualifiedName, value) {
579
+ setAttributeNS(_ns, qualifiedName, value) {
716
580
  this.setAttribute(qualifiedName, value);
717
581
  }
718
582
  setAttributeNode(attr) {
@@ -724,8 +588,9 @@ class ElementBase extends ParentNodeBase {
724
588
  return this.setAttributeNode(attr);
725
589
  }
726
590
  setHTMLUnsafe(html) {
591
+ this.innerHTML = html;
727
592
  }
728
- setPointerCapture(pointerId) {
593
+ setPointerCapture(_id) {
729
594
  }
730
595
  toggleAttribute(qualifiedName, force) {
731
596
  const hasAttr = this.hasAttribute(qualifiedName);
@@ -739,31 +604,31 @@ class ElementBase extends ParentNodeBase {
739
604
  return hasAttr;
740
605
  }
741
606
  webkitMatchesSelector(selectors) {
742
- return false;
607
+ return this.matches(selectors);
743
608
  }
744
- // EventTarget methods - Not implemented yet
745
609
  addEventListener(type, listener, options) {
746
610
  }
747
611
  removeEventListener(type, listener, options) {
748
612
  }
749
- dispatchEvent(event) {
613
+ dispatchEvent(_event) {
750
614
  return true;
751
615
  }
752
616
  cloneNode(deep) {
617
+ const { ElementFactory } = _ElementBase.dependencies;
753
618
  const clone = ElementFactory.createElement(this.tagName, this._ownerDocument);
754
- for (const [name, value] of this._attributes) {
755
- clone.setAttribute(name, value);
756
- }
619
+ for (const [name, value] of this._attributes) clone.setAttribute(name, value);
757
620
  if (deep) {
758
- for (const child of this._childNodesInternal) {
759
- if (child && "cloneNode" in child) {
760
- clone.appendChild(child.cloneNode(true));
761
- }
762
- }
621
+ for (const child of this._childNodesInternal) if (child && "cloneNode" in child) clone.appendChild(child.cloneNode(true));
763
622
  }
764
623
  return clone;
765
624
  }
766
- }
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;
767
632
  class DOMTokenListImpl {
768
633
  constructor(element) {
769
634
  this.element = element;
@@ -779,16 +644,12 @@ class DOMTokenListImpl {
779
644
  }
780
645
  add(...tokens) {
781
646
  const classes = new Set(this.element.className.split(/\s+/).filter((c) => c.length > 0));
782
- for (const token of tokens) {
783
- classes.add(token);
784
- }
647
+ tokens.forEach((t) => classes.add(t));
785
648
  this.element.className = Array.from(classes).join(" ");
786
649
  }
787
650
  remove(...tokens) {
788
651
  const classes = new Set(this.element.className.split(/\s+/).filter((c) => c.length > 0));
789
- for (const token of tokens) {
790
- classes.delete(token);
791
- }
652
+ tokens.forEach((t) => classes.delete(t));
792
653
  this.element.className = Array.from(classes).join(" ");
793
654
  }
794
655
  contains(token) {
@@ -842,16 +703,12 @@ class NamedNodeMapImpl {
842
703
  const value = this.attributes.get(qualifiedName.toLowerCase());
843
704
  return value !== void 0 ? new AttrImpl(qualifiedName, value) : null;
844
705
  }
845
- getNamedItemNS(namespace, localName) {
706
+ getNamedItemNS(_ns, localName) {
846
707
  return this.getNamedItem(localName);
847
708
  }
848
709
  item(index) {
849
710
  const keys = Array.from(this.attributes.keys());
850
- if (index >= 0 && index < keys.length) {
851
- const key = keys[index];
852
- const value = this.attributes.get(key);
853
- return new AttrImpl(key, value);
854
- }
711
+ if (index >= 0 && index < keys.length) return new AttrImpl(keys[index], this.attributes.get(keys[index]));
855
712
  return null;
856
713
  }
857
714
  removeNamedItem(qualifiedName) {
@@ -862,7 +719,7 @@ class NamedNodeMapImpl {
862
719
  }
863
720
  throw new DOMException("The attribute is not found", "NotFoundError");
864
721
  }
865
- removeNamedItemNS(namespace, localName) {
722
+ removeNamedItemNS(_ns, localName) {
866
723
  return this.removeNamedItem(localName);
867
724
  }
868
725
  setNamedItem(attr) {
@@ -873,42 +730,27 @@ class NamedNodeMapImpl {
873
730
  setNamedItemNS(attr) {
874
731
  return this.setNamedItem(attr);
875
732
  }
876
- // Iterator implementation
877
733
  *[Symbol.iterator]() {
878
- const keys = Array.from(this.attributes.keys());
879
- for (const key of keys) {
880
- const value = this.attributes.get(key);
881
- yield new AttrImpl(key, value);
882
- }
734
+ for (const [key, value] of this.attributes) yield new AttrImpl(key, value);
883
735
  }
884
- // Additional iterator methods for compatibility
885
736
  keys() {
886
737
  return this.attributes.keys();
887
738
  }
888
739
  values() {
889
740
  const self = this;
890
741
  return function* () {
891
- for (const [key, value] of self.attributes) {
892
- yield new AttrImpl(key, value);
893
- }
742
+ for (const [key, value] of self.attributes) yield new AttrImpl(key, value);
894
743
  }();
895
744
  }
896
745
  entries() {
897
746
  const self = this;
898
747
  return function* () {
899
- for (const [key, value] of self.attributes) {
900
- yield [key, new AttrImpl(key, value)];
901
- }
748
+ for (const [key, value] of self.attributes) yield [key, new AttrImpl(key, value)];
902
749
  }();
903
750
  }
904
- // forEach method for compatibility
905
751
  forEach(callback, thisArg) {
906
752
  const keys = Array.from(this.attributes.keys());
907
- keys.forEach((key, index) => {
908
- const value = this.attributes.get(key);
909
- const attr = new AttrImpl(key, value);
910
- callback.call(thisArg, attr, index, this);
911
- });
753
+ keys.forEach((key, index) => callback.call(thisArg, new AttrImpl(key, this.attributes.get(key)), index, this));
912
754
  }
913
755
  }
914
756
  export {