-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathdesign.js
108 lines (86 loc) · 3.22 KB
/
design.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
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
const acquiredOrnaments = JSON.parse(localStorage.getItem("acquiredOrnaments"));
const ornaments = document.querySelector(".ornaments");
acquiredOrnaments.forEach((imgSrc, index) => {
const ornamentDiv = document.createElement("div");
ornamentDiv.classList.add(`ornament_${index}`);
const ornamentImg = document.createElement("img");
ornamentImg.src = imgSrc;
ornamentImg.alt = `ornament_${index}`;
ornamentImg.draggable = false;
ornamentDiv.appendChild(ornamentImg);
ornaments.appendChild(ornamentDiv);
});
if (acquiredOrnaments.length > 3) {
ornaments.style.gridTemplateRows = `reapeat(2, auto)`;
}
let selectedOrnament = null;
document.querySelectorAll(".ornaments div").forEach((div, index) => {
console.log("Initializing div: div");
div.addEventListener("click", () => {
console.log(`Clicked div: ornament_${index}`);
selectedOrnament = div;
div.style.border = "2px solid blud";
console.log("Selected Ornament:", selectedOrnament);
});
});
document.querySelector(".tree").addEventListener("click", (event) => {
if (!selectedOrnament) {
console.log("No div seleceted to move");
return;
}
console.log("Selected div for moving:", selectedOrnament);
const tRect = event.currentTarget.getBoundingClientRect();
const offsetX = event.clientX - tRect.left;
const offsetY = event.clientY - tRect.top;
console.log("Relative offset:", offsetX, offsetY);
const img = selectedOrnament.querySelector("img");
if (img) {
img.style.position = "absolute";
img.style.left = `${offsetX - img.width / 2}px`;
img.style.top = `${offsetY - img.height / 2}px`;
event.currentTarget.appendChild(img);
selectedOrnament.style.border = "none";
selectedOrnament = null;
}
});
document.body.addEventListener("click", (event) => {
const treeContainer = document.querySelector(".tree");
if (treeContainer && treeContainer.contains(event.target)) {
console.log(
"Clicked inside t container, keeping selectedDiv:",
selectedOrnament
);
return;
}
if (!event.target.closest(".ornaments") && selectedOrnament) {
console.log("Clicked outside, clearing selectedDiv:", selectedOrnament);
selectedOrnament.style.border = "none";
selectedOrnament = null;
}
});
document.getElementById("againButton").addEventListener("click", () => {
location.reload();
});
document.getElementById("messageButton").addEventListener("click", () => {
const depository = document.querySelector(".depository");
const existingTextarea = depository.querySelector(".textarea-wrapper");
if (existingTextarea) {
existingTextarea.remove();
}
const wrapper = document.createElement("div");
wrapper.className = "textarea-wrapper";
const textarea = document.createElement("textarea");
textarea.placeholder = "이곳에 적으세요.";
wrapper.appendChild(textarea);
depository.appendChild(wrapper);
});
const captureButton = document.querySelector(".captureButton");
captureButton.addEventListener("click", () => {
const buttons = document.querySelectorAll(".buttons button");
buttons.forEach((button) => {
button.style.display = "none";
});
captureButton.style.display = "none";
const explain = document.querySelector(".explain");
explain.style.display = "none";
});