"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.useLogic = void 0;
const react_1 = require("react");
const useId_1 = require("../../../useId");
const computePositions_1 = require("./utils/computePositions");
const createInitialSliders_1 = require("./utils/createInitialSliders");
const useLogic = ({ setColumnsWidths, columnsWidths, }) => {
    const id = (0, useId_1.useId)();
    const [sliders, setSliders] = (0, react_1.useState)(() => (0, createInitialSliders_1.createInitialSliders)(columnsWidths));
    // Отдельный кешированная копия слайдеров, нужна для того,
    // чтобы на его основании рассчитывалась разница между текущим стейтом
    // и стейтом положения слайдера, пока пользователь его двигает,
    // она изменяется, только когда пользователь отпустит ползунок,
    // а пока он его двигает, изменяется просто sliders
    const [memoizedSliders, setMemoizedSliders] = (0, react_1.useState)(sliders);
    const handleChange = (e) => {
        const computed = (0, computePositions_1.computePositions)(e.currentTarget, columnsWidths, memoizedSliders);
        if (!computed) {
            return;
        }
        setSliders(computed.newSliders);
    };
    const handleKeyMouseUp = (e) => {
        const computed = (0, computePositions_1.computePositions)(e.currentTarget, columnsWidths, memoizedSliders);
        if (!computed) {
            return;
        }
        setSliders(computed.newSliders);
        setMemoizedSliders(computed.newSliders);
        setColumnsWidths(computed.newColumnsWidths);
    };
    return {
        id,
        handleChange,
        handleKeyMouseUp,
        sliders,
    };
};
exports.useLogic = useLogic;
