@antv/s2-react
Version:
use S2 with react
45 lines • 2.19 kB
JavaScript
import React from 'react';
import { SpreadSheetContext } from '../../context/SpreadSheetContext';
import { ChartSheet } from './chart-sheet';
import { EditableSheet } from './editable-sheet';
import { GridAnalysisSheet } from './grid-analysis-sheet';
import { PivotChartSheet } from './pivot-chart-sheet';
import { PivotSheet } from './pivot-sheet';
import { StrategySheet } from './strategy-sheet';
import { TableSheet } from './table-sheet';
const Sheet = React.forwardRef((props, ref) => {
const { sheetType } = props;
const [s2Instance, setS2Instance] = React.useState(null);
const sheetProps = React.useMemo(() => {
return Object.assign(Object.assign({}, props), { onMounted: (instance) => {
var _a;
if (ref) {
ref.current = instance;
}
setS2Instance(instance);
(_a = props.onMounted) === null || _a === void 0 ? void 0 : _a.call(props, instance);
} });
}, [props, ref]);
const CurrentSheet = React.useMemo(() => {
switch (sheetType) {
case 'table':
return React.createElement(TableSheet, Object.assign({}, sheetProps));
case 'chart':
return React.createElement(ChartSheet, Object.assign({}, sheetProps));
case 'pivotChart':
return React.createElement(PivotChartSheet, Object.assign({}, sheetProps));
case 'gridAnalysis':
return React.createElement(GridAnalysisSheet, Object.assign({}, sheetProps));
case 'strategy':
return React.createElement(StrategySheet, Object.assign({}, sheetProps));
case 'editable':
return React.createElement(EditableSheet, Object.assign({}, sheetProps));
default:
return React.createElement(PivotSheet, Object.assign({}, sheetProps));
}
}, [sheetType, sheetProps]);
return (React.createElement(SpreadSheetContext.Provider, { value: s2Instance }, CurrentSheet));
});
export const SheetComponent = React.memo(Sheet);
SheetComponent.displayName = 'SheetComponent';
//# sourceMappingURL=index.js.map