happy-dom 2.55.0 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


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

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