File size: 1,504 Bytes
79278ec
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
import LlmAnswerProps from "./LlmAnswerProps";
import "./LlmAnswer.scss";
import { useState, useEffect } from "react";
import TextArea from "@/components/generics/textArea/TextArea";
import "@/components/views/requestTextArea/RequestTextArea.scss";

const LlmAnswer = ({ value, loading }: LlmAnswerProps) => {
  const [placeholder, setPlaceholder] = useState("Среднее время ожидания ответа - 110 секунд...");

  useEffect(() => {
    if (loading) {
      const intervalId = setInterval(() => {
        setPlaceholder((prev) => {
          const dots = (prev.match(/\./g) || []).length;
          if (dots < 3) {
            return "Среднее время ожидания ответа - 110 секунд" + ".".repeat(dots + 1);
          }
          return "Среднее время ожидания ответа - 110 секунд";
        });
      }, 500);
      return () => clearInterval(intervalId);
    } else {
      setPlaceholder("Среднее время ожидания ответа - 110 секунд...");
    }
  }, [loading]);

  return (
    <div className="llm_answer">
      <div className="label">
        <span>Ответ ЛЛМ</span>
      </div>
      <TextArea
        className={`result_text ${loading ? "loading" : ""}`}
        value={loading ? "" : value}
        onInput={() => {}}
        onKeyDown={() => {}}
        rows={1}
        placeholder={placeholder}
        readOnly
      />
    </div>
  );
};

export default LlmAnswer;