console.log('hallo');
(function ($, window){
window.pixit=window.pixit||{};
pixit.utils=pixit.utils||{};
pixit.prefersReducedMotion=window.matchMedia('(prefers-reduced-motion: reduce)').matches;
pixit.prefersDarkMode=window.matchMedia('(prefers-color-scheme: dark)').matches;
pixit.settings={
}
function init(){
if(user_caps.exposition!=='1'){
init_dark_mode();
init_contrast_mode();
init_font_size();
init_browser_color_scheme_toggle();
}
init_menu();
init_lightbox_if_present();
init_smooth_scroll();
init_sticky_header_observer();
init_dialogs()
}
function init_menu(){
const menu=document.querySelector('#main-menu');
if(menu){
menu.classList.add('js-enabled');
}}
function init_lightbox_if_present(){
if(typeof lightbox!=='undefined'){
init_lightbox_settings();
}}
function init_smooth_scroll(){
const links=document.querySelectorAll('.site-header a[href*="#"], a.smooth-scroll');
for(const el of links){
el.addEventListener('click', handle_scroll_link_click);
}}
function handle_scroll_link_click(e){
e.preventDefault();
const hash=e.currentTarget.hash
const target=document.querySelector(hash);
if(target){
smooth_scroll(target);
}}
function smooth_scroll(target){
const behavior=pixit.prefersReducedMotion ? 'auto':'smooth';
if(main_menu_is_open()){
close_main_menu()
}
if('onscrollend' in window){
window.addEventListener('scrollend',
()=> update_history_state(target),
{
once: true,
passive: true,
}
);
}else{
setTimeout(()=> update_history_state(target), 500);
}
window.scrollTo({
top: target.offsetTop,
behavior,
}
);
}
function update_history_state(target){
if(target.id){
window.history.pushState(null, null, `#${target.id}`);
}}
function init_sticky_header_observer(){
const header=document.querySelector('header');
const sentinel=document.querySelector('.sentinel');
if(! header||! sentinel||!('IntersectionObserver' in window) ){
return;
}
const observer=new IntersectionObserver(
([entry])=>
{
header.classList.toggle('sticky', ! entry.isIntersecting);
}
);
observer.observe(sentinel);
}
function init_contrast_mode(){
const storage=localStorage.getItem("pixit-contrast")==="high"
if(storage){
enable_contrast_mode()
}
const btn=document.querySelector('footer .accessibility-options button[data-action="toggle-contrast-mode"]')
if(! btn){
return
}
btn.addEventListener('click', toggle_contrast_mode)
}
function toggle_contrast_mode(){
if(document.documentElement.classList.contains('contrast-mode') ){
disable_contrast_mode()
}else{
enable_contrast_mode()
}}
function enable_contrast_mode(){
if(window.acf){
return
}
disable_dark_mode()
reset_dark_mode()
localStorage.setItem("pixit-contrast", "high")
document.documentElement.classList.add('contrast-mode')
const button=document.querySelector('.accessibility-options button[data-action="toggle-contrast-mode"]')
button.setAttribute('aria-pressed', 'true')
button.querySelector('.button-label').innerHTML='Kontrast verringern'
}
function disable_contrast_mode(){
localStorage.removeItem("pixit-contrast")
document.documentElement.classList.remove('contrast-mode')
const button=document.querySelector('.accessibility-options button[data-action="toggle-contrast-mode"]')
button.setAttribute('aria-pressed', 'false')
button.querySelector('.button-label').innerHTML='Kontrast erhöhen'
}
function init_dark_mode(){
const storage=localStorage.getItem("pixit-theme")==="dark"
if(localStorage.getItem("pixit-theme") ){
if(storage){
enable_dark_mode()
}}else if(pixit.prefersDarkMode){
enable_dark_mode()
}
const btn=document.querySelector('footer .accessibility-options button[data-action="toggle-dark-mode"]')
if(! btn){
return
}
btn.addEventListener('click', toggle_dark_mode)
}
function toggle_dark_mode(){
if(document.documentElement.classList.contains('dark-mode') ){
disable_dark_mode()
reset_dark_mode()
}else{
enable_dark_mode()
save_dark_mode()
}}
function enable_dark_mode(){
if(window.acf){
return
}
disable_contrast_mode()
const root=document.documentElement
root.classList.add('dark-mode')
root.classList.remove('light-mode')
const button=document.querySelector('footer .accessibility-options div.dark-mode button')
button.setAttribute('aria-pressed', 'true')
button.querySelector('.button-label').innerHTML='helle Darstellung'
}
function disable_dark_mode(){
const root=document.documentElement
root.classList.add('light-mode')
root.classList.remove('dark-mode')
const button=document.querySelector('footer .accessibility-options div.dark-mode button')
button.setAttribute('aria-pressed', 'false')
button.querySelector('.button-label').innerHTML='dunkle Darstellung'
}
function save_dark_mode(){
localStorage.setItem("pixit-theme", "dark")
}
function reset_dark_mode(){
localStorage.setItem("pixit-theme", "light")
}
function toggle_color_scheme(){
if(document.documentElement.classList.contains('dark-mode') ){
disable_dark_mode()
}else{
enable_dark_mode()
}}
function init_font_size(){
const storage=localStorage.getItem("pixit-font")==="increased"
if(storage){
increase_font_size()
}
const btn=document.querySelector('footer .accessibility-options button[data-action="toggle-font-size"]')
if(! btn){
return
}
btn.addEventListener('click', toggle_font_size)
}
function toggle_font_size(){
if(document.documentElement.classList.contains('font-size') ){
decrease_font_size()
}else{
increase_font_size()
}}
function increase_font_size(){
document.documentElement.classList.add('font-size')
localStorage.setItem("pixit-font", "increased")
const button=document.querySelector('.accessibility-options button[data-action="toggle-font-size"]')
button.setAttribute('aria-pressed', 'true')
button.querySelector('.button-label').innerHTML='Schrift verkleinern'
}
function decrease_font_size(){
document.documentElement.classList.remove('font-size')
localStorage.removeItem("pixit-font")
const button=document.querySelector('.accessibility-options button[data-action="toggle-font-size"]')
button.setAttribute('aria-pressed', 'false')
button.querySelector('.button-label').innerHTML='Schrift vergrößern'
}
function init_browser_color_scheme_toggle(){
window.matchMedia("(prefers-color-scheme: dark)").addEventListener("change", toggle_color_scheme)
}
function init_dialogs(){
const dialogs=document.querySelectorAll('dialog')
for(const dialog of dialogs){
dialog.addEventListener('click',(event)=> close_dialog(event.target) )
}
const links=document.querySelectorAll('a[aria-controls][aria-haspopup="true"]')
for(const link of links){
link.addEventListener('click', open_dialog)
}}
function open_dialog(event){
event.preventDefault()
const target=document.querySelector(event.currentTarget.getAttribute('aria-controls') )
if(! target){
return
}
target.showModal();
}
function close_dialog(target){
if(target.nodeName==="DIALOG"){
target.close()
}}
function main_menu_is_open(){
return Boolean(document.querySelector('#main-menu.is-open'))
}
function close_main_menu(){
const menuToggle=document.querySelector('.main-nav .menu-toggle');
const menu=document.querySelector('.main-nav #main-menu');
menuToggle.setAttribute('aria-label', 'Menü öffnen')
menuToggle.setAttribute('aria-expanded', 'false');
menu.classList.remove('is-open');
}
$(document).ready(init);
})(jQuery, window);
(()=> {
const nav=document.querySelector('.main-nav');
if(! nav){
return;
}
const menuToggle=nav.querySelector('.menu-toggle');
const menu=nav.querySelector('#main-menu');
if(menuToggle&&menu){
menuToggle.addEventListener('click',
()=>
{
const expanded=menuToggle.getAttribute('aria-expanded')==='false';
menuToggle.setAttribute('aria-label', expanded ? 'Menü schließen':'Menü öffnen')
menuToggle.setAttribute('aria-expanded', String(expanded) );
menu.classList.toggle('is-open');
}
);
}
nav.addEventListener('click',
(e)=>
{
const btn=e.target.closest('.submenu-toggle');
if(! btn){
return;
}
const parentItem=btn.closest('.menu-item-has-children');
if(! parentItem){
return;
}
const expanded=btn.getAttribute('aria-expanded')==='true';
btn.setAttribute('aria-expanded', String(! expanded) );
parentItem.classList.toggle('is-open');
}
);
})();
function init_lightbox_settings(){
lightbox.option({
'resizeDuration': 200,
'wrapAround': true,
'albumLabel': 'Bild %1 von %2',
}
)
};