Skip to content

Commit f259108

Browse files
authored
Update app.js
1 parent efb5244 commit f259108

1 file changed

Lines changed: 10 additions & 22 deletions

File tree

src/js/app.js

Lines changed: 10 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
let config;
22
let generatorInstance;
33

4-
// Ambil elemen yang sudah ada di HTML
54
const container = document.getElementById('dynamic-content');
65
const titleText = document.getElementById('title-text');
76
const subtitleText = document.getElementById('subtitle-text');
@@ -16,15 +15,14 @@ addEventListener('load', function() {
1615
.then(json => {
1716
config = json;
1817

19-
// Isi teks dari config
18+
// Set konten teks
2019
titleText.textContent = config.appTitle;
2120
subtitleText.textContent = config.appSubtitle;
2221
startupMsg.textContent = config.messages.status.startup;
2322

24-
// Munculkan semua dengan halus setelah teks siap
25-
titleText.classList.add('fade-active');
26-
subtitleText.classList.add('fade-active');
27-
container.classList.add('fade-active');
23+
// Berikan efek fade-in hanya sekali saat pertama dimuat
24+
container.classList.add('fade-in');
25+
document.querySelector('.header-identity').classList.add('fade-in');
2826

2927
lucide.createIcons();
3028
initAppLogic();
@@ -33,11 +31,8 @@ addEventListener('load', function() {
3331
});
3432

3533
function initAppLogic() {
36-
// Reset state jika dipanggil dari tombol reset
34+
// Kembalikan ke keadaan awal tanpa 'transition' berat
3735
dropZone.classList.remove('no-border');
38-
dropZone.onclick = () => fileInput.click();
39-
40-
// Tampilkan kembali overlay startup
4136
dropZone.innerHTML = `
4237
<div class="status-overlay">
4338
<i data-lucide="image-plus"></i>
@@ -48,14 +43,14 @@ function initAppLogic() {
4843

4944
uiGroup.style.display = 'none';
5045
uiGroup.innerHTML = "";
46+
dropZone.onclick = () => fileInput.click();
5147

5248
fileInput.onchange = function() {
5349
if(this.files && this.files[0]) processImage(this.files[0]);
5450
};
5551
}
5652

5753
function processImage(file) {
58-
// Feedback proses
5954
dropZone.onclick = null;
6055
dropZone.innerHTML = `
6156
<div class="status-overlay">
@@ -75,19 +70,19 @@ function processImage(file) {
7570
overlayImg.src = config.overlaySource;
7671

7772
overlayImg.onload = () => {
78-
// Bersihkan zone dan masukkan canvas
73+
// Bersihkan zone dan pasang canvas
7974
dropZone.classList.add('no-border');
8075
dropZone.innerHTML = "";
8176

8277
const canvas = document.createElement('canvas');
8378
dropZone.appendChild(canvas);
8479

85-
// Jalankan Generator Interaktif
80+
// Inisialisasi Generator (Interaksi harus ringan di sini)
8681
generatorInstance = new Generator(canvas, { width: 1080, height: 1080 });
8782
generatorInstance.setUserImage(userImg);
8883
generatorInstance.setOverlayImage(overlayImg);
8984

90-
// Setup Tombol dengan halus
85+
// Tampilkan kontrol
9186
uiGroup.style.display = 'flex';
9287
uiGroup.innerHTML = "";
9388

@@ -104,14 +99,7 @@ function processImage(file) {
10499
const btnRe = document.createElement('button');
105100
btnRe.className = 'btn-reset';
106101
btnRe.innerHTML = `<i data-lucide="refresh-cw"></i> ${config.messages.buttons.newImage}`;
107-
btnRe.onclick = () => {
108-
// Animasi transisi saat reset
109-
container.classList.remove('fade-active');
110-
setTimeout(() => {
111-
initAppLogic();
112-
container.classList.add('fade-active');
113-
}, 300);
114-
};
102+
btnRe.onclick = () => initAppLogic(); // Reset instan agar enteng
115103

116104
uiGroup.appendChild(btnDl);
117105
uiGroup.appendChild(btnRe);

0 commit comments

Comments
 (0)