@economic/taco 1.28.0 → 1.29.0

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.
Files changed (88) hide show
  1. package/dist/components/Header/Header.d.ts +2 -1
  2. package/dist/components/Header/components/Button.d.ts +1 -1
  3. package/dist/components/Header/components/Logo.d.ts +1 -0
  4. package/dist/components/Icon/components/ColumnFreeze.d.ts +3 -0
  5. package/dist/components/Icon/components/ColumnUnfreeze.d.ts +3 -0
  6. package/dist/components/Icon/components/index.d.ts +1 -1
  7. package/dist/components/Input/Input.d.ts +1 -1
  8. package/dist/components/Menu/components/Item.d.ts +1 -1
  9. package/dist/components/Menu/components/Link.d.ts +1 -1
  10. package/dist/components/Navigation2/components/Link.d.ts +1 -1
  11. package/dist/components/Provider/Localization.d.ts +12 -4
  12. package/dist/components/Select2/components/Option.d.ts +1 -1
  13. package/dist/components/Select2/components/Search.d.ts +1 -1
  14. package/dist/components/Table2/Table2.d.ts +11 -4
  15. package/dist/components/Table2/components/row/ExpandedRow.d.ts +1 -1
  16. package/dist/components/Table2/hooks/useColumnDefinitions.d.ts +2 -2
  17. package/dist/components/Table2/hooks/useTable.d.ts +4 -0
  18. package/dist/components/Table2/types.d.ts +3 -4
  19. package/dist/components/Table2/utilities/cell.d.ts +1 -1
  20. package/dist/components/Table2/utilities/columns.d.ts +1 -0
  21. package/dist/components/Tag/Tag.d.ts +1 -1
  22. package/dist/components/Truncate/Truncate.d.ts +6 -0
  23. package/dist/esm/packages/taco/src/components/Header/Header.js +3 -2
  24. package/dist/esm/packages/taco/src/components/Header/Header.js.map +1 -1
  25. package/dist/esm/packages/taco/src/components/Header/components/Button.js +3 -1
  26. package/dist/esm/packages/taco/src/components/Header/components/Button.js.map +1 -1
  27. package/dist/esm/packages/taco/src/components/Header/components/Logo.js +19 -2
  28. package/dist/esm/packages/taco/src/components/Header/components/Logo.js.map +1 -1
  29. package/dist/esm/packages/taco/src/components/Header/components/MenuButton.js +1 -1
  30. package/dist/esm/packages/taco/src/components/Header/components/MenuButton.js.map +1 -1
  31. package/dist/esm/packages/taco/src/components/Header/components/SecondaryNavigation.js +1 -1
  32. package/dist/esm/packages/taco/src/components/Header/components/SecondaryNavigation.js.map +1 -1
  33. package/dist/esm/packages/taco/src/components/Icon/components/ColumnFreeze.js +19 -0
  34. package/dist/esm/packages/taco/src/components/Icon/components/ColumnFreeze.js.map +1 -0
  35. package/dist/esm/packages/taco/src/components/Icon/components/ColumnUnfreeze.js +19 -0
  36. package/dist/esm/packages/taco/src/components/Icon/components/ColumnUnfreeze.js.map +1 -0
  37. package/dist/esm/packages/taco/src/components/Icon/components/index.js +4 -0
  38. package/dist/esm/packages/taco/src/components/Icon/components/index.js.map +1 -1
  39. package/dist/esm/packages/taco/src/components/Input/Input.js +14 -14
  40. package/dist/esm/packages/taco/src/components/Input/Input.js.map +1 -1
  41. package/dist/esm/packages/taco/src/components/Provider/Localization.js +13 -6
  42. package/dist/esm/packages/taco/src/components/Provider/Localization.js.map +1 -1
  43. package/dist/esm/packages/taco/src/components/SearchInput/SearchInput.js +1 -0
  44. package/dist/esm/packages/taco/src/components/SearchInput/SearchInput.js.map +1 -1
  45. package/dist/esm/packages/taco/src/components/Select2/components/Collection.js +2 -1
  46. package/dist/esm/packages/taco/src/components/Select2/components/Collection.js.map +1 -1
  47. package/dist/esm/packages/taco/src/components/Table2/Table2.js +21 -9
  48. package/dist/esm/packages/taco/src/components/Table2/Table2.js.map +1 -1
  49. package/dist/esm/packages/taco/src/components/Table2/components/ColumnSettingsButton.js +243 -111
  50. package/dist/esm/packages/taco/src/components/Table2/components/ColumnSettingsButton.js.map +1 -1
  51. package/dist/esm/packages/taco/src/components/Table2/components/column/Base.js +5 -5
  52. package/dist/esm/packages/taco/src/components/Table2/components/column/Base.js.map +1 -1
  53. package/dist/esm/packages/taco/src/components/Table2/components/column/Cell.js +76 -31
  54. package/dist/esm/packages/taco/src/components/Table2/components/column/Cell.js.map +1 -1
  55. package/dist/esm/packages/taco/src/components/Table2/components/column/Footer.js +2 -2
  56. package/dist/esm/packages/taco/src/components/Table2/components/column/Footer.js.map +1 -1
  57. package/dist/esm/packages/taco/src/components/Table2/components/column/Header.js +85 -19
  58. package/dist/esm/packages/taco/src/components/Table2/components/column/Header.js.map +1 -1
  59. package/dist/esm/packages/taco/src/components/Table2/components/row/ExpandedRow.js +3 -0
  60. package/dist/esm/packages/taco/src/components/Table2/components/row/ExpandedRow.js.map +1 -1
  61. package/dist/esm/packages/taco/src/components/Table2/hooks/listeners/useColumnOffsetStateListener.js +6 -3
  62. package/dist/esm/packages/taco/src/components/Table2/hooks/listeners/useColumnOffsetStateListener.js.map +1 -1
  63. package/dist/esm/packages/taco/src/components/Table2/hooks/listeners/useSettingsStateListener.js +2 -2
  64. package/dist/esm/packages/taco/src/components/Table2/hooks/listeners/useSettingsStateListener.js.map +1 -1
  65. package/dist/esm/packages/taco/src/components/Table2/hooks/useColumnDefinitions.js +6 -9
  66. package/dist/esm/packages/taco/src/components/Table2/hooks/useColumnDefinitions.js.map +1 -1
  67. package/dist/esm/packages/taco/src/components/Table2/hooks/useTable.js +14 -6
  68. package/dist/esm/packages/taco/src/components/Table2/hooks/useTable.js.map +1 -1
  69. package/dist/esm/packages/taco/src/components/Table2/types.js.map +1 -1
  70. package/dist/esm/packages/taco/src/components/Table2/utilities/cell.js +8 -8
  71. package/dist/esm/packages/taco/src/components/Table2/utilities/cell.js.map +1 -1
  72. package/dist/esm/packages/taco/src/components/Table2/utilities/columns.js +17 -8
  73. package/dist/esm/packages/taco/src/components/Table2/utilities/columns.js.map +1 -1
  74. package/dist/esm/packages/taco/src/components/Truncate/Truncate.js +32 -0
  75. package/dist/esm/packages/taco/src/components/Truncate/Truncate.js.map +1 -0
  76. package/dist/esm/packages/taco/src/index.js +1 -1
  77. package/dist/esm/packages/taco/src/primitives/Listbox2/components/Option.js +3 -1
  78. package/dist/esm/packages/taco/src/primitives/Listbox2/components/Option.js.map +1 -1
  79. package/dist/esm/packages/taco/src/primitives/Listbox2/components/Root.js +3 -1
  80. package/dist/esm/packages/taco/src/primitives/Listbox2/components/Root.js.map +1 -1
  81. package/dist/esm/packages/taco/src/primitives/Sortable/components/Item.js +5 -1
  82. package/dist/esm/packages/taco/src/primitives/Sortable/components/Item.js.map +1 -1
  83. package/dist/taco.cjs.development.js +601 -234
  84. package/dist/taco.cjs.development.js.map +1 -1
  85. package/dist/taco.cjs.production.min.js +1 -1
  86. package/dist/taco.cjs.production.min.js.map +1 -1
  87. package/package.json +2 -2
  88. package/types.json +74 -19
@@ -1,6 +1,6 @@
1
1
  import React__default from 'react';
2
2
  import cn from 'classnames';
3
- import { getPinnedShadowClasses, getCellAlignmentClasses } from '../../utilities/cell.js';
3
+ import { getFrozenShadowClasses, getCellAlignmentClasses } from '../../utilities/cell.js';
4
4
 
5
5
  const ColumnBase = /*#__PURE__*/React__default.forwardRef(function Table2ColumnBase(props, ref) {
6
6
  var _column$columnDef$met;
@@ -11,18 +11,18 @@ const ColumnBase = /*#__PURE__*/React__default.forwardRef(function Table2ColumnB
11
11
  table,
12
12
  ...attributes
13
13
  } = props;
14
- const pinned = !!column.getIsPinned();
14
+ const isFrozenColumn = !!column.getIsPinned();
15
15
  const meta = table.options.meta;
16
16
  const left = meta.columnOffsets[column.id];
17
- const columnPinning = table.getLeftVisibleLeafColumns().map(c => c.id);
18
- const className = cn('border-grey-300', getPinnedShadowClasses(column, columnPinning, scrolled), getCellAlignmentClasses((_column$columnDef$met = column.columnDef.meta) === null || _column$columnDef$met === void 0 ? void 0 : _column$columnDef$met.align), {
17
+ const columnFreezing = table.getLeftVisibleLeafColumns().map(c => c.id);
18
+ const className = cn('border-grey-300', getFrozenShadowClasses(column, columnFreezing, scrolled), getCellAlignmentClasses((_column$columnDef$met = column.columnDef.meta) === null || _column$columnDef$met === void 0 ? void 0 : _column$columnDef$met.align), {
19
19
  'cursor-pointer': !!attributes.onClick
20
20
  }, attributes.className);
21
21
  return /*#__PURE__*/React__default.createElement("div", Object.assign({}, attributes, {
22
22
  className: className,
23
23
  style: {
24
24
  ...style,
25
- left: pinned && Number.isInteger(left) ? left : undefined
25
+ left: isFrozenColumn && Number.isInteger(left) ? left : undefined
26
26
  },
27
27
  ref: ref
28
28
  }));
@@ -1 +1 @@
1
- {"version":3,"file":"Base.js","sources":["../../../../../../../../../src/components/Table2/components/column/Base.tsx"],"sourcesContent":["import React from 'react';\nimport cn from 'classnames';\nimport { Column as RTColumn, Table as RTTable, TableMeta } from '@tanstack/react-table';\nimport { getCellAlignmentClasses, getPinnedShadowClasses } from '../../utilities/cell';\n\nexport type ColumnBaseProps<TType = any> = React.HTMLAttributes<HTMLDivElement> & {\n column: RTColumn<TType, any>;\n scrolled: boolean;\n table: RTTable<TType>;\n};\n\nexport const ColumnBase = React.forwardRef<HTMLDivElement, ColumnBaseProps>(function Table2ColumnBase(props, ref) {\n const { column, scrolled, style, table, ...attributes } = props;\n const pinned = !!column.getIsPinned();\n const meta = table.options.meta as TableMeta<any>;\n const left = meta.columnOffsets[column.id];\n\n const columnPinning = table.getLeftVisibleLeafColumns().map(c => c.id);\n\n const className = cn(\n 'border-grey-300',\n getPinnedShadowClasses(column, columnPinning, scrolled),\n getCellAlignmentClasses(column.columnDef.meta?.align),\n {\n 'cursor-pointer': !!attributes.onClick,\n },\n attributes.className\n );\n\n return (\n <div\n {...attributes}\n className={className}\n style={{ ...style, left: pinned && Number.isInteger(left) ? left : undefined }}\n ref={ref}\n />\n );\n});\n"],"names":["ColumnBase","React","forwardRef","Table2ColumnBase","props","ref","column","scrolled","style","table","attributes","pinned","getIsPinned","meta","options","left","columnOffsets","id","columnPinning","getLeftVisibleLeafColumns","map","c","className","cn","getPinnedShadowClasses","getCellAlignmentClasses","columnDef","align","onClick","Number","isInteger","undefined"],"mappings":";;;;MAWaA,UAAU,gBAAGC,cAAK,CAACC,UAAU,CAAkC,SAASC,gBAAgB,CAACC,KAAK,EAAEC,GAAG;;EAC5G,MAAM;IAAEC,MAAM;IAAEC,QAAQ;IAAEC,KAAK;IAAEC,KAAK;IAAE,GAAGC;GAAY,GAAGN,KAAK;EAC/D,MAAMO,MAAM,GAAG,CAAC,CAACL,MAAM,CAACM,WAAW,EAAE;EACrC,MAAMC,IAAI,GAAGJ,KAAK,CAACK,OAAO,CAACD,IAAsB;EACjD,MAAME,IAAI,GAAGF,IAAI,CAACG,aAAa,CAACV,MAAM,CAACW,EAAE,CAAC;EAE1C,MAAMC,aAAa,GAAGT,KAAK,CAACU,yBAAyB,EAAE,CAACC,GAAG,CAACC,CAAC,IAAIA,CAAC,CAACJ,EAAE,CAAC;EAEtE,MAAMK,SAAS,GAAGC,EAAE,CAChB,iBAAiB,EACjBC,sBAAsB,CAAClB,MAAM,EAAEY,aAAa,EAAEX,QAAQ,CAAC,EACvDkB,uBAAuB,0BAACnB,MAAM,CAACoB,SAAS,CAACb,IAAI,0DAArB,sBAAuBc,KAAK,CAAC,EACrD;IACI,gBAAgB,EAAE,CAAC,CAACjB,UAAU,CAACkB;GAClC,EACDlB,UAAU,CAACY,SAAS,CACvB;EAED,oBACIrB,sDACQS,UAAU;IACdY,SAAS,EAAEA,SAAS;IACpBd,KAAK,EAAE;MAAE,GAAGA,KAAK;MAAEO,IAAI,EAAEJ,MAAM,IAAIkB,MAAM,CAACC,SAAS,CAACf,IAAI,CAAC,GAAGA,IAAI,GAAGgB;KAAW;IAC9E1B,GAAG,EAAEA;KACP;AAEV,CAAC;;;;"}
1
+ {"version":3,"file":"Base.js","sources":["../../../../../../../../../src/components/Table2/components/column/Base.tsx"],"sourcesContent":["import React from 'react';\nimport cn from 'classnames';\nimport { Column as RTColumn, Table as RTTable, TableMeta } from '@tanstack/react-table';\nimport { getCellAlignmentClasses, getFrozenShadowClasses } from '../../utilities/cell';\n\nexport type ColumnBaseProps<TType = any> = React.HTMLAttributes<HTMLDivElement> & {\n column: RTColumn<TType, any>;\n scrolled: boolean;\n table: RTTable<TType>;\n};\n\nexport const ColumnBase = React.forwardRef<HTMLDivElement, ColumnBaseProps>(function Table2ColumnBase(props, ref) {\n const { column, scrolled, style, table, ...attributes } = props;\n const isFrozenColumn = !!column.getIsPinned();\n const meta = table.options.meta as TableMeta<any>;\n const left = meta.columnOffsets[column.id];\n\n const columnFreezing = table.getLeftVisibleLeafColumns().map(c => c.id);\n\n const className = cn(\n 'border-grey-300',\n getFrozenShadowClasses(column, columnFreezing, scrolled),\n getCellAlignmentClasses(column.columnDef.meta?.align),\n {\n 'cursor-pointer': !!attributes.onClick,\n },\n attributes.className\n );\n\n return (\n <div\n {...attributes}\n className={className}\n style={{ ...style, left: isFrozenColumn && Number.isInteger(left) ? left : undefined }}\n ref={ref}\n />\n );\n});\n"],"names":["ColumnBase","React","forwardRef","Table2ColumnBase","props","ref","column","scrolled","style","table","attributes","isFrozenColumn","getIsPinned","meta","options","left","columnOffsets","id","columnFreezing","getLeftVisibleLeafColumns","map","c","className","cn","getFrozenShadowClasses","getCellAlignmentClasses","columnDef","align","onClick","Number","isInteger","undefined"],"mappings":";;;;MAWaA,UAAU,gBAAGC,cAAK,CAACC,UAAU,CAAkC,SAASC,gBAAgB,CAACC,KAAK,EAAEC,GAAG;;EAC5G,MAAM;IAAEC,MAAM;IAAEC,QAAQ;IAAEC,KAAK;IAAEC,KAAK;IAAE,GAAGC;GAAY,GAAGN,KAAK;EAC/D,MAAMO,cAAc,GAAG,CAAC,CAACL,MAAM,CAACM,WAAW,EAAE;EAC7C,MAAMC,IAAI,GAAGJ,KAAK,CAACK,OAAO,CAACD,IAAsB;EACjD,MAAME,IAAI,GAAGF,IAAI,CAACG,aAAa,CAACV,MAAM,CAACW,EAAE,CAAC;EAE1C,MAAMC,cAAc,GAAGT,KAAK,CAACU,yBAAyB,EAAE,CAACC,GAAG,CAACC,CAAC,IAAIA,CAAC,CAACJ,EAAE,CAAC;EAEvE,MAAMK,SAAS,GAAGC,EAAE,CAChB,iBAAiB,EACjBC,sBAAsB,CAAClB,MAAM,EAAEY,cAAc,EAAEX,QAAQ,CAAC,EACxDkB,uBAAuB,0BAACnB,MAAM,CAACoB,SAAS,CAACb,IAAI,0DAArB,sBAAuBc,KAAK,CAAC,EACrD;IACI,gBAAgB,EAAE,CAAC,CAACjB,UAAU,CAACkB;GAClC,EACDlB,UAAU,CAACY,SAAS,CACvB;EAED,oBACIrB,sDACQS,UAAU;IACdY,SAAS,EAAEA,SAAS;IACpBd,KAAK,EAAE;MAAE,GAAGA,KAAK;MAAEO,IAAI,EAAEJ,cAAc,IAAIkB,MAAM,CAACC,SAAS,CAACf,IAAI,CAAC,GAAGA,IAAI,GAAGgB;KAAW;IACtF1B,GAAG,EAAEA;KACP;AAEV,CAAC;;;;"}
@@ -47,7 +47,7 @@ const Cell = function Cell(props) {
47
47
  const controlRef = React__default.useRef(null);
48
48
  const cellClassName = (_cell$column$columnDe = cell.column.columnDef.meta) === null || _cell$column$columnDe === void 0 ? void 0 : _cell$column$columnDe.className;
49
49
  const isActiveRow = meta.activeRowIndex === rowIndex;
50
- const isPinned = !!cell.column.getIsPinned();
50
+ const isFrozen = !!cell.column.getIsPinned();
51
51
  const isDragging = meta.dragging[cell.row.id];
52
52
  const isSelected = cell.row.getIsSelected();
53
53
  const isDataColumn = !isInternalColumn(cell.column.id);
@@ -73,7 +73,7 @@ const Cell = function Cell(props) {
73
73
  }, [isIndicatorVisible, isLastRow]);
74
74
  const className = cn('[&>[data-taco="tag"]]:-my-0.5', {
75
75
  'border-b': !isLastRow,
76
- 'sticky z-[1]': isPinned,
76
+ 'sticky z-[1]': isFrozen,
77
77
  // use isHoveredRow rather than css group-hover/row because we want to hide hover state when keyboard navigating
78
78
  'bg-white': !isActiveRow && !isSelected,
79
79
  'group-hover/row:bg-grey-100': !isActiveRow && !isSelected && !meta.shouldPauseHoverState,
@@ -82,10 +82,10 @@ const Cell = function Cell(props) {
82
82
  '!wcag-blue-500': isDragging,
83
83
  '[&>*]:!grayscale [&_.bg-white]:!bg-grey-100': !isEditingThisRow && isHoveringThisRowWhileEditing,
84
84
  '!bg-red-100': hasValidationErrorsInRow,
85
- 'z-[1]': isPinned && isActiveRow,
85
+ 'z-[1]': isFrozen && isActiveRow,
86
86
  // First column should have higher z-index so that row indicator always show on top of the cell
87
- // control components.
88
- 'z-[2]': isPinned && isActiveRow && index === 0,
87
+ // control components. A z-index of 3, will show the indicator when columns are pinned.
88
+ 'z-[3]': isFrozen && isActiveRow && index === 0,
89
89
  'border-blue !border-y-2 border-x-0': isIndicatorVisible,
90
90
  'border-l-2 rounded-l': isIndicatorVisible && index === 0,
91
91
  'border-r-2 rounded-r': isIndicatorVisible && index === lastColumnIndex
@@ -125,9 +125,6 @@ const Cell = function Cell(props) {
125
125
  role: 'cell'
126
126
  };
127
127
  const [detailModeEditing, setDetailModeEditing] = React__default.useState(false);
128
- const detailModeClassName = cn({
129
- '!shadow-[0_0_0_4px_rgba(0,99,255,0.25)]': detailModeEditing
130
- });
131
128
  // reset the editing state when we move column
132
129
  React__default.useEffect(() => {
133
130
  if (meta.editMode.columnIndex !== index) {
@@ -166,6 +163,9 @@ const Cell = function Cell(props) {
166
163
  }
167
164
  }
168
165
  };
166
+ attributes.onBlur = () => {
167
+ setDetailModeEditing(false);
168
+ };
169
169
  if (canEditThisCell) {
170
170
  var _allFocussableColumnI, _allFocussableColumnI2;
171
171
  const firstDataColumnIndex = (_allFocussableColumnI = allFocussableColumnIndexes.at(0)) !== null && _allFocussableColumnI !== void 0 ? _allFocussableColumnI : 0;
@@ -185,18 +185,24 @@ const Cell = function Cell(props) {
185
185
  if (!detailModeEditing) {
186
186
  var _input$setSelectionRa, _input$value, _input$value2;
187
187
  (_input$setSelectionRa = input.setSelectionRange) === null || _input$setSelectionRa === void 0 ? void 0 : _input$setSelectionRa.call(input, (_input$value = input.value) === null || _input$value === void 0 ? void 0 : _input$value.length, (_input$value2 = input.value) === null || _input$value2 === void 0 ? void 0 : _input$value2.length);
188
- setDetailModeEditing(true);
188
+ } else {
189
+ var _input$select;
190
+ input === null || input === void 0 ? void 0 : (_input$select = input.select) === null || _input$select === void 0 ? void 0 : _input$select.call(input);
189
191
  }
192
+ setDetailModeEditing(!detailModeEditing);
190
193
  return;
191
194
  }
195
+ // Datepicker doesn't have keydown event handler its value doesn't change when user types inside
196
+ // datepicker input, so we need to explicitly enable detail editing mode on typing any alphanumeric
197
+ // character
198
+ if (control !== null && control !== void 0 && control.closest('[data-taco="datepicker"]') && /^[a-z0-9]$/i.test(event.key)) {
199
+ setDetailModeEditing(true);
200
+ }
192
201
  }
193
202
  // Don't exit edit mode if the target of the escape isn't a child of the cell (e.g. if its a popover).
194
203
  if (event.key === 'Escape' && event.currentTarget.contains(control)) {
195
204
  event.preventDefault();
196
- const input = control;
197
205
  if (detailModeEditing) {
198
- var _input$select;
199
- input === null || input === void 0 ? void 0 : (_input$select = input.select) === null || _input$select === void 0 ? void 0 : _input$select.call(input);
200
206
  setDetailModeEditing(false);
201
207
  } else {
202
208
  var _tableRef$current3;
@@ -279,7 +285,7 @@ const Cell = function Cell(props) {
279
285
  };
280
286
  }
281
287
  return /*#__PURE__*/React__default.createElement(ColumnBase, Object.assign({}, attributes), /*#__PURE__*/React__default.createElement(EditingCell, {
282
- detailModeClassName: detailModeClassName,
288
+ detailModeEditing: detailModeEditing,
283
289
  cell: cell,
284
290
  cellRef: internalRef,
285
291
  columnIndex: index,
@@ -290,7 +296,12 @@ const Cell = function Cell(props) {
290
296
  tableRef: tableRef,
291
297
  ref: controlRef,
292
298
  rowValues: rows[rowIndex].original,
293
- rowsLength: rows.length
299
+ rowsLength: rows.length,
300
+ enableDetailModeEditing: () => {
301
+ if (!detailModeEditing) {
302
+ setDetailModeEditing(true);
303
+ }
304
+ }
294
305
  }));
295
306
  } else {
296
307
  if (meta.onRowClick) {
@@ -311,13 +322,14 @@ const EditingCell = /*#__PURE__*/React__default.memo( /*#__PURE__*/React__defaul
311
322
  cell,
312
323
  cellRef,
313
324
  columnIndex,
314
- detailModeClassName,
325
+ detailModeEditing,
315
326
  isEditingThisCell = false,
316
327
  onSave: handleSave,
317
328
  rowIndex,
318
329
  rowValues,
319
330
  table,
320
- tableRef
331
+ tableRef,
332
+ enableDetailModeEditing
321
333
  } = props;
322
334
  const {
323
335
  editMode: {
@@ -342,6 +354,7 @@ const EditingCell = /*#__PURE__*/React__default.memo( /*#__PURE__*/React__defaul
342
354
  const hasValidationError = !isHoveringAnotherRowWhileEditing && !!cellValidationError;
343
355
  // On each save, the initialValue will be set to the new value of the cell
344
356
  const initialValue = React__default.useRef(value);
357
+ const stateReset = React__default.useRef(false);
345
358
  // It is important that we let consumers pass a newValue as an argument because when setState is called before
346
359
  // onBlur then saveIfChanged method gets the stale state value. This happens because the rerender hasn't happened
347
360
  // before the saveIfChanged method is called.
@@ -402,15 +415,39 @@ const EditingCell = /*#__PURE__*/React__default.memo( /*#__PURE__*/React__defaul
402
415
  const pinnedColumnsWidth = React__default.useMemo(() => {
403
416
  const pinnedColumns = table.getState().columnPinning.left;
404
417
  if (Array.isArray(pinnedColumns) && pinnedColumns.length > 0) {
405
- const lastPinnedColumn = pinnedColumns[pinnedColumns.length - 1];
406
- const lastPinnedColumnOffset = meta.columnOffsets[lastPinnedColumn];
407
- if (lastPinnedColumnOffset !== undefined) {
418
+ const lastFrozenColumn = pinnedColumns[pinnedColumns.length - 1];
419
+ const lastFrozenColumnOffset = meta.columnOffsets[lastFrozenColumn];
420
+ if (lastFrozenColumnOffset !== undefined) {
408
421
  var _table$getState$colum;
409
- return lastPinnedColumnOffset + ((_table$getState$colum = table.getState().columnSizing[lastPinnedColumn]) !== null && _table$getState$colum !== void 0 ? _table$getState$colum : 0);
422
+ return lastFrozenColumnOffset + ((_table$getState$colum = table.getState().columnSizing[lastFrozenColumn]) !== null && _table$getState$colum !== void 0 ? _table$getState$colum : 0);
410
423
  }
411
424
  }
412
425
  return 0;
413
426
  }, [meta.columnOffsets, table.getState().columnSizing]);
427
+ React__default.useEffect(() => {
428
+ if (hasChanged(initialValue.current, state)) {
429
+ var _controlRef$current2;
430
+ // For an input we want to make sure that if the value is changed then we go into detail mode, so that
431
+ // arrow keys doesn't trigger the quick mode shortcuts.
432
+ if (((_controlRef$current2 = controlRef.current) === null || _controlRef$current2 === void 0 ? void 0 : _controlRef$current2.nodeName) === 'INPUT') {
433
+ enableDetailModeEditing();
434
+ }
435
+ showIndicator();
436
+ } else {
437
+ hideIndicator();
438
+ }
439
+ return hideIndicator;
440
+ }, [state]);
441
+ // This effect makes sure we select the input control value when escape key is pressed
442
+ React__default.useEffect(() => {
443
+ var _controlRef$current3, _controlRef$current4;
444
+ const isControlInput = ((_controlRef$current3 = controlRef.current) === null || _controlRef$current3 === void 0 ? void 0 : _controlRef$current3.nodeName) === 'INPUT' && ((_controlRef$current4 = controlRef.current) === null || _controlRef$current4 === void 0 ? void 0 : _controlRef$current4.getAttribute('data-inline-editing-component')) === 'true';
445
+ if (stateReset.current && isControlInput) {
446
+ var _controlRef$current5;
447
+ (_controlRef$current5 = controlRef.current) === null || _controlRef$current5 === void 0 ? void 0 : _controlRef$current5.select();
448
+ }
449
+ stateReset.current = false;
450
+ }, [stateReset.current]);
414
451
  const handleFocus = event => {
415
452
  var _event$target, _cellRef$current;
416
453
  meta.editMode.setColumn(columnIndex);
@@ -426,14 +463,17 @@ const EditingCell = /*#__PURE__*/React__default.memo( /*#__PURE__*/React__defaul
426
463
  (_tableRef$current4 = tableRef.current) === null || _tableRef$current4 === void 0 ? void 0 : _tableRef$current4.scrollTo(leftOffset - pinnedColumnsWidth, tableRef.current.scrollTop);
427
464
  }
428
465
  };
429
- React__default.useEffect(() => {
430
- if (hasChanged(initialValue.current, state)) {
431
- showIndicator();
432
- } else {
433
- hideIndicator();
466
+ // In order to reset the value of an input when escape key is pressed this keydown handler is required.
467
+ // Instead of adding this event handler in parent component, this handler is added here because we have access
468
+ // to the state handler of the control component.
469
+ const handleKeyDown = event => {
470
+ const control = event.target;
471
+ const isControlInput = control.nodeName === 'INPUT' && (control === null || control === void 0 ? void 0 : control.getAttribute('data-inline-editing-component')) === 'true';
472
+ if (isControlInput && event.key === 'Escape') {
473
+ setState(initialValue.current);
474
+ stateReset.current = true;
434
475
  }
435
- return hideIndicator;
436
- }, [state]);
476
+ };
437
477
  const showIndicator = () => {
438
478
  var _table$getState$sorti;
439
479
  let willRowMoveReason = null;
@@ -482,6 +522,9 @@ const EditingCell = /*#__PURE__*/React__default.memo( /*#__PURE__*/React__defaul
482
522
  const className = cn(getCellAlignmentClasses((_cell$column$columnDe4 = cell.column.columnDef.meta) === null || _cell$column$columnDe4 === void 0 ? void 0 : _cell$column$columnDe4.align));
483
523
  const indicatorMountNode = (_cellRef$current2 = cellRef.current) === null || _cellRef$current2 === void 0 ? void 0 : (_cellRef$current2$par = _cellRef$current2.parentElement) === null || _cellRef$current2$par === void 0 ? void 0 : _cellRef$current2$par.querySelector(':first-child');
484
524
  let controlComponent;
525
+ const detailModeClassName = cn({
526
+ '!shadow-[0_0_0_4px_rgba(0,99,255,0.25)]': detailModeEditing
527
+ });
485
528
  if (cellControl) {
486
529
  if (typeof cellControl === 'function') {
487
530
  controlComponent = cellControl({
@@ -491,14 +534,15 @@ const EditingCell = /*#__PURE__*/React__default.memo( /*#__PURE__*/React__defaul
491
534
  ref: controlRef,
492
535
  setValue: setState,
493
536
  value: state,
494
- 'data-inline-editing-component': 'true',
495
- className: detailModeClassName
537
+ 'data-inline-editing-component': 'true'
496
538
  }, cell.row.original);
497
539
  } else {
498
540
  switch (cellControl) {
499
541
  case 'datepicker':
500
542
  controlComponent = /*#__PURE__*/React__default.createElement(Datepicker, Object.assign({}, attributes, {
501
- className: detailModeClassName,
543
+ className: cn({
544
+ '[&_input]:!shadow-[0_0_0_4px_rgba(0,99,255,0.25)]': detailModeEditing
545
+ }),
502
546
  invalid: hasValidationError,
503
547
  onBlur: event => {
504
548
  const newDate = event.detail;
@@ -527,7 +571,8 @@ const EditingCell = /*#__PURE__*/React__default.memo( /*#__PURE__*/React__defaul
527
571
  setState(event.target.value);
528
572
  },
529
573
  ref: controlRef,
530
- value: String(state !== null && state !== void 0 ? state : '')
574
+ value: String(state !== null && state !== void 0 ? state : ''),
575
+ onKeyDown: handleKeyDown
531
576
  }));
532
577
  break;
533
578
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Cell.js","sources":["../../../../../../../../../src/components/Table2/components/column/Cell.tsx"],"sourcesContent":["import React, { RefObject } from 'react';\nimport cn from 'classnames';\nimport { flexRender, Cell as RTCell, Row as RTRow, Table as RTTable, TableMeta } from '@tanstack/react-table';\nimport { Input } from '../../../Input/Input';\nimport { ColumnBase, ColumnBaseProps } from './Base';\nimport { getCellAlignmentClasses, getCellSizingClasses, isKeyboardFocusableElement } from '../../utilities/cell';\nimport { isInternalColumn } from '../../utilities/columns';\nimport { Datepicker } from '../../../Datepicker/Datepicker';\nimport { Switch } from '../../../Switch/Switch';\nimport { SaveHandler, SaveHandlerErrorResponse, Table2Filter } from '../../types';\nimport { columnFilterFn, globalFilterFn } from '../../utilities/filterFn';\nimport { MOVE_DIR } from '../../hooks/useEditMode';\nimport { useRowContext } from '../row/Context';\nimport { Indicator, IndicatorReason } from './Indicator';\nimport { ValidationError } from './ValidationError';\nimport { hasChanged, willRowMoveAfterSorting } from './utils';\nimport { useMergedRef } from '../../../../hooks/useMergedRef';\n\ntype CellProps<TType = unknown> = Omit<ColumnBaseProps<TType>, 'column' | 'isEditing'> & {\n cell: RTCell<TType, unknown>;\n index: number;\n isLastRow: boolean;\n rowIndex: number;\n rows: RTRow<TType>[];\n scrollToIndex: (index: number, options?: any) => void;\n scrollToOffset: (index: number, options?: any) => void;\n tableRef: React.RefObject<HTMLDivElement>;\n};\n\nexport const Cell = function Cell<TType = unknown>(props: CellProps<TType>) {\n const { cell, index, isLastRow, rowIndex, rows, scrollToIndex, scrollToOffset, table, tableRef, ...columnProps } = props;\n const meta = table.options.meta as TableMeta<any>;\n\n const { addFocussableColumnIndex, focussableColumnIndexes: allFocussableColumnIndexes } = meta;\n\n const {\n editMode: { validationErrors, rowMoveReason },\n isHovered: isHoveredRow,\n } = useRowContext();\n const hasValidationErrorsInRow = !!validationErrors;\n\n const internalRef = React.useRef<HTMLDivElement>(null);\n const controlRef = React.useRef<HTMLElement>(null);\n const cellClassName = cell.column.columnDef.meta?.className;\n\n const isActiveRow = meta.activeRowIndex === rowIndex;\n const isPinned = !!cell.column.getIsPinned();\n const isDragging = meta.dragging[cell.row.id];\n const isSelected = cell.row.getIsSelected();\n const isDataColumn = !isInternalColumn(cell.column.id);\n const hasCellControl = !!cell.column.columnDef.meta?.control;\n const allVisibleColumns = table.getVisibleLeafColumns();\n const lastColumnIndex = allVisibleColumns.length > 0 ? allVisibleColumns.length - 1 : 0;\n\n // editing\n const isEditingThisRow = meta.editMode.isEditing && isActiveRow;\n const canEditThisCell = isEditingThisRow && isDataColumn;\n const isEditingThisCell = canEditThisCell && meta.editMode.columnIndex === index;\n const isHoveringThisRowWhileEditing = meta.editMode.isEditing && isHoveredRow && !meta.shouldPauseHoverState;\n\n const isIndicatorVisible = Object.keys(rowMoveReason).length > 0;\n\n React.useEffect(() => {\n // Adds padding to the table so that indicator doesn't get cropped\n if (isIndicatorVisible && isLastRow) {\n tableRef.current?.classList.add('pb-4');\n }\n\n return () => tableRef.current?.classList.remove('pb-4');\n }, [isIndicatorVisible, isLastRow]);\n\n const className = cn(\n '[&>[data-taco=\"tag\"]]:-my-0.5',\n {\n 'border-b': !isLastRow,\n 'sticky z-[1]': isPinned,\n // use isHoveredRow rather than css group-hover/row because we want to hide hover state when keyboard navigating\n 'bg-white': !isActiveRow && !isSelected,\n 'group-hover/row:bg-grey-100': !isActiveRow && !isSelected && !meta.shouldPauseHoverState,\n 'bg-grey-200 group-hover/row:bg-grey-200': isActiveRow && !isSelected,\n 'bg-blue-100': isSelected,\n '!wcag-blue-500': isDragging,\n '[&>*]:!grayscale [&_.bg-white]:!bg-grey-100': !isEditingThisRow && isHoveringThisRowWhileEditing,\n '!bg-red-100': hasValidationErrorsInRow,\n 'z-[1]': isPinned && isActiveRow,\n // First column should have higher z-index so that row indicator always show on top of the cell\n // control components.\n 'z-[2]': isPinned && isActiveRow && index === 0,\n 'border-blue !border-y-2 border-x-0': isIndicatorVisible,\n 'border-l-2 rounded-l': isIndicatorVisible && index === 0,\n 'border-r-2 rounded-r': isIndicatorVisible && index === lastColumnIndex,\n },\n getCellSizingClasses(\n table.options.meta?.rowDensity,\n (isEditingThisRow || isHoveringThisRowWhileEditing) && hasCellControl\n ),\n typeof cellClassName === 'function' ? cellClassName(cell.row, table) : cellClassName\n );\n\n const handleMouseDown = (event: React.MouseEvent<HTMLElement>) => {\n // only detect left clicks\n if (event.button === 0) {\n const activeElement = document.activeElement;\n const isActiveElementControl = activeElement?.closest('[role=\"cell\"]');\n const hasActiveRowChanged = meta.activeRowIndex !== rowIndex;\n\n // When user clicks on a cell that is not in the active row, for some reason blur event is not called on the cell\n // previous cell control element so we need to manually call it in order to save the changes in that cell\n if (isActiveElementControl && hasActiveRowChanged) {\n (activeElement as HTMLElement).blur();\n }\n\n meta.setActiveRowIndex(rowIndex);\n\n if (meta.editMode.isEditing) {\n if (allFocussableColumnIndexes.includes(index)) {\n meta.editMode.setColumn(index);\n } else {\n meta.editMode.setColumn(allFocussableColumnIndexes[0]);\n }\n }\n }\n };\n\n const attributes = {\n ...columnProps,\n // base props,\n column: cell.column,\n table,\n // dom attributes\n className,\n 'data-column-index': index,\n 'data-row-index': rowIndex,\n onMouseDown: handleMouseDown,\n ref: internalRef,\n role: 'cell',\n };\n\n const [detailModeEditing, setDetailModeEditing] = React.useState(false);\n\n const detailModeClassName = cn({\n '!shadow-[0_0_0_4px_rgba(0,99,255,0.25)]': detailModeEditing,\n });\n\n // reset the editing state when we move column\n React.useEffect(() => {\n if (meta.editMode.columnIndex !== index) {\n setDetailModeEditing(false);\n }\n }, [meta.editMode.columnIndex]);\n\n React.useEffect(() => {\n if (isEditingThisRow && controlRef.current && isKeyboardFocusableElement(controlRef.current)) {\n addFocussableColumnIndex(index);\n }\n }, [isEditingThisRow, allFocussableColumnIndexes, addFocussableColumnIndex, index]);\n\n const moveRow = (moveDirection: MOVE_DIR) => {\n if (moveDirection === MOVE_DIR.PREV) {\n meta.moveToPreviousRow(rows, nextIndex => scrollToIndex(nextIndex - 1));\n } else if (moveDirection === MOVE_DIR.NEXT) {\n meta.moveToNextRow(rows, nextIndex => scrollToIndex(nextIndex + 2));\n }\n };\n\n if (meta.editMode.onSave && hasCellControl && (canEditThisCell || (isHoveringThisRowWhileEditing && isDataColumn))) {\n attributes.onMouseDown = event => {\n handleMouseDown(event);\n\n const target = event.target;\n const isTargetInput = target !== null && (target as HTMLElement).nodeName === 'INPUT';\n\n // event.target?.select is only truthy for input elements\n // if event.target is active element, then that means we should select the text\n if (isTargetInput && target !== document.activeElement) {\n event.preventDefault();\n\n setTimeout(() => {\n (target as HTMLInputElement).select();\n }, 1);\n } else if (isTargetInput && target === document.activeElement) {\n // if user left clicks on the input then we are into edit mode\n // only detect left clicks\n if (event.button === 0) {\n setDetailModeEditing(true);\n }\n }\n };\n\n if (canEditThisCell) {\n const firstDataColumnIndex = allFocussableColumnIndexes.at(0) ?? 0;\n const lastDataColumnIndex = allFocussableColumnIndexes.at(-1) ?? 0;\n\n attributes.onKeyDown = (event: React.KeyboardEvent<HTMLDivElement>) => {\n const control = event.target as HTMLElement;\n const isControlInput =\n control.nodeName === 'INPUT' && control?.getAttribute('data-inline-editing-component') === 'true';\n\n // For some reason, Taco Input keyboard event always return true when \"event.isDefaultPrevented()\" is\n // called. So we need to check if the control is input or not so that we don't return early.\n if (!isControlInput && (event.isDefaultPrevented() || event.isPropagationStopped())) {\n return;\n }\n\n if (control.tagName === 'INPUT') {\n if (event.key === 'Enter') {\n event.preventDefault();\n const input = control as HTMLInputElement;\n\n if (!detailModeEditing) {\n input.setSelectionRange?.(input.value?.length, input.value?.length);\n setDetailModeEditing(true);\n }\n\n return;\n }\n }\n\n // Don't exit edit mode if the target of the escape isn't a child of the cell (e.g. if its a popover).\n if (event.key === 'Escape' && event.currentTarget.contains(control)) {\n event.preventDefault();\n const input = control as HTMLInputElement;\n\n if (detailModeEditing) {\n input?.select?.();\n setDetailModeEditing(false);\n } else {\n meta.editMode.toggleEditing(false);\n tableRef.current?.focus();\n }\n\n return;\n }\n\n if ((!detailModeEditing && event.key === 'ArrowLeft') || (event.key === 'Tab' && event.shiftKey)) {\n event.preventDefault();\n\n const isFirstRow = rowIndex === 0;\n const isFirstColumn = index === firstDataColumnIndex;\n\n if (event.ctrlKey || event.metaKey) {\n // If the current active column is the first column then we don't do any thing so that focus\n // remains on the first column.\n if (!isFirstColumn) {\n control.blur();\n meta.editMode.moveToFirstColumn(allFocussableColumnIndexes);\n }\n } else {\n // If it is first row and first column, then don't move column.\n if (!isFirstRow || !isFirstColumn) {\n control.blur();\n meta.editMode.moveToPreviousColumn(allFocussableColumnIndexes, moveRow);\n }\n }\n\n return;\n }\n\n if ((!detailModeEditing && event.key === 'ArrowRight') || (event.key === 'Tab' && !event.shiftKey)) {\n event.preventDefault();\n\n const isLastColumn = index === lastDataColumnIndex;\n\n if (event.ctrlKey || event.metaKey) {\n // If the current active column is the last column then we don't do any thing so that focus\n // remains on the last column.\n if (!isLastColumn) {\n control.blur();\n meta.editMode.moveToLastColumn(allFocussableColumnIndexes);\n }\n } else {\n // If it is last row and last column, then don't move column.\n if (!isLastRow || !isLastColumn) {\n control.blur();\n meta.editMode.moveToNextColumn(allFocussableColumnIndexes, moveRow);\n }\n }\n\n return;\n }\n\n if (!detailModeEditing && event.key === 'ArrowUp') {\n event.preventDefault();\n\n // if it is the first row then return early, so that focus on the cell is not lost\n if (rowIndex === 0) {\n return;\n }\n\n control.blur();\n\n if (event.ctrlKey || event.metaKey) {\n meta.setActiveRowIndex(0);\n\n scrollToOffset(0);\n } else {\n moveRow(MOVE_DIR.PREV);\n }\n\n meta.setShouldPauseHoverState(true);\n return;\n }\n\n if (!detailModeEditing && event.key === 'ArrowDown') {\n event.preventDefault();\n\n // if it is the last row then return early, so that focus on the cell is not lost\n if (rowIndex === rows.length - 1) {\n return;\n }\n\n control.blur();\n\n if (event.ctrlKey || event.metaKey) {\n meta.setActiveRowIndex(rows.length - 1);\n scrollToIndex(rows.length + 20);\n } else {\n moveRow(MOVE_DIR.NEXT);\n }\n\n meta.setShouldPauseHoverState(true);\n return;\n }\n };\n }\n\n return (\n <ColumnBase {...attributes}>\n <EditingCell\n detailModeClassName={detailModeClassName}\n cell={cell}\n cellRef={internalRef}\n columnIndex={index}\n isEditingThisCell={isEditingThisCell}\n onSave={meta.editMode.onSave}\n rowIndex={rowIndex}\n table={table}\n tableRef={tableRef}\n ref={controlRef}\n rowValues={rows[rowIndex].original}\n rowsLength={rows.length}\n />\n </ColumnBase>\n );\n } else {\n if (meta.onRowClick) {\n attributes.onClick = event => {\n if (event.target !== internalRef.current) {\n return;\n }\n\n meta.onRowClick?.(cell.row.original);\n };\n }\n }\n\n return <ColumnBase {...attributes}>{flexRender(cell.column.columnDef.cell, cell.getContext())}</ColumnBase>;\n};\n\ntype EditingCellProps = {\n cell: RTCell<any, unknown>;\n cellRef: React.RefObject<HTMLDivElement>;\n columnIndex: number;\n isEditingThisCell: boolean;\n onSave: SaveHandler<any>;\n rowIndex: number;\n table: RTTable<any>;\n tableRef: React.RefObject<HTMLDivElement>;\n rowValues: Record<string, any>;\n rowsLength: number;\n detailModeClassName?: string;\n};\n\nconst EditingCell = React.memo(\n React.forwardRef<HTMLElement, EditingCellProps>((props, ref) => {\n const {\n cell,\n cellRef,\n columnIndex,\n detailModeClassName,\n isEditingThisCell = false,\n onSave: handleSave,\n rowIndex,\n rowValues,\n table,\n tableRef,\n } = props;\n const {\n editMode: { validationErrors, setValidationErrors, rowMoveReason, setRowMoveReason },\n isHovered,\n } = useRowContext();\n\n const controlRef = useMergedRef(ref);\n const cellId = cell.column.id;\n const cellValidationError = validationErrors?.[cellId];\n\n const value = cell.getValue();\n const ariaLabel = cell.column.columnDef.header as string | undefined;\n const meta = table.options.meta as TableMeta<any>;\n const { globalFilter } = table.getState();\n\n const [state, setState] = React.useState(value);\n\n const isHoveringAnotherRowWhileEditing = meta.editMode.isEditing && meta.activeRowIndex !== rowIndex && isHovered;\n const hasValidationError = !isHoveringAnotherRowWhileEditing && !!cellValidationError;\n // On each save, the initialValue will be set to the new value of the cell\n const initialValue = React.useRef<any>(value);\n\n // It is important that we let consumers pass a newValue as an argument because when setState is called before\n // onBlur then saveIfChanged method gets the stale state value. This happens because the rerender hasn't happened\n // before the saveIfChanged method is called.\n const saveIfChanged = async (eventOrNewValue?: any) => {\n let newValue = state;\n\n // if eventOrNewValue is not an event object\n if (!eventOrNewValue.target) {\n newValue = eventOrNewValue;\n }\n\n if (hasChanged(value, newValue)) {\n try {\n const updatedRow = { ...cell.row.original, [cellId]: newValue };\n\n await handleSave(updatedRow, cellId);\n\n // If sorting is paused then update the last sorted or filtered rows to store the newly updated row\n if (meta.shouldPauseSortingAndFiltering) {\n meta.lastSortedOrFilteredRows.current = meta.lastSortedOrFilteredRows.current.map(row => {\n if (row.id === cell.row.id) {\n row.original = updatedRow;\n }\n\n return row;\n });\n }\n\n // Reset error if save was successful\n setValidationErrors(null);\n } catch (error) {\n setValidationErrors({ ...validationErrors, ...(error as SaveHandlerErrorResponse) });\n }\n }\n };\n\n // Ensures we \"auto focus\" the field if the cell is being edited.\n React.useEffect(() => {\n const isFocusInsideTable = meta.tableRef.current?.contains(document.activeElement);\n // When control is blurred then body gets the focus that's why we have to make sure if activeElement\n // is body then we focus the cell if it is being edited.\n const isBodyFocussed = document.body === document.activeElement;\n\n // Don't focus cell if any table popup(filter popup, column settings popup) is open.\n if (isEditingThisCell && (isFocusInsideTable || isBodyFocussed)) {\n (controlRef.current as HTMLElement)?.focus?.();\n }\n }, [isEditingThisCell, controlRef.current]);\n\n const pinnedColumnsWidth = React.useMemo(() => {\n const pinnedColumns = table.getState().columnPinning.left;\n\n if (Array.isArray(pinnedColumns) && pinnedColumns.length > 0) {\n const lastPinnedColumn = pinnedColumns[pinnedColumns.length - 1];\n const lastPinnedColumnOffset = meta.columnOffsets[lastPinnedColumn];\n\n if (lastPinnedColumnOffset !== undefined) {\n return lastPinnedColumnOffset + (table.getState().columnSizing[lastPinnedColumn] ?? 0);\n }\n }\n\n return 0;\n }, [meta.columnOffsets, table.getState().columnSizing]);\n\n const handleFocus = event => {\n meta.editMode.setColumn(columnIndex);\n\n if (event.target?.select) {\n event.target?.select();\n }\n\n // ensure the field is always visible (e.g. not hidden behind the pinned columns)\n const rect = cellRef.current?.getBoundingClientRect();\n const leftOffset = meta.columnOffsets[cellId];\n\n if (rect && leftOffset && rect.left < pinnedColumnsWidth) {\n tableRef.current?.scrollTo(leftOffset - pinnedColumnsWidth, tableRef.current.scrollTop);\n }\n };\n\n React.useEffect(() => {\n if (hasChanged(initialValue.current, state)) {\n showIndicator();\n } else {\n hideIndicator();\n }\n\n return hideIndicator;\n }, [state]);\n\n const showIndicator = () => {\n let willRowMoveReason: IndicatorReason | null = null;\n\n const isFilteredByGlobalFilter = Object.values<unknown>({ ...rowValues, [cellId]: state }).some(cellValue =>\n // Global filter can be undefined when there is no text being searched so we pass an empty string to\n // globalFilterFn as query in that case.\n globalFilterFn(String(cellValue), globalFilter ? String(globalFilter) : '')\n );\n\n if (!isFilteredByGlobalFilter) {\n willRowMoveReason = IndicatorReason.SEARCH;\n } else if (cell.column.getIsFiltered() && !columnFilterFn(state, cell.column.getFilterValue() as Table2Filter)) {\n willRowMoveReason = IndicatorReason.FILTER;\n } else if (\n !willRowMoveReason &&\n cell.column.getIsSorted() &&\n willRowMoveAfterSorting(\n state,\n cell,\n rowIndex,\n table.getRowModel().rows,\n !!table.getState().sorting.find(s => s.id === cell.column.id)?.desc\n )\n ) {\n willRowMoveReason = IndicatorReason.SORTING;\n }\n\n if (willRowMoveReason !== null) {\n meta.setShouldPauseSortingAndFiltering(true);\n setRowMoveReason({ [cellId]: willRowMoveReason });\n }\n };\n\n const hideIndicator = () => {\n setRowMoveReason(prevState => {\n const newState = { ...prevState };\n delete newState[cellId];\n\n return newState;\n });\n };\n\n const cellControl = cell.column.columnDef.meta?.control;\n\n const attributes = {\n 'aria-label': ariaLabel,\n onBlur: saveIfChanged,\n onFocus: handleFocus,\n ref,\n // This is a temporary fix to enable up/down arrow key shortcuts on input in quick mode. For some reason,\n // the preventDefault is true on Taco Input, so the keyboard shortcuts doesn't work. By adding this\n // data attribute we make sure the event is coming from a control component, and then we can make sure\n // keyboard shortcut works as expected.\n 'data-inline-editing-component': 'true',\n };\n\n const className = cn(getCellAlignmentClasses(cell.column.columnDef.meta?.align));\n const indicatorMountNode = cellRef.current?.parentElement?.querySelector(':first-child') as Element | null;\n\n let controlComponent;\n\n if (cellControl) {\n if (typeof cellControl === 'function') {\n controlComponent = cellControl(\n {\n invalid: hasValidationError,\n onBlur: saveIfChanged,\n onFocus: handleFocus,\n ref: controlRef,\n setValue: setState,\n value: state,\n 'data-inline-editing-component': 'true',\n className: detailModeClassName,\n },\n cell.row.original\n );\n } else {\n switch (cellControl) {\n case 'datepicker':\n controlComponent = (\n <Datepicker\n {...attributes}\n className={detailModeClassName}\n invalid={hasValidationError}\n onBlur={event => {\n const newDate = (event as any).detail;\n saveIfChanged(newDate);\n }}\n onChange={event => {\n setState((event as any).detail);\n }}\n ref={controlRef as RefObject<HTMLInputElement>}\n value={state as Date}\n />\n );\n break;\n\n case 'switch':\n controlComponent = (\n <Switch\n {...attributes}\n className={cn('mx-2 mt-1.5', detailModeClassName)}\n checked={Boolean(state)}\n onChange={setState}\n ref={controlRef as RefObject<HTMLButtonElement>}\n />\n );\n break;\n default:\n controlComponent = (\n <Input\n {...attributes}\n className={cn(className, detailModeClassName)}\n invalid={hasValidationError}\n onChange={event => {\n setState(event.target.value);\n }}\n ref={controlRef as RefObject<HTMLInputElement>}\n value={String(state ?? '')}\n />\n );\n break;\n }\n }\n }\n\n const indicatorReason = rowMoveReason[cellId] ?? null;\n\n return (\n <>\n {indicatorReason !== null && (\n <Indicator\n reason={indicatorReason}\n columnName={String(cell.column.columnDef.header)}\n mountNode={indicatorMountNode}\n validationErrors={validationErrors}\n />\n )}\n <span className=\"relative flex-grow\">\n {controlComponent}\n {hasValidationError && <ValidationError>{String(cellValidationError)}</ValidationError>}\n </span>\n </>\n );\n })\n);\n"],"names":["Cell","props","cell","index","isLastRow","rowIndex","rows","scrollToIndex","scrollToOffset","table","tableRef","columnProps","meta","options","addFocussableColumnIndex","focussableColumnIndexes","allFocussableColumnIndexes","editMode","validationErrors","rowMoveReason","isHovered","isHoveredRow","useRowContext","hasValidationErrorsInRow","internalRef","React","useRef","controlRef","cellClassName","column","columnDef","className","isActiveRow","activeRowIndex","isPinned","getIsPinned","isDragging","dragging","row","id","isSelected","getIsSelected","isDataColumn","isInternalColumn","hasCellControl","control","allVisibleColumns","getVisibleLeafColumns","lastColumnIndex","length","isEditingThisRow","isEditing","canEditThisCell","isEditingThisCell","columnIndex","isHoveringThisRowWhileEditing","shouldPauseHoverState","isIndicatorVisible","Object","keys","useEffect","current","classList","add","remove","cn","getCellSizingClasses","rowDensity","handleMouseDown","event","button","activeElement","document","isActiveElementControl","closest","hasActiveRowChanged","blur","setActiveRowIndex","includes","setColumn","attributes","onMouseDown","ref","role","detailModeEditing","setDetailModeEditing","useState","detailModeClassName","isKeyboardFocusableElement","moveRow","moveDirection","MOVE_DIR","PREV","moveToPreviousRow","nextIndex","NEXT","moveToNextRow","onSave","target","isTargetInput","nodeName","preventDefault","setTimeout","select","firstDataColumnIndex","at","lastDataColumnIndex","onKeyDown","isControlInput","getAttribute","isDefaultPrevented","isPropagationStopped","tagName","key","input","setSelectionRange","value","currentTarget","contains","toggleEditing","focus","shiftKey","isFirstRow","isFirstColumn","ctrlKey","metaKey","moveToFirstColumn","moveToPreviousColumn","isLastColumn","moveToLastColumn","moveToNextColumn","setShouldPauseHoverState","ColumnBase","EditingCell","cellRef","rowValues","original","rowsLength","onRowClick","onClick","flexRender","getContext","memo","forwardRef","handleSave","setValidationErrors","setRowMoveReason","useMergedRef","cellId","cellValidationError","getValue","ariaLabel","header","globalFilter","getState","state","setState","isHoveringAnotherRowWhileEditing","hasValidationError","initialValue","saveIfChanged","eventOrNewValue","newValue","hasChanged","updatedRow","shouldPauseSortingAndFiltering","lastSortedOrFilteredRows","map","error","isFocusInsideTable","isBodyFocussed","body","pinnedColumnsWidth","useMemo","pinnedColumns","columnPinning","left","Array","isArray","lastPinnedColumn","lastPinnedColumnOffset","columnOffsets","undefined","columnSizing","handleFocus","rect","getBoundingClientRect","leftOffset","scrollTo","scrollTop","showIndicator","hideIndicator","willRowMoveReason","isFilteredByGlobalFilter","values","some","cellValue","globalFilterFn","String","IndicatorReason","SEARCH","getIsFiltered","columnFilterFn","getFilterValue","FILTER","getIsSorted","willRowMoveAfterSorting","getRowModel","sorting","find","s","desc","SORTING","setShouldPauseSortingAndFiltering","prevState","newState","cellControl","onBlur","onFocus","getCellAlignmentClasses","align","indicatorMountNode","parentElement","querySelector","controlComponent","invalid","setValue","Datepicker","newDate","detail","onChange","Switch","checked","Boolean","Input","indicatorReason","Indicator","reason","columnName","mountNode","ValidationError"],"mappings":"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"}
1
+ {"version":3,"file":"Cell.js","sources":["../../../../../../../../../src/components/Table2/components/column/Cell.tsx"],"sourcesContent":["import React, { RefObject } from 'react';\nimport cn from 'classnames';\nimport { flexRender, Cell as RTCell, Row as RTRow, Table as RTTable, TableMeta } from '@tanstack/react-table';\nimport { Input } from '../../../Input/Input';\nimport { ColumnBase, ColumnBaseProps } from './Base';\nimport { getCellAlignmentClasses, getCellSizingClasses, isKeyboardFocusableElement } from '../../utilities/cell';\nimport { isInternalColumn } from '../../utilities/columns';\nimport { Datepicker } from '../../../Datepicker/Datepicker';\nimport { Switch } from '../../../Switch/Switch';\nimport { SaveHandler, SaveHandlerErrorResponse, Table2Filter } from '../../types';\nimport { columnFilterFn, globalFilterFn } from '../../utilities/filterFn';\nimport { MOVE_DIR } from '../../hooks/useEditMode';\nimport { useRowContext } from '../row/Context';\nimport { Indicator, IndicatorReason } from './Indicator';\nimport { ValidationError } from './ValidationError';\nimport { hasChanged, willRowMoveAfterSorting } from './utils';\nimport { useMergedRef } from '../../../../hooks/useMergedRef';\n\ntype CellProps<TType = unknown> = Omit<ColumnBaseProps<TType>, 'column' | 'isEditing'> & {\n cell: RTCell<TType, unknown>;\n index: number;\n isLastRow: boolean;\n rowIndex: number;\n rows: RTRow<TType>[];\n scrollToIndex: (index: number, options?: any) => void;\n scrollToOffset: (index: number, options?: any) => void;\n tableRef: React.RefObject<HTMLDivElement>;\n};\n\nexport const Cell = function Cell<TType = unknown>(props: CellProps<TType>) {\n const { cell, index, isLastRow, rowIndex, rows, scrollToIndex, scrollToOffset, table, tableRef, ...columnProps } = props;\n const meta = table.options.meta as TableMeta<any>;\n\n const { addFocussableColumnIndex, focussableColumnIndexes: allFocussableColumnIndexes } = meta;\n\n const {\n editMode: { validationErrors, rowMoveReason },\n isHovered: isHoveredRow,\n } = useRowContext();\n const hasValidationErrorsInRow = !!validationErrors;\n\n const internalRef = React.useRef<HTMLDivElement>(null);\n const controlRef = React.useRef<HTMLElement>(null);\n const cellClassName = cell.column.columnDef.meta?.className;\n\n const isActiveRow = meta.activeRowIndex === rowIndex;\n const isFrozen = !!cell.column.getIsPinned();\n const isDragging = meta.dragging[cell.row.id];\n const isSelected = cell.row.getIsSelected();\n const isDataColumn = !isInternalColumn(cell.column.id);\n const hasCellControl = !!cell.column.columnDef.meta?.control;\n const allVisibleColumns = table.getVisibleLeafColumns();\n const lastColumnIndex = allVisibleColumns.length > 0 ? allVisibleColumns.length - 1 : 0;\n\n // editing\n const isEditingThisRow = meta.editMode.isEditing && isActiveRow;\n const canEditThisCell = isEditingThisRow && isDataColumn;\n const isEditingThisCell = canEditThisCell && meta.editMode.columnIndex === index;\n const isHoveringThisRowWhileEditing = meta.editMode.isEditing && isHoveredRow && !meta.shouldPauseHoverState;\n\n const isIndicatorVisible = Object.keys(rowMoveReason).length > 0;\n\n React.useEffect(() => {\n // Adds padding to the table so that indicator doesn't get cropped\n if (isIndicatorVisible && isLastRow) {\n tableRef.current?.classList.add('pb-4');\n }\n\n return () => tableRef.current?.classList.remove('pb-4');\n }, [isIndicatorVisible, isLastRow]);\n\n const className = cn(\n '[&>[data-taco=\"tag\"]]:-my-0.5',\n {\n 'border-b': !isLastRow,\n 'sticky z-[1]': isFrozen,\n // use isHoveredRow rather than css group-hover/row because we want to hide hover state when keyboard navigating\n 'bg-white': !isActiveRow && !isSelected,\n 'group-hover/row:bg-grey-100': !isActiveRow && !isSelected && !meta.shouldPauseHoverState,\n 'bg-grey-200 group-hover/row:bg-grey-200': isActiveRow && !isSelected,\n 'bg-blue-100': isSelected,\n '!wcag-blue-500': isDragging,\n '[&>*]:!grayscale [&_.bg-white]:!bg-grey-100': !isEditingThisRow && isHoveringThisRowWhileEditing,\n '!bg-red-100': hasValidationErrorsInRow,\n 'z-[1]': isFrozen && isActiveRow,\n // First column should have higher z-index so that row indicator always show on top of the cell\n // control components. A z-index of 3, will show the indicator when columns are pinned.\n 'z-[3]': isFrozen && isActiveRow && index === 0,\n 'border-blue !border-y-2 border-x-0': isIndicatorVisible,\n 'border-l-2 rounded-l': isIndicatorVisible && index === 0,\n 'border-r-2 rounded-r': isIndicatorVisible && index === lastColumnIndex,\n },\n getCellSizingClasses(\n table.options.meta?.rowDensity,\n (isEditingThisRow || isHoveringThisRowWhileEditing) && hasCellControl\n ),\n typeof cellClassName === 'function' ? cellClassName(cell.row, table) : cellClassName\n );\n\n const handleMouseDown = (event: React.MouseEvent<HTMLElement>) => {\n // only detect left clicks\n if (event.button === 0) {\n const activeElement = document.activeElement;\n const isActiveElementControl = activeElement?.closest('[role=\"cell\"]');\n const hasActiveRowChanged = meta.activeRowIndex !== rowIndex;\n\n // When user clicks on a cell that is not in the active row, for some reason blur event is not called on the cell\n // previous cell control element so we need to manually call it in order to save the changes in that cell\n if (isActiveElementControl && hasActiveRowChanged) {\n (activeElement as HTMLElement).blur();\n }\n\n meta.setActiveRowIndex(rowIndex);\n\n if (meta.editMode.isEditing) {\n if (allFocussableColumnIndexes.includes(index)) {\n meta.editMode.setColumn(index);\n } else {\n meta.editMode.setColumn(allFocussableColumnIndexes[0]);\n }\n }\n }\n };\n\n const attributes = {\n ...columnProps,\n // base props,\n column: cell.column,\n table,\n // dom attributes\n className,\n 'data-column-index': index,\n 'data-row-index': rowIndex,\n onMouseDown: handleMouseDown,\n ref: internalRef,\n role: 'cell',\n };\n\n const [detailModeEditing, setDetailModeEditing] = React.useState(false);\n\n // reset the editing state when we move column\n React.useEffect(() => {\n if (meta.editMode.columnIndex !== index) {\n setDetailModeEditing(false);\n }\n }, [meta.editMode.columnIndex]);\n\n React.useEffect(() => {\n if (isEditingThisRow && controlRef.current && isKeyboardFocusableElement(controlRef.current)) {\n addFocussableColumnIndex(index);\n }\n }, [isEditingThisRow, allFocussableColumnIndexes, addFocussableColumnIndex, index]);\n\n const moveRow = (moveDirection: MOVE_DIR) => {\n if (moveDirection === MOVE_DIR.PREV) {\n meta.moveToPreviousRow(rows, nextIndex => scrollToIndex(nextIndex - 1));\n } else if (moveDirection === MOVE_DIR.NEXT) {\n meta.moveToNextRow(rows, nextIndex => scrollToIndex(nextIndex + 2));\n }\n };\n\n if (meta.editMode.onSave && hasCellControl && (canEditThisCell || (isHoveringThisRowWhileEditing && isDataColumn))) {\n attributes.onMouseDown = event => {\n handleMouseDown(event);\n\n const target = event.target as HTMLElement;\n const isTargetInput = target !== null && target.nodeName === 'INPUT';\n\n // event.target?.select is only truthy for input elements\n // if event.target is active element, then that means we should select the text\n if (isTargetInput && target !== document.activeElement) {\n event.preventDefault();\n\n setTimeout(() => {\n (target as HTMLInputElement).select();\n }, 1);\n } else if (isTargetInput && target === document.activeElement) {\n // if user left clicks on the input then we are into edit mode\n // only detect left clicks\n if (event.button === 0) {\n setDetailModeEditing(true);\n }\n }\n };\n\n attributes.onBlur = () => {\n setDetailModeEditing(false);\n };\n\n if (canEditThisCell) {\n const firstDataColumnIndex = allFocussableColumnIndexes.at(0) ?? 0;\n const lastDataColumnIndex = allFocussableColumnIndexes.at(-1) ?? 0;\n\n attributes.onKeyDown = (event: React.KeyboardEvent<HTMLDivElement>) => {\n const control = event.target as HTMLElement;\n const isControlInput =\n control.nodeName === 'INPUT' && control?.getAttribute('data-inline-editing-component') === 'true';\n\n // For some reason, Taco Input keyboard event always return true when \"event.isDefaultPrevented()\" is\n // called. So we need to check if the control is input or not so that we don't return early.\n if (!isControlInput && (event.isDefaultPrevented() || event.isPropagationStopped())) {\n return;\n }\n\n if (control.tagName === 'INPUT') {\n if (event.key === 'Enter') {\n event.preventDefault();\n const input = control as HTMLInputElement;\n\n if (!detailModeEditing) {\n input.setSelectionRange?.(input.value?.length, input.value?.length);\n } else {\n input?.select?.();\n }\n\n setDetailModeEditing(!detailModeEditing);\n\n return;\n }\n\n // Datepicker doesn't have keydown event handler its value doesn't change when user types inside\n // datepicker input, so we need to explicitly enable detail editing mode on typing any alphanumeric\n // character\n if (control?.closest('[data-taco=\"datepicker\"]') && /^[a-z0-9]$/i.test(event.key)) {\n setDetailModeEditing(true);\n }\n }\n\n // Don't exit edit mode if the target of the escape isn't a child of the cell (e.g. if its a popover).\n if (event.key === 'Escape' && event.currentTarget.contains(control)) {\n event.preventDefault();\n\n if (detailModeEditing) {\n setDetailModeEditing(false);\n } else {\n meta.editMode.toggleEditing(false);\n tableRef.current?.focus();\n }\n\n return;\n }\n\n if ((!detailModeEditing && event.key === 'ArrowLeft') || (event.key === 'Tab' && event.shiftKey)) {\n event.preventDefault();\n\n const isFirstRow = rowIndex === 0;\n const isFirstColumn = index === firstDataColumnIndex;\n\n if (event.ctrlKey || event.metaKey) {\n // If the current active column is the first column then we don't do any thing so that focus\n // remains on the first column.\n if (!isFirstColumn) {\n control.blur();\n meta.editMode.moveToFirstColumn(allFocussableColumnIndexes);\n }\n } else {\n // If it is first row and first column, then don't move column.\n if (!isFirstRow || !isFirstColumn) {\n control.blur();\n meta.editMode.moveToPreviousColumn(allFocussableColumnIndexes, moveRow);\n }\n }\n\n return;\n }\n\n if ((!detailModeEditing && event.key === 'ArrowRight') || (event.key === 'Tab' && !event.shiftKey)) {\n event.preventDefault();\n\n const isLastColumn = index === lastDataColumnIndex;\n\n if (event.ctrlKey || event.metaKey) {\n // If the current active column is the last column then we don't do any thing so that focus\n // remains on the last column.\n if (!isLastColumn) {\n control.blur();\n meta.editMode.moveToLastColumn(allFocussableColumnIndexes);\n }\n } else {\n // If it is last row and last column, then don't move column.\n if (!isLastRow || !isLastColumn) {\n control.blur();\n meta.editMode.moveToNextColumn(allFocussableColumnIndexes, moveRow);\n }\n }\n\n return;\n }\n\n if (!detailModeEditing && event.key === 'ArrowUp') {\n event.preventDefault();\n\n // if it is the first row then return early, so that focus on the cell is not lost\n if (rowIndex === 0) {\n return;\n }\n\n control.blur();\n\n if (event.ctrlKey || event.metaKey) {\n meta.setActiveRowIndex(0);\n\n scrollToOffset(0);\n } else {\n moveRow(MOVE_DIR.PREV);\n }\n\n meta.setShouldPauseHoverState(true);\n return;\n }\n\n if (!detailModeEditing && event.key === 'ArrowDown') {\n event.preventDefault();\n\n // if it is the last row then return early, so that focus on the cell is not lost\n if (rowIndex === rows.length - 1) {\n return;\n }\n\n control.blur();\n\n if (event.ctrlKey || event.metaKey) {\n meta.setActiveRowIndex(rows.length - 1);\n scrollToIndex(rows.length + 20);\n } else {\n moveRow(MOVE_DIR.NEXT);\n }\n\n meta.setShouldPauseHoverState(true);\n return;\n }\n };\n }\n\n return (\n <ColumnBase {...attributes}>\n <EditingCell\n detailModeEditing={detailModeEditing}\n cell={cell}\n cellRef={internalRef}\n columnIndex={index}\n isEditingThisCell={isEditingThisCell}\n onSave={meta.editMode.onSave}\n rowIndex={rowIndex}\n table={table}\n tableRef={tableRef}\n ref={controlRef}\n rowValues={rows[rowIndex].original}\n rowsLength={rows.length}\n enableDetailModeEditing={() => {\n if (!detailModeEditing) {\n setDetailModeEditing(true);\n }\n }}\n />\n </ColumnBase>\n );\n } else {\n if (meta.onRowClick) {\n attributes.onClick = event => {\n if (event.target !== internalRef.current) {\n return;\n }\n\n meta.onRowClick?.(cell.row.original);\n };\n }\n }\n\n return <ColumnBase {...attributes}>{flexRender(cell.column.columnDef.cell, cell.getContext())}</ColumnBase>;\n};\n\ntype EditingCellProps = {\n cell: RTCell<any, unknown>;\n cellRef: React.RefObject<HTMLDivElement>;\n columnIndex: number;\n isEditingThisCell: boolean;\n onSave: SaveHandler<any>;\n rowIndex: number;\n table: RTTable<any>;\n tableRef: React.RefObject<HTMLDivElement>;\n rowValues: Record<string, any>;\n rowsLength: number;\n detailModeEditing: boolean;\n enableDetailModeEditing: () => void;\n};\n\nconst EditingCell = React.memo(\n React.forwardRef<HTMLElement, EditingCellProps>((props, ref) => {\n const {\n cell,\n cellRef,\n columnIndex,\n detailModeEditing,\n isEditingThisCell = false,\n onSave: handleSave,\n rowIndex,\n rowValues,\n table,\n tableRef,\n enableDetailModeEditing,\n } = props;\n const {\n editMode: { validationErrors, setValidationErrors, rowMoveReason, setRowMoveReason },\n isHovered,\n } = useRowContext();\n\n const controlRef = useMergedRef(ref);\n const cellId = cell.column.id;\n const cellValidationError = validationErrors?.[cellId];\n\n const value = cell.getValue();\n const ariaLabel = cell.column.columnDef.header as string | undefined;\n const meta = table.options.meta as TableMeta<any>;\n const { globalFilter } = table.getState();\n\n const [state, setState] = React.useState(value);\n\n const isHoveringAnotherRowWhileEditing = meta.editMode.isEditing && meta.activeRowIndex !== rowIndex && isHovered;\n const hasValidationError = !isHoveringAnotherRowWhileEditing && !!cellValidationError;\n // On each save, the initialValue will be set to the new value of the cell\n const initialValue = React.useRef<any>(value);\n const stateReset = React.useRef(false);\n\n // It is important that we let consumers pass a newValue as an argument because when setState is called before\n // onBlur then saveIfChanged method gets the stale state value. This happens because the rerender hasn't happened\n // before the saveIfChanged method is called.\n const saveIfChanged = async (eventOrNewValue?: any) => {\n let newValue = state;\n\n // if eventOrNewValue is not an event object\n if (!eventOrNewValue.target) {\n newValue = eventOrNewValue;\n }\n\n if (hasChanged(value, newValue)) {\n try {\n const updatedRow = { ...cell.row.original, [cellId]: newValue };\n\n await handleSave(updatedRow, cellId);\n\n // If sorting is paused then update the last sorted or filtered rows to store the newly updated row\n if (meta.shouldPauseSortingAndFiltering) {\n meta.lastSortedOrFilteredRows.current = meta.lastSortedOrFilteredRows.current.map(row => {\n if (row.id === cell.row.id) {\n row.original = updatedRow;\n }\n\n return row;\n });\n }\n\n // Reset error if save was successful\n setValidationErrors(null);\n } catch (error) {\n setValidationErrors({ ...validationErrors, ...(error as SaveHandlerErrorResponse) });\n }\n }\n };\n\n // Ensures we \"auto focus\" the field if the cell is being edited.\n React.useEffect(() => {\n const isFocusInsideTable = meta.tableRef.current?.contains(document.activeElement);\n // When control is blurred then body gets the focus that's why we have to make sure if activeElement\n // is body then we focus the cell if it is being edited.\n const isBodyFocussed = document.body === document.activeElement;\n\n // Don't focus cell if any table popup(filter popup, column settings popup) is open.\n if (isEditingThisCell && (isFocusInsideTable || isBodyFocussed)) {\n (controlRef.current as HTMLElement)?.focus?.();\n }\n }, [isEditingThisCell, controlRef.current]);\n\n const pinnedColumnsWidth = React.useMemo(() => {\n const pinnedColumns = table.getState().columnPinning.left;\n\n if (Array.isArray(pinnedColumns) && pinnedColumns.length > 0) {\n const lastFrozenColumn = pinnedColumns[pinnedColumns.length - 1];\n const lastFrozenColumnOffset = meta.columnOffsets[lastFrozenColumn];\n\n if (lastFrozenColumnOffset !== undefined) {\n return lastFrozenColumnOffset + (table.getState().columnSizing[lastFrozenColumn] ?? 0);\n }\n }\n\n return 0;\n }, [meta.columnOffsets, table.getState().columnSizing]);\n\n React.useEffect(() => {\n if (hasChanged(initialValue.current, state)) {\n // For an input we want to make sure that if the value is changed then we go into detail mode, so that\n // arrow keys doesn't trigger the quick mode shortcuts.\n if (controlRef.current?.nodeName === 'INPUT') {\n enableDetailModeEditing();\n }\n\n showIndicator();\n } else {\n hideIndicator();\n }\n\n return hideIndicator;\n }, [state]);\n\n // This effect makes sure we select the input control value when escape key is pressed\n React.useEffect(() => {\n const isControlInput =\n controlRef.current?.nodeName === 'INPUT' &&\n controlRef.current?.getAttribute('data-inline-editing-component') === 'true';\n\n if (stateReset.current && isControlInput) {\n (controlRef.current as HTMLInputElement)?.select();\n }\n\n stateReset.current = false;\n }, [stateReset.current]);\n\n const handleFocus = event => {\n meta.editMode.setColumn(columnIndex);\n\n if (event.target?.select) {\n event.target?.select();\n }\n\n // ensure the field is always visible (e.g. not hidden behind the pinned columns)\n const rect = cellRef.current?.getBoundingClientRect();\n const leftOffset = meta.columnOffsets[cellId];\n\n if (rect && leftOffset && rect.left < pinnedColumnsWidth) {\n tableRef.current?.scrollTo(leftOffset - pinnedColumnsWidth, tableRef.current.scrollTop);\n }\n };\n\n // In order to reset the value of an input when escape key is pressed this keydown handler is required.\n // Instead of adding this event handler in parent component, this handler is added here because we have access\n // to the state handler of the control component.\n const handleKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {\n const control = event.target as HTMLInputElement;\n const isControlInput =\n control.nodeName === 'INPUT' && control?.getAttribute('data-inline-editing-component') === 'true';\n\n if (isControlInput && event.key === 'Escape') {\n setState(initialValue.current);\n stateReset.current = true;\n }\n };\n\n const showIndicator = () => {\n let willRowMoveReason: IndicatorReason | null = null;\n\n const isFilteredByGlobalFilter = Object.values<unknown>({ ...rowValues, [cellId]: state }).some(cellValue =>\n // Global filter can be undefined when there is no text being searched so we pass an empty string to\n // globalFilterFn as query in that case.\n globalFilterFn(String(cellValue), globalFilter ? String(globalFilter) : '')\n );\n\n if (!isFilteredByGlobalFilter) {\n willRowMoveReason = IndicatorReason.SEARCH;\n } else if (cell.column.getIsFiltered() && !columnFilterFn(state, cell.column.getFilterValue() as Table2Filter)) {\n willRowMoveReason = IndicatorReason.FILTER;\n } else if (\n !willRowMoveReason &&\n cell.column.getIsSorted() &&\n willRowMoveAfterSorting(\n state,\n cell,\n rowIndex,\n table.getRowModel().rows,\n !!table.getState().sorting.find(s => s.id === cell.column.id)?.desc\n )\n ) {\n willRowMoveReason = IndicatorReason.SORTING;\n }\n\n if (willRowMoveReason !== null) {\n meta.setShouldPauseSortingAndFiltering(true);\n setRowMoveReason({ [cellId]: willRowMoveReason });\n }\n };\n\n const hideIndicator = () => {\n setRowMoveReason(prevState => {\n const newState = { ...prevState };\n delete newState[cellId];\n\n return newState;\n });\n };\n\n const cellControl = cell.column.columnDef.meta?.control;\n\n const attributes = {\n 'aria-label': ariaLabel,\n onBlur: saveIfChanged,\n onFocus: handleFocus,\n ref,\n // This is a temporary fix to enable up/down arrow key shortcuts on input in quick mode. For some reason,\n // the preventDefault is true on Taco Input, so the keyboard shortcuts doesn't work. By adding this\n // data attribute we make sure the event is coming from a control component, and then we can make sure\n // keyboard shortcut works as expected.\n 'data-inline-editing-component': 'true',\n };\n\n const className = cn(getCellAlignmentClasses(cell.column.columnDef.meta?.align));\n const indicatorMountNode = cellRef.current?.parentElement?.querySelector(':first-child') as Element | null;\n\n let controlComponent;\n const detailModeClassName = cn({ '!shadow-[0_0_0_4px_rgba(0,99,255,0.25)]': detailModeEditing });\n\n if (cellControl) {\n if (typeof cellControl === 'function') {\n controlComponent = cellControl(\n {\n invalid: hasValidationError,\n onBlur: saveIfChanged,\n onFocus: handleFocus,\n ref: controlRef,\n setValue: setState,\n value: state,\n 'data-inline-editing-component': 'true',\n },\n cell.row.original\n );\n } else {\n switch (cellControl) {\n case 'datepicker':\n controlComponent = (\n <Datepicker\n {...attributes}\n className={cn({ '[&_input]:!shadow-[0_0_0_4px_rgba(0,99,255,0.25)]': detailModeEditing })}\n invalid={hasValidationError}\n onBlur={event => {\n const newDate = (event as any).detail;\n saveIfChanged(newDate);\n }}\n onChange={event => {\n setState((event as any).detail);\n }}\n ref={controlRef as RefObject<HTMLInputElement>}\n value={state as Date}\n />\n );\n break;\n\n case 'switch':\n controlComponent = (\n <Switch\n {...attributes}\n className={cn('mx-2 mt-1.5', detailModeClassName)}\n checked={Boolean(state)}\n onChange={setState}\n ref={controlRef as RefObject<HTMLButtonElement>}\n />\n );\n break;\n default:\n controlComponent = (\n <Input\n {...attributes}\n className={cn(className, detailModeClassName)}\n invalid={hasValidationError}\n onChange={event => {\n setState(event.target.value);\n }}\n ref={controlRef as RefObject<HTMLInputElement>}\n value={String(state ?? '')}\n onKeyDown={handleKeyDown}\n />\n );\n break;\n }\n }\n }\n\n const indicatorReason = rowMoveReason[cellId] ?? null;\n\n return (\n <>\n {indicatorReason !== null && (\n <Indicator\n reason={indicatorReason}\n columnName={String(cell.column.columnDef.header)}\n mountNode={indicatorMountNode}\n validationErrors={validationErrors}\n />\n )}\n <span className=\"relative flex-grow\">\n {controlComponent}\n {hasValidationError && <ValidationError>{String(cellValidationError)}</ValidationError>}\n </span>\n </>\n );\n })\n);\n"],"names":["Cell","props","cell","index","isLastRow","rowIndex","rows","scrollToIndex","scrollToOffset","table","tableRef","columnProps","meta","options","addFocussableColumnIndex","focussableColumnIndexes","allFocussableColumnIndexes","editMode","validationErrors","rowMoveReason","isHovered","isHoveredRow","useRowContext","hasValidationErrorsInRow","internalRef","React","useRef","controlRef","cellClassName","column","columnDef","className","isActiveRow","activeRowIndex","isFrozen","getIsPinned","isDragging","dragging","row","id","isSelected","getIsSelected","isDataColumn","isInternalColumn","hasCellControl","control","allVisibleColumns","getVisibleLeafColumns","lastColumnIndex","length","isEditingThisRow","isEditing","canEditThisCell","isEditingThisCell","columnIndex","isHoveringThisRowWhileEditing","shouldPauseHoverState","isIndicatorVisible","Object","keys","useEffect","current","classList","add","remove","cn","getCellSizingClasses","rowDensity","handleMouseDown","event","button","activeElement","document","isActiveElementControl","closest","hasActiveRowChanged","blur","setActiveRowIndex","includes","setColumn","attributes","onMouseDown","ref","role","detailModeEditing","setDetailModeEditing","useState","isKeyboardFocusableElement","moveRow","moveDirection","MOVE_DIR","PREV","moveToPreviousRow","nextIndex","NEXT","moveToNextRow","onSave","target","isTargetInput","nodeName","preventDefault","setTimeout","select","onBlur","firstDataColumnIndex","at","lastDataColumnIndex","onKeyDown","isControlInput","getAttribute","isDefaultPrevented","isPropagationStopped","tagName","key","input","setSelectionRange","value","test","currentTarget","contains","toggleEditing","focus","shiftKey","isFirstRow","isFirstColumn","ctrlKey","metaKey","moveToFirstColumn","moveToPreviousColumn","isLastColumn","moveToLastColumn","moveToNextColumn","setShouldPauseHoverState","ColumnBase","EditingCell","cellRef","rowValues","original","rowsLength","enableDetailModeEditing","onRowClick","onClick","flexRender","getContext","memo","forwardRef","handleSave","setValidationErrors","setRowMoveReason","useMergedRef","cellId","cellValidationError","getValue","ariaLabel","header","globalFilter","getState","state","setState","isHoveringAnotherRowWhileEditing","hasValidationError","initialValue","stateReset","saveIfChanged","eventOrNewValue","newValue","hasChanged","updatedRow","shouldPauseSortingAndFiltering","lastSortedOrFilteredRows","map","error","isFocusInsideTable","isBodyFocussed","body","pinnedColumnsWidth","useMemo","pinnedColumns","columnPinning","left","Array","isArray","lastFrozenColumn","lastFrozenColumnOffset","columnOffsets","undefined","columnSizing","showIndicator","hideIndicator","handleFocus","rect","getBoundingClientRect","leftOffset","scrollTo","scrollTop","handleKeyDown","willRowMoveReason","isFilteredByGlobalFilter","values","some","cellValue","globalFilterFn","String","IndicatorReason","SEARCH","getIsFiltered","columnFilterFn","getFilterValue","FILTER","getIsSorted","willRowMoveAfterSorting","getRowModel","sorting","find","s","desc","SORTING","setShouldPauseSortingAndFiltering","prevState","newState","cellControl","onFocus","getCellAlignmentClasses","align","indicatorMountNode","parentElement","querySelector","controlComponent","detailModeClassName","invalid","setValue","Datepicker","newDate","detail","onChange","Switch","checked","Boolean","Input","indicatorReason","Indicator","reason","columnName","mountNode","ValidationError"],"mappings":";;;;;;;;;;;;;;;;;;MA6BaA,IAAI,GAAG,SAASA,IAAI,CAAkBC,KAAuB;;EACtE,MAAM;IAAEC,IAAI;IAAEC,KAAK;IAAEC,SAAS;IAAEC,QAAQ;IAAEC,IAAI;IAAEC,aAAa;IAAEC,cAAc;IAAEC,KAAK;IAAEC,QAAQ;IAAE,GAAGC;GAAa,GAAGV,KAAK;EACxH,MAAMW,IAAI,GAAGH,KAAK,CAACI,OAAO,CAACD,IAAsB;EAEjD,MAAM;IAAEE,wBAAwB;IAAEC,uBAAuB,EAAEC;GAA4B,GAAGJ,IAAI;EAE9F,MAAM;IACFK,QAAQ,EAAE;MAAEC,gBAAgB;MAAEC;KAAe;IAC7CC,SAAS,EAAEC;GACd,GAAGC,aAAa,EAAE;EACnB,MAAMC,wBAAwB,GAAG,CAAC,CAACL,gBAAgB;EAEnD,MAAMM,WAAW,GAAGC,cAAK,CAACC,MAAM,CAAiB,IAAI,CAAC;EACtD,MAAMC,UAAU,GAAGF,cAAK,CAACC,MAAM,CAAc,IAAI,CAAC;EAClD,MAAME,aAAa,4BAAG1B,IAAI,CAAC2B,MAAM,CAACC,SAAS,CAAClB,IAAI,0DAA1B,sBAA4BmB,SAAS;EAE3D,MAAMC,WAAW,GAAGpB,IAAI,CAACqB,cAAc,KAAK5B,QAAQ;EACpD,MAAM6B,QAAQ,GAAG,CAAC,CAAChC,IAAI,CAAC2B,MAAM,CAACM,WAAW,EAAE;EAC5C,MAAMC,UAAU,GAAGxB,IAAI,CAACyB,QAAQ,CAACnC,IAAI,CAACoC,GAAG,CAACC,EAAE,CAAC;EAC7C,MAAMC,UAAU,GAAGtC,IAAI,CAACoC,GAAG,CAACG,aAAa,EAAE;EAC3C,MAAMC,YAAY,GAAG,CAACC,gBAAgB,CAACzC,IAAI,CAAC2B,MAAM,CAACU,EAAE,CAAC;EACtD,MAAMK,cAAc,GAAG,CAAC,4BAAC1C,IAAI,CAAC2B,MAAM,CAACC,SAAS,CAAClB,IAAI,mDAA1B,uBAA4BiC,OAAO;EAC5D,MAAMC,iBAAiB,GAAGrC,KAAK,CAACsC,qBAAqB,EAAE;EACvD,MAAMC,eAAe,GAAGF,iBAAiB,CAACG,MAAM,GAAG,CAAC,GAAGH,iBAAiB,CAACG,MAAM,GAAG,CAAC,GAAG,CAAC;;EAGvF,MAAMC,gBAAgB,GAAGtC,IAAI,CAACK,QAAQ,CAACkC,SAAS,IAAInB,WAAW;EAC/D,MAAMoB,eAAe,GAAGF,gBAAgB,IAAIR,YAAY;EACxD,MAAMW,iBAAiB,GAAGD,eAAe,IAAIxC,IAAI,CAACK,QAAQ,CAACqC,WAAW,KAAKnD,KAAK;EAChF,MAAMoD,6BAA6B,GAAG3C,IAAI,CAACK,QAAQ,CAACkC,SAAS,IAAI9B,YAAY,IAAI,CAACT,IAAI,CAAC4C,qBAAqB;EAE5G,MAAMC,kBAAkB,GAAGC,MAAM,CAACC,IAAI,CAACxC,aAAa,CAAC,CAAC8B,MAAM,GAAG,CAAC;EAEhExB,cAAK,CAACmC,SAAS,CAAC;;IAEZ,IAAIH,kBAAkB,IAAIrD,SAAS,EAAE;MAAA;MACjC,qBAAAM,QAAQ,CAACmD,OAAO,sDAAhB,kBAAkBC,SAAS,CAACC,GAAG,CAAC,MAAM,CAAC;;IAG3C,OAAO;MAAA;MAAA,6BAAMrD,QAAQ,CAACmD,OAAO,uDAAhB,mBAAkBC,SAAS,CAACE,MAAM,CAAC,MAAM,CAAC;;GAC1D,EAAE,CAACP,kBAAkB,EAAErD,SAAS,CAAC,CAAC;EAEnC,MAAM2B,SAAS,GAAGkC,EAAE,CAChB,+BAA+B,EAC/B;IACI,UAAU,EAAE,CAAC7D,SAAS;IACtB,cAAc,EAAE8B,QAAQ;;IAExB,UAAU,EAAE,CAACF,WAAW,IAAI,CAACQ,UAAU;IACvC,6BAA6B,EAAE,CAACR,WAAW,IAAI,CAACQ,UAAU,IAAI,CAAC5B,IAAI,CAAC4C,qBAAqB;IACzF,yCAAyC,EAAExB,WAAW,IAAI,CAACQ,UAAU;IACrE,aAAa,EAAEA,UAAU;IACzB,gBAAgB,EAAEJ,UAAU;IAC5B,6CAA6C,EAAE,CAACc,gBAAgB,IAAIK,6BAA6B;IACjG,aAAa,EAAEhC,wBAAwB;IACvC,OAAO,EAAEW,QAAQ,IAAIF,WAAW;;;IAGhC,OAAO,EAAEE,QAAQ,IAAIF,WAAW,IAAI7B,KAAK,KAAK,CAAC;IAC/C,oCAAoC,EAAEsD,kBAAkB;IACxD,sBAAsB,EAAEA,kBAAkB,IAAItD,KAAK,KAAK,CAAC;IACzD,sBAAsB,EAAEsD,kBAAkB,IAAItD,KAAK,KAAK6C;GAC3D,EACDkB,oBAAoB,wBAChBzD,KAAK,CAACI,OAAO,CAACD,IAAI,wDAAlB,oBAAoBuD,UAAU,EAC9B,CAACjB,gBAAgB,IAAIK,6BAA6B,KAAKX,cAAc,CACxE,EACD,OAAOhB,aAAa,KAAK,UAAU,GAAGA,aAAa,CAAC1B,IAAI,CAACoC,GAAG,EAAE7B,KAAK,CAAC,GAAGmB,aAAa,CACvF;EAED,MAAMwC,eAAe,GAAIC,KAAoC;;IAEzD,IAAIA,KAAK,CAACC,MAAM,KAAK,CAAC,EAAE;MACpB,MAAMC,aAAa,GAAGC,QAAQ,CAACD,aAAa;MAC5C,MAAME,sBAAsB,GAAGF,aAAa,aAAbA,aAAa,uBAAbA,aAAa,CAAEG,OAAO,CAAC,eAAe,CAAC;MACtE,MAAMC,mBAAmB,GAAG/D,IAAI,CAACqB,cAAc,KAAK5B,QAAQ;;;MAI5D,IAAIoE,sBAAsB,IAAIE,mBAAmB,EAAE;QAC9CJ,aAA6B,CAACK,IAAI,EAAE;;MAGzChE,IAAI,CAACiE,iBAAiB,CAACxE,QAAQ,CAAC;MAEhC,IAAIO,IAAI,CAACK,QAAQ,CAACkC,SAAS,EAAE;QACzB,IAAInC,0BAA0B,CAAC8D,QAAQ,CAAC3E,KAAK,CAAC,EAAE;UAC5CS,IAAI,CAACK,QAAQ,CAAC8D,SAAS,CAAC5E,KAAK,CAAC;SACjC,MAAM;UACHS,IAAI,CAACK,QAAQ,CAAC8D,SAAS,CAAC/D,0BAA0B,CAAC,CAAC,CAAC,CAAC;;;;GAIrE;EAED,MAAMgE,UAAU,GAAG;IACf,GAAGrE,WAAW;;IAEdkB,MAAM,EAAE3B,IAAI,CAAC2B,MAAM;IACnBpB,KAAK;;IAELsB,SAAS;IACT,mBAAmB,EAAE5B,KAAK;IAC1B,gBAAgB,EAAEE,QAAQ;IAC1B4E,WAAW,EAAEb,eAAe;IAC5Bc,GAAG,EAAE1D,WAAW;IAChB2D,IAAI,EAAE;GACT;EAED,MAAM,CAACC,iBAAiB,EAAEC,oBAAoB,CAAC,GAAG5D,cAAK,CAAC6D,QAAQ,CAAC,KAAK,CAAC;;EAGvE7D,cAAK,CAACmC,SAAS,CAAC;IACZ,IAAIhD,IAAI,CAACK,QAAQ,CAACqC,WAAW,KAAKnD,KAAK,EAAE;MACrCkF,oBAAoB,CAAC,KAAK,CAAC;;GAElC,EAAE,CAACzE,IAAI,CAACK,QAAQ,CAACqC,WAAW,CAAC,CAAC;EAE/B7B,cAAK,CAACmC,SAAS,CAAC;IACZ,IAAIV,gBAAgB,IAAIvB,UAAU,CAACkC,OAAO,IAAI0B,0BAA0B,CAAC5D,UAAU,CAACkC,OAAO,CAAC,EAAE;MAC1F/C,wBAAwB,CAACX,KAAK,CAAC;;GAEtC,EAAE,CAAC+C,gBAAgB,EAAElC,0BAA0B,EAAEF,wBAAwB,EAAEX,KAAK,CAAC,CAAC;EAEnF,MAAMqF,OAAO,GAAIC,aAAuB;IACpC,IAAIA,aAAa,KAAKC,QAAQ,CAACC,IAAI,EAAE;MACjC/E,IAAI,CAACgF,iBAAiB,CAACtF,IAAI,EAAEuF,SAAS,IAAItF,aAAa,CAACsF,SAAS,GAAG,CAAC,CAAC,CAAC;KAC1E,MAAM,IAAIJ,aAAa,KAAKC,QAAQ,CAACI,IAAI,EAAE;MACxClF,IAAI,CAACmF,aAAa,CAACzF,IAAI,EAAEuF,SAAS,IAAItF,aAAa,CAACsF,SAAS,GAAG,CAAC,CAAC,CAAC;;GAE1E;EAED,IAAIjF,IAAI,CAACK,QAAQ,CAAC+E,MAAM,IAAIpD,cAAc,KAAKQ,eAAe,IAAKG,6BAA6B,IAAIb,YAAa,CAAC,EAAE;IAChHsC,UAAU,CAACC,WAAW,GAAGZ,KAAK;MAC1BD,eAAe,CAACC,KAAK,CAAC;MAEtB,MAAM4B,MAAM,GAAG5B,KAAK,CAAC4B,MAAqB;MAC1C,MAAMC,aAAa,GAAGD,MAAM,KAAK,IAAI,IAAIA,MAAM,CAACE,QAAQ,KAAK,OAAO;;;MAIpE,IAAID,aAAa,IAAID,MAAM,KAAKzB,QAAQ,CAACD,aAAa,EAAE;QACpDF,KAAK,CAAC+B,cAAc,EAAE;QAEtBC,UAAU,CAAC;UACNJ,MAA2B,CAACK,MAAM,EAAE;SACxC,EAAE,CAAC,CAAC;OACR,MAAM,IAAIJ,aAAa,IAAID,MAAM,KAAKzB,QAAQ,CAACD,aAAa,EAAE;;;QAG3D,IAAIF,KAAK,CAACC,MAAM,KAAK,CAAC,EAAE;UACpBe,oBAAoB,CAAC,IAAI,CAAC;;;KAGrC;IAEDL,UAAU,CAACuB,MAAM,GAAG;MAChBlB,oBAAoB,CAAC,KAAK,CAAC;KAC9B;IAED,IAAIjC,eAAe,EAAE;MAAA;MACjB,MAAMoD,oBAAoB,4BAAGxF,0BAA0B,CAACyF,EAAE,CAAC,CAAC,CAAC,yEAAI,CAAC;MAClE,MAAMC,mBAAmB,6BAAG1F,0BAA0B,CAACyF,EAAE,CAAC,CAAC,CAAC,CAAC,2EAAI,CAAC;MAElEzB,UAAU,CAAC2B,SAAS,GAAItC,KAA0C;QAC9D,MAAMxB,OAAO,GAAGwB,KAAK,CAAC4B,MAAqB;QAC3C,MAAMW,cAAc,GAChB/D,OAAO,CAACsD,QAAQ,KAAK,OAAO,IAAI,CAAAtD,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEgE,YAAY,CAAC,+BAA+B,CAAC,MAAK,MAAM;;;QAIrG,IAAI,CAACD,cAAc,KAAKvC,KAAK,CAACyC,kBAAkB,EAAE,IAAIzC,KAAK,CAAC0C,oBAAoB,EAAE,CAAC,EAAE;UACjF;;QAGJ,IAAIlE,OAAO,CAACmE,OAAO,KAAK,OAAO,EAAE;UAC7B,IAAI3C,KAAK,CAAC4C,GAAG,KAAK,OAAO,EAAE;YACvB5C,KAAK,CAAC+B,cAAc,EAAE;YACtB,MAAMc,KAAK,GAAGrE,OAA2B;YAEzC,IAAI,CAACuC,iBAAiB,EAAE;cAAA;cACpB,yBAAA8B,KAAK,CAACC,iBAAiB,0DAAvB,2BAAAD,KAAK,kBAAqBA,KAAK,CAACE,KAAK,iDAAX,aAAanE,MAAM,mBAAEiE,KAAK,CAACE,KAAK,kDAAX,cAAanE,MAAM,CAAC;aACtE,MAAM;cAAA;cACHiE,KAAK,aAALA,KAAK,wCAALA,KAAK,CAAEZ,MAAM,kDAAb,mBAAAY,KAAK,CAAY;;YAGrB7B,oBAAoB,CAAC,CAACD,iBAAiB,CAAC;YAExC;;;;;UAMJ,IAAIvC,OAAO,aAAPA,OAAO,eAAPA,OAAO,CAAE6B,OAAO,CAAC,0BAA0B,CAAC,IAAI,aAAa,CAAC2C,IAAI,CAAChD,KAAK,CAAC4C,GAAG,CAAC,EAAE;YAC/E5B,oBAAoB,CAAC,IAAI,CAAC;;;;QAKlC,IAAIhB,KAAK,CAAC4C,GAAG,KAAK,QAAQ,IAAI5C,KAAK,CAACiD,aAAa,CAACC,QAAQ,CAAC1E,OAAO,CAAC,EAAE;UACjEwB,KAAK,CAAC+B,cAAc,EAAE;UAEtB,IAAIhB,iBAAiB,EAAE;YACnBC,oBAAoB,CAAC,KAAK,CAAC;WAC9B,MAAM;YAAA;YACHzE,IAAI,CAACK,QAAQ,CAACuG,aAAa,CAAC,KAAK,CAAC;YAClC,sBAAA9G,QAAQ,CAACmD,OAAO,uDAAhB,mBAAkB4D,KAAK,EAAE;;UAG7B;;QAGJ,IAAK,CAACrC,iBAAiB,IAAIf,KAAK,CAAC4C,GAAG,KAAK,WAAW,IAAM5C,KAAK,CAAC4C,GAAG,KAAK,KAAK,IAAI5C,KAAK,CAACqD,QAAS,EAAE;UAC9FrD,KAAK,CAAC+B,cAAc,EAAE;UAEtB,MAAMuB,UAAU,GAAGtH,QAAQ,KAAK,CAAC;UACjC,MAAMuH,aAAa,GAAGzH,KAAK,KAAKqG,oBAAoB;UAEpD,IAAInC,KAAK,CAACwD,OAAO,IAAIxD,KAAK,CAACyD,OAAO,EAAE;;;YAGhC,IAAI,CAACF,aAAa,EAAE;cAChB/E,OAAO,CAAC+B,IAAI,EAAE;cACdhE,IAAI,CAACK,QAAQ,CAAC8G,iBAAiB,CAAC/G,0BAA0B,CAAC;;WAElE,MAAM;;YAEH,IAAI,CAAC2G,UAAU,IAAI,CAACC,aAAa,EAAE;cAC/B/E,OAAO,CAAC+B,IAAI,EAAE;cACdhE,IAAI,CAACK,QAAQ,CAAC+G,oBAAoB,CAAChH,0BAA0B,EAAEwE,OAAO,CAAC;;;UAI/E;;QAGJ,IAAK,CAACJ,iBAAiB,IAAIf,KAAK,CAAC4C,GAAG,KAAK,YAAY,IAAM5C,KAAK,CAAC4C,GAAG,KAAK,KAAK,IAAI,CAAC5C,KAAK,CAACqD,QAAS,EAAE;UAChGrD,KAAK,CAAC+B,cAAc,EAAE;UAEtB,MAAM6B,YAAY,GAAG9H,KAAK,KAAKuG,mBAAmB;UAElD,IAAIrC,KAAK,CAACwD,OAAO,IAAIxD,KAAK,CAACyD,OAAO,EAAE;;;YAGhC,IAAI,CAACG,YAAY,EAAE;cACfpF,OAAO,CAAC+B,IAAI,EAAE;cACdhE,IAAI,CAACK,QAAQ,CAACiH,gBAAgB,CAAClH,0BAA0B,CAAC;;WAEjE,MAAM;;YAEH,IAAI,CAACZ,SAAS,IAAI,CAAC6H,YAAY,EAAE;cAC7BpF,OAAO,CAAC+B,IAAI,EAAE;cACdhE,IAAI,CAACK,QAAQ,CAACkH,gBAAgB,CAACnH,0BAA0B,EAAEwE,OAAO,CAAC;;;UAI3E;;QAGJ,IAAI,CAACJ,iBAAiB,IAAIf,KAAK,CAAC4C,GAAG,KAAK,SAAS,EAAE;UAC/C5C,KAAK,CAAC+B,cAAc,EAAE;;UAGtB,IAAI/F,QAAQ,KAAK,CAAC,EAAE;YAChB;;UAGJwC,OAAO,CAAC+B,IAAI,EAAE;UAEd,IAAIP,KAAK,CAACwD,OAAO,IAAIxD,KAAK,CAACyD,OAAO,EAAE;YAChClH,IAAI,CAACiE,iBAAiB,CAAC,CAAC,CAAC;YAEzBrE,cAAc,CAAC,CAAC,CAAC;WACpB,MAAM;YACHgF,OAAO,CAACE,QAAQ,CAACC,IAAI,CAAC;;UAG1B/E,IAAI,CAACwH,wBAAwB,CAAC,IAAI,CAAC;UACnC;;QAGJ,IAAI,CAAChD,iBAAiB,IAAIf,KAAK,CAAC4C,GAAG,KAAK,WAAW,EAAE;UACjD5C,KAAK,CAAC+B,cAAc,EAAE;;UAGtB,IAAI/F,QAAQ,KAAKC,IAAI,CAAC2C,MAAM,GAAG,CAAC,EAAE;YAC9B;;UAGJJ,OAAO,CAAC+B,IAAI,EAAE;UAEd,IAAIP,KAAK,CAACwD,OAAO,IAAIxD,KAAK,CAACyD,OAAO,EAAE;YAChClH,IAAI,CAACiE,iBAAiB,CAACvE,IAAI,CAAC2C,MAAM,GAAG,CAAC,CAAC;YACvC1C,aAAa,CAACD,IAAI,CAAC2C,MAAM,GAAG,EAAE,CAAC;WAClC,MAAM;YACHuC,OAAO,CAACE,QAAQ,CAACI,IAAI,CAAC;;UAG1BlF,IAAI,CAACwH,wBAAwB,CAAC,IAAI,CAAC;UACnC;;OAEP;;IAGL,oBACI3G,6BAAC4G,UAAU,oBAAKrD,UAAU,gBACtBvD,6BAAC6G,WAAW;MACRlD,iBAAiB,EAAEA,iBAAiB;MACpClF,IAAI,EAAEA,IAAI;MACVqI,OAAO,EAAE/G,WAAW;MACpB8B,WAAW,EAAEnD,KAAK;MAClBkD,iBAAiB,EAAEA,iBAAiB;MACpC2C,MAAM,EAAEpF,IAAI,CAACK,QAAQ,CAAC+E,MAAM;MAC5B3F,QAAQ,EAAEA,QAAQ;MAClBI,KAAK,EAAEA,KAAK;MACZC,QAAQ,EAAEA,QAAQ;MAClBwE,GAAG,EAAEvD,UAAU;MACf6G,SAAS,EAAElI,IAAI,CAACD,QAAQ,CAAC,CAACoI,QAAQ;MAClCC,UAAU,EAAEpI,IAAI,CAAC2C,MAAM;MACvB0F,uBAAuB,EAAE;QACrB,IAAI,CAACvD,iBAAiB,EAAE;UACpBC,oBAAoB,CAAC,IAAI,CAAC;;;MAGpC,CACO;GAEpB,MAAM;IACH,IAAIzE,IAAI,CAACgI,UAAU,EAAE;MACjB5D,UAAU,CAAC6D,OAAO,GAAGxE,KAAK;;QACtB,IAAIA,KAAK,CAAC4B,MAAM,KAAKzE,WAAW,CAACqC,OAAO,EAAE;UACtC;;QAGJ,oBAAAjD,IAAI,CAACgI,UAAU,qDAAf,sBAAAhI,IAAI,EAAcV,IAAI,CAACoC,GAAG,CAACmG,QAAQ,CAAC;OACvC;;;EAIT,oBAAOhH,6BAAC4G,UAAU,oBAAKrD,UAAU,GAAG8D,UAAU,CAAC5I,IAAI,CAAC2B,MAAM,CAACC,SAAS,CAAC5B,IAAI,EAAEA,IAAI,CAAC6I,UAAU,EAAE,CAAC,CAAc;AAC/G;AAiBA,MAAMT,WAAW,gBAAG7G,cAAK,CAACuH,IAAI,eAC1BvH,cAAK,CAACwH,UAAU,CAAgC,CAAChJ,KAAK,EAAEiF,GAAG;;EACvD,MAAM;IACFhF,IAAI;IACJqI,OAAO;IACPjF,WAAW;IACX8B,iBAAiB;IACjB/B,iBAAiB,GAAG,KAAK;IACzB2C,MAAM,EAAEkD,UAAU;IAClB7I,QAAQ;IACRmI,SAAS;IACT/H,KAAK;IACLC,QAAQ;IACRiI;GACH,GAAG1I,KAAK;EACT,MAAM;IACFgB,QAAQ,EAAE;MAAEC,gBAAgB;MAAEiI,mBAAmB;MAAEhI,aAAa;MAAEiI;KAAkB;IACpFhI;GACH,GAAGE,aAAa,EAAE;EAEnB,MAAMK,UAAU,GAAG0H,YAAY,CAACnE,GAAG,CAAC;EACpC,MAAMoE,MAAM,GAAGpJ,IAAI,CAAC2B,MAAM,CAACU,EAAE;EAC7B,MAAMgH,mBAAmB,GAAGrI,gBAAgB,aAAhBA,gBAAgB,uBAAhBA,gBAAgB,CAAGoI,MAAM,CAAC;EAEtD,MAAMlC,KAAK,GAAGlH,IAAI,CAACsJ,QAAQ,EAAE;EAC7B,MAAMC,SAAS,GAAGvJ,IAAI,CAAC2B,MAAM,CAACC,SAAS,CAAC4H,MAA4B;EACpE,MAAM9I,IAAI,GAAGH,KAAK,CAACI,OAAO,CAACD,IAAsB;EACjD,MAAM;IAAE+I;GAAc,GAAGlJ,KAAK,CAACmJ,QAAQ,EAAE;EAEzC,MAAM,CAACC,KAAK,EAAEC,QAAQ,CAAC,GAAGrI,cAAK,CAAC6D,QAAQ,CAAC8B,KAAK,CAAC;EAE/C,MAAM2C,gCAAgC,GAAGnJ,IAAI,CAACK,QAAQ,CAACkC,SAAS,IAAIvC,IAAI,CAACqB,cAAc,KAAK5B,QAAQ,IAAIe,SAAS;EACjH,MAAM4I,kBAAkB,GAAG,CAACD,gCAAgC,IAAI,CAAC,CAACR,mBAAmB;;EAErF,MAAMU,YAAY,GAAGxI,cAAK,CAACC,MAAM,CAAM0F,KAAK,CAAC;EAC7C,MAAM8C,UAAU,GAAGzI,cAAK,CAACC,MAAM,CAAC,KAAK,CAAC;;;;EAKtC,MAAMyI,aAAa,aAAUC,eAAqB;IAAA;MAC9C,IAAIC,QAAQ,GAAGR,KAAK;;MAGpB,IAAI,CAACO,eAAe,CAACnE,MAAM,EAAE;QACzBoE,QAAQ,GAAGD,eAAe;;MAC7B;QAAA,IAEGE,UAAU,CAAClD,KAAK,EAAEiD,QAAQ,CAAC;UAAA,iCACvB;YACA,MAAME,UAAU,GAAG;cAAE,GAAGrK,IAAI,CAACoC,GAAG,CAACmG,QAAQ;cAAE,CAACa,MAAM,GAAGe;aAAU;YAAC,uBAE1DnB,UAAU,CAACqB,UAAU,EAAEjB,MAAM,CAAC;;cAGpC,IAAI1I,IAAI,CAAC4J,8BAA8B,EAAE;gBACrC5J,IAAI,CAAC6J,wBAAwB,CAAC5G,OAAO,GAAGjD,IAAI,CAAC6J,wBAAwB,CAAC5G,OAAO,CAAC6G,GAAG,CAACpI,GAAG;kBACjF,IAAIA,GAAG,CAACC,EAAE,KAAKrC,IAAI,CAACoC,GAAG,CAACC,EAAE,EAAE;oBACxBD,GAAG,CAACmG,QAAQ,GAAG8B,UAAU;;kBAG7B,OAAOjI,GAAG;iBACb,CAAC;;;cAIN6G,mBAAmB,CAAC,IAAI,CAAC;;WAC5B,YAAQwB,KAAK,EAAE;YACZxB,mBAAmB,CAAC;cAAE,GAAGjI,gBAAgB;cAAE,GAAIyJ;aAAoC,CAAC;WACvF;UAAA;;;MAAA;KAER;MAAA;;;;EAGDlJ,cAAK,CAACmC,SAAS,CAAC;;IACZ,MAAMgH,kBAAkB,4BAAGhK,IAAI,CAACF,QAAQ,CAACmD,OAAO,0DAArB,sBAAuB0D,QAAQ,CAAC/C,QAAQ,CAACD,aAAa,CAAC;;;IAGlF,MAAMsG,cAAc,GAAGrG,QAAQ,CAACsG,IAAI,KAAKtG,QAAQ,CAACD,aAAa;;IAG/D,IAAIlB,iBAAiB,KAAKuH,kBAAkB,IAAIC,cAAc,CAAC,EAAE;MAAA;MAC5D,uBAAAlJ,UAAU,CAACkC,OAAuB,iFAAlC,oBAAoC4D,KAAK,0DAAzC,+CAA6C;;GAErD,EAAE,CAACpE,iBAAiB,EAAE1B,UAAU,CAACkC,OAAO,CAAC,CAAC;EAE3C,MAAMkH,kBAAkB,GAAGtJ,cAAK,CAACuJ,OAAO,CAAC;IACrC,MAAMC,aAAa,GAAGxK,KAAK,CAACmJ,QAAQ,EAAE,CAACsB,aAAa,CAACC,IAAI;IAEzD,IAAIC,KAAK,CAACC,OAAO,CAACJ,aAAa,CAAC,IAAIA,aAAa,CAAChI,MAAM,GAAG,CAAC,EAAE;MAC1D,MAAMqI,gBAAgB,GAAGL,aAAa,CAACA,aAAa,CAAChI,MAAM,GAAG,CAAC,CAAC;MAChE,MAAMsI,sBAAsB,GAAG3K,IAAI,CAAC4K,aAAa,CAACF,gBAAgB,CAAC;MAEnE,IAAIC,sBAAsB,KAAKE,SAAS,EAAE;QAAA;QACtC,OAAOF,sBAAsB,6BAAI9K,KAAK,CAACmJ,QAAQ,EAAE,CAAC8B,YAAY,CAACJ,gBAAgB,CAAC,yEAAI,CAAC,CAAC;;;IAI9F,OAAO,CAAC;GACX,EAAE,CAAC1K,IAAI,CAAC4K,aAAa,EAAE/K,KAAK,CAACmJ,QAAQ,EAAE,CAAC8B,YAAY,CAAC,CAAC;EAEvDjK,cAAK,CAACmC,SAAS,CAAC;IACZ,IAAI0G,UAAU,CAACL,YAAY,CAACpG,OAAO,EAAEgG,KAAK,CAAC,EAAE;MAAA;;;MAGzC,IAAI,yBAAAlI,UAAU,CAACkC,OAAO,yDAAlB,qBAAoBsC,QAAQ,MAAK,OAAO,EAAE;QAC1CwC,uBAAuB,EAAE;;MAG7BgD,aAAa,EAAE;KAClB,MAAM;MACHC,aAAa,EAAE;;IAGnB,OAAOA,aAAa;GACvB,EAAE,CAAC/B,KAAK,CAAC,CAAC;;EAGXpI,cAAK,CAACmC,SAAS,CAAC;;IACZ,MAAMgD,cAAc,GAChB,yBAAAjF,UAAU,CAACkC,OAAO,yDAAlB,qBAAoBsC,QAAQ,MAAK,OAAO,IACxC,yBAAAxE,UAAU,CAACkC,OAAO,yDAAlB,qBAAoBgD,YAAY,CAAC,+BAA+B,CAAC,MAAK,MAAM;IAEhF,IAAIqD,UAAU,CAACrG,OAAO,IAAI+C,cAAc,EAAE;MAAA;MACrC,wBAAAjF,UAAU,CAACkC,OAA4B,yDAAvC,qBAAyCyC,MAAM,EAAE;;IAGtD4D,UAAU,CAACrG,OAAO,GAAG,KAAK;GAC7B,EAAE,CAACqG,UAAU,CAACrG,OAAO,CAAC,CAAC;EAExB,MAAMgI,WAAW,GAAGxH,KAAK;;IACrBzD,IAAI,CAACK,QAAQ,CAAC8D,SAAS,CAACzB,WAAW,CAAC;IAEpC,qBAAIe,KAAK,CAAC4B,MAAM,0CAAZ,cAAcK,MAAM,EAAE;MAAA;MACtB,kBAAAjC,KAAK,CAAC4B,MAAM,mDAAZ,eAAcK,MAAM,EAAE;;;IAI1B,MAAMwF,IAAI,uBAAGvD,OAAO,CAAC1E,OAAO,qDAAf,iBAAiBkI,qBAAqB,EAAE;IACrD,MAAMC,UAAU,GAAGpL,IAAI,CAAC4K,aAAa,CAAClC,MAAM,CAAC;IAE7C,IAAIwC,IAAI,IAAIE,UAAU,IAAIF,IAAI,CAACX,IAAI,GAAGJ,kBAAkB,EAAE;MAAA;MACtD,sBAAArK,QAAQ,CAACmD,OAAO,uDAAhB,mBAAkBoI,QAAQ,CAACD,UAAU,GAAGjB,kBAAkB,EAAErK,QAAQ,CAACmD,OAAO,CAACqI,SAAS,CAAC;;GAE9F;;;;EAKD,MAAMC,aAAa,GAAI9H,KAA4C;IAC/D,MAAMxB,OAAO,GAAGwB,KAAK,CAAC4B,MAA0B;IAChD,MAAMW,cAAc,GAChB/D,OAAO,CAACsD,QAAQ,KAAK,OAAO,IAAI,CAAAtD,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEgE,YAAY,CAAC,+BAA+B,CAAC,MAAK,MAAM;IAErG,IAAID,cAAc,IAAIvC,KAAK,CAAC4C,GAAG,KAAK,QAAQ,EAAE;MAC1C6C,QAAQ,CAACG,YAAY,CAACpG,OAAO,CAAC;MAC9BqG,UAAU,CAACrG,OAAO,GAAG,IAAI;;GAEhC;EAED,MAAM8H,aAAa,GAAG;;IAClB,IAAIS,iBAAiB,GAA2B,IAAI;IAEpD,MAAMC,wBAAwB,GAAG3I,MAAM,CAAC4I,MAAM,CAAU;MAAE,GAAG9D,SAAS;MAAE,CAACc,MAAM,GAAGO;KAAO,CAAC,CAAC0C,IAAI,CAACC,SAAS;;;IAGrGC,cAAc,CAACC,MAAM,CAACF,SAAS,CAAC,EAAE7C,YAAY,GAAG+C,MAAM,CAAC/C,YAAY,CAAC,GAAG,EAAE,CAAC,CAC9E;IAED,IAAI,CAAC0C,wBAAwB,EAAE;MAC3BD,iBAAiB,GAAGO,eAAe,CAACC,MAAM;KAC7C,MAAM,IAAI1M,IAAI,CAAC2B,MAAM,CAACgL,aAAa,EAAE,IAAI,CAACC,cAAc,CAACjD,KAAK,EAAE3J,IAAI,CAAC2B,MAAM,CAACkL,cAAc,EAAkB,CAAC,EAAE;MAC5GX,iBAAiB,GAAGO,eAAe,CAACK,MAAM;KAC7C,MAAM,IACH,CAACZ,iBAAiB,IAClBlM,IAAI,CAAC2B,MAAM,CAACoL,WAAW,EAAE,IACzBC,uBAAuB,CACnBrD,KAAK,EACL3J,IAAI,EACJG,QAAQ,EACRI,KAAK,CAAC0M,WAAW,EAAE,CAAC7M,IAAI,EACxB,CAAC,2BAACG,KAAK,CAACmJ,QAAQ,EAAE,CAACwD,OAAO,CAACC,IAAI,CAACC,CAAC,IAAIA,CAAC,CAAC/K,EAAE,KAAKrC,IAAI,CAAC2B,MAAM,CAACU,EAAE,CAAC,kDAA3D,sBAA6DgL,IAAI,EACtE,EACH;MACEnB,iBAAiB,GAAGO,eAAe,CAACa,OAAO;;IAG/C,IAAIpB,iBAAiB,KAAK,IAAI,EAAE;MAC5BxL,IAAI,CAAC6M,iCAAiC,CAAC,IAAI,CAAC;MAC5CrE,gBAAgB,CAAC;QAAE,CAACE,MAAM,GAAG8C;OAAmB,CAAC;;GAExD;EAED,MAAMR,aAAa,GAAG;IAClBxC,gBAAgB,CAACsE,SAAS;MACtB,MAAMC,QAAQ,GAAG;QAAE,GAAGD;OAAW;MACjC,OAAOC,QAAQ,CAACrE,MAAM,CAAC;MAEvB,OAAOqE,QAAQ;KAClB,CAAC;GACL;EAED,MAAMC,WAAW,6BAAG1N,IAAI,CAAC2B,MAAM,CAACC,SAAS,CAAClB,IAAI,2DAA1B,uBAA4BiC,OAAO;EAEvD,MAAMmC,UAAU,GAAG;IACf,YAAY,EAAEyE,SAAS;IACvBlD,MAAM,EAAE4D,aAAa;IACrB0D,OAAO,EAAEhC,WAAW;IACpB3G,GAAG;;;;;IAKH,+BAA+B,EAAE;GACpC;EAED,MAAMnD,SAAS,GAAGkC,EAAE,CAAC6J,uBAAuB,2BAAC5N,IAAI,CAAC2B,MAAM,CAACC,SAAS,CAAClB,IAAI,2DAA1B,uBAA4BmN,KAAK,CAAC,CAAC;EAChF,MAAMC,kBAAkB,wBAAGzF,OAAO,CAAC1E,OAAO,+EAAf,kBAAiBoK,aAAa,0DAA9B,sBAAgCC,aAAa,CAAC,cAAc,CAAmB;EAE1G,IAAIC,gBAAgB;EACpB,MAAMC,mBAAmB,GAAGnK,EAAE,CAAC;IAAE,yCAAyC,EAAEmB;GAAmB,CAAC;EAEhG,IAAIwI,WAAW,EAAE;IACb,IAAI,OAAOA,WAAW,KAAK,UAAU,EAAE;MACnCO,gBAAgB,GAAGP,WAAW,CAC1B;QACIS,OAAO,EAAErE,kBAAkB;QAC3BzD,MAAM,EAAE4D,aAAa;QACrB0D,OAAO,EAAEhC,WAAW;QACpB3G,GAAG,EAAEvD,UAAU;QACf2M,QAAQ,EAAExE,QAAQ;QAClB1C,KAAK,EAAEyC,KAAK;QACZ,+BAA+B,EAAE;OACpC,EACD3J,IAAI,CAACoC,GAAG,CAACmG,QAAQ,CACpB;KACJ,MAAM;MACH,QAAQmF,WAAW;QACf,KAAK,YAAY;UACbO,gBAAgB,gBACZ1M,6BAAC8M,UAAU,oBACHvJ,UAAU;YACdjD,SAAS,EAAEkC,EAAE,CAAC;cAAE,mDAAmD,EAAEmB;aAAmB,CAAC;YACzFiJ,OAAO,EAAErE,kBAAkB;YAC3BzD,MAAM,EAAElC,KAAK;cACT,MAAMmK,OAAO,GAAInK,KAAa,CAACoK,MAAM;cACrCtE,aAAa,CAACqE,OAAO,CAAC;aACzB;YACDE,QAAQ,EAAErK,KAAK;cACXyF,QAAQ,CAAEzF,KAAa,CAACoK,MAAM,CAAC;aAClC;YACDvJ,GAAG,EAAEvD,UAAyC;YAC9CyF,KAAK,EAAEyC;aAEd;UACD;QAEJ,KAAK,QAAQ;UACTsE,gBAAgB,gBACZ1M,6BAACkN,MAAM,oBACC3J,UAAU;YACdjD,SAAS,EAAEkC,EAAE,CAAC,aAAa,EAAEmK,mBAAmB,CAAC;YACjDQ,OAAO,EAAEC,OAAO,CAAChF,KAAK,CAAC;YACvB6E,QAAQ,EAAE5E,QAAQ;YAClB5E,GAAG,EAAEvD;aAEZ;UACD;QACJ;UACIwM,gBAAgB,gBACZ1M,6BAACqN,KAAK,oBACE9J,UAAU;YACdjD,SAAS,EAAEkC,EAAE,CAAClC,SAAS,EAAEqM,mBAAmB,CAAC;YAC7CC,OAAO,EAAErE,kBAAkB;YAC3B0E,QAAQ,EAAErK,KAAK;cACXyF,QAAQ,CAACzF,KAAK,CAAC4B,MAAM,CAACmB,KAAK,CAAC;aAC/B;YACDlC,GAAG,EAAEvD,UAAyC;YAC9CyF,KAAK,EAAEsF,MAAM,CAAC7C,KAAK,aAALA,KAAK,cAALA,KAAK,GAAI,EAAE,CAAC;YAC1BlD,SAAS,EAAEwF;aAElB;UACD;;;;EAKhB,MAAM4C,eAAe,4BAAG5N,aAAa,CAACmI,MAAM,CAAC,yEAAI,IAAI;EAErD,oBACI7H,4DACKsN,eAAe,KAAK,IAAI,iBACrBtN,6BAACuN,SAAS;IACNC,MAAM,EAAEF,eAAe;IACvBG,UAAU,EAAExC,MAAM,CAACxM,IAAI,CAAC2B,MAAM,CAACC,SAAS,CAAC4H,MAAM,CAAC;IAChDyF,SAAS,EAAEnB,kBAAkB;IAC7B9M,gBAAgB,EAAEA;IAEzB,eACDO;IAAMM,SAAS,EAAC;KACXoM,gBAAgB,EAChBnE,kBAAkB,iBAAIvI,6BAAC2N,eAAe,QAAE1C,MAAM,CAACnD,mBAAmB,CAAC,CAAmB,CACpF,CACR;AAEX,CAAC,CAAC,CACL;;;;"}
@@ -11,9 +11,9 @@ const Footer = function Footer(props) {
11
11
  table,
12
12
  ...columnProps
13
13
  } = props;
14
- const isPinned = !!footer.column.getIsPinned();
14
+ const isFrozen = !!footer.column.getIsPinned();
15
15
  const className = cn('group/header sticky bottom-0 bg-white border-t-2 relative', getCellSizingClasses('normal'), {
16
- 'z-[1]': isPinned
16
+ 'z-[1]': isFrozen
17
17
  }, props.className);
18
18
  return /*#__PURE__*/React__default.createElement(ColumnBase, Object.assign({}, columnProps, {
19
19
  // base props
@@ -1 +1 @@
1
- {"version":3,"file":"Footer.js","sources":["../../../../../../../../../src/components/Table2/components/column/Footer.tsx"],"sourcesContent":["import React from 'react';\nimport cn from 'classnames';\nimport { Header as RTHeader } from '@tanstack/react-table';\nimport { ColumnBase, ColumnBaseProps } from './Base';\nimport { getCellSizingClasses } from '../../utilities/cell';\n\ntype FooterProps<TType = unknown> = Omit<ColumnBaseProps<TType>, 'column' | 'isEditing'> & {\n footer: RTHeader<TType, unknown>;\n index: number;\n};\n\nexport const Footer = function Footer<TType = unknown>(props: FooterProps<TType>) {\n const { children, footer, index, table, ...columnProps } = props;\n const isPinned = !!footer.column.getIsPinned();\n\n const className = cn(\n 'group/header sticky bottom-0 bg-white border-t-2 relative',\n getCellSizingClasses('normal'),\n {\n 'z-[1]': isPinned, // pinned headers should show above cells and other headers, so we add z-index\n },\n props.className\n );\n\n return (\n <ColumnBase\n {...columnProps}\n // base props\n column={footer.column}\n table={table}\n className={className}\n role=\"cell\"\n // helper props\n data-column-index={index}>\n <span className=\"truncate\">{children}</span>\n </ColumnBase>\n );\n};\n"],"names":["Footer","props","children","footer","index","table","columnProps","isPinned","column","getIsPinned","className","cn","getCellSizingClasses","React","ColumnBase","role"],"mappings":";;;;;MAWaA,MAAM,GAAG,SAASA,MAAM,CAAkBC,KAAyB;EAC5E,MAAM;IAAEC,QAAQ;IAAEC,MAAM;IAAEC,KAAK;IAAEC,KAAK;IAAE,GAAGC;GAAa,GAAGL,KAAK;EAChE,MAAMM,QAAQ,GAAG,CAAC,CAACJ,MAAM,CAACK,MAAM,CAACC,WAAW,EAAE;EAE9C,MAAMC,SAAS,GAAGC,EAAE,CAChB,2DAA2D,EAC3DC,oBAAoB,CAAC,QAAQ,CAAC,EAC9B;IACI,OAAO,EAAEL;GACZ,EACDN,KAAK,CAACS,SAAS,CAClB;EAED,oBACIG,6BAACC,UAAU,oBACHR,WAAW;;IAEfE,MAAM,EAAEL,MAAM,CAACK,MAAM;IACrBH,KAAK,EAAEA,KAAK;IACZK,SAAS,EAAEA,SAAS;IACpBK,IAAI,EAAC,MAAM;yBAEQX;mBACnBS;IAAMH,SAAS,EAAC;KAAYR,QAAQ,CAAQ,CACnC;AAErB;;;;"}
1
+ {"version":3,"file":"Footer.js","sources":["../../../../../../../../../src/components/Table2/components/column/Footer.tsx"],"sourcesContent":["import React from 'react';\nimport cn from 'classnames';\nimport { Header as RTHeader } from '@tanstack/react-table';\nimport { ColumnBase, ColumnBaseProps } from './Base';\nimport { getCellSizingClasses } from '../../utilities/cell';\n\ntype FooterProps<TType = unknown> = Omit<ColumnBaseProps<TType>, 'column' | 'isEditing'> & {\n footer: RTHeader<TType, unknown>;\n index: number;\n};\n\nexport const Footer = function Footer<TType = unknown>(props: FooterProps<TType>) {\n const { children, footer, index, table, ...columnProps } = props;\n const isFrozen = !!footer.column.getIsPinned();\n\n const className = cn(\n 'group/header sticky bottom-0 bg-white border-t-2 relative',\n getCellSizingClasses('normal'),\n {\n 'z-[1]': isFrozen, // frozen headers should show above cells and other headers, so we add z-index\n },\n props.className\n );\n\n return (\n <ColumnBase\n {...columnProps}\n // base props\n column={footer.column}\n table={table}\n className={className}\n role=\"cell\"\n // helper props\n data-column-index={index}>\n <span className=\"truncate\">{children}</span>\n </ColumnBase>\n );\n};\n"],"names":["Footer","props","children","footer","index","table","columnProps","isFrozen","column","getIsPinned","className","cn","getCellSizingClasses","React","ColumnBase","role"],"mappings":";;;;;MAWaA,MAAM,GAAG,SAASA,MAAM,CAAkBC,KAAyB;EAC5E,MAAM;IAAEC,QAAQ;IAAEC,MAAM;IAAEC,KAAK;IAAEC,KAAK;IAAE,GAAGC;GAAa,GAAGL,KAAK;EAChE,MAAMM,QAAQ,GAAG,CAAC,CAACJ,MAAM,CAACK,MAAM,CAACC,WAAW,EAAE;EAE9C,MAAMC,SAAS,GAAGC,EAAE,CAChB,2DAA2D,EAC3DC,oBAAoB,CAAC,QAAQ,CAAC,EAC9B;IACI,OAAO,EAAEL;GACZ,EACDN,KAAK,CAACS,SAAS,CAClB;EAED,oBACIG,6BAACC,UAAU,oBACHR,WAAW;;IAEfE,MAAM,EAAEL,MAAM,CAACK,MAAM;IACrBH,KAAK,EAAEA,KAAK;IACZK,SAAS,EAAEA,SAAS;IACpBK,IAAI,EAAC,MAAM;yBAEQX;mBACnBS;IAAMH,SAAS,EAAC;KAAYR,QAAQ,CAAQ,CACnC;AAErB;;;;"}