"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.sizeHandlers = void 0;
var tslib_1 = require("tslib");
var common_1 = require("../common");
function sizeHandlers(grid) {
    function afterColumnResize(index, width, isDoubleClick) {
        var _a;
        if (grid.isInitialized) {
            var key = common_1.coord.cell.toKey(index, undefined);
            width = isDoubleClick
                ? grid.defaults.columnWidth
                : Math.max(grid.defaults.columnWidthMin, width);
            grid
                .changeColumns((_a = {}, _a[key] = toColumn(grid.data.columns[key], { grid: { width: width } }), _a), { source: isDoubleClick ? 'RESET/doubleClick' : 'UPDATE' })
                .redraw();
        }
    }
    function afterRowResize(index, height, isDoubleClick) {
        var _a;
        if (grid.isInitialized) {
            var key = common_1.coord.cell.toKey(undefined, index);
            height = isDoubleClick
                ? grid.defaults.rowHeight
                : Math.max(grid.defaults.rowHeightMin, height);
            grid
                .changeRows((_a = {}, _a[key] = toRow(grid.data.rows[key], { grid: { height: height } }), _a), { source: isDoubleClick ? 'RESET/doubleClick' : 'UPDATE' })
                .redraw();
        }
    }
    function modifyColWidth(width, index) {
        var _a, _b;
        if (grid.isInitialized) {
            var key = common_1.coord.cell.toKey(index, undefined);
            var column = grid.data.columns[key];
            var props = column ? column.props : undefined;
            width =
                props && ((_a = props.grid) === null || _a === void 0 ? void 0 : _a.width) !== undefined ? (_b = props.grid) === null || _b === void 0 ? void 0 : _b.width : grid.defaults.columnWidth;
        }
        return width;
    }
    function modifyRowHeight(height, index) {
        var _a, _b;
        var key = common_1.coord.cell.toKey(undefined, index);
        var row = grid.data.rows[key];
        var props = row ? row.props : undefined;
        height =
            props && ((_a = props.grid) === null || _a === void 0 ? void 0 : _a.height) !== undefined ? (_b = props.grid) === null || _b === void 0 ? void 0 : _b.height : grid.defaults.rowHeight;
        return height;
    }
    return {
        afterColumnResize: afterColumnResize,
        afterRowResize: afterRowResize,
        modifyColWidth: modifyColWidth,
        modifyRowHeight: modifyRowHeight,
    };
}
exports.sizeHandlers = sizeHandlers;
var toColumn = function (input, props) {
    var res = tslib_1.__assign({}, (input || {}));
    return tslib_1.__assign(tslib_1.__assign({}, res), { props: tslib_1.__assign(tslib_1.__assign({}, (res.props || {})), props) });
};
var toRow = function (input, props) {
    var row = tslib_1.__assign({}, (input || {}));
    return tslib_1.__assign(tslib_1.__assign({}, row), { props: tslib_1.__assign(tslib_1.__assign({}, (row.props || {})), props) });
};
