(function (){
'use strict';
var settings=window.xnrsThemeToggle||{};
var root=document.documentElement;
function validTheme(value){
return value==='dark'||value==='light' ? value:'';
}
function systemTheme(){
return window.matchMedia&&window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark':'light';
}
function currentTheme(){
var theme=validTheme(root.getAttribute('data-xnhs-theme')||'');
var stored='';
if(theme) return theme;
try {
stored=validTheme(localStorage.getItem('xnhs2Theme')||localStorage.getItem('xnAccessTheme')||'');
} catch (error){}
if(stored) return stored;
return settings.defaultTheme==='dark'||settings.defaultTheme==='light' ? settings.defaultTheme:systemTheme();
}
function updateControls(theme){
var targetLabel=theme==='dark' ? (settings.lightLabel||'昼'):(settings.darkLabel||'夜');
document.querySelectorAll('[data-xnrs-theme-text],[data-xnhs-theme-text]').forEach(function (text){
text.textContent=targetLabel;
});
document.querySelectorAll('[data-xnrs-theme-icon]').forEach(function (icon){
icon.textContent=theme==='dark' ? '☀':'☾';
});
document.querySelectorAll('[data-xnrs-theme-toggle]').forEach(function (button){
button.setAttribute('aria-label', targetLabel);
button.setAttribute('title', targetLabel);
button.setAttribute('aria-pressed', theme==='dark' ? 'true':'false');
});
}
function applyTheme(theme, remember){
theme=validTheme(theme)||'light';
root.setAttribute('data-xnhs-theme', theme);
if(remember){
try {
localStorage.setItem('xnhs2Theme', theme);
localStorage.setItem('xnAccessTheme', theme);
} catch (error){}}
updateControls(theme);
try {
window.dispatchEvent(new CustomEvent('xnhs2-theme-change', { detail: theme }));
} catch (error){}}
function init(){
applyTheme(currentTheme(), false);
try {
new MutationObserver(function (){
updateControls(currentTheme());
}).observe(root, { attributes: true, attributeFilter: ['data-xnhs-theme'] });
} catch (error){}
warmNavigation();
initMobileActionBars();
initMobileHeaderThemeToggle();
}
var mobileHeaderThemePlacementQueued=false;
var mobileHeaderThemeObserver=null;
function mobileViewport(){
return window.matchMedia ? window.matchMedia('(max-width: 989px)').matches:window.innerWidth <=989;
}
function mobileHeaderThemeButtons(){
return Array.prototype.slice.call(document.querySelectorAll('.xnrs-theme-toggle.xnrs-mobile-header-menu,' +
'.xnhs-theme-toggle.xnhs-mobile-header-menu,' +
'[data-xnrs-theme-toggle][data-xnrs-mobile-placement="header-menu"],' +
'[data-xnhs-theme-toggle][data-xnrs-mobile-placement="header-menu"]'
));
}
function visibleNode(node){
if(!node||!node.getBoundingClientRect) return false;
var style=window.getComputedStyle ? window.getComputedStyle(node):null;
if(style&&(style.display==='none'||style.visibility==='hidden')) return false;
var rect=node.getBoundingClientRect();
return rect.width > 0&&rect.height > 0;
}
function mobileBurgerItem(){
var selectors=[
'#header_main #avia-menu .av-burger-menu-main',
'#header_main .av-main-nav .av-burger-menu-main',
'#header_main .av-burger-menu-main',
'#header .av-main-nav .av-burger-menu-main',
'#header .av-burger-menu-main',
'.av_header_transparency .av-burger-menu-main',
'.av_header_scrolldown .av-burger-menu-main',
'.header-scrolled .av-burger-menu-main',
'#avia-menu .av-burger-menu-main',
'.main_menu .av-burger-menu-main',
'.av-main-nav-wrap .av-burger-menu-main',
'.av-main-nav .av-burger-menu-main',
'.av-burger-menu-main',
'#header_main .av-hamburger',
'#header .av-hamburger',
'.main_menu .av-hamburger',
'.elementor-menu-toggle',
'.wp-block-navigation__responsive-container-open',
'.mobile-menu-toggle',
'.menu-toggle',
'.hamburger'
];
var fallback=null;
for (var i=0; i < selectors.length; i +=1){
var nodes=document.querySelectorAll(selectors[i]);
for (var j=0; j < nodes.length; j +=1){
var node=nodes[j];
var item=node.closest&&node.closest('li') ? node.closest('li'):node;
if(!fallback) fallback=item;
if(visibleNode(item)||visibleNode(node)) return item;
}}
return fallback;
}
function rememberThemeButtonHome(button){
if(button.__xnrsThemeHomePlaceholder) return;
var placeholder=document.createComment('xnrs-theme-toggle-home');
if(button.parentNode) button.parentNode.insertBefore(placeholder, button);
button.__xnrsThemeHomePlaceholder=placeholder;
}
function cleanupThemeHeaderSlot(button){
var slot=button.__xnrsThemeHeaderSlot;
if(!slot) return;
var host=slot.__xnrsThemeBurgerHost||slot.parentNode;
if(slot.parentNode) slot.parentNode.removeChild(slot);
if(host&&host.classList){
host.classList.remove('xnrs-theme-burger-host');
host.removeAttribute('data-xnrs-theme-burger-host');
}
button.__xnrsThemeHeaderSlot=null;
}
function restoreThemeButton(button){
var placeholder=button.__xnrsThemeHomePlaceholder;
if(placeholder&&placeholder.parentNode){
placeholder.parentNode.insertBefore(button, placeholder.nextSibling);
}
cleanupThemeHeaderSlot(button);
button.classList.remove('is-in-mobile-header');
}
function themeBurgerHost(target){
if(!target) return null;
if(target.matches&&target.matches('li.av-burger-menu-main, li.menu-item-avia-special')) return target;
if(target.closest){
var item=target.closest('li.av-burger-menu-main, li.menu-item-avia-special, li');
if(item) return item;
}
return target.parentNode||null;
}
function makeThemeHeaderSlot(target){
var host=themeBurgerHost(target);
if(!host||!host.insertBefore) return null;
var slot=document.createElement('span');
slot.className='xnrs-mobile-header-theme-slot';
slot.setAttribute('data-xnrs-mobile-header-theme-slot', '1');
slot.__xnrsThemeBurgerHost=host;
host.classList.add('xnrs-theme-burger-host');
host.setAttribute('data-xnrs-theme-burger-host', '1');
host.insertBefore(slot, host.firstChild);
return slot;
}
function syncThemeHeaderSlot(slot, burgerItem){
if(!slot||!burgerItem||!burgerItem.getBoundingClientRect) return;
var rect=burgerItem.getBoundingClientRect();
if(rect.height > 0){
var height=Math.round(rect.height) + 'px';
if(slot.style.getPropertyValue('--xnrs-burger-height')!==height){
slot.style.setProperty('--xnrs-burger-height', height);
}}
}
function placeMobileHeaderThemeToggle(){
var buttons=mobileHeaderThemeButtons();
if(!buttons.length) return;
if(!mobileViewport()){
buttons.forEach(restoreThemeButton);
return;
}
var burgerItem=mobileBurgerItem();
buttons.forEach(function (button){
rememberThemeButtonHome(button);
if(!burgerItem){
cleanupThemeHeaderSlot(button);
button.classList.remove('is-in-mobile-header');
return;
}
var host=themeBurgerHost(burgerItem);
var slot=button.__xnrsThemeHeaderSlot;
if(!slot||!slot.parentNode||slot.__xnrsThemeBurgerHost!==host){
cleanupThemeHeaderSlot(button);
slot=makeThemeHeaderSlot(burgerItem);
button.__xnrsThemeHeaderSlot=slot;
}
if(!slot) return;
if(button.parentNode!==slot) slot.appendChild(button);
button.classList.add('is-in-mobile-header');
syncThemeHeaderSlot(slot, burgerItem);
});
}
function queueMobileHeaderThemePlacement(){
if(mobileHeaderThemePlacementQueued) return;
mobileHeaderThemePlacementQueued=true;
window.requestAnimationFrame(function (){
mobileHeaderThemePlacementQueued=false;
placeMobileHeaderThemeToggle();
});
}
function initMobileHeaderThemeToggle(){
queueMobileHeaderThemePlacement();
window.addEventListener('resize', queueMobileHeaderThemePlacement, { passive: true });
window.addEventListener('orientationchange', queueMobileHeaderThemePlacement, { passive: true });
window.addEventListener('load', queueMobileHeaderThemePlacement, { once: true });
window.setTimeout(queueMobileHeaderThemePlacement, 80);
window.setTimeout(queueMobileHeaderThemePlacement, 320);
window.setTimeout(queueMobileHeaderThemePlacement, 900);
try {
mobileHeaderThemeObserver=new MutationObserver(queueMobileHeaderThemePlacement);
mobileHeaderThemeObserver.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['class', 'style'] });
} catch (error){}}
var warmedUrls=Object.create(null);
function navigationUrl(link){
if(!link||!link.href||link.target==='_blank'||link.hasAttribute('download')) return '';
if(link.rel&&/(?:^|\s)nofollow(?:\s|$)/i.test(link.rel)) return '';
try {
var url=new URL(link.href, window.location.href);
if(url.origin!==window.location.origin||!/^https?:$/.test(url.protocol)) return '';
if(/^\/(?:wp-admin(?:\/|$)|wp-login\.php(?:\/|$))/i.test(url.pathname)) return '';
url.hash='';
if(url.href===window.location.href.split('#')[0]) return '';
return url.href;
} catch (error){
return '';
}}
function prefetchPage(link){
var url=navigationUrl(link);
if(!url||warmedUrls[url]) return;
warmedUrls[url]=true;
var hint=document.createElement('link');
hint.rel='prefetch';
hint.as='document';
hint.href=url;
document.head.appendChild(hint);
}
function warmNavigation(){
var connection=navigator.connection||navigator.mozConnection||navigator.webkitConnection;
if(connection&&(connection.saveData||/(?:^|-)2g$/.test(connection.effectiveType||''))) return;
document.addEventListener('pointerover', function (event){
var link=event.target.closest&&event.target.closest('a[href]');
if(link) prefetchPage(link);
}, { passive: true });
document.addEventListener('touchstart', function (event){
var link=event.target.closest&&event.target.closest('a[href]');
if(link) prefetchPage(link);
}, { passive: true });
var run=function (){
var links=document.querySelectorAll('#avia-menu a[href], .main_menu a[href], .xnrs-mobile-action-bar a[href]');
for (var i=0, warmed=0; i < links.length&&warmed < 8; i +=1){
var before=Object.keys(warmedUrls).length;
prefetchPage(links[i]);
if(Object.keys(warmedUrls).length > before) warmed +=1;
}};
if('requestIdleCallback' in window) window.requestIdleCallback(run, { timeout: 2500 });
else window.setTimeout(run, 1200);
}
function initMobileActionBars(){
var bars=document.querySelectorAll('[data-xnrs-mobile-bar]');
if(!bars.length) return;
bars.forEach(function (bar){
if(bar.getAttribute('data-xnrs-mobile-bar-ready')==='1') return;
bar.setAttribute('data-xnrs-mobile-bar-ready', '1');
var bubble=bar.querySelector('.xnrs-mobile-action-bar__bubble');
var items=Array.prototype.slice.call(bar.querySelectorAll('[data-xnrs-mobile-bar-item]'));
var activeItem=items[0]||null;
function moveBubble(item){
if(!bubble||!item) return;
activeItem=item;
items.forEach(function (entry){
entry.classList.toggle('is-active', entry===item);
});
var barRect=bar.getBoundingClientRect();
var itemRect=item.getBoundingClientRect();
var styles=window.getComputedStyle(bar);
var bubbleWidthRatio=Math.max(0.3, Math.min(1, (parseFloat(styles.getPropertyValue('--xnrs-mobile-bubble-width'))||86) / 100));
var bubbleHeightRatio=Math.max(0.3, Math.min(1, (parseFloat(styles.getPropertyValue('--xnrs-mobile-bubble-height'))||82) / 100));
var bubbleWidth=itemRect.width * bubbleWidthRatio;
var bubbleHeight=itemRect.height * bubbleHeightRatio;
var offsetX=(itemRect.width - bubbleWidth) / 2;
var offsetY=(itemRect.height - bubbleHeight) / 2;
bubble.style.width=bubbleWidth + 'px';
bubble.style.height=bubbleHeight + 'px';
bubble.style.transform='translate3d(' + ((itemRect.left - barRect.left) + offsetX) + 'px,' + ((itemRect.top - barRect.top) + offsetY) + 'px,0)';
bar.classList.add('is-ready');
}
if(bubble&&activeItem){
moveBubble(activeItem);
window.addEventListener('resize', function (){
window.requestAnimationFrame(function (){ moveBubble(activeItem); });
});
window.addEventListener('orientationchange', function (){
window.requestAnimationFrame(function (){ moveBubble(activeItem); });
});
}
items.forEach(function (item){
var activate=function (){ moveBubble(item); };
item.addEventListener('pointerdown', activate, { passive: true });
item.addEventListener('focus', activate);
item.addEventListener('mouseenter', activate);
item.addEventListener('click', activate);
});
});
}
document.addEventListener('click', function (event){
var button=event.target.closest&&event.target.closest('[data-xnrs-theme-toggle]');
if(!button) return;
event.preventDefault();
applyTheme(currentTheme()==='dark' ? 'light':'dark', true);
});
window.addEventListener('storage', function (event){
if(event.key!=='xnhs2Theme'&&event.key!=='xnAccessTheme') return;
applyTheme(validTheme(event.newValue||'')||currentTheme(), false);
});
if(document.readyState==='loading') document.addEventListener('DOMContentLoaded', init);
else init();
})();