{
  "version": 3,
  "sources": ["/cdn/shop/t/31/assets/ds-chat.js?cb=1785529726"],
  "sourcesContent": ["/* ==========================================================================\n   Descena \u2014 ds-chat.js\n   KI-Chat-Widget (Floating-Button unten LINKS + Panel). Unten rechts sitzt\n   die gesetzliche Widerrufsfunktion \u2014 der Chat darf sie nie \u00FCberdecken.\n   Spricht mit dem Server-Proxy auf dem IONOS-Webspace; ohne erreichbaren\n   Proxy f\u00E4llt das Widget auf den Kontakt-Hinweis zur\u00FCck.\n   Kein Framework, keine Cookies \u2014 Verlauf nur im sessionStorage.\n   KI-Kennzeichnung nach Art. 50 KI-VO (ab 02.08.2026): Hinweis in Kopfzeile,\n   Begr\u00FC\u00DFung und Fu\u00DFzeile \u2014 muss beim ersten Kontakt erkennbar bleiben.\n   ========================================================================== */\n(function () {\n  \"use strict\";\n\n  var ENDPOINT = \"/apps/chat/message\";  /* Shopify App Proxy -> IONOS-Backend (chat-descena/chat.php); Browser sieht nur descena.de */\n  var VORGANG  = \"/apps/chat/vorgang\";  /* M\u00E4ngelmeldung + Medien-Upload (chat-descena/vorgang.php) */\n  var KEY = \"ds-chat-verlauf\";\n  var FALLBACK = \"Der Chat ist gerade nicht erreichbar. Schreib uns \u00FCber das Kontaktformular (Link unten) oder an info@descena.de \u2013 wir melden uns schnell.\";\n  var verlauf = [];\n  try { verlauf = JSON.parse(sessionStorage.getItem(KEY) || \"[]\"); } catch (e) {}\n\n  /* ---------- Markup ---------- */\n  var fab = document.createElement(\"button\");\n  fab.type = \"button\";\n  fab.className = \"ds-chat-fab\";\n  fab.setAttribute(\"aria-label\", \"Fragen zur H\u00FChnertr\u00E4nke? KI-Chat \u00F6ffnen\");\n  fab.innerHTML = '<svg viewBox=\"0 0 24 24\" aria-hidden=\"true\" focusable=\"false\" width=\"22\" height=\"22\"><path fill=\"currentColor\" d=\"M12 3C7.03 3 3 6.58 3 11c0 2.05.87 3.92 2.3 5.33-.15 1.15-.62 2.34-1.62 3.31-.2.2-.06.55.22.53 1.9-.15 3.42-.83 4.55-1.6 1.08.4 2.28.63 3.55.63 4.97 0 9-3.58 9-8s-4.03-8-9-8Z\"/></svg><span class=\"ds-chat-fab__label\">Fragen?</span>';\n\n  var panel = document.createElement(\"div\");\n  panel.className = \"ds-chat-panel\";\n  panel.setAttribute(\"role\", \"dialog\");\n  panel.setAttribute(\"aria-label\", \"Chat mit Descena\");\n  panel.hidden = true;\n  panel.innerHTML =\n    '<div class=\"ds-chat-kopf\">' +\n      '<div><strong>Descena</strong><span>KI-Assistent \u00B7 antwortet automatisch</span></div>' +\n      '<button type=\"button\" class=\"ds-chat-zu\" aria-label=\"Chat schlie\u00DFen\">\u2715</button>' +\n    '</div>' +\n    '<div class=\"ds-chat-verlauf\" aria-live=\"polite\"></div>' +\n    '<form class=\"ds-chat-form\">' +\n      '<label class=\"visually-hidden\" for=\"ds-chat-eingabe\">Deine Frage</label>' +\n      '<input id=\"ds-chat-eingabe\" type=\"text\" maxlength=\"500\" placeholder=\"z. B. Reicht die Tr\u00E4nke f\u00FCr 8 H\u00FChner?\" autocomplete=\"off\">' +\n      '<button type=\"submit\" class=\"ds-chat-senden\" aria-label=\"Frage senden\"><svg viewBox=\"0 0 24 24\" aria-hidden=\"true\" width=\"18\" height=\"18\"><path fill=\"currentColor\" d=\"M3.4 20.4 20.85 12 3.4 3.6 3.39 10l12.46 2L3.39 14z\"/></svg></button>' +\n    '</form>' +\n    '<p class=\"ds-chat-fuss\">KI-Assistent \u2014 kann sich irren; es gelten die Angaben auf der Produktseite. Bitte keine pers\u00F6nlichen Daten eingeben. <a href=\"/policies/privacy-policy\">Datenschutz</a> \u00B7 <a href=\"/pages/contact\">Kontakt</a></p>';\n\n  document.body.appendChild(fab);\n  document.body.appendChild(panel);\n\n  var verlaufEl = panel.querySelector(\".ds-chat-verlauf\");\n  var eingabe = panel.querySelector(\"#ds-chat-eingabe\");\n  var form = panel.querySelector(\".ds-chat-form\");\n\n  function zeile(rolle, text) {\n    var el = document.createElement(\"div\");\n    el.className = \"ds-chat-msg ds-chat-msg--\" + rolle;\n    /* Die serverseitigen Rechts-Bausteine sind mehrzeilig. textContent\n       allein w\u00FCrde alles zu einem Absatz zusammenziehen; pre-line h\u00E4lt\n       die Gliederung, ohne HTML aus der Antwort zu interpretieren. */\n    el.style.whiteSpace = \"pre-line\";\n    el.textContent = text;\n    verlaufEl.appendChild(el);\n    verlaufEl.scrollTop = verlaufEl.scrollHeight;\n    return el;\n  }\n\n  function begruessung() {\n    if (!verlauf.length && !verlaufEl.childElementCount) {\n      zeile(\"assistant\", \"Hallo! Ich bin ein KI-Assistent, kein Mensch. Fragen zur H\u00FChnertr\u00E4nke, zu Reinigung, Winter oder Versand? Frag mich einfach \u2014 f\u00FCr pers\u00F6nliche Anliegen schreib uns \u00FCber den Kontakt-Link unten.\");\n    }\n  }\n\n  verlauf.forEach(function (m) { zeile(m.role === \"assistant\" ? \"assistant\" : \"user\", m.content); });\n\n  function offen(o) {\n    panel.hidden = !o;\n    fab.classList.toggle(\"ds-chat-fab--offen\", o);\n    if (o) { begruessung(); eingabe.focus(); }\n  }\n  fab.addEventListener(\"click\", function () { offen(panel.hidden); });\n  panel.querySelector(\".ds-chat-zu\").addEventListener(\"click\", function () { offen(false); fab.focus(); });\n  document.addEventListener(\"keydown\", function (e) { if (e.key === \"Escape\" && !panel.hidden) { offen(false); fab.focus(); } });\n\n  var wartet = false;\n  form.addEventListener(\"submit\", function (e) {\n    e.preventDefault();\n    var frage = eingabe.value.trim();\n    if (!frage || wartet) { return; }\n    eingabe.value = \"\";\n    zeile(\"user\", frage);\n    verlauf.push({ role: \"user\", content: frage });\n\n    var tipp = zeile(\"assistant\", \"\u2026\");\n    tipp.classList.add(\"ds-chat-msg--tippt\");\n    wartet = true;\n\n    fetch(ENDPOINT, {\n      method: \"POST\",\n      headers: { \"Content-Type\": \"application/json\" },\n      body: JSON.stringify({ messages: verlauf.slice(-8) })\n    }).then(function (r) { return r.json(); }).then(function (d) {\n      tipp.classList.remove(\"ds-chat-msg--tippt\");\n      var text = (d && d.text) ? d.text : FALLBACK;\n      tipp.textContent = text;\n      verlauf.push({ role: \"assistant\", content: text });\n      try { sessionStorage.setItem(KEY, JSON.stringify(verlauf.slice(-16))); } catch (err) {}\n      wartet = false;\n      /* Der Server signalisiert die Vorgangsart. Erst dann erscheint der\n         Einstieg ins Formular \u2014 nie unaufgefordert, nie vom Modell erfunden.\n         'frage' ist der Wortlaut der Kundennachricht: Bei einem Widerruf\n         ist genau der das Beweisst\u00FCck, weil ein Widerruf formfrei ist. */\n      if (d && d.aktion === \"mangelmeldung\")      { angebotVorgang(\"mangel\",     d.upload_hinweis || \"\", frage); }\n      else if (d && d.aktion === \"widerrufserklaerung\") { angebotVorgang(\"widerruf\",   d.upload_hinweis || \"\", frage); }\n      else if (d && d.aktion === \"sicherheit\")    { angebotVorgang(\"sicherheit\", d.upload_hinweis || \"\", frage); }\n    }).catch(function () {\n      tipp.classList.remove(\"ds-chat-msg--tippt\");\n      tipp.textContent = FALLBACK;\n      wartet = false;\n    });\n  });\n\n  /* =======================================================================\n     M\u00C4NGELMELDUNG\n     Ab hier formuliert kein Sprachmodell mehr. Das Formular ist fest\n     verdrahtet, der Best\u00E4tigungstext kommt vom Server. Der Chat NIMMT AUF\n     und gibt nichts frei \u2014 die Entscheidung \u00FCber eine R\u00FCcksendung trifft\n     Jonas pers\u00F6nlich (h\u00E4lt den Vorgang aus Art. 22 DSGVO heraus).\n     ======================================================================= */\n\n  /* Styles f\u00FCr das Vorgangs-Formular werden hier injiziert statt in\n     ds-core.css gelegt. Grund: Damit \u00E4ndert sich am Theme NUR diese eine\n     Datei \u2014 der R\u00FCckweg ist ein einziger Datei-Tausch, und die 17-KB-CSS\n     des Live-Themes wird nicht angefasst (dort arbeitet parallel eine\n     andere Session). Die Werte stammen aus dem Design-System. */\n  (function stile() {\n    var s = document.createElement(\"style\");\n    s.textContent = [\n      \".ds-chat-aktion{display:inline-block;margin-top:.6rem;padding:.9rem 1.4rem;min-height:4.4rem;\",\n      \"background:var(--ds-brand-ink);color:#fff;border:0;border-radius:var(--ds-radius);cursor:pointer;\",\n      \"font-family:var(--ds-sans);font-size:1.35rem;font-weight:600}\",\n      \".ds-chat-aktion:hover{background:var(--ds-pine-900)}\",\n      \".ds-chat-aktion:focus-visible{outline:3px solid var(--ds-brand);outline-offset:2px}\",\n      \".ds-chat-aktion[disabled]{opacity:.55;cursor:default}\",\n      \".ds-chat-mangelform{max-width:100%}\",\n      \".ds-chat-mangelform p{margin:0 0 1rem;font-size:1.3rem}\",\n      \".ds-chat-mangelform label{display:block;margin:.9rem 0 .3rem;font-size:1.2rem;font-weight:600;color:var(--ds-ink)}\",\n      \".ds-chat-mangelform input,.ds-chat-mangelform select,.ds-chat-mangelform textarea{width:100%;\",\n      \"padding:.8rem 1rem;min-height:4.4rem;border:1px solid var(--ds-line);border-radius:var(--ds-radius);\",\n      \"background:var(--ds-white,#fff);color:var(--ds-ink);font-family:var(--ds-sans);font-size:1.4rem}\",\n      \".ds-chat-mangelform textarea{min-height:8rem;resize:vertical}\",\n      \".ds-chat-mangelform input[type=file]{padding:.8rem;font-size:1.25rem}\",\n      \".ds-chat-mangelform input:focus-visible,.ds-chat-mangelform select:focus-visible,\",\n      \".ds-chat-mangelform textarea:focus-visible{outline:3px solid var(--ds-brand);outline-offset:1px}\",\n      /* Der Datenschutz-Hinweis steht \u00DCBER dem Dateifeld und muss lesbar bleiben. */\n      \".ds-chat-hinweis{margin:1.2rem 0 .4rem!important;padding:.8rem 1rem;background:var(--ds-white,#fff);\",\n      \"border-left:3px solid var(--ds-brand);font-size:1.2rem!important;line-height:1.45;color:var(--ds-ink-soft)}\",\n      \".ds-chat-status{margin:.8rem 0 0!important;font-size:1.25rem!important;color:var(--ds-ink-soft)}\"\n    ].join(\"\");\n    document.head.appendChild(s);\n  })();\n\n  var ARTEN = {\n    mangel:     { knopf: \"M\u00E4ngelmeldung aufnehmen\",     titel: \"Ich nehme die Angaben auf und gebe sie an Jonas weiter. Er pr\u00FCft den Fall pers\u00F6nlich und meldet sich per E-Mail.\", was: \"Was stimmt nicht?\" },\n    widerruf:   { knopf: \"Widerrufserkl\u00E4rung aufnehmen\", titel: \"Ich halte deine Erkl\u00E4rung mit Datum und Uhrzeit fest und gebe sie an Jonas weiter. Eine Genehmigung braucht ein Widerruf nicht \u2014 das hier sichert nur den Eingang.\", was: \"Worauf bezieht sich dein Widerruf?\" },\n    sicherheit: { knopf: \"Vorfall melden\",               titel: \"Ich nehme den Vorfall auf und leite ihn sofort an Jonas pers\u00F6nlich weiter.\", was: \"Was ist passiert?\" }\n  };\n\n  function angebotVorgang(art, uploadHinweis, wortlaut) {\n    if (verlaufEl.querySelector(\".ds-chat-mangel\")) { return; }   /* nur einmal */\n    var box = document.createElement(\"div\");\n    box.className = \"ds-chat-msg ds-chat-msg--assistant ds-chat-mangel\";\n    var knopf = document.createElement(\"button\");\n    knopf.type = \"button\";\n    knopf.className = \"ds-chat-aktion\";\n    knopf.textContent = ARTEN[art].knopf;\n    knopf.addEventListener(\"click\", function () { box.remove(); formularVorgang(art, uploadHinweis, wortlaut); });\n    box.appendChild(knopf);\n    verlaufEl.appendChild(box);\n    verlaufEl.scrollTop = verlaufEl.scrollHeight;\n  }\n\n  function feld(wrap, art, name, beschriftung, pflicht, attrs) {\n    var id = \"ds-m-\" + name;\n    var l = document.createElement(\"label\");\n    l.setAttribute(\"for\", id);\n    l.textContent = beschriftung + (pflicht ? \" *\" : \"\");\n    var i = document.createElement(art === \"textarea\" ? \"textarea\" : \"input\");\n    i.id = id; i.name = name;\n    if (art !== \"textarea\") { i.type = art; }\n    if (pflicht) { i.required = true; }\n    Object.keys(attrs || {}).forEach(function (k) { i.setAttribute(k, attrs[k]); });\n    wrap.appendChild(l); wrap.appendChild(i);\n    return i;\n  }\n\n  function formularVorgang(art, uploadHinweis, wortlaut) {\n    var f = document.createElement(\"form\");\n    f.className = \"ds-chat-msg ds-chat-msg--assistant ds-chat-mangelform\";\n    f.setAttribute(\"aria-label\", ARTEN[art].knopf);\n\n    var kopf = document.createElement(\"p\");\n    kopf.textContent = ARTEN[art].titel;\n    f.appendChild(kopf);\n\n    var eName    = feld(f, \"text\",     \"name\",          \"Dein Name\",     true,  { maxlength: \"120\", autocomplete: \"name\" });\n    var eMail    = feld(f, \"email\",    \"email\",         \"E-Mail\",        true,  { maxlength: \"160\", autocomplete: \"email\" });\n    var eBestell = feld(f, \"text\",     \"bestellnummer\", \"Bestellnummer\", false, { maxlength: \"60\", placeholder: \"falls zur Hand\" });\n    var eText    = feld(f, \"textarea\", \"beschreibung\",  ARTEN[art].was,  true,  { maxlength: \"1500\", rows: \"4\" });\n\n    /* Nacherf\u00FCllung: Der K\u00E4ufer w\u00E4hlt zwischen Nachbesserung und\n       Ersatzlieferung (\u00A7 439 Abs. 1 BGB). Wir nehmen den Wunsch auf,\n       ohne ihn zu bewerten \u2014 nur beim Mangel, nicht beim Widerruf. */\n    var eWunsch = null;\n    if (art === \"mangel\") {\n      var lw = document.createElement(\"label\");\n      lw.setAttribute(\"for\", \"ds-m-wunsch\");\n      lw.textContent = \"Was w\u00FCnschst du dir?\";\n      eWunsch = document.createElement(\"select\");\n      eWunsch.id = \"ds-m-wunsch\";\n      [[\"offen\", \"Noch offen \u2013 bitte beraten\"],\n       [\"nachbesserung\", \"Reparatur\"],\n       [\"ersatz\", \"Ersatzlieferung\"]].forEach(function (o) {\n        var opt = document.createElement(\"option\");\n        opt.value = o[0]; opt.textContent = o[1];\n        eWunsch.appendChild(opt);\n      });\n      f.appendChild(lw); f.appendChild(eWunsch);\n    }\n\n    /* Der Upload-Hinweis MUSS vor dem Ausw\u00E4hlen sichtbar sein \u2014 Fotos aus\n       dem Hof enthalten sonst Personen und \u00FCber EXIF die Wohnadresse. */\n    var hinweis = document.createElement(\"p\");\n    hinweis.className = \"ds-chat-hinweis\";\n    hinweis.textContent = uploadHinweis;\n    f.appendChild(hinweis);\n\n    var lDatei = document.createElement(\"label\");\n    lDatei.setAttribute(\"for\", \"ds-m-dateien\");\n    lDatei.textContent = \"Fotos oder kurzes Video (freiwillig, max. 4)\";\n    var eDatei = document.createElement(\"input\");\n    eDatei.type = \"file\"; eDatei.id = \"ds-m-dateien\"; eDatei.multiple = true;\n    /* HEIC fehlt hier absichtlich: Der Server kann daraus die GPS-Daten\n       nicht entfernen, verspricht das aber. Ohne HEIC im accept wandelt\n       iOS die Fotos beim Upload selbst nach JPEG um. */\n    eDatei.accept = \"image/jpeg,image/png,image/webp,video/mp4,video/quicktime\";\n    f.appendChild(lDatei); f.appendChild(eDatei);\n\n    var status = document.createElement(\"p\");\n    status.className = \"ds-chat-status\";\n    status.setAttribute(\"aria-live\", \"polite\");\n    f.appendChild(status);\n\n    var senden = document.createElement(\"button\");\n    senden.type = \"submit\";\n    senden.className = \"ds-chat-aktion\";\n    senden.textContent = \"An Jonas senden\";\n    f.appendChild(senden);\n\n    verlaufEl.appendChild(f);\n    verlaufEl.scrollTop = verlaufEl.scrollHeight;\n    eName.focus();\n\n    f.addEventListener(\"submit\", function (e) {\n      e.preventDefault();\n      if (senden.disabled) { return; }\n      if (!eName.value.trim() || !eMail.value.trim() || !eText.value.trim()) {\n        status.textContent = \"Bitte Name, E-Mail und eine kurze Beschreibung ausf\u00FCllen.\";\n        return;\n      }\n      senden.disabled = true;\n      status.textContent = \"Wird \u00FCbermittelt \u2026\";\n\n      fetch(VORGANG + \"?action=anlegen\", {\n        method: \"POST\",\n        headers: { \"Content-Type\": \"application/json\" },\n        body: JSON.stringify({\n          art: art,\n          name: eName.value.trim(),\n          email: eMail.value.trim(),\n          bestellnummer: eBestell.value.trim(),\n          beschreibung: eText.value.trim(),\n          wunsch: eWunsch ? eWunsch.value : \"offen\",\n          wortlaut: wortlaut || \"\"\n        })\n      }).then(function (r) { return r.json(); }).then(function (v) {\n        if (!v || !v.vorgang) { throw new Error(v && v.text ? v.text : \"fehlgeschlagen\"); }\n        /* Dateien EINZELN nacheinander. Ein Request je Datei bleibt unter\n           der ~20-MB-Grenze des Shopify App Proxy; mehrere Requests\n           summieren sich trotzdem. Fehlschl\u00E4ge brechen die Meldung NICHT\n           ab \u2014 der Upload ist freiwillig, der Text z\u00E4hlt. */\n        var liste = Array.prototype.slice.call(eDatei.files || []).slice(0, v.max_anzahl || 4);\n        var kette = Promise.resolve();\n        var fehlgeschlagen = 0;\n        liste.forEach(function (datei, i) {\n          kette = kette.then(function () {\n            status.textContent = \"Datei \" + (i + 1) + \" von \" + liste.length + \" wird geladen \u2026\";\n            var fd = new FormData();\n            fd.append(\"vorgang\", v.vorgang);\n            fd.append(\"token\", v.token);\n            fd.append(\"datei\", datei);\n            return fetch(VORGANG + \"?action=datei\", { method: \"POST\", body: fd })\n              .then(function (r) { return r.json(); })\n              .then(function (a) { if (!a || !a.ok) { fehlgeschlagen++; } })\n              .catch(function () { fehlgeschlagen++; });\n          });\n        });\n        return kette.then(function () {\n          return fetch(VORGANG + \"?action=abschliessen\", {\n            method: \"POST\",\n            headers: { \"Content-Type\": \"application/json\" },\n            body: JSON.stringify({ vorgang: v.vorgang, token: v.token })\n          }).then(function (r) { return r.json(); }).then(function (ab) {\n            f.remove();\n            zeile(\"assistant\", (ab && ab.text) ? ab.text : (\"Deine Meldung liegt unter der Nummer \" + v.vorgang + \" bei Jonas.\"));\n            if (fehlgeschlagen) {\n              zeile(\"assistant\", fehlgeschlagen + \" Datei(en) konnten wir nicht annehmen \u2014 meist sind sie zu gro\u00DF. Deine Meldung ist trotzdem angekommen; du kannst Bilder gern noch an info@descena.de nachreichen.\");\n            }\n          });\n        });\n      }).catch(function (err) {\n        senden.disabled = false;\n        status.textContent = (err && err.message) ? err.message : \"Das hat nicht geklappt. Schreib uns bitte direkt an info@descena.de.\";\n      });\n    });\n  }\n})();\n"],
  "mappings": "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",
  "names": []
}
