@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
@@ -0,0 +1,87 @@
1
+ import { DocumentFragmentBase } from './DocumentFragmentBase';
2
+
3
+ /**
4
+ * The **`ShadowRoot`** interface represents the root node of a shadow DOM subtree.
5
+ */
6
+ // @ts-ignore
7
+ export class ShadowRootBase extends DocumentFragmentBase implements ShadowRoot {
8
+ public readonly delegatesFocus: boolean;
9
+ public readonly mode: ShadowRootMode;
10
+ public readonly slotAssignment: SlotAssignmentMode;
11
+ private _host: Element;
12
+
13
+ constructor(host: Element, init: { mode: ShadowRootMode; delegatesFocus?: boolean; slotAssignment?: SlotAssignmentMode }, ownerDocument?: Document) {
14
+ super(ownerDocument);
15
+ this._host = host;
16
+ this.mode = init.mode;
17
+ this.delegatesFocus = init.delegatesFocus || false;
18
+ this.slotAssignment = init.slotAssignment || 'manual';
19
+
20
+ // Set nodeName to '#shadow-root'
21
+ (this as any).nodeName = '#shadow-root';
22
+ }
23
+
24
+ clonable: boolean;
25
+ onslotchange: (this: ShadowRoot, ev: Event) => any;
26
+ serializable: boolean;
27
+ getHTML(options?: GetHTMLOptions): string {
28
+ throw new Error("Method not implemented.");
29
+ }
30
+ setHTMLUnsafe(html: string): void {
31
+ throw new Error("Method not implemented.");
32
+ }
33
+ activeElement: Element;
34
+ adoptedStyleSheets: CSSStyleSheet[];
35
+ fullscreenElement: Element;
36
+ pictureInPictureElement: Element;
37
+ pointerLockElement: Element;
38
+ styleSheets: StyleSheetList;
39
+ elementFromPoint(x: number, y: number): Element | null {
40
+ throw new Error("Method not implemented.");
41
+ }
42
+ elementsFromPoint(x: number, y: number): Element[] {
43
+ throw new Error("Method not implemented.");
44
+ }
45
+ getAnimations(): Animation[] {
46
+ throw new Error("Method not implemented.");
47
+ }
48
+
49
+ get host(): Element {
50
+ return this._host;
51
+ }
52
+
53
+ /**
54
+ * innerHTML for ShadowRoot
55
+ */
56
+ get innerHTML(): string {
57
+ let html = '';
58
+ for (const child of this._childNodesInternal) {
59
+ if ((child as any).nodeType === 3) {
60
+ // TEXT_NODE
61
+ html += (child as any)._nodeValue || '';
62
+ } else if ((child as any).nodeType === 1) {
63
+ // ELEMENT_NODE
64
+ html += (this._host as any).generateChildElementHTML(child as any);
65
+ } else if ((child as any).nodeType === 8) {
66
+ // COMMENT_NODE
67
+ html += `<!--${(child as any).textContent || ''}-->`;
68
+ }
69
+ }
70
+ return html;
71
+ }
72
+
73
+ set innerHTML(value: string) {
74
+ // Clear existing children
75
+ while (this._childNodesInternal.length > 0) {
76
+ const child = this._childNodesInternal[0];
77
+ if (child) {
78
+ this.removeChild(child as unknown as Node);
79
+ }
80
+ }
81
+
82
+ // Parse HTML and create child nodes
83
+ if (value.trim()) {
84
+ (this._host as any).parseAndAppendHTML(value, this);
85
+ }
86
+ }
87
+ }
package/src/node/Text.ts CHANGED
@@ -1,30 +1,30 @@
1
- import { CharacterData } from './CharacterData';
2
- import { ChildNode } from './ChildNode';
3
- import {TEXT_NODE} from "./Node";
4
-
5
- /**
6
- * The **`Text`** interface represents a text node in the DOM.
7
- *
8
- * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Text)
9
- */
10
- export interface Text extends CharacterData, ChildNode {
11
- readonly nodeType: typeof TEXT_NODE; // TEXT_NODE
12
- readonly nodeName: '#text';
13
-
14
- /**
15
- * The **`Text.splitText()`** method breaks the Text node into two nodes at the specified offset, keeping both nodes in the tree as siblings.
16
- *
17
- * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Text/splitText)
18
- */
19
- splitText(offset: number): Text;
20
-
21
- /**
22
- * The **`Text.wholeText`** read-only property returns the full text of all Text nodes logically adjacent to the node.
23
- *
24
- * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Text/wholeText)
25
- */
26
- readonly wholeText: string;
27
- }
28
-
29
- // Note: TextBase is the implementation class for this interface
30
-
1
+ // // import { CharacterData } from './CharacterData';
2
+ // import { ChildNode } from './ChildNode';
3
+ // import {TEXT_NODE} from "./Node";
4
+ //
5
+ // /**
6
+ // * The **`Text`** interface represents a text node in the DOM.
7
+ // *
8
+ // * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Text)
9
+ // */
10
+ // export interface Text extends CharacterData, ChildNode {
11
+ // readonly nodeType: typeof TEXT_NODE; // TEXT_NODE
12
+ // readonly nodeName: '#text';
13
+ //
14
+ // /**
15
+ // * The **`Text.splitText()`** method breaks the Text node into two nodes at the specified offset, keeping both nodes in the tree as siblings.
16
+ // *
17
+ // * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Text/splitText)
18
+ // */
19
+ // splitText(offset: number): Text;
20
+ //
21
+ // /**
22
+ // * The **`Text.wholeText`** read-only property returns the full text of all Text nodes logically adjacent to the node.
23
+ // *
24
+ // * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Text/wholeText)
25
+ // */
26
+ // readonly wholeText: string;
27
+ // }
28
+ //
29
+ // // Note: TextBase is the implementation class for this interface
30
+ //
@@ -1,113 +1,111 @@
1
1
  import { ChildNodeBase } from './ChildNodeBase';
2
2
  import { TEXT_NODE } from './Node';
3
- import { Text } from './Text';
4
3
 
5
4
  /**
6
5
  * The **`TextBase`** class represents a text node implementation in the DOM.
7
6
  */
8
7
  export class TextBase extends ChildNodeBase implements Text {
9
- private _data: string;
10
-
11
- // Override nodeType to match Text interface
12
- readonly nodeType: 3 = TEXT_NODE as 3;
13
- readonly nodeName: '#text' = '#text';
14
-
15
- constructor(data: string, ownerDocument?: any) {
16
- super(TEXT_NODE, '#text', ownerDocument);
17
- this._data = data;
18
- this._nodeValue = data;
8
+ private _data: string;
9
+
10
+ declare nodeType: 3;
11
+ declare nodeName: '#text';
12
+
13
+ constructor(data: string, ownerDocument?: any) {
14
+ super(TEXT_NODE, '#text', ownerDocument);
15
+ this._data = data;
16
+ this._nodeValue = data;
17
+ }
18
+
19
+ get data(): string {
20
+ return this._data;
21
+ }
22
+
23
+ set data(value: string) {
24
+ this._data = value;
25
+ this._nodeValue = value;
26
+ }
27
+
28
+ get length(): number {
29
+ return this._data.length;
30
+ }
31
+
32
+ get textContent(): string | null {
33
+ // Decode HTML entities to return original text
34
+ return this._data ? this.decodeHTMLEntities(this._data) : this._data;
35
+ }
36
+
37
+ set textContent(value: string | null) {
38
+ this._data = value || '';
39
+ this._nodeValue = this._data;
40
+ }
41
+
42
+ get wholeText(): string {
43
+ // For now, just return the current text
44
+ // In a full implementation, this would collect adjacent text nodes
45
+ return this._data;
46
+ }
47
+
48
+ // CharacterData methods
49
+ appendData(data: string): void {
50
+ this._data += data;
51
+ this._nodeValue = this._data;
52
+ }
53
+
54
+ deleteData(offset: number, count: number): void {
55
+ if (offset < 0 || offset > this._data.length) {
56
+ throw new Error('Index out of bounds');
19
57
  }
20
-
21
- get data(): string {
22
- return this._data;
58
+ const endOffset = Math.min(offset + count, this._data.length);
59
+ this._data = this._data.slice(0, offset) + this._data.slice(endOffset);
60
+ this._nodeValue = this._data;
61
+ }
62
+
63
+ insertData(offset: number, data: string): void {
64
+ if (offset < 0 || offset > this._data.length) {
65
+ throw new Error('Index out of bounds');
23
66
  }
24
-
25
- set data(value: string) {
26
- this._data = value;
27
- this._nodeValue = value;
67
+ this._data = this._data.slice(0, offset) + data + this._data.slice(offset);
68
+ this._nodeValue = this._data;
69
+ }
70
+
71
+ replaceData(offset: number, count: number, data: string): void {
72
+ this.deleteData(offset, count);
73
+ this.insertData(offset, data);
74
+ }
75
+
76
+ substringData(offset: number, count: number): string {
77
+ if (offset < 0 || offset > this._data.length) {
78
+ throw new Error('Index out of bounds');
28
79
  }
80
+ const endOffset = Math.min(offset + count, this._data.length);
81
+ return this._data.slice(offset, endOffset);
82
+ }
29
83
 
30
- get length(): number {
31
- return this._data.length;
84
+ splitText(offset: number): Text {
85
+ if (offset < 0 || offset > this._data.length) {
86
+ throw new Error('Index out of bounds');
32
87
  }
33
88
 
34
- get textContent(): string | null {
35
- // Decode HTML entities to return original text
36
- return this._data ? this.decodeHTMLEntities(this._data) : this._data;
37
- }
89
+ const newData = this._data.slice(offset);
90
+ this._data = this._data.slice(0, offset);
91
+ this._nodeValue = this._data;
38
92
 
39
- set textContent(value: string | null) {
40
- this._data = value || '';
41
- this._nodeValue = this._data;
42
- }
93
+ const newTextNode = new TextBase(newData, this._ownerDocument);
43
94
 
44
- get wholeText(): string {
45
- // For now, just return the current text
46
- // In a full implementation, this would collect adjacent text nodes
47
- return this._data;
95
+ // Insert the new text node after this one
96
+ if (this._parentNodeInternal) {
97
+ const nextSibling = this.nextSibling;
98
+ this._parentNodeInternal.insertBefore(newTextNode, nextSibling);
48
99
  }
49
100
 
50
- // CharacterData methods
51
- appendData(data: string): void {
52
- this._data += data;
53
- this._nodeValue = this._data;
54
- }
101
+ return newTextNode as Text;
102
+ }
55
103
 
56
- deleteData(offset: number, count: number): void {
57
- if (offset < 0 || offset > this._data.length) {
58
- throw new Error('Index out of bounds');
59
- }
60
- const endOffset = Math.min(offset + count, this._data.length);
61
- this._data = this._data.slice(0, offset) + this._data.slice(endOffset);
62
- this._nodeValue = this._data;
63
- }
104
+ cloneNode(deep?: boolean): Text {
105
+ return new TextBase(this._data, this._ownerDocument) as Text;
106
+ }
64
107
 
65
- insertData(offset: number, data: string): void {
66
- if (offset < 0 || offset > this._data.length) {
67
- throw new Error('Index out of bounds');
68
- }
69
- this._data = this._data.slice(0, offset) + data + this._data.slice(offset);
70
- this._nodeValue = this._data;
71
- }
72
-
73
- replaceData(offset: number, count: number, data: string): void {
74
- this.deleteData(offset, count);
75
- this.insertData(offset, data);
76
- }
77
-
78
- substringData(offset: number, count: number): string {
79
- if (offset < 0 || offset > this._data.length) {
80
- throw new Error('Index out of bounds');
81
- }
82
- const endOffset = Math.min(offset + count, this._data.length);
83
- return this._data.slice(offset, endOffset);
84
- }
85
-
86
- splitText(offset: number): Text {
87
- if (offset < 0 || offset > this._data.length) {
88
- throw new Error('Index out of bounds');
89
- }
90
-
91
- const newData = this._data.slice(offset);
92
- this._data = this._data.slice(0, offset);
93
- this._nodeValue = this._data;
94
-
95
- const newTextNode = new TextBase(newData, this._ownerDocument);
96
-
97
- // Insert the new text node after this one
98
- if (this._parentNodeInternal) {
99
- const nextSibling = this.nextSibling;
100
- this._parentNodeInternal.insertBefore(newTextNode, nextSibling);
101
- }
102
-
103
- return newTextNode as Text;
104
- }
105
-
106
- cloneNode(deep?: boolean): Text {
107
- return new TextBase(this._data, this._ownerDocument) as Text;
108
- }
109
-
110
- toString(): string {
111
- return this._data;
112
- }
113
- }
108
+ toString(): string {
109
+ return this._data;
110
+ }
111
+ }
@@ -0,0 +1,280 @@
1
+ import {NodeFilter} from "./NodeFilter";
2
+
3
+ /**
4
+ * TreeWalker implementation for traversing DOM nodes
5
+ */
6
+ export class TreeWalker {
7
+ private _root: Node;
8
+ private _whatToShow: number;
9
+ private _filter: NodeFilter | null;
10
+ private _currentNode: Node;
11
+
12
+ constructor(root: Node, whatToShow: number = NodeFilter.SHOW_ALL, filter: NodeFilter | null = null) {
13
+ this._root = root;
14
+ this._whatToShow = whatToShow;
15
+ this._filter = filter;
16
+ this._currentNode = root;
17
+ }
18
+
19
+ get root(): Node {
20
+ return this._root;
21
+ }
22
+
23
+ get whatToShow(): number {
24
+ return this._whatToShow;
25
+ }
26
+
27
+ get filter(): NodeFilter | null {
28
+ return this._filter;
29
+ }
30
+
31
+ get currentNode(): Node {
32
+ return this._currentNode;
33
+ }
34
+
35
+ set currentNode(node: Node) {
36
+ this._currentNode = node;
37
+ }
38
+
39
+ /**
40
+ * Move to the parent node
41
+ */
42
+ parentNode(): Node | null {
43
+ let node = this._currentNode;
44
+ while (node && node !== this._root) {
45
+ node = (node as any).parentNode;
46
+ if (node && this._acceptNode(node) === NodeFilter.FILTER_ACCEPT) {
47
+ this._currentNode = node;
48
+ return node;
49
+ }
50
+ }
51
+ return null;
52
+ }
53
+
54
+ /**
55
+ * Move to the first child node
56
+ */
57
+ firstChild(): Node | null {
58
+ let node = (this._currentNode as any).firstChild;
59
+ while (node) {
60
+ const result = this._acceptNode(node);
61
+ if (result === NodeFilter.FILTER_ACCEPT) {
62
+ this._currentNode = node;
63
+ return node;
64
+ }
65
+ if (result === NodeFilter.FILTER_SKIP) {
66
+ const child = (node as any).firstChild;
67
+ if (child) {
68
+ node = child;
69
+ continue;
70
+ }
71
+ }
72
+ while (node) {
73
+ const next = (node as any).nextSibling;
74
+ if (next) {
75
+ node = next;
76
+ break;
77
+ }
78
+ const parent = (node as any).parentNode;
79
+ if (!parent || parent === this._root || parent === this._currentNode) {
80
+ return null;
81
+ }
82
+ node = parent;
83
+ }
84
+ }
85
+ return null;
86
+ }
87
+
88
+ /**
89
+ * Move to the last child node
90
+ */
91
+ lastChild(): Node | null {
92
+ let node = (this._currentNode as any).lastChild;
93
+ while (node) {
94
+ const result = this._acceptNode(node);
95
+ if (result === NodeFilter.FILTER_ACCEPT) {
96
+ this._currentNode = node;
97
+ return node;
98
+ }
99
+ if (result === NodeFilter.FILTER_SKIP) {
100
+ const child = (node as any).lastChild;
101
+ if (child) {
102
+ node = child;
103
+ continue;
104
+ }
105
+ }
106
+ while (node) {
107
+ const prev = (node as any).previousSibling;
108
+ if (prev) {
109
+ node = prev;
110
+ break;
111
+ }
112
+ const parent = (node as any).parentNode;
113
+ if (!parent || parent === this._root || parent === this._currentNode) {
114
+ return null;
115
+ }
116
+ node = parent;
117
+ }
118
+ }
119
+ return null;
120
+ }
121
+
122
+ /**
123
+ * Move to the previous sibling node
124
+ */
125
+ previousSibling(): Node | null {
126
+ let node = this._currentNode;
127
+ if (node === this._root) return null;
128
+
129
+ while (node) {
130
+ let sibling = (node as any).previousSibling;
131
+ while (sibling) {
132
+ const result = this._acceptNode(sibling);
133
+ if (result === NodeFilter.FILTER_ACCEPT) {
134
+ this._currentNode = sibling;
135
+ return sibling;
136
+ }
137
+ if (result === NodeFilter.FILTER_SKIP) {
138
+ const lastChild = (sibling as any).lastChild;
139
+ if (lastChild) {
140
+ sibling = lastChild;
141
+ continue;
142
+ }
143
+ }
144
+ sibling = (sibling as any).previousSibling;
145
+ }
146
+ node = (node as any).parentNode;
147
+ if (!node || node === this._root || this._acceptNode(node) === NodeFilter.FILTER_ACCEPT) {
148
+ return null;
149
+ }
150
+ }
151
+ return null;
152
+ }
153
+
154
+ /**
155
+ * Move to the next sibling node
156
+ */
157
+ nextSibling(): Node | null {
158
+ let node = this._currentNode;
159
+ if (node === this._root) return null;
160
+
161
+ while (node) {
162
+ let sibling = (node as any).nextSibling;
163
+ while (sibling) {
164
+ const result = this._acceptNode(sibling);
165
+ if (result === NodeFilter.FILTER_ACCEPT) {
166
+ this._currentNode = sibling;
167
+ return sibling;
168
+ }
169
+ if (result === NodeFilter.FILTER_SKIP) {
170
+ const firstChild = (sibling as any).firstChild;
171
+ if (firstChild) {
172
+ sibling = firstChild;
173
+ continue;
174
+ }
175
+ }
176
+ sibling = (sibling as any).nextSibling;
177
+ }
178
+ node = (node as any).parentNode;
179
+ if (!node || node === this._root || this._acceptNode(node) === NodeFilter.FILTER_ACCEPT) {
180
+ return null;
181
+ }
182
+ }
183
+ return null;
184
+ }
185
+
186
+ /**
187
+ * Move to the previous node in document order
188
+ */
189
+ previousNode(): Node | null {
190
+ let node = this._currentNode;
191
+ while (node && node !== this._root) {
192
+ const sibling = (node as any).previousSibling;
193
+ if (sibling) {
194
+ node = sibling;
195
+ while (true) {
196
+ const result = this._acceptNode(node);
197
+ if (result !== NodeFilter.FILTER_REJECT && (node as any).lastChild) {
198
+ node = (node as any).lastChild;
199
+ } else {
200
+ if (result === NodeFilter.FILTER_ACCEPT) {
201
+ this._currentNode = node;
202
+ return node;
203
+ }
204
+ break;
205
+ }
206
+ }
207
+ continue;
208
+ }
209
+
210
+ node = (node as any).parentNode;
211
+ if (node) {
212
+ if (this._acceptNode(node) === NodeFilter.FILTER_ACCEPT) {
213
+ this._currentNode = node;
214
+ return node;
215
+ }
216
+ }
217
+ }
218
+ return null;
219
+ }
220
+
221
+ /**
222
+ * Move to the next node in document order
223
+ */
224
+ nextNode(): Node | null {
225
+ let node = this._currentNode;
226
+ let result = NodeFilter.FILTER_ACCEPT;
227
+
228
+ while (true) {
229
+ if (result !== NodeFilter.FILTER_REJECT) {
230
+ const firstChild = (node as any).firstChild;
231
+ if (firstChild) {
232
+ node = firstChild;
233
+ result = this._acceptNode(node);
234
+ if (result === NodeFilter.FILTER_ACCEPT) {
235
+ this._currentNode = node;
236
+ return node;
237
+ }
238
+ continue;
239
+ }
240
+ }
241
+
242
+ while (node) {
243
+ if (node === this._root) return null;
244
+ const nextSibling = (node as any).nextSibling;
245
+ if (nextSibling) {
246
+ node = nextSibling;
247
+ break;
248
+ }
249
+ node = (node as any).parentNode;
250
+ }
251
+
252
+ if (!node) return null;
253
+
254
+ result = this._acceptNode(node);
255
+ if (result === NodeFilter.FILTER_ACCEPT) {
256
+ this._currentNode = node;
257
+ return node;
258
+ }
259
+ }
260
+ }
261
+
262
+ /**
263
+ * Check node acceptance
264
+ */
265
+ private _acceptNode(node: Node): number {
266
+ const nodeTypeMask = 1 << (node.nodeType - 1);
267
+ if (!(this._whatToShow & nodeTypeMask)) {
268
+ return NodeFilter.FILTER_SKIP;
269
+ }
270
+
271
+ if (this._filter) {
272
+ if (typeof this._filter === 'function') {
273
+ return (this._filter as any)(node);
274
+ }
275
+ return this._filter.acceptNode(node);
276
+ }
277
+
278
+ return NodeFilter.FILTER_ACCEPT;
279
+ }
280
+ }
@@ -1,11 +1,11 @@
1
- import { Element } from '../elements/Element';
1
+ // import { Element } from '../elements/Element';
2
2
 
3
3
  /**
4
4
  * **`HTMLCollection`** represents a generic collection of HTML elements.
5
5
  *
6
6
  * [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLCollection)
7
7
  */
8
- export class HTMLCollection {
8
+ export class HTMLCollectionImp implements HTMLCollection {
9
9
  // 인덱스 시그니처 선언
10
10
  [index: number]: Element;
11
11
 
@@ -83,6 +83,7 @@ export class HTMLCollection {
83
83
  /**
84
84
  * Returns an iterator for the collection.
85
85
  */
86
+ // @ts-ignore
86
87
  [Symbol.iterator](): IterableIterator<Element> {
87
88
  return this._elements[Symbol.iterator]();
88
89
  }
@@ -0,0 +1,12 @@
1
+ // import { Element } from '../elements/Element';
2
+ import { HTMLCollectionImp } from './HTMLCollectionImp';
3
+
4
+ /**
5
+ * **`HTMLCollectionOf<T>`** is a generic version of HTMLCollection that provides type safety for specific element types.
6
+ *
7
+ * [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLCollection)
8
+ */
9
+ export class HTMLCollectionOfImp<T extends Element> extends HTMLCollectionImp implements HTMLCollectionOfImp<T>{
10
+
11
+
12
+ }
@@ -1,4 +1,4 @@
1
- import { Node } from '../Node';
1
+ // import { Node } from '../Node';
2
2
 
3
3
  /**
4
4
  * **`NodeList`** objects are collections of nodes, usually returned by properties such as Node.childNodes and methods such as document.querySelectorAll().