happy-dom 10.5.2 → 10.6.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 (297) hide show
  1. package/cjs/css/declaration/AbstractCSSStyleDeclaration.cjs +20 -18
  2. package/cjs/css/declaration/AbstractCSSStyleDeclaration.cjs.map +1 -1
  3. package/cjs/css/declaration/AbstractCSSStyleDeclaration.d.ts.map +1 -1
  4. package/cjs/css/declaration/element-style/CSSStyleDeclarationElementStyle.cjs +4 -3
  5. package/cjs/css/declaration/element-style/CSSStyleDeclarationElementStyle.cjs.map +1 -1
  6. package/cjs/css/declaration/element-style/CSSStyleDeclarationElementStyle.d.ts.map +1 -1
  7. package/cjs/named-node-map/INamedNodeMap.d.ts +26 -26
  8. package/cjs/named-node-map/INamedNodeMap.d.ts.map +1 -1
  9. package/cjs/named-node-map/NamedNodeMap.cjs +121 -81
  10. package/cjs/named-node-map/NamedNodeMap.cjs.map +1 -1
  11. package/cjs/named-node-map/NamedNodeMap.d.ts +57 -40
  12. package/cjs/named-node-map/NamedNodeMap.d.ts.map +1 -1
  13. package/cjs/nodes/element/Dataset.cjs +16 -17
  14. package/cjs/nodes/element/Dataset.cjs.map +1 -1
  15. package/cjs/nodes/element/Dataset.d.ts.map +1 -1
  16. package/cjs/nodes/element/Element.cjs +22 -133
  17. package/cjs/nodes/element/Element.cjs.map +1 -1
  18. package/cjs/nodes/element/Element.d.ts +9 -16
  19. package/cjs/nodes/element/Element.d.ts.map +1 -1
  20. package/cjs/nodes/element/ElementNamedNodeMap.cjs +152 -0
  21. package/cjs/nodes/element/ElementNamedNodeMap.cjs.map +1 -0
  22. package/cjs/nodes/element/ElementNamedNodeMap.d.ts +45 -0
  23. package/cjs/nodes/element/ElementNamedNodeMap.d.ts.map +1 -0
  24. package/cjs/nodes/element/ElementUtility.cjs +20 -15
  25. package/cjs/nodes/element/ElementUtility.cjs.map +1 -1
  26. package/cjs/nodes/element/ElementUtility.d.ts.map +1 -1
  27. package/cjs/nodes/element/IElement.d.ts +5 -5
  28. package/cjs/nodes/element/IElement.d.ts.map +1 -1
  29. package/cjs/nodes/html-anchor-element/HTMLAnchorElement.cjs +2 -26
  30. package/cjs/nodes/html-anchor-element/HTMLAnchorElement.cjs.map +1 -1
  31. package/cjs/nodes/html-anchor-element/HTMLAnchorElement.d.ts +7 -11
  32. package/cjs/nodes/html-anchor-element/HTMLAnchorElement.d.ts.map +1 -1
  33. package/cjs/nodes/html-anchor-element/HTMLAnchorElementNamedNodeMap.cjs +44 -0
  34. package/cjs/nodes/html-anchor-element/HTMLAnchorElementNamedNodeMap.cjs.map +1 -0
  35. package/cjs/nodes/html-anchor-element/HTMLAnchorElementNamedNodeMap.d.ts +20 -0
  36. package/cjs/nodes/html-anchor-element/HTMLAnchorElementNamedNodeMap.d.ts.map +1 -0
  37. package/cjs/nodes/html-button-element/HTMLButtonElement.cjs +2 -26
  38. package/cjs/nodes/html-button-element/HTMLButtonElement.cjs.map +1 -1
  39. package/cjs/nodes/html-button-element/HTMLButtonElement.d.ts +2 -9
  40. package/cjs/nodes/html-button-element/HTMLButtonElement.d.ts.map +1 -1
  41. package/cjs/nodes/html-button-element/HTMLButtonElementNamedNodeMap.cjs +41 -0
  42. package/cjs/nodes/html-button-element/HTMLButtonElementNamedNodeMap.cjs.map +1 -0
  43. package/cjs/nodes/html-button-element/HTMLButtonElementNamedNodeMap.d.ts +20 -0
  44. package/cjs/nodes/html-button-element/HTMLButtonElementNamedNodeMap.d.ts.map +1 -0
  45. package/cjs/nodes/html-element/HTMLElement.cjs +2 -20
  46. package/cjs/nodes/html-element/HTMLElement.cjs.map +1 -1
  47. package/cjs/nodes/html-element/HTMLElement.d.ts +3 -10
  48. package/cjs/nodes/html-element/HTMLElement.d.ts.map +1 -1
  49. package/cjs/nodes/html-element/HTMLElementNamedNodeMap.cjs +35 -0
  50. package/cjs/nodes/html-element/HTMLElementNamedNodeMap.cjs.map +1 -0
  51. package/cjs/nodes/html-element/HTMLElementNamedNodeMap.d.ts +20 -0
  52. package/cjs/nodes/html-element/HTMLElementNamedNodeMap.d.ts.map +1 -0
  53. package/cjs/nodes/html-iframe-element/HTMLIFrameElement.cjs +2 -12
  54. package/cjs/nodes/html-iframe-element/HTMLIFrameElement.cjs.map +1 -1
  55. package/cjs/nodes/html-iframe-element/HTMLIFrameElement.d.ts +2 -5
  56. package/cjs/nodes/html-iframe-element/HTMLIFrameElement.d.ts.map +1 -1
  57. package/cjs/nodes/html-iframe-element/HTMLIFrameElementNamedNodeMap.cjs +26 -0
  58. package/cjs/nodes/html-iframe-element/HTMLIFrameElementNamedNodeMap.cjs.map +1 -0
  59. package/cjs/nodes/html-iframe-element/HTMLIFrameElementNamedNodeMap.d.ts +16 -0
  60. package/cjs/nodes/html-iframe-element/HTMLIFrameElementNamedNodeMap.d.ts.map +1 -0
  61. package/cjs/nodes/html-input-element/HTMLInputElement.cjs +2 -26
  62. package/cjs/nodes/html-input-element/HTMLInputElement.cjs.map +1 -1
  63. package/cjs/nodes/html-input-element/HTMLInputElement.d.ts +2 -9
  64. package/cjs/nodes/html-input-element/HTMLInputElement.d.ts.map +1 -1
  65. package/cjs/nodes/html-input-element/HTMLInputElementNamedNodeMap.cjs +42 -0
  66. package/cjs/nodes/html-input-element/HTMLInputElementNamedNodeMap.cjs.map +1 -0
  67. package/cjs/nodes/html-input-element/HTMLInputElementNamedNodeMap.d.ts +20 -0
  68. package/cjs/nodes/html-input-element/HTMLInputElementNamedNodeMap.d.ts.map +1 -0
  69. package/cjs/nodes/html-label-element/HTMLLabelElement.cjs +1 -6
  70. package/cjs/nodes/html-label-element/HTMLLabelElement.cjs.map +1 -1
  71. package/cjs/nodes/html-label-element/HTMLLabelElement.d.ts.map +1 -1
  72. package/cjs/nodes/html-link-element/HTMLLinkElement.cjs +2 -23
  73. package/cjs/nodes/html-link-element/HTMLLinkElement.cjs.map +1 -1
  74. package/cjs/nodes/html-link-element/HTMLLinkElement.d.ts +4 -10
  75. package/cjs/nodes/html-link-element/HTMLLinkElement.d.ts.map +1 -1
  76. package/cjs/nodes/html-link-element/HTMLLinkElementNamedNodeMap.cjs +39 -0
  77. package/cjs/nodes/html-link-element/HTMLLinkElementNamedNodeMap.cjs.map +1 -0
  78. package/cjs/nodes/html-link-element/HTMLLinkElementNamedNodeMap.d.ts +20 -0
  79. package/cjs/nodes/html-link-element/HTMLLinkElementNamedNodeMap.d.ts.map +1 -0
  80. package/cjs/nodes/html-option-element/HTMLOptionElement.cjs +2 -30
  81. package/cjs/nodes/html-option-element/HTMLOptionElement.cjs.map +1 -1
  82. package/cjs/nodes/html-option-element/HTMLOptionElement.d.ts +2 -9
  83. package/cjs/nodes/html-option-element/HTMLOptionElement.d.ts.map +1 -1
  84. package/cjs/nodes/html-option-element/HTMLOptionElementNamedNodeMap.cjs +45 -0
  85. package/cjs/nodes/html-option-element/HTMLOptionElementNamedNodeMap.cjs.map +1 -0
  86. package/cjs/nodes/html-option-element/HTMLOptionElementNamedNodeMap.d.ts +20 -0
  87. package/cjs/nodes/html-option-element/HTMLOptionElementNamedNodeMap.d.ts.map +1 -0
  88. package/cjs/nodes/html-script-element/HTMLScriptElement.cjs +2 -14
  89. package/cjs/nodes/html-script-element/HTMLScriptElement.cjs.map +1 -1
  90. package/cjs/nodes/html-script-element/HTMLScriptElement.d.ts +2 -9
  91. package/cjs/nodes/html-script-element/HTMLScriptElement.d.ts.map +1 -1
  92. package/cjs/nodes/html-script-element/HTMLScriptElementNamedNodeMap.cjs +26 -0
  93. package/cjs/nodes/html-script-element/HTMLScriptElementNamedNodeMap.cjs.map +1 -0
  94. package/cjs/nodes/html-script-element/HTMLScriptElementNamedNodeMap.d.ts +16 -0
  95. package/cjs/nodes/html-script-element/HTMLScriptElementNamedNodeMap.d.ts.map +1 -0
  96. package/cjs/nodes/html-select-element/HTMLSelectElement.cjs +2 -26
  97. package/cjs/nodes/html-select-element/HTMLSelectElement.cjs.map +1 -1
  98. package/cjs/nodes/html-select-element/HTMLSelectElement.d.ts +2 -9
  99. package/cjs/nodes/html-select-element/HTMLSelectElement.d.ts.map +1 -1
  100. package/cjs/nodes/html-select-element/HTMLSelectElementNamedNodeMap.cjs +42 -0
  101. package/cjs/nodes/html-select-element/HTMLSelectElementNamedNodeMap.cjs.map +1 -0
  102. package/cjs/nodes/html-select-element/HTMLSelectElementNamedNodeMap.d.ts +20 -0
  103. package/cjs/nodes/html-select-element/HTMLSelectElementNamedNodeMap.d.ts.map +1 -0
  104. package/cjs/nodes/html-text-area-element/HTMLTextAreaElement.cjs +2 -26
  105. package/cjs/nodes/html-text-area-element/HTMLTextAreaElement.cjs.map +1 -1
  106. package/cjs/nodes/html-text-area-element/HTMLTextAreaElement.d.ts +2 -9
  107. package/cjs/nodes/html-text-area-element/HTMLTextAreaElement.d.ts.map +1 -1
  108. package/cjs/nodes/html-text-area-element/HTMLTextAreaElementNamedNodeMap.cjs +42 -0
  109. package/cjs/nodes/html-text-area-element/HTMLTextAreaElementNamedNodeMap.cjs.map +1 -0
  110. package/cjs/nodes/html-text-area-element/HTMLTextAreaElementNamedNodeMap.d.ts +20 -0
  111. package/cjs/nodes/html-text-area-element/HTMLTextAreaElementNamedNodeMap.d.ts.map +1 -0
  112. package/cjs/nodes/html-unknown-element/HTMLUnknownElement.cjs +5 -2
  113. package/cjs/nodes/html-unknown-element/HTMLUnknownElement.cjs.map +1 -1
  114. package/cjs/nodes/html-unknown-element/HTMLUnknownElement.d.ts.map +1 -1
  115. package/cjs/nodes/node/NodeUtility.cjs +4 -15
  116. package/cjs/nodes/node/NodeUtility.cjs.map +1 -1
  117. package/cjs/nodes/node/NodeUtility.d.ts.map +1 -1
  118. package/cjs/nodes/svg-element/SVGElement.cjs +2 -20
  119. package/cjs/nodes/svg-element/SVGElement.cjs.map +1 -1
  120. package/cjs/nodes/svg-element/SVGElement.d.ts +3 -10
  121. package/cjs/nodes/svg-element/SVGElement.d.ts.map +1 -1
  122. package/cjs/nodes/svg-element/SVGElementNamedNodeMap.cjs +35 -0
  123. package/cjs/nodes/svg-element/SVGElementNamedNodeMap.cjs.map +1 -0
  124. package/cjs/nodes/svg-element/SVGElementNamedNodeMap.d.ts +20 -0
  125. package/cjs/nodes/svg-element/SVGElementNamedNodeMap.d.ts.map +1 -0
  126. package/cjs/query-selector/SelectorItem.cjs +1 -1
  127. package/cjs/query-selector/SelectorItem.cjs.map +1 -1
  128. package/cjs/xml-serializer/XMLSerializer.cjs +3 -2
  129. package/cjs/xml-serializer/XMLSerializer.cjs.map +1 -1
  130. package/cjs/xml-serializer/XMLSerializer.d.ts.map +1 -1
  131. package/lib/css/declaration/AbstractCSSStyleDeclaration.d.ts.map +1 -1
  132. package/lib/css/declaration/AbstractCSSStyleDeclaration.js +20 -18
  133. package/lib/css/declaration/AbstractCSSStyleDeclaration.js.map +1 -1
  134. package/lib/css/declaration/element-style/CSSStyleDeclarationElementStyle.d.ts.map +1 -1
  135. package/lib/css/declaration/element-style/CSSStyleDeclarationElementStyle.js +4 -3
  136. package/lib/css/declaration/element-style/CSSStyleDeclarationElementStyle.js.map +1 -1
  137. package/lib/named-node-map/INamedNodeMap.d.ts +26 -26
  138. package/lib/named-node-map/INamedNodeMap.d.ts.map +1 -1
  139. package/lib/named-node-map/NamedNodeMap.d.ts +57 -40
  140. package/lib/named-node-map/NamedNodeMap.d.ts.map +1 -1
  141. package/lib/named-node-map/NamedNodeMap.js +121 -81
  142. package/lib/named-node-map/NamedNodeMap.js.map +1 -1
  143. package/lib/nodes/element/Dataset.d.ts.map +1 -1
  144. package/lib/nodes/element/Dataset.js +16 -17
  145. package/lib/nodes/element/Dataset.js.map +1 -1
  146. package/lib/nodes/element/Element.d.ts +9 -16
  147. package/lib/nodes/element/Element.d.ts.map +1 -1
  148. package/lib/nodes/element/Element.js +22 -133
  149. package/lib/nodes/element/Element.js.map +1 -1
  150. package/lib/nodes/element/ElementNamedNodeMap.d.ts +45 -0
  151. package/lib/nodes/element/ElementNamedNodeMap.d.ts.map +1 -0
  152. package/lib/nodes/element/ElementNamedNodeMap.js +146 -0
  153. package/lib/nodes/element/ElementNamedNodeMap.js.map +1 -0
  154. package/lib/nodes/element/ElementUtility.d.ts.map +1 -1
  155. package/lib/nodes/element/ElementUtility.js +20 -15
  156. package/lib/nodes/element/ElementUtility.js.map +1 -1
  157. package/lib/nodes/element/IElement.d.ts +5 -5
  158. package/lib/nodes/element/IElement.d.ts.map +1 -1
  159. package/lib/nodes/html-anchor-element/HTMLAnchorElement.d.ts +7 -11
  160. package/lib/nodes/html-anchor-element/HTMLAnchorElement.d.ts.map +1 -1
  161. package/lib/nodes/html-anchor-element/HTMLAnchorElement.js +2 -26
  162. package/lib/nodes/html-anchor-element/HTMLAnchorElement.js.map +1 -1
  163. package/lib/nodes/html-anchor-element/HTMLAnchorElementNamedNodeMap.d.ts +20 -0
  164. package/lib/nodes/html-anchor-element/HTMLAnchorElementNamedNodeMap.d.ts.map +1 -0
  165. package/lib/nodes/html-anchor-element/HTMLAnchorElementNamedNodeMap.js +38 -0
  166. package/lib/nodes/html-anchor-element/HTMLAnchorElementNamedNodeMap.js.map +1 -0
  167. package/lib/nodes/html-button-element/HTMLButtonElement.d.ts +2 -9
  168. package/lib/nodes/html-button-element/HTMLButtonElement.d.ts.map +1 -1
  169. package/lib/nodes/html-button-element/HTMLButtonElement.js +2 -26
  170. package/lib/nodes/html-button-element/HTMLButtonElement.js.map +1 -1
  171. package/lib/nodes/html-button-element/HTMLButtonElementNamedNodeMap.d.ts +20 -0
  172. package/lib/nodes/html-button-element/HTMLButtonElementNamedNodeMap.d.ts.map +1 -0
  173. package/lib/nodes/html-button-element/HTMLButtonElementNamedNodeMap.js +35 -0
  174. package/lib/nodes/html-button-element/HTMLButtonElementNamedNodeMap.js.map +1 -0
  175. package/lib/nodes/html-element/HTMLElement.d.ts +3 -10
  176. package/lib/nodes/html-element/HTMLElement.d.ts.map +1 -1
  177. package/lib/nodes/html-element/HTMLElement.js +2 -20
  178. package/lib/nodes/html-element/HTMLElement.js.map +1 -1
  179. package/lib/nodes/html-element/HTMLElementNamedNodeMap.d.ts +20 -0
  180. package/lib/nodes/html-element/HTMLElementNamedNodeMap.d.ts.map +1 -0
  181. package/lib/nodes/html-element/HTMLElementNamedNodeMap.js +29 -0
  182. package/lib/nodes/html-element/HTMLElementNamedNodeMap.js.map +1 -0
  183. package/lib/nodes/html-iframe-element/HTMLIFrameElement.d.ts +2 -5
  184. package/lib/nodes/html-iframe-element/HTMLIFrameElement.d.ts.map +1 -1
  185. package/lib/nodes/html-iframe-element/HTMLIFrameElement.js +2 -12
  186. package/lib/nodes/html-iframe-element/HTMLIFrameElement.js.map +1 -1
  187. package/lib/nodes/html-iframe-element/HTMLIFrameElementNamedNodeMap.d.ts +16 -0
  188. package/lib/nodes/html-iframe-element/HTMLIFrameElementNamedNodeMap.d.ts.map +1 -0
  189. package/lib/nodes/html-iframe-element/HTMLIFrameElementNamedNodeMap.js +20 -0
  190. package/lib/nodes/html-iframe-element/HTMLIFrameElementNamedNodeMap.js.map +1 -0
  191. package/lib/nodes/html-input-element/HTMLInputElement.d.ts +2 -9
  192. package/lib/nodes/html-input-element/HTMLInputElement.d.ts.map +1 -1
  193. package/lib/nodes/html-input-element/HTMLInputElement.js +2 -26
  194. package/lib/nodes/html-input-element/HTMLInputElement.js.map +1 -1
  195. package/lib/nodes/html-input-element/HTMLInputElementNamedNodeMap.d.ts +20 -0
  196. package/lib/nodes/html-input-element/HTMLInputElementNamedNodeMap.d.ts.map +1 -0
  197. package/lib/nodes/html-input-element/HTMLInputElementNamedNodeMap.js +36 -0
  198. package/lib/nodes/html-input-element/HTMLInputElementNamedNodeMap.js.map +1 -0
  199. package/lib/nodes/html-label-element/HTMLLabelElement.d.ts.map +1 -1
  200. package/lib/nodes/html-label-element/HTMLLabelElement.js +1 -6
  201. package/lib/nodes/html-label-element/HTMLLabelElement.js.map +1 -1
  202. package/lib/nodes/html-link-element/HTMLLinkElement.d.ts +4 -10
  203. package/lib/nodes/html-link-element/HTMLLinkElement.d.ts.map +1 -1
  204. package/lib/nodes/html-link-element/HTMLLinkElement.js +2 -23
  205. package/lib/nodes/html-link-element/HTMLLinkElement.js.map +1 -1
  206. package/lib/nodes/html-link-element/HTMLLinkElementNamedNodeMap.d.ts +20 -0
  207. package/lib/nodes/html-link-element/HTMLLinkElementNamedNodeMap.d.ts.map +1 -0
  208. package/lib/nodes/html-link-element/HTMLLinkElementNamedNodeMap.js +33 -0
  209. package/lib/nodes/html-link-element/HTMLLinkElementNamedNodeMap.js.map +1 -0
  210. package/lib/nodes/html-option-element/HTMLOptionElement.d.ts +2 -9
  211. package/lib/nodes/html-option-element/HTMLOptionElement.d.ts.map +1 -1
  212. package/lib/nodes/html-option-element/HTMLOptionElement.js +2 -30
  213. package/lib/nodes/html-option-element/HTMLOptionElement.js.map +1 -1
  214. package/lib/nodes/html-option-element/HTMLOptionElementNamedNodeMap.d.ts +20 -0
  215. package/lib/nodes/html-option-element/HTMLOptionElementNamedNodeMap.d.ts.map +1 -0
  216. package/lib/nodes/html-option-element/HTMLOptionElementNamedNodeMap.js +39 -0
  217. package/lib/nodes/html-option-element/HTMLOptionElementNamedNodeMap.js.map +1 -0
  218. package/lib/nodes/html-script-element/HTMLScriptElement.d.ts +2 -9
  219. package/lib/nodes/html-script-element/HTMLScriptElement.d.ts.map +1 -1
  220. package/lib/nodes/html-script-element/HTMLScriptElement.js +2 -14
  221. package/lib/nodes/html-script-element/HTMLScriptElement.js.map +1 -1
  222. package/lib/nodes/html-script-element/HTMLScriptElementNamedNodeMap.d.ts +16 -0
  223. package/lib/nodes/html-script-element/HTMLScriptElementNamedNodeMap.d.ts.map +1 -0
  224. package/lib/nodes/html-script-element/HTMLScriptElementNamedNodeMap.js +20 -0
  225. package/lib/nodes/html-script-element/HTMLScriptElementNamedNodeMap.js.map +1 -0
  226. package/lib/nodes/html-select-element/HTMLSelectElement.d.ts +2 -9
  227. package/lib/nodes/html-select-element/HTMLSelectElement.d.ts.map +1 -1
  228. package/lib/nodes/html-select-element/HTMLSelectElement.js +2 -26
  229. package/lib/nodes/html-select-element/HTMLSelectElement.js.map +1 -1
  230. package/lib/nodes/html-select-element/HTMLSelectElementNamedNodeMap.d.ts +20 -0
  231. package/lib/nodes/html-select-element/HTMLSelectElementNamedNodeMap.d.ts.map +1 -0
  232. package/lib/nodes/html-select-element/HTMLSelectElementNamedNodeMap.js +36 -0
  233. package/lib/nodes/html-select-element/HTMLSelectElementNamedNodeMap.js.map +1 -0
  234. package/lib/nodes/html-text-area-element/HTMLTextAreaElement.d.ts +2 -9
  235. package/lib/nodes/html-text-area-element/HTMLTextAreaElement.d.ts.map +1 -1
  236. package/lib/nodes/html-text-area-element/HTMLTextAreaElement.js +2 -26
  237. package/lib/nodes/html-text-area-element/HTMLTextAreaElement.js.map +1 -1
  238. package/lib/nodes/html-text-area-element/HTMLTextAreaElementNamedNodeMap.d.ts +20 -0
  239. package/lib/nodes/html-text-area-element/HTMLTextAreaElementNamedNodeMap.d.ts.map +1 -0
  240. package/lib/nodes/html-text-area-element/HTMLTextAreaElementNamedNodeMap.js +36 -0
  241. package/lib/nodes/html-text-area-element/HTMLTextAreaElementNamedNodeMap.js.map +1 -0
  242. package/lib/nodes/html-unknown-element/HTMLUnknownElement.d.ts.map +1 -1
  243. package/lib/nodes/html-unknown-element/HTMLUnknownElement.js +5 -2
  244. package/lib/nodes/html-unknown-element/HTMLUnknownElement.js.map +1 -1
  245. package/lib/nodes/node/NodeUtility.d.ts.map +1 -1
  246. package/lib/nodes/node/NodeUtility.js +4 -15
  247. package/lib/nodes/node/NodeUtility.js.map +1 -1
  248. package/lib/nodes/svg-element/SVGElement.d.ts +3 -10
  249. package/lib/nodes/svg-element/SVGElement.d.ts.map +1 -1
  250. package/lib/nodes/svg-element/SVGElement.js +2 -20
  251. package/lib/nodes/svg-element/SVGElement.js.map +1 -1
  252. package/lib/nodes/svg-element/SVGElementNamedNodeMap.d.ts +20 -0
  253. package/lib/nodes/svg-element/SVGElementNamedNodeMap.d.ts.map +1 -0
  254. package/lib/nodes/svg-element/SVGElementNamedNodeMap.js +29 -0
  255. package/lib/nodes/svg-element/SVGElementNamedNodeMap.js.map +1 -0
  256. package/lib/query-selector/SelectorItem.js +1 -1
  257. package/lib/query-selector/SelectorItem.js.map +1 -1
  258. package/lib/xml-serializer/XMLSerializer.d.ts.map +1 -1
  259. package/lib/xml-serializer/XMLSerializer.js +3 -2
  260. package/lib/xml-serializer/XMLSerializer.js.map +1 -1
  261. package/package.json +1 -1
  262. package/src/css/declaration/AbstractCSSStyleDeclaration.ts +32 -20
  263. package/src/css/declaration/element-style/CSSStyleDeclarationElementStyle.ts +4 -3
  264. package/src/named-node-map/INamedNodeMap.ts +26 -26
  265. package/src/named-node-map/NamedNodeMap.ts +135 -73
  266. package/src/nodes/element/Dataset.ts +19 -17
  267. package/src/nodes/element/Element.ts +27 -176
  268. package/src/nodes/element/ElementNamedNodeMap.ts +194 -0
  269. package/src/nodes/element/ElementUtility.ts +20 -18
  270. package/src/nodes/element/IElement.ts +5 -5
  271. package/src/nodes/html-anchor-element/HTMLAnchorElement.ts +5 -33
  272. package/src/nodes/html-anchor-element/HTMLAnchorElementNamedNodeMap.ts +48 -0
  273. package/src/nodes/html-button-element/HTMLButtonElement.ts +3 -33
  274. package/src/nodes/html-button-element/HTMLButtonElementNamedNodeMap.ts +56 -0
  275. package/src/nodes/html-element/HTMLElement.ts +4 -28
  276. package/src/nodes/html-element/HTMLElementNamedNodeMap.ts +38 -0
  277. package/src/nodes/html-iframe-element/HTMLIFrameElement.ts +4 -18
  278. package/src/nodes/html-iframe-element/HTMLIFrameElementNamedNodeMap.ts +26 -0
  279. package/src/nodes/html-input-element/HTMLInputElement.ts +4 -33
  280. package/src/nodes/html-input-element/HTMLInputElementNamedNodeMap.ts +57 -0
  281. package/src/nodes/html-label-element/HTMLLabelElement.ts +3 -6
  282. package/src/nodes/html-link-element/HTMLLinkElement.ts +4 -32
  283. package/src/nodes/html-link-element/HTMLLinkElementNamedNodeMap.ts +43 -0
  284. package/src/nodes/html-option-element/HTMLOptionElement.ts +3 -43
  285. package/src/nodes/html-option-element/HTMLOptionElementNamedNodeMap.ts +55 -0
  286. package/src/nodes/html-script-element/HTMLScriptElement.ts +3 -18
  287. package/src/nodes/html-script-element/HTMLScriptElementNamedNodeMap.ts +26 -0
  288. package/src/nodes/html-select-element/HTMLSelectElement.ts +4 -33
  289. package/src/nodes/html-select-element/HTMLSelectElementNamedNodeMap.ts +57 -0
  290. package/src/nodes/html-text-area-element/HTMLTextAreaElement.ts +3 -33
  291. package/src/nodes/html-text-area-element/HTMLTextAreaElementNamedNodeMap.ts +57 -0
  292. package/src/nodes/html-unknown-element/HTMLUnknownElement.ts +6 -2
  293. package/src/nodes/node/NodeUtility.ts +7 -24
  294. package/src/nodes/svg-element/SVGElement.ts +5 -28
  295. package/src/nodes/svg-element/SVGElementNamedNodeMap.ts +38 -0
  296. package/src/query-selector/SelectorItem.ts +1 -1
  297. package/src/xml-serializer/XMLSerializer.ts +4 -2
@@ -0,0 +1,57 @@
1
+ import IAttr from '../attr/IAttr.js';
2
+ import HTMLElementNamedNodeMap from '../html-element/HTMLElementNamedNodeMap.js';
3
+ import HTMLFormElement from '../html-form-element/HTMLFormElement.js';
4
+ import HTMLTextAreaElement from './HTMLTextAreaElement.js';
5
+
6
+ /**
7
+ * Named Node Map.
8
+ *
9
+ * @see https://developer.mozilla.org/en-US/docs/Web/API/NamedNodeMap
10
+ */
11
+ export default class HTMLTextAreaElementNamedNodeMap extends HTMLElementNamedNodeMap {
12
+ protected _ownerElement: HTMLTextAreaElement;
13
+
14
+ /**
15
+ * @override
16
+ */
17
+ public override setNamedItem(item: IAttr): IAttr | null {
18
+ const replacedItem = super.setNamedItem(item);
19
+
20
+ if ((item.name === 'id' || item.name === 'name') && this._ownerElement._formNode) {
21
+ if (replacedItem && replacedItem.value) {
22
+ (<HTMLFormElement>this._ownerElement._formNode)._removeFormControlItem(
23
+ this._ownerElement,
24
+ replacedItem.value
25
+ );
26
+ }
27
+ if (item.value) {
28
+ (<HTMLFormElement>this._ownerElement._formNode)._appendFormControlItem(
29
+ this._ownerElement,
30
+ item.value
31
+ );
32
+ }
33
+ }
34
+
35
+ return replacedItem || null;
36
+ }
37
+
38
+ /**
39
+ * @override
40
+ */
41
+ public override removeNamedItem(name: string): IAttr | null {
42
+ const removedItem = super.removeNamedItem(name);
43
+
44
+ if (
45
+ removedItem &&
46
+ (removedItem.name === 'id' || removedItem.name === 'name') &&
47
+ this._ownerElement._formNode
48
+ ) {
49
+ (<HTMLFormElement>this._ownerElement._formNode)._removeFormControlItem(
50
+ this._ownerElement,
51
+ removedItem.value
52
+ );
53
+ }
54
+
55
+ return removedItem;
56
+ }
57
+ }
@@ -6,6 +6,7 @@ import IHTMLCollection from '../element/IHTMLCollection.js';
6
6
  import IElement from '../element/IElement.js';
7
7
  import NodeList from '../node/NodeList.js';
8
8
  import HTMLCollection from '../element/HTMLCollection.js';
9
+ import HTMLElementNamedNodeMap from '../html-element/HTMLElementNamedNodeMap.js';
9
10
 
10
11
  /**
11
12
  * HTML Unknown Element.
@@ -43,7 +44,10 @@ export default class HTMLUnknownElement extends HTMLElement implements IHTMLElem
43
44
  newElement._textAreaNode = this._textAreaNode;
44
45
  newElement._observers = this._observers;
45
46
  newElement._isValue = this._isValue;
46
- newElement._attributes = this._attributes;
47
+
48
+ for (let i = 0, max = this.attributes.length; i < max; i++) {
49
+ newElement.attributes.setNamedItem(this.attributes[i]);
50
+ }
47
51
 
48
52
  (<INodeList<INode>>this.childNodes) = new NodeList();
49
53
  (<IHTMLCollection<IElement>>this.children) = new HTMLCollection();
@@ -53,7 +57,7 @@ export default class HTMLUnknownElement extends HTMLElement implements IHTMLElem
53
57
  this._textAreaNode = null;
54
58
  this._observers = [];
55
59
  this._isValue = null;
56
- this._attributes = {};
60
+ (<HTMLElementNamedNodeMap>this.attributes) = new HTMLElementNamedNodeMap(this);
57
61
 
58
62
  for (let i = 0, max = this.parentNode.childNodes.length; i < max; i++) {
59
63
  if (this.parentNode.childNodes[i] === this) {
@@ -395,33 +395,16 @@ export default class NodeUtility {
395
395
  * @param elementB
396
396
  */
397
397
  public static attributeListsEqual(elementA: IElement, elementB: IElement): boolean {
398
- const listA = <Array<IAttr>>Object.values(elementA['_attributes']);
399
- const listB = <Array<IAttr>>Object.values(elementB['_attributes']);
400
-
401
- const lengthA = listA.length;
402
- const lengthB = listB.length;
403
-
404
- if (lengthA !== lengthB) {
405
- return false;
406
- }
407
-
408
- for (let i = 0; i < lengthA; ++i) {
409
- const attrA = listA[i];
410
-
411
- if (
412
- !listB.some((attrB) => {
413
- return (
414
- (typeof attrA === 'number' && typeof attrB === 'number' && attrA === attrB) ||
415
- (typeof attrA === 'object' &&
416
- typeof attrB === 'object' &&
417
- NodeUtility.isEqualNode(attrA, attrB))
418
- );
419
- })
420
- ) {
398
+ for (let i = 0, max = elementA.attributes.length; i < max; i++) {
399
+ const attributeA = elementA.attributes[i];
400
+ const attributeB = elementB.attributes.getNamedItemNS(
401
+ attributeA.namespaceURI,
402
+ attributeA.localName
403
+ );
404
+ if (!attributeB || attributeB.value !== attributeA.value) {
421
405
  return false;
422
406
  }
423
407
  }
424
-
425
408
  return true;
426
409
  }
427
410
 
@@ -2,10 +2,11 @@ import CSSStyleDeclaration from '../../css/declaration/CSSStyleDeclaration.js';
2
2
  import Element from '../element/Element.js';
3
3
  import ISVGElement from './ISVGElement.js';
4
4
  import ISVGSVGElement from './ISVGSVGElement.js';
5
- import IAttr from '../attr/IAttr.js';
6
5
  import Event from '../../event/Event.js';
7
6
  import Dataset from '../element/Dataset.js';
8
7
  import HTMLElementUtility from '../html-element/HTMLElementUtility.js';
8
+ import INamedNodeMap from '../../named-node-map/INamedNodeMap.js';
9
+ import SVGElementNamedNodeMap from './SVGElementNamedNodeMap.js';
9
10
 
10
11
  /**
11
12
  * SVG Element.
@@ -14,6 +15,8 @@ import HTMLElementUtility from '../html-element/HTMLElementUtility.js';
14
15
  * https://developer.mozilla.org/en-US/docs/Web/API/SVGElement.
15
16
  */
16
17
  export default class SVGElement extends Element implements ISVGElement {
18
+ public override readonly attributes: INamedNodeMap = new SVGElementNamedNodeMap(this);
19
+
17
20
  // Events
18
21
  public onabort: (event: Event) => void | null = null;
19
22
  public onerror: (event: Event) => void | null = null;
@@ -23,7 +26,7 @@ export default class SVGElement extends Element implements ISVGElement {
23
26
  public onunload: (event: Event) => void | null = null;
24
27
 
25
28
  // Private properties
26
- private _style: CSSStyleDeclaration = null;
29
+ public _style: CSSStyleDeclaration = null;
27
30
  private _dataset: Dataset = null;
28
31
 
29
32
  /**
@@ -109,30 +112,4 @@ export default class SVGElement extends Element implements ISVGElement {
109
112
  public focus(): void {
110
113
  HTMLElementUtility.focus(this);
111
114
  }
112
-
113
- /**
114
- * @override
115
- */
116
- public setAttributeNode(attribute: IAttr): IAttr | null {
117
- const replacedAttribute = super.setAttributeNode(attribute);
118
-
119
- if (attribute.name === 'style' && this._style) {
120
- this._style.cssText = attribute.value;
121
- }
122
-
123
- return replacedAttribute;
124
- }
125
-
126
- /**
127
- * @override
128
- */
129
- public removeAttributeNode(attribute: IAttr): IAttr {
130
- super.removeAttributeNode(attribute);
131
-
132
- if (attribute.name === 'style' && this._style) {
133
- this._style.cssText = '';
134
- }
135
-
136
- return attribute;
137
- }
138
115
  }
@@ -0,0 +1,38 @@
1
+ import IAttr from '../attr/IAttr.js';
2
+ import ElementNamedNodeMap from '../element/ElementNamedNodeMap.js';
3
+ import SVGElement from './SVGElement.js';
4
+
5
+ /**
6
+ * Named Node Map.
7
+ *
8
+ * @see https://developer.mozilla.org/en-US/docs/Web/API/NamedNodeMap
9
+ */
10
+ export default class SVGElementNamedNodeMap extends ElementNamedNodeMap {
11
+ protected _ownerElement: SVGElement;
12
+
13
+ /**
14
+ * @override
15
+ */
16
+ public override setNamedItem(item: IAttr): IAttr | null {
17
+ const replacedItem = super.setNamedItem(item);
18
+
19
+ if (item.name === 'style' && this._ownerElement._style) {
20
+ this._ownerElement._style.cssText = item.value;
21
+ }
22
+
23
+ return replacedItem || null;
24
+ }
25
+
26
+ /**
27
+ * @override
28
+ */
29
+ public override removeNamedItem(name: string): IAttr | null {
30
+ const removedItem = super.removeNamedItem(name);
31
+
32
+ if (removedItem && removedItem.name === 'style' && this._ownerElement._style) {
33
+ this._ownerElement._style.cssText = '';
34
+ }
35
+
36
+ return removedItem;
37
+ }
38
+ }
@@ -236,7 +236,7 @@ export default class SelectorItem {
236
236
  let priorityWeight = 0;
237
237
 
238
238
  for (const attribute of this.attributes) {
239
- const elementAttribute = (<Element>element)._attributes[attribute.name];
239
+ const elementAttribute = (<Element>element).attributes.getNamedItem(attribute.name);
240
240
 
241
241
  if (!elementAttribute) {
242
242
  return null;
@@ -110,11 +110,12 @@ export default class XMLSerializer {
110
110
  private _getAttributes(element: IElement): string {
111
111
  let attributeString = '';
112
112
 
113
- if (!(<Element>element)._attributes.is && (<Element>element)._isValue) {
113
+ if (!(<Element>element).attributes.getNamedItem('is') && (<Element>element)._isValue) {
114
114
  attributeString += ' is="' + (<Element>element)._isValue + '"';
115
115
  }
116
116
 
117
- for (const attribute of Object.values((<Element>element)._attributes)) {
117
+ for (let i = 0, max = (<Element>element).attributes.length; i < max; i++) {
118
+ const attribute = (<Element>element).attributes[i];
118
119
  if (attribute.value !== null) {
119
120
  const escapedValue = this._options.escapeEntities
120
121
  ? Entities.escapeText(attribute.value)
@@ -122,6 +123,7 @@ export default class XMLSerializer {
122
123
  attributeString += ' ' + attribute.name + '="' + escapedValue + '"';
123
124
  }
124
125
  }
126
+
125
127
  return attributeString;
126
128
  }
127
129
  }