-
Notifications
You must be signed in to change notification settings - Fork 0
/
script.js
89 lines (80 loc) · 2 KB
/
script.js
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
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
85
86
87
88
89
function handleImage(file, element) {
if (file && file.type.startsWith("image/")) {
const reader = new FileReader();
reader.onload = (event) => {
if (event.target) {
element.src = event.target.result;
}
};
reader.readAsDataURL(file);
} else {
alert("Please drop an image file.");
}
}
function handleUpload(event) {
event.preventDefault();
const element = event.target.parentElement.querySelector("img");
handleImage(event.target.files[0], element);
}
const handleDrop = (e) => {
e.preventDefault();
const element = e.currentTarget;
const file = e.dataTransfer.files[0];
handleImage(file, element);
};
const handleDragOver = (e) => {
e.stopPropagation();
e.preventDefault();
};
function slideCardIn(node) {
node.animate(
[
{ opacity: 0, transform: "translateY(-10%)" },
{ opacity: 1, transform: "" },
],
{
duration: 200,
fill: "both",
easing: "ease-out",
},
);
}
function slideCardOut(node) {
return new Promise((resolve) => {
const anim = node.animate(
[
{ opacity: 1, transform: "" },
{ opacity: 0, transform: "translateY(40%)" },
],
{
duration: 200,
fill: "both",
easing: "ease-in",
},
);
anim.onfinish = resolve;
});
}
function addCard() {
const laput = document.querySelector(".laput");
const template = document.querySelector("#lappu-template");
const lisalappuButton = document.querySelector(".lisalappu");
const clone = template.content.firstElementChild.cloneNode(true);
return laput.insertBefore(clone, lisalappuButton);
}
const handleClickAdd = () => {
const node = addCard();
slideCardIn(node);
};
async function handleYeet(event) {
const lappu = event.target.closest(".lappu");
if (lappu) {
await slideCardOut(lappu);
lappu.parentNode.removeChild(lappu);
event.preventDefault();
}
}
const handleBoot = () => {
addCard();
document.querySelector(".hakulappu").hidden = !window.crypto.subtle;
};