@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
@@ -23,6 +23,13 @@ module.exports = __toCommonJS(DomParser_exports);
23
23
  var import_TextBase = require("./node/TextBase");
24
24
  var import_Comment = require("./node/Comment");
25
25
  var import_WindowBase = require("./window/WindowBase");
26
+ var import_ElementBase = require("./node/elements/ElementBase");
27
+ var import_ElementFactory = require("./factory/ElementFactory");
28
+ import_ElementBase.ElementBase.dependencies = {
29
+ ElementFactory: import_ElementFactory.ElementFactory,
30
+ TextBase: import_TextBase.TextBase,
31
+ Comment: import_Comment.Comment
32
+ };
26
33
  class DomParser {
27
34
  constructor(html, option) {
28
35
  const windowBase = new import_WindowBase.WindowBase({ initialUrl: option?.href });
@@ -85,7 +92,9 @@ class DomParser {
85
92
  throw new Error("DomParser has been destroyed");
86
93
  }
87
94
  if (!html.trim()) {
88
- return;
95
+ html = "<html><head></head><body></body></html>";
96
+ } else if (!/<html/i.test(html)) {
97
+ html = `<html><head></head><body>${html}</body></html>`;
89
98
  }
90
99
  this.parseHTMLString(html, this.document);
91
100
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/DomParser.ts"],
4
- "sourcesContent": ["import {DocumentBase} from './node/DocumentBase';\nimport {TextBase} from './node/TextBase';\nimport {Comment} from './node/Comment';\nimport {WindowBase} from './window/WindowBase';\n\nexport interface DomParserOptions {\n href?: string;\n}\n\nexport class DomParser {\n private _window: Window | null;\n private _document: Document | null;\n\n constructor(html: string, option?: DomParserOptions) {\n // Create WindowBase instance with the document\n const windowBase = new WindowBase({initialUrl: option?.href});\n this._window = windowBase as unknown as Window;\n this._document = windowBase.document as any;\n\n // Parse the provided HTML string\n this.parseHTML(html);\n\n // Set up document references after parsing\n this.setupDocumentReferences();\n\n // Simulate document loading process\n if (this._document && (this._document as any).simulateLoading) {\n (this._document as any).simulateLoading();\n }\n }\n\n get window(): Window {\n if (!this._window) {\n throw new Error('DomParser has been destroyed');\n }\n return this._window;\n }\n\n get document(): Document {\n if (!this._document) {\n throw new Error('DomParser has been destroyed');\n }\n return this._document;\n }\n\n /**\n * Destroy the DomParser instance and free memory\n */\n destroy(): void {\n if (this._window) {\n this._window.close();\n this._window = null;\n }\n \n this._document = null;\n }\n\n /**\n * Load new HTML content and replace the current document\n */\n loadHTML(html: string): void {\n if (!this._document) {\n throw new Error('DomParser has been destroyed');\n }\n \n // Clear current document content\n this.clearDocument();\n\n // Parse new HTML\n this.parseHTML(html);\n\n // Set up document references after parsing\n this.setupDocumentReferences();\n }\n\n private clearDocument(): void {\n if (!this._document) return;\n \n // Clear document body and head content while preserving structure\n if (this._document.head) {\n while (this._document.head.firstChild) {\n this._document.head.removeChild(this._document.head.firstChild);\n }\n }\n\n if (this._document.body) {\n while (this._document.body.firstChild) {\n this._document.body.removeChild(this._document.body.firstChild);\n }\n }\n }\n\n parseHTML(html: string): void {\n if (!this._document) {\n throw new Error('DomParser has been destroyed');\n }\n // Simple HTML parsing implementation\n if (!html.trim()) {\n return;\n }\n\n // Basic HTML parsing - this is a simplified version\n // In a real implementation, you'd use a proper HTML parser\n this.parseHTMLString(html, this.document);\n }\n\n private parseHTMLString(html: string, parent: any): void {\n // Remove DOCTYPE if present\n html = html.replace(/<!DOCTYPE[^>]*>/i, '').trim();\n\n if (!html) return;\n\n // Handle template tags specially\n const templateRegex = /<template([^>]*)>(.*?)<\\/template>/gs;\n html = html.replace(templateRegex, (match, attributes, content) => {\n const element = this.document.createElement('template');\n\n // Parse attributes\n if (attributes.trim()) {\n this.parseAttributes(attributes, element);\n }\n\n // Parse content directly into the template's content fragment\n if (content.trim()) {\n // Use internal method to avoid appendChild side effects\n this.parseHTMLString(content.trim(), element.content);\n }\n\n parent.appendChild(element);\n return ''; // Remove from HTML string\n });\n\n // Improved HTML parsing with proper nesting support\n this.parseHTMLRecursive(html, parent);\n }\n\n private parseHTMLRecursive(html: string, parent: any): void {\n let position = 0;\n\n while (position < html.length) {\n // Find next tag or comment\n const tagStart = html.indexOf('<', position);\n\n if (tagStart === -1) {\n // No more tags, add remaining text if any\n const remainingText = html.substring(position).trim();\n if (remainingText) {\n const textNode = new TextBase(remainingText, this.document);\n parent.appendChild(textNode);\n }\n break;\n }\n\n // Add text before tag if any\n if (tagStart > position) {\n const textContent = html.substring(position, tagStart).trim();\n if (textContent) {\n const textNode = new TextBase(textContent, this.document);\n parent.appendChild(textNode);\n }\n }\n\n // Check if this is a comment\n if (html.substring(tagStart, tagStart + 4) === '<!--') {\n const commentEnd = html.indexOf('-->', tagStart + 4);\n if (commentEnd !== -1) {\n const commentContent = html.substring(tagStart + 4, commentEnd);\n const commentNode = new Comment(commentContent, this.document);\n parent.appendChild(commentNode);\n position = commentEnd + 3;\n continue;\n } else {\n // Malformed comment, treat as text\n const textNode = new TextBase(html.substring(tagStart, tagStart + 4), this.document);\n parent.appendChild(textNode);\n position = tagStart + 4;\n continue;\n }\n }\n\n // Find tag end\n const tagEnd = html.indexOf('>', tagStart);\n if (tagEnd === -1) break;\n\n const tagContent = html.substring(tagStart + 1, tagEnd);\n\n // Check if it's a closing tag\n if (tagContent.startsWith('/')) {\n // This is a closing tag, we should return to parent\n position = tagEnd + 1;\n break;\n }\n\n // Check if it's a self-closing tag\n const isSelfClosing = tagContent.endsWith('/') || this.isSelfClosingTag(tagContent.split(/\\s+/)[0]);\n\n // Parse tag name and attributes\n const spaceIndex = tagContent.indexOf(' ');\n const tagName = spaceIndex === -1 ? tagContent.replace('/', '') : tagContent.substring(0, spaceIndex);\n let attributes = spaceIndex === -1 ? '' : tagContent.substring(spaceIndex + 1);\n\n // Only remove trailing slash for self-closing tags (not from attribute values)\n if (attributes.endsWith('/')) {\n attributes = attributes.slice(0, -1).trim();\n }\n\n\n // Create element\n const element = this.document.createElement(tagName.toLowerCase());\n\n\n // Parse attributes\n if (attributes.trim()) {\n this.parseAttributes(attributes, element);\n }\n\n parent.appendChild(element);\n\n if (isSelfClosing) {\n position = tagEnd + 1;\n } else {\n // Find matching closing tag and parse content\n const closingTag = `</${tagName}>`;\n const closingTagIndex = this.findMatchingClosingTag(html, tagEnd + 1, tagName);\n\n if (closingTagIndex !== -1) {\n const innerContent = html.substring(tagEnd + 1, closingTagIndex);\n if (innerContent.trim()) {\n this.parseHTMLRecursive(innerContent, element);\n }\n position = closingTagIndex + closingTag.length;\n } else {\n // No matching closing tag found, treat as self-closing\n position = tagEnd + 1;\n }\n }\n }\n }\n\n private findMatchingClosingTag(html: string, startPos: number, tagName: string): number {\n const openTag = `<${tagName}`;\n const closeTag = `</${tagName}>`;\n let depth = 1;\n let pos = startPos;\n\n while (pos < html.length && depth > 0) {\n const nextOpen = html.indexOf(openTag, pos);\n const nextClose = html.indexOf(closeTag, pos);\n\n if (nextClose === -1) {\n // No more closing tags\n return -1;\n }\n\n if (nextOpen !== -1 && nextOpen < nextClose) {\n // Found another opening tag before the closing tag\n depth++;\n pos = nextOpen + openTag.length;\n } else {\n // Found a closing tag\n depth--;\n if (depth === 0) {\n return nextClose;\n }\n pos = nextClose + closeTag.length;\n }\n }\n\n return -1;\n }\n\n private parseAttributes(attributeString: string, element: any): void {\n // Improved attribute parsing that handles complex JavaScript expressions\n let position = 0;\n const length = attributeString.length;\n\n while (position < length) {\n // Skip whitespace\n while (position < length && /\\s/.test(attributeString[position])) {\n position++;\n }\n\n if (position >= length) break;\n\n // Find attribute name\n const nameStart = position;\n while (position < length && /[\\w:-]/.test(attributeString[position])) {\n position++;\n }\n\n if (position === nameStart) {\n // Invalid character, skip it\n position++;\n continue;\n }\n\n const name = attributeString.substring(nameStart, position);\n\n // Skip whitespace\n while (position < length && /\\s/.test(attributeString[position])) {\n position++;\n }\n\n let value = '';\n\n // Check if there's an equals sign\n if (position < length && attributeString[position] === '=') {\n position++; // Skip '='\n\n // Skip whitespace\n while (position < length && /\\s/.test(attributeString[position])) {\n position++;\n }\n\n if (position < length) {\n const quote = attributeString[position];\n\n if (quote === '\"' || quote === \"'\") {\n // Quoted value - find matching closing quote\n position++; // Skip opening quote\n const valueStart = position;\n\n while (position < length && attributeString[position] !== quote) {\n position++;\n }\n\n value = attributeString.substring(valueStart, position);\n\n if (position < length && attributeString[position] === quote) {\n position++; // Skip closing quote\n }\n } else {\n // Unquoted value - read until whitespace or end\n const valueStart = position;\n while (position < length && !/\\s/.test(attributeString[position])) {\n position++;\n }\n value = attributeString.substring(valueStart, position);\n }\n }\n }\n\n // Decode HTML entities in attribute values\n value = this.decodeHTMLEntities(value);\n\n element.setAttribute(name, value);\n }\n }\n\n /**\n * Decode HTML entities in a string\n */\n private decodeHTMLEntities(str: string): string {\n const entityMap: { [key: string]: string } = {\n '&amp;': '&',\n '&lt;': '<',\n '&gt;': '>',\n '&quot;': '\"',\n '&#39;': \"'\",\n '&#34;': '\"',\n '&apos;': \"'\",\n '&copy;': '\u00A9',\n '&reg;': '\u00AE',\n '&trade;': '\u2122',\n '&nbsp;': ' ',\n '&hellip;': '\u2026',\n '&mdash;': '\u2014',\n '&ndash;': '\u2013',\n '&lsquo;': '\\u2018',\n '&rsquo;': '\\u2019',\n '&ldquo;': '\"',\n '&rdquo;': '\"'\n };\n\n return str.replace(/&[a-zA-Z0-9#]+;/g, (entity) => {\n // Handle named entities\n if (entityMap[entity]) {\n return entityMap[entity];\n }\n\n // Handle numeric entities like &#39; &#34;\n if (entity.startsWith('&#') && entity.endsWith(';')) {\n const numStr = entity.slice(2, -1);\n const num = parseInt(numStr, 10);\n if (!isNaN(num)) {\n return String.fromCharCode(num);\n }\n }\n\n // Handle hex entities like &#x27;\n if (entity.startsWith('&#x') && entity.endsWith(';')) {\n const hexStr = entity.slice(3, -1);\n const num = parseInt(hexStr, 16);\n if (!isNaN(num)) {\n return String.fromCharCode(num);\n }\n }\n\n // Return original if not recognized\n return entity;\n });\n }\n\n private isSelfClosingTag(tagName: string): boolean {\n const selfClosingTags = ['area', 'base', 'br', 'col', 'embed', 'hr', 'img', 'input', 'link', 'meta', 'param', 'source', 'track', 'wbr'];\n return selfClosingTags.includes(tagName.toLowerCase());\n }\n\n /**\n * Set up document references after HTML parsing\n */\n private setupDocumentReferences(): void {\n // Find HTML, HEAD, and BODY elements\n const allHtmlElements = this.document.querySelectorAll('html');\n const allHeadElements = this.document.querySelectorAll('head');\n const allBodyElements = this.document.querySelectorAll('body');\n\n // Choose the HTML element with content, then attributes, then first one\n let htmlElement = null;\n // First priority: HTML with attributes (lang, data-theme \uB4F1)\n for (let i = 0; i < allHtmlElements.length; i++) {\n const html = allHtmlElements[i];\n if (html.attributes.length > 0) {\n htmlElement = html;\n break;\n }\n }\n // Second priority: HTML with child nodes (content)\n if (!htmlElement) {\n for (let i = 0; i < allHtmlElements.length; i++) {\n const html = allHtmlElements[i];\n if (html.childNodes.length > 0) {\n htmlElement = html;\n break;\n }\n }\n }\n // Last resort: first HTML\n if (!htmlElement && allHtmlElements.length > 0) {\n htmlElement = allHtmlElements[0];\n }\n\n // Choose the HEAD element with content, then attributes, then first one\n let headElement = null;\n // First priority: HEAD with child nodes (content)\n for (let i = 0; i < allHeadElements.length; i++) {\n const head = allHeadElements[i];\n if (head.childNodes.length > 0) {\n headElement = head;\n break;\n }\n }\n // Second priority: HEAD with attributes\n if (!headElement) {\n for (let i = 0; i < allHeadElements.length; i++) {\n const head = allHeadElements[i];\n if (head.attributes.length > 0) {\n headElement = head;\n break;\n }\n }\n }\n // Last resort: first HEAD\n if (!headElement && allHeadElements.length > 0) {\n headElement = allHeadElements[0];\n }\n\n // Choose the BODY element with content, then attributes, then first one\n let bodyElement = null;\n\n\n // First priority: BODY with child nodes (content)\n for (let i = 0; i < allBodyElements.length; i++) {\n const body = allBodyElements[i];\n if (body.childNodes.length > 0) {\n bodyElement = body;\n break;\n }\n }\n\n // Second priority: BODY with attributes\n if (!bodyElement) {\n for (let i = 0; i < allBodyElements.length; i++) {\n const body = allBodyElements[i];\n if (body.attributes.length > 0) {\n bodyElement = body;\n break;\n }\n }\n }\n\n // Last resort: first BODY\n if (!bodyElement && allBodyElements.length > 0) {\n bodyElement = allBodyElements[0];\n }\n\n\n // For now, just use the elements as they are parsed\n // TODO: Implement proper DOM structure reorganization later\n\n // Set document references\n if (htmlElement) {\n (this.document as any).documentElement = htmlElement;\n }\n if (headElement) {\n (this.document as any).head = headElement;\n }\n if (bodyElement) {\n (this.document as any).body = bodyElement;\n }\n }\n}"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { DocumentBase } from './node/DocumentBase';\nimport { TextBase } from './node/TextBase';\nimport { Comment } from './node/Comment';\nimport { WindowBase } from './window/WindowBase';\nimport { ElementBase } from './node/elements/ElementBase';\nimport { ElementFactory } from './factory/ElementFactory';\n\n// Inject dependencies into ElementBase to break circular references\n// without using 'require' or 'global' injection magic.\nElementBase.dependencies = {\n ElementFactory,\n TextBase,\n Comment\n};\n\nexport interface DomParserOptions {\n href?: string;\n}\n\nexport class DomParser {\n private _window: Window | null;\n private _document: Document | null;\n\n constructor(html: string, option?: DomParserOptions) {\n // Create WindowBase instance with the document\n const windowBase = new WindowBase({ initialUrl: option?.href });\n this._window = windowBase as unknown as Window;\n this._document = windowBase.document as any;\n\n // Parse the provided HTML string\n this.parseHTML(html);\n\n // Set up document references after parsing\n this.setupDocumentReferences();\n\n // Simulate document loading process\n if (this._document && (this._document as any).simulateLoading) {\n (this._document as any).simulateLoading();\n }\n }\n\n get window(): Window {\n if (!this._window) {\n throw new Error('DomParser has been destroyed');\n }\n return this._window;\n }\n\n get document(): Document {\n if (!this._document) {\n throw new Error('DomParser has been destroyed');\n }\n return this._document;\n }\n\n /**\n * Destroy the DomParser instance and free memory\n */\n destroy(): void {\n if (this._window) {\n this._window.close();\n this._window = null;\n }\n\n this._document = null;\n }\n\n /**\n * Load new HTML content and replace the current document\n */\n loadHTML(html: string): void {\n if (!this._document) {\n throw new Error('DomParser has been destroyed');\n }\n\n // Clear current document content\n this.clearDocument();\n\n // Parse new HTML\n this.parseHTML(html);\n\n // Set up document references after parsing\n this.setupDocumentReferences();\n }\n\n private clearDocument(): void {\n if (!this._document) return;\n\n // Clear document body and head content while preserving structure\n if (this._document.head) {\n while (this._document.head.firstChild) {\n this._document.head.removeChild(this._document.head.firstChild);\n }\n }\n\n if (this._document.body) {\n while (this._document.body.firstChild) {\n this._document.body.removeChild(this._document.body.firstChild);\n }\n }\n }\n\n parseHTML(html: string): void {\n if (!this._document) {\n throw new Error('DomParser has been destroyed');\n }\n\n // Ensure basic HTML structure if input is empty or lacks it\n if (!html.trim()) {\n html = '<html><head></head><body></body></html>';\n } else if (!/<html/i.test(html)) {\n // If it's just a fragment, we still need html/head/body for a full document\n // but only if it's not explicitly intended to be a fragment?\n // Actually, standard DOMParser.parseFromString always creates them.\n html = `<html><head></head><body>${html}</body></html>`;\n }\n\n // Basic HTML parsing - this is a simplified version\n this.parseHTMLString(html, this.document);\n }\n\n private parseHTMLString(html: string, parent: any): void {\n // Remove DOCTYPE if present\n html = html.replace(/<!DOCTYPE[^>]*>/i, '').trim();\n\n if (!html) return;\n\n // Handle template tags specially\n const templateRegex = /<template([^>]*)>(.*?)<\\/template>/gs;\n html = html.replace(templateRegex, (match, attributes, content) => {\n const element = this.document.createElement('template');\n\n // Parse attributes\n if (attributes.trim()) {\n this.parseAttributes(attributes, element);\n }\n\n // Parse content directly into the template's content fragment\n if (content.trim()) {\n // Use internal method to avoid appendChild side effects\n this.parseHTMLString(content.trim(), element.content);\n }\n\n parent.appendChild(element);\n return ''; // Remove from HTML string\n });\n\n // Improved HTML parsing with proper nesting support\n this.parseHTMLRecursive(html, parent);\n }\n\n private parseHTMLRecursive(html: string, parent: any): void {\n let position = 0;\n\n while (position < html.length) {\n // Find next tag or comment\n const tagStart = html.indexOf('<', position);\n\n if (tagStart === -1) {\n // No more tags, add remaining text if any\n const remainingText = html.substring(position).trim();\n if (remainingText) {\n const textNode = new TextBase(remainingText, this.document);\n parent.appendChild(textNode);\n }\n break;\n }\n\n // Add text before tag if any\n if (tagStart > position) {\n const textContent = html.substring(position, tagStart).trim();\n if (textContent) {\n const textNode = new TextBase(textContent, this.document);\n parent.appendChild(textNode);\n }\n }\n\n // Check if this is a comment\n if (html.substring(tagStart, tagStart + 4) === '<!--') {\n const commentEnd = html.indexOf('-->', tagStart + 4);\n if (commentEnd !== -1) {\n const commentContent = html.substring(tagStart + 4, commentEnd);\n const commentNode = new Comment(commentContent, this.document);\n parent.appendChild(commentNode);\n position = commentEnd + 3;\n continue;\n } else {\n // Malformed comment, treat as text\n const textNode = new TextBase(html.substring(tagStart, tagStart + 4), this.document);\n parent.appendChild(textNode);\n position = tagStart + 4;\n continue;\n }\n }\n\n // Find tag end\n const tagEnd = html.indexOf('>', tagStart);\n if (tagEnd === -1) break;\n\n const tagContent = html.substring(tagStart + 1, tagEnd);\n\n // Check if it's a closing tag\n if (tagContent.startsWith('/')) {\n // This is a closing tag, we should return to parent\n position = tagEnd + 1;\n break;\n }\n\n // Check if it's a self-closing tag\n const isSelfClosing = tagContent.endsWith('/') || this.isSelfClosingTag(tagContent.split(/\\s+/)[0]);\n\n // Parse tag name and attributes\n const spaceIndex = tagContent.indexOf(' ');\n const tagName = spaceIndex === -1 ? tagContent.replace('/', '') : tagContent.substring(0, spaceIndex);\n let attributes = spaceIndex === -1 ? '' : tagContent.substring(spaceIndex + 1);\n\n // Only remove trailing slash for self-closing tags (not from attribute values)\n if (attributes.endsWith('/')) {\n attributes = attributes.slice(0, -1).trim();\n }\n\n // Create element\n const element = this.document.createElement(tagName.toLowerCase());\n\n // Parse attributes\n if (attributes.trim()) {\n this.parseAttributes(attributes, element);\n }\n\n parent.appendChild(element);\n\n if (isSelfClosing) {\n position = tagEnd + 1;\n } else {\n // Find matching closing tag and parse content\n const closingTag = `</${tagName}>`;\n const closingTagIndex = this.findMatchingClosingTag(html, tagEnd + 1, tagName);\n\n if (closingTagIndex !== -1) {\n const innerContent = html.substring(tagEnd + 1, closingTagIndex);\n if (innerContent.trim()) {\n this.parseHTMLRecursive(innerContent, element);\n }\n position = closingTagIndex + closingTag.length;\n } else {\n // No matching closing tag found, treat as self-closing\n position = tagEnd + 1;\n }\n }\n }\n }\n\n private findMatchingClosingTag(html: string, startPos: number, tagName: string): number {\n const openTag = `<${tagName}`;\n const closeTag = `</${tagName}>`;\n let depth = 1;\n let pos = startPos;\n\n while (pos < html.length && depth > 0) {\n const nextOpen = html.indexOf(openTag, pos);\n const nextClose = html.indexOf(closeTag, pos);\n\n if (nextClose === -1) {\n // No more closing tags\n return -1;\n }\n\n if (nextOpen !== -1 && nextOpen < nextClose) {\n // Found another opening tag before the closing tag\n depth++;\n pos = nextOpen + openTag.length;\n } else {\n // Found a closing tag\n depth--;\n if (depth === 0) {\n return nextClose;\n }\n pos = nextClose + closeTag.length;\n }\n }\n\n return -1;\n }\n\n private parseAttributes(attributeString: string, element: any): void {\n // Improved attribute parsing that handles complex JavaScript expressions\n let position = 0;\n const length = attributeString.length;\n\n while (position < length) {\n // Skip whitespace\n while (position < length && /\\s/.test(attributeString[position])) {\n position++;\n }\n\n if (position >= length) break;\n\n // Find attribute name\n const nameStart = position;\n while (position < length && /[\\w:-]/.test(attributeString[position])) {\n position++;\n }\n\n if (position === nameStart) {\n // Invalid character, skip it\n position++;\n continue;\n }\n\n const name = attributeString.substring(nameStart, position);\n\n // Skip whitespace\n while (position < length && /\\s/.test(attributeString[position])) {\n position++;\n }\n\n let value = '';\n\n // Check if there's an equals sign\n if (position < length && attributeString[position] === '=') {\n position++; // Skip '='\n\n // Skip whitespace\n while (position < length && /\\s/.test(attributeString[position])) {\n position++;\n }\n\n if (position < length) {\n const quote = attributeString[position];\n\n if (quote === '\"' || quote === \"'\") {\n // Quoted value - find matching closing quote\n position++; // Skip opening quote\n const valueStart = position;\n\n while (position < length && attributeString[position] !== quote) {\n position++;\n }\n\n value = attributeString.substring(valueStart, position);\n\n if (position < length && attributeString[position] === quote) {\n position++; // Skip closing quote\n }\n } else {\n // Unquoted value - read until whitespace or end\n const valueStart = position;\n while (position < length && !/\\s/.test(attributeString[position])) {\n position++;\n }\n value = attributeString.substring(valueStart, position);\n }\n }\n }\n\n // Decode HTML entities in attribute values\n value = this.decodeHTMLEntities(value);\n\n element.setAttribute(name, value);\n }\n }\n\n /**\n * Decode HTML entities in a string\n */\n private decodeHTMLEntities(str: string): string {\n const entityMap: { [key: string]: string } = {\n '&amp;': '&',\n '&lt;': '<',\n '&gt;': '>',\n '&quot;': '\"',\n '&#39;': \"'\",\n '&#34;': '\"',\n '&apos;': \"'\",\n '&copy;': '\u00A9',\n '&reg;': '\u00AE',\n '&trade;': '\u2122',\n '&nbsp;': ' ',\n '&hellip;': '\u2026',\n '&mdash;': '\u2014',\n '&ndash;': '\u2013',\n '&lsquo;': '\\u2018',\n '&rsquo;': '\\u2019',\n '&ldquo;': '\"',\n '&rdquo;': '\"'\n };\n\n return str.replace(/&[a-zA-Z0-9#]+;/g, entity => {\n // Handle named entities\n if (entityMap[entity]) {\n return entityMap[entity];\n }\n\n // Handle numeric entities like &#39; &#34;\n if (entity.startsWith('&#') && entity.endsWith(';')) {\n const numStr = entity.slice(2, -1);\n const num = parseInt(numStr, 10);\n if (!isNaN(num)) {\n return String.fromCharCode(num);\n }\n }\n\n // Handle hex entities like &#x27;\n if (entity.startsWith('&#x') && entity.endsWith(';')) {\n const hexStr = entity.slice(3, -1);\n const num = parseInt(hexStr, 16);\n if (!isNaN(num)) {\n return String.fromCharCode(num);\n }\n }\n\n // Return original if not recognized\n return entity;\n });\n }\n\n private isSelfClosingTag(tagName: string): boolean {\n const selfClosingTags = ['area', 'base', 'br', 'col', 'embed', 'hr', 'img', 'input', 'link', 'meta', 'param', 'source', 'track', 'wbr'];\n return selfClosingTags.includes(tagName.toLowerCase());\n }\n\n /**\n * Set up document references after HTML parsing\n */\n private setupDocumentReferences(): void {\n // Find HTML, HEAD, and BODY elements\n const allHtmlElements = this.document.querySelectorAll('html');\n const allHeadElements = this.document.querySelectorAll('head');\n const allBodyElements = this.document.querySelectorAll('body');\n\n // Choose the HTML element with content, then attributes, then first one\n let htmlElement = null;\n // First priority: HTML with attributes (lang, data-theme \uB4F1)\n for (let i = 0; i < allHtmlElements.length; i++) {\n const html = allHtmlElements[i];\n if (html.attributes.length > 0) {\n htmlElement = html;\n break;\n }\n }\n // Second priority: HTML with child nodes (content)\n if (!htmlElement) {\n for (let i = 0; i < allHtmlElements.length; i++) {\n const html = allHtmlElements[i];\n if (html.childNodes.length > 0) {\n htmlElement = html;\n break;\n }\n }\n }\n // Last resort: first HTML\n if (!htmlElement && allHtmlElements.length > 0) {\n htmlElement = allHtmlElements[0];\n }\n\n // Choose the HEAD element with content, then attributes, then first one\n let headElement = null;\n // First priority: HEAD with child nodes (content)\n for (let i = 0; i < allHeadElements.length; i++) {\n const head = allHeadElements[i];\n if (head.childNodes.length > 0) {\n headElement = head;\n break;\n }\n }\n // Second priority: HEAD with attributes\n if (!headElement) {\n for (let i = 0; i < allHeadElements.length; i++) {\n const head = allHeadElements[i];\n if (head.attributes.length > 0) {\n headElement = head;\n break;\n }\n }\n }\n // Last resort: first HEAD\n if (!headElement && allHeadElements.length > 0) {\n headElement = allHeadElements[0];\n }\n\n // Choose the BODY element with content, then attributes, then first one\n let bodyElement = null;\n\n // First priority: BODY with child nodes (content)\n for (let i = 0; i < allBodyElements.length; i++) {\n const body = allBodyElements[i];\n if (body.childNodes.length > 0) {\n bodyElement = body;\n break;\n }\n }\n\n // Second priority: BODY with attributes\n if (!bodyElement) {\n for (let i = 0; i < allBodyElements.length; i++) {\n const body = allBodyElements[i];\n if (body.attributes.length > 0) {\n bodyElement = body;\n break;\n }\n }\n }\n\n // Last resort: first BODY\n if (!bodyElement && allBodyElements.length > 0) {\n bodyElement = allBodyElements[0];\n }\n\n // Set document references\n if (htmlElement) {\n (this.document as any).documentElement = htmlElement;\n }\n if (headElement) {\n (this.document as any).head = headElement;\n }\n if (bodyElement) {\n (this.document as any).body = bodyElement;\n }\n }\n}\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -25,8 +25,33 @@ class ElementFactory {
25
25
  /**
26
26
  * Creates an HTML element based on the tag name
27
27
  */
28
- static createElement(tagName, ownerDocument) {
28
+ static createElement(tagName, ownerDocument, options) {
29
29
  const normalizedTagName = tagName.toLowerCase();
30
+ const customElements = ownerDocument?.defaultView?.customElements;
31
+ const isAttribute = typeof options === "string" ? options : options?.is;
32
+ if (isAttribute && customElements && typeof customElements.get === "function") {
33
+ const CustomElementClass = customElements.get(isAttribute);
34
+ if (CustomElementClass) {
35
+ const element = new CustomElementClass();
36
+ element._tagName = tagName.toUpperCase();
37
+ element.nodeName = tagName.toUpperCase();
38
+ element._ownerDocument = ownerDocument;
39
+ if (element.setAttribute) {
40
+ element.setAttribute("is", isAttribute);
41
+ }
42
+ return element;
43
+ }
44
+ }
45
+ if (normalizedTagName.includes("-") && customElements && typeof customElements.get === "function") {
46
+ const CustomElementClass = customElements.get(normalizedTagName);
47
+ if (CustomElementClass) {
48
+ const element = new CustomElementClass();
49
+ element._tagName = tagName.toUpperCase();
50
+ element.nodeName = tagName.toUpperCase();
51
+ element._ownerDocument = ownerDocument;
52
+ return element;
53
+ }
54
+ }
30
55
  for (const [tag, ElementClass] of Object.entries(import_elements.htmlElements)) {
31
56
  if (tag === normalizedTagName) {
32
57
  return new ElementClass(tagName.toUpperCase(), ownerDocument);
@@ -66,11 +91,7 @@ class ElementFactory {
66
91
  * Get all supported tag names
67
92
  */
68
93
  static getSupportedTagNames() {
69
- return [
70
- ...ElementFactory.getSupportedHTMLTagNames(),
71
- ...ElementFactory.getSupportedSVGTagNames(),
72
- ...ElementFactory.getSupportedMathMLTagNames()
73
- ];
94
+ return [...ElementFactory.getSupportedHTMLTagNames(), ...ElementFactory.getSupportedSVGTagNames(), ...ElementFactory.getSupportedMathMLTagNames()];
74
95
  }
75
96
  }
76
97
  //# sourceMappingURL=ElementFactory.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/factory/ElementFactory.ts"],
4
- "sourcesContent": ["import { HTMLElementBase, HTMLGenericElement, htmlElements, svgElements, mathmlElements } from '../node/elements';\n\n/**\n * Factory for creating HTML elements based on tag names\n */\nexport class ElementFactory {\n /**\n * Creates an HTML element based on the tag name\n */\n static createElement(tagName: string, ownerDocument?: any): HTMLElementBase {\n const normalizedTagName = tagName.toLowerCase();\n \n // Check HTML elements\n for (const [tag, ElementClass] of Object.entries(htmlElements)) {\n if (tag === normalizedTagName) {\n return new ElementClass(tagName.toUpperCase(), ownerDocument) as HTMLElementBase;\n }\n }\n \n // Check SVG elements\n for (const [tag, ElementClass] of Object.entries(svgElements)) {\n if (tag === normalizedTagName) {\n return new ElementClass(tagName.toUpperCase(), ownerDocument) as HTMLElementBase;\n }\n }\n \n // Check MathML elements\n for (const [tag, ElementClass] of Object.entries(mathmlElements)) {\n if (tag === normalizedTagName) {\n return new ElementClass(tagName.toUpperCase(), ownerDocument) as HTMLElementBase;\n }\n }\n \n // For unknown elements, create a generic HTMLElement\n return new HTMLGenericElement(tagName.toUpperCase(), ownerDocument);\n }\n\n /**\n * Get all supported HTML tag names\n */\n static getSupportedHTMLTagNames(): string[] {\n return Object.keys(htmlElements);\n }\n\n /**\n * Get all supported SVG tag names\n */\n static getSupportedSVGTagNames(): string[] {\n return Object.keys(svgElements);\n }\n\n /**\n * Get all supported MathML tag names\n */\n static getSupportedMathMLTagNames(): string[] {\n return Object.keys(mathmlElements);\n }\n\n /**\n * Get all supported tag names\n */\n static getSupportedTagNames(): string[] {\n return [\n ...ElementFactory.getSupportedHTMLTagNames(),\n ...ElementFactory.getSupportedSVGTagNames(),\n ...ElementFactory.getSupportedMathMLTagNames()\n ];\n }\n}"],
5
- "mappings": ";;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sBAA+F;AAKxF,MAAM,eAAe;AAAA;AAAA;AAAA;AAAA,EAIxB,OAAO,cAAc,SAAiB,eAAsC;AACxE,UAAM,oBAAoB,QAAQ,YAAY;AAG9C,eAAW,CAAC,KAAK,YAAY,KAAK,OAAO,QAAQ,4BAAY,GAAG;AAC5D,UAAI,QAAQ,mBAAmB;AAC3B,eAAO,IAAI,aAAa,QAAQ,YAAY,GAAG,aAAa;AAAA,MAChE;AAAA,IACJ;AAGA,eAAW,CAAC,KAAK,YAAY,KAAK,OAAO,QAAQ,2BAAW,GAAG;AAC3D,UAAI,QAAQ,mBAAmB;AAC3B,eAAO,IAAI,aAAa,QAAQ,YAAY,GAAG,aAAa;AAAA,MAChE;AAAA,IACJ;AAGA,eAAW,CAAC,KAAK,YAAY,KAAK,OAAO,QAAQ,8BAAc,GAAG;AAC9D,UAAI,QAAQ,mBAAmB;AAC3B,eAAO,IAAI,aAAa,QAAQ,YAAY,GAAG,aAAa;AAAA,MAChE;AAAA,IACJ;AAGA,WAAO,IAAI,mCAAmB,QAAQ,YAAY,GAAG,aAAa;AAAA,EACtE;AAAA;AAAA;AAAA;AAAA,EAKA,OAAO,2BAAqC;AACxC,WAAO,OAAO,KAAK,4BAAY;AAAA,EACnC;AAAA;AAAA;AAAA;AAAA,EAKA,OAAO,0BAAoC;AACvC,WAAO,OAAO,KAAK,2BAAW;AAAA,EAClC;AAAA;AAAA;AAAA;AAAA,EAKA,OAAO,6BAAuC;AAC1C,WAAO,OAAO,KAAK,8BAAc;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA,EAKA,OAAO,uBAAiC;AACpC,WAAO;AAAA,MACH,GAAG,eAAe,yBAAyB;AAAA,MAC3C,GAAG,eAAe,wBAAwB;AAAA,MAC1C,GAAG,eAAe,2BAA2B;AAAA,IACjD;AAAA,EACJ;AACJ;",
4
+ "sourcesContent": ["import { HTMLElementBase, HTMLGenericElement, htmlElements, svgElements, mathmlElements } from '../node/elements';\n\n/**\n * Factory for creating HTML elements based on tag names\n */\nexport class ElementFactory {\n /**\n * Creates an HTML element based on the tag name\n */\n static createElement(tagName: string, ownerDocument?: any, options?: any): HTMLElementBase {\n const normalizedTagName = tagName.toLowerCase();\n const customElements = (ownerDocument as any)?.defaultView?.customElements;\n\n // 1. Check for Customized Built-in Elements (is=\"\")\n const isAttribute = typeof options === 'string' ? options : options?.is;\n if (isAttribute && customElements && typeof customElements.get === 'function') {\n const CustomElementClass = customElements.get(isAttribute);\n if (CustomElementClass) {\n const element = new CustomElementClass() as any;\n element._tagName = tagName.toUpperCase();\n element.nodeName = tagName.toUpperCase();\n element._ownerDocument = ownerDocument;\n if (element.setAttribute) {\n element.setAttribute('is', isAttribute);\n }\n return element;\n }\n }\n\n // 2. Check for Autonomous Custom Elements\n if (normalizedTagName.includes('-') && customElements && typeof customElements.get === 'function') {\n const CustomElementClass = customElements.get(normalizedTagName);\n if (CustomElementClass) {\n const element = new CustomElementClass() as any;\n element._tagName = tagName.toUpperCase();\n element.nodeName = tagName.toUpperCase();\n element._ownerDocument = ownerDocument;\n return element;\n }\n }\n\n // 3. Check HTML elements\n\n for (const [tag, ElementClass] of Object.entries(htmlElements)) {\n if (tag === normalizedTagName) {\n return new ElementClass(tagName.toUpperCase(), ownerDocument) as HTMLElementBase;\n }\n }\n\n // Check SVG elements\n for (const [tag, ElementClass] of Object.entries(svgElements)) {\n if (tag === normalizedTagName) {\n return new ElementClass(tagName.toUpperCase(), ownerDocument) as HTMLElementBase;\n }\n }\n\n // Check MathML elements\n for (const [tag, ElementClass] of Object.entries(mathmlElements)) {\n if (tag === normalizedTagName) {\n return new ElementClass(tagName.toUpperCase(), ownerDocument) as HTMLElementBase;\n }\n }\n\n // For unknown elements, create a generic HTMLElement\n return new HTMLGenericElement(tagName.toUpperCase(), ownerDocument);\n }\n\n /**\n * Get all supported HTML tag names\n */\n static getSupportedHTMLTagNames(): string[] {\n return Object.keys(htmlElements);\n }\n\n /**\n * Get all supported SVG tag names\n */\n static getSupportedSVGTagNames(): string[] {\n return Object.keys(svgElements);\n }\n\n /**\n * Get all supported MathML tag names\n */\n static getSupportedMathMLTagNames(): string[] {\n return Object.keys(mathmlElements);\n }\n\n /**\n * Get all supported tag names\n */\n static getSupportedTagNames(): string[] {\n return [...ElementFactory.getSupportedHTMLTagNames(), ...ElementFactory.getSupportedSVGTagNames(), ...ElementFactory.getSupportedMathMLTagNames()];\n }\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sBAA+F;AAKxF,MAAM,eAAe;AAAA;AAAA;AAAA;AAAA,EAI1B,OAAO,cAAc,SAAiB,eAAqB,SAAgC;AACzF,UAAM,oBAAoB,QAAQ,YAAY;AAC9C,UAAM,iBAAkB,eAAuB,aAAa;AAG5D,UAAM,cAAc,OAAO,YAAY,WAAW,UAAU,SAAS;AACrE,QAAI,eAAe,kBAAkB,OAAO,eAAe,QAAQ,YAAY;AAC7E,YAAM,qBAAqB,eAAe,IAAI,WAAW;AACzD,UAAI,oBAAoB;AACtB,cAAM,UAAU,IAAI,mBAAmB;AACvC,gBAAQ,WAAW,QAAQ,YAAY;AACvC,gBAAQ,WAAW,QAAQ,YAAY;AACvC,gBAAQ,iBAAiB;AACzB,YAAI,QAAQ,cAAc;AACxB,kBAAQ,aAAa,MAAM,WAAW;AAAA,QACxC;AACA,eAAO;AAAA,MACT;AAAA,IACF;AAGA,QAAI,kBAAkB,SAAS,GAAG,KAAK,kBAAkB,OAAO,eAAe,QAAQ,YAAY;AACjG,YAAM,qBAAqB,eAAe,IAAI,iBAAiB;AAC/D,UAAI,oBAAoB;AACtB,cAAM,UAAU,IAAI,mBAAmB;AACvC,gBAAQ,WAAW,QAAQ,YAAY;AACvC,gBAAQ,WAAW,QAAQ,YAAY;AACvC,gBAAQ,iBAAiB;AACzB,eAAO;AAAA,MACT;AAAA,IACF;AAIA,eAAW,CAAC,KAAK,YAAY,KAAK,OAAO,QAAQ,4BAAY,GAAG;AAC9D,UAAI,QAAQ,mBAAmB;AAC7B,eAAO,IAAI,aAAa,QAAQ,YAAY,GAAG,aAAa;AAAA,MAC9D;AAAA,IACF;AAGA,eAAW,CAAC,KAAK,YAAY,KAAK,OAAO,QAAQ,2BAAW,GAAG;AAC7D,UAAI,QAAQ,mBAAmB;AAC7B,eAAO,IAAI,aAAa,QAAQ,YAAY,GAAG,aAAa;AAAA,MAC9D;AAAA,IACF;AAGA,eAAW,CAAC,KAAK,YAAY,KAAK,OAAO,QAAQ,8BAAc,GAAG;AAChE,UAAI,QAAQ,mBAAmB;AAC7B,eAAO,IAAI,aAAa,QAAQ,YAAY,GAAG,aAAa;AAAA,MAC9D;AAAA,IACF;AAGA,WAAO,IAAI,mCAAmB,QAAQ,YAAY,GAAG,aAAa;AAAA,EACpE;AAAA;AAAA;AAAA;AAAA,EAKA,OAAO,2BAAqC;AAC1C,WAAO,OAAO,KAAK,4BAAY;AAAA,EACjC;AAAA;AAAA;AAAA;AAAA,EAKA,OAAO,0BAAoC;AACzC,WAAO,OAAO,KAAK,2BAAW;AAAA,EAChC;AAAA;AAAA;AAAA;AAAA,EAKA,OAAO,6BAAuC;AAC5C,WAAO,OAAO,KAAK,8BAAc;AAAA,EACnC;AAAA;AAAA;AAAA;AAAA,EAKA,OAAO,uBAAiC;AACtC,WAAO,CAAC,GAAG,eAAe,yBAAyB,GAAG,GAAG,eAAe,wBAAwB,GAAG,GAAG,eAAe,2BAA2B,CAAC;AAAA,EACnJ;AACF;",
6
6
  "names": []
7
7
  }
package/dist/cjs/index.js CHANGED
@@ -18,11 +18,15 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
18
18
  var src_exports = {};
19
19
  __export(src_exports, {
20
20
  DomParser: () => import_DomParser.DomParser,
21
+ NodeFilter: () => import_NodeFilter.NodeFilter,
22
+ NodeIterator: () => import_NodeIterator.NodeIterator,
21
23
  default: () => src_default,
22
24
  parseHTML: () => parseHTML
23
25
  });
24
26
  module.exports = __toCommonJS(src_exports);
25
27
  var import_DomParser = require("./DomParser");
28
+ var import_NodeIterator = require("./node/NodeIterator");
29
+ var import_NodeFilter = require("./node/NodeFilter");
26
30
  const parseHTML = (html, option) => {
27
31
  const parser = new import_DomParser.DomParser(html, option);
28
32
  return parser.window;
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/index.ts"],
4
- "sourcesContent": ["import { DomParser, DomParserOptions } from \"./DomParser\";\n\n// Main exports - what users actually need\nexport { DomParser };\n\n// Utility function to parse HTML and return window object\nexport const parseHTML = (html: string, option?: DomParserOptions) => {\n const parser = new DomParser(html, option);\n return parser.window;\n}\n\n// Default export\nexport default {\n DomParser,\n parseHTML\n}\n\n// Internal exports (commented out - users don't need these)\n// export { WindowBase } from './window/WindowBase';\n// export { Window } from './window/Window';\n// export { Document } from \"./node/Document\";\n// export { NodeIterator, NodeFilter } from \"./node/NodeIterator\";\n// export * from \"./factory\";\n// export * from \"./node/elements\";\n// export { DocumentBase } from \"./node/DocumentBase\";\n// export * from \"./node/DocumentFragment\";\n// export { DocumentFragmentBase } from \"./node/DocumentFragmentBase\";\n// export * from \"./node/Node\";"],
5
- "mappings": ";;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAA4C;AAMrC,MAAM,YAAY,CAAC,MAAc,WAA8B;AAClE,QAAM,SAAS,IAAI,2BAAU,MAAM,MAAM;AACzC,SAAO,OAAO;AAClB;AAGA,IAAO,cAAQ;AAAA,EACX;AAAA,EACA;AACJ;",
4
+ "sourcesContent": ["import {DomParser, DomParserOptions} from './DomParser';\n\n// Main exports - what users actually need\nexport {DomParser};\nexport {NodeIterator} from './node/NodeIterator';\nexport {NodeFilter} from './node/NodeFilter'\n// Utility function to parse HTML and return window object\nexport const parseHTML = (html: string, option?: DomParserOptions) => {\n const parser = new DomParser(html, option);\n return parser.window;\n};\n\n// Default export\nexport default {\n DomParser,\n parseHTML\n};\n\n// Internal exports (commented out - users don't need these)\n// export { WindowBase } from './window/WindowBase';\n// export { Window } from './window/Window';\n// export { Document } from \"./node/Document\";\n// export { NodeIterator, NodeFilter } from \"./node/NodeIterator\";\n// export * from \"./factory\";\n// export * from \"./node/elements\";\n// export { DocumentBase } from \"./node/DocumentBase\";\n// export * from \"./node/DocumentFragment\";\n// export { DocumentFragmentBase } from \"./node/DocumentFragmentBase\";\n// export * from \"./node/Node\";\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAA0C;AAI1C,0BAA2B;AAC3B,wBAAyB;AAElB,MAAM,YAAY,CAAC,MAAc,WAA8B;AACpE,QAAM,SAAS,IAAI,2BAAU,MAAM,MAAM;AACzC,SAAO,OAAO;AAChB;AAGA,IAAO,cAAQ;AAAA,EACb;AAAA,EACA;AACF;",
6
6
  "names": []
7
7
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/node/CharacterData.ts"],
4
- "sourcesContent": ["import { Node } from './Node';\nimport { ChildNode } from './ChildNode';\n\n/**\n * The **`CharacterData`** abstract interface represents a Node object that contains characters.\n * \n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/CharacterData)\n */\nexport interface CharacterData extends Node, ChildNode {\n /**\n * The **`CharacterData.data`** property represents the textual data contained in this object.\n * \n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/CharacterData/data)\n */\n data: string;\n \n /**\n * The **`CharacterData.length`** read-only property returns the number of characters in the contained data.\n * \n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/CharacterData/length)\n */\n readonly length: number;\n \n /**\n * The **`CharacterData.appendData()`** method appends the given string to the CharacterData.data string.\n * \n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/CharacterData/appendData)\n */\n appendData(data: string): void;\n \n /**\n * The **`CharacterData.deleteData()`** method removes the specified amount of characters.\n * \n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/CharacterData/deleteData)\n */\n deleteData(offset: number, count: number): void;\n \n /**\n * The **`CharacterData.insertData()`** method inserts the provided data into this CharacterData node's current data.\n * \n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/CharacterData/insertData)\n */\n insertData(offset: number, data: string): void;\n \n /**\n * The **`CharacterData.replaceData()`** method replaces a portion of the existing data with the specified data.\n * \n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/CharacterData/replaceData)\n */\n replaceData(offset: number, count: number, data: string): void;\n \n /**\n * The **`CharacterData.substringData()`** method returns a portion of the existing data.\n * \n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/CharacterData/substringData)\n */\n substringData(offset: number, count: number): string;\n}"],
4
+ "sourcesContent": ["\n/**\n * The **`CharacterData`** abstract interface represents a Node object that contains characters.\n * \n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/CharacterData)\n */\nexport interface CharacterData extends Node, ChildNode {\n /**\n * The **`CharacterData.data`** property represents the textual data contained in this object.\n * \n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/CharacterData/data)\n */\n data: string;\n \n /**\n * The **`CharacterData.length`** read-only property returns the number of characters in the contained data.\n * \n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/CharacterData/length)\n */\n readonly length: number;\n \n /**\n * The **`CharacterData.appendData()`** method appends the given string to the CharacterData.data string.\n * \n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/CharacterData/appendData)\n */\n appendData(data: string): void;\n \n /**\n * The **`CharacterData.deleteData()`** method removes the specified amount of characters.\n * \n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/CharacterData/deleteData)\n */\n deleteData(offset: number, count: number): void;\n \n /**\n * The **`CharacterData.insertData()`** method inserts the provided data into this CharacterData node's current data.\n * \n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/CharacterData/insertData)\n */\n insertData(offset: number, data: string): void;\n \n /**\n * The **`CharacterData.replaceData()`** method replaces a portion of the existing data with the specified data.\n * \n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/CharacterData/replaceData)\n */\n replaceData(offset: number, count: number, data: string): void;\n \n /**\n * The **`CharacterData.substringData()`** method returns a portion of the existing data.\n * \n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/CharacterData/substringData)\n */\n substringData(offset: number, count: number): string;\n}"],
5
5
  "mappings": ";;;;;;;;;;;;;AAAA;AAAA;",
6
6
  "names": []
7
7
  }
@@ -1,16 +1 @@
1
- var __defProp = Object.defineProperty;
2
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
- var __getOwnPropNames = Object.getOwnPropertyNames;
4
- var __hasOwnProp = Object.prototype.hasOwnProperty;
5
- var __copyProps = (to, from, except, desc) => {
6
- if (from && typeof from === "object" || typeof from === "function") {
7
- for (let key of __getOwnPropNames(from))
8
- if (!__hasOwnProp.call(to, key) && key !== except)
9
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
10
- }
11
- return to;
12
- };
13
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
14
- var ChildNode_exports = {};
15
- module.exports = __toCommonJS(ChildNode_exports);
16
1
  //# sourceMappingURL=ChildNode.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../src/node/ChildNode.ts"],
4
- "sourcesContent": ["import { Node } from './Node';\n\n/**\n * The **`ChildNode`** interface contains methods and properties that are common to all types of Node objects that can have a parent.\n * \n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/ChildNode)\n */\nexport interface ChildNode extends Node {\n /**\n * Inserts nodes just after node, while replacing strings in nodes with equivalent Text nodes.\n *\n * Throws a \"HierarchyRequestError\" DOMException if the constraints of the node tree are violated.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/CharacterData/after)\n */\n after(...nodes: (Node | string)[]): void;\n\n /**\n * Inserts nodes just before node, while replacing strings in nodes with equivalent Text nodes.\n *\n * Throws a \"HierarchyRequestError\" DOMException if the constraints of the node tree are violated.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/CharacterData/before)\n */\n before(...nodes: (Node | string)[]): void;\n\n /**\n * Removes node.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/CharacterData/remove)\n */\n remove(): void;\n\n /**\n * Replaces node with nodes, while replacing strings in nodes with equivalent Text nodes.\n *\n * Throws a \"HierarchyRequestError\" DOMException if the constraints of the node tree are violated.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/CharacterData/replaceWith)\n */\n replaceWith(...nodes: (Node | string)[]): void;\n}"],
5
- "mappings": ";;;;;;;;;;;;;AAAA;AAAA;",
3
+ "sources": [],
4
+ "sourcesContent": [],
5
+ "mappings": "",
6
6
  "names": []
7
7
  }
@@ -20,8 +20,28 @@ __export(ChildNodeBase_exports, {
20
20
  ChildNodeBase: () => ChildNodeBase
21
21
  });
22
22
  module.exports = __toCommonJS(ChildNodeBase_exports);
23
+ var import_Node = require("./Node");
23
24
  var import_NodeBase = require("./NodeBase");
24
25
  class ChildNodeBase extends import_NodeBase.NodeBase {
26
+ get nextElementSibling() {
27
+ let next = this.nextSibling;
28
+ while (next) {
29
+ if (next.nodeType === import_Node.ELEMENT_NODE) return next;
30
+ next = next.nextSibling;
31
+ }
32
+ return null;
33
+ }
34
+ get previousElementSibling() {
35
+ let prev = this.previousSibling;
36
+ while (prev) {
37
+ if (prev.nodeType === import_Node.ELEMENT_NODE) return prev;
38
+ prev = prev.previousSibling;
39
+ }
40
+ return null;
41
+ }
42
+ get assignedSlot() {
43
+ return null;
44
+ }
25
45
  // ChildNode interface implementation
26
46
  after(...nodes) {
27
47
  if (!this.parentNode) return;
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/node/ChildNodeBase.ts"],
4
- "sourcesContent": ["import { NodeBase } from './NodeBase';\nimport { ChildNode } from './ChildNode';\n// import {Text} from \"./Text\";\n\n/**\n * Base implementation of the ChildNode interface\n */\nexport abstract class ChildNodeBase extends NodeBase implements ChildNode {\n \n // ChildNode interface implementation\n after(...nodes: (NodeBase | string)[]): void {\n if (!this.parentNode) return;\n \n const nextSibling = this.nextSibling;\n for (const node of nodes) {\n if (typeof node === 'string') {\n const { TextBase } = require('./TextBase');\n const textNode = new TextBase(node, this._ownerDocument);\n this.parentNode.insertBefore(textNode, nextSibling);\n } else {\n this.parentNode.insertBefore(node, nextSibling);\n }\n }\n }\n\n before(...nodes: (NodeBase | string)[]): void {\n if (!this.parentNode) return;\n \n for (const node of nodes) {\n if (typeof node === 'string') {\n const { TextBase } = require('./TextBase');\n const textNode = new TextBase(node, this._ownerDocument);\n this.parentNode.insertBefore(textNode, this);\n } else {\n this.parentNode.insertBefore(node, this);\n }\n }\n }\n\n remove(): void {\n if (this.parentNode) {\n this.parentNode.removeChild(this);\n }\n }\n\n replaceWith(...nodes: (NodeBase | string)[]): void {\n if (!this.parentNode) return;\n \n this.before(...nodes);\n this.remove();\n }\n}\n\n// TextNode is now in a separate file"],
5
- "mappings": ";;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sBAAyB;AAOlB,MAAe,sBAAsB,yBAA8B;AAAA;AAAA,EAGtE,SAAS,OAAoC;AACzC,QAAI,CAAC,KAAK,WAAY;AAEtB,UAAM,cAAc,KAAK;AACzB,eAAW,QAAQ,OAAO;AACtB,UAAI,OAAO,SAAS,UAAU;AAC1B,cAAM,EAAE,SAAS,IAAI,QAAQ,YAAY;AACzC,cAAM,WAAW,IAAI,SAAS,MAAM,KAAK,cAAc;AACvD,aAAK,WAAW,aAAa,UAAU,WAAW;AAAA,MACtD,OAAO;AACH,aAAK,WAAW,aAAa,MAAM,WAAW;AAAA,MAClD;AAAA,IACJ;AAAA,EACJ;AAAA,EAEA,UAAU,OAAoC;AAC1C,QAAI,CAAC,KAAK,WAAY;AAEtB,eAAW,QAAQ,OAAO;AACtB,UAAI,OAAO,SAAS,UAAU;AAC1B,cAAM,EAAE,SAAS,IAAI,QAAQ,YAAY;AACzC,cAAM,WAAW,IAAI,SAAS,MAAM,KAAK,cAAc;AACvD,aAAK,WAAW,aAAa,UAAU,IAAI;AAAA,MAC/C,OAAO;AACH,aAAK,WAAW,aAAa,MAAM,IAAI;AAAA,MAC3C;AAAA,IACJ;AAAA,EACJ;AAAA,EAEA,SAAe;AACX,QAAI,KAAK,YAAY;AACjB,WAAK,WAAW,YAAY,IAAI;AAAA,IACpC;AAAA,EACJ;AAAA,EAEA,eAAe,OAAoC;AAC/C,QAAI,CAAC,KAAK,WAAY;AAEtB,SAAK,OAAO,GAAG,KAAK;AACpB,SAAK,OAAO;AAAA,EAChB;AACJ;",
4
+ "sourcesContent": ["import { ELEMENT_NODE } from './Node';\nimport { NodeBase } from './NodeBase';\n\n/**\n * Base implementation of the ChildNode interface\n */\n// @ts-ignore\nexport abstract class ChildNodeBase extends NodeBase implements ChildNode {\n get nextElementSibling(): Element | null {\n let next = this.nextSibling;\n while (next) {\n if (next.nodeType === ELEMENT_NODE) return next as unknown as Element;\n next = next.nextSibling;\n }\n return null;\n }\n\n get previousElementSibling(): Element | null {\n let prev = this.previousSibling;\n while (prev) {\n if (prev.nodeType === ELEMENT_NODE) return prev as unknown as Element;\n prev = prev.previousSibling;\n }\n return null;\n }\n\n get assignedSlot(): any | null {\n return null;\n }\n\n // ChildNode interface implementation\n after(...nodes: (Node | string)[]): void {\n if (!this.parentNode) return;\n\n const nextSibling = this.nextSibling;\n for (const node of nodes) {\n if (typeof node === 'string') {\n const { TextBase } = require('./TextBase');\n const textNode = new TextBase(node, this._ownerDocument);\n this.parentNode.insertBefore(textNode, nextSibling);\n } else {\n this.parentNode.insertBefore(node, nextSibling);\n }\n }\n }\n\n before(...nodes: (Node | string)[]): void {\n if (!this.parentNode) return;\n\n for (const node of nodes) {\n if (typeof node === 'string') {\n const { TextBase } = require('./TextBase');\n const textNode = new TextBase(node, this._ownerDocument);\n this.parentNode.insertBefore(textNode, this as unknown as Node);\n } else {\n this.parentNode.insertBefore(node, this as unknown as Node);\n }\n }\n }\n\n remove(): void {\n if (this.parentNode) {\n this.parentNode.removeChild(this as unknown as Node);\n }\n }\n\n replaceWith(...nodes: (Node | string)[]): void {\n if (!this.parentNode) return;\n\n this.before(...nodes);\n this.remove();\n }\n}\n\n// TextNode is now in a separate file\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAA6B;AAC7B,sBAAyB;AAMlB,MAAe,sBAAsB,yBAA8B;AAAA,EACxE,IAAI,qBAAqC;AACvC,QAAI,OAAO,KAAK;AAChB,WAAO,MAAM;AACX,UAAI,KAAK,aAAa,yBAAc,QAAO;AAC3C,aAAO,KAAK;AAAA,IACd;AACA,WAAO;AAAA,EACT;AAAA,EAEA,IAAI,yBAAyC;AAC3C,QAAI,OAAO,KAAK;AAChB,WAAO,MAAM;AACX,UAAI,KAAK,aAAa,yBAAc,QAAO;AAC3C,aAAO,KAAK;AAAA,IACd;AACA,WAAO;AAAA,EACT;AAAA,EAEA,IAAI,eAA2B;AAC7B,WAAO;AAAA,EACT;AAAA;AAAA,EAGA,SAAS,OAAgC;AACvC,QAAI,CAAC,KAAK,WAAY;AAEtB,UAAM,cAAc,KAAK;AACzB,eAAW,QAAQ,OAAO;AACxB,UAAI,OAAO,SAAS,UAAU;AAC5B,cAAM,EAAE,SAAS,IAAI,QAAQ,YAAY;AACzC,cAAM,WAAW,IAAI,SAAS,MAAM,KAAK,cAAc;AACvD,aAAK,WAAW,aAAa,UAAU,WAAW;AAAA,MACpD,OAAO;AACL,aAAK,WAAW,aAAa,MAAM,WAAW;AAAA,MAChD;AAAA,IACF;AAAA,EACF;AAAA,EAEA,UAAU,OAAgC;AACxC,QAAI,CAAC,KAAK,WAAY;AAEtB,eAAW,QAAQ,OAAO;AACxB,UAAI,OAAO,SAAS,UAAU;AAC5B,cAAM,EAAE,SAAS,IAAI,QAAQ,YAAY;AACzC,cAAM,WAAW,IAAI,SAAS,MAAM,KAAK,cAAc;AACvD,aAAK,WAAW,aAAa,UAAU,IAAuB;AAAA,MAChE,OAAO;AACL,aAAK,WAAW,aAAa,MAAM,IAAuB;AAAA,MAC5D;AAAA,IACF;AAAA,EACF;AAAA,EAEA,SAAe;AACb,QAAI,KAAK,YAAY;AACnB,WAAK,WAAW,YAAY,IAAuB;AAAA,IACrD;AAAA,EACF;AAAA,EAEA,eAAe,OAAgC;AAC7C,QAAI,CAAC,KAAK,WAAY;AAEtB,SAAK,OAAO,GAAG,KAAK;AACpB,SAAK,OAAO;AAAA,EACd;AACF;",
6
6
  "names": []
7
7
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/node/Comment.ts"],
4
- "sourcesContent": ["import { ChildNodeBase } from './ChildNodeBase';\nimport { COMMENT_NODE } from './Node';\n\n/**\n * The **`Comment`** interface represents textual notations within markup; although it is generally not visually shown, such comments are available to be read in the source view.\n * \n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Comment)\n */\n// export interface Comment {\n// readonly nodeType: typeof COMMENT_NODE;\n// readonly nodeName: '#comment';\n// data: string;\n// readonly length: number;\n// appendData(data: string): void;\n// deleteData(offset: number, count: number): void;\n// insertData(offset: number, data: string): void;\n// replaceData(offset: number, count: number, data: string): void;\n// substringData(offset: number, count: number): string;\n// }\n\n/**\n * The **`CommentNode`** class represents a comment node in the DOM.\n */\nexport class Comment extends ChildNodeBase {\n private _data: string;\n\n constructor(data: string, ownerDocument?: any) {\n super(COMMENT_NODE, '#comment', ownerDocument);\n this._data = data;\n this._nodeValue = data;\n }\n\n get data(): string {\n return this._data;\n }\n\n set data(value: string) {\n this._data = value;\n this._nodeValue = value;\n }\n\n get length(): number {\n return this._data.length;\n }\n\n get textContent(): string | null {\n return this._data;\n }\n\n set textContent(value: string | null) {\n this._data = value || '';\n this._nodeValue = this._data;\n }\n\n // CharacterData methods\n appendData(data: string): void {\n this._data += data;\n this._nodeValue = this._data;\n }\n\n deleteData(offset: number, count: number): void {\n if (offset < 0 || offset > this._data.length) {\n throw new Error('Index out of bounds');\n }\n const endOffset = Math.min(offset + count, this._data.length);\n this._data = this._data.slice(0, offset) + this._data.slice(endOffset);\n this._nodeValue = this._data;\n }\n\n insertData(offset: number, data: string): void {\n if (offset < 0 || offset > this._data.length) {\n throw new Error('Index out of bounds');\n }\n this._data = this._data.slice(0, offset) + data + this._data.slice(offset);\n this._nodeValue = this._data;\n }\n\n replaceData(offset: number, count: number, data: string): void {\n this.deleteData(offset, count);\n this.insertData(offset, data);\n }\n\n substringData(offset: number, count: number): string {\n if (offset < 0 || offset > this._data.length) {\n throw new Error('Index out of bounds');\n }\n const endOffset = Math.min(offset + count, this._data.length);\n return this._data.slice(offset, endOffset);\n }\n\n cloneNode(deep?: boolean): Comment {\n return new Comment(this._data, this._ownerDocument);\n }\n\n toString(): string {\n return `<!--${this._data}-->`;\n }\n}"],
5
- "mappings": ";;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,2BAA8B;AAC9B,kBAA6B;AAsBtB,MAAM,gBAAgB,mCAAe;AAAA,EAGxC,YAAY,MAAc,eAAqB;AAC3C,UAAM,0BAAc,YAAY,aAAa;AAC7C,SAAK,QAAQ;AACb,SAAK,aAAa;AAAA,EACtB;AAAA,EAEA,IAAI,OAAe;AACf,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,IAAI,KAAK,OAAe;AACpB,SAAK,QAAQ;AACb,SAAK,aAAa;AAAA,EACtB;AAAA,EAEA,IAAI,SAAiB;AACjB,WAAO,KAAK,MAAM;AAAA,EACtB;AAAA,EAEA,IAAI,cAA6B;AAC7B,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,IAAI,YAAY,OAAsB;AAClC,SAAK,QAAQ,SAAS;AACtB,SAAK,aAAa,KAAK;AAAA,EAC3B;AAAA;AAAA,EAGA,WAAW,MAAoB;AAC3B,SAAK,SAAS;AACd,SAAK,aAAa,KAAK;AAAA,EAC3B;AAAA,EAEA,WAAW,QAAgB,OAAqB;AAC5C,QAAI,SAAS,KAAK,SAAS,KAAK,MAAM,QAAQ;AAC1C,YAAM,IAAI,MAAM,qBAAqB;AAAA,IACzC;AACA,UAAM,YAAY,KAAK,IAAI,SAAS,OAAO,KAAK,MAAM,MAAM;AAC5D,SAAK,QAAQ,KAAK,MAAM,MAAM,GAAG,MAAM,IAAI,KAAK,MAAM,MAAM,SAAS;AACrE,SAAK,aAAa,KAAK;AAAA,EAC3B;AAAA,EAEA,WAAW,QAAgB,MAAoB;AAC3C,QAAI,SAAS,KAAK,SAAS,KAAK,MAAM,QAAQ;AAC1C,YAAM,IAAI,MAAM,qBAAqB;AAAA,IACzC;AACA,SAAK,QAAQ,KAAK,MAAM,MAAM,GAAG,MAAM,IAAI,OAAO,KAAK,MAAM,MAAM,MAAM;AACzE,SAAK,aAAa,KAAK;AAAA,EAC3B;AAAA,EAEA,YAAY,QAAgB,OAAe,MAAoB;AAC3D,SAAK,WAAW,QAAQ,KAAK;AAC7B,SAAK,WAAW,QAAQ,IAAI;AAAA,EAChC;AAAA,EAEA,cAAc,QAAgB,OAAuB;AACjD,QAAI,SAAS,KAAK,SAAS,KAAK,MAAM,QAAQ;AAC1C,YAAM,IAAI,MAAM,qBAAqB;AAAA,IACzC;AACA,UAAM,YAAY,KAAK,IAAI,SAAS,OAAO,KAAK,MAAM,MAAM;AAC5D,WAAO,KAAK,MAAM,MAAM,QAAQ,SAAS;AAAA,EAC7C;AAAA,EAEA,UAAU,MAAyB;AAC/B,WAAO,IAAI,QAAQ,KAAK,OAAO,KAAK,cAAc;AAAA,EACtD;AAAA,EAEA,WAAmB;AACf,WAAO,OAAO,KAAK,KAAK;AAAA,EAC5B;AACJ;",
4
+ "sourcesContent": ["import { ChildNodeBase } from './ChildNodeBase';\nimport { COMMENT_NODE } from './Node';\n\n/**\n * The **`Comment`** interface represents textual notations within markup; although it is generally not visually shown, such comments are available to be read in the source view.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Comment)\n */\n// export interface Comment {\n// readonly nodeType: typeof COMMENT_NODE;\n// readonly nodeName: '#comment';\n// data: string;\n// readonly length: number;\n// appendData(data: string): void;\n// deleteData(offset: number, count: number): void;\n// insertData(offset: number, data: string): void;\n// replaceData(offset: number, count: number, data: string): void;\n// substringData(offset: number, count: number): string;\n// }\n\n/**\n * The **`CommentNode`** class represents a comment node in the DOM.\n */\nexport class Comment extends ChildNodeBase {\n private _data: string;\n\n constructor(data: string, ownerDocument?: any) {\n super(COMMENT_NODE, '#comment', ownerDocument);\n this._data = data;\n this._nodeValue = data;\n }\n\n get data(): string {\n return this._data;\n }\n\n set data(value: string) {\n this._data = value;\n this._nodeValue = value;\n }\n\n get length(): number {\n return this._data.length;\n }\n\n get textContent(): string | null {\n return this._data;\n }\n\n set textContent(value: string | null) {\n this._data = value || '';\n this._nodeValue = this._data;\n }\n\n // CharacterData methods\n appendData(data: string): void {\n this._data += data;\n this._nodeValue = this._data;\n }\n\n deleteData(offset: number, count: number): void {\n if (offset < 0 || offset > this._data.length) {\n throw new Error('Index out of bounds');\n }\n const endOffset = Math.min(offset + count, this._data.length);\n this._data = this._data.slice(0, offset) + this._data.slice(endOffset);\n this._nodeValue = this._data;\n }\n\n insertData(offset: number, data: string): void {\n if (offset < 0 || offset > this._data.length) {\n throw new Error('Index out of bounds');\n }\n this._data = this._data.slice(0, offset) + data + this._data.slice(offset);\n this._nodeValue = this._data;\n }\n\n replaceData(offset: number, count: number, data: string): void {\n this.deleteData(offset, count);\n this.insertData(offset, data);\n }\n\n substringData(offset: number, count: number): string {\n if (offset < 0 || offset > this._data.length) {\n throw new Error('Index out of bounds');\n }\n const endOffset = Math.min(offset + count, this._data.length);\n return this._data.slice(offset, endOffset);\n }\n\n cloneNode(deep?: boolean): Node {\n return new Comment(this._data, this._ownerDocument) as unknown as Node;\n }\n\n toString(): string {\n return `<!--${this._data}-->`;\n }\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,2BAA8B;AAC9B,kBAA6B;AAsBtB,MAAM,gBAAgB,mCAAc;AAAA,EAGzC,YAAY,MAAc,eAAqB;AAC7C,UAAM,0BAAc,YAAY,aAAa;AAC7C,SAAK,QAAQ;AACb,SAAK,aAAa;AAAA,EACpB;AAAA,EAEA,IAAI,OAAe;AACjB,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,IAAI,KAAK,OAAe;AACtB,SAAK,QAAQ;AACb,SAAK,aAAa;AAAA,EACpB;AAAA,EAEA,IAAI,SAAiB;AACnB,WAAO,KAAK,MAAM;AAAA,EACpB;AAAA,EAEA,IAAI,cAA6B;AAC/B,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,IAAI,YAAY,OAAsB;AACpC,SAAK,QAAQ,SAAS;AACtB,SAAK,aAAa,KAAK;AAAA,EACzB;AAAA;AAAA,EAGA,WAAW,MAAoB;AAC7B,SAAK,SAAS;AACd,SAAK,aAAa,KAAK;AAAA,EACzB;AAAA,EAEA,WAAW,QAAgB,OAAqB;AAC9C,QAAI,SAAS,KAAK,SAAS,KAAK,MAAM,QAAQ;AAC5C,YAAM,IAAI,MAAM,qBAAqB;AAAA,IACvC;AACA,UAAM,YAAY,KAAK,IAAI,SAAS,OAAO,KAAK,MAAM,MAAM;AAC5D,SAAK,QAAQ,KAAK,MAAM,MAAM,GAAG,MAAM,IAAI,KAAK,MAAM,MAAM,SAAS;AACrE,SAAK,aAAa,KAAK;AAAA,EACzB;AAAA,EAEA,WAAW,QAAgB,MAAoB;AAC7C,QAAI,SAAS,KAAK,SAAS,KAAK,MAAM,QAAQ;AAC5C,YAAM,IAAI,MAAM,qBAAqB;AAAA,IACvC;AACA,SAAK,QAAQ,KAAK,MAAM,MAAM,GAAG,MAAM,IAAI,OAAO,KAAK,MAAM,MAAM,MAAM;AACzE,SAAK,aAAa,KAAK;AAAA,EACzB;AAAA,EAEA,YAAY,QAAgB,OAAe,MAAoB;AAC7D,SAAK,WAAW,QAAQ,KAAK;AAC7B,SAAK,WAAW,QAAQ,IAAI;AAAA,EAC9B;AAAA,EAEA,cAAc,QAAgB,OAAuB;AACnD,QAAI,SAAS,KAAK,SAAS,KAAK,MAAM,QAAQ;AAC5C,YAAM,IAAI,MAAM,qBAAqB;AAAA,IACvC;AACA,UAAM,YAAY,KAAK,IAAI,SAAS,OAAO,KAAK,MAAM,MAAM;AAC5D,WAAO,KAAK,MAAM,MAAM,QAAQ,SAAS;AAAA,EAC3C;AAAA,EAEA,UAAU,MAAsB;AAC9B,WAAO,IAAI,QAAQ,KAAK,OAAO,KAAK,cAAc;AAAA,EACpD;AAAA,EAEA,WAAmB;AACjB,WAAO,OAAO,KAAK,KAAK;AAAA,EAC1B;AACF;",
6
6
  "names": []
7
7
  }
@@ -1,28 +1 @@
1
- var __defProp = Object.defineProperty;
2
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
- var __getOwnPropNames = Object.getOwnPropertyNames;
4
- var __hasOwnProp = Object.prototype.hasOwnProperty;
5
- var __export = (target, all) => {
6
- for (var name in all)
7
- __defProp(target, name, { get: all[name], enumerable: true });
8
- };
9
- var __copyProps = (to, from, except, desc) => {
10
- if (from && typeof from === "object" || typeof from === "function") {
11
- for (let key of __getOwnPropNames(from))
12
- if (!__hasOwnProp.call(to, key) && key !== except)
13
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
14
- }
15
- return to;
16
- };
17
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
18
- var Document_exports = {};
19
- __export(Document_exports, {
20
- Comment: () => import_Comment2.Comment,
21
- DocumentFragment: () => import_DocumentFragment2.DocumentFragment,
22
- Text: () => import_Text2.Text
23
- });
24
- module.exports = __toCommonJS(Document_exports);
25
- var import_Text2 = require("./Text");
26
- var import_Comment2 = require("./Comment");
27
- var import_DocumentFragment2 = require("./DocumentFragment");
28
1
  //# sourceMappingURL=Document.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../src/node/Document.ts"],
4
- "sourcesContent": ["import { Node } from './Node';\nimport { ParentNode } from './ParentNode';\nimport { Element } from './elements/Element';\nimport { HTMLElement } from './elements/HTMLElement';\nimport { HTMLCollection, HTMLCollectionOf } from './collection';\nimport {Comment} from \"./Comment\";\nimport {Text} from \"./Text\";\nimport { DocumentFragment } from './DocumentFragment';\nimport { HTMLElementTagNameMap, SVGElementTagNameMap, MathMLElementTagNameMap, HTMLElementDeprecatedTagNameMap, HTMLImageElement, HTMLAnchorElement, HTMLAreaElement, HTMLEmbedElement, HTMLFormElement, HTMLScriptElement, HTMLHeadElement, SVGElement, MathMLElement } from './elements';\nimport { NodeListOf } from './collection/NodeListOf';\n\n// \uCD94\uAC00 \uD0C0\uC785\uB4E4 \uC815\uC758\nexport interface ElementCreationOptions {\n is?: string;\n}\n\nexport interface ImportNodeOptions {\n deep?: boolean;\n}\n\nexport interface CaretPositionFromPointOptions {\n shadowRoots?: ShadowRoot[];\n}\n\nexport interface StartViewTransitionOptions {\n update?: ViewTransitionUpdateCallback;\n}\n\nexport type DocumentReadyState = 'loading' | 'interactive' | 'complete';\nexport type DocumentVisibilityState = 'visible' | 'hidden' | 'prerender';\nexport type ViewTransitionUpdateCallback = () => void | Promise<void>;\n\n// Import interfaces from separate files\nexport { Text } from './Text';\nexport { Comment } from './Comment';\nexport { DocumentFragment } from './DocumentFragment';\n\n// Document \uAD00\uB828 \uC778\uD130\uD398\uC774\uC2A4\uB4E4 (\uAC04\uC18C\uD654\uB41C \uBC84\uC804)\nexport interface DocumentOrShadowRoot { }\nexport interface FontFaceSource { }\nexport interface GlobalEventHandlers { }\nexport interface NonElementParentNode { }\nexport interface XPathEvaluatorBase { }\nexport interface DocumentAndElementEventHandlers { }\nexport interface HTMLAllCollection extends HTMLCollection { }\nexport interface DocumentType extends Node { }\nexport interface DOMImplementation { }\nexport interface FragmentDirective { }\nexport interface DocumentTimeline { }\nexport interface Location { href: string; }\nexport interface Selection { }\nexport interface Range { }\nexport interface NodeIterator { }\nexport interface TreeWalker { }\nexport interface ViewTransition { }\nexport interface CaretPosition { }\nexport interface NodeFilter { }\nexport interface ProcessingInstruction extends Node { }\nexport interface CDATASection extends Text { }\nexport interface Attr extends Node { }\nexport interface HTMLOrSVGScriptElement extends HTMLElement { }\nexport interface WindowProxy { }\nexport interface ShadowRoot { }\n\n// Event interfaces\nexport interface Event { }\nexport interface AnimationEvent extends Event { }\nexport interface AnimationPlaybackEvent extends Event { }\nexport interface AudioProcessingEvent extends Event { }\nexport interface BeforeUnloadEvent extends Event { }\nexport interface BlobEvent extends Event { }\nexport interface ClipboardEvent extends Event { }\nexport interface CloseEvent extends Event { }\nexport interface CompositionEvent extends Event { }\nexport interface ContentVisibilityAutoStateChangeEvent extends Event { }\nexport interface CookieChangeEvent extends Event { }\nexport interface CustomEvent extends Event { }\nexport interface DeviceMotionEvent extends Event { }\nexport interface DeviceOrientationEvent extends Event { }\nexport interface DragEvent extends Event { }\nexport interface ErrorEvent extends Event { }\nexport interface FocusEvent extends Event { }\nexport interface FontFaceSetLoadEvent extends Event { }\nexport interface FormDataEvent extends Event { }\nexport interface GamepadEvent extends Event { }\nexport interface HashChangeEvent extends Event { }\nexport interface IDBVersionChangeEvent extends Event { }\nexport interface InputEvent extends Event { }\nexport interface KeyboardEvent extends Event { }\nexport interface MIDIConnectionEvent extends Event { }\nexport interface MIDIMessageEvent extends Event { }\nexport interface MediaEncryptedEvent extends Event { }\nexport interface MediaKeyMessageEvent extends Event { }\nexport interface MediaQueryListEvent extends Event { }\nexport interface MediaStreamTrackEvent extends Event { }\nexport interface MessageEvent extends Event { }\nexport interface MouseEvent extends Event { }\nexport interface OfflineAudioCompletionEvent extends Event { }\nexport interface PageRevealEvent extends Event { }\nexport interface PageSwapEvent extends Event { }\nexport interface PageTransitionEvent extends Event { }\nexport interface PaymentMethodChangeEvent extends Event { }\nexport interface PaymentRequestUpdateEvent extends Event { }\nexport interface PictureInPictureEvent extends Event { }\nexport interface PointerEvent extends Event { }\nexport interface PopStateEvent extends Event { }\nexport interface ProgressEvent extends Event { }\nexport interface PromiseRejectionEvent extends Event { }\nexport interface RTCDTMFToneChangeEvent extends Event { }\nexport interface RTCDataChannelEvent extends Event { }\nexport interface RTCErrorEvent extends Event { }\nexport interface RTCPeerConnectionIceErrorEvent extends Event { }\nexport interface RTCPeerConnectionIceEvent extends Event { }\nexport interface RTCTrackEvent extends Event { }\nexport interface SecurityPolicyViolationEvent extends Event { }\nexport interface SpeechSynthesisErrorEvent extends Event { }\nexport interface SpeechSynthesisEvent extends Event { }\nexport interface StorageEvent extends Event { }\nexport interface SubmitEvent extends Event { }\nexport interface TextEvent extends Event { }\nexport interface ToggleEvent extends Event { }\nexport interface TouchEvent extends Event { }\nexport interface TrackEvent extends Event { }\nexport interface TransitionEvent extends Event { }\nexport interface UIEvent extends Event { }\nexport interface WebGLContextEvent extends Event { }\nexport interface WheelEvent extends Event { }\n\nexport interface EventListenerOptions {\n capture?: boolean;\n}\n\nexport interface AddEventListenerOptions extends EventListenerOptions {\n once?: boolean;\n passive?: boolean;\n signal?: AbortSignal;\n}\n\nexport interface EventListenerOrEventListenerObject {\n (evt: Event): void;\n}\n\nexport interface DocumentEventMap {\n [key: string]: Event;\n}\n\nexport interface AbortSignal { }\n\n/**\n * The **`Document`** interface represents any web page loaded in the browser and serves as an entry point into the web page's content, which is the DOM tree.\n * \n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document)\n */\nexport interface Document extends Node, NonElementParentNode, DocumentOrShadowRoot, ParentNode, XPathEvaluatorBase, GlobalEventHandlers, DocumentAndElementEventHandlers {\n /**\n * The **`URL`** read-only property of the Document interface returns the document location as a string.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/URL)\n */\n readonly URL: string;\n\n /**\n * Returns or sets the color of an active link in the document body.\n * @deprecated\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/alinkColor)\n */\n alinkColor: string;\n\n /**\n * The Document interface's read-only **`all`** property returns an HTMLAllCollection rooted at the document node.\n * @deprecated\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/all)\n */\n readonly all: HTMLAllCollection;\n\n /**\n * The **`anchors`** read-only property of the An HTMLCollection.\n * @deprecated\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/anchors)\n */\n readonly anchors: HTMLCollectionOf<HTMLAnchorElement>;\n\n /**\n * The **`applets`** property of the Document returns an empty HTMLCollection.\n * @deprecated\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/applets)\n */\n readonly applets: HTMLCollection;\n\n /**\n * The deprecated `bgColor` property gets or sets the background color of the current document.\n * @deprecated\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/bgColor)\n */\n bgColor: string;\n\n /**\n * The **`Document.body`** property represents the `null` if no such element exists.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/body)\n */\n body: HTMLElement;\n\n /**\n * The **`Document.characterSet`** read-only property returns the character encoding of the document that it's currently rendered with.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/characterSet)\n */\n readonly characterSet: string;\n\n /**\n * @deprecated This is a legacy alias of `characterSet`.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/characterSet)\n */\n readonly charset: string;\n\n /**\n * The **`Document.compatMode`** read-only property indicates whether the document is rendered in Quirks mode or Standards mode.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/compatMode)\n */\n readonly compatMode: string;\n\n /**\n * The **`Document.contentType`** read-only property returns the MIME type that the document is being rendered as.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/contentType)\n */\n readonly contentType: string;\n\n /**\n * The Document property `cookie` lets you read and write cookies associated with the document.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/cookie)\n */\n cookie: string;\n\n /**\n * The **`Document.currentScript`** property returns the script element whose script is currently being processed and isn't a JavaScript module.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/currentScript)\n */\n readonly currentScript: HTMLOrSVGScriptElement | null;\n\n /**\n * In browsers, **`document.defaultView`** returns the This property is read-only.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/defaultView)\n */\n readonly defaultView: (WindowProxy & typeof globalThis) | null;\n\n /**\n * **`document.designMode`** controls whether the entire document is editable.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/designMode)\n */\n designMode: string;\n\n /**\n * The **`Document.dir`** property is a string representing the directionality of the text of the document, whether left to right (default) or right to left.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/dir)\n */\n dir: string;\n\n /**\n * The **`doctype`** read-only property of the Document interface is a DocumentType object representing the Doctype associated with the current document.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/doctype)\n */\n readonly doctype: DocumentType | null;\n\n /**\n * The **`documentElement`** read-only property of the Document interface returns the example, the html element for HTML documents).\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/documentElement)\n */\n readonly documentElement: HTMLElement;\n\n /**\n * The **`documentURI`** read-only property of the A string.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/documentURI)\n */\n readonly documentURI: string;\n\n /**\n * The **`domain`** property of the Document interface gets/sets the domain portion of the origin of the current document, as used by the same-origin policy.\n * @deprecated\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/domain)\n */\n domain: string;\n\n /**\n * The **`embeds`** read-only property of the An HTMLCollection.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/embeds)\n */\n readonly embeds: HTMLCollectionOf<HTMLEmbedElement>;\n\n /**\n * **`fgColor`** gets/sets the foreground color, or text color, of the current document.\n * @deprecated\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/fgColor)\n */\n fgColor: string;\n\n /**\n * The **`forms`** read-only property of the Document interface returns an HTMLCollection listing all the form elements contained in the document.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/forms)\n */\n readonly forms: HTMLCollectionOf<HTMLFormElement>;\n\n /**\n * The **`fragmentDirective`** read-only property of the Document interface returns the FragmentDirective for the current document.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/fragmentDirective)\n */\n readonly fragmentDirective: FragmentDirective;\n\n /**\n * The obsolete Document interface's **`fullscreen`** read-only property reports whether or not the document is currently displaying content in fullscreen mode.\n * @deprecated\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/fullscreen)\n */\n readonly fullscreen: boolean;\n\n /**\n * The read-only **`fullscreenEnabled`** property on the Document interface indicates whether or not fullscreen mode is available.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/fullscreenEnabled)\n */\n readonly fullscreenEnabled: boolean;\n\n /**\n * The **`head`** read-only property of the Document interface returns the head element of the current document.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/head)\n */\n readonly head: HTMLHeadElement;\n\n /**\n * The **`Document.hidden`** read-only property returns a Boolean value indicating if the page is considered hidden or not.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/hidden)\n */\n readonly hidden: boolean;\n\n /**\n * The **`images`** read-only property of the Document interface returns a collection of the images in the current HTML document.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/images)\n */\n readonly images: HTMLCollectionOf<HTMLImageElement>;\n\n /**\n * The **`Document.implementation`** property returns a A DOMImplementation object.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/implementation)\n */\n readonly implementation: DOMImplementation;\n\n /**\n * @deprecated This is a legacy alias of `characterSet`.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/characterSet)\n */\n readonly inputEncoding: string;\n\n /**\n * The **`lastModified`** property of the Document interface returns a string containing the date and local time on which the current document was last modified.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/lastModified)\n */\n readonly lastModified: string;\n\n /**\n * The **`Document.linkColor`** property gets/sets the color of links within the document.\n * @deprecated\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/linkColor)\n */\n linkColor: string;\n\n /**\n * The **`links`** read-only property of the Document interface returns a collection of all area elements and a elements in a document with a value for the href attribute.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/links)\n */\n readonly links: HTMLCollectionOf<HTMLAnchorElement | HTMLAreaElement>;\n\n /**\n * The **`Document.location`** read-only property returns a and provides methods for changing that URL and loading another URL.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/location)\n */\n get location(): Location;\n set location(href: string);\n\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/fullscreenchange_event) */\n onfullscreenchange: ((this: Document, ev: Event) => any) | null;\n\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/fullscreenerror_event) */\n onfullscreenerror: ((this: Document, ev: Event) => any) | null;\n\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/pointerlockchange_event) */\n onpointerlockchange: ((this: Document, ev: Event) => any) | null;\n\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/pointerlockerror_event) */\n onpointerlockerror: ((this: Document, ev: Event) => any) | null;\n\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/readystatechange_event) */\n onreadystatechange: ((this: Document, ev: Event) => any) | null;\n\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/visibilitychange_event) */\n onvisibilitychange: ((this: Document, ev: Event) => any) | null;\n\n readonly ownerDocument: null;\n\n /**\n * The read-only **`pictureInPictureEnabled`** property of the available.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/pictureInPictureEnabled)\n */\n readonly pictureInPictureEnabled: boolean;\n\n /**\n * The **`plugins`** read-only property of the containing one or more HTMLEmbedElements representing the An HTMLCollection.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/plugins)\n */\n readonly plugins: HTMLCollectionOf<HTMLEmbedElement>;\n\n /**\n * The **`Document.readyState`** property describes the loading state of the document.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/readyState)\n */\n readonly readyState: DocumentReadyState;\n\n /**\n * The **`Document.referrer`** property returns the URI of the page that linked to this page.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/referrer)\n */\n readonly referrer: string;\n\n /**\n * **`Document.rootElement`** returns the Element that is the root element of the document if it is an documents.\n * @deprecated\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/rootElement)\n */\n readonly rootElement: SVGElement | null;\n\n /**\n * The **`scripts`** property of the Document interface returns a list of the script elements in the document.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/scripts)\n */\n readonly scripts: HTMLCollectionOf<HTMLScriptElement>;\n\n /**\n * The **`scrollingElement`** read-only property of the scrolls the document.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/scrollingElement)\n */\n readonly scrollingElement: Element | null;\n\n /**\n * The `timeline` readonly property of the Document interface represents the default timeline of the current document.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/timeline)\n */\n readonly timeline: DocumentTimeline;\n\n /**\n * The **`document.title`** property gets or sets the current title of the document.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/title)\n */\n title: string;\n\n /**\n * The **`Document.visibilityState`** read-only property returns the visibility of the document.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/visibilityState)\n */\n readonly visibilityState: DocumentVisibilityState;\n\n /**\n * The **`Document.vlinkColor`** property gets/sets the color of links that the user has visited in the document.\n * @deprecated\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/vlinkColor)\n */\n vlinkColor: string;\n\n /**\n * **`Document.adoptNode()`** transfers a node/dom from another Document into the method's document.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/adoptNode)\n */\n adoptNode<T extends Node>(node: T): T;\n\n /** @deprecated */\n captureEvents(): void;\n\n /**\n * The **`caretPositionFromPoint()`** method of the Document interface returns a CaretPosition object, containing the DOM node, along with the caret and caret's character offset within that node.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/caretPositionFromPoint)\n */\n caretPositionFromPoint(x: number, y: number, options?: CaretPositionFromPointOptions): CaretPosition | null;\n\n /** @deprecated */\n caretRangeFromPoint(x: number, y: number): Range | null;\n\n /**\n * The **`Document.clear()`** method does nothing, but doesn't raise any error.\n * @deprecated\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/clear)\n */\n clear(): void;\n\n /**\n * The **`Document.close()`** method finishes writing to a document, opened with Document.open().\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/close)\n */\n close(): void;\n\n /**\n * The **`Document.createAttribute()`** method creates a new attribute node, and returns it.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/createAttribute)\n */\n createAttribute(localName: string): Attr;\n\n /**\n * The **`Document.createAttributeNS()`** method creates a new attribute node with the specified namespace URI and qualified name, and returns it.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/createAttributeNS)\n */\n createAttributeNS(namespace: string | null, qualifiedName: string): Attr;\n\n /**\n * **`createCDATASection()`** creates a new CDATA section node, and returns it.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/createCDATASection)\n */\n createCDATASection(data: string): CDATASection;\n\n /**\n * **`createComment()`** creates a new comment node, and returns it.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/createComment)\n */\n createComment(data: string): Comment;\n\n /**\n * Creates a new empty DocumentFragment into which DOM nodes can be added to build an offscreen DOM tree.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/createDocumentFragment)\n */\n createDocumentFragment(): DocumentFragment;\n\n /**\n * In an HTML document, the **`document.createElement()`** method creates the HTML element specified by `localName`, or an HTMLUnknownElement if `localName` isn't recognized.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/createElement)\n */\n createElement<K extends keyof HTMLElementTagNameMap>(tagName: K, options?: ElementCreationOptions): HTMLElementTagNameMap[K];\n /** @deprecated */\n createElement<K extends keyof HTMLElementDeprecatedTagNameMap>(tagName: K, options?: ElementCreationOptions): HTMLElementDeprecatedTagNameMap[K];\n createElement(tagName: string, options?: ElementCreationOptions): HTMLElement;\n\n /**\n * Creates an element with the specified namespace URI and qualified name.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/createElementNS)\n */\n createElementNS(namespaceURI: \"http://www.w3.org/1999/xhtml\", qualifiedName: string): HTMLElement;\n createElementNS<K extends keyof SVGElementTagNameMap>(namespaceURI: \"http://www.w3.org/2000/svg\", qualifiedName: K): SVGElementTagNameMap[K];\n createElementNS(namespaceURI: \"http://www.w3.org/2000/svg\", qualifiedName: string): SVGElement;\n createElementNS<K extends keyof MathMLElementTagNameMap>(namespaceURI: \"http://www.w3.org/1998/Math/MathML\", qualifiedName: K): MathMLElementTagNameMap[K];\n createElementNS(namespaceURI: \"http://www.w3.org/1998/Math/MathML\", qualifiedName: string): MathMLElement;\n createElementNS(namespaceURI: string | null, qualifiedName: string, options?: ElementCreationOptions): Element;\n createElementNS(namespace: string | null, qualifiedName: string, options?: string | ElementCreationOptions): Element;\n\n /**\n * Creates an event of the type specified.\n * @deprecated\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/createEvent)\n */\n createEvent(eventInterface: \"AnimationEvent\"): AnimationEvent;\n createEvent(eventInterface: \"AnimationPlaybackEvent\"): AnimationPlaybackEvent;\n createEvent(eventInterface: \"AudioProcessingEvent\"): AudioProcessingEvent;\n createEvent(eventInterface: \"BeforeUnloadEvent\"): BeforeUnloadEvent;\n createEvent(eventInterface: \"BlobEvent\"): BlobEvent;\n createEvent(eventInterface: \"ClipboardEvent\"): ClipboardEvent;\n createEvent(eventInterface: \"CloseEvent\"): CloseEvent;\n createEvent(eventInterface: \"CompositionEvent\"): CompositionEvent;\n createEvent(eventInterface: \"ContentVisibilityAutoStateChangeEvent\"): ContentVisibilityAutoStateChangeEvent;\n createEvent(eventInterface: \"CookieChangeEvent\"): CookieChangeEvent;\n createEvent(eventInterface: \"CustomEvent\"): CustomEvent;\n createEvent(eventInterface: \"DeviceMotionEvent\"): DeviceMotionEvent;\n createEvent(eventInterface: \"DeviceOrientationEvent\"): DeviceOrientationEvent;\n createEvent(eventInterface: \"DragEvent\"): DragEvent;\n createEvent(eventInterface: \"ErrorEvent\"): ErrorEvent;\n createEvent(eventInterface: \"Event\"): Event;\n createEvent(eventInterface: \"Events\"): Event;\n createEvent(eventInterface: \"FocusEvent\"): FocusEvent;\n createEvent(eventInterface: \"FontFaceSetLoadEvent\"): FontFaceSetLoadEvent;\n createEvent(eventInterface: \"FormDataEvent\"): FormDataEvent;\n createEvent(eventInterface: \"GamepadEvent\"): GamepadEvent;\n createEvent(eventInterface: \"HashChangeEvent\"): HashChangeEvent;\n createEvent(eventInterface: \"IDBVersionChangeEvent\"): IDBVersionChangeEvent;\n createEvent(eventInterface: \"InputEvent\"): InputEvent;\n createEvent(eventInterface: \"KeyboardEvent\"): KeyboardEvent;\n createEvent(eventInterface: \"MIDIConnectionEvent\"): MIDIConnectionEvent;\n createEvent(eventInterface: \"MIDIMessageEvent\"): MIDIMessageEvent;\n createEvent(eventInterface: \"MediaEncryptedEvent\"): MediaEncryptedEvent;\n createEvent(eventInterface: \"MediaKeyMessageEvent\"): MediaKeyMessageEvent;\n createEvent(eventInterface: \"MediaQueryListEvent\"): MediaQueryListEvent;\n createEvent(eventInterface: \"MediaStreamTrackEvent\"): MediaStreamTrackEvent;\n createEvent(eventInterface: \"MessageEvent\"): MessageEvent;\n createEvent(eventInterface: \"MouseEvent\"): MouseEvent;\n createEvent(eventInterface: \"MouseEvents\"): MouseEvent;\n createEvent(eventInterface: \"OfflineAudioCompletionEvent\"): OfflineAudioCompletionEvent;\n createEvent(eventInterface: \"PageRevealEvent\"): PageRevealEvent;\n createEvent(eventInterface: \"PageSwapEvent\"): PageSwapEvent;\n createEvent(eventInterface: \"PageTransitionEvent\"): PageTransitionEvent;\n createEvent(eventInterface: \"PaymentMethodChangeEvent\"): PaymentMethodChangeEvent;\n createEvent(eventInterface: \"PaymentRequestUpdateEvent\"): PaymentRequestUpdateEvent;\n createEvent(eventInterface: \"PictureInPictureEvent\"): PictureInPictureEvent;\n createEvent(eventInterface: \"PointerEvent\"): PointerEvent;\n createEvent(eventInterface: \"PopStateEvent\"): PopStateEvent;\n createEvent(eventInterface: \"ProgressEvent\"): ProgressEvent;\n createEvent(eventInterface: \"PromiseRejectionEvent\"): PromiseRejectionEvent;\n createEvent(eventInterface: \"RTCDTMFToneChangeEvent\"): RTCDTMFToneChangeEvent;\n createEvent(eventInterface: \"RTCDataChannelEvent\"): RTCDataChannelEvent;\n createEvent(eventInterface: \"RTCErrorEvent\"): RTCErrorEvent;\n createEvent(eventInterface: \"RTCPeerConnectionIceErrorEvent\"): RTCPeerConnectionIceErrorEvent;\n createEvent(eventInterface: \"RTCPeerConnectionIceEvent\"): RTCPeerConnectionIceEvent;\n createEvent(eventInterface: \"RTCTrackEvent\"): RTCTrackEvent;\n createEvent(eventInterface: \"SecurityPolicyViolationEvent\"): SecurityPolicyViolationEvent;\n createEvent(eventInterface: \"SpeechSynthesisErrorEvent\"): SpeechSynthesisErrorEvent;\n createEvent(eventInterface: \"SpeechSynthesisEvent\"): SpeechSynthesisEvent;\n createEvent(eventInterface: \"StorageEvent\"): StorageEvent;\n createEvent(eventInterface: \"SubmitEvent\"): SubmitEvent;\n createEvent(eventInterface: \"TextEvent\"): TextEvent;\n createEvent(eventInterface: \"ToggleEvent\"): ToggleEvent;\n createEvent(eventInterface: \"TouchEvent\"): TouchEvent;\n createEvent(eventInterface: \"TrackEvent\"): TrackEvent;\n createEvent(eventInterface: \"TransitionEvent\"): TransitionEvent;\n createEvent(eventInterface: \"UIEvent\"): UIEvent;\n createEvent(eventInterface: \"UIEvents\"): UIEvent;\n createEvent(eventInterface: \"WebGLContextEvent\"): WebGLContextEvent;\n createEvent(eventInterface: \"WheelEvent\"): WheelEvent;\n createEvent(eventInterface: string): Event;\n\n /**\n * The **`Document.createNodeIterator()`** method returns a new `NodeIterator` object.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/createNodeIterator)\n */\n createNodeIterator(root: Node, whatToShow?: number, filter?: NodeFilter | null): NodeIterator;\n\n /**\n * `createProcessingInstruction()` generates a new processing instruction node and returns it.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/createProcessingInstruction)\n */\n createProcessingInstruction(target: string, data: string): ProcessingInstruction;\n\n /**\n * The **`Document.createRange()`** method returns a new ```js-nolint createRange() ``` None.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/createRange)\n */\n createRange(): Range;\n\n /**\n * Creates a new Text node.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/createTextNode)\n */\n createTextNode(data: string): Text;\n\n /**\n * The **`Document.createTreeWalker()`** creator method returns a newly created TreeWalker object.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/createTreeWalker)\n */\n createTreeWalker(root: Node, whatToShow?: number, filter?: NodeFilter | null): TreeWalker;\n\n /**\n * The **`execCommand`** method implements multiple different commands.\n * @deprecated\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/execCommand)\n */\n execCommand(commandId: string, showUI?: boolean, value?: string): boolean;\n\n /**\n * The Document method **`exitFullscreen()`** requests that the element on this document which is currently being presented in fullscreen mode be taken out of fullscreen mode, restoring the previous state of the screen.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/exitFullscreen)\n */\n exitFullscreen(): Promise<void>;\n\n /**\n * The **`exitPictureInPicture()`** method of the Document interface requests that a video contained in this document, which is currently floating, be taken out of picture-in-picture mode, restoring the previous state of the screen.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/exitPictureInPicture)\n */\n exitPictureInPicture(): Promise<void>;\n\n /**\n * The **`exitPointerLock()`** method of the Document interface asynchronously releases a pointer lock previously requested through Element.requestPointerLock.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/exitPointerLock)\n */\n exitPointerLock(): void;\n\n getElementById(elementId: string): HTMLElement | null;\n\n /**\n * The **`getElementsByClassName`** method of of all child elements which have all of the given class name(s).\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/getElementsByClassName)\n */\n getElementsByClassName(classNames: string): HTMLCollectionOf<Element>;\n\n /**\n * The **`getElementsByName()`** method of the Document object returns a NodeList Collection of elements with a given `name` attribute in the document.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/getElementsByName)\n */\n getElementsByName(elementName: string): NodeListOf<HTMLElement>;\n\n /**\n * The **`getElementsByTagName`** method of The complete document is searched, including the root node.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/getElementsByTagName)\n */\n getElementsByTagName<K extends keyof HTMLElementTagNameMap>(qualifiedName: K): HTMLCollectionOf<HTMLElementTagNameMap[K]>;\n getElementsByTagName<K extends keyof SVGElementTagNameMap>(qualifiedName: K): HTMLCollectionOf<SVGElementTagNameMap[K]>;\n getElementsByTagName<K extends keyof MathMLElementTagNameMap>(qualifiedName: K): HTMLCollectionOf<MathMLElementTagNameMap[K]>;\n /** @deprecated */\n getElementsByTagName<K extends keyof HTMLElementDeprecatedTagNameMap>(qualifiedName: K): HTMLCollectionOf<HTMLElementDeprecatedTagNameMap[K]>;\n getElementsByTagName(qualifiedName: string): HTMLCollectionOf<Element>;\n\n /**\n * Returns a list of elements with the given tag name belonging to the given namespace.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/getElementsByTagNameNS)\n */\n getElementsByTagNameNS(namespaceURI: \"http://www.w3.org/1999/xhtml\", localName: string): HTMLCollectionOf<HTMLElement>;\n getElementsByTagNameNS(namespaceURI: \"http://www.w3.org/2000/svg\", localName: string): HTMLCollectionOf<SVGElement>;\n getElementsByTagNameNS(namespaceURI: \"http://www.w3.org/1998/Math/MathML\", localName: string): HTMLCollectionOf<MathMLElement>;\n getElementsByTagNameNS(namespace: string | null, localName: string): HTMLCollectionOf<Element>;\n\n /**\n * The **`getSelection()`** method of the Document interface returns the Selection object associated with this document, representing the range of text selected by the user, or the current position of the caret.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/getSelection)\n */\n getSelection(): Selection | null;\n\n /**\n * The **`hasFocus()`** method of the Document interface returns a boolean value indicating whether the document or any element inside the document has focus.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/hasFocus)\n */\n hasFocus(): boolean;\n\n /**\n * The **`hasStorageAccess()`** method of the Document interface returns a Promise that resolves with a boolean value indicating whether the document has access to third-party, unpartitioned cookies.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/hasStorageAccess)\n */\n hasStorageAccess(): Promise<boolean>;\n\n /**\n * The Document object's **`importNode()`** method creates a copy of a inserted into the current document later.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/importNode)\n */\n importNode<T extends Node>(node: T, options?: boolean | ImportNodeOptions): T;\n\n /**\n * The **`Document.open()`** method opens a document for This does come with some side effects.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/open)\n */\n open(unused1?: string, unused2?: string): Document;\n open(url: string | URL, name: string, features: string): WindowProxy | null;\n\n /**\n * The **`Document.queryCommandEnabled()`** method reports whether or not the specified editor command is enabled by the browser.\n * @deprecated\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/queryCommandEnabled)\n */\n queryCommandEnabled(commandId: string): boolean;\n\n /** @deprecated */\n queryCommandIndeterm(commandId: string): boolean;\n\n /**\n * The **`queryCommandState()`** method will tell you if the current selection has a certain Document.execCommand() command applied.\n * @deprecated\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/queryCommandState)\n */\n queryCommandState(commandId: string): boolean;\n\n /**\n * The **`Document.queryCommandSupported()`** method reports whether or not the specified editor command is supported by the browser.\n * @deprecated\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/queryCommandSupported)\n */\n queryCommandSupported(commandId: string): boolean;\n\n /** @deprecated */\n queryCommandValue(commandId: string): string;\n\n /** @deprecated */\n releaseEvents(): void;\n\n /**\n * The **`requestStorageAccess()`** method of the Document interface allows content loaded in a third-party context (i.e., embedded in an iframe) to request access to third-party cookies and unpartitioned state.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/requestStorageAccess)\n */\n requestStorageAccess(): Promise<void>;\n\n /**\n * The **`startViewTransition()`** method of the Document interface starts a new same-document (SPA) view transition and returns a ViewTransition object to represent it.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/startViewTransition)\n */\n startViewTransition(callbackOptions?: ViewTransitionUpdateCallback | StartViewTransitionOptions): ViewTransition;\n\n /**\n * The **`write()`** method of the Document interface writes text in one or more TrustedHTML or string parameters to a document stream opened by document.open().\n * @deprecated\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/write)\n */\n write(...text: string[]): void;\n\n /**\n * The **`writeln()`** method of the Document interface writes text in one or more TrustedHTML or string parameters to a document stream opened by document.open(), followed by a newline character.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/writeln)\n */\n writeln(...text: string[]): void;\n\n /** [MDN Reference](https://developer.mozilla.org/en-US/docs/Web/API/Node/textContent) */\n get textContent(): null;\n\n addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}"],
5
- "mappings": ";;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAiCA,IAAAA,eAAqB;AACrB,IAAAC,kBAAwB;AACxB,IAAAC,2BAAiC;",
6
- "names": ["import_Text", "import_Comment", "import_DocumentFragment"]
3
+ "sources": [],
4
+ "sourcesContent": [],
5
+ "mappings": "",
6
+ "names": []
7
7
  }