(function (){
'use strict';
var REST=(window.AcilciMobile&&window.AcilciMobile.restRoot)||'/wp-json/acilci/v1/';
var DEBOUNCE_MS=300;
function $(sel, scope){ return (scope||document).querySelector(sel); }
function $$(sel, scope){ return Array.prototype.slice.call((scope||document).querySelectorAll(sel)); }
function debounce(fn, ms){
var t;
return function (){
var ctx=this, args=arguments;
clearTimeout(t);
t=setTimeout(function (){ fn.apply(ctx, args); }, ms);
};}
function escapeHTML(s){
return String(s==null ? '':s)
.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;')
.replace(/"/g, '&quot;').replace(/'/g, '&#39;');
}
function turkishLower(s){
return String(s).toLocaleLowerCase('tr-TR');
}
var bar=$('[data-am-search-bar]');
if(!bar) return;
var state={
s:        bar.getAttribute('data-initial-s')||'',
category: parseInt(bar.getAttribute('data-initial-category')||'0', 10),
tag:      parseInt(bar.getAttribute('data-initial-tag')||'0', 10),
author:   parseInt(bar.getAttribute('data-initial-author')||'0', 10),
page:     1,
maxPages: 1,
hasMore:  false,
loading:  false,
categoryLabel: '',
tagLabel:      '',
authorLabel:   '',
};
$$('[data-am-chip]', bar).forEach(function (chip){
var t=chip.getAttribute('data-am-chip');
var label=chip.querySelector('.am-chip__label');
if(label) state[t + 'Label']=label.textContent.trim();
});
var input=$('[data-am-search-input]');
var clearBtn=$('[data-am-search-clear]');
var filterBtn=$('[data-am-action="open-filter"]');
var filterBadge=$('[data-am-filter-count]');
var chipsWrap=$('[data-am-active-chips]');
var resultsWrap=$('[data-am-search-results]');
var countEl=$('[data-am-count]');
var loadMoreBtn=$('[data-am-action="search-load-more"]');
var skeletonWrap=$('[data-am-skeleton]');
var filterDialog=$('#am-filter-dialog');
function buildPathFromState(){
var qs=[];
if(state.s)        qs.push('s=' + encodeURIComponent(state.s));
if(state.category) qs.push('cat=' + state.category);
if(state.tag)      qs.push('tag_id=' + state.tag);
if(state.author)   qs.push('author_id=' + state.author);
var path='/';
return path + (qs.length ? '?' + qs.join('&'):'');
}
function syncURL(){
try {
history.replaceState({ acilci_search: state }, '', buildPathFromState());
} catch (e){}}
var SPRITE='/wp-content/plugins/acilci-mobile/assets/icons.svg';
function svgIcon(name, size, cls){
return '<svg class="am-icon ' + (cls||'') + '" width="' + size + '" height="' + size +
'"><use href="' + SPRITE + '#ph-' + name + '"/></svg>';
}
function chipHTML(type, id, label, iconName){
return '<span class="am-chip" data-am-chip="' + type + '" data-id="' + id + '">' +
svgIcon(iconName, 14, 'am-icon--muted') +
'<span class="am-chip__label">' + escapeHTML(label) + '</span>' +
'<button type="button" class="am-chip__remove" data-am-chip-remove="' + type + '" aria-label="Kaldır">' +
svgIcon('x', 14) +
'</button>' +
'</span>';
}
function renderChips(){
if(!chipsWrap) return;
var html='';
if(state.category) html +=chipHTML('category', state.category, state.categoryLabel||('Kategori #' + state.category), 'folder');
if(state.tag)      html +=chipHTML('tag',      state.tag,      state.tagLabel||('Etiket #'    + state.tag),      'tag');
if(state.author)   html +=chipHTML('author',   state.author,   state.authorLabel||('Yazar #'     + state.author),   'user');
chipsWrap.innerHTML=html;
wireChipRemoveButtons();
var count=(state.category ? 1:0) + (state.tag ? 1:0) + (state.author ? 1:0);
if(filterBadge){
if(count > 0){
filterBadge.textContent=String(count);
filterBadge.hidden=false;
}else{
filterBadge.hidden=true;
}}
}
function wireChipRemoveButtons(){
$$('[data-am-chip-remove]').forEach(function (btn){
btn.addEventListener('click', function (e){
e.stopPropagation();
var t=btn.getAttribute('data-am-chip-remove');
state[t]=0;
state[t + 'Label']='';
renderChips();
runSearch(true);
});
});
}
function setLoading(loading){
state.loading=loading;
if(skeletonWrap) skeletonWrap.hidden = !loading;
if(loadMoreBtn){
if(loading){
loadMoreBtn.disabled=true;
loadMoreBtn.classList.add('am-load-more--loading');
}else{
loadMoreBtn.disabled=false;
loadMoreBtn.classList.remove('am-load-more--loading');
}}
}
function runSearch(reset){
if(reset) state.page=1;
setLoading(true);
var qs=new URLSearchParams();
qs.set('s', state.s);
if(state.category) qs.set('category', state.category);
if(state.tag)      qs.set('tag', state.tag);
if(state.author)   qs.set('author_id', state.author);
qs.set('page', state.page);
qs.set('per_page', '10');
return fetch(REST + 'search?' + qs.toString(), {
credentials: 'same-origin',
headers: { Accept: 'application/json' }})
.then(function (r){ return r.ok ? r.json():Promise.reject(r); })
.then(function (data){
state.maxPages=data.max_pages||1;
state.hasMore = !!data.has_more;
if(countEl){
countEl.textContent=data.found_posts
? data.found_posts + ' yazı bulundu'
: 'Sonuç bulunamadı';
}
if(state.page===1){
if(data.html){
resultsWrap.innerHTML=data.html;
}else{
resultsWrap.innerHTML='<div class="am-search__empty">' +
'<p>Aradığınız kriterlerde yazı bulunamadı.</p>' +
'<p>Filtreleri kaldırıp daha geniş bir aramayla deneyebilirsiniz.</p></div>';
}}else if(data.html){
var wrap=document.createElement('div');
wrap.innerHTML=data.html;
Array.prototype.slice.call(wrap.children).forEach(function (n){
resultsWrap.appendChild(n);
});
}
if(typeof window.amWireSpotifyBadges==='function'){
window.amWireSpotifyBadges(resultsWrap);
}
if(loadMoreBtn) loadMoreBtn.hidden = !state.hasMore;
syncURL();
})
.catch(function (err){
if(countEl){
var msg=err&&err.status ? ('Hata ' + err.status):'Ağ hatası';
countEl.textContent=msg + ' — tekrar deneyin.';
}
if(window.console) console.error('[acilci search]', err);
})
.then(function (){ setLoading(false); });
}
var debouncedSearch=debounce(function (){ runSearch(true); }, DEBOUNCE_MS);
if(input){
if(clearBtn) clearBtn.hidden = !input.value;
input.addEventListener('input', function (){
state.s=input.value.trim();
if(clearBtn) clearBtn.hidden = !input.value;
debouncedSearch();
});
input.addEventListener('keydown', function (e){
if(e.key==='Enter'){ e.preventDefault(); runSearch(true); }
if(e.key==='Escape'){ input.blur(); }});
}
if(clearBtn){
clearBtn.addEventListener('click', function (){
input.value='';
state.s='';
clearBtn.hidden=true;
input.focus();
runSearch(true);
});
}
if(loadMoreBtn){
loadMoreBtn.addEventListener('click', function (){
if(state.loading||!state.hasMore) return;
state.page +=1;
runSearch(false);
});
if(typeof IntersectionObserver==='function'){
var io=new IntersectionObserver(function (entries){
entries.forEach(function (en){
if(en.isIntersecting&&state.hasMore&&!state.loading){
state.page +=1;
runSearch(false);
}});
}, { rootMargin: '300px' });
io.observe(loadMoreBtn);
}}
var filterData={ branslar: null, konular: null, authors: null, tags: null };
var NAV_SLUGS={
branslar: 'hva-branslar-1,hva-branslar-2,hva-branslar-3',
konular:  'hva-konular-1,hva-konular-2,hva-konular-3,hva-konular-4',
};
function openFilter(){
if(!filterDialog) return;
if(typeof filterDialog.showModal==='function') filterDialog.showModal();
else filterDialog.setAttribute('open', '');
switchTab($('.am-filter-tab--active', filterDialog).getAttribute('data-am-tab'));
}
function closeFilter(){
if(!filterDialog) return;
if(typeof filterDialog.close==='function') filterDialog.close();
else filterDialog.removeAttribute('open');
}
if(filterBtn) filterBtn.addEventListener('click', openFilter);
function switchTab(name){
$$('[data-am-tab]', filterDialog).forEach(function (t){
t.classList.toggle('am-filter-tab--active', t.getAttribute('data-am-tab')===name);
});
$$('[data-am-panel]', filterDialog).forEach(function (p){
var match=p.getAttribute('data-am-panel')===name;
p.classList.toggle('am-filter-panel--active', match);
p.hidden = !match;
});
loadPanelData(name);
}
$$('[data-am-tab]', filterDialog).forEach(function (t){
t.addEventListener('click', function (){ switchTab(t.getAttribute('data-am-tab')); });
});
function loadPanelData(name){
if(name==='branslar'||name==='konular'){
if(filterData[name]){ renderNavList(name, ''); return; }
fetch(REST + 'nav?slugs=' + encodeURIComponent(NAV_SLUGS[name]), { credentials: 'same-origin' })
.then(function (r){ return r.json(); })
.then(function (items){
filterData[name]=(items||[])
.filter(function (it){ return it.object==='category'&&it.object_id; })
.map(function (it){ return { id: it.object_id, name: it.title, url: it.url };});
renderNavList(name, '');
})
.catch(function (){ renderEmpty(name, 'Liste yüklenemedi.'); });
}else if(name==='author'){
if(filterData.authors){ renderAuthorList(''); return; }
fetch(REST + 'authors', { credentials: 'same-origin' })
.then(function (r){ return r.json(); })
.then(function (list){ filterData.authors=list; renderAuthorList(''); })
.catch(function (){ renderEmpty('author', 'Yazar yüklenemedi.'); });
}else if(name==='tag'){
if(filterData.tags){ renderTagList(''); return; }
fetch(REST + '../wp/v2/tags?per_page=100&orderby=count&order=desc', { credentials: 'same-origin' })
.then(function (r){ return r.json(); })
.then(function (list){
filterData.tags=(list||[]).map(function (t){
return { id: t.id, name: t.name, count: t.count };});
renderTagList('');
})
.catch(function (){ renderEmpty('tag', 'Etiket yüklenemedi.'); });
}}
function renderEmpty(type, msg){
var list=$('[data-am-panel-list="' + type + '"]', filterDialog);
if(list) list.innerHTML='<div class="am-filter-empty">' + escapeHTML(msg) + '</div>';
}
function renderNavList(panelName, filter){
var list=$('[data-am-panel-list="' + panelName + '"]', filterDialog);
if(!list||!filterData[panelName]) return;
var q=turkishLower(filter||'');
var items=filterData[panelName];
if(q){
items=items.filter(function (it){ return turkishLower(it.name).indexOf(q)!==-1; });
}
var html=items.map(function (it){
var active=state.category===it.id ? ' am-filter-item--active':'';
return '<button type="button" class="am-filter-item' + active + '" data-am-pick="category" data-id="' + it.id + '" data-label="' + escapeHTML(it.name) + '">' +
'<span class="am-filter-item__label">' + escapeHTML(it.name) + '</span>' +
'</button>';
}).join('');
list.innerHTML=html||'<div class="am-filter-empty">Sonuç yok.</div>';
wirePickButtons();
}
function renderAuthorList(filter){
var list=$('[data-am-panel-list="author"]', filterDialog);
if(!list||!filterData.authors) return;
var q=turkishLower(filter||'');
var items=filterData.authors;
if(q){
items=items.filter(function (a){ return turkishLower(a.display_name).indexOf(q)!==-1; });
}
items=items.slice(0, 100);
var html=items.map(function (a){
var active=state.author===a.ID ? ' am-filter-item--active':'';
return '<button type="button" class="am-filter-item am-filter-item--with-avatar' + active + '" data-am-pick="author" data-id="' + a.ID + '" data-label="' + escapeHTML(a.display_name) + '">' +
'<img class="am-filter-item__avatar" src="' + (a.avatar||'') + '" alt="" loading="lazy">' +
'<span class="am-filter-item__label">' + escapeHTML(a.display_name) + '</span>' +
'<span class="am-filter-item__count">' + a.post_count + '</span>' +
'</button>';
}).join('');
list.innerHTML=html||'<div class="am-filter-empty">Sonuç yok.</div>';
wirePickButtons();
}
function renderTagList(filter){
var list=$('[data-am-panel-list="tag"]', filterDialog);
if(!list||!filterData.tags) return;
var q=turkishLower(filter||'');
var items=filterData.tags;
if(q){
items=items.filter(function (t){ return turkishLower(t.name).indexOf(q)!==-1; });
}
items=items.slice(0, 200);
var html=items.map(function (t){
var active=state.tag===t.id ? ' am-filter-item--active':'';
return '<button type="button" class="am-filter-item' + active + '" data-am-pick="tag" data-id="' + t.id + '" data-label="' + escapeHTML(t.name) + '">' +
'<span class="am-filter-item__label">#' + escapeHTML(t.name) + '</span>' +
'<span class="am-filter-item__count">' + (t.count||'') + '</span>' +
'</button>';
}).join('');
list.innerHTML=html||'<div class="am-filter-empty">Sonuç yok.</div>';
wirePickButtons();
}
function wirePickButtons(){
$$('[data-am-pick]', filterDialog).forEach(function (btn){
btn.addEventListener('click', function (){
var t=btn.getAttribute('data-am-pick');
var id=parseInt(btn.getAttribute('data-id'), 10);
var label=btn.getAttribute('data-label');
if(state[t]===id){
state[t]=0; state[t + 'Label']='';
}else{
state[t]=id; state[t + 'Label']=label;
}
renderChips();
runSearch(true);
refreshAllPanels();
});
});
}
function refreshAllPanels(){
if(filterData.branslar) renderNavList('branslar', $('[data-am-panel-search="branslar"]', filterDialog).value);
if(filterData.konular)  renderNavList('konular',  $('[data-am-panel-search="konular"]',  filterDialog).value);
if(filterData.authors)  renderAuthorList($('[data-am-panel-search="author"]', filterDialog).value);
if(filterData.tags)     renderTagList($('[data-am-panel-search="tag"]', filterDialog).value);
}
$$('[data-am-panel-search]', filterDialog).forEach(function (inp){
var type=inp.getAttribute('data-am-panel-search');
inp.addEventListener('input', debounce(function (){
if(type==='branslar'||type==='konular') renderNavList(type, inp.value);
else if(type==='author') renderAuthorList(inp.value);
else if(type==='tag')    renderTagList(inp.value);
}, 150));
});
var clearAllBtn=$('[data-am-filter-clear]', filterDialog);
if(clearAllBtn){
clearAllBtn.addEventListener('click', function (){
state.category=state.tag=state.author=0;
state.categoryLabel=state.tagLabel=state.authorLabel='';
renderChips();
refreshAllPanels();
runSearch(true);
});
}
$$('[data-am-close]', filterDialog).forEach(function (b){
b.addEventListener('click', closeFilter);
});
if(filterDialog){
filterDialog.addEventListener('click', function (e){
if(e.target===filterDialog) closeFilter();
});
}
wireChipRemoveButtons();
})();