1import{g as d,j as a,A as v,k as N,W as A,X as j,t as y,C as E}from"./index-CEq6EAUz.js";import{DNA_LEARNED_EVENT as w,undoDnaEvent as S}from"./dna-DhCrjNji.js";import{B as M}from"./brain-CWh3oF8f.js";import"./rhymeDetection-Cidq4TSZ.js";const T=6e3,D=4500,L=45e3;function R(){try{return(document.documentElement.lang||navigator.language||"en").slice(0,2).toLowerCase()}catch{return"en"}}function C(n,e,i){const o=(i==="es"?e==null?void 0:e.label_es:e==null?void 0:e.label_en)||(e==null?void 0:e.label_en)||n.key,t=n.after;let r="";Array.isArray(t)?r=t.slice(0,3).join(", "):typeof t=="number"?r=(e==null?void 0:e.type)==="scale"?`${Math.round(t*100)}%`:String(Math.round(t*10)/10):t!=null&&(r=String(t));const u=i==="es"?"AprendÃ":i==="pt"?"Aprendi":"Learned";return r?`${u}: ${o} â ${r}`:`${u}: ${o}`}function z(){const[n,e]=d.useState(null),i=d.useRef(null),o=d.useRef(0),t=d.useRef(null),r=R();d.useEffect(()=>{let f=!1;const b=async()=>{if(i.current)return i.current;try{const{data:c}=await E.from("dna_trait_catalog").select("key, type, label_en, label_es");f||(i.current=new Map((c||[]).map(s=>[s.key,s])))}catch{i.current=new Map}return i.current},p=async c=>{var x,h;const s=c==null?void 0:c.detail;if(!s||s.silent||!Array.isArray(s.changed)||!s.changed.length||Date.now()-o.current<L)return;const g=await b(),l=[...s.changed].filter(m=>!String(m.key).startsWith("habits.")&&!String(m.key).startsWith("taste.")).sort((m,_)=>Number(_.confidence||0)-Number(m.confidence||0))[0];if(!l||Number(l.confidence||0)<.3)return;o.current=Date.now(),e({text:C(l,g.get(l.key),r),eventId:s.eventId||null,key:l.key}),y("dna_toast_shown",{trait_key:l.key,kind:s.kind}),t.current&&clearTimeout(t.current);const k=typeof window<"u"&&((h=(x=window.matchMedia)==null?void 0:x.call(window,"(max-width: 639px)"))==null?void 0:h.matches);t.current=setTimeout(()=>e(null),k?D:T)};return window.addEventListener(w,p),()=>{f=!0,window.removeEventListener(w,p),t.current&&clearTimeout(t.current)}},[r]);const u=async()=>{if(!(n!=null&&n.eventId)){e(null);return}const f=await S(n.eventId);y("dna_toast_undo",{trait_key:n.key,ok:f}),e(null)};return a.jsx(v,{children:n&&a.jsx(N.div,{initial:{opacity:0,y:16},animate:{opacity:1,y:0},exit:{opacity:0,y:16},className:"fixed inset-x-0 bottom-[calc(env(safe-area-inset-bottom)+76px)] z-[90] flex justify-center px-3 sm:bottom-6",role:"status","aria-live":"polite",children:a.jsxs("div",{className:"flex max-w-[calc(100vw-1.5rem)] items-center gap-2 rounded-full border border-white/10 bg-slate-950/95 px-2.5 py-1.5 text-white shadow-2xl backdrop-blur sm:max-w-md sm:gap-3 sm:rounded-2xl sm:px-3.5 sm:py-2.5",children:[a.jsx("span",{className:"hidden shrink-0 place-items-center rounded-xl bg-emerald-400/15 text-emerald-300 sm:grid sm:h-8 sm:w-8",children:a.jsx(M,{className:"h-4 w-4"})}),a.jsx("p",{className:"min-w-0 flex-1 truncate text-[11px] font-bold sm:text-[12px]",children:n.text}),n.eventId&&a.jsxs("button",{type:"button",onClick:u,className:"inline-flex shrink-0 items-center gap-1 rounded-full bg-white/10 px-2 py-1 text-[10.5px] font-black hover:bg-white/20 sm:rounded-lg sm:text-[11px]",children:[a.jsx(A,{className:"h-3 w-3"})," ",r==="es"?"Deshacer":r==="pt"?"Desfazer":"Undo"]}),a.jsx("button",{type:"button",onClick:()=>e(null),"aria-label":"Dismiss",className:"shrink-0 rounded-md p-0.5 text-white/50 hover:text-white sm:p-1",children:a.jsx(j,{className:"h-3.5 w-3.5"})})]})})})}export{z as default};
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.