{"version":3,"file":"streamAnimationMeta.mjs","names":[],"sources":["../../../src/Markdown/SyntaxMarkdown/streamAnimationMeta.ts"],"sourcesContent":["import { type BlockState } from './useStreamQueue';\n\nexport interface ResolveBlockAnimationMetaOptions {\n  blockCharCount: number;\n  currentCharDelay: number;\n  fadeDuration: number;\n  previousCharDelay?: number;\n  state: BlockState;\n  timelineElapsedMs: number;\n}\n\nexport interface BlockAnimationMeta {\n  charDelay: number;\n  settled: boolean;\n  timelineElapsedMs: number;\n}\n\nconst isActiveBlock = (state: BlockState) => {\n  return state === 'animating' || state === 'streaming';\n};\n\nexport const resolveBlockAnimationMeta = ({\n  blockCharCount,\n  currentCharDelay,\n  fadeDuration,\n  previousCharDelay,\n  state,\n  timelineElapsedMs,\n}: ResolveBlockAnimationMetaOptions): BlockAnimationMeta => {\n  const charDelay = isActiveBlock(state)\n    ? currentCharDelay\n    : (previousCharDelay ?? currentCharDelay);\n  const latestCharStart = Math.max(0, (blockCharCount - 1) * charDelay);\n  const settled = state === 'revealed' && timelineElapsedMs >= latestCharStart + fadeDuration;\n\n  return {\n    charDelay,\n    settled,\n    timelineElapsedMs: settled ? latestCharStart + fadeDuration : timelineElapsedMs,\n  };\n};\n"],"mappings":";AAiBA,MAAM,iBAAiB,UAAsB;AAC3C,QAAO,UAAU,eAAe,UAAU;;AAG5C,MAAa,6BAA6B,EACxC,gBACA,kBACA,cACA,mBACA,OACA,wBAC0D;CAC1D,MAAM,YAAY,cAAc,MAAM,GAClC,mBACC,qBAAqB;CAC1B,MAAM,kBAAkB,KAAK,IAAI,IAAI,iBAAiB,KAAK,UAAU;CACrE,MAAM,UAAU,UAAU,cAAc,qBAAqB,kBAAkB;AAE/E,QAAO;EACL;EACA;EACA,mBAAmB,UAAU,kBAAkB,eAAe;EAC/D"}