{"version":3,"sources":["galerie.mjs"],"names":["setBild","setVorschauBildUrl","optimaleBildGroesse","setBildTexte","bestMediaType","maximaleKantenlaenge","Number","parseInt","document","scripts","filter","s","src","length","url","endsWith","dataset","galerieModalBauen","titel","modalDiv","querySelector","content","cloneNode","children","classList","add","bsTheme","counter","createElement","headline","innerText","prepend","remove","splide","append","track","list","mediaType","then","m","slideBauen","bild","bildGroesse","slide","img","width","getAttribute","height","bildunterschrift","urheber","bannerSlideBauen","initGrosseBilderGalerie","container","querySelectorAll","forEach","elem","addEventListener","evt","preventDefault","target","currentTarget","parent","parentElement","links","Array","from","vorschauBilder","map","l","index","findIndex","itm","galerieElem","closest","find","tagName","textContent","replace","trim","counterDiv","splideListe","body","appendChild","modal","window","bootstrap","Modal","focus","keyboard","bannerZone","bannerConfig","galerie","modalBodyRect","getBoundingClientRect","aktuelleBildGroesse","slideCounter","vorschauBild","options","splideOptions","top","start","splideInstanz","Splide","on","newIndex","oldIndex","slides","contains","adServerIsAsyncRevive","adServerId","reviveAsync","reviveIns","reviveZoneid","reviveId","id","Object","keys","detail","ins","getElementById","go","once","refresh","res","fetch","data","text","code","adServerUrl","bannerHtml","postscribe","laenge","nummer","slice","indexes","push","speed","idx","prev","next","ariaHidden","echteSlides","echteSlide","korrekterIndex","kunde","splideGalerieCallback","mount","Extensions","bilderAendern","neueBildGroesse","breite","hoehe","alleAendern","splideLazy","resizeTimeout","onResize","clearTimeout","setTimeout","removeEventListener","destroy","dispose","dispatchEvent","Event","show","hide","key","initModalGalerien","galerieGrid","jjkGalerieInitialized","getInstance","_config","initInlineGalerien","preloadGaleriePreviews","grid","style","backgroundImage","previewImg","preloadAnzahl","galeriePreload","alleBilderFuerPreload","preload","bilder","splice","Promise","allSettled","resolve","reject","Image","artikelHauptbild","complete"],"mappings":"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","file":"galerie.mjs","sourcesContent":["/* global Splide */\n\n/** @typedef {import('@splidejs/splide').Splide} Splide */\n/** @typedef {import('@splidejs/splide').Options} SplideOptions */\n\nimport { setBild, setVorschauBildUrl, optimaleBildGroesse, setBildTexte, bestMediaType } from './bildHelper.mjs?1793263251';\n\nconst maximaleKantenlaenge = Number.parseInt([...document.scripts].filter(s => s.src.length > 1 && import.meta.url.endsWith(s.src))[0].dataset.maximaleKantenlaenge ?? '4000', 10);\n\n/**\n * @param {string} titel\n * @returns {HTMLDivElement}\n */\nfunction galerieModalBauen(titel) {\n\t/** @type {HTMLDivElement} */\n\tconst modalDiv = document.querySelector('template[data-template-id=\"empty-bs-modal\"]').content.cloneNode(true).children[0];\n\tmodalDiv.classList.add('jjk-galerie');\n\tmodalDiv.dataset.bsTheme = 'dark';\n\tconst counter = document.createElement('div');\n\tcounter.classList.add('jjk-galerie-counter');\n\tconst headline = document.createElement('h5');\n\theadline.innerText = titel;\n\tmodalDiv.querySelector('.modal-header').prepend(counter, headline);\n\tmodalDiv.querySelector('.modal-dialog').classList.add('modal-fullscreen');\n\tmodalDiv.querySelector('.modal-footer').remove();\n\tconst splide = document.createElement('section');\n\tsplide.classList.add('splide');\n\tmodalDiv.querySelector('.modal-body').append(splide);\n\tconst track = document.createElement('div');\n\ttrack.classList.add('splide__track');\n\tsplide.append(track);\n\tconst list = document.createElement('ul');\n\tlist.classList.add('splide__list');\n\ttrack.append(list);\n\treturn modalDiv;\n}\n\nlet mediaType = 'orig';\nbestMediaType().then(m => {\n\tmediaType = m;\n});\n\n/**\n * @param {HTMLImageElement} bild\n * @param {{ breite: number, hoehe: number }} bildGroesse\n * @returns {HTMLLIElement}\n */\nfunction slideBauen(bild, bildGroesse) {\n\tconst slide = document.createElement('li');\n\tslide.classList.add('splide__slide');\n\tconst img = document.createElement('img');\n\timg.width = bild.getAttribute('width');\n\timg.height = bild.getAttribute('height');\n\tsetBild(bild.src, img, bildGroesse, true, true, { m: mediaType });\n\tsetVorschauBildUrl(bild.src, img);\n\tslide.append(img);\n\tsetBildTexte(bild.dataset.bildunterschrift, bild.dataset.urheber, slide);\n\treturn slide;\n}\n\n/**\n * @returns {HTMLLIElement}\n */\nfunction bannerSlideBauen() {\n\tconst slide = document.createElement('li');\n\tslide.classList.add('splide__slide', 'banner-slide');\n\treturn slide;\n}\n\n/**\n * @param {HTMLDivElement} container\n * @returns {void}\n */\nfunction initGrosseBilderGalerie(container) {\n\tcontainer.querySelectorAll('a').forEach(elem => {\n\t\telem.addEventListener('click', evt => {\n\t\t\tevt.preventDefault();\n\t\t\t/** @type {HTMLAnchorElement} */\n\t\t\tconst target = evt.currentTarget;\n\t\t\t/** @type {HTMLDivElement} */\n\t\t\tconst parent = target.parentElement;\n\t\t\t/** @type {HTMLAnchorElement[]} */\n\t\t\tconst links = Array.from(parent.children);\n\t\t\tconst vorschauBilder = links.map(l => l.querySelector('img'));\n\t\t\tconst index = links.findIndex(itm => itm === target);\n\t\t\tlet titel = document.querySelector('meta[name=\"title\"]').getAttribute('content');\n\t\t\tconst galerieElem = container.closest('.galerie');\n\t\t\tif (galerieElem) {\n\t\t\t\tconst headline = Array.from(galerieElem.parentElement.children).find(elem => elem.tagName === 'H1');\n\t\t\t\tif (headline) {\n\t\t\t\t\t// innerText liefert den Bereinigten Text, also so, wie er dargestellt wird\n\t\t\t\t\t// das hat zwar den Vorteil, dass das Whitespaces-Collapse und anders bereits durchgeführt wurde,\n\t\t\t\t\t// aber es wird auch bspw. das text-transform CSS angewnedet, was hier unerwünscht ist.\n\t\t\t\t\ttitel = headline.textContent.replace(/\\s+/gi, ' ').trim();\n\t\t\t\t}\n\t\t\t}\n\t\t\tconst modalDiv = galerieModalBauen(titel);\n\t\t\t/** @type {HTMLDivElement} */\n\t\t\tconst counterDiv = modalDiv.querySelector('.jjk-galerie-counter');\n\t\t\t/** @type {HTMLDivElement} */\n\t\t\tconst splide = modalDiv.querySelector('.splide');\n\t\t\t/** @type {HTMLUListElement} */\n\t\t\tconst splideListe = splide.querySelector('.splide__list');\n\t\t\tdocument.body.appendChild(modalDiv);\n\t\t\tconst modal = new window.bootstrap.Modal(modalDiv, { focus: true, keyboard: true });\n\t\t\t/** @type {string|null|undefined} */\n\t\t\tconst bannerZone = window.bannerConfig.galerie;\n\t\t\tmodalDiv.addEventListener('shown.bs.modal', () => {\n\t\t\t\tconst modalBodyRect = modalDiv.querySelector('.modal-body').getBoundingClientRect();\n\t\t\t\tconst bildGroesse = optimaleBildGroesse(modalBodyRect, maximaleKantenlaenge);\n\t\t\t\tlet aktuelleBildGroesse = bildGroesse;\n\t\t\t\tlet slideCounter = 0;\n\t\t\t\tfor (const vorschauBild of vorschauBilder) {\n\t\t\t\t\tslideCounter++;\n\t\t\t\t\tif (bannerZone && slideCounter % 5 === 0) {\n\t\t\t\t\t\tsplideListe.append(bannerSlideBauen());\n\t\t\t\t\t\tslideCounter++;\n\t\t\t\t\t}\n\t\t\t\t\tsplideListe.append(slideBauen(vorschauBild, bildGroesse));\n\t\t\t\t}\n\t\t\t\t/** @type {SplideOptions} */\n\t\t\t\tconst options = window.splideOptions['galerie'];\n\t\t\t\toptions.width = 'calc(100vw)';\n\t\t\t\toptions.height = `calc(100vh - ${modalBodyRect.top}px)`;\n\t\t\t\toptions.start = index;\n\t\t\t\t/** @type {Splide} */\n\t\t\t\tconst splideInstanz = new Splide(splide, options);\n\t\t\t\tsplideInstanz.on('move', async (newIndex, oldIndex) => {\n\t\t\t\t\tif (bannerZone) {\n\t\t\t\t\t\t/** @type {HTMLLIElement[]} */\n\t\t\t\t\t\tconst slides = Array.from(splideListe.querySelectorAll('.splide__slide:not(.splide__slide--clone)'));\n\t\t\t\t\t\tconst slide = slides[newIndex];\n\t\t\t\t\t\tif (slide.classList.contains('banner-slide')) {\n\t\t\t\t\t\t\tcounterDiv.innerText = 'Anzeige';\n\t\t\t\t\t\t\tif (!slide.classList.contains('banner-initialisiert')) {\n\t\t\t\t\t\t\t\tif (window.adServerIsAsyncRevive && 'reviveAsync' in window && window.adServerId in window.reviveAsync) {\n\t\t\t\t\t\t\t\t\tconst reviveIns = document.createElement('ins');\n\t\t\t\t\t\t\t\t\treviveIns.dataset.reviveZoneid = bannerZone;\n\t\t\t\t\t\t\t\t\treviveIns.dataset.reviveId = window.adServerId;\n\t\t\t\t\t\t\t\t\tslide.append(reviveIns);\n\t\t\t\t\t\t\t\t\tdocument.addEventListener(\n\t\t\t\t\t\t\t\t\t\t`revive-${window.adServerId}-receive`,\n\t\t\t\t\t\t\t\t\t\tevt => {\n\t\t\t\t\t\t\t\t\t\t\tfor (const id of Object.keys(evt.detail)) {\n\t\t\t\t\t\t\t\t\t\t\t\tconst { width, height } = evt.detail[id];\n\t\t\t\t\t\t\t\t\t\t\t\tif (width < 1 && height < 1) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tconst ins = document.getElementById(id);\n\t\t\t\t\t\t\t\t\t\t\t\t\tif (ins === reviveIns) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tslide.classList.add('banner-loeschen');\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tsplideInstanz.go(newIndex - oldIndex > 0 ? '>' : '<');\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t{ once: true }\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\twindow.reviveAsync[window.adServerId].refresh();\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tconst res = await fetch('/fileadmin/banner/banner.html');\n\t\t\t\t\t\t\t\t\tconst data = await res.text();\n\t\t\t\t\t\t\t\t\tlet code = data\n\t\t\t\t\t\t\t\t\t\t.replace(/###AD_SERVER###/g, window.adServerUrl)\n\t\t\t\t\t\t\t\t\t\t.replace(/###AD_SERVER_SITE_ID###/g, window.adServerId)\n\t\t\t\t\t\t\t\t\t\t.replace(/###ZONE_ID###/g, bannerZone);\n\t\t\t\t\t\t\t\t\tif ('bannerHtml' in window.bannerConfig && typeof window.bannerConfig.bannerHtml == 'function') {\n\t\t\t\t\t\t\t\t\t\tcode = await window.bannerConfig.bannerHtml(code);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\twindow.postscribe(slide, code); // durch das \"document.write\" in der Banner.html muss weiterhin postscribe verwendet werden. Sonst würde auch https://stackoverflow.com/a/47614491 funktionieren.\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tslide.classList.add('banner-initialisiert');\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconst laenge = slides.filter(elem => !elem.classList.contains('banner-slide')).length;\n\t\t\t\t\t\t\tconst nummer = slides.slice(0, newIndex + 1).filter(elem => !elem.classList.contains('banner-slide')).length;\n\t\t\t\t\t\t\tcounterDiv.innerText = `${nummer}/${laenge}`;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcounterDiv.innerText = `${newIndex + 1}/${splideInstanz.length}`;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tif (bannerZone) {\n\t\t\t\t\tsplideInstanz.on('moved', newIndex => {\n\t\t\t\t\t\tconst slides = Array.from(splideListe.querySelectorAll('.splide__slide:not(.splide__slide--clone)'));\n\t\t\t\t\t\tconst indexes = [];\n\t\t\t\t\t\tslides.forEach((elem, index) => {\n\t\t\t\t\t\t\tif (elem.classList.contains('banner-loeschen')) {\n\t\t\t\t\t\t\t\tindexes.push(index);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t\tif (indexes.length > 0) {\n\t\t\t\t\t\t\tconst speed = splideInstanz.options.speed;\n\t\t\t\t\t\t\tsplideInstanz.options.speed = 0;\n\t\t\t\t\t\t\tconst index = newIndex - indexes.filter(idx => idx < newIndex).length;\n\t\t\t\t\t\t\tsplideInstanz.remove(indexes).go(index);\n\t\t\t\t\t\t\tsplideInstanz.options.speed = speed;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tsplideInstanz.on('arrows:mounted', (prev, next) => {\n\t\t\t\t\tprev.querySelector('svg').ariaHidden = true;\n\t\t\t\t\tnext.querySelector('svg').ariaHidden = true;\n\t\t\t\t});\n\t\t\t\tsplideInstanz.on('mounted', () => {\n\t\t\t\t\tif (bannerZone) {\n\t\t\t\t\t\tconst slides = Array.from(splideListe.querySelectorAll('.splide__slide:not(.splide__slide--clone)'));\n\t\t\t\t\t\tconst echteSlides = Array.from(splideListe.querySelectorAll('.splide__slide:not(.splide__slide--clone):not(.banner-slide)'));\n\t\t\t\t\t\tconst echteSlide = echteSlides[splideInstanz.index];\n\t\t\t\t\t\tconst korrekterIndex = slides.findIndex(elem => elem === echteSlide);\n\t\t\t\t\t\tif (korrekterIndex === splideInstanz.index) {\n\t\t\t\t\t\t\tcounterDiv.innerText = `${korrekterIndex + 1}/${echteSlides.length}`;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconst speed = splideInstanz.options.speed;\n\t\t\t\t\t\t\tsplideInstanz.options.speed = 0;\n\t\t\t\t\t\t\tsplideInstanz.go(korrekterIndex);\n\t\t\t\t\t\t\tsplideInstanz.options.speed = speed;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcounterDiv.innerText = `${splideInstanz.index + 1}/${splideInstanz.length}`;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tif ('kunde' in window && 'splideGalerieCallback' in window.kunde && typeof window.kunde.splideGalerieCallback == 'function') {\n\t\t\t\t\twindow.kunde.splideGalerieCallback(splideInstanz);\n\t\t\t\t}\n\t\t\t\tsplideInstanz.mount(window.splide.Extensions);\n\t\t\t\tconst bilderAendern = () => {\n\t\t\t\t\tconst neueBildGroesse = optimaleBildGroesse(modalDiv.querySelector('.modal-body').getBoundingClientRect(), maximaleKantenlaenge);\n\t\t\t\t\tif (neueBildGroesse.breite === aktuelleBildGroesse.breite && neueBildGroesse.hoehe === aktuelleBildGroesse.hoehe) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tconst alleAendern = neueBildGroesse.breite > aktuelleBildGroesse.breite || neueBildGroesse.hoehe > aktuelleBildGroesse.hoehe;\n\t\t\t\t\tsplideListe.querySelectorAll('.splide__slide:not(.banner-slide)').forEach(elem =>\n\t\t\t\t\t\telem.querySelectorAll('img').forEach(bild => {\n\t\t\t\t\t\t\tconst src = bild.src;\n\t\t\t\t\t\t\tsetBild(src, bild, neueBildGroesse, alleAendern || !!elem.dataset.splideLazy, true, { m: mediaType });\n\t\t\t\t\t\t\t// Vorschau-URL (also src) kann beim aktuellen Wert bleiben, denn entweder ist es noch die Preview-URL oder ein gecachtes großes Bild (aber ggf. kleiner als das nun gewünschte), was so bleiben kann\n\t\t\t\t\t\t})\n\t\t\t\t\t);\n\t\t\t\t\tsplideInstanz.refresh();\n\t\t\t\t\taktuelleBildGroesse = neueBildGroesse;\n\t\t\t\t};\n\t\t\t\tlet resizeTimeout = false;\n\t\t\t\tconst onResize = () => {\n\t\t\t\t\twindow.clearTimeout(resizeTimeout);\n\t\t\t\t\tresizeTimeout = window.setTimeout(bilderAendern, 250);\n\t\t\t\t};\n\t\t\t\twindow.addEventListener('resize', onResize);\n\t\t\t\tmodalDiv.addEventListener('hide.bs.modal', () => {\n\t\t\t\t\twindow.removeEventListener('resize', onResize);\n\t\t\t\t\tsplideInstanz.destroy();\n\t\t\t\t});\n\t\t\t});\n\t\t\tmodalDiv.addEventListener('hidden.bs.modal', () => {\n\t\t\t\tmodal.dispose();\n\t\t\t\tmodalDiv.remove();\n\t\t\t\tcontainer.dispatchEvent(new Event('jjk:galerie:close'));\n\t\t\t});\n\t\t\tcontainer.dispatchEvent(new Event('jjk:galerie:open'));\n\t\t\tmodal.show();\n\t\t\tif (container.parentElement.classList.contains('modal-body')) {\n\t\t\t\tcontainer.closest('.galerie.modal').addEventListener('hide.bs.modal', () => {\n\t\t\t\t\tmodal.hide();\n\t\t\t\t});\n\t\t\t}\n\t\t\twindow.addEventListener('keydown', evt => {\n\t\t\t\tif (evt.key === 'Escape') {\n\t\t\t\t\tmodal.hide();\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t});\n}\n\n/**\n * @param {HTMLElement|Document} container\n * @returns {void}\n */\nfunction initModalGalerien(container) {\n\tcontainer.querySelectorAll('.galerie.modal').forEach(\n\t\t/** @param {HTMLElement} elem */\n\t\telem => {\n\t\t\telem.addEventListener(\n\t\t\t\t'shown.bs.modal',\n\t\t\t\t() => {\n\t\t\t\t\tconst galerieGrid = elem.querySelector('.jjk-galerie-grid');\n\t\t\t\t\tif (!galerieGrid.dataset.jjkGalerieInitialized) {\n\t\t\t\t\t\tinitGrosseBilderGalerie(galerieGrid);\n\t\t\t\t\t\tgalerieGrid.dataset.jjkGalerieInitialized = '1';\n\t\t\t\t\t\tgalerieGrid.addEventListener('jjk:galerie:open', () => {\n\t\t\t\t\t\t\twindow.bootstrap.Modal.getInstance(elem)._config.keyboard = false;\n\t\t\t\t\t\t});\n\t\t\t\t\t\tgalerieGrid.addEventListener('jjk:galerie:close', () => {\n\t\t\t\t\t\t\twindow.bootstrap.Modal.getInstance(elem)._config.keyboard = true;\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{ once: true }\n\t\t\t);\n\t\t}\n\t);\n}\n\n/**\n * @param {HTMLElement|Document} container\n * @returns {void}\n */\nfunction initInlineGalerien(container) {\n\tcontainer.querySelectorAll('.galerie:not(.modal)').forEach(elem => {\n\t\tinitGrosseBilderGalerie(elem.querySelector('.jjk-galerie-grid'));\n\t});\n}\n\nfunction preloadGaleriePreviews() {\n\tdocument.querySelectorAll('.jjk-galerie-grid').forEach(grid => {\n\t\tgrid.querySelectorAll('img').forEach(elem => {\n\t\t\telem.style.backgroundImage = `url('${elem.dataset.previewImg}')`;\n\t\t});\n\t});\n\n\tconst preloadAnzahl = 'kunde' in window && 'galeriePreload' in window.kunde ? window.kunde.galeriePreload : 0;\n\tif (preloadAnzahl > 0 || preloadAnzahl === -1) {\n\t\tconst alleBilderFuerPreload = [];\n\t\tdocument.querySelectorAll('.jjk-galerie-grid').forEach(grid => {\n\t\t\talleBilderFuerPreload.push(...Array.from(grid.querySelectorAll('img')).slice(0, preloadAnzahl));\n\t\t});\n\t\tconst preload = () => {\n\t\t\tconst bilder = alleBilderFuerPreload.splice(0, 5);\n\t\t\tif (bilder.length === 0) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tPromise.allSettled(\n\t\t\t\tbilder.map(\n\t\t\t\t\tbild =>\n\t\t\t\t\t\tnew Promise((resolve, reject) => {\n\t\t\t\t\t\t\tconst img = new Image();\n\t\t\t\t\t\t\timg.addEventListener('load', () => {\n\t\t\t\t\t\t\t\tresolve();\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\timg.addEventListener('error', () => {\n\t\t\t\t\t\t\t\treject();\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\timg.src = bild.dataset.previewImg;\n\t\t\t\t\t\t})\n\t\t\t\t)\n\t\t\t).then(() => {\n\t\t\t\tpreload();\n\t\t\t});\n\t\t};\n\n\t\t/** @type {HTMLImageElement} */\n\t\tconst artikelHauptbild = document.querySelector('.media-container .image.tab.active img');\n\t\tif (artikelHauptbild && !artikelHauptbild.complete) {\n\t\t\tartikelHauptbild.addEventListener('load', () => {\n\t\t\t\tpreload();\n\t\t\t});\n\t\t} else {\n\t\t\tpreload();\n\t\t}\n\t}\n}\n\nwindow.initGrosseBilderGalerie = initGrosseBilderGalerie;\nwindow.initModalGalerien = initModalGalerien;\nwindow.initInlineGalerien = initInlineGalerien;\nwindow.preloadGaleriePreviews = preloadGaleriePreviews;\n"]}