| import React from 'react'; |
| import { ECallState } from 'librechat-data-provider'; |
| import { CircleIcon, CircleDotsIcon } from '@librechat/client'; |
|
|
| const CircleRender = ({ rmsLevel, isCameraOn, state }) => { |
| const getIconComponent = (state) => { |
| switch (state) { |
| case ECallState.Thinking: |
| return <CircleDotsIcon />; |
| default: |
| return ( |
| <div className="smooth-transition" style={{ transform: `scale(${transformScale})` }}> |
| <CircleIcon state={state} size="256" /> |
| </div> |
| ); |
| } |
| }; |
|
|
| const baseScale = isCameraOn ? 0.5 : 1; |
| const scaleMultiplier = |
| rmsLevel > 0.08 |
| ? 1.8 |
| : rmsLevel > 0.07 |
| ? 1.6 |
| : rmsLevel > 0.05 |
| ? 1.4 |
| : rmsLevel > 0.01 |
| ? 1.2 |
| : 1; |
|
|
| const transformScale = baseScale * scaleMultiplier; |
|
|
| return getIconComponent(state); |
| }; |
|
|
| export default CircleRender; |
|
|