@dooboostore/dom-parser 1.0.2 → 1.0.4

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 (727) hide show
  1. package/README.MD +369 -6
  2. package/dist/cjs/DomParser.js +11 -1
  3. package/dist/cjs/DomParser.js.map +2 -2
  4. package/dist/cjs/bundle-entry.js +36 -0
  5. package/dist/cjs/bundle-entry.js.map +7 -0
  6. package/dist/cjs/factory/ElementFactory.js +31 -7
  7. package/dist/cjs/factory/ElementFactory.js.map +2 -2
  8. package/dist/cjs/index.js +26 -0
  9. package/dist/cjs/index.js.map +2 -2
  10. package/dist/cjs/node/CharacterData.js.map +1 -1
  11. package/dist/cjs/node/ChildNode.js +0 -15
  12. package/dist/cjs/node/ChildNode.js.map +3 -3
  13. package/dist/cjs/node/ChildNodeBase.js +20 -0
  14. package/dist/cjs/node/ChildNodeBase.js.map +2 -2
  15. package/dist/cjs/node/Comment.js.map +2 -2
  16. package/dist/cjs/node/Document.js +0 -27
  17. package/dist/cjs/node/Document.js.map +4 -4
  18. package/dist/cjs/node/DocumentBase.js +168 -205
  19. package/dist/cjs/node/DocumentBase.js.map +2 -2
  20. package/dist/cjs/node/DocumentFragment.js +0 -15
  21. package/dist/cjs/node/DocumentFragment.js.map +3 -3
  22. package/dist/cjs/node/DocumentFragmentBase.js.map +2 -2
  23. package/dist/cjs/node/Node.js.map +1 -1
  24. package/dist/cjs/node/NodeBase.js +44 -2
  25. package/dist/cjs/node/NodeBase.js.map +2 -2
  26. package/dist/cjs/node/NodeFilter.js +43 -0
  27. package/dist/cjs/node/NodeFilter.js.map +7 -0
  28. package/dist/cjs/node/NodeIterator.js +1 -28
  29. package/dist/cjs/node/NodeIterator.js.map +2 -2
  30. package/dist/cjs/node/ParentNode.js +0 -15
  31. package/dist/cjs/node/ParentNode.js.map +3 -3
  32. package/dist/cjs/node/ParentNodeBase.js +10 -10
  33. package/dist/cjs/node/ParentNodeBase.js.map +3 -3
  34. package/dist/cjs/node/ShadowRootBase.js +79 -0
  35. package/dist/cjs/node/ShadowRootBase.js.map +7 -0
  36. package/dist/cjs/node/Text.js +0 -15
  37. package/dist/cjs/node/Text.js.map +3 -3
  38. package/dist/cjs/node/TextBase.js +0 -3
  39. package/dist/cjs/node/TextBase.js.map +2 -2
  40. package/dist/cjs/node/TreeWalker.js +272 -0
  41. package/dist/cjs/node/TreeWalker.js.map +7 -0
  42. package/dist/cjs/node/collection/{HTMLCollection.js → HTMLCollectionImp.js} +7 -6
  43. package/dist/cjs/node/collection/HTMLCollectionImp.js.map +7 -0
  44. package/dist/cjs/node/collection/HTMLCollectionOfImp.js +26 -0
  45. package/dist/cjs/node/collection/HTMLCollectionOfImp.js.map +7 -0
  46. package/dist/cjs/node/collection/NodeList.js.map +1 -1
  47. package/dist/cjs/node/collection/{NodeListOf.js → NodeListOfImp.js} +6 -6
  48. package/dist/cjs/node/collection/NodeListOfImp.js.map +7 -0
  49. package/dist/cjs/node/collection/StylePropertyMapImpl.js +65 -0
  50. package/dist/cjs/node/collection/StylePropertyMapImpl.js.map +7 -0
  51. package/dist/cjs/node/collection/index.js +6 -6
  52. package/dist/cjs/node/collection/index.js.map +2 -2
  53. package/dist/cjs/node/elements/Element.js +0 -15
  54. package/dist/cjs/node/elements/Element.js.map +3 -3
  55. package/dist/cjs/node/elements/ElementBase.js +163 -331
  56. package/dist/cjs/node/elements/ElementBase.js.map +3 -3
  57. package/dist/cjs/node/elements/HTMLAnchorElement.js +2 -2
  58. package/dist/cjs/node/elements/HTMLAnchorElement.js.map +2 -2
  59. package/dist/cjs/node/elements/HTMLAreaElement.js +2 -2
  60. package/dist/cjs/node/elements/HTMLAreaElement.js.map +2 -2
  61. package/dist/cjs/node/elements/{HTMLGenericElement.js → HTMLAudioElement.js} +8 -11
  62. package/dist/cjs/node/elements/HTMLAudioElement.js.map +7 -0
  63. package/dist/cjs/node/elements/HTMLBaseElement.js +2 -2
  64. package/dist/cjs/node/elements/HTMLBaseElement.js.map +2 -2
  65. package/dist/cjs/node/elements/HTMLBodyElement.js +2 -2
  66. package/dist/cjs/node/elements/HTMLBodyElement.js.map +2 -2
  67. package/dist/cjs/node/elements/HTMLButtonElement.js +3 -3
  68. package/dist/cjs/node/elements/HTMLButtonElement.js.map +2 -2
  69. package/dist/cjs/node/elements/HTMLCanvasElement.js +2 -2
  70. package/dist/cjs/node/elements/HTMLCanvasElement.js.map +2 -2
  71. package/dist/cjs/node/elements/HTMLCaptionElement.js +2 -2
  72. package/dist/cjs/node/elements/HTMLCaptionElement.js.map +2 -2
  73. package/dist/cjs/node/{collection/HTMLCollectionOf.js → elements/HTMLDListElement.js} +9 -16
  74. package/dist/cjs/node/elements/HTMLDListElement.js.map +7 -0
  75. package/dist/cjs/node/elements/HTMLDataElement.js +29 -0
  76. package/dist/cjs/node/elements/HTMLDataElement.js.map +7 -0
  77. package/dist/cjs/node/elements/HTMLDataListElement.js +29 -0
  78. package/dist/cjs/node/elements/HTMLDataListElement.js.map +7 -0
  79. package/dist/cjs/node/elements/HTMLDetailsElement.js +29 -0
  80. package/dist/cjs/node/elements/HTMLDetailsElement.js.map +7 -0
  81. package/dist/cjs/node/elements/HTMLDialogElement.js +29 -0
  82. package/dist/cjs/node/elements/HTMLDialogElement.js.map +7 -0
  83. package/dist/cjs/node/elements/HTMLDivElement.js +2 -2
  84. package/dist/cjs/node/elements/HTMLDivElement.js.map +2 -2
  85. package/dist/cjs/node/elements/HTMLElement.js +13 -0
  86. package/dist/cjs/node/elements/HTMLElement.js.map +2 -2
  87. package/dist/cjs/node/elements/HTMLElementBase.js +44 -44
  88. package/dist/cjs/node/elements/HTMLElementBase.js.map +2 -2
  89. package/dist/cjs/node/elements/HTMLEmbedElement.js +2 -2
  90. package/dist/cjs/node/elements/HTMLEmbedElement.js.map +2 -2
  91. package/dist/cjs/node/elements/HTMLFieldSetElement.js +29 -0
  92. package/dist/cjs/node/elements/HTMLFieldSetElement.js.map +7 -0
  93. package/dist/cjs/node/elements/HTMLFormElement.js +2 -2
  94. package/dist/cjs/node/elements/HTMLFormElement.js.map +2 -2
  95. package/dist/cjs/node/elements/HTMLH1Element.js +2 -2
  96. package/dist/cjs/node/elements/HTMLH1Element.js.map +2 -2
  97. package/dist/cjs/node/elements/HTMLHRElement.js +29 -0
  98. package/dist/cjs/node/elements/HTMLHRElement.js.map +7 -0
  99. package/dist/cjs/node/elements/HTMLHeadElement.js +2 -2
  100. package/dist/cjs/node/elements/HTMLHeadElement.js.map +2 -2
  101. package/dist/cjs/node/elements/HTMLHtmlElement.js +2 -2
  102. package/dist/cjs/node/elements/HTMLHtmlElement.js.map +2 -2
  103. package/dist/cjs/node/elements/HTMLIFrameElement.js +29 -0
  104. package/dist/cjs/node/elements/HTMLIFrameElement.js.map +7 -0
  105. package/dist/cjs/node/elements/HTMLImgElement.js +2 -2
  106. package/dist/cjs/node/elements/HTMLImgElement.js.map +2 -2
  107. package/dist/cjs/node/elements/HTMLInputElement.js +2 -2
  108. package/dist/cjs/node/elements/HTMLInputElement.js.map +2 -2
  109. package/dist/cjs/node/elements/HTMLLIElement.js +2 -2
  110. package/dist/cjs/node/elements/HTMLLIElement.js.map +2 -2
  111. package/dist/cjs/node/elements/HTMLLabelElement.js +29 -0
  112. package/dist/cjs/node/elements/HTMLLabelElement.js.map +7 -0
  113. package/dist/cjs/node/elements/HTMLLegendElement.js +29 -0
  114. package/dist/cjs/node/elements/HTMLLegendElement.js.map +7 -0
  115. package/dist/cjs/node/elements/HTMLLinkElement.js +2 -2
  116. package/dist/cjs/node/elements/HTMLLinkElement.js.map +2 -2
  117. package/dist/cjs/node/elements/HTMLMapElement.js +29 -0
  118. package/dist/cjs/node/elements/HTMLMapElement.js.map +7 -0
  119. package/dist/cjs/node/elements/HTMLMetaElement.js +2 -2
  120. package/dist/cjs/node/elements/HTMLMetaElement.js.map +2 -2
  121. package/dist/cjs/node/elements/HTMLMeterElement.js +29 -0
  122. package/dist/cjs/node/elements/HTMLMeterElement.js.map +7 -0
  123. package/dist/cjs/node/elements/HTMLModElement.js +29 -0
  124. package/dist/cjs/node/elements/HTMLModElement.js.map +7 -0
  125. package/dist/cjs/node/elements/HTMLOListElement.js +2 -2
  126. package/dist/cjs/node/elements/HTMLOListElement.js.map +2 -2
  127. package/dist/cjs/node/elements/HTMLObjectElement.js +29 -0
  128. package/dist/cjs/node/elements/HTMLObjectElement.js.map +7 -0
  129. package/dist/cjs/node/elements/HTMLOptGroupElement.js +29 -0
  130. package/dist/cjs/node/elements/HTMLOptGroupElement.js.map +7 -0
  131. package/dist/cjs/node/elements/HTMLOptionElement.js +29 -0
  132. package/dist/cjs/node/elements/HTMLOptionElement.js.map +7 -0
  133. package/dist/cjs/node/elements/HTMLOutputElement.js +29 -0
  134. package/dist/cjs/node/elements/HTMLOutputElement.js.map +7 -0
  135. package/dist/cjs/node/elements/HTMLPElement.js +2 -2
  136. package/dist/cjs/node/elements/HTMLPElement.js.map +2 -2
  137. package/dist/cjs/node/elements/HTMLParamElement.js +29 -0
  138. package/dist/cjs/node/elements/HTMLParamElement.js.map +7 -0
  139. package/dist/cjs/node/elements/HTMLPictureElement.js +29 -0
  140. package/dist/cjs/node/elements/HTMLPictureElement.js.map +7 -0
  141. package/dist/cjs/node/elements/HTMLPreElement.js +29 -0
  142. package/dist/cjs/node/elements/HTMLPreElement.js.map +7 -0
  143. package/dist/cjs/node/elements/HTMLProgressElement.js +29 -0
  144. package/dist/cjs/node/elements/HTMLProgressElement.js.map +7 -0
  145. package/dist/cjs/node/elements/HTMLQuoteElement.js +29 -0
  146. package/dist/cjs/node/elements/HTMLQuoteElement.js.map +7 -0
  147. package/dist/cjs/node/elements/HTMLScriptElement.js +2 -2
  148. package/dist/cjs/node/elements/HTMLScriptElement.js.map +2 -2
  149. package/dist/cjs/node/elements/HTMLSelectElement.js +29 -0
  150. package/dist/cjs/node/elements/HTMLSelectElement.js.map +7 -0
  151. package/dist/cjs/node/elements/HTMLSlotElement.js +29 -0
  152. package/dist/cjs/node/elements/HTMLSlotElement.js.map +7 -0
  153. package/dist/cjs/node/elements/HTMLSourceElement.js +29 -0
  154. package/dist/cjs/node/elements/HTMLSourceElement.js.map +7 -0
  155. package/dist/cjs/node/elements/HTMLSpanElement.js +2 -2
  156. package/dist/cjs/node/elements/HTMLSpanElement.js.map +2 -2
  157. package/dist/cjs/node/elements/HTMLStyleElement.js +2 -2
  158. package/dist/cjs/node/elements/HTMLStyleElement.js.map +2 -2
  159. package/dist/cjs/node/elements/HTMLTableElement.js +2 -2
  160. package/dist/cjs/node/elements/HTMLTableElement.js.map +2 -2
  161. package/dist/cjs/node/elements/HTMLTbodyElement.js +2 -2
  162. package/dist/cjs/node/elements/HTMLTbodyElement.js.map +2 -2
  163. package/dist/cjs/node/elements/HTMLTdElement.js +2 -2
  164. package/dist/cjs/node/elements/HTMLTdElement.js.map +2 -2
  165. package/dist/cjs/node/elements/HTMLTemplateElement.js +2 -2
  166. package/dist/cjs/node/elements/HTMLTemplateElement.js.map +2 -2
  167. package/dist/cjs/node/elements/HTMLTextAreaElement.js +29 -0
  168. package/dist/cjs/node/elements/HTMLTextAreaElement.js.map +7 -0
  169. package/dist/cjs/node/elements/HTMLTfootElement.js +2 -2
  170. package/dist/cjs/node/elements/HTMLTfootElement.js.map +2 -2
  171. package/dist/cjs/node/elements/HTMLThElement.js +2 -2
  172. package/dist/cjs/node/elements/HTMLThElement.js.map +2 -2
  173. package/dist/cjs/node/elements/HTMLTheadElement.js +2 -2
  174. package/dist/cjs/node/elements/HTMLTheadElement.js.map +2 -2
  175. package/dist/cjs/node/elements/HTMLTimeElement.js +29 -0
  176. package/dist/cjs/node/elements/HTMLTimeElement.js.map +7 -0
  177. package/dist/cjs/node/elements/HTMLTitleElement.js +2 -2
  178. package/dist/cjs/node/elements/HTMLTitleElement.js.map +2 -2
  179. package/dist/cjs/node/elements/HTMLTrElement.js +2 -2
  180. package/dist/cjs/node/elements/HTMLTrElement.js.map +2 -2
  181. package/dist/cjs/node/elements/HTMLTrackElement.js +29 -0
  182. package/dist/cjs/node/elements/HTMLTrackElement.js.map +7 -0
  183. package/dist/cjs/node/elements/HTMLUListElement.js +2 -2
  184. package/dist/cjs/node/elements/HTMLUListElement.js.map +2 -2
  185. package/dist/cjs/node/elements/HTMLVideoElement.js +29 -0
  186. package/dist/cjs/node/elements/HTMLVideoElement.js.map +7 -0
  187. package/dist/cjs/node/elements/MathMLElement.js +2 -2
  188. package/dist/cjs/node/elements/MathMLElement.js.map +2 -2
  189. package/dist/cjs/node/elements/SVGElement.js +2 -2
  190. package/dist/cjs/node/elements/SVGElement.js.map +2 -2
  191. package/dist/cjs/node/elements/index.js +181 -94
  192. package/dist/cjs/node/elements/index.js.map +2 -2
  193. package/dist/cjs/node/index.js +6 -16
  194. package/dist/cjs/node/index.js.map +2 -2
  195. package/dist/cjs/utils/CSSSelector.js.map +2 -2
  196. package/dist/cjs/window/CustomElementRegistryImp.js +113 -0
  197. package/dist/cjs/window/CustomElementRegistryImp.js.map +7 -0
  198. package/dist/cjs/window/Window.js +0 -15
  199. package/dist/cjs/window/Window.js.map +3 -3
  200. package/dist/cjs/window/WindowBase.js +210 -613
  201. package/dist/cjs/window/WindowBase.js.map +2 -2
  202. package/dist/cjs/window/index.js +0 -5
  203. package/dist/cjs/window/index.js.map +2 -2
  204. package/dist/esm/DomParser.js +11 -1
  205. package/dist/esm/DomParser.js.map +2 -2
  206. package/dist/esm/bundle-entry.js +6 -0
  207. package/dist/esm/bundle-entry.js.map +7 -0
  208. package/dist/esm/factory/ElementFactory.js +32 -8
  209. package/dist/esm/factory/ElementFactory.js.map +2 -2
  210. package/dist/esm/index.js +26 -0
  211. package/dist/esm/index.js.map +2 -2
  212. package/dist/esm/node/ChildNodeBase.js +20 -0
  213. package/dist/esm/node/ChildNodeBase.js.map +2 -2
  214. package/dist/esm/node/Comment.js.map +2 -2
  215. package/dist/esm/node/Document.js +0 -8
  216. package/dist/esm/node/Document.js.map +4 -4
  217. package/dist/esm/node/DocumentBase.js +165 -202
  218. package/dist/esm/node/DocumentBase.js.map +2 -2
  219. package/dist/esm/node/DocumentFragmentBase.js.map +2 -2
  220. package/dist/esm/node/Node.js.map +1 -1
  221. package/dist/esm/node/NodeBase.js +45 -22
  222. package/dist/esm/node/NodeBase.js.map +2 -2
  223. package/dist/esm/node/NodeFilter.js +24 -0
  224. package/dist/esm/node/NodeFilter.js.map +7 -0
  225. package/dist/esm/node/NodeIterator.js +1 -28
  226. package/dist/esm/node/NodeIterator.js.map +2 -2
  227. package/dist/esm/node/ParentNodeBase.js +4 -4
  228. package/dist/esm/node/ParentNodeBase.js.map +2 -2
  229. package/dist/esm/node/ShadowRootBase.js +60 -0
  230. package/dist/esm/node/ShadowRootBase.js.map +7 -0
  231. package/dist/esm/node/TextBase.js +0 -3
  232. package/dist/esm/node/TextBase.js.map +2 -2
  233. package/dist/esm/node/TreeWalker.js +253 -0
  234. package/dist/esm/node/TreeWalker.js.map +7 -0
  235. package/dist/esm/node/collection/{HTMLCollection.js → HTMLCollectionImp.js} +4 -3
  236. package/dist/esm/node/collection/HTMLCollectionImp.js.map +7 -0
  237. package/dist/esm/node/collection/HTMLCollectionOfImp.js +7 -0
  238. package/dist/esm/node/collection/HTMLCollectionOfImp.js.map +7 -0
  239. package/dist/esm/node/collection/NodeList.js.map +1 -1
  240. package/dist/esm/node/collection/{NodeListOf.js → NodeListOfImp.js} +3 -3
  241. package/dist/esm/node/collection/NodeListOfImp.js.map +7 -0
  242. package/dist/esm/node/collection/StylePropertyMapImpl.js +46 -0
  243. package/dist/esm/node/collection/StylePropertyMapImpl.js.map +7 -0
  244. package/dist/esm/node/collection/index.js +6 -6
  245. package/dist/esm/node/collection/index.js.map +2 -2
  246. package/dist/esm/node/elements/ElementBase.js +163 -331
  247. package/dist/esm/node/elements/ElementBase.js.map +3 -3
  248. package/dist/esm/node/elements/HTMLAnchorElement.js +2 -2
  249. package/dist/esm/node/elements/HTMLAnchorElement.js.map +2 -2
  250. package/dist/esm/node/elements/HTMLAreaElement.js +2 -2
  251. package/dist/esm/node/elements/HTMLAreaElement.js.map +2 -2
  252. package/dist/esm/node/elements/HTMLAudioElement.js +10 -0
  253. package/dist/esm/node/elements/HTMLAudioElement.js.map +7 -0
  254. package/dist/esm/node/elements/HTMLBaseElement.js +2 -2
  255. package/dist/esm/node/elements/HTMLBaseElement.js.map +2 -2
  256. package/dist/esm/node/elements/HTMLBodyElement.js +2 -2
  257. package/dist/esm/node/elements/HTMLBodyElement.js.map +2 -2
  258. package/dist/esm/node/elements/HTMLButtonElement.js +3 -3
  259. package/dist/esm/node/elements/HTMLButtonElement.js.map +2 -2
  260. package/dist/esm/node/elements/HTMLCanvasElement.js +2 -2
  261. package/dist/esm/node/elements/HTMLCanvasElement.js.map +2 -2
  262. package/dist/esm/node/elements/HTMLCaptionElement.js +2 -2
  263. package/dist/esm/node/elements/HTMLCaptionElement.js.map +2 -2
  264. package/dist/esm/node/elements/HTMLDListElement.js +10 -0
  265. package/dist/esm/node/elements/HTMLDListElement.js.map +7 -0
  266. package/dist/esm/node/elements/HTMLDataElement.js +10 -0
  267. package/dist/esm/node/elements/HTMLDataElement.js.map +7 -0
  268. package/dist/esm/node/elements/HTMLDataListElement.js +10 -0
  269. package/dist/esm/node/elements/HTMLDataListElement.js.map +7 -0
  270. package/dist/esm/node/elements/HTMLDetailsElement.js +10 -0
  271. package/dist/esm/node/elements/HTMLDetailsElement.js.map +7 -0
  272. package/dist/esm/node/elements/HTMLDialogElement.js +10 -0
  273. package/dist/esm/node/elements/HTMLDialogElement.js.map +7 -0
  274. package/dist/esm/node/elements/HTMLDivElement.js +2 -2
  275. package/dist/esm/node/elements/HTMLDivElement.js.map +2 -2
  276. package/dist/esm/node/elements/HTMLElement.js +9 -0
  277. package/dist/esm/node/elements/HTMLElement.js.map +3 -3
  278. package/dist/esm/node/elements/HTMLElementBase.js +43 -43
  279. package/dist/esm/node/elements/HTMLElementBase.js.map +2 -2
  280. package/dist/esm/node/elements/HTMLEmbedElement.js +2 -2
  281. package/dist/esm/node/elements/HTMLEmbedElement.js.map +2 -2
  282. package/dist/esm/node/elements/HTMLFieldSetElement.js +10 -0
  283. package/dist/esm/node/elements/HTMLFieldSetElement.js.map +7 -0
  284. package/dist/esm/node/elements/HTMLFormElement.js +2 -2
  285. package/dist/esm/node/elements/HTMLFormElement.js.map +2 -2
  286. package/dist/esm/node/elements/HTMLH1Element.js +2 -2
  287. package/dist/esm/node/elements/HTMLH1Element.js.map +2 -2
  288. package/dist/esm/node/elements/HTMLHRElement.js +10 -0
  289. package/dist/esm/node/elements/HTMLHRElement.js.map +7 -0
  290. package/dist/esm/node/elements/HTMLHeadElement.js +2 -2
  291. package/dist/esm/node/elements/HTMLHeadElement.js.map +2 -2
  292. package/dist/esm/node/elements/HTMLHtmlElement.js +2 -2
  293. package/dist/esm/node/elements/HTMLHtmlElement.js.map +2 -2
  294. package/dist/esm/node/elements/HTMLIFrameElement.js +10 -0
  295. package/dist/esm/node/elements/HTMLIFrameElement.js.map +7 -0
  296. package/dist/esm/node/elements/HTMLImgElement.js +2 -2
  297. package/dist/esm/node/elements/HTMLImgElement.js.map +2 -2
  298. package/dist/esm/node/elements/HTMLInputElement.js +2 -2
  299. package/dist/esm/node/elements/HTMLInputElement.js.map +2 -2
  300. package/dist/esm/node/elements/HTMLLIElement.js +2 -2
  301. package/dist/esm/node/elements/HTMLLIElement.js.map +2 -2
  302. package/dist/esm/node/elements/HTMLLabelElement.js +10 -0
  303. package/dist/esm/node/elements/HTMLLabelElement.js.map +7 -0
  304. package/dist/esm/node/elements/HTMLLegendElement.js +10 -0
  305. package/dist/esm/node/elements/HTMLLegendElement.js.map +7 -0
  306. package/dist/esm/node/elements/HTMLLinkElement.js +2 -2
  307. package/dist/esm/node/elements/HTMLLinkElement.js.map +2 -2
  308. package/dist/esm/node/elements/HTMLMapElement.js +10 -0
  309. package/dist/esm/node/elements/HTMLMapElement.js.map +7 -0
  310. package/dist/esm/node/elements/HTMLMetaElement.js +2 -2
  311. package/dist/esm/node/elements/HTMLMetaElement.js.map +2 -2
  312. package/dist/esm/node/elements/HTMLMeterElement.js +10 -0
  313. package/dist/esm/node/elements/HTMLMeterElement.js.map +7 -0
  314. package/dist/esm/node/elements/HTMLModElement.js +10 -0
  315. package/dist/esm/node/elements/HTMLModElement.js.map +7 -0
  316. package/dist/esm/node/elements/HTMLOListElement.js +2 -2
  317. package/dist/esm/node/elements/HTMLOListElement.js.map +2 -2
  318. package/dist/esm/node/elements/HTMLObjectElement.js +10 -0
  319. package/dist/esm/node/elements/HTMLObjectElement.js.map +7 -0
  320. package/dist/esm/node/elements/HTMLOptGroupElement.js +10 -0
  321. package/dist/esm/node/elements/HTMLOptGroupElement.js.map +7 -0
  322. package/dist/esm/node/elements/HTMLOptionElement.js +10 -0
  323. package/dist/esm/node/elements/HTMLOptionElement.js.map +7 -0
  324. package/dist/esm/node/elements/HTMLOutputElement.js +10 -0
  325. package/dist/esm/node/elements/HTMLOutputElement.js.map +7 -0
  326. package/dist/esm/node/elements/HTMLPElement.js +2 -2
  327. package/dist/esm/node/elements/HTMLPElement.js.map +2 -2
  328. package/dist/esm/node/elements/HTMLParamElement.js +10 -0
  329. package/dist/esm/node/elements/HTMLParamElement.js.map +7 -0
  330. package/dist/esm/node/elements/HTMLPictureElement.js +10 -0
  331. package/dist/esm/node/elements/HTMLPictureElement.js.map +7 -0
  332. package/dist/esm/node/elements/HTMLPreElement.js +10 -0
  333. package/dist/esm/node/elements/HTMLPreElement.js.map +7 -0
  334. package/dist/esm/node/elements/HTMLProgressElement.js +10 -0
  335. package/dist/esm/node/elements/HTMLProgressElement.js.map +7 -0
  336. package/dist/esm/node/elements/HTMLQuoteElement.js +10 -0
  337. package/dist/esm/node/elements/HTMLQuoteElement.js.map +7 -0
  338. package/dist/esm/node/elements/HTMLScriptElement.js +2 -2
  339. package/dist/esm/node/elements/HTMLScriptElement.js.map +2 -2
  340. package/dist/esm/node/elements/HTMLSelectElement.js +10 -0
  341. package/dist/esm/node/elements/HTMLSelectElement.js.map +7 -0
  342. package/dist/esm/node/elements/HTMLSlotElement.js +10 -0
  343. package/dist/esm/node/elements/HTMLSlotElement.js.map +7 -0
  344. package/dist/esm/node/elements/HTMLSourceElement.js +10 -0
  345. package/dist/esm/node/elements/HTMLSourceElement.js.map +7 -0
  346. package/dist/esm/node/elements/HTMLSpanElement.js +2 -2
  347. package/dist/esm/node/elements/HTMLSpanElement.js.map +2 -2
  348. package/dist/esm/node/elements/HTMLStyleElement.js +2 -2
  349. package/dist/esm/node/elements/HTMLStyleElement.js.map +2 -2
  350. package/dist/esm/node/elements/HTMLTableElement.js +2 -2
  351. package/dist/esm/node/elements/HTMLTableElement.js.map +2 -2
  352. package/dist/esm/node/elements/HTMLTbodyElement.js +2 -2
  353. package/dist/esm/node/elements/HTMLTbodyElement.js.map +2 -2
  354. package/dist/esm/node/elements/HTMLTdElement.js +2 -2
  355. package/dist/esm/node/elements/HTMLTdElement.js.map +2 -2
  356. package/dist/esm/node/elements/HTMLTemplateElement.js +2 -2
  357. package/dist/esm/node/elements/HTMLTemplateElement.js.map +2 -2
  358. package/dist/esm/node/elements/HTMLTextAreaElement.js +10 -0
  359. package/dist/esm/node/elements/HTMLTextAreaElement.js.map +7 -0
  360. package/dist/esm/node/elements/HTMLTfootElement.js +2 -2
  361. package/dist/esm/node/elements/HTMLTfootElement.js.map +2 -2
  362. package/dist/esm/node/elements/HTMLThElement.js +2 -2
  363. package/dist/esm/node/elements/HTMLThElement.js.map +2 -2
  364. package/dist/esm/node/elements/HTMLTheadElement.js +2 -2
  365. package/dist/esm/node/elements/HTMLTheadElement.js.map +2 -2
  366. package/dist/esm/node/elements/HTMLTimeElement.js +10 -0
  367. package/dist/esm/node/elements/HTMLTimeElement.js.map +7 -0
  368. package/dist/esm/node/elements/HTMLTitleElement.js +2 -2
  369. package/dist/esm/node/elements/HTMLTitleElement.js.map +2 -2
  370. package/dist/esm/node/elements/HTMLTrElement.js +2 -2
  371. package/dist/esm/node/elements/HTMLTrElement.js.map +2 -2
  372. package/dist/esm/node/elements/HTMLTrackElement.js +10 -0
  373. package/dist/esm/node/elements/HTMLTrackElement.js.map +7 -0
  374. package/dist/esm/node/elements/HTMLUListElement.js +2 -2
  375. package/dist/esm/node/elements/HTMLUListElement.js.map +2 -2
  376. package/dist/esm/node/elements/HTMLVideoElement.js +10 -0
  377. package/dist/esm/node/elements/HTMLVideoElement.js.map +7 -0
  378. package/dist/esm/node/elements/MathMLElement.js +2 -2
  379. package/dist/esm/node/elements/MathMLElement.js.map +2 -2
  380. package/dist/esm/node/elements/SVGElement.js +2 -2
  381. package/dist/esm/node/elements/SVGElement.js.map +2 -2
  382. package/dist/esm/node/elements/index.js +182 -95
  383. package/dist/esm/node/elements/index.js.map +2 -2
  384. package/dist/esm/node/index.js +7 -17
  385. package/dist/esm/node/index.js.map +2 -2
  386. package/dist/esm/utils/CSSSelector.js.map +2 -2
  387. package/dist/esm/window/CustomElementRegistryImp.js +94 -0
  388. package/dist/esm/window/CustomElementRegistryImp.js.map +7 -0
  389. package/dist/esm/window/WindowBase.js +259 -597
  390. package/dist/esm/window/WindowBase.js.map +2 -2
  391. package/dist/esm/window/index.js +0 -5
  392. package/dist/esm/window/index.js.map +2 -2
  393. package/dist/esm-bundle/dooboostore-dom-parser.esm.js +3477 -3558
  394. package/dist/esm-bundle/dooboostore-dom-parser.esm.js.map +4 -4
  395. package/dist/types/DomParser.d.ts.map +1 -1
  396. package/dist/types/bundle-entry.d.ts +3 -0
  397. package/dist/types/bundle-entry.d.ts.map +1 -0
  398. package/dist/types/factory/ElementFactory.d.ts +1 -1
  399. package/dist/types/factory/ElementFactory.d.ts.map +1 -1
  400. package/dist/types/index.d.ts +14 -1
  401. package/dist/types/index.d.ts.map +1 -1
  402. package/dist/types/node/CharacterData.d.ts +0 -2
  403. package/dist/types/node/CharacterData.d.ts.map +1 -1
  404. package/dist/types/node/ChildNode.d.ts +0 -38
  405. package/dist/types/node/ChildNode.d.ts.map +1 -1
  406. package/dist/types/node/ChildNodeBase.d.ts +6 -4
  407. package/dist/types/node/ChildNodeBase.d.ts.map +1 -1
  408. package/dist/types/node/Comment.d.ts +1 -1
  409. package/dist/types/node/Comment.d.ts.map +1 -1
  410. package/dist/types/node/Document.d.ts +0 -856
  411. package/dist/types/node/Document.d.ts.map +1 -1
  412. package/dist/types/node/DocumentBase.d.ts +68 -110
  413. package/dist/types/node/DocumentBase.d.ts.map +1 -1
  414. package/dist/types/node/DocumentFragment.d.ts +0 -38
  415. package/dist/types/node/DocumentFragment.d.ts.map +1 -1
  416. package/dist/types/node/DocumentFragmentBase.d.ts +1 -8
  417. package/dist/types/node/DocumentFragmentBase.d.ts.map +1 -1
  418. package/dist/types/node/Node.d.ts +0 -213
  419. package/dist/types/node/Node.d.ts.map +1 -1
  420. package/dist/types/node/NodeBase.d.ts +11 -8
  421. package/dist/types/node/NodeBase.d.ts.map +1 -1
  422. package/dist/types/node/NodeFilter.d.ts +25 -0
  423. package/dist/types/node/NodeFilter.d.ts.map +1 -0
  424. package/dist/types/node/NodeIterator.d.ts +0 -34
  425. package/dist/types/node/NodeIterator.d.ts.map +1 -1
  426. package/dist/types/node/ParentNode.d.ts +0 -84
  427. package/dist/types/node/ParentNode.d.ts.map +1 -1
  428. package/dist/types/node/ParentNodeBase.d.ts +0 -5
  429. package/dist/types/node/ParentNodeBase.d.ts.map +1 -1
  430. package/dist/types/node/ShadowRootBase.d.ts +36 -0
  431. package/dist/types/node/ShadowRootBase.d.ts.map +1 -0
  432. package/dist/types/node/Text.d.ts +0 -24
  433. package/dist/types/node/Text.d.ts.map +1 -1
  434. package/dist/types/node/TextBase.d.ts +2 -3
  435. package/dist/types/node/TextBase.d.ts.map +1 -1
  436. package/dist/types/node/TreeWalker.d.ts +48 -0
  437. package/dist/types/node/TreeWalker.d.ts.map +1 -0
  438. package/dist/types/node/collection/{HTMLCollection.d.ts → HTMLCollectionImp.d.ts} +2 -3
  439. package/dist/types/node/collection/HTMLCollectionImp.d.ts.map +1 -0
  440. package/dist/types/node/collection/HTMLCollectionOfImp.d.ts +9 -0
  441. package/dist/types/node/collection/HTMLCollectionOfImp.d.ts.map +1 -0
  442. package/dist/types/node/collection/NodeList.d.ts +0 -1
  443. package/dist/types/node/collection/NodeList.d.ts.map +1 -1
  444. package/dist/types/node/collection/{NodeListOf.d.ts → NodeListOfImp.d.ts} +3 -4
  445. package/dist/types/node/collection/NodeListOfImp.d.ts.map +1 -0
  446. package/dist/types/node/collection/StylePropertyMapImpl.d.ts +20 -0
  447. package/dist/types/node/collection/StylePropertyMapImpl.d.ts.map +1 -0
  448. package/dist/types/node/collection/index.d.ts +3 -3
  449. package/dist/types/node/collection/index.d.ts.map +1 -1
  450. package/dist/types/node/elements/Element.d.ts +0 -687
  451. package/dist/types/node/elements/Element.d.ts.map +1 -1
  452. package/dist/types/node/elements/ElementBase.d.ts +98 -74
  453. package/dist/types/node/elements/ElementBase.d.ts.map +1 -1
  454. package/dist/types/node/elements/HTMLAnchorElement.d.ts +2 -2
  455. package/dist/types/node/elements/HTMLAnchorElement.d.ts.map +1 -1
  456. package/dist/types/node/elements/HTMLAreaElement.d.ts +2 -3
  457. package/dist/types/node/elements/HTMLAreaElement.d.ts.map +1 -1
  458. package/dist/types/node/elements/HTMLAudioElement.d.ts +8 -0
  459. package/dist/types/node/elements/HTMLAudioElement.d.ts.map +1 -0
  460. package/dist/types/node/elements/HTMLBaseElement.d.ts +2 -2
  461. package/dist/types/node/elements/HTMLBaseElement.d.ts.map +1 -1
  462. package/dist/types/node/elements/HTMLBodyElement.d.ts +2 -2
  463. package/dist/types/node/elements/HTMLBodyElement.d.ts.map +1 -1
  464. package/dist/types/node/elements/HTMLButtonElement.d.ts +3 -3
  465. package/dist/types/node/elements/HTMLButtonElement.d.ts.map +1 -1
  466. package/dist/types/node/elements/HTMLCanvasElement.d.ts +2 -2
  467. package/dist/types/node/elements/HTMLCanvasElement.d.ts.map +1 -1
  468. package/dist/types/node/elements/HTMLCaptionElement.d.ts +2 -2
  469. package/dist/types/node/elements/HTMLCaptionElement.d.ts.map +1 -1
  470. package/dist/types/node/elements/HTMLDListElement.d.ts +5 -0
  471. package/dist/types/node/elements/HTMLDListElement.d.ts.map +1 -0
  472. package/dist/types/node/elements/HTMLDataElement.d.ts +5 -0
  473. package/dist/types/node/elements/HTMLDataElement.d.ts.map +1 -0
  474. package/dist/types/node/elements/HTMLDataListElement.d.ts +5 -0
  475. package/dist/types/node/elements/HTMLDataListElement.d.ts.map +1 -0
  476. package/dist/types/node/elements/HTMLDetailsElement.d.ts +5 -0
  477. package/dist/types/node/elements/HTMLDetailsElement.d.ts.map +1 -0
  478. package/dist/types/node/elements/HTMLDialogElement.d.ts +5 -0
  479. package/dist/types/node/elements/HTMLDialogElement.d.ts.map +1 -0
  480. package/dist/types/node/elements/HTMLDivElement.d.ts +2 -2
  481. package/dist/types/node/elements/HTMLDivElement.d.ts.map +1 -1
  482. package/dist/types/node/elements/HTMLElement.d.ts +3 -119
  483. package/dist/types/node/elements/HTMLElement.d.ts.map +1 -1
  484. package/dist/types/node/elements/HTMLElementBase.d.ts +126 -5
  485. package/dist/types/node/elements/HTMLElementBase.d.ts.map +1 -1
  486. package/dist/types/node/elements/HTMLEmbedElement.d.ts +2 -3
  487. package/dist/types/node/elements/HTMLEmbedElement.d.ts.map +1 -1
  488. package/dist/types/node/elements/HTMLFieldSetElement.d.ts +5 -0
  489. package/dist/types/node/elements/HTMLFieldSetElement.d.ts.map +1 -0
  490. package/dist/types/node/elements/HTMLFormElement.d.ts +2 -2
  491. package/dist/types/node/elements/HTMLFormElement.d.ts.map +1 -1
  492. package/dist/types/node/elements/HTMLH1Element.d.ts +2 -2
  493. package/dist/types/node/elements/HTMLH1Element.d.ts.map +1 -1
  494. package/dist/types/node/elements/HTMLHRElement.d.ts +5 -0
  495. package/dist/types/node/elements/HTMLHRElement.d.ts.map +1 -0
  496. package/dist/types/node/elements/HTMLHeadElement.d.ts +2 -2
  497. package/dist/types/node/elements/HTMLHeadElement.d.ts.map +1 -1
  498. package/dist/types/node/elements/HTMLHtmlElement.d.ts +2 -2
  499. package/dist/types/node/elements/HTMLHtmlElement.d.ts.map +1 -1
  500. package/dist/types/node/elements/HTMLIFrameElement.d.ts +5 -0
  501. package/dist/types/node/elements/HTMLIFrameElement.d.ts.map +1 -0
  502. package/dist/types/node/elements/HTMLImgElement.d.ts +2 -2
  503. package/dist/types/node/elements/HTMLImgElement.d.ts.map +1 -1
  504. package/dist/types/node/elements/HTMLInputElement.d.ts +2 -2
  505. package/dist/types/node/elements/HTMLInputElement.d.ts.map +1 -1
  506. package/dist/types/node/elements/HTMLLIElement.d.ts +2 -2
  507. package/dist/types/node/elements/HTMLLIElement.d.ts.map +1 -1
  508. package/dist/types/node/elements/HTMLLabelElement.d.ts +5 -0
  509. package/dist/types/node/elements/HTMLLabelElement.d.ts.map +1 -0
  510. package/dist/types/node/elements/HTMLLegendElement.d.ts +5 -0
  511. package/dist/types/node/elements/HTMLLegendElement.d.ts.map +1 -0
  512. package/dist/types/node/elements/HTMLLinkElement.d.ts +2 -2
  513. package/dist/types/node/elements/HTMLLinkElement.d.ts.map +1 -1
  514. package/dist/types/node/elements/HTMLMapElement.d.ts +5 -0
  515. package/dist/types/node/elements/HTMLMapElement.d.ts.map +1 -0
  516. package/dist/types/node/elements/HTMLMetaElement.d.ts +2 -2
  517. package/dist/types/node/elements/HTMLMetaElement.d.ts.map +1 -1
  518. package/dist/types/node/elements/HTMLMeterElement.d.ts +5 -0
  519. package/dist/types/node/elements/HTMLMeterElement.d.ts.map +1 -0
  520. package/dist/types/node/elements/HTMLModElement.d.ts +5 -0
  521. package/dist/types/node/elements/HTMLModElement.d.ts.map +1 -0
  522. package/dist/types/node/elements/HTMLOListElement.d.ts +2 -2
  523. package/dist/types/node/elements/HTMLOListElement.d.ts.map +1 -1
  524. package/dist/types/node/elements/HTMLObjectElement.d.ts +5 -0
  525. package/dist/types/node/elements/HTMLObjectElement.d.ts.map +1 -0
  526. package/dist/types/node/elements/HTMLOptGroupElement.d.ts +5 -0
  527. package/dist/types/node/elements/HTMLOptGroupElement.d.ts.map +1 -0
  528. package/dist/types/node/elements/HTMLOptionElement.d.ts +5 -0
  529. package/dist/types/node/elements/HTMLOptionElement.d.ts.map +1 -0
  530. package/dist/types/node/elements/HTMLOutputElement.d.ts +5 -0
  531. package/dist/types/node/elements/HTMLOutputElement.d.ts.map +1 -0
  532. package/dist/types/node/elements/HTMLPElement.d.ts +2 -2
  533. package/dist/types/node/elements/HTMLPElement.d.ts.map +1 -1
  534. package/dist/types/node/elements/HTMLParamElement.d.ts +5 -0
  535. package/dist/types/node/elements/HTMLParamElement.d.ts.map +1 -0
  536. package/dist/types/node/elements/HTMLPictureElement.d.ts +5 -0
  537. package/dist/types/node/elements/HTMLPictureElement.d.ts.map +1 -0
  538. package/dist/types/node/elements/HTMLPreElement.d.ts +5 -0
  539. package/dist/types/node/elements/HTMLPreElement.d.ts.map +1 -0
  540. package/dist/types/node/elements/HTMLProgressElement.d.ts +5 -0
  541. package/dist/types/node/elements/HTMLProgressElement.d.ts.map +1 -0
  542. package/dist/types/node/elements/HTMLQuoteElement.d.ts +5 -0
  543. package/dist/types/node/elements/HTMLQuoteElement.d.ts.map +1 -0
  544. package/dist/types/node/elements/HTMLScriptElement.d.ts +2 -2
  545. package/dist/types/node/elements/HTMLScriptElement.d.ts.map +1 -1
  546. package/dist/types/node/elements/HTMLSelectElement.d.ts +5 -0
  547. package/dist/types/node/elements/HTMLSelectElement.d.ts.map +1 -0
  548. package/dist/types/node/elements/HTMLSlotElement.d.ts +5 -0
  549. package/dist/types/node/elements/HTMLSlotElement.d.ts.map +1 -0
  550. package/dist/types/node/elements/HTMLSourceElement.d.ts +5 -0
  551. package/dist/types/node/elements/HTMLSourceElement.d.ts.map +1 -0
  552. package/dist/types/node/elements/HTMLSpanElement.d.ts +2 -2
  553. package/dist/types/node/elements/HTMLSpanElement.d.ts.map +1 -1
  554. package/dist/types/node/elements/HTMLStyleElement.d.ts +2 -2
  555. package/dist/types/node/elements/HTMLStyleElement.d.ts.map +1 -1
  556. package/dist/types/node/elements/HTMLTableElement.d.ts +5 -6
  557. package/dist/types/node/elements/HTMLTableElement.d.ts.map +1 -1
  558. package/dist/types/node/elements/HTMLTbodyElement.d.ts +3 -4
  559. package/dist/types/node/elements/HTMLTbodyElement.d.ts.map +1 -1
  560. package/dist/types/node/elements/HTMLTdElement.d.ts +2 -2
  561. package/dist/types/node/elements/HTMLTdElement.d.ts.map +1 -1
  562. package/dist/types/node/elements/HTMLTemplateElement.d.ts +2 -3
  563. package/dist/types/node/elements/HTMLTemplateElement.d.ts.map +1 -1
  564. package/dist/types/node/elements/HTMLTextAreaElement.d.ts +5 -0
  565. package/dist/types/node/elements/HTMLTextAreaElement.d.ts.map +1 -0
  566. package/dist/types/node/elements/HTMLTfootElement.d.ts +4 -5
  567. package/dist/types/node/elements/HTMLTfootElement.d.ts.map +1 -1
  568. package/dist/types/node/elements/HTMLThElement.d.ts +2 -2
  569. package/dist/types/node/elements/HTMLThElement.d.ts.map +1 -1
  570. package/dist/types/node/elements/HTMLTheadElement.d.ts +4 -5
  571. package/dist/types/node/elements/HTMLTheadElement.d.ts.map +1 -1
  572. package/dist/types/node/elements/HTMLTimeElement.d.ts +5 -0
  573. package/dist/types/node/elements/HTMLTimeElement.d.ts.map +1 -0
  574. package/dist/types/node/elements/HTMLTitleElement.d.ts +2 -2
  575. package/dist/types/node/elements/HTMLTitleElement.d.ts.map +1 -1
  576. package/dist/types/node/elements/HTMLTrElement.d.ts +4 -5
  577. package/dist/types/node/elements/HTMLTrElement.d.ts.map +1 -1
  578. package/dist/types/node/elements/HTMLTrackElement.d.ts +5 -0
  579. package/dist/types/node/elements/HTMLTrackElement.d.ts.map +1 -0
  580. package/dist/types/node/elements/HTMLUListElement.d.ts +2 -2
  581. package/dist/types/node/elements/HTMLUListElement.d.ts.map +1 -1
  582. package/dist/types/node/elements/HTMLVideoElement.d.ts +8 -0
  583. package/dist/types/node/elements/HTMLVideoElement.d.ts.map +1 -0
  584. package/dist/types/node/elements/MathMLElement.d.ts +2 -2
  585. package/dist/types/node/elements/MathMLElement.d.ts.map +1 -1
  586. package/dist/types/node/elements/SVGElement.d.ts +2 -2
  587. package/dist/types/node/elements/SVGElement.d.ts.map +1 -1
  588. package/dist/types/node/elements/index.d.ts +108 -55
  589. package/dist/types/node/elements/index.d.ts.map +1 -1
  590. package/dist/types/node/index.d.ts +4 -7
  591. package/dist/types/node/index.d.ts.map +1 -1
  592. package/dist/types/utils/CSSSelector.d.ts +0 -1
  593. package/dist/types/utils/CSSSelector.d.ts.map +1 -1
  594. package/dist/types/window/CustomElementRegistryImp.d.ts +19 -0
  595. package/dist/types/window/CustomElementRegistryImp.d.ts.map +1 -0
  596. package/dist/types/window/Window.d.ts +0 -619
  597. package/dist/types/window/Window.d.ts.map +1 -1
  598. package/dist/types/window/WindowBase.d.ts +253 -286
  599. package/dist/types/window/WindowBase.d.ts.map +1 -1
  600. package/dist/types/window/index.d.ts +0 -1
  601. package/dist/types/window/index.d.ts.map +1 -1
  602. package/dist/umd-bundle/dooboostore-dom-parser.umd.js +3482 -3563
  603. package/dist/umd-bundle/dooboostore-dom-parser.umd.js.map +4 -4
  604. package/package.json +6 -1
  605. package/src/DomParser.ts +29 -20
  606. package/src/bundle-entry.ts +2 -0
  607. package/src/factory/ElementFactory.ts +87 -54
  608. package/src/index.ts +22 -10
  609. package/src/node/CharacterData.ts +0 -2
  610. package/src/node/ChildNode.ts +42 -42
  611. package/src/node/ChildNodeBase.ts +60 -39
  612. package/src/node/Comment.ts +60 -60
  613. package/src/node/Document.ts +129 -882
  614. package/src/node/DocumentBase.ts +371 -467
  615. package/src/node/DocumentFragment.ts +38 -44
  616. package/src/node/DocumentFragmentBase.ts +4 -9
  617. package/src/node/Node.ts +231 -224
  618. package/src/node/NodeBase.ts +469 -443
  619. package/src/node/NodeFilter.ts +50 -0
  620. package/src/node/NodeIterator.ts +117 -172
  621. package/src/node/ParentNode.ts +93 -93
  622. package/src/node/ParentNodeBase.ts +7 -10
  623. package/src/node/ShadowRootBase.ts +87 -0
  624. package/src/node/Text.ts +30 -30
  625. package/src/node/TextBase.ts +92 -94
  626. package/src/node/TreeWalker.ts +280 -0
  627. package/src/node/collection/{HTMLCollection.ts → HTMLCollectionImp.ts} +3 -2
  628. package/src/node/collection/HTMLCollectionOfImp.ts +12 -0
  629. package/src/node/collection/NodeList.ts +1 -1
  630. package/src/node/collection/{NodeListOf.ts → NodeListOfImp.ts} +3 -3
  631. package/src/node/collection/StylePropertyMapImpl.ts +60 -0
  632. package/src/node/collection/index.ts +3 -3
  633. package/src/node/elements/Element.ts +212 -772
  634. package/src/node/elements/ElementBase.ts +840 -1204
  635. package/src/node/elements/HTMLAnchorElement.ts +2 -1
  636. package/src/node/elements/HTMLAreaElement.ts +2 -2
  637. package/src/node/elements/HTMLAudioElement.ts +11 -0
  638. package/src/node/elements/HTMLBaseElement.ts +2 -1
  639. package/src/node/elements/HTMLBodyElement.ts +2 -1
  640. package/src/node/elements/HTMLButtonElement.ts +65 -64
  641. package/src/node/elements/HTMLCanvasElement.ts +2 -1
  642. package/src/node/elements/HTMLCaptionElement.ts +2 -1
  643. package/src/node/elements/HTMLDListElement.ts +8 -0
  644. package/src/node/elements/HTMLDataElement.ts +7 -0
  645. package/src/node/elements/HTMLDataListElement.ts +8 -0
  646. package/src/node/elements/HTMLDetailsElement.ts +8 -0
  647. package/src/node/elements/HTMLDialogElement.ts +8 -0
  648. package/src/node/elements/HTMLDivElement.ts +2 -1
  649. package/src/node/elements/HTMLElement.ts +6 -137
  650. package/src/node/elements/HTMLElementBase.ts +472 -355
  651. package/src/node/elements/HTMLEmbedElement.ts +2 -2
  652. package/src/node/elements/HTMLFieldSetElement.ts +8 -0
  653. package/src/node/elements/HTMLFormElement.ts +2 -1
  654. package/src/node/elements/HTMLH1Element.ts +2 -1
  655. package/src/node/elements/HTMLHRElement.ts +8 -0
  656. package/src/node/elements/HTMLHeadElement.ts +2 -1
  657. package/src/node/elements/HTMLHtmlElement.ts +2 -1
  658. package/src/node/elements/HTMLIFrameElement.ts +8 -0
  659. package/src/node/elements/HTMLImgElement.ts +2 -1
  660. package/src/node/elements/HTMLInputElement.ts +2 -1
  661. package/src/node/elements/HTMLLIElement.ts +2 -1
  662. package/src/node/elements/HTMLLabelElement.ts +3 -0
  663. package/src/node/elements/HTMLLegendElement.ts +3 -0
  664. package/src/node/elements/HTMLLinkElement.ts +2 -1
  665. package/src/node/elements/HTMLMapElement.ts +3 -0
  666. package/src/node/elements/HTMLMetaElement.ts +2 -1
  667. package/src/node/elements/HTMLMeterElement.ts +3 -0
  668. package/src/node/elements/HTMLModElement.ts +3 -0
  669. package/src/node/elements/HTMLOListElement.ts +2 -1
  670. package/src/node/elements/HTMLObjectElement.ts +3 -0
  671. package/src/node/elements/HTMLOptGroupElement.ts +3 -0
  672. package/src/node/elements/HTMLOptionElement.ts +3 -0
  673. package/src/node/elements/HTMLOutputElement.ts +3 -0
  674. package/src/node/elements/HTMLPElement.ts +2 -1
  675. package/src/node/elements/HTMLParamElement.ts +3 -0
  676. package/src/node/elements/HTMLPictureElement.ts +3 -0
  677. package/src/node/elements/HTMLPreElement.ts +3 -0
  678. package/src/node/elements/HTMLProgressElement.ts +3 -0
  679. package/src/node/elements/HTMLQuoteElement.ts +3 -0
  680. package/src/node/elements/HTMLScriptElement.ts +2 -1
  681. package/src/node/elements/HTMLSelectElement.ts +3 -0
  682. package/src/node/elements/HTMLSlotElement.ts +3 -0
  683. package/src/node/elements/HTMLSourceElement.ts +3 -0
  684. package/src/node/elements/HTMLSpanElement.ts +2 -1
  685. package/src/node/elements/HTMLStyleElement.ts +2 -1
  686. package/src/node/elements/HTMLTableElement.ts +5 -8
  687. package/src/node/elements/HTMLTbodyElement.ts +4 -4
  688. package/src/node/elements/HTMLTdElement.ts +3 -2
  689. package/src/node/elements/HTMLTemplateElement.ts +5 -7
  690. package/src/node/elements/HTMLTextAreaElement.ts +3 -0
  691. package/src/node/elements/HTMLTfootElement.ts +4 -4
  692. package/src/node/elements/HTMLThElement.ts +2 -1
  693. package/src/node/elements/HTMLTheadElement.ts +5 -5
  694. package/src/node/elements/HTMLTimeElement.ts +3 -0
  695. package/src/node/elements/HTMLTitleElement.ts +2 -1
  696. package/src/node/elements/HTMLTrElement.ts +7 -5
  697. package/src/node/elements/HTMLTrackElement.ts +3 -0
  698. package/src/node/elements/HTMLUListElement.ts +2 -1
  699. package/src/node/elements/HTMLVideoElement.ts +11 -0
  700. package/src/node/elements/MathMLElement.ts +2 -1
  701. package/src/node/elements/SVGElement.ts +2 -1
  702. package/src/node/elements/index.ts +231 -153
  703. package/src/node/index.ts +8 -8
  704. package/src/utils/CSSSelector.ts +0 -1
  705. package/src/window/CustomElementRegistryImp.ts +138 -0
  706. package/src/window/Window.ts +716 -715
  707. package/src/window/WindowBase.ts +482 -847
  708. package/src/window/index.ts +0 -1
  709. package/tsconfig.json +1 -0
  710. package/dist/cjs/node/collection/HTMLCollection.js.map +0 -7
  711. package/dist/cjs/node/collection/HTMLCollectionOf.js.map +0 -7
  712. package/dist/cjs/node/collection/NodeListOf.js.map +0 -7
  713. package/dist/cjs/node/elements/HTMLGenericElement.js.map +0 -7
  714. package/dist/esm/node/collection/HTMLCollection.js.map +0 -7
  715. package/dist/esm/node/collection/HTMLCollectionOf.js +0 -17
  716. package/dist/esm/node/collection/HTMLCollectionOf.js.map +0 -7
  717. package/dist/esm/node/collection/NodeListOf.js.map +0 -7
  718. package/dist/esm/node/elements/HTMLGenericElement.js +0 -13
  719. package/dist/esm/node/elements/HTMLGenericElement.js.map +0 -7
  720. package/dist/types/node/collection/HTMLCollection.d.ts.map +0 -1
  721. package/dist/types/node/collection/HTMLCollectionOf.d.ts +0 -14
  722. package/dist/types/node/collection/HTMLCollectionOf.d.ts.map +0 -1
  723. package/dist/types/node/collection/NodeListOf.d.ts.map +0 -1
  724. package/dist/types/node/elements/HTMLGenericElement.d.ts +0 -6
  725. package/dist/types/node/elements/HTMLGenericElement.d.ts.map +0 -1
  726. package/src/node/collection/HTMLCollectionOf.ts +0 -26
  727. package/src/node/elements/HTMLGenericElement.ts +0 -13
@@ -1,506 +1,532 @@
1
- import { Node,
2
- ELEMENT_NODE ,
3
- ATTRIBUTE_NODE ,
4
- TEXT_NODE ,
5
- CDATA_SECTION_NODE ,
6
- ENTITY_REFERENCE_NODE ,
7
- ENTITY_NODE ,
8
- PROCESSING_INSTRUCTION_NODE ,
9
- COMMENT_NODE ,
10
- DOCUMENT_NODE ,
11
- DOCUMENT_TYPE_NODE ,
12
- DOCUMENT_FRAGMENT_NODE ,
13
- NOTATION_NODE ,
14
- DOCUMENT_POSITION_DISCONNECTED ,
15
- DOCUMENT_POSITION_PRECEDING ,
16
- DOCUMENT_POSITION_FOLLOWING ,
17
- DOCUMENT_POSITION_CONTAINS ,
18
- DOCUMENT_POSITION_CONTAINED_BY ,
19
- DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC
20
- } from './Node';
21
- import { ChildNode } from './ChildNode';
22
- import { ParentNode } from './ParentNode';
23
- import { NodeListOf } from './collection/NodeListOf';
1
+ import { ELEMENT_NODE, ATTRIBUTE_NODE, TEXT_NODE, CDATA_SECTION_NODE, ENTITY_REFERENCE_NODE, ENTITY_NODE, PROCESSING_INSTRUCTION_NODE, COMMENT_NODE, DOCUMENT_NODE, DOCUMENT_TYPE_NODE, DOCUMENT_FRAGMENT_NODE, NOTATION_NODE, DOCUMENT_POSITION_DISCONNECTED, DOCUMENT_POSITION_PRECEDING, DOCUMENT_POSITION_FOLLOWING, DOCUMENT_POSITION_CONTAINS, DOCUMENT_POSITION_CONTAINED_BY, DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC } from './Node';
2
+ import { NodeListOfImp } from './collection/NodeListOfImp';
24
3
  import { GetRootNodeOptions } from './GetRootNodeOptions';
25
- import { HTMLElement } from './elements/HTMLElement';
26
- import { Document } from './Document';
27
- import { Text } from './Text';
28
4
 
29
5
  /**
30
6
  * Base implementation of the Node interface
31
7
  */
32
8
  export abstract class NodeBase implements Node {
33
- // Node constants as instance properties
34
- static readonly ELEMENT_NODE = ELEMENT_NODE;
35
- static readonly ATTRIBUTE_NODE = ATTRIBUTE_NODE;
36
- static readonly TEXT_NODE = TEXT_NODE;
37
- static readonly CDATA_SECTION_NODE = CDATA_SECTION_NODE;
38
- static readonly ENTITY_REFERENCE_NODE = ENTITY_REFERENCE_NODE;
39
- static readonly ENTITY_NODE = ENTITY_NODE;
40
- static readonly PROCESSING_INSTRUCTION_NODE = PROCESSING_INSTRUCTION_NODE;
41
- static readonly COMMENT_NODE = COMMENT_NODE;
42
- static readonly DOCUMENT_NODE = DOCUMENT_NODE;
43
- static readonly DOCUMENT_TYPE_NODE = DOCUMENT_TYPE_NODE;
44
- static readonly DOCUMENT_FRAGMENT_NODE = DOCUMENT_FRAGMENT_NODE;
45
- static readonly NOTATION_NODE = NOTATION_NODE;
46
- static readonly DOCUMENT_POSITION_DISCONNECTED = DOCUMENT_POSITION_DISCONNECTED;
47
- static readonly DOCUMENT_POSITION_PRECEDING = DOCUMENT_POSITION_PRECEDING;
48
- static readonly DOCUMENT_POSITION_FOLLOWING = DOCUMENT_POSITION_FOLLOWING;
49
- static readonly DOCUMENT_POSITION_CONTAINS = DOCUMENT_POSITION_CONTAINS;
50
- static readonly DOCUMENT_POSITION_CONTAINED_BY = DOCUMENT_POSITION_CONTAINED_BY;
51
- static readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC = DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC;
52
-
53
- ELEMENT_NODE: typeof ELEMENT_NODE;
54
- ATTRIBUTE_NODE: typeof ATTRIBUTE_NODE;
55
- TEXT_NODE: typeof TEXT_NODE;
56
- CDATA_SECTION_NODE: typeof CDATA_SECTION_NODE;
57
- ENTITY_REFERENCE_NODE: typeof ENTITY_REFERENCE_NODE;
58
- ENTITY_NODE: typeof ENTITY_NODE;
59
- PROCESSING_INSTRUCTION_NODE: typeof PROCESSING_INSTRUCTION_NODE;
60
- COMMENT_NODE: typeof COMMENT_NODE;
61
- DOCUMENT_NODE: typeof DOCUMENT_NODE;
62
- DOCUMENT_TYPE_NODE: typeof DOCUMENT_TYPE_NODE;
63
- DOCUMENT_FRAGMENT_NODE: typeof DOCUMENT_FRAGMENT_NODE;
64
- NOTATION_NODE: typeof NOTATION_NODE;
65
- DOCUMENT_POSITION_DISCONNECTED: typeof DOCUMENT_POSITION_DISCONNECTED;
66
- DOCUMENT_POSITION_PRECEDING: typeof DOCUMENT_POSITION_PRECEDING;
67
- DOCUMENT_POSITION_FOLLOWING: typeof DOCUMENT_POSITION_FOLLOWING;
68
- DOCUMENT_POSITION_CONTAINS: typeof DOCUMENT_POSITION_CONTAINS;
69
- DOCUMENT_POSITION_CONTAINED_BY: typeof DOCUMENT_POSITION_CONTAINED_BY;
70
- DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: typeof DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC;
71
- // Internal properties (for Base class implementations)
72
- protected _childNodesInternal: NodeBase[] = [];
73
- public _parentNodeInternal: NodeBase | null = null; // Internal parent reference
74
- public _ownerDocument: Document | null = null; // Made public for ChildNodeBase access
75
- protected _nodeValue: string | null = null;
76
- protected _textContent: string | null = null;
77
-
78
- constructor(
79
- public readonly nodeType: number,
80
- public readonly nodeName: string,
81
- ownerDocument?: Document | null
82
- ) {
83
- this._ownerDocument = ownerDocument || null;
84
- }
85
-
86
-
9
+ // Node constants as instance properties
10
+ static readonly ELEMENT_NODE = ELEMENT_NODE;
11
+ static readonly ATTRIBUTE_NODE = ATTRIBUTE_NODE;
12
+ static readonly TEXT_NODE = TEXT_NODE;
13
+ static readonly CDATA_SECTION_NODE = CDATA_SECTION_NODE;
14
+ static readonly ENTITY_REFERENCE_NODE = ENTITY_REFERENCE_NODE;
15
+ static readonly ENTITY_NODE = ENTITY_NODE;
16
+ static readonly PROCESSING_INSTRUCTION_NODE = PROCESSING_INSTRUCTION_NODE;
17
+ static readonly COMMENT_NODE = COMMENT_NODE;
18
+ static readonly DOCUMENT_NODE = DOCUMENT_NODE;
19
+ static readonly DOCUMENT_TYPE_NODE = DOCUMENT_TYPE_NODE;
20
+ static readonly DOCUMENT_FRAGMENT_NODE = DOCUMENT_FRAGMENT_NODE;
21
+ static readonly NOTATION_NODE = NOTATION_NODE;
22
+ static readonly DOCUMENT_POSITION_DISCONNECTED = DOCUMENT_POSITION_DISCONNECTED;
23
+ static readonly DOCUMENT_POSITION_PRECEDING = DOCUMENT_POSITION_PRECEDING;
24
+ static readonly DOCUMENT_POSITION_FOLLOWING = DOCUMENT_POSITION_FOLLOWING;
25
+ static readonly DOCUMENT_POSITION_CONTAINS = DOCUMENT_POSITION_CONTAINS;
26
+ static readonly DOCUMENT_POSITION_CONTAINED_BY = DOCUMENT_POSITION_CONTAINED_BY;
27
+ static readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC = DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC;
28
+
29
+ ELEMENT_NODE: typeof ELEMENT_NODE;
30
+ ATTRIBUTE_NODE: typeof ATTRIBUTE_NODE;
31
+ TEXT_NODE: typeof TEXT_NODE;
32
+ CDATA_SECTION_NODE: typeof CDATA_SECTION_NODE;
33
+ ENTITY_REFERENCE_NODE: typeof ENTITY_REFERENCE_NODE;
34
+ ENTITY_NODE: typeof ENTITY_NODE;
35
+ PROCESSING_INSTRUCTION_NODE: typeof PROCESSING_INSTRUCTION_NODE;
36
+ COMMENT_NODE: typeof COMMENT_NODE;
37
+ DOCUMENT_NODE: typeof DOCUMENT_NODE;
38
+ DOCUMENT_TYPE_NODE: typeof DOCUMENT_TYPE_NODE;
39
+ DOCUMENT_FRAGMENT_NODE: typeof DOCUMENT_FRAGMENT_NODE;
40
+ NOTATION_NODE: typeof NOTATION_NODE;
41
+ DOCUMENT_POSITION_DISCONNECTED: typeof DOCUMENT_POSITION_DISCONNECTED;
42
+ DOCUMENT_POSITION_PRECEDING: typeof DOCUMENT_POSITION_PRECEDING;
43
+ DOCUMENT_POSITION_FOLLOWING: typeof DOCUMENT_POSITION_FOLLOWING;
44
+ DOCUMENT_POSITION_CONTAINS: typeof DOCUMENT_POSITION_CONTAINS;
45
+ DOCUMENT_POSITION_CONTAINED_BY: typeof DOCUMENT_POSITION_CONTAINED_BY;
46
+ DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: typeof DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC;
47
+ // Internal properties (for Base class implementations)
48
+ protected _childNodesInternal: NodeBase[] = [];
49
+ public _parentNodeInternal: NodeBase | null = null; // Internal parent reference
50
+ public _ownerDocument: Document | null = null; // Made public for ChildNodeBase access
51
+ protected _nodeValue: string | null = null;
52
+ protected _textContent: string | null = null;
53
+ protected _eventListeners: Array<{ type: string; listener: any; options?: any }> = [];
54
+
55
+ constructor(
56
+ public nodeType: number,
57
+ public nodeName: string,
58
+ ownerDocument?: Document | null
59
+ ) {
60
+ this._ownerDocument = ownerDocument || null;
61
+ }
62
+
63
+ addEventListener(type: string, listener: any, options?: any): void {
64
+ this._eventListeners.push({
65
+ type,
66
+ listener: typeof listener === 'function' ? listener : listener?.handleEvent,
67
+ options
68
+ });
69
+ }
70
+
71
+ removeEventListener(type: string, listener: any, _options?: any): void {
72
+ const targetListener = typeof listener === 'function' ? listener : listener?.handleEvent;
73
+ this._eventListeners = this._eventListeners.filter(l => !(l.type === type && l.listener === targetListener));
74
+ }
75
+
76
+ dispatchEvent(event: any): boolean {
77
+ // Simple implementation: only trigger listeners on this node (no bubbling for now)
78
+ const type = typeof event === 'string' ? event : event.type;
79
+ const listeners = this._eventListeners.filter(l => l.type === type);
80
+ for (const l of listeners) {
81
+ try {
82
+ if (typeof l.listener === 'function') {
83
+ l.listener.call(this, event);
84
+ } else if (l.listener && typeof l.listener.handleEvent === 'function') {
85
+ l.listener.handleEvent(event);
86
+ }
87
87
 
88
- // Node interface implementation
89
- get baseURI(): string {
90
- return this._ownerDocument?.URL || '';
91
- }
88
+ if (l.options?.once) {
89
+ this.removeEventListener(type, l.listener, l.options);
90
+ }
91
+ } catch (e) {
92
+ console.error(`Error in event listener for ${type}:`, e);
93
+ }
94
+ }
95
+ return true;
96
+ }
97
+
98
+ // Node interface implementation
99
+ get baseURI(): string {
100
+ return this._ownerDocument?.URL || '';
101
+ }
102
+
103
+ // External interface - returns proper Node interface types
104
+ get childNodes(): NodeListOf<ChildNode> {
105
+ return new NodeListOfImp<ChildNode>(this._childNodesInternal as unknown as ChildNode[]) as unknown as NodeListOf<ChildNode>;
106
+ }
107
+
108
+ get firstChild(): ChildNode | null {
109
+ return this._childNodesInternal.length > 0 ? (this._childNodesInternal[0] as unknown as ChildNode) : null;
110
+ }
111
+
112
+ get lastChild(): ChildNode | null {
113
+ const length = this._childNodesInternal.length;
114
+ return length > 0 ? (this._childNodesInternal[length - 1] as unknown as ChildNode) : null;
115
+ }
116
+
117
+ get nextSibling(): ChildNode | null {
118
+ if (!this._parentNodeInternal) return null;
119
+ const siblings = this._parentNodeInternal._childNodesInternal;
120
+ const index = this._findIndexInParent();
121
+ return index !== -1 && index < siblings.length - 1 ? (siblings[index + 1] as unknown as ChildNode) : null;
122
+ }
123
+
124
+ get previousSibling(): ChildNode | null {
125
+ if (!this._parentNodeInternal) return null;
126
+ const siblings = this._parentNodeInternal._childNodesInternal;
127
+ const index = this._findIndexInParent();
128
+ return index > 0 ? (siblings[index - 1] as unknown as ChildNode) : null;
129
+ }
130
+
131
+ get parentNode(): ParentNode | null {
132
+ return this._parentNodeInternal as unknown as ParentNode | null;
133
+ }
134
+
135
+ get parentElement(): HTMLElement | null {
136
+ return this._parentNodeInternal && this._parentNodeInternal.nodeType === ELEMENT_NODE ? (this._parentNodeInternal as unknown as HTMLElement) : null;
137
+ }
138
+
139
+ get ownerDocument(): Document | null {
140
+ return this._ownerDocument;
141
+ }
142
+
143
+ get isConnected(): boolean {
144
+ let node: Node | null = this;
145
+ while (node) {
146
+ if (node.nodeType === DOCUMENT_NODE) return true;
147
+ node = node.parentNode;
148
+ }
149
+ return false;
150
+ }
151
+
152
+ get nodeValue(): string | null {
153
+ return this._nodeValue;
154
+ }
155
+
156
+ set nodeValue(value: string | null) {
157
+ this._nodeValue = value;
158
+ }
159
+
160
+ get textContent(): string | null {
161
+ if (this.nodeType === TEXT_NODE || this.nodeType === COMMENT_NODE) {
162
+ // For text nodes, decode HTML entities to return original text
163
+ return this._nodeValue ? this.decodeHTMLEntities(this._nodeValue) : this._nodeValue;
164
+ }
165
+
166
+ // For elements, return the stored original text content if available
167
+ if (this._textContent !== undefined && this._textContent !== null) {
168
+ return this._textContent;
169
+ }
170
+
171
+ // Fallback: collect from children (for HTML parsed content)
172
+ let text = '';
173
+ for (const child of this._childNodesInternal) {
174
+ const childText = child.textContent;
175
+ if (childText !== null && childText !== undefined) {
176
+ text += childText;
177
+ }
178
+ }
179
+ return text.length > 0 ? text : null;
180
+ }
181
+
182
+ set textContent(value: string | null) {
183
+ // Convert to string (including null and undefined)
184
+ const stringValue = String(value);
185
+ // Store original text content
186
+ this._textContent = stringValue;
187
+ // Clear all children and add a single text node
188
+ this._childNodesInternal = [];
189
+ if (stringValue) {
190
+ // Create text node implementation with escaped value for innerHTML
191
+ const escapedValue = this.escapeHTMLEntities(stringValue);
192
+ const { TextBase } = require('./TextBase');
193
+ const textNode = new TextBase(escapedValue, this._ownerDocument);
194
+ this._childNodesInternal.push(textNode);
195
+ textNode._parentNodeInternal = this;
196
+ }
197
+ }
198
+
199
+ /**
200
+ * Escape HTML entities in a string to prevent XSS
201
+ */
202
+ protected escapeHTMLEntities(str: string): string {
203
+ const entityMap: { [key: string]: string } = {
204
+ '&': '&amp;',
205
+ '<': '&lt;',
206
+ '>': '&gt;',
207
+ '"': '&quot;',
208
+ "'": '&#39;'
209
+ };
210
+
211
+ return str.replace(/[&<>"']/g, char => {
212
+ return entityMap[char] || char;
213
+ });
214
+ }
215
+
216
+ /**
217
+ * Decode HTML entities in a string
218
+ */
219
+ protected decodeHTMLEntities(str: string): string {
220
+ const entityMap: { [key: string]: string } = {
221
+ '&amp;': '&',
222
+ '&lt;': '<',
223
+ '&gt;': '>',
224
+ '&quot;': '"',
225
+ '&#39;': "'",
226
+ '&#34;': '"',
227
+ '&apos;': "'",
228
+ '&copy;': '©',
229
+ '&reg;': '®',
230
+ '&trade;': '™',
231
+ '&nbsp;': ' ',
232
+ '&hellip;': '…',
233
+ '&mdash;': '—',
234
+ '&ndash;': '–',
235
+ '&lsquo;': '\u2018',
236
+ '&rsquo;': '\u2019',
237
+ '&ldquo;': '"',
238
+ '&rdquo;': '"'
239
+ };
240
+
241
+ return str.replace(/&[a-zA-Z0-9#]+;/g, entity => {
242
+ // Handle named entities
243
+ if (entityMap[entity]) {
244
+ return entityMap[entity];
245
+ }
246
+
247
+ // Handle numeric entities like &#39; &#34;
248
+ if (entity.startsWith('&#') && entity.endsWith(';')) {
249
+ const numStr = entity.slice(2, -1);
250
+ const num = parseInt(numStr, 10);
251
+ if (!isNaN(num)) {
252
+ return String.fromCharCode(num);
253
+ }
254
+ }
255
+
256
+ // Handle hex entities like &#x27;
257
+ if (entity.startsWith('&#x') && entity.endsWith(';')) {
258
+ const hexStr = entity.slice(3, -1);
259
+ const num = parseInt(hexStr, 16);
260
+ if (!isNaN(num)) {
261
+ return String.fromCharCode(num);
262
+ }
263
+ }
264
+
265
+ // Return original if not recognized
266
+ return entity;
267
+ });
268
+ }
269
+
270
+ // Node methods - external interface uses Node types, internal uses NodeBase
271
+ appendChild<T extends Node>(node: T): T {
272
+ const nodeBase = node as any as NodeBase; // Internal cast
273
+
274
+ // Special handling for DocumentFragment
275
+ if (nodeBase.nodeType === DOCUMENT_FRAGMENT_NODE) {
276
+ // When appending a DocumentFragment, move its children instead
277
+ const fragment = nodeBase;
278
+
279
+ // Move all children from fragment to this node
280
+ while (fragment._childNodesInternal.length > 0) {
281
+ const child = fragment._childNodesInternal[0];
282
+ if (child) {
283
+ fragment.removeChild(child);
284
+ this.appendChild(child);
285
+ }
286
+ }
92
287
 
93
- // External interface - returns proper Node interface types
94
- get childNodes(): NodeListOf<ChildNode> {
95
- return new NodeListOf<ChildNode>(this._childNodesInternal as unknown as ChildNode[]);
288
+ return node;
96
289
  }
97
290
 
98
- get firstChild(): ChildNode | null {
99
- return this._childNodesInternal.length > 0 ? this._childNodesInternal[0] as unknown as ChildNode : null;
291
+ if (nodeBase._parentNodeInternal) {
292
+ nodeBase._parentNodeInternal.removeChild(nodeBase);
100
293
  }
101
294
 
102
- get lastChild(): ChildNode | null {
103
- const length = this._childNodesInternal.length;
104
- return length > 0 ? this._childNodesInternal[length - 1] as unknown as ChildNode : null;
105
- }
295
+ this._childNodesInternal.push(nodeBase);
296
+ nodeBase._parentNodeInternal = this;
297
+ nodeBase._ownerDocument = this._ownerDocument;
106
298
 
107
- get nextSibling(): ChildNode | null {
108
- if (!this._parentNodeInternal) return null;
109
- const siblings = this._parentNodeInternal._childNodesInternal;
110
- const index = this._findIndexInParent();
111
- return index !== -1 && index < siblings.length - 1 ? siblings[index + 1] as unknown as ChildNode : null;
299
+ // Trigger connectedCallback if it's a custom element and connected to document
300
+ if (this.isConnected && (nodeBase as any).connectedCallback) {
301
+ console.log(`[NodeBase] Calling connectedCallback for <${nodeBase.nodeName}>`);
302
+ (nodeBase as any).connectedCallback();
112
303
  }
113
304
 
114
- get previousSibling(): ChildNode | null {
115
- if (!this._parentNodeInternal) return null;
116
- const siblings = this._parentNodeInternal._childNodesInternal;
117
- const index = this._findIndexInParent();
118
- return index > 0 ? siblings[index - 1] as unknown as ChildNode : null;
119
- }
305
+ return node;
306
+ }
120
307
 
121
- get parentNode(): ParentNode | null {
122
- return this._parentNodeInternal as unknown as ParentNode | null;
308
+ removeChild<T extends Node>(child: T): T {
309
+ const childBase = child as any as NodeBase; // Internal cast
310
+ const index = this._findChildIndex(childBase);
311
+ if (index === -1) {
312
+ throw new Error('Node not found');
123
313
  }
124
314
 
125
- get parentElement(): HTMLElement | null {
126
- return this._parentNodeInternal && this._parentNodeInternal.nodeType === ELEMENT_NODE
127
- ? this._parentNodeInternal as unknown as HTMLElement
128
- : null;
129
- }
315
+ const wasConnected = childBase.isConnected;
130
316
 
131
- get ownerDocument(): Document | null {
132
- return this._ownerDocument;
133
- }
317
+ this._childNodesInternal.splice(index, 1);
318
+ childBase._parentNodeInternal = null;
134
319
 
135
- get isConnected(): boolean {
136
- let node: Node | null = this;
137
- while (node) {
138
- if (node.nodeType === DOCUMENT_NODE) return true;
139
- node = node.parentNode;
140
- }
141
- return false;
320
+ // Trigger disconnectedCallback if it was connected
321
+ if (wasConnected && (childBase as any).disconnectedCallback) {
322
+ (childBase as any).disconnectedCallback();
142
323
  }
143
324
 
144
- get nodeValue(): string | null {
145
- return this._nodeValue;
146
- }
325
+ return child;
326
+ }
147
327
 
148
- set nodeValue(value: string | null) {
149
- this._nodeValue = value;
328
+ insertBefore<T extends Node>(node: T, child: Node | null): T {
329
+ if (child === null) {
330
+ return this.appendChild(node);
150
331
  }
151
332
 
152
- get textContent(): string | null {
153
- if (this.nodeType === TEXT_NODE || this.nodeType === COMMENT_NODE) {
154
- // For text nodes, decode HTML entities to return original text
155
- return this._nodeValue ? this.decodeHTMLEntities(this._nodeValue) : this._nodeValue;
156
- }
157
-
158
- // For elements, return the stored original text content if available
159
- if (this._textContent !== undefined && this._textContent !== null) {
160
- return this._textContent;
161
- }
162
-
163
- // Fallback: collect from children (for HTML parsed content)
164
- let text = '';
165
- for (const child of this._childNodesInternal) {
166
- const childText = child.textContent;
167
- if (childText !== null && childText !== undefined) {
168
- text += childText;
169
- }
170
- }
171
- return text.length > 0 ? text : null;
333
+ const nodeBase = node as any as NodeBase; // Internal cast
334
+ const childBase = child as any as NodeBase; // Internal cast
335
+ const index = this._findChildIndex(childBase);
336
+ if (index === -1) {
337
+ throw new Error('Reference node not found');
172
338
  }
173
339
 
174
- set textContent(value: string | null) {
175
- // Convert to string (including null and undefined)
176
- const stringValue = String(value);
177
- // Store original text content
178
- this._textContent = stringValue;
179
- // Clear all children and add a single text node
180
- this._childNodesInternal = [];
181
- if (stringValue) {
182
- // Create text node implementation with escaped value for innerHTML
183
- const escapedValue = this.escapeHTMLEntities(stringValue);
184
- const { TextBase } = require('./TextBase');
185
- const textNode = new TextBase(escapedValue, this._ownerDocument);
186
- this._childNodesInternal.push(textNode);
187
- textNode._parentNodeInternal = this;
188
- }
189
- }
340
+ // Handle DocumentFragment - move all its children
341
+ if (nodeBase.nodeType === DOCUMENT_FRAGMENT_NODE) {
342
+ const fragment = nodeBase as any;
343
+ const children = [...fragment._childNodesInternal]; // Copy array to avoid modification during iteration
190
344
 
191
- /**
192
- * Escape HTML entities in a string to prevent XSS
193
- */
194
- protected escapeHTMLEntities(str: string): string {
195
- const entityMap: { [key: string]: string } = {
196
- '&': '&amp;',
197
- '<': '&lt;',
198
- '>': '&gt;',
199
- '"': '&quot;',
200
- "'": '&#39;'
201
- };
202
-
203
- return str.replace(/[&<>"']/g, (char) => {
204
- return entityMap[char] || char;
205
- });
206
- }
345
+ let insertIndex = index;
346
+ for (const fragmentChild of children) {
347
+ // Remove from fragment
348
+ fragment.removeChild(fragmentChild);
349
+ // Insert at the current insert position
350
+ this._childNodesInternal.splice(insertIndex, 0, fragmentChild);
351
+ fragmentChild._parentNodeInternal = this;
352
+ fragmentChild._ownerDocument = this._ownerDocument;
353
+ // Increment insert index for next child to maintain order
354
+ insertIndex++;
355
+ }
207
356
 
208
- /**
209
- * Decode HTML entities in a string
210
- */
211
- protected decodeHTMLEntities(str: string): string {
212
- const entityMap: { [key: string]: string } = {
213
- '&amp;': '&',
214
- '&lt;': '<',
215
- '&gt;': '>',
216
- '&quot;': '"',
217
- '&#39;': "'",
218
- '&#34;': '"',
219
- '&apos;': "'",
220
- '&copy;': '©',
221
- '&reg;': '®',
222
- '&trade;': '™',
223
- '&nbsp;': ' ',
224
- '&hellip;': '…',
225
- '&mdash;': '—',
226
- '&ndash;': '–',
227
- '&lsquo;': '\u2018',
228
- '&rsquo;': '\u2019',
229
- '&ldquo;': '"',
230
- '&rdquo;': '"'
231
- };
232
-
233
- return str.replace(/&[a-zA-Z0-9#]+;/g, (entity) => {
234
- // Handle named entities
235
- if (entityMap[entity]) {
236
- return entityMap[entity];
237
- }
238
-
239
- // Handle numeric entities like &#39; &#34;
240
- if (entity.startsWith('&#') && entity.endsWith(';')) {
241
- const numStr = entity.slice(2, -1);
242
- const num = parseInt(numStr, 10);
243
- if (!isNaN(num)) {
244
- return String.fromCharCode(num);
245
- }
246
- }
247
-
248
- // Handle hex entities like &#x27;
249
- if (entity.startsWith('&#x') && entity.endsWith(';')) {
250
- const hexStr = entity.slice(3, -1);
251
- const num = parseInt(hexStr, 16);
252
- if (!isNaN(num)) {
253
- return String.fromCharCode(num);
254
- }
255
- }
256
-
257
- // Return original if not recognized
258
- return entity;
259
- });
357
+ return node;
260
358
  }
261
359
 
262
- // Node methods - external interface uses Node types, internal uses NodeBase
263
- appendChild<T extends Node>(node: T): T {
264
- const nodeBase = node as any as NodeBase; // Internal cast
265
-
266
- // Special handling for DocumentFragment
267
- if (nodeBase.nodeType === DOCUMENT_FRAGMENT_NODE) {
268
- // When appending a DocumentFragment, move its children instead
269
- const fragment = nodeBase;
270
-
271
- // Move all children from fragment to this node
272
- while (fragment._childNodesInternal.length > 0) {
273
- const child = fragment._childNodesInternal[0];
274
- if (child) {
275
- fragment.removeChild(child);
276
- this.appendChild(child);
277
- }
278
- }
279
-
280
- return node;
281
- }
282
-
283
- if (nodeBase._parentNodeInternal) {
284
- nodeBase._parentNodeInternal.removeChild(nodeBase);
285
- }
286
-
287
- this._childNodesInternal.push(nodeBase);
288
- nodeBase._parentNodeInternal = this;
289
- nodeBase._ownerDocument = this._ownerDocument;
290
-
291
- return node;
360
+ if (nodeBase._parentNodeInternal) {
361
+ nodeBase._parentNodeInternal.removeChild(nodeBase);
292
362
  }
293
363
 
294
- removeChild<T extends Node>(child: T): T {
295
- const childBase = child as any as NodeBase; // Internal cast
296
- const index = this._findChildIndex(childBase);
297
- if (index === -1) {
298
- throw new Error('Node not found');
299
- }
300
-
301
- this._childNodesInternal.splice(index, 1);
302
- childBase._parentNodeInternal = null;
364
+ this._childNodesInternal.splice(index, 0, nodeBase);
365
+ nodeBase._parentNodeInternal = this;
366
+ nodeBase._ownerDocument = this._ownerDocument;
303
367
 
304
- return child;
368
+ // Trigger connectedCallback if it's a custom element and connected to document
369
+ if (this.isConnected && (nodeBase as any).connectedCallback) {
370
+ (nodeBase as any).connectedCallback();
305
371
  }
306
372
 
307
- insertBefore<T extends Node>(node: T, child: Node | null): T {
308
- if (child === null) {
309
- return this.appendChild(node);
310
- }
311
-
312
- const nodeBase = node as any as NodeBase; // Internal cast
313
- const childBase = child as any as NodeBase; // Internal cast
314
- const index = this._findChildIndex(childBase);
315
- if (index === -1) {
316
- throw new Error('Reference node not found');
317
- }
318
-
319
- // Handle DocumentFragment - move all its children
320
- if (nodeBase.nodeType === DOCUMENT_FRAGMENT_NODE) {
321
- const fragment = nodeBase as any;
322
- const children = [...fragment._childNodesInternal]; // Copy array to avoid modification during iteration
323
-
324
- let insertIndex = index;
325
- for (const fragmentChild of children) {
326
- // Remove from fragment
327
- fragment.removeChild(fragmentChild);
328
- // Insert at the current insert position
329
- this._childNodesInternal.splice(insertIndex, 0, fragmentChild);
330
- fragmentChild._parentNodeInternal = this;
331
- fragmentChild._ownerDocument = this._ownerDocument;
332
- // Increment insert index for next child to maintain order
333
- insertIndex++;
334
- }
335
-
336
- return node;
337
- }
373
+ return node;
374
+ }
338
375
 
339
- if (nodeBase._parentNodeInternal) {
340
- nodeBase._parentNodeInternal.removeChild(nodeBase);
341
- }
376
+ replaceChild<T extends Node>(node: Node, child: T): T {
377
+ this.insertBefore(node, child);
378
+ this.removeChild(child);
379
+ return child;
380
+ }
342
381
 
343
- this._childNodesInternal.splice(index, 0, nodeBase);
344
- nodeBase._parentNodeInternal = this;
345
- nodeBase._ownerDocument = this._ownerDocument;
382
+ cloneNode(deep?: boolean): Node {
383
+ // Basic clone implementation - would need to be overridden by specific node types
384
+ throw new Error('cloneNode must be implemented by subclasses');
385
+ }
346
386
 
347
- return node;
348
- }
387
+ hasChildNodes(): boolean {
388
+ return this._childNodesInternal.length > 0;
389
+ }
349
390
 
350
- replaceChild<T extends Node>(node: Node, child: T): T {
351
- this.insertBefore(node, child);
352
- this.removeChild(child);
353
- return child;
354
- }
391
+ contains(other: Node | null): boolean {
392
+ if (!other || other === this) return other === this;
355
393
 
356
- cloneNode(deep?: boolean): Node {
357
- // Basic clone implementation - would need to be overridden by specific node types
358
- throw new Error('cloneNode must be implemented by subclasses');
394
+ let node: Node | null = other;
395
+ while (node) {
396
+ if (node.parentNode === (this as unknown as ParentNode)) return true;
397
+ node = node.parentNode;
359
398
  }
399
+ return false;
400
+ }
360
401
 
361
- hasChildNodes(): boolean {
362
- return this._childNodesInternal.length > 0;
363
- }
402
+ compareDocumentPosition(other: Node): number {
403
+ if (this === other) return 0;
364
404
 
365
- contains(other: Node | null): boolean {
366
- if (!other || other === this) return other === this;
405
+ const otherBase = other as any as NodeBase;
367
406
 
368
- let node: Node | null = other;
369
- while (node) {
370
- if (node.parentNode === this as unknown as ParentNode) return true;
371
- node = node.parentNode;
372
- }
373
- return false;
407
+ // Check if nodes are disconnected (not in same tree)
408
+ const thisRoot = this.getRootNode();
409
+ const otherRoot = otherBase.getRootNode();
410
+ if (thisRoot !== otherRoot) {
411
+ return DOCUMENT_POSITION_DISCONNECTED;
374
412
  }
375
413
 
376
- compareDocumentPosition(other: Node): number {
377
- if (this === other) return 0;
378
-
379
- const otherBase = other as any as NodeBase;
380
-
381
- // Check if nodes are disconnected (not in same tree)
382
- const thisRoot = this.getRootNode();
383
- const otherRoot = otherBase.getRootNode();
384
- if (thisRoot !== otherRoot) {
385
- return DOCUMENT_POSITION_DISCONNECTED;
386
- }
387
-
388
- // Check containment relationships
389
- if (this.contains(other)) return DOCUMENT_POSITION_CONTAINED_BY;
390
- if (other.contains(this)) return DOCUMENT_POSITION_CONTAINS;
391
-
392
- // Find document order by traversing up to common ancestor
393
- const thisAncestors = this._getAncestors();
394
- const otherAncestors = otherBase._getAncestors();
395
-
396
- // Find common ancestor
397
- let commonAncestor: NodeBase | null = null;
398
- for (let i = 0; i < thisAncestors.length; i++) {
399
- if (otherAncestors.includes(thisAncestors[i])) {
400
- commonAncestor = thisAncestors[i];
401
- break;
402
- }
403
- }
404
-
405
- if (!commonAncestor) {
406
- return DOCUMENT_POSITION_DISCONNECTED;
407
- }
408
-
409
- // Compare positions within common ancestor
410
- const thisChild = this._getChildInAncestor(commonAncestor);
411
- const otherChild = otherBase._getChildInAncestor(commonAncestor);
412
-
413
- if (thisChild && otherChild && commonAncestor._childNodesInternal) {
414
- const thisIndex = commonAncestor._childNodesInternal.indexOf(thisChild);
415
- const otherIndex = commonAncestor._childNodesInternal.indexOf(otherChild);
416
-
417
- if (thisIndex < otherIndex) {
418
- return DOCUMENT_POSITION_FOLLOWING;
419
- } else if (thisIndex > otherIndex) {
420
- return DOCUMENT_POSITION_PRECEDING;
421
- }
422
- }
423
-
424
- return DOCUMENT_POSITION_DISCONNECTED;
425
- }
414
+ // Check containment relationships
415
+ if (this.contains(other)) return DOCUMENT_POSITION_CONTAINED_BY;
416
+ if (other.contains(this)) return DOCUMENT_POSITION_CONTAINS;
426
417
 
427
- getRootNode(options?: GetRootNodeOptions): Node {
428
- let root: Node = this;
429
- while (root.parentNode) {
430
- root = root.parentNode;
431
- }
432
- return root;
433
- }
418
+ // Find document order by traversing up to common ancestor
419
+ const thisAncestors = this._getAncestors();
420
+ const otherAncestors = otherBase._getAncestors();
434
421
 
435
- isEqualNode(otherNode: Node | null): boolean {
436
- if (!otherNode) return false;
437
- if (this === otherNode) return true;
438
- if (this.nodeType !== otherNode.nodeType) return false;
439
- if (this.nodeName !== otherNode.nodeName) return false;
440
- return true; // Simplified comparison
422
+ // Find common ancestor
423
+ let commonAncestor: NodeBase | null = null;
424
+ for (let i = 0; i < thisAncestors.length; i++) {
425
+ if (otherAncestors.includes(thisAncestors[i])) {
426
+ commonAncestor = thisAncestors[i];
427
+ break;
428
+ }
441
429
  }
442
430
 
443
- isSameNode(otherNode: Node | null): boolean {
444
- return this === otherNode;
431
+ if (!commonAncestor) {
432
+ return DOCUMENT_POSITION_DISCONNECTED;
445
433
  }
446
434
 
447
- isDefaultNamespace(namespace: string | null): boolean {
448
- // Simplified implementation
449
- return namespace === null || namespace === 'http://www.w3.org/1999/xhtml';
450
- }
435
+ // Compare positions within common ancestor
436
+ const thisChild = this._getChildInAncestor(commonAncestor);
437
+ const otherChild = otherBase._getChildInAncestor(commonAncestor);
451
438
 
452
- lookupNamespaceURI(prefix: string | null): string | null {
453
- // Simplified implementation
454
- if (prefix === null || prefix === '') {
455
- return 'http://www.w3.org/1999/xhtml';
456
- }
457
- return null;
458
- }
439
+ if (thisChild && otherChild && commonAncestor._childNodesInternal) {
440
+ const thisIndex = commonAncestor._childNodesInternal.indexOf(thisChild);
441
+ const otherIndex = commonAncestor._childNodesInternal.indexOf(otherChild);
459
442
 
460
- lookupPrefix(namespace: string | null): string | null {
461
- // Simplified implementation
462
- return null;
443
+ if (thisIndex < otherIndex) {
444
+ return DOCUMENT_POSITION_FOLLOWING;
445
+ } else if (thisIndex > otherIndex) {
446
+ return DOCUMENT_POSITION_PRECEDING;
447
+ }
463
448
  }
464
449
 
465
- normalize(): void {
466
- // Merge adjacent text nodes
467
- for (let i = this._childNodesInternal.length - 1; i >= 0; i--) {
468
- const child = this._childNodesInternal[i];
469
- if (child && child.nodeType === TEXT_NODE) {
470
- const nextSibling = child.nextSibling;
471
- if (nextSibling && nextSibling.nodeType === TEXT_NODE) {
472
- child.nodeValue = (child.nodeValue || '') + (nextSibling.nodeValue || '');
473
- this.removeChild(nextSibling);
474
- }
475
- }
476
- }
477
- }
450
+ return DOCUMENT_POSITION_DISCONNECTED;
451
+ }
478
452
 
479
- // Helper methods
480
- private _findIndexInParent(): number {
481
- if (!this._parentNodeInternal) return -1;
482
- return this._parentNodeInternal._childNodesInternal.indexOf(this);
453
+ getRootNode(options?: GetRootNodeOptions): Node {
454
+ let root: Node = this;
455
+ while (root.parentNode) {
456
+ root = root.parentNode;
483
457
  }
458
+ return root;
459
+ }
484
460
 
485
- private _findChildIndex(child: NodeBase): number {
486
- return this._childNodesInternal.indexOf(child);
487
- }
461
+ isEqualNode(otherNode: Node | null): boolean {
462
+ if (!otherNode) return false;
463
+ if (this === otherNode) return true;
464
+ if (this.nodeType !== otherNode.nodeType) return false;
465
+ if (this.nodeName !== otherNode.nodeName) return false;
466
+ return true; // Simplified comparison
467
+ }
468
+
469
+ isSameNode(otherNode: Node | null): boolean {
470
+ return this === otherNode;
471
+ }
472
+
473
+ isDefaultNamespace(namespace: string | null): boolean {
474
+ // Simplified implementation
475
+ return namespace === null || namespace === 'http://www.w3.org/1999/xhtml';
476
+ }
477
+
478
+ lookupNamespaceURI(prefix: string | null): string | null {
479
+ // Simplified implementation
480
+ if (prefix === null || prefix === '') {
481
+ return 'http://www.w3.org/1999/xhtml';
482
+ }
483
+ return null;
484
+ }
488
485
 
489
- private _getAncestors(): NodeBase[] {
490
- const ancestors: NodeBase[] = [];
491
- let current: NodeBase | null = this._parentNodeInternal;
492
- while (current) {
493
- ancestors.push(current);
494
- current = current._parentNodeInternal;
495
- }
496
- return ancestors;
497
- }
486
+ lookupPrefix(namespace: string | null): string | null {
487
+ // Simplified implementation
488
+ return null;
489
+ }
498
490
 
499
- private _getChildInAncestor(ancestor: NodeBase): NodeBase | null {
500
- let current: NodeBase = this;
501
- while (current._parentNodeInternal && current._parentNodeInternal !== ancestor) {
502
- current = current._parentNodeInternal;
491
+ normalize(): void {
492
+ // Merge adjacent text nodes
493
+ for (let i = this._childNodesInternal.length - 1; i >= 0; i--) {
494
+ const child = this._childNodesInternal[i];
495
+ if (child && child.nodeType === TEXT_NODE) {
496
+ const nextSibling = child.nextSibling;
497
+ if (nextSibling && nextSibling.nodeType === TEXT_NODE) {
498
+ child.nodeValue = (child.nodeValue || '') + (nextSibling.nodeValue || '');
499
+ this.removeChild(nextSibling);
503
500
  }
504
- return current._parentNodeInternal === ancestor ? current : null;
505
- }
506
- }
501
+ }
502
+ }
503
+ }
504
+
505
+ // Helper methods
506
+ private _findIndexInParent(): number {
507
+ if (!this._parentNodeInternal) return -1;
508
+ return this._parentNodeInternal._childNodesInternal.indexOf(this);
509
+ }
510
+
511
+ private _findChildIndex(child: NodeBase): number {
512
+ return this._childNodesInternal.indexOf(child);
513
+ }
514
+
515
+ private _getAncestors(): NodeBase[] {
516
+ const ancestors: NodeBase[] = [];
517
+ let current: NodeBase | null = this._parentNodeInternal;
518
+ while (current) {
519
+ ancestors.push(current);
520
+ current = current._parentNodeInternal;
521
+ }
522
+ return ancestors;
523
+ }
524
+
525
+ private _getChildInAncestor(ancestor: NodeBase): NodeBase | null {
526
+ let current: NodeBase = this;
527
+ while (current._parentNodeInternal && current._parentNodeInternal !== ancestor) {
528
+ current = current._parentNodeInternal;
529
+ }
530
+ return current._parentNodeInternal === ancestor ? current : null;
531
+ }
532
+ }