@dooboostore/dom-parser 1.0.1 → 1.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (519) hide show
  1. package/dist/cjs/DomParser.js +43 -13
  2. package/dist/cjs/DomParser.js.map +2 -2
  3. package/dist/cjs/factory/ElementFactory.js +27 -6
  4. package/dist/cjs/factory/ElementFactory.js.map +2 -2
  5. package/dist/cjs/index.js +4 -0
  6. package/dist/cjs/index.js.map +2 -2
  7. package/dist/cjs/node/CharacterData.js.map +1 -1
  8. package/dist/cjs/node/ChildNode.js +0 -15
  9. package/dist/cjs/node/ChildNode.js.map +3 -3
  10. package/dist/cjs/node/ChildNodeBase.js +20 -0
  11. package/dist/cjs/node/ChildNodeBase.js.map +2 -2
  12. package/dist/cjs/node/Comment.js.map +2 -2
  13. package/dist/cjs/node/Document.js +0 -27
  14. package/dist/cjs/node/Document.js.map +4 -4
  15. package/dist/cjs/node/DocumentBase.js +169 -202
  16. package/dist/cjs/node/DocumentBase.js.map +2 -2
  17. package/dist/cjs/node/DocumentFragment.js +0 -15
  18. package/dist/cjs/node/DocumentFragment.js.map +3 -3
  19. package/dist/cjs/node/DocumentFragmentBase.js.map +2 -2
  20. package/dist/cjs/node/Node.js.map +1 -1
  21. package/dist/cjs/node/NodeBase.js +44 -2
  22. package/dist/cjs/node/NodeBase.js.map +2 -2
  23. package/dist/cjs/node/NodeFilter.js +43 -0
  24. package/dist/cjs/node/NodeFilter.js.map +7 -0
  25. package/dist/cjs/node/NodeIterator.js +1 -28
  26. package/dist/cjs/node/NodeIterator.js.map +2 -2
  27. package/dist/cjs/node/ParentNode.js +0 -15
  28. package/dist/cjs/node/ParentNode.js.map +3 -3
  29. package/dist/cjs/node/ParentNodeBase.js +10 -10
  30. package/dist/cjs/node/ParentNodeBase.js.map +3 -3
  31. package/dist/cjs/node/ShadowRootBase.js +79 -0
  32. package/dist/cjs/node/ShadowRootBase.js.map +7 -0
  33. package/dist/cjs/node/Text.js +0 -15
  34. package/dist/cjs/node/Text.js.map +3 -3
  35. package/dist/cjs/node/TextBase.js +0 -3
  36. package/dist/cjs/node/TextBase.js.map +2 -2
  37. package/dist/cjs/node/TreeWalker.js +272 -0
  38. package/dist/cjs/node/TreeWalker.js.map +7 -0
  39. package/dist/cjs/node/collection/{HTMLCollection.js → HTMLCollectionImp.js} +7 -6
  40. package/dist/cjs/node/collection/HTMLCollectionImp.js.map +7 -0
  41. package/dist/cjs/node/collection/HTMLCollectionOfImp.js +26 -0
  42. package/dist/cjs/node/collection/HTMLCollectionOfImp.js.map +7 -0
  43. package/dist/cjs/node/collection/NodeList.js.map +1 -1
  44. package/dist/cjs/node/collection/{NodeListOf.js → NodeListOfImp.js} +6 -6
  45. package/dist/cjs/node/collection/NodeListOfImp.js.map +7 -0
  46. package/dist/cjs/node/collection/StylePropertyMapImpl.js +65 -0
  47. package/dist/cjs/node/collection/StylePropertyMapImpl.js.map +7 -0
  48. package/dist/cjs/node/collection/index.js +6 -6
  49. package/dist/cjs/node/collection/index.js.map +2 -2
  50. package/dist/cjs/node/elements/Element.js +0 -15
  51. package/dist/cjs/node/elements/Element.js.map +3 -3
  52. package/dist/cjs/node/elements/ElementBase.js +164 -322
  53. package/dist/cjs/node/elements/ElementBase.js.map +3 -3
  54. package/dist/cjs/node/elements/HTMLAreaElement.js.map +2 -2
  55. package/dist/cjs/node/{collection/HTMLCollectionOf.js → elements/HTMLAudioElement.js} +9 -16
  56. package/dist/cjs/node/elements/HTMLAudioElement.js.map +7 -0
  57. package/dist/cjs/node/elements/HTMLButtonElement.js +1 -1
  58. package/dist/cjs/node/elements/HTMLButtonElement.js.map +2 -2
  59. package/dist/cjs/node/elements/HTMLDListElement.js +29 -0
  60. package/dist/cjs/node/elements/HTMLDListElement.js.map +7 -0
  61. package/dist/cjs/node/elements/HTMLDataElement.js +29 -0
  62. package/dist/cjs/node/elements/HTMLDataElement.js.map +7 -0
  63. package/dist/cjs/node/elements/HTMLDataListElement.js +29 -0
  64. package/dist/cjs/node/elements/HTMLDataListElement.js.map +7 -0
  65. package/dist/cjs/node/elements/HTMLDetailsElement.js +29 -0
  66. package/dist/cjs/node/elements/HTMLDetailsElement.js.map +7 -0
  67. package/dist/cjs/node/elements/HTMLDialogElement.js +29 -0
  68. package/dist/cjs/node/elements/HTMLDialogElement.js.map +7 -0
  69. package/dist/cjs/node/elements/HTMLElement.js +10 -0
  70. package/dist/cjs/node/elements/HTMLElement.js.map +2 -2
  71. package/dist/cjs/node/elements/HTMLElementBase.js +153 -3
  72. package/dist/cjs/node/elements/HTMLElementBase.js.map +2 -2
  73. package/dist/cjs/node/elements/HTMLEmbedElement.js.map +2 -2
  74. package/dist/cjs/node/elements/HTMLFieldSetElement.js +29 -0
  75. package/dist/cjs/node/elements/HTMLFieldSetElement.js.map +7 -0
  76. package/dist/cjs/node/elements/HTMLHRElement.js +29 -0
  77. package/dist/cjs/node/elements/HTMLHRElement.js.map +7 -0
  78. package/dist/cjs/node/elements/HTMLIFrameElement.js +29 -0
  79. package/dist/cjs/node/elements/HTMLIFrameElement.js.map +7 -0
  80. package/dist/cjs/node/elements/HTMLLabelElement.js +29 -0
  81. package/dist/cjs/node/elements/HTMLLabelElement.js.map +7 -0
  82. package/dist/cjs/node/elements/HTMLLegendElement.js +29 -0
  83. package/dist/cjs/node/elements/HTMLLegendElement.js.map +7 -0
  84. package/dist/cjs/node/elements/HTMLMapElement.js +29 -0
  85. package/dist/cjs/node/elements/HTMLMapElement.js.map +7 -0
  86. package/dist/cjs/node/elements/HTMLMeterElement.js +29 -0
  87. package/dist/cjs/node/elements/HTMLMeterElement.js.map +7 -0
  88. package/dist/cjs/node/elements/HTMLModElement.js +29 -0
  89. package/dist/cjs/node/elements/HTMLModElement.js.map +7 -0
  90. package/dist/cjs/node/elements/HTMLObjectElement.js +29 -0
  91. package/dist/cjs/node/elements/HTMLObjectElement.js.map +7 -0
  92. package/dist/cjs/node/elements/HTMLOptGroupElement.js +29 -0
  93. package/dist/cjs/node/elements/HTMLOptGroupElement.js.map +7 -0
  94. package/dist/cjs/node/elements/HTMLOptionElement.js +29 -0
  95. package/dist/cjs/node/elements/HTMLOptionElement.js.map +7 -0
  96. package/dist/cjs/node/elements/HTMLOutputElement.js +29 -0
  97. package/dist/cjs/node/elements/HTMLOutputElement.js.map +7 -0
  98. package/dist/cjs/node/elements/HTMLParamElement.js +29 -0
  99. package/dist/cjs/node/elements/HTMLParamElement.js.map +7 -0
  100. package/dist/cjs/node/elements/HTMLPictureElement.js +29 -0
  101. package/dist/cjs/node/elements/HTMLPictureElement.js.map +7 -0
  102. package/dist/cjs/node/elements/HTMLPreElement.js +29 -0
  103. package/dist/cjs/node/elements/HTMLPreElement.js.map +7 -0
  104. package/dist/cjs/node/elements/HTMLProgressElement.js +29 -0
  105. package/dist/cjs/node/elements/HTMLProgressElement.js.map +7 -0
  106. package/dist/cjs/node/elements/HTMLQuoteElement.js +29 -0
  107. package/dist/cjs/node/elements/HTMLQuoteElement.js.map +7 -0
  108. package/dist/cjs/node/elements/HTMLSelectElement.js +29 -0
  109. package/dist/cjs/node/elements/HTMLSelectElement.js.map +7 -0
  110. package/dist/cjs/node/elements/HTMLSlotElement.js +29 -0
  111. package/dist/cjs/node/elements/HTMLSlotElement.js.map +7 -0
  112. package/dist/cjs/node/elements/HTMLSourceElement.js +29 -0
  113. package/dist/cjs/node/elements/HTMLSourceElement.js.map +7 -0
  114. package/dist/cjs/node/elements/HTMLTableElement.js.map +2 -2
  115. package/dist/cjs/node/elements/HTMLTbodyElement.js.map +2 -2
  116. package/dist/cjs/node/elements/HTMLTdElement.js.map +2 -2
  117. package/dist/cjs/node/elements/HTMLTemplateElement.js.map +2 -2
  118. package/dist/cjs/node/elements/HTMLTextAreaElement.js +29 -0
  119. package/dist/cjs/node/elements/HTMLTextAreaElement.js.map +7 -0
  120. package/dist/cjs/node/elements/HTMLTfootElement.js.map +2 -2
  121. package/dist/cjs/node/elements/HTMLTheadElement.js.map +2 -2
  122. package/dist/cjs/node/elements/HTMLTimeElement.js +29 -0
  123. package/dist/cjs/node/elements/HTMLTimeElement.js.map +7 -0
  124. package/dist/cjs/node/elements/HTMLTrElement.js.map +2 -2
  125. package/dist/cjs/node/elements/HTMLTrackElement.js +29 -0
  126. package/dist/cjs/node/elements/HTMLTrackElement.js.map +7 -0
  127. package/dist/cjs/node/elements/HTMLVideoElement.js +29 -0
  128. package/dist/cjs/node/elements/HTMLVideoElement.js.map +7 -0
  129. package/dist/cjs/node/elements/index.js +181 -92
  130. package/dist/cjs/node/elements/index.js.map +2 -2
  131. package/dist/cjs/node/index.js +6 -16
  132. package/dist/cjs/node/index.js.map +2 -2
  133. package/dist/cjs/utils/CSSSelector.js.map +2 -2
  134. package/dist/cjs/window/CustomElementRegistryImp.js +105 -0
  135. package/dist/cjs/window/CustomElementRegistryImp.js.map +7 -0
  136. package/dist/cjs/window/Window.js +0 -15
  137. package/dist/cjs/window/Window.js.map +3 -3
  138. package/dist/cjs/window/WindowBase.js +233 -515
  139. package/dist/cjs/window/WindowBase.js.map +2 -2
  140. package/dist/cjs/window/index.js +0 -5
  141. package/dist/cjs/window/index.js.map +2 -2
  142. package/dist/esm/DomParser.js +43 -13
  143. package/dist/esm/DomParser.js.map +2 -2
  144. package/dist/esm/factory/ElementFactory.js +27 -6
  145. package/dist/esm/factory/ElementFactory.js.map +2 -2
  146. package/dist/esm/index.js +4 -0
  147. package/dist/esm/index.js.map +2 -2
  148. package/dist/esm/node/ChildNodeBase.js +20 -0
  149. package/dist/esm/node/ChildNodeBase.js.map +2 -2
  150. package/dist/esm/node/Comment.js.map +2 -2
  151. package/dist/esm/node/Document.js +0 -8
  152. package/dist/esm/node/Document.js.map +4 -4
  153. package/dist/esm/node/DocumentBase.js +166 -199
  154. package/dist/esm/node/DocumentBase.js.map +2 -2
  155. package/dist/esm/node/DocumentFragmentBase.js.map +2 -2
  156. package/dist/esm/node/Node.js.map +1 -1
  157. package/dist/esm/node/NodeBase.js +45 -22
  158. package/dist/esm/node/NodeBase.js.map +2 -2
  159. package/dist/esm/node/NodeFilter.js +24 -0
  160. package/dist/esm/node/NodeFilter.js.map +7 -0
  161. package/dist/esm/node/NodeIterator.js +1 -28
  162. package/dist/esm/node/NodeIterator.js.map +2 -2
  163. package/dist/esm/node/ParentNodeBase.js +4 -4
  164. package/dist/esm/node/ParentNodeBase.js.map +2 -2
  165. package/dist/esm/node/ShadowRootBase.js +60 -0
  166. package/dist/esm/node/ShadowRootBase.js.map +7 -0
  167. package/dist/esm/node/TextBase.js +0 -3
  168. package/dist/esm/node/TextBase.js.map +2 -2
  169. package/dist/esm/node/TreeWalker.js +253 -0
  170. package/dist/esm/node/TreeWalker.js.map +7 -0
  171. package/dist/esm/node/collection/{HTMLCollection.js → HTMLCollectionImp.js} +4 -3
  172. package/dist/esm/node/collection/HTMLCollectionImp.js.map +7 -0
  173. package/dist/esm/node/collection/HTMLCollectionOfImp.js +7 -0
  174. package/dist/esm/node/collection/HTMLCollectionOfImp.js.map +7 -0
  175. package/dist/esm/node/collection/NodeList.js.map +1 -1
  176. package/dist/esm/node/collection/{NodeListOf.js → NodeListOfImp.js} +3 -3
  177. package/dist/esm/node/collection/NodeListOfImp.js.map +7 -0
  178. package/dist/esm/node/collection/StylePropertyMapImpl.js +46 -0
  179. package/dist/esm/node/collection/StylePropertyMapImpl.js.map +7 -0
  180. package/dist/esm/node/collection/index.js +6 -6
  181. package/dist/esm/node/collection/index.js.map +2 -2
  182. package/dist/esm/node/elements/ElementBase.js +164 -322
  183. package/dist/esm/node/elements/ElementBase.js.map +3 -3
  184. package/dist/esm/node/elements/HTMLAreaElement.js.map +2 -2
  185. package/dist/esm/node/elements/HTMLAudioElement.js +10 -0
  186. package/dist/esm/node/elements/HTMLAudioElement.js.map +7 -0
  187. package/dist/esm/node/elements/HTMLButtonElement.js +1 -1
  188. package/dist/esm/node/elements/HTMLButtonElement.js.map +2 -2
  189. package/dist/esm/node/elements/HTMLDListElement.js +10 -0
  190. package/dist/esm/node/elements/HTMLDListElement.js.map +7 -0
  191. package/dist/esm/node/elements/HTMLDataElement.js +10 -0
  192. package/dist/esm/node/elements/HTMLDataElement.js.map +7 -0
  193. package/dist/esm/node/elements/HTMLDataListElement.js +10 -0
  194. package/dist/esm/node/elements/HTMLDataListElement.js.map +7 -0
  195. package/dist/esm/node/elements/HTMLDetailsElement.js +10 -0
  196. package/dist/esm/node/elements/HTMLDetailsElement.js.map +7 -0
  197. package/dist/esm/node/elements/HTMLDialogElement.js +10 -0
  198. package/dist/esm/node/elements/HTMLDialogElement.js.map +7 -0
  199. package/dist/esm/node/elements/HTMLElement.js +6 -0
  200. package/dist/esm/node/elements/HTMLElement.js.map +3 -3
  201. package/dist/esm/node/elements/HTMLElementBase.js +153 -3
  202. package/dist/esm/node/elements/HTMLElementBase.js.map +2 -2
  203. package/dist/esm/node/elements/HTMLEmbedElement.js.map +2 -2
  204. package/dist/esm/node/elements/HTMLFieldSetElement.js +10 -0
  205. package/dist/esm/node/elements/HTMLFieldSetElement.js.map +7 -0
  206. package/dist/esm/node/elements/HTMLHRElement.js +10 -0
  207. package/dist/esm/node/elements/HTMLHRElement.js.map +7 -0
  208. package/dist/esm/node/elements/HTMLIFrameElement.js +10 -0
  209. package/dist/esm/node/elements/HTMLIFrameElement.js.map +7 -0
  210. package/dist/esm/node/elements/HTMLLabelElement.js +10 -0
  211. package/dist/esm/node/elements/HTMLLabelElement.js.map +7 -0
  212. package/dist/esm/node/elements/HTMLLegendElement.js +10 -0
  213. package/dist/esm/node/elements/HTMLLegendElement.js.map +7 -0
  214. package/dist/esm/node/elements/HTMLMapElement.js +10 -0
  215. package/dist/esm/node/elements/HTMLMapElement.js.map +7 -0
  216. package/dist/esm/node/elements/HTMLMeterElement.js +10 -0
  217. package/dist/esm/node/elements/HTMLMeterElement.js.map +7 -0
  218. package/dist/esm/node/elements/HTMLModElement.js +10 -0
  219. package/dist/esm/node/elements/HTMLModElement.js.map +7 -0
  220. package/dist/esm/node/elements/HTMLObjectElement.js +10 -0
  221. package/dist/esm/node/elements/HTMLObjectElement.js.map +7 -0
  222. package/dist/esm/node/elements/HTMLOptGroupElement.js +10 -0
  223. package/dist/esm/node/elements/HTMLOptGroupElement.js.map +7 -0
  224. package/dist/esm/node/elements/HTMLOptionElement.js +10 -0
  225. package/dist/esm/node/elements/HTMLOptionElement.js.map +7 -0
  226. package/dist/esm/node/elements/HTMLOutputElement.js +10 -0
  227. package/dist/esm/node/elements/HTMLOutputElement.js.map +7 -0
  228. package/dist/esm/node/elements/HTMLParamElement.js +10 -0
  229. package/dist/esm/node/elements/HTMLParamElement.js.map +7 -0
  230. package/dist/esm/node/elements/HTMLPictureElement.js +10 -0
  231. package/dist/esm/node/elements/HTMLPictureElement.js.map +7 -0
  232. package/dist/esm/node/elements/HTMLPreElement.js +10 -0
  233. package/dist/esm/node/elements/HTMLPreElement.js.map +7 -0
  234. package/dist/esm/node/elements/HTMLProgressElement.js +10 -0
  235. package/dist/esm/node/elements/HTMLProgressElement.js.map +7 -0
  236. package/dist/esm/node/elements/HTMLQuoteElement.js +10 -0
  237. package/dist/esm/node/elements/HTMLQuoteElement.js.map +7 -0
  238. package/dist/esm/node/elements/HTMLSelectElement.js +10 -0
  239. package/dist/esm/node/elements/HTMLSelectElement.js.map +7 -0
  240. package/dist/esm/node/elements/HTMLSlotElement.js +10 -0
  241. package/dist/esm/node/elements/HTMLSlotElement.js.map +7 -0
  242. package/dist/esm/node/elements/HTMLSourceElement.js +10 -0
  243. package/dist/esm/node/elements/HTMLSourceElement.js.map +7 -0
  244. package/dist/esm/node/elements/HTMLTableElement.js.map +2 -2
  245. package/dist/esm/node/elements/HTMLTbodyElement.js.map +2 -2
  246. package/dist/esm/node/elements/HTMLTdElement.js.map +2 -2
  247. package/dist/esm/node/elements/HTMLTemplateElement.js.map +2 -2
  248. package/dist/esm/node/elements/HTMLTextAreaElement.js +10 -0
  249. package/dist/esm/node/elements/HTMLTextAreaElement.js.map +7 -0
  250. package/dist/esm/node/elements/HTMLTfootElement.js.map +2 -2
  251. package/dist/esm/node/elements/HTMLTheadElement.js.map +2 -2
  252. package/dist/esm/node/elements/HTMLTimeElement.js +10 -0
  253. package/dist/esm/node/elements/HTMLTimeElement.js.map +7 -0
  254. package/dist/esm/node/elements/HTMLTrElement.js.map +2 -2
  255. package/dist/esm/node/elements/HTMLTrackElement.js +10 -0
  256. package/dist/esm/node/elements/HTMLTrackElement.js.map +7 -0
  257. package/dist/esm/node/elements/HTMLVideoElement.js +10 -0
  258. package/dist/esm/node/elements/HTMLVideoElement.js.map +7 -0
  259. package/dist/esm/node/elements/index.js +182 -93
  260. package/dist/esm/node/elements/index.js.map +2 -2
  261. package/dist/esm/node/index.js +7 -17
  262. package/dist/esm/node/index.js.map +2 -2
  263. package/dist/esm/utils/CSSSelector.js.map +2 -2
  264. package/dist/esm/window/CustomElementRegistryImp.js +86 -0
  265. package/dist/esm/window/CustomElementRegistryImp.js.map +7 -0
  266. package/dist/esm/window/WindowBase.js +282 -499
  267. package/dist/esm/window/WindowBase.js.map +2 -2
  268. package/dist/esm/window/index.js +0 -5
  269. package/dist/esm/window/index.js.map +2 -2
  270. package/dist/esm-bundle/dooboostore-dom-parser.esm.js +3755 -3548
  271. package/dist/esm-bundle/dooboostore-dom-parser.esm.js.map +4 -4
  272. package/dist/types/DomParser.d.ts +4 -0
  273. package/dist/types/DomParser.d.ts.map +1 -1
  274. package/dist/types/factory/ElementFactory.d.ts +1 -1
  275. package/dist/types/factory/ElementFactory.d.ts.map +1 -1
  276. package/dist/types/index.d.ts +3 -1
  277. package/dist/types/index.d.ts.map +1 -1
  278. package/dist/types/node/CharacterData.d.ts +0 -2
  279. package/dist/types/node/CharacterData.d.ts.map +1 -1
  280. package/dist/types/node/ChildNode.d.ts +0 -38
  281. package/dist/types/node/ChildNode.d.ts.map +1 -1
  282. package/dist/types/node/ChildNodeBase.d.ts +6 -4
  283. package/dist/types/node/ChildNodeBase.d.ts.map +1 -1
  284. package/dist/types/node/Comment.d.ts +1 -1
  285. package/dist/types/node/Comment.d.ts.map +1 -1
  286. package/dist/types/node/Document.d.ts +0 -856
  287. package/dist/types/node/Document.d.ts.map +1 -1
  288. package/dist/types/node/DocumentBase.d.ts +68 -108
  289. package/dist/types/node/DocumentBase.d.ts.map +1 -1
  290. package/dist/types/node/DocumentFragment.d.ts +0 -38
  291. package/dist/types/node/DocumentFragment.d.ts.map +1 -1
  292. package/dist/types/node/DocumentFragmentBase.d.ts +1 -8
  293. package/dist/types/node/DocumentFragmentBase.d.ts.map +1 -1
  294. package/dist/types/node/Node.d.ts +0 -213
  295. package/dist/types/node/Node.d.ts.map +1 -1
  296. package/dist/types/node/NodeBase.d.ts +11 -8
  297. package/dist/types/node/NodeBase.d.ts.map +1 -1
  298. package/dist/types/node/NodeFilter.d.ts +25 -0
  299. package/dist/types/node/NodeFilter.d.ts.map +1 -0
  300. package/dist/types/node/NodeIterator.d.ts +0 -34
  301. package/dist/types/node/NodeIterator.d.ts.map +1 -1
  302. package/dist/types/node/ParentNode.d.ts +0 -84
  303. package/dist/types/node/ParentNode.d.ts.map +1 -1
  304. package/dist/types/node/ParentNodeBase.d.ts +0 -5
  305. package/dist/types/node/ParentNodeBase.d.ts.map +1 -1
  306. package/dist/types/node/ShadowRootBase.d.ts +36 -0
  307. package/dist/types/node/ShadowRootBase.d.ts.map +1 -0
  308. package/dist/types/node/Text.d.ts +0 -24
  309. package/dist/types/node/Text.d.ts.map +1 -1
  310. package/dist/types/node/TextBase.d.ts +2 -3
  311. package/dist/types/node/TextBase.d.ts.map +1 -1
  312. package/dist/types/node/TreeWalker.d.ts +48 -0
  313. package/dist/types/node/TreeWalker.d.ts.map +1 -0
  314. package/dist/types/node/collection/{HTMLCollection.d.ts → HTMLCollectionImp.d.ts} +2 -3
  315. package/dist/types/node/collection/HTMLCollectionImp.d.ts.map +1 -0
  316. package/dist/types/node/collection/HTMLCollectionOfImp.d.ts +9 -0
  317. package/dist/types/node/collection/HTMLCollectionOfImp.d.ts.map +1 -0
  318. package/dist/types/node/collection/NodeList.d.ts +0 -1
  319. package/dist/types/node/collection/NodeList.d.ts.map +1 -1
  320. package/dist/types/node/collection/{NodeListOf.d.ts → NodeListOfImp.d.ts} +3 -4
  321. package/dist/types/node/collection/NodeListOfImp.d.ts.map +1 -0
  322. package/dist/types/node/collection/StylePropertyMapImpl.d.ts +20 -0
  323. package/dist/types/node/collection/StylePropertyMapImpl.d.ts.map +1 -0
  324. package/dist/types/node/collection/index.d.ts +3 -3
  325. package/dist/types/node/collection/index.d.ts.map +1 -1
  326. package/dist/types/node/elements/Element.d.ts +0 -686
  327. package/dist/types/node/elements/Element.d.ts.map +1 -1
  328. package/dist/types/node/elements/ElementBase.d.ts +97 -73
  329. package/dist/types/node/elements/ElementBase.d.ts.map +1 -1
  330. package/dist/types/node/elements/HTMLAreaElement.d.ts +0 -1
  331. package/dist/types/node/elements/HTMLAreaElement.d.ts.map +1 -1
  332. package/dist/types/node/elements/HTMLAudioElement.d.ts +8 -0
  333. package/dist/types/node/elements/HTMLAudioElement.d.ts.map +1 -0
  334. package/dist/types/node/elements/HTMLButtonElement.d.ts +1 -1
  335. package/dist/types/node/elements/HTMLButtonElement.d.ts.map +1 -1
  336. package/dist/types/node/elements/HTMLDListElement.d.ts +5 -0
  337. package/dist/types/node/elements/HTMLDListElement.d.ts.map +1 -0
  338. package/dist/types/node/elements/HTMLDataElement.d.ts +5 -0
  339. package/dist/types/node/elements/HTMLDataElement.d.ts.map +1 -0
  340. package/dist/types/node/elements/HTMLDataListElement.d.ts +5 -0
  341. package/dist/types/node/elements/HTMLDataListElement.d.ts.map +1 -0
  342. package/dist/types/node/elements/HTMLDetailsElement.d.ts +5 -0
  343. package/dist/types/node/elements/HTMLDetailsElement.d.ts.map +1 -0
  344. package/dist/types/node/elements/HTMLDialogElement.d.ts +5 -0
  345. package/dist/types/node/elements/HTMLDialogElement.d.ts.map +1 -0
  346. package/dist/types/node/elements/HTMLElement.d.ts +2 -88
  347. package/dist/types/node/elements/HTMLElement.d.ts.map +1 -1
  348. package/dist/types/node/elements/HTMLElementBase.d.ts +133 -3
  349. package/dist/types/node/elements/HTMLElementBase.d.ts.map +1 -1
  350. package/dist/types/node/elements/HTMLEmbedElement.d.ts +0 -1
  351. package/dist/types/node/elements/HTMLEmbedElement.d.ts.map +1 -1
  352. package/dist/types/node/elements/HTMLFieldSetElement.d.ts +5 -0
  353. package/dist/types/node/elements/HTMLFieldSetElement.d.ts.map +1 -0
  354. package/dist/types/node/elements/HTMLHRElement.d.ts +5 -0
  355. package/dist/types/node/elements/HTMLHRElement.d.ts.map +1 -0
  356. package/dist/types/node/elements/HTMLIFrameElement.d.ts +5 -0
  357. package/dist/types/node/elements/HTMLIFrameElement.d.ts.map +1 -0
  358. package/dist/types/node/elements/HTMLLabelElement.d.ts +5 -0
  359. package/dist/types/node/elements/HTMLLabelElement.d.ts.map +1 -0
  360. package/dist/types/node/elements/HTMLLegendElement.d.ts +5 -0
  361. package/dist/types/node/elements/HTMLLegendElement.d.ts.map +1 -0
  362. package/dist/types/node/elements/HTMLMapElement.d.ts +5 -0
  363. package/dist/types/node/elements/HTMLMapElement.d.ts.map +1 -0
  364. package/dist/types/node/elements/HTMLMeterElement.d.ts +5 -0
  365. package/dist/types/node/elements/HTMLMeterElement.d.ts.map +1 -0
  366. package/dist/types/node/elements/HTMLModElement.d.ts +5 -0
  367. package/dist/types/node/elements/HTMLModElement.d.ts.map +1 -0
  368. package/dist/types/node/elements/HTMLObjectElement.d.ts +5 -0
  369. package/dist/types/node/elements/HTMLObjectElement.d.ts.map +1 -0
  370. package/dist/types/node/elements/HTMLOptGroupElement.d.ts +5 -0
  371. package/dist/types/node/elements/HTMLOptGroupElement.d.ts.map +1 -0
  372. package/dist/types/node/elements/HTMLOptionElement.d.ts +5 -0
  373. package/dist/types/node/elements/HTMLOptionElement.d.ts.map +1 -0
  374. package/dist/types/node/elements/HTMLOutputElement.d.ts +5 -0
  375. package/dist/types/node/elements/HTMLOutputElement.d.ts.map +1 -0
  376. package/dist/types/node/elements/HTMLParamElement.d.ts +5 -0
  377. package/dist/types/node/elements/HTMLParamElement.d.ts.map +1 -0
  378. package/dist/types/node/elements/HTMLPictureElement.d.ts +5 -0
  379. package/dist/types/node/elements/HTMLPictureElement.d.ts.map +1 -0
  380. package/dist/types/node/elements/HTMLPreElement.d.ts +5 -0
  381. package/dist/types/node/elements/HTMLPreElement.d.ts.map +1 -0
  382. package/dist/types/node/elements/HTMLProgressElement.d.ts +5 -0
  383. package/dist/types/node/elements/HTMLProgressElement.d.ts.map +1 -0
  384. package/dist/types/node/elements/HTMLQuoteElement.d.ts +5 -0
  385. package/dist/types/node/elements/HTMLQuoteElement.d.ts.map +1 -0
  386. package/dist/types/node/elements/HTMLSelectElement.d.ts +5 -0
  387. package/dist/types/node/elements/HTMLSelectElement.d.ts.map +1 -0
  388. package/dist/types/node/elements/HTMLSlotElement.d.ts +5 -0
  389. package/dist/types/node/elements/HTMLSlotElement.d.ts.map +1 -0
  390. package/dist/types/node/elements/HTMLSourceElement.d.ts +5 -0
  391. package/dist/types/node/elements/HTMLSourceElement.d.ts.map +1 -0
  392. package/dist/types/node/elements/HTMLTableElement.d.ts +3 -4
  393. package/dist/types/node/elements/HTMLTableElement.d.ts.map +1 -1
  394. package/dist/types/node/elements/HTMLTbodyElement.d.ts +2 -3
  395. package/dist/types/node/elements/HTMLTbodyElement.d.ts.map +1 -1
  396. package/dist/types/node/elements/HTMLTemplateElement.d.ts +0 -1
  397. package/dist/types/node/elements/HTMLTemplateElement.d.ts.map +1 -1
  398. package/dist/types/node/elements/HTMLTextAreaElement.d.ts +5 -0
  399. package/dist/types/node/elements/HTMLTextAreaElement.d.ts.map +1 -0
  400. package/dist/types/node/elements/HTMLTfootElement.d.ts +2 -3
  401. package/dist/types/node/elements/HTMLTfootElement.d.ts.map +1 -1
  402. package/dist/types/node/elements/HTMLTheadElement.d.ts +2 -3
  403. package/dist/types/node/elements/HTMLTheadElement.d.ts.map +1 -1
  404. package/dist/types/node/elements/HTMLTimeElement.d.ts +5 -0
  405. package/dist/types/node/elements/HTMLTimeElement.d.ts.map +1 -0
  406. package/dist/types/node/elements/HTMLTrElement.d.ts +2 -3
  407. package/dist/types/node/elements/HTMLTrElement.d.ts.map +1 -1
  408. package/dist/types/node/elements/HTMLTrackElement.d.ts +5 -0
  409. package/dist/types/node/elements/HTMLTrackElement.d.ts.map +1 -0
  410. package/dist/types/node/elements/HTMLVideoElement.d.ts +8 -0
  411. package/dist/types/node/elements/HTMLVideoElement.d.ts.map +1 -0
  412. package/dist/types/node/elements/index.d.ts +106 -52
  413. package/dist/types/node/elements/index.d.ts.map +1 -1
  414. package/dist/types/node/index.d.ts +4 -7
  415. package/dist/types/node/index.d.ts.map +1 -1
  416. package/dist/types/utils/CSSSelector.d.ts +0 -1
  417. package/dist/types/utils/CSSSelector.d.ts.map +1 -1
  418. package/dist/types/window/CustomElementRegistryImp.d.ts +18 -0
  419. package/dist/types/window/CustomElementRegistryImp.d.ts.map +1 -0
  420. package/dist/types/window/Window.d.ts +0 -619
  421. package/dist/types/window/Window.d.ts.map +1 -1
  422. package/dist/types/window/WindowBase.d.ts +261 -284
  423. package/dist/types/window/WindowBase.d.ts.map +1 -1
  424. package/dist/types/window/index.d.ts +0 -1
  425. package/dist/types/window/index.d.ts.map +1 -1
  426. package/dist/umd-bundle/dooboostore-dom-parser.umd.js +3765 -3558
  427. package/dist/umd-bundle/dooboostore-dom-parser.umd.js.map +4 -4
  428. package/package.json +1 -1
  429. package/src/DomParser.ts +458 -429
  430. package/src/factory/ElementFactory.ts +79 -53
  431. package/src/index.ts +11 -10
  432. package/src/node/CharacterData.ts +0 -2
  433. package/src/node/ChildNode.ts +42 -42
  434. package/src/node/ChildNodeBase.ts +60 -39
  435. package/src/node/Comment.ts +60 -60
  436. package/src/node/Document.ts +129 -882
  437. package/src/node/DocumentBase.ts +371 -462
  438. package/src/node/DocumentFragment.ts +38 -44
  439. package/src/node/DocumentFragmentBase.ts +4 -9
  440. package/src/node/Node.ts +231 -224
  441. package/src/node/NodeBase.ts +469 -443
  442. package/src/node/NodeFilter.ts +50 -0
  443. package/src/node/NodeIterator.ts +117 -172
  444. package/src/node/ParentNode.ts +93 -93
  445. package/src/node/ParentNodeBase.ts +7 -10
  446. package/src/node/ShadowRootBase.ts +87 -0
  447. package/src/node/Text.ts +30 -30
  448. package/src/node/TextBase.ts +92 -94
  449. package/src/node/TreeWalker.ts +280 -0
  450. package/src/node/collection/{HTMLCollection.ts → HTMLCollectionImp.ts} +3 -2
  451. package/src/node/collection/HTMLCollectionOfImp.ts +12 -0
  452. package/src/node/collection/NodeList.ts +1 -1
  453. package/src/node/collection/{NodeListOf.ts → NodeListOfImp.ts} +3 -3
  454. package/src/node/collection/StylePropertyMapImpl.ts +60 -0
  455. package/src/node/collection/index.ts +3 -3
  456. package/src/node/elements/Element.ts +212 -771
  457. package/src/node/elements/ElementBase.ts +840 -1195
  458. package/src/node/elements/HTMLAreaElement.ts +0 -1
  459. package/src/node/elements/HTMLAudioElement.ts +10 -0
  460. package/src/node/elements/HTMLButtonElement.ts +63 -63
  461. package/src/node/elements/HTMLDListElement.ts +2 -0
  462. package/src/node/elements/HTMLDataElement.ts +6 -0
  463. package/src/node/elements/HTMLDataListElement.ts +2 -0
  464. package/src/node/elements/HTMLDetailsElement.ts +2 -0
  465. package/src/node/elements/HTMLDialogElement.ts +2 -0
  466. package/src/node/elements/HTMLElement.ts +2 -102
  467. package/src/node/elements/HTMLElementBase.ts +453 -156
  468. package/src/node/elements/HTMLEmbedElement.ts +0 -1
  469. package/src/node/elements/HTMLFieldSetElement.ts +2 -0
  470. package/src/node/elements/HTMLHRElement.ts +2 -0
  471. package/src/node/elements/HTMLIFrameElement.ts +2 -0
  472. package/src/node/elements/HTMLLabelElement.ts +2 -0
  473. package/src/node/elements/HTMLLegendElement.ts +2 -0
  474. package/src/node/elements/HTMLMapElement.ts +2 -0
  475. package/src/node/elements/HTMLMeterElement.ts +2 -0
  476. package/src/node/elements/HTMLModElement.ts +2 -0
  477. package/src/node/elements/HTMLObjectElement.ts +2 -0
  478. package/src/node/elements/HTMLOptGroupElement.ts +2 -0
  479. package/src/node/elements/HTMLOptionElement.ts +2 -0
  480. package/src/node/elements/HTMLOutputElement.ts +2 -0
  481. package/src/node/elements/HTMLParamElement.ts +2 -0
  482. package/src/node/elements/HTMLPictureElement.ts +2 -0
  483. package/src/node/elements/HTMLPreElement.ts +2 -0
  484. package/src/node/elements/HTMLProgressElement.ts +2 -0
  485. package/src/node/elements/HTMLQuoteElement.ts +2 -0
  486. package/src/node/elements/HTMLSelectElement.ts +2 -0
  487. package/src/node/elements/HTMLSlotElement.ts +2 -0
  488. package/src/node/elements/HTMLSourceElement.ts +2 -0
  489. package/src/node/elements/HTMLTableElement.ts +3 -7
  490. package/src/node/elements/HTMLTbodyElement.ts +2 -3
  491. package/src/node/elements/HTMLTdElement.ts +1 -1
  492. package/src/node/elements/HTMLTemplateElement.ts +3 -6
  493. package/src/node/elements/HTMLTextAreaElement.ts +2 -0
  494. package/src/node/elements/HTMLTfootElement.ts +2 -3
  495. package/src/node/elements/HTMLTheadElement.ts +2 -3
  496. package/src/node/elements/HTMLTimeElement.ts +2 -0
  497. package/src/node/elements/HTMLTrElement.ts +3 -4
  498. package/src/node/elements/HTMLTrackElement.ts +2 -0
  499. package/src/node/elements/HTMLVideoElement.ts +10 -0
  500. package/src/node/elements/index.ts +226 -149
  501. package/src/node/index.ts +8 -8
  502. package/src/utils/CSSSelector.ts +0 -1
  503. package/src/window/CustomElementRegistryImp.ts +120 -0
  504. package/src/window/Window.ts +716 -715
  505. package/src/window/WindowBase.ts +842 -998
  506. package/src/window/index.ts +0 -1
  507. package/tsconfig.json +1 -0
  508. package/dist/cjs/node/collection/HTMLCollection.js.map +0 -7
  509. package/dist/cjs/node/collection/HTMLCollectionOf.js.map +0 -7
  510. package/dist/cjs/node/collection/NodeListOf.js.map +0 -7
  511. package/dist/esm/node/collection/HTMLCollection.js.map +0 -7
  512. package/dist/esm/node/collection/HTMLCollectionOf.js +0 -17
  513. package/dist/esm/node/collection/HTMLCollectionOf.js.map +0 -7
  514. package/dist/esm/node/collection/NodeListOf.js.map +0 -7
  515. package/dist/types/node/collection/HTMLCollection.d.ts.map +0 -1
  516. package/dist/types/node/collection/HTMLCollectionOf.d.ts +0 -14
  517. package/dist/types/node/collection/HTMLCollectionOf.d.ts.map +0 -1
  518. package/dist/types/node/collection/NodeListOf.d.ts.map +0 -1
  519. package/src/node/collection/HTMLCollectionOf.ts +0 -26
@@ -1,36 +1,73 @@
1
1
  import { DocumentBase } from "../node/DocumentBase.js";
2
2
  import { NodeBase } from "../node/NodeBase.js";
3
3
  import { ElementBase } from "../node/elements/ElementBase.js";
4
- import { HTMLAnchorElement } from "../node/elements/HTMLAnchorElement.js";
5
- import { HTMLBodyElement } from "../node/elements/HTMLBodyElement.js";
6
- import { HTMLButtonElement } from "../node/elements/HTMLButtonElement.js";
7
- import { HTMLCanvasElement } from "../node/elements/HTMLCanvasElement.js";
8
- import { HTMLDivElement } from "../node/elements/HTMLDivElement.js";
9
- import { HTMLH1Element } from "../node/elements/HTMLH1Element.js";
10
- import { HTMLHeadElement } from "../node/elements/HTMLHeadElement.js";
11
- import { HTMLHtmlElement } from "../node/elements/HTMLHtmlElement.js";
12
- import { HTMLImgElement } from "../node/elements/HTMLImgElement.js";
13
- import { HTMLInputElement } from "../node/elements/HTMLInputElement.js";
14
- import { HTMLPElement } from "../node/elements/HTMLPElement.js";
15
- import { HTMLSpanElement } from "../node/elements/HTMLSpanElement.js";
16
- import { HTMLTitleElement } from "../node/elements/HTMLTitleElement.js";
17
- import { HTMLLinkElement } from "../node/elements/HTMLLinkElement.js";
18
- import { HTMLScriptElement } from "../node/elements/HTMLScriptElement.js";
19
- import { HTMLStyleElement } from "../node/elements/HTMLStyleElement.js";
20
- import { HTMLFormElement } from "../node/elements/HTMLFormElement.js";
21
- import { HTMLTableElement } from "../node/elements/HTMLTableElement.js";
22
- import { HTMLUListElement } from "../node/elements/HTMLUListElement.js";
23
- import { HTMLOListElement } from "../node/elements/HTMLOListElement.js";
24
- import { HTMLLIElement } from "../node/elements/HTMLLIElement.js";
25
- import { HTMLMetaElement } from "../node/elements/HTMLMetaElement.js";
26
- import { HTMLTemplateElement } from "../node/elements/HTMLTemplateElement.js";
27
- import { HTMLTheadElement } from "../node/elements/HTMLTheadElement.js";
28
- import { HTMLTfootElement } from "../node/elements/HTMLTfootElement.js";
29
- import { HTMLTrElement } from "../node/elements/HTMLTrElement.js";
30
- import { HTMLTdElement } from "../node/elements/HTMLTdElement.js";
31
- import { HTMLThElement } from "../node/elements/HTMLThElement.js";
32
- import { HTMLCaptionElement } from "../node/elements/HTMLCaptionElement.js";
33
- import { HTMLTbodyElement } from "../node/elements/HTMLTbodyElement.js";
4
+ import {
5
+ HTMLElement,
6
+ HTMLAnchorElement,
7
+ HTMLAreaElement,
8
+ HTMLAudioElement,
9
+ HTMLBaseElement,
10
+ HTMLBodyElement,
11
+ HTMLButtonElement,
12
+ HTMLCanvasElement,
13
+ HTMLCaptionElement,
14
+ HTMLDataElement,
15
+ HTMLDataListElement,
16
+ HTMLDetailsElement,
17
+ HTMLDialogElement,
18
+ HTMLDivElement,
19
+ HTMLDListElement,
20
+ HTMLEmbedElement,
21
+ HTMLFieldSetElement,
22
+ HTMLFormElement,
23
+ HTMLH1Element,
24
+ HTMLHeadElement,
25
+ HTMLHRElement,
26
+ HTMLHtmlElement,
27
+ HTMLIFrameElement,
28
+ HTMLImgElement,
29
+ HTMLInputElement,
30
+ HTMLLabelElement,
31
+ HTMLLegendElement,
32
+ HTMLLIElement,
33
+ HTMLLinkElement,
34
+ HTMLMapElement,
35
+ HTMLMetaElement,
36
+ HTMLMeterElement,
37
+ HTMLModElement,
38
+ HTMLObjectElement,
39
+ HTMLOListElement,
40
+ HTMLOptGroupElement,
41
+ HTMLOptionElement,
42
+ HTMLOutputElement,
43
+ HTMLPElement,
44
+ HTMLParamElement,
45
+ HTMLPictureElement,
46
+ HTMLPreElement,
47
+ HTMLProgressElement,
48
+ HTMLQuoteElement,
49
+ HTMLScriptElement,
50
+ HTMLSelectElement,
51
+ HTMLSlotElement,
52
+ HTMLSourceElement,
53
+ HTMLSpanElement,
54
+ HTMLStyleElement,
55
+ HTMLTableElement,
56
+ HTMLTbodyElement,
57
+ HTMLTdElement,
58
+ HTMLTemplateElement,
59
+ HTMLTextAreaElement,
60
+ HTMLTfootElement,
61
+ HTMLTheadElement,
62
+ HTMLThElement,
63
+ HTMLTimeElement,
64
+ HTMLTitleElement,
65
+ HTMLTrackElement,
66
+ HTMLTrElement,
67
+ HTMLUListElement,
68
+ HTMLVideoElement
69
+ } from "../node/elements/index.js";
70
+ import { CustomElementRegistryImp } from "./CustomElementRegistryImp.js";
34
71
  class LocationBase {
35
72
  constructor(initialUrl = "about:blank", urlChangeCallback) {
36
73
  this._href = "about:blank";
@@ -59,9 +96,7 @@ class LocationBase {
59
96
  return this._protocol;
60
97
  }
61
98
  set protocol(value) {
62
- if (!value.endsWith(":")) {
63
- value += ":";
64
- }
99
+ if (!value.endsWith(":")) value += ":";
65
100
  this._protocol = value;
66
101
  this.reconstructUrl();
67
102
  }
@@ -100,9 +135,7 @@ class LocationBase {
100
135
  return this._pathname;
101
136
  }
102
137
  set pathname(value) {
103
- if (!value.startsWith("/")) {
104
- value = "/" + value;
105
- }
138
+ if (!value.startsWith("/")) value = "/" + value;
106
139
  this._pathname = value;
107
140
  this.reconstructUrl();
108
141
  }
@@ -110,9 +143,7 @@ class LocationBase {
110
143
  return this._search;
111
144
  }
112
145
  set search(value) {
113
- if (value && !value.startsWith("?")) {
114
- value = "?" + value;
115
- }
146
+ if (value && !value.startsWith("?")) value = "?" + value;
116
147
  this._search = value;
117
148
  this.reconstructUrl();
118
149
  }
@@ -120,9 +151,7 @@ class LocationBase {
120
151
  return this._hash;
121
152
  }
122
153
  set hash(value) {
123
- if (value && !value.startsWith("#")) {
124
- value = "#" + value;
125
- }
154
+ if (value && !value.startsWith("#")) value = "#" + value;
126
155
  this._hash = value;
127
156
  this.reconstructUrl();
128
157
  }
@@ -137,13 +166,9 @@ class LocationBase {
137
166
  }
138
167
  }
139
168
  replace(url) {
140
- const oldHref = this._href;
141
- this.parseUrl(url);
142
- if (this._href !== oldHref && this.urlChangeCallback) {
143
- this.urlChangeCallback(this._href);
144
- }
169
+ this.assign(url);
145
170
  }
146
- reload(forcedReload) {
171
+ reload(_forcedReload) {
147
172
  }
148
173
  toString() {
149
174
  return this._href;
@@ -189,9 +214,7 @@ class LocationBase {
189
214
  let url = this._protocol;
190
215
  if (this._protocol !== "about:" && this._protocol !== "data:") {
191
216
  url += "//";
192
- if (this._host) {
193
- url += this._host;
194
- }
217
+ if (this._host) url += this._host;
195
218
  }
196
219
  url += this._pathname;
197
220
  url += this._search;
@@ -274,552 +297,312 @@ class NavigatorBase {
274
297
  this.cookieEnabled = false;
275
298
  this.onLine = true;
276
299
  }
300
+ canShare(data) {
301
+ throw new Error("Method not implemented.");
302
+ }
303
+ getGamepads() {
304
+ throw new Error("Method not implemented.");
305
+ }
306
+ requestMIDIAccess(options) {
307
+ throw new Error("Method not implemented.");
308
+ }
309
+ requestMediaKeySystemAccess(keySystem, supportedConfigurations) {
310
+ throw new Error("Method not implemented.");
311
+ }
312
+ sendBeacon(url, data) {
313
+ throw new Error("Method not implemented.");
314
+ }
315
+ share(data) {
316
+ throw new Error("Method not implemented.");
317
+ }
318
+ vibrate(pattern) {
319
+ throw new Error("Method not implemented.");
320
+ }
321
+ clearAppBadge() {
322
+ throw new Error("Method not implemented.");
323
+ }
324
+ setAppBadge(contents) {
325
+ throw new Error("Method not implemented.");
326
+ }
327
+ registerProtocolHandler(scheme, url) {
328
+ throw new Error("Method not implemented.");
329
+ }
330
+ javaEnabled() {
331
+ throw new Error("Method not implemented.");
332
+ }
277
333
  }
278
334
  class WindowBase {
279
- constructor(document, initialUrl) {
280
- // Event system
335
+ constructor(config) {
281
336
  this._eventListeners = [];
282
- this.closed = false;
337
+ this._timers = /* @__PURE__ */ new Set();
338
+ this._intervals = /* @__PURE__ */ new Set();
339
+ this._animationFrames = /* @__PURE__ */ new Set();
340
+ this._closed = false;
283
341
  this.cookieStore = {};
284
- this.customElements = {};
285
342
  this.devicePixelRatio = 1;
286
- this.event = void 0;
287
- this.external = {};
288
- this.frameElement = null;
289
- this.frames = {};
290
- this.innerHeight = 768;
291
- this.innerWidth = 1024;
292
- this.length = 0;
293
- this.locationbar = {};
294
- this.menubar = {};
295
- this.name = "";
296
- this.ondevicemotion = null;
297
- this.ondeviceorientation = null;
298
- this.ondeviceorientationabsolute = null;
299
- this.onorientationchange = null;
300
- this.opener = null;
301
- this.orientation = 0;
302
- this.originAgentCluster = false;
303
- this.outerHeight = 768;
304
- this.outerWidth = 1024;
305
- this.pageXOffset = 0;
306
- this.pageYOffset = 0;
307
- this.parent = {};
308
- this.personalbar = {};
309
- this.screen = {};
310
- this.screenLeft = 0;
311
- this.screenTop = 0;
312
- this.screenX = 0;
313
- this.screenY = 0;
314
- this.scrollX = 0;
315
- this.scrollY = 0;
316
- this.scrollbars = {};
317
343
  this.self = this;
318
- this.speechSynthesis = {};
319
- this.status = "";
320
- this.statusbar = {};
321
- this.toolbar = {};
322
- this.top = null;
323
- this.visualViewport = null;
324
344
  this.window = this;
325
345
  // Global constructors
326
- this.Node = NodeBase;
327
- this.Element = ElementBase;
328
- this.HTMLElement = ElementBase;
329
346
  this.Event = class Event {
347
+ constructor(type) {
348
+ this.type = type;
349
+ }
330
350
  };
331
- this.PopStateEvent = class PopStateEvent extends this.Event {
332
- };
333
- this.IntersectionObserver = class IntersectionObserver {
334
- };
335
- this.NodeFilter = class NodeFilter {
336
- };
337
- this.DocumentFragment = class DocumentFragment {
338
- };
339
- this.HTMLMetaElement = HTMLMetaElement;
340
- this.HTMLCanvasElement = HTMLCanvasElement;
341
- this.CanvasRenderingContext2D = class CanvasRenderingContext2D {
342
- };
343
- this.CanvasPattern = class CanvasPattern {
344
- };
345
- this.CanvasGradient = class CanvasGradient {
346
- };
347
- this.Path2D = class Path2D {
348
- };
349
- this.ImageData = class ImageData {
351
+ this.CustomEvent = class CustomEvent extends this.Event {
352
+ constructor(type, detail) {
353
+ super(type);
354
+ this.detail = detail;
355
+ }
350
356
  };
351
- // HTML element constructors
357
+ // All HTML element constructors
358
+ this.Node = NodeBase;
359
+ this.Element = ElementBase;
360
+ this.HTMLElement = HTMLElement;
352
361
  this.HTMLAnchorElement = HTMLAnchorElement;
362
+ this.HTMLAreaElement = HTMLAreaElement;
363
+ this.HTMLAudioElement = HTMLAudioElement;
364
+ this.HTMLBaseElement = HTMLBaseElement;
353
365
  this.HTMLBodyElement = HTMLBodyElement;
354
366
  this.HTMLButtonElement = HTMLButtonElement;
367
+ this.HTMLCanvasElement = HTMLCanvasElement;
368
+ this.HTMLCaptionElement = HTMLCaptionElement;
369
+ this.HTMLDataElement = HTMLDataElement;
370
+ this.HTMLDataListElement = HTMLDataListElement;
371
+ this.HTMLDetailsElement = HTMLDetailsElement;
372
+ this.HTMLDialogElement = HTMLDialogElement;
355
373
  this.HTMLDivElement = HTMLDivElement;
374
+ this.HTMLDListElement = HTMLDListElement;
375
+ this.HTMLEmbedElement = HTMLEmbedElement;
376
+ this.HTMLFieldSetElement = HTMLFieldSetElement;
377
+ this.HTMLFormElement = HTMLFormElement;
356
378
  this.HTMLH1Element = HTMLH1Element;
357
379
  this.HTMLHeadElement = HTMLHeadElement;
380
+ this.HTMLHRElement = HTMLHRElement;
358
381
  this.HTMLHtmlElement = HTMLHtmlElement;
382
+ this.HTMLIFrameElement = HTMLIFrameElement;
359
383
  this.HTMLImgElement = HTMLImgElement;
360
384
  this.HTMLInputElement = HTMLInputElement;
361
- this.HTMLPElement = HTMLPElement;
362
- this.HTMLSpanElement = HTMLSpanElement;
363
- this.HTMLTitleElement = HTMLTitleElement;
385
+ this.HTMLLabelElement = HTMLLabelElement;
386
+ this.HTMLLegendElement = HTMLLegendElement;
387
+ this.HTMLLIElement = HTMLLIElement;
364
388
  this.HTMLLinkElement = HTMLLinkElement;
389
+ this.HTMLMapElement = HTMLMapElement;
390
+ this.HTMLMetaElement = HTMLMetaElement;
391
+ this.HTMLMeterElement = HTMLMeterElement;
392
+ this.HTMLModElement = HTMLModElement;
393
+ this.HTMLObjectElement = HTMLObjectElement;
394
+ this.HTMLOListElement = HTMLOListElement;
395
+ this.HTMLOptGroupElement = HTMLOptGroupElement;
396
+ this.HTMLOptionElement = HTMLOptionElement;
397
+ this.HTMLOutputElement = HTMLOutputElement;
398
+ this.HTMLPElement = HTMLPElement;
399
+ this.HTMLParamElement = HTMLParamElement;
400
+ this.HTMLPictureElement = HTMLPictureElement;
401
+ this.HTMLPreElement = HTMLPreElement;
402
+ this.HTMLProgressElement = HTMLProgressElement;
403
+ this.HTMLQuoteElement = HTMLQuoteElement;
365
404
  this.HTMLScriptElement = HTMLScriptElement;
405
+ this.HTMLSelectElement = HTMLSelectElement;
406
+ this.HTMLSlotElement = HTMLSlotElement;
407
+ this.HTMLSourceElement = HTMLSourceElement;
408
+ this.HTMLSpanElement = HTMLSpanElement;
366
409
  this.HTMLStyleElement = HTMLStyleElement;
367
- this.HTMLFormElement = HTMLFormElement;
368
410
  this.HTMLTableElement = HTMLTableElement;
369
- this.HTMLUListElement = HTMLUListElement;
370
- this.HTMLOListElement = HTMLOListElement;
371
- this.HTMLLIElement = HTMLLIElement;
411
+ this.HTMLTbodyElement = HTMLTbodyElement;
412
+ this.HTMLTdElement = HTMLTdElement;
372
413
  this.HTMLTemplateElement = HTMLTemplateElement;
373
- this.HTMLTheadElement = HTMLTheadElement;
414
+ this.HTMLTextAreaElement = HTMLTextAreaElement;
374
415
  this.HTMLTfootElement = HTMLTfootElement;
375
- this.HTMLTrElement = HTMLTrElement;
376
- this.HTMLTdElement = HTMLTdElement;
416
+ this.HTMLTheadElement = HTMLTheadElement;
377
417
  this.HTMLThElement = HTMLThElement;
378
- this.HTMLCaptionElement = HTMLCaptionElement;
379
- this.HTMLTbodyElement = HTMLTbodyElement;
380
- // EventTarget methods (inherited)
381
- // These are already covered by addEventListener/removeEventListener/dispatchEvent
382
- // GlobalEventHandlers - empty implementations
383
- this.onabort = null;
384
- this.onanimationcancel = null;
385
- this.onanimationend = null;
386
- this.onanimationiteration = null;
387
- this.onanimationstart = null;
388
- this.onauxclick = null;
389
- this.onbeforeinput = null;
390
- this.onblur = null;
391
- this.oncancel = null;
392
- this.oncanplay = null;
393
- this.oncanplaythrough = null;
394
- this.onchange = null;
395
- this.onclick = null;
396
- this.onclose = null;
397
- this.oncontextmenu = null;
398
- this.oncopy = null;
399
- this.oncuechange = null;
400
- this.oncut = null;
401
- this.ondblclick = null;
402
- this.ondrag = null;
403
- this.ondragend = null;
404
- this.ondragenter = null;
405
- this.ondragleave = null;
406
- this.ondragover = null;
407
- this.ondragstart = null;
408
- this.ondrop = null;
409
- this.ondurationchange = null;
410
- this.onemptied = null;
411
- this.onended = null;
412
- this.onerror = null;
413
- this.onfocus = null;
414
- this.onformdata = null;
415
- this.ongotpointercapture = null;
416
- this.oninput = null;
417
- this.oninvalid = null;
418
- this.onkeydown = null;
419
- this.onkeypress = null;
420
- this.onkeyup = null;
421
- this.onload = null;
422
- this.onloadeddata = null;
423
- this.onloadedmetadata = null;
424
- this.onloadstart = null;
425
- this.onlostpointercapture = null;
426
- this.onmousedown = null;
427
- this.onmouseenter = null;
428
- this.onmouseleave = null;
429
- this.onmousemove = null;
430
- this.onmouseout = null;
431
- this.onmouseover = null;
432
- this.onmouseup = null;
433
- this.onpaste = null;
434
- this.onpause = null;
435
- this.onplay = null;
436
- this.onplaying = null;
437
- this.onpointercancel = null;
438
- this.onpointerdown = null;
439
- this.onpointerenter = null;
440
- this.onpointerleave = null;
441
- this.onpointermove = null;
442
- this.onpointerout = null;
443
- this.onpointerover = null;
444
- this.onpointerup = null;
445
- this.onprogress = null;
446
- this.onratechange = null;
447
- this.onreset = null;
448
- this.onresize = null;
449
- this.onscroll = null;
450
- this.onscrollend = null;
451
- this.onsecuritypolicyviolation = null;
452
- this.onseeked = null;
453
- this.onseeking = null;
454
- this.onselect = null;
455
- this.onselectionchange = null;
456
- this.onselectstart = null;
457
- this.onslotchange = null;
458
- this.onstalled = null;
459
- this.onsubmit = null;
460
- this.onsuspend = null;
461
- this.ontimeupdate = null;
462
- this.ontoggle = null;
463
- this.ontouchcancel = null;
464
- this.ontouchend = null;
465
- this.ontouchmove = null;
466
- this.ontouchstart = null;
467
- this.ontransitioncancel = null;
468
- this.ontransitionend = null;
469
- this.ontransitionrun = null;
470
- this.ontransitionstart = null;
471
- this.onvolumechange = null;
472
- this.onwaiting = null;
473
- this.onwebkitanimationend = null;
474
- this.onwebkitanimationiteration = null;
475
- this.onwebkitanimationstart = null;
476
- this.onwebkittransitionend = null;
477
- this.onwheel = null;
478
- // WindowEventHandlers - empty implementations
479
- this.onafterprint = null;
480
- this.onbeforeprint = null;
481
- this.onbeforeunload = null;
482
- this.onhashchange = null;
483
- this.onlanguagechange = null;
484
- this.onmessage = null;
485
- this.onmessageerror = null;
486
- this.onoffline = null;
487
- this.ononline = null;
488
- this.onpagehide = null;
489
- this.onpageshow = null;
490
- this.onpopstate = null;
491
- this.onrejectionhandled = null;
492
- this.onstorage = null;
493
- this.onunhandledrejection = null;
494
- this.onunload = null;
495
- // WindowLocalStorage
496
- this.localStorage = {};
497
- // WindowOrWorkerGlobalScope - empty implementations
498
- this.caches = {};
499
- this.crossOriginIsolated = false;
500
- this.crypto = {};
501
- this.indexedDB = {};
502
- this.isSecureContext = false;
503
- this.origin = "null";
504
- this.performance = {};
505
- // WindowSessionStorage
506
- this.sessionStorage = {};
507
- this.document = document || new DocumentBase();
508
- if (this.document && this.document.setWindow) {
509
- this.document.setWindow(this);
418
+ this.HTMLTimeElement = HTMLTimeElement;
419
+ this.HTMLTitleElement = HTMLTitleElement;
420
+ this.HTMLTrackElement = HTMLTrackElement;
421
+ this.HTMLTrElement = HTMLTrElement;
422
+ this.HTMLUListElement = HTMLUListElement;
423
+ this.HTMLVideoElement = HTMLVideoElement;
424
+ // Type Aliases
425
+ this.HTMLImageElement = HTMLImgElement;
426
+ this.HTMLParagraphElement = HTMLPElement;
427
+ this.HTMLHeadingElement = HTMLH1Element;
428
+ this.HTMLTableSectionElement = HTMLTbodyElement;
429
+ this.HTMLTableCellElement = HTMLTdElement;
430
+ this.HTMLTableRowElement = HTMLTrElement;
431
+ const documentBase = new DocumentBase();
432
+ if (documentBase && documentBase.setWindow) {
433
+ documentBase.setWindow(this);
510
434
  }
511
- this._location = new LocationBase(initialUrl);
435
+ this._location = new LocationBase(config?.initialUrl);
436
+ documentBase.setLocation(this._location);
437
+ this.document = documentBase;
438
+ const customElementRegistryImp = new CustomElementRegistryImp();
439
+ customElementRegistryImp.setWindow(this);
440
+ this.customElements = customElementRegistryImp;
512
441
  this.history = new HistoryBase(this);
513
442
  this.navigator = new NavigatorBase();
514
443
  this.clientInformation = this.navigator;
515
- return new Proxy(this, {
516
- get(target, prop) {
517
- if (typeof prop === "string" && /^\d+$/.test(prop)) {
518
- return target;
519
- }
520
- return target[prop];
521
- },
522
- set(target, prop, value) {
523
- if (typeof prop === "string" && /^\d+$/.test(prop)) {
524
- return true;
525
- }
526
- target[prop] = value;
527
- return true;
528
- },
529
- has(target, prop) {
530
- if (typeof prop === "string" && /^\d+$/.test(prop)) {
531
- return true;
532
- }
533
- return prop in target;
534
- },
535
- ownKeys(target) {
536
- const keys = Object.getOwnPropertyNames(target);
537
- for (let i = 0; i < target.length; i++) {
538
- keys.push(i.toString());
539
- }
540
- return keys;
541
- },
542
- getOwnPropertyDescriptor(target, prop) {
543
- if (typeof prop === "string" && /^\d+$/.test(prop)) {
544
- return {
545
- enumerable: true,
546
- configurable: true,
547
- value: target
548
- };
549
- }
550
- return Object.getOwnPropertyDescriptor(target, prop);
551
- }
552
- });
444
+ }
445
+ get closed() {
446
+ return this._closed;
553
447
  }
554
448
  get location() {
555
449
  return this._location;
556
450
  }
557
451
  set location(href) {
558
- if (typeof href === "string") {
559
- this._location.href = href;
560
- } else {
561
- this._location.href = href.href;
562
- }
563
- }
564
- // Window methods - all with empty implementations for server-side
565
- alert(message) {
452
+ if (typeof href === "string") this._location.href = href;
453
+ else this._location.href = href.href;
566
454
  }
567
455
  blur() {
456
+ throw new Error("Method not implemented.");
568
457
  }
569
458
  cancelIdleCallback(handle) {
459
+ throw new Error("Method not implemented.");
570
460
  }
571
461
  captureEvents() {
572
- }
573
- close() {
462
+ throw new Error("Method not implemented.");
574
463
  }
575
464
  confirm(message) {
576
- return false;
465
+ throw new Error("Method not implemented.");
577
466
  }
578
467
  focus() {
468
+ throw new Error("Method not implemented.");
579
469
  }
580
470
  getComputedStyle(elt, pseudoElt) {
581
- return {};
471
+ throw new Error("Method not implemented.");
582
472
  }
583
473
  getSelection() {
584
- return null;
474
+ throw new Error("Method not implemented.");
585
475
  }
586
476
  matchMedia(query) {
587
- return {};
477
+ throw new Error("Method not implemented.");
588
478
  }
589
479
  moveBy(x, y) {
480
+ throw new Error("Method not implemented.");
590
481
  }
591
482
  moveTo(x, y) {
483
+ throw new Error("Method not implemented.");
592
484
  }
593
485
  open(url, target, features) {
594
- return null;
486
+ throw new Error("Method not implemented.");
595
487
  }
596
- postMessage(message, targetOriginOrOptions, transfer) {
488
+ postMessage(message, targetOrigin, transfer) {
489
+ throw new Error("Method not implemented.");
597
490
  }
598
491
  print() {
492
+ throw new Error("Method not implemented.");
599
493
  }
600
494
  prompt(message, _default) {
601
- return null;
495
+ throw new Error("Method not implemented.");
602
496
  }
603
497
  releaseEvents() {
498
+ throw new Error("Method not implemented.");
604
499
  }
605
500
  requestIdleCallback(callback, options) {
606
- return 0;
501
+ throw new Error("Method not implemented.");
607
502
  }
608
503
  resizeBy(x, y) {
504
+ throw new Error("Method not implemented.");
609
505
  }
610
506
  resizeTo(width, height) {
507
+ throw new Error("Method not implemented.");
611
508
  }
612
- scroll(optionsOrX, y) {
509
+ scroll(x, y) {
510
+ throw new Error("Method not implemented.");
613
511
  }
614
- scrollBy(optionsOrX, y) {
512
+ scrollBy(x, y) {
513
+ throw new Error("Method not implemented.");
615
514
  }
616
- scrollTo(optionsOrX, y) {
515
+ scrollTo(x, y) {
516
+ throw new Error("Method not implemented.");
617
517
  }
618
518
  stop() {
519
+ throw new Error("Method not implemented.");
520
+ }
521
+ cancelAnimationFrame(handle) {
522
+ throw new Error("Method not implemented.");
523
+ }
524
+ requestAnimationFrame(callback) {
525
+ throw new Error("Method not implemented.");
526
+ }
527
+ atob(data) {
528
+ throw new Error("Method not implemented.");
529
+ }
530
+ btoa(data) {
531
+ throw new Error("Method not implemented.");
532
+ }
533
+ createImageBitmap(image, sx, sy, sw, sh, options) {
534
+ throw new Error("Method not implemented.");
535
+ }
536
+ fetch(input, init) {
537
+ throw new Error("Method not implemented.");
538
+ }
539
+ queueMicrotask(callback) {
540
+ throw new Error("Method not implemented.");
541
+ }
542
+ reportError(e) {
543
+ throw new Error("Method not implemented.");
544
+ }
545
+ structuredClone(value, options) {
546
+ throw new Error("Method not implemented.");
547
+ }
548
+ alert(_message) {
549
+ }
550
+ close() {
551
+ if (this._closed) return;
552
+ this._closed = true;
553
+ this._timers.forEach((id) => clearTimeout(id));
554
+ this._intervals.forEach((id) => clearInterval(id));
555
+ this._eventListeners.length = 0;
619
556
  }
620
- // Timer methods
621
557
  setTimeout(callback, delay, ...args) {
622
- return setTimeout(callback, delay, ...args);
558
+ const id = setTimeout(() => {
559
+ this._timers.delete(id);
560
+ callback(...args);
561
+ }, delay);
562
+ this._timers.add(id);
563
+ return id;
623
564
  }
624
565
  clearTimeout(id) {
625
566
  clearTimeout(id);
567
+ this._timers.delete(id);
626
568
  }
627
569
  setInterval(callback, delay, ...args) {
628
- return setInterval(callback, delay, ...args);
570
+ const id = setInterval(callback, delay, ...args);
571
+ this._intervals.add(id);
572
+ return id;
629
573
  }
630
574
  clearInterval(id) {
631
575
  clearInterval(id);
632
- }
633
- // Animation methods
634
- requestAnimationFrame(callback) {
635
- return this.setTimeout(callback, 16);
636
- }
637
- cancelAnimationFrame(id) {
638
- this.clearTimeout(id);
576
+ this._intervals.delete(id);
639
577
  }
640
578
  addEventListener(type, listener, options) {
641
- if (type === "popstate" || type === "load" || type === "unload" || type === "beforeunload") {
642
- this._eventListeners.push({
643
- type,
644
- listener: typeof listener === "function" ? listener : listener.handleEvent,
645
- options
646
- });
647
- }
579
+ this._eventListeners.push({
580
+ type,
581
+ listener: typeof listener === "function" ? listener : listener?.handleEvent,
582
+ options
583
+ });
648
584
  }
649
- removeEventListener(type, listener, options) {
650
- if (type === "popstate" || type === "load" || type === "unload" || type === "beforeunload") {
651
- const targetListener = typeof listener === "function" ? listener : listener.handleEvent;
652
- this._eventListeners = this._eventListeners.filter(
653
- (eventListener) => !(eventListener.type === type && eventListener.listener === targetListener)
654
- );
655
- }
585
+ removeEventListener(type, listener) {
586
+ const targetListener = typeof listener === "function" ? listener : listener?.handleEvent;
587
+ this._eventListeners = this._eventListeners.filter((l) => !(l.type === type && l.listener === targetListener));
656
588
  }
657
589
  dispatchEvent(event) {
658
- const eventListeners = this._eventListeners.filter((listener) => listener.type === event.type);
659
- for (const eventListener of eventListeners) {
590
+ const type = typeof event === "string" ? event : event.type;
591
+ const listeners = [...this._eventListeners.filter((l) => l.type === type)];
592
+ for (const l of listeners) {
660
593
  try {
661
- eventListener.listener.call(this, event);
662
- if (eventListener.options && typeof eventListener.options === "object" && eventListener.options.once) {
663
- this.removeEventListener(event.type, eventListener.listener);
594
+ l.listener.call(this, event);
595
+ if (l.options?.once) {
596
+ this.removeEventListener(type, l.listener);
664
597
  }
665
- } catch (error) {
666
- console.error("Error in event listener:", error);
598
+ } catch (e) {
599
+ console.error(`Error in Window event listener for ${type}:`, e);
667
600
  }
668
601
  }
669
602
  return true;
670
603
  }
671
- /**
672
- * Dispatch a popstate event to registered listeners
673
- */
674
604
  dispatchPopStateEvent(state, url) {
675
- const popStateEvent = {
676
- type: "popstate",
677
- state,
678
- url
679
- };
680
- this.dispatchEvent(popStateEvent);
681
- }
682
- atob(data) {
683
- return "";
684
- }
685
- btoa(data) {
686
- return "";
687
- }
688
- createImageBitmap(...args) {
689
- return Promise.resolve({});
690
- }
691
- fetch(input, init) {
692
- return Promise.resolve({});
693
- }
694
- queueMicrotask(callback) {
695
- }
696
- reportError(e) {
697
- }
698
- structuredClone(value, options) {
699
- return value;
700
- }
701
- /**
702
- * Recursive HTML parsing
703
- */
704
- parseHTMLRecursive(html, parent) {
705
- let position = 0;
706
- while (position < html.length) {
707
- const tagStart = html.indexOf("<", position);
708
- if (tagStart === -1) {
709
- const remainingText = html.substring(position).trim();
710
- if (remainingText) {
711
- const textNode = this.document.createTextNode(remainingText);
712
- parent.appendChild(textNode);
713
- }
714
- break;
715
- }
716
- if (tagStart > position) {
717
- const textContent = html.substring(position, tagStart).trim();
718
- if (textContent) {
719
- const textNode = this.document.createTextNode(textContent);
720
- parent.appendChild(textNode);
721
- }
722
- }
723
- const tagEnd = html.indexOf(">", tagStart);
724
- if (tagEnd === -1) break;
725
- const tagContent = html.substring(tagStart + 1, tagEnd);
726
- if (tagContent.startsWith("/")) {
727
- position = tagEnd + 1;
728
- break;
729
- }
730
- const isSelfClosing = tagContent.endsWith("/") || this.isSelfClosingTag(tagContent.split(/\s+/)[0]);
731
- const spaceIndex = tagContent.indexOf(" ");
732
- const tagName = spaceIndex === -1 ? tagContent.replace("/", "") : tagContent.substring(0, spaceIndex);
733
- const attributes = spaceIndex === -1 ? "" : tagContent.substring(spaceIndex + 1).replace("/", "");
734
- const element = this.document.createElement(tagName.toLowerCase());
735
- if (attributes.trim()) {
736
- this.parseAttributes(attributes, element);
737
- }
738
- if (tagName.toLowerCase() === "html") {
739
- this.document.documentElement = element;
740
- this.document.appendChild(element);
741
- } else if (tagName.toLowerCase() === "head") {
742
- this.document.head = element;
743
- if (this.document.documentElement) {
744
- this.document.documentElement.appendChild(element);
745
- } else {
746
- parent.appendChild(element);
747
- }
748
- } else if (tagName.toLowerCase() === "body") {
749
- this.document.body = element;
750
- if (this.document.documentElement) {
751
- this.document.documentElement.appendChild(element);
752
- } else {
753
- parent.appendChild(element);
754
- }
755
- } else {
756
- parent.appendChild(element);
757
- }
758
- if (isSelfClosing) {
759
- position = tagEnd + 1;
760
- } else {
761
- const closingTag = `</${tagName}>`;
762
- const closingTagIndex = this.findMatchingClosingTag(html, tagEnd + 1, tagName);
763
- if (closingTagIndex !== -1) {
764
- const innerContent = html.substring(tagEnd + 1, closingTagIndex);
765
- if (innerContent.trim()) {
766
- this.parseHTMLRecursive(innerContent, element);
767
- }
768
- position = closingTagIndex + closingTag.length;
769
- } else {
770
- position = tagEnd + 1;
771
- }
772
- }
773
- }
774
- }
775
- findMatchingClosingTag(html, startPos, tagName) {
776
- const openTag = `<${tagName}`;
777
- const closeTag = `</${tagName}>`;
778
- let depth = 1;
779
- let pos = startPos;
780
- while (pos < html.length && depth > 0) {
781
- const nextOpen = html.indexOf(openTag, pos);
782
- const nextClose = html.indexOf(closeTag, pos);
783
- if (nextClose === -1) return -1;
784
- if (nextOpen !== -1 && nextOpen < nextClose) {
785
- depth++;
786
- pos = nextOpen + openTag.length;
787
- } else {
788
- depth--;
789
- if (depth === 0) return nextClose;
790
- pos = nextClose + closeTag.length;
791
- }
792
- }
793
- return -1;
794
- }
795
- parseAttributes(attributeString, element) {
796
- const attrRegex = /([\w:-]+)(?:\s*=\s*(['"])(.*?)\2)?/g;
797
- let match;
798
- while ((match = attrRegex.exec(attributeString)) !== null) {
799
- const name = match[1];
800
- let value = match[3] || "";
801
- element.setAttribute(name, value);
802
- }
803
- }
804
- isSelfClosingTag(tagName) {
805
- const selfClosingTags = ["area", "base", "br", "col", "embed", "hr", "img", "input", "link", "meta", "param", "source", "track", "wbr"];
806
- return selfClosingTags.includes(tagName.toLowerCase());
807
- }
808
- /**
809
- * Clear current document content
810
- */
811
- clearDocumentContent() {
812
- const doc = this.document;
813
- if (doc.head) {
814
- while (doc.head.firstChild) {
815
- doc.head.removeChild(doc.head.firstChild);
816
- }
817
- }
818
- if (doc.body) {
819
- while (doc.body.firstChild) {
820
- doc.body.removeChild(doc.body.firstChild);
821
- }
822
- }
605
+ this.dispatchEvent({ type: "popstate", state, url });
823
606
  }
824
607
  }
825
608
  export {