happy-dom 2.55.0 → 3.1.1
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/README.md +26 -6
- package/lib/async-task-manager/AsyncTaskManager.js +34 -78
- package/lib/async-task-manager/AsyncTaskManager.js.map +1 -1
- package/lib/attribute/Attr.js +19 -28
- package/lib/attribute/Attr.js.map +1 -1
- package/lib/config/ElementTag.js +15 -15
- package/lib/config/ElementTag.js.map +1 -1
- package/lib/cookie/CookieUtility.js +21 -26
- package/lib/cookie/CookieUtility.js.map +1 -1
- package/lib/css/CSS.js +12 -18
- package/lib/css/CSS.js.map +1 -1
- package/lib/css/CSSParser.js +29 -33
- package/lib/css/CSSParser.js.map +1 -1
- package/lib/css/CSSRule.js +24 -29
- package/lib/css/CSSRule.js.map +1 -1
- package/lib/css/CSSStyleDeclaration.js +4516 -6005
- package/lib/css/CSSStyleDeclaration.js.map +1 -1
- package/lib/css/CSSStyleSheet.js +17 -59
- package/lib/css/CSSStyleSheet.js.map +1 -1
- package/lib/css/CSSUnitValue.js +4 -5
- package/lib/css/CSSUnitValue.js.map +1 -1
- package/lib/css/MediaList.js +23 -28
- package/lib/css/MediaList.js.map +1 -1
- package/lib/css/rules/CSSFontFaceRule.js +6 -24
- package/lib/css/rules/CSSFontFaceRule.js.map +1 -1
- package/lib/css/rules/CSSKeyframeRule.js +14 -36
- package/lib/css/rules/CSSKeyframeRule.js.map +1 -1
- package/lib/css/rules/CSSKeyframesRule.js +31 -54
- package/lib/css/rules/CSSKeyframesRule.js.map +1 -1
- package/lib/css/rules/CSSMediaRule.js +29 -56
- package/lib/css/rules/CSSMediaRule.js.map +1 -1
- package/lib/css/rules/CSSStyleRule.js +16 -38
- package/lib/css/rules/CSSStyleRule.js.map +1 -1
- package/lib/custom-element/CustomElementRegistry.js +21 -24
- package/lib/custom-element/CustomElementRegistry.js.map +1 -1
- package/lib/dom-implementation/DOMImplementation.js +12 -13
- package/lib/dom-implementation/DOMImplementation.js.map +1 -1
- package/lib/dom-parser/DOMParser.js +29 -35
- package/lib/dom-parser/DOMParser.js.map +1 -1
- package/lib/dom-token-list/DOMTokenList.js +64 -79
- package/lib/dom-token-list/DOMTokenList.js.map +1 -1
- package/lib/event/DataTransfer.js +4 -5
- package/lib/event/DataTransfer.js.map +1 -1
- package/lib/event/DataTransferItem.js +7 -8
- package/lib/event/DataTransferItem.js.map +1 -1
- package/lib/event/DataTransferItemList.js +10 -11
- package/lib/event/DataTransferItemList.js.map +1 -1
- package/lib/event/Event.js +11 -15
- package/lib/event/Event.js.map +1 -1
- package/lib/event/EventTarget.js +14 -16
- package/lib/event/EventTarget.js.map +1 -1
- package/lib/event/IUIEventInit.d.ts +2 -2
- package/lib/event/UIEvent.d.ts +2 -2
- package/lib/event/UIEvent.js +25 -46
- package/lib/event/UIEvent.js.map +1 -1
- package/lib/event/events/AnimationEvent.js +11 -29
- package/lib/event/events/AnimationEvent.js.map +1 -1
- package/lib/event/events/CustomEvent.js +9 -31
- package/lib/event/events/CustomEvent.js.map +1 -1
- package/lib/event/events/ErrorEvent.js +15 -34
- package/lib/event/events/ErrorEvent.js.map +1 -1
- package/lib/event/events/FocusEvent.js +7 -26
- package/lib/event/events/FocusEvent.js.map +1 -1
- package/lib/event/events/InputEvent.js +13 -32
- package/lib/event/events/InputEvent.js.map +1 -1
- package/lib/event/events/KeyboardEvent.js +27 -46
- package/lib/event/events/KeyboardEvent.js.map +1 -1
- package/lib/event/events/MouseEvent.js +33 -52
- package/lib/event/events/MouseEvent.js.map +1 -1
- package/lib/event/events/PointerEvent.js +25 -44
- package/lib/event/events/PointerEvent.js.map +1 -1
- package/lib/event/events/ProgressEvent.js +11 -30
- package/lib/event/events/ProgressEvent.js.map +1 -1
- package/lib/event/events/StorageEvent.js +13 -32
- package/lib/event/events/StorageEvent.js.map +1 -1
- package/lib/event/events/WheelEvent.js +16 -35
- package/lib/event/events/WheelEvent.js.map +1 -1
- package/lib/exception/DOMException.js +5 -24
- package/lib/exception/DOMException.js.map +1 -1
- package/lib/fetch/FetchHandler.js +18 -22
- package/lib/fetch/FetchHandler.js.map +1 -1
- package/lib/fetch/Headers.js +3 -23
- package/lib/fetch/Headers.js.map +1 -1
- package/lib/fetch/Request.js +61 -81
- package/lib/fetch/Request.js.map +1 -1
- package/lib/fetch/ResourceFetchHandler.js +18 -67
- package/lib/fetch/ResourceFetchHandler.js.map +1 -1
- package/lib/fetch/Response.js +61 -81
- package/lib/fetch/Response.js.map +1 -1
- package/lib/file/Blob.js +29 -78
- package/lib/file/Blob.js.map +1 -1
- package/lib/file/File.js +9 -27
- package/lib/file/File.js.map +1 -1
- package/lib/file/FileReader.js +57 -78
- package/lib/file/FileReader.js.map +1 -1
- package/lib/history/History.js +32 -37
- package/lib/history/History.js.map +1 -1
- package/lib/index.d.ts +3 -3
- package/lib/index.js +69 -69
- package/lib/index.js.map +1 -1
- package/lib/location/Location.js +11 -28
- package/lib/location/Location.js.map +1 -1
- package/lib/location/RelativeURL.js +5 -8
- package/lib/location/RelativeURL.js.map +1 -1
- package/lib/location/URL.js +46 -59
- package/lib/location/URL.js.map +1 -1
- package/lib/match-media/MediaQueryList.js +28 -54
- package/lib/match-media/MediaQueryList.js.map +1 -1
- package/lib/mutation-observer/MutationListener.js +3 -4
- package/lib/mutation-observer/MutationListener.js.map +1 -1
- package/lib/mutation-observer/MutationObserver.js +12 -13
- package/lib/mutation-observer/MutationObserver.js.map +1 -1
- package/lib/mutation-observer/MutationRecord.js +3 -4
- package/lib/mutation-observer/MutationRecord.js.map +1 -1
- package/lib/navigator/MimeType.js +5 -6
- package/lib/navigator/MimeType.js.map +1 -1
- package/lib/navigator/MimeTypeArray.js +10 -11
- package/lib/navigator/MimeTypeArray.js.map +1 -1
- package/lib/navigator/Navigator.js +7 -8
- package/lib/navigator/Navigator.js.map +1 -1
- package/lib/navigator/Plugin.js +10 -11
- package/lib/navigator/Plugin.js.map +1 -1
- package/lib/navigator/PluginArray.js +12 -13
- package/lib/navigator/PluginArray.js.map +1 -1
- package/lib/nodes/character-data/CharacterData.js +119 -184
- package/lib/nodes/character-data/CharacterData.js.map +1 -1
- package/lib/nodes/character-data/CharacterDataUtility.js +12 -15
- package/lib/nodes/character-data/CharacterDataUtility.js.map +1 -1
- package/lib/nodes/child-node/ChildNodeUtility.js +24 -45
- package/lib/nodes/child-node/ChildNodeUtility.js.map +1 -1
- package/lib/nodes/child-node/NonDocumentChildNodeUtility.js +9 -12
- package/lib/nodes/child-node/NonDocumentChildNodeUtility.js.map +1 -1
- package/lib/nodes/comment/Comment.js +20 -43
- package/lib/nodes/comment/Comment.js.map +1 -1
- package/lib/nodes/document/Document.d.ts +3 -3
- package/lib/nodes/document/Document.js +334 -461
- package/lib/nodes/document/Document.js.map +1 -1
- package/lib/nodes/document/DocumentReadyStateManager.js +16 -19
- package/lib/nodes/document/DocumentReadyStateManager.js.map +1 -1
- package/lib/nodes/document/IDocument.d.ts +2 -2
- package/lib/nodes/document-fragment/DocumentFragment.js +93 -153
- package/lib/nodes/document-fragment/DocumentFragment.js.map +1 -1
- package/lib/nodes/document-type/DocumentType.js +22 -45
- package/lib/nodes/document-type/DocumentType.js.map +1 -1
- package/lib/nodes/element/DOMRect.js +3 -4
- package/lib/nodes/element/DOMRect.js.map +1 -1
- package/lib/nodes/element/Element.js +367 -496
- package/lib/nodes/element/Element.js.map +1 -1
- package/lib/nodes/element/HTMLCollection.js +4 -24
- package/lib/nodes/element/HTMLCollection.js.map +1 -1
- package/lib/nodes/element/HTMLCollectionFactory.js +6 -9
- package/lib/nodes/element/HTMLCollectionFactory.js.map +1 -1
- package/lib/nodes/element/Range.js +89 -114
- package/lib/nodes/element/Range.js.map +1 -1
- package/lib/nodes/html-base-element/HTMLBaseElement.js +41 -70
- package/lib/nodes/html-base-element/HTMLBaseElement.js.map +1 -1
- package/lib/nodes/html-document/HTMLDocument.js +3 -23
- package/lib/nodes/html-document/HTMLDocument.js.map +1 -1
- package/lib/nodes/html-element/DatasetUtility.js +9 -12
- package/lib/nodes/html-element/DatasetUtility.js.map +1 -1
- package/lib/nodes/html-element/HTMLElement.js +232 -290
- package/lib/nodes/html-element/HTMLElement.js.map +1 -1
- package/lib/nodes/html-form-element/HTMLFormElement.js +170 -235
- package/lib/nodes/html-form-element/HTMLFormElement.js.map +1 -1
- package/lib/nodes/html-image-element/HTMLImageElement.js +178 -237
- package/lib/nodes/html-image-element/HTMLImageElement.js.map +1 -1
- package/lib/nodes/html-image-element/Image.js +7 -27
- package/lib/nodes/html-image-element/Image.js.map +1 -1
- package/lib/nodes/html-input-element/HTMLInputElement.js +705 -872
- package/lib/nodes/html-input-element/HTMLInputElement.js.map +1 -1
- package/lib/nodes/html-input-element/HTMLInputElementValueSanitizer.js +9 -12
- package/lib/nodes/html-input-element/HTMLInputElementValueSanitizer.js.map +1 -1
- package/lib/nodes/html-input-element/HTMLInputElementValueStepping.js +5 -8
- package/lib/nodes/html-input-element/HTMLInputElementValueStepping.js.map +1 -1
- package/lib/nodes/html-input-element/ValidityState.js +47 -69
- package/lib/nodes/html-input-element/ValidityState.js.map +1 -1
- package/lib/nodes/html-label-element/HTMLLabelElement.js +53 -87
- package/lib/nodes/html-label-element/HTMLLabelElement.js.map +1 -1
- package/lib/nodes/html-link-element/HTMLLinkElement.js +197 -252
- package/lib/nodes/html-link-element/HTMLLinkElement.js.map +1 -1
- package/lib/nodes/html-meta-element/HTMLMetaElement.js +66 -102
- package/lib/nodes/html-meta-element/HTMLMetaElement.js.map +1 -1
- package/lib/nodes/html-script-element/HTMLScriptElement.js +145 -193
- package/lib/nodes/html-script-element/HTMLScriptElement.js.map +1 -1
- package/lib/nodes/html-script-element/ScriptUtility.js +58 -112
- package/lib/nodes/html-script-element/ScriptUtility.js.map +1 -1
- package/lib/nodes/html-slot-element/HTMLSlotElement.js +33 -65
- package/lib/nodes/html-slot-element/HTMLSlotElement.js.map +1 -1
- package/lib/nodes/html-style-element/HTMLStyleElement.js +75 -109
- package/lib/nodes/html-style-element/HTMLStyleElement.js.map +1 -1
- package/lib/nodes/html-template-element/HTMLTemplateElement.js +60 -99
- package/lib/nodes/html-template-element/HTMLTemplateElement.js.map +1 -1
- package/lib/nodes/html-text-area-element/HTMLTextAreaElement.js +349 -444
- package/lib/nodes/html-text-area-element/HTMLTextAreaElement.js.map +1 -1
- package/lib/nodes/html-unknown-element/HTMLUnknownElement.js +17 -37
- package/lib/nodes/html-unknown-element/HTMLUnknownElement.js.map +1 -1
- package/lib/nodes/node/Node.js +193 -260
- package/lib/nodes/node/Node.js.map +1 -1
- package/lib/nodes/node/NodeList.js +4 -24
- package/lib/nodes/node/NodeList.js.map +1 -1
- package/lib/nodes/node/NodeListFactory.js +6 -9
- package/lib/nodes/node/NodeListFactory.js.map +1 -1
- package/lib/nodes/parent-node/ParentNodeUtility.js +43 -78
- package/lib/nodes/parent-node/ParentNodeUtility.js.map +1 -1
- package/lib/nodes/shadow-root/ShadowRoot.js +53 -83
- package/lib/nodes/shadow-root/ShadowRoot.js.map +1 -1
- package/lib/nodes/svg-document/SVGDocument.js +3 -23
- package/lib/nodes/svg-document/SVGDocument.js.map +1 -1
- package/lib/nodes/svg-element/DOMMatrix.js +3 -4
- package/lib/nodes/svg-element/DOMMatrix.js.map +1 -1
- package/lib/nodes/svg-element/SVGAngle.js +10 -11
- package/lib/nodes/svg-element/SVGAngle.js.map +1 -1
- package/lib/nodes/svg-element/SVGAnimatedRect.js +4 -5
- package/lib/nodes/svg-element/SVGAnimatedRect.js.map +1 -1
- package/lib/nodes/svg-element/SVGElement.js +58 -93
- package/lib/nodes/svg-element/SVGElement.js.map +1 -1
- package/lib/nodes/svg-element/SVGGraphicsElement.js +14 -32
- package/lib/nodes/svg-element/SVGGraphicsElement.js.map +1 -1
- package/lib/nodes/svg-element/SVGLength.js +16 -17
- package/lib/nodes/svg-element/SVGLength.js.map +1 -1
- package/lib/nodes/svg-element/SVGNumber.js +3 -4
- package/lib/nodes/svg-element/SVGNumber.js.map +1 -1
- package/lib/nodes/svg-element/SVGPoint.js +3 -4
- package/lib/nodes/svg-element/SVGPoint.js.map +1 -1
- package/lib/nodes/svg-element/SVGRect.js +3 -4
- package/lib/nodes/svg-element/SVGRect.js.map +1 -1
- package/lib/nodes/svg-element/SVGSVGElement.js +187 -248
- package/lib/nodes/svg-element/SVGSVGElement.js.map +1 -1
- package/lib/nodes/svg-element/SVGTransform.js +16 -17
- package/lib/nodes/svg-element/SVGTransform.js.map +1 -1
- package/lib/nodes/text/Text.js +20 -43
- package/lib/nodes/text/Text.js.map +1 -1
- package/lib/nodes/xml-document/XMLDocument.js +3 -23
- package/lib/nodes/xml-document/XMLDocument.js.map +1 -1
- package/lib/query-selector/QuerySelector.js +36 -44
- package/lib/query-selector/QuerySelector.js.map +1 -1
- package/lib/query-selector/SelectorItem.js +62 -66
- package/lib/query-selector/SelectorItem.js.map +1 -1
- package/lib/resize-observer/ResizeObserver.js +8 -11
- package/lib/resize-observer/ResizeObserver.js.map +1 -1
- package/lib/screen/Screen.js +3 -4
- package/lib/screen/Screen.js.map +1 -1
- package/lib/selection/Selection.js +29 -30
- package/lib/selection/Selection.js.map +1 -1
- package/lib/storage/Storage.js +22 -27
- package/lib/storage/Storage.js.map +1 -1
- package/lib/tree-walker/NodeFilterMask.js +1 -1
- package/lib/tree-walker/NodeFilterMask.js.map +1 -1
- package/lib/tree-walker/TreeWalker.js +30 -33
- package/lib/tree-walker/TreeWalker.js.map +1 -1
- package/lib/window/GlobalWindow.d.ts +90 -0
- package/lib/window/GlobalWindow.js +98 -0
- package/lib/window/GlobalWindow.js.map +1 -0
- package/lib/window/IWindow.d.ts +35 -18
- package/lib/window/VMGlobalPropertyScript.d.ts +2 -0
- package/lib/window/VMGlobalPropertyScript.js +65 -0
- package/lib/window/VMGlobalPropertyScript.js.map +1 -0
- package/lib/window/Window.d.ts +84 -105
- package/lib/window/Window.js +286 -490
- package/lib/window/Window.js.map +1 -1
- package/lib/xml-parser/XMLParser.js +65 -71
- package/lib/xml-parser/XMLParser.js.map +1 -1
- package/lib/xml-serializer/XMLSerializer.js +30 -37
- package/lib/xml-serializer/XMLSerializer.js.map +1 -1
- package/package.json +6 -7
- package/src/dom-parser/DOMParser.ts +4 -5
- package/src/event/IUIEventInit.ts +2 -2
- package/src/event/UIEvent.ts +2 -2
- package/src/fetch/FetchHandler.ts +3 -3
- package/src/fetch/ResourceFetchHandler.ts +2 -2
- package/src/index.ts +3 -3
- package/src/nodes/document/Document.ts +4 -4
- package/src/nodes/document/IDocument.ts +2 -2
- package/src/nodes/html-link-element/HTMLLinkElement.ts +8 -2
- package/src/nodes/html-script-element/ScriptUtility.ts +4 -4
- package/src/window/GlobalWindow.ts +91 -0
- package/src/window/IWindow.ts +31 -12
- package/src/window/VMGlobalPropertyScript.ts +62 -0
- package/src/window/Window.ts +125 -173
- package/tsconfig.json +1 -1
- package/lib/window/AsyncWindow.d.ts +0 -10
- package/lib/window/AsyncWindow.js +0 -38
- package/lib/window/AsyncWindow.js.map +0 -1
- package/src/window/AsyncWindow.ts +0 -17
@@ -1,313 +1,258 @@
|
|
1
1
|
"use strict";
|
2
|
-
var __extends = (this && this.__extends) || (function () {
|
3
|
-
var extendStatics = function (d, b) {
|
4
|
-
extendStatics = Object.setPrototypeOf ||
|
5
|
-
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
6
|
-
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
|
7
|
-
return extendStatics(d, b);
|
8
|
-
};
|
9
|
-
return function (d, b) {
|
10
|
-
if (typeof b !== "function" && b !== null)
|
11
|
-
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
|
12
|
-
extendStatics(d, b);
|
13
|
-
function __() { this.constructor = d; }
|
14
|
-
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
15
|
-
};
|
16
|
-
})();
|
17
2
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
18
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
19
4
|
};
|
20
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
6
|
+
const Element_1 = __importDefault(require("../element/Element"));
|
7
|
+
const CSSStyleDeclaration_1 = __importDefault(require("../../css/CSSStyleDeclaration"));
|
8
|
+
const FocusEvent_1 = __importDefault(require("../../event/events/FocusEvent"));
|
9
|
+
const PointerEvent_1 = __importDefault(require("../../event/events/PointerEvent"));
|
10
|
+
const Node_1 = __importDefault(require("../node/Node"));
|
11
|
+
const DatasetUtility_1 = __importDefault(require("./DatasetUtility"));
|
27
12
|
/**
|
28
13
|
* HTML Element.
|
29
14
|
*
|
30
15
|
* Reference:
|
31
16
|
* https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.
|
32
17
|
*/
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
_this._dataset = null;
|
49
|
-
return _this;
|
18
|
+
class HTMLElement extends Element_1.default {
|
19
|
+
constructor() {
|
20
|
+
super(...arguments);
|
21
|
+
this.accessKey = '';
|
22
|
+
this.accessKeyLabel = '';
|
23
|
+
this.contentEditable = 'inherit';
|
24
|
+
this.isContentEditable = false;
|
25
|
+
this.offsetHeight = 0;
|
26
|
+
this.offsetWidth = 0;
|
27
|
+
this.offsetLeft = 0;
|
28
|
+
this.offsetTop = 0;
|
29
|
+
this.clientHeight = 0;
|
30
|
+
this.clientWidth = 0;
|
31
|
+
this._style = null;
|
32
|
+
this._dataset = null;
|
50
33
|
}
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
var result = '';
|
85
|
-
for (var _i = 0, _a = this.childNodes; _i < _a.length; _i++) {
|
86
|
-
var childNode = _a[_i];
|
87
|
-
if (childNode instanceof HTMLElement) {
|
88
|
-
if (childNode.tagName !== 'SCRIPT' && childNode.tagName !== 'STYLE') {
|
89
|
-
result += childNode.innerText;
|
90
|
-
}
|
91
|
-
}
|
92
|
-
else if (childNode.nodeType === Node_1.default.ELEMENT_NODE ||
|
93
|
-
childNode.nodeType === Node_1.default.TEXT_NODE) {
|
94
|
-
result += childNode.textContent;
|
34
|
+
/**
|
35
|
+
* Returns tab index.
|
36
|
+
*
|
37
|
+
* @returns Tab index.
|
38
|
+
*/
|
39
|
+
get tabIndex() {
|
40
|
+
const tabIndex = this.getAttributeNS(null, 'tabindex');
|
41
|
+
return tabIndex !== null ? Number(tabIndex) : -1;
|
42
|
+
}
|
43
|
+
/**
|
44
|
+
* Returns tab index.
|
45
|
+
*
|
46
|
+
* @param tabIndex Tab index.
|
47
|
+
*/
|
48
|
+
set tabIndex(tabIndex) {
|
49
|
+
if (tabIndex === -1) {
|
50
|
+
this.removeAttributeNS(null, 'tabindex');
|
51
|
+
}
|
52
|
+
else {
|
53
|
+
this.setAttributeNS(null, 'tabindex', String(tabIndex));
|
54
|
+
}
|
55
|
+
}
|
56
|
+
/**
|
57
|
+
* Returns inner text, which is the rendered appearance of text.
|
58
|
+
*
|
59
|
+
* @returns Inner text.
|
60
|
+
*/
|
61
|
+
get innerText() {
|
62
|
+
let result = '';
|
63
|
+
for (const childNode of this.childNodes) {
|
64
|
+
if (childNode instanceof HTMLElement) {
|
65
|
+
if (childNode.tagName !== 'SCRIPT' && childNode.tagName !== 'STYLE') {
|
66
|
+
result += childNode.innerText;
|
95
67
|
}
|
96
68
|
}
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
* Sets the inner text, which is the rendered appearance of text.
|
101
|
-
*
|
102
|
-
* @param innerText Inner text.
|
103
|
-
*/
|
104
|
-
set: function (innerText) {
|
105
|
-
this.textContent = innerText;
|
106
|
-
},
|
107
|
-
enumerable: false,
|
108
|
-
configurable: true
|
109
|
-
});
|
110
|
-
Object.defineProperty(HTMLElement.prototype, "style", {
|
111
|
-
/**
|
112
|
-
* Returns style.
|
113
|
-
*
|
114
|
-
* @returns Style.
|
115
|
-
*/
|
116
|
-
get: function () {
|
117
|
-
if (!this._style) {
|
118
|
-
this._style = new CSSStyleDeclaration_1.default(this._attributes);
|
69
|
+
else if (childNode.nodeType === Node_1.default.ELEMENT_NODE ||
|
70
|
+
childNode.nodeType === Node_1.default.TEXT_NODE) {
|
71
|
+
result += childNode.textContent;
|
119
72
|
}
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
73
|
+
}
|
74
|
+
return result;
|
75
|
+
}
|
76
|
+
/**
|
77
|
+
* Sets the inner text, which is the rendered appearance of text.
|
78
|
+
*
|
79
|
+
* @param innerText Inner text.
|
80
|
+
*/
|
81
|
+
set innerText(innerText) {
|
82
|
+
this.textContent = innerText;
|
83
|
+
}
|
84
|
+
/**
|
85
|
+
* Returns style.
|
86
|
+
*
|
87
|
+
* @returns Style.
|
88
|
+
*/
|
89
|
+
get style() {
|
90
|
+
if (!this._style) {
|
91
|
+
this._style = new CSSStyleDeclaration_1.default(this._attributes);
|
92
|
+
}
|
93
|
+
return this._style;
|
94
|
+
}
|
95
|
+
/**
|
96
|
+
* Returns data set.
|
97
|
+
*
|
98
|
+
* @returns Data set.
|
99
|
+
*/
|
100
|
+
get dataset() {
|
101
|
+
if (this._dataset) {
|
102
|
+
return this._dataset;
|
103
|
+
}
|
104
|
+
const dataset = {};
|
105
|
+
const attributes = this._attributes;
|
106
|
+
for (const name of Object.keys(attributes)) {
|
107
|
+
if (name.startsWith('data-')) {
|
108
|
+
const key = DatasetUtility_1.default.kebabToCamelCase(name.replace('data-', ''));
|
109
|
+
dataset[key] = attributes[name].value;
|
135
110
|
}
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
111
|
+
}
|
112
|
+
// Documentation for Proxy:
|
113
|
+
// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy
|
114
|
+
this._dataset = new Proxy(dataset, {
|
115
|
+
get: (dataset, key) => {
|
116
|
+
const name = 'data-' + DatasetUtility_1.default.camelCaseToKebab(key);
|
117
|
+
if (this._attributes[name]) {
|
118
|
+
dataset[key] = this._attributes[name].value;
|
119
|
+
return this._attributes[name].value;
|
143
120
|
}
|
144
|
-
|
145
|
-
// Documentation for Proxy:
|
146
|
-
// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy
|
147
|
-
this._dataset = new Proxy(dataset, {
|
148
|
-
get: function (dataset, key) {
|
149
|
-
var name = 'data-' + DatasetUtility_1.default.camelCaseToKebab(key);
|
150
|
-
if (_this._attributes[name]) {
|
151
|
-
dataset[key] = _this._attributes[name].value;
|
152
|
-
return _this._attributes[name].value;
|
153
|
-
}
|
154
|
-
if (dataset[key] !== undefined) {
|
155
|
-
delete dataset[key];
|
156
|
-
}
|
157
|
-
return undefined;
|
158
|
-
},
|
159
|
-
set: function (dataset, key, value) {
|
160
|
-
_this.setAttribute('data-' + DatasetUtility_1.default.camelCaseToKebab(key), value);
|
161
|
-
dataset[key] = value;
|
162
|
-
return true;
|
163
|
-
},
|
164
|
-
deleteProperty: function (dataset, key) {
|
165
|
-
var name = 'data-' + DatasetUtility_1.default.camelCaseToKebab(key);
|
166
|
-
var exists = !!attributes[name];
|
167
|
-
delete attributes[name];
|
121
|
+
if (dataset[key] !== undefined) {
|
168
122
|
delete dataset[key];
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
123
|
+
}
|
124
|
+
return undefined;
|
125
|
+
},
|
126
|
+
set: (dataset, key, value) => {
|
127
|
+
this.setAttribute('data-' + DatasetUtility_1.default.camelCaseToKebab(key), value);
|
128
|
+
dataset[key] = value;
|
129
|
+
return true;
|
130
|
+
},
|
131
|
+
deleteProperty: (dataset, key) => {
|
132
|
+
const name = 'data-' + DatasetUtility_1.default.camelCaseToKebab(key);
|
133
|
+
const exists = !!attributes[name];
|
134
|
+
delete attributes[name];
|
135
|
+
delete dataset[key];
|
136
|
+
return exists;
|
137
|
+
},
|
138
|
+
ownKeys: (dataset) => {
|
139
|
+
// According to Mozilla we have to update the dataset object (target) to contain the same keys as what we return:
|
140
|
+
// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy/Proxy/ownKeys
|
141
|
+
// "The result List must contain the keys of all non-configurable own properties of the target object."
|
142
|
+
const keys = [];
|
143
|
+
const deleteKeys = [];
|
144
|
+
for (const name of Object.keys(attributes)) {
|
145
|
+
if (name.startsWith('data-')) {
|
146
|
+
const key = DatasetUtility_1.default.kebabToCamelCase(name.replace('data-', ''));
|
147
|
+
keys.push(key);
|
148
|
+
dataset[key] = attributes[name].value;
|
149
|
+
if (!dataset[key]) {
|
150
|
+
deleteKeys.push(key);
|
186
151
|
}
|
187
152
|
}
|
188
|
-
for (var _b = 0, deleteKeys_1 = deleteKeys; _b < deleteKeys_1.length; _b++) {
|
189
|
-
var key = deleteKeys_1[_b];
|
190
|
-
delete dataset[key];
|
191
|
-
}
|
192
|
-
return keys;
|
193
|
-
},
|
194
|
-
has: function (_dataset, key) {
|
195
|
-
return !!attributes['data-' + DatasetUtility_1.default.camelCaseToKebab(key)];
|
196
153
|
}
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
/**
|
205
|
-
* Returns direction.
|
206
|
-
*
|
207
|
-
* @returns Direction.
|
208
|
-
*/
|
209
|
-
get: function () {
|
210
|
-
return this.getAttributeNS(null, 'dir') || '';
|
211
|
-
},
|
212
|
-
/**
|
213
|
-
* Returns direction.
|
214
|
-
*
|
215
|
-
* @param direction Direction.
|
216
|
-
*/
|
217
|
-
set: function (direction) {
|
218
|
-
this.setAttributeNS(null, 'dir', direction);
|
219
|
-
},
|
220
|
-
enumerable: false,
|
221
|
-
configurable: true
|
222
|
-
});
|
223
|
-
Object.defineProperty(HTMLElement.prototype, "hidden", {
|
224
|
-
/**
|
225
|
-
* Returns hidden.
|
226
|
-
*
|
227
|
-
* @returns Hidden.
|
228
|
-
*/
|
229
|
-
get: function () {
|
230
|
-
return this.getAttributeNS(null, 'hidden') !== null;
|
231
|
-
},
|
232
|
-
/**
|
233
|
-
* Returns hidden.
|
234
|
-
*
|
235
|
-
* @param hidden Hidden.
|
236
|
-
*/
|
237
|
-
set: function (hidden) {
|
238
|
-
if (!hidden) {
|
239
|
-
this.removeAttributeNS(null, 'hidden');
|
240
|
-
}
|
241
|
-
else {
|
242
|
-
this.setAttributeNS(null, 'hidden', '');
|
154
|
+
for (const key of deleteKeys) {
|
155
|
+
delete dataset[key];
|
156
|
+
}
|
157
|
+
return keys;
|
158
|
+
},
|
159
|
+
has: (_dataset, key) => {
|
160
|
+
return !!attributes['data-' + DatasetUtility_1.default.camelCaseToKebab(key)];
|
243
161
|
}
|
244
|
-
}
|
245
|
-
|
246
|
-
|
247
|
-
|
248
|
-
|
249
|
-
|
250
|
-
|
251
|
-
|
252
|
-
|
253
|
-
|
254
|
-
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
|
268
|
-
|
269
|
-
|
270
|
-
|
271
|
-
|
272
|
-
|
273
|
-
|
274
|
-
|
275
|
-
|
276
|
-
|
277
|
-
|
278
|
-
|
279
|
-
|
280
|
-
|
281
|
-
|
282
|
-
|
283
|
-
|
284
|
-
|
285
|
-
|
286
|
-
|
287
|
-
|
162
|
+
});
|
163
|
+
return this._dataset;
|
164
|
+
}
|
165
|
+
/**
|
166
|
+
* Returns direction.
|
167
|
+
*
|
168
|
+
* @returns Direction.
|
169
|
+
*/
|
170
|
+
get dir() {
|
171
|
+
return this.getAttributeNS(null, 'dir') || '';
|
172
|
+
}
|
173
|
+
/**
|
174
|
+
* Returns direction.
|
175
|
+
*
|
176
|
+
* @param direction Direction.
|
177
|
+
*/
|
178
|
+
set dir(direction) {
|
179
|
+
this.setAttributeNS(null, 'dir', direction);
|
180
|
+
}
|
181
|
+
/**
|
182
|
+
* Returns hidden.
|
183
|
+
*
|
184
|
+
* @returns Hidden.
|
185
|
+
*/
|
186
|
+
get hidden() {
|
187
|
+
return this.getAttributeNS(null, 'hidden') !== null;
|
188
|
+
}
|
189
|
+
/**
|
190
|
+
* Returns hidden.
|
191
|
+
*
|
192
|
+
* @param hidden Hidden.
|
193
|
+
*/
|
194
|
+
set hidden(hidden) {
|
195
|
+
if (!hidden) {
|
196
|
+
this.removeAttributeNS(null, 'hidden');
|
197
|
+
}
|
198
|
+
else {
|
199
|
+
this.setAttributeNS(null, 'hidden', '');
|
200
|
+
}
|
201
|
+
}
|
202
|
+
/**
|
203
|
+
* Returns language.
|
204
|
+
*
|
205
|
+
* @returns Language.
|
206
|
+
*/
|
207
|
+
get lang() {
|
208
|
+
return this.getAttributeNS(null, 'lang') || '';
|
209
|
+
}
|
210
|
+
/**
|
211
|
+
* Returns language.
|
212
|
+
*
|
213
|
+
* @param language Language.
|
214
|
+
*/
|
215
|
+
set lang(lang) {
|
216
|
+
this.setAttributeNS(null, 'lang', lang);
|
217
|
+
}
|
218
|
+
/**
|
219
|
+
* Returns title.
|
220
|
+
*
|
221
|
+
* @returns Title.
|
222
|
+
*/
|
223
|
+
get title() {
|
224
|
+
return this.getAttributeNS(null, 'title') || '';
|
225
|
+
}
|
226
|
+
/**
|
227
|
+
* Returns title.
|
228
|
+
*
|
229
|
+
* @param title Title.
|
230
|
+
*/
|
231
|
+
set title(title) {
|
232
|
+
this.setAttributeNS(null, 'title', title);
|
233
|
+
}
|
288
234
|
/**
|
289
235
|
* Triggers a click event.
|
290
236
|
*/
|
291
|
-
|
292
|
-
|
237
|
+
click() {
|
238
|
+
const event = new PointerEvent_1.default('click', {
|
293
239
|
bubbles: true,
|
294
240
|
composed: true
|
295
241
|
});
|
296
242
|
event.target = this;
|
297
243
|
event.currentTarget = this;
|
298
244
|
this.dispatchEvent(event);
|
299
|
-
}
|
245
|
+
}
|
300
246
|
/**
|
301
247
|
* Triggers a blur event.
|
302
248
|
*/
|
303
|
-
|
249
|
+
blur() {
|
304
250
|
if (this.ownerDocument['_activeElement'] !== this || !this.isConnected) {
|
305
251
|
return;
|
306
252
|
}
|
307
253
|
this.ownerDocument['_activeElement'] = null;
|
308
|
-
for (
|
309
|
-
|
310
|
-
var event = new FocusEvent_1.default(eventType, {
|
254
|
+
for (const eventType of ['blur', 'focusout']) {
|
255
|
+
const event = new FocusEvent_1.default(eventType, {
|
311
256
|
bubbles: true,
|
312
257
|
composed: true
|
313
258
|
});
|
@@ -315,11 +260,11 @@ var HTMLElement = /** @class */ (function (_super) {
|
|
315
260
|
event.currentTarget = this;
|
316
261
|
this.dispatchEvent(event);
|
317
262
|
}
|
318
|
-
}
|
263
|
+
}
|
319
264
|
/**
|
320
265
|
* Triggers a focus event.
|
321
266
|
*/
|
322
|
-
|
267
|
+
focus() {
|
323
268
|
if (this.ownerDocument['_activeElement'] === this || !this.isConnected) {
|
324
269
|
return;
|
325
270
|
}
|
@@ -327,9 +272,8 @@ var HTMLElement = /** @class */ (function (_super) {
|
|
327
272
|
this.ownerDocument['_activeElement'].blur();
|
328
273
|
}
|
329
274
|
this.ownerDocument['_activeElement'] = this;
|
330
|
-
for (
|
331
|
-
|
332
|
-
var event = new FocusEvent_1.default(eventType, {
|
275
|
+
for (const eventType of ['focus', 'focusin']) {
|
276
|
+
const event = new FocusEvent_1.default(eventType, {
|
333
277
|
bubbles: true,
|
334
278
|
composed: true
|
335
279
|
});
|
@@ -337,7 +281,7 @@ var HTMLElement = /** @class */ (function (_super) {
|
|
337
281
|
event.currentTarget = this;
|
338
282
|
this.dispatchEvent(event);
|
339
283
|
}
|
340
|
-
}
|
284
|
+
}
|
341
285
|
/**
|
342
286
|
* The setAttributeNode() method adds a new Attr node to the specified element.
|
343
287
|
*
|
@@ -345,25 +289,25 @@ var HTMLElement = /** @class */ (function (_super) {
|
|
345
289
|
* @param attribute Attribute.
|
346
290
|
* @returns Replaced attribute.
|
347
291
|
*/
|
348
|
-
|
349
|
-
|
292
|
+
setAttributeNode(attribute) {
|
293
|
+
const replacedAttribute = super.setAttributeNode(attribute);
|
350
294
|
if (attribute.name === 'style' && this._style) {
|
351
295
|
this._style.cssText = attribute.value;
|
352
296
|
}
|
353
297
|
return replacedAttribute;
|
354
|
-
}
|
298
|
+
}
|
355
299
|
/**
|
356
300
|
* Removes an Attr node.
|
357
301
|
*
|
358
302
|
* @override
|
359
303
|
* @param attribute Attribute.
|
360
304
|
*/
|
361
|
-
|
362
|
-
|
305
|
+
removeAttributeNode(attribute) {
|
306
|
+
super.removeAttributeNode(attribute);
|
363
307
|
if (attribute.name === 'style' && this._style) {
|
364
308
|
this._style.cssText = '';
|
365
309
|
}
|
366
|
-
}
|
310
|
+
}
|
367
311
|
/**
|
368
312
|
* Clones a node.
|
369
313
|
*
|
@@ -371,9 +315,8 @@ var HTMLElement = /** @class */ (function (_super) {
|
|
371
315
|
* @param [deep=false] "true" to clone deep.
|
372
316
|
* @returns Cloned node.
|
373
317
|
*/
|
374
|
-
|
375
|
-
|
376
|
-
var clone = _super.prototype.cloneNode.call(this, deep);
|
318
|
+
cloneNode(deep = false) {
|
319
|
+
const clone = super.cloneNode(deep);
|
377
320
|
clone.accessKey = this.accessKey;
|
378
321
|
clone.accessKeyLabel = this.accessKeyLabel;
|
379
322
|
clone.contentEditable = this.contentEditable;
|
@@ -382,8 +325,7 @@ var HTMLElement = /** @class */ (function (_super) {
|
|
382
325
|
clone.style.cssText = this._style.cssText;
|
383
326
|
}
|
384
327
|
return clone;
|
385
|
-
}
|
386
|
-
|
387
|
-
}(Element_1.default));
|
328
|
+
}
|
329
|
+
}
|
388
330
|
exports.default = HTMLElement;
|
389
331
|
//# sourceMappingURL=HTMLElement.js.map
|