@are-visual/virtual-table 0.3.0 → 0.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -303,8 +303,9 @@ Context
303
303
  ├── colgroup
304
304
 
305
305
  └── renderBody(<tbody />)
306
- └── renderRow(<tr />)
307
- └── renderCell(<td />)
306
+ └── renderBodyContent(Row[])
307
+ └── renderRow(<tr />)
308
+ └── renderCell(<td />)
308
309
  ```
309
310
 
310
311
  ##### Render 类型签名
@@ -316,6 +317,7 @@ interface RenderOptions<T = any> {
316
317
  rowIndex: number
317
318
  columns: ColumnType<T>[]
318
319
  rowData: T
320
+ startRowIndex: number
319
321
  columnDescriptor: ColumnDescriptor<T>[]
320
322
  }
321
323
 
@@ -361,17 +363,22 @@ type MiddlewareRenderHeaderCell<T = any> = (
361
363
 
362
364
  type MiddlewareRenderBodyWrapper<T = any> = (
363
365
  children: ReactNode,
364
- options: Pick<RenderOptions<T>, 'columns' | 'columnDescriptor'>
366
+ options: Pick<RenderOptions<T>, 'columns' | 'columnDescriptor' | 'startRowIndex'>
365
367
  ) => ReactNode
366
368
 
367
369
  type MiddlewareRenderBodyRoot<T = any> = (
368
370
  children: ReactNode,
369
- options: Pick<RenderOptions<T>, 'columns' | 'columnDescriptor'>
371
+ options: Pick<RenderOptions<T>, 'columns' | 'columnDescriptor' | 'startRowIndex'>
370
372
  ) => ReactNode
371
373
 
372
374
  type MiddlewareRenderBody<T = any> = (
373
375
  children: ReactNode,
374
- options: Pick<RenderOptions<T>, 'columns' | 'columnDescriptor'>
376
+ options: Pick<RenderOptions<T>, 'columns' | 'columnDescriptor' | 'startRowIndex'>
377
+ ) => ReactNode
378
+
379
+ type MiddlewareRenderBodyContent<T = any> = (
380
+ children: ReactNode,
381
+ options: Pick<RenderOptions<T>, 'columns' | 'columnDescriptor' | 'startRowIndex'>
375
382
  ) => ReactNode
376
383
 
377
384
  type MiddlewareRenderRow<T = any> = (
package/index.d.ts CHANGED
@@ -84,6 +84,7 @@ interface RenderOptions<T = any> {
84
84
  column: ColumnType<T>;
85
85
  columnWidths: Map<Key, number>;
86
86
  rowIndex: number;
87
+ startRowIndex: number;
87
88
  columns: ColumnType<T>[];
88
89
  rowData: T;
89
90
  columnDescriptor: ColumnDescriptor<T>[];
@@ -98,12 +99,13 @@ type MiddlewareRenderHeaderRoot<T = any> = (children: ReactNode, options: Pretti
98
99
  type MiddlewareRenderHeader<T = any> = (children: ReactNode, options: Prettify<Pick<RenderOptions<T>, 'columns' | 'columnDescriptor'>>) => ReactNode;
99
100
  type MiddlewareRenderHeaderRow<T = any> = (children: ReactNode, options: Prettify<Pick<RenderOptions<T>, 'columns' | 'columnDescriptor'>>) => ReactNode;
100
101
  type MiddlewareRenderHeaderCell<T = any> = (children: ReactNode, options: Prettify<Pick<RenderOptions<T>, 'columns' | 'columnDescriptor' | 'column' | 'columnWidths'>>) => ReactNode;
101
- type MiddlewareRenderBodyWrapper<T = any> = (children: ReactNode, options: Prettify<Pick<RenderOptions<T>, 'columns' | 'columnDescriptor'>>) => ReactNode;
102
- type MiddlewareRenderBodyRoot<T = any> = (children: ReactNode, options: Prettify<Pick<RenderOptions<T>, 'columns' | 'columnDescriptor'>>) => ReactNode;
103
- type MiddlewareRenderBody<T = any> = (children: ReactNode, options: Prettify<Pick<RenderOptions<T>, 'columns' | 'columnDescriptor'>>) => ReactNode;
102
+ type MiddlewareRenderBodyWrapper<T = any> = (children: ReactNode, options: Prettify<Pick<RenderOptions<T>, 'columns' | 'columnDescriptor' | 'startRowIndex'>>) => ReactNode;
103
+ type MiddlewareRenderBodyRoot<T = any> = (children: ReactNode, options: Prettify<Pick<RenderOptions<T>, 'columns' | 'columnDescriptor' | 'startRowIndex'>>) => ReactNode;
104
+ type MiddlewareRenderBody<T = any> = (children: ReactNode, options: Prettify<Pick<RenderOptions<T>, 'columns' | 'columnDescriptor' | 'startRowIndex'>>) => ReactNode;
105
+ type MiddlewareRenderBodyContent<T = any> = (children: ReactNode, options: Prettify<Pick<RenderOptions<T>, 'columns' | 'columnDescriptor' | 'startRowIndex'>>) => ReactNode;
104
106
  type MiddlewareRenderRow<T = any> = (children: ReactNode, options: Prettify<Pick<RenderOptions<T>, 'columns' | 'columnDescriptor' | 'rowIndex' | 'rowData'>>) => ReactNode;
105
107
  type MiddlewareRenderCell<T = any> = (children: ReactNode, options: Prettify<Pick<RenderOptions<T>, 'column'>>) => ReactNode;
106
- type MergedMiddlewareRender<T = any> = MiddlewareRender<T> | MiddlewareRenderRoot<T> | MiddlewareRenderContent<T> | MiddlewareRenderHeaderWrapper<T> | MiddlewareRenderHeaderRoot<T> | MiddlewareRenderHeader<T> | MiddlewareRenderHeaderRow<T> | MiddlewareRenderHeaderCell<T> | MiddlewareRenderBodyWrapper<T> | MiddlewareRenderBodyRoot<T> | MiddlewareRenderBody<T> | MiddlewareRenderRow<T> | MiddlewareRenderCell<T>;
108
+ type MergedMiddlewareRender<T = any> = MiddlewareRender<T> | MiddlewareRenderRoot<T> | MiddlewareRenderContent<T> | MiddlewareRenderHeaderWrapper<T> | MiddlewareRenderHeaderRoot<T> | MiddlewareRenderHeader<T> | MiddlewareRenderHeaderRow<T> | MiddlewareRenderHeaderCell<T> | MiddlewareRenderBodyWrapper<T> | MiddlewareRenderBodyRoot<T> | MiddlewareRenderBody<T> | MiddlewareRenderBodyContent<T> | MiddlewareRenderRow<T> | MiddlewareRenderCell<T>;
107
109
  interface MiddlewareRenders {
108
110
  /**
109
111
  * 自定义最外层渲染,children 为 整个 VirtualTable。
@@ -158,6 +160,10 @@ interface MiddlewareRenders {
158
160
  * @note 注意:出于性能考虑,**需要自行对函数 memo**
159
161
  */
160
162
  renderBody?: MiddlewareRenderBody;
163
+ /**
164
+ * 默认情况下 children 是 ReactNode[],即 tbody 下渲染的各个 Row
165
+ */
166
+ renderBodyContent?: MiddlewareRenderBodyContent;
161
167
  /**
162
168
  * children 为 tr
163
169
  * @note 注意:出于性能考虑,**需要自行对函数 memo**
@@ -287,6 +293,7 @@ interface TableBodyProps<T> extends Omit<NecessaryProps<T>, 'columns'>, Pick<Row
287
293
  renderBodyWrapper?: MiddlewareRenderBodyWrapper;
288
294
  renderBodyRoot?: MiddlewareRenderBodyRoot;
289
295
  renderBody?: MiddlewareRenderBody;
296
+ renderBodyContent?: MiddlewareRenderBodyContent;
290
297
  }
291
298
 
292
299
  interface VirtualTableCoreProps<T> extends NecessaryProps<T>, Pick<TableBodyProps<T>, 'rowClassName' | 'onRow'> {
@@ -331,4 +338,4 @@ type PossibleRef<T> = Ref<T> | undefined;
331
338
  declare function mergeRefs<T>(...refs: PossibleRef<T>[]): (node: T | null) => void;
332
339
  declare function useMergedRef<T>(...refs: PossibleRef<T>[]): (node: T | null) => void;
333
340
 
334
- export { type AlignType, type AnyObject, _default$2 as Colgroup, type ColumnDescriptor, type ColumnExtra, type ColumnType, type ContainerSizeState, type FixedType, type HorizontalScrollContextState, type MergedMiddlewareRender, type Middleware, type MiddlewareContext, type MiddlewareRender, type MiddlewareRenderBody, type MiddlewareRenderBodyRoot, type MiddlewareRenderBodyWrapper, type MiddlewareRenderCell, type MiddlewareRenderContent, type MiddlewareRenderHeader, type MiddlewareRenderHeaderCell, type MiddlewareRenderHeaderRoot, type MiddlewareRenderHeaderRow, type MiddlewareRenderHeaderWrapper, type MiddlewareRenderRoot, type MiddlewareRenderRow, type MiddlewareRenders, type MiddlewareResult, type OnRowType, type PipelineRender, type PipelineRenderOptions, type ScrollElement, type StickyContextState, type TableColumnsContextType, TablePipeline, type TableRowManagerContextType, type UseTablePipelineOptions, _default as VirtualTable, _default$3 as VirtualTableCell, type CellProps as VirtualTableCellProps, type VirtualTableCoreProps as VirtualTableProps, _default$1 as VirtualTableRow, type RowProps as VirtualTableRowProps, createMiddleware, findLastIndex, getKey, getScrollElement, getScrollParent, getScrollTop, isDocument, isRoot, isValidFixed, isValidFixedLeft, isValidFixedRight, isWindow, mergeRefs, onResize, useColumnSizes, useContainerSize, useHorizontalScrollContext, useMergedRef, useShallowMemo, useStableFn, useTablePipeline, useTableRowManager, useTableSticky };
341
+ export { type AlignType, type AnyObject, _default$2 as Colgroup, type ColumnDescriptor, type ColumnExtra, type ColumnType, type ContainerSizeState, type FixedType, type HorizontalScrollContextState, type MergedMiddlewareRender, type Middleware, type MiddlewareContext, type MiddlewareRender, type MiddlewareRenderBody, type MiddlewareRenderBodyContent, type MiddlewareRenderBodyRoot, type MiddlewareRenderBodyWrapper, type MiddlewareRenderCell, type MiddlewareRenderContent, type MiddlewareRenderHeader, type MiddlewareRenderHeaderCell, type MiddlewareRenderHeaderRoot, type MiddlewareRenderHeaderRow, type MiddlewareRenderHeaderWrapper, type MiddlewareRenderRoot, type MiddlewareRenderRow, type MiddlewareRenders, type MiddlewareResult, type OnRowType, type PipelineRender, type PipelineRenderOptions, type ScrollElement, type StickyContextState, type TableColumnsContextType, TablePipeline, type TableRowManagerContextType, type UseTablePipelineOptions, _default as VirtualTable, _default$3 as VirtualTableCell, type CellProps as VirtualTableCellProps, type VirtualTableCoreProps as VirtualTableProps, _default$1 as VirtualTableRow, type RowProps as VirtualTableRowProps, createMiddleware, findLastIndex, getKey, getScrollElement, getScrollParent, getScrollTop, isDocument, isRoot, isValidFixed, isValidFixedLeft, isValidFixedRight, isWindow, mergeRefs, onResize, useColumnSizes, useContainerSize, useHorizontalScrollContext, useMergedRef, useShallowMemo, useStableFn, useTablePipeline, useTableRowManager, useTableSticky };
package/index.esm.js CHANGED
@@ -585,7 +585,7 @@ function createMiddleware(hook) {
585
585
  };
586
586
  }
587
587
 
588
- var _excluded$2 = ["render", "renderRoot", "renderContent", "renderHeaderWrapper", "renderHeaderRoot", "renderHeader", "renderHeaderRow", "renderHeaderCell", "renderBodyWrapper", "renderBodyRoot", "renderBody", "renderRow", "renderCell", "rowClassName", "onRow"];
588
+ var _excluded$2 = ["render", "renderRoot", "renderContent", "renderHeaderWrapper", "renderHeaderRoot", "renderHeader", "renderHeaderRow", "renderHeaderCell", "renderBodyWrapper", "renderBodyRoot", "renderBody", "renderBodyContent", "renderRow", "renderCell", "rowClassName", "onRow"];
589
589
  function shakeUnsafeHooks(hooks) {
590
590
  if (Array.isArray(hooks)) {
591
591
  return hooks.filter(function (x) {
@@ -635,6 +635,7 @@ var TablePipeline = /*#__PURE__*/function () {
635
635
  renderBodyWrapper: [],
636
636
  renderBodyRoot: [],
637
637
  renderBody: [],
638
+ renderBodyContent: [],
638
639
  renderRow: [],
639
640
  renderCell: []
640
641
  };
@@ -659,6 +660,7 @@ var TablePipeline = /*#__PURE__*/function () {
659
660
  nextCtx.renderBodyWrapper;
660
661
  nextCtx.renderBodyRoot;
661
662
  nextCtx.renderBody;
663
+ nextCtx.renderBodyContent;
662
664
  nextCtx.renderRow;
663
665
  nextCtx.renderCell;
664
666
  var rowClassName = nextCtx.rowClassName,
@@ -1065,6 +1067,7 @@ function TableBody(props) {
1065
1067
  renderBodyWrapper = props.renderBodyWrapper,
1066
1068
  renderBodyRoot = props.renderBodyRoot,
1067
1069
  renderBody = props.renderBody,
1070
+ renderBodyContent = props.renderBodyContent,
1068
1071
  renderRow = props.renderRow,
1069
1072
  renderCell = props.renderCell;
1070
1073
  var _useRowVirtualize = useRowVirtualize({
@@ -1119,23 +1122,29 @@ function TableBody(props) {
1119
1122
  updateRowRectList();
1120
1123
  rowHeights.current.clear();
1121
1124
  });
1125
+ var bodyContent = pipelineRender(dataSource.map(function (e, rowIndex) {
1126
+ var _rowKey = e[rowKey];
1127
+ return jsx(Row$1, {
1128
+ className: clsx(rowClassName == null ? undefined : rowClassName(e, rowIndex)),
1129
+ rowIndex: rowIndex + startIndex,
1130
+ rowData: e,
1131
+ columns: columnDescriptor,
1132
+ onRow: onRow,
1133
+ renderRow: renderRow,
1134
+ renderCell: renderCell
1135
+ }, _rowKey);
1136
+ }), renderBodyContent, {
1137
+ columns: columns,
1138
+ columnDescriptor: descriptor,
1139
+ startRowIndex: startIndex
1140
+ });
1122
1141
  var bodyNode = pipelineRender(jsx("tbody", {
1123
1142
  ref: tbodyRef,
1124
- children: dataSource.map(function (e, rowIndex) {
1125
- var _rowKey = e[rowKey];
1126
- return jsx(Row$1, {
1127
- className: clsx(rowClassName == null ? undefined : rowClassName(e, rowIndex)),
1128
- rowIndex: rowIndex + startIndex,
1129
- rowData: e,
1130
- columns: columnDescriptor,
1131
- onRow: onRow,
1132
- renderRow: renderRow,
1133
- renderCell: renderCell
1134
- }, _rowKey);
1135
- })
1143
+ children: bodyContent
1136
1144
  }), renderBody, {
1137
1145
  columns: columns,
1138
- columnDescriptor: descriptor
1146
+ columnDescriptor: descriptor,
1147
+ startRowIndex: startIndex
1139
1148
  });
1140
1149
  var _useColumnSizes = useColumnSizes(),
1141
1150
  setWidthList = _useColumnSizes.setWidthList;
@@ -1152,7 +1161,8 @@ function TableBody(props) {
1152
1161
  }), bodyNode]
1153
1162
  }), renderBodyRoot, {
1154
1163
  columns: columns,
1155
- columnDescriptor: descriptor
1164
+ columnDescriptor: descriptor,
1165
+ startRowIndex: startIndex
1156
1166
  });
1157
1167
  var _useHorizontalScrollC = useHorizontalScrollContext(),
1158
1168
  listen = _useHorizontalScrollC.listen,
@@ -1188,7 +1198,8 @@ function TableBody(props) {
1188
1198
  children: tableNode
1189
1199
  }), renderBodyWrapper, {
1190
1200
  columns: columns,
1191
- columnDescriptor: descriptor
1201
+ columnDescriptor: descriptor,
1202
+ startRowIndex: startIndex
1192
1203
  })
1193
1204
  });
1194
1205
  }
@@ -1687,6 +1698,7 @@ function VirtualTableCore(props, ref) {
1687
1698
  renderBodyWrapper = _pipeline$use.renderBodyWrapper,
1688
1699
  renderBodyRoot = _pipeline$use.renderBodyRoot,
1689
1700
  renderBody = _pipeline$use.renderBody,
1701
+ renderBodyContent = _pipeline$use.renderBodyContent,
1690
1702
  renderRow = _pipeline$use.renderRow,
1691
1703
  renderCell = _pipeline$use.renderCell,
1692
1704
  onPipelineRow = _pipeline$use.onRow;
@@ -1775,6 +1787,7 @@ function VirtualTableCore(props, ref) {
1775
1787
  renderBodyWrapper: renderBodyWrapper,
1776
1788
  renderBodyRoot: renderBodyRoot,
1777
1789
  renderBody: renderBody,
1790
+ renderBodyContent: renderBodyContent,
1778
1791
  renderRow: renderRow,
1779
1792
  renderCell: renderCell
1780
1793
  })]