@native-html/heuristic-table-plugin
Version:
🔠A 100% native component using heuristics to render tables in react-native-render-html
64 lines (48 loc) • 2.06 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _groupBy = _interopRequireDefault(require("ramda/src/groupBy"));
var _prop = _interopRequireDefault(require("ramda/src/prop"));
var _pipe = _interopRequireDefault(require("ramda/src/pipe"));
var _reduce = _interopRequireDefault(require("ramda/src/reduce"));
var _map = _interopRequireDefault(require("ramda/src/map"));
var _flatten = _interopRequireDefault(require("ramda/src/flatten"));
var _values = _interopRequireDefault(require("ramda/src/values"));
var _mapObjIndexed = _interopRequireDefault(require("ramda/src/mapObjIndexed"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
const getColumnMetrics = (0, _pipe.default)((0, _map.default)((0, _prop.default)('constraints')), (0, _reduce.default)((columnConstraints, cellConstraints) => {
return {
minWidth: Math.max(columnConstraints.minWidth, cellConstraints.minWidth),
contentDensity: columnConstraints.contentDensity + cellConstraints.contentDensity,
spread: Math.max(columnConstraints.spread, cellConstraints.contentDensity)
};
}, {
minWidth: 0,
spread: 0,
contentDensity: 0
}));
function splitColspanCells(cell) {
if (cell.lenX > 1) {
const cells = [];
for (let i = 0; i < cell.lenX; i++) {
cells[i] = {
lenX: 1,
lenY: cell.lenY,
constraints: {
minWidth: cell.constraints.minWidth / cell.lenX,
contentDensity: cell.constraints.contentDensity / cell.lenX
},
x: cell.x + i,
y: cell.y
};
}
return cells;
}
return cell;
}
const reduceColumnConstraints = (0, _pipe.default)((0, _pipe.default)((0, _map.default)(splitColspanCells), _flatten.default), (0, _groupBy.default)((0, _pipe.default)((0, _prop.default)('x'), String)), (0, _mapObjIndexed.default)(getColumnMetrics), _values.default);
var _default = reduceColumnConstraints;
exports.default = _default;
//# sourceMappingURL=reduceColumnConstraints.js.map