1import{j as l}from"./vendor-query-C6SyRbdw.js";import{r as e}from"./vendor-react-DxfWP9Wl.js";const h=e.memo(({text:a,className:u="",typingSpeed:o=50,startDelay:c=0,as:p="h2"})=>{const[f,m]=e.useState(""),[d,y]=e.useState(!1),[t,g]=e.useState(!1),i=e.useRef(null);return e.useEffect(()=>{const r=new IntersectionObserver(s=>{s.forEach(n=>{n.isIntersecting&&!t&&g(!0)})},{threshold:.3});return i.current&&r.observe(i.current),()=>r.disconnect()},[t]),e.useEffect(()=>{if(!t)return;const r=setTimeout(()=>{let s=0;const n=setInterval(()=>{s<=a.length?(m(a.slice(0,s)),s++):(clearInterval(n),y(!0))},o);return()=>clearInterval(n)},c);return()=>clearTimeout(r)},[t,a,o,c]),l.jsxs(p,{ref:i,className:u,children:[t?f:"",l.jsx("span",{className:`inline-block w-0.5 h-[0.9em] bg-cyan-400 ml-1 align-middle transition-opacity duration-300 ${d||!t?"opacity-0":"animate-pulse"}`})]})});h.displayName="TypingHeader";export{h as default}; 2//# sourceMappingURL=TypingHeader-DjXez8r3.js.map
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.