1import"../chunks/Cu8NcaqY.js";import{a as ut,o as ft}from"../chunks/f-wUHtzb.js";import{p as xt,a as x,b as bt,e as r,j as _,n as ke,r as t,h as s,g as e,s as i,i as B,d as $e,t as h,f as Ce,c as pt,l as _t}from"../chunks/rhkUP96i.js";import{d as mt,s as c}from"../chunks/D8T4iVgi.js";import{i as E}from"../chunks/DNikmNGR.js";import{e as gt,i as yt}from"../chunks/B0ezZpuM.js";import{a as ht,b as le,r as De,s as wt}from"../chunks/Dry2qJan.js";import{b as Te}from"../chunks/BlRkb2_w.js";import{a as St,s as At}from"../chunks/Uh-VvM2r.js";import{p as Et}from"../chunks/CJNu0443.js";import{g as kt}from"../chunks/Dvw-hdFL.js";import{f as ce}from"../chunks/gn0RT2cR.js";import{g as $t,p as Ct,d as Dt,c as Tt,s as Bt}from"../chunks/7gOqVZ_t.js";import{A as It}from"../chunks/CDSMX7z-.js";import{M as Pt}from"../chunks/CB7SVnPU.js";(function(){try{var I=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{};I.SENTRY_RELEASE={id:"2c2f6f44af8b47e387232642c241dd34"};var G=new I.Error().stack;G&&(I._sentryDebugIds=I._sentryDebugIds||{},I._sentryDebugIds[G]="1223d6e0-9680-4620-88ed-8048ae6c475b",I._sentryDebugIdIdentifier="sentry-dbid-1223d6e0-9680-4620-88ed-8048ae6c475b")}catch{}})();var jt=_('<div class="flex justify-center py-10"><div class="h-7 w-7 animate-spin rounded-full border-2 border-emerald-600 border-t-transparent"></div></div>'),zt=_('<div class="rounded-lg border border-red-200 bg-red-50 px-4 py-3 text-sm text-red-700"> </div>'),Lt=_('<div class="rounded-lg border border-red-200 bg-red-50 px-4 py-3 text-sm text-red-700"> </div>'),Rt=_('<div class="rounded-xl border border-slate-100 bg-slate-50 p-4"><div class="text-xs font-semibold text-slate-500 mb-1"> </div> <div class="font-semibold text-slate-900"> </div> <div class="text-sm text-slate-700 mt-1"> </div></div>'),Mt=_('<section class="rounded-2xl border border-slate-200 bg-white p-5 space-y-3"><h2 class="text-sm font-semibold uppercase tracking-wide text-slate-500">Aperçu</h2> <div class="space-y-3"></div></section>'),qt=_('<div class="space-y-1"><div class="text-xs text-slate-500">Progression</div> <div class="h-2 rounded-full bg-slate-100 overflow-hidden"><div class="h-full bg-amber-500 transition-all"></div></div> <div class="text-xs text-slate-500"> </div></div>'),Nt=_('<div class="rounded-lg border border-red-200 bg-red-50 px-4 py-3 text-sm text-red-700"><div class="font-semibold mb-0.5">Erreur</div> <div class="font-mono text-xs"> </div></div>'),Ot=_('<section class="rounded-2xl border border-slate-200 bg-white p-5 space-y-3"><h2 class="text-sm font-semibold uppercase tracking-wide text-slate-500">Statistiques</h2> <div class="grid grid-cols-2 sm:grid-cols-4 gap-4"><div><div class="text-xs text-slate-500">Audience</div> <div class="text-xl font-bold text-slate-900"> </div></div> <div><div class="text-xs text-slate-500">Envoyés</div> <div class="text-xl font-bold text-emerald-600"> </div></div> <div><div class="text-xs text-slate-500">Ãchecs</div> <div class="text-xl font-bold text-red-600"> </div></div> <div><div class="text-xs text-slate-500">Démarré</div> <div class="text-xs text-slate-700"> </div></div></div> <!> <!></section>'),Ut=_("<div> </div>"),Ft=_('<div class="flex flex-wrap items-center gap-3"><button class="rounded-xl bg-emerald-600 px-5 py-2.5 text-sm font-semibold text-white hover:bg-emerald-700 disabled:opacity-50">Envoyer maintenant</button> <div class="flex items-center gap-2"><input type="datetime-local" class="rounded-lg border border-slate-200 bg-slate-50 px-3 py-2 text-sm text-slate-900 focus:border-emerald-600 focus:outline-none"/> <button class="rounded-xl border border-emerald-600 px-4 py-2 text-sm font-semibold text-emerald-700 hover:bg-emerald-50 disabled:opacity-50">Programmer</button></div> <button class="rounded-xl border border-red-200 bg-white px-4 py-2 text-sm font-semibold text-red-600 hover:bg-red-50 disabled:opacity-50">Supprimer le brouillon</button></div>'),Gt=_('<button class="rounded-xl border border-red-200 bg-white px-4 py-2 text-sm font-semibold text-red-600 hover:bg-red-50 disabled:opacity-50">Annuler la programmation</button>'),Vt=_('<div class="text-xs text-red-600"> </div>'),Yt=_(`<div class="fixed inset-0 z-50 flex items-center justify-center bg-black/60 p-4" role="dialog" aria-modal="true"><div class="w-full max-w-md rounded-2xl bg-white p-6 space-y-4"><h3 class="text-lg font-bold text-slate-900">Confirmer l'envoi à grande échelle</h3> <p class="text-sm text-slate-700">Vous allez envoyer une notification à <strong class="text-amber-600"> </strong> utilisateurs. Cette action est irréversible.</p> <div class="space-y-1"><label class="text-xs font-medium text-slate-500" for="confirm-count">Saisissez le nombre exact pour confirmer</label> <input id="confirm-count" type="text" class="w-full rounded-lg border border-slate-200 bg-slate-50 px-3 py-2 text-sm text-slate-900 focus:border-amber-600 focus:outline-none"/></div> <!> <div class="flex justify-end gap-2 pt-2"><button class="rounded-xl border border-slate-200 bg-white px-4 py-2 text-sm font-semibold text-slate-700 hover:bg-slate-50">Annuler</button> <button class="rounded-xl bg-amber-600 px-4 py-2 text-sm font-semibold text-white hover:bg-amber-700 disabled:opacity-50">Envoyer</button></div></div></div>`),Ht=_('<div class="flex flex-wrap items-start justify-between gap-4"><div class="flex items-start gap-3"><!> <div><h1 class="text-2xl font-bold text-slate-900"> </h1> <div class="mt-1 flex items-center gap-2"><span> </span> <code class="text-xs font-mono text-slate-400"> </code></div></div></div></div> <!> <section class="rounded-2xl border border-slate-200 bg-white p-5 space-y-3"><h2 class="text-sm font-semibold uppercase tracking-wide text-slate-500">Audience</h2> <div class="flex flex-wrap items-center gap-4"><div class="text-3xl font-bold text-slate-900"> </div> <div class="text-sm text-slate-600"> </div></div></section> <!> <!> <section class="rounded-2xl border border-slate-200 bg-white p-5 space-y-2 text-xs text-slate-500"><div> </div> <!></section> <section class="space-y-3"><!></section> <!>',1),Jt=_('<div class="space-y-6"><a href="/admin-7f3a9c2d/broadcasts" class="inline-flex items-center gap-1.5 text-sm text-slate-500 hover:text-slate-900"><!> Retour aux campagnes</a> <!></div>');function cr(I,G){xt(G,!0);const ve=()=>
1At(Et,"$page",Be),[Be,Ie]=St(),Q=$e(()=>ve().params.id??"");let a=B(null),m=B(null),V=B(!0),q=B(""),w=B(!1),u=B(""),N=B(""),Y=B(!1),H=B(""),J=null;const Pe={draft:"Brouillon",scheduled:"Programmé",sending:"En cours d'envoi",sent:"Envoyé",failed:"Ãchec",cancelled:"Annulé"},je={draft:"bg-slate-100 text-slate-600",scheduled:"bg-blue-50 text-blue-600 border border-blue-200",sending:"bg-amber-50 text-amber-700 border border-amber-200",sent:"bg-emerald-50 text-emerald-700 border border-emerald-200",failed:"bg-red-50 text-red-600 border border-red-200",cancelled:"bg-slate-50 text-slate-500 border border-slate-200"},ue={fr:"Français",en:"English",ar:"Ø§ÙØ¹Ø±Ø¨ÙØ©"};async function W(){if(i(V,!0),i(q,""),!e(Q)){i(q,"ID manquant"),i(V,!1);return}try{i(a,await $t(e(Q)),!0);try{i(m,await Ct(e(Q)),!0)}catch(d){console.warn("Preview indisponible",d),i(m,null)}}catch(d){const o=d;o.status===404?i(q,"Cette campagne est introuvable."):i(q,o.detail??o.message??"Erreur",!0)}finally{i(V,!1)}}function fe(){xe(),J=setInterval(()=>{e(a)&&(e(a).status==="sending"||e(a).status==="scheduled")&&W()},1e4)}function xe(){J&&(clearInterval(J),J=null)}ut(async()=>{await W(),fe()}),ft(xe);function O(d){return d==null?"â":d.toLocaleString("fr-FR")}function ze(d){const o=d.audience_filter||{},f=[];return o.lang&&f.push(`Langue : ${ue[o.lang]??o.lang}`),o.preferred_class&&f.push(`Classe : ${o.preferred_class.toUpperCase()}`),o.country&&f.push(`Pays : ${o.country}`),o.active_within_days&&f.push(`Actifs ⤠${o.active_within_days}j`),o.has_push_token===!1?f.push("Sans filtre token"):f.push("Avec token push"),f.length>0?f.join(" · "):"Tous les utilisateurs"}function be(d){return d.audience_count?Math.min(100,Math.round(d.sent_count/d.audience_count*100)):0}function Le(){i(u,""),i(H,""),i(Y,!0)}async function X(d,o=null){if(e(a)){i(w,!0),i(u,"");try{i(a,await Bt(e(a).id,d,o),!0),i(Y,!1),fe()}catch(f){const U=f;i(u,U.detail??U.message??"Erreur",!0)}finally{i(w,!1)}}}async function Re(){if(e(a)){if(!e(m)){i(u,"Aperçu indisponible. Rafraîchissez la page avant d'envoyer.");return}if(e(m).requires_confirmation){Le();return}await X(null)}}async function Me(){if(!e(a)||!e(m))return;const d=e(m).audience_count;if(Number(e(H).replace(/\s/g,""))!==d){i(u,`Saisissez ${d} pour confirmer.`);return}await X(null,d)}async function qe(){if(!e(a)||!e(m)){i(u,"Aperçu indisponible. Rafraîchissez la page.");return}if(!e(N)){i(u,"Choisissez une date.");return}const d=new Date(e(N)).toISOString(),o=e(m).requires_confirmation?e(m).audience_count:null;await X(d,o)}async function Ne(){if(e(a)&&confirm("Annuler l'envoi programmé ?")){i(w,!0),i(u,"");try{await Tt(e(a).id),await W()}catch(d){const o=d;i(u,o.detail??o.message??"Erreur",!0)}finally{i(w,!1)}}}async function Oe(){if(e(a)&&confirm("Supprimer définitivement ce brouillon ?")){i(w,!0),i(u,"");try{await Dt(e(a).id),kt("/admin-7f3a9c2d/broadcasts")}catch(d){const o=d;i(u,o.detail??o.message??"Erreur",!0),i(w,!1)}}}var Z=Jt(),ee=r(Z),Ue=r(ee);It(Ue,{class:"h-4 w-4"}),ke(),t(ee);var Fe=s(ee,2);{var Ge=d=>{var o=jt();x(d,o)},Ve=d=>{var o=zt(),f=r(o,!0);t(o),h(()=>c(f,e(q))),x(d,o)},Ye=d=>{var o=Ht(),f=Ce(o),U=r(f),pe=r(U);Pt(pe,{class:"h-6 w-6 text-emerald-600 mt-1"});var _e=s(pe,2),te=r(_e),He=r(te,!0);t(te);var me=s(te,2),K=r(me),Je=r(K,!0);t(K);var ge=s(K,2),Ke=r(ge,!0);t(ge),t(me),t(_e),t(U),t(f);var ye=s(f,2);{var Qe=l=>{var n=Lt(),v=r(n,!0);t(n),h(()=>c(v,e(u))),x(l,n)};E(ye,l=>{e(u)&&l(Qe)})}var re=s(ye,2),he=s(r(re),2),ae=r(he),We=r(ae,!0);t(ae);var we=s(ae,2),Xe=r(we,!0);t(we),t(he),t(re);var Se=s(re,2);{var Ze=l=>{var n=Mt(),v=s(r(n),2);gt(v,21,()=>Object.entries(e(m).preview),yt,(b,S)=>{var k=$e(()=>_t(e(S),2));let p=()=>e(k)[0],y=()=>e(k)[1];var z=pt(),L=Ce(z);{var R=P=>{var $=Rt(),g=r($),C=r(g,!0);t(g);var A=s(g,2),oe=r(A,!0);t(A);var M=s(A,2),ne=r(M,!0);t(M),t($),h(()=>{c(C,ue[p()]??p()),le(A,"dir",p()==="ar"?"rtl":"ltr"),c(oe,y().title),A.dir=A.dir,le(M,"dir",p()==="ar"?"rtl":"ltr"),c(ne,y().body),M.dir=M.dir}),x(P,$)};E(L,P=>{(y().title||y().body)&&P(R)})}x(b,z)}),t(v),t(n),x(l,n)};E(Se,l=>{e(m)&&l(Ze)})}var Ae=s(Se,2);{var et=l=>{var n=Ot(),v=s(r(n),2),b=r(v),S=s(r(b),2),k=r(S,!0);t(S),t(b);var p=s(b,2),y=s(r(p),2),z=r(y,!0);t(y),t(p);var L=s(p,2),R=s(r(L),2),P=r(R,!0);t(R),t(L);var $=s(L,2),g=s(r($),2),C=r(g,!0);t(g),t($),t(v);var A=s(v,2);{var oe=D=>{var T=qt(),j=s(r(T),2),F=r(j);t(j);var Ee=s(j,2),lt=r(Ee);t(Ee),t(T),h((ct,vt)=>{wt(F,`width: ${ct??""}%`),c(lt,`${vt??""}%`)},[()=>be(e(a)),()=>be(e(a))]),x(D,T)};E(A,D=>{e(a).status==="sending"&&D(oe)})}var M=s(A,2);{var ne=D=>{var T=Nt(),j=s(r(T),2),F=r(j,!0);t(j),t(T),h(()=>c(F,e(a).error_message)),x(D,T)};E(M,D=>{e(a).status==="failed"&&e(a).error_message&&D(ne)})}t(n),h((D,T,j,F)=>{c(k,D),c(z,T),c(P,j),c(C,F)},[()=>O(e(a).audience_count),()=>O(e(a).sent_count),()=>O(e(a).failed_count),()=>e(a).sent_at?ce(e(a).sent_at):"â"]),x(l,n)};E(Ae,l=>{(e(a).status==="sending"||e(a).status==="sent"||e(a).status==="failed")&&l(et)})}var se=s(Ae,2),ie=r(se),tt=r(ie);t(ie);var rt=s(ie,2);{var at=l=>{var n=Ut(),v=r(n);t(n),h(b=>c(v,`Programmée pour le ${b??""}`),[()=>ce(e(a).scheduled_at)]),x(l,n)};E(rt,l=>{e(a).scheduled_at&&l(at)})}t(se);var de=s(se,2),st=r(de);{var it=l=>{var n=Ft(),v=r(n);v.__click=Re;var b=s(v,2),S=r(b);De(S);var k=s(S,2);k.__click=qe,t(b);var p=s(b,2);p.__click=Oe,t(n),h(()=>{v.disabled=e(w),k.disabled=e(w)||!e(N),p.disabled=e(w)}),Te(S,()=>e(N),y=>i(N,y)),x(l,n)},dt=l=>{var n=Gt();n.__click=Ne,h(()=>n.disabled=e(w)),x(l,n)};E(st,l=>{e(a).status==="draft"?l(it):e(a).status==="scheduled"&&l(dt,1)})}t(de);var ot=s(de,2);{var nt=l=>{var n=Yt(),v=r(n),b=s(r(v),2),S=s(r(b)),k=r(S,!0);t(S),ke(),t(b);var p=s(b,2),y=s(r(p),2);De(y),t(p);var z=s(p,2);{var L=g=>{var C=Vt(),A=r(C,!0);t(C),h(()=>c(A,e(u))),x(g,C)};E(z,g=>{e(u)&&g(L)})}var R=s(z,2),P=r(R);P.__click=()=>{i(Y,!1),i(u,"")};var $=s(P,2);$.__click=Me,t(R),t(v),t(n),h((g,C)=>{c(k,g),le(y,"placeholder",C),$.disabled=e(w)},[()=>O(e(m)?.audience_count??e(a).audience_count),()=>String(e(m)?.audience_count??e(a).audience_count??"")]),Te(y,()=>e(H),g=>i(H,g)),x(l,n)};E(ot,l=>{e(Y)&&l(nt)})}h((l,n,v)=>{c(He,e(a).name),ht(K,1,`inline-flex rounded-full px-2.5 py-0.5 text-xs font-semibold ${je[e(a).status]??""}`),c(Je,Pe[e(a).status]),c(Ke,e(a).notif_type),c(We,l),c(Xe,n),c(tt,`Créée le ${v??""}`)},[()=>O(e(m)?.audience_count??e(a).audience_count),()=>ze(e(a)),()=>ce(e(a).created_at)]),x(d,o)};E(Fe,d=>
1{e(V)?d(Ge):e(q)?d(Ve,1):e(a)&&d(Ye,2)})}t(Z),x(I,Z),bt(),Ie()}mt(["click"]);export{cr as component};
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.