import styled, { css, ThemeProvider } from "styled-components"; import { selectionContext, isSelectingContext, } from "../context/SelectionContext"; import { useCopy } from "../hooks/useCopy"; import { editingCellContext } from "../context/EditorContext"; import { usePaste } from "../hooks/usePaste"; import { IBulkEditProps } from "../IBulkEditProps"; import { PropsRefProvider } from "../context/PropsContext"; import { Headers } from "./Headers"; import { useUndo } from "../hooks/useUndo"; import React from "react"; import { hoveredCellContext } from "../context/hoveredCellContext"; import { ErrorTooltip } from "./ErrorTooltip"; import { Selection } from "./Selection"; import { Editor } from "./Editor"; import { viewportSizeContext, viewportStartContext, } from "../context/ViewportContext"; import { Scroller } from "./Scroller"; import { Rows } from "./Rows"; import { stickyColumnContext } from "../context/StickyColumnContext"; import { defaultTheme } from "../defaultTheme"; import { ScrollerRefProvider } from "../context/ScrollerContext"; export const BulkEditor = ( props: IBulkEditProps ) => ( ); const TableContent = ({ rows, columnProps, rowHeight, numStickyColumns, numUnselectableColumns, headers, errors, renderErrorTooltip, }: IBulkEditProps) => { useCopy(); usePaste(); useUndo(); return ( ); }; const TableContainer = styled.div<{ columnData: { minWidth?: number; maxWidth?: number }[]; numRows: number; rowHeight: number; $headers: { height: number }[]; }>` position: relative; display: grid; grid-template-columns: ${({ columnData }) => columnData .map( ({ minWidth, maxWidth }) => `minmax(${minWidth ? `${minWidth}px` : "max-content"}, ${ maxWidth ? `${maxWidth}px` : "1fr" })` ) .join(" ")}; grid-template-rows: ${({ $headers }) => $headers.map(({ height }) => `${height}px`).join(" ")} ${({ numRows, rowHeight, }) => (numRows ? css`repeat(${numRows}, ${rowHeight}px)` : null)}; user-select: none; min-width: ${({ columnData }) => columnData.reduce((acc, { minWidth }) => acc + (minWidth ?? 0), 0)}px; `;