UNPKG

@native-html/heuristic-table-plugin

Version:

🔠 A 100% native component using heuristics to render tables in react-native-render-html

46 lines (41 loc) • 1.43 kB
import groupBy from 'ramda/src/groupBy'; import prop from 'ramda/src/prop'; import pipe from 'ramda/src/pipe'; import reduce from 'ramda/src/reduce'; import map from 'ramda/src/map'; import flatten from 'ramda/src/flatten'; import values from 'ramda/src/values'; import mapObjIndexed from 'ramda/src/mapObjIndexed'; const getColumnMetrics = pipe(map(prop('constraints')), reduce((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 = pipe(pipe(map(splitColspanCells), flatten), groupBy(pipe(prop('x'), String)), mapObjIndexed(getColumnMetrics), values); export default reduceColumnConstraints; //# sourceMappingURL=reduceColumnConstraints.js.map