mirror of
https://github.com/danny-avila/LibreChat.git
synced 2025-12-23 20:00:15 +01:00
37 lines
919 B
TypeScript
37 lines
919 B
TypeScript
|
|
import React from 'react';
|
||
|
|
import { CircleIcon, CircleDotsIcon } from '~/components/svg';
|
||
|
|
import { ECallState } from 'librechat-data-provider';
|
||
|
|
|
||
|
|
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;
|