import React from "react"; import { AbstractSheet, BorderStyle, Style } from "../abstract-sheet/abstract-sheet.js"; export function toReact({ abstractSheet }: { readonly abstractSheet: AbstractSheet }): React.JSX.Element { const styles = React.useMemo( () => Object.fromEntries(abstractSheet.styles?.map((s) => [s.name, s]) ?? []), [abstractSheet.styles] ); return (
{abstractSheet.sheets.map((s, si) => { const maxCols = s.cells.reduce((a, c) => Math.max(a, c.length), 0); const colArray = Array.from({ length: maxCols }, (_, i) => i); return (
{ const info = s.rowInfo?.[ri]; return info?.hidden ? "" : info?.heightPixels !== undefined ? `${info.heightPixels}px` : "minmax(18px, max-content)"; }) .join(" ")}`, gridTemplateColumns: `${(s.direction === "col" ? s.cells : colArray) .map((_, ci) => { const co = s.colInfo?.[ci]; return co?.hidden ? "" : co?.widthPixels !== undefined ? `${co.widthPixels}px` : "minmax(64px, max-content)"; }) .join(" ")}`, }} > {s.cells.map((cells, cellsIdx) => (
{Array.from({ length: maxCols }, (_, i) => i).map((ci) => { const c = cells[ci]; let s: Partial