@economic/taco 2.21.3 → 2.22.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 (232) hide show
  1. package/dist/components/Report/Report.d.ts +21 -0
  2. package/dist/components/Report/components/Cell/Cell.d.ts +0 -1
  3. package/dist/components/Report/components/Cell/DisplayCell.d.ts +1 -1
  4. package/dist/components/Report/components/Cell/util.d.ts +1 -1
  5. package/dist/components/Report/components/Row/DisplayRow.d.ts +2 -9
  6. package/dist/components/Report/components/Toolbar/components/Filters/components/Placeholder.d.ts +5 -5
  7. package/dist/components/Report/listeners/useTableRowActiveListener.d.ts +3 -0
  8. package/dist/components/Report/styles/util.d.ts +2 -2
  9. package/dist/components/Report/types.d.ts +1 -3
  10. package/dist/components/Report/useReport.d.ts +2 -7
  11. package/dist/components/Table3/types.d.ts +1 -1
  12. package/dist/esm/index.css +501 -9
  13. package/dist/esm/packages/taco/src/components/Card/Card.js +1 -1
  14. package/dist/esm/packages/taco/src/components/Card/Card.js.map +1 -1
  15. package/dist/esm/packages/taco/src/components/Group/Group.js +1 -1
  16. package/dist/esm/packages/taco/src/components/Group/Group.js.map +1 -1
  17. package/dist/esm/packages/taco/src/components/Input/Input.js +37 -7
  18. package/dist/esm/packages/taco/src/components/Input/Input.js.map +1 -1
  19. package/dist/esm/packages/taco/src/components/Input/util.js +3 -1
  20. package/dist/esm/packages/taco/src/components/Input/util.js.map +1 -1
  21. package/dist/esm/packages/taco/src/components/Report/Report.js +70 -0
  22. package/dist/esm/packages/taco/src/components/Report/Report.js.map +1 -0
  23. package/dist/esm/packages/taco/src/components/Report/components/Body/Body.js +61 -0
  24. package/dist/esm/packages/taco/src/components/Report/components/Body/Body.js.map +1 -0
  25. package/dist/esm/packages/taco/src/components/Report/components/Body/util.js +22 -0
  26. package/dist/esm/packages/taco/src/components/Report/components/Body/util.js.map +1 -0
  27. package/dist/esm/packages/taco/src/components/Report/components/Cell/Cell.js +32 -0
  28. package/dist/esm/packages/taco/src/components/Report/components/Cell/Cell.js.map +1 -0
  29. package/dist/esm/packages/taco/src/components/Report/components/Cell/DisplayCell.js +23 -0
  30. package/dist/esm/packages/taco/src/components/Report/components/Cell/DisplayCell.js.map +1 -0
  31. package/dist/esm/packages/taco/src/components/Report/components/Cell/GroupedCell.js +58 -0
  32. package/dist/esm/packages/taco/src/components/Report/components/Cell/GroupedCell.js.map +1 -0
  33. package/dist/esm/packages/taco/src/components/Report/components/Cell/util.js +69 -0
  34. package/dist/esm/packages/taco/src/components/Report/components/Cell/util.js.map +1 -0
  35. package/dist/esm/packages/taco/src/components/Report/components/Footer/Footer.js +34 -0
  36. package/dist/esm/packages/taco/src/components/Report/components/Footer/Footer.js.map +1 -0
  37. package/dist/esm/packages/taco/src/components/Report/components/Footer/Summary.js +39 -0
  38. package/dist/esm/packages/taco/src/components/Report/components/Footer/Summary.js.map +1 -0
  39. package/dist/esm/packages/taco/src/components/Report/components/Header/Header.js +194 -0
  40. package/dist/esm/packages/taco/src/components/Report/components/Header/Header.js.map +1 -0
  41. package/dist/esm/packages/taco/src/components/Report/components/Header/components/Goto.js +28 -0
  42. package/dist/esm/packages/taco/src/components/Report/components/Header/components/Goto.js.map +1 -0
  43. package/dist/esm/packages/taco/src/components/Report/components/Header/components/Menu.js +150 -0
  44. package/dist/esm/packages/taco/src/components/Report/components/Header/components/Menu.js.map +1 -0
  45. package/dist/esm/packages/taco/src/components/Report/components/Header/components/Resizer.js +60 -0
  46. package/dist/esm/packages/taco/src/components/Report/components/Header/components/Resizer.js.map +1 -0
  47. package/dist/esm/packages/taco/src/components/Report/components/Header/components/SortIndicator.js +41 -0
  48. package/dist/esm/packages/taco/src/components/Report/components/Header/components/SortIndicator.js.map +1 -0
  49. package/dist/esm/packages/taco/src/components/Report/components/Header/util.js +24 -0
  50. package/dist/esm/packages/taco/src/components/Report/components/Header/util.js.map +1 -0
  51. package/dist/esm/packages/taco/src/components/Report/components/Internal/Actions.js +90 -0
  52. package/dist/esm/packages/taco/src/components/Report/components/Internal/Actions.js.map +1 -0
  53. package/dist/esm/packages/taco/src/components/Report/components/Internal/Expansion.js +59 -0
  54. package/dist/esm/packages/taco/src/components/Report/components/Internal/Expansion.js.map +1 -0
  55. package/dist/esm/packages/taco/src/components/Report/components/Internal/Selection.js +118 -0
  56. package/dist/esm/packages/taco/src/components/Report/components/Internal/Selection.js.map +1 -0
  57. package/dist/esm/packages/taco/src/components/Report/components/Row/DisplayRow.js +102 -0
  58. package/dist/esm/packages/taco/src/components/Report/components/Row/DisplayRow.js.map +1 -0
  59. package/dist/esm/packages/taco/src/components/Report/components/Row/Row.js +24 -0
  60. package/dist/esm/packages/taco/src/components/Report/components/Row/Row.js.map +1 -0
  61. package/dist/esm/packages/taco/src/components/Report/components/Row/RowContext.js +10 -0
  62. package/dist/esm/packages/taco/src/components/Report/components/Row/RowContext.js.map +1 -0
  63. package/dist/esm/packages/taco/src/components/Report/components/Row/SkeletonRow.js +62 -0
  64. package/dist/esm/packages/taco/src/components/Report/components/Row/SkeletonRow.js.map +1 -0
  65. package/dist/esm/packages/taco/src/components/Report/components/Toolbar/Toolbar.js +63 -0
  66. package/dist/esm/packages/taco/src/components/Report/components/Toolbar/Toolbar.js.map +1 -0
  67. package/dist/esm/packages/taco/src/components/Report/components/Toolbar/components/Filters/Filters.js +50 -0
  68. package/dist/esm/packages/taco/src/components/Report/components/Toolbar/components/Filters/Filters.js.map +1 -0
  69. package/dist/esm/packages/taco/src/components/Report/components/Toolbar/components/Filters/ManageFiltersPopover.js +136 -0
  70. package/dist/esm/packages/taco/src/components/Report/components/Toolbar/components/Filters/ManageFiltersPopover.js.map +1 -0
  71. package/dist/esm/packages/taco/src/components/Report/components/Toolbar/components/Filters/components/Filter.js +95 -0
  72. package/dist/esm/packages/taco/src/components/Report/components/Toolbar/components/Filters/components/Filter.js.map +1 -0
  73. package/dist/esm/packages/taco/src/components/Report/components/Toolbar/components/Filters/components/FilterColumn.js +49 -0
  74. package/dist/esm/packages/taco/src/components/Report/components/Toolbar/components/Filters/components/FilterColumn.js.map +1 -0
  75. package/dist/esm/packages/taco/src/components/Report/components/Toolbar/components/Filters/components/FilterComparator.js +110 -0
  76. package/dist/esm/packages/taco/src/components/Report/components/Toolbar/components/Filters/components/FilterComparator.js.map +1 -0
  77. package/dist/esm/packages/taco/src/components/Report/components/Toolbar/components/Filters/components/FilterValue.js +118 -0
  78. package/dist/esm/packages/taco/src/components/Report/components/Toolbar/components/Filters/components/FilterValue.js.map +1 -0
  79. package/dist/esm/packages/taco/src/components/Report/components/Toolbar/components/Filters/components/Placeholder.js +41 -0
  80. package/dist/esm/packages/taco/src/components/Report/components/Toolbar/components/Filters/components/Placeholder.js.map +1 -0
  81. package/dist/esm/packages/taco/src/components/Report/components/Toolbar/components/Filters/util.js +7 -0
  82. package/dist/esm/packages/taco/src/components/Report/components/Toolbar/components/Filters/util.js.map +1 -0
  83. package/dist/esm/packages/taco/src/components/Report/components/Toolbar/components/Print/Print.js +123 -0
  84. package/dist/esm/packages/taco/src/components/Report/components/Toolbar/components/Print/Print.js.map +1 -0
  85. package/dist/esm/packages/taco/src/components/Report/components/Toolbar/components/Print/PrintDialog.js +88 -0
  86. package/dist/esm/packages/taco/src/components/Report/components/Toolbar/components/Print/PrintDialog.js.map +1 -0
  87. package/dist/esm/packages/taco/src/components/Report/components/Toolbar/components/Search/Search.js +95 -0
  88. package/dist/esm/packages/taco/src/components/Report/components/Toolbar/components/Search/Search.js.map +1 -0
  89. package/dist/esm/packages/taco/src/components/Report/components/Toolbar/components/Settings/HideOrOrderPopover.js +105 -0
  90. package/dist/esm/packages/taco/src/components/Report/components/Toolbar/components/Settings/HideOrOrderPopover.js.map +1 -0
  91. package/dist/esm/packages/taco/src/components/Report/components/Toolbar/components/Settings/Settings.js +103 -0
  92. package/dist/esm/packages/taco/src/components/Report/components/Toolbar/components/Settings/Settings.js.map +1 -0
  93. package/dist/esm/packages/taco/src/components/Report/listeners/useTableRowActiveListener.js +24 -0
  94. package/dist/esm/packages/taco/src/components/Report/listeners/useTableRowActiveListener.js.map +1 -0
  95. package/dist/esm/packages/taco/src/components/Report/styles/useColumnPinningStylesheet.js +44 -0
  96. package/dist/esm/packages/taco/src/components/Report/styles/useColumnPinningStylesheet.js.map +1 -0
  97. package/dist/esm/packages/taco/src/components/Report/styles/useCssGridStylesheet.js +54 -0
  98. package/dist/esm/packages/taco/src/components/Report/styles/useCssGridStylesheet.js.map +1 -0
  99. package/dist/esm/packages/taco/src/components/Report/styles/useStylesheet.js +20 -0
  100. package/dist/esm/packages/taco/src/components/Report/styles/useStylesheet.js.map +1 -0
  101. package/dist/esm/packages/taco/src/components/Report/styles/util.js +61 -0
  102. package/dist/esm/packages/taco/src/components/Report/styles/util.js.map +1 -0
  103. package/dist/esm/packages/taco/src/components/Report/useReport.js +51 -0
  104. package/dist/esm/packages/taco/src/components/Report/useReport.js.map +1 -0
  105. package/dist/esm/packages/taco/src/components/Report/util/rows.js +10 -0
  106. package/dist/esm/packages/taco/src/components/Report/util/rows.js.map +1 -0
  107. package/dist/esm/packages/taco/src/components/Report/util/useTableGlobalShortcuts.js +39 -0
  108. package/dist/esm/packages/taco/src/components/Report/util/useTableGlobalShortcuts.js.map +1 -0
  109. package/dist/esm/packages/taco/src/components/Report/util/useTableRenderer.js +162 -0
  110. package/dist/esm/packages/taco/src/components/Report/util/useTableRenderer.js.map +1 -0
  111. package/dist/esm/packages/taco/src/components/ScrollArea/ScrollArea.js +2 -1
  112. package/dist/esm/packages/taco/src/components/ScrollArea/ScrollArea.js.map +1 -1
  113. package/dist/esm/packages/taco/src/components/Select2/Select2.js +2 -2
  114. package/dist/esm/packages/taco/src/components/Select2/components/Create.js +1 -1
  115. package/dist/esm/packages/taco/src/components/Select2/components/Edit.js +1 -1
  116. package/dist/esm/packages/taco/src/components/Select2/components/Option.js +1 -1
  117. package/dist/esm/packages/taco/src/components/Select2/components/Trigger.js +6 -7
  118. package/dist/esm/packages/taco/src/components/Select2/components/Trigger.js.map +1 -1
  119. package/dist/esm/packages/taco/src/components/Table/hooks/plugins/useRowActions.js +1 -1
  120. package/dist/esm/packages/taco/src/components/Table3/Table3.js +7 -2
  121. package/dist/esm/packages/taco/src/components/Table3/Table3.js.map +1 -1
  122. package/dist/esm/packages/taco/src/components/Table3/components/alert/ErrorAlert.js +6 -6
  123. package/dist/esm/packages/taco/src/components/Table3/components/alert/ErrorAlert.js.map +1 -1
  124. package/dist/esm/packages/taco/src/components/Table3/components/columns/cell/Cell.js +7 -1
  125. package/dist/esm/packages/taco/src/components/Table3/components/columns/cell/Cell.js.map +1 -1
  126. package/dist/esm/packages/taco/src/components/Table3/components/columns/cell/DisplayCell.js +2 -0
  127. package/dist/esm/packages/taco/src/components/Table3/components/columns/cell/DisplayCell.js.map +1 -1
  128. package/dist/esm/packages/taco/src/components/Table3/components/columns/cell/EditingCell.js +6 -1
  129. package/dist/esm/packages/taco/src/components/Table3/components/columns/cell/EditingCell.js.map +1 -1
  130. package/dist/esm/packages/taco/src/components/Table3/components/columns/cell/EditingControl.js +1 -0
  131. package/dist/esm/packages/taco/src/components/Table3/components/columns/cell/EditingControl.js.map +1 -1
  132. package/dist/esm/packages/taco/src/components/Table3/components/columns/cell/controls/TextareaControl.js +3 -1
  133. package/dist/esm/packages/taco/src/components/Table3/components/columns/cell/controls/TextareaControl.js.map +1 -1
  134. package/dist/esm/packages/taco/src/components/Table3/components/columns/footer/Summary.js +1 -0
  135. package/dist/esm/packages/taco/src/components/Table3/components/columns/footer/Summary.js.map +1 -1
  136. package/dist/esm/packages/taco/src/components/Table3/components/columns/header/Menu.js +9 -1
  137. package/dist/esm/packages/taco/src/components/Table3/components/columns/header/Menu.js.map +1 -1
  138. package/dist/esm/packages/taco/src/components/Table3/components/columns/internal/Actions.js +1 -0
  139. package/dist/esm/packages/taco/src/components/Table3/components/columns/internal/Actions.js.map +1 -1
  140. package/dist/esm/packages/taco/src/components/Table3/components/rows/Row.js +2 -0
  141. package/dist/esm/packages/taco/src/components/Table3/components/rows/Row.js.map +1 -1
  142. package/dist/esm/packages/taco/src/components/Table3/components/toolbar/ColumnSettings.js +3 -3
  143. package/dist/esm/packages/taco/src/components/Table3/components/toolbar/Filter/filters/Filters.js +4 -8
  144. package/dist/esm/packages/taco/src/components/Table3/components/toolbar/Filter/filters/Filters.js.map +1 -1
  145. package/dist/esm/packages/taco/src/components/Table3/components/toolbar/Filter/filters/components/FilterComparator.js +1 -0
  146. package/dist/esm/packages/taco/src/components/Table3/components/toolbar/Filter/filters/components/FilterComparator.js.map +1 -1
  147. package/dist/esm/packages/taco/src/components/Table3/components/toolbar/PrintButton/PrintButton.js +19 -14
  148. package/dist/esm/packages/taco/src/components/Table3/components/toolbar/PrintButton/PrintButton.js.map +1 -1
  149. package/dist/esm/packages/taco/src/components/Table3/components/toolbar/PrintButton/PrintIFrame.js +6 -5
  150. package/dist/esm/packages/taco/src/components/Table3/components/toolbar/PrintButton/PrintIFrame.js.map +1 -1
  151. package/dist/esm/packages/taco/src/components/Table3/components/toolbar/Search.js +18 -1
  152. package/dist/esm/packages/taco/src/components/Table3/components/toolbar/Search.js.map +1 -1
  153. package/dist/esm/packages/taco/src/components/Table3/hooks/features/useColumnFreezing.js +8 -14
  154. package/dist/esm/packages/taco/src/components/Table3/hooks/features/useColumnFreezing.js.map +1 -1
  155. package/dist/esm/packages/taco/src/components/Table3/hooks/features/useEditing.js +1 -1
  156. package/dist/esm/packages/taco/src/components/Table3/hooks/features/useSettings.js +1 -1
  157. package/dist/esm/packages/taco/src/components/Table3/hooks/listeners/useSettingsStateListener.js +5 -1
  158. package/dist/esm/packages/taco/src/components/Table3/hooks/listeners/useSettingsStateListener.js.map +1 -1
  159. package/dist/esm/packages/taco/src/components/Table3/hooks/useTable.js +15 -15
  160. package/dist/esm/packages/taco/src/components/Table3/hooks/useTable.js.map +1 -1
  161. package/dist/esm/packages/taco/src/components/Table3/hooks/useTablePreset.js +20 -0
  162. package/dist/esm/packages/taco/src/components/Table3/hooks/useTablePreset.js.map +1 -1
  163. package/dist/esm/packages/taco/src/components/Table3/types.js.map +1 -1
  164. package/dist/esm/packages/taco/src/components/Table3/util/columns.js +2 -0
  165. package/dist/esm/packages/taco/src/components/Table3/util/columns.js.map +1 -1
  166. package/dist/esm/packages/taco/src/components/Textarea/Textarea.js +1 -1
  167. package/dist/esm/packages/taco/src/components/Textarea/Textarea.js.map +1 -1
  168. package/dist/esm/packages/taco/src/hooks/useBoundaryOverflowDetection.js +1 -1
  169. package/dist/esm/packages/taco/src/index.js +7 -6
  170. package/dist/esm/packages/taco/src/index.js.map +1 -1
  171. package/dist/esm/packages/taco/src/primitives/Button.js +2 -1
  172. package/dist/esm/packages/taco/src/primitives/Button.js.map +1 -1
  173. package/dist/esm/packages/taco/src/primitives/Table/types.js.map +1 -1
  174. package/dist/esm/packages/taco/src/primitives/Table/useTable/features/useTableColumnFreezing.js +21 -0
  175. package/dist/esm/packages/taco/src/primitives/Table/useTable/features/useTableColumnFreezing.js.map +1 -0
  176. package/dist/esm/packages/taco/src/primitives/Table/useTable/features/useTableFooter.js +8 -0
  177. package/dist/esm/packages/taco/src/primitives/Table/useTable/features/useTableFooter.js.map +1 -0
  178. package/dist/esm/packages/taco/src/primitives/Table/useTable/features/useTablePrinting.js +16 -0
  179. package/dist/esm/packages/taco/src/primitives/Table/useTable/features/useTablePrinting.js.map +1 -0
  180. package/dist/esm/packages/taco/src/primitives/Table/useTable/features/useTableRef.js +17 -0
  181. package/dist/esm/packages/taco/src/primitives/Table/useTable/features/useTableRef.js.map +1 -0
  182. package/dist/esm/packages/taco/src/primitives/Table/useTable/features/useTableRowActions.js +11 -0
  183. package/dist/esm/packages/taco/src/primitives/Table/useTable/features/useTableRowActions.js.map +1 -0
  184. package/dist/esm/packages/taco/src/primitives/Table/useTable/features/useTableRowExpansion.js +9 -0
  185. package/dist/esm/packages/taco/src/primitives/Table/useTable/features/useTableRowExpansion.js.map +1 -0
  186. package/dist/esm/packages/taco/src/primitives/Table/useTable/features/useTableRowGroups.js +9 -0
  187. package/dist/esm/packages/taco/src/primitives/Table/useTable/features/useTableRowGroups.js.map +1 -0
  188. package/dist/esm/packages/taco/src/primitives/Table/useTable/features/useTableSearch.js +38 -0
  189. package/dist/esm/packages/taco/src/primitives/Table/useTable/features/useTableSearch.js.map +1 -0
  190. package/dist/esm/packages/taco/src/primitives/Table/useTable/features/useTableSettings.js +28 -0
  191. package/dist/esm/packages/taco/src/primitives/Table/useTable/features/useTableSettings.js.map +1 -0
  192. package/dist/esm/packages/taco/src/primitives/Table/useTable/listeners/useTableRowHeightListener.js +14 -0
  193. package/dist/esm/packages/taco/src/primitives/Table/useTable/listeners/useTableRowHeightListener.js.map +1 -0
  194. package/dist/esm/packages/taco/src/primitives/Table/useTable/listeners/useTableSearchListener.js +15 -0
  195. package/dist/esm/packages/taco/src/primitives/Table/useTable/listeners/useTableSearchListener.js.map +1 -0
  196. package/dist/esm/packages/taco/src/primitives/Table/useTable/listeners/useTableSettingsListener.js +26 -0
  197. package/dist/esm/packages/taco/src/primitives/Table/useTable/listeners/useTableSettingsListener.js.map +1 -0
  198. package/dist/esm/packages/taco/src/primitives/Table/useTable/useTable.js +117 -0
  199. package/dist/esm/packages/taco/src/primitives/Table/useTable/useTable.js.map +1 -0
  200. package/dist/esm/packages/taco/src/primitives/Table/useTable/util/columns.js +30 -3
  201. package/dist/esm/packages/taco/src/primitives/Table/useTable/util/columns.js.map +1 -1
  202. package/dist/esm/packages/taco/src/primitives/Table/useTable/util/filtering.js +131 -0
  203. package/dist/esm/packages/taco/src/primitives/Table/useTable/util/filtering.js.map +1 -0
  204. package/dist/esm/packages/taco/src/primitives/Table/useTable/util/presets.js +131 -0
  205. package/dist/esm/packages/taco/src/primitives/Table/useTable/util/presets.js.map +1 -0
  206. package/dist/esm/packages/taco/src/primitives/Table/useTable/util/search.js +43 -0
  207. package/dist/esm/packages/taco/src/primitives/Table/useTable/util/search.js.map +1 -0
  208. package/dist/esm/packages/taco/src/primitives/Table/useTable/util/settings.js +22 -0
  209. package/dist/esm/packages/taco/src/primitives/Table/useTable/util/settings.js.map +1 -0
  210. package/dist/esm/packages/taco/src/primitives/Table/useTable/util/setup.js +270 -0
  211. package/dist/esm/packages/taco/src/primitives/Table/useTable/util/setup.js.map +1 -0
  212. package/dist/esm/packages/taco/src/primitives/Table/useTable/util/sorting.js +18 -0
  213. package/dist/esm/packages/taco/src/primitives/Table/useTable/util/sorting.js.map +1 -0
  214. package/dist/esm/packages/taco/src/utils/dom.js +5 -1
  215. package/dist/esm/packages/taco/src/utils/dom.js.map +1 -1
  216. package/dist/esm/packages/taco/src/utils/keyboard.js +3 -5
  217. package/dist/esm/packages/taco/src/utils/keyboard.js.map +1 -1
  218. package/dist/index.css +501 -9
  219. package/dist/index.d.ts +1 -0
  220. package/dist/primitives/Table/types.d.ts +2 -2
  221. package/dist/primitives/Table/useTable/features/useTablePrinting.d.ts +1 -1
  222. package/dist/primitives/Table/useTable/util/settings.d.ts +1 -1
  223. package/dist/primitives/Table/useTable/util/sorting.d.ts +1 -1
  224. package/dist/taco.cjs.development.js +6380 -2731
  225. package/dist/taco.cjs.development.js.map +1 -1
  226. package/dist/taco.cjs.production.min.js +1 -1
  227. package/dist/taco.cjs.production.min.js.map +1 -1
  228. package/dist/utils/dom.d.ts +1 -0
  229. package/dist/utils/keyboard.d.ts +0 -1
  230. package/package.json +2 -2
  231. package/types.json +4682 -4776
  232. package/dist/components/Report/features/useReportExport.d.ts +0 -3
@@ -1,4 +1,4 @@
1
- import { forwardRef, createElement, useRef, memo, cloneElement } from 'react';
1
+ import { forwardRef, createElement, useLayoutEffect, useRef, memo, cloneElement } from 'react';
2
2
  import cn from 'clsx';
3
3
  import { Icon } from '../Icon/Icon.js';
4
4
  import { useMergedRef } from '../../hooks/useMergedRef.js';
@@ -18,6 +18,22 @@ const InputWithoutDeprecatedFeatures = /*#__PURE__*/forwardRef(function InputWit
18
18
  ...attributes
19
19
  } = props;
20
20
  const internalRef = useMergedRef(ref);
21
+ // input[type=number] does not support setSelectionRange by default, this adds support
22
+ useLayoutEffect(() => {
23
+ if (internalRef.current && type === 'number') {
24
+ (function (fn) {
25
+ internalRef.current.setSelectionRange = function (...args) {
26
+ if (this.type === 'number') {
27
+ this.type = 'text';
28
+ fn.apply(this, args);
29
+ this.type = 'number';
30
+ } else {
31
+ fn.apply(this, args);
32
+ }
33
+ };
34
+ })(internalRef.current.setSelectionRange);
35
+ }
36
+ }, []);
21
37
  const handleKeyDown = event => {
22
38
  // prevent any external keyboard shortcuts from executing while typing single characters in input
23
39
  if (event.key.length === 1 && !isPressingMetaKey(event)) {
@@ -46,24 +62,38 @@ const InputWithoutDeprecatedFeatures = /*#__PURE__*/forwardRef(function InputWit
46
62
  'pl-8': !!prefix,
47
63
  'pr-8': !!postfix
48
64
  }, attributes.className);
65
+ const typeAttributes = {
66
+ type
67
+ };
68
+ if (type === 'number') {
69
+ typeAttributes.onWheelCapture = event => {
70
+ // blur is the only way to prevent scroll, so restore focus if it had it
71
+ if (document.activeElement === event.currentTarget) {
72
+ requestAnimationFrame(() => {
73
+ event.target.focus();
74
+ });
75
+ }
76
+ // blur the field on scroll - only way to prevent scroll
77
+ event.currentTarget.blur();
78
+ };
79
+ }
49
80
  return /*#__PURE__*/createElement("div", {
50
- className: "relative inline-flex w-full",
81
+ className: "relative inline-flex h-fit w-full",
51
82
  "data-taco": "input-container",
52
83
  style: {
53
84
  opacity: 0.999
54
85
  }
55
- }, /*#__PURE__*/createElement("input", Object.assign({}, attributes, {
86
+ }, /*#__PURE__*/createElement("input", Object.assign({}, attributes, typeAttributes, {
87
+ "aria-invalid": invalid,
56
88
  className: className,
89
+ "data-highlighted": highlighted,
57
90
  "data-taco": "input",
58
91
  onKeyDown: handleKeyDown,
59
- "aria-invalid": invalid,
60
- "data-highlighted": highlighted,
61
92
  ref: internalRef,
62
93
  style: {
63
94
  paddingLeft: prefixRect ? `${prefixRect.width - 1}px` : undefined,
64
95
  paddingRight: postfixRect ? `${postfixRect.width - 1}px` : undefined
65
- },
66
- type: type
96
+ }
67
97
  })), prefix ? /*#__PURE__*/createElement(Affix, {
68
98
  type: "prefix",
69
99
  children: prefix,
@@ -1 +1 @@
1
- {"version":3,"file":"Input.js","sources":["../../../../../../../src/components/Input/Input.tsx"],"sourcesContent":["import * as React from 'react';\nimport cn from 'clsx';\nimport { Icon, IconName } from '../Icon/Icon';\nimport { getButtonStateClasses, getInputClasses } from './util';\nimport { useBoundingClientRectListener } from '../../hooks/useBoundingClientRectListener';\nimport { useMergedRef } from '../../hooks/useMergedRef';\nimport { isPressingMetaKey } from '../../utils/keyboard';\n\nexport type InputWithoutDeprecatedFeaturesProps = Omit<React.InputHTMLAttributes<HTMLInputElement>, 'prefix'> & {\n /** Draws attention to the input by changing its style and making it visually prominent */\n highlighted?: boolean;\n /* Whether the input is in an invalid state */\n invalid?: boolean;\n postfix?: string | JSX.Element;\n prefix?: string | JSX.Element;\n};\n\nconst validSetSelectionRangeTypes = ['text', 'search', 'url', 'tel', 'password'];\n\nconst InputWithoutDeprecatedFeatures = React.forwardRef(function InputWithoutDeprecatedFeatures(\n props: InputWithoutDeprecatedFeaturesProps,\n ref: React.Ref<HTMLInputElement>\n) {\n const { highlighted, invalid, onKeyDown, postfix, prefix, type = 'text', ...attributes } = props;\n const internalRef = useMergedRef<HTMLInputElement>(ref);\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {\n // prevent any external keyboard shortcuts from executing while typing single characters in input\n if (event.key.length === 1 && !isPressingMetaKey(event)) {\n event.stopPropagation();\n }\n\n // home and end keys only navigate to the start/end of input value if the input container does not scroll\n // if it has scroll height then the browser reverts to native scrolling behaviour only\n // so we manually override it to ensure _our_ desired behaviour remains intact\n // only the 'text', 'search', 'url', 'tel', 'password' input types support setSelectionRange\n if (validSetSelectionRangeTypes.includes(type)) {\n if (!event.shiftKey && (event.key === 'Home' || event.key === 'End')) {\n event.preventDefault();\n const position = event.key === 'End' ? event.currentTarget.value.length : 0;\n event.currentTarget.setSelectionRange(position, position);\n }\n }\n\n if (typeof onKeyDown === 'function') {\n onKeyDown(event);\n }\n };\n\n const prefixRef = React.useRef<HTMLDivElement>(null);\n const prefixRect = useBoundingClientRectListener(prefixRef);\n const postfixRef = React.useRef<HTMLDivElement>(null);\n const postfixRect = useBoundingClientRectListener(postfixRef, [postfix]);\n\n const className = cn(\n getInputClasses(props),\n {\n 'pl-8': !!prefix,\n 'pr-8': !!postfix,\n },\n attributes.className\n );\n\n return (\n <div className=\"relative inline-flex w-full\" data-taco=\"input-container\" style={{ opacity: 0.999 }}>\n <input\n {...attributes}\n className={className}\n data-taco=\"input\"\n onKeyDown={handleKeyDown}\n aria-invalid={invalid}\n data-highlighted={highlighted}\n ref={internalRef}\n style={{\n paddingLeft: prefixRect ? `${prefixRect.width - 1}px` : undefined,\n paddingRight: postfixRect ? `${postfixRect.width - 1}px` : undefined,\n }}\n type={type}\n />\n {prefix ? <Affix type=\"prefix\" children={prefix} disabled={attributes.disabled} ref={prefixRef} /> : null}\n {postfix ? <Affix type=\"postfix\" children={postfix} disabled={attributes.disabled} ref={postfixRef} /> : null}\n </div>\n );\n});\n\ntype AffixProps = {\n children: string | JSX.Element;\n disabled?: boolean;\n type: 'prefix' | 'postfix';\n};\nconst Affix = React.memo(\n React.forwardRef(function Affix(props: AffixProps, ref: React.Ref<HTMLDivElement>) {\n const { children, disabled, type } = props;\n\n return (\n <div\n className={cn(\n 'group absolute top-0 flex h-full items-center justify-center px-2',\n // icon\n '[&_[data-taco=\"icon\"]]:!h-5 [&_[data-taco=\"icon\"]]:!w-5',\n {\n 'text-grey-300': disabled,\n 'text-grey-700': !disabled,\n 'left-0 [&>button]:!-ml-2': type === 'prefix',\n 'right-0 [&>button]:!-mr-2': type === 'postfix',\n }\n )}\n data-affix-type={type}\n ref={ref}>\n {children}\n </div>\n );\n })\n);\n\nexport type InputProps = InputWithoutDeprecatedFeaturesProps & {\n /** Shows a button within the input field */\n button?: React.ReactElement;\n /** Shows an icon within the input field */\n icon?: IconName | JSX.Element;\n};\n\nexport const Input = React.forwardRef(function LegacyInput(props: InputProps, ref: React.Ref<HTMLInputElement>) {\n const { button, icon, ...attributes } = props;\n\n let postfix;\n\n if (button) {\n const disabled = button.props.disabled || attributes.disabled;\n const buttonClassName = cn(\n 'items-center focus:z-10 flex justify-center rounded-l-none rounded-r h-full focus:rounded focus:outline-none',\n getButtonStateClasses(attributes.invalid, disabled),\n button.props.className\n );\n postfix = React.cloneElement(button, {\n className: buttonClassName,\n disabled,\n });\n } else if (icon) {\n postfix = typeof icon === 'string' ? <Icon name={icon} /> : icon;\n }\n\n return <InputWithoutDeprecatedFeatures {...attributes} postfix={attributes.postfix ?? postfix} ref={ref} />;\n});\n"],"names":["validSetSelectionRangeTypes","InputWithoutDeprecatedFeatures","React","props","ref","highlighted","invalid","onKeyDown","postfix","prefix","type","attributes","internalRef","useMergedRef","handleKeyDown","event","key","length","isPressingMetaKey","stopPropagation","includes","shiftKey","preventDefault","position","currentTarget","value","setSelectionRange","prefixRef","prefixRect","useBoundingClientRectListener","postfixRef","postfixRect","className","cn","getInputClasses","style","opacity","paddingLeft","width","undefined","paddingRight","Affix","children","disabled","Input","LegacyInput","button","icon","buttonClassName","getButtonStateClasses","Icon","name","_attributes$postfix"],"mappings":"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"}
1
+ {"version":3,"file":"Input.js","sources":["../../../../../../../src/components/Input/Input.tsx"],"sourcesContent":["import * as React from 'react';\nimport cn from 'clsx';\nimport { Icon, IconName } from '../Icon/Icon';\nimport { getButtonStateClasses, getInputClasses } from './util';\nimport { useBoundingClientRectListener } from '../../hooks/useBoundingClientRectListener';\nimport { useMergedRef } from '../../hooks/useMergedRef';\nimport { isPressingMetaKey } from '../../utils/keyboard';\n\nexport type InputWithoutDeprecatedFeaturesProps = Omit<React.InputHTMLAttributes<HTMLInputElement>, 'prefix'> & {\n /** Draws attention to the input by changing its style and making it visually prominent */\n highlighted?: boolean;\n /* Whether the input is in an invalid state */\n invalid?: boolean;\n postfix?: string | JSX.Element;\n prefix?: string | JSX.Element;\n};\n\nconst validSetSelectionRangeTypes = ['text', 'search', 'url', 'tel', 'password'];\n\nconst InputWithoutDeprecatedFeatures = React.forwardRef(function InputWithoutDeprecatedFeatures(\n props: InputWithoutDeprecatedFeaturesProps,\n ref: React.Ref<HTMLInputElement>\n) {\n const { highlighted, invalid, onKeyDown, postfix, prefix, type = 'text', ...attributes } = props;\n const internalRef = useMergedRef<HTMLInputElement>(ref);\n\n // input[type=number] does not support setSelectionRange by default, this adds support\n React.useLayoutEffect(() => {\n if (internalRef.current && type === 'number') {\n (function (fn) {\n internalRef.current.setSelectionRange = function (...args) {\n if (this.type === 'number') {\n this.type = 'text';\n fn.apply(this, args);\n this.type = 'number';\n } else {\n fn.apply(this, args);\n }\n };\n })(internalRef.current.setSelectionRange);\n }\n }, []);\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {\n // prevent any external keyboard shortcuts from executing while typing single characters in input\n if (event.key.length === 1 && !isPressingMetaKey(event)) {\n event.stopPropagation();\n }\n\n // home and end keys only navigate to the start/end of input value if the input container does not scroll\n // if it has scroll height then the browser reverts to native scrolling behaviour only\n // so we manually override it to ensure _our_ desired behaviour remains intact\n // only the 'text', 'search', 'url', 'tel', 'password' input types support setSelectionRange\n if (validSetSelectionRangeTypes.includes(type)) {\n if (!event.shiftKey && (event.key === 'Home' || event.key === 'End')) {\n event.preventDefault();\n const position = event.key === 'End' ? event.currentTarget.value.length : 0;\n event.currentTarget.setSelectionRange(position, position);\n }\n }\n\n if (typeof onKeyDown === 'function') {\n onKeyDown(event);\n }\n };\n\n const prefixRef = React.useRef<HTMLDivElement>(null);\n const prefixRect = useBoundingClientRectListener(prefixRef);\n const postfixRef = React.useRef<HTMLDivElement>(null);\n const postfixRect = useBoundingClientRectListener(postfixRef, [postfix]);\n\n const className = cn(\n getInputClasses(props),\n {\n 'pl-8': !!prefix,\n 'pr-8': !!postfix,\n },\n attributes.className\n );\n\n const typeAttributes: Partial<React.InputHTMLAttributes<HTMLInputElement>> = {\n type,\n };\n\n if (type === 'number') {\n typeAttributes.onWheelCapture = (event: React.WheelEvent<HTMLInputElement>) => {\n // blur is the only way to prevent scroll, so restore focus if it had it\n if (document.activeElement === event.currentTarget) {\n requestAnimationFrame(() => {\n (event.target as HTMLInputElement).focus();\n });\n }\n // blur the field on scroll - only way to prevent scroll\n event.currentTarget.blur();\n };\n }\n\n return (\n <div className=\"relative inline-flex h-fit w-full\" data-taco=\"input-container\" style={{ opacity: 0.999 }}>\n <input\n {...attributes}\n {...typeAttributes}\n aria-invalid={invalid}\n className={className}\n data-highlighted={highlighted}\n data-taco=\"input\"\n onKeyDown={handleKeyDown}\n ref={internalRef}\n style={{\n paddingLeft: prefixRect ? `${prefixRect.width - 1}px` : undefined,\n paddingRight: postfixRect ? `${postfixRect.width - 1}px` : undefined,\n }}\n />\n {prefix ? <Affix type=\"prefix\" children={prefix} disabled={attributes.disabled} ref={prefixRef} /> : null}\n {postfix ? <Affix type=\"postfix\" children={postfix} disabled={attributes.disabled} ref={postfixRef} /> : null}\n </div>\n );\n});\n\ntype AffixProps = {\n children: string | JSX.Element;\n disabled?: boolean;\n type: 'prefix' | 'postfix';\n};\nconst Affix = React.memo(\n React.forwardRef(function Affix(props: AffixProps, ref: React.Ref<HTMLDivElement>) {\n const { children, disabled, type } = props;\n\n return (\n <div\n className={cn(\n 'group absolute top-0 flex h-full items-center justify-center px-2',\n // icon\n '[&_[data-taco=\"icon\"]]:!h-5 [&_[data-taco=\"icon\"]]:!w-5',\n {\n 'text-grey-300': disabled,\n 'text-grey-700': !disabled,\n 'left-0 [&>button]:!-ml-2': type === 'prefix',\n 'right-0 [&>button]:!-mr-2': type === 'postfix',\n }\n )}\n data-affix-type={type}\n ref={ref}>\n {children}\n </div>\n );\n })\n);\n\nexport type InputProps = InputWithoutDeprecatedFeaturesProps & {\n /** Shows a button within the input field */\n button?: React.ReactElement;\n /** Shows an icon within the input field */\n icon?: IconName | JSX.Element;\n};\n\nexport const Input = React.forwardRef(function LegacyInput(props: InputProps, ref: React.Ref<HTMLInputElement>) {\n const { button, icon, ...attributes } = props;\n\n let postfix;\n\n if (button) {\n const disabled = button.props.disabled || attributes.disabled;\n const buttonClassName = cn(\n 'items-center focus:z-10 flex justify-center rounded-l-none rounded-r h-full focus:rounded focus:outline-none',\n getButtonStateClasses(attributes.invalid, disabled),\n button.props.className\n );\n postfix = React.cloneElement(button, {\n className: buttonClassName,\n disabled,\n });\n } else if (icon) {\n postfix = typeof icon === 'string' ? <Icon name={icon} /> : icon;\n }\n\n return <InputWithoutDeprecatedFeatures {...attributes} postfix={attributes.postfix ?? postfix} ref={ref} />;\n});\n"],"names":["validSetSelectionRangeTypes","InputWithoutDeprecatedFeatures","React","props","ref","highlighted","invalid","onKeyDown","postfix","prefix","type","attributes","internalRef","useMergedRef","current","fn","setSelectionRange","args","apply","handleKeyDown","event","key","length","isPressingMetaKey","stopPropagation","includes","shiftKey","preventDefault","position","currentTarget","value","prefixRef","prefixRect","useBoundingClientRectListener","postfixRef","postfixRect","className","cn","getInputClasses","typeAttributes","onWheelCapture","document","activeElement","requestAnimationFrame","target","focus","blur","style","opacity","paddingLeft","width","undefined","paddingRight","Affix","children","disabled","Input","LegacyInput","button","icon","buttonClassName","getButtonStateClasses","Icon","name","_attributes$postfix"],"mappings":"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"}
@@ -4,7 +4,9 @@ const getInputClasses = props => {
4
4
  const disabled = props.disabled || !!props['aria-disabled'];
5
5
  const readOnly = props.readOnly || !!props['aria-readonly'];
6
6
  const invalid = props.invalid || !!props['aria-invalid'];
7
- return cn('peer text-black text-sm border font-normal not-italic no-underline rounded flex items-center leading-6 px-2 relative w-full text-ellipsis transition-colors transition-opacity ease-in min-h-[theme(spacing.8)] focus-visible:yt-focus', {
7
+ return cn('peer text-black text-sm border font-normal not-italic no-underline rounded flex items-center leading-6 px-2 relative w-full text-ellipsis transition-colors transition-opacity ease-in min-h-[theme(spacing.8)] focus-visible:yt-focus',
8
+ // hide the arrow controls on input[type=number]
9
+ '[appearance:textfield] [&::-webkit-outer-spin-button]:appearance-none [&::-webkit-inner-spin-button]:appearance-none', {
8
10
  'bg-white': !props.highlighted && !readOnly,
9
11
  // default
10
12
  'border-grey-300 enabled:hover:border-grey-500 disabled:border-grey-200': !invalid,
@@ -1 +1 @@
1
- {"version":3,"file":"util.js","sources":["../../../../../../../src/components/Input/util.ts"],"sourcesContent":["import cn from 'clsx';\n\nexport const getInputClasses = props => {\n const disabled = props.disabled || !!props['aria-disabled'];\n const readOnly = props.readOnly || !!props['aria-readonly'];\n const invalid = props.invalid || !!props['aria-invalid'];\n\n return cn(\n 'peer text-black text-sm border font-normal not-italic no-underline rounded flex items-center leading-6 px-2 relative w-full text-ellipsis transition-colors transition-opacity ease-in min-h-[theme(spacing.8)] focus-visible:yt-focus',\n {\n 'bg-white': !props.highlighted && !readOnly,\n // default\n 'border-grey-300 enabled:hover:border-grey-500 disabled:border-grey-200': !invalid,\n // disabled\n 'text-opacity-25 cursor-not-allowed placeholder:text-grey-700': disabled,\n // highlighted\n 'bg-yellow-100/50': props.highlighted && disabled,\n 'bg-yellow-100': props.highlighted && !disabled,\n // invalid\n 'border-red-500 enabled:hover:border-red-700 disabled:border-red-500/50': invalid,\n // readOnly\n 'cursor-not-allowed text-black bg-grey-200': readOnly,\n }\n );\n};\n\nexport const getButtonStateClasses = (invalid: boolean | undefined, disabled = false): string => {\n if (invalid) {\n return cn('border border-red-500 group-peer-hover:enabled:border-red-700 transition-colors ease-in', {\n 'border-red-500/30': disabled,\n });\n }\n\n return 'border border-grey-300 group-peer-hover:enabled:border-grey-500 transition-colors transition-opacity ease-in';\n};\n"],"names":["getInputClasses","props","disabled","readOnly","invalid","cn","highlighted","getButtonStateClasses"],"mappings":";;MAEaA,eAAe,GAAGC,KAAK;EAChC,MAAMC,QAAQ,GAAGD,KAAK,CAACC,QAAQ,IAAI,CAAC,CAACD,KAAK,CAAC,eAAe,CAAC;EAC3D,MAAME,QAAQ,GAAGF,KAAK,CAACE,QAAQ,IAAI,CAAC,CAACF,KAAK,CAAC,eAAe,CAAC;EAC3D,MAAMG,OAAO,GAAGH,KAAK,CAACG,OAAO,IAAI,CAAC,CAACH,KAAK,CAAC,cAAc,CAAC;EAExD,OAAOI,EAAE,CACL,wOAAwO,EACxO;IACI,UAAU,EAAE,CAACJ,KAAK,CAACK,WAAW,IAAI,CAACH,QAAQ;;IAE3C,wEAAwE,EAAE,CAACC,OAAO;;IAElF,8DAA8D,EAAEF,QAAQ;;IAExE,kBAAkB,EAAED,KAAK,CAACK,WAAW,IAAIJ,QAAQ;IACjD,eAAe,EAAED,KAAK,CAACK,WAAW,IAAI,CAACJ,QAAQ;;IAE/C,wEAAwE,EAAEE,OAAO;;IAEjF,2CAA2C,EAAED;GAChD,CACJ;AACL;MAEaI,qBAAqB,GAAGA,CAACH,OAA4B,EAAEF,QAAQ,GAAG,KAAK;EAChF,IAAIE,OAAO,EAAE;IACT,OAAOC,EAAE,CAAC,yFAAyF,EAAE;MACjG,mBAAmB,EAAEH;KACxB,CAAC;;EAGN,OAAO,8GAA8G;AACzH;;;;"}
1
+ {"version":3,"file":"util.js","sources":["../../../../../../../src/components/Input/util.ts"],"sourcesContent":["import cn from 'clsx';\n\nexport const getInputClasses = props => {\n const disabled = props.disabled || !!props['aria-disabled'];\n const readOnly = props.readOnly || !!props['aria-readonly'];\n const invalid = props.invalid || !!props['aria-invalid'];\n\n return cn(\n 'peer text-black text-sm border font-normal not-italic no-underline rounded flex items-center leading-6 px-2 relative w-full text-ellipsis transition-colors transition-opacity ease-in min-h-[theme(spacing.8)] focus-visible:yt-focus',\n // hide the arrow controls on input[type=number]\n '[appearance:textfield] [&::-webkit-outer-spin-button]:appearance-none [&::-webkit-inner-spin-button]:appearance-none',\n {\n 'bg-white': !props.highlighted && !readOnly,\n // default\n 'border-grey-300 enabled:hover:border-grey-500 disabled:border-grey-200': !invalid,\n // disabled\n 'text-opacity-25 cursor-not-allowed placeholder:text-grey-700': disabled,\n // highlighted\n 'bg-yellow-100/50': props.highlighted && disabled,\n 'bg-yellow-100': props.highlighted && !disabled,\n // invalid\n 'border-red-500 enabled:hover:border-red-700 disabled:border-red-500/50': invalid,\n // readOnly\n 'cursor-not-allowed text-black bg-grey-200': readOnly,\n }\n );\n};\n\nexport const getButtonStateClasses = (invalid: boolean | undefined, disabled = false): string => {\n if (invalid) {\n return cn('border border-red-500 group-peer-hover:enabled:border-red-700 transition-colors ease-in', {\n 'border-red-500/30': disabled,\n });\n }\n\n return 'border border-grey-300 group-peer-hover:enabled:border-grey-500 transition-colors transition-opacity ease-in';\n};\n"],"names":["getInputClasses","props","disabled","readOnly","invalid","cn","highlighted","getButtonStateClasses"],"mappings":";;MAEaA,eAAe,GAAGC,KAAK;EAChC,MAAMC,QAAQ,GAAGD,KAAK,CAACC,QAAQ,IAAI,CAAC,CAACD,KAAK,CAAC,eAAe,CAAC;EAC3D,MAAME,QAAQ,GAAGF,KAAK,CAACE,QAAQ,IAAI,CAAC,CAACF,KAAK,CAAC,eAAe,CAAC;EAC3D,MAAMG,OAAO,GAAGH,KAAK,CAACG,OAAO,IAAI,CAAC,CAACH,KAAK,CAAC,cAAc,CAAC;EAExD,OAAOI,EAAE,CACL,wOAAwO;;EAExO,sHAAsH,EACtH;IACI,UAAU,EAAE,CAACJ,KAAK,CAACK,WAAW,IAAI,CAACH,QAAQ;;IAE3C,wEAAwE,EAAE,CAACC,OAAO;;IAElF,8DAA8D,EAAEF,QAAQ;;IAExE,kBAAkB,EAAED,KAAK,CAACK,WAAW,IAAIJ,QAAQ;IACjD,eAAe,EAAED,KAAK,CAACK,WAAW,IAAI,CAACJ,QAAQ;;IAE/C,wEAAwE,EAAEE,OAAO;;IAEjF,2CAA2C,EAAED;GAChD,CACJ;AACL;MAEaI,qBAAqB,GAAGA,CAACH,OAA4B,EAAEF,QAAQ,GAAG,KAAK;EAChF,IAAIE,OAAO,EAAE;IACT,OAAOC,EAAE,CAAC,yFAAyF,EAAE;MACjG,mBAAmB,EAAEH;KACxB,CAAC;;EAGN,OAAO,8GAA8G;AACzH;;;;"}
@@ -0,0 +1,70 @@
1
+ import React__default from 'react';
2
+ import { useMergedRef } from '../../hooks/useMergedRef.js';
3
+ import { FocusScope } from '@react-aria/focus';
4
+ import { fixedForwardRef } from '../../types.js';
5
+ import { useReport } from './useReport.js';
6
+ import { Header } from './components/Header/Header.js';
7
+ import { Body } from './components/Body/Body.js';
8
+ import { Footer } from './components/Footer/Footer.js';
9
+ import { Summary } from './components/Footer/Summary.js';
10
+ import { Toolbar } from './components/Toolbar/Toolbar.js';
11
+ import { useStylesheet } from './styles/useStylesheet.js';
12
+ import { useTableRenderer } from './util/useTableRenderer.js';
13
+ import { useTableGlobalShortcuts } from './util/useTableGlobalShortcuts.js';
14
+
15
+ function Column(_) {
16
+ return null;
17
+ }
18
+ function Group(_) {
19
+ return null;
20
+ }
21
+ const Report = /*#__PURE__*/fixedForwardRef(function Report(props, ref) {
22
+ var _report$state$groupin;
23
+ const tableRef = useMergedRef(ref);
24
+ const report = useReport(props, tableRef);
25
+ const renderer = useTableRenderer(report.instance, tableRef, props.defaultRowActiveIndex);
26
+ const stylesheet = useStylesheet(props.id, report.instance);
27
+ useTableGlobalShortcuts(report.instance, tableRef, renderer.scrollToIndex);
28
+ const handleFocus = report.meta.rowActive.rowActiveIndex === undefined ? event => {
29
+ report.meta.rowActive.handleFocus(event, report.length, renderer.scrollToIndex);
30
+ } : undefined;
31
+ return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, stylesheet, /*#__PURE__*/React__default.createElement(Toolbar, {
32
+ customSettings: props.customSettings,
33
+ left: props.toolbarLeft,
34
+ length: report.length,
35
+ right: props.toolbarRight,
36
+ scrollToIndex: renderer.scrollToIndex,
37
+ table: report.instance,
38
+ tableId: props.id,
39
+ tableRef: tableRef
40
+ }), props.toolbarPanel ? /*#__PURE__*/React__default.createElement("div", {
41
+ className: "mb-4"
42
+ }, props.toolbarPanel) : undefined, /*#__PURE__*/React__default.createElement(FocusScope, null, /*#__PURE__*/React__default.createElement("table", {
43
+ id: props.id,
44
+ "data-taco": "report",
45
+ "data-table-font-size": report.meta.fontSize.size,
46
+ "data-table-horizontally-scrolled": report.meta.columnFreezing.isHorizontallyScrolled ? true : undefined,
47
+ "data-table-pause-hover": report.meta.rowActive.isHoverStatePaused ? true : undefined,
48
+ "data-table-resizing": report.state.columnSizingInfo.isResizingColumn ? true : undefined,
49
+ "data-table-row-height": report.meta.rowHeight.height,
50
+ "data-table-grouped": !!((_report$state$groupin = report.state.grouping) !== null && _report$state$groupin !== void 0 && _report$state$groupin.length),
51
+ onFocus: handleFocus,
52
+ onScroll: report.meta.columnFreezing.handleScroll,
53
+ ref: tableRef,
54
+ tabIndex: -1
55
+ }, /*#__PURE__*/React__default.createElement("thead", null, report.instance.getHeaderGroups().map(headerGroup => ( /*#__PURE__*/React__default.createElement("tr", {
56
+ key: headerGroup.id
57
+ }, headerGroup.headers.map(Header))))), /*#__PURE__*/React__default.createElement(Body, {
58
+ length: report.length,
59
+ table: report.instance,
60
+ style: renderer.style
61
+ }, renderer.rows), report.meta.footer.isEnabled ? ( /*#__PURE__*/React__default.createElement("tfoot", null, /*#__PURE__*/React__default.createElement("tr", null, report.instance.getFooterGroups()[0].headers.map(Footer)))) : null), report.meta.footer.isEnabled ? /*#__PURE__*/React__default.createElement(Summary, {
62
+ length: report.length,
63
+ table: report.instance
64
+ }) : null));
65
+ });
66
+ Report.Column = Column;
67
+ Report.Group = Group;
68
+
69
+ export { Report };
70
+ //# sourceMappingURL=Report.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Report.js","sources":["../../../../../../../src/components/Report/Report.tsx"],"sourcesContent":["import React from 'react';\nimport { FocusScope } from '@react-aria/focus';\nimport { fixedForwardRef } from '../../types';\nimport { useMergedRef } from '../../hooks/useMergedRef';\nimport { useReport } from './useReport';\nimport { ReportColumnProps, ReportGroupProps, ReportProps } from './types';\nimport { Header } from './components/Header/Header';\nimport { Body } from './components/Body/Body';\nimport { Footer } from './components/Footer/Footer';\nimport { Summary } from './components/Footer/Summary';\nimport { Toolbar } from './components/Toolbar/Toolbar';\nimport { TableRef } from '../../primitives/Table/types';\nimport { useStylesheet } from './styles/useStylesheet';\nimport { useTableRenderer } from './util/useTableRenderer';\nimport { useTableGlobalShortcuts } from './util/useTableGlobalShortcuts';\nimport './style.css';\n\nfunction Column<TType = unknown>(_: ReportColumnProps<TType>) {\n return null;\n}\n\nfunction Group(_: ReportGroupProps) {\n return null;\n}\n\nexport const Report = fixedForwardRef<TableRef, ReportProps>(function Report<TType = unknown>(\n props: ReportProps<TType>,\n ref: React.Ref<TableRef>\n) {\n const tableRef = useMergedRef<TableRef>(ref);\n const report = useReport<TType>(props, tableRef);\n const renderer = useTableRenderer(report.instance, tableRef, props.defaultRowActiveIndex);\n const stylesheet = useStylesheet(props.id, report.instance);\n useTableGlobalShortcuts(report.instance, tableRef, renderer.scrollToIndex);\n\n const handleFocus =\n report.meta.rowActive.rowActiveIndex === undefined\n ? (event: React.FocusEvent) => {\n report.meta.rowActive.handleFocus(event, report.length, renderer.scrollToIndex);\n }\n : undefined;\n\n return (\n <>\n {stylesheet}\n <Toolbar\n customSettings={props.customSettings}\n left={props.toolbarLeft}\n length={report.length}\n right={props.toolbarRight}\n scrollToIndex={renderer.scrollToIndex}\n table={report.instance}\n tableId={props.id}\n tableRef={tableRef}\n />\n {props.toolbarPanel ? <div className=\"mb-4\">{props.toolbarPanel}</div> : undefined}\n <FocusScope>\n <table\n id={props.id}\n data-taco=\"report\"\n data-table-font-size={report.meta.fontSize.size}\n data-table-horizontally-scrolled={report.meta.columnFreezing.isHorizontallyScrolled ? true : undefined}\n data-table-pause-hover={report.meta.rowActive.isHoverStatePaused ? true : undefined}\n data-table-resizing={report.state.columnSizingInfo.isResizingColumn ? true : undefined}\n data-table-row-height={report.meta.rowHeight.height}\n data-table-grouped={!!report.state.grouping?.length}\n onFocus={handleFocus}\n onScroll={report.meta.columnFreezing.handleScroll}\n ref={tableRef}\n tabIndex={-1}>\n <thead>\n {report.instance.getHeaderGroups().map(headerGroup => (\n <tr key={headerGroup.id}>{headerGroup.headers.map(Header)}</tr>\n ))}\n </thead>\n <Body length={report.length} table={report.instance} style={renderer.style}>\n {renderer.rows}\n </Body>\n {report.meta.footer.isEnabled ? (\n <tfoot>\n <tr>{report.instance.getFooterGroups()[0].headers.map(Footer)}</tr>\n </tfoot>\n ) : null}\n </table>\n {report.meta.footer.isEnabled ? <Summary length={report.length} table={report.instance} /> : null}\n </FocusScope>\n </>\n );\n}) as (<TType = unknown>(props: ReportProps<TType> & React.RefAttributes<TableRef>) => JSX.Element) & {\n Column: typeof Column;\n Group: typeof Group;\n};\nReport.Column = Column;\nReport.Group = Group;\n\nexport * from './types';\n"],"names":["Column","_","Group","Report","fixedForwardRef","props","ref","tableRef","useMergedRef","report","useReport","renderer","useTableRenderer","instance","defaultRowActiveIndex","stylesheet","useStylesheet","id","useTableGlobalShortcuts","scrollToIndex","handleFocus","meta","rowActive","rowActiveIndex","undefined","event","length","React","Toolbar","customSettings","left","toolbarLeft","right","toolbarRight","table","tableId","toolbarPanel","className","FocusScope","fontSize","size","columnFreezing","isHorizontallyScrolled","isHoverStatePaused","state","columnSizingInfo","isResizingColumn","rowHeight","height","_report$state$groupin","grouping","onFocus","onScroll","handleScroll","tabIndex","getHeaderGroups","map","headerGroup","key","headers","Header","Body","style","rows","footer","isEnabled","getFooterGroups","Footer","Summary"],"mappings":"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"}
@@ -0,0 +1,61 @@
1
+ import React__default from 'react';
2
+ import { useAugmentedFocusManager } from './util.js';
3
+
4
+ function Body(props) {
5
+ const {
6
+ enableArrowKeyFocusing = false,
7
+ length,
8
+ table,
9
+ ...attributes
10
+ } = props;
11
+ const ref = React__default.useRef(null);
12
+ const focusManager = useAugmentedFocusManager();
13
+ const tableMeta = table.options.meta;
14
+ // some rows won't have anything focusable in, and we don't want tab to move between rows in that case
15
+ const focusableElementsInRowCountRef = React__default.useRef(0);
16
+ const handleKeyDown = event => {
17
+ if (event.isDefaultPrevented() || event.isPropagationStopped()) {
18
+ return;
19
+ }
20
+ if (tableMeta.rowActive.rowActiveIndex !== undefined) {
21
+ const isFirstRow = tableMeta.rowActive.rowActiveIndex === 0;
22
+ const isLastRow = tableMeta.rowActive.rowActiveIndex === length - 1;
23
+ if (event.key === 'Tab' || enableArrowKeyFocusing && (event.key === 'ArrowLeft' || event.key === 'ArrowRight')) {
24
+ tableMeta.rowActive.setHoverStatePaused(true);
25
+ const focusedElement = event.shiftKey || event.key === 'ArrowLeft' ? focusManager.focusPrevious() : focusManager.focusNext();
26
+ if (focusedElement) {
27
+ // override default behaviour, since we're handling focus internally now
28
+ event.preventDefault();
29
+ focusableElementsInRowCountRef.current = focusableElementsInRowCountRef.current + 1;
30
+ return;
31
+ }
32
+ if (event.shiftKey || event.key === 'ArrowLeft') {
33
+ if (!isFirstRow && focusableElementsInRowCountRef.current !== 0) {
34
+ // there are no previous elements to focus, go up a row or go outside the table
35
+ // but only if there are actually any focusable elements in the row
36
+ event.preventDefault();
37
+ tableMeta.rowActive.setRowActiveIndex(tableMeta.rowActive.rowActiveIndex - 1);
38
+ focusableElementsInRowCountRef.current = 0;
39
+ requestAnimationFrame(() => focusManager.focusLast());
40
+ }
41
+ } else {
42
+ if (!isLastRow && focusableElementsInRowCountRef.current !== 0) {
43
+ // there are no next elements to focus, go down a row or go outside the table
44
+ // but only if there are actually any focusable elements in the row
45
+ event.preventDefault();
46
+ tableMeta.rowActive.setRowActiveIndex(tableMeta.rowActive.rowActiveIndex + 1);
47
+ focusableElementsInRowCountRef.current = 0;
48
+ requestAnimationFrame(() => focusManager.focusFirst());
49
+ }
50
+ }
51
+ }
52
+ }
53
+ };
54
+ return /*#__PURE__*/React__default.createElement("tbody", Object.assign({}, attributes, {
55
+ onKeyDown: handleKeyDown,
56
+ ref: ref
57
+ }));
58
+ }
59
+
60
+ export { Body };
61
+ //# sourceMappingURL=Body.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Body.js","sources":["../../../../../../../../../src/components/Report/components/Body/Body.tsx"],"sourcesContent":["import React from 'react';\nimport { Table as ReactTable, TableMeta as ReactTableMeta } from '@tanstack/react-table';\nimport { useAugmentedFocusManager } from './util';\n\ntype BodyProps<TType = unknown> = React.HTMLAttributes<HTMLTableSectionElement> & {\n enableArrowKeyFocusing?: boolean;\n length: number;\n table: ReactTable<TType>;\n};\n\nexport function Body<TType = unknown>(props: BodyProps<TType>) {\n const { enableArrowKeyFocusing = false, length, table, ...attributes } = props;\n const ref = React.useRef<HTMLTableSectionElement>(null);\n const focusManager = useAugmentedFocusManager();\n const tableMeta = table.options.meta as ReactTableMeta<TType>;\n\n // some rows won't have anything focusable in, and we don't want tab to move between rows in that case\n const focusableElementsInRowCountRef = React.useRef(0);\n\n const handleKeyDown = (event: React.KeyboardEvent) => {\n if (event.isDefaultPrevented() || event.isPropagationStopped()) {\n return;\n }\n\n if (tableMeta.rowActive.rowActiveIndex !== undefined) {\n const isFirstRow = tableMeta.rowActive.rowActiveIndex === 0;\n const isLastRow = tableMeta.rowActive.rowActiveIndex === length - 1;\n\n if (event.key === 'Tab' || (enableArrowKeyFocusing && (event.key === 'ArrowLeft' || event.key === 'ArrowRight'))) {\n tableMeta.rowActive.setHoverStatePaused(true);\n\n const focusedElement =\n event.shiftKey || event.key === 'ArrowLeft' ? focusManager.focusPrevious() : focusManager.focusNext();\n\n if (focusedElement) {\n // override default behaviour, since we're handling focus internally now\n event.preventDefault();\n focusableElementsInRowCountRef.current = focusableElementsInRowCountRef.current + 1;\n return;\n }\n\n if (event.shiftKey || event.key === 'ArrowLeft') {\n if (!isFirstRow && focusableElementsInRowCountRef.current !== 0) {\n // there are no previous elements to focus, go up a row or go outside the table\n // but only if there are actually any focusable elements in the row\n event.preventDefault();\n tableMeta.rowActive.setRowActiveIndex(tableMeta.rowActive.rowActiveIndex - 1);\n focusableElementsInRowCountRef.current = 0;\n requestAnimationFrame(() => focusManager.focusLast());\n }\n } else {\n if (!isLastRow && focusableElementsInRowCountRef.current !== 0) {\n // there are no next elements to focus, go down a row or go outside the table\n // but only if there are actually any focusable elements in the row\n event.preventDefault();\n tableMeta.rowActive.setRowActiveIndex(tableMeta.rowActive.rowActiveIndex + 1);\n focusableElementsInRowCountRef.current = 0;\n requestAnimationFrame(() => focusManager.focusFirst());\n }\n }\n }\n }\n };\n\n return <tbody {...attributes} onKeyDown={handleKeyDown} ref={ref} />;\n}\n"],"names":["Body","props","enableArrowKeyFocusing","length","table","attributes","ref","React","useRef","focusManager","useAugmentedFocusManager","tableMeta","options","meta","focusableElementsInRowCountRef","handleKeyDown","event","isDefaultPrevented","isPropagationStopped","rowActive","rowActiveIndex","undefined","isFirstRow","isLastRow","key","setHoverStatePaused","focusedElement","shiftKey","focusPrevious","focusNext","preventDefault","current","setRowActiveIndex","requestAnimationFrame","focusLast","focusFirst","onKeyDown"],"mappings":";;;SAUgBA,IAAIA,CAAkBC,KAAuB;EACzD,MAAM;IAAEC,sBAAsB,GAAG,KAAK;IAAEC,MAAM;IAAEC,KAAK;IAAE,GAAGC;GAAY,GAAGJ,KAAK;EAC9E,MAAMK,GAAG,GAAGC,cAAK,CAACC,MAAM,CAA0B,IAAI,CAAC;EACvD,MAAMC,YAAY,GAAGC,wBAAwB,EAAE;EAC/C,MAAMC,SAAS,GAAGP,KAAK,CAACQ,OAAO,CAACC,IAA6B;;EAG7D,MAAMC,8BAA8B,GAAGP,cAAK,CAACC,MAAM,CAAC,CAAC,CAAC;EAEtD,MAAMO,aAAa,GAAIC,KAA0B;IAC7C,IAAIA,KAAK,CAACC,kBAAkB,EAAE,IAAID,KAAK,CAACE,oBAAoB,EAAE,EAAE;MAC5D;;IAGJ,IAAIP,SAAS,CAACQ,SAAS,CAACC,cAAc,KAAKC,SAAS,EAAE;MAClD,MAAMC,UAAU,GAAGX,SAAS,CAACQ,SAAS,CAACC,cAAc,KAAK,CAAC;MAC3D,MAAMG,SAAS,GAAGZ,SAAS,CAACQ,SAAS,CAACC,cAAc,KAAKjB,MAAM,GAAG,CAAC;MAEnE,IAAIa,KAAK,CAACQ,GAAG,KAAK,KAAK,IAAKtB,sBAAsB,KAAKc,KAAK,CAACQ,GAAG,KAAK,WAAW,IAAIR,KAAK,CAACQ,GAAG,KAAK,YAAY,CAAE,EAAE;QAC9Gb,SAAS,CAACQ,SAAS,CAACM,mBAAmB,CAAC,IAAI,CAAC;QAE7C,MAAMC,cAAc,GAChBV,KAAK,CAACW,QAAQ,IAAIX,KAAK,CAACQ,GAAG,KAAK,WAAW,GAAGf,YAAY,CAACmB,aAAa,EAAE,GAAGnB,YAAY,CAACoB,SAAS,EAAE;QAEzG,IAAIH,cAAc,EAAE;;UAEhBV,KAAK,CAACc,cAAc,EAAE;UACtBhB,8BAA8B,CAACiB,OAAO,GAAGjB,8BAA8B,CAACiB,OAAO,GAAG,CAAC;UACnF;;QAGJ,IAAIf,KAAK,CAACW,QAAQ,IAAIX,KAAK,CAACQ,GAAG,KAAK,WAAW,EAAE;UAC7C,IAAI,CAACF,UAAU,IAAIR,8BAA8B,CAACiB,OAAO,KAAK,CAAC,EAAE;;;YAG7Df,KAAK,CAACc,cAAc,EAAE;YACtBnB,SAAS,CAACQ,SAAS,CAACa,iBAAiB,CAACrB,SAAS,CAACQ,SAAS,CAACC,cAAc,GAAG,CAAC,CAAC;YAC7EN,8BAA8B,CAACiB,OAAO,GAAG,CAAC;YAC1CE,qBAAqB,CAAC,MAAMxB,YAAY,CAACyB,SAAS,EAAE,CAAC;;SAE5D,MAAM;UACH,IAAI,CAACX,SAAS,IAAIT,8BAA8B,CAACiB,OAAO,KAAK,CAAC,EAAE;;;YAG5Df,KAAK,CAACc,cAAc,EAAE;YACtBnB,SAAS,CAACQ,SAAS,CAACa,iBAAiB,CAACrB,SAAS,CAACQ,SAAS,CAACC,cAAc,GAAG,CAAC,CAAC;YAC7EN,8BAA8B,CAACiB,OAAO,GAAG,CAAC;YAC1CE,qBAAqB,CAAC,MAAMxB,YAAY,CAAC0B,UAAU,EAAE,CAAC;;;;;GAKzE;EAED,oBAAO5B,wDAAWF,UAAU;IAAE+B,SAAS,EAAErB,aAAa;IAAET,GAAG,EAAEA;KAAO;AACxE;;;;"}
@@ -0,0 +1,22 @@
1
+ import { useFocusManager } from '@react-aria/focus';
2
+
3
+ const FOCUS_MANAGER_OPTIONS = {
4
+ accept: element => !!element.closest('tr[data-row-active="true"]'),
5
+ tabbable: true
6
+ };
7
+ function useAugmentedFocusManager() {
8
+ const focusManager = useFocusManager();
9
+ const focusPrevious = () => focusManager.focusPrevious(FOCUS_MANAGER_OPTIONS);
10
+ const focusNext = () => focusManager.focusNext(FOCUS_MANAGER_OPTIONS);
11
+ const focusFirst = () => focusManager.focusFirst(FOCUS_MANAGER_OPTIONS);
12
+ const focusLast = () => focusManager.focusLast(FOCUS_MANAGER_OPTIONS);
13
+ return {
14
+ focusPrevious,
15
+ focusNext,
16
+ focusFirst,
17
+ focusLast
18
+ };
19
+ }
20
+
21
+ export { useAugmentedFocusManager };
22
+ //# sourceMappingURL=util.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"util.js","sources":["../../../../../../../../../src/components/Report/components/Body/util.ts"],"sourcesContent":["import { useFocusManager } from '@react-aria/focus';\n\nconst FOCUS_MANAGER_OPTIONS = {\n accept: (element: Element) => !!element.closest('tr[data-row-active=\"true\"]'),\n tabbable: true,\n};\n\nexport function useAugmentedFocusManager() {\n const focusManager = useFocusManager();\n\n const focusPrevious = () => focusManager.focusPrevious(FOCUS_MANAGER_OPTIONS);\n const focusNext = () => focusManager.focusNext(FOCUS_MANAGER_OPTIONS);\n const focusFirst = () => focusManager.focusFirst(FOCUS_MANAGER_OPTIONS);\n const focusLast = () => focusManager.focusLast(FOCUS_MANAGER_OPTIONS);\n\n return {\n focusPrevious,\n focusNext,\n focusFirst,\n focusLast,\n };\n}\n"],"names":["FOCUS_MANAGER_OPTIONS","accept","element","closest","tabbable","useAugmentedFocusManager","focusManager","useFocusManager","focusPrevious","focusNext","focusFirst","focusLast"],"mappings":";;AAEA,MAAMA,qBAAqB,GAAG;EAC1BC,MAAM,EAAGC,OAAgB,IAAK,CAAC,CAACA,OAAO,CAACC,OAAO,CAAC,4BAA4B,CAAC;EAC7EC,QAAQ,EAAE;CACb;SAEeC,wBAAwBA;EACpC,MAAMC,YAAY,GAAGC,eAAe,EAAE;EAEtC,MAAMC,aAAa,GAAGA,MAAMF,YAAY,CAACE,aAAa,CAACR,qBAAqB,CAAC;EAC7E,MAAMS,SAAS,GAAGA,MAAMH,YAAY,CAACG,SAAS,CAACT,qBAAqB,CAAC;EACrE,MAAMU,UAAU,GAAGA,MAAMJ,YAAY,CAACI,UAAU,CAACV,qBAAqB,CAAC;EACvE,MAAMW,SAAS,GAAGA,MAAML,YAAY,CAACK,SAAS,CAACX,qBAAqB,CAAC;EAErE,OAAO;IACHQ,aAAa;IACbC,SAAS;IACTC,UAAU;IACVC;GACH;AACL;;;;"}
@@ -0,0 +1,32 @@
1
+ import React__default from 'react';
2
+ import { isInternalColumn } from '../../../../primitives/Table/useTable/util/columns.js';
3
+ import { useSearchHighlighting } from './util.js';
4
+ import { GroupedCell } from './GroupedCell.js';
5
+ import { DisplayCell } from './DisplayCell.js';
6
+
7
+ function Cell(props) {
8
+ const {
9
+ cell,
10
+ index
11
+ } = props;
12
+ const cellRef = React__default.useRef(null);
13
+ const isHighlighted = useSearchHighlighting(cell, index, cellRef);
14
+ if ((cell.getIsAggregated() || cell.getIsPlaceholder()) && !isInternalColumn(cell.column.id)) {
15
+ // we choose not to show aggregated cells in group rows and we don't show
16
+ // placeholder cells in normal rows (because we don't show the grouped column)
17
+ // so just straight up abort and return nothing at all - no <td>
18
+ return null;
19
+ }
20
+ const cellProps = {
21
+ cell,
22
+ cellRef,
23
+ isHighlighted
24
+ };
25
+ if (cell.getIsGrouped()) {
26
+ return /*#__PURE__*/React__default.createElement(GroupedCell, Object.assign({}, cellProps));
27
+ }
28
+ return /*#__PURE__*/React__default.createElement(DisplayCell, Object.assign({}, cellProps));
29
+ }
30
+
31
+ export { Cell };
32
+ //# sourceMappingURL=Cell.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Cell.js","sources":["../../../../../../../../../src/components/Report/components/Cell/Cell.tsx"],"sourcesContent":["import React from 'react';\nimport { Cell as ReactTableCell } from '@tanstack/react-table';\nimport { isInternalColumn } from '../../../../primitives/Table/useTable/util/columns';\nimport { GroupedCell } from './GroupedCell';\nimport { DisplayCell } from './DisplayCell';\nimport { useSearchHighlighting } from './util';\n\ntype CellProps<TType = unknown> = {\n cell: ReactTableCell<TType, unknown>;\n index: number;\n};\n\nexport function Cell<TType = unknown>(props: CellProps<TType>) {\n const { cell, index } = props;\n const cellRef = React.useRef<HTMLTableCellElement>(null);\n const isHighlighted = useSearchHighlighting(cell, index, cellRef);\n\n if ((cell.getIsAggregated() || cell.getIsPlaceholder()) && !isInternalColumn(cell.column.id)) {\n // we choose not to show aggregated cells in group rows and we don't show\n // placeholder cells in normal rows (because we don't show the grouped column)\n // so just straight up abort and return nothing at all - no <td>\n return null;\n }\n\n const cellProps = {\n cell,\n cellRef,\n isHighlighted,\n };\n\n if (cell.getIsGrouped()) {\n return <GroupedCell<TType> {...cellProps} />;\n }\n\n return <DisplayCell<TType> {...cellProps} />;\n}\n"],"names":["Cell","props","cell","index","cellRef","React","useRef","isHighlighted","useSearchHighlighting","getIsAggregated","getIsPlaceholder","isInternalColumn","column","id","cellProps","getIsGrouped","GroupedCell","DisplayCell"],"mappings":";;;;;;SAYgBA,IAAIA,CAAkBC,KAAuB;EACzD,MAAM;IAAEC,IAAI;IAAEC;GAAO,GAAGF,KAAK;EAC7B,MAAMG,OAAO,GAAGC,cAAK,CAACC,MAAM,CAAuB,IAAI,CAAC;EACxD,MAAMC,aAAa,GAAGC,qBAAqB,CAACN,IAAI,EAAEC,KAAK,EAAEC,OAAO,CAAC;EAEjE,IAAI,CAACF,IAAI,CAACO,eAAe,EAAE,IAAIP,IAAI,CAACQ,gBAAgB,EAAE,KAAK,CAACC,gBAAgB,CAACT,IAAI,CAACU,MAAM,CAACC,EAAE,CAAC,EAAE;;;;IAI1F,OAAO,IAAI;;EAGf,MAAMC,SAAS,GAAG;IACdZ,IAAI;IACJE,OAAO;IACPG;GACH;EAED,IAAIL,IAAI,CAACa,YAAY,EAAE,EAAE;IACrB,oBAAOV,6BAACW,WAAW,oBAAYF,SAAS,EAAI;;EAGhD,oBAAOT,6BAACY,WAAW,oBAAYH,SAAS,EAAI;AAChD;;;;"}
@@ -0,0 +1,23 @@
1
+ import React__default from 'react';
2
+ import { flexRender } from '@tanstack/react-table';
3
+ import { getCellAttributes } from './util.js';
4
+
5
+ const DisplayCell = /*#__PURE__*/React__default.memo(function DisplayCell(props) {
6
+ const {
7
+ cell,
8
+ cellRef,
9
+ isHighlighted
10
+ } = props;
11
+ const columnMeta = cell.column.columnDef.meta;
12
+ const attributes = getCellAttributes(cell, isHighlighted);
13
+ const isTruncated = !!columnMeta.enableTruncate;
14
+ const content = flexRender(cell.column.columnDef.cell, cell.getContext());
15
+ return /*#__PURE__*/React__default.createElement("td", Object.assign({}, attributes, {
16
+ ref: cellRef
17
+ }), isTruncated ? /*#__PURE__*/React__default.createElement("span", {
18
+ className: "truncate print:overflow-visible print:whitespace-normal"
19
+ }, content) : content);
20
+ });
21
+
22
+ export { DisplayCell };
23
+ //# sourceMappingURL=DisplayCell.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DisplayCell.js","sources":["../../../../../../../../../src/components/Report/components/Cell/DisplayCell.tsx"],"sourcesContent":["import React from 'react';\nimport { Cell as ReactTableCell, ColumnMeta as ReactTableColumnMeta, flexRender } from '@tanstack/react-table';\nimport { getCellAttributes } from './util';\n\nexport type DisplayCellProps<TType = unknown> = {\n cell: ReactTableCell<TType, unknown>;\n cellRef: React.RefObject<HTMLTableCellElement>;\n isHighlighted?: true | 'current';\n};\n\nexport const DisplayCell = React.memo(function DisplayCell<TType = unknown>(props: DisplayCellProps<TType>) {\n const { cell, cellRef, isHighlighted } = props;\n const columnMeta = cell.column.columnDef.meta as ReactTableColumnMeta<TType, unknown>;\n const attributes = getCellAttributes(cell, isHighlighted);\n const isTruncated = !!columnMeta.enableTruncate;\n const content = flexRender(cell.column.columnDef.cell, cell.getContext());\n\n return (\n <td {...attributes} ref={cellRef}>\n {isTruncated ? <span className=\"truncate print:overflow-visible print:whitespace-normal\">{content}</span> : content}\n </td>\n );\n}) as <TType = unknown>(props: DisplayCellProps<TType>) => JSX.Element;\n"],"names":["DisplayCell","React","memo","props","cell","cellRef","isHighlighted","columnMeta","column","columnDef","meta","attributes","getCellAttributes","isTruncated","enableTruncate","content","flexRender","getContext","ref","className"],"mappings":";;;;MAUaA,WAAW,gBAAGC,cAAK,CAACC,IAAI,CAAC,SAASF,WAAWA,CAAkBG,KAA8B;EACtG,MAAM;IAAEC,IAAI;IAAEC,OAAO;IAAEC;GAAe,GAAGH,KAAK;EAC9C,MAAMI,UAAU,GAAGH,IAAI,CAACI,MAAM,CAACC,SAAS,CAACC,IAA4C;EACrF,MAAMC,UAAU,GAAGC,iBAAiB,CAACR,IAAI,EAAEE,aAAa,CAAC;EACzD,MAAMO,WAAW,GAAG,CAAC,CAACN,UAAU,CAACO,cAAc;EAC/C,MAAMC,OAAO,GAAGC,UAAU,CAACZ,IAAI,CAACI,MAAM,CAACC,SAAS,CAACL,IAAI,EAAEA,IAAI,CAACa,UAAU,EAAE,CAAC;EAEzE,oBACIhB,qDAAQU,UAAU;IAAEO,GAAG,EAAEb;MACpBQ,WAAW,gBAAGZ;IAAMkB,SAAS,EAAC;KAA2DJ,OAAO,CAAQ,GAAGA,OAAO,CAClH;AAEb,CAAC;;;;"}
@@ -0,0 +1,58 @@
1
+ import React__default from 'react';
2
+ import { flexRender } from '@tanstack/react-table';
3
+ import { isInternalColumn } from '../../../../primitives/Table/useTable/util/columns.js';
4
+ import { RowContext } from '../Row/RowContext.js';
5
+ import { Actions } from '../Internal/Actions.js';
6
+ import { getCellAttributes } from './util.js';
7
+
8
+ function GroupedCell(props) {
9
+ const {
10
+ cell,
11
+ cellRef,
12
+ isHighlighted
13
+ } = props;
14
+ const tableMeta = cell.getContext().table.options.meta;
15
+ const attributes = getCellAttributes(cell, isHighlighted);
16
+ const {
17
+ isHovered,
18
+ rowIndex
19
+ } = React__default.useContext(RowContext);
20
+ const isActiveRow = tableMeta.rowActive.rowActiveIndex === rowIndex;
21
+ const canShowActions = isActiveRow || isHovered && !tableMeta.rowActive.isHoverStatePaused;
22
+ return /*#__PURE__*/React__default.createElement(MemoedGroupedCell, Object.assign({}, attributes, {
23
+ cell: cell,
24
+ cellRef: cellRef,
25
+ canShowActions: canShowActions,
26
+ fontSize: tableMeta.fontSize.size,
27
+ rowActions: tableMeta.rowGroups.rowActionsForGroup
28
+ }));
29
+ }
30
+ const MemoedGroupedCell = /*#__PURE__*/React__default.memo(function MemoedGroupedCell(props) {
31
+ const {
32
+ canShowActions,
33
+ cell,
34
+ cellRef,
35
+ fontSize,
36
+ rowActions,
37
+ ...attributes
38
+ } = props;
39
+ const colSpan = cell.row.getVisibleCells().filter(c => !isInternalColumn(c.column.id)).length - 1;
40
+ const subRows = cell.getContext().row.subRows.map(row => row.original);
41
+ return /*#__PURE__*/React__default.createElement("td", Object.assign({}, attributes, {
42
+ ref: cellRef,
43
+ style: {
44
+ gridColumn: `span ${colSpan} / span ${colSpan}`
45
+ }
46
+ }), /*#__PURE__*/React__default.createElement("span", {
47
+ className: "grow"
48
+ }, flexRender(cell.column.columnDef.cell, cell.getContext())), rowActions !== null && rowActions !== void 0 && rowActions.length && canShowActions ? ( /*#__PURE__*/React__default.createElement(Actions, {
49
+ actions: rowActions,
50
+ actionsLength: 4,
51
+ data: subRows,
52
+ fontSize: fontSize,
53
+ isActiveRow: true
54
+ })) : null);
55
+ });
56
+
57
+ export { GroupedCell };
58
+ //# sourceMappingURL=GroupedCell.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GroupedCell.js","sources":["../../../../../../../../../src/components/Report/components/Cell/GroupedCell.tsx"],"sourcesContent":["import React from 'react';\nimport { Cell as ReactTableCell, TableMeta as ReactTableMeta, flexRender } from '@tanstack/react-table';\nimport { RowContext } from '../Row/RowContext';\nimport { getCellAttributes } from './util';\nimport { TableFontSize, TableRowActionGroupRenderer } from '../../../../primitives/Table/types';\nimport { Actions as RowGroupActions } from '../Internal/Actions';\nimport { isInternalColumn } from '../../../../primitives/Table/useTable/util/columns';\n\nexport type GroupedCellProps<TType = unknown> = {\n cell: ReactTableCell<TType, unknown>;\n cellRef: React.RefObject<HTMLTableCellElement>;\n isHighlighted?: true | 'current';\n};\n\nexport function GroupedCell<TType = unknown>(props: GroupedCellProps<TType>) {\n const { cell, cellRef, isHighlighted } = props;\n const tableMeta = cell.getContext().table.options.meta as ReactTableMeta<TType>;\n const attributes = getCellAttributes(cell, isHighlighted);\n\n const { isHovered, rowIndex } = React.useContext(RowContext);\n const isActiveRow = tableMeta.rowActive.rowActiveIndex === rowIndex;\n const canShowActions = isActiveRow || (isHovered && !tableMeta.rowActive.isHoverStatePaused);\n\n return (\n <MemoedGroupedCell<TType>\n {...attributes}\n cell={cell}\n cellRef={cellRef}\n canShowActions={canShowActions}\n fontSize={tableMeta.fontSize.size}\n rowActions={tableMeta.rowGroups.rowActionsForGroup}\n />\n );\n}\n\ntype MemoedGroupedCellProps<TType = unknown> = React.TdHTMLAttributes<HTMLTableCellElement> & {\n cell: ReactTableCell<TType, unknown>;\n cellRef: React.RefObject<HTMLTableCellElement>;\n canShowActions: boolean;\n fontSize: TableFontSize;\n rowActions?: TableRowActionGroupRenderer<TType>[];\n};\n\nconst MemoedGroupedCell = React.memo(function MemoedGroupedCell<TType = unknown>(props: MemoedGroupedCellProps<TType>) {\n const { canShowActions, cell, cellRef, fontSize, rowActions, ...attributes } = props;\n\n const colSpan = cell.row.getVisibleCells().filter(c => !isInternalColumn(c.column.id)).length - 1;\n const subRows = cell.getContext().row.subRows.map(row => row.original);\n\n return (\n <td {...attributes} ref={cellRef} style={{ gridColumn: `span ${colSpan} / span ${colSpan}` }}>\n <span className=\"grow\">{flexRender(cell.column.columnDef.cell, cell.getContext())}</span>\n {rowActions?.length && canShowActions ? (\n <RowGroupActions actions={rowActions} actionsLength={4} data={subRows} fontSize={fontSize} isActiveRow />\n ) : null}\n </td>\n );\n}) as <TType = unknown>(props: MemoedGroupedCellProps<TType>) => JSX.Element;\n"],"names":["GroupedCell","props","cell","cellRef","isHighlighted","tableMeta","getContext","table","options","meta","attributes","getCellAttributes","isHovered","rowIndex","React","useContext","RowContext","isActiveRow","rowActive","rowActiveIndex","canShowActions","isHoverStatePaused","MemoedGroupedCell","fontSize","size","rowActions","rowGroups","rowActionsForGroup","memo","colSpan","row","getVisibleCells","filter","c","isInternalColumn","column","id","length","subRows","map","original","ref","style","gridColumn","className","flexRender","columnDef","RowGroupActions","actions","actionsLength","data"],"mappings":";;;;;;;SAcgBA,WAAWA,CAAkBC,KAA8B;EACvE,MAAM;IAAEC,IAAI;IAAEC,OAAO;IAAEC;GAAe,GAAGH,KAAK;EAC9C,MAAMI,SAAS,GAAGH,IAAI,CAACI,UAAU,EAAE,CAACC,KAAK,CAACC,OAAO,CAACC,IAA6B;EAC/E,MAAMC,UAAU,GAAGC,iBAAiB,CAACT,IAAI,EAAEE,aAAa,CAAC;EAEzD,MAAM;IAAEQ,SAAS;IAAEC;GAAU,GAAGC,cAAK,CAACC,UAAU,CAACC,UAAU,CAAC;EAC5D,MAAMC,WAAW,GAAGZ,SAAS,CAACa,SAAS,CAACC,cAAc,KAAKN,QAAQ;EACnE,MAAMO,cAAc,GAAGH,WAAW,IAAKL,SAAS,IAAI,CAACP,SAAS,CAACa,SAAS,CAACG,kBAAmB;EAE5F,oBACIP,6BAACQ,iBAAiB,oBACVZ,UAAU;IACdR,IAAI,EAAEA,IAAI;IACVC,OAAO,EAAEA,OAAO;IAChBiB,cAAc,EAAEA,cAAc;IAC9BG,QAAQ,EAAElB,SAAS,CAACkB,QAAQ,CAACC,IAAI;IACjCC,UAAU,EAAEpB,SAAS,CAACqB,SAAS,CAACC;KAClC;AAEV;AAUA,MAAML,iBAAiB,gBAAGR,cAAK,CAACc,IAAI,CAAC,SAASN,iBAAiBA,CAAkBrB,KAAoC;EACjH,MAAM;IAAEmB,cAAc;IAAElB,IAAI;IAAEC,OAAO;IAAEoB,QAAQ;IAAEE,UAAU;IAAE,GAAGf;GAAY,GAAGT,KAAK;EAEpF,MAAM4B,OAAO,GAAG3B,IAAI,CAAC4B,GAAG,CAACC,eAAe,EAAE,CAACC,MAAM,CAACC,CAAC,IAAI,CAACC,gBAAgB,CAACD,CAAC,CAACE,MAAM,CAACC,EAAE,CAAC,CAAC,CAACC,MAAM,GAAG,CAAC;EACjG,MAAMC,OAAO,GAAGpC,IAAI,CAACI,UAAU,EAAE,CAACwB,GAAG,CAACQ,OAAO,CAACC,GAAG,CAACT,GAAG,IAAIA,GAAG,CAACU,QAAQ,CAAC;EAEtE,oBACI1B,qDAAQJ,UAAU;IAAE+B,GAAG,EAAEtC,OAAO;IAAEuC,KAAK,EAAE;MAAEC,UAAU,UAAUd,kBAAkBA;;mBAC7Ef;IAAM8B,SAAS,EAAC;KAAQC,UAAU,CAAC3C,IAAI,CAACiC,MAAM,CAACW,SAAS,CAAC5C,IAAI,EAAEA,IAAI,CAACI,UAAU,EAAE,CAAC,CAAQ,EACxFmB,UAAU,aAAVA,UAAU,eAAVA,UAAU,CAAEY,MAAM,IAAIjB,cAAc,kBACjCN,6BAACiC,OAAe;IAACC,OAAO,EAAEvB,UAAU;IAAEwB,aAAa,EAAE,CAAC;IAAEC,IAAI,EAAEZ,OAAO;IAAEf,QAAQ,EAAEA,QAAQ;IAAEN,WAAW;IAAG,IACzG,IAAI,CACP;AAEb,CAAC,CAA2E;;;;"}
@@ -0,0 +1,69 @@
1
+ import React__default from 'react';
2
+ import { isInternalColumn, isCellHighlighted } from '../../../../primitives/Table/useTable/util/columns.js';
3
+
4
+ function getCellAttributes(cell, isHighlighted) {
5
+ const columnMeta = cell.column.columnDef.meta;
6
+ const isPinned = cell.column.getIsPinned();
7
+ const attributes = {
8
+ 'data-cell-align': columnMeta === null || columnMeta === void 0 ? void 0 : columnMeta.align,
9
+ 'data-cell-highlighted': isHighlighted,
10
+ 'data-cell-id': cell.column.id,
11
+ 'data-cell-pinned': isPinned ? true : undefined,
12
+ 'data-cell-truncate': columnMeta.enableTruncate ? true : undefined,
13
+ className: typeof columnMeta.className === 'function' ? columnMeta.className(cell.row.original) : columnMeta.className,
14
+ style: {}
15
+ };
16
+ if (isPinned) {
17
+ attributes.style[isPinned] = `${cell.column.getStart(isPinned)}px`;
18
+ }
19
+ return attributes;
20
+ }
21
+ function useSearchHighlighting(cell, index, ref) {
22
+ const context = cell.getContext();
23
+ const tableMeta = context.table.options.meta;
24
+ const columnMeta = cell.column.columnDef.meta;
25
+ const isHighlighted = React__default.useMemo(() => {
26
+ if (!cell.column.columnDef.enableGlobalFilter || isInternalColumn(cell.column.id) || cell.getIsAggregated() || cell.getIsPlaceholder()) {
27
+ return undefined;
28
+ }
29
+ let isHighlighted = false;
30
+ if (context.table.getState().globalFilter) {
31
+ isHighlighted = isCellHighlighted(context.table.getState().globalFilter, cell.getValue(), columnMeta.dataType);
32
+ }
33
+ if (!isHighlighted || tableMeta.search.currentHighlightColumnIndex === undefined) {
34
+ return undefined;
35
+ }
36
+ const [rowActiveIndex, currentColumnIndex] = tableMeta.search.highlightedColumnIndexes[tableMeta.search.currentHighlightColumnIndex];
37
+ if (rowActiveIndex === cell.row.index && currentColumnIndex === index) {
38
+ return 'current';
39
+ }
40
+ return true;
41
+ }, [cell.getValue(), context.table.getState().globalFilter, tableMeta.search.highlightedColumnIndexes.length, tableMeta.search.currentHighlightColumnIndex]);
42
+ React__default.useEffect(() => {
43
+ if (ref.current && isHighlighted === 'current') {
44
+ ref.current.scrollIntoView({
45
+ block: 'nearest',
46
+ inline: 'nearest'
47
+ });
48
+ setTimeout(() => {
49
+ if (ref.current) {
50
+ const tableEl = ref.current.closest('table[data-taco="report"]');
51
+ setTimeout(() => {
52
+ const pinnedColumns = tableEl === null || tableEl === void 0 ? void 0 : tableEl.querySelectorAll('thead tr:last-child th[data-cell-pinned="left"]');
53
+ if (pinnedColumns !== null && pinnedColumns !== void 0 && pinnedColumns.length) {
54
+ var _pinnedColumns$item;
55
+ const lastFrozenRect = (_pinnedColumns$item = pinnedColumns.item(pinnedColumns.length - 1)) === null || _pinnedColumns$item === void 0 ? void 0 : _pinnedColumns$item.getBoundingClientRect();
56
+ if (lastFrozenRect && cell.column.getStart() < lastFrozenRect.right) {
57
+ tableEl === null || tableEl === void 0 ? void 0 : tableEl.scrollTo(cell.column.getStart() - lastFrozenRect.right, tableEl.scrollTop);
58
+ }
59
+ }
60
+ }, 1);
61
+ }
62
+ }, 1);
63
+ }
64
+ }, [isHighlighted]);
65
+ return isHighlighted;
66
+ }
67
+
68
+ export { getCellAttributes, useSearchHighlighting };
69
+ //# sourceMappingURL=util.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"util.js","sources":["../../../../../../../../../src/components/Report/components/Cell/util.ts"],"sourcesContent":["import React from 'react';\nimport { Cell as ReactTableCell, ColumnMeta as ReactTableColumnMeta, TableMeta as ReactTableMeta } from '@tanstack/react-table';\nimport { isCellHighlighted, isInternalColumn } from '../../../../primitives/Table/useTable/util/columns';\n\nexport type DisplayCellProps<TType = unknown> = {\n index: number;\n cell: ReactTableCell<TType, unknown>;\n};\n\nexport function getCellAttributes<TType = unknown>(\n cell: ReactTableCell<TType, unknown>,\n isHighlighted: true | 'current' | undefined\n) {\n const columnMeta = cell.column.columnDef.meta as ReactTableColumnMeta<TType, unknown>;\n\n const isPinned = cell.column.getIsPinned();\n const attributes = {\n 'data-cell-align': columnMeta?.align,\n 'data-cell-highlighted': isHighlighted,\n 'data-cell-id': cell.column.id,\n 'data-cell-pinned': isPinned ? true : undefined,\n 'data-cell-truncate': columnMeta.enableTruncate ? true : undefined,\n className: typeof columnMeta.className === 'function' ? columnMeta.className(cell.row.original) : columnMeta.className,\n style: {},\n };\n\n if (isPinned) {\n attributes.style[isPinned] = `${cell.column.getStart(isPinned)}px`;\n }\n\n return attributes;\n}\n\nexport function useSearchHighlighting<TType = unknown>(\n cell: ReactTableCell<TType, unknown>,\n index: number,\n ref: React.RefObject<HTMLTableCellElement>\n) {\n const context = cell.getContext();\n const tableMeta = context.table.options.meta as ReactTableMeta<TType>;\n const columnMeta = cell.column.columnDef.meta as ReactTableColumnMeta<TType, unknown>;\n\n const isHighlighted: 'current' | boolean | undefined = React.useMemo(() => {\n if (\n !cell.column.columnDef.enableGlobalFilter ||\n isInternalColumn(cell.column.id) ||\n cell.getIsAggregated() ||\n cell.getIsPlaceholder()\n ) {\n return undefined;\n }\n\n let isHighlighted = false;\n\n if (context.table.getState().globalFilter) {\n isHighlighted = isCellHighlighted(context.table.getState().globalFilter, cell.getValue(), columnMeta.dataType);\n }\n\n if (!isHighlighted || tableMeta.search.currentHighlightColumnIndex === undefined) {\n return undefined;\n }\n\n const [rowActiveIndex, currentColumnIndex] =\n tableMeta.search.highlightedColumnIndexes[tableMeta.search.currentHighlightColumnIndex];\n\n if (rowActiveIndex === cell.row.index && currentColumnIndex === index) {\n return 'current';\n }\n\n return true;\n }, [\n cell.getValue(),\n context.table.getState().globalFilter,\n tableMeta.search.highlightedColumnIndexes.length,\n tableMeta.search.currentHighlightColumnIndex,\n ]);\n\n React.useEffect(() => {\n if (ref.current && isHighlighted === 'current') {\n ref.current.scrollIntoView({ block: 'nearest', inline: 'nearest' });\n\n setTimeout(() => {\n if (ref.current) {\n const tableEl = ref.current.closest('table[data-taco=\"report\"]');\n\n setTimeout(() => {\n const pinnedColumns = tableEl?.querySelectorAll('thead tr:last-child th[data-cell-pinned=\"left\"]');\n\n if (pinnedColumns?.length) {\n const lastFrozenRect = pinnedColumns.item(pinnedColumns.length - 1)?.getBoundingClientRect();\n\n if (lastFrozenRect && cell.column.getStart() < lastFrozenRect.right) {\n tableEl?.scrollTo(cell.column.getStart() - lastFrozenRect.right, tableEl.scrollTop);\n }\n }\n }, 1);\n }\n }, 1);\n }\n }, [isHighlighted]);\n\n return isHighlighted;\n}\n\nexport function getCurrentRowCellElement(index: number, tableEl: HTMLElement) {\n const cellSelector = `[data-current=\"true\"] [data-column-index=\"${index}\"`;\n return tableEl.querySelector(cellSelector);\n}\n\nexport function scrollColumnIntoView(columnIndex: number, frozenColumnIndex: number, column: HTMLElement, tableEl: HTMLElement) {\n if (frozenColumnIndex !== undefined && columnIndex > frozenColumnIndex) {\n const lastFrozenColumnElement = getCurrentRowCellElement(frozenColumnIndex, tableEl);\n const highlightRef = column?.getBoundingClientRect();\n const lastFrozenRect = lastFrozenColumnElement?.getBoundingClientRect();\n\n // offset the width of frozen columns so that the column being scrolled to is not hidden behind them\n if (highlightRef && lastFrozenRect && highlightRef.left < lastFrozenRect.left + lastFrozenRect.width) {\n const pinnedColumnsWidth = lastFrozenRect.left + lastFrozenRect.width;\n tableEl?.scrollTo(highlightRef.left - pinnedColumnsWidth, tableEl.scrollTop);\n }\n } else {\n column.scrollIntoView({ block: 'nearest', inline: 'nearest' });\n }\n}\n"],"names":["getCellAttributes","cell","isHighlighted","columnMeta","column","columnDef","meta","isPinned","getIsPinned","attributes","align","id","undefined","enableTruncate","className","row","original","style","getStart","useSearchHighlighting","index","ref","context","getContext","tableMeta","table","options","React","useMemo","enableGlobalFilter","isInternalColumn","getIsAggregated","getIsPlaceholder","getState","globalFilter","isCellHighlighted","getValue","dataType","search","currentHighlightColumnIndex","rowActiveIndex","currentColumnIndex","highlightedColumnIndexes","length","useEffect","current","scrollIntoView","block","inline","setTimeout","tableEl","closest","pinnedColumns","querySelectorAll","_pinnedColumns$item","lastFrozenRect","item","getBoundingClientRect","right","scrollTo","scrollTop"],"mappings":"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"}