@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,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/node/Node.ts"],
4
- "sourcesContent": ["import { type NodeListOf } from './collection/NodeListOf';\nimport { NodeList } from './collection/NodeList';\nimport { type ChildNode } from './ChildNode';\nimport { type ParentNode } from './ParentNode';\nimport { type Document } from './Document';\nimport { type HTMLElement } from './elements/HTMLElement';\nimport { type GetRootNodeOptions } from './GetRootNodeOptions';\n// Node \uC0C1\uC218\uB4E4\uC744 \uBCC4\uB3C4\uB85C export\nexport const ELEMENT_NODE = 1 as const;\nexport const ATTRIBUTE_NODE = 2 as const;\nexport const TEXT_NODE = 3 as const;\nexport const CDATA_SECTION_NODE = 4 as const;\nexport const ENTITY_REFERENCE_NODE = 5 as const;\nexport const ENTITY_NODE = 6 as const;\nexport const PROCESSING_INSTRUCTION_NODE = 7 as const;\nexport const COMMENT_NODE = 8 as const;\nexport const DOCUMENT_NODE = 9 as const;\nexport const DOCUMENT_TYPE_NODE = 10 as const;\nexport const DOCUMENT_FRAGMENT_NODE = 11 as const;\nexport const NOTATION_NODE = 12 as const;\nexport const DOCUMENT_POSITION_DISCONNECTED = 0x01 as const;\nexport const DOCUMENT_POSITION_PRECEDING = 0x02 as const;\nexport const DOCUMENT_POSITION_FOLLOWING = 0x04 as const;\nexport const DOCUMENT_POSITION_CONTAINS = 0x08 as const;\nexport const DOCUMENT_POSITION_CONTAINED_BY = 0x10 as const;\nexport const DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC = 0x20 as const;\n\n// Forward declarations for circular dependencies\n// interface ChildNode extends Node {}\n// interface ParentNode extends Node {}\n// interface Document extends Node {}\n// interface HTMLElement {}\n// interface GetRootNodeOptions {\n// composed?: boolean;\n// }\n\nexport interface Node {\n /** node is an element. */\n readonly ELEMENT_NODE: 1;\n readonly ATTRIBUTE_NODE: 2;\n /** node is a Text node. */\n readonly TEXT_NODE: 3;\n /** node is a CDATASection node. */\n readonly CDATA_SECTION_NODE: 4;\n readonly ENTITY_REFERENCE_NODE: 5;\n readonly ENTITY_NODE: 6;\n /** node is a ProcessingInstruction node. */\n readonly PROCESSING_INSTRUCTION_NODE: 7;\n /** node is a Comment node. */\n readonly COMMENT_NODE: 8;\n /** node is a document. */\n readonly DOCUMENT_NODE: 9;\n /** node is a doctype. */\n readonly DOCUMENT_TYPE_NODE: 10;\n /** node is a DocumentFragment node. */\n readonly DOCUMENT_FRAGMENT_NODE: 11;\n readonly NOTATION_NODE: 12;\n /** Set when node and other are not in the same tree. */\n readonly DOCUMENT_POSITION_DISCONNECTED: 0x01;\n /** Set when other is preceding node. */\n readonly DOCUMENT_POSITION_PRECEDING: 0x02;\n /** Set when other is following node. */\n readonly DOCUMENT_POSITION_FOLLOWING: 0x04;\n /** Set when other is an ancestor of node. */\n readonly DOCUMENT_POSITION_CONTAINS: 0x08;\n /** Set when other is a descendant of node. */\n readonly DOCUMENT_POSITION_CONTAINED_BY: 0x10;\n readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: 0x20;\n\n\n /**\n * The read-only **`baseURI`** property of the Node interface returns the absolute base URL of the document containing the node.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Node/baseURI)\n */\n readonly baseURI: string;\n /**\n * The read-only **`childNodes`** property of the Node interface returns a live the first child node is assigned index `0`.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Node/childNodes)\n */\n readonly childNodes: NodeListOf<ChildNode>;\n /**\n * The read-only **`firstChild`** property of the Node interface returns the node's first child in the tree, or `null` if the node has no children.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Node/firstChild)\n */\n readonly firstChild: ChildNode | null;\n /**\n * The read-only **`isConnected`** property of the Node interface returns a boolean indicating whether the node is connected (directly or indirectly) to a Document object.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Node/isConnected)\n */\n readonly isConnected: boolean;\n /**\n * The read-only **`lastChild`** property of the Node interface returns the last child of the node, or `null` if there are no child nodes.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Node/lastChild)\n */\n readonly lastChild: ChildNode | null;\n /**\n * The read-only **`nextSibling`** property of the Node interface returns the node immediately following the specified one in their parent's Node.childNodes, or returns `null` if the specified node is the last child in the parent element.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Node/nextSibling)\n */\n readonly nextSibling: ChildNode | null;\n /**\n * The read-only **`nodeName`** property of Node returns the name of the current node as a string.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Node/nodeName)\n */\n readonly nodeName: string;\n /**\n * The read-only **`nodeType`** property of a Node interface is an integer that identifies what the node is.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Node/nodeType)\n */\n readonly nodeType: number;\n /**\n * The **`nodeValue`** property of the Node interface returns or sets the value of the current node.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Node/nodeValue)\n */\n nodeValue: string | null;\n /**\n * The read-only **`ownerDocument`** property of the Node interface returns the top-level document object of the node.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Node/ownerDocument)\n */\n readonly ownerDocument: Document | null;\n /**\n * The read-only **`parentElement`** property of Node interface returns the DOM node's parent Element, or `null` if the node either has no parent, or its parent isn't a DOM Element.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Node/parentElement)\n */\n readonly parentElement: HTMLElement | null;\n /**\n * The read-only **`parentNode`** property of the Node interface returns the parent of the specified node in the DOM tree.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Node/parentNode)\n */\n readonly parentNode: ParentNode | null;\n /**\n * The read-only **`previousSibling`** property of the Node interface returns the node immediately preceding the specified one in its parent's or `null` if the specified node is the first in that list.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Node/previousSibling)\n */\n readonly previousSibling: ChildNode | null;\n /**\n * The **`textContent`** property of the Node interface represents the text content of the node and its descendants.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Node/textContent)\n */\n textContent: string | null;\n /**\n * The **`appendChild()`** method of the Node interface adds a node to the end of the list of children of a specified parent node.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Node/appendChild)\n */\n appendChild<T extends Node>(node: T): T;\n /**\n * The **`cloneNode()`** method of the Node interface returns a duplicate of the node on which this method was called.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Node/cloneNode)\n */\n cloneNode(subtree?: boolean): Node;\n /**\n * The **`compareDocumentPosition()`** method of the Node interface reports the position of its argument node relative to the node on which it is called.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Node/compareDocumentPosition)\n */\n compareDocumentPosition(other: Node): number;\n /**\n * The **`contains()`** method of the Node interface returns a boolean value indicating whether a node is a descendant of a given node, that is the node itself, one of its direct children (Node.childNodes), one of the children's direct children, and so on.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Node/contains)\n */\n contains(other: Node | null): boolean;\n /**\n * The **`getRootNode()`** method of the Node interface returns the context object's root, which optionally includes the shadow root if it is available.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Node/getRootNode)\n */\n getRootNode(options?: GetRootNodeOptions): Node;\n /**\n * The **`hasChildNodes()`** method of the Node interface returns a boolean value indicating whether the given Node has child nodes or not.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Node/hasChildNodes)\n */\n hasChildNodes(): boolean;\n /**\n * The **`insertBefore()`** method of the Node interface inserts a node before a _reference node_ as a child of a specified _parent node_.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Node/insertBefore)\n */\n insertBefore<T extends Node>(node: T, child: Node | null): T;\n /**\n * The **`isDefaultNamespace()`** method of the Node interface accepts a namespace URI as an argument.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Node/isDefaultNamespace)\n */\n isDefaultNamespace(namespace: string | null): boolean;\n /**\n * The **`isEqualNode()`** method of the Node interface tests whether two nodes are equal.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Node/isEqualNode)\n */\n isEqualNode(otherNode: Node | null): boolean;\n /**\n * The **`isSameNode()`** method of the Node interface is a legacy alias the for the `===` strict equality operator.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Node/isSameNode)\n */\n isSameNode(otherNode: Node | null): boolean;\n /**\n * The **`lookupNamespaceURI()`** method of the Node interface takes a prefix as parameter and returns the namespace URI associated with it on the given node if found (and `null` if not).\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Node/lookupNamespaceURI)\n */\n lookupNamespaceURI(prefix: string | null): string | null;\n /**\n * The **`lookupPrefix()`** method of the Node interface returns a string containing the prefix for a given namespace URI, if present, and `null` if not.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Node/lookupPrefix)\n */\n lookupPrefix(namespace: string | null): string | null;\n /**\n * The **`normalize()`** method of the Node interface puts the specified node and all of its sub-tree into a _normalized_ form.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Node/normalize)\n */\n normalize(): void;\n /**\n * The **`removeChild()`** method of the Node interface removes a child node from the DOM and returns the removed node.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Node/removeChild)\n */\n removeChild<T extends Node>(child: T): T;\n /**\n * The **`replaceChild()`** method of the Node interface replaces a child node within the given (parent) node.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Node/replaceChild)\n */\n replaceChild<T extends Node>(node: Node, child: T): T;\n}"],
4
+ "sourcesContent": ["// import { type NodeListOf } from './collection/NodeListOf';\n// import { NodeList } from './collection/NodeList';\n// import { type ChildNode } from './ChildNode';\n// import { type ParentNode } from './ParentNode';\n// import { type Document } from './Document';\n// import { type HTMLElement } from './elements/HTMLElement';\n// import { type GetRootNodeOptions } from './GetRootNodeOptions';\n// Node \uC0C1\uC218\uB4E4\uC744 \uBCC4\uB3C4\uB85C export\nexport const ELEMENT_NODE = 1 as const;\nexport const ATTRIBUTE_NODE = 2 as const;\nexport const TEXT_NODE = 3 as const;\nexport const CDATA_SECTION_NODE = 4 as const;\nexport const ENTITY_REFERENCE_NODE = 5 as const;\nexport const ENTITY_NODE = 6 as const;\nexport const PROCESSING_INSTRUCTION_NODE = 7 as const;\nexport const COMMENT_NODE = 8 as const;\nexport const DOCUMENT_NODE = 9 as const;\nexport const DOCUMENT_TYPE_NODE = 10 as const;\nexport const DOCUMENT_FRAGMENT_NODE = 11 as const;\nexport const NOTATION_NODE = 12 as const;\nexport const DOCUMENT_POSITION_DISCONNECTED = 0x01 as const;\nexport const DOCUMENT_POSITION_PRECEDING = 0x02 as const;\nexport const DOCUMENT_POSITION_FOLLOWING = 0x04 as const;\nexport const DOCUMENT_POSITION_CONTAINS = 0x08 as const;\nexport const DOCUMENT_POSITION_CONTAINED_BY = 0x10 as const;\nexport const DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC = 0x20 as const;\n\n// export interface Event {\n// readonly type: string;\n// readonly target: any;\n// readonly currentTarget: any;\n// readonly bubbles: boolean;\n// readonly cancelable: boolean;\n// readonly defaultPrevented: boolean;\n// preventDefault(): void;\n// stopPropagation(): void;\n// stopImmediatePropagation(): void;\n// }\n//\n// export interface Node {\n// /** node is an element. */\n// readonly ELEMENT_NODE: 1;\n// readonly ATTRIBUTE_NODE: 2;\n// /** node is a Text node. */\n// readonly TEXT_NODE: 3;\n// /** node is a CDATASection node. */\n// readonly CDATA_SECTION_NODE: 4;\n// readonly ENTITY_REFERENCE_NODE: 5;\n// readonly ENTITY_NODE: 6;\n// /** node is a ProcessingInstruction node. */\n// readonly PROCESSING_INSTRUCTION_NODE: 7;\n// /** node is a Comment node. */\n// readonly COMMENT_NODE: 8;\n// /** node is a document. */\n// readonly DOCUMENT_NODE: 9;\n// /** node is a doctype. */\n// readonly DOCUMENT_TYPE_NODE: 10;\n// /** node is a DocumentFragment node. */\n// readonly DOCUMENT_FRAGMENT_NODE: 11;\n// readonly NOTATION_NODE: 12;\n// /** Set when node and other are not in the same tree. */\n// readonly DOCUMENT_POSITION_DISCONNECTED: 0x01;\n// /** Set when other is preceding node. */\n// readonly DOCUMENT_POSITION_PRECEDING: 0x02;\n// /** Set when other is following node. */\n// readonly DOCUMENT_POSITION_FOLLOWING: 0x04;\n// /** Set when other is an ancestor of node. */\n// readonly DOCUMENT_POSITION_CONTAINS: 0x08;\n// /** Set when other is a descendant of node. */\n// readonly DOCUMENT_POSITION_CONTAINED_BY: 0x10;\n// readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: 0x20;\n//\n// /**\n// * The read-only **`baseURI`** property of the Node interface returns the absolute base URL of the document containing the node.\n// *\n// * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Node/baseURI)\n// */\n// readonly baseURI: string;\n// /**\n// * The read-only **`childNodes`** property of the Node interface returns a live the first child node is assigned index `0`.\n// *\n// * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Node/childNodes)\n// */\n// readonly childNodes: NodeListOf<ChildNode>;\n// /**\n// * The read-only **`firstChild`** property of the Node interface returns the node's first child in the tree, or `null` if the node has no children.\n// *\n// * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Node/firstChild)\n// */\n// readonly firstChild: ChildNode | null;\n// /**\n// * The read-only **`isConnected`** property of the Node interface returns a boolean indicating whether the node is connected (directly or indirectly) to a Document object.\n// *\n// * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Node/isConnected)\n// */\n// readonly isConnected: boolean;\n// /**\n// * The read-only **`lastChild`** property of the Node interface returns the last child of the node, or `null` if there are no child nodes.\n// *\n// * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Node/lastChild)\n// */\n// readonly lastChild: ChildNode | null;\n// /**\n// * The read-only **`nextSibling`** property of the Node interface returns the node immediately following the specified one in their parent's Node.childNodes, or returns `null` if the specified node is the last child in the parent element.\n// *\n// * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Node/nextSibling)\n// */\n// readonly nextSibling: ChildNode | null;\n// /**\n// * The read-only **`nodeName`** property of Node returns the name of the current node as a string.\n// *\n// * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Node/nodeName)\n// */\n// readonly nodeName: string;\n// /**\n// * The read-only **`nodeType`** property of a Node interface is an integer that identifies what the node is.\n// *\n// * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Node/nodeType)\n// */\n// readonly nodeType: number;\n// /**\n// * The **`nodeValue`** property of the Node interface returns or sets the value of the current node.\n// *\n// * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Node/nodeValue)\n// */\n// nodeValue: string | null;\n// /**\n// * The read-only **`ownerDocument`** property of the Node interface returns the top-level document object of the node.\n// *\n// * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Node/ownerDocument)\n// */\n// readonly ownerDocument: Document | null;\n// /**\n// * The read-only **`parentElement`** property of Node interface returns the DOM node's parent Element, or `null` if the node either has no parent, or its parent isn't a DOM Element.\n// *\n// * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Node/parentElement)\n// */\n// readonly parentElement: HTMLElement | null;\n// /**\n// * The read-only **`parentNode`** property of the Node interface returns the parent of the specified node in the DOM tree.\n// *\n// * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Node/parentNode)\n// */\n// readonly parentNode: ParentNode | null;\n// /**\n// * The read-only **`previousSibling`** property of the Node interface returns the node immediately preceding the specified one in its parent's or `null` if the specified node is the first in that list.\n// *\n// * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Node/previousSibling)\n// */\n// readonly previousSibling: ChildNode | null;\n// /**\n// * The **`textContent`** property of the Node interface represents the text content of the node and its descendants.\n// *\n// * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Node/textContent)\n// */\n// textContent: string | null;\n// /**\n// * The **`appendChild()`** method of the Node interface adds a node to the end of the list of children of a specified parent node.\n// *\n// * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Node/appendChild)\n// */\n// appendChild<T extends Node>(node: T): T;\n// /**\n// * The **`cloneNode()`** method of the Node interface returns a duplicate of the node on which this method was called.\n// *\n// * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Node/cloneNode)\n// */\n// cloneNode(subtree?: boolean): Node;\n// /**\n// * The **`compareDocumentPosition()`** method of the Node interface reports the position of its argument node relative to the node on which it is called.\n// *\n// * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Node/compareDocumentPosition)\n// */\n// compareDocumentPosition(other: Node): number;\n// /**\n// * The **`contains()`** method of the Node interface returns a boolean value indicating whether a node is a descendant of a given node, that is the node itself, one of its direct children (Node.childNodes), one of the children's direct children, and so on.\n// *\n// * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Node/contains)\n// */\n// contains(other: Node | null): boolean;\n// /**\n// * The **`getRootNode()`** method of the Node interface returns the context object's root, which optionally includes the shadow root if it is available.\n// *\n// * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Node/getRootNode)\n// */\n// getRootNode(options?: GetRootNodeOptions): Node;\n// /**\n// * The **`hasChildNodes()`** method of the Node interface returns a boolean value indicating whether the given Node has child nodes or not.\n// *\n// * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Node/hasChildNodes)\n// */\n// hasChildNodes(): boolean;\n// /**\n// * The **`insertBefore()`** method of the Node interface inserts a node before a _reference node_ as a child of a specified _parent node_.\n// *\n// * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Node/insertBefore)\n// */\n// insertBefore<T extends Node>(node: T, child: Node | null): T;\n// /**\n// * The **`isDefaultNamespace()`** method of the Node interface accepts a namespace URI as an argument.\n// *\n// * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Node/isDefaultNamespace)\n// */\n// isDefaultNamespace(namespace: string | null): boolean;\n// /**\n// * The **`isEqualNode()`** method of the Node interface tests whether two nodes are equal.\n// *\n// * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Node/isEqualNode)\n// */\n// isEqualNode(otherNode: Node | null): boolean;\n// /**\n// * The **`isSameNode()`** method of the Node interface is a legacy alias the for the `===` strict equality operator.\n// *\n// * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Node/isSameNode)\n// */\n// isSameNode(otherNode: Node | null): boolean;\n// /**\n// * The **`lookupNamespaceURI()`** method of the Node interface takes a prefix as parameter and returns the namespace URI associated with it on the given node if found (and `null` if not).\n// *\n// * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Node/lookupNamespaceURI)\n// */\n// lookupNamespaceURI(prefix: string | null): string | null;\n// /**\n// * The **`lookupPrefix()`** method of the Node interface returns a string containing the prefix for a given namespace URI, if present, and `null` if not.\n// *\n// * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Node/lookupPrefix)\n// */\n// lookupPrefix(namespace: string | null): string | null;\n// /**\n// * The **`normalize()`** method of the Node interface puts the specified node and all of its sub-tree into a _normalized_ form.\n// *\n// * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Node/normalize)\n// */\n// normalize(): void;\n// /**\n// * The **`removeChild()`** method of the Node interface removes a child node from the DOM and returns the removed node.\n// *\n// * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Node/removeChild)\n// */\n// removeChild<T extends Node>(child: T): T;\n// /**\n// * The **`replaceChild()`** method of the Node interface replaces a child node within the given (parent) node.\n// *\n// * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Node/replaceChild)\n// */\n// replaceChild<T extends Node>(node: Node, child: T): T;\n//\n// // Add event methods manually to Node interface to avoid conflict with EventTarget\n// addEventListener(type: string, listener: any, options?: any): void;\n// removeEventListener(type: string, listener: any, options?: any): void;\n// dispatchEvent(event: any): boolean;\n// }\n"],
5
5
  "mappings": "AAQO,MAAM,eAAe;AACrB,MAAM,iBAAiB;AACvB,MAAM,YAAY;AAClB,MAAM,qBAAqB;AAC3B,MAAM,wBAAwB;AAC9B,MAAM,cAAc;AACpB,MAAM,8BAA8B;AACpC,MAAM,eAAe;AACrB,MAAM,gBAAgB;AACtB,MAAM,qBAAqB;AAC3B,MAAM,yBAAyB;AAC/B,MAAM,gBAAgB;AACtB,MAAM,iCAAiC;AACvC,MAAM,8BAA8B;AACpC,MAAM,8BAA8B;AACpC,MAAM,6BAA6B;AACnC,MAAM,iCAAiC;AACvC,MAAM,4CAA4C;",
6
6
  "names": []
7
7
  }
@@ -1,24 +1,5 @@
1
- import {
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.js";
21
- import { NodeListOf } from "./collection/NodeListOf.js";
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.js";
2
+ import { NodeListOfImp } from "./collection/NodeListOfImp.js";
22
3
  class NodeBase {
23
4
  constructor(nodeType, nodeName, ownerDocument) {
24
5
  this.nodeType = nodeType;
@@ -31,15 +12,46 @@ class NodeBase {
31
12
  // Made public for ChildNodeBase access
32
13
  this._nodeValue = null;
33
14
  this._textContent = null;
15
+ this._eventListeners = [];
34
16
  this._ownerDocument = ownerDocument || null;
35
17
  }
18
+ addEventListener(type, listener, options) {
19
+ this._eventListeners.push({
20
+ type,
21
+ listener: typeof listener === "function" ? listener : listener?.handleEvent,
22
+ options
23
+ });
24
+ }
25
+ removeEventListener(type, listener, _options) {
26
+ const targetListener = typeof listener === "function" ? listener : listener?.handleEvent;
27
+ this._eventListeners = this._eventListeners.filter((l) => !(l.type === type && l.listener === targetListener));
28
+ }
29
+ dispatchEvent(event) {
30
+ const type = typeof event === "string" ? event : event.type;
31
+ const listeners = this._eventListeners.filter((l) => l.type === type);
32
+ for (const l of listeners) {
33
+ try {
34
+ if (typeof l.listener === "function") {
35
+ l.listener.call(this, event);
36
+ } else if (l.listener && typeof l.listener.handleEvent === "function") {
37
+ l.listener.handleEvent(event);
38
+ }
39
+ if (l.options?.once) {
40
+ this.removeEventListener(type, l.listener, l.options);
41
+ }
42
+ } catch (e) {
43
+ console.error(`Error in event listener for ${type}:`, e);
44
+ }
45
+ }
46
+ return true;
47
+ }
36
48
  // Node interface implementation
37
49
  get baseURI() {
38
50
  return this._ownerDocument?.URL || "";
39
51
  }
40
52
  // External interface - returns proper Node interface types
41
53
  get childNodes() {
42
- return new NodeListOf(this._childNodesInternal);
54
+ return new NodeListOfImp(this._childNodesInternal);
43
55
  }
44
56
  get firstChild() {
45
57
  return this._childNodesInternal.length > 0 ? this._childNodesInternal[0] : null;
@@ -191,6 +203,10 @@ class NodeBase {
191
203
  this._childNodesInternal.push(nodeBase);
192
204
  nodeBase._parentNodeInternal = this;
193
205
  nodeBase._ownerDocument = this._ownerDocument;
206
+ if (this.isConnected && nodeBase.connectedCallback) {
207
+ console.log(`[NodeBase] Calling connectedCallback for <${nodeBase.nodeName}>`);
208
+ nodeBase.connectedCallback();
209
+ }
194
210
  return node;
195
211
  }
196
212
  removeChild(child) {
@@ -199,8 +215,12 @@ class NodeBase {
199
215
  if (index === -1) {
200
216
  throw new Error("Node not found");
201
217
  }
218
+ const wasConnected = childBase.isConnected;
202
219
  this._childNodesInternal.splice(index, 1);
203
220
  childBase._parentNodeInternal = null;
221
+ if (wasConnected && childBase.disconnectedCallback) {
222
+ childBase.disconnectedCallback();
223
+ }
204
224
  return child;
205
225
  }
206
226
  insertBefore(node, child) {
@@ -232,6 +252,9 @@ class NodeBase {
232
252
  this._childNodesInternal.splice(index, 0, nodeBase);
233
253
  nodeBase._parentNodeInternal = this;
234
254
  nodeBase._ownerDocument = this._ownerDocument;
255
+ if (this.isConnected && nodeBase.connectedCallback) {
256
+ nodeBase.connectedCallback();
257
+ }
235
258
  return node;
236
259
  }
237
260
  replaceChild(node, child) {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/node/NodeBase.ts"],
4
- "sourcesContent": ["import { Node,\n ELEMENT_NODE ,\n ATTRIBUTE_NODE ,\n TEXT_NODE ,\n CDATA_SECTION_NODE ,\n ENTITY_REFERENCE_NODE ,\n ENTITY_NODE ,\n PROCESSING_INSTRUCTION_NODE ,\n COMMENT_NODE ,\n DOCUMENT_NODE ,\n DOCUMENT_TYPE_NODE ,\n DOCUMENT_FRAGMENT_NODE ,\n NOTATION_NODE ,\n DOCUMENT_POSITION_DISCONNECTED ,\n DOCUMENT_POSITION_PRECEDING ,\n DOCUMENT_POSITION_FOLLOWING ,\n DOCUMENT_POSITION_CONTAINS ,\n DOCUMENT_POSITION_CONTAINED_BY ,\n DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC\n} from './Node';\nimport { ChildNode } from './ChildNode';\nimport { ParentNode } from './ParentNode';\nimport { NodeListOf } from './collection/NodeListOf';\nimport { GetRootNodeOptions } from './GetRootNodeOptions';\nimport { HTMLElement } from './elements/HTMLElement';\nimport { Document } from './Document';\nimport { Text } from './Text';\n\n/**\n * Base implementation of the Node interface\n */\nexport abstract class NodeBase implements Node {\n // Node constants as instance properties\n static readonly ELEMENT_NODE = ELEMENT_NODE;\n static readonly ATTRIBUTE_NODE = ATTRIBUTE_NODE;\n static readonly TEXT_NODE = TEXT_NODE;\n static readonly CDATA_SECTION_NODE = CDATA_SECTION_NODE;\n static readonly ENTITY_REFERENCE_NODE = ENTITY_REFERENCE_NODE;\n static readonly ENTITY_NODE = ENTITY_NODE;\n static readonly PROCESSING_INSTRUCTION_NODE = PROCESSING_INSTRUCTION_NODE;\n static readonly COMMENT_NODE = COMMENT_NODE;\n static readonly DOCUMENT_NODE = DOCUMENT_NODE;\n static readonly DOCUMENT_TYPE_NODE = DOCUMENT_TYPE_NODE;\n static readonly DOCUMENT_FRAGMENT_NODE = DOCUMENT_FRAGMENT_NODE;\n static readonly NOTATION_NODE = NOTATION_NODE;\n static readonly DOCUMENT_POSITION_DISCONNECTED = DOCUMENT_POSITION_DISCONNECTED;\n static readonly DOCUMENT_POSITION_PRECEDING = DOCUMENT_POSITION_PRECEDING;\n static readonly DOCUMENT_POSITION_FOLLOWING = DOCUMENT_POSITION_FOLLOWING;\n static readonly DOCUMENT_POSITION_CONTAINS = DOCUMENT_POSITION_CONTAINS;\n static readonly DOCUMENT_POSITION_CONTAINED_BY = DOCUMENT_POSITION_CONTAINED_BY;\n static readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC = DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC;\n\n ELEMENT_NODE: typeof ELEMENT_NODE;\n ATTRIBUTE_NODE: typeof ATTRIBUTE_NODE;\n TEXT_NODE: typeof TEXT_NODE;\n CDATA_SECTION_NODE: typeof CDATA_SECTION_NODE;\n ENTITY_REFERENCE_NODE: typeof ENTITY_REFERENCE_NODE;\n ENTITY_NODE: typeof ENTITY_NODE;\n PROCESSING_INSTRUCTION_NODE: typeof PROCESSING_INSTRUCTION_NODE;\n COMMENT_NODE: typeof COMMENT_NODE;\n DOCUMENT_NODE: typeof DOCUMENT_NODE;\n DOCUMENT_TYPE_NODE: typeof DOCUMENT_TYPE_NODE;\n DOCUMENT_FRAGMENT_NODE: typeof DOCUMENT_FRAGMENT_NODE;\n NOTATION_NODE: typeof NOTATION_NODE;\n DOCUMENT_POSITION_DISCONNECTED: typeof DOCUMENT_POSITION_DISCONNECTED;\n DOCUMENT_POSITION_PRECEDING: typeof DOCUMENT_POSITION_PRECEDING;\n DOCUMENT_POSITION_FOLLOWING: typeof DOCUMENT_POSITION_FOLLOWING;\n DOCUMENT_POSITION_CONTAINS: typeof DOCUMENT_POSITION_CONTAINS;\n DOCUMENT_POSITION_CONTAINED_BY: typeof DOCUMENT_POSITION_CONTAINED_BY;\n DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: typeof DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC;\n // Internal properties (for Base class implementations)\n protected _childNodesInternal: NodeBase[] = [];\n public _parentNodeInternal: NodeBase | null = null; // Internal parent reference\n public _ownerDocument: Document | null = null; // Made public for ChildNodeBase access\n protected _nodeValue: string | null = null;\n protected _textContent: string | null = null;\n\n constructor(\n public readonly nodeType: number,\n public readonly nodeName: string,\n ownerDocument?: Document | null\n ) {\n this._ownerDocument = ownerDocument || null;\n }\n\n\n\n // Node interface implementation\n get baseURI(): string {\n return this._ownerDocument?.URL || '';\n }\n\n // External interface - returns proper Node interface types\n get childNodes(): NodeListOf<ChildNode> {\n return new NodeListOf<ChildNode>(this._childNodesInternal as unknown as ChildNode[]);\n }\n\n get firstChild(): ChildNode | null {\n return this._childNodesInternal.length > 0 ? this._childNodesInternal[0] as unknown as ChildNode : null;\n }\n\n get lastChild(): ChildNode | null {\n const length = this._childNodesInternal.length;\n return length > 0 ? this._childNodesInternal[length - 1] as unknown as ChildNode : null;\n }\n\n get nextSibling(): ChildNode | null {\n if (!this._parentNodeInternal) return null;\n const siblings = this._parentNodeInternal._childNodesInternal;\n const index = this._findIndexInParent();\n return index !== -1 && index < siblings.length - 1 ? siblings[index + 1] as unknown as ChildNode : null;\n }\n\n get previousSibling(): ChildNode | null {\n if (!this._parentNodeInternal) return null;\n const siblings = this._parentNodeInternal._childNodesInternal;\n const index = this._findIndexInParent();\n return index > 0 ? siblings[index - 1] as unknown as ChildNode : null;\n }\n\n get parentNode(): ParentNode | null {\n return this._parentNodeInternal as unknown as ParentNode | null;\n }\n\n get parentElement(): HTMLElement | null {\n return this._parentNodeInternal && this._parentNodeInternal.nodeType === ELEMENT_NODE\n ? this._parentNodeInternal as unknown as HTMLElement\n : null;\n }\n\n get ownerDocument(): Document | null {\n return this._ownerDocument;\n }\n\n get isConnected(): boolean {\n let node: Node | null = this;\n while (node) {\n if (node.nodeType === DOCUMENT_NODE) return true;\n node = node.parentNode;\n }\n return false;\n }\n\n get nodeValue(): string | null {\n return this._nodeValue;\n }\n\n set nodeValue(value: string | null) {\n this._nodeValue = value;\n }\n\n get textContent(): string | null {\n if (this.nodeType === TEXT_NODE || this.nodeType === COMMENT_NODE) {\n // For text nodes, decode HTML entities to return original text\n return this._nodeValue ? this.decodeHTMLEntities(this._nodeValue) : this._nodeValue;\n }\n\n // For elements, return the stored original text content if available\n if (this._textContent !== undefined && this._textContent !== null) {\n return this._textContent;\n }\n\n // Fallback: collect from children (for HTML parsed content)\n let text = '';\n for (const child of this._childNodesInternal) {\n const childText = child.textContent;\n if (childText !== null && childText !== undefined) {\n text += childText;\n }\n }\n return text.length > 0 ? text : null;\n }\n\n set textContent(value: string | null) {\n // Convert to string (including null and undefined)\n const stringValue = String(value);\n // Store original text content\n this._textContent = stringValue;\n // Clear all children and add a single text node\n this._childNodesInternal = [];\n if (stringValue) {\n // Create text node implementation with escaped value for innerHTML\n const escapedValue = this.escapeHTMLEntities(stringValue);\n const { TextBase } = require('./TextBase');\n const textNode = new TextBase(escapedValue, this._ownerDocument);\n this._childNodesInternal.push(textNode);\n textNode._parentNodeInternal = this;\n }\n }\n\n /**\n * Escape HTML entities in a string to prevent XSS\n */\n protected escapeHTMLEntities(str: string): string {\n const entityMap: { [key: string]: string } = {\n '&': '&amp;',\n '<': '&lt;',\n '>': '&gt;',\n '\"': '&quot;',\n \"'\": '&#39;'\n };\n\n return str.replace(/[&<>\"']/g, (char) => {\n return entityMap[char] || char;\n });\n }\n\n /**\n * Decode HTML entities in a string\n */\n protected decodeHTMLEntities(str: string): string {\n const entityMap: { [key: string]: string } = {\n '&amp;': '&',\n '&lt;': '<',\n '&gt;': '>',\n '&quot;': '\"',\n '&#39;': \"'\",\n '&#34;': '\"',\n '&apos;': \"'\",\n '&copy;': '\u00A9',\n '&reg;': '\u00AE',\n '&trade;': '\u2122',\n '&nbsp;': ' ',\n '&hellip;': '\u2026',\n '&mdash;': '\u2014',\n '&ndash;': '\u2013',\n '&lsquo;': '\\u2018',\n '&rsquo;': '\\u2019',\n '&ldquo;': '\"',\n '&rdquo;': '\"'\n };\n\n return str.replace(/&[a-zA-Z0-9#]+;/g, (entity) => {\n // Handle named entities\n if (entityMap[entity]) {\n return entityMap[entity];\n }\n \n // Handle numeric entities like &#39; &#34;\n if (entity.startsWith('&#') && entity.endsWith(';')) {\n const numStr = entity.slice(2, -1);\n const num = parseInt(numStr, 10);\n if (!isNaN(num)) {\n return String.fromCharCode(num);\n }\n }\n \n // Handle hex entities like &#x27;\n if (entity.startsWith('&#x') && entity.endsWith(';')) {\n const hexStr = entity.slice(3, -1);\n const num = parseInt(hexStr, 16);\n if (!isNaN(num)) {\n return String.fromCharCode(num);\n }\n }\n \n // Return original if not recognized\n return entity;\n });\n }\n\n // Node methods - external interface uses Node types, internal uses NodeBase\n appendChild<T extends Node>(node: T): T {\n const nodeBase = node as any as NodeBase; // Internal cast\n\n // Special handling for DocumentFragment\n if (nodeBase.nodeType === DOCUMENT_FRAGMENT_NODE) {\n // When appending a DocumentFragment, move its children instead\n const fragment = nodeBase;\n \n // Move all children from fragment to this node\n while (fragment._childNodesInternal.length > 0) {\n const child = fragment._childNodesInternal[0];\n if (child) {\n fragment.removeChild(child);\n this.appendChild(child);\n }\n }\n \n return node;\n }\n\n if (nodeBase._parentNodeInternal) {\n nodeBase._parentNodeInternal.removeChild(nodeBase);\n }\n\n this._childNodesInternal.push(nodeBase);\n nodeBase._parentNodeInternal = this;\n nodeBase._ownerDocument = this._ownerDocument;\n\n return node;\n }\n\n removeChild<T extends Node>(child: T): T {\n const childBase = child as any as NodeBase; // Internal cast\n const index = this._findChildIndex(childBase);\n if (index === -1) {\n throw new Error('Node not found');\n }\n\n this._childNodesInternal.splice(index, 1);\n childBase._parentNodeInternal = null;\n\n return child;\n }\n\n insertBefore<T extends Node>(node: T, child: Node | null): T {\n if (child === null) {\n return this.appendChild(node);\n }\n\n const nodeBase = node as any as NodeBase; // Internal cast\n const childBase = child as any as NodeBase; // Internal cast\n const index = this._findChildIndex(childBase);\n if (index === -1) {\n throw new Error('Reference node not found');\n }\n\n // Handle DocumentFragment - move all its children\n if (nodeBase.nodeType === DOCUMENT_FRAGMENT_NODE) {\n const fragment = nodeBase as any;\n const children = [...fragment._childNodesInternal]; // Copy array to avoid modification during iteration\n \n let insertIndex = index;\n for (const fragmentChild of children) {\n // Remove from fragment\n fragment.removeChild(fragmentChild);\n // Insert at the current insert position\n this._childNodesInternal.splice(insertIndex, 0, fragmentChild);\n fragmentChild._parentNodeInternal = this;\n fragmentChild._ownerDocument = this._ownerDocument;\n // Increment insert index for next child to maintain order\n insertIndex++;\n }\n \n return node;\n }\n\n if (nodeBase._parentNodeInternal) {\n nodeBase._parentNodeInternal.removeChild(nodeBase);\n }\n\n this._childNodesInternal.splice(index, 0, nodeBase);\n nodeBase._parentNodeInternal = this;\n nodeBase._ownerDocument = this._ownerDocument;\n\n return node;\n }\n\n replaceChild<T extends Node>(node: Node, child: T): T {\n this.insertBefore(node, child);\n this.removeChild(child);\n return child;\n }\n\n cloneNode(deep?: boolean): Node {\n // Basic clone implementation - would need to be overridden by specific node types\n throw new Error('cloneNode must be implemented by subclasses');\n }\n\n hasChildNodes(): boolean {\n return this._childNodesInternal.length > 0;\n }\n\n contains(other: Node | null): boolean {\n if (!other || other === this) return other === this;\n\n let node: Node | null = other;\n while (node) {\n if (node.parentNode === this as unknown as ParentNode) return true;\n node = node.parentNode;\n }\n return false;\n }\n\n compareDocumentPosition(other: Node): number {\n if (this === other) return 0;\n \n const otherBase = other as any as NodeBase;\n \n // Check if nodes are disconnected (not in same tree)\n const thisRoot = this.getRootNode();\n const otherRoot = otherBase.getRootNode();\n if (thisRoot !== otherRoot) {\n return DOCUMENT_POSITION_DISCONNECTED;\n }\n \n // Check containment relationships\n if (this.contains(other)) return DOCUMENT_POSITION_CONTAINED_BY;\n if (other.contains(this)) return DOCUMENT_POSITION_CONTAINS;\n \n // Find document order by traversing up to common ancestor\n const thisAncestors = this._getAncestors();\n const otherAncestors = otherBase._getAncestors();\n \n // Find common ancestor\n let commonAncestor: NodeBase | null = null;\n for (let i = 0; i < thisAncestors.length; i++) {\n if (otherAncestors.includes(thisAncestors[i])) {\n commonAncestor = thisAncestors[i];\n break;\n }\n }\n \n if (!commonAncestor) {\n return DOCUMENT_POSITION_DISCONNECTED;\n }\n \n // Compare positions within common ancestor\n const thisChild = this._getChildInAncestor(commonAncestor);\n const otherChild = otherBase._getChildInAncestor(commonAncestor);\n \n if (thisChild && otherChild && commonAncestor._childNodesInternal) {\n const thisIndex = commonAncestor._childNodesInternal.indexOf(thisChild);\n const otherIndex = commonAncestor._childNodesInternal.indexOf(otherChild);\n \n if (thisIndex < otherIndex) {\n return DOCUMENT_POSITION_FOLLOWING;\n } else if (thisIndex > otherIndex) {\n return DOCUMENT_POSITION_PRECEDING;\n }\n }\n \n return DOCUMENT_POSITION_DISCONNECTED;\n }\n\n getRootNode(options?: GetRootNodeOptions): Node {\n let root: Node = this;\n while (root.parentNode) {\n root = root.parentNode;\n }\n return root;\n }\n\n isEqualNode(otherNode: Node | null): boolean {\n if (!otherNode) return false;\n if (this === otherNode) return true;\n if (this.nodeType !== otherNode.nodeType) return false;\n if (this.nodeName !== otherNode.nodeName) return false;\n return true; // Simplified comparison\n }\n\n isSameNode(otherNode: Node | null): boolean {\n return this === otherNode;\n }\n\n isDefaultNamespace(namespace: string | null): boolean {\n // Simplified implementation\n return namespace === null || namespace === 'http://www.w3.org/1999/xhtml';\n }\n\n lookupNamespaceURI(prefix: string | null): string | null {\n // Simplified implementation\n if (prefix === null || prefix === '') {\n return 'http://www.w3.org/1999/xhtml';\n }\n return null;\n }\n\n lookupPrefix(namespace: string | null): string | null {\n // Simplified implementation\n return null;\n }\n\n normalize(): void {\n // Merge adjacent text nodes\n for (let i = this._childNodesInternal.length - 1; i >= 0; i--) {\n const child = this._childNodesInternal[i];\n if (child && child.nodeType === TEXT_NODE) {\n const nextSibling = child.nextSibling;\n if (nextSibling && nextSibling.nodeType === TEXT_NODE) {\n child.nodeValue = (child.nodeValue || '') + (nextSibling.nodeValue || '');\n this.removeChild(nextSibling);\n }\n }\n }\n }\n\n // Helper methods\n private _findIndexInParent(): number {\n if (!this._parentNodeInternal) return -1;\n return this._parentNodeInternal._childNodesInternal.indexOf(this);\n }\n\n private _findChildIndex(child: NodeBase): number {\n return this._childNodesInternal.indexOf(child);\n }\n\n private _getAncestors(): NodeBase[] {\n const ancestors: NodeBase[] = [];\n let current: NodeBase | null = this._parentNodeInternal;\n while (current) {\n ancestors.push(current);\n current = current._parentNodeInternal;\n }\n return ancestors;\n }\n\n private _getChildInAncestor(ancestor: NodeBase): NodeBase | null {\n let current: NodeBase = this;\n while (current._parentNodeInternal && current._parentNodeInternal !== ancestor) {\n current = current._parentNodeInternal;\n }\n return current._parentNodeInternal === ancestor ? current : null;\n }\n}"],
5
- "mappings": "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",
4
+ "sourcesContent": ["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';\nimport { NodeListOfImp } from './collection/NodeListOfImp';\nimport { GetRootNodeOptions } from './GetRootNodeOptions';\n\n/**\n * Base implementation of the Node interface\n */\nexport abstract class NodeBase implements Node {\n // Node constants as instance properties\n static readonly ELEMENT_NODE = ELEMENT_NODE;\n static readonly ATTRIBUTE_NODE = ATTRIBUTE_NODE;\n static readonly TEXT_NODE = TEXT_NODE;\n static readonly CDATA_SECTION_NODE = CDATA_SECTION_NODE;\n static readonly ENTITY_REFERENCE_NODE = ENTITY_REFERENCE_NODE;\n static readonly ENTITY_NODE = ENTITY_NODE;\n static readonly PROCESSING_INSTRUCTION_NODE = PROCESSING_INSTRUCTION_NODE;\n static readonly COMMENT_NODE = COMMENT_NODE;\n static readonly DOCUMENT_NODE = DOCUMENT_NODE;\n static readonly DOCUMENT_TYPE_NODE = DOCUMENT_TYPE_NODE;\n static readonly DOCUMENT_FRAGMENT_NODE = DOCUMENT_FRAGMENT_NODE;\n static readonly NOTATION_NODE = NOTATION_NODE;\n static readonly DOCUMENT_POSITION_DISCONNECTED = DOCUMENT_POSITION_DISCONNECTED;\n static readonly DOCUMENT_POSITION_PRECEDING = DOCUMENT_POSITION_PRECEDING;\n static readonly DOCUMENT_POSITION_FOLLOWING = DOCUMENT_POSITION_FOLLOWING;\n static readonly DOCUMENT_POSITION_CONTAINS = DOCUMENT_POSITION_CONTAINS;\n static readonly DOCUMENT_POSITION_CONTAINED_BY = DOCUMENT_POSITION_CONTAINED_BY;\n static readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC = DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC;\n\n ELEMENT_NODE: typeof ELEMENT_NODE;\n ATTRIBUTE_NODE: typeof ATTRIBUTE_NODE;\n TEXT_NODE: typeof TEXT_NODE;\n CDATA_SECTION_NODE: typeof CDATA_SECTION_NODE;\n ENTITY_REFERENCE_NODE: typeof ENTITY_REFERENCE_NODE;\n ENTITY_NODE: typeof ENTITY_NODE;\n PROCESSING_INSTRUCTION_NODE: typeof PROCESSING_INSTRUCTION_NODE;\n COMMENT_NODE: typeof COMMENT_NODE;\n DOCUMENT_NODE: typeof DOCUMENT_NODE;\n DOCUMENT_TYPE_NODE: typeof DOCUMENT_TYPE_NODE;\n DOCUMENT_FRAGMENT_NODE: typeof DOCUMENT_FRAGMENT_NODE;\n NOTATION_NODE: typeof NOTATION_NODE;\n DOCUMENT_POSITION_DISCONNECTED: typeof DOCUMENT_POSITION_DISCONNECTED;\n DOCUMENT_POSITION_PRECEDING: typeof DOCUMENT_POSITION_PRECEDING;\n DOCUMENT_POSITION_FOLLOWING: typeof DOCUMENT_POSITION_FOLLOWING;\n DOCUMENT_POSITION_CONTAINS: typeof DOCUMENT_POSITION_CONTAINS;\n DOCUMENT_POSITION_CONTAINED_BY: typeof DOCUMENT_POSITION_CONTAINED_BY;\n DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: typeof DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC;\n // Internal properties (for Base class implementations)\n protected _childNodesInternal: NodeBase[] = [];\n public _parentNodeInternal: NodeBase | null = null; // Internal parent reference\n public _ownerDocument: Document | null = null; // Made public for ChildNodeBase access\n protected _nodeValue: string | null = null;\n protected _textContent: string | null = null;\n protected _eventListeners: Array<{ type: string; listener: any; options?: any }> = [];\n\n constructor(\n public nodeType: number,\n public nodeName: string,\n ownerDocument?: Document | null\n ) {\n this._ownerDocument = ownerDocument || null;\n }\n\n addEventListener(type: string, listener: any, options?: any): void {\n this._eventListeners.push({\n type,\n listener: typeof listener === 'function' ? listener : listener?.handleEvent,\n options\n });\n }\n\n removeEventListener(type: string, listener: any, _options?: any): void {\n const targetListener = typeof listener === 'function' ? listener : listener?.handleEvent;\n this._eventListeners = this._eventListeners.filter(l => !(l.type === type && l.listener === targetListener));\n }\n\n dispatchEvent(event: any): boolean {\n // Simple implementation: only trigger listeners on this node (no bubbling for now)\n const type = typeof event === 'string' ? event : event.type;\n const listeners = this._eventListeners.filter(l => l.type === type);\n for (const l of listeners) {\n try {\n if (typeof l.listener === 'function') {\n l.listener.call(this, event);\n } else if (l.listener && typeof l.listener.handleEvent === 'function') {\n l.listener.handleEvent(event);\n }\n\n if (l.options?.once) {\n this.removeEventListener(type, l.listener, l.options);\n }\n } catch (e) {\n console.error(`Error in event listener for ${type}:`, e);\n }\n }\n return true;\n }\n\n // Node interface implementation\n get baseURI(): string {\n return this._ownerDocument?.URL || '';\n }\n\n // External interface - returns proper Node interface types\n get childNodes(): NodeListOf<ChildNode> {\n return new NodeListOfImp<ChildNode>(this._childNodesInternal as unknown as ChildNode[]) as unknown as NodeListOf<ChildNode>;\n }\n\n get firstChild(): ChildNode | null {\n return this._childNodesInternal.length > 0 ? (this._childNodesInternal[0] as unknown as ChildNode) : null;\n }\n\n get lastChild(): ChildNode | null {\n const length = this._childNodesInternal.length;\n return length > 0 ? (this._childNodesInternal[length - 1] as unknown as ChildNode) : null;\n }\n\n get nextSibling(): ChildNode | null {\n if (!this._parentNodeInternal) return null;\n const siblings = this._parentNodeInternal._childNodesInternal;\n const index = this._findIndexInParent();\n return index !== -1 && index < siblings.length - 1 ? (siblings[index + 1] as unknown as ChildNode) : null;\n }\n\n get previousSibling(): ChildNode | null {\n if (!this._parentNodeInternal) return null;\n const siblings = this._parentNodeInternal._childNodesInternal;\n const index = this._findIndexInParent();\n return index > 0 ? (siblings[index - 1] as unknown as ChildNode) : null;\n }\n\n get parentNode(): ParentNode | null {\n return this._parentNodeInternal as unknown as ParentNode | null;\n }\n\n get parentElement(): HTMLElement | null {\n return this._parentNodeInternal && this._parentNodeInternal.nodeType === ELEMENT_NODE ? (this._parentNodeInternal as unknown as HTMLElement) : null;\n }\n\n get ownerDocument(): Document | null {\n return this._ownerDocument;\n }\n\n get isConnected(): boolean {\n let node: Node | null = this;\n while (node) {\n if (node.nodeType === DOCUMENT_NODE) return true;\n node = node.parentNode;\n }\n return false;\n }\n\n get nodeValue(): string | null {\n return this._nodeValue;\n }\n\n set nodeValue(value: string | null) {\n this._nodeValue = value;\n }\n\n get textContent(): string | null {\n if (this.nodeType === TEXT_NODE || this.nodeType === COMMENT_NODE) {\n // For text nodes, decode HTML entities to return original text\n return this._nodeValue ? this.decodeHTMLEntities(this._nodeValue) : this._nodeValue;\n }\n\n // For elements, return the stored original text content if available\n if (this._textContent !== undefined && this._textContent !== null) {\n return this._textContent;\n }\n\n // Fallback: collect from children (for HTML parsed content)\n let text = '';\n for (const child of this._childNodesInternal) {\n const childText = child.textContent;\n if (childText !== null && childText !== undefined) {\n text += childText;\n }\n }\n return text.length > 0 ? text : null;\n }\n\n set textContent(value: string | null) {\n // Convert to string (including null and undefined)\n const stringValue = String(value);\n // Store original text content\n this._textContent = stringValue;\n // Clear all children and add a single text node\n this._childNodesInternal = [];\n if (stringValue) {\n // Create text node implementation with escaped value for innerHTML\n const escapedValue = this.escapeHTMLEntities(stringValue);\n const { TextBase } = require('./TextBase');\n const textNode = new TextBase(escapedValue, this._ownerDocument);\n this._childNodesInternal.push(textNode);\n textNode._parentNodeInternal = this;\n }\n }\n\n /**\n * Escape HTML entities in a string to prevent XSS\n */\n protected escapeHTMLEntities(str: string): string {\n const entityMap: { [key: string]: string } = {\n '&': '&amp;',\n '<': '&lt;',\n '>': '&gt;',\n '\"': '&quot;',\n \"'\": '&#39;'\n };\n\n return str.replace(/[&<>\"']/g, char => {\n return entityMap[char] || char;\n });\n }\n\n /**\n * Decode HTML entities in a string\n */\n protected decodeHTMLEntities(str: string): string {\n const entityMap: { [key: string]: string } = {\n '&amp;': '&',\n '&lt;': '<',\n '&gt;': '>',\n '&quot;': '\"',\n '&#39;': \"'\",\n '&#34;': '\"',\n '&apos;': \"'\",\n '&copy;': '\u00A9',\n '&reg;': '\u00AE',\n '&trade;': '\u2122',\n '&nbsp;': ' ',\n '&hellip;': '\u2026',\n '&mdash;': '\u2014',\n '&ndash;': '\u2013',\n '&lsquo;': '\\u2018',\n '&rsquo;': '\\u2019',\n '&ldquo;': '\"',\n '&rdquo;': '\"'\n };\n\n return str.replace(/&[a-zA-Z0-9#]+;/g, entity => {\n // Handle named entities\n if (entityMap[entity]) {\n return entityMap[entity];\n }\n\n // Handle numeric entities like &#39; &#34;\n if (entity.startsWith('&#') && entity.endsWith(';')) {\n const numStr = entity.slice(2, -1);\n const num = parseInt(numStr, 10);\n if (!isNaN(num)) {\n return String.fromCharCode(num);\n }\n }\n\n // Handle hex entities like &#x27;\n if (entity.startsWith('&#x') && entity.endsWith(';')) {\n const hexStr = entity.slice(3, -1);\n const num = parseInt(hexStr, 16);\n if (!isNaN(num)) {\n return String.fromCharCode(num);\n }\n }\n\n // Return original if not recognized\n return entity;\n });\n }\n\n // Node methods - external interface uses Node types, internal uses NodeBase\n appendChild<T extends Node>(node: T): T {\n const nodeBase = node as any as NodeBase; // Internal cast\n\n // Special handling for DocumentFragment\n if (nodeBase.nodeType === DOCUMENT_FRAGMENT_NODE) {\n // When appending a DocumentFragment, move its children instead\n const fragment = nodeBase;\n\n // Move all children from fragment to this node\n while (fragment._childNodesInternal.length > 0) {\n const child = fragment._childNodesInternal[0];\n if (child) {\n fragment.removeChild(child);\n this.appendChild(child);\n }\n }\n\n return node;\n }\n\n if (nodeBase._parentNodeInternal) {\n nodeBase._parentNodeInternal.removeChild(nodeBase);\n }\n\n this._childNodesInternal.push(nodeBase);\n nodeBase._parentNodeInternal = this;\n nodeBase._ownerDocument = this._ownerDocument;\n\n // Trigger connectedCallback if it's a custom element and connected to document\n if (this.isConnected && (nodeBase as any).connectedCallback) {\n console.log(`[NodeBase] Calling connectedCallback for <${nodeBase.nodeName}>`);\n (nodeBase as any).connectedCallback();\n }\n\n return node;\n }\n\n removeChild<T extends Node>(child: T): T {\n const childBase = child as any as NodeBase; // Internal cast\n const index = this._findChildIndex(childBase);\n if (index === -1) {\n throw new Error('Node not found');\n }\n\n const wasConnected = childBase.isConnected;\n\n this._childNodesInternal.splice(index, 1);\n childBase._parentNodeInternal = null;\n\n // Trigger disconnectedCallback if it was connected\n if (wasConnected && (childBase as any).disconnectedCallback) {\n (childBase as any).disconnectedCallback();\n }\n\n return child;\n }\n\n insertBefore<T extends Node>(node: T, child: Node | null): T {\n if (child === null) {\n return this.appendChild(node);\n }\n\n const nodeBase = node as any as NodeBase; // Internal cast\n const childBase = child as any as NodeBase; // Internal cast\n const index = this._findChildIndex(childBase);\n if (index === -1) {\n throw new Error('Reference node not found');\n }\n\n // Handle DocumentFragment - move all its children\n if (nodeBase.nodeType === DOCUMENT_FRAGMENT_NODE) {\n const fragment = nodeBase as any;\n const children = [...fragment._childNodesInternal]; // Copy array to avoid modification during iteration\n\n let insertIndex = index;\n for (const fragmentChild of children) {\n // Remove from fragment\n fragment.removeChild(fragmentChild);\n // Insert at the current insert position\n this._childNodesInternal.splice(insertIndex, 0, fragmentChild);\n fragmentChild._parentNodeInternal = this;\n fragmentChild._ownerDocument = this._ownerDocument;\n // Increment insert index for next child to maintain order\n insertIndex++;\n }\n\n return node;\n }\n\n if (nodeBase._parentNodeInternal) {\n nodeBase._parentNodeInternal.removeChild(nodeBase);\n }\n\n this._childNodesInternal.splice(index, 0, nodeBase);\n nodeBase._parentNodeInternal = this;\n nodeBase._ownerDocument = this._ownerDocument;\n\n // Trigger connectedCallback if it's a custom element and connected to document\n if (this.isConnected && (nodeBase as any).connectedCallback) {\n (nodeBase as any).connectedCallback();\n }\n\n return node;\n }\n\n replaceChild<T extends Node>(node: Node, child: T): T {\n this.insertBefore(node, child);\n this.removeChild(child);\n return child;\n }\n\n cloneNode(deep?: boolean): Node {\n // Basic clone implementation - would need to be overridden by specific node types\n throw new Error('cloneNode must be implemented by subclasses');\n }\n\n hasChildNodes(): boolean {\n return this._childNodesInternal.length > 0;\n }\n\n contains(other: Node | null): boolean {\n if (!other || other === this) return other === this;\n\n let node: Node | null = other;\n while (node) {\n if (node.parentNode === (this as unknown as ParentNode)) return true;\n node = node.parentNode;\n }\n return false;\n }\n\n compareDocumentPosition(other: Node): number {\n if (this === other) return 0;\n\n const otherBase = other as any as NodeBase;\n\n // Check if nodes are disconnected (not in same tree)\n const thisRoot = this.getRootNode();\n const otherRoot = otherBase.getRootNode();\n if (thisRoot !== otherRoot) {\n return DOCUMENT_POSITION_DISCONNECTED;\n }\n\n // Check containment relationships\n if (this.contains(other)) return DOCUMENT_POSITION_CONTAINED_BY;\n if (other.contains(this)) return DOCUMENT_POSITION_CONTAINS;\n\n // Find document order by traversing up to common ancestor\n const thisAncestors = this._getAncestors();\n const otherAncestors = otherBase._getAncestors();\n\n // Find common ancestor\n let commonAncestor: NodeBase | null = null;\n for (let i = 0; i < thisAncestors.length; i++) {\n if (otherAncestors.includes(thisAncestors[i])) {\n commonAncestor = thisAncestors[i];\n break;\n }\n }\n\n if (!commonAncestor) {\n return DOCUMENT_POSITION_DISCONNECTED;\n }\n\n // Compare positions within common ancestor\n const thisChild = this._getChildInAncestor(commonAncestor);\n const otherChild = otherBase._getChildInAncestor(commonAncestor);\n\n if (thisChild && otherChild && commonAncestor._childNodesInternal) {\n const thisIndex = commonAncestor._childNodesInternal.indexOf(thisChild);\n const otherIndex = commonAncestor._childNodesInternal.indexOf(otherChild);\n\n if (thisIndex < otherIndex) {\n return DOCUMENT_POSITION_FOLLOWING;\n } else if (thisIndex > otherIndex) {\n return DOCUMENT_POSITION_PRECEDING;\n }\n }\n\n return DOCUMENT_POSITION_DISCONNECTED;\n }\n\n getRootNode(options?: GetRootNodeOptions): Node {\n let root: Node = this;\n while (root.parentNode) {\n root = root.parentNode;\n }\n return root;\n }\n\n isEqualNode(otherNode: Node | null): boolean {\n if (!otherNode) return false;\n if (this === otherNode) return true;\n if (this.nodeType !== otherNode.nodeType) return false;\n if (this.nodeName !== otherNode.nodeName) return false;\n return true; // Simplified comparison\n }\n\n isSameNode(otherNode: Node | null): boolean {\n return this === otherNode;\n }\n\n isDefaultNamespace(namespace: string | null): boolean {\n // Simplified implementation\n return namespace === null || namespace === 'http://www.w3.org/1999/xhtml';\n }\n\n lookupNamespaceURI(prefix: string | null): string | null {\n // Simplified implementation\n if (prefix === null || prefix === '') {\n return 'http://www.w3.org/1999/xhtml';\n }\n return null;\n }\n\n lookupPrefix(namespace: string | null): string | null {\n // Simplified implementation\n return null;\n }\n\n normalize(): void {\n // Merge adjacent text nodes\n for (let i = this._childNodesInternal.length - 1; i >= 0; i--) {\n const child = this._childNodesInternal[i];\n if (child && child.nodeType === TEXT_NODE) {\n const nextSibling = child.nextSibling;\n if (nextSibling && nextSibling.nodeType === TEXT_NODE) {\n child.nodeValue = (child.nodeValue || '') + (nextSibling.nodeValue || '');\n this.removeChild(nextSibling);\n }\n }\n }\n }\n\n // Helper methods\n private _findIndexInParent(): number {\n if (!this._parentNodeInternal) return -1;\n return this._parentNodeInternal._childNodesInternal.indexOf(this);\n }\n\n private _findChildIndex(child: NodeBase): number {\n return this._childNodesInternal.indexOf(child);\n }\n\n private _getAncestors(): NodeBase[] {\n const ancestors: NodeBase[] = [];\n let current: NodeBase | null = this._parentNodeInternal;\n while (current) {\n ancestors.push(current);\n current = current._parentNodeInternal;\n }\n return ancestors;\n }\n\n private _getChildInAncestor(ancestor: NodeBase): NodeBase | null {\n let current: NodeBase = this;\n while (current._parentNodeInternal && current._parentNodeInternal !== ancestor) {\n current = current._parentNodeInternal;\n }\n return current._parentNodeInternal === ancestor ? current : null;\n }\n}\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -0,0 +1,24 @@
1
+ const NodeFilter = {
2
+ // Constants for acceptNode return values
3
+ FILTER_ACCEPT: 1,
4
+ FILTER_REJECT: 2,
5
+ FILTER_SKIP: 3,
6
+ // Constants for whatToShow
7
+ SHOW_ALL: 4294967295,
8
+ SHOW_ELEMENT: 1,
9
+ SHOW_ATTRIBUTE: 2,
10
+ SHOW_TEXT: 4,
11
+ SHOW_CDATA_SECTION: 8,
12
+ SHOW_ENTITY_REFERENCE: 16,
13
+ SHOW_ENTITY: 32,
14
+ SHOW_PROCESSING_INSTRUCTION: 64,
15
+ SHOW_COMMENT: 128,
16
+ SHOW_DOCUMENT: 256,
17
+ SHOW_DOCUMENT_TYPE: 512,
18
+ SHOW_DOCUMENT_FRAGMENT: 1024,
19
+ SHOW_NOTATION: 2048
20
+ };
21
+ export {
22
+ NodeFilter
23
+ };
24
+ //# sourceMappingURL=NodeFilter.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/node/NodeFilter.ts"],
4
+ "sourcesContent": ["// import { Node } from './Node';\n\n/**\n * NodeFilter interface for filtering nodes in NodeIterator and TreeWalker\n */\n// export interface NodeFilter {\n// acceptNode(node: Node): number;\n// }\n\n/**\n * NodeFilter constants and static methods\n */\nexport const NodeFilter: {\n readonly FILTER_ACCEPT: number;\n readonly FILTER_REJECT: number;\n readonly FILTER_SKIP: number;\n readonly SHOW_ALL: number;\n readonly SHOW_ELEMENT: number;\n readonly SHOW_ATTRIBUTE: number;\n readonly SHOW_TEXT: number;\n readonly SHOW_CDATA_SECTION: number;\n readonly SHOW_ENTITY_REFERENCE: number;\n readonly SHOW_ENTITY: number;\n readonly SHOW_PROCESSING_INSTRUCTION: number;\n readonly SHOW_COMMENT: number;\n readonly SHOW_DOCUMENT: number;\n readonly SHOW_DOCUMENT_TYPE: number;\n readonly SHOW_DOCUMENT_FRAGMENT: number;\n readonly SHOW_NOTATION: number;\n} = {\n // Constants for acceptNode return values\n FILTER_ACCEPT: 1,\n FILTER_REJECT: 2,\n FILTER_SKIP: 3,\n\n // Constants for whatToShow\n SHOW_ALL: 0xffffffff,\n SHOW_ELEMENT: 0x1,\n SHOW_ATTRIBUTE: 0x2,\n SHOW_TEXT: 0x4,\n SHOW_CDATA_SECTION: 0x8,\n SHOW_ENTITY_REFERENCE: 0x10,\n SHOW_ENTITY: 0x20,\n SHOW_PROCESSING_INSTRUCTION: 0x40,\n SHOW_COMMENT: 0x80,\n SHOW_DOCUMENT: 0x100,\n SHOW_DOCUMENT_TYPE: 0x200,\n SHOW_DOCUMENT_FRAGMENT: 0x400,\n SHOW_NOTATION: 0x800\n};\n"],
5
+ "mappings": "AAYO,MAAM,aAiBT;AAAA;AAAA,EAEF,eAAe;AAAA,EACf,eAAe;AAAA,EACf,aAAa;AAAA;AAAA,EAGb,UAAU;AAAA,EACV,cAAc;AAAA,EACd,gBAAgB;AAAA,EAChB,WAAW;AAAA,EACX,oBAAoB;AAAA,EACpB,uBAAuB;AAAA,EACvB,aAAa;AAAA,EACb,6BAA6B;AAAA,EAC7B,cAAc;AAAA,EACd,eAAe;AAAA,EACf,oBAAoB;AAAA,EACpB,wBAAwB;AAAA,EACxB,eAAe;AACjB;",
6
+ "names": []
7
+ }
@@ -1,23 +1,3 @@
1
- const NodeFilter = {
2
- // Constants for acceptNode return values
3
- FILTER_ACCEPT: 1,
4
- FILTER_REJECT: 2,
5
- FILTER_SKIP: 3,
6
- // Constants for whatToShow
7
- SHOW_ALL: 4294967295,
8
- SHOW_ELEMENT: 1,
9
- SHOW_ATTRIBUTE: 2,
10
- SHOW_TEXT: 4,
11
- SHOW_CDATA_SECTION: 8,
12
- SHOW_ENTITY_REFERENCE: 16,
13
- SHOW_ENTITY: 32,
14
- SHOW_PROCESSING_INSTRUCTION: 64,
15
- SHOW_COMMENT: 128,
16
- SHOW_DOCUMENT: 256,
17
- SHOW_DOCUMENT_TYPE: 512,
18
- SHOW_DOCUMENT_FRAGMENT: 1024,
19
- SHOW_NOTATION: 2048
20
- };
21
1
  class NodeIterator {
22
2
  constructor(root, whatToShow = NodeFilter.SHOW_ALL, filter = null) {
23
3
  this._beforeReferenceNode = true;
@@ -114,14 +94,8 @@ class NodeIterator {
114
94
  }
115
95
  return null;
116
96
  }
117
- /**
118
- * Detach the iterator (no-op in this implementation)
119
- */
120
97
  detach() {
121
98
  }
122
- /**
123
- * Check if a node should be accepted based on whatToShow and filter
124
- */
125
99
  _acceptNode(node) {
126
100
  if (!node) {
127
101
  return false;
@@ -131,14 +105,13 @@ class NodeIterator {
131
105
  return false;
132
106
  }
133
107
  if (this._filter) {
134
- const result = this._filter.acceptNode(node);
108
+ const result = "acceptNode" in this._filter ? this._filter.acceptNode(node) : this._filter(node);
135
109
  return result === NodeFilter.FILTER_ACCEPT;
136
110
  }
137
111
  return true;
138
112
  }
139
113
  }
140
114
  export {
141
- NodeFilter,
142
115
  NodeIterator
143
116
  };
144
117
  //# sourceMappingURL=NodeIterator.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/node/NodeIterator.ts"],
4
- "sourcesContent": ["import { Node } from './Node';\nimport { NodeBase } from './NodeBase';\n\n/**\n * NodeFilter interface for filtering nodes in NodeIterator\n */\nexport interface NodeFilter {\n acceptNode(node: Node): number;\n}\n\n/**\n * NodeFilter constants\n */\nexport const NodeFilter = {\n // Constants for acceptNode return values\n FILTER_ACCEPT: 1,\n FILTER_REJECT: 2,\n FILTER_SKIP: 3,\n \n // Constants for whatToShow\n SHOW_ALL: 0xFFFFFFFF,\n SHOW_ELEMENT: 0x1,\n SHOW_ATTRIBUTE: 0x2,\n SHOW_TEXT: 0x4,\n SHOW_CDATA_SECTION: 0x8,\n SHOW_ENTITY_REFERENCE: 0x10,\n SHOW_ENTITY: 0x20,\n SHOW_PROCESSING_INSTRUCTION: 0x40,\n SHOW_COMMENT: 0x80,\n SHOW_DOCUMENT: 0x100,\n SHOW_DOCUMENT_TYPE: 0x200,\n SHOW_DOCUMENT_FRAGMENT: 0x400,\n SHOW_NOTATION: 0x800\n};\n\n/**\n * NodeIterator implementation for traversing DOM nodes\n */\nexport class NodeIterator {\n private _root: Node;\n private _whatToShow: number;\n private _filter: NodeFilter | null;\n private _currentNode: Node;\n private _beforeReferenceNode: boolean = true;\n\n constructor(root: Node, whatToShow: number = NodeFilter.SHOW_ALL, filter: NodeFilter | null = null) {\n this._root = root;\n this._whatToShow = whatToShow;\n this._filter = filter;\n this._currentNode = root;\n }\n\n get root(): Node {\n return this._root;\n }\n\n get whatToShow(): number {\n return this._whatToShow;\n }\n\n get filter(): NodeFilter | null {\n return this._filter;\n }\n\n get referenceNode(): Node {\n return this._currentNode;\n }\n\n get pointerBeforeReferenceNode(): boolean {\n return this._beforeReferenceNode;\n }\n\n /**\n * Move to the next node in document order\n */\n nextNode(): Node | null {\n let node = this._currentNode;\n \n // If we're before the reference node, start from the reference node\n if (this._beforeReferenceNode) {\n this._beforeReferenceNode = false;\n if (this._acceptNode(node)) {\n return node;\n }\n }\n\n // Traverse in document order\n while (node) {\n // First, try to go to first child\n const firstChild = (node as any).firstChild;\n if (firstChild) {\n node = firstChild;\n if (this._acceptNode(node)) {\n this._currentNode = node;\n return node;\n }\n continue;\n }\n\n // If no children, try next sibling\n while (node && !(node as any).nextSibling) {\n node = (node as any).parentNode;\n // Don't go beyond root\n if (!node || node === (this._root as any).parentNode) {\n return null;\n }\n }\n\n if (!node) {\n return null;\n }\n\n node = (node as any).nextSibling;\n if (this._acceptNode(node)) {\n this._currentNode = node;\n return node;\n }\n }\n\n return null;\n }\n\n /**\n * Move to the previous node in document order\n */\n previousNode(): Node | null {\n let node = this._currentNode;\n\n // If we're after the reference node, start from the reference node\n if (!this._beforeReferenceNode) {\n this._beforeReferenceNode = true;\n if (this._acceptNode(node)) {\n return node;\n }\n }\n\n // Traverse in reverse document order\n while (node && node !== this._root) {\n // Try previous sibling\n const prevSibling = (node as any).previousSibling;\n if (prevSibling) {\n node = prevSibling;\n \n // Go to the deepest last child\n while ((node as any).lastChild) {\n node = (node as any).lastChild;\n }\n \n if (this._acceptNode(node)) {\n this._currentNode = node;\n return node;\n }\n continue;\n }\n\n // Go to parent\n node = (node as any).parentNode;\n if (!node || node === (this._root as any).parentNode) {\n return null;\n }\n\n if (this._acceptNode(node)) {\n this._currentNode = node;\n return node;\n }\n }\n\n return null;\n }\n\n /**\n * Detach the iterator (no-op in this implementation)\n */\n detach(): void {\n // Modern browsers don't require this, but we implement for compatibility\n }\n\n /**\n * Check if a node should be accepted based on whatToShow and filter\n */\n private _acceptNode(node: Node | null): boolean {\n if (!node) {\n return false;\n }\n\n // Check whatToShow filter\n const nodeTypeMask = 1 << (node.nodeType - 1);\n if (!(this._whatToShow & nodeTypeMask)) {\n return false;\n }\n\n // Check custom filter\n if (this._filter) {\n const result = this._filter.acceptNode(node);\n return result === NodeFilter.FILTER_ACCEPT;\n }\n\n return true;\n }\n}"],
5
- "mappings": "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",
4
+ "sourcesContent": ["\n/**\n * NodeIterator implementation for traversing DOM nodes\n */\nexport class NodeIterator {\n private _root: Node;\n private _whatToShow: number;\n private _filter: NodeFilter | null;\n private _currentNode: Node;\n private _beforeReferenceNode: boolean = true;\n\n constructor(root: Node, whatToShow: number = NodeFilter.SHOW_ALL, filter: NodeFilter | null = null) {\n this._root = root;\n this._whatToShow = whatToShow;\n this._filter = filter;\n this._currentNode = root;\n }\n\n get root(): Node {\n return this._root;\n }\n\n get whatToShow(): number {\n return this._whatToShow;\n }\n\n get filter(): NodeFilter | null {\n return this._filter;\n }\n\n get referenceNode(): Node {\n return this._currentNode;\n }\n\n get pointerBeforeReferenceNode(): boolean {\n return this._beforeReferenceNode;\n }\n\n /**\n * Move to the next node in document order\n */\n nextNode(): Node | null {\n let node = this._currentNode;\n\n if (this._beforeReferenceNode) {\n this._beforeReferenceNode = false;\n if (this._acceptNode(node)) {\n return node;\n }\n }\n\n while (node) {\n const firstChild = (node as any).firstChild;\n if (firstChild) {\n node = firstChild;\n if (this._acceptNode(node)) {\n this._currentNode = node;\n return node;\n }\n continue;\n }\n\n while (node && !(node as any).nextSibling) {\n node = (node as any).parentNode;\n if (!node || node === (this._root as any).parentNode) {\n return null;\n }\n }\n\n if (!node) {\n return null;\n }\n\n node = (node as any).nextSibling;\n if (this._acceptNode(node)) {\n this._currentNode = node;\n return node;\n }\n }\n\n return null;\n }\n\n /**\n * Move to the previous node in document order\n */\n previousNode(): Node | null {\n let node = this._currentNode;\n\n if (!this._beforeReferenceNode) {\n this._beforeReferenceNode = true;\n if (this._acceptNode(node)) {\n return node;\n }\n }\n\n while (node && node !== this._root) {\n const prevSibling = (node as any).previousSibling;\n if (prevSibling) {\n node = prevSibling;\n while ((node as any).lastChild) {\n node = (node as any).lastChild;\n }\n\n if (this._acceptNode(node)) {\n this._currentNode = node;\n return node;\n }\n continue;\n }\n\n node = (node as any).parentNode;\n if (!node || node === (this._root as any).parentNode) {\n return null;\n }\n\n if (this._acceptNode(node)) {\n this._currentNode = node;\n return node;\n }\n }\n\n return null;\n }\n\n detach(): void {}\n\n private _acceptNode(node: Node | null): boolean {\n if (!node) {\n return false;\n }\n\n const nodeTypeMask = 1 << (node.nodeType - 1);\n if (!(this._whatToShow & nodeTypeMask)) {\n return false;\n }\n\n if (this._filter) {\n const result = ('acceptNode' in this._filter) ? this._filter.acceptNode(node) : this._filter(node);\n return result === NodeFilter.FILTER_ACCEPT;\n }\n\n return true;\n }\n}\n"],
5
+ "mappings": "AAIO,MAAM,aAAa;AAAA,EAOxB,YAAY,MAAY,aAAqB,WAAW,UAAU,SAA4B,MAAM;AAFpG,SAAQ,uBAAgC;AAGtC,SAAK,QAAQ;AACb,SAAK,cAAc;AACnB,SAAK,UAAU;AACf,SAAK,eAAe;AAAA,EACtB;AAAA,EAEA,IAAI,OAAa;AACf,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,IAAI,aAAqB;AACvB,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,IAAI,SAA4B;AAC9B,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,IAAI,gBAAsB;AACxB,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,IAAI,6BAAsC;AACxC,WAAO,KAAK;AAAA,EACd;AAAA;AAAA;AAAA;AAAA,EAKA,WAAwB;AACtB,QAAI,OAAO,KAAK;AAEhB,QAAI,KAAK,sBAAsB;AAC7B,WAAK,uBAAuB;AAC5B,UAAI,KAAK,YAAY,IAAI,GAAG;AAC1B,eAAO;AAAA,MACT;AAAA,IACF;AAEA,WAAO,MAAM;AACX,YAAM,aAAc,KAAa;AACjC,UAAI,YAAY;AACd,eAAO;AACP,YAAI,KAAK,YAAY,IAAI,GAAG;AAC1B,eAAK,eAAe;AACpB,iBAAO;AAAA,QACT;AACA;AAAA,MACF;AAEA,aAAO,QAAQ,CAAE,KAAa,aAAa;AACzC,eAAQ,KAAa;AACrB,YAAI,CAAC,QAAQ,SAAU,KAAK,MAAc,YAAY;AACpD,iBAAO;AAAA,QACT;AAAA,MACF;AAEA,UAAI,CAAC,MAAM;AACT,eAAO;AAAA,MACT;AAEA,aAAQ,KAAa;AACrB,UAAI,KAAK,YAAY,IAAI,GAAG;AAC1B,aAAK,eAAe;AACpB,eAAO;AAAA,MACT;AAAA,IACF;AAEA,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA,EAKA,eAA4B;AAC1B,QAAI,OAAO,KAAK;AAEhB,QAAI,CAAC,KAAK,sBAAsB;AAC9B,WAAK,uBAAuB;AAC5B,UAAI,KAAK,YAAY,IAAI,GAAG;AAC1B,eAAO;AAAA,MACT;AAAA,IACF;AAEA,WAAO,QAAQ,SAAS,KAAK,OAAO;AAClC,YAAM,cAAe,KAAa;AAClC,UAAI,aAAa;AACf,eAAO;AACP,eAAQ,KAAa,WAAW;AAC9B,iBAAQ,KAAa;AAAA,QACvB;AAEA,YAAI,KAAK,YAAY,IAAI,GAAG;AAC1B,eAAK,eAAe;AACpB,iBAAO;AAAA,QACT;AACA;AAAA,MACF;AAEA,aAAQ,KAAa;AACrB,UAAI,CAAC,QAAQ,SAAU,KAAK,MAAc,YAAY;AACpD,eAAO;AAAA,MACT;AAEA,UAAI,KAAK,YAAY,IAAI,GAAG;AAC1B,aAAK,eAAe;AACpB,eAAO;AAAA,MACT;AAAA,IACF;AAEA,WAAO;AAAA,EACT;AAAA,EAEA,SAAe;AAAA,EAAC;AAAA,EAER,YAAY,MAA4B;AAC9C,QAAI,CAAC,MAAM;AACT,aAAO;AAAA,IACT;AAEA,UAAM,eAAe,KAAM,KAAK,WAAW;AAC3C,QAAI,EAAE,KAAK,cAAc,eAAe;AACtC,aAAO;AAAA,IACT;AAEA,QAAI,KAAK,SAAS;AAChB,YAAM,SAAU,gBAAgB,KAAK,UAAW,KAAK,QAAQ,WAAW,IAAI,IAAI,KAAK,QAAQ,IAAI;AACjG,aAAO,WAAW,WAAW;AAAA,IAC/B;AAEA,WAAO;AAAA,EACT;AACF;",
6
6
  "names": []
7
7
  }
@@ -1,6 +1,6 @@
1
1
  import { ChildNodeBase } from "./ChildNodeBase.js";
2
- import { HTMLCollection } from "./collection/HTMLCollection.js";
3
- import { NodeListOf } from "./collection/NodeListOf.js";
2
+ import { HTMLCollectionImp } from "./collection/HTMLCollectionImp.js";
3
+ import { NodeListOfImp } from "./collection/NodeListOfImp.js";
4
4
  import { ELEMENT_NODE } from "./Node.js";
5
5
  import { TextBase } from "./TextBase.js";
6
6
  import { CSSSelector } from "../utils/CSSSelector.js";
@@ -22,7 +22,7 @@ class ParentNodeBase extends ChildNodeBase {
22
22
  elements.push(child);
23
23
  }
24
24
  }
25
- return new HTMLCollection(elements);
25
+ return new HTMLCollectionImp(elements);
26
26
  }
27
27
  get firstElementChild() {
28
28
  for (const child of this._childNodesInternal) {
@@ -92,7 +92,7 @@ class ParentNodeBase extends ChildNodeBase {
92
92
  uniqueResults.push(element);
93
93
  }
94
94
  }
95
- return new NodeListOf(uniqueResults);
95
+ return new NodeListOfImp(uniqueResults);
96
96
  }
97
97
  // Private helper methods for querySelector
98
98
  _querySelectorAllRecursive(selectors, results) {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/node/ParentNodeBase.ts"],
4
- "sourcesContent": ["import { Node } from './Node';\nimport { ChildNodeBase } from './ChildNodeBase';\nimport { ParentNode } from './ParentNode';\nimport { Element } from './elements/Element';\nimport { HTMLCollection } from './collection/HTMLCollection';\nimport { NodeListOf } from './collection/NodeListOf';\nimport { ELEMENT_NODE, TEXT_NODE } from './Node';\nimport { TextBase } from './TextBase';\nimport { CSSSelector } from '../utils/CSSSelector';\n\n/**\n * Base implementation of the ParentNode interface\n */\nexport abstract class ParentNodeBase extends ChildNodeBase implements ParentNode {\n\n // ParentNode interface implementation\n get childElementCount(): number {\n let count = 0;\n for (const child of this._childNodesInternal) {\n if (child && child.nodeType === ELEMENT_NODE) {\n count++;\n }\n }\n return count;\n }\n\n get children(): HTMLCollection {\n const elements: Element[] = [];\n for (const child of this._childNodesInternal) {\n if (child && child.nodeType === ELEMENT_NODE) {\n elements.push(child as unknown as Element);\n }\n }\n return new HTMLCollection(elements);\n }\n\n get firstElementChild(): Element | null {\n for (const child of this._childNodesInternal) {\n if (child && child.nodeType === ELEMENT_NODE) {\n return child as unknown as Element;\n }\n }\n return null;\n }\n\n get lastElementChild(): Element | null {\n for (let i = this._childNodesInternal.length - 1; i >= 0; i--) {\n const child = this._childNodesInternal[i];\n if (child && child.nodeType === ELEMENT_NODE) {\n return child as unknown as Element;\n }\n }\n return null;\n }\n\n append(...nodes: (Node | string)[]): void {\n for (const node of nodes) {\n if (typeof node === 'string') {\n const textNode = new TextBase(node, this._ownerDocument);\n this.appendChild(textNode);\n } else {\n this.appendChild(node);\n }\n }\n }\n\n prepend(...nodes: (Node | string)[]): void {\n const firstChild = this.firstChild;\n for (const node of nodes) {\n if (typeof node === 'string') {\n const textNode = new TextBase(node, this._ownerDocument);\n this.insertBefore(textNode, firstChild);\n } else {\n this.insertBefore(node, firstChild);\n }\n }\n }\n\n replaceChildren(...nodes: (Node | string)[]): void {\n // Remove all existing children\n while (this._childNodesInternal.length > 0) {\n const child = this._childNodesInternal[0];\n if (child) {\n this.removeChild(child);\n }\n }\n\n // Add new nodes\n this.append(...nodes);\n }\n\n // Query selector implementation\n querySelector<E extends Element>(selectors: string): E | null {\n const elements = this.querySelectorAll(selectors);\n return elements.length > 0 ? elements.item(0) as E: null;\n }\n\n querySelectorAll<E extends Element = Element>(selectors: string): NodeListOf<E> {\n const results: E[] = [];\n \n // Split selectors by comma and process each one\n const selectorList = selectors.split(',').map(s => s.trim());\n \n for (const selector of selectorList) {\n if (selector) {\n this._querySelectorAllRecursive(selector, results);\n }\n }\n \n // Remove duplicates while preserving order\n const uniqueResults: E[] = [];\n const seen = new Set();\n for (const element of results) {\n if (!seen.has(element)) {\n seen.add(element);\n uniqueResults.push(element);\n }\n }\n \n return new NodeListOf<E>(uniqueResults);\n }\n\n // Private helper methods for querySelector\n private _querySelectorAllRecursive(selectors: string, results: Element[]): void {\n for (const child of this._childNodesInternal) {\n if (child && child.nodeType === ELEMENT_NODE) {\n const element = child as unknown as Element;\n\n // Check if this element matches the selector\n if (CSSSelector.matches(element, selectors)) {\n results.push(element);\n }\n\n // Recursively search in child elements\n if (child instanceof ParentNodeBase) {\n child._querySelectorAllRecursive(selectors, results);\n }\n }\n }\n }\n\n\n}\n\n// TextNode is now in a separate file"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { ChildNodeBase } from './ChildNodeBase';\nimport { HTMLCollectionImp } from './collection/HTMLCollectionImp';\nimport { NodeListOfImp } from './collection/NodeListOfImp';\nimport { ELEMENT_NODE, TEXT_NODE } from './Node';\nimport { TextBase } from './TextBase';\nimport { CSSSelector } from '../utils/CSSSelector';\n\n/**\n * Base implementation of the ParentNode interface\n */\nexport abstract class ParentNodeBase extends ChildNodeBase implements ParentNode {\n\n // ParentNode interface implementation\n get childElementCount(): number {\n let count = 0;\n for (const child of this._childNodesInternal) {\n if (child && child.nodeType === ELEMENT_NODE) {\n count++;\n }\n }\n return count;\n }\n\n get children(): HTMLCollection {\n const elements: Element[] = [];\n for (const child of this._childNodesInternal) {\n if (child && child.nodeType === ELEMENT_NODE) {\n elements.push(child as unknown as Element);\n }\n }\n return new HTMLCollectionImp(elements) as unknown as HTMLCollection;\n }\n\n get firstElementChild(): Element | null {\n for (const child of this._childNodesInternal) {\n if (child && child.nodeType === ELEMENT_NODE) {\n return child as unknown as Element;\n }\n }\n return null;\n }\n\n get lastElementChild(): Element | null {\n for (let i = this._childNodesInternal.length - 1; i >= 0; i--) {\n const child = this._childNodesInternal[i];\n if (child && child.nodeType === ELEMENT_NODE) {\n return child as unknown as Element;\n }\n }\n return null;\n }\n\n append(...nodes: (Node | string)[]): void {\n for (const node of nodes) {\n if (typeof node === 'string') {\n const textNode = new TextBase(node, this._ownerDocument);\n this.appendChild(textNode as unknown as Node);\n } else {\n this.appendChild(node);\n }\n }\n }\n\n prepend(...nodes: (Node | string)[]): void {\n const firstChild = this.firstChild;\n for (const node of nodes) {\n if (typeof node === 'string') {\n const textNode = new TextBase(node, this._ownerDocument);\n this.insertBefore(textNode as unknown as Node, firstChild);\n } else {\n this.insertBefore(node, firstChild);\n }\n }\n }\n\n replaceChildren(...nodes: (Node | string)[]): void {\n // Remove all existing children\n while (this._childNodesInternal.length > 0) {\n const child = this._childNodesInternal[0];\n if (child) {\n this.removeChild(child as unknown as Node);\n }\n }\n\n // Add new nodes\n this.append(...nodes);\n }\n\n // Query selector implementation\n querySelector<E extends Element>(selectors: string): E | null {\n const elements = this.querySelectorAll(selectors);\n return elements.length > 0 ? elements.item(0) as E: null;\n }\n\n querySelectorAll<E extends Element = Element>(selectors: string): NodeListOf<E> {\n const results: E[] = [];\n \n // Split selectors by comma and process each one\n const selectorList = selectors.split(',').map(s => s.trim());\n \n for (const selector of selectorList) {\n if (selector) {\n this._querySelectorAllRecursive(selector, results);\n }\n }\n \n // Remove duplicates while preserving order\n const uniqueResults: E[] = [];\n const seen = new Set();\n for (const element of results) {\n if (!seen.has(element)) {\n seen.add(element);\n uniqueResults.push(element);\n }\n }\n \n return new NodeListOfImp<E>(uniqueResults) as unknown as NodeListOf<E>;\n }\n\n // Private helper methods for querySelector\n private _querySelectorAllRecursive(selectors: string, results: Element[]): void {\n for (const child of this._childNodesInternal) {\n if (child && child.nodeType === ELEMENT_NODE) {\n const element = child as unknown as Element;\n\n // Check if this element matches the selector\n if (CSSSelector.matches(element, selectors)) {\n results.push(element);\n }\n\n // Recursively search in child elements\n if (child instanceof ParentNodeBase) {\n child._querySelectorAllRecursive(selectors, results);\n }\n }\n }\n }\n\n\n}\n\n// TextNode is now in a separate file"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -0,0 +1,60 @@
1
+ import { DocumentFragmentBase } from "./DocumentFragmentBase.js";
2
+ class ShadowRootBase extends DocumentFragmentBase {
3
+ constructor(host, init, ownerDocument) {
4
+ super(ownerDocument);
5
+ this._host = host;
6
+ this.mode = init.mode;
7
+ this.delegatesFocus = init.delegatesFocus || false;
8
+ this.slotAssignment = init.slotAssignment || "manual";
9
+ this.nodeName = "#shadow-root";
10
+ }
11
+ getHTML(options) {
12
+ throw new Error("Method not implemented.");
13
+ }
14
+ setHTMLUnsafe(html) {
15
+ throw new Error("Method not implemented.");
16
+ }
17
+ elementFromPoint(x, y) {
18
+ throw new Error("Method not implemented.");
19
+ }
20
+ elementsFromPoint(x, y) {
21
+ throw new Error("Method not implemented.");
22
+ }
23
+ getAnimations() {
24
+ throw new Error("Method not implemented.");
25
+ }
26
+ get host() {
27
+ return this._host;
28
+ }
29
+ /**
30
+ * innerHTML for ShadowRoot
31
+ */
32
+ get innerHTML() {
33
+ let html = "";
34
+ for (const child of this._childNodesInternal) {
35
+ if (child.nodeType === 3) {
36
+ html += child._nodeValue || "";
37
+ } else if (child.nodeType === 1) {
38
+ html += this._host.generateChildElementHTML(child);
39
+ } else if (child.nodeType === 8) {
40
+ html += `<!--${child.textContent || ""}-->`;
41
+ }
42
+ }
43
+ return html;
44
+ }
45
+ set innerHTML(value) {
46
+ while (this._childNodesInternal.length > 0) {
47
+ const child = this._childNodesInternal[0];
48
+ if (child) {
49
+ this.removeChild(child);
50
+ }
51
+ }
52
+ if (value.trim()) {
53
+ this._host.parseAndAppendHTML(value, this);
54
+ }
55
+ }
56
+ }
57
+ export {
58
+ ShadowRootBase
59
+ };
60
+ //# sourceMappingURL=ShadowRootBase.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/node/ShadowRootBase.ts"],
4
+ "sourcesContent": ["import { DocumentFragmentBase } from './DocumentFragmentBase';\n\n/**\n * The **`ShadowRoot`** interface represents the root node of a shadow DOM subtree.\n */\n// @ts-ignore\nexport class ShadowRootBase extends DocumentFragmentBase implements ShadowRoot {\n public readonly delegatesFocus: boolean;\n public readonly mode: ShadowRootMode;\n public readonly slotAssignment: SlotAssignmentMode;\n private _host: Element;\n\n constructor(host: Element, init: { mode: ShadowRootMode; delegatesFocus?: boolean; slotAssignment?: SlotAssignmentMode }, ownerDocument?: Document) {\n super(ownerDocument);\n this._host = host;\n this.mode = init.mode;\n this.delegatesFocus = init.delegatesFocus || false;\n this.slotAssignment = init.slotAssignment || 'manual';\n\n // Set nodeName to '#shadow-root'\n (this as any).nodeName = '#shadow-root';\n }\n\n clonable: boolean;\n onslotchange: (this: ShadowRoot, ev: Event) => any;\n serializable: boolean;\n getHTML(options?: GetHTMLOptions): string {\n throw new Error(\"Method not implemented.\");\n }\n setHTMLUnsafe(html: string): void {\n throw new Error(\"Method not implemented.\");\n }\n activeElement: Element;\n adoptedStyleSheets: CSSStyleSheet[];\n fullscreenElement: Element;\n pictureInPictureElement: Element;\n pointerLockElement: Element;\n styleSheets: StyleSheetList;\n elementFromPoint(x: number, y: number): Element | null {\n throw new Error(\"Method not implemented.\");\n }\n elementsFromPoint(x: number, y: number): Element[] {\n throw new Error(\"Method not implemented.\");\n }\n getAnimations(): Animation[] {\n throw new Error(\"Method not implemented.\");\n }\n\n get host(): Element {\n return this._host;\n }\n\n /**\n * innerHTML for ShadowRoot\n */\n get innerHTML(): string {\n let html = '';\n for (const child of this._childNodesInternal) {\n if ((child as any).nodeType === 3) {\n // TEXT_NODE\n html += (child as any)._nodeValue || '';\n } else if ((child as any).nodeType === 1) {\n // ELEMENT_NODE\n html += (this._host as any).generateChildElementHTML(child as any);\n } else if ((child as any).nodeType === 8) {\n // COMMENT_NODE\n html += `<!--${(child as any).textContent || ''}-->`;\n }\n }\n return html;\n }\n\n set innerHTML(value: string) {\n // Clear existing children\n while (this._childNodesInternal.length > 0) {\n const child = this._childNodesInternal[0];\n if (child) {\n this.removeChild(child as unknown as Node);\n }\n }\n\n // Parse HTML and create child nodes\n if (value.trim()) {\n (this._host as any).parseAndAppendHTML(value, this);\n }\n }\n}\n"],
5
+ "mappings": "AAAA,SAAS,4BAA4B;AAM9B,MAAM,uBAAuB,qBAA2C;AAAA,EAM7E,YAAY,MAAe,MAA+F,eAA0B;AAClJ,UAAM,aAAa;AACnB,SAAK,QAAQ;AACb,SAAK,OAAO,KAAK;AACjB,SAAK,iBAAiB,KAAK,kBAAkB;AAC7C,SAAK,iBAAiB,KAAK,kBAAkB;AAG7C,IAAC,KAAa,WAAW;AAAA,EAC3B;AAAA,EAKE,QAAQ,SAAkC;AACtC,UAAM,IAAI,MAAM,yBAAyB;AAAA,EAC7C;AAAA,EACA,cAAc,MAAoB;AAC9B,UAAM,IAAI,MAAM,yBAAyB;AAAA,EAC7C;AAAA,EAOA,iBAAiB,GAAW,GAA2B;AACnD,UAAM,IAAI,MAAM,yBAAyB;AAAA,EAC7C;AAAA,EACA,kBAAkB,GAAW,GAAsB;AAC/C,UAAM,IAAI,MAAM,yBAAyB;AAAA,EAC7C;AAAA,EACA,gBAA6B;AACzB,UAAM,IAAI,MAAM,yBAAyB;AAAA,EAC7C;AAAA,EAEF,IAAI,OAAgB;AAClB,WAAO,KAAK;AAAA,EACd;AAAA;AAAA;AAAA;AAAA,EAKA,IAAI,YAAoB;AACtB,QAAI,OAAO;AACX,eAAW,SAAS,KAAK,qBAAqB;AAC5C,UAAK,MAAc,aAAa,GAAG;AAEjC,gBAAS,MAAc,cAAc;AAAA,MACvC,WAAY,MAAc,aAAa,GAAG;AAExC,gBAAS,KAAK,MAAc,yBAAyB,KAAY;AAAA,MACnE,WAAY,MAAc,aAAa,GAAG;AAExC,gBAAQ,OAAQ,MAAc,eAAe,EAAE;AAAA,MACjD;AAAA,IACF;AACA,WAAO;AAAA,EACT;AAAA,EAEA,IAAI,UAAU,OAAe;AAE3B,WAAO,KAAK,oBAAoB,SAAS,GAAG;AAC1C,YAAM,QAAQ,KAAK,oBAAoB,CAAC;AACxC,UAAI,OAAO;AACT,aAAK,YAAY,KAAwB;AAAA,MAC3C;AAAA,IACF;AAGA,QAAI,MAAM,KAAK,GAAG;AAChB,MAAC,KAAK,MAAc,mBAAmB,OAAO,IAAI;AAAA,IACpD;AAAA,EACF;AACF;",
6
+ "names": []
7
+ }