@dooboostore/dom-parser 1.0.2 → 1.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (518) hide show
  1. package/dist/cjs/DomParser.js +10 -1
  2. package/dist/cjs/DomParser.js.map +2 -2
  3. package/dist/cjs/factory/ElementFactory.js +27 -6
  4. package/dist/cjs/factory/ElementFactory.js.map +2 -2
  5. package/dist/cjs/index.js +4 -0
  6. package/dist/cjs/index.js.map +2 -2
  7. package/dist/cjs/node/CharacterData.js.map +1 -1
  8. package/dist/cjs/node/ChildNode.js +0 -15
  9. package/dist/cjs/node/ChildNode.js.map +3 -3
  10. package/dist/cjs/node/ChildNodeBase.js +20 -0
  11. package/dist/cjs/node/ChildNodeBase.js.map +2 -2
  12. package/dist/cjs/node/Comment.js.map +2 -2
  13. package/dist/cjs/node/Document.js +0 -27
  14. package/dist/cjs/node/Document.js.map +4 -4
  15. package/dist/cjs/node/DocumentBase.js +168 -205
  16. package/dist/cjs/node/DocumentBase.js.map +2 -2
  17. package/dist/cjs/node/DocumentFragment.js +0 -15
  18. package/dist/cjs/node/DocumentFragment.js.map +3 -3
  19. package/dist/cjs/node/DocumentFragmentBase.js.map +2 -2
  20. package/dist/cjs/node/Node.js.map +1 -1
  21. package/dist/cjs/node/NodeBase.js +44 -2
  22. package/dist/cjs/node/NodeBase.js.map +2 -2
  23. package/dist/cjs/node/NodeFilter.js +43 -0
  24. package/dist/cjs/node/NodeFilter.js.map +7 -0
  25. package/dist/cjs/node/NodeIterator.js +1 -28
  26. package/dist/cjs/node/NodeIterator.js.map +2 -2
  27. package/dist/cjs/node/ParentNode.js +0 -15
  28. package/dist/cjs/node/ParentNode.js.map +3 -3
  29. package/dist/cjs/node/ParentNodeBase.js +10 -10
  30. package/dist/cjs/node/ParentNodeBase.js.map +3 -3
  31. package/dist/cjs/node/ShadowRootBase.js +79 -0
  32. package/dist/cjs/node/ShadowRootBase.js.map +7 -0
  33. package/dist/cjs/node/Text.js +0 -15
  34. package/dist/cjs/node/Text.js.map +3 -3
  35. package/dist/cjs/node/TextBase.js +0 -3
  36. package/dist/cjs/node/TextBase.js.map +2 -2
  37. package/dist/cjs/node/TreeWalker.js +272 -0
  38. package/dist/cjs/node/TreeWalker.js.map +7 -0
  39. package/dist/cjs/node/collection/{HTMLCollection.js → HTMLCollectionImp.js} +7 -6
  40. package/dist/cjs/node/collection/HTMLCollectionImp.js.map +7 -0
  41. package/dist/cjs/node/collection/HTMLCollectionOfImp.js +26 -0
  42. package/dist/cjs/node/collection/HTMLCollectionOfImp.js.map +7 -0
  43. package/dist/cjs/node/collection/NodeList.js.map +1 -1
  44. package/dist/cjs/node/collection/{NodeListOf.js → NodeListOfImp.js} +6 -6
  45. package/dist/cjs/node/collection/NodeListOfImp.js.map +7 -0
  46. package/dist/cjs/node/collection/StylePropertyMapImpl.js +65 -0
  47. package/dist/cjs/node/collection/StylePropertyMapImpl.js.map +7 -0
  48. package/dist/cjs/node/collection/index.js +6 -6
  49. package/dist/cjs/node/collection/index.js.map +2 -2
  50. package/dist/cjs/node/elements/Element.js +0 -15
  51. package/dist/cjs/node/elements/Element.js.map +3 -3
  52. package/dist/cjs/node/elements/ElementBase.js +163 -331
  53. package/dist/cjs/node/elements/ElementBase.js.map +3 -3
  54. package/dist/cjs/node/elements/HTMLAreaElement.js.map +2 -2
  55. package/dist/cjs/node/{collection/HTMLCollectionOf.js → elements/HTMLAudioElement.js} +9 -16
  56. package/dist/cjs/node/elements/HTMLAudioElement.js.map +7 -0
  57. package/dist/cjs/node/elements/HTMLButtonElement.js +1 -1
  58. package/dist/cjs/node/elements/HTMLButtonElement.js.map +2 -2
  59. package/dist/cjs/node/elements/HTMLDListElement.js +29 -0
  60. package/dist/cjs/node/elements/HTMLDListElement.js.map +7 -0
  61. package/dist/cjs/node/elements/HTMLDataElement.js +29 -0
  62. package/dist/cjs/node/elements/HTMLDataElement.js.map +7 -0
  63. package/dist/cjs/node/elements/HTMLDataListElement.js +29 -0
  64. package/dist/cjs/node/elements/HTMLDataListElement.js.map +7 -0
  65. package/dist/cjs/node/elements/HTMLDetailsElement.js +29 -0
  66. package/dist/cjs/node/elements/HTMLDetailsElement.js.map +7 -0
  67. package/dist/cjs/node/elements/HTMLDialogElement.js +29 -0
  68. package/dist/cjs/node/elements/HTMLDialogElement.js.map +7 -0
  69. package/dist/cjs/node/elements/HTMLElement.js +10 -0
  70. package/dist/cjs/node/elements/HTMLElement.js.map +2 -2
  71. package/dist/cjs/node/elements/HTMLElementBase.js +41 -43
  72. package/dist/cjs/node/elements/HTMLElementBase.js.map +2 -2
  73. package/dist/cjs/node/elements/HTMLEmbedElement.js.map +2 -2
  74. package/dist/cjs/node/elements/HTMLFieldSetElement.js +29 -0
  75. package/dist/cjs/node/elements/HTMLFieldSetElement.js.map +7 -0
  76. package/dist/cjs/node/elements/HTMLHRElement.js +29 -0
  77. package/dist/cjs/node/elements/HTMLHRElement.js.map +7 -0
  78. package/dist/cjs/node/elements/HTMLIFrameElement.js +29 -0
  79. package/dist/cjs/node/elements/HTMLIFrameElement.js.map +7 -0
  80. package/dist/cjs/node/elements/HTMLLabelElement.js +29 -0
  81. package/dist/cjs/node/elements/HTMLLabelElement.js.map +7 -0
  82. package/dist/cjs/node/elements/HTMLLegendElement.js +29 -0
  83. package/dist/cjs/node/elements/HTMLLegendElement.js.map +7 -0
  84. package/dist/cjs/node/elements/HTMLMapElement.js +29 -0
  85. package/dist/cjs/node/elements/HTMLMapElement.js.map +7 -0
  86. package/dist/cjs/node/elements/HTMLMeterElement.js +29 -0
  87. package/dist/cjs/node/elements/HTMLMeterElement.js.map +7 -0
  88. package/dist/cjs/node/elements/HTMLModElement.js +29 -0
  89. package/dist/cjs/node/elements/HTMLModElement.js.map +7 -0
  90. package/dist/cjs/node/elements/HTMLObjectElement.js +29 -0
  91. package/dist/cjs/node/elements/HTMLObjectElement.js.map +7 -0
  92. package/dist/cjs/node/elements/HTMLOptGroupElement.js +29 -0
  93. package/dist/cjs/node/elements/HTMLOptGroupElement.js.map +7 -0
  94. package/dist/cjs/node/elements/HTMLOptionElement.js +29 -0
  95. package/dist/cjs/node/elements/HTMLOptionElement.js.map +7 -0
  96. package/dist/cjs/node/elements/HTMLOutputElement.js +29 -0
  97. package/dist/cjs/node/elements/HTMLOutputElement.js.map +7 -0
  98. package/dist/cjs/node/elements/HTMLParamElement.js +29 -0
  99. package/dist/cjs/node/elements/HTMLParamElement.js.map +7 -0
  100. package/dist/cjs/node/elements/HTMLPictureElement.js +29 -0
  101. package/dist/cjs/node/elements/HTMLPictureElement.js.map +7 -0
  102. package/dist/cjs/node/elements/HTMLPreElement.js +29 -0
  103. package/dist/cjs/node/elements/HTMLPreElement.js.map +7 -0
  104. package/dist/cjs/node/elements/HTMLProgressElement.js +29 -0
  105. package/dist/cjs/node/elements/HTMLProgressElement.js.map +7 -0
  106. package/dist/cjs/node/elements/HTMLQuoteElement.js +29 -0
  107. package/dist/cjs/node/elements/HTMLQuoteElement.js.map +7 -0
  108. package/dist/cjs/node/elements/HTMLSelectElement.js +29 -0
  109. package/dist/cjs/node/elements/HTMLSelectElement.js.map +7 -0
  110. package/dist/cjs/node/elements/HTMLSlotElement.js +29 -0
  111. package/dist/cjs/node/elements/HTMLSlotElement.js.map +7 -0
  112. package/dist/cjs/node/elements/HTMLSourceElement.js +29 -0
  113. package/dist/cjs/node/elements/HTMLSourceElement.js.map +7 -0
  114. package/dist/cjs/node/elements/HTMLTableElement.js.map +2 -2
  115. package/dist/cjs/node/elements/HTMLTbodyElement.js.map +2 -2
  116. package/dist/cjs/node/elements/HTMLTdElement.js.map +2 -2
  117. package/dist/cjs/node/elements/HTMLTemplateElement.js.map +2 -2
  118. package/dist/cjs/node/elements/HTMLTextAreaElement.js +29 -0
  119. package/dist/cjs/node/elements/HTMLTextAreaElement.js.map +7 -0
  120. package/dist/cjs/node/elements/HTMLTfootElement.js.map +2 -2
  121. package/dist/cjs/node/elements/HTMLTheadElement.js.map +2 -2
  122. package/dist/cjs/node/elements/HTMLTimeElement.js +29 -0
  123. package/dist/cjs/node/elements/HTMLTimeElement.js.map +7 -0
  124. package/dist/cjs/node/elements/HTMLTrElement.js.map +2 -2
  125. package/dist/cjs/node/elements/HTMLTrackElement.js +29 -0
  126. package/dist/cjs/node/elements/HTMLTrackElement.js.map +7 -0
  127. package/dist/cjs/node/elements/HTMLVideoElement.js +29 -0
  128. package/dist/cjs/node/elements/HTMLVideoElement.js.map +7 -0
  129. package/dist/cjs/node/elements/index.js +181 -92
  130. package/dist/cjs/node/elements/index.js.map +2 -2
  131. package/dist/cjs/node/index.js +6 -16
  132. package/dist/cjs/node/index.js.map +2 -2
  133. package/dist/cjs/utils/CSSSelector.js.map +2 -2
  134. package/dist/cjs/window/CustomElementRegistryImp.js +105 -0
  135. package/dist/cjs/window/CustomElementRegistryImp.js.map +7 -0
  136. package/dist/cjs/window/Window.js +0 -15
  137. package/dist/cjs/window/Window.js.map +3 -3
  138. package/dist/cjs/window/WindowBase.js +210 -613
  139. package/dist/cjs/window/WindowBase.js.map +2 -2
  140. package/dist/cjs/window/index.js +0 -5
  141. package/dist/cjs/window/index.js.map +2 -2
  142. package/dist/esm/DomParser.js +10 -1
  143. package/dist/esm/DomParser.js.map +2 -2
  144. package/dist/esm/factory/ElementFactory.js +27 -6
  145. package/dist/esm/factory/ElementFactory.js.map +2 -2
  146. package/dist/esm/index.js +4 -0
  147. package/dist/esm/index.js.map +2 -2
  148. package/dist/esm/node/ChildNodeBase.js +20 -0
  149. package/dist/esm/node/ChildNodeBase.js.map +2 -2
  150. package/dist/esm/node/Comment.js.map +2 -2
  151. package/dist/esm/node/Document.js +0 -8
  152. package/dist/esm/node/Document.js.map +4 -4
  153. package/dist/esm/node/DocumentBase.js +165 -202
  154. package/dist/esm/node/DocumentBase.js.map +2 -2
  155. package/dist/esm/node/DocumentFragmentBase.js.map +2 -2
  156. package/dist/esm/node/Node.js.map +1 -1
  157. package/dist/esm/node/NodeBase.js +45 -22
  158. package/dist/esm/node/NodeBase.js.map +2 -2
  159. package/dist/esm/node/NodeFilter.js +24 -0
  160. package/dist/esm/node/NodeFilter.js.map +7 -0
  161. package/dist/esm/node/NodeIterator.js +1 -28
  162. package/dist/esm/node/NodeIterator.js.map +2 -2
  163. package/dist/esm/node/ParentNodeBase.js +4 -4
  164. package/dist/esm/node/ParentNodeBase.js.map +2 -2
  165. package/dist/esm/node/ShadowRootBase.js +60 -0
  166. package/dist/esm/node/ShadowRootBase.js.map +7 -0
  167. package/dist/esm/node/TextBase.js +0 -3
  168. package/dist/esm/node/TextBase.js.map +2 -2
  169. package/dist/esm/node/TreeWalker.js +253 -0
  170. package/dist/esm/node/TreeWalker.js.map +7 -0
  171. package/dist/esm/node/collection/{HTMLCollection.js → HTMLCollectionImp.js} +4 -3
  172. package/dist/esm/node/collection/HTMLCollectionImp.js.map +7 -0
  173. package/dist/esm/node/collection/HTMLCollectionOfImp.js +7 -0
  174. package/dist/esm/node/collection/HTMLCollectionOfImp.js.map +7 -0
  175. package/dist/esm/node/collection/NodeList.js.map +1 -1
  176. package/dist/esm/node/collection/{NodeListOf.js → NodeListOfImp.js} +3 -3
  177. package/dist/esm/node/collection/NodeListOfImp.js.map +7 -0
  178. package/dist/esm/node/collection/StylePropertyMapImpl.js +46 -0
  179. package/dist/esm/node/collection/StylePropertyMapImpl.js.map +7 -0
  180. package/dist/esm/node/collection/index.js +6 -6
  181. package/dist/esm/node/collection/index.js.map +2 -2
  182. package/dist/esm/node/elements/ElementBase.js +163 -331
  183. package/dist/esm/node/elements/ElementBase.js.map +3 -3
  184. package/dist/esm/node/elements/HTMLAreaElement.js.map +2 -2
  185. package/dist/esm/node/elements/HTMLAudioElement.js +10 -0
  186. package/dist/esm/node/elements/HTMLAudioElement.js.map +7 -0
  187. package/dist/esm/node/elements/HTMLButtonElement.js +1 -1
  188. package/dist/esm/node/elements/HTMLButtonElement.js.map +2 -2
  189. package/dist/esm/node/elements/HTMLDListElement.js +10 -0
  190. package/dist/esm/node/elements/HTMLDListElement.js.map +7 -0
  191. package/dist/esm/node/elements/HTMLDataElement.js +10 -0
  192. package/dist/esm/node/elements/HTMLDataElement.js.map +7 -0
  193. package/dist/esm/node/elements/HTMLDataListElement.js +10 -0
  194. package/dist/esm/node/elements/HTMLDataListElement.js.map +7 -0
  195. package/dist/esm/node/elements/HTMLDetailsElement.js +10 -0
  196. package/dist/esm/node/elements/HTMLDetailsElement.js.map +7 -0
  197. package/dist/esm/node/elements/HTMLDialogElement.js +10 -0
  198. package/dist/esm/node/elements/HTMLDialogElement.js.map +7 -0
  199. package/dist/esm/node/elements/HTMLElement.js +6 -0
  200. package/dist/esm/node/elements/HTMLElement.js.map +3 -3
  201. package/dist/esm/node/elements/HTMLElementBase.js +40 -42
  202. package/dist/esm/node/elements/HTMLElementBase.js.map +2 -2
  203. package/dist/esm/node/elements/HTMLEmbedElement.js.map +2 -2
  204. package/dist/esm/node/elements/HTMLFieldSetElement.js +10 -0
  205. package/dist/esm/node/elements/HTMLFieldSetElement.js.map +7 -0
  206. package/dist/esm/node/elements/HTMLHRElement.js +10 -0
  207. package/dist/esm/node/elements/HTMLHRElement.js.map +7 -0
  208. package/dist/esm/node/elements/HTMLIFrameElement.js +10 -0
  209. package/dist/esm/node/elements/HTMLIFrameElement.js.map +7 -0
  210. package/dist/esm/node/elements/HTMLLabelElement.js +10 -0
  211. package/dist/esm/node/elements/HTMLLabelElement.js.map +7 -0
  212. package/dist/esm/node/elements/HTMLLegendElement.js +10 -0
  213. package/dist/esm/node/elements/HTMLLegendElement.js.map +7 -0
  214. package/dist/esm/node/elements/HTMLMapElement.js +10 -0
  215. package/dist/esm/node/elements/HTMLMapElement.js.map +7 -0
  216. package/dist/esm/node/elements/HTMLMeterElement.js +10 -0
  217. package/dist/esm/node/elements/HTMLMeterElement.js.map +7 -0
  218. package/dist/esm/node/elements/HTMLModElement.js +10 -0
  219. package/dist/esm/node/elements/HTMLModElement.js.map +7 -0
  220. package/dist/esm/node/elements/HTMLObjectElement.js +10 -0
  221. package/dist/esm/node/elements/HTMLObjectElement.js.map +7 -0
  222. package/dist/esm/node/elements/HTMLOptGroupElement.js +10 -0
  223. package/dist/esm/node/elements/HTMLOptGroupElement.js.map +7 -0
  224. package/dist/esm/node/elements/HTMLOptionElement.js +10 -0
  225. package/dist/esm/node/elements/HTMLOptionElement.js.map +7 -0
  226. package/dist/esm/node/elements/HTMLOutputElement.js +10 -0
  227. package/dist/esm/node/elements/HTMLOutputElement.js.map +7 -0
  228. package/dist/esm/node/elements/HTMLParamElement.js +10 -0
  229. package/dist/esm/node/elements/HTMLParamElement.js.map +7 -0
  230. package/dist/esm/node/elements/HTMLPictureElement.js +10 -0
  231. package/dist/esm/node/elements/HTMLPictureElement.js.map +7 -0
  232. package/dist/esm/node/elements/HTMLPreElement.js +10 -0
  233. package/dist/esm/node/elements/HTMLPreElement.js.map +7 -0
  234. package/dist/esm/node/elements/HTMLProgressElement.js +10 -0
  235. package/dist/esm/node/elements/HTMLProgressElement.js.map +7 -0
  236. package/dist/esm/node/elements/HTMLQuoteElement.js +10 -0
  237. package/dist/esm/node/elements/HTMLQuoteElement.js.map +7 -0
  238. package/dist/esm/node/elements/HTMLSelectElement.js +10 -0
  239. package/dist/esm/node/elements/HTMLSelectElement.js.map +7 -0
  240. package/dist/esm/node/elements/HTMLSlotElement.js +10 -0
  241. package/dist/esm/node/elements/HTMLSlotElement.js.map +7 -0
  242. package/dist/esm/node/elements/HTMLSourceElement.js +10 -0
  243. package/dist/esm/node/elements/HTMLSourceElement.js.map +7 -0
  244. package/dist/esm/node/elements/HTMLTableElement.js.map +2 -2
  245. package/dist/esm/node/elements/HTMLTbodyElement.js.map +2 -2
  246. package/dist/esm/node/elements/HTMLTdElement.js.map +2 -2
  247. package/dist/esm/node/elements/HTMLTemplateElement.js.map +2 -2
  248. package/dist/esm/node/elements/HTMLTextAreaElement.js +10 -0
  249. package/dist/esm/node/elements/HTMLTextAreaElement.js.map +7 -0
  250. package/dist/esm/node/elements/HTMLTfootElement.js.map +2 -2
  251. package/dist/esm/node/elements/HTMLTheadElement.js.map +2 -2
  252. package/dist/esm/node/elements/HTMLTimeElement.js +10 -0
  253. package/dist/esm/node/elements/HTMLTimeElement.js.map +7 -0
  254. package/dist/esm/node/elements/HTMLTrElement.js.map +2 -2
  255. package/dist/esm/node/elements/HTMLTrackElement.js +10 -0
  256. package/dist/esm/node/elements/HTMLTrackElement.js.map +7 -0
  257. package/dist/esm/node/elements/HTMLVideoElement.js +10 -0
  258. package/dist/esm/node/elements/HTMLVideoElement.js.map +7 -0
  259. package/dist/esm/node/elements/index.js +182 -93
  260. package/dist/esm/node/elements/index.js.map +2 -2
  261. package/dist/esm/node/index.js +7 -17
  262. package/dist/esm/node/index.js.map +2 -2
  263. package/dist/esm/utils/CSSSelector.js.map +2 -2
  264. package/dist/esm/window/CustomElementRegistryImp.js +86 -0
  265. package/dist/esm/window/CustomElementRegistryImp.js.map +7 -0
  266. package/dist/esm/window/WindowBase.js +259 -597
  267. package/dist/esm/window/WindowBase.js.map +2 -2
  268. package/dist/esm/window/index.js +0 -5
  269. package/dist/esm/window/index.js.map +2 -2
  270. package/dist/esm-bundle/dooboostore-dom-parser.esm.js +3449 -3551
  271. package/dist/esm-bundle/dooboostore-dom-parser.esm.js.map +4 -4
  272. package/dist/types/DomParser.d.ts.map +1 -1
  273. package/dist/types/factory/ElementFactory.d.ts +1 -1
  274. package/dist/types/factory/ElementFactory.d.ts.map +1 -1
  275. package/dist/types/index.d.ts +3 -1
  276. package/dist/types/index.d.ts.map +1 -1
  277. package/dist/types/node/CharacterData.d.ts +0 -2
  278. package/dist/types/node/CharacterData.d.ts.map +1 -1
  279. package/dist/types/node/ChildNode.d.ts +0 -38
  280. package/dist/types/node/ChildNode.d.ts.map +1 -1
  281. package/dist/types/node/ChildNodeBase.d.ts +6 -4
  282. package/dist/types/node/ChildNodeBase.d.ts.map +1 -1
  283. package/dist/types/node/Comment.d.ts +1 -1
  284. package/dist/types/node/Comment.d.ts.map +1 -1
  285. package/dist/types/node/Document.d.ts +0 -856
  286. package/dist/types/node/Document.d.ts.map +1 -1
  287. package/dist/types/node/DocumentBase.d.ts +68 -110
  288. package/dist/types/node/DocumentBase.d.ts.map +1 -1
  289. package/dist/types/node/DocumentFragment.d.ts +0 -38
  290. package/dist/types/node/DocumentFragment.d.ts.map +1 -1
  291. package/dist/types/node/DocumentFragmentBase.d.ts +1 -8
  292. package/dist/types/node/DocumentFragmentBase.d.ts.map +1 -1
  293. package/dist/types/node/Node.d.ts +0 -213
  294. package/dist/types/node/Node.d.ts.map +1 -1
  295. package/dist/types/node/NodeBase.d.ts +11 -8
  296. package/dist/types/node/NodeBase.d.ts.map +1 -1
  297. package/dist/types/node/NodeFilter.d.ts +25 -0
  298. package/dist/types/node/NodeFilter.d.ts.map +1 -0
  299. package/dist/types/node/NodeIterator.d.ts +0 -34
  300. package/dist/types/node/NodeIterator.d.ts.map +1 -1
  301. package/dist/types/node/ParentNode.d.ts +0 -84
  302. package/dist/types/node/ParentNode.d.ts.map +1 -1
  303. package/dist/types/node/ParentNodeBase.d.ts +0 -5
  304. package/dist/types/node/ParentNodeBase.d.ts.map +1 -1
  305. package/dist/types/node/ShadowRootBase.d.ts +36 -0
  306. package/dist/types/node/ShadowRootBase.d.ts.map +1 -0
  307. package/dist/types/node/Text.d.ts +0 -24
  308. package/dist/types/node/Text.d.ts.map +1 -1
  309. package/dist/types/node/TextBase.d.ts +2 -3
  310. package/dist/types/node/TextBase.d.ts.map +1 -1
  311. package/dist/types/node/TreeWalker.d.ts +48 -0
  312. package/dist/types/node/TreeWalker.d.ts.map +1 -0
  313. package/dist/types/node/collection/{HTMLCollection.d.ts → HTMLCollectionImp.d.ts} +2 -3
  314. package/dist/types/node/collection/HTMLCollectionImp.d.ts.map +1 -0
  315. package/dist/types/node/collection/HTMLCollectionOfImp.d.ts +9 -0
  316. package/dist/types/node/collection/HTMLCollectionOfImp.d.ts.map +1 -0
  317. package/dist/types/node/collection/NodeList.d.ts +0 -1
  318. package/dist/types/node/collection/NodeList.d.ts.map +1 -1
  319. package/dist/types/node/collection/{NodeListOf.d.ts → NodeListOfImp.d.ts} +3 -4
  320. package/dist/types/node/collection/NodeListOfImp.d.ts.map +1 -0
  321. package/dist/types/node/collection/StylePropertyMapImpl.d.ts +20 -0
  322. package/dist/types/node/collection/StylePropertyMapImpl.d.ts.map +1 -0
  323. package/dist/types/node/collection/index.d.ts +3 -3
  324. package/dist/types/node/collection/index.d.ts.map +1 -1
  325. package/dist/types/node/elements/Element.d.ts +0 -687
  326. package/dist/types/node/elements/Element.d.ts.map +1 -1
  327. package/dist/types/node/elements/ElementBase.d.ts +98 -74
  328. package/dist/types/node/elements/ElementBase.d.ts.map +1 -1
  329. package/dist/types/node/elements/HTMLAreaElement.d.ts +0 -1
  330. package/dist/types/node/elements/HTMLAreaElement.d.ts.map +1 -1
  331. package/dist/types/node/elements/HTMLAudioElement.d.ts +8 -0
  332. package/dist/types/node/elements/HTMLAudioElement.d.ts.map +1 -0
  333. package/dist/types/node/elements/HTMLButtonElement.d.ts +1 -1
  334. package/dist/types/node/elements/HTMLButtonElement.d.ts.map +1 -1
  335. package/dist/types/node/elements/HTMLDListElement.d.ts +5 -0
  336. package/dist/types/node/elements/HTMLDListElement.d.ts.map +1 -0
  337. package/dist/types/node/elements/HTMLDataElement.d.ts +5 -0
  338. package/dist/types/node/elements/HTMLDataElement.d.ts.map +1 -0
  339. package/dist/types/node/elements/HTMLDataListElement.d.ts +5 -0
  340. package/dist/types/node/elements/HTMLDataListElement.d.ts.map +1 -0
  341. package/dist/types/node/elements/HTMLDetailsElement.d.ts +5 -0
  342. package/dist/types/node/elements/HTMLDetailsElement.d.ts.map +1 -0
  343. package/dist/types/node/elements/HTMLDialogElement.d.ts +5 -0
  344. package/dist/types/node/elements/HTMLDialogElement.d.ts.map +1 -0
  345. package/dist/types/node/elements/HTMLElement.d.ts +2 -119
  346. package/dist/types/node/elements/HTMLElement.d.ts.map +1 -1
  347. package/dist/types/node/elements/HTMLElementBase.d.ts +126 -5
  348. package/dist/types/node/elements/HTMLElementBase.d.ts.map +1 -1
  349. package/dist/types/node/elements/HTMLEmbedElement.d.ts +0 -1
  350. package/dist/types/node/elements/HTMLEmbedElement.d.ts.map +1 -1
  351. package/dist/types/node/elements/HTMLFieldSetElement.d.ts +5 -0
  352. package/dist/types/node/elements/HTMLFieldSetElement.d.ts.map +1 -0
  353. package/dist/types/node/elements/HTMLHRElement.d.ts +5 -0
  354. package/dist/types/node/elements/HTMLHRElement.d.ts.map +1 -0
  355. package/dist/types/node/elements/HTMLIFrameElement.d.ts +5 -0
  356. package/dist/types/node/elements/HTMLIFrameElement.d.ts.map +1 -0
  357. package/dist/types/node/elements/HTMLLabelElement.d.ts +5 -0
  358. package/dist/types/node/elements/HTMLLabelElement.d.ts.map +1 -0
  359. package/dist/types/node/elements/HTMLLegendElement.d.ts +5 -0
  360. package/dist/types/node/elements/HTMLLegendElement.d.ts.map +1 -0
  361. package/dist/types/node/elements/HTMLMapElement.d.ts +5 -0
  362. package/dist/types/node/elements/HTMLMapElement.d.ts.map +1 -0
  363. package/dist/types/node/elements/HTMLMeterElement.d.ts +5 -0
  364. package/dist/types/node/elements/HTMLMeterElement.d.ts.map +1 -0
  365. package/dist/types/node/elements/HTMLModElement.d.ts +5 -0
  366. package/dist/types/node/elements/HTMLModElement.d.ts.map +1 -0
  367. package/dist/types/node/elements/HTMLObjectElement.d.ts +5 -0
  368. package/dist/types/node/elements/HTMLObjectElement.d.ts.map +1 -0
  369. package/dist/types/node/elements/HTMLOptGroupElement.d.ts +5 -0
  370. package/dist/types/node/elements/HTMLOptGroupElement.d.ts.map +1 -0
  371. package/dist/types/node/elements/HTMLOptionElement.d.ts +5 -0
  372. package/dist/types/node/elements/HTMLOptionElement.d.ts.map +1 -0
  373. package/dist/types/node/elements/HTMLOutputElement.d.ts +5 -0
  374. package/dist/types/node/elements/HTMLOutputElement.d.ts.map +1 -0
  375. package/dist/types/node/elements/HTMLParamElement.d.ts +5 -0
  376. package/dist/types/node/elements/HTMLParamElement.d.ts.map +1 -0
  377. package/dist/types/node/elements/HTMLPictureElement.d.ts +5 -0
  378. package/dist/types/node/elements/HTMLPictureElement.d.ts.map +1 -0
  379. package/dist/types/node/elements/HTMLPreElement.d.ts +5 -0
  380. package/dist/types/node/elements/HTMLPreElement.d.ts.map +1 -0
  381. package/dist/types/node/elements/HTMLProgressElement.d.ts +5 -0
  382. package/dist/types/node/elements/HTMLProgressElement.d.ts.map +1 -0
  383. package/dist/types/node/elements/HTMLQuoteElement.d.ts +5 -0
  384. package/dist/types/node/elements/HTMLQuoteElement.d.ts.map +1 -0
  385. package/dist/types/node/elements/HTMLSelectElement.d.ts +5 -0
  386. package/dist/types/node/elements/HTMLSelectElement.d.ts.map +1 -0
  387. package/dist/types/node/elements/HTMLSlotElement.d.ts +5 -0
  388. package/dist/types/node/elements/HTMLSlotElement.d.ts.map +1 -0
  389. package/dist/types/node/elements/HTMLSourceElement.d.ts +5 -0
  390. package/dist/types/node/elements/HTMLSourceElement.d.ts.map +1 -0
  391. package/dist/types/node/elements/HTMLTableElement.d.ts +3 -4
  392. package/dist/types/node/elements/HTMLTableElement.d.ts.map +1 -1
  393. package/dist/types/node/elements/HTMLTbodyElement.d.ts +2 -3
  394. package/dist/types/node/elements/HTMLTbodyElement.d.ts.map +1 -1
  395. package/dist/types/node/elements/HTMLTemplateElement.d.ts +0 -1
  396. package/dist/types/node/elements/HTMLTemplateElement.d.ts.map +1 -1
  397. package/dist/types/node/elements/HTMLTextAreaElement.d.ts +5 -0
  398. package/dist/types/node/elements/HTMLTextAreaElement.d.ts.map +1 -0
  399. package/dist/types/node/elements/HTMLTfootElement.d.ts +2 -3
  400. package/dist/types/node/elements/HTMLTfootElement.d.ts.map +1 -1
  401. package/dist/types/node/elements/HTMLTheadElement.d.ts +2 -3
  402. package/dist/types/node/elements/HTMLTheadElement.d.ts.map +1 -1
  403. package/dist/types/node/elements/HTMLTimeElement.d.ts +5 -0
  404. package/dist/types/node/elements/HTMLTimeElement.d.ts.map +1 -0
  405. package/dist/types/node/elements/HTMLTrElement.d.ts +2 -3
  406. package/dist/types/node/elements/HTMLTrElement.d.ts.map +1 -1
  407. package/dist/types/node/elements/HTMLTrackElement.d.ts +5 -0
  408. package/dist/types/node/elements/HTMLTrackElement.d.ts.map +1 -0
  409. package/dist/types/node/elements/HTMLVideoElement.d.ts +8 -0
  410. package/dist/types/node/elements/HTMLVideoElement.d.ts.map +1 -0
  411. package/dist/types/node/elements/index.d.ts +106 -52
  412. package/dist/types/node/elements/index.d.ts.map +1 -1
  413. package/dist/types/node/index.d.ts +4 -7
  414. package/dist/types/node/index.d.ts.map +1 -1
  415. package/dist/types/utils/CSSSelector.d.ts +0 -1
  416. package/dist/types/utils/CSSSelector.d.ts.map +1 -1
  417. package/dist/types/window/CustomElementRegistryImp.d.ts +18 -0
  418. package/dist/types/window/CustomElementRegistryImp.d.ts.map +1 -0
  419. package/dist/types/window/Window.d.ts +0 -619
  420. package/dist/types/window/Window.d.ts.map +1 -1
  421. package/dist/types/window/WindowBase.d.ts +253 -286
  422. package/dist/types/window/WindowBase.d.ts.map +1 -1
  423. package/dist/types/window/index.d.ts +0 -1
  424. package/dist/types/window/index.d.ts.map +1 -1
  425. package/dist/umd-bundle/dooboostore-dom-parser.umd.js +3460 -3562
  426. package/dist/umd-bundle/dooboostore-dom-parser.umd.js.map +4 -4
  427. package/package.json +1 -1
  428. package/src/DomParser.ts +28 -20
  429. package/src/factory/ElementFactory.ts +79 -53
  430. package/src/index.ts +11 -10
  431. package/src/node/CharacterData.ts +0 -2
  432. package/src/node/ChildNode.ts +42 -42
  433. package/src/node/ChildNodeBase.ts +60 -39
  434. package/src/node/Comment.ts +60 -60
  435. package/src/node/Document.ts +129 -882
  436. package/src/node/DocumentBase.ts +371 -467
  437. package/src/node/DocumentFragment.ts +38 -44
  438. package/src/node/DocumentFragmentBase.ts +4 -9
  439. package/src/node/Node.ts +231 -224
  440. package/src/node/NodeBase.ts +469 -443
  441. package/src/node/NodeFilter.ts +50 -0
  442. package/src/node/NodeIterator.ts +117 -172
  443. package/src/node/ParentNode.ts +93 -93
  444. package/src/node/ParentNodeBase.ts +7 -10
  445. package/src/node/ShadowRootBase.ts +87 -0
  446. package/src/node/Text.ts +30 -30
  447. package/src/node/TextBase.ts +92 -94
  448. package/src/node/TreeWalker.ts +280 -0
  449. package/src/node/collection/{HTMLCollection.ts → HTMLCollectionImp.ts} +3 -2
  450. package/src/node/collection/HTMLCollectionOfImp.ts +12 -0
  451. package/src/node/collection/NodeList.ts +1 -1
  452. package/src/node/collection/{NodeListOf.ts → NodeListOfImp.ts} +3 -3
  453. package/src/node/collection/StylePropertyMapImpl.ts +60 -0
  454. package/src/node/collection/index.ts +3 -3
  455. package/src/node/elements/Element.ts +212 -772
  456. package/src/node/elements/ElementBase.ts +840 -1204
  457. package/src/node/elements/HTMLAreaElement.ts +0 -1
  458. package/src/node/elements/HTMLAudioElement.ts +10 -0
  459. package/src/node/elements/HTMLButtonElement.ts +63 -63
  460. package/src/node/elements/HTMLDListElement.ts +2 -0
  461. package/src/node/elements/HTMLDataElement.ts +6 -0
  462. package/src/node/elements/HTMLDataListElement.ts +2 -0
  463. package/src/node/elements/HTMLDetailsElement.ts +2 -0
  464. package/src/node/elements/HTMLDialogElement.ts +2 -0
  465. package/src/node/elements/HTMLElement.ts +2 -137
  466. package/src/node/elements/HTMLElementBase.ts +466 -355
  467. package/src/node/elements/HTMLEmbedElement.ts +0 -1
  468. package/src/node/elements/HTMLFieldSetElement.ts +2 -0
  469. package/src/node/elements/HTMLHRElement.ts +2 -0
  470. package/src/node/elements/HTMLIFrameElement.ts +2 -0
  471. package/src/node/elements/HTMLLabelElement.ts +2 -0
  472. package/src/node/elements/HTMLLegendElement.ts +2 -0
  473. package/src/node/elements/HTMLMapElement.ts +2 -0
  474. package/src/node/elements/HTMLMeterElement.ts +2 -0
  475. package/src/node/elements/HTMLModElement.ts +2 -0
  476. package/src/node/elements/HTMLObjectElement.ts +2 -0
  477. package/src/node/elements/HTMLOptGroupElement.ts +2 -0
  478. package/src/node/elements/HTMLOptionElement.ts +2 -0
  479. package/src/node/elements/HTMLOutputElement.ts +2 -0
  480. package/src/node/elements/HTMLParamElement.ts +2 -0
  481. package/src/node/elements/HTMLPictureElement.ts +2 -0
  482. package/src/node/elements/HTMLPreElement.ts +2 -0
  483. package/src/node/elements/HTMLProgressElement.ts +2 -0
  484. package/src/node/elements/HTMLQuoteElement.ts +2 -0
  485. package/src/node/elements/HTMLSelectElement.ts +2 -0
  486. package/src/node/elements/HTMLSlotElement.ts +2 -0
  487. package/src/node/elements/HTMLSourceElement.ts +2 -0
  488. package/src/node/elements/HTMLTableElement.ts +3 -7
  489. package/src/node/elements/HTMLTbodyElement.ts +2 -3
  490. package/src/node/elements/HTMLTdElement.ts +1 -1
  491. package/src/node/elements/HTMLTemplateElement.ts +3 -6
  492. package/src/node/elements/HTMLTextAreaElement.ts +2 -0
  493. package/src/node/elements/HTMLTfootElement.ts +2 -3
  494. package/src/node/elements/HTMLTheadElement.ts +2 -3
  495. package/src/node/elements/HTMLTimeElement.ts +2 -0
  496. package/src/node/elements/HTMLTrElement.ts +3 -4
  497. package/src/node/elements/HTMLTrackElement.ts +2 -0
  498. package/src/node/elements/HTMLVideoElement.ts +10 -0
  499. package/src/node/elements/index.ts +226 -149
  500. package/src/node/index.ts +8 -8
  501. package/src/utils/CSSSelector.ts +0 -1
  502. package/src/window/CustomElementRegistryImp.ts +120 -0
  503. package/src/window/Window.ts +716 -715
  504. package/src/window/WindowBase.ts +482 -847
  505. package/src/window/index.ts +0 -1
  506. package/tsconfig.json +1 -0
  507. package/dist/cjs/node/collection/HTMLCollection.js.map +0 -7
  508. package/dist/cjs/node/collection/HTMLCollectionOf.js.map +0 -7
  509. package/dist/cjs/node/collection/NodeListOf.js.map +0 -7
  510. package/dist/esm/node/collection/HTMLCollection.js.map +0 -7
  511. package/dist/esm/node/collection/HTMLCollectionOf.js +0 -17
  512. package/dist/esm/node/collection/HTMLCollectionOf.js.map +0 -7
  513. package/dist/esm/node/collection/NodeListOf.js.map +0 -7
  514. package/dist/types/node/collection/HTMLCollection.d.ts.map +0 -1
  515. package/dist/types/node/collection/HTMLCollectionOf.d.ts +0 -14
  516. package/dist/types/node/collection/HTMLCollectionOf.d.ts.map +0 -1
  517. package/dist/types/node/collection/NodeListOf.d.ts.map +0 -1
  518. package/src/node/collection/HTMLCollectionOf.ts +0 -26
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dooboostore/dom-parser",
3
- "version": "1.0.2",
3
+ "version": "1.0.3",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "sideEffects": false,
package/src/DomParser.ts CHANGED
@@ -1,7 +1,17 @@
1
- import {DocumentBase} from './node/DocumentBase';
2
- import {TextBase} from './node/TextBase';
3
- import {Comment} from './node/Comment';
4
- import {WindowBase} from './window/WindowBase';
1
+ import { DocumentBase } from './node/DocumentBase';
2
+ import { TextBase } from './node/TextBase';
3
+ import { Comment } from './node/Comment';
4
+ import { WindowBase } from './window/WindowBase';
5
+ import { ElementBase } from './node/elements/ElementBase';
6
+ import { ElementFactory } from './factory/ElementFactory';
7
+
8
+ // Inject dependencies into ElementBase to break circular references
9
+ // without using 'require' or 'global' injection magic.
10
+ ElementBase.dependencies = {
11
+ ElementFactory,
12
+ TextBase,
13
+ Comment
14
+ };
5
15
 
6
16
  export interface DomParserOptions {
7
17
  href?: string;
@@ -13,7 +23,7 @@ export class DomParser {
13
23
 
14
24
  constructor(html: string, option?: DomParserOptions) {
15
25
  // Create WindowBase instance with the document
16
- const windowBase = new WindowBase({initialUrl: option?.href});
26
+ const windowBase = new WindowBase({ initialUrl: option?.href });
17
27
  this._window = windowBase as unknown as Window;
18
28
  this._document = windowBase.document as any;
19
29
 
@@ -51,7 +61,7 @@ export class DomParser {
51
61
  this._window.close();
52
62
  this._window = null;
53
63
  }
54
-
64
+
55
65
  this._document = null;
56
66
  }
57
67
 
@@ -62,7 +72,7 @@ export class DomParser {
62
72
  if (!this._document) {
63
73
  throw new Error('DomParser has been destroyed');
64
74
  }
65
-
75
+
66
76
  // Clear current document content
67
77
  this.clearDocument();
68
78
 
@@ -75,7 +85,7 @@ export class DomParser {
75
85
 
76
86
  private clearDocument(): void {
77
87
  if (!this._document) return;
78
-
88
+
79
89
  // Clear document body and head content while preserving structure
80
90
  if (this._document.head) {
81
91
  while (this._document.head.firstChild) {
@@ -94,13 +104,18 @@ export class DomParser {
94
104
  if (!this._document) {
95
105
  throw new Error('DomParser has been destroyed');
96
106
  }
97
- // Simple HTML parsing implementation
107
+
108
+ // Ensure basic HTML structure if input is empty or lacks it
98
109
  if (!html.trim()) {
99
- return;
110
+ html = '<html><head></head><body></body></html>';
111
+ } else if (!/<html/i.test(html)) {
112
+ // If it's just a fragment, we still need html/head/body for a full document
113
+ // but only if it's not explicitly intended to be a fragment?
114
+ // Actually, standard DOMParser.parseFromString always creates them.
115
+ html = `<html><head></head><body>${html}</body></html>`;
100
116
  }
101
117
 
102
118
  // Basic HTML parsing - this is a simplified version
103
- // In a real implementation, you'd use a proper HTML parser
104
119
  this.parseHTMLString(html, this.document);
105
120
  }
106
121
 
@@ -204,11 +219,9 @@ export class DomParser {
204
219
  attributes = attributes.slice(0, -1).trim();
205
220
  }
206
221
 
207
-
208
222
  // Create element
209
223
  const element = this.document.createElement(tagName.toLowerCase());
210
224
 
211
-
212
225
  // Parse attributes
213
226
  if (attributes.trim()) {
214
227
  this.parseAttributes(attributes, element);
@@ -372,7 +385,7 @@ export class DomParser {
372
385
  '&rdquo;': '"'
373
386
  };
374
387
 
375
- return str.replace(/&[a-zA-Z0-9#]+;/g, (entity) => {
388
+ return str.replace(/&[a-zA-Z0-9#]+;/g, entity => {
376
389
  // Handle named entities
377
390
  if (entityMap[entity]) {
378
391
  return entityMap[entity];
@@ -468,7 +481,6 @@ export class DomParser {
468
481
  // Choose the BODY element with content, then attributes, then first one
469
482
  let bodyElement = null;
470
483
 
471
-
472
484
  // First priority: BODY with child nodes (content)
473
485
  for (let i = 0; i < allBodyElements.length; i++) {
474
486
  const body = allBodyElements[i];
@@ -494,10 +506,6 @@ export class DomParser {
494
506
  bodyElement = allBodyElements[0];
495
507
  }
496
508
 
497
-
498
- // For now, just use the elements as they are parsed
499
- // TODO: Implement proper DOM structure reorganization later
500
-
501
509
  // Set document references
502
510
  if (htmlElement) {
503
511
  (this.document as any).documentElement = htmlElement;
@@ -509,4 +517,4 @@ export class DomParser {
509
517
  (this.document as any).body = bodyElement;
510
518
  }
511
519
  }
512
- }
520
+ }
@@ -4,66 +4,92 @@ import { HTMLElementBase, HTMLGenericElement, htmlElements, svgElements, mathmlE
4
4
  * Factory for creating HTML elements based on tag names
5
5
  */
6
6
  export class ElementFactory {
7
- /**
8
- * Creates an HTML element based on the tag name
9
- */
10
- static createElement(tagName: string, ownerDocument?: any): HTMLElementBase {
11
- const normalizedTagName = tagName.toLowerCase();
12
-
13
- // Check HTML elements
14
- for (const [tag, ElementClass] of Object.entries(htmlElements)) {
15
- if (tag === normalizedTagName) {
16
- return new ElementClass(tagName.toUpperCase(), ownerDocument) as HTMLElementBase;
17
- }
18
- }
19
-
20
- // Check SVG elements
21
- for (const [tag, ElementClass] of Object.entries(svgElements)) {
22
- if (tag === normalizedTagName) {
23
- return new ElementClass(tagName.toUpperCase(), ownerDocument) as HTMLElementBase;
24
- }
25
- }
26
-
27
- // Check MathML elements
28
- for (const [tag, ElementClass] of Object.entries(mathmlElements)) {
29
- if (tag === normalizedTagName) {
30
- return new ElementClass(tagName.toUpperCase(), ownerDocument) as HTMLElementBase;
31
- }
7
+ /**
8
+ * Creates an HTML element based on the tag name
9
+ */
10
+ static createElement(tagName: string, ownerDocument?: any, options?: any): HTMLElementBase {
11
+ const normalizedTagName = tagName.toLowerCase();
12
+ const customElements = (ownerDocument as any)?.defaultView?.customElements;
13
+
14
+ // 1. Check for Customized Built-in Elements (is="")
15
+ const isAttribute = typeof options === 'string' ? options : options?.is;
16
+ if (isAttribute && customElements && typeof customElements.get === 'function') {
17
+ const CustomElementClass = customElements.get(isAttribute);
18
+ if (CustomElementClass) {
19
+ const element = new CustomElementClass() as any;
20
+ element._tagName = tagName.toUpperCase();
21
+ element.nodeName = tagName.toUpperCase();
22
+ element._ownerDocument = ownerDocument;
23
+ if (element.setAttribute) {
24
+ element.setAttribute('is', isAttribute);
32
25
  }
33
-
34
- // For unknown elements, create a generic HTMLElement
35
- return new HTMLGenericElement(tagName.toUpperCase(), ownerDocument);
26
+ return element;
27
+ }
36
28
  }
37
29
 
38
- /**
39
- * Get all supported HTML tag names
40
- */
41
- static getSupportedHTMLTagNames(): string[] {
42
- return Object.keys(htmlElements);
30
+ // 2. Check for Autonomous Custom Elements
31
+ if (normalizedTagName.includes('-') && customElements && typeof customElements.get === 'function') {
32
+ const CustomElementClass = customElements.get(normalizedTagName);
33
+ if (CustomElementClass) {
34
+ const element = new CustomElementClass() as any;
35
+ element._tagName = tagName.toUpperCase();
36
+ element.nodeName = tagName.toUpperCase();
37
+ element._ownerDocument = ownerDocument;
38
+ return element;
39
+ }
43
40
  }
44
41
 
45
- /**
46
- * Get all supported SVG tag names
47
- */
48
- static getSupportedSVGTagNames(): string[] {
49
- return Object.keys(svgElements);
42
+ // 3. Check HTML elements
43
+
44
+ for (const [tag, ElementClass] of Object.entries(htmlElements)) {
45
+ if (tag === normalizedTagName) {
46
+ return new ElementClass(tagName.toUpperCase(), ownerDocument) as HTMLElementBase;
47
+ }
50
48
  }
51
49
 
52
- /**
53
- * Get all supported MathML tag names
54
- */
55
- static getSupportedMathMLTagNames(): string[] {
56
- return Object.keys(mathmlElements);
50
+ // Check SVG elements
51
+ for (const [tag, ElementClass] of Object.entries(svgElements)) {
52
+ if (tag === normalizedTagName) {
53
+ return new ElementClass(tagName.toUpperCase(), ownerDocument) as HTMLElementBase;
54
+ }
57
55
  }
58
56
 
59
- /**
60
- * Get all supported tag names
61
- */
62
- static getSupportedTagNames(): string[] {
63
- return [
64
- ...ElementFactory.getSupportedHTMLTagNames(),
65
- ...ElementFactory.getSupportedSVGTagNames(),
66
- ...ElementFactory.getSupportedMathMLTagNames()
67
- ];
57
+ // Check MathML elements
58
+ for (const [tag, ElementClass] of Object.entries(mathmlElements)) {
59
+ if (tag === normalizedTagName) {
60
+ return new ElementClass(tagName.toUpperCase(), ownerDocument) as HTMLElementBase;
61
+ }
68
62
  }
69
- }
63
+
64
+ // For unknown elements, create a generic HTMLElement
65
+ return new HTMLGenericElement(tagName.toUpperCase(), ownerDocument);
66
+ }
67
+
68
+ /**
69
+ * Get all supported HTML tag names
70
+ */
71
+ static getSupportedHTMLTagNames(): string[] {
72
+ return Object.keys(htmlElements);
73
+ }
74
+
75
+ /**
76
+ * Get all supported SVG tag names
77
+ */
78
+ static getSupportedSVGTagNames(): string[] {
79
+ return Object.keys(svgElements);
80
+ }
81
+
82
+ /**
83
+ * Get all supported MathML tag names
84
+ */
85
+ static getSupportedMathMLTagNames(): string[] {
86
+ return Object.keys(mathmlElements);
87
+ }
88
+
89
+ /**
90
+ * Get all supported tag names
91
+ */
92
+ static getSupportedTagNames(): string[] {
93
+ return [...ElementFactory.getSupportedHTMLTagNames(), ...ElementFactory.getSupportedSVGTagNames(), ...ElementFactory.getSupportedMathMLTagNames()];
94
+ }
95
+ }
package/src/index.ts CHANGED
@@ -1,19 +1,20 @@
1
- import { DomParser, DomParserOptions } from "./DomParser";
1
+ import {DomParser, DomParserOptions} from './DomParser';
2
2
 
3
3
  // Main exports - what users actually need
4
- export { DomParser };
5
-
4
+ export {DomParser};
5
+ export {NodeIterator} from './node/NodeIterator';
6
+ export {NodeFilter} from './node/NodeFilter'
6
7
  // Utility function to parse HTML and return window object
7
8
  export const parseHTML = (html: string, option?: DomParserOptions) => {
8
- const parser = new DomParser(html, option);
9
- return parser.window;
10
- }
9
+ const parser = new DomParser(html, option);
10
+ return parser.window;
11
+ };
11
12
 
12
13
  // Default export
13
14
  export default {
14
- DomParser,
15
- parseHTML
16
- }
15
+ DomParser,
16
+ parseHTML
17
+ };
17
18
 
18
19
  // Internal exports (commented out - users don't need these)
19
20
  // export { WindowBase } from './window/WindowBase';
@@ -25,4 +26,4 @@ export default {
25
26
  // export { DocumentBase } from "./node/DocumentBase";
26
27
  // export * from "./node/DocumentFragment";
27
28
  // export { DocumentFragmentBase } from "./node/DocumentFragmentBase";
28
- // export * from "./node/Node";
29
+ // export * from "./node/Node";
@@ -1,5 +1,3 @@
1
- import { Node } from './Node';
2
- import { ChildNode } from './ChildNode';
3
1
 
4
2
  /**
5
3
  * The **`CharacterData`** abstract interface represents a Node object that contains characters.
@@ -1,42 +1,42 @@
1
- import { Node } from './Node';
2
-
3
- /**
4
- * The **`ChildNode`** interface contains methods and properties that are common to all types of Node objects that can have a parent.
5
- *
6
- * [MDN Reference](https://developer.mozilla.org/docs/Web/API/ChildNode)
7
- */
8
- export interface ChildNode extends Node {
9
- /**
10
- * Inserts nodes just after node, while replacing strings in nodes with equivalent Text nodes.
11
- *
12
- * Throws a "HierarchyRequestError" DOMException if the constraints of the node tree are violated.
13
- *
14
- * [MDN Reference](https://developer.mozilla.org/docs/Web/API/CharacterData/after)
15
- */
16
- after(...nodes: (Node | string)[]): void;
17
-
18
- /**
19
- * Inserts nodes just before node, while replacing strings in nodes with equivalent Text nodes.
20
- *
21
- * Throws a "HierarchyRequestError" DOMException if the constraints of the node tree are violated.
22
- *
23
- * [MDN Reference](https://developer.mozilla.org/docs/Web/API/CharacterData/before)
24
- */
25
- before(...nodes: (Node | string)[]): void;
26
-
27
- /**
28
- * Removes node.
29
- *
30
- * [MDN Reference](https://developer.mozilla.org/docs/Web/API/CharacterData/remove)
31
- */
32
- remove(): void;
33
-
34
- /**
35
- * Replaces node with nodes, while replacing strings in nodes with equivalent Text nodes.
36
- *
37
- * Throws a "HierarchyRequestError" DOMException if the constraints of the node tree are violated.
38
- *
39
- * [MDN Reference](https://developer.mozilla.org/docs/Web/API/CharacterData/replaceWith)
40
- */
41
- replaceWith(...nodes: (Node | string)[]): void;
42
- }
1
+ // import {Node} from './Node';
2
+ //
3
+ // /**
4
+ // * The **`ChildNode`** interface contains methods and properties that are common to all types of Node objects that can have a parent.
5
+ // *
6
+ // * [MDN Reference](https://developer.mozilla.org/docs/Web/API/ChildNode)
7
+ // */
8
+ // export interface ChildNode extends Node {
9
+ // /**
10
+ // * Inserts nodes just after node, while replacing strings in nodes with equivalent Text nodes.
11
+ // *
12
+ // * Throws a "HierarchyRequestError" DOMException if the constraints of the node tree are violated.
13
+ // *
14
+ // * [MDN Reference](https://developer.mozilla.org/docs/Web/API/CharacterData/after)
15
+ // */
16
+ // after(...nodes: (Node | string)[]): void;
17
+ //
18
+ // /**
19
+ // * Inserts nodes just before node, while replacing strings in nodes with equivalent Text nodes.
20
+ // *
21
+ // * Throws a "HierarchyRequestError" DOMException if the constraints of the node tree are violated.
22
+ // *
23
+ // * [MDN Reference](https://developer.mozilla.org/docs/Web/API/CharacterData/before)
24
+ // */
25
+ // before(...nodes: (Node | string)[]): void;
26
+ //
27
+ // /**
28
+ // * Removes node.
29
+ // *
30
+ // * [MDN Reference](https://developer.mozilla.org/docs/Web/API/CharacterData/remove)
31
+ // */
32
+ // remove(): void;
33
+ //
34
+ // /**
35
+ // * Replaces node with nodes, while replacing strings in nodes with equivalent Text nodes.
36
+ // *
37
+ // * Throws a "HierarchyRequestError" DOMException if the constraints of the node tree are violated.
38
+ // *
39
+ // * [MDN Reference](https://developer.mozilla.org/docs/Web/API/CharacterData/replaceWith)
40
+ // */
41
+ // replaceWith(...nodes: (Node | string)[]): void;
42
+ // }
@@ -1,54 +1,75 @@
1
+ import { ELEMENT_NODE } from './Node';
1
2
  import { NodeBase } from './NodeBase';
2
- import { ChildNode } from './ChildNode';
3
- // import {Text} from "./Text";
4
3
 
5
4
  /**
6
5
  * Base implementation of the ChildNode interface
7
6
  */
7
+ // @ts-ignore
8
8
  export abstract class ChildNodeBase extends NodeBase implements ChildNode {
9
-
10
- // ChildNode interface implementation
11
- after(...nodes: (NodeBase | string)[]): void {
12
- if (!this.parentNode) return;
13
-
14
- const nextSibling = this.nextSibling;
15
- for (const node of nodes) {
16
- if (typeof node === 'string') {
17
- const { TextBase } = require('./TextBase');
18
- const textNode = new TextBase(node, this._ownerDocument);
19
- this.parentNode.insertBefore(textNode, nextSibling);
20
- } else {
21
- this.parentNode.insertBefore(node, nextSibling);
22
- }
23
- }
9
+ get nextElementSibling(): Element | null {
10
+ let next = this.nextSibling;
11
+ while (next) {
12
+ if (next.nodeType === ELEMENT_NODE) return next as unknown as Element;
13
+ next = next.nextSibling;
24
14
  }
15
+ return null;
16
+ }
25
17
 
26
- before(...nodes: (NodeBase | string)[]): void {
27
- if (!this.parentNode) return;
28
-
29
- for (const node of nodes) {
30
- if (typeof node === 'string') {
31
- const { TextBase } = require('./TextBase');
32
- const textNode = new TextBase(node, this._ownerDocument);
33
- this.parentNode.insertBefore(textNode, this);
34
- } else {
35
- this.parentNode.insertBefore(node, this);
36
- }
37
- }
18
+ get previousElementSibling(): Element | null {
19
+ let prev = this.previousSibling;
20
+ while (prev) {
21
+ if (prev.nodeType === ELEMENT_NODE) return prev as unknown as Element;
22
+ prev = prev.previousSibling;
38
23
  }
24
+ return null;
25
+ }
39
26
 
40
- remove(): void {
41
- if (this.parentNode) {
42
- this.parentNode.removeChild(this);
43
- }
27
+ get assignedSlot(): any | null {
28
+ return null;
29
+ }
30
+
31
+ // ChildNode interface implementation
32
+ after(...nodes: (Node | string)[]): void {
33
+ if (!this.parentNode) return;
34
+
35
+ const nextSibling = this.nextSibling;
36
+ for (const node of nodes) {
37
+ if (typeof node === 'string') {
38
+ const { TextBase } = require('./TextBase');
39
+ const textNode = new TextBase(node, this._ownerDocument);
40
+ this.parentNode.insertBefore(textNode, nextSibling);
41
+ } else {
42
+ this.parentNode.insertBefore(node, nextSibling);
43
+ }
44
44
  }
45
+ }
45
46
 
46
- replaceWith(...nodes: (NodeBase | string)[]): void {
47
- if (!this.parentNode) return;
48
-
49
- this.before(...nodes);
50
- this.remove();
47
+ before(...nodes: (Node | string)[]): void {
48
+ if (!this.parentNode) return;
49
+
50
+ for (const node of nodes) {
51
+ if (typeof node === 'string') {
52
+ const { TextBase } = require('./TextBase');
53
+ const textNode = new TextBase(node, this._ownerDocument);
54
+ this.parentNode.insertBefore(textNode, this as unknown as Node);
55
+ } else {
56
+ this.parentNode.insertBefore(node, this as unknown as Node);
57
+ }
51
58
  }
59
+ }
60
+
61
+ remove(): void {
62
+ if (this.parentNode) {
63
+ this.parentNode.removeChild(this as unknown as Node);
64
+ }
65
+ }
66
+
67
+ replaceWith(...nodes: (Node | string)[]): void {
68
+ if (!this.parentNode) return;
69
+
70
+ this.before(...nodes);
71
+ this.remove();
72
+ }
52
73
  }
53
74
 
54
- // TextNode is now in a separate file
75
+ // TextNode is now in a separate file
@@ -3,7 +3,7 @@ import { COMMENT_NODE } from './Node';
3
3
 
4
4
  /**
5
5
  * The **`Comment`** interface represents textual notations within markup; although it is generally not visually shown, such comments are available to be read in the source view.
6
- *
6
+ *
7
7
  * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Comment)
8
8
  */
9
9
  // export interface Comment {
@@ -21,78 +21,78 @@ import { COMMENT_NODE } from './Node';
21
21
  /**
22
22
  * The **`CommentNode`** class represents a comment node in the DOM.
23
23
  */
24
- export class Comment extends ChildNodeBase {
25
- private _data: string;
24
+ export class Comment extends ChildNodeBase {
25
+ private _data: string;
26
26
 
27
- constructor(data: string, ownerDocument?: any) {
28
- super(COMMENT_NODE, '#comment', ownerDocument);
29
- this._data = data;
30
- this._nodeValue = data;
31
- }
27
+ constructor(data: string, ownerDocument?: any) {
28
+ super(COMMENT_NODE, '#comment', ownerDocument);
29
+ this._data = data;
30
+ this._nodeValue = data;
31
+ }
32
32
 
33
- get data(): string {
34
- return this._data;
35
- }
33
+ get data(): string {
34
+ return this._data;
35
+ }
36
36
 
37
- set data(value: string) {
38
- this._data = value;
39
- this._nodeValue = value;
40
- }
37
+ set data(value: string) {
38
+ this._data = value;
39
+ this._nodeValue = value;
40
+ }
41
41
 
42
- get length(): number {
43
- return this._data.length;
44
- }
42
+ get length(): number {
43
+ return this._data.length;
44
+ }
45
45
 
46
- get textContent(): string | null {
47
- return this._data;
48
- }
46
+ get textContent(): string | null {
47
+ return this._data;
48
+ }
49
49
 
50
- set textContent(value: string | null) {
51
- this._data = value || '';
52
- this._nodeValue = this._data;
53
- }
50
+ set textContent(value: string | null) {
51
+ this._data = value || '';
52
+ this._nodeValue = this._data;
53
+ }
54
54
 
55
- // CharacterData methods
56
- appendData(data: string): void {
57
- this._data += data;
58
- this._nodeValue = this._data;
59
- }
55
+ // CharacterData methods
56
+ appendData(data: string): void {
57
+ this._data += data;
58
+ this._nodeValue = this._data;
59
+ }
60
60
 
61
- deleteData(offset: number, count: number): void {
62
- if (offset < 0 || offset > this._data.length) {
63
- throw new Error('Index out of bounds');
64
- }
65
- const endOffset = Math.min(offset + count, this._data.length);
66
- this._data = this._data.slice(0, offset) + this._data.slice(endOffset);
67
- this._nodeValue = this._data;
61
+ deleteData(offset: number, count: number): void {
62
+ if (offset < 0 || offset > this._data.length) {
63
+ throw new Error('Index out of bounds');
68
64
  }
65
+ const endOffset = Math.min(offset + count, this._data.length);
66
+ this._data = this._data.slice(0, offset) + this._data.slice(endOffset);
67
+ this._nodeValue = this._data;
68
+ }
69
69
 
70
- insertData(offset: number, data: string): void {
71
- if (offset < 0 || offset > this._data.length) {
72
- throw new Error('Index out of bounds');
73
- }
74
- this._data = this._data.slice(0, offset) + data + this._data.slice(offset);
75
- this._nodeValue = this._data;
70
+ insertData(offset: number, data: string): void {
71
+ if (offset < 0 || offset > this._data.length) {
72
+ throw new Error('Index out of bounds');
76
73
  }
74
+ this._data = this._data.slice(0, offset) + data + this._data.slice(offset);
75
+ this._nodeValue = this._data;
76
+ }
77
77
 
78
- replaceData(offset: number, count: number, data: string): void {
79
- this.deleteData(offset, count);
80
- this.insertData(offset, data);
81
- }
78
+ replaceData(offset: number, count: number, data: string): void {
79
+ this.deleteData(offset, count);
80
+ this.insertData(offset, data);
81
+ }
82
82
 
83
- substringData(offset: number, count: number): string {
84
- if (offset < 0 || offset > this._data.length) {
85
- throw new Error('Index out of bounds');
86
- }
87
- const endOffset = Math.min(offset + count, this._data.length);
88
- return this._data.slice(offset, endOffset);
83
+ substringData(offset: number, count: number): string {
84
+ if (offset < 0 || offset > this._data.length) {
85
+ throw new Error('Index out of bounds');
89
86
  }
87
+ const endOffset = Math.min(offset + count, this._data.length);
88
+ return this._data.slice(offset, endOffset);
89
+ }
90
90
 
91
- cloneNode(deep?: boolean): Comment {
92
- return new Comment(this._data, this._ownerDocument);
93
- }
91
+ cloneNode(deep?: boolean): Node {
92
+ return new Comment(this._data, this._ownerDocument) as unknown as Node;
93
+ }
94
94
 
95
- toString(): string {
96
- return `<!--${this._data}-->`;
97
- }
98
- }
95
+ toString(): string {
96
+ return `<!--${this._data}-->`;
97
+ }
98
+ }