material-react-table 0.9.2 → 0.9.3

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.
@@ -5664,7 +5664,7 @@ var MRT_ToolbarBottom = function MRT_ToolbarBottom(_ref) {
5664
5664
  }, toolbarProps == null ? void 0 : toolbarProps.sx);
5665
5665
  }
5666
5666
  }), React__default.createElement(MRT_LinearProgressBar, {
5667
- alignTo: 'top',
5667
+ alignTo: "top",
5668
5668
  tableInstance: tableInstance
5669
5669
  }), positionToolbarAlertBanner === 'bottom' && React__default.createElement(MRT_ToolbarAlertBanner, {
5670
5670
  tableInstance: tableInstance
@@ -6327,559 +6327,183 @@ var MRT_TableHead = function MRT_TableHead(_ref) {
6327
6327
  }));
6328
6328
  };
6329
6329
 
6330
- var MRT_EditCellTextField = function MRT_EditCellTextField(_ref) {
6331
- var cell = _ref.cell,
6332
- tableInstance = _ref.tableInstance;
6333
- var getState = tableInstance.getState,
6334
- _tableInstance$option = tableInstance.options,
6335
- tableId = _tableInstance$option.tableId,
6336
- enableEditing = _tableInstance$option.enableEditing,
6337
- muiTableBodyCellEditTextFieldProps = _tableInstance$option.muiTableBodyCellEditTextFieldProps,
6338
- onMrtCellEditBlur = _tableInstance$option.onMrtCellEditBlur,
6339
- onMrtCellEditChange = _tableInstance$option.onMrtCellEditChange,
6340
- setCurrentEditingCell = tableInstance.setCurrentEditingCell,
6341
- setCurrentEditingRow = tableInstance.setCurrentEditingRow;
6342
-
6343
- var _useState = React.useState(cell.getValue()),
6344
- value = _useState[0],
6345
- setValue = _useState[1];
6330
+ function _extends$1() {
6331
+ _extends$1 = Object.assign || function (target) {
6332
+ for (var i = 1; i < arguments.length; i++) {
6333
+ var source = arguments[i];
6346
6334
 
6347
- var column = cell.column,
6348
- row = cell.row;
6349
- var columnDef = column.columnDef;
6335
+ for (var key in source) {
6336
+ if (Object.prototype.hasOwnProperty.call(source, key)) {
6337
+ target[key] = source[key];
6338
+ }
6339
+ }
6340
+ }
6350
6341
 
6351
- var handleChange = function handleChange(event) {
6352
- setValue(event.target.value);
6353
- columnDef.onMrtCellEditChange == null ? void 0 : columnDef.onMrtCellEditChange({
6354
- event: event,
6355
- cell: cell,
6356
- tableInstance: tableInstance
6357
- });
6358
- onMrtCellEditChange == null ? void 0 : onMrtCellEditChange({
6359
- event: event,
6360
- cell: cell,
6361
- tableInstance: tableInstance
6362
- });
6342
+ return target;
6363
6343
  };
6364
6344
 
6365
- var handleBlur = function handleBlur(event) {
6366
- if (getState().currentEditingRow) {
6367
- if (!row._valuesCache) row._valuesCache = {};
6368
- row._valuesCache[column.id] = value;
6369
- setCurrentEditingRow(_extends({}, getState().currentEditingRow));
6370
- }
6345
+ return _extends$1.apply(this, arguments);
6346
+ }
6371
6347
 
6372
- setCurrentEditingCell(null);
6373
- columnDef.onMrtCellEditBlur == null ? void 0 : columnDef.onMrtCellEditBlur({
6374
- event: event,
6375
- cell: cell,
6376
- tableInstance: tableInstance
6377
- });
6378
- onMrtCellEditBlur == null ? void 0 : onMrtCellEditBlur({
6379
- event: event,
6380
- cell: cell,
6381
- tableInstance: tableInstance
6382
- });
6383
- };
6348
+ function _objectWithoutPropertiesLoose$2(source, excluded) {
6349
+ if (source == null) return {};
6350
+ var target = {};
6351
+ var sourceKeys = Object.keys(source);
6352
+ var key, i;
6384
6353
 
6385
- var mTableBodyCellEditTextFieldProps = muiTableBodyCellEditTextFieldProps instanceof Function ? muiTableBodyCellEditTextFieldProps({
6386
- cell: cell,
6387
- tableInstance: tableInstance
6388
- }) : muiTableBodyCellEditTextFieldProps;
6389
- var mcTableBodyCellEditTextFieldProps = columnDef.muiTableBodyCellEditTextFieldProps instanceof Function ? columnDef.muiTableBodyCellEditTextFieldProps({
6390
- cell: cell,
6391
- tableInstance: tableInstance
6392
- }) : columnDef.muiTableBodyCellEditTextFieldProps;
6354
+ for (i = 0; i < sourceKeys.length; i++) {
6355
+ key = sourceKeys[i];
6356
+ if (excluded.indexOf(key) >= 0) continue;
6357
+ target[key] = source[key];
6358
+ }
6393
6359
 
6394
- var textFieldProps = _extends({}, mTableBodyCellEditTextFieldProps, mcTableBodyCellEditTextFieldProps);
6360
+ return target;
6361
+ }
6395
6362
 
6396
- if (enableEditing && columnDef.enableEditing !== false && columnDef.Edit) {
6397
- return React__default.createElement(React__default.Fragment, null, columnDef.Edit == null ? void 0 : columnDef.Edit({
6398
- cell: cell,
6399
- tableInstance: tableInstance
6400
- }));
6363
+ var props = ['bottom', 'height', 'left', 'right', 'top', 'width'];
6364
+
6365
+ var rectChanged = function rectChanged(a, b) {
6366
+ if (a === void 0) {
6367
+ a = {};
6401
6368
  }
6402
6369
 
6403
- return React__default.createElement(material.TextField, Object.assign({
6404
- id: "mrt-" + tableId + "-edit-cell-text-field-" + cell.id,
6405
- margin: "dense",
6406
- onBlur: handleBlur,
6407
- onChange: handleChange,
6408
- onClick: function onClick(e) {
6409
- return e.stopPropagation();
6410
- },
6411
- placeholder: columnDef.header,
6412
- value: value,
6413
- variant: "standard"
6414
- }, textFieldProps));
6370
+ if (b === void 0) {
6371
+ b = {};
6372
+ }
6373
+
6374
+ return props.some(function (prop) {
6375
+ return a[prop] !== b[prop];
6376
+ });
6415
6377
  };
6416
6378
 
6417
- var MRT_CopyButton = function MRT_CopyButton(_ref) {
6418
- var cell = _ref.cell,
6419
- children = _ref.children,
6420
- tableInstance = _ref.tableInstance;
6421
- var _tableInstance$option = tableInstance.options,
6422
- localization = _tableInstance$option.localization,
6423
- muiTableBodyCellCopyButtonProps = _tableInstance$option.muiTableBodyCellCopyButtonProps;
6424
- var column = cell.column;
6425
- var columnDef = column.columnDef;
6379
+ var observedNodes = /*#__PURE__*/new Map();
6380
+ var rafId;
6426
6381
 
6427
- var _useState = React.useState(false),
6428
- copied = _useState[0],
6429
- setCopied = _useState[1];
6382
+ var run = function run() {
6383
+ var changedStates = [];
6384
+ observedNodes.forEach(function (state, node) {
6385
+ var newRect = node.getBoundingClientRect();
6430
6386
 
6431
- var handleCopy = function handleCopy(text) {
6432
- navigator.clipboard.writeText(text);
6433
- setCopied(true);
6434
- setTimeout(function () {
6435
- return setCopied(false);
6436
- }, 4000);
6437
- };
6387
+ if (rectChanged(newRect, state.rect)) {
6388
+ state.rect = newRect;
6389
+ changedStates.push(state);
6390
+ }
6391
+ });
6392
+ changedStates.forEach(function (state) {
6393
+ state.callbacks.forEach(function (cb) {
6394
+ return cb(state.rect);
6395
+ });
6396
+ });
6397
+ rafId = window.requestAnimationFrame(run);
6398
+ };
6438
6399
 
6439
- var mTableBodyCellCopyButtonProps = muiTableBodyCellCopyButtonProps instanceof Function ? muiTableBodyCellCopyButtonProps({
6440
- cell: cell,
6441
- tableInstance: tableInstance
6442
- }) : muiTableBodyCellCopyButtonProps;
6443
- var mcTableBodyCellCopyButtonProps = columnDef.muiTableBodyCellCopyButtonProps instanceof Function ? columnDef.muiTableBodyCellCopyButtonProps({
6444
- cell: cell,
6445
- tableInstance: tableInstance
6446
- }) : columnDef.muiTableBodyCellCopyButtonProps;
6400
+ function observeRect(node, cb) {
6401
+ return {
6402
+ observe: function observe() {
6403
+ var wasEmpty = observedNodes.size === 0;
6447
6404
 
6448
- var buttonProps = _extends({}, mTableBodyCellCopyButtonProps, mcTableBodyCellCopyButtonProps);
6405
+ if (observedNodes.has(node)) {
6406
+ observedNodes.get(node).callbacks.push(cb);
6407
+ } else {
6408
+ observedNodes.set(node, {
6409
+ rect: undefined,
6410
+ hasRectChanged: false,
6411
+ callbacks: [cb]
6412
+ });
6413
+ }
6449
6414
 
6450
- return React__default.createElement(material.Tooltip, {
6451
- arrow: true,
6452
- enterDelay: 1000,
6453
- enterNextDelay: 1000,
6454
- placement: "top",
6455
- title: copied ? localization.copiedToClipboard : localization.clickToCopy
6456
- }, React__default.createElement(material.Button, Object.assign({
6457
- "aria-label": localization.clickToCopy,
6458
- onClick: function onClick() {
6459
- return handleCopy(cell.getValue());
6415
+ if (wasEmpty) run();
6460
6416
  },
6461
- size: "small",
6462
- type: "button",
6463
- variant: "text"
6464
- }, buttonProps, {
6465
- sx: _extends({
6466
- backgroundColor: 'transparent',
6467
- border: 'none',
6468
- color: 'inherit',
6469
- cursor: 'copy',
6470
- fontFamily: 'inherit',
6471
- fontSize: 'inherit',
6472
- letterSpacing: 'inherit',
6473
- m: '-0.25rem',
6474
- minWidth: 'unset',
6475
- textAlign: 'inherit',
6476
- textTransform: 'inherit'
6477
- }, buttonProps == null ? void 0 : buttonProps.sx)
6478
- }), children));
6479
- };
6417
+ unobserve: function unobserve() {
6418
+ var state = observedNodes.get(node);
6480
6419
 
6481
- var MRT_TableBodyCell = function MRT_TableBodyCell(_ref) {
6482
- var _columnDef$minSize, _columnDef$Cell, _row$subRows, _columnDef$Cell2, _row$subRows$length, _row$subRows2;
6420
+ if (state) {
6421
+ // Remove the callback
6422
+ var index = state.callbacks.indexOf(cb);
6423
+ if (index >= 0) state.callbacks.splice(index, 1); // Remove the node reference
6483
6424
 
6484
- var cell = _ref.cell,
6485
- enableHover = _ref.enableHover,
6486
- tableInstance = _ref.tableInstance;
6487
- var getState = tableInstance.getState,
6488
- _tableInstance$option = tableInstance.options,
6489
- editingMode = _tableInstance$option.editingMode,
6490
- enableClickToCopy = _tableInstance$option.enableClickToCopy,
6491
- enableColumnOrdering = _tableInstance$option.enableColumnOrdering,
6492
- enableEditing = _tableInstance$option.enableEditing,
6493
- tableId = _tableInstance$option.tableId,
6494
- muiTableBodyCellProps = _tableInstance$option.muiTableBodyCellProps,
6495
- muiTableBodyCellSkeletonProps = _tableInstance$option.muiTableBodyCellSkeletonProps,
6496
- onMrtCellClick = _tableInstance$option.onMrtCellClick,
6497
- setColumnOrder = tableInstance.setColumnOrder,
6498
- setCurrentEditingCell = tableInstance.setCurrentEditingCell;
6425
+ if (!state.callbacks.length) observedNodes["delete"](node); // Stop the loop
6499
6426
 
6500
- var _getState = getState(),
6501
- columnOrder = _getState.columnOrder,
6502
- currentEditingCell = _getState.currentEditingCell,
6503
- currentEditingRow = _getState.currentEditingRow,
6504
- isDensePadding = _getState.isDensePadding,
6505
- isLoading = _getState.isLoading,
6506
- showSkeletons = _getState.showSkeletons;
6427
+ if (!observedNodes.size) cancelAnimationFrame(rafId);
6428
+ }
6429
+ }
6430
+ };
6431
+ }
6507
6432
 
6508
- var column = cell.column,
6509
- row = cell.row;
6510
- var columnDef = column.columnDef,
6511
- columnDefType = column.columnDefType;
6433
+ var useIsomorphicLayoutEffect$1 = typeof window !== 'undefined' ? React__default.useLayoutEffect : React__default.useEffect;
6512
6434
 
6513
- var _useDrop = useDrop({
6514
- accept: 'column',
6515
- drop: function drop(movingColumn) {
6516
- return reorderColumn(movingColumn, column, columnOrder, setColumnOrder);
6517
- }
6518
- }),
6519
- dropRef = _useDrop[1];
6435
+ function useRect(nodeRef, initialRect) {
6436
+ if (initialRect === void 0) {
6437
+ initialRect = {
6438
+ width: 0,
6439
+ height: 0
6440
+ };
6441
+ }
6520
6442
 
6521
- var mTableCellBodyProps = muiTableBodyCellProps instanceof Function ? muiTableBodyCellProps({
6522
- cell: cell,
6523
- tableInstance: tableInstance
6524
- }) : muiTableBodyCellProps;
6525
- var mcTableCellBodyProps = columnDef.muiTableBodyCellProps instanceof Function ? columnDef.muiTableBodyCellProps({
6526
- cell: cell,
6527
- tableInstance: tableInstance
6528
- }) : columnDef.muiTableBodyCellProps;
6529
-
6530
- var tableCellProps = _extends({}, mTableCellBodyProps, mcTableCellBodyProps);
6531
-
6532
- var skeletonWidth = React.useMemo(function () {
6533
- return columnDefType === 'display' ? column.getSize() / 2 : Math.random() * (column.getSize() - column.getSize() / 3) + column.getSize() / 3;
6534
- }, [columnDefType, column.getSize()]);
6535
- var isEditable = (enableEditing || columnDef.enableEditing) && columnDef.enableEditing !== false;
6536
- var isEditing = isEditable && (editingMode === 'table' || (currentEditingRow == null ? void 0 : currentEditingRow.id) === row.id || (currentEditingCell == null ? void 0 : currentEditingCell.id) === cell.id);
6443
+ var _React$useState = React__default.useState(nodeRef.current),
6444
+ element = _React$useState[0],
6445
+ setElement = _React$useState[1];
6537
6446
 
6538
- var handleDoubleClick = function handleDoubleClick(_event) {
6539
- if ((enableEditing || columnDef.enableEditing) && columnDef.enableEditing !== false && editingMode === 'cell') {
6540
- setCurrentEditingCell(cell);
6541
- setTimeout(function () {
6542
- var textField = document.getElementById("mrt-" + tableId + "-edit-cell-text-field-" + cell.id);
6447
+ var _React$useReducer = React__default.useReducer(rectReducer, initialRect),
6448
+ rect = _React$useReducer[0],
6449
+ dispatch = _React$useReducer[1];
6543
6450
 
6544
- if (textField) {
6545
- textField.focus();
6546
- textField.select();
6547
- }
6548
- }, 200);
6451
+ var initialRectSet = React__default.useRef(false);
6452
+ useIsomorphicLayoutEffect$1(function () {
6453
+ if (nodeRef.current !== element) {
6454
+ setElement(nodeRef.current);
6549
6455
  }
6550
- };
6551
-
6552
- var getIsLastLeftPinnedColumn = function getIsLastLeftPinnedColumn() {
6553
- return column.getIsPinned() === 'left' && tableInstance.getLeftLeafHeaders().length - 1 === column.getPinnedIndex();
6554
- };
6555
-
6556
- var getIsFirstRightPinnedColumn = function getIsFirstRightPinnedColumn() {
6557
- return column.getIsPinned() === 'right' && column.getPinnedIndex() === 0;
6558
- };
6456
+ });
6457
+ useIsomorphicLayoutEffect$1(function () {
6458
+ if (element && !initialRectSet.current) {
6459
+ initialRectSet.current = true;
6559
6460
 
6560
- var getTotalRight = function getTotalRight() {
6561
- return (tableInstance.getRightLeafHeaders().length - 1 - column.getPinnedIndex()) * 150;
6562
- };
6461
+ var _rect = element.getBoundingClientRect();
6563
6462
 
6564
- return React__default.createElement(material.TableCell, Object.assign({
6565
- onClick: function onClick(event) {
6566
- return onMrtCellClick == null ? void 0 : onMrtCellClick({
6567
- event: event,
6568
- cell: cell,
6569
- tableInstance: tableInstance
6463
+ dispatch({
6464
+ rect: _rect
6570
6465
  });
6571
- },
6572
- onDoubleClick: handleDoubleClick
6573
- }, tableCellProps, {
6574
- ref: columnDefType === 'data' && enableColumnOrdering ? dropRef : undefined,
6575
- sx: function sx(theme) {
6576
- return _extends({
6577
- backgroundColor: column.getIsPinned() ? material.alpha(material.lighten(theme.palette.background["default"], 0.04), 0.95) : undefined,
6578
- boxShadow: getIsLastLeftPinnedColumn() ? "4px 0 4px -2px " + material.alpha(theme.palette.common.black, 0.1) : getIsFirstRightPinnedColumn() ? "-4px 0 4px -2px " + material.alpha(theme.palette.common.black, 0.1) : undefined,
6579
- cursor: isEditable && editingMode === 'cell' ? 'pointer' : 'text',
6580
- left: column.getIsPinned() === 'left' ? column.getStart('left') + "px" : undefined,
6581
- p: isDensePadding ? columnDefType === 'display' ? '0 0.5rem' : '0.5rem' : columnDefType === 'display' ? '0.5rem 0.75rem' : '1rem',
6582
- pl: column.id === 'mrt-expand' ? row.depth + (isDensePadding ? 0.5 : 0.75) + "rem" : undefined,
6583
- position: column.getIsPinned() ? 'sticky' : 'relative',
6584
- right: column.getIsPinned() === 'right' ? getTotalRight() + "px" : undefined,
6585
- transition: 'all 0.2s ease-in-out',
6586
- whiteSpace: isDensePadding ? 'nowrap' : 'normal',
6587
- zIndex: column.getIsPinned() ? 1 : undefined,
6588
- '&:hover': {
6589
- backgroundColor: enableHover && enableEditing && editingMode !== 'row' ? theme.palette.mode === 'dark' ? material.lighten(theme.palette.background["default"], 0.13) + " !important" : material.darken(theme.palette.background["default"], 0.07) + " !important" : undefined
6590
- }
6591
- }, tableCellProps == null ? void 0 : tableCellProps.sx);
6592
- },
6593
- style: {
6594
- maxWidth: "min(" + column.getSize() + "px, fit-content)",
6595
- minWidth: "max(" + column.getSize() + "px, " + ((_columnDef$minSize = columnDef.minSize) != null ? _columnDef$minSize : 30) + "px)",
6596
- width: column.getSize()
6597
6466
  }
6598
- }), React__default.createElement(React__default.Fragment, null, isLoading || showSkeletons ? React__default.createElement(material.Skeleton, Object.assign({
6599
- animation: "wave",
6600
- height: 20,
6601
- width: skeletonWidth
6602
- }, muiTableBodyCellSkeletonProps)) : columnDefType === 'display' ? columnDef.Cell == null ? void 0 : columnDef.Cell({
6603
- cell: cell,
6604
- tableInstance: tableInstance
6605
- }) : cell.getIsPlaceholder() || row.getIsGrouped() && column.id !== row.groupingColumnId ? null : cell.getIsAggregated() ? cell.renderAggregatedCell() : isEditing ? React__default.createElement(MRT_EditCellTextField, {
6606
- cell: cell,
6607
- tableInstance: tableInstance
6608
- }) : (enableClickToCopy || columnDef.enableClickToCopy) && columnDef.enableClickToCopy !== false ? React__default.createElement(React__default.Fragment, null, React__default.createElement(MRT_CopyButton, {
6609
- cell: cell,
6610
- tableInstance: tableInstance
6611
- }, React__default.createElement(React__default.Fragment, null, (_columnDef$Cell = columnDef == null ? void 0 : columnDef.Cell == null ? void 0 : columnDef.Cell({
6612
- cell: cell,
6613
- tableInstance: tableInstance
6614
- })) != null ? _columnDef$Cell : cell.renderCell())), row.getIsGrouped() && React__default.createElement(React__default.Fragment, null, " (", (_row$subRows = row.subRows) == null ? void 0 : _row$subRows.length, ")")) : React__default.createElement(React__default.Fragment, null, (_columnDef$Cell2 = columnDef == null ? void 0 : columnDef.Cell == null ? void 0 : columnDef.Cell({
6615
- cell: cell,
6616
- tableInstance: tableInstance
6617
- })) != null ? _columnDef$Cell2 : cell.renderCell(), row.getIsGrouped() && React__default.createElement(React__default.Fragment, null, " (", (_row$subRows$length = (_row$subRows2 = row.subRows) == null ? void 0 : _row$subRows2.length) != null ? _row$subRows$length : '', ")"))));
6618
- };
6619
-
6620
- var MRT_TableDetailPanel = function MRT_TableDetailPanel(_ref) {
6621
- var row = _ref.row,
6622
- tableInstance = _ref.tableInstance;
6623
- var getVisibleFlatColumns = tableInstance.getVisibleFlatColumns,
6624
- _tableInstance$option = tableInstance.options,
6625
- muiTableBodyRowProps = _tableInstance$option.muiTableBodyRowProps,
6626
- muiTableDetailPanelProps = _tableInstance$option.muiTableDetailPanelProps,
6627
- onMrtDetailPanelClick = _tableInstance$option.onMrtDetailPanelClick,
6628
- renderDetailPanel = _tableInstance$option.renderDetailPanel;
6629
- var tableRowProps = muiTableBodyRowProps instanceof Function ? muiTableBodyRowProps({
6630
- row: row,
6631
- tableInstance: tableInstance
6632
- }) : muiTableBodyRowProps;
6633
- var tableCellProps = muiTableDetailPanelProps instanceof Function ? muiTableDetailPanelProps({
6634
- row: row,
6635
- tableInstance: tableInstance
6636
- }) : muiTableDetailPanelProps;
6637
- return React__default.createElement(material.TableRow, Object.assign({}, tableRowProps), React__default.createElement(material.TableCell, Object.assign({
6638
- colSpan: getVisibleFlatColumns().length + 10,
6639
- onClick: function onClick(event) {
6640
- return onMrtDetailPanelClick == null ? void 0 : onMrtDetailPanelClick({
6641
- event: event,
6642
- row: row,
6643
- tableInstance: tableInstance
6644
- });
6467
+ }, [element]);
6468
+ React__default.useEffect(function () {
6469
+ if (!element) {
6470
+ return;
6645
6471
  }
6646
- }, tableCellProps, {
6647
- sx: _extends({
6648
- borderBottom: !row.getIsExpanded() ? 'none' : undefined,
6649
- pb: row.getIsExpanded() ? '1rem' : 0,
6650
- pt: row.getIsExpanded() ? '1rem' : 0,
6651
- transition: 'all 0.2s ease-in-out'
6652
- }, tableCellProps == null ? void 0 : tableCellProps.sx)
6653
- }), React__default.createElement(material.Collapse, {
6654
- "in": row.getIsExpanded()
6655
- }, renderDetailPanel == null ? void 0 : renderDetailPanel({
6656
- row: row,
6657
- tableInstance: tableInstance
6658
- }))));
6659
- };
6660
6472
 
6661
- var MRT_TableBodyRow = function MRT_TableBodyRow(_ref) {
6662
- var row = _ref.row,
6663
- tableInstance = _ref.tableInstance;
6664
- var getIsSomeColumnsPinned = tableInstance.getIsSomeColumnsPinned,
6665
- _tableInstance$option = tableInstance.options,
6666
- muiTableBodyRowProps = _tableInstance$option.muiTableBodyRowProps,
6667
- onMrtRowClick = _tableInstance$option.onMrtRowClick,
6668
- renderDetailPanel = _tableInstance$option.renderDetailPanel;
6669
- var tableRowProps = muiTableBodyRowProps instanceof Function ? muiTableBodyRowProps({
6670
- row: row,
6671
- tableInstance: tableInstance
6672
- }) : muiTableBodyRowProps;
6673
- return React__default.createElement(React__default.Fragment, null, React__default.createElement(material.TableRow, Object.assign({
6674
- hover: true,
6675
- onClick: function onClick(event) {
6676
- return onMrtRowClick == null ? void 0 : onMrtRowClick({
6677
- event: event,
6678
- row: row,
6679
- tableInstance: tableInstance
6473
+ var observer = observeRect(element, function (rect) {
6474
+ dispatch({
6475
+ rect: rect
6680
6476
  });
6681
- },
6682
- selected: row.getIsSelected()
6683
- }, tableRowProps, {
6684
- sx: function sx(theme) {
6685
- return _extends({
6686
- backgroundColor: material.lighten(theme.palette.background["default"], 0.06),
6687
- transition: 'all 0.2s ease-in-out',
6688
- '&:hover td': {
6689
- backgroundColor: (tableRowProps == null ? void 0 : tableRowProps.hover) !== false && getIsSomeColumnsPinned() ? theme.palette.mode === 'dark' ? "" + material.lighten(theme.palette.background["default"], 0.12) : "" + material.darken(theme.palette.background["default"], 0.05) : undefined
6690
- }
6691
- }, tableRowProps == null ? void 0 : tableRowProps.sx);
6692
- }
6693
- }), row.getVisibleCells().map(function (cell) {
6694
- return React__default.createElement(MRT_TableBodyCell, {
6695
- cell: cell,
6696
- key: cell.id,
6697
- enableHover: (tableRowProps == null ? void 0 : tableRowProps.hover) !== false,
6698
- tableInstance: tableInstance
6699
6477
  });
6700
- })), renderDetailPanel && !row.getIsGrouped() && React__default.createElement(MRT_TableDetailPanel, {
6701
- row: row,
6702
- tableInstance: tableInstance
6703
- }));
6704
- };
6705
-
6706
- function _extends$1() {
6707
- _extends$1 = Object.assign || function (target) {
6708
- for (var i = 1; i < arguments.length; i++) {
6709
- var source = arguments[i];
6710
-
6711
- for (var key in source) {
6712
- if (Object.prototype.hasOwnProperty.call(source, key)) {
6713
- target[key] = source[key];
6714
- }
6715
- }
6716
- }
6717
-
6718
- return target;
6719
- };
6720
-
6721
- return _extends$1.apply(this, arguments);
6478
+ observer.observe();
6479
+ return function () {
6480
+ observer.unobserve();
6481
+ };
6482
+ }, [element]);
6483
+ return rect;
6722
6484
  }
6723
6485
 
6724
- function _objectWithoutPropertiesLoose$2(source, excluded) {
6725
- if (source == null) return {};
6726
- var target = {};
6727
- var sourceKeys = Object.keys(source);
6728
- var key, i;
6486
+ function rectReducer(state, action) {
6487
+ var rect = action.rect;
6729
6488
 
6730
- for (i = 0; i < sourceKeys.length; i++) {
6731
- key = sourceKeys[i];
6732
- if (excluded.indexOf(key) >= 0) continue;
6733
- target[key] = source[key];
6489
+ if (state.height !== rect.height || state.width !== rect.width) {
6490
+ return rect;
6734
6491
  }
6735
6492
 
6736
- return target;
6493
+ return state;
6737
6494
  }
6738
6495
 
6739
- var props = ['bottom', 'height', 'left', 'right', 'top', 'width'];
6740
-
6741
- var rectChanged = function rectChanged(a, b) {
6742
- if (a === void 0) {
6743
- a = {};
6744
- }
6496
+ var defaultEstimateSize = function defaultEstimateSize() {
6497
+ return 50;
6498
+ };
6745
6499
 
6746
- if (b === void 0) {
6747
- b = {};
6748
- }
6500
+ var defaultKeyExtractor = function defaultKeyExtractor(index) {
6501
+ return index;
6502
+ };
6749
6503
 
6750
- return props.some(function (prop) {
6751
- return a[prop] !== b[prop];
6752
- });
6753
- };
6754
-
6755
- var observedNodes = /*#__PURE__*/new Map();
6756
- var rafId;
6757
-
6758
- var run = function run() {
6759
- var changedStates = [];
6760
- observedNodes.forEach(function (state, node) {
6761
- var newRect = node.getBoundingClientRect();
6762
-
6763
- if (rectChanged(newRect, state.rect)) {
6764
- state.rect = newRect;
6765
- changedStates.push(state);
6766
- }
6767
- });
6768
- changedStates.forEach(function (state) {
6769
- state.callbacks.forEach(function (cb) {
6770
- return cb(state.rect);
6771
- });
6772
- });
6773
- rafId = window.requestAnimationFrame(run);
6774
- };
6775
-
6776
- function observeRect(node, cb) {
6777
- return {
6778
- observe: function observe() {
6779
- var wasEmpty = observedNodes.size === 0;
6780
-
6781
- if (observedNodes.has(node)) {
6782
- observedNodes.get(node).callbacks.push(cb);
6783
- } else {
6784
- observedNodes.set(node, {
6785
- rect: undefined,
6786
- hasRectChanged: false,
6787
- callbacks: [cb]
6788
- });
6789
- }
6790
-
6791
- if (wasEmpty) run();
6792
- },
6793
- unobserve: function unobserve() {
6794
- var state = observedNodes.get(node);
6795
-
6796
- if (state) {
6797
- // Remove the callback
6798
- var index = state.callbacks.indexOf(cb);
6799
- if (index >= 0) state.callbacks.splice(index, 1); // Remove the node reference
6800
-
6801
- if (!state.callbacks.length) observedNodes["delete"](node); // Stop the loop
6802
-
6803
- if (!observedNodes.size) cancelAnimationFrame(rafId);
6804
- }
6805
- }
6806
- };
6807
- }
6808
-
6809
- var useIsomorphicLayoutEffect$1 = typeof window !== 'undefined' ? React__default.useLayoutEffect : React__default.useEffect;
6810
-
6811
- function useRect(nodeRef, initialRect) {
6812
- if (initialRect === void 0) {
6813
- initialRect = {
6814
- width: 0,
6815
- height: 0
6816
- };
6817
- }
6818
-
6819
- var _React$useState = React__default.useState(nodeRef.current),
6820
- element = _React$useState[0],
6821
- setElement = _React$useState[1];
6822
-
6823
- var _React$useReducer = React__default.useReducer(rectReducer, initialRect),
6824
- rect = _React$useReducer[0],
6825
- dispatch = _React$useReducer[1];
6826
-
6827
- var initialRectSet = React__default.useRef(false);
6828
- useIsomorphicLayoutEffect$1(function () {
6829
- if (nodeRef.current !== element) {
6830
- setElement(nodeRef.current);
6831
- }
6832
- });
6833
- useIsomorphicLayoutEffect$1(function () {
6834
- if (element && !initialRectSet.current) {
6835
- initialRectSet.current = true;
6836
-
6837
- var _rect = element.getBoundingClientRect();
6838
-
6839
- dispatch({
6840
- rect: _rect
6841
- });
6842
- }
6843
- }, [element]);
6844
- React__default.useEffect(function () {
6845
- if (!element) {
6846
- return;
6847
- }
6848
-
6849
- var observer = observeRect(element, function (rect) {
6850
- dispatch({
6851
- rect: rect
6852
- });
6853
- });
6854
- observer.observe();
6855
- return function () {
6856
- observer.unobserve();
6857
- };
6858
- }, [element]);
6859
- return rect;
6860
- }
6861
-
6862
- function rectReducer(state, action) {
6863
- var rect = action.rect;
6864
-
6865
- if (state.height !== rect.height || state.width !== rect.width) {
6866
- return rect;
6867
- }
6868
-
6869
- return state;
6870
- }
6871
-
6872
- var defaultEstimateSize = function defaultEstimateSize() {
6873
- return 50;
6874
- };
6875
-
6876
- var defaultKeyExtractor = function defaultKeyExtractor(index) {
6877
- return index;
6878
- };
6879
-
6880
- var defaultMeasureSize = function defaultMeasureSize(el, horizontal) {
6881
- var key = horizontal ? 'offsetWidth' : 'offsetHeight';
6882
- return el[key];
6504
+ var defaultMeasureSize = function defaultMeasureSize(el, horizontal) {
6505
+ var key = horizontal ? 'offsetWidth' : 'offsetHeight';
6506
+ return el[key];
6883
6507
  };
6884
6508
 
6885
6509
  var defaultRangeExtractor = function defaultRangeExtractor(range) {
@@ -7108,92 +6732,473 @@ function useVirtual(_ref) {
7108
6732
  outerSize = _latestRef$current2.outerSize;
7109
6733
  var measurement = measurements[Math.max(0, Math.min(index, size - 1))];
7110
6734
 
7111
- if (!measurement) {
7112
- return;
6735
+ if (!measurement) {
6736
+ return;
6737
+ }
6738
+
6739
+ if (align === 'auto') {
6740
+ if (measurement.end >= scrollOffset + outerSize) {
6741
+ align = 'end';
6742
+ } else if (measurement.start <= scrollOffset) {
6743
+ align = 'start';
6744
+ } else {
6745
+ return;
6746
+ }
6747
+ }
6748
+
6749
+ var toOffset = align === 'center' ? measurement.start + measurement.size / 2 : align === 'end' ? measurement.end : measurement.start;
6750
+ scrollToOffset(toOffset, _extends$1({
6751
+ align: align
6752
+ }, rest));
6753
+ }, [scrollToOffset, size]);
6754
+ var scrollToIndex = React__default.useCallback(function () {
6755
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
6756
+ args[_key] = arguments[_key];
6757
+ }
6758
+
6759
+ // We do a double request here because of
6760
+ // dynamic sizes which can cause offset shift
6761
+ // and end up in the wrong spot. Unfortunately,
6762
+ // we can't know about those dynamic sizes until
6763
+ // we try and render them. So double down!
6764
+ tryScrollToIndex.apply(void 0, args);
6765
+ requestAnimationFrame(function () {
6766
+ tryScrollToIndex.apply(void 0, args);
6767
+ });
6768
+ }, [tryScrollToIndex]);
6769
+ return {
6770
+ virtualItems: virtualItems,
6771
+ totalSize: totalSize,
6772
+ scrollToOffset: scrollToOffset,
6773
+ scrollToIndex: scrollToIndex,
6774
+ measure: measure
6775
+ };
6776
+ }
6777
+
6778
+ var findNearestBinarySearch = function findNearestBinarySearch(low, high, getCurrentValue, value) {
6779
+ while (low <= high) {
6780
+ var middle = (low + high) / 2 | 0;
6781
+ var currentValue = getCurrentValue(middle);
6782
+
6783
+ if (currentValue < value) {
6784
+ low = middle + 1;
6785
+ } else if (currentValue > value) {
6786
+ high = middle - 1;
6787
+ } else {
6788
+ return middle;
6789
+ }
6790
+ }
6791
+
6792
+ if (low > 0) {
6793
+ return low - 1;
6794
+ } else {
6795
+ return 0;
6796
+ }
6797
+ };
6798
+
6799
+ function calculateRange(_ref4) {
6800
+ var measurements = _ref4.measurements,
6801
+ outerSize = _ref4.outerSize,
6802
+ scrollOffset = _ref4.scrollOffset;
6803
+ var size = measurements.length - 1;
6804
+
6805
+ var getOffset = function getOffset(index) {
6806
+ return measurements[index].start;
6807
+ };
6808
+
6809
+ var start = findNearestBinarySearch(0, size, getOffset, scrollOffset);
6810
+ var end = start;
6811
+
6812
+ while (end < size && measurements[end].end < scrollOffset + outerSize) {
6813
+ end++;
6814
+ }
6815
+
6816
+ return {
6817
+ start: start,
6818
+ end: end
6819
+ };
6820
+ }
6821
+
6822
+ var MRT_EditCellTextField = function MRT_EditCellTextField(_ref) {
6823
+ var cell = _ref.cell,
6824
+ tableInstance = _ref.tableInstance;
6825
+ var getState = tableInstance.getState,
6826
+ _tableInstance$option = tableInstance.options,
6827
+ tableId = _tableInstance$option.tableId,
6828
+ enableEditing = _tableInstance$option.enableEditing,
6829
+ muiTableBodyCellEditTextFieldProps = _tableInstance$option.muiTableBodyCellEditTextFieldProps,
6830
+ onMrtCellEditBlur = _tableInstance$option.onMrtCellEditBlur,
6831
+ onMrtCellEditChange = _tableInstance$option.onMrtCellEditChange,
6832
+ setCurrentEditingCell = tableInstance.setCurrentEditingCell,
6833
+ setCurrentEditingRow = tableInstance.setCurrentEditingRow;
6834
+
6835
+ var _useState = React.useState(cell.getValue()),
6836
+ value = _useState[0],
6837
+ setValue = _useState[1];
6838
+
6839
+ var column = cell.column,
6840
+ row = cell.row;
6841
+ var columnDef = column.columnDef;
6842
+
6843
+ var handleChange = function handleChange(event) {
6844
+ setValue(event.target.value);
6845
+ columnDef.onMrtCellEditChange == null ? void 0 : columnDef.onMrtCellEditChange({
6846
+ event: event,
6847
+ cell: cell,
6848
+ tableInstance: tableInstance
6849
+ });
6850
+ onMrtCellEditChange == null ? void 0 : onMrtCellEditChange({
6851
+ event: event,
6852
+ cell: cell,
6853
+ tableInstance: tableInstance
6854
+ });
6855
+ };
6856
+
6857
+ var handleBlur = function handleBlur(event) {
6858
+ if (getState().currentEditingRow) {
6859
+ if (!row._valuesCache) row._valuesCache = {};
6860
+ row._valuesCache[column.id] = value;
6861
+ setCurrentEditingRow(_extends({}, getState().currentEditingRow));
6862
+ }
6863
+
6864
+ setCurrentEditingCell(null);
6865
+ columnDef.onMrtCellEditBlur == null ? void 0 : columnDef.onMrtCellEditBlur({
6866
+ event: event,
6867
+ cell: cell,
6868
+ tableInstance: tableInstance
6869
+ });
6870
+ onMrtCellEditBlur == null ? void 0 : onMrtCellEditBlur({
6871
+ event: event,
6872
+ cell: cell,
6873
+ tableInstance: tableInstance
6874
+ });
6875
+ };
6876
+
6877
+ var mTableBodyCellEditTextFieldProps = muiTableBodyCellEditTextFieldProps instanceof Function ? muiTableBodyCellEditTextFieldProps({
6878
+ cell: cell,
6879
+ tableInstance: tableInstance
6880
+ }) : muiTableBodyCellEditTextFieldProps;
6881
+ var mcTableBodyCellEditTextFieldProps = columnDef.muiTableBodyCellEditTextFieldProps instanceof Function ? columnDef.muiTableBodyCellEditTextFieldProps({
6882
+ cell: cell,
6883
+ tableInstance: tableInstance
6884
+ }) : columnDef.muiTableBodyCellEditTextFieldProps;
6885
+
6886
+ var textFieldProps = _extends({}, mTableBodyCellEditTextFieldProps, mcTableBodyCellEditTextFieldProps);
6887
+
6888
+ if (enableEditing && columnDef.enableEditing !== false && columnDef.Edit) {
6889
+ return React__default.createElement(React__default.Fragment, null, columnDef.Edit == null ? void 0 : columnDef.Edit({
6890
+ cell: cell,
6891
+ tableInstance: tableInstance
6892
+ }));
6893
+ }
6894
+
6895
+ return React__default.createElement(material.TextField, Object.assign({
6896
+ id: "mrt-" + tableId + "-edit-cell-text-field-" + cell.id,
6897
+ margin: "dense",
6898
+ onBlur: handleBlur,
6899
+ onChange: handleChange,
6900
+ onClick: function onClick(e) {
6901
+ return e.stopPropagation();
6902
+ },
6903
+ placeholder: columnDef.header,
6904
+ value: value,
6905
+ variant: "standard"
6906
+ }, textFieldProps));
6907
+ };
6908
+
6909
+ var MRT_CopyButton = function MRT_CopyButton(_ref) {
6910
+ var cell = _ref.cell,
6911
+ children = _ref.children,
6912
+ tableInstance = _ref.tableInstance;
6913
+ var _tableInstance$option = tableInstance.options,
6914
+ localization = _tableInstance$option.localization,
6915
+ muiTableBodyCellCopyButtonProps = _tableInstance$option.muiTableBodyCellCopyButtonProps;
6916
+ var column = cell.column;
6917
+ var columnDef = column.columnDef;
6918
+
6919
+ var _useState = React.useState(false),
6920
+ copied = _useState[0],
6921
+ setCopied = _useState[1];
6922
+
6923
+ var handleCopy = function handleCopy(text) {
6924
+ navigator.clipboard.writeText(text);
6925
+ setCopied(true);
6926
+ setTimeout(function () {
6927
+ return setCopied(false);
6928
+ }, 4000);
6929
+ };
6930
+
6931
+ var mTableBodyCellCopyButtonProps = muiTableBodyCellCopyButtonProps instanceof Function ? muiTableBodyCellCopyButtonProps({
6932
+ cell: cell,
6933
+ tableInstance: tableInstance
6934
+ }) : muiTableBodyCellCopyButtonProps;
6935
+ var mcTableBodyCellCopyButtonProps = columnDef.muiTableBodyCellCopyButtonProps instanceof Function ? columnDef.muiTableBodyCellCopyButtonProps({
6936
+ cell: cell,
6937
+ tableInstance: tableInstance
6938
+ }) : columnDef.muiTableBodyCellCopyButtonProps;
6939
+
6940
+ var buttonProps = _extends({}, mTableBodyCellCopyButtonProps, mcTableBodyCellCopyButtonProps);
6941
+
6942
+ return React__default.createElement(material.Tooltip, {
6943
+ arrow: true,
6944
+ enterDelay: 1000,
6945
+ enterNextDelay: 1000,
6946
+ placement: "top",
6947
+ title: copied ? localization.copiedToClipboard : localization.clickToCopy
6948
+ }, React__default.createElement(material.Button, Object.assign({
6949
+ "aria-label": localization.clickToCopy,
6950
+ onClick: function onClick() {
6951
+ return handleCopy(cell.getValue());
6952
+ },
6953
+ size: "small",
6954
+ type: "button",
6955
+ variant: "text"
6956
+ }, buttonProps, {
6957
+ sx: _extends({
6958
+ backgroundColor: 'transparent',
6959
+ border: 'none',
6960
+ color: 'inherit',
6961
+ cursor: 'copy',
6962
+ fontFamily: 'inherit',
6963
+ fontSize: 'inherit',
6964
+ letterSpacing: 'inherit',
6965
+ m: '-0.25rem',
6966
+ minWidth: 'unset',
6967
+ textAlign: 'inherit',
6968
+ textTransform: 'inherit'
6969
+ }, buttonProps == null ? void 0 : buttonProps.sx)
6970
+ }), children));
6971
+ };
6972
+
6973
+ var MRT_TableBodyCell = function MRT_TableBodyCell(_ref) {
6974
+ var _columnDef$minSize, _columnDef$Cell, _row$subRows, _columnDef$Cell2, _row$subRows$length, _row$subRows2;
6975
+
6976
+ var cell = _ref.cell,
6977
+ enableHover = _ref.enableHover,
6978
+ tableInstance = _ref.tableInstance;
6979
+ var getState = tableInstance.getState,
6980
+ _tableInstance$option = tableInstance.options,
6981
+ editingMode = _tableInstance$option.editingMode,
6982
+ enableClickToCopy = _tableInstance$option.enableClickToCopy,
6983
+ enableColumnOrdering = _tableInstance$option.enableColumnOrdering,
6984
+ enableColumnResizing = _tableInstance$option.enableColumnResizing,
6985
+ enableEditing = _tableInstance$option.enableEditing,
6986
+ enableRowVirtualization = _tableInstance$option.enableRowVirtualization,
6987
+ muiTableBodyCellProps = _tableInstance$option.muiTableBodyCellProps,
6988
+ muiTableBodyCellSkeletonProps = _tableInstance$option.muiTableBodyCellSkeletonProps,
6989
+ onMrtCellClick = _tableInstance$option.onMrtCellClick,
6990
+ tableId = _tableInstance$option.tableId,
6991
+ setColumnOrder = tableInstance.setColumnOrder,
6992
+ setCurrentEditingCell = tableInstance.setCurrentEditingCell;
6993
+
6994
+ var _getState = getState(),
6995
+ columnOrder = _getState.columnOrder,
6996
+ currentEditingCell = _getState.currentEditingCell,
6997
+ currentEditingRow = _getState.currentEditingRow,
6998
+ isDensePadding = _getState.isDensePadding,
6999
+ isLoading = _getState.isLoading,
7000
+ showSkeletons = _getState.showSkeletons;
7001
+
7002
+ var column = cell.column,
7003
+ row = cell.row;
7004
+ var columnDef = column.columnDef,
7005
+ columnDefType = column.columnDefType;
7006
+
7007
+ var _useDrop = useDrop({
7008
+ accept: 'column',
7009
+ drop: function drop(movingColumn) {
7010
+ return reorderColumn(movingColumn, column, columnOrder, setColumnOrder);
7113
7011
  }
7012
+ }),
7013
+ dropRef = _useDrop[1];
7114
7014
 
7115
- if (align === 'auto') {
7116
- if (measurement.end >= scrollOffset + outerSize) {
7117
- align = 'end';
7118
- } else if (measurement.start <= scrollOffset) {
7119
- align = 'start';
7120
- } else {
7121
- return;
7122
- }
7123
- }
7015
+ var mTableCellBodyProps = muiTableBodyCellProps instanceof Function ? muiTableBodyCellProps({
7016
+ cell: cell,
7017
+ tableInstance: tableInstance
7018
+ }) : muiTableBodyCellProps;
7019
+ var mcTableCellBodyProps = columnDef.muiTableBodyCellProps instanceof Function ? columnDef.muiTableBodyCellProps({
7020
+ cell: cell,
7021
+ tableInstance: tableInstance
7022
+ }) : columnDef.muiTableBodyCellProps;
7124
7023
 
7125
- var toOffset = align === 'center' ? measurement.start + measurement.size / 2 : align === 'end' ? measurement.end : measurement.start;
7126
- scrollToOffset(toOffset, _extends$1({
7127
- align: align
7128
- }, rest));
7129
- }, [scrollToOffset, size]);
7130
- var scrollToIndex = React__default.useCallback(function () {
7131
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
7132
- args[_key] = arguments[_key];
7133
- }
7024
+ var tableCellProps = _extends({}, mTableCellBodyProps, mcTableCellBodyProps);
7134
7025
 
7135
- // We do a double request here because of
7136
- // dynamic sizes which can cause offset shift
7137
- // and end up in the wrong spot. Unfortunately,
7138
- // we can't know about those dynamic sizes until
7139
- // we try and render them. So double down!
7140
- tryScrollToIndex.apply(void 0, args);
7141
- requestAnimationFrame(function () {
7142
- tryScrollToIndex.apply(void 0, args);
7143
- });
7144
- }, [tryScrollToIndex]);
7145
- return {
7146
- virtualItems: virtualItems,
7147
- totalSize: totalSize,
7148
- scrollToOffset: scrollToOffset,
7149
- scrollToIndex: scrollToIndex,
7150
- measure: measure
7151
- };
7152
- }
7026
+ var skeletonWidth = React.useMemo(function () {
7027
+ return columnDefType === 'display' ? column.getSize() / 2 : Math.random() * (column.getSize() - column.getSize() / 3) + column.getSize() / 3;
7028
+ }, [columnDefType, column.getSize()]);
7029
+ var isEditable = (enableEditing || columnDef.enableEditing) && columnDef.enableEditing !== false;
7030
+ var isEditing = isEditable && (editingMode === 'table' || (currentEditingRow == null ? void 0 : currentEditingRow.id) === row.id || (currentEditingCell == null ? void 0 : currentEditingCell.id) === cell.id);
7153
7031
 
7154
- var findNearestBinarySearch = function findNearestBinarySearch(low, high, getCurrentValue, value) {
7155
- while (low <= high) {
7156
- var middle = (low + high) / 2 | 0;
7157
- var currentValue = getCurrentValue(middle);
7032
+ var handleDoubleClick = function handleDoubleClick(_event) {
7033
+ if ((enableEditing || columnDef.enableEditing) && columnDef.enableEditing !== false && editingMode === 'cell') {
7034
+ setCurrentEditingCell(cell);
7035
+ setTimeout(function () {
7036
+ var textField = document.getElementById("mrt-" + tableId + "-edit-cell-text-field-" + cell.id);
7158
7037
 
7159
- if (currentValue < value) {
7160
- low = middle + 1;
7161
- } else if (currentValue > value) {
7162
- high = middle - 1;
7163
- } else {
7164
- return middle;
7038
+ if (textField) {
7039
+ textField.focus();
7040
+ textField.select();
7041
+ }
7042
+ }, 200);
7165
7043
  }
7166
- }
7044
+ };
7167
7045
 
7168
- if (low > 0) {
7169
- return low - 1;
7170
- } else {
7171
- return 0;
7172
- }
7173
- };
7046
+ var getIsLastLeftPinnedColumn = function getIsLastLeftPinnedColumn() {
7047
+ return column.getIsPinned() === 'left' && tableInstance.getLeftLeafHeaders().length - 1 === column.getPinnedIndex();
7048
+ };
7174
7049
 
7175
- function calculateRange(_ref4) {
7176
- var measurements = _ref4.measurements,
7177
- outerSize = _ref4.outerSize,
7178
- scrollOffset = _ref4.scrollOffset;
7179
- var size = measurements.length - 1;
7050
+ var getIsFirstRightPinnedColumn = function getIsFirstRightPinnedColumn() {
7051
+ return column.getIsPinned() === 'right' && column.getPinnedIndex() === 0;
7052
+ };
7180
7053
 
7181
- var getOffset = function getOffset(index) {
7182
- return measurements[index].start;
7054
+ var getTotalRight = function getTotalRight() {
7055
+ return (tableInstance.getRightLeafHeaders().length - 1 - column.getPinnedIndex()) * 150;
7183
7056
  };
7184
7057
 
7185
- var start = findNearestBinarySearch(0, size, getOffset, scrollOffset);
7186
- var end = start;
7058
+ return React__default.createElement(material.TableCell, Object.assign({
7059
+ onClick: function onClick(event) {
7060
+ return onMrtCellClick == null ? void 0 : onMrtCellClick({
7061
+ event: event,
7062
+ cell: cell,
7063
+ tableInstance: tableInstance
7064
+ });
7065
+ },
7066
+ onDoubleClick: handleDoubleClick,
7067
+ title: (enableRowVirtualization || enableColumnResizing) && !(columnDef != null && columnDef.Cell) && !cell.getIsGrouped() && !columnDef.enableClickToCopy && typeof cell.getValue() === 'string' ? cell.getValue() : ''
7068
+ }, tableCellProps, {
7069
+ ref: columnDefType === 'data' && enableColumnOrdering ? dropRef : undefined,
7070
+ sx: function sx(theme) {
7071
+ return _extends({
7072
+ backgroundColor: column.getIsPinned() ? material.alpha(material.lighten(theme.palette.background["default"], 0.04), 0.95) : undefined,
7073
+ boxShadow: getIsLastLeftPinnedColumn() ? "4px 0 4px -2px " + material.alpha(theme.palette.common.black, 0.1) : getIsFirstRightPinnedColumn() ? "-4px 0 4px -2px " + material.alpha(theme.palette.common.black, 0.1) : undefined,
7074
+ cursor: isEditable && editingMode === 'cell' ? 'pointer' : 'text',
7075
+ left: column.getIsPinned() === 'left' ? column.getStart('left') + "px" : undefined,
7076
+ overflow: 'hidden',
7077
+ p: isDensePadding ? columnDefType === 'display' ? '0 0.5rem' : '0.5rem' : columnDefType === 'display' ? '0.5rem 0.75rem' : '1rem',
7078
+ pl: column.id === 'mrt-expand' ? row.depth + (isDensePadding ? 0.5 : 0.75) + "rem" : undefined,
7079
+ position: column.getIsPinned() ? 'sticky' : 'relative',
7080
+ right: column.getIsPinned() === 'right' ? getTotalRight() + "px" : undefined,
7081
+ textOverflow: 'ellipsis',
7082
+ transition: 'all 0.2s ease-in-out',
7083
+ whiteSpace: isDensePadding ? 'nowrap' : 'normal',
7084
+ zIndex: column.getIsPinned() ? 1 : undefined,
7085
+ '&:hover': {
7086
+ backgroundColor: enableHover && enableEditing && editingMode !== 'row' ? theme.palette.mode === 'dark' ? material.lighten(theme.palette.background["default"], 0.13) + " !important" : material.darken(theme.palette.background["default"], 0.07) + " !important" : undefined
7087
+ }
7088
+ }, tableCellProps == null ? void 0 : tableCellProps.sx);
7089
+ },
7090
+ style: {
7091
+ maxWidth: "min(" + column.getSize() + "px, fit-content)",
7092
+ minWidth: "max(" + column.getSize() + "px, " + ((_columnDef$minSize = columnDef.minSize) != null ? _columnDef$minSize : 30) + "px)",
7093
+ width: column.getSize()
7094
+ }
7095
+ }), React__default.createElement(React__default.Fragment, null, isLoading || showSkeletons ? React__default.createElement(material.Skeleton, Object.assign({
7096
+ animation: "wave",
7097
+ height: 20,
7098
+ width: skeletonWidth
7099
+ }, muiTableBodyCellSkeletonProps)) : columnDefType === 'display' ? columnDef.Cell == null ? void 0 : columnDef.Cell({
7100
+ cell: cell,
7101
+ tableInstance: tableInstance
7102
+ }) : cell.getIsPlaceholder() || row.getIsGrouped() && column.id !== row.groupingColumnId ? null : cell.getIsAggregated() ? cell.renderAggregatedCell() : isEditing ? React__default.createElement(MRT_EditCellTextField, {
7103
+ cell: cell,
7104
+ tableInstance: tableInstance
7105
+ }) : (enableClickToCopy || columnDef.enableClickToCopy) && columnDef.enableClickToCopy !== false ? React__default.createElement(React__default.Fragment, null, React__default.createElement(MRT_CopyButton, {
7106
+ cell: cell,
7107
+ tableInstance: tableInstance
7108
+ }, React__default.createElement(React__default.Fragment, null, (_columnDef$Cell = columnDef == null ? void 0 : columnDef.Cell == null ? void 0 : columnDef.Cell({
7109
+ cell: cell,
7110
+ tableInstance: tableInstance
7111
+ })) != null ? _columnDef$Cell : cell.renderCell())), row.getIsGrouped() && React__default.createElement(React__default.Fragment, null, " (", (_row$subRows = row.subRows) == null ? void 0 : _row$subRows.length, ")")) : React__default.createElement(React__default.Fragment, null, (_columnDef$Cell2 = columnDef == null ? void 0 : columnDef.Cell == null ? void 0 : columnDef.Cell({
7112
+ cell: cell,
7113
+ tableInstance: tableInstance
7114
+ })) != null ? _columnDef$Cell2 : cell.renderCell(), row.getIsGrouped() && React__default.createElement(React__default.Fragment, null, " (", (_row$subRows$length = (_row$subRows2 = row.subRows) == null ? void 0 : _row$subRows2.length) != null ? _row$subRows$length : '', ")"))));
7115
+ };
7187
7116
 
7188
- while (end < size && measurements[end].end < scrollOffset + outerSize) {
7189
- end++;
7190
- }
7117
+ var MRT_TableDetailPanel = function MRT_TableDetailPanel(_ref) {
7118
+ var row = _ref.row,
7119
+ tableInstance = _ref.tableInstance;
7120
+ var getVisibleFlatColumns = tableInstance.getVisibleFlatColumns,
7121
+ _tableInstance$option = tableInstance.options,
7122
+ muiTableBodyRowProps = _tableInstance$option.muiTableBodyRowProps,
7123
+ muiTableDetailPanelProps = _tableInstance$option.muiTableDetailPanelProps,
7124
+ onMrtDetailPanelClick = _tableInstance$option.onMrtDetailPanelClick,
7125
+ renderDetailPanel = _tableInstance$option.renderDetailPanel;
7126
+ var tableRowProps = muiTableBodyRowProps instanceof Function ? muiTableBodyRowProps({
7127
+ row: row,
7128
+ tableInstance: tableInstance
7129
+ }) : muiTableBodyRowProps;
7130
+ var tableCellProps = muiTableDetailPanelProps instanceof Function ? muiTableDetailPanelProps({
7131
+ row: row,
7132
+ tableInstance: tableInstance
7133
+ }) : muiTableDetailPanelProps;
7134
+ return React__default.createElement(material.TableRow, Object.assign({}, tableRowProps), React__default.createElement(material.TableCell, Object.assign({
7135
+ colSpan: getVisibleFlatColumns().length + 10,
7136
+ onClick: function onClick(event) {
7137
+ return onMrtDetailPanelClick == null ? void 0 : onMrtDetailPanelClick({
7138
+ event: event,
7139
+ row: row,
7140
+ tableInstance: tableInstance
7141
+ });
7142
+ }
7143
+ }, tableCellProps, {
7144
+ sx: _extends({
7145
+ borderBottom: !row.getIsExpanded() ? 'none' : undefined,
7146
+ pb: row.getIsExpanded() ? '1rem' : 0,
7147
+ pt: row.getIsExpanded() ? '1rem' : 0,
7148
+ transition: 'all 0.2s ease-in-out'
7149
+ }, tableCellProps == null ? void 0 : tableCellProps.sx)
7150
+ }), React__default.createElement(material.Collapse, {
7151
+ "in": row.getIsExpanded()
7152
+ }, renderDetailPanel == null ? void 0 : renderDetailPanel({
7153
+ row: row,
7154
+ tableInstance: tableInstance
7155
+ }))));
7156
+ };
7191
7157
 
7192
- return {
7193
- start: start,
7194
- end: end
7195
- };
7196
- }
7158
+ var MRT_TableBodyRow = function MRT_TableBodyRow(_ref) {
7159
+ var row = _ref.row,
7160
+ tableInstance = _ref.tableInstance;
7161
+ var getIsSomeColumnsPinned = tableInstance.getIsSomeColumnsPinned,
7162
+ _tableInstance$option = tableInstance.options,
7163
+ muiTableBodyRowProps = _tableInstance$option.muiTableBodyRowProps,
7164
+ onMrtRowClick = _tableInstance$option.onMrtRowClick,
7165
+ renderDetailPanel = _tableInstance$option.renderDetailPanel;
7166
+ var tableRowProps = muiTableBodyRowProps instanceof Function ? muiTableBodyRowProps({
7167
+ row: row,
7168
+ tableInstance: tableInstance
7169
+ }) : muiTableBodyRowProps;
7170
+ return React__default.createElement(React__default.Fragment, null, React__default.createElement(material.TableRow, Object.assign({
7171
+ hover: true,
7172
+ onClick: function onClick(event) {
7173
+ return onMrtRowClick == null ? void 0 : onMrtRowClick({
7174
+ event: event,
7175
+ row: row,
7176
+ tableInstance: tableInstance
7177
+ });
7178
+ },
7179
+ selected: row.getIsSelected()
7180
+ }, tableRowProps, {
7181
+ sx: function sx(theme) {
7182
+ return _extends({
7183
+ backgroundColor: material.lighten(theme.palette.background["default"], 0.06),
7184
+ transition: 'all 0.2s ease-in-out',
7185
+ '&:hover td': {
7186
+ backgroundColor: (tableRowProps == null ? void 0 : tableRowProps.hover) !== false && getIsSomeColumnsPinned() ? theme.palette.mode === 'dark' ? "" + material.lighten(theme.palette.background["default"], 0.12) : "" + material.darken(theme.palette.background["default"], 0.05) : undefined
7187
+ }
7188
+ }, tableRowProps == null ? void 0 : tableRowProps.sx);
7189
+ }
7190
+ }), row.getVisibleCells().map(function (cell) {
7191
+ return React__default.createElement(MRT_TableBodyCell, {
7192
+ cell: cell,
7193
+ key: cell.id,
7194
+ enableHover: (tableRowProps == null ? void 0 : tableRowProps.hover) !== false,
7195
+ tableInstance: tableInstance
7196
+ });
7197
+ })), renderDetailPanel && !row.getIsGrouped() && React__default.createElement(MRT_TableDetailPanel, {
7198
+ row: row,
7199
+ tableInstance: tableInstance
7200
+ }));
7201
+ };
7197
7202
 
7198
7203
  var MRT_TableBody = function MRT_TableBody(_ref) {
7199
7204
  var tableInstance = _ref.tableInstance,
@@ -7213,14 +7218,14 @@ var MRT_TableBody = function MRT_TableBody(_ref) {
7213
7218
  tableInstance: tableInstance
7214
7219
  }) : muiTableBodyProps;
7215
7220
  var rows = enablePagination ? getPaginationRowModel().rows : getPrePaginationRowModel().rows;
7216
- var rowVirtualizer = useVirtual({
7221
+ var rowVirtualizer = enableRowVirtualization ? useVirtual({
7217
7222
  overscan: isDensePadding ? 15 : 5,
7218
7223
  size: rows.length,
7219
7224
  parentRef: tableContainerRef
7220
- });
7225
+ }) : {};
7221
7226
  var virtualRows = rowVirtualizer.virtualItems;
7222
- var paddingTop = virtualRows.length > 0 ? virtualRows[0].start : 0;
7223
- var paddingBottom = virtualRows.length > 0 ? rowVirtualizer.totalSize - virtualRows[virtualRows.length - 1].end : 0;
7227
+ var paddingTop = (virtualRows == null ? void 0 : virtualRows.length) > 0 ? virtualRows[0].start : 0;
7228
+ var paddingBottom = (virtualRows == null ? void 0 : virtualRows.length) > 0 ? rowVirtualizer.totalSize - virtualRows[virtualRows.length - 1].end : 0;
7224
7229
  return React__default.createElement(material.TableBody, Object.assign({}, tableBodyProps), enableRowVirtualization && paddingTop > 0 && React__default.createElement("tr", null, React__default.createElement("td", {
7225
7230
  style: {
7226
7231
  height: paddingTop + "px"
@@ -7333,6 +7338,8 @@ var MRT_Table = function MRT_Table(_ref) {
7333
7338
  var tableContainerRef = _ref.tableContainerRef,
7334
7339
  tableInstance = _ref.tableInstance;
7335
7340
  var _tableInstance$option = tableInstance.options,
7341
+ enableColumnResizing = _tableInstance$option.enableColumnResizing,
7342
+ enableRowVirtualization = _tableInstance$option.enableRowVirtualization,
7336
7343
  enableStickyHeader = _tableInstance$option.enableStickyHeader,
7337
7344
  enableTableFooter = _tableInstance$option.enableTableFooter,
7338
7345
  enableTableHead = _tableInstance$option.enableTableHead,
@@ -7342,7 +7349,11 @@ var MRT_Table = function MRT_Table(_ref) {
7342
7349
  }) : muiTableProps;
7343
7350
  return React__default.createElement(material.Table, Object.assign({
7344
7351
  stickyHeader: enableStickyHeader
7345
- }, tableProps), enableTableHead && React__default.createElement(MRT_TableHead, {
7352
+ }, tableProps, {
7353
+ sx: _extends({
7354
+ tableLayout: enableColumnResizing || enableRowVirtualization ? 'fixed' : undefined
7355
+ }, tableProps == null ? void 0 : tableProps.sx)
7356
+ }), enableTableHead && React__default.createElement(MRT_TableHead, {
7346
7357
  tableInstance: tableInstance
7347
7358
  }), React__default.createElement(MRT_TableBody, {
7348
7359
  tableContainerRef: tableContainerRef,
@@ -7712,9 +7723,9 @@ var MaterialReactTable = (function (_ref) {
7712
7723
  columnResizeMode = _ref$columnResizeMode === void 0 ? 'onEnd' : _ref$columnResizeMode,
7713
7724
  _ref$defaultColumn = _ref.defaultColumn,
7714
7725
  defaultColumn = _ref$defaultColumn === void 0 ? {
7715
- minSize: 50,
7726
+ minSize: 30,
7716
7727
  maxSize: 1000,
7717
- size: 150
7728
+ size: 180
7718
7729
  } : _ref$defaultColumn,
7719
7730
  _ref$editingMode = _ref.editingMode,
7720
7731
  editingMode = _ref$editingMode === void 0 ? 'row' : _ref$editingMode,