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
@@ -0,0 +1,55 @@
|
|
1
|
+
import IAttr from '../attr/IAttr.js';
|
2
|
+
import HTMLElementNamedNodeMap from '../html-element/HTMLElementNamedNodeMap.js';
|
3
|
+
import HTMLSelectElement from '../html-select-element/HTMLSelectElement.js';
|
4
|
+
import HTMLOptionElement from './HTMLOptionElement.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 HTMLOptionElementNamedNodeMap extends HTMLElementNamedNodeMap {
|
12
|
+
protected _ownerElement: HTMLOptionElement;
|
13
|
+
|
14
|
+
/**
|
15
|
+
* @override
|
16
|
+
*/
|
17
|
+
public override setNamedItem(item: IAttr): IAttr | null {
|
18
|
+
const replacedItem = super.setNamedItem(item);
|
19
|
+
|
20
|
+
if (
|
21
|
+
!this._ownerElement._dirtyness &&
|
22
|
+
item.name === 'selected' &&
|
23
|
+
replacedItem?.value !== item.value
|
24
|
+
) {
|
25
|
+
const selectNode = <HTMLSelectElement>this._ownerElement._selectNode;
|
26
|
+
|
27
|
+
this._ownerElement._selectedness = true;
|
28
|
+
|
29
|
+
if (selectNode) {
|
30
|
+
selectNode._updateOptionItems(this._ownerElement);
|
31
|
+
}
|
32
|
+
}
|
33
|
+
|
34
|
+
return replacedItem || null;
|
35
|
+
}
|
36
|
+
|
37
|
+
/**
|
38
|
+
* @override
|
39
|
+
*/
|
40
|
+
public override removeNamedItem(name: string): IAttr | null {
|
41
|
+
const removedItem = super.removeNamedItem(name);
|
42
|
+
|
43
|
+
if (removedItem && !this._ownerElement._dirtyness && removedItem.name === 'selected') {
|
44
|
+
const selectNode = <HTMLSelectElement>this._ownerElement._selectNode;
|
45
|
+
|
46
|
+
this._ownerElement._selectedness = false;
|
47
|
+
|
48
|
+
if (selectNode) {
|
49
|
+
selectNode._updateOptionItems();
|
50
|
+
}
|
51
|
+
}
|
52
|
+
|
53
|
+
return removedItem;
|
54
|
+
}
|
55
|
+
}
|
@@ -1,10 +1,11 @@
|
|
1
|
-
import IAttr from '../attr/IAttr.js';
|
2
1
|
import HTMLElement from '../html-element/HTMLElement.js';
|
3
2
|
import IHTMLScriptElement from './IHTMLScriptElement.js';
|
4
3
|
import HTMLScriptElementUtility from './HTMLScriptElementUtility.js';
|
5
4
|
import Event from '../../event/Event.js';
|
6
5
|
import ErrorEvent from '../../event/events/ErrorEvent.js';
|
7
6
|
import INode from '../../nodes/node/INode.js';
|
7
|
+
import INamedNodeMap from '../../named-node-map/INamedNodeMap.js';
|
8
|
+
import HTMLScriptElementNamedNodeMap from './HTMLScriptElementNamedNodeMap.js';
|
8
9
|
|
9
10
|
/**
|
10
11
|
* HTML Script Element.
|
@@ -13,6 +14,7 @@ import INode from '../../nodes/node/INode.js';
|
|
13
14
|
* https://developer.mozilla.org/en-US/docs/Web/API/HTMLScriptElement.
|
14
15
|
*/
|
15
16
|
export default class HTMLScriptElement extends HTMLElement implements IHTMLScriptElement {
|
17
|
+
public override readonly attributes: INamedNodeMap = new HTMLScriptElementNamedNodeMap(this);
|
16
18
|
public onerror: (event: ErrorEvent) => void = null;
|
17
19
|
public onload: (event: Event) => void = null;
|
18
20
|
public _evaluateScript = true;
|
@@ -151,23 +153,6 @@ export default class HTMLScriptElement extends HTMLElement implements IHTMLScrip
|
|
151
153
|
this.textContent = text;
|
152
154
|
}
|
153
155
|
|
154
|
-
/**
|
155
|
-
* The setAttributeNode() method adds a new Attr node to the specified element.
|
156
|
-
*
|
157
|
-
* @override
|
158
|
-
* @param attribute Attribute.
|
159
|
-
* @returns Replaced attribute.
|
160
|
-
*/
|
161
|
-
public setAttributeNode(attribute: IAttr): IAttr | null {
|
162
|
-
const replacedAttribute = super.setAttributeNode(attribute);
|
163
|
-
|
164
|
-
if (attribute.name === 'src' && attribute.value !== null && this.isConnected) {
|
165
|
-
HTMLScriptElementUtility.loadExternalScript(this);
|
166
|
-
}
|
167
|
-
|
168
|
-
return replacedAttribute;
|
169
|
-
}
|
170
|
-
|
171
156
|
/**
|
172
157
|
* Clones a node.
|
173
158
|
*
|
@@ -0,0 +1,26 @@
|
|
1
|
+
import IAttr from '../attr/IAttr.js';
|
2
|
+
import HTMLElementNamedNodeMap from '../html-element/HTMLElementNamedNodeMap.js';
|
3
|
+
import HTMLScriptElement from './HTMLScriptElement.js';
|
4
|
+
import HTMLScriptElementUtility from './HTMLScriptElementUtility.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 HTMLScriptElementNamedNodeMap extends HTMLElementNamedNodeMap {
|
12
|
+
protected _ownerElement: HTMLScriptElement;
|
13
|
+
|
14
|
+
/**
|
15
|
+
* @override
|
16
|
+
*/
|
17
|
+
public override setNamedItem(item: IAttr): IAttr | null {
|
18
|
+
const replacedItem = super.setNamedItem(item);
|
19
|
+
|
20
|
+
if (item.name === 'src' && item.value !== null && this._ownerElement.isConnected) {
|
21
|
+
HTMLScriptElementUtility.loadExternalScript(this._ownerElement);
|
22
|
+
}
|
23
|
+
|
24
|
+
return replacedItem || null;
|
25
|
+
}
|
26
|
+
}
|
@@ -13,11 +13,12 @@ import IHTMLOptionsCollection from './IHTMLOptionsCollection.js';
|
|
13
13
|
import INode from '../node/INode.js';
|
14
14
|
import NodeTypeEnum from '../node/NodeTypeEnum.js';
|
15
15
|
import HTMLFormElement from '../html-form-element/HTMLFormElement.js';
|
16
|
-
import IAttr from '../attr/IAttr.js';
|
17
16
|
import IHTMLCollection from '../element/IHTMLCollection.js';
|
18
17
|
import NodeList from '../node/NodeList.js';
|
19
18
|
import IDocument from '../document/IDocument.js';
|
20
19
|
import IShadowRoot from '../shadow-root/IShadowRoot.js';
|
20
|
+
import INamedNodeMap from '../../named-node-map/INamedNodeMap.js';
|
21
|
+
import HTMLSelectElementNamedNodeMap from './HTMLSelectElementNamedNodeMap.js';
|
21
22
|
|
22
23
|
/**
|
23
24
|
* HTML Select Element.
|
@@ -26,6 +27,8 @@ import IShadowRoot from '../shadow-root/IShadowRoot.js';
|
|
26
27
|
* https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.
|
27
28
|
*/
|
28
29
|
export default class HTMLSelectElement extends HTMLElement implements IHTMLSelectElement {
|
30
|
+
public override readonly attributes: INamedNodeMap = new HTMLSelectElementNamedNodeMap(this);
|
31
|
+
|
29
32
|
// Public properties.
|
30
33
|
public readonly length = 0;
|
31
34
|
public readonly options: IHTMLOptionsCollection = new HTMLOptionsCollection(this);
|
@@ -402,38 +405,6 @@ export default class HTMLSelectElement extends HTMLElement implements IHTMLSelec
|
|
402
405
|
}
|
403
406
|
}
|
404
407
|
|
405
|
-
/**
|
406
|
-
* @override
|
407
|
-
*/
|
408
|
-
public override setAttributeNode(attribute: IAttr): IAttr | null {
|
409
|
-
const replacedAttribute = super.setAttributeNode(attribute);
|
410
|
-
const oldValue = replacedAttribute ? replacedAttribute.value : null;
|
411
|
-
|
412
|
-
if ((attribute.name === 'id' || attribute.name === 'name') && this._formNode) {
|
413
|
-
if (oldValue) {
|
414
|
-
(<HTMLFormElement>this._formNode)._removeFormControlItem(this, oldValue);
|
415
|
-
}
|
416
|
-
if (attribute.value) {
|
417
|
-
(<HTMLFormElement>this._formNode)._appendFormControlItem(this, attribute.value);
|
418
|
-
}
|
419
|
-
}
|
420
|
-
|
421
|
-
return replacedAttribute;
|
422
|
-
}
|
423
|
-
|
424
|
-
/**
|
425
|
-
* @override
|
426
|
-
*/
|
427
|
-
public override removeAttributeNode(attribute: IAttr): IAttr {
|
428
|
-
super.removeAttributeNode(attribute);
|
429
|
-
|
430
|
-
if ((attribute.name === 'id' || attribute.name === 'name') && this._formNode) {
|
431
|
-
(<HTMLFormElement>this._formNode)._removeFormControlItem(this, attribute.value);
|
432
|
-
}
|
433
|
-
|
434
|
-
return attribute;
|
435
|
-
}
|
436
|
-
|
437
408
|
/**
|
438
409
|
* @override
|
439
410
|
*/
|
@@ -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 HTMLSelectElement from './HTMLSelectElement.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 HTMLSelectElementNamedNodeMap extends HTMLElementNamedNodeMap {
|
12
|
+
protected _ownerElement: HTMLSelectElement;
|
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
|
+
}
|
@@ -1,7 +1,6 @@
|
|
1
1
|
import Event from '../../event/Event.js';
|
2
2
|
import DOMException from '../../exception/DOMException.js';
|
3
3
|
import DOMExceptionNameEnum from '../../exception/DOMExceptionNameEnum.js';
|
4
|
-
import IAttr from '../attr/IAttr.js';
|
5
4
|
import HTMLElement from '../html-element/HTMLElement.js';
|
6
5
|
import HTMLFormElement from '../html-form-element/HTMLFormElement.js';
|
7
6
|
import IHTMLFormElement from '../html-form-element/IHTMLFormElement.js';
|
@@ -15,6 +14,8 @@ import IHTMLLabelElement from '../html-label-element/IHTMLLabelElement.js';
|
|
15
14
|
import IDocument from '../document/IDocument.js';
|
16
15
|
import IShadowRoot from '../shadow-root/IShadowRoot.js';
|
17
16
|
import NodeList from '../node/NodeList.js';
|
17
|
+
import INamedNodeMap from '../../named-node-map/INamedNodeMap.js';
|
18
|
+
import HTMLTextAreaElementNamedNodeMap from './HTMLTextAreaElementNamedNodeMap.js';
|
18
19
|
|
19
20
|
/**
|
20
21
|
* HTML Text Area Element.
|
@@ -23,6 +24,7 @@ import NodeList from '../node/NodeList.js';
|
|
23
24
|
* https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.
|
24
25
|
*/
|
25
26
|
export default class HTMLTextAreaElement extends HTMLElement implements IHTMLTextAreaElement {
|
27
|
+
public override readonly attributes: INamedNodeMap = new HTMLTextAreaElementNamedNodeMap(this);
|
26
28
|
public readonly type = 'textarea';
|
27
29
|
public readonly validationMessage = '';
|
28
30
|
public readonly validity = new ValidityState(this);
|
@@ -588,38 +590,6 @@ export default class HTMLTextAreaElement extends HTMLElement implements IHTMLTex
|
|
588
590
|
}
|
589
591
|
}
|
590
592
|
|
591
|
-
/**
|
592
|
-
* @override
|
593
|
-
*/
|
594
|
-
public override setAttributeNode(attribute: IAttr): IAttr | null {
|
595
|
-
const replacedAttribute = super.setAttributeNode(attribute);
|
596
|
-
const oldValue = replacedAttribute ? replacedAttribute.value : null;
|
597
|
-
|
598
|
-
if ((attribute.name === 'id' || attribute.name === 'name') && this._formNode) {
|
599
|
-
if (oldValue) {
|
600
|
-
(<HTMLFormElement>this._formNode)._removeFormControlItem(this, oldValue);
|
601
|
-
}
|
602
|
-
if (attribute.value) {
|
603
|
-
(<HTMLFormElement>this._formNode)._appendFormControlItem(this, attribute.value);
|
604
|
-
}
|
605
|
-
}
|
606
|
-
|
607
|
-
return replacedAttribute;
|
608
|
-
}
|
609
|
-
|
610
|
-
/**
|
611
|
-
* @override
|
612
|
-
*/
|
613
|
-
public override removeAttributeNode(attribute: IAttr): IAttr {
|
614
|
-
super.removeAttributeNode(attribute);
|
615
|
-
|
616
|
-
if ((attribute.name === 'id' || attribute.name === 'name') && this._formNode) {
|
617
|
-
(<HTMLFormElement>this._formNode)._removeFormControlItem(this, attribute.value);
|
618
|
-
}
|
619
|
-
|
620
|
-
return attribute;
|
621
|
-
}
|
622
|
-
|
623
593
|
/**
|
624
594
|
* @override
|
625
595
|
*/
|
@@ -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
|
-
|
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.
|
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
|
-
|
399
|
-
|
400
|
-
|
401
|
-
|
402
|
-
|
403
|
-
|
404
|
-
|
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
|
-
|
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).
|
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).
|
113
|
+
if (!(<Element>element).attributes.getNamedItem('is') && (<Element>element)._isValue) {
|
114
114
|
attributeString += ' is="' + (<Element>element)._isValue + '"';
|
115
115
|
}
|
116
116
|
|
117
|
-
for (
|
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
|
}
|