{
  "version": 3,
  "sources": ["/cdn/shop/t/12/assets/sacone-tracking.js?revision=20261013-steps"],
  "sourcesContent": ["const labels = ['Command\u00E9e', 'Pr\u00E9par\u00E9e', 'En transit', 'En livraison', 'Livr\u00E9e'];\nconst scenarios = {\n  Update: {stage:-1,title:'Le transporteur a actualis\u00E9 votre suivi',description:'Une nouvelle information est disponible. Contactez notre \u00E9quipe pour obtenir les d\u00E9tails.'},\n  InTransit: { stage: 2, title: 'Votre colis est en route', description: 'Votre colis progresse dans le r\u00E9seau de livraison. Consultez ci-dessous les derni\u00E8res \u00E9tapes v\u00E9rifi\u00E9es.' },\n  InfoReceived: { stage: 1, title: 'Votre envoi est pr\u00E9par\u00E9', description: 'Les informations d\u2019exp\u00E9dition ont \u00E9t\u00E9 transmises. Nous attendons la premi\u00E8re confirmation de prise en charge du transporteur.' },\n  OutForDelivery: { stage: 3, title: 'La livraison approche', description: 'Le transporteur indique que votre colis est en cours de livraison.' },\n  Delivered: { stage: 4, title: 'Votre colis est livr\u00E9', description: 'La livraison a \u00E9t\u00E9 confirm\u00E9e par le transporteur. Nous esp\u00E9rons que votre commande vous pla\u00EEt.' },\n  AvailableForPickup: { stage: 3, title: 'Votre colis vous attend', description: 'Votre colis est disponible en point de retrait. Consultez l\u2019avis du transporteur pour conna\u00EEtre le lieu et le d\u00E9lai de retrait, ou contactez-nous.' },\n  DeliveryFailure: { stage: 2, alert: true, title: 'Une tentative de livraison a eu lieu', description: 'Le transporteur n\u2019a pas pu remettre le colis. Consultez son avis de passage ou contactez notre \u00E9quipe pour organiser la suite.' },\n  Exception: { stage: 2, alert: true, title: 'Votre livraison n\u00E9cessite une attention', description: 'Le transporteur signale un incident. Contactez notre \u00E9quipe pour obtenir les d\u00E9tails et la marche \u00E0 suivre.' },\n  Expired: { stage: 2, alert: true, title: 'Nous devons v\u00E9rifier votre suivi', description: 'Le suivi n\u2019a pas \u00E9t\u00E9 actualis\u00E9 depuis un certain temps. Notre \u00E9quipe peut v\u00E9rifier la situation de votre colis.' },\n  NotFound: { stage: -1, title: 'Nous attendons les premi\u00E8res informations', description: 'Aucun \u00E9v\u00E9nement de suivi n\u2019est encore disponible. Cela ne confirme pas une prise en charge physique du colis.' }\n};\nconst dateText = date => date && !Number.isNaN(Date.parse(date)) ? new Intl.DateTimeFormat('fr-FR', {day:'numeric',month:'short',hour:'2-digit',minute:'2-digit',timeZone:'Europe/Paris'}).format(new Date(date)) : '';\nclass SaconeTracking extends HTMLElement {\n  connectedCallback() {\n    if (this.initialized) return;\n    this.initialized = true;\n    const demo = this.dataset.demo === 'true';\n    this.innerHTML = `<div class=\"st-intro\"><p class=\"st-kicker\">SAC ONE \u00B7 \u00C0 VOS C\u00D4T\u00C9S</p><h1>Votre commande, \u00E9tape par \u00E9tape.</h1><p>Retrouvez les derni\u00E8res nouvelles de votre colis en quelques secondes.</p></div>\n    <div class=\"st-demo\" ${demo ? '' : 'hidden'}><strong>D\u00E9monstration \u2014 donn\u00E9es fictives.</strong> Aucun colis r\u00E9el n\u2019est suivi ici.<br><label>Voir un exemple <select data-scenario><option value=\"InTransit\">En transit</option><option value=\"InfoReceived\">Pr\u00E9par\u00E9</option><option value=\"OutForDelivery\">En livraison</option><option value=\"AvailableForPickup\">Point de retrait</option><option value=\"Delivered\">Livr\u00E9</option><option value=\"DeliveryFailure\">Tentative \u00E9chou\u00E9e</option><option value=\"Exception\">Incident</option><option value=\"NotFound\">Sans \u00E9v\u00E9nement</option></select></label></div>\n    <div class=\"st-search\"><form><div class=\"st-field\"><label for=\"st-reference\">Num\u00E9ro de commande ou de suivi</label><input id=\"st-reference\" name=\"reference\" placeholder=\"Votre num\u00E9ro de suivi\" required maxlength=\"80\" autocomplete=\"off\"></div><div class=\"st-field\"><label for=\"st-email\">E-mail de la commande</label><input id=\"st-email\" name=\"email\" type=\"email\" placeholder=\"vous@exemple.fr\" required maxlength=\"254\" autocomplete=\"email\"></div><button class=\"st-button\" type=\"submit\">Suivre ma commande</button></form><small>Utilisez l\u2019adresse e-mail renseign\u00E9e lors de votre achat.</small><p class=\"st-message\" role=\"status\" aria-live=\"polite\"></p></div>\n    <section class=\"st-result\" hidden aria-label=\"R\u00E9sultat du suivi\"><div class=\"st-result-head\"><h2 data-order></h2><span class=\"st-tag\" data-tag></span></div><ol class=\"st-steps\"></ol><div class=\"st-body\"><div class=\"st-main\"><h3 data-title tabindex=\"-1\"></h3><p class=\"st-description\"></p><p class=\"st-updated\"></p><ol class=\"st-events\" aria-label=\"Historique du colis\"></ol></div><aside class=\"st-side\"><h3>Votre envoi</h3><p class=\"st-number\"></p><h3>Une question sur votre livraison ?</h3><p>Notre \u00E9quipe vous accompagne pour toute question sur votre commande.</p><a href=\"mailto:support@sac-one.com\">Contacter le service client \u2192</a></aside></div></section><p class=\"st-footer\">Entreprise fran\u00E7aise \u00B7 Service client SAC ONE</p>`;\n    if(this.dataset.mode === 'omgo') { this.querySelector('[name=email]').closest('.st-field').remove(); this.querySelector('label[for=st-reference]').textContent='Num\u00E9ro de suivi'; this.querySelector('[name=reference]').placeholder='Saisissez votre num\u00E9ro de suivi'; this.querySelector('.st-search small').textContent='Saisissez le num\u00E9ro re\u00E7u dans votre e-mail d\u2019exp\u00E9dition.'; }\n    this.querySelector('form').addEventListener('submit', event => this.submit(event));\n    this.querySelector('[data-scenario]').addEventListener('change', () => this.demo());\n    if (demo) { this.querySelector('[name=reference]').value = '#DEMO'; this.querySelector('[name=email]').value = 'demo@example.com'; this.demo(); }\n  }\n  demo() {\n    const status = this.querySelector('[data-scenario]').value;\n    const s = scenarios[status];\n    const history = [{ label: 'Commande de d\u00E9monstration enregistr\u00E9e', date: '2026-09-14T10:00:00Z' }];\n    if (s.stage >= 1) history.unshift({label:'Informations d\u2019exp\u00E9dition transmises',date:'2026-09-15T09:00:00Z'});\n    if (s.stage >= 2) history.unshift({label:'Colis pris en charge et en acheminement',date:'2026-09-17T14:20:00Z'});\n    if (s.stage >= 3) history.unshift({label:s.title,date:'2026-09-18T08:00:00Z'});\n    if (s.alert) history.unshift({label:s.title,date:'2026-09-18T08:00:00Z'});\n    this.render({order:'#DEMO',number:'EXEMPLE \u2014 AUCUN COLIS R\u00C9EL',status,updated:'2026-09-18T08:00:00Z',events:history,confirmedStages: status === 'NotFound' ? [0] : Array.from({length:s.stage+1},(_,i)=>i)});\n  }\n  async submit(event) {\n    event.preventDefault();\n    if (this.dataset.demo === 'true') { this.demo(); return; }\n    const message = this.querySelector('.st-message'), button = this.querySelector('[type=submit]');\n    this.querySelector('.st-result').hidden = true;\n    if (!this.dataset.endpoint) { message.textContent = 'Le suivi en ligne sera disponible prochainement. Pour votre commande, contactez support@sac-one.com.'; return; }\n    button.disabled = true; message.textContent = 'Recherche de votre colis\u2026';\n    try {\n      const values = new FormData(event.target);\n      const response = await fetch(this.dataset.endpoint, {method:'POST',headers:{'Content-Type':'application/json'},body:JSON.stringify({reference:values.get('reference').trim(),email:(values.get('email') || '').trim()}),signal:AbortSignal.timeout(30000)});\n      if (!response.ok) {\n        const failure = await response.json().catch(() => ({}));\n        throw new Error(failure.error === 'snapshot_not_available' ? 'Aucun relev\u00E9 n\u2019a encore \u00E9t\u00E9 enregistr\u00E9 pour ce num\u00E9ro. Contactez support@sac-one.com pour faire v\u00E9rifier votre colis.' : response.status === 400 ? 'V\u00E9rifiez le num\u00E9ro de suivi re\u00E7u dans votre e-mail d\u2019exp\u00E9dition.' : response.status === 404 ? 'Aucun suivi accessible avec ces informations. V\u00E9rifiez les informations saisies.' : 'Le suivi est momentan\u00E9ment indisponible. R\u00E9essayez ou contactez notre \u00E9quipe.');\n      }\n      this.render(await response.json()); message.textContent = ''; this.querySelector('[data-title]').focus();\n    } catch(error) { message.textContent = error.name === 'TimeoutError' ? 'Le transporteur met du temps \u00E0 r\u00E9pondre. R\u00E9essayez dans un instant.' : error.message; }\n    finally { button.disabled = false; }\n  }\n  render(data) {\n    const s = scenarios[data.status] || scenarios.NotFound;\n    this.querySelector('.st-result').hidden = false;\n    this.querySelector('[data-order]').textContent = data.order ? `Commande ${data.order}` : 'Votre suivi';\n    const tag = this.querySelector('[data-tag]'); tag.textContent = s.alert ? '\u00C0 v\u00E9rifier' : data.status === 'AvailableForPickup' ? 'Point de retrait' : labels[s.stage] || 'En attente'; tag.dataset.alert = Boolean(s.alert);\n    this.querySelector('[data-title]').textContent = s.title;\n    this.querySelector('.st-description').textContent = s.description;\n    this.querySelector('.st-number').textContent = data.number || '';\n    this.querySelector('.st-updated').textContent = data.updatedLabel ? 'Dernier \u00E9v\u00E9nement : '+data.updatedLabel+' (heure du transporteur)' : data.updated ? `Dernier \u00E9v\u00E9nement : ${dateText(data.updated)}` : '';\n    if(data.verificationMode === 'manual') {\n      const verified = new Intl.DateTimeFormat('fr-FR',{day:'2-digit',month:'2-digit',year:'numeric',hour:'2-digit',minute:'2-digit',timeZone:'Europe/Paris'}).format(new Date(data.checkedAt));\n      this.querySelector('[data-order]').textContent = 'Dernier \u00E9tat v\u00E9rifi\u00E9';\n      this.querySelector('.st-description').textContent = s.description;\n      this.querySelector('.st-updated').textContent = `Derni\u00E8re v\u00E9rification le ${verified} (heure de Paris). Horaires des \u00E9v\u00E9nements indiqu\u00E9s par le transporteur.`;\n      if(data.status !== 'Delivered' && Date.now()-Date.parse(data.checkedAt)>48*60*60*1000) this.querySelector('.st-updated').textContent += ' Ce relev\u00E9 date de plus de 48 heures : contactez notre \u00E9quipe pour un point actualis\u00E9.';\n    }\n    const steps = this.querySelector('.st-steps'); steps.replaceChildren();\n    const visibleSteps = labels.slice(1);\n    const reached = s.alert ? Math.max(0, ...(data.confirmedStages || []).filter(n => n >= 1 && n <= 3)) : Math.max(0, s.stage);\n    visibleSteps.forEach((label, position) => {\n      const stage = position + 1;\n      const done = stage <= reached;\n      const li = document.createElement('li');\n      li.className = 'st-step' + (done ? ' done' : '') + (stage === reached && !s.alert ? ' current' : '');\n      const dot = document.createElement('span'); dot.className = 'st-dot'; dot.textContent = String(stage);\n      const name = document.createElement('strong'); name.textContent = data.status === 'AvailableForPickup' && stage === 3 ? '\u00C0 retirer' : label;\n      li.append(dot, name);\n      if(stage === reached && !s.alert) li.setAttribute('aria-current','step');\n      steps.append(li);\n    });\n    const events = this.querySelector('.st-events'); events.replaceChildren();\n    (data.events || []).slice(0,30).forEach(item=>{const li=document.createElement('li'),title=document.createElement('strong'),time=document.createElement('time');title.textContent=item.label;time.textContent=item.dateLabel || dateText(item.date);if(item.date)time.dateTime=item.date;li.append(title,time);events.append(li)});\n  }\n}\nif(!customElements.get('sacone-tracking')) customElements.define('sacone-tracking',SaconeTracking);\n"],
  "mappings": "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",
  "names": []
}
