{"version":3,"sources":["bildDialog.mjs"],"names":["optimaleBildGroesse","setBild","_setBild","setBildTexte","bestMediaType","maximaleKantenlaenge","Number","parseInt","document","scripts","filter","s","src","length","url","endsWith","dataset","bildModalBauen","modalDiv","querySelector","content","cloneNode","children","classList","add","bsTheme","remove","mediaType","then","t","bild","bildGroesse","width","height","m","removeAttribute","bildDialogOeffnen","bildunterschrift","urheber","modalBody","addEventListener","modalBodyRect","getBoundingClientRect","aktuelleBildGroesse","wrapper","createElement","append","style","top","img","bildGroesseAendern","neueBildGroesse","breite","hoehe","resizeAborter","AbortController","resizeTimeout","window","clearTimeout","setTimeout","signal","abort","modal","bootstrap","Modal","focus","keyboard","dispose","show","evt","key","hide","initBildDialoge","container","documentElement","querySelectorAll","forEach","elem","preventDefault","parentElement","textContent"],"mappings":"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","file":"bildDialog.mjs","sourcesContent":["import { optimaleBildGroesse, setBild as _setBild, 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 * @returns {HTMLDivElement}\n */\nfunction bildModalBauen() {\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-bild-dialog');\n\tmodalDiv.dataset.bsTheme = 'dark';\n\tmodalDiv.querySelector('.modal-dialog').classList.add('modal-fullscreen');\n\tmodalDiv.querySelector('.modal-footer').remove();\n\treturn modalDiv;\n}\n\nlet mediaType = 'orig';\nbestMediaType().then(t => {\n\tmediaType = t;\n});\n\n/**\n * @param {string} url\n * @param {HTMLImageElement} bild\n * @param {{ breite: number, hoehe: number }} bildGroesse\n * @returns {void}\n */\nfunction setBild(url, bild, bildGroesse) {\n\t// Größe über Maximum, damit immer bildGroesse verwendet wird. Ansonsten müsste an allen Stellen (bspw. beim Import), die echte Bild-Größe mit ins HTML geschrieben werden.\n\tbild.width = maximaleKantenlaenge + 1;\n\tbild.height = maximaleKantenlaenge + 1;\n\t_setBild(url, bild, bildGroesse, true, false, { m: mediaType });\n\tbild.removeAttribute('width');\n\tbild.removeAttribute('height');\n}\n\n/**\n * @param {HTMLImageElement} bild\n * @param {string} bildunterschrift\n * @param {string} urheber\n */\nfunction bildDialogOeffnen(bild, bildunterschrift, urheber) {\n\tconst modalDiv = bildModalBauen();\n\tconst modalBody = modalDiv.querySelector('.modal-body');\n\tmodalDiv.addEventListener('shown.bs.modal', () => {\n\t\tconst modalBodyRect = modalBody.getBoundingClientRect();\n\t\tconst bildGroesse = optimaleBildGroesse(modalBodyRect, maximaleKantenlaenge);\n\t\tlet aktuelleBildGroesse = bildGroesse;\n\t\tconst wrapper = document.createElement('div');\n\t\twrapper.classList.add('jjk-bild-dialog-bild-wrapper');\n\t\tmodalBody.append(wrapper);\n\t\twrapper.style.height = `calc(100vh - ${modalBodyRect.top}px)`;\n\t\tconst img = document.createElement('img');\n\t\tsetBild(bild.src, img, bildGroesse);\n\t\twrapper.append(img);\n\t\tsetBildTexte(bildunterschrift, urheber, wrapper);\n\t\tconst bildGroesseAendern = () => {\n\t\t\tconst neueBildGroesse = optimaleBildGroesse(modalBody.getBoundingClientRect(), maximaleKantenlaenge);\n\t\t\tif (neueBildGroesse.breite <= aktuelleBildGroesse.breite && neueBildGroesse.hoehe <= aktuelleBildGroesse.hoehe) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tsetBild(bild.src, bild, neueBildGroesse);\n\t\t\taktuelleBildGroesse = neueBildGroesse;\n\t\t};\n\t\tconst resizeAborter = new AbortController();\n\t\tlet resizeTimeout = false;\n\t\twindow.addEventListener(\n\t\t\t'resize',\n\t\t\t() => {\n\t\t\t\twindow.clearTimeout(resizeTimeout);\n\t\t\t\tresizeTimeout = window.setTimeout(bildGroesseAendern, 250);\n\t\t\t},\n\t\t\t{ signal: resizeAborter.signal }\n\t\t);\n\t\tmodalDiv.addEventListener('hide.bs.modal', () => resizeAborter.abort());\n\t});\n\tconst modal = new window.bootstrap.Modal(modalDiv, { focus: true, keyboard: true });\n\tmodalDiv.addEventListener('hidden.bs.modal', () => {\n\t\tmodal.dispose();\n\t\tmodalDiv.remove();\n\t});\n\tmodal.show();\n\twindow.addEventListener('keydown', evt => {\n\t\tif (evt.key === 'Escape') {\n\t\t\tmodal.hide();\n\t\t}\n\t});\n}\n\nwindow.bildDialogOeffnen = bildDialogOeffnen;\n\nwindow.initBildDialoge = (container = document.documentElement) => {\n\tcontainer.querySelectorAll('figure.bodytext-imported-figure > a').forEach(elem => {\n\t\telem.addEventListener('click', evt => {\n\t\t\tevt.preventDefault();\n\t\t\twindow.bildDialogOeffnen(elem.querySelector('img'), elem.parentElement.querySelector('.bild-beschreibung')?.textContent, elem.parentElement.querySelector('.bild-urheber')?.textContent);\n\t\t});\n\t});\n\tcontainer.querySelectorAll('.media-container .tab.image .splide__slide > a').forEach(elem => {\n\t\telem.addEventListener('click', evt => {\n\t\t\tevt.preventDefault();\n\t\t\twindow.bildDialogOeffnen(elem.querySelector('img'), elem.parentElement.querySelector('.foto-beschreibung')?.textContent, elem.parentElement.querySelector('.foto-urheber')?.textContent);\n\t\t});\n\t});\n};\n"]}