{
  "version": 3,
  "sources": ["/cdn/shop/t/41/assets/f3ddevis2026.js"],
  "sourcesContent": ["(function () {\r\n  'use strict';\r\n\r\n  var F3DDEVIS2026_CLE = 'f3ddevis2026_liste';\r\n  var F3DDEVIS2026_TVA = 1.2;\r\n  var F3DDEVIS2026_CLE_DATE = 'f3ddevis2026_maj';\r\n  var F3DDEVIS2026_DUREE = 10 * 24 * 60 * 60 * 1000;\r\n\r\n  function f3ddevis2026Purger() {\r\n    try {\r\n      var marque = parseInt(window.localStorage.getItem(F3DDEVIS2026_CLE_DATE), 10);\r\n      if (isNaN(marque)) return false;\r\n      if (Date.now() - marque < F3DDEVIS2026_DUREE) return false;\r\n      window.localStorage.removeItem(F3DDEVIS2026_CLE);\r\n      window.localStorage.removeItem(F3DDEVIS2026_CLE_DATE);\r\n      return true;\r\n    } catch (e) {\r\n      return false;\r\n    }\r\n  }\r\n\r\n  function f3ddevis2026Lire() {\r\n    try {\r\n      if (f3ddevis2026Purger()) return [];\r\n      var brut = window.localStorage.getItem(F3DDEVIS2026_CLE);\r\n      var liste = brut ? JSON.parse(brut) : [];\r\n      return Array.isArray(liste) ? liste : [];\r\n    } catch (e) {\r\n      return [];\r\n    }\r\n  }\r\n\r\n  function f3ddevis2026Ecrire(liste) {\r\n    try {\r\n      window.localStorage.setItem(F3DDEVIS2026_CLE, JSON.stringify(liste));\r\n      if (!liste.length) {\r\n        window.localStorage.removeItem(F3DDEVIS2026_CLE_DATE);\r\n      } else if (!window.localStorage.getItem(F3DDEVIS2026_CLE_DATE)) {\r\n        window.localStorage.setItem(F3DDEVIS2026_CLE_DATE, String(Date.now()));\r\n      }\r\n    } catch (e) {}\r\n    document.dispatchEvent(\r\n      new CustomEvent('f3ddevis2026:change', { detail: liste })\r\n    );\r\n  }\r\n\r\n  var F3DDevis2026 = {\r\n    liste: f3ddevis2026Lire,\r\n\r\n    nombre: function () {\r\n      return f3ddevis2026Lire().reduce(function (t, l) { return t + l.qte; }, 0);\r\n    },\r\n\r\n    ajouter: function (article) {\r\n      if (!article.sku) return false;\r\n      var liste = f3ddevis2026Lire();\r\n      var trouve = false;\r\n      for (var i = 0; i < liste.length; i++) {\r\n        if (liste[i].sku === article.sku) {\r\n          liste[i].qte += article.qte;\r\n          trouve = true;\r\n          break;\r\n        }\r\n      }\r\n      if (!trouve) liste.push(article);\r\n      f3ddevis2026Ecrire(liste);\r\n      return true;\r\n    },\r\n\r\n    retirer: function (sku) {\r\n      f3ddevis2026Ecrire(\r\n        f3ddevis2026Lire().filter(function (l) { return l.sku !== sku; })\r\n      );\r\n    },\r\n\r\n    definirQte: function (sku, qte) {\r\n      var liste = f3ddevis2026Lire();\r\n      for (var i = 0; i < liste.length; i++) {\r\n        if (liste[i].sku === sku) liste[i].qte = Math.max(1, parseInt(qte, 10) || 1);\r\n      }\r\n      f3ddevis2026Ecrire(liste);\r\n    },\r\n\r\n    vider: function () {\r\n      f3ddevis2026Ecrire([]);\r\n    },\r\n\r\n    prixHT: function (article) {\r\n      var centimes = parseInt(article.prix, 10);\r\n      if (isNaN(centimes)) return null;\r\n      return Math.round(centimes * article.qte / F3DDEVIS2026_TVA) / 100;\r\n    },\r\n\r\n    totalHT: function () {\r\n      var total = 0;\r\n      var lignes = f3ddevis2026Lire();\r\n      for (var i = 0; i < lignes.length; i++) {\r\n        var ligne = F3DDevis2026.prixHT(lignes[i]);\r\n        if (ligne !== null) total += ligne;\r\n      }\r\n      return Math.round(total * 100) / 100;\r\n    },\r\n\r\n    totalTTC: function () {\r\n      var total = 0;\r\n      var lignes = f3ddevis2026Lire();\r\n      for (var i = 0; i < lignes.length; i++) {\r\n        var centimes = parseInt(lignes[i].prix, 10);\r\n        if (!isNaN(centimes)) total += centimes * lignes[i].qte;\r\n      }\r\n      return Math.round(total) / 100;\r\n    },\r\n\r\n    formaterEuros: function (montant) {\r\n      return montant.toLocaleString('fr-FR', {\r\n        minimumFractionDigits: 2,\r\n        maximumFractionDigits: 2\r\n      }) + '\\u00A0\\u20AC';\r\n    },\r\n\r\n    versTexte: function () {\r\n      return f3ddevis2026Lire().map(function (l, i) {\r\n        var dispo = l.stock;\r\n        var enStock = parseInt(l.stock, 10);\r\n        if (!isNaN(enStock) && l.qte <= enStock) {\r\n          dispo = enStock + ' (en stock)';\r\n        }\r\n        return (i + 1) + '. ' + l.titre +\r\n          '\\n   Reference : ' + l.sku +\r\n          '\\n   Quantite demandee : ' + l.qte +\r\n          '\\n   Disponibilite affichee sur le site : ' + dispo +\r\n          '\\n   ' + l.url;\r\n      }).join('\\n\\n');\r\n    },\r\n\r\n    versTexteClient: function () {\r\n      return f3ddevis2026Lire().map(function (l, i) {\r\n        return (i + 1) + '. ' + l.titre +\r\n          '\\n   Reference : ' + l.sku +\r\n          '\\n   Quantite demandee : ' + l.qte +\r\n          '\\n   ' + l.url;\r\n      }).join('\\n\\n');\r\n    }\r\n  };\r\n\r\n  window.F3DDevis2026 = F3DDevis2026;\r\n\r\n  function f3ddevis2026Quantite() {\r\n    var champ = document.querySelector('[data-product-form] [data-quantity-input]');\r\n    var n = champ ? parseInt(champ.value, 10) : 1;\r\n    return Math.max(1, isNaN(n) ? 1 : n);\r\n  }\r\n\r\n  function f3ddevis2026InitBouton() {\r\n    var zone = document.querySelector('[data-f3ddevis2026-ajout]');\r\n    if (!zone) return;\r\n\r\n    var bouton = zone.querySelector('[data-f3ddevis2026-bouton]');\r\n    var rappel = zone.querySelector('[data-f3ddevis2026-rappel]');\r\n    var lien = zone.querySelector('[data-f3ddevis2026-lien]');\r\n    var compteur = zone.querySelector('[data-f3ddevis2026-compteur]');\r\n    if (!bouton) return;\r\n\r\n    var libelle = bouton.innerHTML;\r\n    var minuteur = null;\r\n    var attente = null;\r\n\r\n    function aligner() {\r\n      var atc = document.querySelector('[data-product-form] .product-form--atc-button');\r\n      if (!atc) return;\r\n      var cible = atc.getBoundingClientRect();\r\n      var base = zone.getBoundingClientRect();\r\n      if (cible.width < 1 || base.width < 1) return;\r\n\r\n      var decalage = Math.max(0, Math.round(cible.left - base.left));\r\n      var hauteur = Math.round(cible.height);\r\n\r\n      bouton.style.width = Math.round(cible.width) + 'px';\r\n      bouton.style.marginLeft = decalage + 'px';\r\n      if (rappel) rappel.style.paddingLeft = decalage + 'px';\r\n\r\n      bouton.style.height = '';\r\n      bouton.style.height = bouton.scrollHeight <= hauteur ? hauteur + 'px' : '';\r\n    }\r\n\r\n    bouton.addEventListener('click', function () {\r\n      var etaitMasque = rappel ? rappel.hidden : false;\r\n\r\n      var ok = F3DDevis2026.ajouter({\r\n        sku: zone.getAttribute('data-f3ddevis2026-sku'),\r\n        titre: zone.getAttribute('data-f3ddevis2026-titre'),\r\n        url: zone.getAttribute('data-f3ddevis2026-url'),\r\n        stock: zone.getAttribute('data-f3ddevis2026-stock'),\r\n        prix: zone.getAttribute('data-f3ddevis2026-prix'),\r\n        qte: f3ddevis2026Quantite()\r\n      });\r\n\r\n      if (ok && rappel && etaitMasque) {\r\n        rappel.classList.remove('f3ddevis2026-rappel--anime');\r\n        void rappel.offsetWidth;\r\n        rappel.classList.add('f3ddevis2026-rappel--anime');\r\n      } else if (ok && compteur) {\r\n        compteur.classList.remove('f3ddevis2026-compteur--maj');\r\n        void compteur.offsetWidth;\r\n        compteur.classList.add('f3ddevis2026-compteur--maj');\r\n      }\r\n\r\n      clearTimeout(minuteur);\r\n      bouton.style.height = bouton.offsetHeight + 'px';\r\n      bouton.innerHTML = ok\r\n        ? '\\u2713 Ajout\\u00E9 \\u00E0 votre demande de devis'\r\n        : 'R\\u00E9f\\u00E9rence manquante';\r\n      bouton.classList.add(ok ? 'f3ddevis2026-bouton--ok' : 'f3ddevis2026-bouton--ko');\r\n      minuteur = setTimeout(function () {\r\n        bouton.innerHTML = libelle;\r\n        bouton.classList.remove('f3ddevis2026-bouton--ok', 'f3ddevis2026-bouton--ko');\r\n        aligner();\r\n      }, 800);\r\n    });\r\n\r\n    function majRappel() {\r\n      if (!rappel || !compteur) return;\r\n      var n = F3DDevis2026.nombre();\r\n      var montant = F3DDevis2026.formaterEuros(F3DDevis2026.totalHT());\r\n      rappel.hidden = n === 0;\r\n      if (n === 0) rappel.classList.remove('f3ddevis2026-rappel--anime');\r\n      compteur.textContent = montant + ' HT';\r\n      if (lien) {\r\n        lien.setAttribute('aria-label',\r\n          'Voir ma demande de devis, total ' + montant + ' hors taxes');\r\n      }\r\n    }\r\n\r\n    window.addEventListener('resize', function () {\r\n      clearTimeout(attente);\r\n      attente = setTimeout(aligner, 150);\r\n    });\r\n\r\n    document.addEventListener('f3ddevis2026:change', majRappel);\r\n    majRappel();\r\n    aligner();\r\n    window.setTimeout(aligner, 400);\r\n  }\r\n\r\n  if (document.readyState === 'loading') {\r\n    document.addEventListener('DOMContentLoaded', f3ddevis2026InitBouton);\r\n  } else {\r\n    f3ddevis2026InitBouton();\r\n  }\r\n})();\r\n"],
  "mappings": "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",
  "names": []
}
