happy-dom 13.0.6 → 13.1.0

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.

Potentially problematic release.


This version of happy-dom might be problematic. Click here for more details.

Files changed (615) hide show
  1. package/cjs/PropertySymbol.cjs +69 -2
  2. package/cjs/PropertySymbol.cjs.map +1 -1
  3. package/cjs/PropertySymbol.d.ts +67 -1
  4. package/cjs/PropertySymbol.d.ts.map +1 -1
  5. package/cjs/async-task-manager/AsyncTaskManager.cjs +11 -5
  6. package/cjs/async-task-manager/AsyncTaskManager.cjs.map +1 -1
  7. package/cjs/async-task-manager/AsyncTaskManager.d.ts.map +1 -1
  8. package/cjs/browser/utilities/BrowserFrameNavigator.cjs +1 -1
  9. package/cjs/browser/utilities/BrowserFrameNavigator.cjs.map +1 -1
  10. package/cjs/css/declaration/AbstractCSSStyleDeclaration.cjs +17 -16
  11. package/cjs/css/declaration/AbstractCSSStyleDeclaration.cjs.map +1 -1
  12. package/cjs/css/declaration/AbstractCSSStyleDeclaration.d.ts.map +1 -1
  13. package/cjs/css/declaration/element-style/CSSStyleDeclarationElementStyle.cjs +43 -26
  14. package/cjs/css/declaration/element-style/CSSStyleDeclarationElementStyle.cjs.map +1 -1
  15. package/cjs/css/declaration/element-style/CSSStyleDeclarationElementStyle.d.ts.map +1 -1
  16. package/cjs/dom-implementation/DOMImplementation.cjs +6 -6
  17. package/cjs/dom-implementation/DOMImplementation.cjs.map +1 -1
  18. package/cjs/dom-parser/DOMParser.cjs +2 -2
  19. package/cjs/dom-parser/DOMParser.cjs.map +1 -1
  20. package/cjs/dom-parser/DOMParser.d.ts.map +1 -1
  21. package/cjs/event/Event.cjs +3 -3
  22. package/cjs/event/Event.cjs.map +1 -1
  23. package/cjs/event/EventTarget.cjs +4 -4
  24. package/cjs/event/EventTarget.cjs.map +1 -1
  25. package/cjs/fetch/Request.cjs +2 -1
  26. package/cjs/fetch/Request.cjs.map +1 -1
  27. package/cjs/fetch/Request.d.ts +4 -4
  28. package/cjs/fetch/Request.d.ts.map +1 -1
  29. package/cjs/form-data/FormData.cjs +7 -7
  30. package/cjs/form-data/FormData.cjs.map +1 -1
  31. package/cjs/mutation-observer/MutationObserver.cjs +3 -3
  32. package/cjs/mutation-observer/MutationObserver.cjs.map +1 -1
  33. package/cjs/named-node-map/NamedNodeMap.cjs +10 -8
  34. package/cjs/named-node-map/NamedNodeMap.cjs.map +1 -1
  35. package/cjs/named-node-map/NamedNodeMap.d.ts.map +1 -1
  36. package/cjs/nodes/attr/Attr.cjs +84 -15
  37. package/cjs/nodes/attr/Attr.cjs.map +1 -1
  38. package/cjs/nodes/attr/Attr.d.ts +40 -8
  39. package/cjs/nodes/attr/Attr.d.ts.map +1 -1
  40. package/cjs/nodes/character-data/CharacterData.cjs +2 -2
  41. package/cjs/nodes/character-data/CharacterData.cjs.map +1 -1
  42. package/cjs/nodes/child-node/ChildNodeUtility.cjs +8 -8
  43. package/cjs/nodes/child-node/ChildNodeUtility.cjs.map +1 -1
  44. package/cjs/nodes/child-node/NonDocumentChildNodeUtility.cjs +27 -3
  45. package/cjs/nodes/child-node/NonDocumentChildNodeUtility.cjs.map +1 -1
  46. package/cjs/nodes/child-node/NonDocumentChildNodeUtility.d.ts.map +1 -1
  47. package/cjs/nodes/comment/Comment.cjs +28 -2
  48. package/cjs/nodes/comment/Comment.cjs.map +1 -1
  49. package/cjs/nodes/comment/Comment.d.ts +3 -1
  50. package/cjs/nodes/comment/Comment.d.ts.map +1 -1
  51. package/cjs/nodes/document/Document.cjs +95 -41
  52. package/cjs/nodes/document/Document.cjs.map +1 -1
  53. package/cjs/nodes/document/Document.d.ts +45 -10
  54. package/cjs/nodes/document/Document.d.ts.map +1 -1
  55. package/cjs/nodes/document/IDocument.d.ts +2 -1
  56. package/cjs/nodes/document/IDocument.d.ts.map +1 -1
  57. package/cjs/nodes/document-fragment/DocumentFragment.cjs +8 -6
  58. package/cjs/nodes/document-fragment/DocumentFragment.cjs.map +1 -1
  59. package/cjs/nodes/document-fragment/DocumentFragment.d.ts +2 -1
  60. package/cjs/nodes/document-fragment/DocumentFragment.d.ts.map +1 -1
  61. package/cjs/nodes/document-type/DocumentType.cjs +58 -7
  62. package/cjs/nodes/document-type/DocumentType.cjs.map +1 -1
  63. package/cjs/nodes/document-type/DocumentType.d.ts +24 -4
  64. package/cjs/nodes/document-type/DocumentType.d.ts.map +1 -1
  65. package/cjs/nodes/element/Dataset.cjs +14 -14
  66. package/cjs/nodes/element/Dataset.cjs.map +1 -1
  67. package/cjs/nodes/element/Dataset.d.ts +1 -1
  68. package/cjs/nodes/element/Dataset.d.ts.map +1 -1
  69. package/cjs/nodes/element/Element.cjs +142 -55
  70. package/cjs/nodes/element/Element.cjs.map +1 -1
  71. package/cjs/nodes/element/Element.d.ts +77 -11
  72. package/cjs/nodes/element/Element.d.ts.map +1 -1
  73. package/cjs/nodes/element/ElementNamedNodeMap.cjs +33 -30
  74. package/cjs/nodes/element/ElementNamedNodeMap.cjs.map +1 -1
  75. package/cjs/nodes/element/ElementNamedNodeMap.d.ts.map +1 -1
  76. package/cjs/nodes/element/ElementUtility.cjs +19 -19
  77. package/cjs/nodes/element/ElementUtility.cjs.map +1 -1
  78. package/cjs/nodes/element/ElementUtility.d.ts.map +1 -1
  79. package/cjs/nodes/element/IElement.d.ts +3 -3
  80. package/cjs/nodes/element/IElement.d.ts.map +1 -1
  81. package/cjs/nodes/html-anchor-element/HTMLAnchorElement.cjs +6 -6
  82. package/cjs/nodes/html-anchor-element/HTMLAnchorElement.cjs.map +1 -1
  83. package/cjs/nodes/html-anchor-element/HTMLAnchorElement.d.ts +1 -1
  84. package/cjs/nodes/html-anchor-element/HTMLAnchorElement.d.ts.map +1 -1
  85. package/cjs/nodes/html-anchor-element/HTMLAnchorElementNamedNodeMap.cjs +7 -5
  86. package/cjs/nodes/html-anchor-element/HTMLAnchorElementNamedNodeMap.cjs.map +1 -1
  87. package/cjs/nodes/html-anchor-element/HTMLAnchorElementNamedNodeMap.d.ts.map +1 -1
  88. package/cjs/nodes/html-base-element/HTMLBaseElement.cjs +25 -1
  89. package/cjs/nodes/html-base-element/HTMLBaseElement.cjs.map +1 -1
  90. package/cjs/nodes/html-base-element/HTMLBaseElement.d.ts.map +1 -1
  91. package/cjs/nodes/html-button-element/HTMLButtonElement.cjs +27 -8
  92. package/cjs/nodes/html-button-element/HTMLButtonElement.cjs.map +1 -1
  93. package/cjs/nodes/html-button-element/HTMLButtonElement.d.ts +16 -3
  94. package/cjs/nodes/html-button-element/HTMLButtonElement.d.ts.map +1 -1
  95. package/cjs/nodes/html-button-element/HTMLButtonElementNamedNodeMap.cjs +7 -7
  96. package/cjs/nodes/html-button-element/HTMLButtonElementNamedNodeMap.cjs.map +1 -1
  97. package/cjs/nodes/html-dialog-element/HTMLDialogElement.cjs +44 -1
  98. package/cjs/nodes/html-dialog-element/HTMLDialogElement.cjs.map +1 -1
  99. package/cjs/nodes/html-dialog-element/HTMLDialogElement.d.ts +14 -1
  100. package/cjs/nodes/html-dialog-element/HTMLDialogElement.d.ts.map +1 -1
  101. package/cjs/nodes/html-document/HTMLDocument.cjs +25 -1
  102. package/cjs/nodes/html-document/HTMLDocument.cjs.map +1 -1
  103. package/cjs/nodes/html-document/HTMLDocument.d.ts.map +1 -1
  104. package/cjs/nodes/html-element/HTMLElement.cjs +137 -32
  105. package/cjs/nodes/html-element/HTMLElement.cjs.map +1 -1
  106. package/cjs/nodes/html-element/HTMLElement.d.ts +91 -14
  107. package/cjs/nodes/html-element/HTMLElement.d.ts.map +1 -1
  108. package/cjs/nodes/html-element/HTMLElementNamedNodeMap.cjs +4 -3
  109. package/cjs/nodes/html-element/HTMLElementNamedNodeMap.cjs.map +1 -1
  110. package/cjs/nodes/html-element/HTMLElementNamedNodeMap.d.ts.map +1 -1
  111. package/cjs/nodes/html-element/HTMLElementUtility.cjs +12 -10
  112. package/cjs/nodes/html-element/HTMLElementUtility.cjs.map +1 -1
  113. package/cjs/nodes/html-element/HTMLElementUtility.d.ts.map +1 -1
  114. package/cjs/nodes/html-element/IHTMLElement.d.ts +3 -0
  115. package/cjs/nodes/html-element/IHTMLElement.d.ts.map +1 -1
  116. package/cjs/nodes/html-form-element/HTMLFormElement.cjs +62 -30
  117. package/cjs/nodes/html-form-element/HTMLFormElement.cjs.map +1 -1
  118. package/cjs/nodes/html-form-element/HTMLFormElement.d.ts +22 -3
  119. package/cjs/nodes/html-form-element/HTMLFormElement.d.ts.map +1 -1
  120. package/cjs/nodes/html-iframe-element/HTMLIFrameElement.cjs +5 -5
  121. package/cjs/nodes/html-iframe-element/HTMLIFrameElement.cjs.map +1 -1
  122. package/cjs/nodes/html-iframe-element/HTMLIFrameElement.d.ts +1 -1
  123. package/cjs/nodes/html-iframe-element/HTMLIFrameElement.d.ts.map +1 -1
  124. package/cjs/nodes/html-iframe-element/HTMLIFrameElementNamedNodeMap.cjs +27 -1
  125. package/cjs/nodes/html-iframe-element/HTMLIFrameElementNamedNodeMap.cjs.map +1 -1
  126. package/cjs/nodes/html-iframe-element/HTMLIFrameElementNamedNodeMap.d.ts.map +1 -1
  127. package/cjs/nodes/html-iframe-element/HTMLIFrameElementPageLoader.cjs +2 -2
  128. package/cjs/nodes/html-iframe-element/HTMLIFrameElementPageLoader.cjs.map +1 -1
  129. package/cjs/nodes/html-image-element/HTMLImageElement.cjs +128 -26
  130. package/cjs/nodes/html-image-element/HTMLImageElement.cjs.map +1 -1
  131. package/cjs/nodes/html-image-element/HTMLImageElement.d.ts +76 -21
  132. package/cjs/nodes/html-image-element/HTMLImageElement.d.ts.map +1 -1
  133. package/cjs/nodes/html-input-element/HTMLInputElement.cjs +112 -27
  134. package/cjs/nodes/html-input-element/HTMLInputElement.cjs.map +1 -1
  135. package/cjs/nodes/html-input-element/HTMLInputElement.d.ts +67 -10
  136. package/cjs/nodes/html-input-element/HTMLInputElement.d.ts.map +1 -1
  137. package/cjs/nodes/html-input-element/HTMLInputElementNamedNodeMap.cjs +7 -7
  138. package/cjs/nodes/html-input-element/HTMLInputElementNamedNodeMap.cjs.map +1 -1
  139. package/cjs/nodes/html-label-element/HTMLLabelElement.cjs +1 -1
  140. package/cjs/nodes/html-label-element/HTMLLabelElement.cjs.map +1 -1
  141. package/cjs/nodes/html-label-element/HTMLLabelElementUtility.cjs +26 -2
  142. package/cjs/nodes/html-label-element/HTMLLabelElementUtility.cjs.map +1 -1
  143. package/cjs/nodes/html-label-element/HTMLLabelElementUtility.d.ts.map +1 -1
  144. package/cjs/nodes/html-link-element/HTMLLinkElement.cjs +15 -8
  145. package/cjs/nodes/html-link-element/HTMLLinkElement.cjs.map +1 -1
  146. package/cjs/nodes/html-link-element/HTMLLinkElement.d.ts +6 -2
  147. package/cjs/nodes/html-link-element/HTMLLinkElement.d.ts.map +1 -1
  148. package/cjs/nodes/html-link-element/HTMLLinkElementNamedNodeMap.cjs +7 -6
  149. package/cjs/nodes/html-link-element/HTMLLinkElementNamedNodeMap.cjs.map +1 -1
  150. package/cjs/nodes/html-link-element/HTMLLinkElementNamedNodeMap.d.ts.map +1 -1
  151. package/cjs/nodes/html-link-element/HTMLLinkElementStyleSheetLoader.cjs +8 -5
  152. package/cjs/nodes/html-link-element/HTMLLinkElementStyleSheetLoader.cjs.map +1 -1
  153. package/cjs/nodes/html-link-element/HTMLLinkElementStyleSheetLoader.d.ts.map +1 -1
  154. package/cjs/nodes/html-media-element/HTMLMediaElement.cjs +154 -53
  155. package/cjs/nodes/html-media-element/HTMLMediaElement.cjs.map +1 -1
  156. package/cjs/nodes/html-media-element/HTMLMediaElement.d.ts +86 -12
  157. package/cjs/nodes/html-media-element/HTMLMediaElement.d.ts.map +1 -1
  158. package/cjs/nodes/html-option-element/HTMLOptionElement.cjs +4 -4
  159. package/cjs/nodes/html-option-element/HTMLOptionElement.cjs.map +1 -1
  160. package/cjs/nodes/html-option-element/HTMLOptionElement.d.ts +1 -1
  161. package/cjs/nodes/html-option-element/HTMLOptionElement.d.ts.map +1 -1
  162. package/cjs/nodes/html-option-element/HTMLOptionElementNamedNodeMap.cjs +3 -3
  163. package/cjs/nodes/html-option-element/HTMLOptionElementNamedNodeMap.cjs.map +1 -1
  164. package/cjs/nodes/html-script-element/HTMLScriptElement.cjs +12 -11
  165. package/cjs/nodes/html-script-element/HTMLScriptElement.cjs.map +1 -1
  166. package/cjs/nodes/html-script-element/HTMLScriptElement.d.ts +1 -1
  167. package/cjs/nodes/html-script-element/HTMLScriptElement.d.ts.map +1 -1
  168. package/cjs/nodes/html-script-element/HTMLScriptElementNamedNodeMap.cjs +4 -4
  169. package/cjs/nodes/html-script-element/HTMLScriptElementNamedNodeMap.cjs.map +1 -1
  170. package/cjs/nodes/html-script-element/HTMLScriptElementScriptLoader.cjs +8 -8
  171. package/cjs/nodes/html-script-element/HTMLScriptElementScriptLoader.cjs.map +1 -1
  172. package/cjs/nodes/html-script-element/HTMLScriptElementScriptLoader.d.ts.map +1 -1
  173. package/cjs/nodes/html-select-element/HTMLSelectElement.cjs +63 -32
  174. package/cjs/nodes/html-select-element/HTMLSelectElement.cjs.map +1 -1
  175. package/cjs/nodes/html-select-element/HTMLSelectElement.d.ts +30 -5
  176. package/cjs/nodes/html-select-element/HTMLSelectElement.d.ts.map +1 -1
  177. package/cjs/nodes/html-select-element/HTMLSelectElementNamedNodeMap.cjs +7 -7
  178. package/cjs/nodes/html-select-element/HTMLSelectElementNamedNodeMap.cjs.map +1 -1
  179. package/cjs/nodes/html-style-element/HTMLStyleElement.cjs +6 -6
  180. package/cjs/nodes/html-style-element/HTMLStyleElement.cjs.map +1 -1
  181. package/cjs/nodes/html-style-element/HTMLStyleElement.d.ts +1 -1
  182. package/cjs/nodes/html-style-element/HTMLStyleElement.d.ts.map +1 -1
  183. package/cjs/nodes/html-template-element/HTMLTemplateElement.cjs +27 -12
  184. package/cjs/nodes/html-template-element/HTMLTemplateElement.cjs.map +1 -1
  185. package/cjs/nodes/html-template-element/HTMLTemplateElement.d.ts +8 -1
  186. package/cjs/nodes/html-template-element/HTMLTemplateElement.d.ts.map +1 -1
  187. package/cjs/nodes/html-template-element/IHTMLTemplateElement.d.ts +1 -1
  188. package/cjs/nodes/html-template-element/IHTMLTemplateElement.d.ts.map +1 -1
  189. package/cjs/nodes/html-text-area-element/HTMLTextAreaElement.cjs +27 -9
  190. package/cjs/nodes/html-text-area-element/HTMLTextAreaElement.cjs.map +1 -1
  191. package/cjs/nodes/html-text-area-element/HTMLTextAreaElement.d.ts +16 -3
  192. package/cjs/nodes/html-text-area-element/HTMLTextAreaElement.d.ts.map +1 -1
  193. package/cjs/nodes/html-text-area-element/HTMLTextAreaElementNamedNodeMap.cjs +7 -7
  194. package/cjs/nodes/html-text-area-element/HTMLTextAreaElementNamedNodeMap.cjs.map +1 -1
  195. package/cjs/nodes/html-unknown-element/HTMLUnknownElement.cjs +24 -17
  196. package/cjs/nodes/html-unknown-element/HTMLUnknownElement.cjs.map +1 -1
  197. package/cjs/nodes/html-unknown-element/HTMLUnknownElement.d.ts.map +1 -1
  198. package/cjs/nodes/node/INode.d.ts +2 -2
  199. package/cjs/nodes/node/INode.d.ts.map +1 -1
  200. package/cjs/nodes/node/Node.cjs +95 -56
  201. package/cjs/nodes/node/Node.cjs.map +1 -1
  202. package/cjs/nodes/node/Node.d.ts +44 -20
  203. package/cjs/nodes/node/Node.d.ts.map +1 -1
  204. package/cjs/nodes/node/NodeUtility.cjs +37 -37
  205. package/cjs/nodes/node/NodeUtility.cjs.map +1 -1
  206. package/cjs/nodes/node/NodeUtility.d.ts.map +1 -1
  207. package/cjs/nodes/parent-node/ParentNodeUtility.cjs +8 -5
  208. package/cjs/nodes/parent-node/ParentNodeUtility.cjs.map +1 -1
  209. package/cjs/nodes/parent-node/ParentNodeUtility.d.ts.map +1 -1
  210. package/cjs/nodes/processing-instruction/ProcessingInstruction.cjs +35 -1
  211. package/cjs/nodes/processing-instruction/ProcessingInstruction.cjs.map +1 -1
  212. package/cjs/nodes/processing-instruction/ProcessingInstruction.d.ts +9 -2
  213. package/cjs/nodes/processing-instruction/ProcessingInstruction.d.ts.map +1 -1
  214. package/cjs/nodes/shadow-root/IShadowRoot.d.ts +2 -0
  215. package/cjs/nodes/shadow-root/IShadowRoot.d.ts.map +1 -1
  216. package/cjs/nodes/shadow-root/ShadowRoot.cjs +44 -7
  217. package/cjs/nodes/shadow-root/ShadowRoot.cjs.map +1 -1
  218. package/cjs/nodes/shadow-root/ShadowRoot.d.ts +28 -3
  219. package/cjs/nodes/shadow-root/ShadowRoot.d.ts.map +1 -1
  220. package/cjs/nodes/svg-element/SVGElement.cjs +7 -6
  221. package/cjs/nodes/svg-element/SVGElement.cjs.map +1 -1
  222. package/cjs/nodes/svg-element/SVGElement.d.ts +2 -2
  223. package/cjs/nodes/svg-element/SVGElement.d.ts.map +1 -1
  224. package/cjs/nodes/svg-element/SVGElementNamedNodeMap.cjs +4 -3
  225. package/cjs/nodes/svg-element/SVGElementNamedNodeMap.cjs.map +1 -1
  226. package/cjs/nodes/svg-element/SVGElementNamedNodeMap.d.ts.map +1 -1
  227. package/cjs/nodes/text/Text.cjs +7 -6
  228. package/cjs/nodes/text/Text.cjs.map +1 -1
  229. package/cjs/nodes/text/Text.d.ts +2 -1
  230. package/cjs/nodes/text/Text.d.ts.map +1 -1
  231. package/cjs/query-selector/QuerySelector.cjs +2 -2
  232. package/cjs/query-selector/QuerySelector.cjs.map +1 -1
  233. package/cjs/query-selector/SelectorItem.cjs +16 -16
  234. package/cjs/query-selector/SelectorItem.cjs.map +1 -1
  235. package/cjs/query-selector/SelectorItem.d.ts.map +1 -1
  236. package/cjs/range/Range.cjs +91 -79
  237. package/cjs/range/Range.cjs.map +1 -1
  238. package/cjs/range/Range.d.ts.map +1 -1
  239. package/cjs/range/RangeUtility.cjs +5 -4
  240. package/cjs/range/RangeUtility.cjs.map +1 -1
  241. package/cjs/range/RangeUtility.d.ts.map +1 -1
  242. package/cjs/selection/Selection.cjs +15 -15
  243. package/cjs/selection/Selection.cjs.map +1 -1
  244. package/cjs/tree-walker/TreeWalker.cjs +12 -6
  245. package/cjs/tree-walker/TreeWalker.cjs.map +1 -1
  246. package/cjs/tree-walker/TreeWalker.d.ts.map +1 -1
  247. package/cjs/validity-state/ValidityState.cjs +1 -1
  248. package/cjs/validity-state/ValidityState.cjs.map +1 -1
  249. package/cjs/version.cjs +1 -1
  250. package/cjs/window/BrowserWindow.cjs +20 -26
  251. package/cjs/window/BrowserWindow.cjs.map +1 -1
  252. package/cjs/window/BrowserWindow.d.ts.map +1 -1
  253. package/cjs/window/WindowErrorUtility.cjs +1 -1
  254. package/cjs/window/WindowErrorUtility.cjs.map +1 -1
  255. package/cjs/window/WindowErrorUtility.d.ts.map +1 -1
  256. package/cjs/xml-http-request/XMLHttpRequest.cjs +1 -1
  257. package/cjs/xml-http-request/XMLHttpRequest.cjs.map +1 -1
  258. package/cjs/xml-parser/XMLParser.cjs +16 -12
  259. package/cjs/xml-parser/XMLParser.cjs.map +1 -1
  260. package/cjs/xml-parser/XMLParser.d.ts.map +1 -1
  261. package/cjs/xml-serializer/XMLSerializer.cjs +36 -35
  262. package/cjs/xml-serializer/XMLSerializer.cjs.map +1 -1
  263. package/cjs/xml-serializer/XMLSerializer.d.ts +8 -1
  264. package/cjs/xml-serializer/XMLSerializer.d.ts.map +1 -1
  265. package/lib/PropertySymbol.d.ts +67 -1
  266. package/lib/PropertySymbol.d.ts.map +1 -1
  267. package/lib/PropertySymbol.js +67 -1
  268. package/lib/PropertySymbol.js.map +1 -1
  269. package/lib/async-task-manager/AsyncTaskManager.d.ts.map +1 -1
  270. package/lib/async-task-manager/AsyncTaskManager.js +11 -5
  271. package/lib/async-task-manager/AsyncTaskManager.js.map +1 -1
  272. package/lib/browser/utilities/BrowserFrameNavigator.js +1 -1
  273. package/lib/browser/utilities/BrowserFrameNavigator.js.map +1 -1
  274. package/lib/css/declaration/AbstractCSSStyleDeclaration.d.ts.map +1 -1
  275. package/lib/css/declaration/AbstractCSSStyleDeclaration.js +17 -16
  276. package/lib/css/declaration/AbstractCSSStyleDeclaration.js.map +1 -1
  277. package/lib/css/declaration/element-style/CSSStyleDeclarationElementStyle.d.ts.map +1 -1
  278. package/lib/css/declaration/element-style/CSSStyleDeclarationElementStyle.js +43 -26
  279. package/lib/css/declaration/element-style/CSSStyleDeclarationElementStyle.js.map +1 -1
  280. package/lib/dom-implementation/DOMImplementation.js +6 -6
  281. package/lib/dom-implementation/DOMImplementation.js.map +1 -1
  282. package/lib/dom-parser/DOMParser.d.ts.map +1 -1
  283. package/lib/dom-parser/DOMParser.js +2 -2
  284. package/lib/dom-parser/DOMParser.js.map +1 -1
  285. package/lib/event/Event.js +3 -3
  286. package/lib/event/Event.js.map +1 -1
  287. package/lib/event/EventTarget.js +4 -4
  288. package/lib/event/EventTarget.js.map +1 -1
  289. package/lib/fetch/Request.d.ts +4 -4
  290. package/lib/fetch/Request.d.ts.map +1 -1
  291. package/lib/fetch/Request.js +2 -1
  292. package/lib/fetch/Request.js.map +1 -1
  293. package/lib/form-data/FormData.js +7 -7
  294. package/lib/form-data/FormData.js.map +1 -1
  295. package/lib/mutation-observer/MutationObserver.js +3 -3
  296. package/lib/mutation-observer/MutationObserver.js.map +1 -1
  297. package/lib/named-node-map/NamedNodeMap.d.ts.map +1 -1
  298. package/lib/named-node-map/NamedNodeMap.js +10 -8
  299. package/lib/named-node-map/NamedNodeMap.js.map +1 -1
  300. package/lib/nodes/attr/Attr.d.ts +40 -8
  301. package/lib/nodes/attr/Attr.d.ts.map +1 -1
  302. package/lib/nodes/attr/Attr.js +63 -16
  303. package/lib/nodes/attr/Attr.js.map +1 -1
  304. package/lib/nodes/character-data/CharacterData.js +2 -2
  305. package/lib/nodes/character-data/CharacterData.js.map +1 -1
  306. package/lib/nodes/child-node/ChildNodeUtility.js +8 -8
  307. package/lib/nodes/child-node/ChildNodeUtility.js.map +1 -1
  308. package/lib/nodes/child-node/NonDocumentChildNodeUtility.d.ts.map +1 -1
  309. package/lib/nodes/child-node/NonDocumentChildNodeUtility.js +4 -3
  310. package/lib/nodes/child-node/NonDocumentChildNodeUtility.js.map +1 -1
  311. package/lib/nodes/comment/Comment.d.ts +3 -1
  312. package/lib/nodes/comment/Comment.d.ts.map +1 -1
  313. package/lib/nodes/comment/Comment.js +7 -3
  314. package/lib/nodes/comment/Comment.js.map +1 -1
  315. package/lib/nodes/document/Document.d.ts +45 -10
  316. package/lib/nodes/document/Document.d.ts.map +1 -1
  317. package/lib/nodes/document/Document.js +95 -41
  318. package/lib/nodes/document/Document.js.map +1 -1
  319. package/lib/nodes/document/IDocument.d.ts +2 -1
  320. package/lib/nodes/document/IDocument.d.ts.map +1 -1
  321. package/lib/nodes/document-fragment/DocumentFragment.d.ts +2 -1
  322. package/lib/nodes/document-fragment/DocumentFragment.d.ts.map +1 -1
  323. package/lib/nodes/document-fragment/DocumentFragment.js +8 -6
  324. package/lib/nodes/document-fragment/DocumentFragment.js.map +1 -1
  325. package/lib/nodes/document-type/DocumentType.d.ts +24 -4
  326. package/lib/nodes/document-type/DocumentType.d.ts.map +1 -1
  327. package/lib/nodes/document-type/DocumentType.js +37 -8
  328. package/lib/nodes/document-type/DocumentType.js.map +1 -1
  329. package/lib/nodes/element/Dataset.d.ts +1 -1
  330. package/lib/nodes/element/Dataset.d.ts.map +1 -1
  331. package/lib/nodes/element/Dataset.js +14 -14
  332. package/lib/nodes/element/Dataset.js.map +1 -1
  333. package/lib/nodes/element/Element.d.ts +77 -11
  334. package/lib/nodes/element/Element.d.ts.map +1 -1
  335. package/lib/nodes/element/Element.js +142 -55
  336. package/lib/nodes/element/Element.js.map +1 -1
  337. package/lib/nodes/element/ElementNamedNodeMap.d.ts.map +1 -1
  338. package/lib/nodes/element/ElementNamedNodeMap.js +33 -30
  339. package/lib/nodes/element/ElementNamedNodeMap.js.map +1 -1
  340. package/lib/nodes/element/ElementUtility.d.ts.map +1 -1
  341. package/lib/nodes/element/ElementUtility.js +19 -19
  342. package/lib/nodes/element/ElementUtility.js.map +1 -1
  343. package/lib/nodes/element/IElement.d.ts +3 -3
  344. package/lib/nodes/element/IElement.d.ts.map +1 -1
  345. package/lib/nodes/html-anchor-element/HTMLAnchorElement.d.ts +1 -1
  346. package/lib/nodes/html-anchor-element/HTMLAnchorElement.d.ts.map +1 -1
  347. package/lib/nodes/html-anchor-element/HTMLAnchorElement.js +6 -6
  348. package/lib/nodes/html-anchor-element/HTMLAnchorElement.js.map +1 -1
  349. package/lib/nodes/html-anchor-element/HTMLAnchorElementNamedNodeMap.d.ts.map +1 -1
  350. package/lib/nodes/html-anchor-element/HTMLAnchorElementNamedNodeMap.js +7 -5
  351. package/lib/nodes/html-anchor-element/HTMLAnchorElementNamedNodeMap.js.map +1 -1
  352. package/lib/nodes/html-base-element/HTMLBaseElement.d.ts.map +1 -1
  353. package/lib/nodes/html-base-element/HTMLBaseElement.js +2 -1
  354. package/lib/nodes/html-base-element/HTMLBaseElement.js.map +1 -1
  355. package/lib/nodes/html-button-element/HTMLButtonElement.d.ts +16 -3
  356. package/lib/nodes/html-button-element/HTMLButtonElement.d.ts.map +1 -1
  357. package/lib/nodes/html-button-element/HTMLButtonElement.js +27 -8
  358. package/lib/nodes/html-button-element/HTMLButtonElement.js.map +1 -1
  359. package/lib/nodes/html-button-element/HTMLButtonElementNamedNodeMap.js +7 -7
  360. package/lib/nodes/html-button-element/HTMLButtonElementNamedNodeMap.js.map +1 -1
  361. package/lib/nodes/html-dialog-element/HTMLDialogElement.d.ts +14 -1
  362. package/lib/nodes/html-dialog-element/HTMLDialogElement.d.ts.map +1 -1
  363. package/lib/nodes/html-dialog-element/HTMLDialogElement.js +23 -2
  364. package/lib/nodes/html-dialog-element/HTMLDialogElement.js.map +1 -1
  365. package/lib/nodes/html-document/HTMLDocument.d.ts.map +1 -1
  366. package/lib/nodes/html-document/HTMLDocument.js +2 -1
  367. package/lib/nodes/html-document/HTMLDocument.js.map +1 -1
  368. package/lib/nodes/html-element/HTMLElement.d.ts +91 -14
  369. package/lib/nodes/html-element/HTMLElement.d.ts.map +1 -1
  370. package/lib/nodes/html-element/HTMLElement.js +137 -32
  371. package/lib/nodes/html-element/HTMLElement.js.map +1 -1
  372. package/lib/nodes/html-element/HTMLElementNamedNodeMap.d.ts.map +1 -1
  373. package/lib/nodes/html-element/HTMLElementNamedNodeMap.js +4 -3
  374. package/lib/nodes/html-element/HTMLElementNamedNodeMap.js.map +1 -1
  375. package/lib/nodes/html-element/HTMLElementUtility.d.ts.map +1 -1
  376. package/lib/nodes/html-element/HTMLElementUtility.js +12 -10
  377. package/lib/nodes/html-element/HTMLElementUtility.js.map +1 -1
  378. package/lib/nodes/html-element/IHTMLElement.d.ts +3 -0
  379. package/lib/nodes/html-element/IHTMLElement.d.ts.map +1 -1
  380. package/lib/nodes/html-form-element/HTMLFormElement.d.ts +22 -3
  381. package/lib/nodes/html-form-element/HTMLFormElement.d.ts.map +1 -1
  382. package/lib/nodes/html-form-element/HTMLFormElement.js +62 -30
  383. package/lib/nodes/html-form-element/HTMLFormElement.js.map +1 -1
  384. package/lib/nodes/html-iframe-element/HTMLIFrameElement.d.ts +1 -1
  385. package/lib/nodes/html-iframe-element/HTMLIFrameElement.d.ts.map +1 -1
  386. package/lib/nodes/html-iframe-element/HTMLIFrameElement.js +5 -5
  387. package/lib/nodes/html-iframe-element/HTMLIFrameElement.js.map +1 -1
  388. package/lib/nodes/html-iframe-element/HTMLIFrameElementNamedNodeMap.d.ts.map +1 -1
  389. package/lib/nodes/html-iframe-element/HTMLIFrameElementNamedNodeMap.js +4 -1
  390. package/lib/nodes/html-iframe-element/HTMLIFrameElementNamedNodeMap.js.map +1 -1
  391. package/lib/nodes/html-iframe-element/HTMLIFrameElementPageLoader.js +2 -2
  392. package/lib/nodes/html-iframe-element/HTMLIFrameElementPageLoader.js.map +1 -1
  393. package/lib/nodes/html-image-element/HTMLImageElement.d.ts +76 -21
  394. package/lib/nodes/html-image-element/HTMLImageElement.d.ts.map +1 -1
  395. package/lib/nodes/html-image-element/HTMLImageElement.js +107 -27
  396. package/lib/nodes/html-image-element/HTMLImageElement.js.map +1 -1
  397. package/lib/nodes/html-input-element/HTMLInputElement.d.ts +67 -10
  398. package/lib/nodes/html-input-element/HTMLInputElement.d.ts.map +1 -1
  399. package/lib/nodes/html-input-element/HTMLInputElement.js +112 -27
  400. package/lib/nodes/html-input-element/HTMLInputElement.js.map +1 -1
  401. package/lib/nodes/html-input-element/HTMLInputElementNamedNodeMap.js +7 -7
  402. package/lib/nodes/html-input-element/HTMLInputElementNamedNodeMap.js.map +1 -1
  403. package/lib/nodes/html-label-element/HTMLLabelElement.js +1 -1
  404. package/lib/nodes/html-label-element/HTMLLabelElement.js.map +1 -1
  405. package/lib/nodes/html-label-element/HTMLLabelElementUtility.d.ts.map +1 -1
  406. package/lib/nodes/html-label-element/HTMLLabelElementUtility.js +3 -2
  407. package/lib/nodes/html-label-element/HTMLLabelElementUtility.js.map +1 -1
  408. package/lib/nodes/html-link-element/HTMLLinkElement.d.ts +6 -2
  409. package/lib/nodes/html-link-element/HTMLLinkElement.d.ts.map +1 -1
  410. package/lib/nodes/html-link-element/HTMLLinkElement.js +15 -8
  411. package/lib/nodes/html-link-element/HTMLLinkElement.js.map +1 -1
  412. package/lib/nodes/html-link-element/HTMLLinkElementNamedNodeMap.d.ts.map +1 -1
  413. package/lib/nodes/html-link-element/HTMLLinkElementNamedNodeMap.js +7 -6
  414. package/lib/nodes/html-link-element/HTMLLinkElementNamedNodeMap.js.map +1 -1
  415. package/lib/nodes/html-link-element/HTMLLinkElementStyleSheetLoader.d.ts.map +1 -1
  416. package/lib/nodes/html-link-element/HTMLLinkElementStyleSheetLoader.js +8 -5
  417. package/lib/nodes/html-link-element/HTMLLinkElementStyleSheetLoader.js.map +1 -1
  418. package/lib/nodes/html-media-element/HTMLMediaElement.d.ts +86 -12
  419. package/lib/nodes/html-media-element/HTMLMediaElement.d.ts.map +1 -1
  420. package/lib/nodes/html-media-element/HTMLMediaElement.js +132 -54
  421. package/lib/nodes/html-media-element/HTMLMediaElement.js.map +1 -1
  422. package/lib/nodes/html-option-element/HTMLOptionElement.d.ts +1 -1
  423. package/lib/nodes/html-option-element/HTMLOptionElement.d.ts.map +1 -1
  424. package/lib/nodes/html-option-element/HTMLOptionElement.js +4 -4
  425. package/lib/nodes/html-option-element/HTMLOptionElement.js.map +1 -1
  426. package/lib/nodes/html-option-element/HTMLOptionElementNamedNodeMap.js +3 -3
  427. package/lib/nodes/html-option-element/HTMLOptionElementNamedNodeMap.js.map +1 -1
  428. package/lib/nodes/html-script-element/HTMLScriptElement.d.ts +1 -1
  429. package/lib/nodes/html-script-element/HTMLScriptElement.d.ts.map +1 -1
  430. package/lib/nodes/html-script-element/HTMLScriptElement.js +12 -11
  431. package/lib/nodes/html-script-element/HTMLScriptElement.js.map +1 -1
  432. package/lib/nodes/html-script-element/HTMLScriptElementNamedNodeMap.js +4 -4
  433. package/lib/nodes/html-script-element/HTMLScriptElementNamedNodeMap.js.map +1 -1
  434. package/lib/nodes/html-script-element/HTMLScriptElementScriptLoader.d.ts.map +1 -1
  435. package/lib/nodes/html-script-element/HTMLScriptElementScriptLoader.js +8 -8
  436. package/lib/nodes/html-script-element/HTMLScriptElementScriptLoader.js.map +1 -1
  437. package/lib/nodes/html-select-element/HTMLSelectElement.d.ts +30 -5
  438. package/lib/nodes/html-select-element/HTMLSelectElement.d.ts.map +1 -1
  439. package/lib/nodes/html-select-element/HTMLSelectElement.js +63 -32
  440. package/lib/nodes/html-select-element/HTMLSelectElement.js.map +1 -1
  441. package/lib/nodes/html-select-element/HTMLSelectElementNamedNodeMap.js +7 -7
  442. package/lib/nodes/html-select-element/HTMLSelectElementNamedNodeMap.js.map +1 -1
  443. package/lib/nodes/html-style-element/HTMLStyleElement.d.ts +1 -1
  444. package/lib/nodes/html-style-element/HTMLStyleElement.d.ts.map +1 -1
  445. package/lib/nodes/html-style-element/HTMLStyleElement.js +6 -6
  446. package/lib/nodes/html-style-element/HTMLStyleElement.js.map +1 -1
  447. package/lib/nodes/html-template-element/HTMLTemplateElement.d.ts +8 -1
  448. package/lib/nodes/html-template-element/HTMLTemplateElement.d.ts.map +1 -1
  449. package/lib/nodes/html-template-element/HTMLTemplateElement.js +29 -13
  450. package/lib/nodes/html-template-element/HTMLTemplateElement.js.map +1 -1
  451. package/lib/nodes/html-template-element/IHTMLTemplateElement.d.ts +1 -1
  452. package/lib/nodes/html-template-element/IHTMLTemplateElement.d.ts.map +1 -1
  453. package/lib/nodes/html-text-area-element/HTMLTextAreaElement.d.ts +16 -3
  454. package/lib/nodes/html-text-area-element/HTMLTextAreaElement.d.ts.map +1 -1
  455. package/lib/nodes/html-text-area-element/HTMLTextAreaElement.js +27 -9
  456. package/lib/nodes/html-text-area-element/HTMLTextAreaElement.js.map +1 -1
  457. package/lib/nodes/html-text-area-element/HTMLTextAreaElementNamedNodeMap.js +7 -7
  458. package/lib/nodes/html-text-area-element/HTMLTextAreaElementNamedNodeMap.js.map +1 -1
  459. package/lib/nodes/html-unknown-element/HTMLUnknownElement.d.ts.map +1 -1
  460. package/lib/nodes/html-unknown-element/HTMLUnknownElement.js +24 -17
  461. package/lib/nodes/html-unknown-element/HTMLUnknownElement.js.map +1 -1
  462. package/lib/nodes/node/INode.d.ts +2 -2
  463. package/lib/nodes/node/INode.d.ts.map +1 -1
  464. package/lib/nodes/node/Node.d.ts +44 -20
  465. package/lib/nodes/node/Node.d.ts.map +1 -1
  466. package/lib/nodes/node/Node.js +95 -56
  467. package/lib/nodes/node/Node.js.map +1 -1
  468. package/lib/nodes/node/NodeUtility.d.ts.map +1 -1
  469. package/lib/nodes/node/NodeUtility.js +37 -37
  470. package/lib/nodes/node/NodeUtility.js.map +1 -1
  471. package/lib/nodes/parent-node/ParentNodeUtility.d.ts.map +1 -1
  472. package/lib/nodes/parent-node/ParentNodeUtility.js +8 -5
  473. package/lib/nodes/parent-node/ParentNodeUtility.js.map +1 -1
  474. package/lib/nodes/processing-instruction/ProcessingInstruction.d.ts +9 -2
  475. package/lib/nodes/processing-instruction/ProcessingInstruction.d.ts.map +1 -1
  476. package/lib/nodes/processing-instruction/ProcessingInstruction.js +14 -2
  477. package/lib/nodes/processing-instruction/ProcessingInstruction.js.map +1 -1
  478. package/lib/nodes/shadow-root/IShadowRoot.d.ts +2 -0
  479. package/lib/nodes/shadow-root/IShadowRoot.d.ts.map +1 -1
  480. package/lib/nodes/shadow-root/ShadowRoot.d.ts +28 -3
  481. package/lib/nodes/shadow-root/ShadowRoot.d.ts.map +1 -1
  482. package/lib/nodes/shadow-root/ShadowRoot.js +46 -8
  483. package/lib/nodes/shadow-root/ShadowRoot.js.map +1 -1
  484. package/lib/nodes/svg-element/SVGElement.d.ts +2 -2
  485. package/lib/nodes/svg-element/SVGElement.d.ts.map +1 -1
  486. package/lib/nodes/svg-element/SVGElement.js +7 -6
  487. package/lib/nodes/svg-element/SVGElement.js.map +1 -1
  488. package/lib/nodes/svg-element/SVGElementNamedNodeMap.d.ts.map +1 -1
  489. package/lib/nodes/svg-element/SVGElementNamedNodeMap.js +4 -3
  490. package/lib/nodes/svg-element/SVGElementNamedNodeMap.js.map +1 -1
  491. package/lib/nodes/text/Text.d.ts +2 -1
  492. package/lib/nodes/text/Text.d.ts.map +1 -1
  493. package/lib/nodes/text/Text.js +7 -6
  494. package/lib/nodes/text/Text.js.map +1 -1
  495. package/lib/query-selector/QuerySelector.js +2 -2
  496. package/lib/query-selector/QuerySelector.js.map +1 -1
  497. package/lib/query-selector/SelectorItem.d.ts.map +1 -1
  498. package/lib/query-selector/SelectorItem.js +16 -16
  499. package/lib/query-selector/SelectorItem.js.map +1 -1
  500. package/lib/range/Range.d.ts.map +1 -1
  501. package/lib/range/Range.js +91 -79
  502. package/lib/range/Range.js.map +1 -1
  503. package/lib/range/RangeUtility.d.ts.map +1 -1
  504. package/lib/range/RangeUtility.js +5 -4
  505. package/lib/range/RangeUtility.js.map +1 -1
  506. package/lib/selection/Selection.js +15 -15
  507. package/lib/selection/Selection.js.map +1 -1
  508. package/lib/tree-walker/TreeWalker.d.ts.map +1 -1
  509. package/lib/tree-walker/TreeWalker.js +12 -6
  510. package/lib/tree-walker/TreeWalker.js.map +1 -1
  511. package/lib/validity-state/ValidityState.js +1 -1
  512. package/lib/validity-state/ValidityState.js.map +1 -1
  513. package/lib/version.js +1 -1
  514. package/lib/window/BrowserWindow.d.ts.map +1 -1
  515. package/lib/window/BrowserWindow.js +20 -26
  516. package/lib/window/BrowserWindow.js.map +1 -1
  517. package/lib/window/WindowErrorUtility.d.ts.map +1 -1
  518. package/lib/window/WindowErrorUtility.js +1 -1
  519. package/lib/window/WindowErrorUtility.js.map +1 -1
  520. package/lib/xml-http-request/XMLHttpRequest.js +1 -1
  521. package/lib/xml-http-request/XMLHttpRequest.js.map +1 -1
  522. package/lib/xml-parser/XMLParser.d.ts.map +1 -1
  523. package/lib/xml-parser/XMLParser.js +16 -12
  524. package/lib/xml-parser/XMLParser.js.map +1 -1
  525. package/lib/xml-serializer/XMLSerializer.d.ts +8 -1
  526. package/lib/xml-serializer/XMLSerializer.d.ts.map +1 -1
  527. package/lib/xml-serializer/XMLSerializer.js +37 -37
  528. package/lib/xml-serializer/XMLSerializer.js.map +1 -1
  529. package/package.json +1 -1
  530. package/src/PropertySymbol.ts +67 -1
  531. package/src/async-task-manager/AsyncTaskManager.ts +12 -5
  532. package/src/browser/utilities/BrowserFrameNavigator.ts +1 -1
  533. package/src/css/declaration/AbstractCSSStyleDeclaration.ts +17 -16
  534. package/src/css/declaration/element-style/CSSStyleDeclarationElementStyle.ts +64 -28
  535. package/src/dom-implementation/DOMImplementation.ts +6 -6
  536. package/src/dom-parser/DOMParser.ts +2 -2
  537. package/src/event/Event.ts +3 -3
  538. package/src/event/EventTarget.ts +4 -4
  539. package/src/fetch/Request.ts +7 -5
  540. package/src/form-data/FormData.ts +9 -9
  541. package/src/mutation-observer/MutationObserver.ts +3 -3
  542. package/src/named-node-map/NamedNodeMap.ts +12 -8
  543. package/src/nodes/attr/Attr.ts +59 -11
  544. package/src/nodes/character-data/CharacterData.ts +2 -2
  545. package/src/nodes/child-node/ChildNodeUtility.ts +8 -8
  546. package/src/nodes/child-node/NonDocumentChildNodeUtility.ts +4 -3
  547. package/src/nodes/comment/Comment.ts +3 -2
  548. package/src/nodes/document/Document.ts +106 -46
  549. package/src/nodes/document/IDocument.ts +2 -1
  550. package/src/nodes/document-fragment/DocumentFragment.ts +8 -4
  551. package/src/nodes/document-type/DocumentType.ts +36 -7
  552. package/src/nodes/element/Dataset.ts +23 -17
  553. package/src/nodes/element/Element.ts +166 -61
  554. package/src/nodes/element/ElementNamedNodeMap.ts +58 -33
  555. package/src/nodes/element/ElementUtility.ts +26 -19
  556. package/src/nodes/element/IElement.ts +3 -3
  557. package/src/nodes/html-anchor-element/HTMLAnchorElement.ts +5 -3
  558. package/src/nodes/html-anchor-element/HTMLAnchorElementNamedNodeMap.ts +11 -5
  559. package/src/nodes/html-base-element/HTMLBaseElement.ts +2 -1
  560. package/src/nodes/html-button-element/HTMLButtonElement.ts +29 -6
  561. package/src/nodes/html-button-element/HTMLButtonElementNamedNodeMap.ts +7 -7
  562. package/src/nodes/html-dialog-element/HTMLDialogElement.ts +21 -1
  563. package/src/nodes/html-document/HTMLDocument.ts +2 -1
  564. package/src/nodes/html-element/HTMLElement.ts +161 -33
  565. package/src/nodes/html-element/HTMLElementNamedNodeMap.ts +6 -3
  566. package/src/nodes/html-element/HTMLElementUtility.ts +17 -10
  567. package/src/nodes/html-element/IHTMLElement.ts +3 -0
  568. package/src/nodes/html-form-element/HTMLFormElement.ts +67 -27
  569. package/src/nodes/html-iframe-element/HTMLIFrameElement.ts +6 -5
  570. package/src/nodes/html-iframe-element/HTMLIFrameElementNamedNodeMap.ts +6 -1
  571. package/src/nodes/html-iframe-element/HTMLIFrameElementPageLoader.ts +2 -2
  572. package/src/nodes/html-image-element/HTMLImageElement.ts +115 -28
  573. package/src/nodes/html-input-element/HTMLInputElement.ts +125 -30
  574. package/src/nodes/html-input-element/HTMLInputElementNamedNodeMap.ts +7 -7
  575. package/src/nodes/html-label-element/HTMLLabelElement.ts +1 -1
  576. package/src/nodes/html-label-element/HTMLLabelElementUtility.ts +3 -2
  577. package/src/nodes/html-link-element/HTMLLinkElement.ts +15 -5
  578. package/src/nodes/html-link-element/HTMLLinkElementNamedNodeMap.ts +9 -6
  579. package/src/nodes/html-link-element/HTMLLinkElementStyleSheetLoader.ts +13 -5
  580. package/src/nodes/html-media-element/HTMLMediaElement.ts +142 -42
  581. package/src/nodes/html-option-element/HTMLOptionElement.ts +3 -1
  582. package/src/nodes/html-option-element/HTMLOptionElementNamedNodeMap.ts +3 -3
  583. package/src/nodes/html-script-element/HTMLScriptElement.ts +19 -12
  584. package/src/nodes/html-script-element/HTMLScriptElementNamedNodeMap.ts +4 -4
  585. package/src/nodes/html-script-element/HTMLScriptElementScriptLoader.ts +13 -9
  586. package/src/nodes/html-select-element/HTMLSelectElement.ts +69 -31
  587. package/src/nodes/html-select-element/HTMLSelectElementNamedNodeMap.ts +7 -7
  588. package/src/nodes/html-style-element/HTMLStyleElement.ts +6 -6
  589. package/src/nodes/html-template-element/HTMLTemplateElement.ts +28 -12
  590. package/src/nodes/html-template-element/IHTMLTemplateElement.ts +1 -1
  591. package/src/nodes/html-text-area-element/HTMLTextAreaElement.ts +29 -6
  592. package/src/nodes/html-text-area-element/HTMLTextAreaElementNamedNodeMap.ts +7 -7
  593. package/src/nodes/html-unknown-element/HTMLUnknownElement.ts +38 -17
  594. package/src/nodes/node/INode.ts +2 -2
  595. package/src/nodes/node/Node.ts +129 -56
  596. package/src/nodes/node/NodeUtility.ts +44 -37
  597. package/src/nodes/parent-node/ParentNodeUtility.ts +10 -5
  598. package/src/nodes/processing-instruction/ProcessingInstruction.ts +12 -2
  599. package/src/nodes/shadow-root/IShadowRoot.ts +2 -0
  600. package/src/nodes/shadow-root/ShadowRoot.ts +50 -8
  601. package/src/nodes/svg-element/SVGElement.ts +6 -5
  602. package/src/nodes/svg-element/SVGElementNamedNodeMap.ts +6 -3
  603. package/src/nodes/text/Text.ts +5 -5
  604. package/src/query-selector/QuerySelector.ts +2 -2
  605. package/src/query-selector/SelectorItem.ts +20 -16
  606. package/src/range/Range.ts +109 -82
  607. package/src/range/RangeUtility.ts +7 -4
  608. package/src/selection/Selection.ts +15 -15
  609. package/src/tree-walker/TreeWalker.ts +22 -6
  610. package/src/validity-state/ValidityState.ts +1 -1
  611. package/src/window/BrowserWindow.ts +18 -24
  612. package/src/window/WindowErrorUtility.ts +3 -1
  613. package/src/xml-http-request/XMLHttpRequest.ts +1 -1
  614. package/src/xml-parser/XMLParser.ts +18 -12
  615. package/src/xml-serializer/XMLSerializer.ts +22 -20
@@ -13,13 +13,17 @@ export default class HTMLElementUtility {
13
13
  * @param element Element.
14
14
  */
15
15
  public static blur(element: IHTMLElement | ISVGElement): void {
16
- if (element.ownerDocument[PropertySymbol.activeElement] !== element || !element.isConnected) {
16
+ if (
17
+ element[PropertySymbol.ownerDocument][PropertySymbol.activeElement] !== element ||
18
+ !element[PropertySymbol.isConnected]
19
+ ) {
17
20
  return;
18
21
  }
19
22
 
20
- const relatedTarget = element.ownerDocument[PropertySymbol.nextActiveElement] ?? null;
23
+ const relatedTarget =
24
+ element[PropertySymbol.ownerDocument][PropertySymbol.nextActiveElement] ?? null;
21
25
 
22
- element.ownerDocument[PropertySymbol.activeElement] = null;
26
+ element[PropertySymbol.ownerDocument][PropertySymbol.activeElement] = null;
23
27
 
24
28
  element.dispatchEvent(
25
29
  new FocusEvent('blur', {
@@ -43,23 +47,26 @@ export default class HTMLElementUtility {
43
47
  * @param element Element.
44
48
  */
45
49
  public static focus(element: IHTMLElement | ISVGElement): void {
46
- if (element.ownerDocument[PropertySymbol.activeElement] === element || !element.isConnected) {
50
+ if (
51
+ element[PropertySymbol.ownerDocument][PropertySymbol.activeElement] === element ||
52
+ !element[PropertySymbol.isConnected]
53
+ ) {
47
54
  return;
48
55
  }
49
56
 
50
57
  // Set the next active element so `blur` can use it for `relatedTarget`.
51
- element.ownerDocument[PropertySymbol.nextActiveElement] = element;
58
+ element[PropertySymbol.ownerDocument][PropertySymbol.nextActiveElement] = element;
52
59
 
53
- const relatedTarget = element.ownerDocument[PropertySymbol.activeElement];
60
+ const relatedTarget = element[PropertySymbol.ownerDocument][PropertySymbol.activeElement];
54
61
 
55
- if (element.ownerDocument[PropertySymbol.activeElement] !== null) {
56
- element.ownerDocument[PropertySymbol.activeElement].blur();
62
+ if (element[PropertySymbol.ownerDocument][PropertySymbol.activeElement] !== null) {
63
+ element[PropertySymbol.ownerDocument][PropertySymbol.activeElement].blur();
57
64
  }
58
65
 
59
66
  // Clean up after blur, so it does not affect next blur call.
60
- element.ownerDocument[PropertySymbol.nextActiveElement] = null;
67
+ element[PropertySymbol.ownerDocument][PropertySymbol.nextActiveElement] = null;
61
68
 
62
- element.ownerDocument[PropertySymbol.activeElement] = element;
69
+ element[PropertySymbol.ownerDocument][PropertySymbol.activeElement] = element;
63
70
 
64
71
  element.dispatchEvent(
65
72
  new FocusEvent('focus', {
@@ -9,6 +9,9 @@ import IElement from '../element/IElement.js';
9
9
  * https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.
10
10
  */
11
11
  export default interface IHTMLElement extends IElement {
12
+ accessKey: string;
13
+ contentEditable: string;
14
+ isContentEditable: boolean;
12
15
  dataset: { [key: string]: string };
13
16
  tabIndex: number;
14
17
  offsetHeight: number;
@@ -18,17 +18,33 @@ import IHTMLButtonElement from '../html-button-element/IHTMLButtonElement.js';
18
18
  * https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.
19
19
  */
20
20
  export default class HTMLFormElement extends HTMLElement implements IHTMLFormElement {
21
- // Public properties.
22
- public readonly elements: IHTMLFormControlsCollection = new HTMLFormControlsCollection();
23
- public readonly length = 0;
21
+ // Internal properties.
22
+ public [PropertySymbol.elements]: IHTMLFormControlsCollection = new HTMLFormControlsCollection();
23
+ public [PropertySymbol.length] = 0;
24
+ public [PropertySymbol.formNode]: INode = this;
24
25
 
25
26
  // Events
26
27
  public onformdata: (event: Event) => void | null = null;
27
28
  public onreset: (event: Event) => void | null = null;
28
29
  public onsubmit: (event: Event) => void | null = null;
29
30
 
30
- // Private properties
31
- public [PropertySymbol.formNode]: INode = this;
31
+ /**
32
+ * Returns elements.
33
+ *
34
+ * @returns Elements.
35
+ */
36
+ public get elements(): IHTMLFormControlsCollection {
37
+ return this[PropertySymbol.elements];
38
+ }
39
+
40
+ /**
41
+ * Returns length.
42
+ *
43
+ * @returns Length.
44
+ */
45
+ public get length(): number {
46
+ return this[PropertySymbol.length];
47
+ }
32
48
 
33
49
  /**
34
50
  * Returns name.
@@ -221,13 +237,16 @@ export default class HTMLFormElement extends HTMLElement implements IHTMLFormEle
221
237
  * Resets form.
222
238
  */
223
239
  public reset(): void {
224
- for (const element of this.elements) {
225
- if (element.tagName === 'INPUT' || element.tagName === 'TEXTAREA') {
240
+ for (const element of this[PropertySymbol.elements]) {
241
+ if (
242
+ element[PropertySymbol.tagName] === 'INPUT' ||
243
+ element[PropertySymbol.tagName] === 'TEXTAREA'
244
+ ) {
226
245
  element[PropertySymbol.value] = null;
227
246
  element[PropertySymbol.checked] = null;
228
- } else if (element.tagName === 'TEXTAREA') {
247
+ } else if (element[PropertySymbol.tagName] === 'TEXTAREA') {
229
248
  element[PropertySymbol.value] = null;
230
- } else if (element.tagName === 'SELECT') {
249
+ } else if (element[PropertySymbol.tagName] === 'SELECT') {
231
250
  let hasSelectedAttribute = false;
232
251
  for (const option of (<IHTMLSelectElement>element).options) {
233
252
  if (option.hasAttribute('selected')) {
@@ -254,8 +273,8 @@ export default class HTMLFormElement extends HTMLElement implements IHTMLFormEle
254
273
  const radioValidationState: { [k: string]: boolean } = {};
255
274
  let isFormValid = true;
256
275
 
257
- for (const element of this.elements) {
258
- if (element.tagName === 'INPUT' && element.type === 'radio' && element.name) {
276
+ for (const element of this[PropertySymbol.elements]) {
277
+ if (element[PropertySymbol.tagName] === 'INPUT' && element.type === 'radio' && element.name) {
259
278
  if (!radioValidationState[element.name]) {
260
279
  radioValidationState[element.name] = true;
261
280
  if (!element.checkValidity()) {
@@ -300,14 +319,19 @@ export default class HTMLFormElement extends HTMLElement implements IHTMLFormEle
300
319
  node: IHTMLInputElement | IHTMLTextAreaElement | IHTMLSelectElement | IHTMLButtonElement,
301
320
  name: string
302
321
  ): void {
303
- if (!this.elements.includes(node)) {
304
- this[this.elements.length] = node;
305
- this.elements.push(node);
306
- (<number>this.length) = this.elements.length;
322
+ const elements = this[PropertySymbol.elements];
323
+
324
+ if (!elements.includes(node)) {
325
+ this[elements.length] = node;
326
+ elements.push(node);
327
+ this[PropertySymbol.length] = elements.length;
307
328
  }
308
329
 
309
- (<HTMLFormControlsCollection>this.elements)[PropertySymbol.appendNamedItem](node, name);
310
- this[name] = this.elements[name];
330
+ (<HTMLFormControlsCollection>elements)[PropertySymbol.appendNamedItem](node, name);
331
+
332
+ if (this[PropertySymbol.isValidPropertyName](name)) {
333
+ this[name] = elements[name];
334
+ }
311
335
  }
312
336
 
313
337
  /**
@@ -320,23 +344,39 @@ export default class HTMLFormElement extends HTMLElement implements IHTMLFormEle
320
344
  node: IHTMLInputElement | IHTMLTextAreaElement | IHTMLSelectElement | IHTMLButtonElement,
321
345
  name: string
322
346
  ): void {
323
- const index = this.elements.indexOf(node);
347
+ const elements = this[PropertySymbol.elements];
348
+ const index = elements.indexOf(node);
324
349
 
325
350
  if (index !== -1) {
326
- this.elements.splice(index, 1);
327
- for (let i = index; i < this.length; i++) {
351
+ elements.splice(index, 1);
352
+ for (let i = index; i < this[PropertySymbol.length]; i++) {
328
353
  this[i] = this[i + 1];
329
354
  }
330
- delete this[this.length - 1];
331
- (<number>this.length)--;
355
+ delete this[this[PropertySymbol.length] - 1];
356
+ this[PropertySymbol.length]--;
332
357
  }
333
358
 
334
- (<HTMLFormControlsCollection>this.elements)[PropertySymbol.removeNamedItem](node, name);
359
+ (<HTMLFormControlsCollection>elements)[PropertySymbol.removeNamedItem](node, name);
335
360
 
336
- if (this.elements[name]) {
337
- this[name] = this.elements[name];
338
- } else {
339
- delete this[name];
361
+ if (this[PropertySymbol.isValidPropertyName](name)) {
362
+ if (elements[name]) {
363
+ this[name] = elements[name];
364
+ } else {
365
+ delete this[name];
366
+ }
340
367
  }
341
368
  }
369
+
370
+ /**
371
+ * Returns "true" if the property name is valid.
372
+ *
373
+ * @param name Name.
374
+ * @returns True if the property name is valid.
375
+ */
376
+ protected [PropertySymbol.isValidPropertyName](name: string): boolean {
377
+ return (
378
+ !this.constructor.prototype.hasOwnProperty(name) &&
379
+ (isNaN(Number(name)) || name.includes('.'))
380
+ );
381
+ }
342
382
  }
@@ -18,13 +18,14 @@ import HTMLIFrameElementPageLoader from './HTMLIFrameElementPageLoader.js';
18
18
  * https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement.
19
19
  */
20
20
  export default class HTMLIFrameElement extends HTMLElement implements IHTMLIFrameElement {
21
- public override readonly attributes: INamedNodeMap;
22
-
23
21
  // Events
24
22
  public onload: (event: Event) => void | null = null;
25
23
  public onerror: (event: Event) => void | null = null;
26
24
 
27
25
  // Internal properties
26
+ public override [PropertySymbol.attributes]: INamedNodeMap;
27
+
28
+ // Private properties
28
29
  #contentWindowContainer: { window: IBrowserWindow | ICrossOriginBrowserWindow | null } = {
29
30
  window: null
30
31
  };
@@ -42,7 +43,7 @@ export default class HTMLIFrameElement extends HTMLElement implements IHTMLIFram
42
43
  contentWindowContainer: this.#contentWindowContainer,
43
44
  browserParentFrame: browserFrame
44
45
  });
45
- this.attributes = new HTMLIFrameElementNamedNodeMap(this, this.#pageLoader);
46
+ this[PropertySymbol.attributes] = new HTMLIFrameElementNamedNodeMap(this, this.#pageLoader);
46
47
  }
47
48
 
48
49
  /**
@@ -193,8 +194,8 @@ export default class HTMLIFrameElement extends HTMLElement implements IHTMLIFram
193
194
  * @override
194
195
  */
195
196
  public override [PropertySymbol.connectToNode](parentNode: INode = null): void {
196
- const isConnected = this.isConnected;
197
- const isParentConnected = parentNode ? parentNode.isConnected : false;
197
+ const isConnected = this[PropertySymbol.isConnected];
198
+ const isParentConnected = parentNode ? parentNode[PropertySymbol.isConnected] : false;
198
199
 
199
200
  super[PropertySymbol.connectToNode](parentNode);
200
201
 
@@ -2,6 +2,7 @@ import IAttr from '../attr/IAttr.js';
2
2
  import Element from '../element/Element.js';
3
3
  import HTMLElementNamedNodeMap from '../html-element/HTMLElementNamedNodeMap.js';
4
4
  import HTMLIFrameElementPageLoader from './HTMLIFrameElementPageLoader.js';
5
+ import * as PropertySymbol from '../../PropertySymbol.js';
5
6
 
6
7
  /**
7
8
  * Named Node Map.
@@ -28,7 +29,11 @@ export default class HTMLIFrameElementNamedNodeMap extends HTMLElementNamedNodeM
28
29
  public override setNamedItem(item: IAttr): IAttr | null {
29
30
  const replacedAttribute = super.setNamedItem(item);
30
31
 
31
- if (item.name === 'src' && item.value && item.value !== replacedAttribute?.value) {
32
+ if (
33
+ item[PropertySymbol.name] === 'src' &&
34
+ item[PropertySymbol.value] &&
35
+ item[PropertySymbol.value] !== replacedAttribute?.[PropertySymbol.value]
36
+ ) {
32
37
  this.#pageLoader.loadPage();
33
38
  }
34
39
 
@@ -43,7 +43,7 @@ export default class HTMLIFrameElementPageLoader {
43
43
  * Loads an iframe page.
44
44
  */
45
45
  public loadPage(): void {
46
- if (!this.#element.isConnected) {
46
+ if (!this.#element[PropertySymbol.isConnected]) {
47
47
  if (this.#browserIFrame) {
48
48
  BrowserFrameFactory.destroyFrame(this.#browserIFrame);
49
49
  this.#browserIFrame = null;
@@ -52,7 +52,7 @@ export default class HTMLIFrameElementPageLoader {
52
52
  return;
53
53
  }
54
54
 
55
- const window = this.#element.ownerDocument[PropertySymbol.defaultView];
55
+ const window = this.#element[PropertySymbol.ownerDocument][PropertySymbol.ownerWindow];
56
56
  const originURL = this.#browserParentFrame.window.location;
57
57
  const targetURL = BrowserFrameURL.getRelativeURL(this.#browserParentFrame, this.#element.src);
58
58
 
@@ -1,5 +1,6 @@
1
1
  import HTMLElement from '../html-element/HTMLElement.js';
2
2
  import IHTMLImageElement from './IHTMLImageElement.js';
3
+ import * as PropertySymbol from '../../PropertySymbol.js';
3
4
 
4
5
  /**
5
6
  * HTML Image Element.
@@ -8,15 +9,101 @@ import IHTMLImageElement from './IHTMLImageElement.js';
8
9
  * https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.
9
10
  */
10
11
  export default class HTMLImageElement extends HTMLElement implements IHTMLImageElement {
11
- public readonly tagName: string = 'IMG';
12
- public readonly complete = false;
13
- public readonly naturalHeight = 0;
14
- public readonly naturalWidth = 0;
15
- public crossOrigin = null;
16
- public decoding = 'auto';
17
- public loading = 'auto';
18
- public readonly x = 0;
19
- public readonly y = 0;
12
+ public [PropertySymbol.tagName] = 'IMG';
13
+ public [PropertySymbol.complete] = false;
14
+ public [PropertySymbol.naturalHeight] = 0;
15
+ public [PropertySymbol.naturalWidth] = 0;
16
+ public [PropertySymbol.loading] = 'auto';
17
+ public [PropertySymbol.x] = 0;
18
+ public [PropertySymbol.y] = 0;
19
+
20
+ /**
21
+ * Returns complete.
22
+ *
23
+ * @returns Complete.
24
+ */
25
+ public get complete(): boolean {
26
+ return this[PropertySymbol.complete];
27
+ }
28
+
29
+ /**
30
+ * Returns natural height.
31
+ *
32
+ * @returns Natural height.
33
+ */
34
+ public get naturalHeight(): number {
35
+ return this[PropertySymbol.naturalHeight];
36
+ }
37
+
38
+ /**
39
+ * Returns natural width.
40
+ *
41
+ * @returns Natural width.
42
+ */
43
+ public get naturalWidth(): number {
44
+ return this[PropertySymbol.naturalWidth];
45
+ }
46
+
47
+ /**
48
+ * Returns loading.
49
+ *
50
+ * @returns Loading.
51
+ */
52
+ public get loading(): string {
53
+ return this[PropertySymbol.loading];
54
+ }
55
+
56
+ /**
57
+ * Returns x.
58
+ */
59
+ public get x(): number {
60
+ return this[PropertySymbol.x];
61
+ }
62
+
63
+ /**
64
+ * Returns y.
65
+ */
66
+ public get y(): number {
67
+ return this[PropertySymbol.y];
68
+ }
69
+
70
+ /**
71
+ * Returns decoding.
72
+ *
73
+ * @returns Decoding.
74
+ */
75
+ public get decoding(): string {
76
+ return this.getAttribute('decoding') || 'auto';
77
+ }
78
+
79
+ /**
80
+ * Sets decoding.
81
+ *
82
+ * @param decoding Decoding.
83
+ */
84
+ public set decoding(decoding: string) {
85
+ this.setAttribute('decoding', decoding);
86
+ }
87
+
88
+ /**
89
+ * Returns cross origin.
90
+ *
91
+ * @returns Cross origin.
92
+ */
93
+ public get crossOrigin(): string | null {
94
+ return this.getAttribute('crossOrigin');
95
+ }
96
+
97
+ /**
98
+ * Sets cross origin.
99
+ *
100
+ * @param crossOrigin Cross origin.
101
+ */
102
+ public set crossOrigin(crossOrigin: string | null) {
103
+ if (crossOrigin === 'anonymous' || crossOrigin === 'use-credentials') {
104
+ this.setAttribute('crossOrigin', crossOrigin);
105
+ }
106
+ }
20
107
 
21
108
  /**
22
109
  * Returns alt.
@@ -45,6 +132,25 @@ export default class HTMLImageElement extends HTMLElement implements IHTMLImageE
45
132
  return this.src;
46
133
  }
47
134
 
135
+ /**
136
+ * Returns width.
137
+ *
138
+ * @returns Width.
139
+ */
140
+ public get width(): number {
141
+ const width = this.getAttribute('width');
142
+ return width !== null ? Number(width) : 0;
143
+ }
144
+
145
+ /**
146
+ * Sets width.
147
+ *
148
+ * @param width Width.
149
+ */
150
+ public set width(width: number) {
151
+ this.setAttribute('width', String(width));
152
+ }
153
+
48
154
  /**
49
155
  * Returns height.
50
156
  *
@@ -176,25 +282,6 @@ export default class HTMLImageElement extends HTMLElement implements IHTMLImageE
176
282
  this.setAttribute('usemap', useMap);
177
283
  }
178
284
 
179
- /**
180
- * Returns width.
181
- *
182
- * @returns Width.
183
- */
184
- public get width(): number {
185
- const width = this.getAttribute('width');
186
- return width !== null ? Number(width) : 0;
187
- }
188
-
189
- /**
190
- * Sets width.
191
- *
192
- * @param width Width.
193
- */
194
- public set width(width: number) {
195
- this.setAttribute('width', String(width));
196
- }
197
-
198
285
  /**
199
286
  * The decode() method of the HTMLImageElement interface returns a Promise that resolves when the image is decoded and it is safe to append the image to the DOM.
200
287
  *
@@ -23,6 +23,7 @@ import HTMLInputElementDateUtility from './HTMLInputElementDateUtility.js';
23
23
  import HTMLLabelElementUtility from '../html-label-element/HTMLLabelElementUtility.js';
24
24
  import INamedNodeMap from '../../named-node-map/INamedNodeMap.js';
25
25
  import HTMLInputElementNamedNodeMap from './HTMLInputElementNamedNodeMap.js';
26
+ import { URL } from 'url';
26
27
 
27
28
  /**
28
29
  * HTML Input Element.
@@ -34,39 +35,131 @@ import HTMLInputElementNamedNodeMap from './HTMLInputElementNamedNodeMap.js';
34
35
  * https://github.com/jsdom/jsdom/blob/master/lib/jsdom/living/nodes/nodes/HTMLInputElement-impl.js (MIT licensed).
35
36
  */
36
37
  export default class HTMLInputElement extends HTMLElement implements IHTMLInputElement {
37
- public override readonly attributes: INamedNodeMap = new HTMLInputElementNamedNodeMap(this);
38
-
39
- // Related to parent form.
40
- public formAction = '';
41
- public formMethod = '';
38
+ // Events
39
+ public oninput: (event: Event) => void | null = null;
40
+ public oninvalid: (event: Event) => void | null = null;
41
+ public onselectionchange: (event: Event) => void | null = null;
42
42
 
43
- // Any type of input
43
+ // Internal properties
44
+ public override [PropertySymbol.attributes]: INamedNodeMap = new HTMLInputElementNamedNodeMap(
45
+ this
46
+ );
44
47
  public [PropertySymbol.value] = null;
45
48
  public [PropertySymbol.height] = 0;
46
49
  public [PropertySymbol.width] = 0;
47
-
48
- // Type specific: checkbox/radio
49
- public defaultChecked = false;
50
+ public [PropertySymbol.defaultChecked] = false;
50
51
  public [PropertySymbol.checked]: boolean | null = null;
52
+ public [PropertySymbol.validationMessage] = '';
53
+ public [PropertySymbol.validity] = new ValidityState(this);
54
+ public [PropertySymbol.files]: IFileList<File> = new FileList();
51
55
 
52
- // Type specific: file
53
- public files: IFileList<File> = new FileList();
54
-
55
- // All fields
56
- public readonly validationMessage = '';
57
- public readonly validity = new ValidityState(this);
58
-
59
- // Events
60
- public oninput: (event: Event) => void | null = null;
61
- public oninvalid: (event: Event) => void | null = null;
62
- public onselectionchange: (event: Event) => void | null = null;
63
-
64
- // Type specific: text/password/search/tel/url/week/month
56
+ // Private properties
65
57
  #selectionStart: number = null;
66
58
  #selectionEnd: number = null;
67
59
  #selectionDirection: HTMLInputElementSelectionDirectionEnum =
68
60
  HTMLInputElementSelectionDirectionEnum.none;
69
61
 
62
+ /**
63
+ * Returns default checked.
64
+ *
65
+ * @returns Default checked.
66
+ */
67
+ public get defaultChecked(): boolean {
68
+ return this[PropertySymbol.defaultChecked];
69
+ }
70
+
71
+ /**
72
+ * Sets default checked.
73
+ *
74
+ * @param defaultChecked Default checked.
75
+ */
76
+ public set defaultChecked(defaultChecked: boolean) {
77
+ this[PropertySymbol.defaultChecked] = defaultChecked;
78
+ }
79
+
80
+ /**
81
+ * Returns files.
82
+ *
83
+ * @returns Files.
84
+ */
85
+ public get files(): IFileList<File> {
86
+ return this[PropertySymbol.files];
87
+ }
88
+
89
+ /**
90
+ * Sets files.
91
+ *
92
+ * @param files Files.
93
+ */
94
+ public set files(files: IFileList<File>) {
95
+ this[PropertySymbol.files] = files;
96
+ }
97
+
98
+ /**
99
+ * Returns form action.
100
+ *
101
+ * @returns URL.
102
+ */
103
+ public get formAction(): string {
104
+ return (
105
+ this.getAttribute('formaction') ||
106
+ (<IHTMLFormElement>this[PropertySymbol.formNode])?.action ||
107
+ this[PropertySymbol.ownerDocument][PropertySymbol.ownerWindow].location.href
108
+ );
109
+ }
110
+
111
+ /**
112
+ * Sets form action.
113
+ *
114
+ * @param url URL.
115
+ */
116
+ public set formAction(url: string) {
117
+ try {
118
+ new URL(url);
119
+ } catch (error) {
120
+ return;
121
+ }
122
+ this.setAttribute('formaction', url);
123
+ }
124
+
125
+ /**
126
+ * Returns form method.
127
+ */
128
+ public get formMethod(): string {
129
+ return (
130
+ this.getAttribute('formmethod') ||
131
+ (<IHTMLFormElement>this[PropertySymbol.formNode])?.method ||
132
+ ''
133
+ );
134
+ }
135
+
136
+ /**
137
+ * Sets form method.
138
+ *
139
+ * @param method Method.
140
+ */
141
+ public set formMethod(method: string) {
142
+ this.setAttribute('formmethod', method);
143
+ }
144
+
145
+ /**
146
+ * Returns validation message.
147
+ *
148
+ * @returns Validation message.
149
+ */
150
+ public get validationMessage(): string {
151
+ return this[PropertySymbol.validationMessage];
152
+ }
153
+
154
+ /**
155
+ * Returns validity.
156
+ *
157
+ * @returns Validity.
158
+ */
159
+ public get validity(): ValidityState {
160
+ return this[PropertySymbol.validity];
161
+ }
162
+
70
163
  /**
71
164
  * Returns height.
72
165
  *
@@ -594,7 +687,9 @@ export default class HTMLInputElement extends HTMLElement implements IHTMLInputE
594
687
  const attritube = this.getAttribute('value');
595
688
  return attritube !== null ? attritube : 'on';
596
689
  case 'file':
597
- return this.files.length > 0 ? '/fake/path/' + this.files[0].name : '';
690
+ return this[PropertySymbol.files].length > 0
691
+ ? '/fake/path/' + this[PropertySymbol.files][0].name
692
+ : '';
598
693
  }
599
694
 
600
695
  if (this[PropertySymbol.value] === null) {
@@ -631,7 +726,7 @@ export default class HTMLInputElement extends HTMLElement implements IHTMLInputE
631
726
  }
632
727
  break;
633
728
  default:
634
- const oldValue = this[PropertySymbol.value];
729
+ const oldValue = this.value;
635
730
  this[PropertySymbol.value] = HTMLInputElementValueSanitizer.sanitize(this, value);
636
731
 
637
732
  if (oldValue !== this[PropertySymbol.value]) {
@@ -970,7 +1065,7 @@ export default class HTMLInputElement extends HTMLElement implements IHTMLInputE
970
1065
  * @param message Message.
971
1066
  */
972
1067
  public setCustomValidity(message: string): void {
973
- (<string>this.validationMessage) = String(message);
1068
+ this[PropertySymbol.validationMessage] = String(message);
974
1069
  }
975
1070
 
976
1071
  /**
@@ -1102,7 +1197,7 @@ export default class HTMLInputElement extends HTMLElement implements IHTMLInputE
1102
1197
  this.type === 'hidden' ||
1103
1198
  this.type === 'reset' ||
1104
1199
  this.type === 'button' ||
1105
- this.validity.valid;
1200
+ this[PropertySymbol.validity].valid;
1106
1201
  if (!valid) {
1107
1202
  this.dispatchEvent(new Event('invalid', { bubbles: true, cancelable: true }));
1108
1203
  }
@@ -1156,8 +1251,8 @@ export default class HTMLInputElement extends HTMLElement implements IHTMLInputE
1156
1251
  clone[PropertySymbol.value] = this[PropertySymbol.value];
1157
1252
  clone[PropertySymbol.height] = this[PropertySymbol.height];
1158
1253
  clone[PropertySymbol.width] = this[PropertySymbol.width];
1159
- clone.defaultChecked = this.defaultChecked;
1160
- clone.files = <FileList>this.files.slice();
1254
+ clone[PropertySymbol.defaultChecked] = this[PropertySymbol.defaultChecked];
1255
+ clone[PropertySymbol.files] = <FileList>this[PropertySymbol.files].slice();
1161
1256
  clone.#selectionStart = this.#selectionStart;
1162
1257
  clone.#selectionEnd = this.#selectionEnd;
1163
1258
  clone.#selectionDirection = this.#selectionDirection;
@@ -1196,7 +1291,7 @@ export default class HTMLInputElement extends HTMLElement implements IHTMLInputE
1196
1291
  (event.eventPhase === EventPhaseEnum.atTarget ||
1197
1292
  event.eventPhase === EventPhaseEnum.bubbling) &&
1198
1293
  event.type === 'click' &&
1199
- this.isConnected
1294
+ this[PropertySymbol.isConnected]
1200
1295
  ) {
1201
1296
  const inputType = this.type;
1202
1297
  if (!this.readOnly || inputType === 'checkbox' || inputType === 'radio') {
@@ -1208,7 +1303,7 @@ export default class HTMLInputElement extends HTMLElement implements IHTMLInputE
1208
1303
  if (form) {
1209
1304
  form.requestSubmit();
1210
1305
  }
1211
- } else if (inputType === 'reset' && this.isConnected) {
1306
+ } else if (inputType === 'reset' && this[PropertySymbol.isConnected]) {
1212
1307
  const form = <IHTMLFormElement>this[PropertySymbol.formNode];
1213
1308
  if (form) {
1214
1309
  form.reset();