material-react-table 3.0.0-beta.0 → 3.0.0-beta.2

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/dist/index.esm.js CHANGED
@@ -235,6 +235,20 @@ const createRow = (table, originalRow, rowIndex = -1, depth = 0, subRows, parent
235
235
  [getColumnId(col)]: '',
236
236
  }))), rowIndex, depth, subRows, parentId);
237
237
 
238
+ const fuzzy$1 = (rowA, rowB, columnId) => {
239
+ let dir = 0;
240
+ if (rowA.columnFiltersMeta[columnId]) {
241
+ dir = compareItems(rowA.columnFiltersMeta[columnId], rowB.columnFiltersMeta[columnId]);
242
+ }
243
+ // Provide a fallback for when the item ranks are equal
244
+ return dir === 0
245
+ ? sortingFns.alphanumeric(rowA, rowB, columnId)
246
+ : dir;
247
+ };
248
+ const MRT_SortingFns = Object.assign(Object.assign({}, sortingFns), { fuzzy: fuzzy$1 });
249
+ const rankGlobalFuzzy = (rowA, rowB) => Math.max(...Object.values(rowB.columnFiltersMeta).map((v) => v.rank)) -
250
+ Math.max(...Object.values(rowA.columnFiltersMeta).map((v) => v.rank));
251
+
238
252
  const parseFromValuesOrFunc = (fn, arg) => (fn instanceof Function ? fn(arg) : fn);
239
253
  const getValueAndLabel = (option) => {
240
254
  var _a, _b;
@@ -253,161 +267,6 @@ const getValueAndLabel = (option) => {
253
267
  return { label, value };
254
268
  };
255
269
 
256
- const isCellEditable = ({ cell, table, }) => {
257
- const { enableEditing } = table.options;
258
- const { column: { columnDef }, row, } = cell;
259
- return (!cell.getIsPlaceholder() &&
260
- parseFromValuesOrFunc(enableEditing, row) &&
261
- parseFromValuesOrFunc(columnDef.enableEditing, row) !== false);
262
- };
263
- const openEditingCell = ({ cell, table, }) => {
264
- const { options: { editDisplayMode }, refs: { editInputRefs }, } = table;
265
- const { column } = cell;
266
- if (isCellEditable({ cell, table }) && editDisplayMode === 'cell') {
267
- table.setEditingCell(cell);
268
- queueMicrotask(() => {
269
- var _a;
270
- const textField = editInputRefs.current[column.id];
271
- if (textField) {
272
- textField.focus();
273
- (_a = textField.select) === null || _a === void 0 ? void 0 : _a.call(textField);
274
- }
275
- });
276
- }
277
- };
278
- const cellNavigation = (e) => {
279
- if (['ArrowRight', 'ArrowLeft', 'ArrowUp', 'ArrowDown', 'Home', 'End'].includes(e.key)) {
280
- e.preventDefault();
281
- const currentCell = e.currentTarget;
282
- const currentRow = currentCell.closest('tr');
283
- const tableElement = currentCell.closest('table');
284
- const allCells = Array.from((tableElement === null || tableElement === void 0 ? void 0 : tableElement.querySelectorAll('th, td')) || []);
285
- const currentCellIndex = allCells.indexOf(currentCell);
286
- const currentIndex = parseInt(currentCell.getAttribute('data-index') || '0');
287
- let nextCell = undefined;
288
- //home/end first or last cell in row
289
- const findEdgeCell = (rowIndex, edge) => {
290
- var _a, _b, _c;
291
- const row = rowIndex === 'c'
292
- ? currentRow
293
- : rowIndex === 'f'
294
- ? (_a = currentCell.closest('table')) === null || _a === void 0 ? void 0 : _a.querySelector('tr')
295
- : (_c = (_b = currentCell.closest('table')) === null || _b === void 0 ? void 0 : _b.lastElementChild) === null || _c === void 0 ? void 0 : _c.lastElementChild;
296
- const rowCells = Array.from((row === null || row === void 0 ? void 0 : row.children) || []);
297
- const targetCell = edge === 'f' ? rowCells[0] : rowCells[rowCells.length - 1];
298
- return targetCell;
299
- };
300
- const findAdjacentCell = (columnIndex, searchDirection) => {
301
- const searchArray = searchDirection === 'f'
302
- ? allCells.slice(currentCellIndex + 1)
303
- : allCells.slice(0, currentCellIndex).reverse();
304
- return searchArray.find((cell) => cell.matches(`[data-index="${columnIndex}"]`));
305
- };
306
- switch (e.key) {
307
- case 'ArrowRight':
308
- nextCell = findAdjacentCell(currentIndex + 1, 'f');
309
- break;
310
- case 'ArrowLeft':
311
- nextCell = findAdjacentCell(currentIndex - 1, 'b');
312
- break;
313
- case 'ArrowUp':
314
- nextCell = findAdjacentCell(currentIndex, 'b');
315
- break;
316
- case 'ArrowDown':
317
- nextCell = findAdjacentCell(currentIndex, 'f');
318
- break;
319
- case 'Home':
320
- nextCell = findEdgeCell(e.ctrlKey ? 'f' : 'c', 'f');
321
- break;
322
- case 'End':
323
- nextCell = findEdgeCell(e.ctrlKey ? 'l' : 'c', 'l');
324
- break;
325
- }
326
- if (nextCell) {
327
- nextCell.focus();
328
- }
329
- }
330
- };
331
-
332
- function defaultDisplayColumnProps({ header, id, size, tableOptions, }) {
333
- const { defaultDisplayColumn, displayColumnDefOptions, localization } = tableOptions;
334
- return Object.assign(Object.assign(Object.assign(Object.assign({}, defaultDisplayColumn), { header: header ? localization[header] : '', size }), displayColumnDefOptions === null || displayColumnDefOptions === void 0 ? void 0 : displayColumnDefOptions[id]), { id });
335
- }
336
- const showRowPinningColumn = (tableOptions) => {
337
- const { enableRowPinning, rowPinningDisplayMode } = tableOptions;
338
- return !!(enableRowPinning && !(rowPinningDisplayMode === null || rowPinningDisplayMode === void 0 ? void 0 : rowPinningDisplayMode.startsWith('select')));
339
- };
340
- const showRowDragColumn = (tableOptions) => {
341
- const { enableRowDragging, enableRowOrdering } = tableOptions;
342
- return !!(enableRowDragging || enableRowOrdering);
343
- };
344
- const showRowExpandColumn = (tableOptions) => {
345
- const { enableExpanding, enableGrouping, renderDetailPanel, state: { grouping }, } = tableOptions;
346
- return !!(enableExpanding ||
347
- (enableGrouping && (grouping === null || grouping === void 0 ? void 0 : grouping.length)) ||
348
- renderDetailPanel);
349
- };
350
- const showRowActionsColumn = (tableOptions) => {
351
- const { createDisplayMode, editDisplayMode, enableEditing, enableRowActions, state: { creatingRow }, } = tableOptions;
352
- return !!(enableRowActions ||
353
- (creatingRow && createDisplayMode === 'row') ||
354
- (enableEditing && ['modal', 'row'].includes(editDisplayMode !== null && editDisplayMode !== void 0 ? editDisplayMode : '')));
355
- };
356
- const showRowSelectionColumn = (tableOptions) => !!tableOptions.enableRowSelection;
357
- const showRowNumbersColumn = (tableOptions) => !!tableOptions.enableRowNumbers;
358
- const showRowSpacerColumn = (tableOptions) => tableOptions.layoutMode === 'grid-no-grow';
359
- const getLeadingDisplayColumnIds = (tableOptions) => [
360
- showRowPinningColumn(tableOptions) && 'mrt-row-pin',
361
- showRowDragColumn(tableOptions) && 'mrt-row-drag',
362
- tableOptions.positionActionsColumn === 'first' &&
363
- showRowActionsColumn(tableOptions) &&
364
- 'mrt-row-actions',
365
- tableOptions.positionExpandColumn === 'first' &&
366
- showRowExpandColumn(tableOptions) &&
367
- 'mrt-row-expand',
368
- showRowSelectionColumn(tableOptions) && 'mrt-row-select',
369
- showRowNumbersColumn(tableOptions) && 'mrt-row-numbers',
370
- ].filter(Boolean);
371
- const getTrailingDisplayColumnIds = (tableOptions) => [
372
- tableOptions.positionActionsColumn === 'last' &&
373
- showRowActionsColumn(tableOptions) &&
374
- 'mrt-row-actions',
375
- tableOptions.positionExpandColumn === 'last' &&
376
- showRowExpandColumn(tableOptions) &&
377
- 'mrt-row-expand',
378
- showRowSpacerColumn(tableOptions) && 'mrt-row-spacer',
379
- ].filter(Boolean);
380
- const getDefaultColumnOrderIds = (tableOptions, reset = false) => {
381
- const { state: { columnOrder: currentColumnOrderIds = [] }, } = tableOptions;
382
- const leadingDisplayColIds = getLeadingDisplayColumnIds(tableOptions);
383
- const trailingDisplayColIds = getTrailingDisplayColumnIds(tableOptions);
384
- const defaultColumnDefIds = getAllLeafColumnDefs(tableOptions.columns).map((columnDef) => getColumnId(columnDef));
385
- let allLeafColumnDefIds = reset
386
- ? defaultColumnDefIds
387
- : Array.from(new Set([...currentColumnOrderIds, ...defaultColumnDefIds]));
388
- allLeafColumnDefIds = allLeafColumnDefIds.filter((colId) => !leadingDisplayColIds.includes(colId) &&
389
- !trailingDisplayColIds.includes(colId));
390
- return [
391
- ...leadingDisplayColIds,
392
- ...allLeafColumnDefIds,
393
- ...trailingDisplayColIds,
394
- ];
395
- };
396
-
397
- const fuzzy$1 = (rowA, rowB, columnId) => {
398
- let dir = 0;
399
- if (rowA.columnFiltersMeta[columnId]) {
400
- dir = compareItems(rowA.columnFiltersMeta[columnId], rowB.columnFiltersMeta[columnId]);
401
- }
402
- // Provide a fallback for when the item ranks are equal
403
- return dir === 0
404
- ? sortingFns.alphanumeric(rowA, rowB, columnId)
405
- : dir;
406
- };
407
- const MRT_SortingFns = Object.assign(Object.assign({}, sortingFns), { fuzzy: fuzzy$1 });
408
- const rankGlobalFuzzy = (rowA, rowB) => Math.max(...Object.values(rowB.columnFiltersMeta).map((v) => v.rank)) -
409
- Math.max(...Object.values(rowA.columnFiltersMeta).map((v) => v.rank));
410
-
411
270
  const getMRT_Rows = (table, all) => {
412
271
  const { getCenterRows, getPrePaginationRowModel, getRowModel, getState, getTopRows, options: { createDisplayMode, enablePagination, enableRowPinning, manualPagination, positionCreatingRow, rowPinningDisplayMode, }, } = table;
413
272
  const { creatingRow, pagination } = getState();
@@ -548,6 +407,230 @@ const getMRT_SelectAllHandler = ({ table }) => (event, value, forceAll) => {
548
407
  lastSelectedRowId.current = null;
549
408
  };
550
409
 
410
+ const isWinCtrlMacMeta = (event) => {
411
+ return ((event.ctrlKey && navigator.platform.toLowerCase().includes('win')) ||
412
+ (event.metaKey && navigator.platform.toLowerCase().includes('mac')));
413
+ };
414
+ const isCellEditable = ({ cell, table, }) => {
415
+ const { enableEditing } = table.options;
416
+ const { column: { columnDef }, row, } = cell;
417
+ return (!cell.getIsPlaceholder() &&
418
+ parseFromValuesOrFunc(enableEditing, row) &&
419
+ parseFromValuesOrFunc(columnDef.enableEditing, row) !== false);
420
+ };
421
+ const openEditingCell = ({ cell, table, }) => {
422
+ const { options: { editDisplayMode }, refs: { editInputRefs }, } = table;
423
+ const { column } = cell;
424
+ if (isCellEditable({ cell, table }) && editDisplayMode === 'cell') {
425
+ table.setEditingCell(cell);
426
+ queueMicrotask(() => {
427
+ var _a;
428
+ const textField = editInputRefs.current[column.id];
429
+ if (textField) {
430
+ textField.focus();
431
+ (_a = textField.select) === null || _a === void 0 ? void 0 : _a.call(textField);
432
+ }
433
+ });
434
+ }
435
+ };
436
+ const cellKeyboardShortcuts = ({ cell, cellElements, cellValue, containerElement, event, header, parentElement, table, }) => {
437
+ var _a, _b, _c, _d, _e, _f, _g, _h;
438
+ if (!table.options.enableKeyboardShortcuts)
439
+ return;
440
+ const currentCell = event.currentTarget;
441
+ if (cellValue && isWinCtrlMacMeta(event) && event.key === 'c') {
442
+ navigator.clipboard.writeText(cellValue);
443
+ }
444
+ else if (['Enter', ' '].includes(event.key)) {
445
+ if (((_a = cell === null || cell === void 0 ? void 0 : cell.column) === null || _a === void 0 ? void 0 : _a.id) === 'mrt-row-select') {
446
+ event.preventDefault();
447
+ getMRT_RowSelectionHandler({
448
+ row: cell.row,
449
+ table,
450
+ //@ts-ignore
451
+ staticRowIndex: +event.target.getAttribute('data-index'),
452
+ })(event);
453
+ }
454
+ else if (((_b = header === null || header === void 0 ? void 0 : header.column) === null || _b === void 0 ? void 0 : _b.id) === 'mrt-row-select' &&
455
+ table.options.enableSelectAll) {
456
+ event.preventDefault();
457
+ getMRT_SelectAllHandler({
458
+ table,
459
+ })(event);
460
+ }
461
+ else if (((_c = cell === null || cell === void 0 ? void 0 : cell.column) === null || _c === void 0 ? void 0 : _c.id) === 'mrt-row-expand' &&
462
+ (cell.row.getCanExpand() ||
463
+ ((_e = (_d = table.options).renderDetailPanel) === null || _e === void 0 ? void 0 : _e.call(_d, { row: cell.row, table })))) {
464
+ event.preventDefault();
465
+ cell.row.toggleExpanded();
466
+ }
467
+ else if (((_f = header === null || header === void 0 ? void 0 : header.column) === null || _f === void 0 ? void 0 : _f.id) === 'mrt-row-expand' &&
468
+ table.options.enableExpandAll) {
469
+ event.preventDefault();
470
+ table.toggleAllRowsExpanded();
471
+ }
472
+ else if ((cell === null || cell === void 0 ? void 0 : cell.column.id) === 'mrt-row-pin') {
473
+ event.preventDefault();
474
+ cell.row.getIsPinned()
475
+ ? cell.row.pin(false)
476
+ : cell.row.pin(((_g = table.options.rowPinningDisplayMode) === null || _g === void 0 ? void 0 : _g.includes('bottom'))
477
+ ? 'bottom'
478
+ : 'top');
479
+ }
480
+ else if (header && isWinCtrlMacMeta(event)) {
481
+ const actionsButton = currentCell.querySelector(`button[aria-label="${table.options.localization.columnActions}"]`);
482
+ if (actionsButton) {
483
+ actionsButton.click();
484
+ }
485
+ }
486
+ else if ((_h = header === null || header === void 0 ? void 0 : header.column) === null || _h === void 0 ? void 0 : _h.getCanSort()) {
487
+ event.preventDefault();
488
+ header.column.toggleSorting();
489
+ }
490
+ }
491
+ else if ([
492
+ 'ArrowRight',
493
+ 'ArrowLeft',
494
+ 'ArrowUp',
495
+ 'ArrowDown',
496
+ 'Home',
497
+ 'End',
498
+ 'PageUp',
499
+ 'PageDown',
500
+ ].includes(event.key)) {
501
+ event.preventDefault();
502
+ const currentRow = parentElement || currentCell.closest('tr');
503
+ const tableElement = containerElement || currentCell.closest('table');
504
+ const allCells = cellElements ||
505
+ Array.from((tableElement === null || tableElement === void 0 ? void 0 : tableElement.querySelectorAll('th, td')) || []);
506
+ const currentCellIndex = allCells.indexOf(currentCell);
507
+ const currentIndex = parseInt(currentCell.getAttribute('data-index') || '0');
508
+ let nextCell = undefined;
509
+ //home/end first or last cell in row
510
+ const findEdgeCell = (rowIndex, edge) => {
511
+ var _a;
512
+ const row = rowIndex === 'c'
513
+ ? currentRow
514
+ : rowIndex === 'f'
515
+ ? tableElement === null || tableElement === void 0 ? void 0 : tableElement.querySelector('tr')
516
+ : (_a = tableElement === null || tableElement === void 0 ? void 0 : tableElement.lastElementChild) === null || _a === void 0 ? void 0 : _a.lastElementChild;
517
+ const rowCells = Array.from((row === null || row === void 0 ? void 0 : row.children) || []);
518
+ const targetCell = edge === 'f' ? rowCells[0] : rowCells[rowCells.length - 1];
519
+ return targetCell;
520
+ };
521
+ //page up/down first or last cell in column
522
+ const findBottomTopCell = (columnIndex, edge) => {
523
+ var _a;
524
+ const row = edge === 't'
525
+ ? tableElement === null || tableElement === void 0 ? void 0 : tableElement.querySelector('tr')
526
+ : (_a = tableElement === null || tableElement === void 0 ? void 0 : tableElement.lastElementChild) === null || _a === void 0 ? void 0 : _a.lastElementChild;
527
+ const rowCells = Array.from((row === null || row === void 0 ? void 0 : row.children) || []);
528
+ const targetCell = rowCells[columnIndex];
529
+ return targetCell;
530
+ };
531
+ const findAdjacentCell = (columnIndex, searchDirection) => {
532
+ const searchArray = searchDirection === 'f'
533
+ ? allCells.slice(currentCellIndex + 1)
534
+ : allCells.slice(0, currentCellIndex).reverse();
535
+ return searchArray.find((cell) => cell.matches(`[data-index="${columnIndex}"]`));
536
+ };
537
+ switch (event.key) {
538
+ case 'ArrowRight':
539
+ nextCell = findAdjacentCell(currentIndex + 1, 'f');
540
+ break;
541
+ case 'ArrowLeft':
542
+ nextCell = findAdjacentCell(currentIndex - 1, 'b');
543
+ break;
544
+ case 'ArrowUp':
545
+ nextCell = findAdjacentCell(currentIndex, 'b');
546
+ break;
547
+ case 'ArrowDown':
548
+ nextCell = findAdjacentCell(currentIndex, 'f');
549
+ break;
550
+ case 'Home':
551
+ nextCell = findEdgeCell(isWinCtrlMacMeta(event) ? 'f' : 'c', 'f');
552
+ break;
553
+ case 'End':
554
+ nextCell = findEdgeCell(isWinCtrlMacMeta(event) ? 'l' : 'c', 'l');
555
+ break;
556
+ case 'PageUp':
557
+ nextCell = findBottomTopCell(currentIndex, 't');
558
+ break;
559
+ case 'PageDown':
560
+ nextCell = findBottomTopCell(currentIndex, 'b');
561
+ break;
562
+ }
563
+ if (nextCell) {
564
+ nextCell.focus();
565
+ }
566
+ }
567
+ };
568
+
569
+ function defaultDisplayColumnProps({ header, id, size, tableOptions, }) {
570
+ const { defaultDisplayColumn, displayColumnDefOptions, localization } = tableOptions;
571
+ return Object.assign(Object.assign(Object.assign(Object.assign({}, defaultDisplayColumn), { header: header ? localization[header] : '', size }), displayColumnDefOptions === null || displayColumnDefOptions === void 0 ? void 0 : displayColumnDefOptions[id]), { id });
572
+ }
573
+ const showRowPinningColumn = (tableOptions) => {
574
+ const { enableRowPinning, rowPinningDisplayMode } = tableOptions;
575
+ return !!(enableRowPinning && !(rowPinningDisplayMode === null || rowPinningDisplayMode === void 0 ? void 0 : rowPinningDisplayMode.startsWith('select')));
576
+ };
577
+ const showRowDragColumn = (tableOptions) => {
578
+ const { enableRowDragging, enableRowOrdering } = tableOptions;
579
+ return !!(enableRowDragging || enableRowOrdering);
580
+ };
581
+ const showRowExpandColumn = (tableOptions) => {
582
+ const { enableExpanding, enableGrouping, renderDetailPanel, state: { grouping }, } = tableOptions;
583
+ return !!(enableExpanding ||
584
+ (enableGrouping && (grouping === null || grouping === void 0 ? void 0 : grouping.length)) ||
585
+ renderDetailPanel);
586
+ };
587
+ const showRowActionsColumn = (tableOptions) => {
588
+ const { createDisplayMode, editDisplayMode, enableEditing, enableRowActions, state: { creatingRow }, } = tableOptions;
589
+ return !!(enableRowActions ||
590
+ (creatingRow && createDisplayMode === 'row') ||
591
+ (enableEditing && ['modal', 'row'].includes(editDisplayMode !== null && editDisplayMode !== void 0 ? editDisplayMode : '')));
592
+ };
593
+ const showRowSelectionColumn = (tableOptions) => !!tableOptions.enableRowSelection;
594
+ const showRowNumbersColumn = (tableOptions) => !!tableOptions.enableRowNumbers;
595
+ const showRowSpacerColumn = (tableOptions) => tableOptions.layoutMode === 'grid-no-grow';
596
+ const getLeadingDisplayColumnIds = (tableOptions) => [
597
+ showRowPinningColumn(tableOptions) && 'mrt-row-pin',
598
+ showRowDragColumn(tableOptions) && 'mrt-row-drag',
599
+ tableOptions.positionActionsColumn === 'first' &&
600
+ showRowActionsColumn(tableOptions) &&
601
+ 'mrt-row-actions',
602
+ tableOptions.positionExpandColumn === 'first' &&
603
+ showRowExpandColumn(tableOptions) &&
604
+ 'mrt-row-expand',
605
+ showRowSelectionColumn(tableOptions) && 'mrt-row-select',
606
+ showRowNumbersColumn(tableOptions) && 'mrt-row-numbers',
607
+ ].filter(Boolean);
608
+ const getTrailingDisplayColumnIds = (tableOptions) => [
609
+ tableOptions.positionActionsColumn === 'last' &&
610
+ showRowActionsColumn(tableOptions) &&
611
+ 'mrt-row-actions',
612
+ tableOptions.positionExpandColumn === 'last' &&
613
+ showRowExpandColumn(tableOptions) &&
614
+ 'mrt-row-expand',
615
+ showRowSpacerColumn(tableOptions) && 'mrt-row-spacer',
616
+ ].filter(Boolean);
617
+ const getDefaultColumnOrderIds = (tableOptions, reset = false) => {
618
+ const { state: { columnOrder: currentColumnOrderIds = [] }, } = tableOptions;
619
+ const leadingDisplayColIds = getLeadingDisplayColumnIds(tableOptions);
620
+ const trailingDisplayColIds = getTrailingDisplayColumnIds(tableOptions);
621
+ const defaultColumnDefIds = getAllLeafColumnDefs(tableOptions.columns).map((columnDef) => getColumnId(columnDef));
622
+ let allLeafColumnDefIds = reset
623
+ ? defaultColumnDefIds
624
+ : Array.from(new Set([...currentColumnOrderIds, ...defaultColumnDefIds]));
625
+ allLeafColumnDefIds = allLeafColumnDefIds.filter((colId) => !leadingDisplayColIds.includes(colId) &&
626
+ !trailingDisplayColIds.includes(colId));
627
+ return [
628
+ ...leadingDisplayColIds,
629
+ ...allLeafColumnDefIds,
630
+ ...trailingDisplayColIds,
631
+ ];
632
+ };
633
+
551
634
  const MRT_AggregationFns = Object.assign({}, aggregationFns);
552
635
 
553
636
  const fuzzy = (row, columnId, filterValue, addMeta) => {
@@ -829,7 +912,7 @@ const MRT_ActionMenuItem = (_a) => {
829
912
  minWidth: '120px',
830
913
  my: 0,
831
914
  py: '6px',
832
- } }, rest, { children: [jsxs(Box, { sx: {
915
+ }, tabIndex: 0 }, rest, { children: [jsxs(Box, { sx: {
833
916
  alignItems: 'center',
834
917
  display: 'flex',
835
918
  }, children: [jsx(ListItemIcon, { children: icon }), label] }), onOpenSubMenu && (jsx(IconButton, { onClick: onOpenSubMenu, onMouseEnter: onOpenSubMenu, size: "small", sx: { p: 0 }, children: jsx(ArrowRightIcon, {}) }))] })));
@@ -1329,7 +1412,7 @@ const MRT_DefaultDisplayColumn = {
1329
1412
  };
1330
1413
  const useMRT_TableOptions = (_a) => {
1331
1414
  var _b;
1332
- var { aggregationFns, autoResetExpanded = false, columnFilterDisplayMode = 'subheader', columnResizeDirection, columnResizeMode = 'onChange', createDisplayMode = 'modal', defaultColumn, defaultDisplayColumn, editDisplayMode = 'modal', enableBatchRowSelection = true, enableBottomToolbar = true, enableColumnActions = true, enableColumnFilters = true, enableColumnOrdering = false, enableColumnPinning = false, enableColumnResizing = false, enableColumnVirtualization, enableDensityToggle = true, enableExpandAll = true, enableExpanding, enableFacetedValues = false, enableFilterMatchHighlighting = true, enableFilters = true, enableFullScreenToggle = true, enableGlobalFilter = true, enableGlobalFilterRankedResults = true, enableGrouping = false, enableHiding = true, enableCellNavigation = true, enableMultiRowSelection = true, enableMultiSort = true, enablePagination = true, enableRowPinning = false, enableRowSelection = false, enableRowVirtualization, enableSelectAll = true, enableSorting = true, enableStickyHeader = false, enableTableFooter = true, enableTableHead = true, enableToolbarInternalActions = true, enableTopToolbar = true, filterFns, icons, layoutMode, localization, manualFiltering, manualGrouping, manualPagination, manualSorting, mrtTheme, paginationDisplayMode = 'default', positionActionsColumn = 'first', positionCreatingRow = 'top', positionExpandColumn = 'first', positionGlobalFilter = 'right', positionPagination = 'bottom', positionToolbarAlertBanner = 'top', positionToolbarDropZone = 'top', rowNumberDisplayMode = 'static', rowPinningDisplayMode = 'sticky', selectAllMode = 'page', sortingFns } = _a, rest = __rest(_a, ["aggregationFns", "autoResetExpanded", "columnFilterDisplayMode", "columnResizeDirection", "columnResizeMode", "createDisplayMode", "defaultColumn", "defaultDisplayColumn", "editDisplayMode", "enableBatchRowSelection", "enableBottomToolbar", "enableColumnActions", "enableColumnFilters", "enableColumnOrdering", "enableColumnPinning", "enableColumnResizing", "enableColumnVirtualization", "enableDensityToggle", "enableExpandAll", "enableExpanding", "enableFacetedValues", "enableFilterMatchHighlighting", "enableFilters", "enableFullScreenToggle", "enableGlobalFilter", "enableGlobalFilterRankedResults", "enableGrouping", "enableHiding", "enableCellNavigation", "enableMultiRowSelection", "enableMultiSort", "enablePagination", "enableRowPinning", "enableRowSelection", "enableRowVirtualization", "enableSelectAll", "enableSorting", "enableStickyHeader", "enableTableFooter", "enableTableHead", "enableToolbarInternalActions", "enableTopToolbar", "filterFns", "icons", "layoutMode", "localization", "manualFiltering", "manualGrouping", "manualPagination", "manualSorting", "mrtTheme", "paginationDisplayMode", "positionActionsColumn", "positionCreatingRow", "positionExpandColumn", "positionGlobalFilter", "positionPagination", "positionToolbarAlertBanner", "positionToolbarDropZone", "rowNumberDisplayMode", "rowPinningDisplayMode", "selectAllMode", "sortingFns"]);
1415
+ var { aggregationFns, autoResetExpanded = false, columnFilterDisplayMode = 'subheader', columnResizeDirection, columnResizeMode = 'onChange', createDisplayMode = 'modal', defaultColumn, defaultDisplayColumn, editDisplayMode = 'modal', enableBatchRowSelection = true, enableBottomToolbar = true, enableColumnActions = true, enableColumnFilters = true, enableColumnOrdering = false, enableColumnPinning = false, enableColumnResizing = false, enableColumnVirtualization, enableDensityToggle = true, enableExpandAll = true, enableExpanding, enableFacetedValues = false, enableFilterMatchHighlighting = true, enableFilters = true, enableFullScreenToggle = true, enableGlobalFilter = true, enableGlobalFilterRankedResults = true, enableGrouping = false, enableHiding = true, enableKeyboardShortcuts = true, enableMultiRowSelection = true, enableMultiSort = true, enablePagination = true, enableRowPinning = false, enableRowSelection = false, enableRowVirtualization, enableSelectAll = true, enableSorting = true, enableStickyHeader = false, enableTableFooter = true, enableTableHead = true, enableToolbarInternalActions = true, enableTopToolbar = true, filterFns, icons, layoutMode, localization, manualFiltering, manualGrouping, manualPagination, manualSorting, mrtTheme, paginationDisplayMode = 'default', positionActionsColumn = 'first', positionCreatingRow = 'top', positionExpandColumn = 'first', positionGlobalFilter = 'right', positionPagination = 'bottom', positionToolbarAlertBanner = 'top', positionToolbarDropZone = 'top', rowNumberDisplayMode = 'static', rowPinningDisplayMode = 'sticky', selectAllMode = 'page', sortingFns } = _a, rest = __rest(_a, ["aggregationFns", "autoResetExpanded", "columnFilterDisplayMode", "columnResizeDirection", "columnResizeMode", "createDisplayMode", "defaultColumn", "defaultDisplayColumn", "editDisplayMode", "enableBatchRowSelection", "enableBottomToolbar", "enableColumnActions", "enableColumnFilters", "enableColumnOrdering", "enableColumnPinning", "enableColumnResizing", "enableColumnVirtualization", "enableDensityToggle", "enableExpandAll", "enableExpanding", "enableFacetedValues", "enableFilterMatchHighlighting", "enableFilters", "enableFullScreenToggle", "enableGlobalFilter", "enableGlobalFilterRankedResults", "enableGrouping", "enableHiding", "enableKeyboardShortcuts", "enableMultiRowSelection", "enableMultiSort", "enablePagination", "enableRowPinning", "enableRowSelection", "enableRowVirtualization", "enableSelectAll", "enableSorting", "enableStickyHeader", "enableTableFooter", "enableTableHead", "enableToolbarInternalActions", "enableTopToolbar", "filterFns", "icons", "layoutMode", "localization", "manualFiltering", "manualGrouping", "manualPagination", "manualSorting", "mrtTheme", "paginationDisplayMode", "positionActionsColumn", "positionCreatingRow", "positionExpandColumn", "positionGlobalFilter", "positionPagination", "positionToolbarAlertBanner", "positionToolbarDropZone", "rowNumberDisplayMode", "rowPinningDisplayMode", "selectAllMode", "sortingFns"]);
1333
1416
  const theme = useTheme();
1334
1417
  icons = useMemo(() => (Object.assign(Object.assign({}, MRT_Default_Icons), icons)), [icons]);
1335
1418
  localization = useMemo(() => (Object.assign(Object.assign({}, MRT_Localization_EN), localization)), [localization]);
@@ -1390,7 +1473,7 @@ const useMRT_TableOptions = (_a) => {
1390
1473
  enableGlobalFilterRankedResults,
1391
1474
  enableGrouping,
1392
1475
  enableHiding,
1393
- enableCellNavigation,
1476
+ enableKeyboardShortcuts,
1394
1477
  enableMultiRowSelection,
1395
1478
  enableMultiSort,
1396
1479
  enablePagination,
@@ -2037,7 +2120,7 @@ const MRT_TableBodyCell = (_a) => {
2037
2120
  var _b, _c, _d, _e, _f;
2038
2121
  var { cell, numRows, rowRef, staticColumnIndex, staticRowIndex, table } = _a, rest = __rest(_a, ["cell", "numRows", "rowRef", "staticColumnIndex", "staticRowIndex", "table"]);
2039
2122
  const theme = useTheme();
2040
- const { getState, options: { columnResizeDirection, columnResizeMode, createDisplayMode, editDisplayMode, enableCellActions, enableClickToCopy, enableColumnOrdering, enableColumnPinning, enableGrouping, enableCellNavigation, layoutMode, mrtTheme: { draggingBorderColor }, muiSkeletonProps, muiTableBodyCellProps, }, setHoveredColumn, } = table;
2123
+ const { getState, options: { columnResizeDirection, columnResizeMode, createDisplayMode, editDisplayMode, enableCellActions, enableClickToCopy, enableColumnOrdering, enableColumnPinning, enableGrouping, enableKeyboardShortcuts, layoutMode, mrtTheme: { draggingBorderColor }, muiSkeletonProps, muiTableBodyCellProps, }, setHoveredColumn, } = table;
2041
2124
  const { actionCell, columnSizingInfo, creatingRow, density, draggingColumn, draggingRow, editingCell, editingRow, hoveredColumn, hoveredRow, isLoading, showSkeletons, } = getState();
2042
2125
  const { column, row } = cell;
2043
2126
  const { columnDef } = column;
@@ -2159,14 +2242,17 @@ const MRT_TableBodyCell = (_a) => {
2159
2242
  table.refs.actionCellRef.current = e.currentTarget;
2160
2243
  }
2161
2244
  };
2162
- const handleKeyDown = (e) => {
2245
+ const handleKeyDown = (event) => {
2163
2246
  var _a;
2164
- if (enableCellNavigation) {
2165
- cellNavigation(e);
2166
- }
2167
- (_a = tableCellProps === null || tableCellProps === void 0 ? void 0 : tableCellProps.onKeyDown) === null || _a === void 0 ? void 0 : _a.call(tableCellProps, e);
2247
+ cellKeyboardShortcuts({
2248
+ cell,
2249
+ cellValue: cell.getValue(),
2250
+ event,
2251
+ table,
2252
+ });
2253
+ (_a = tableCellProps === null || tableCellProps === void 0 ? void 0 : tableCellProps.onKeyDown) === null || _a === void 0 ? void 0 : _a.call(tableCellProps, event);
2168
2254
  };
2169
- return (jsx(TableCell, Object.assign({ align: theme.direction === 'rtl' ? 'right' : 'left', "data-index": staticColumnIndex, "data-pinned": !!isColumnPinned || undefined, tabIndex: enableCellNavigation ? 0 : undefined }, tableCellProps, { onKeyDown: handleKeyDown, onContextMenu: handleContextMenu, onDoubleClick: handleDoubleClick, onDragEnter: handleDragEnter, onDragOver: handleDragOver, sx: (theme) => (Object.assign(Object.assign({ '&:hover': {
2255
+ return (jsx(TableCell, Object.assign({ align: theme.direction === 'rtl' ? 'right' : 'left', "data-index": staticColumnIndex, "data-pinned": !!isColumnPinned || undefined, tabIndex: enableKeyboardShortcuts ? 0 : undefined }, tableCellProps, { onKeyDown: handleKeyDown, onContextMenu: handleContextMenu, onDoubleClick: handleDoubleClick, onDragEnter: handleDragEnter, onDragOver: handleDragOver, sx: (theme) => (Object.assign(Object.assign({ '&:hover': {
2170
2256
  outline: (actionCell === null || actionCell === void 0 ? void 0 : actionCell.id) === cell.id ||
2171
2257
  (editDisplayMode === 'cell' && isEditable) ||
2172
2258
  (editDisplayMode === 'table' && (isCreating || isEditing))
@@ -2427,7 +2513,7 @@ const MRT_TableFooterCell = (_a) => {
2427
2513
  var _b, _c, _d;
2428
2514
  var { footer, staticColumnIndex, table } = _a, rest = __rest(_a, ["footer", "staticColumnIndex", "table"]);
2429
2515
  const theme = useTheme();
2430
- const { getState, options: { enableColumnPinning, muiTableFooterCellProps, enableCellNavigation, }, } = table;
2516
+ const { getState, options: { enableColumnPinning, muiTableFooterCellProps, enableKeyboardShortcuts, }, } = table;
2431
2517
  const { density } = getState();
2432
2518
  const { column } = footer;
2433
2519
  const { columnDef } = column;
@@ -2437,18 +2523,20 @@ const MRT_TableFooterCell = (_a) => {
2437
2523
  column.getIsPinned();
2438
2524
  const args = { column, table };
2439
2525
  const tableCellProps = Object.assign(Object.assign(Object.assign({}, parseFromValuesOrFunc(muiTableFooterCellProps, args)), parseFromValuesOrFunc(columnDef.muiTableFooterCellProps, args)), rest);
2440
- const handleKeyDown = (e) => {
2526
+ const handleKeyDown = (event) => {
2441
2527
  var _a;
2442
- if (enableCellNavigation) {
2443
- cellNavigation(e);
2444
- }
2445
- (_a = tableCellProps === null || tableCellProps === void 0 ? void 0 : tableCellProps.onKeyDown) === null || _a === void 0 ? void 0 : _a.call(tableCellProps, e);
2528
+ cellKeyboardShortcuts({
2529
+ event,
2530
+ cellValue: footer.column.columnDef.footer,
2531
+ table,
2532
+ });
2533
+ (_a = tableCellProps === null || tableCellProps === void 0 ? void 0 : tableCellProps.onKeyDown) === null || _a === void 0 ? void 0 : _a.call(tableCellProps, event);
2446
2534
  };
2447
2535
  return (jsx(TableCell, Object.assign({ align: columnDefType === 'group'
2448
2536
  ? 'center'
2449
2537
  : theme.direction === 'rtl'
2450
2538
  ? 'right'
2451
- : 'left', colSpan: footer.colSpan, "data-index": staticColumnIndex, "data-pinned": !!isColumnPinned || undefined, variant: "footer" }, tableCellProps, { onKeyDown: handleKeyDown, sx: (theme) => (Object.assign(Object.assign({ fontWeight: 'bold', p: density === 'compact'
2539
+ : 'left', colSpan: footer.colSpan, "data-index": staticColumnIndex, "data-pinned": !!isColumnPinned || undefined, tabIndex: enableKeyboardShortcuts ? 0 : undefined, variant: "footer" }, tableCellProps, { onKeyDown: handleKeyDown, sx: (theme) => (Object.assign(Object.assign({ fontWeight: 'bold', p: density === 'compact'
2452
2540
  ? '0.5rem'
2453
2541
  : density === 'comfortable'
2454
2542
  ? '1rem'
@@ -3064,7 +3152,11 @@ const MRT_FilterTextField = (_a) => {
3064
3152
  }
3065
3153
  }, margin: 'none', placeholder: filterChipLabel || isSelectFilter || isMultiSelectFilter
3066
3154
  ? undefined
3067
- : filterPlaceholder, variant: 'standard' }, textFieldProps), { sx: (theme) => (Object.assign({ minWidth: isDateFilter
3155
+ : filterPlaceholder, variant: 'standard' }, textFieldProps), { onKeyDown: (e) => {
3156
+ var _a;
3157
+ e.stopPropagation();
3158
+ (_a = textFieldProps.onKeyDown) === null || _a === void 0 ? void 0 : _a.call(textFieldProps, e);
3159
+ }, sx: (theme) => (Object.assign({ minWidth: isDateFilter
3068
3160
  ? '160px'
3069
3161
  : enableColumnFilterModes && rangeFilterIndex === 0
3070
3162
  ? '110px'
@@ -3374,7 +3466,7 @@ const MRT_TableHeadCell = (_a) => {
3374
3466
  var _b, _c, _d, _f, _g, _h;
3375
3467
  var { columnVirtualizer, header, staticColumnIndex, table } = _a, rest = __rest(_a, ["columnVirtualizer", "header", "staticColumnIndex", "table"]);
3376
3468
  const theme = useTheme();
3377
- const { getState, options: { columnFilterDisplayMode, columnResizeDirection, columnResizeMode, enableColumnActions, enableColumnDragging, enableColumnOrdering, enableColumnPinning, enableGrouping, enableCellNavigation, enableMultiSort, layoutMode, mrtTheme: { draggingBorderColor }, muiTableHeadCellProps, }, refs: { tableHeadCellRefs }, setHoveredColumn, } = table;
3469
+ const { getState, options: { columnFilterDisplayMode, columnResizeDirection, columnResizeMode, enableKeyboardShortcuts, enableColumnActions, enableColumnDragging, enableColumnOrdering, enableColumnPinning, enableGrouping, enableMultiSort, layoutMode, mrtTheme: { draggingBorderColor }, muiTableHeadCellProps, }, refs: { tableHeadCellRefs }, setHoveredColumn, } = table;
3378
3470
  const { columnSizingInfo, density, draggingColumn, grouping, hoveredColumn, showColumnFilters, } = getState();
3379
3471
  const { column } = header;
3380
3472
  const { columnDef } = column;
@@ -3443,12 +3535,15 @@ const MRT_TableHeadCell = (_a) => {
3443
3535
  e.preventDefault();
3444
3536
  }
3445
3537
  };
3446
- const handleKeyDown = (e) => {
3538
+ const handleKeyDown = (event) => {
3447
3539
  var _a;
3448
- if (enableCellNavigation) {
3449
- cellNavigation(e);
3450
- }
3451
- (_a = tableCellProps === null || tableCellProps === void 0 ? void 0 : tableCellProps.onKeyDown) === null || _a === void 0 ? void 0 : _a.call(tableCellProps, e);
3540
+ cellKeyboardShortcuts({
3541
+ event,
3542
+ cellValue: header.column.columnDef.header,
3543
+ table,
3544
+ header,
3545
+ });
3546
+ (_a = tableCellProps === null || tableCellProps === void 0 ? void 0 : tableCellProps.onKeyDown) === null || _a === void 0 ? void 0 : _a.call(tableCellProps, event);
3452
3547
  };
3453
3548
  const HeaderElement = (_b = parseFromValuesOrFunc(columnDef.Header, {
3454
3549
  column,
@@ -3471,7 +3566,7 @@ const MRT_TableHeadCell = (_a) => {
3471
3566
  (_a = columnVirtualizer === null || columnVirtualizer === void 0 ? void 0 : columnVirtualizer.measureElement) === null || _a === void 0 ? void 0 : _a.call(columnVirtualizer, node);
3472
3567
  }
3473
3568
  }
3474
- }, tabIndex: enableCellNavigation ? 0 : undefined }, tableCellProps, { onKeyDown: handleKeyDown, sx: (theme) => (Object.assign(Object.assign({ '& :hover': {
3569
+ }, tabIndex: enableKeyboardShortcuts ? 0 : undefined }, tableCellProps, { onKeyDown: handleKeyDown, sx: (theme) => (Object.assign(Object.assign({ '& :hover': {
3475
3570
  '.MuiButtonBase-root': {
3476
3571
  opacity: 1,
3477
3572
  },
@@ -4258,5 +4353,5 @@ const MaterialReactTable = (props) => {
4258
4353
  return jsx(MRT_TablePaper, { table: table });
4259
4354
  };
4260
4355
 
4261
- export { MRT_ActionMenuItem, MRT_AggregationFns, MRT_BottomToolbar, MRT_ColumnActionMenu, MRT_ColumnPinningButtons, MRT_CopyButton, MRT_DefaultColumn, MRT_DefaultDisplayColumn, MRT_EditActionButtons, MRT_EditCellTextField, MRT_EditRowModal, MRT_ExpandAllButton, MRT_ExpandButton, MRT_FilterCheckbox, MRT_FilterFns, MRT_FilterOptionMenu, MRT_FilterRangeFields, MRT_FilterRangeSlider, MRT_FilterTextField, MRT_GlobalFilterTextField, MRT_GrabHandleButton, MRT_LinearProgressBar, MRT_RowActionMenu, MRT_RowPinButton, MRT_SelectCheckbox, MRT_ShowHideColumnsButton, MRT_ShowHideColumnsMenu, MRT_ShowHideColumnsMenuItems, MRT_SortingFns, MRT_Table, MRT_TableBody, MRT_TableBodyCell, MRT_TableBodyCellValue, MRT_TableBodyRow, MRT_TableBodyRowGrabHandle, MRT_TableBodyRowPinButton, MRT_TableContainer, MRT_TableDetailPanel, MRT_TableFooter, MRT_TableFooterCell, MRT_TableFooterRow, MRT_TableHead, MRT_TableHeadCell, MRT_TableHeadCellColumnActionsButton, MRT_TableHeadCellFilterContainer, MRT_TableHeadCellFilterLabel, MRT_TableHeadCellGrabHandle, MRT_TableHeadCellResizeHandle, MRT_TableHeadCellSortLabel, MRT_TableHeadRow, MRT_TableLoadingOverlay, MRT_TablePagination, MRT_TablePaper, MRT_ToggleDensePaddingButton, MRT_ToggleFiltersButton, MRT_ToggleFullScreenButton, MRT_ToggleGlobalFilterButton, MRT_ToggleRowActionMenuButton, MRT_ToolbarAlertBanner, MRT_ToolbarDropZone, MRT_ToolbarInternalButtons, MRT_TopToolbar, MaterialReactTable, Memo_MRT_TableBody, Memo_MRT_TableBodyCell, Memo_MRT_TableBodyRow, cellNavigation, createMRTColumnHelper, createRow, defaultDisplayColumnProps, flexRender, getAllLeafColumnDefs, getCanRankRows, getColumnFilterInfo, getColumnId, getDefaultColumnFilterFn, getDefaultColumnOrderIds, getIsRankingRows, getIsRowSelected, getLeadingDisplayColumnIds, getMRT_RowSelectionHandler, getMRT_Rows, getMRT_SelectAllHandler, getTrailingDisplayColumnIds, isCellEditable, mrtFilterOptions, openEditingCell, prepareColumns, rankGlobalFuzzy, reorderColumn, showRowActionsColumn, showRowDragColumn, showRowExpandColumn, showRowNumbersColumn, showRowPinningColumn, showRowSelectionColumn, showRowSpacerColumn, useDropdownOptions, useMRT_ColumnVirtualizer, useMRT_Effects, useMRT_RowVirtualizer, useMRT_Rows, useMRT_TableInstance, useMRT_TableOptions, useMaterialReactTable };
4356
+ export { MRT_ActionMenuItem, MRT_AggregationFns, MRT_BottomToolbar, MRT_ColumnActionMenu, MRT_ColumnPinningButtons, MRT_CopyButton, MRT_DefaultColumn, MRT_DefaultDisplayColumn, MRT_EditActionButtons, MRT_EditCellTextField, MRT_EditRowModal, MRT_ExpandAllButton, MRT_ExpandButton, MRT_FilterCheckbox, MRT_FilterFns, MRT_FilterOptionMenu, MRT_FilterRangeFields, MRT_FilterRangeSlider, MRT_FilterTextField, MRT_GlobalFilterTextField, MRT_GrabHandleButton, MRT_LinearProgressBar, MRT_RowActionMenu, MRT_RowPinButton, MRT_SelectCheckbox, MRT_ShowHideColumnsButton, MRT_ShowHideColumnsMenu, MRT_ShowHideColumnsMenuItems, MRT_SortingFns, MRT_Table, MRT_TableBody, MRT_TableBodyCell, MRT_TableBodyCellValue, MRT_TableBodyRow, MRT_TableBodyRowGrabHandle, MRT_TableBodyRowPinButton, MRT_TableContainer, MRT_TableDetailPanel, MRT_TableFooter, MRT_TableFooterCell, MRT_TableFooterRow, MRT_TableHead, MRT_TableHeadCell, MRT_TableHeadCellColumnActionsButton, MRT_TableHeadCellFilterContainer, MRT_TableHeadCellFilterLabel, MRT_TableHeadCellGrabHandle, MRT_TableHeadCellResizeHandle, MRT_TableHeadCellSortLabel, MRT_TableHeadRow, MRT_TableLoadingOverlay, MRT_TablePagination, MRT_TablePaper, MRT_ToggleDensePaddingButton, MRT_ToggleFiltersButton, MRT_ToggleFullScreenButton, MRT_ToggleGlobalFilterButton, MRT_ToggleRowActionMenuButton, MRT_ToolbarAlertBanner, MRT_ToolbarDropZone, MRT_ToolbarInternalButtons, MRT_TopToolbar, MaterialReactTable, Memo_MRT_TableBody, Memo_MRT_TableBodyCell, Memo_MRT_TableBodyRow, cellKeyboardShortcuts, createMRTColumnHelper, createRow, defaultDisplayColumnProps, flexRender, getAllLeafColumnDefs, getCanRankRows, getColumnFilterInfo, getColumnId, getDefaultColumnFilterFn, getDefaultColumnOrderIds, getIsRankingRows, getIsRowSelected, getLeadingDisplayColumnIds, getMRT_RowSelectionHandler, getMRT_Rows, getMRT_SelectAllHandler, getTrailingDisplayColumnIds, isCellEditable, mrtFilterOptions, openEditingCell, prepareColumns, rankGlobalFuzzy, reorderColumn, showRowActionsColumn, showRowDragColumn, showRowExpandColumn, showRowNumbersColumn, showRowPinningColumn, showRowSelectionColumn, showRowSpacerColumn, useDropdownOptions, useMRT_ColumnVirtualizer, useMRT_Effects, useMRT_RowVirtualizer, useMRT_Rows, useMRT_TableInstance, useMRT_TableOptions, useMaterialReactTable };
4262
4357
  //# sourceMappingURL=index.esm.js.map