UNPKG

@true-directive/base

Version:

The set of base classes for the TrueDirective Grid

76 lines (75 loc) 2.86 kB
/** * Информация о разметке строки */ var RowLayout = /** @class */ (function () { function RowLayout() { } /** * Поиск строки по координатам * @param rows Список разметок строк * @param x Координата X * @param y Координата Y * @return Найденная разметка (null если не найдено) */ RowLayout.rowByXY = function (rows, x, y) { for (var i = 0; i < rows.length; i++) { var rl = rows[i]; var yy = rl.clientRect.top; var hh = rl.clientRect.height; if (y >= yy && y < (yy + hh)) { return rl; } } return null; }; /** * Поиск позиции строки для вставки * @param rows Список разметок строк * @param x Координата X * @param y Координата Y * @return Найденная разметка и позиция для вставки (до или после найденной строки) */ RowLayout.rowPosByXY = function (rows, x, y, tree) { if (tree === void 0) { tree = false; } var prev = null; for (var i = 0; i < rows.length; i++) { var rl = rows[i]; var yy = rl.clientRect.top; var xx = rl.clientRect.left; var hh = rl.clientRect.height; var ww = rl.clientRect.width; var h2 = hh / 2; var h13 = hh / 3; var h23 = (2 * hh) / 3; if (x < xx || x > (xx + ww)) { continue; } if (tree) { if (y >= yy && y < (yy + h13)) { return { rl: rl, rl_hover: rl, pos: 'before' }; } if (y > (yy + h23) && y <= (yy + hh)) { return { rl: rl, rl_hover: rl, pos: 'after' }; } if (y >= (yy + h13) && y <= (yy + h23)) { return { rl: rl, rl_hover: rl, pos: 'in' }; } if (i === (rows.length - 1) && y >= (yy + hh)) { return { rl: rl, rl_hover: null, pos: 'last' }; } } else { if (y >= yy && y <= (yy + h2)) { return { rl: rl, rl_hover: rl, pos: 'before' }; } if (y > (yy + h2) && y <= (yy + hh)) { return { rl: rl, rl_hover: rl, pos: 'after' }; } } prev = rl; } return { rl: null, rl_hover: null, pos: '' }; }; return RowLayout; }()); export { RowLayout };