function handleClick()

in src/views/htmlcontent/src/js/slick.dragrowselector.ts [282:328]


        function handleClick(e): boolean {
            let cell = _grid.getCellFromEvent(e);
            if (!cell || !_grid.canCellBeActive(cell.row, cell.cell)) {
                return false;
            }

            if (!e.ctrlKey && !e.shiftKey && !e.metaKey) {
                if (cell.cell !== 0) {
                    _ranges = [new Slick.Range(cell.row, cell.cell - 1, cell.row, cell.cell - 1)];
                    setSelectedRanges(_ranges);
                    _grid.setActiveCell(cell.row, cell.cell);
                    return true;
                } else {
                    _ranges = [new Slick.Range(cell.row, 0, cell.row, _grid.getColumns().length - 1)];
                    setSelectedRanges(_ranges);
                    _grid.setActiveCell(cell.row, 1);
                    return true;
                }
            } else if (_grid.getOptions().multiSelect) {
                if (e.ctrlKey || e.metaKey) {
                    if (cell.cell === 0) {
                        _ranges.push(new Slick.Range(cell.row, 0, cell.row, _grid.getColumns().length - 1));
                        _grid.setActiveCell(cell.row, 1);
                    } else {
                        _ranges.push(new Slick.Range(cell.row, cell.cell - 1, cell.row, cell.cell - 1));
                        _grid.setActiveCell(cell.row, cell.cell);
                    }
                } else if (_ranges.length && e.shiftKey) {
                    let last = _ranges.pop();
                    if (cell.cell === 0) {
                        let fromRow = Math.min(cell.row, last.fromRow);
                        let toRow = Math.max(cell.row, last.fromRow);
                        _ranges = [new Slick.Range(fromRow, 0, toRow, _grid.getColumns().length - 1)];
                    } else {
                        let fromRow = Math.min(cell.row, last.fromRow);
                        let fromCell = Math.min(cell.cell - 1, last.fromCell);
                        let toRow = Math.max(cell.row, last.toRow);
                        let toCell = Math.max(cell.cell - 1, last.toCell);
                        _ranges = [new Slick.Range(fromRow, fromCell, toRow, toCell)];
                    }
                }
            }

            setSelectedRanges(_ranges);

            return true;
        }