{"version":3,"file":"ScrollRevealHeading-7omlFMiG.js","names":["Typography","Fragment","useEffect","useRef","words","text","matchAll","map","match","index","ScrollRevealHeading","t0","$","_c","title","accent","className","t1","undefined","ref","t2","t3","Symbol","for","group","current","motion","matchMedia","matches","getBoundingClientRect","top","innerHeight","dataset","scrollReveal","stop","window","removeEventListener","check","parts","querySelectorAll","tops","_temp","lineHeight","parseFloat","getComputedStyle","querySelector","forEach","part","line","Math","max","round","style","setProperty","addEventListener","passive","t4","t5","trim","t6","t7","t8","t9","t10","t11","word"],"sources":["../../src/components/features/povio/scroll-reveal-heading.css","../../src/components/features/povio/ScrollRevealHeading.tsx"],"sourcesContent":["@media (prefers-reduced-motion: no-preference) {\n  [data-scroll-reveal=\"waiting\"],\n  [data-scroll-reveal=\"waiting\"] [data-reveal-word] {\n    opacity: 0;\n  }\n  [data-scroll-reveal=\"waiting\"] [data-reveal-word] {\n    filter: blur(8px);\n  }\n  [data-scroll-reveal=\"playing\"] [data-reveal-word] {\n    transition:\n      opacity 900ms cubic-bezier(0.165, 0.84, 0.44, 1) var(--line-delay, 0ms),\n      filter 900ms cubic-bezier(0.165, 0.84, 0.44, 1) var(--line-delay, 0ms);\n  }\n}\n","import { Typography } from \"@povio/ui\";\nimport { Fragment, useEffect, useRef } from \"react\";\nimport \"./scroll-reveal-heading.css\";\n\nfunction words(text: string) {\n  return [...text.matchAll(/[^ ]+/g)].map((match) => (\n    <Fragment key={match.index}>\n      {match.index > 0 && \" \"}\n      <span data-reveal-word=\"\">{match[0]}</span>\n    </Fragment>\n  ));\n}\n\nexport function ScrollRevealHeading({\n  title,\n  accent,\n  className = \"\",\n}: {\n  title: string;\n  accent: string;\n  className?: string;\n}) {\n  const ref = useRef<HTMLDivElement>(null);\n  useEffect(() => {\n    const group = ref.current;\n    const motion = matchMedia(\"(prefers-reduced-motion: reduce)\");\n    // Scroll restoration can expose prerendered content before hydration. Only arm unseen headings.\n    if (!group || motion.matches || group.getBoundingClientRect().top < innerHeight) {\n      return;\n    }\n\n    group.dataset.scrollReveal = \"waiting\";\n    const stop = () => {\n      window.removeEventListener(\"scroll\", check);\n      window.removeEventListener(\"resize\", check);\n      motion.removeEventListener(\"change\", check);\n    };\n    function check() {\n      if (!group) {\n        return;\n      }\n      if (motion.matches) {\n        delete group.dataset.scrollReveal;\n        stop();\n        return;\n      }\n      if (group.getBoundingClientRect().top > innerHeight * 0.85) {\n        return;\n      }\n      // Read the actual line positions at entry so wrapping and viewport changes retain the stagger.\n      const parts = [...group.querySelectorAll<HTMLElement>(\"[data-reveal-word]\")];\n      const tops = parts.map((word) => word.getBoundingClientRect().top);\n      const lineHeight = parseFloat(getComputedStyle(group.querySelector(\"h2\")!).lineHeight);\n      parts.forEach((part, index) => {\n        const line = Math.max(0, Math.round((tops[index] - tops[0]) / lineHeight));\n        part.style.setProperty(\"--line-delay\", `${line * 200}ms`);\n      });\n      group.dataset.scrollReveal = \"playing\";\n      stop();\n    }\n    window.addEventListener(\"scroll\", check, { passive: true });\n    window.addEventListener(\"resize\", check);\n    motion.addEventListener(\"change\", check);\n    return () => {\n      stop();\n      delete group.dataset.scrollReveal;\n    };\n  }, []);\n  return (\n    <div\n      ref={ref}\n      className={`rich_accent_text ${className}`.trim()}\n    >\n      <Typography\n        as=\"h2\"\n        size=\"h2\"\n      >\n        {words(title)}\n        <br />\n        <strong>{words(accent)}</strong>\n      </Typography>\n    </div>\n  );\n}\n"],"mappings":"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"}