// --- 1. AŞAMA: FANCYBOX DETEKTÖRÜ VE OTO-GİZLEME ---
// Fancybox açıldığında ve kapandığında konsolu otomatik yönetmek için
// MutationObserver (Sayfa değişikliklerini izleyen motor) kullanıyoruz.
const observer = new MutationObserver(function(mutations) {
mutations.forEach(function(mutation) {
// Fancybox açıldığında genellikle body'e 'fancybox-active' sınıfı eklenir
// veya sayfaya '.fancybox-container' / '.fancybox-overlay' isimli divler gelir.
const isFancyboxOpen = document.querySelector('.fancybox-container, .fancybox-overlay, [class*="fancybox-stage"]') || document.body.classList.contains('fancybox-active');
const container = document.getElementById('custom-console');
if (container) {
if (isFancyboxOpen) {
container.style.display = "none"; // Fancybox açıldıysa konsolu gizle
sesiDurdur();
document.getElementById('custom-console-body').innerHTML='';
} else {
// Eğer müzik arka planda aktifse ve fancybox kapandıysa tekrar görünür yapabilirsiniz
// İstemiyorsanız aşağıdaki 3 satırı silebilirsiniz:
if (mevcutCalmaListesi && mevcutCalmaListesi.length > 0) {
container.style.display = "block";
}
}
}
});
});
// Sayfa üzerinde Fancybox elemanlarının eklenip çıkarılmasını canlı izlemeye al
observer.observe(document.body, { childList: true, subtree: true, attributes: true });
// --- 2. AŞAMA: GENEL SAYFA TIKLAMA DENETLEYİCİSİ ---
// Müzik çalma butonu HARİÇ, sayfadaki herhangi bir linke veya düğmeye basıldığında konsolu gizler.
document.addEventListener('click', function(event) {
const container = document.getElementById('custom-console');
if (!container) return;
// Tıklanan elemanı veya onun üst elemanlarını kontrol et
const target = event.target;
// Eğer tıklanan şey bir link (a) veya butonaysa VE bu buton bizim müzik başlatma butonumuz DEĞİLSE
if (target.tagName === 'A' || target.tagName === 'BUTTON' || target.closest('a') || target.closest('button')) {
// Bizim müzik butonumuzun içindeki onclick fonksiyon adını kontrol ediyoruz
const hasPlayFunction = target.getAttribute('onclick') && target.getAttribute('onclick').includes('playSongWithConsole');
// Eğer tıklanan buton müzik butonu değilse ve konsol penceresinin kendi elemanları değilse konsolu gizle
if (!hasPlayFunction && !container.contains(target)) {
container.style.display = "none";
sesiDurdur();
document.getElementById('custom-console-body').innerHTML='';
}
}
});
// Orijinal konsol fonksiyonlarını yedekle
const originalLog = console.log;
const originalError = console.error;
// Bildirim modülüne metin yazdıran ortak fonksiyon
function writeToCustomConsole(args, type) {
const consoleBody = document.getElementById('custom-console-body');
if (!consoleBody) return;
const container = document.getElementById('custom-console');
if (container) {
container.style.display = "block";
}
// Gelen verileri metne dönüştür
const message = args.map(arg => {
if (arg instanceof Error) return arg.message;
return typeof arg === 'object' ? JSON.stringify(arg, null, 2) : arg;
}).join(' ');
// Mesaj türüne göre renk belirle (Hata ise kırmızı, normal ise yeşil)
let color = "#404000"; // #00ff00 Varsayılan yeşil
if (type === "error" || message.toLowerCase().includes("engellendi") || message.toLowerCase().includes("bulunamadı")) {
color = "#ff4d4d"; // Hata kırmızısı
}
// Mesajı ekle
consoleBody.innerHTML += `
> ${message}
`;
// Konsol kutusunu otomatik olarak en son gelen mesaja kaydır
const consoleContainer = document.getElementById('custom-console');
if (consoleContainer) {
consoleContainer.scrollTop = consoleContainer.scrollHeight;
}
}
// console.log fonksiyonunu override et
console.log = function (...args) {
originalLog.apply(console, args); // F12 konsoluna yazmaya devam et
writeToCustomConsole(args, "log");
};
// console.error fonksiyonunu override et (XML ve Sistem hataları için)
console.error = function (...args) {
originalError.apply(console, args); // F12 konsoluna yazmaya devam et
writeToCustomConsole(args, "error");
};
// SAYFADAN ÇIKILIRKEN (KAPATILIRKEN VEYA BAŞKA LİNKE TIKLANIRKEN) GÖRÜNMEZ YAPMA
window.addEventListener("beforeunload", function() {
const container = document.getElementById('custom-console');
if (container) {
container.style.display = "none";
sesiDurdur();
}
});