-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.js
More file actions
35 lines (26 loc) · 960 Bytes
/
index.js
File metadata and controls
35 lines (26 loc) · 960 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
import { querySelector_s } from "./domUtils.js";
import { VideoController } from "./VideoController.js";
const video = querySelector_s("video", HTMLVideoElement);
const upload = querySelector_s("input[type=file]", HTMLInputElement);
const videoSrc = querySelector_s("source", HTMLSourceElement);
const controller = new VideoController(video);
['mouseenter', 'touchstart'].forEach(eventName => {
video.addEventListener(eventName, /** @param {MouseEvent | TouchEvent} e */ e => {
e.preventDefault();
controller.reverse = false;
controller.play();
});
});
['mouseleave', 'touchend'].forEach(eventName => {
video.addEventListener(eventName, /** @param {MouseEvent | TouchEvent} e */ e => {
e.preventDefault();
controller.reverse = true;
controller.play();
});
});
upload.addEventListener('change', async () => {
const files = upload.files;
if (files === null) return;
videoSrc.src = URL.createObjectURL(files[0]);
video.load();
});