happy-dom 10.5.2 → 10.5.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of happy-dom might be problematic. Click here for more details.
- package/cjs/css/declaration/AbstractCSSStyleDeclaration.cjs +20 -18
- package/cjs/css/declaration/AbstractCSSStyleDeclaration.cjs.map +1 -1
- package/cjs/css/declaration/AbstractCSSStyleDeclaration.d.ts.map +1 -1
- package/cjs/css/declaration/element-style/CSSStyleDeclarationElementStyle.cjs +4 -3
- package/cjs/css/declaration/element-style/CSSStyleDeclarationElementStyle.cjs.map +1 -1
- package/cjs/css/declaration/element-style/CSSStyleDeclarationElementStyle.d.ts.map +1 -1
- package/cjs/named-node-map/INamedNodeMap.d.ts +26 -26
- package/cjs/named-node-map/INamedNodeMap.d.ts.map +1 -1
- package/cjs/named-node-map/NamedNodeMap.cjs +121 -81
- package/cjs/named-node-map/NamedNodeMap.cjs.map +1 -1
- package/cjs/named-node-map/NamedNodeMap.d.ts +57 -40
- package/cjs/named-node-map/NamedNodeMap.d.ts.map +1 -1
- package/cjs/nodes/element/Dataset.cjs +16 -17
- package/cjs/nodes/element/Dataset.cjs.map +1 -1
- package/cjs/nodes/element/Dataset.d.ts.map +1 -1
- package/cjs/nodes/element/Element.cjs +22 -133
- package/cjs/nodes/element/Element.cjs.map +1 -1
- package/cjs/nodes/element/Element.d.ts +9 -16
- package/cjs/nodes/element/Element.d.ts.map +1 -1
- package/cjs/nodes/element/ElementNamedNodeMap.cjs +152 -0
- package/cjs/nodes/element/ElementNamedNodeMap.cjs.map +1 -0
- package/cjs/nodes/element/ElementNamedNodeMap.d.ts +45 -0
- package/cjs/nodes/element/ElementNamedNodeMap.d.ts.map +1 -0
- package/cjs/nodes/element/ElementUtility.cjs +20 -15
- package/cjs/nodes/element/ElementUtility.cjs.map +1 -1
- package/cjs/nodes/element/ElementUtility.d.ts.map +1 -1
- package/cjs/nodes/element/IElement.d.ts +5 -5
- package/cjs/nodes/element/IElement.d.ts.map +1 -1
- package/cjs/nodes/html-anchor-element/HTMLAnchorElement.cjs +2 -26
- package/cjs/nodes/html-anchor-element/HTMLAnchorElement.cjs.map +1 -1
- package/cjs/nodes/html-anchor-element/HTMLAnchorElement.d.ts +7 -11
- package/cjs/nodes/html-anchor-element/HTMLAnchorElement.d.ts.map +1 -1
- package/cjs/nodes/html-anchor-element/HTMLAnchorElementNamedNodeMap.cjs +44 -0
- package/cjs/nodes/html-anchor-element/HTMLAnchorElementNamedNodeMap.cjs.map +1 -0
- package/cjs/nodes/html-anchor-element/HTMLAnchorElementNamedNodeMap.d.ts +20 -0
- package/cjs/nodes/html-anchor-element/HTMLAnchorElementNamedNodeMap.d.ts.map +1 -0
- package/cjs/nodes/html-button-element/HTMLButtonElement.cjs +2 -26
- package/cjs/nodes/html-button-element/HTMLButtonElement.cjs.map +1 -1
- package/cjs/nodes/html-button-element/HTMLButtonElement.d.ts +2 -9
- package/cjs/nodes/html-button-element/HTMLButtonElement.d.ts.map +1 -1
- package/cjs/nodes/html-button-element/HTMLButtonElementNamedNodeMap.cjs +41 -0
- package/cjs/nodes/html-button-element/HTMLButtonElementNamedNodeMap.cjs.map +1 -0
- package/cjs/nodes/html-button-element/HTMLButtonElementNamedNodeMap.d.ts +20 -0
- package/cjs/nodes/html-button-element/HTMLButtonElementNamedNodeMap.d.ts.map +1 -0
- package/cjs/nodes/html-element/HTMLElement.cjs +2 -20
- package/cjs/nodes/html-element/HTMLElement.cjs.map +1 -1
- package/cjs/nodes/html-element/HTMLElement.d.ts +3 -10
- package/cjs/nodes/html-element/HTMLElement.d.ts.map +1 -1
- package/cjs/nodes/html-element/HTMLElementNamedNodeMap.cjs +35 -0
- package/cjs/nodes/html-element/HTMLElementNamedNodeMap.cjs.map +1 -0
- package/cjs/nodes/html-element/HTMLElementNamedNodeMap.d.ts +20 -0
- package/cjs/nodes/html-element/HTMLElementNamedNodeMap.d.ts.map +1 -0
- package/cjs/nodes/html-iframe-element/HTMLIFrameElement.cjs +2 -12
- package/cjs/nodes/html-iframe-element/HTMLIFrameElement.cjs.map +1 -1
- package/cjs/nodes/html-iframe-element/HTMLIFrameElement.d.ts +2 -5
- package/cjs/nodes/html-iframe-element/HTMLIFrameElement.d.ts.map +1 -1
- package/cjs/nodes/html-iframe-element/HTMLIFrameElementNamedNodeMap.cjs +26 -0
- package/cjs/nodes/html-iframe-element/HTMLIFrameElementNamedNodeMap.cjs.map +1 -0
- package/cjs/nodes/html-iframe-element/HTMLIFrameElementNamedNodeMap.d.ts +16 -0
- package/cjs/nodes/html-iframe-element/HTMLIFrameElementNamedNodeMap.d.ts.map +1 -0
- package/cjs/nodes/html-input-element/HTMLInputElement.cjs +2 -26
- package/cjs/nodes/html-input-element/HTMLInputElement.cjs.map +1 -1
- package/cjs/nodes/html-input-element/HTMLInputElement.d.ts +2 -9
- package/cjs/nodes/html-input-element/HTMLInputElement.d.ts.map +1 -1
- package/cjs/nodes/html-input-element/HTMLInputElementNamedNodeMap.cjs +42 -0
- package/cjs/nodes/html-input-element/HTMLInputElementNamedNodeMap.cjs.map +1 -0
- package/cjs/nodes/html-input-element/HTMLInputElementNamedNodeMap.d.ts +20 -0
- package/cjs/nodes/html-input-element/HTMLInputElementNamedNodeMap.d.ts.map +1 -0
- package/cjs/nodes/html-link-element/HTMLLinkElement.cjs +2 -23
- package/cjs/nodes/html-link-element/HTMLLinkElement.cjs.map +1 -1
- package/cjs/nodes/html-link-element/HTMLLinkElement.d.ts +4 -10
- package/cjs/nodes/html-link-element/HTMLLinkElement.d.ts.map +1 -1
- package/cjs/nodes/html-link-element/HTMLLinkElementNamedNodeMap.cjs +39 -0
- package/cjs/nodes/html-link-element/HTMLLinkElementNamedNodeMap.cjs.map +1 -0
- package/cjs/nodes/html-link-element/HTMLLinkElementNamedNodeMap.d.ts +20 -0
- package/cjs/nodes/html-link-element/HTMLLinkElementNamedNodeMap.d.ts.map +1 -0
- package/cjs/nodes/html-option-element/HTMLOptionElement.cjs +2 -30
- package/cjs/nodes/html-option-element/HTMLOptionElement.cjs.map +1 -1
- package/cjs/nodes/html-option-element/HTMLOptionElement.d.ts +2 -9
- package/cjs/nodes/html-option-element/HTMLOptionElement.d.ts.map +1 -1
- package/cjs/nodes/html-option-element/HTMLOptionElementNamedNodeMap.cjs +45 -0
- package/cjs/nodes/html-option-element/HTMLOptionElementNamedNodeMap.cjs.map +1 -0
- package/cjs/nodes/html-option-element/HTMLOptionElementNamedNodeMap.d.ts +20 -0
- package/cjs/nodes/html-option-element/HTMLOptionElementNamedNodeMap.d.ts.map +1 -0
- package/cjs/nodes/html-script-element/HTMLScriptElement.cjs +2 -14
- package/cjs/nodes/html-script-element/HTMLScriptElement.cjs.map +1 -1
- package/cjs/nodes/html-script-element/HTMLScriptElement.d.ts +2 -9
- package/cjs/nodes/html-script-element/HTMLScriptElement.d.ts.map +1 -1
- package/cjs/nodes/html-script-element/HTMLScriptElementNamedNodeMap.cjs +26 -0
- package/cjs/nodes/html-script-element/HTMLScriptElementNamedNodeMap.cjs.map +1 -0
- package/cjs/nodes/html-script-element/HTMLScriptElementNamedNodeMap.d.ts +16 -0
- package/cjs/nodes/html-script-element/HTMLScriptElementNamedNodeMap.d.ts.map +1 -0
- package/cjs/nodes/html-select-element/HTMLSelectElement.cjs +2 -26
- package/cjs/nodes/html-select-element/HTMLSelectElement.cjs.map +1 -1
- package/cjs/nodes/html-select-element/HTMLSelectElement.d.ts +2 -9
- package/cjs/nodes/html-select-element/HTMLSelectElement.d.ts.map +1 -1
- package/cjs/nodes/html-select-element/HTMLSelectElementNamedNodeMap.cjs +42 -0
- package/cjs/nodes/html-select-element/HTMLSelectElementNamedNodeMap.cjs.map +1 -0
- package/cjs/nodes/html-select-element/HTMLSelectElementNamedNodeMap.d.ts +20 -0
- package/cjs/nodes/html-select-element/HTMLSelectElementNamedNodeMap.d.ts.map +1 -0
- package/cjs/nodes/html-text-area-element/HTMLTextAreaElement.cjs +2 -26
- package/cjs/nodes/html-text-area-element/HTMLTextAreaElement.cjs.map +1 -1
- package/cjs/nodes/html-text-area-element/HTMLTextAreaElement.d.ts +2 -9
- package/cjs/nodes/html-text-area-element/HTMLTextAreaElement.d.ts.map +1 -1
- package/cjs/nodes/html-text-area-element/HTMLTextAreaElementNamedNodeMap.cjs +42 -0
- package/cjs/nodes/html-text-area-element/HTMLTextAreaElementNamedNodeMap.cjs.map +1 -0
- package/cjs/nodes/html-text-area-element/HTMLTextAreaElementNamedNodeMap.d.ts +20 -0
- package/cjs/nodes/html-text-area-element/HTMLTextAreaElementNamedNodeMap.d.ts.map +1 -0
- package/cjs/nodes/html-unknown-element/HTMLUnknownElement.cjs +5 -2
- package/cjs/nodes/html-unknown-element/HTMLUnknownElement.cjs.map +1 -1
- package/cjs/nodes/html-unknown-element/HTMLUnknownElement.d.ts.map +1 -1
- package/cjs/nodes/node/NodeUtility.cjs +4 -15
- package/cjs/nodes/node/NodeUtility.cjs.map +1 -1
- package/cjs/nodes/node/NodeUtility.d.ts.map +1 -1
- package/cjs/nodes/svg-element/SVGElement.cjs +2 -20
- package/cjs/nodes/svg-element/SVGElement.cjs.map +1 -1
- package/cjs/nodes/svg-element/SVGElement.d.ts +3 -10
- package/cjs/nodes/svg-element/SVGElement.d.ts.map +1 -1
- package/cjs/nodes/svg-element/SVGElementNamedNodeMap.cjs +35 -0
- package/cjs/nodes/svg-element/SVGElementNamedNodeMap.cjs.map +1 -0
- package/cjs/nodes/svg-element/SVGElementNamedNodeMap.d.ts +20 -0
- package/cjs/nodes/svg-element/SVGElementNamedNodeMap.d.ts.map +1 -0
- package/cjs/query-selector/SelectorItem.cjs +1 -1
- package/cjs/query-selector/SelectorItem.cjs.map +1 -1
- package/cjs/xml-serializer/XMLSerializer.cjs +3 -2
- package/cjs/xml-serializer/XMLSerializer.cjs.map +1 -1
- package/cjs/xml-serializer/XMLSerializer.d.ts.map +1 -1
- package/lib/css/declaration/AbstractCSSStyleDeclaration.d.ts.map +1 -1
- package/lib/css/declaration/AbstractCSSStyleDeclaration.js +20 -18
- package/lib/css/declaration/AbstractCSSStyleDeclaration.js.map +1 -1
- package/lib/css/declaration/element-style/CSSStyleDeclarationElementStyle.d.ts.map +1 -1
- package/lib/css/declaration/element-style/CSSStyleDeclarationElementStyle.js +4 -3
- package/lib/css/declaration/element-style/CSSStyleDeclarationElementStyle.js.map +1 -1
- package/lib/named-node-map/INamedNodeMap.d.ts +26 -26
- package/lib/named-node-map/INamedNodeMap.d.ts.map +1 -1
- package/lib/named-node-map/NamedNodeMap.d.ts +57 -40
- package/lib/named-node-map/NamedNodeMap.d.ts.map +1 -1
- package/lib/named-node-map/NamedNodeMap.js +121 -81
- package/lib/named-node-map/NamedNodeMap.js.map +1 -1
- package/lib/nodes/element/Dataset.d.ts.map +1 -1
- package/lib/nodes/element/Dataset.js +16 -17
- package/lib/nodes/element/Dataset.js.map +1 -1
- package/lib/nodes/element/Element.d.ts +9 -16
- package/lib/nodes/element/Element.d.ts.map +1 -1
- package/lib/nodes/element/Element.js +22 -133
- package/lib/nodes/element/Element.js.map +1 -1
- package/lib/nodes/element/ElementNamedNodeMap.d.ts +45 -0
- package/lib/nodes/element/ElementNamedNodeMap.d.ts.map +1 -0
- package/lib/nodes/element/ElementNamedNodeMap.js +146 -0
- package/lib/nodes/element/ElementNamedNodeMap.js.map +1 -0
- package/lib/nodes/element/ElementUtility.d.ts.map +1 -1
- package/lib/nodes/element/ElementUtility.js +20 -15
- package/lib/nodes/element/ElementUtility.js.map +1 -1
- package/lib/nodes/element/IElement.d.ts +5 -5
- package/lib/nodes/element/IElement.d.ts.map +1 -1
- package/lib/nodes/html-anchor-element/HTMLAnchorElement.d.ts +7 -11
- package/lib/nodes/html-anchor-element/HTMLAnchorElement.d.ts.map +1 -1
- package/lib/nodes/html-anchor-element/HTMLAnchorElement.js +2 -26
- package/lib/nodes/html-anchor-element/HTMLAnchorElement.js.map +1 -1
- package/lib/nodes/html-anchor-element/HTMLAnchorElementNamedNodeMap.d.ts +20 -0
- package/lib/nodes/html-anchor-element/HTMLAnchorElementNamedNodeMap.d.ts.map +1 -0
- package/lib/nodes/html-anchor-element/HTMLAnchorElementNamedNodeMap.js +38 -0
- package/lib/nodes/html-anchor-element/HTMLAnchorElementNamedNodeMap.js.map +1 -0
- package/lib/nodes/html-button-element/HTMLButtonElement.d.ts +2 -9
- package/lib/nodes/html-button-element/HTMLButtonElement.d.ts.map +1 -1
- package/lib/nodes/html-button-element/HTMLButtonElement.js +2 -26
- package/lib/nodes/html-button-element/HTMLButtonElement.js.map +1 -1
- package/lib/nodes/html-button-element/HTMLButtonElementNamedNodeMap.d.ts +20 -0
- package/lib/nodes/html-button-element/HTMLButtonElementNamedNodeMap.d.ts.map +1 -0
- package/lib/nodes/html-button-element/HTMLButtonElementNamedNodeMap.js +35 -0
- package/lib/nodes/html-button-element/HTMLButtonElementNamedNodeMap.js.map +1 -0
- package/lib/nodes/html-element/HTMLElement.d.ts +3 -10
- package/lib/nodes/html-element/HTMLElement.d.ts.map +1 -1
- package/lib/nodes/html-element/HTMLElement.js +2 -20
- package/lib/nodes/html-element/HTMLElement.js.map +1 -1
- package/lib/nodes/html-element/HTMLElementNamedNodeMap.d.ts +20 -0
- package/lib/nodes/html-element/HTMLElementNamedNodeMap.d.ts.map +1 -0
- package/lib/nodes/html-element/HTMLElementNamedNodeMap.js +29 -0
- package/lib/nodes/html-element/HTMLElementNamedNodeMap.js.map +1 -0
- package/lib/nodes/html-iframe-element/HTMLIFrameElement.d.ts +2 -5
- package/lib/nodes/html-iframe-element/HTMLIFrameElement.d.ts.map +1 -1
- package/lib/nodes/html-iframe-element/HTMLIFrameElement.js +2 -12
- package/lib/nodes/html-iframe-element/HTMLIFrameElement.js.map +1 -1
- package/lib/nodes/html-iframe-element/HTMLIFrameElementNamedNodeMap.d.ts +16 -0
- package/lib/nodes/html-iframe-element/HTMLIFrameElementNamedNodeMap.d.ts.map +1 -0
- package/lib/nodes/html-iframe-element/HTMLIFrameElementNamedNodeMap.js +20 -0
- package/lib/nodes/html-iframe-element/HTMLIFrameElementNamedNodeMap.js.map +1 -0
- package/lib/nodes/html-input-element/HTMLInputElement.d.ts +2 -9
- package/lib/nodes/html-input-element/HTMLInputElement.d.ts.map +1 -1
- package/lib/nodes/html-input-element/HTMLInputElement.js +2 -26
- package/lib/nodes/html-input-element/HTMLInputElement.js.map +1 -1
- package/lib/nodes/html-input-element/HTMLInputElementNamedNodeMap.d.ts +20 -0
- package/lib/nodes/html-input-element/HTMLInputElementNamedNodeMap.d.ts.map +1 -0
- package/lib/nodes/html-input-element/HTMLInputElementNamedNodeMap.js +36 -0
- package/lib/nodes/html-input-element/HTMLInputElementNamedNodeMap.js.map +1 -0
- package/lib/nodes/html-link-element/HTMLLinkElement.d.ts +4 -10
- package/lib/nodes/html-link-element/HTMLLinkElement.d.ts.map +1 -1
- package/lib/nodes/html-link-element/HTMLLinkElement.js +2 -23
- package/lib/nodes/html-link-element/HTMLLinkElement.js.map +1 -1
- package/lib/nodes/html-link-element/HTMLLinkElementNamedNodeMap.d.ts +20 -0
- package/lib/nodes/html-link-element/HTMLLinkElementNamedNodeMap.d.ts.map +1 -0
- package/lib/nodes/html-link-element/HTMLLinkElementNamedNodeMap.js +33 -0
- package/lib/nodes/html-link-element/HTMLLinkElementNamedNodeMap.js.map +1 -0
- package/lib/nodes/html-option-element/HTMLOptionElement.d.ts +2 -9
- package/lib/nodes/html-option-element/HTMLOptionElement.d.ts.map +1 -1
- package/lib/nodes/html-option-element/HTMLOptionElement.js +2 -30
- package/lib/nodes/html-option-element/HTMLOptionElement.js.map +1 -1
- package/lib/nodes/html-option-element/HTMLOptionElementNamedNodeMap.d.ts +20 -0
- package/lib/nodes/html-option-element/HTMLOptionElementNamedNodeMap.d.ts.map +1 -0
- package/lib/nodes/html-option-element/HTMLOptionElementNamedNodeMap.js +39 -0
- package/lib/nodes/html-option-element/HTMLOptionElementNamedNodeMap.js.map +1 -0
- package/lib/nodes/html-script-element/HTMLScriptElement.d.ts +2 -9
- package/lib/nodes/html-script-element/HTMLScriptElement.d.ts.map +1 -1
- package/lib/nodes/html-script-element/HTMLScriptElement.js +2 -14
- package/lib/nodes/html-script-element/HTMLScriptElement.js.map +1 -1
- package/lib/nodes/html-script-element/HTMLScriptElementNamedNodeMap.d.ts +16 -0
- package/lib/nodes/html-script-element/HTMLScriptElementNamedNodeMap.d.ts.map +1 -0
- package/lib/nodes/html-script-element/HTMLScriptElementNamedNodeMap.js +20 -0
- package/lib/nodes/html-script-element/HTMLScriptElementNamedNodeMap.js.map +1 -0
- package/lib/nodes/html-select-element/HTMLSelectElement.d.ts +2 -9
- package/lib/nodes/html-select-element/HTMLSelectElement.d.ts.map +1 -1
- package/lib/nodes/html-select-element/HTMLSelectElement.js +2 -26
- package/lib/nodes/html-select-element/HTMLSelectElement.js.map +1 -1
- package/lib/nodes/html-select-element/HTMLSelectElementNamedNodeMap.d.ts +20 -0
- package/lib/nodes/html-select-element/HTMLSelectElementNamedNodeMap.d.ts.map +1 -0
- package/lib/nodes/html-select-element/HTMLSelectElementNamedNodeMap.js +36 -0
- package/lib/nodes/html-select-element/HTMLSelectElementNamedNodeMap.js.map +1 -0
- package/lib/nodes/html-text-area-element/HTMLTextAreaElement.d.ts +2 -9
- package/lib/nodes/html-text-area-element/HTMLTextAreaElement.d.ts.map +1 -1
- package/lib/nodes/html-text-area-element/HTMLTextAreaElement.js +2 -26
- package/lib/nodes/html-text-area-element/HTMLTextAreaElement.js.map +1 -1
- package/lib/nodes/html-text-area-element/HTMLTextAreaElementNamedNodeMap.d.ts +20 -0
- package/lib/nodes/html-text-area-element/HTMLTextAreaElementNamedNodeMap.d.ts.map +1 -0
- package/lib/nodes/html-text-area-element/HTMLTextAreaElementNamedNodeMap.js +36 -0
- package/lib/nodes/html-text-area-element/HTMLTextAreaElementNamedNodeMap.js.map +1 -0
- package/lib/nodes/html-unknown-element/HTMLUnknownElement.d.ts.map +1 -1
- package/lib/nodes/html-unknown-element/HTMLUnknownElement.js +5 -2
- package/lib/nodes/html-unknown-element/HTMLUnknownElement.js.map +1 -1
- package/lib/nodes/node/NodeUtility.d.ts.map +1 -1
- package/lib/nodes/node/NodeUtility.js +4 -15
- package/lib/nodes/node/NodeUtility.js.map +1 -1
- package/lib/nodes/svg-element/SVGElement.d.ts +3 -10
- package/lib/nodes/svg-element/SVGElement.d.ts.map +1 -1
- package/lib/nodes/svg-element/SVGElement.js +2 -20
- package/lib/nodes/svg-element/SVGElement.js.map +1 -1
- package/lib/nodes/svg-element/SVGElementNamedNodeMap.d.ts +20 -0
- package/lib/nodes/svg-element/SVGElementNamedNodeMap.d.ts.map +1 -0
- package/lib/nodes/svg-element/SVGElementNamedNodeMap.js +29 -0
- package/lib/nodes/svg-element/SVGElementNamedNodeMap.js.map +1 -0
- package/lib/query-selector/SelectorItem.js +1 -1
- package/lib/query-selector/SelectorItem.js.map +1 -1
- package/lib/xml-serializer/XMLSerializer.d.ts.map +1 -1
- package/lib/xml-serializer/XMLSerializer.js +3 -2
- package/lib/xml-serializer/XMLSerializer.js.map +1 -1
- package/package.json +1 -1
- package/src/css/declaration/AbstractCSSStyleDeclaration.ts +32 -20
- package/src/css/declaration/element-style/CSSStyleDeclarationElementStyle.ts +4 -3
- package/src/named-node-map/INamedNodeMap.ts +26 -26
- package/src/named-node-map/NamedNodeMap.ts +135 -73
- package/src/nodes/element/Dataset.ts +19 -17
- package/src/nodes/element/Element.ts +27 -176
- package/src/nodes/element/ElementNamedNodeMap.ts +194 -0
- package/src/nodes/element/ElementUtility.ts +20 -18
- package/src/nodes/element/IElement.ts +5 -5
- package/src/nodes/html-anchor-element/HTMLAnchorElement.ts +5 -33
- package/src/nodes/html-anchor-element/HTMLAnchorElementNamedNodeMap.ts +48 -0
- package/src/nodes/html-button-element/HTMLButtonElement.ts +3 -33
- package/src/nodes/html-button-element/HTMLButtonElementNamedNodeMap.ts +56 -0
- package/src/nodes/html-element/HTMLElement.ts +4 -28
- package/src/nodes/html-element/HTMLElementNamedNodeMap.ts +38 -0
- package/src/nodes/html-iframe-element/HTMLIFrameElement.ts +4 -18
- package/src/nodes/html-iframe-element/HTMLIFrameElementNamedNodeMap.ts +26 -0
- package/src/nodes/html-input-element/HTMLInputElement.ts +4 -33
- package/src/nodes/html-input-element/HTMLInputElementNamedNodeMap.ts +57 -0
- package/src/nodes/html-link-element/HTMLLinkElement.ts +4 -32
- package/src/nodes/html-link-element/HTMLLinkElementNamedNodeMap.ts +43 -0
- package/src/nodes/html-option-element/HTMLOptionElement.ts +3 -43
- package/src/nodes/html-option-element/HTMLOptionElementNamedNodeMap.ts +55 -0
- package/src/nodes/html-script-element/HTMLScriptElement.ts +3 -18
- package/src/nodes/html-script-element/HTMLScriptElementNamedNodeMap.ts +26 -0
- package/src/nodes/html-select-element/HTMLSelectElement.ts +4 -33
- package/src/nodes/html-select-element/HTMLSelectElementNamedNodeMap.ts +57 -0
- package/src/nodes/html-text-area-element/HTMLTextAreaElement.ts +3 -33
- package/src/nodes/html-text-area-element/HTMLTextAreaElementNamedNodeMap.ts +57 -0
- package/src/nodes/html-unknown-element/HTMLUnknownElement.ts +6 -2
- package/src/nodes/node/NodeUtility.ts +7 -24
- package/src/nodes/svg-element/SVGElement.ts +5 -28
- package/src/nodes/svg-element/SVGElementNamedNodeMap.ts +38 -0
- package/src/query-selector/SelectorItem.ts +1 -1
- package/src/xml-serializer/XMLSerializer.ts +4 -2
@@ -1,13 +1,10 @@
|
|
1
1
|
import Node from '../node/Node.js';
|
2
2
|
import ShadowRoot from '../shadow-root/ShadowRoot.js';
|
3
3
|
import Attr from '../attr/Attr.js';
|
4
|
-
import NamedNodeMap from '../../named-node-map/NamedNodeMap.js';
|
5
4
|
import DOMRect from './DOMRect.js';
|
6
5
|
import DOMTokenList from '../../dom-token-list/DOMTokenList.js';
|
7
6
|
import IDOMTokenList from '../../dom-token-list/IDOMTokenList.js';
|
8
7
|
import QuerySelector from '../../query-selector/QuerySelector.js';
|
9
|
-
import MutationRecord from '../../mutation-observer/MutationRecord.js';
|
10
|
-
import MutationTypeEnum from '../../mutation-observer/MutationTypeEnum.js';
|
11
8
|
import NamespaceURI from '../../config/NamespaceURI.js';
|
12
9
|
import XMLParser from '../../xml-parser/XMLParser.js';
|
13
10
|
import XMLSerializer from '../../xml-serializer/XMLSerializer.js';
|
@@ -32,6 +29,7 @@ import ElementUtility from './ElementUtility.js';
|
|
32
29
|
import HTMLCollection from './HTMLCollection.js';
|
33
30
|
import EventPhaseEnum from '../../event/EventPhaseEnum.js';
|
34
31
|
import CSSStyleDeclaration from '../../css/declaration/CSSStyleDeclaration.js';
|
32
|
+
import ElementNamedNodeMap from './ElementNamedNodeMap.js';
|
35
33
|
|
36
34
|
/**
|
37
35
|
* Element.
|
@@ -89,9 +87,9 @@ export default class Element extends Node implements IElement {
|
|
89
87
|
|
90
88
|
// Used for being able to access closed shadow roots
|
91
89
|
public _shadowRoot: IShadowRoot = null;
|
92
|
-
public
|
90
|
+
public readonly attributes: INamedNodeMap = new ElementNamedNodeMap(this);
|
93
91
|
|
94
|
-
|
92
|
+
public _classList: DOMTokenList = null;
|
95
93
|
public _isValue?: string | null = null;
|
96
94
|
public _computedStyle: CSSStyleDeclaration | null = null;
|
97
95
|
|
@@ -266,15 +264,6 @@ export default class Element extends Node implements IElement {
|
|
266
264
|
this.replaceWith(html);
|
267
265
|
}
|
268
266
|
|
269
|
-
/**
|
270
|
-
* Returns attributes.
|
271
|
-
*
|
272
|
-
* @returns Attributes.
|
273
|
-
*/
|
274
|
-
public get attributes(): INamedNodeMap {
|
275
|
-
return Object.assign(new NamedNodeMap(this), Object.values(this._attributes), this._attributes);
|
276
|
-
}
|
277
|
-
|
278
267
|
/**
|
279
268
|
* First element child.
|
280
269
|
*
|
@@ -364,10 +353,9 @@ export default class Element extends Node implements IElement {
|
|
364
353
|
|
365
354
|
Attr._ownerDocument = this.ownerDocument;
|
366
355
|
|
367
|
-
for (
|
368
|
-
const
|
369
|
-
(
|
370
|
-
(<Element>clone)._attributes[key] = attr;
|
356
|
+
for (let i = 0, max = this.attributes.length; i < max; i++) {
|
357
|
+
const attribute = this.attributes[i];
|
358
|
+
clone.attributes.setNamedItem(Object.assign(new Attr(), attribute));
|
371
359
|
}
|
372
360
|
|
373
361
|
if (deep) {
|
@@ -563,7 +551,11 @@ export default class Element extends Node implements IElement {
|
|
563
551
|
* @returns Attribute names.
|
564
552
|
*/
|
565
553
|
public getAttributeNames(): string[] {
|
566
|
-
|
554
|
+
const attributeNames = [];
|
555
|
+
for (let i = 0, max = this.attributes.length; i < max; i++) {
|
556
|
+
attributeNames.push(this.attributes[i].name);
|
557
|
+
}
|
558
|
+
return attributeNames;
|
567
559
|
}
|
568
560
|
|
569
561
|
/**
|
@@ -635,13 +627,7 @@ export default class Element extends Node implements IElement {
|
|
635
627
|
* @returns True if attribute exists, false otherwise.
|
636
628
|
*/
|
637
629
|
public hasAttributeNS(namespace: string | null, localName: string): boolean {
|
638
|
-
|
639
|
-
const attribute = this._attributes[name];
|
640
|
-
if (attribute.namespaceURI === namespace && attribute.localName === localName) {
|
641
|
-
return true;
|
642
|
-
}
|
643
|
-
}
|
644
|
-
return false;
|
630
|
+
return this.attributes.getNamedItemNS(namespace, localName) !== null;
|
645
631
|
}
|
646
632
|
|
647
633
|
/**
|
@@ -650,7 +636,7 @@ export default class Element extends Node implements IElement {
|
|
650
636
|
* @returns "true" if the element has attributes.
|
651
637
|
*/
|
652
638
|
public hasAttributes(): boolean {
|
653
|
-
return
|
639
|
+
return this.attributes.length > 0;
|
654
640
|
}
|
655
641
|
|
656
642
|
/**
|
@@ -659,10 +645,7 @@ export default class Element extends Node implements IElement {
|
|
659
645
|
* @param name Name.
|
660
646
|
*/
|
661
647
|
public removeAttribute(name: string): void {
|
662
|
-
|
663
|
-
if (attribute) {
|
664
|
-
this.removeAttributeNode(attribute);
|
665
|
-
}
|
648
|
+
this.attributes.removeNamedItem(name);
|
666
649
|
}
|
667
650
|
|
668
651
|
/**
|
@@ -672,12 +655,7 @@ export default class Element extends Node implements IElement {
|
|
672
655
|
* @param localName Local name.
|
673
656
|
*/
|
674
657
|
public removeAttributeNS(namespace: string | null, localName: string): void {
|
675
|
-
|
676
|
-
const attribute = this._attributes[name];
|
677
|
-
if (attribute.namespaceURI === namespace && attribute.localName === localName) {
|
678
|
-
this.removeAttribute(attribute.name);
|
679
|
-
}
|
680
|
-
}
|
658
|
+
this.attributes.removeNamedItemNS(namespace, localName);
|
681
659
|
}
|
682
660
|
|
683
661
|
/**
|
@@ -824,67 +802,7 @@ export default class Element extends Node implements IElement {
|
|
824
802
|
* @returns Replaced attribute.
|
825
803
|
*/
|
826
804
|
public setAttributeNode(attribute: IAttr): IAttr | null {
|
827
|
-
|
828
|
-
const replacedAttribute = this._attributes[name];
|
829
|
-
const oldValue = replacedAttribute ? replacedAttribute.value : null;
|
830
|
-
|
831
|
-
attribute.name = name;
|
832
|
-
(<IElement>attribute.ownerElement) = <IElement>this;
|
833
|
-
(<IDocument>attribute.ownerDocument) = this.ownerDocument;
|
834
|
-
|
835
|
-
if (this.isConnected) {
|
836
|
-
this.ownerDocument['_cacheID']++;
|
837
|
-
}
|
838
|
-
|
839
|
-
this._attributes[name] = attribute;
|
840
|
-
|
841
|
-
if (attribute.name === 'class' && this._classList) {
|
842
|
-
this._classList._updateIndices();
|
843
|
-
}
|
844
|
-
|
845
|
-
if (attribute.name === 'id' || attribute.name === 'name') {
|
846
|
-
if (this.parentNode && (<IElement>this.parentNode).children && attribute.value !== oldValue) {
|
847
|
-
if (oldValue) {
|
848
|
-
(<HTMLCollection<IElement>>(<IElement>this.parentNode).children)._removeNamedItem(
|
849
|
-
this,
|
850
|
-
oldValue
|
851
|
-
);
|
852
|
-
}
|
853
|
-
if (attribute.value) {
|
854
|
-
(<HTMLCollection<IElement>>(<IElement>this.parentNode).children)._appendNamedItem(
|
855
|
-
this,
|
856
|
-
attribute.value
|
857
|
-
);
|
858
|
-
}
|
859
|
-
}
|
860
|
-
}
|
861
|
-
|
862
|
-
if (
|
863
|
-
this.attributeChangedCallback &&
|
864
|
-
(<typeof Element>this.constructor)._observedAttributes &&
|
865
|
-
(<typeof Element>this.constructor)._observedAttributes.includes(name)
|
866
|
-
) {
|
867
|
-
this.attributeChangedCallback(name, oldValue, attribute.value);
|
868
|
-
}
|
869
|
-
|
870
|
-
// MutationObserver
|
871
|
-
if (this._observers.length > 0) {
|
872
|
-
for (const observer of this._observers) {
|
873
|
-
if (
|
874
|
-
observer.options.attributes &&
|
875
|
-
(!observer.options.attributeFilter || observer.options.attributeFilter.includes(name))
|
876
|
-
) {
|
877
|
-
const record = new MutationRecord();
|
878
|
-
record.target = this;
|
879
|
-
record.type = MutationTypeEnum.attributes;
|
880
|
-
record.attributeName = name;
|
881
|
-
record.oldValue = observer.options.attributeOldValue ? oldValue : null;
|
882
|
-
observer.callback([record]);
|
883
|
-
}
|
884
|
-
}
|
885
|
-
}
|
886
|
-
|
887
|
-
return replacedAttribute || null;
|
805
|
+
return this.attributes.setNamedItem(attribute);
|
888
806
|
}
|
889
807
|
|
890
808
|
/**
|
@@ -893,8 +811,8 @@ export default class Element extends Node implements IElement {
|
|
893
811
|
* @param attribute Attribute.
|
894
812
|
* @returns Replaced attribute.
|
895
813
|
*/
|
896
|
-
public setAttributeNodeNS(attribute: IAttr): IAttr {
|
897
|
-
return this.
|
814
|
+
public setAttributeNodeNS(attribute: IAttr): IAttr | null {
|
815
|
+
return this.attributes.setNamedItemNS(attribute);
|
898
816
|
}
|
899
817
|
|
900
818
|
/**
|
@@ -903,33 +821,19 @@ export default class Element extends Node implements IElement {
|
|
903
821
|
* @param name Name.
|
904
822
|
* @returns Replaced attribute.
|
905
823
|
*/
|
906
|
-
public getAttributeNode(name: string): IAttr {
|
907
|
-
return this.
|
824
|
+
public getAttributeNode(name: string): IAttr | null {
|
825
|
+
return this.attributes.getNamedItem(name);
|
908
826
|
}
|
909
827
|
|
910
828
|
/**
|
911
829
|
* Returns a namespaced Attr node.
|
912
830
|
*
|
913
831
|
* @param namespace Namespace.
|
914
|
-
* @param
|
832
|
+
* @param localName Name.
|
915
833
|
* @returns Replaced attribute.
|
916
834
|
*/
|
917
|
-
public getAttributeNodeNS(namespace: string | null,
|
918
|
-
|
919
|
-
if (
|
920
|
-
this._attributes[attributeName] &&
|
921
|
-
this._attributes[attributeName].namespaceURI === namespace &&
|
922
|
-
this._attributes[attributeName].localName === attributeName
|
923
|
-
) {
|
924
|
-
return this._attributes[attributeName];
|
925
|
-
}
|
926
|
-
for (const name of Object.keys(this._attributes)) {
|
927
|
-
const attribute = this._attributes[name];
|
928
|
-
if (attribute.namespaceURI === namespace && attribute.localName === attributeName) {
|
929
|
-
return attribute;
|
930
|
-
}
|
931
|
-
}
|
932
|
-
return null;
|
835
|
+
public getAttributeNodeNS(namespace: string | null, localName: string): IAttr | null {
|
836
|
+
return this.attributes.getNamedItemNS(namespace, localName);
|
933
837
|
}
|
934
838
|
|
935
839
|
/**
|
@@ -938,61 +842,8 @@ export default class Element extends Node implements IElement {
|
|
938
842
|
* @param attribute Attribute.
|
939
843
|
* @returns Removed attribute.
|
940
844
|
*/
|
941
|
-
public removeAttributeNode(attribute: IAttr): IAttr {
|
942
|
-
|
943
|
-
|
944
|
-
if (removedAttribute !== attribute) {
|
945
|
-
throw new DOMException(
|
946
|
-
`Failed to execute 'removeAttributeNode' on 'Element': The node provided is owned by another element.`
|
947
|
-
);
|
948
|
-
}
|
949
|
-
|
950
|
-
delete this._attributes[attribute.name];
|
951
|
-
|
952
|
-
if (this.isConnected) {
|
953
|
-
this.ownerDocument['_cacheID']++;
|
954
|
-
}
|
955
|
-
|
956
|
-
if (attribute.name === 'class' && this._classList) {
|
957
|
-
this._classList._updateIndices();
|
958
|
-
}
|
959
|
-
|
960
|
-
if (attribute.name === 'id' || attribute.name === 'name') {
|
961
|
-
if (this.parentNode && (<IElement>this.parentNode).children && attribute.value) {
|
962
|
-
(<HTMLCollection<IElement>>(<IElement>this.parentNode).children)._removeNamedItem(
|
963
|
-
this,
|
964
|
-
attribute.value
|
965
|
-
);
|
966
|
-
}
|
967
|
-
}
|
968
|
-
|
969
|
-
if (
|
970
|
-
this.attributeChangedCallback &&
|
971
|
-
(<typeof Element>this.constructor)._observedAttributes &&
|
972
|
-
(<typeof Element>this.constructor)._observedAttributes.includes(attribute.name)
|
973
|
-
) {
|
974
|
-
this.attributeChangedCallback(attribute.name, attribute.value, null);
|
975
|
-
}
|
976
|
-
|
977
|
-
// MutationObserver
|
978
|
-
if (this._observers.length > 0) {
|
979
|
-
for (const observer of this._observers) {
|
980
|
-
if (
|
981
|
-
observer.options.attributes &&
|
982
|
-
(!observer.options.attributeFilter ||
|
983
|
-
observer.options.attributeFilter.includes(attribute.name))
|
984
|
-
) {
|
985
|
-
const record = new MutationRecord();
|
986
|
-
record.target = this;
|
987
|
-
record.type = MutationTypeEnum.attributes;
|
988
|
-
record.attributeName = attribute.name;
|
989
|
-
record.oldValue = observer.options.attributeOldValue ? attribute.value : null;
|
990
|
-
observer.callback([record]);
|
991
|
-
}
|
992
|
-
}
|
993
|
-
}
|
994
|
-
|
995
|
-
return attribute;
|
845
|
+
public removeAttributeNode(attribute: IAttr): IAttr | null {
|
846
|
+
return this.attributes.removeNamedItem(attribute.name);
|
996
847
|
}
|
997
848
|
|
998
849
|
/**
|
@@ -1001,8 +852,8 @@ export default class Element extends Node implements IElement {
|
|
1001
852
|
* @param attribute Attribute.
|
1002
853
|
* @returns Removed attribute.
|
1003
854
|
*/
|
1004
|
-
public removeAttributeNodeNS(attribute: IAttr): IAttr {
|
1005
|
-
return this.
|
855
|
+
public removeAttributeNodeNS(attribute: IAttr): IAttr | null {
|
856
|
+
return this.attributes.removeNamedItemNS(attribute.namespaceURI, attribute.localName);
|
1006
857
|
}
|
1007
858
|
|
1008
859
|
/**
|
@@ -0,0 +1,194 @@
|
|
1
|
+
import NamespaceURI from '../../config/NamespaceURI.js';
|
2
|
+
import MutationRecord from '../../mutation-observer/MutationRecord.js';
|
3
|
+
import MutationTypeEnum from '../../mutation-observer/MutationTypeEnum.js';
|
4
|
+
import NamedNodeMap from '../../named-node-map/NamedNodeMap.js';
|
5
|
+
import IAttr from '../attr/IAttr.js';
|
6
|
+
import IDocument from '../document/IDocument.js';
|
7
|
+
import Element from './Element.js';
|
8
|
+
import HTMLCollection from './HTMLCollection.js';
|
9
|
+
import IElement from './IElement.js';
|
10
|
+
|
11
|
+
/**
|
12
|
+
* Named Node Map.
|
13
|
+
*
|
14
|
+
* @see https://developer.mozilla.org/en-US/docs/Web/API/NamedNodeMap
|
15
|
+
*/
|
16
|
+
export default class ElementNamedNodeMap extends NamedNodeMap {
|
17
|
+
protected _ownerElement: Element;
|
18
|
+
|
19
|
+
/**
|
20
|
+
* Constructor.
|
21
|
+
*
|
22
|
+
* @param ownerElement Owner element.
|
23
|
+
*/
|
24
|
+
constructor(ownerElement: Element) {
|
25
|
+
super();
|
26
|
+
this._ownerElement = ownerElement;
|
27
|
+
}
|
28
|
+
|
29
|
+
/**
|
30
|
+
* @override
|
31
|
+
*/
|
32
|
+
public override getNamedItem(name: string): IAttr | null {
|
33
|
+
return this._namedItems[this._getAttributeName(name)] || null;
|
34
|
+
}
|
35
|
+
|
36
|
+
/**
|
37
|
+
* @override
|
38
|
+
*/
|
39
|
+
public override getNamedItemNS(namespace: string, localName: string): IAttr | null {
|
40
|
+
return super.getNamedItemNS(namespace, this._getAttributeName(localName));
|
41
|
+
}
|
42
|
+
|
43
|
+
/**
|
44
|
+
* @override
|
45
|
+
*/
|
46
|
+
public override setNamedItem(item: IAttr): IAttr | null {
|
47
|
+
if (!item.name) {
|
48
|
+
return null;
|
49
|
+
}
|
50
|
+
|
51
|
+
item.name = this._getAttributeName(item.name);
|
52
|
+
(<IElement>item.ownerElement) = this._ownerElement;
|
53
|
+
(<IDocument>item.ownerDocument) = this._ownerElement.ownerDocument;
|
54
|
+
|
55
|
+
const replacedItem = super.setNamedItem(item);
|
56
|
+
const oldValue = replacedItem ? replacedItem.value : null;
|
57
|
+
|
58
|
+
if (this._ownerElement.isConnected) {
|
59
|
+
this._ownerElement.ownerDocument['_cacheID']++;
|
60
|
+
}
|
61
|
+
|
62
|
+
if (item.name === 'class' && this._ownerElement._classList) {
|
63
|
+
this._ownerElement._classList._updateIndices();
|
64
|
+
}
|
65
|
+
|
66
|
+
if (item.name === 'id' || item.name === 'name') {
|
67
|
+
if (
|
68
|
+
this._ownerElement.parentNode &&
|
69
|
+
(<IElement>this._ownerElement.parentNode).children &&
|
70
|
+
item.value !== oldValue
|
71
|
+
) {
|
72
|
+
if (oldValue) {
|
73
|
+
(<HTMLCollection<IElement>>(
|
74
|
+
(<IElement>this._ownerElement.parentNode).children
|
75
|
+
))._removeNamedItem(this._ownerElement, oldValue);
|
76
|
+
}
|
77
|
+
if (item.value) {
|
78
|
+
(<HTMLCollection<IElement>>(
|
79
|
+
(<IElement>this._ownerElement.parentNode).children
|
80
|
+
))._appendNamedItem(this._ownerElement, item.value);
|
81
|
+
}
|
82
|
+
}
|
83
|
+
}
|
84
|
+
|
85
|
+
if (
|
86
|
+
this._ownerElement.attributeChangedCallback &&
|
87
|
+
(<typeof Element>this._ownerElement.constructor)._observedAttributes &&
|
88
|
+
(<typeof Element>this._ownerElement.constructor)._observedAttributes.includes(item.name)
|
89
|
+
) {
|
90
|
+
this._ownerElement.attributeChangedCallback(item.name, oldValue, item.value);
|
91
|
+
}
|
92
|
+
|
93
|
+
// MutationObserver
|
94
|
+
if (this._ownerElement._observers.length > 0) {
|
95
|
+
for (const observer of this._ownerElement._observers) {
|
96
|
+
if (
|
97
|
+
observer.options.attributes &&
|
98
|
+
(!observer.options.attributeFilter ||
|
99
|
+
observer.options.attributeFilter.includes(item.name))
|
100
|
+
) {
|
101
|
+
const record = new MutationRecord();
|
102
|
+
record.target = this._ownerElement;
|
103
|
+
record.type = MutationTypeEnum.attributes;
|
104
|
+
record.attributeName = item.name;
|
105
|
+
record.oldValue = observer.options.attributeOldValue ? oldValue : null;
|
106
|
+
observer.callback([record]);
|
107
|
+
}
|
108
|
+
}
|
109
|
+
}
|
110
|
+
|
111
|
+
return replacedItem || null;
|
112
|
+
}
|
113
|
+
|
114
|
+
/**
|
115
|
+
* @override
|
116
|
+
*/
|
117
|
+
public override removeNamedItem(name: string): IAttr | null {
|
118
|
+
const removedItem = super.removeNamedItem(this._getAttributeName(name));
|
119
|
+
|
120
|
+
if (!removedItem) {
|
121
|
+
return null;
|
122
|
+
}
|
123
|
+
|
124
|
+
if (this._ownerElement.isConnected) {
|
125
|
+
this._ownerElement.ownerDocument['_cacheID']++;
|
126
|
+
}
|
127
|
+
|
128
|
+
if (removedItem.name === 'class' && this._ownerElement._classList) {
|
129
|
+
this._ownerElement._classList._updateIndices();
|
130
|
+
}
|
131
|
+
|
132
|
+
if (removedItem.name === 'id' || removedItem.name === 'name') {
|
133
|
+
if (
|
134
|
+
this._ownerElement.parentNode &&
|
135
|
+
(<IElement>this._ownerElement.parentNode).children &&
|
136
|
+
removedItem.value
|
137
|
+
) {
|
138
|
+
(<HTMLCollection<IElement>>(
|
139
|
+
(<IElement>this._ownerElement.parentNode).children
|
140
|
+
))._removeNamedItem(this._ownerElement, removedItem.value);
|
141
|
+
}
|
142
|
+
}
|
143
|
+
|
144
|
+
if (
|
145
|
+
this._ownerElement.attributeChangedCallback &&
|
146
|
+
(<typeof Element>this._ownerElement.constructor)._observedAttributes &&
|
147
|
+
(<typeof Element>this._ownerElement.constructor)._observedAttributes.includes(
|
148
|
+
removedItem.name
|
149
|
+
)
|
150
|
+
) {
|
151
|
+
this._ownerElement.attributeChangedCallback(removedItem.name, removedItem.value, null);
|
152
|
+
}
|
153
|
+
|
154
|
+
// MutationObserver
|
155
|
+
if (this._ownerElement._observers.length > 0) {
|
156
|
+
for (const observer of this._ownerElement._observers) {
|
157
|
+
if (
|
158
|
+
observer.options.attributes &&
|
159
|
+
(!observer.options.attributeFilter ||
|
160
|
+
observer.options.attributeFilter.includes(removedItem.name))
|
161
|
+
) {
|
162
|
+
const record = new MutationRecord();
|
163
|
+
record.target = this._ownerElement;
|
164
|
+
record.type = MutationTypeEnum.attributes;
|
165
|
+
record.attributeName = removedItem.name;
|
166
|
+
record.oldValue = observer.options.attributeOldValue ? removedItem.value : null;
|
167
|
+
observer.callback([record]);
|
168
|
+
}
|
169
|
+
}
|
170
|
+
}
|
171
|
+
|
172
|
+
return removedItem;
|
173
|
+
}
|
174
|
+
|
175
|
+
/**
|
176
|
+
* @override
|
177
|
+
*/
|
178
|
+
public override removeNamedItemNS(namespace: string, localName: string): IAttr | null {
|
179
|
+
return super.removeNamedItemNS(namespace, this._getAttributeName(localName));
|
180
|
+
}
|
181
|
+
|
182
|
+
/**
|
183
|
+
* Returns attribute name.
|
184
|
+
*
|
185
|
+
* @param name Name.
|
186
|
+
* @returns Attribute name based on namespace.
|
187
|
+
*/
|
188
|
+
protected _getAttributeName(name): string {
|
189
|
+
if (this._ownerElement.namespaceURI === NamespaceURI.svg) {
|
190
|
+
return name;
|
191
|
+
}
|
192
|
+
return name.toLowerCase();
|
193
|
+
}
|
194
|
+
}
|
@@ -44,11 +44,12 @@ export default class ElementUtility {
|
|
44
44
|
if (node.parentNode && (<IHTMLElement>node.parentNode).children) {
|
45
45
|
const index = (<IHTMLElement>node.parentNode).children.indexOf(<IHTMLElement>node);
|
46
46
|
if (index !== -1) {
|
47
|
-
for (const
|
48
|
-
|
47
|
+
for (const attributeName of NAMED_ITEM_ATTRIBUTES) {
|
48
|
+
const attribute = (<Element>node).attributes.getNamedItem(attributeName);
|
49
|
+
if (attribute) {
|
49
50
|
(<HTMLCollection<IHTMLElement>>(<IElement>node.parentNode).children)._removeNamedItem(
|
50
51
|
<IHTMLElement>node,
|
51
|
-
|
52
|
+
attribute.value
|
52
53
|
);
|
53
54
|
}
|
54
55
|
}
|
@@ -56,11 +57,12 @@ export default class ElementUtility {
|
|
56
57
|
}
|
57
58
|
}
|
58
59
|
|
59
|
-
for (const
|
60
|
-
|
60
|
+
for (const attributeName of NAMED_ITEM_ATTRIBUTES) {
|
61
|
+
const attribute = (<Element>node).attributes.getNamedItem(attributeName);
|
62
|
+
if (attribute) {
|
61
63
|
(<HTMLCollection<IHTMLElement>>ancestorNode.children)._appendNamedItem(
|
62
64
|
<IHTMLElement>node,
|
63
|
-
|
65
|
+
attribute.value
|
64
66
|
);
|
65
67
|
}
|
66
68
|
}
|
@@ -89,11 +91,12 @@ export default class ElementUtility {
|
|
89
91
|
if (node.nodeType === NodeTypeEnum.elementNode) {
|
90
92
|
const index = ancestorNode.children.indexOf(<IElement>node);
|
91
93
|
if (index !== -1) {
|
92
|
-
for (const
|
93
|
-
|
94
|
+
for (const attributeName of NAMED_ITEM_ATTRIBUTES) {
|
95
|
+
const attribute = (<Element>node).attributes.getNamedItem(attributeName);
|
96
|
+
if (attribute) {
|
94
97
|
(<HTMLCollection<IHTMLElement>>ancestorNode.children)._removeNamedItem(
|
95
98
|
<IHTMLElement>node,
|
96
|
-
|
99
|
+
attribute.value
|
97
100
|
);
|
98
101
|
}
|
99
102
|
}
|
@@ -138,14 +141,12 @@ export default class ElementUtility {
|
|
138
141
|
if (newNode.parentNode && (<IHTMLElement>newNode.parentNode).children) {
|
139
142
|
const index = (<IHTMLElement>newNode.parentNode).children.indexOf(<IHTMLElement>newNode);
|
140
143
|
if (index !== -1) {
|
141
|
-
for (const
|
142
|
-
|
144
|
+
for (const attributeName of NAMED_ITEM_ATTRIBUTES) {
|
145
|
+
const attribute = (<Element>newNode).attributes.getNamedItem(attributeName);
|
146
|
+
if (attribute) {
|
143
147
|
(<HTMLCollection<IHTMLElement>>(
|
144
148
|
(<IElement>newNode.parentNode).children
|
145
|
-
))._removeNamedItem(
|
146
|
-
<IHTMLElement>newNode,
|
147
|
-
(<Element>newNode)._attributes[attribute].value
|
148
|
-
);
|
149
|
+
))._removeNamedItem(<IHTMLElement>newNode, attribute.value);
|
149
150
|
}
|
150
151
|
}
|
151
152
|
|
@@ -171,11 +172,12 @@ export default class ElementUtility {
|
|
171
172
|
}
|
172
173
|
}
|
173
174
|
|
174
|
-
for (const
|
175
|
-
|
175
|
+
for (const attributeName of NAMED_ITEM_ATTRIBUTES) {
|
176
|
+
const attribute = (<Element>newNode).attributes.getNamedItem(attributeName);
|
177
|
+
if (attribute) {
|
176
178
|
(<HTMLCollection<IHTMLElement>>ancestorNode.children)._appendNamedItem(
|
177
179
|
<IHTMLElement>newNode,
|
178
|
-
|
180
|
+
attribute.value
|
179
181
|
);
|
180
182
|
}
|
181
183
|
}
|
@@ -238,7 +238,7 @@ export default interface IElement extends IChildNode, INonDocumentTypeChildNode,
|
|
238
238
|
* @param attribute Attribute.
|
239
239
|
* @returns Replaced attribute.
|
240
240
|
*/
|
241
|
-
setAttributeNode(attribute: IAttr): IAttr;
|
241
|
+
setAttributeNode(attribute: IAttr): IAttr | null;
|
242
242
|
|
243
243
|
/**
|
244
244
|
* The setAttributeNodeNS() method adds a new Attr node to the specified element.
|
@@ -246,7 +246,7 @@ export default interface IElement extends IChildNode, INonDocumentTypeChildNode,
|
|
246
246
|
* @param attribute Attribute.
|
247
247
|
* @returns Replaced attribute.
|
248
248
|
*/
|
249
|
-
setAttributeNodeNS(attribute: IAttr): IAttr;
|
249
|
+
setAttributeNodeNS(attribute: IAttr): IAttr | null;
|
250
250
|
|
251
251
|
/**
|
252
252
|
* Returns an Attr node.
|
@@ -254,7 +254,7 @@ export default interface IElement extends IChildNode, INonDocumentTypeChildNode,
|
|
254
254
|
* @param name Name.
|
255
255
|
* @returns Replaced attribute.
|
256
256
|
*/
|
257
|
-
getAttributeNode(name: string): IAttr;
|
257
|
+
getAttributeNode(name: string): IAttr | null;
|
258
258
|
|
259
259
|
/**
|
260
260
|
* Returns a namespaced Attr node.
|
@@ -263,7 +263,7 @@ export default interface IElement extends IChildNode, INonDocumentTypeChildNode,
|
|
263
263
|
* @param nodeName Node name.
|
264
264
|
* @returns Replaced attribute.
|
265
265
|
*/
|
266
|
-
getAttributeNodeNS(namespace: string | null, nodeName: string): IAttr;
|
266
|
+
getAttributeNodeNS(namespace: string | null, nodeName: string): IAttr | null;
|
267
267
|
|
268
268
|
/**
|
269
269
|
* Removes an Attr node.
|
@@ -279,7 +279,7 @@ export default interface IElement extends IChildNode, INonDocumentTypeChildNode,
|
|
279
279
|
* @param attribute Attribute.
|
280
280
|
* @returns Removed attribute.
|
281
281
|
*/
|
282
|
-
removeAttributeNodeNS(attribute: IAttr): IAttr;
|
282
|
+
removeAttributeNodeNS(attribute: IAttr): IAttr | null;
|
283
283
|
|
284
284
|
/**
|
285
285
|
* Clones a node.
|
@@ -3,8 +3,9 @@ import DOMTokenList from '../../dom-token-list/DOMTokenList.js';
|
|
3
3
|
import IDOMTokenList from '../../dom-token-list/IDOMTokenList.js';
|
4
4
|
import IHTMLAnchorElement from './IHTMLAnchorElement.js';
|
5
5
|
import { URL } from 'url';
|
6
|
-
import IAttr from '../attr/IAttr.js';
|
7
6
|
import HTMLAnchorElementUtility from './HTMLAnchorElementUtility.js';
|
7
|
+
import INamedNodeMap from '../../named-node-map/INamedNodeMap.js';
|
8
|
+
import HTMLAnchorElementNamedNodeMap from './HTMLAnchorElementNamedNodeMap.js';
|
8
9
|
|
9
10
|
/**
|
10
11
|
* HTML Anchor Element.
|
@@ -13,8 +14,9 @@ import HTMLAnchorElementUtility from './HTMLAnchorElementUtility.js';
|
|
13
14
|
* https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.
|
14
15
|
*/
|
15
16
|
export default class HTMLAnchorElement extends HTMLElement implements IHTMLAnchorElement {
|
16
|
-
|
17
|
-
|
17
|
+
public override readonly attributes: INamedNodeMap = new HTMLAnchorElementNamedNodeMap(this);
|
18
|
+
public _relList: DOMTokenList = null;
|
19
|
+
public _url: URL | null = null;
|
18
20
|
|
19
21
|
/**
|
20
22
|
* Returns download.
|
@@ -413,34 +415,4 @@ export default class HTMLAnchorElement extends HTMLElement implements IHTMLAncho
|
|
413
415
|
public override toString(): string {
|
414
416
|
return this.href;
|
415
417
|
}
|
416
|
-
|
417
|
-
/**
|
418
|
-
* @override
|
419
|
-
*/
|
420
|
-
public override setAttributeNode(attribute: IAttr): IAttr | null {
|
421
|
-
const replacedAttribute = super.setAttributeNode(attribute);
|
422
|
-
|
423
|
-
if (attribute.name === 'rel' && this._relList) {
|
424
|
-
this._relList._updateIndices();
|
425
|
-
} else if (attribute.name === 'href') {
|
426
|
-
this._url = HTMLAnchorElementUtility.getUrl(this.ownerDocument, attribute.value);
|
427
|
-
}
|
428
|
-
|
429
|
-
return replacedAttribute;
|
430
|
-
}
|
431
|
-
|
432
|
-
/**
|
433
|
-
* @override
|
434
|
-
*/
|
435
|
-
public override removeAttributeNode(attribute: IAttr): IAttr {
|
436
|
-
super.removeAttributeNode(attribute);
|
437
|
-
|
438
|
-
if (attribute.name === 'rel' && this._relList) {
|
439
|
-
this._relList._updateIndices();
|
440
|
-
} else if (attribute.name === 'href') {
|
441
|
-
this._url = null;
|
442
|
-
}
|
443
|
-
|
444
|
-
return attribute;
|
445
|
-
}
|
446
418
|
}
|