happy-dom 7.1.1 → 7.2.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 (42) hide show
  1. package/lib/config/ElementTag.d.ts +4 -2
  2. package/lib/config/ElementTag.js +4 -2
  3. package/lib/config/ElementTag.js.map +1 -1
  4. package/lib/config/NonImplemenetedElementClasses.js +0 -3
  5. package/lib/config/NonImplemenetedElementClasses.js.map +1 -1
  6. package/lib/index.d.ts +7 -1
  7. package/lib/index.js +8 -2
  8. package/lib/index.js.map +1 -1
  9. package/lib/nodes/html-audio-element/HTMLAudioElement.d.ts +11 -0
  10. package/lib/nodes/html-audio-element/HTMLAudioElement.js +17 -0
  11. package/lib/nodes/html-audio-element/HTMLAudioElement.js.map +1 -0
  12. package/lib/nodes/html-audio-element/IHTMLAudioElement.d.ts +9 -0
  13. package/lib/nodes/html-audio-element/IHTMLAudioElement.js +3 -0
  14. package/lib/nodes/html-audio-element/IHTMLAudioElement.js.map +1 -0
  15. package/lib/nodes/html-media-element/HTMLMediaElement.d.ts +234 -0
  16. package/lib/nodes/html-media-element/HTMLMediaElement.js +418 -0
  17. package/lib/nodes/html-media-element/HTMLMediaElement.js.map +1 -0
  18. package/lib/nodes/html-media-element/IHTMLMediaElement.d.ts +76 -0
  19. package/lib/nodes/html-media-element/IHTMLMediaElement.js +3 -0
  20. package/lib/nodes/html-media-element/IHTMLMediaElement.js.map +1 -0
  21. package/lib/nodes/html-video-element/HTMLVideoElement.d.ts +11 -0
  22. package/lib/nodes/html-video-element/HTMLVideoElement.js +17 -0
  23. package/lib/nodes/html-video-element/HTMLVideoElement.js.map +1 -0
  24. package/lib/nodes/html-video-element/IHTMLVideoElement.d.ts +9 -0
  25. package/lib/nodes/html-video-element/IHTMLVideoElement.js +3 -0
  26. package/lib/nodes/html-video-element/IHTMLVideoElement.js.map +1 -0
  27. package/lib/window/IWindow.d.ts +6 -0
  28. package/lib/window/Window.d.ts +6 -0
  29. package/lib/window/Window.js +6 -0
  30. package/lib/window/Window.js.map +1 -1
  31. package/package.json +2 -2
  32. package/src/config/ElementTag.ts +4 -2
  33. package/src/config/NonImplemenetedElementClasses.ts +0 -3
  34. package/src/index.ts +12 -0
  35. package/src/nodes/html-audio-element/HTMLAudioElement.ts +11 -0
  36. package/src/nodes/html-audio-element/IHTMLAudioElement.ts +11 -0
  37. package/src/nodes/html-media-element/HTMLMediaElement.ts +441 -0
  38. package/src/nodes/html-media-element/IHTMLMediaElement.ts +84 -0
  39. package/src/nodes/html-video-element/HTMLVideoElement.ts +11 -0
  40. package/src/nodes/html-video-element/IHTMLVideoElement.ts +11 -0
  41. package/src/window/IWindow.ts +6 -0
  42. package/src/window/Window.ts +6 -0
@@ -0,0 +1,418 @@
1
+ "use strict";
2
+ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
3
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
4
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
5
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
6
+ };
7
+ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
8
+ if (kind === "m") throw new TypeError("Private method is not writable");
9
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
10
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
11
+ return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
12
+ };
13
+ var __importDefault = (this && this.__importDefault) || function (mod) {
14
+ return (mod && mod.__esModule) ? mod : { "default": mod };
15
+ };
16
+ var _HTMLMediaElement_volume, _HTMLMediaElement_paused, _HTMLMediaElement_currentTime, _HTMLMediaElement_playbackRate, _HTMLMediaElement_defaultPlaybackRate, _HTMLMediaElement_muted, _HTMLMediaElement_defaultMuted, _HTMLMediaElement_preservesPitch;
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ const Event_1 = __importDefault(require("../../event/Event"));
19
+ const DOMException_1 = __importDefault(require("../../exception/DOMException"));
20
+ const DOMExceptionNameEnum_1 = __importDefault(require("../../exception/DOMExceptionNameEnum"));
21
+ const HTMLElement_1 = __importDefault(require("../html-element/HTMLElement"));
22
+ /**
23
+ *
24
+ * This implementation coming from jsdom
25
+ * https://github.com/jsdom/jsdom/blob/master/lib/jsdom/living/nodes/HTMLMediaElement-impl.js#L7
26
+ *
27
+ */
28
+ function getTimeRangeDummy() {
29
+ return {
30
+ length: 0,
31
+ start() {
32
+ return 0;
33
+ },
34
+ end() {
35
+ return 0;
36
+ }
37
+ };
38
+ }
39
+ /**
40
+ * HTML Media Element.
41
+ *
42
+ * Reference:
43
+ * https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.
44
+ *
45
+ */
46
+ class HTMLMediaElement extends HTMLElement_1.default {
47
+ constructor() {
48
+ super(...arguments);
49
+ // Public Properties
50
+ this.buffered = getTimeRangeDummy();
51
+ this.duration = NaN;
52
+ this.error = null;
53
+ this.ended = false;
54
+ this.networkState = 0;
55
+ this.readyState = 0;
56
+ this.textTracks = [];
57
+ this.videoTracks = [];
58
+ this.seeking = false;
59
+ this.seekable = getTimeRangeDummy();
60
+ this.played = getTimeRangeDummy();
61
+ // Events
62
+ this.onabort = null;
63
+ this.oncanplay = null;
64
+ this.oncanplaythrough = null;
65
+ this.ondurationchange = null;
66
+ this.onemptied = null;
67
+ this.onended = null;
68
+ this.onerror = null;
69
+ this.onloadeddata = null;
70
+ _HTMLMediaElement_volume.set(this, 1);
71
+ _HTMLMediaElement_paused.set(this, true);
72
+ _HTMLMediaElement_currentTime.set(this, 0);
73
+ _HTMLMediaElement_playbackRate.set(this, 1);
74
+ _HTMLMediaElement_defaultPlaybackRate.set(this, 1);
75
+ _HTMLMediaElement_muted.set(this, false);
76
+ _HTMLMediaElement_defaultMuted.set(this, false);
77
+ _HTMLMediaElement_preservesPitch.set(this, true);
78
+ }
79
+ /**
80
+ * Returns autoplay.
81
+ *
82
+ * @returns Autoplay.
83
+ */
84
+ get autoplay() {
85
+ return this.getAttributeNS(null, 'autoplay') !== null;
86
+ }
87
+ /**
88
+ * Sets autoplay.
89
+ *
90
+ * @param autoplay Autoplay.
91
+ */
92
+ set autoplay(autoplay) {
93
+ if (!autoplay) {
94
+ this.removeAttributeNS(null, 'autoplay');
95
+ }
96
+ else {
97
+ this.setAttributeNS(null, 'autoplay', '');
98
+ }
99
+ }
100
+ /**
101
+ * Returns controls.
102
+ *
103
+ * @returns Controls.
104
+ */
105
+ get controls() {
106
+ return this.getAttributeNS(null, 'controls') !== null;
107
+ }
108
+ /**
109
+ * Sets controls.
110
+ *
111
+ * @param controls Controls.
112
+ */
113
+ set controls(controls) {
114
+ if (!controls) {
115
+ this.removeAttributeNS(null, 'controls');
116
+ }
117
+ else {
118
+ this.setAttributeNS(null, 'controls', '');
119
+ }
120
+ }
121
+ /**
122
+ * Returns loop.
123
+ *
124
+ * @returns Loop.
125
+ */
126
+ get loop() {
127
+ return this.getAttributeNS(null, 'loop') !== null;
128
+ }
129
+ /**
130
+ * Sets loop.
131
+ *
132
+ * @param loop Loop.
133
+ */
134
+ set loop(loop) {
135
+ if (!loop) {
136
+ this.removeAttributeNS(null, 'loop');
137
+ }
138
+ else {
139
+ this.setAttributeNS(null, 'loop', '');
140
+ }
141
+ }
142
+ /**
143
+ * Returns muted.
144
+ *
145
+ * @returns Muted.
146
+ */
147
+ get muted() {
148
+ if (__classPrivateFieldGet(this, _HTMLMediaElement_muted, "f")) {
149
+ return __classPrivateFieldGet(this, _HTMLMediaElement_muted, "f");
150
+ }
151
+ if (!__classPrivateFieldGet(this, _HTMLMediaElement_defaultMuted, "f")) {
152
+ return this.getAttributeNS(null, 'muted') !== null;
153
+ }
154
+ return false;
155
+ }
156
+ /**
157
+ * Sets muted.
158
+ *
159
+ * @param muted Muted.
160
+ */
161
+ set muted(muted) {
162
+ __classPrivateFieldSet(this, _HTMLMediaElement_muted, !!muted, "f");
163
+ if (!muted && !__classPrivateFieldGet(this, _HTMLMediaElement_defaultMuted, "f")) {
164
+ this.removeAttributeNS(null, 'muted');
165
+ }
166
+ else {
167
+ this.setAttributeNS(null, 'muted', '');
168
+ }
169
+ }
170
+ /**
171
+ * Returns defaultMuted.
172
+ *
173
+ * @returns DefaultMuted.
174
+ */
175
+ get defaultMuted() {
176
+ return __classPrivateFieldGet(this, _HTMLMediaElement_defaultMuted, "f");
177
+ }
178
+ /**
179
+ * Sets defaultMuted.
180
+ *
181
+ * @param defaultMuted DefaultMuted.
182
+ */
183
+ set defaultMuted(defaultMuted) {
184
+ __classPrivateFieldSet(this, _HTMLMediaElement_defaultMuted, !!defaultMuted, "f");
185
+ if (!__classPrivateFieldGet(this, _HTMLMediaElement_defaultMuted, "f") && !__classPrivateFieldGet(this, _HTMLMediaElement_muted, "f")) {
186
+ this.removeAttributeNS(null, 'muted');
187
+ }
188
+ else {
189
+ this.setAttributeNS(null, 'muted', '');
190
+ }
191
+ }
192
+ /**
193
+ * Returns src.
194
+ *
195
+ * @returns Src.
196
+ */
197
+ get src() {
198
+ return this.getAttributeNS(null, 'src') || '';
199
+ }
200
+ /**
201
+ * Sets src.
202
+ *
203
+ * @param src Src.
204
+ */
205
+ set src(src) {
206
+ this.setAttributeNS(null, 'src', src);
207
+ if (Boolean(src)) {
208
+ this.dispatchEvent(new Event_1.default('canplay', { bubbles: false, cancelable: false }));
209
+ this.dispatchEvent(new Event_1.default('durationchange', { bubbles: false, cancelable: false }));
210
+ }
211
+ }
212
+ /**
213
+ * Returns currentSrc.
214
+ *
215
+ * @returns CurrentrSrc.
216
+ */
217
+ get currentSrc() {
218
+ return this.src;
219
+ }
220
+ /**
221
+ * Returns volume.
222
+ *
223
+ * @returns Volume.
224
+ */
225
+ get volume() {
226
+ return __classPrivateFieldGet(this, _HTMLMediaElement_volume, "f");
227
+ }
228
+ /**
229
+ * Sets volume.
230
+ *
231
+ * @param volume Volume.
232
+ */
233
+ set volume(volume) {
234
+ const parsedVolume = Number(volume);
235
+ if (isNaN(parsedVolume)) {
236
+ throw new TypeError(`Failed to set the 'volume' property on 'HTMLMediaElement': The provided double value is non-finite.`);
237
+ }
238
+ if (parsedVolume < 0 || parsedVolume > 1) {
239
+ throw new DOMException_1.default(`Failed to set the 'volume' property on 'HTMLMediaElement': The volume provided (${parsedVolume}) is outside the range [0, 1].`, DOMExceptionNameEnum_1.default.indexSizeError);
240
+ }
241
+ // TODO: volumechange event https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement/volumechange_event
242
+ __classPrivateFieldSet(this, _HTMLMediaElement_volume, parsedVolume, "f");
243
+ }
244
+ /**
245
+ * Returns crossOrigin.
246
+ *
247
+ * @returns CrossOrigin.
248
+ */
249
+ get crossOrigin() {
250
+ return this.getAttributeNS(null, 'crossorigin');
251
+ }
252
+ /**
253
+ * Sets crossOrigin.
254
+ *
255
+ * @param crossOrigin CrossOrigin.
256
+ */
257
+ set crossOrigin(crossOrigin) {
258
+ if (crossOrigin === null) {
259
+ return;
260
+ }
261
+ if (['', 'use-credentials', 'anonymous'].includes(crossOrigin)) {
262
+ this.setAttributeNS(null, 'crossorigin', crossOrigin);
263
+ }
264
+ else {
265
+ this.setAttributeNS(null, 'crossorigin', 'anonymous');
266
+ }
267
+ }
268
+ /**
269
+ * Returns currentTime.
270
+ *
271
+ * @returns CurrentTime.
272
+ */
273
+ get currentTime() {
274
+ return __classPrivateFieldGet(this, _HTMLMediaElement_currentTime, "f");
275
+ }
276
+ /**
277
+ * Sets currentTime.
278
+ *
279
+ * @param currentTime CurrentTime.
280
+ */
281
+ set currentTime(currentTime) {
282
+ const parsedCurrentTime = Number(currentTime);
283
+ if (isNaN(parsedCurrentTime)) {
284
+ throw new TypeError(`Failed to set the 'currentTime' property on 'HTMLMediaElement': The provided double value is non-finite.`);
285
+ }
286
+ __classPrivateFieldSet(this, _HTMLMediaElement_currentTime, parsedCurrentTime, "f");
287
+ }
288
+ /**
289
+ * Returns playbackRate.
290
+ *
291
+ * @returns PlaybackRate.
292
+ */
293
+ get playbackRate() {
294
+ return __classPrivateFieldGet(this, _HTMLMediaElement_playbackRate, "f");
295
+ }
296
+ /**
297
+ * Sets playbackRate.
298
+ *
299
+ * @param playbackRate PlaybackRate.
300
+ */
301
+ set playbackRate(playbackRate) {
302
+ const parsedPlaybackRate = Number(playbackRate);
303
+ if (isNaN(parsedPlaybackRate)) {
304
+ throw new TypeError(`Failed to set the 'playbackRate' property on 'HTMLMediaElement': The provided double value is non-finite.`);
305
+ }
306
+ __classPrivateFieldSet(this, _HTMLMediaElement_playbackRate, parsedPlaybackRate, "f");
307
+ }
308
+ /**
309
+ * Returns defaultPlaybackRate.
310
+ *
311
+ * @returns DefaultPlaybackRate.
312
+ */
313
+ get defaultPlaybackRate() {
314
+ return __classPrivateFieldGet(this, _HTMLMediaElement_defaultPlaybackRate, "f");
315
+ }
316
+ /**
317
+ * Sets defaultPlaybackRate.
318
+ *
319
+ * @param defaultPlaybackRate DefaultPlaybackRate.
320
+ */
321
+ set defaultPlaybackRate(defaultPlaybackRate) {
322
+ const parsedDefaultPlaybackRate = Number(defaultPlaybackRate);
323
+ if (isNaN(parsedDefaultPlaybackRate)) {
324
+ throw new TypeError(`Failed to set the 'defaultPlaybackRate' property on 'HTMLMediaElement': The provided double value is non-finite.`);
325
+ }
326
+ __classPrivateFieldSet(this, _HTMLMediaElement_defaultPlaybackRate, parsedDefaultPlaybackRate, "f");
327
+ }
328
+ /**
329
+ * Returns preservesPitch.
330
+ *
331
+ * @returns PlaybackRate.
332
+ */
333
+ get preservesPitch() {
334
+ return __classPrivateFieldGet(this, _HTMLMediaElement_preservesPitch, "f");
335
+ }
336
+ /**
337
+ * Sets preservesPitch.
338
+ *
339
+ * @param preservesPitch PreservesPitch.
340
+ */
341
+ set preservesPitch(preservesPitch) {
342
+ __classPrivateFieldSet(this, _HTMLMediaElement_preservesPitch, Boolean(preservesPitch), "f");
343
+ }
344
+ /**
345
+ * Returns preload.
346
+ *
347
+ * @returns preload.
348
+ */
349
+ get preload() {
350
+ return this.getAttributeNS(null, 'preload') || 'auto';
351
+ }
352
+ /**
353
+ * Sets preload.
354
+ *
355
+ * @param preload preload.
356
+ */
357
+ set preload(preload) {
358
+ this.setAttributeNS(null, 'preload', preload);
359
+ }
360
+ /**
361
+ * Returns paused.
362
+ *
363
+ * @returns Paused.
364
+ */
365
+ get paused() {
366
+ return __classPrivateFieldGet(this, _HTMLMediaElement_paused, "f");
367
+ }
368
+ /**
369
+ * Pause played media.
370
+ */
371
+ pause() {
372
+ __classPrivateFieldSet(this, _HTMLMediaElement_paused, true, "f");
373
+ this.dispatchEvent(new Event_1.default('pause', { bubbles: false, cancelable: false }));
374
+ }
375
+ /**
376
+ * Start playing media.
377
+ */
378
+ async play() {
379
+ __classPrivateFieldSet(this, _HTMLMediaElement_paused, false, "f");
380
+ return Promise.resolve();
381
+ }
382
+ /**
383
+ *
384
+ * @param _type
385
+ */
386
+ canPlayType(_type) {
387
+ return '';
388
+ }
389
+ /**
390
+ * Load media.
391
+ */
392
+ load() {
393
+ this.dispatchEvent(new Event_1.default('emptied', { bubbles: false, cancelable: false }));
394
+ }
395
+ /**
396
+ *
397
+ */
398
+ captureStream() {
399
+ return {};
400
+ }
401
+ /**
402
+ * Clones a node.
403
+ *
404
+ * @override
405
+ * @param [deep=false] "true" to clone deep.
406
+ * @returns Cloned node.
407
+ */
408
+ /**
409
+ *
410
+ * @param deep
411
+ */
412
+ cloneNode(deep = false) {
413
+ return super.cloneNode(deep);
414
+ }
415
+ }
416
+ exports.default = HTMLMediaElement;
417
+ _HTMLMediaElement_volume = new WeakMap(), _HTMLMediaElement_paused = new WeakMap(), _HTMLMediaElement_currentTime = new WeakMap(), _HTMLMediaElement_playbackRate = new WeakMap(), _HTMLMediaElement_defaultPlaybackRate = new WeakMap(), _HTMLMediaElement_muted = new WeakMap(), _HTMLMediaElement_defaultMuted = new WeakMap(), _HTMLMediaElement_preservesPitch = new WeakMap();
418
+ //# sourceMappingURL=HTMLMediaElement.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HTMLMediaElement.js","sourceRoot":"","sources":["../../../src/nodes/html-media-element/HTMLMediaElement.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,76 @@
1
+ import IHTMLElement from '../html-element/IHTMLElement';
2
+ /**
3
+ * HTML Media Element.
4
+ *
5
+ * Reference:
6
+ * https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.
7
+ */
8
+ export interface IMediaError {
9
+ code: number;
10
+ message: string;
11
+ }
12
+ export default interface IHTMLMediaElement extends IHTMLElement {
13
+ readonly currentSrc: string;
14
+ readonly duration: number;
15
+ readonly ended: boolean;
16
+ readonly error: IMediaError | null;
17
+ readonly networkState: number;
18
+ readonly played: object;
19
+ readonly readyState: number;
20
+ readonly seekable: object;
21
+ readonly seeking: boolean;
22
+ readonly textTracks: object[];
23
+ readonly videoTracks: object[];
24
+ readonly buffered: object;
25
+ autoplay: boolean;
26
+ controls: boolean;
27
+ crossOrigin: string;
28
+ currentTime: number | string;
29
+ defaultMuted: boolean;
30
+ defaultPlaybackRate: number | string;
31
+ loop: boolean;
32
+ muted: boolean;
33
+ paused: boolean;
34
+ playbackRate: number | string;
35
+ preload: string;
36
+ preservesPitch: boolean;
37
+ src: string;
38
+ volume: number | string;
39
+ /**
40
+ * A MediaStream object which can be used as a source for audio and/or video data by other media processing code,
41
+ * or as a source for WebRTC.
42
+ * Https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement/captureStream
43
+ */
44
+ captureStream(): object;
45
+ /**
46
+ * The HTMLMediaElement method canPlayType() reports how likely it is that the current browser will be able to play
47
+ * media of a given MIME type.
48
+ * Https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement/canPlayType
49
+ * possible return value: "" | "probably" | "maybe".
50
+ */
51
+ canPlayType(_type: string): string;
52
+ /**
53
+ * The HTMLMediaElement method load() resets the media element to its initial state and begins the process of
54
+ * selecting a media source and loading the media in preparation for playback to begin at the beginning.
55
+ * Https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement/load.
56
+ */
57
+ load(): void;
58
+ /**
59
+ * The HTMLMediaElement.pause() method will pause playback of the media, if the media is already in a paused state
60
+ * this method will have no effect.
61
+ */
62
+ pause(): void;
63
+ /**
64
+ * The HTMLMediaElement play() method attempts to begin playback of the media. It returns a Promise
65
+ * which is resolved when playback has been successfully started.
66
+ */
67
+ play(): Promise<void>;
68
+ /**
69
+ * Clones a node.
70
+ *
71
+ * @override
72
+ * @param [deep=false] "true" to clone deep.
73
+ * @returns Cloned node.
74
+ */
75
+ cloneNode(deep: boolean): IHTMLMediaElement;
76
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=IHTMLMediaElement.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IHTMLMediaElement.js","sourceRoot":"","sources":["../../../src/nodes/html-media-element/IHTMLMediaElement.ts"],"names":[],"mappings":""}
@@ -0,0 +1,11 @@
1
+ import HTMLMediaElement from '../html-media-element/HTMLMediaElement';
2
+ import IHTMLVideoElement from './IHTMLVideoElement';
3
+ /**
4
+ * HTML Video Element.
5
+ *
6
+ * Reference:
7
+ * https://developer.mozilla.org/en-US/docs/Web/API/HTMLVideoElement.
8
+ *
9
+ */
10
+ export default class HTMLVideoElement extends HTMLMediaElement implements IHTMLVideoElement {
11
+ }
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const HTMLMediaElement_1 = __importDefault(require("../html-media-element/HTMLMediaElement"));
7
+ /**
8
+ * HTML Video Element.
9
+ *
10
+ * Reference:
11
+ * https://developer.mozilla.org/en-US/docs/Web/API/HTMLVideoElement.
12
+ *
13
+ */
14
+ class HTMLVideoElement extends HTMLMediaElement_1.default {
15
+ }
16
+ exports.default = HTMLVideoElement;
17
+ //# sourceMappingURL=HTMLVideoElement.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HTMLVideoElement.js","sourceRoot":"","sources":["../../../src/nodes/html-video-element/HTMLVideoElement.ts"],"names":[],"mappings":";;;;;AAAA,8FAAsE;AAGtE;;;;;;GAMG;AACH,MAAqB,gBAAiB,SAAQ,0BAAgB;CAAgC;AAA9F,mCAA8F"}
@@ -0,0 +1,9 @@
1
+ import IHTMLMediaElement from '../html-media-element/IHTMLMediaElement';
2
+ /**
3
+ * HTML Video Element.
4
+ *
5
+ * Reference:
6
+ * https://developer.mozilla.org/en-US/docs/Web/API/HTMLVideoElement.
7
+ */
8
+ declare type IHTMLVideoElement = IHTMLMediaElement;
9
+ export default IHTMLVideoElement;
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=IHTMLVideoElement.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IHTMLVideoElement.js","sourceRoot":"","sources":["../../../src/nodes/html-video-element/IHTMLVideoElement.ts"],"names":[],"mappings":""}
@@ -20,6 +20,9 @@ import HTMLStyleElement from '../nodes/html-style-element/HTMLStyleElement';
20
20
  import HTMLSlotElement from '../nodes/html-slot-element/HTMLSlotElement';
21
21
  import HTMLLabelElement from '../nodes/html-label-element/HTMLLabelElement';
22
22
  import HTMLMetaElement from '../nodes/html-meta-element/HTMLMetaElement';
23
+ import HTMLMediaElement from '../nodes/html-media-element/HTMLMediaElement';
24
+ import HTMLAudioElement from '../nodes/html-audio-element/HTMLAudioElement';
25
+ import HTMLVideoElement from '../nodes/html-video-element/HTMLVideoElement';
23
26
  import HTMLBaseElement from '../nodes/html-base-element/HTMLBaseElement';
24
27
  import SVGSVGElement from '../nodes/svg-element/SVGSVGElement';
25
28
  import SVGElement from '../nodes/svg-element/SVGElement';
@@ -121,6 +124,9 @@ export default interface IWindow extends IEventTarget, NodeJS.Global {
121
124
  readonly HTMLSlotElement: typeof HTMLSlotElement;
122
125
  readonly HTMLLabelElement: typeof HTMLLabelElement;
123
126
  readonly HTMLMetaElement: typeof HTMLMetaElement;
127
+ readonly HTMLMediaElement: typeof HTMLMediaElement;
128
+ readonly HTMLAudioElement: typeof HTMLAudioElement;
129
+ readonly HTMLVideoElement: typeof HTMLVideoElement;
124
130
  readonly HTMLBaseElement: typeof HTMLBaseElement;
125
131
  readonly HTMLDialogElement: typeof HTMLDialogElement;
126
132
  readonly Attr: typeof Attr;
@@ -20,6 +20,9 @@ import HTMLStyleElement from '../nodes/html-style-element/HTMLStyleElement';
20
20
  import HTMLSlotElement from '../nodes/html-slot-element/HTMLSlotElement';
21
21
  import HTMLLabelElement from '../nodes/html-label-element/HTMLLabelElement';
22
22
  import HTMLMetaElement from '../nodes/html-meta-element/HTMLMetaElement';
23
+ import HTMLMediaElement from '../nodes/html-media-element/HTMLMediaElement';
24
+ import HTMLAudioElement from '../nodes/html-audio-element/HTMLAudioElement';
25
+ import HTMLVideoElement from '../nodes/html-video-element/HTMLVideoElement';
23
26
  import HTMLBaseElement from '../nodes/html-base-element/HTMLBaseElement';
24
27
  import HTMLDialogElement from '../nodes/html-dialog-element/HTMLDialogElement';
25
28
  import SVGSVGElement from '../nodes/svg-element/SVGSVGElement';
@@ -119,6 +122,9 @@ export default class Window extends EventTarget implements IWindow {
119
122
  readonly HTMLLabelElement: typeof HTMLLabelElement;
120
123
  readonly HTMLSlotElement: typeof HTMLSlotElement;
121
124
  readonly HTMLMetaElement: typeof HTMLMetaElement;
125
+ readonly HTMLMediaElement: typeof HTMLMediaElement;
126
+ readonly HTMLAudioElement: typeof HTMLAudioElement;
127
+ readonly HTMLVideoElement: typeof HTMLVideoElement;
122
128
  readonly HTMLBaseElement: typeof HTMLBaseElement;
123
129
  readonly HTMLDialogElement: typeof HTMLDialogElement;
124
130
  readonly Attr: typeof Attr;
@@ -48,6 +48,9 @@ const HTMLStyleElement_1 = __importDefault(require("../nodes/html-style-element/
48
48
  const HTMLSlotElement_1 = __importDefault(require("../nodes/html-slot-element/HTMLSlotElement"));
49
49
  const HTMLLabelElement_1 = __importDefault(require("../nodes/html-label-element/HTMLLabelElement"));
50
50
  const HTMLMetaElement_1 = __importDefault(require("../nodes/html-meta-element/HTMLMetaElement"));
51
+ const HTMLMediaElement_1 = __importDefault(require("../nodes/html-media-element/HTMLMediaElement"));
52
+ const HTMLAudioElement_1 = __importDefault(require("../nodes/html-audio-element/HTMLAudioElement"));
53
+ const HTMLVideoElement_1 = __importDefault(require("../nodes/html-video-element/HTMLVideoElement"));
51
54
  const HTMLBaseElement_1 = __importDefault(require("../nodes/html-base-element/HTMLBaseElement"));
52
55
  const HTMLDialogElement_1 = __importDefault(require("../nodes/html-dialog-element/HTMLDialogElement"));
53
56
  const SVGSVGElement_1 = __importDefault(require("../nodes/svg-element/SVGSVGElement"));
@@ -190,6 +193,9 @@ class Window extends EventTarget_1.default {
190
193
  this.HTMLLabelElement = HTMLLabelElement_1.default;
191
194
  this.HTMLSlotElement = HTMLSlotElement_1.default;
192
195
  this.HTMLMetaElement = HTMLMetaElement_1.default;
196
+ this.HTMLMediaElement = HTMLMediaElement_1.default;
197
+ this.HTMLAudioElement = HTMLAudioElement_1.default;
198
+ this.HTMLVideoElement = HTMLVideoElement_1.default;
193
199
  this.HTMLBaseElement = HTMLBaseElement_1.default;
194
200
  this.HTMLDialogElement = HTMLDialogElement_1.default;
195
201
  this.Attr = Attr_1.default;