1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- "use strict";
- Object.defineProperty(exports, "__esModule", { value: true });
- exports.createSpanningCellManager = void 0;
- const alignSpanningCell_1 = require("./alignSpanningCell");
- const calculateSpanningCellWidth_1 = require("./calculateSpanningCellWidth");
- const makeRangeConfig_1 = require("./makeRangeConfig");
- const utils_1 = require("./utils");
- const findRangeConfig = (cell, rangeConfigs) => {
- return rangeConfigs.find((rangeCoordinate) => {
- return (0, utils_1.isCellInRange)(cell, rangeCoordinate);
- });
- };
- const getContainingRange = (rangeConfig, context) => {
- const width = (0, calculateSpanningCellWidth_1.calculateSpanningCellWidth)(rangeConfig, context);
- const wrappedContent = (0, alignSpanningCell_1.wrapRangeContent)(rangeConfig, width, context);
- const alignedContent = (0, alignSpanningCell_1.alignVerticalRangeContent)(rangeConfig, wrappedContent, context);
- const getCellContent = (rowIndex) => {
- const { topLeft } = rangeConfig;
- const { drawHorizontalLine, rowHeights } = context;
- const totalWithinHorizontalBorderHeight = rowIndex - topLeft.row;
- const totalHiddenHorizontalBorderHeight = (0, utils_1.sequence)(topLeft.row + 1, rowIndex).filter((index) => {
- /* istanbul ignore next */
- return !(drawHorizontalLine === null || drawHorizontalLine === void 0 ? void 0 : drawHorizontalLine(index, rowHeights.length));
- }).length;
- const offset = (0, utils_1.sumArray)(rowHeights.slice(topLeft.row, rowIndex)) + totalWithinHorizontalBorderHeight - totalHiddenHorizontalBorderHeight;
- return alignedContent.slice(offset, offset + rowHeights[rowIndex]);
- };
- const getBorderContent = (borderIndex) => {
- const { topLeft } = rangeConfig;
- const offset = (0, utils_1.sumArray)(context.rowHeights.slice(topLeft.row, borderIndex)) + (borderIndex - topLeft.row - 1);
- return alignedContent[offset];
- };
- return {
- ...rangeConfig,
- extractBorderContent: getBorderContent,
- extractCellContent: getCellContent,
- height: wrappedContent.length,
- width,
- };
- };
- const inSameRange = (cell1, cell2, ranges) => {
- const range1 = findRangeConfig(cell1, ranges);
- const range2 = findRangeConfig(cell2, ranges);
- if (range1 && range2) {
- return (0, utils_1.areCellEqual)(range1.topLeft, range2.topLeft);
- }
- return false;
- };
- const hashRange = (range) => {
- const { row, col } = range.topLeft;
- return `${row}/${col}`;
- };
- const createSpanningCellManager = (parameters) => {
- const { spanningCellConfigs, columnsConfig } = parameters;
- const ranges = spanningCellConfigs.map((config) => {
- return (0, makeRangeConfig_1.makeRangeConfig)(config, columnsConfig);
- });
- const rangeCache = {};
- let rowHeights = [];
- return { getContainingRange: (cell, options) => {
- var _a;
- const originalRow = (options === null || options === void 0 ? void 0 : options.mapped) ? (0, utils_1.findOriginalRowIndex)(rowHeights, cell.row) : cell.row;
- const range = findRangeConfig({ ...cell,
- row: originalRow }, ranges);
- if (!range) {
- return undefined;
- }
- if (rowHeights.length === 0) {
- return getContainingRange(range, { ...parameters,
- rowHeights });
- }
- const hash = hashRange(range);
- (_a = rangeCache[hash]) !== null && _a !== void 0 ? _a : (rangeCache[hash] = getContainingRange(range, { ...parameters,
- rowHeights }));
- return rangeCache[hash];
- },
- inSameRange: (cell1, cell2) => {
- return inSameRange(cell1, cell2, ranges);
- },
- rowHeights,
- setRowHeights: (_rowHeights) => {
- rowHeights = _rowHeights;
- } };
- };
- exports.createSpanningCellManager = createSpanningCellManager;
- //# sourceMappingURL=spanningCellManager.js.map
|