Home / Function/ useBarAnimator() — ui Function Reference

useBarAnimator() — ui Function Reference

Architecture documentation for the useBarAnimator() function in elevenlabs.tsx from the ui codebase.

Entity Profile

Dependency Diagram

graph TD
  59e15c16_c47d_dcd9_417a_4962ff2a5a1a["useBarAnimator()"]
  a1a6ebaf_3f49_5bb2_b404_b9f06dce2cab["elevenlabs.tsx"]
  59e15c16_c47d_dcd9_417a_4962ff2a5a1a -->|defined in| a1a6ebaf_3f49_5bb2_b404_b9f06dce2cab
  f7c88c80_61a2_5745_3423_ce9c217de6c5["BarVisualizerComponent()"]
  f7c88c80_61a2_5745_3423_ce9c217de6c5 -->|calls| 59e15c16_c47d_dcd9_417a_4962ff2a5a1a
  37f4e196_5941_fb94_90cf_ecd3f4694296["generateListeningSequenceBar()"]
  59e15c16_c47d_dcd9_417a_4962ff2a5a1a -->|calls| 37f4e196_5941_fb94_90cf_ecd3f4694296
  5bc63519_6856_0014_dbe5_d639d3ac1fe2["generateConnectingSequenceBar()"]
  59e15c16_c47d_dcd9_417a_4962ff2a5a1a -->|calls| 5bc63519_6856_0014_dbe5_d639d3ac1fe2
  style 59e15c16_c47d_dcd9_417a_4962ff2a5a1a fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

apps/v4/registry/bases/base/blocks/elevenlabs.tsx lines 381–435

export const useBarAnimator = (
  state: AnimationState,
  columns: number,
  interval: number
): number[] => {
  const indexRef = useRef(0)
  const [currentFrame, setCurrentFrame] = useState<number[]>([])
  const animationFrameId = useRef<number | null>(null)

  // Memoize sequence generation
  const sequence = useMemo(() => {
    if (state === "thinking" || state === "listening") {
      return generateListeningSequenceBar(columns)
    } else if (state === "connecting" || state === "initializing") {
      return generateConnectingSequenceBar(columns)
    } else if (state === undefined || state === "speaking") {
      return [new Array(columns).fill(0).map((_, idx) => idx)]
    } else {
      return [[]]
    }
  }, [state, columns])

  useEffect(() => {
    indexRef.current = 0
    setTimeout(() => {
      setCurrentFrame(sequence[0] || [])
    }, 0)
  }, [sequence])

  useEffect(() => {
    let startTime = performance.now()

    const animate = (time: DOMHighResTimeStamp) => {
      const timeElapsed = time - startTime

      if (timeElapsed >= interval) {
        indexRef.current = (indexRef.current + 1) % sequence.length
        setCurrentFrame(sequence[indexRef.current] || [])
        startTime = time
      }

      animationFrameId.current = requestAnimationFrame(animate)
    }

    animationFrameId.current = requestAnimationFrame(animate)

    return () => {
      if (animationFrameId.current !== null) {
        cancelAnimationFrame(animationFrameId.current)
      }
    }
  }, [interval, sequence])

  return currentFrame
}

Subdomains

Frequently Asked Questions

What does useBarAnimator() do?
useBarAnimator() is a function in the ui codebase, defined in apps/v4/registry/bases/base/blocks/elevenlabs.tsx.
Where is useBarAnimator() defined?
useBarAnimator() is defined in apps/v4/registry/bases/base/blocks/elevenlabs.tsx at line 381.
What does useBarAnimator() call?
useBarAnimator() calls 2 function(s): generateConnectingSequenceBar, generateListeningSequenceBar.
What calls useBarAnimator()?
useBarAnimator() is called by 1 function(s): BarVisualizerComponent.

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free