(function (){
'use strict';
var STORAGE_KEY='acilci_saved_v1';
function getSaved(){
try {
var raw=localStorage.getItem(STORAGE_KEY);
return raw ? JSON.parse(raw):[];
} catch (e){
return [];
}}
function setSaved(list){
try { localStorage.setItem(STORAGE_KEY, JSON.stringify(list)); } catch (e){}}
function isSaved(id){
return getSaved().some(function (p){ return Number(p.id)===Number(id); });
}
function toggleSaved(post){
var list=getSaved();
var idx=list.findIndex(function (p){ return Number(p.id)===Number(post.id); });
if(idx >=0){
list.splice(idx, 1);
}else{
list.unshift(post);
}
setSaved(list);
return idx < 0;
}
function refreshSaveButton(btn){
if(!btn) return;
var id=btn.getAttribute('data-post-id');
var saved=isSaved(id);
var label=btn.querySelector('[data-am-save-label]');
btn.setAttribute('data-am-saved', saved ? '1':'0');
if(label) label.textContent=saved ? 'Kaydedildi':'Kaydet';
}
function share(title, url){
if(navigator.share){
return navigator.share({ title: title, url: url }).catch(function (){});
}
if(navigator.clipboard){
navigator.clipboard.writeText(url).then(function (){
toast('Bağlantı kopyalandı');
});
}}
function toast(msg){
var el=document.createElement('div');
el.textContent=msg;
el.setAttribute('role', 'status');
el.style.cssText='position:fixed;left:50%;bottom:32px;transform:translateX(-50%);background:#0B1220;color:#fff;padding:10px 18px;border-radius:999px;font-size:13px;font-weight:600;z-index:99999;box-shadow:0 8px 24px rgba(0,0,0,.25);opacity:0;transition:opacity .2s';
document.body.appendChild(el);
requestAnimationFrame(function (){ el.style.opacity='1'; });
setTimeout(function (){
el.style.opacity='0';
setTimeout(function (){ el.remove(); }, 250);
}, 1800);
}
function openPersonDialog(data){
var dlg=document.getElementById('am-person-dialog');
if(!dlg) return;
var avatar=dlg.querySelector('.am-person-dialog__avatar');
var label=dlg.querySelector('.am-person-dialog__label');
var name=dlg.querySelector('.am-person-dialog__name');
var role=dlg.querySelector('.am-person-dialog__role');
var desc=dlg.querySelector('.am-person-dialog__desc');
var link=dlg.querySelector('.am-person-dialog__link');
if(data.avatar){
avatar.src=data.avatar;
avatar.style.display='';
}else{
avatar.style.display='none';
}
label.textContent=data.label||'';
name.textContent=data.name||'';
role.textContent=data.role||'';
if(data.description){
desc.textContent=data.description;
desc.style.display='';
}else{
desc.style.display='none';
}
if(data.link){
link.href=data.link;
link.removeAttribute('hidden');
}else{
link.setAttribute('hidden', '');
}
if(typeof dlg.showModal==='function') dlg.showModal();
else dlg.setAttribute('open', '');
}
function closeDialog(dlg){
if(!dlg) return;
if(dlg.id==='am-spotify-dialog'&&window.matchMedia('(min-width: 1024px)').matches){
dlg.classList.add('am-spotify-dialog--closing');
setTimeout(function (){
dlg.classList.remove('am-spotify-dialog--closing');
if(typeof dlg.close==='function') dlg.close();
else dlg.removeAttribute('open');
}, 240);
return;
}
if(typeof dlg.close==='function') dlg.close();
else dlg.removeAttribute('open');
}
function spotifyEmbedUrl(url){
if(!url) return null;
var m=url.match(/(?:open\.spotify\.com|spotify\.com)\/(?:embed\/)?(episode|show|track|playlist|album)\/([a-zA-Z0-9]+)/);
if(m){
return 'https://open.spotify.com/embed/' + m[1] + '/' + m[2] + '?utm_source=acilci_mobile';
}
return null;
}
function openSpotifyPlayer(url, narrator){
var dlg=document.getElementById('am-spotify-dialog');
if(!dlg) return;
var iframe=dlg.querySelector('[data-am-spotify-frame]');
var openLink=dlg.querySelector('[data-am-spotify-open]');
var titleEl=dlg.querySelector('[data-am-spotify-title]');
var embed=spotifyEmbedUrl(url);
if(!embed){
window.open(url, '_blank', 'noopener');
return;
}
iframe.src=embed;
if(openLink) openLink.href=url;
if(titleEl) titleEl.textContent=narrator ? "Acilci'nin Sesi · " + narrator:"Acilci'nin Sesi";
if(typeof dlg.show==='function') dlg.show();
else dlg.setAttribute('open', '');
var stop=function (){
iframe.src='about:blank';
dlg.removeEventListener('close', stop);
};
dlg.addEventListener('close', stop);
}
window.amWireSpotifyBadges=wireSpotifyBadges;
function wireSpotifyBadges(scope){
scope.querySelectorAll('[data-am-spotify]:not([data-am-action="spotify-pin"])').forEach(function (el){
if(el.__amWired) return;
el.__amWired=true;
var go=function (e){
e.stopPropagation();
if(e.preventDefault) e.preventDefault();
var url=el.getAttribute('data-am-spotify');
openSpotifyPlayer(url, el.getAttribute('data-am-narrator')||'');
};
el.addEventListener('click', go);
el.addEventListener('keydown', function (e){
if(e.key==='Enter'||e.key===' ') go(e);
});
});
}
function wireSpotifyButton(scope){
scope.querySelectorAll('[data-am-action="spotify-play"]').forEach(function (btn){
if(btn.__amWired) return;
btn.__amWired=true;
btn.addEventListener('click', function (e){
e.preventDefault();
openSpotifyPlayer(
btn.getAttribute('data-am-spotify'),
btn.getAttribute('data-am-narrator')||''
);
});
});
}
function wireLoadMore(){
var btn=document.querySelector('[data-am-action="load-more"]');
if(!btn) return;
var feed=document.querySelector('.am-feed');
if(!feed) return;
btn.addEventListener('click', function (){
if(btn.disabled) return;
var nextPage=parseInt(btn.getAttribute('data-next-page')||'2', 10);
var maxPages=parseInt(btn.getAttribute('data-max-pages')||'1', 10);
if(nextPage > maxPages){
btn.remove();
return;
}
btn.disabled=true;
btn.classList.add('am-load-more--loading');
btn.textContent='Yükleniyor';
var base=(window.AcilciMobile&&window.AcilciMobile.restRoot)||'/wp-json/acilci/v1/';
var url=base + 'feed?page=' + nextPage + '&per_page=10';
fetch(url, { credentials: 'same-origin', headers: { Accept: 'application/json' }})
.then(function (r){
if(!r.ok) throw new Error('HTTP ' + r.status);
return r.json();
})
.then(function (data){
if(data&&data.html){
var wrap=document.createElement('div');
wrap.innerHTML=data.html;
wireSpotifyBadges(wrap);
Array.from(wrap.children).forEach(function (node){
feed.insertBefore(node, btn);
});
}
if(data&&data.has_more){
btn.setAttribute('data-next-page', String(nextPage + 1));
btn.disabled=false;
btn.classList.remove('am-load-more--loading');
btn.textContent='Daha fazla yükle';
}else{
btn.remove();
}})
.catch(function (){
btn.disabled=false;
btn.classList.remove('am-load-more--loading');
btn.textContent='Tekrar dene';
});
});
}
function renderSavedPage(){
var page=document.querySelector('[data-am-saved-page]');
if(!page) return;
var listEl=page.querySelector('[data-am-saved-list]');
var emptyEl=page.querySelector('[data-am-saved-empty]');
var countEl=page.querySelector('[data-am-saved-count]');
var saved=getSaved();
if(!saved.length){
if(countEl) countEl.textContent='Henüz kaydedilen yazı yok';
if(emptyEl) emptyEl.hidden=false;
if(listEl)  listEl.innerHTML='';
return;
}
if(emptyEl) emptyEl.hidden=true;
if(countEl){
countEl.textContent=saved.length + ' kayıtlı yazı';
}
var html=saved.map(function (p){
var img=p.image ? '<img src="' + p.image + '" alt="" loading="lazy">':'';
var thumb=p.image
? '<div class="am-card__thumb">' + img + '</div>'
: '<div class="am-card__thumb am-card__thumb--placeholder"></div>';
var date='';
if(p.date){
try {
var d=new Date(p.date);
date=d.toLocaleDateString('tr-TR', { day:'numeric', month:'long', year:'numeric' });
} catch (e){}}
return '<a class="am-card" href="' + (p.url||'#') + '">' +
thumb +
'<div class="am-card__body">' +
'<h3 class="am-card__title">' +
(p.title ? p.title.replace(/</g, '&lt;'):'(başlık yok)') +
'</h3>' +
'<div class="am-card__meta">' +
'<span class="am-card__meta-text">' + (date||'Kaydedildi') + '</span>' +
'<button type="button" class="am-saved-remove" data-am-saved-remove="' + p.id + '" aria-label="Kayıttan çıkar">' +
'<svg class="am-icon" width="16" height="16"><use href="/wp-content/plugins/acilci-mobile/assets/icons.svg#ph-x"/></svg>' +
'</button>' +
'</div>' +
'</div>' +
'</a>';
}).join('');
listEl.innerHTML=html;
listEl.querySelectorAll('[data-am-saved-remove]').forEach(function (btn){
btn.addEventListener('click', function (e){
e.preventDefault();
e.stopPropagation();
var id=btn.getAttribute('data-am-saved-remove');
var list=getSaved().filter(function (p){ return String(p.id)!==String(id); });
setSaved(list);
toast('Kayıttan çıkarıldı');
renderSavedPage();
});
});
}
function currentTheme(){
var stored;
try { stored=localStorage.getItem('am-theme'); } catch (e){}
if(stored==='light'||stored==='dark') return stored;
return (window.matchMedia&&window.matchMedia('(prefers-color-scheme: dark)').matches) ? 'dark':'light';
}
function applyTheme(theme){
var root=document.documentElement;
if(theme==='dark'||theme==='light') root.setAttribute('data-am-theme', theme);
else root.removeAttribute('data-am-theme');
}
function toggleTheme(){
var next=currentTheme()==='dark' ? 'light':'dark';
try { localStorage.setItem('am-theme', next); } catch (e){}
applyTheme(next);
}
function wireThemeToggle(){
var btn=document.querySelector('[data-am-action="theme-toggle"]');
if(!btn) return;
applyTheme(currentTheme());
btn.addEventListener('click', toggleTheme);
}
function init(){
wireThemeToggle();
renderSavedPage();
document.querySelectorAll('[data-am-action="save"]').forEach(function (btn){
refreshSaveButton(btn);
btn.addEventListener('click', function (){
var post={
id:    btn.getAttribute('data-post-id'),
title: btn.getAttribute('data-title'),
image: btn.getAttribute('data-image'),
date:  btn.getAttribute('data-date'),
url:   location.href,
};
var added=toggleSaved(post);
refreshSaveButton(btn);
toast(added ? 'Kaydedildi':'Kaldırıldı');
});
});
document.querySelectorAll('[data-am-action="share"]').forEach(function (btn){
btn.addEventListener('click', function (){
share(
btn.getAttribute('data-title')||document.title,
btn.getAttribute('data-url')||location.href
);
});
});
document.querySelectorAll('[data-am-person]').forEach(function (btn){
btn.addEventListener('click', function (){
try {
var data=JSON.parse(btn.getAttribute('data-am-person'));
openPersonDialog(data);
} catch (e){}});
});
document.querySelectorAll('[data-am-action="menu"]').forEach(function (btn){
btn.addEventListener('click', function (){
var dlg=document.getElementById('am-menu-dialog');
if(!dlg) return;
if(typeof dlg.showModal==='function') dlg.showModal();
else dlg.setAttribute('open', '');
});
});
document.querySelectorAll('[data-am-action="login"]').forEach(function (btn){
btn.addEventListener('click', function (){
if(window.AcilciMobile&&window.AcilciMobile.userFeatures){
}else{
location.href='/wp-login.php?redirect_to=' + encodeURIComponent(location.href);
}});
});
wireSpotifyBadges(document);
wireSpotifyButton(document);
var pin=document.querySelector('[data-am-action="spotify-pin"]');
if(pin){
pin.addEventListener('click', function (e){
e.preventDefault();
var dlg=document.getElementById('am-spotify-dialog');
if(!dlg) return;
var isOpen=dlg.hasAttribute('open');
if(isOpen){
closeDialog(dlg);
}else{
openSpotifyPlayer(pin.getAttribute('data-am-spotify'), '');
}});
}
wireLoadMore();
document.querySelectorAll('[data-am-close]').forEach(function (btn){
btn.addEventListener('click', function (){
var dlg=btn.closest('dialog');
closeDialog(dlg);
});
});
document.querySelectorAll('dialog').forEach(function (dlg){
dlg.addEventListener('click', function (e){
if(e.target===dlg) closeDialog(dlg);
});
});
}
if(document.readyState==='loading'){
document.addEventListener('DOMContentLoaded', init);
}else{
init();
}})();