1(()=>{"use strict";if(window.mhsysGrusskartenBereit)return;window.mhsysGrusskartenBereit=!0;const ZEICHEN_ERLAUBT=/^[\p{Script=Latin}0-9\s.,\-'â!?&+/():;"ââ@#â¬%]*$/u,ZEICHEN_VERBOTEN=/[^\p{Script=Latin}0-9\s.,\-'â!?&+/():;"ââ@#â¬%]/gu;function zeichenVerboten(text){if(ZEICHEN_ERLAUBT.test(text))return"";const treffer=text.match(ZEICHEN_VERBOTEN)||[];return[...new Set(treffer)].slice(0,5).join("")}const routen=()=>window.mhsysShop||{};let panel=null,liste=null,textBereich=null,ausloeser=null,geladen=!1,gewaehlteKarte=null;function verstecken(){!panel||panel.hidden||(panel.hidden=!0,document.documentElement.classList.remove("mhsys-overlay-offen"),ausloeser&&document.contains(ausloeser)&&ausloeser.focus())}function schliessen(){!panel||panel.hidden||(window.history.state&&window.history.state.mhsysGrusskarte?window.history.back():verstecken())}window.addEventListener("popstate",e=>{if(e.state&&e.state.mhsysOverlayBasis&&!e.state.mhsysGrusskarte){const ohne=Object.assign({},e.state);delete ohne.mhsysOverlayBasis;try{window.history.replaceState(ohne,"")}catch{}}e.state&&e.state.mhsysGrusskarte||verstecken()});function kartenZuruecksetzen(){if(gewaehlteKarte=null,liste&&liste.querySelectorAll(".mhsys-grk__karte").forEach(k=>{k.classList.remove("ist-gewaehlt"),k.setAttribute("aria-pressed","false")}),textBereich){textBereich.hidden=!0;const feld=textBereich.querySelector("textarea");feld&&(feld.value=""),zeichenPruefenUndZaehlen()}}function zeichenPruefenUndZaehlen(){const feld=textBereich.querySelector("textarea"),fehler=textBereich.querySelector(".mhsys-grk__fehler"),zaehler=textBereich.querySelector(".mhsys-grk__zaehler"),max=parseInt(feld.dataset.max,10)||120;zaehler&&(zaehler.textContent=`${feld.value.length} / ${max}`);const verboten=zeichenVerboten(feld.value);return verboten?(fehler.textContent=`Diese Zeichen gehen leider nicht: ${verboten}`,fehler.hidden=!1,!1):(fehler.textContent="",fehler.hidden=!0,!0)}function karteWaehlen(karte){gewaehlteKarte&&(gewaehlteKarte.classList.remove("ist-gewaehlt"),gewaehlteKarte.setAttribute("aria-pressed","false")),gewaehlteKarte=karte,karte.classList.add("ist-gewaehlt"),karte.setAttribute("aria-pressed","true");const feld=textBereich.querySelector("textarea");feld.maxLength=parseInt(karte.dataset.max,10)||120,feld.dataset.max=karte.dataset.max||"120";const knopf=textBereich.querySelector(".mhsys-grk__knopf"),preis=parseInt(karte.dataset.preis,10)||0;knopf.innerHTML=`<span class="mhsys-grk__knopf-kurz">Ins Eikaffskerberl</span><span class="mhsys-grk__knopf-lang">Karte ins Eikaffskerberl legen</span> \xB7 ${geld(preis)}`,textBereich.hidden=!1,zeichenPruefenUndZaehlen(),feld.focus()}function geld(cent){return(cent/100).toFixed(2).replace(".",",")+" \u20AC"}function kartenLaden(){if(!geladen){if(geladen=!0,typeof window.mhsysLadeAnzeige=="function"){const li=document.createElement("li");li.className="mhsys-grk__laden",li.append(window.mhsysLadeAnzeige()),liste.replaceChildren(li)}else liste.innerHTML='<p class="mhsys-grk__leer">Wird geladen \u2026</p>';fetch(`${routen().grusskartenUrl||"/collections/grusskarten-mit-wunschtext"}?section_id=mhsys-grusskarten-liste`).then(r=>r.text()).then(html=>{const quelle=new DOMParser().parseFromString(html,"text/html").querySelector("[data-mhsys-grk-liste]");if(!quelle||!quelle.children.length){liste.innerHTML='<p class="mhsys-grk__leer">Gerade keine Gru\xDFkarten verf\xFCgbar.</p>';return}liste.replaceChildren(...Array.from(quelle.children).map(n=>document.importNode(n,!0))),liste.querySelectorAll(".mhsys-grk__karte").forEach(karte=>{karte.addEventListener("click",()=>karteWaehlen(karte)),karte.addEventListener("keydown",e=>{(e.key==="Enter"||e.key===" ")&&(e.preventDefault(),karteWaehlen(karte))})})}).catch(()=>{geladen=!1,liste.innerHTML='<p class="mhsys-grk__leer">Die Karten lassen sich gerade nicht laden. Bitte nochmal versuchen.</p>'})}}function bauen(){panel=document.createElement("div"),panel.className="mhsys-grk",panel.hidden=!0,panel.innerHTML=` 2 <div class="mhsys-grk__schleier" data-zu></div> 3 <div class="mhsys-grk__panel" role="dialog" aria-modal="true" aria-label="Gru\xDFkarte beilegen" tabindex="-1"> 4 <div class="mhsys-grk__kopf mhsys-ueberlage__kopfzeile"> 5 <h2 class="mhsys-grk__titel mhsys-ueberlage__kopf">Gru\xDFkarte beilegen</h2> 6 <button type="button" class="mhsys-grk__zu mhsys-ueberlage__zu" data-zu aria-label="Schlie\xDFen"><svg viewBox="0 0 24 24" fill="currentColor" aria-hidden="true" focusable="false">
6<path d="M5.05 3.9c.3 0 .6.12.83.35L12 10.37l6.12-6.12a1.17 1.17 0 0 1 1.66 1.66L13.66 12l6.12 6.12a1.17 1.17 0 0 1-1.66 1.66L12 13.66l-6.12 6.12a1.17 1.17 0 0 1-1.66-1.66L10.34 12 4.22 5.88A1.17 1.17 0 0 1 5.05 3.9Z"/></svg></button> 7 </div> 8 <p class="mhsys-grk__hinweis">W\xE4hl a Karterl aus und schreib dei Gru\xDFwort dazua - mia legn's Deiner Bestellung bei.</p> 9 <ul class="mhsys-grk__liste" data-mhsys-grk-liste></ul> 10 <div class="mhsys-grk__text" hidden> 11 <label for="mhsys-grk-text">Dein Gru\xDFtext (freiwillig)</label> 12 <textarea id="mhsys-grk-text" rows="3"></textarea> 13 <p class="mhsys-grk__zaehler">0 / 120</p> 14 <p class="mhsys-grk__fehler" role="alert" hidden></p> 15 <button type="button" class="mhsys-knopf mhsys-grk__knopf"><span class="mhsys-grk__knopf-kurz">Ins Eikaffskerberl</span><span class="mhsys-grk__knopf-lang">Karte ins Eikaffskerberl legen</span></button> 16 </div> 17 </div> 18 `,document.body.appendChild(panel),liste=panel.querySelector("[data-mhsys-grk-liste]"),textBereich=panel.querySelector(".mhsys-grk__text"),panel.addEventListener("click",e=>{(e.target.closest("[data-zu]")||!e.target.closest(".mhsys-grk__panel"))&&schliessen()}),textBereich.querySelector("textarea").addEventListener("input",zeichenPruefenUndZaehlen),textBereich.querySelector(".mhsys-grk__knopf").addEventListener("click",absenden)}function absenden(){if(!gewaehlteKarte||!zeichenPruefenUndZaehlen())return;const knopf=textBereich.querySelector(".mhsys-grk__knopf");if(knopf.disabled)return;knopf.disabled=!0;const textVorher=knopf.textContent;knopf.textContent="Einen Moment \u2026";const wk=document.querySelector("mhsys-warenkorb"),text=textBereich.querySelector("textarea").value.trim(),posten={id:parseInt(gewaehlteKarte.dataset.varianteId,10),quantity:1};text!==""&&(posten.properties={Gru\u00DFtext:text});const koerper={items:[posten]};wk&&wk.sectionName&&(koerper.sections=wk.sectionName,koerper.sections_url=window.location.pathname,wk.ausloeserMerken(ausloeser)),fetch(`${routen().warenkorbHinzufuegenUrl||"/cart/add"}.js`.replace(/\.js\.js$/,".js"),{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json","X-Requested-With":"XMLHttpRequest","X-Mhsys-Warenkorb":"1"},body:JSON.stringify(koerper)}).then(r=>r.json()).then(antwort=>{if(antwort.status){const fehler=textBereich.querySelector(".mhsys-grk__fehler");fehler.textContent=antwort.description||antwort.message||"Das hat leider nicht geklappt.",fehler.hidden=!1,wk&&wk.nurNeuLaden();return}wk&&wk.antwortEinsetzen(antwort),document.dispatchEvent(new CustomEvent("mhsys:warenkorb-geaendert",{detail:{quelle:"grusskarten"}})),schliessen(),kartenZuruecksetzen()}).catch(()=>{const fehler=textBereich.querySelector(".mhsys-grk__fehler");fehler.textContent="Das hat leider nicht geklappt. Bitte nochmal versuchen.",fehler.hidden=!1}).finally(()=>{knopf.disabled=!1,knopf.textContent=textVorher})}function oeffnen(knopf){if(panel||bauen(),ausloeser=knopf,!!panel.hidden){try{const basis=Object.assign({},window.history.state||{},{mhsysOverlayBasis:!0});window.history.replaceState(basis,"");const eigen=Object.assign({},window.history.state||{},{mhsysGrusskarte:!0});delete eigen.mhsysOverlayBasis,window.history.pushState(eigen,"")}catch{}panel.hidden=!1,document.documentElement.classList.add("mhsys-overlay-offen"),panel.querySelector(".mhsys-grk__panel").focus(),kartenLaden()}}document.addEventListener("click",e=>{const knopf=e.target.closest("[data-mhsys-grusskarten-oeffnen]");knopf&&oeffnen(knopf)}),document.addEventListener("keydown",e=>{if(e.key==="Escape"&&schliessen(),e.key!=="Tab"||!panel||panel.hidden)return;const kasten=panel.querySelector(".mhsys-grk__panel"),ziele=[...kasten.querySelectorAll('a[href], button:not([disabled]), textarea, [tabindex]:not([tabindex="-1"])')].filter(el=>el.offsetParent!==null);if(!ziele.length)return;const erstes=ziele[0],letztes=ziele[ziele.length-1],drin=kasten.contains(document.activeElement)&&document.activeElement!==kasten;e.shiftKey&&(!drin||document.activeElement===erstes)?(e.preventDefault(),letztes.focus()):!e.shiftKey&&(!drin||document.activeElement===letztes)&&(e.preventDefault(),erstes.focus())})})(); 19//# sourceMappingURL=/cdn/shop/t/21/assets/mhsys-grusskarten.js.map?v=54263234067219171641790147371
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.