{
  "version": 3,
  "sources": ["/cdn/shop/t/13/assets/gm-slot.js?x=1789677184590"],
  "sourcesContent": ["/* GM \u2014 numeri a slot machine.\n   Stesso meccanismo della pagina Porsche: il numero vero resta nel testo (per\n   Google e per i lettori di schermo) e sopra gli si mette una colonna di cifre\n   per posizione, che scorre in verticale. La colonna fa un giro intero prima\n   di fermarsi sulla cifra giusta, e ogni colonna arriva un po' dopo quella\n   prima: e' lo sfalsamento a dare l'effetto slot.\n\n   Il numero e' gia' nell'HTML: senza JavaScript, o dove `lh` non esiste, la\n   pagina resta esattamente com'era. */\n(() => {\n  const SEL = '[data-gm-slot]';\n  if (!('IntersectionObserver' in window)) return;\n  if (!CSS.supports('height', '1lh')) return;\n  if (matchMedia('(prefers-reduced-motion: reduce)').matches) return;\n\n  // I numeri sono quelli misurati sul contatore di porsche.com mentre gira:\n  // 1200 ms per ogni colonna, 1300 ms per l'ULTIMA soltanto, nessun ritardo\n  // di partenza. E' quel +100 ms sull'ultima cifra a fare l'effetto slot \u2014\n  // non un ritardo crescente, che invece sfilaccia il movimento.\n  const DURATA  = 1200; // ms di ogni colonna\n  const CODA    = 100;  // ms in piu' solo per l'ultima cifra\n\n  function prepara(el) {\n    if (el.dataset.gmSlotFatto) return false;\n    el.dataset.gmSlotFatto = '1';\n\n    // Solo i nodi di testo figli diretti: l'unita' sta in uno span e non si\n    // tocca, o \u00AB1150 W\u00BB animerebbe anche la W.\n    const nodi = [...el.childNodes].filter(n => n.nodeType === 3 && /\\d/.test(n.nodeValue));\n    if (!nodi.length) return false;\n\n    let colonne = 0;\n    for (const nodo of nodi) {\n      const pezzi = nodo.nodeValue.split(/(\\d)/);   // tiene i separatori: 8-10, 1,5\n      const frag = document.createDocumentFragment();\n      for (const pezzo of pezzi) {\n        if (!/^\\d$/.test(pezzo)) { frag.append(pezzo); continue; }\n        const cifra = Number(pezzo);\n        // <data> e non <span>: le sezioni stilano gli span dentro i numeri\n        // per fare l'unita' di misura (meta' corpo, grigia), e l'involucro si\n        // sarebbe preso quello stile portandosi dietro tutte le cifre.\n        const w = document.createElement('data');\n        w.className = 'gmslot';\n        const vero = document.createElement('data');\n        vero.className = 'gmslot__vero';\n        vero.textContent = pezzo;\n        const col = document.createElement('data');\n        col.className = 'gmslot__col';\n        col.setAttribute('aria-hidden', 'true');\n        const rulla = document.createElement('data');\n        rulla.className = 'gmslot__rulla';\n        // Un giro solo 0-9 piu' la cifra finale. Con due giri la colonna era\n        // alta ventuno righe: sul numero grande della scala (72 px) sono\n        // milleduecento pixel da comporre a ogni fotogramma, e l'animazione\n        // scattava. Con un giro il movimento e' lo stesso ma fluido.\n        for (let i = 0; i < 10; i++) rulla.append(cifra9(i));\n        rulla.append(cifra9(cifra));\n        rulla.style.setProperty('--y', -(10 + cifra));\n        rulla.style.transitionDuration = DURATA + 'ms';\n        col.append(rulla);\n        w.append(vero, col);\n        frag.append(w);\n        colonne++;\n      }\n      nodo.replaceWith(frag);\n    }\n    const rulle = el.querySelectorAll('.gmslot__rulla');\n    if (rulle.length) rulle[rulle.length - 1].style.transitionDuration = (DURATA + CODA) + 'ms';\n    return colonne > 0;\n  }\n\n  function cifra9(n) {\n    const i = document.createElement('i');\n    i.textContent = String(n);\n    return i;\n  }\n\n  // Finita l'ultima colonna si torna al numero vero: cosi' le cifre riprendono\n  // la loro larghezza naturale e il testo e' identico a prima dell'effetto.\n  function chiudi(el) {\n    const rulle = el.querySelectorAll('.gmslot__rulla');\n    if (!rulle.length) return;\n    const ultima = rulle[rulle.length - 1];\n    const fine = () => {\n      el.classList.add('gm-slot--fine');\n      el.querySelectorAll('.gmslot__col').forEach(c => c.remove());\n    };\n    ultima.addEventListener('transitionend', fine, { once: true });\n    setTimeout(fine, DURATA + CODA + 400);   // rete di sicurezza\n  }\n\n  const osserva = new IntersectionObserver((voci, obs) => {\n    for (const v of voci) {\n      if (!v.isIntersecting) continue;\n      obs.unobserve(v.target);\n      if (prepara(v.target)) {\n        requestAnimationFrame(() => requestAnimationFrame(() => {\n          v.target.classList.add('gm-slot--via');\n          chiudi(v.target);\n        }));\n      }\n    }\n  }, { threshold: 0.45, rootMargin: '0px 0px -8% 0px' });\n\n  const avvia = () => document.querySelectorAll(SEL).forEach(el => osserva.observe(el));\n  if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', avvia);\n  else avvia();\n})();\n"],
  "mappings": "CASC,IAAM,CACL,MAAM,IAAM,iBAGZ,GAFI,EAAE,yBAA0B,SAC5B,CAAC,IAAI,SAAS,SAAU,KAAK,GAC7B,WAAW,kCAAkC,EAAE,QAAS,OAM5D,MAAM,OAAU,KACV,KAAU,IAEhB,SAAS,QAAQ,GAAI,CACnB,GAAI,GAAG,QAAQ,YAAa,MAAO,GACnC,GAAG,QAAQ,YAAc,IAIzB,MAAM,KAAO,CAAC,GAAG,GAAG,UAAU,EAAE,OAAO,GAAK,EAAE,WAAa,GAAK,KAAK,KAAK,EAAE,SAAS,CAAC,EACtF,GAAI,CAAC,KAAK,OAAQ,MAAO,GAEzB,IAAI,QAAU,EACd,UAAW,QAAQ,KAAM,CACvB,MAAM,MAAQ,KAAK,UAAU,MAAM,MAAM,EACnC,KAAO,SAAS,uBAAuB,EAC7C,UAAW,SAAS,MAAO,CACzB,GAAI,CAAC,OAAO,KAAK,KAAK,EAAG,CAAE,KAAK,OAAO,KAAK,EAAG,QAAU,CACzD,MAAM,MAAQ,OAAO,KAAK,EAIpB,EAAI,SAAS,cAAc,MAAM,EACvC,EAAE,UAAY,SACd,MAAM,KAAO,SAAS,cAAc,MAAM,EAC1C,KAAK,UAAY,eACjB,KAAK,YAAc,MACnB,MAAM,IAAM,SAAS,cAAc,MAAM,EACzC,IAAI,UAAY,cAChB,IAAI,aAAa,cAAe,MAAM,EACtC,MAAM,MAAQ,SAAS,cAAc,MAAM,EAC3C,MAAM,UAAY,gBAKlB,QAAS,EAAI,EAAG,EAAI,GAAI,IAAK,MAAM,OAAO,OAAO,CAAC,CAAC,EACnD,MAAM,OAAO,OAAO,KAAK,CAAC,EAC1B,MAAM,MAAM,YAAY,MAAO,EAAE,GAAK,MAAM,EAC5C,MAAM,MAAM,mBAAqB,OAAS,KAC1C,IAAI,OAAO,KAAK,EAChB,EAAE,OAAO,KAAM,GAAG,EAClB,KAAK,OAAO,CAAC,EACb,SACF,CACA,KAAK,YAAY,IAAI,CACvB,CACA,MAAM,MAAQ,GAAG,iBAAiB,gBAAgB,EAClD,OAAI,MAAM,SAAQ,MAAM,MAAM,OAAS,CAAC,EAAE,MAAM,mBAAsB,OAAS,KAAQ,MAChF,QAAU,CACnB,CAEA,SAAS,OAAO,EAAG,CACjB,MAAM,EAAI,SAAS,cAAc,GAAG,EACpC,SAAE,YAAc,OAAO,CAAC,EACjB,CACT,CAIA,SAAS,OAAO,GAAI,CAClB,MAAM,MAAQ,GAAG,iBAAiB,gBAAgB,EAClD,GAAI,CAAC,MAAM,OAAQ,OACnB,MAAM,OAAS,MAAM,MAAM,OAAS,CAAC,EAC/B,KAAO,IAAM,CACjB,GAAG,UAAU,IAAI,eAAe,EAChC,GAAG,iBAAiB,cAAc,EAAE,QAAQ,GAAK,EAAE,OAAO,CAAC,CAC7D,EACA,OAAO,iBAAiB,gBAAiB,KAAM,CAAE,KAAM,EAAK,CAAC,EAC7D,WAAW,KAAM,OAAS,KAAO,GAAG,CACtC,CAEA,MAAM,QAAU,IAAI,qBAAqB,CAAC,KAAM,MAAQ,CACtD,UAAW,KAAK,KACT,EAAE,iBACP,IAAI,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,GAClB,sBAAsB,IAAM,sBAAsB,IAAM,CACtD,EAAE,OAAO,UAAU,IAAI,cAAc,EACrC,OAAO,EAAE,MAAM,CACjB,CAAC,CAAC,EAGR,EAAG,CAAE,UAAW,IAAM,WAAY,iBAAkB,CAAC,EAE/C,MAAQ,IAAM,SAAS,iBAAiB,GAAG,EAAE,QAAQ,IAAM,QAAQ,QAAQ,EAAE,CAAC,EAChF,SAAS,aAAe,UAAW,SAAS,iBAAiB,mBAAoB,KAAK,EACrF,MAAM,CACb,GAAG",
  "names": []
}
