File size: 1,130 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
import React, { useState } from "react";
import "./SizeChanger.scss";
import { SizeChangerProps } from "./SizeChangerProps";

const SizeChanger = ({ left, right }: SizeChangerProps) => {
  const [leftWidth, setLeftWidth] = useState(600); // Начальная ширина левого блока

  const handleMouseDown = (e: React.MouseEvent) => {
    e.preventDefault();

    const startX = e.clientX;

    const onMouseMove = (e: MouseEvent) => {
      const newWidth = leftWidth + e.clientX - startX;
      setLeftWidth(newWidth);
    };

    const onMouseUp = () => {
      document.removeEventListener("mousemove", onMouseMove);
      document.removeEventListener("mouseup", onMouseUp);
    };

    document.addEventListener("mousemove", onMouseMove);
    document.addEventListener("mouseup", onMouseUp);
  };

  return (
    <div className="resizable-container">
      <div className="left-pane" style={{ width: `${leftWidth}px` }}>
        {right}
      </div>
      <div className="resizer" onMouseDown={handleMouseDown} />
      <div className="right-pane">{left}</div>
    </div>
  );
};

export default SizeChanger;