@purpur/library 9.10.0 → 10.0.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 (520) hide show
  1. package/CHANGELOG.json +124 -0
  2. package/CHANGELOG.md +53 -1
  3. package/dist/LICENSE.txt +270 -175
  4. package/dist/{RichText-BAVZadzi.js → RichText-B865Qkzj.js} +2 -2
  5. package/dist/{RichText-BAVZadzi.js.map → RichText-B865Qkzj.js.map} +1 -1
  6. package/dist/{RichText-D4vznH1B.mjs → RichText-CPkBwXNI.mjs} +3 -3
  7. package/dist/{RichText-D4vznH1B.mjs.map → RichText-CPkBwXNI.mjs.map} +1 -1
  8. package/dist/accordion-aEZas0k1.mjs +122 -0
  9. package/dist/accordion-aEZas0k1.mjs.map +1 -0
  10. package/dist/accordion-zwsF1oUj.js +2 -0
  11. package/dist/accordion-zwsF1oUj.js.map +1 -0
  12. package/dist/accordion.cjs.js +1 -1
  13. package/dist/accordion.es.js +1 -1
  14. package/dist/button-C5CYysw5.js +2 -0
  15. package/dist/button-C5CYysw5.js.map +1 -0
  16. package/dist/button-mHw_J7JU.mjs +106 -0
  17. package/dist/button-mHw_J7JU.mjs.map +1 -0
  18. package/dist/button.cjs.js +1 -1
  19. package/dist/button.es.js +1 -1
  20. package/dist/{calendar-Cru-p6gC.mjs → calendar-DTL_g0ue.mjs} +4 -14
  21. package/dist/{calendar-Cru-p6gC.mjs.map → calendar-DTL_g0ue.mjs.map} +1 -1
  22. package/dist/{calendar-DDR8CQYo.js → calendar-DVOrK53J.js} +2 -2
  23. package/dist/{calendar-DDR8CQYo.js.map → calendar-DVOrK53J.js.map} +1 -1
  24. package/dist/calendar.cjs.js +1 -1
  25. package/dist/calendar.es.js +1 -1
  26. package/dist/{card-t2ZkZ82G.mjs → card-C0yhMN5d.mjs} +3 -3
  27. package/dist/card-C0yhMN5d.mjs.map +1 -0
  28. package/dist/{card-pdsBEJif.js → card-CIlY38WI.js} +2 -2
  29. package/dist/card-CIlY38WI.js.map +1 -0
  30. package/dist/card.cjs.js +1 -1
  31. package/dist/card.es.js +1 -1
  32. package/dist/{carousel-BIKcwvYz.mjs → carousel-Dq9yzk_-.mjs} +2 -2
  33. package/dist/{carousel-BIKcwvYz.mjs.map → carousel-Dq9yzk_-.mjs.map} +1 -1
  34. package/dist/{carousel-DnSaLDZf.js → carousel-j-s6M1hu.js} +2 -2
  35. package/dist/{carousel-DnSaLDZf.js.map → carousel-j-s6M1hu.js.map} +1 -1
  36. package/dist/carousel.cjs.js +1 -1
  37. package/dist/carousel.es.js +1 -1
  38. package/dist/{chat-field-Wjvh2J6C.js → chat-field-CLAjIHlM.js} +2 -2
  39. package/dist/{chat-field-Wjvh2J6C.js.map → chat-field-CLAjIHlM.js.map} +1 -1
  40. package/dist/{chat-field-CVF4DooY.mjs → chat-field-nxFRXoQx.mjs} +2 -2
  41. package/dist/{chat-field-CVF4DooY.mjs.map → chat-field-nxFRXoQx.mjs.map} +1 -1
  42. package/dist/chat-field.cjs.js +1 -1
  43. package/dist/chat-field.es.js +1 -1
  44. package/dist/{chip-group-B775zvKD.js → chip-group-BLuG0MC6.js} +2 -2
  45. package/dist/{chip-group-B775zvKD.js.map → chip-group-BLuG0MC6.js.map} +1 -1
  46. package/dist/{chip-group-xuOe7nL3.mjs → chip-group-Bo4kJ8Vq.mjs} +2 -2
  47. package/dist/{chip-group-xuOe7nL3.mjs.map → chip-group-Bo4kJ8Vq.mjs.map} +1 -1
  48. package/dist/chip-group.cjs.js +1 -1
  49. package/dist/chip-group.es.js +1 -1
  50. package/dist/color-dot-BEE5rKco.js.map +1 -1
  51. package/dist/color-dot-Dz9yzVX3.mjs.map +1 -1
  52. package/dist/{comparison-table-Dtqxz8vL.js → comparison-table-CRWRijfG.js} +2 -2
  53. package/dist/{comparison-table-Dtqxz8vL.js.map → comparison-table-CRWRijfG.js.map} +1 -1
  54. package/dist/{comparison-table-D1evE0ri.mjs → comparison-table-DYaRaP9Z.mjs} +3 -3
  55. package/dist/{comparison-table-D1evE0ri.mjs.map → comparison-table-DYaRaP9Z.mjs.map} +1 -1
  56. package/dist/comparison-table.cjs.js +1 -1
  57. package/dist/comparison-table.es.js +1 -1
  58. package/dist/components/accordion/src/accordion-item.d.ts +3 -3
  59. package/dist/components/accordion/src/accordion-item.d.ts.map +1 -1
  60. package/dist/components/accordion/src/accordion.d.ts +3 -7
  61. package/dist/components/accordion/src/accordion.d.ts.map +1 -1
  62. package/dist/components/accordion/src/accordion.visual.fixtures.d.ts.map +1 -1
  63. package/dist/components/alert-badge/src/alert-badge.d.ts +1 -1
  64. package/dist/components/avatar/src/avatar.d.ts +1 -1
  65. package/dist/components/badge/src/badge.d.ts +1 -1
  66. package/dist/components/button/src/button.d.ts +7 -8
  67. package/dist/components/button/src/button.d.ts.map +1 -1
  68. package/dist/components/button/src/button.visual.fixtures.d.ts +1 -1
  69. package/dist/components/calendar/src/calendar.d.ts.map +1 -1
  70. package/dist/components/card/src/card-content-container.d.ts +1 -1
  71. package/dist/components/card/src/card-content.d.ts +1 -1
  72. package/dist/components/card/src/card-cta.d.ts +1 -1
  73. package/dist/components/card/src/card-heading.d.ts +4 -4
  74. package/dist/components/card/src/card-heading.d.ts.map +1 -1
  75. package/dist/components/card/src/card-media-layout.d.ts +1 -1
  76. package/dist/components/card/src/card-media.d.ts +1 -1
  77. package/dist/components/card/src/card-root.d.ts +1 -1
  78. package/dist/components/checkbox/src/checkbox.d.ts +1 -1
  79. package/dist/components/color-dot/src/color-dot.d.ts +2 -1
  80. package/dist/components/color-dot/src/color-dot.d.ts.map +1 -1
  81. package/dist/components/content-block/src/content-block-group.d.ts +1 -1
  82. package/dist/components/content-block/src/content-block.d.ts +3 -3
  83. package/dist/components/content-block/src/content-block.d.ts.map +1 -1
  84. package/dist/components/country-flag-icon/src/all-country-flag-assets.d.ts +0 -1
  85. package/dist/components/country-flag-icon/src/all-country-flag-assets.d.ts.map +1 -1
  86. package/dist/components/country-flag-icon/src/country-flag-icon.d.ts +2 -2
  87. package/dist/components/cta-link/src/cta-link.d.ts +10 -10
  88. package/dist/components/date-picker/src/date-picker.d.ts +5 -5
  89. package/dist/components/date-range-field/src/date-range-field.d.ts +2 -2
  90. package/dist/components/date-range-field/src/date-range-field.d.ts.map +1 -1
  91. package/dist/components/dismissable-chip-group/src/dismissable-chip-group-item.d.ts +1 -1
  92. package/dist/components/dismissable-chip-group/src/dismissable-chip-group.d.ts +4 -4
  93. package/dist/components/dismissable-chip-group/src/dismissable-chip-group.d.ts.map +1 -1
  94. package/dist/components/drawer/src/drawer-container.d.ts +1 -1
  95. package/dist/components/drawer/src/drawer-container.d.ts.map +1 -1
  96. package/dist/components/drawer/src/drawer-content.d.ts +2 -2
  97. package/dist/components/drawer/src/drawer-frame.d.ts +1 -1
  98. package/dist/components/drawer/src/drawer-handle.d.ts +1 -1
  99. package/dist/components/drawer/src/drawer-header.d.ts +1 -1
  100. package/dist/components/drawer/src/drawer-scroll-area.d.ts +1 -1
  101. package/dist/components/drawer/src/drawer.context.d.ts +2 -0
  102. package/dist/components/drawer/src/drawer.context.d.ts.map +1 -1
  103. package/dist/components/drawer/src/drawer.d.ts +2 -0
  104. package/dist/components/drawer/src/drawer.d.ts.map +1 -1
  105. package/dist/components/dropdown/src/dropdown-combobox.d.ts +2 -34
  106. package/dist/components/dropdown/src/dropdown-combobox.d.ts.map +1 -1
  107. package/dist/components/dropdown/src/dropdown-select.d.ts +2 -34
  108. package/dist/components/dropdown/src/dropdown-select.d.ts.map +1 -1
  109. package/dist/components/dropdown/src/dropdown-shared.d.ts +2 -1
  110. package/dist/components/dropdown/src/dropdown-shared.d.ts.map +1 -1
  111. package/dist/components/dropdown/src/dropdown.types.d.ts +24 -13
  112. package/dist/components/dropdown/src/dropdown.types.d.ts.map +1 -1
  113. package/dist/components/dropdown/src/useDropdown.d.ts +1 -1
  114. package/dist/components/dropdown/src/useDropdown.d.ts.map +1 -1
  115. package/dist/components/dropdown/src/useDropdownFilter.d.ts.map +1 -1
  116. package/dist/components/dropdown/src/useDropdownInput.d.ts.map +1 -1
  117. package/dist/components/field-error-text/src/field-error-text.d.ts +2 -2
  118. package/dist/components/file-upload/src/file-upload-button.d.ts +22 -0
  119. package/dist/components/file-upload/src/file-upload-button.d.ts.map +1 -0
  120. package/dist/components/file-upload/src/file-upload-drag-and-drop.d.ts +10 -0
  121. package/dist/components/file-upload/src/file-upload-drag-and-drop.d.ts.map +1 -0
  122. package/dist/components/file-upload/src/file-upload-file-name-label.d.ts +8 -0
  123. package/dist/components/file-upload/src/file-upload-file-name-label.d.ts.map +1 -0
  124. package/dist/components/file-upload/src/file-upload-icon.d.ts +8 -0
  125. package/dist/components/file-upload/src/file-upload-icon.d.ts.map +1 -0
  126. package/dist/components/file-upload/src/file-upload-types.d.ts +82 -0
  127. package/dist/components/file-upload/src/file-upload-types.d.ts.map +1 -0
  128. package/dist/components/file-upload/src/file-upload-utils.d.ts +7 -0
  129. package/dist/components/file-upload/src/file-upload-utils.d.ts.map +1 -0
  130. package/dist/components/file-upload/src/file-upload.d.ts +6 -0
  131. package/dist/components/file-upload/src/file-upload.d.ts.map +1 -0
  132. package/dist/components/file-upload/src/file-upload.visual.fixtures.d.ts +14 -0
  133. package/dist/components/file-upload/src/file-upload.visual.fixtures.d.ts.map +1 -0
  134. package/dist/components/footer/src/footer-navigation.d.ts +1 -1
  135. package/dist/components/footer/src/footer.d.ts +3 -3
  136. package/dist/components/grid/src/grid.item.d.ts +1 -1
  137. package/dist/components/heading/src/heading.d.ts +20 -2
  138. package/dist/components/heading/src/heading.d.ts.map +1 -1
  139. package/dist/components/hero-banner/src/hero-banner-actions.d.ts +1 -1
  140. package/dist/components/hero-banner/src/hero-banner-media.d.ts +1 -1
  141. package/dist/components/hero-banner/src/hero-banner-types.d.ts +2 -2
  142. package/dist/components/hero-banner/src/hero-banner-types.d.ts.map +1 -1
  143. package/dist/components/hero-banner/src/hero-banner.d.ts +1 -1
  144. package/dist/components/hero-banner/src/hero-banner.d.ts.map +1 -1
  145. package/dist/components/icon/src/icon.d.ts +2 -2
  146. package/dist/components/label/src/label.d.ts +1 -1
  147. package/dist/components/listbox/src/listbox-item.d.ts +1 -1
  148. package/dist/components/loading/src/loading-illustrative.d.ts +1 -1
  149. package/dist/components/logo/src/logo.types.d.ts +2 -2
  150. package/dist/components/modal/src/modal-content.d.ts +1 -1
  151. package/dist/components/modal/src/modal-content.d.ts.map +1 -1
  152. package/dist/components/notification-banner/src/notification-banner.d.ts +5 -5
  153. package/dist/components/notification-banner/src/notification-banner.d.ts.map +1 -1
  154. package/dist/components/pagination/src/pagination-page-selector.d.ts +2 -2
  155. package/dist/components/pagination/src/pagination-page-trigger.d.ts +1 -1
  156. package/dist/components/pagination/src/pagination-step-trigger.d.ts +2 -2
  157. package/dist/components/pagination/src/pagination-truncation-separator.d.ts +1 -1
  158. package/dist/components/pagination/src/types.d.ts +1 -1
  159. package/dist/components/pagination/src/use-page-options.hook.d.ts +1 -1
  160. package/dist/components/pagination/src/use-page-size-options.hook.d.ts +1 -1
  161. package/dist/components/password-field/src/password-strength-indicator.d.ts +1 -1
  162. package/dist/components/password-field/src/password-strength.d.ts +2 -2
  163. package/dist/components/promotion-card/src/promotion-card.d.ts +9 -9
  164. package/dist/components/promotion-card/src/promotion-card.d.ts.map +1 -1
  165. package/dist/components/quantity-selector/src/quantity-selector-button.d.ts +2 -3
  166. package/dist/components/quantity-selector/src/quantity-selector-button.d.ts.map +1 -1
  167. package/dist/components/quantity-selector/src/quantity-selector.d.ts +2 -5
  168. package/dist/components/quantity-selector/src/quantity-selector.d.ts.map +1 -1
  169. package/dist/components/radio-card-group/src/radio-card-group.d.ts +2 -2
  170. package/dist/components/radio-card-group/src/radio-card-item.d.ts +1 -1
  171. package/dist/components/rich-text/src/types.d.ts +3 -3
  172. package/dist/components/search-field/src/search-field.d.ts +6 -6
  173. package/dist/components/skeleton/src/skeleton.d.ts +1 -1
  174. package/dist/components/spinner/src/spinner.d.ts +2 -2
  175. package/dist/components/stepper/src/stepper-container.d.ts +1 -1
  176. package/dist/components/stepper/src/stepper-content.d.ts +1 -1
  177. package/dist/components/stepper/src/{stepper-button.d.ts → stepper-link.d.ts} +5 -4
  178. package/dist/components/stepper/src/stepper-link.d.ts.map +1 -0
  179. package/dist/components/stepper/src/stepper-nav-items.d.ts +1 -0
  180. package/dist/components/stepper/src/stepper-nav-items.d.ts.map +1 -1
  181. package/dist/components/stepper/src/stepper.d.ts.map +1 -1
  182. package/dist/components/stepper/src/types.d.ts +2 -2
  183. package/dist/components/stepper/src/types.d.ts.map +1 -1
  184. package/dist/components/stepper/src/use-content-focus.hook.d.ts.map +1 -1
  185. package/dist/components/table/src/cell-types/button-group-cell.d.ts +3 -3
  186. package/dist/components/table/src/draggable-table.d.ts.map +1 -1
  187. package/dist/components/table/src/table-column-header-cell.d.ts +1 -2
  188. package/dist/components/table/src/table-column-header-cell.d.ts.map +1 -1
  189. package/dist/components/table/src/table-content.d.ts +1 -1
  190. package/dist/components/table/src/table-headers.d.ts +2 -3
  191. package/dist/components/table/src/table-headers.d.ts.map +1 -1
  192. package/dist/components/table/src/table-settings-drawer.d.ts +11 -20
  193. package/dist/components/table/src/table-settings-drawer.d.ts.map +1 -1
  194. package/dist/components/table/src/table.d.ts +2 -9
  195. package/dist/components/table/src/table.d.ts.map +1 -1
  196. package/dist/components/table/src/test-utils/helpers.d.ts +10 -19
  197. package/dist/components/table/src/test-utils/helpers.d.ts.map +1 -1
  198. package/dist/components/table/src/test-utils/table-data.d.ts +3 -3
  199. package/dist/components/tabs/src/tab-content.d.ts +3 -1
  200. package/dist/components/tabs/src/tab-content.d.ts.map +1 -1
  201. package/dist/components/text-area/src/text-area.d.ts +1 -1
  202. package/dist/components/text-field/src/text-field-ai.d.ts +4 -4
  203. package/dist/components/text-field/src/text-field-base.d.ts +4 -4
  204. package/dist/components/text-field/src/text-field.d.ts +5 -5
  205. package/dist/components/text-spacing/src/text-spacing.d.ts +2 -2
  206. package/dist/components/tooltip/src/tooltip.d.ts +4 -6
  207. package/dist/components/tooltip/src/tooltip.d.ts.map +1 -1
  208. package/dist/components-metadata.js +20 -10
  209. package/dist/{content-block-CDMrz41K.mjs → content-block-BCM0I3Y2.mjs} +2 -2
  210. package/dist/content-block-BCM0I3Y2.mjs.map +1 -0
  211. package/dist/{content-block-DyYAnL2e.js → content-block-DQppQumZ.js} +2 -2
  212. package/dist/content-block-DQppQumZ.js.map +1 -0
  213. package/dist/content-block.cjs.js +1 -1
  214. package/dist/content-block.es.js +1 -1
  215. package/dist/core.esm-BmIwrKkJ.js +6 -0
  216. package/dist/core.esm-BmIwrKkJ.js.map +1 -0
  217. package/dist/core.esm-CKGHpLM_.mjs +2892 -0
  218. package/dist/core.esm-CKGHpLM_.mjs.map +1 -0
  219. package/dist/country-flag-icon/LICENSE.txt +11 -0
  220. package/dist/country-flag-icon/all-country-flag-assets.cjs.js +1 -1
  221. package/dist/country-flag-icon/all-country-flag-assets.cjs.js.map +1 -1
  222. package/dist/country-flag-icon/all-country-flag-assets.d.ts +0 -1
  223. package/dist/country-flag-icon/all-country-flag-assets.d.ts.map +1 -1
  224. package/dist/country-flag-icon/all-country-flag-assets.es.js +0 -1
  225. package/dist/country-flag-icon/all-country-flag-assets.es.js.map +1 -1
  226. package/dist/country-flag-icon/dynamic-country-flag-icon.cjs.js +2 -0
  227. package/dist/country-flag-icon/dynamic-country-flag-icon.cjs.js.map +1 -0
  228. package/dist/country-flag-icon/dynamic-country-flag-icon.es.js +366 -0
  229. package/dist/country-flag-icon/dynamic-country-flag-icon.es.js.map +1 -0
  230. package/dist/{date-field-hA79n6mP.js → date-field-CtpWDaSh.js} +2 -2
  231. package/dist/{date-field-hA79n6mP.js.map → date-field-CtpWDaSh.js.map} +1 -1
  232. package/dist/{date-field-DVp_RMNm.mjs → date-field-_rCuf15v.mjs} +2 -2
  233. package/dist/{date-field-DVp_RMNm.mjs.map → date-field-_rCuf15v.mjs.map} +1 -1
  234. package/dist/date-field.cjs.js +1 -1
  235. package/dist/date-field.es.js +1 -1
  236. package/dist/{date-picker-Dzoo_hhQ.js → date-picker-BYlszX1W.js} +2 -2
  237. package/dist/{date-picker-Dzoo_hhQ.js.map → date-picker-BYlszX1W.js.map} +1 -1
  238. package/dist/{date-picker-B8ta-Q8V.mjs → date-picker-sqcNAplg.mjs} +6 -6
  239. package/dist/{date-picker-B8ta-Q8V.mjs.map → date-picker-sqcNAplg.mjs.map} +1 -1
  240. package/dist/date-picker.cjs.js +1 -1
  241. package/dist/date-picker.es.js +1 -1
  242. package/dist/date-range-field-B33XeBW8.js +2 -0
  243. package/dist/date-range-field-B33XeBW8.js.map +1 -0
  244. package/dist/{date-range-field-BZUjfftV.mjs → date-range-field-BmjQeiOv.mjs} +23 -23
  245. package/dist/date-range-field-BmjQeiOv.mjs.map +1 -0
  246. package/dist/date-range-field.cjs.js +1 -1
  247. package/dist/date-range-field.es.js +1 -1
  248. package/dist/{dismissable-chip-group-2updhyuR.js → dismissable-chip-group-5ALErhD2.js} +2 -2
  249. package/dist/dismissable-chip-group-5ALErhD2.js.map +1 -0
  250. package/dist/{dismissable-chip-group-Cfs2s2BH.mjs → dismissable-chip-group-DMNU7g5e.mjs} +3 -3
  251. package/dist/dismissable-chip-group-DMNU7g5e.mjs.map +1 -0
  252. package/dist/dismissable-chip-group.cjs.js +1 -1
  253. package/dist/dismissable-chip-group.es.js +1 -1
  254. package/dist/{drawer-cIUx6WSZ.mjs → drawer-Chx3H8EU.mjs} +241 -233
  255. package/dist/drawer-Chx3H8EU.mjs.map +1 -0
  256. package/dist/drawer-oFJcxW58.js +2 -0
  257. package/dist/drawer-oFJcxW58.js.map +1 -0
  258. package/dist/drawer.cjs.js +1 -1
  259. package/dist/drawer.es.js +1 -1
  260. package/dist/dropdown-Bn7WvsL2.js +2 -0
  261. package/dist/dropdown-Bn7WvsL2.js.map +1 -0
  262. package/dist/dropdown-CrufJnb4.mjs +945 -0
  263. package/dist/dropdown-CrufJnb4.mjs.map +1 -0
  264. package/dist/dropdown.cjs.js +1 -1
  265. package/dist/dropdown.es.js +1 -1
  266. package/dist/file-upload-Ctw6LCTU.mjs +589 -0
  267. package/dist/file-upload-Ctw6LCTU.mjs.map +1 -0
  268. package/dist/file-upload-MvNuX4ks.js +2 -0
  269. package/dist/file-upload-MvNuX4ks.js.map +1 -0
  270. package/dist/file-upload.cjs.js +2 -0
  271. package/dist/file-upload.cjs.js.map +1 -0
  272. package/dist/file-upload.es.js +5 -0
  273. package/dist/file-upload.es.js.map +1 -0
  274. package/dist/{floating-ui.react-dom-EredA301.mjs → floating-ui.react-dom-1kwKo24Z.mjs} +15 -15
  275. package/dist/{floating-ui.react-dom-EredA301.mjs.map → floating-ui.react-dom-1kwKo24Z.mjs.map} +1 -1
  276. package/dist/footer-Bbemct3Z.js +2 -0
  277. package/dist/footer-Bbemct3Z.js.map +1 -0
  278. package/dist/{footer-D-2b7UIB.mjs → footer-DkVmTd-f.mjs} +25 -25
  279. package/dist/footer-DkVmTd-f.mjs.map +1 -0
  280. package/dist/footer.cjs.js +1 -1
  281. package/dist/footer.es.js +1 -1
  282. package/dist/{heading-xwBuT_-9.mjs → heading-BG7JTFO1.mjs} +25 -24
  283. package/dist/heading-BG7JTFO1.mjs.map +1 -0
  284. package/dist/{heading-drD5ugCC.js → heading-BPeRwNYu.js} +2 -2
  285. package/dist/heading-BPeRwNYu.js.map +1 -0
  286. package/dist/heading.cjs.js +1 -1
  287. package/dist/heading.es.js +6 -5
  288. package/dist/{hero-banner-n9K-Jsdz.mjs → hero-banner-ChDoFRhq.mjs} +4 -4
  289. package/dist/hero-banner-ChDoFRhq.mjs.map +1 -0
  290. package/dist/{hero-banner--v-ezYMr.js → hero-banner-Mag1OwL4.js} +2 -2
  291. package/dist/hero-banner-Mag1OwL4.js.map +1 -0
  292. package/dist/hero-banner.cjs.js +1 -1
  293. package/dist/hero-banner.es.js +1 -1
  294. package/dist/index-BPY_9ddu.js +2 -0
  295. package/dist/index-BPY_9ddu.js.map +1 -0
  296. package/dist/index-Fewa56cA.mjs +440 -0
  297. package/dist/index-Fewa56cA.mjs.map +1 -0
  298. package/dist/libraries/library/src/calendar.d.ts +1 -1
  299. package/dist/libraries/library/src/card.d.ts +1 -1
  300. package/dist/libraries/library/src/container.d.ts +1 -1
  301. package/dist/libraries/library/src/content-block.d.ts +1 -1
  302. package/dist/libraries/library/src/dismissable-chip-group.d.ts +1 -1
  303. package/dist/libraries/library/src/drawer.d.ts +1 -1
  304. package/dist/libraries/library/src/file-upload.d.ts +6 -0
  305. package/dist/libraries/library/src/file-upload.d.ts.map +1 -0
  306. package/dist/libraries/library/src/library.d.ts +2 -1
  307. package/dist/libraries/library/src/library.d.ts.map +1 -1
  308. package/dist/libraries/library/src/notification-banner.d.ts +1 -1
  309. package/dist/libraries/library/src/notification.d.ts +1 -1
  310. package/dist/libraries/library/src/password-field.d.ts +6 -2
  311. package/dist/libraries/library/src/password-field.d.ts.map +1 -1
  312. package/dist/libraries/library/src/radio-button-group.d.ts +1 -1
  313. package/dist/libraries/library/src/radio-card-group.d.ts +1 -1
  314. package/dist/libraries/library/src/spinner.d.ts +1 -1
  315. package/dist/libraries/library/src/stepper.d.ts +1 -1
  316. package/dist/libraries/library/src/tooltip.d.ts +1 -1
  317. package/dist/libraries/library/src/visually-hidden.d.ts +1 -1
  318. package/dist/libraries/theme/src/ThemeProvider.d.ts +1 -1
  319. package/dist/library.cjs.js +1 -1
  320. package/dist/library.es.js +603 -601
  321. package/dist/library.es.js.map +1 -1
  322. package/dist/link-Dzqd0QuD.js +2 -0
  323. package/dist/{link-DhWVrkTz.js.map → link-Dzqd0QuD.js.map} +1 -1
  324. package/dist/link-ccCdDvBc.mjs +72 -0
  325. package/dist/{link-DY5WLpyc.mjs.map → link-ccCdDvBc.mjs.map} +1 -1
  326. package/dist/link.cjs.js +1 -1
  327. package/dist/link.es.js +1 -1
  328. package/dist/main-B501z9Ql.js +2 -0
  329. package/dist/main-B501z9Ql.js.map +1 -0
  330. package/dist/main-L71Sqg3s.mjs +1016 -0
  331. package/dist/main-L71Sqg3s.mjs.map +1 -0
  332. package/dist/{modal-D0Qxrvx5.js → modal-CXOYUsJm.js} +2 -2
  333. package/dist/modal-CXOYUsJm.js.map +1 -0
  334. package/dist/{modal-Bu1Zv5Ic.mjs → modal-Pwvhrzn-.mjs} +31 -31
  335. package/dist/modal-Pwvhrzn-.mjs.map +1 -0
  336. package/dist/modal.cjs.js +1 -1
  337. package/dist/modal.es.js +1 -1
  338. package/dist/{notification-D2oClkX2.js → notification-BkM2vLzI.js} +2 -2
  339. package/dist/{notification-D2oClkX2.js.map → notification-BkM2vLzI.js.map} +1 -1
  340. package/dist/{notification-DiVdy6E_.mjs → notification-Cbn0UN1p.mjs} +3 -3
  341. package/dist/{notification-DiVdy6E_.mjs.map → notification-Cbn0UN1p.mjs.map} +1 -1
  342. package/dist/notification-banner-B9RhXAZ8.js +2 -0
  343. package/dist/notification-banner-B9RhXAZ8.js.map +1 -0
  344. package/dist/{notification-banner-CZTQZ5Le.mjs → notification-banner-C4NVekCZ.mjs} +5 -5
  345. package/dist/notification-banner-C4NVekCZ.mjs.map +1 -0
  346. package/dist/notification-banner.cjs.js +1 -1
  347. package/dist/notification-banner.es.js +1 -1
  348. package/dist/notification.cjs.js +1 -1
  349. package/dist/notification.es.js +1 -1
  350. package/dist/password-field-Cy_E-D_G.mjs +200 -0
  351. package/dist/password-field-Cy_E-D_G.mjs.map +1 -0
  352. package/dist/password-field-lKyWHjQS.js +2 -0
  353. package/dist/password-field-lKyWHjQS.js.map +1 -0
  354. package/dist/password-field.cjs.js +2 -0
  355. package/dist/password-field.cjs.js.map +1 -0
  356. package/dist/password-field.es.js +6 -0
  357. package/dist/password-field.es.js.map +1 -0
  358. package/dist/popover-B6ntmuEK.mjs +614 -0
  359. package/dist/popover-B6ntmuEK.mjs.map +1 -0
  360. package/dist/popover-DJHMEFXP.js +2 -0
  361. package/dist/popover-DJHMEFXP.js.map +1 -0
  362. package/dist/popover.cjs.js +1 -1
  363. package/dist/popover.es.js +1 -1
  364. package/dist/{product-card-CxfHfJVV.mjs → product-card-BMseoNrG.mjs} +3 -3
  365. package/dist/{product-card-CxfHfJVV.mjs.map → product-card-BMseoNrG.mjs.map} +1 -1
  366. package/dist/{product-card-XxBwuxM-.js → product-card-D0jX5-up.js} +2 -2
  367. package/dist/{product-card-XxBwuxM-.js.map → product-card-D0jX5-up.js.map} +1 -1
  368. package/dist/product-card.cjs.js +1 -1
  369. package/dist/product-card.es.js +1 -1
  370. package/dist/{promotion-card-C1UoxzcV.js → promotion-card-B3mz__m7.js} +2 -2
  371. package/dist/promotion-card-B3mz__m7.js.map +1 -0
  372. package/dist/{promotion-card-CooYPpFo.mjs → promotion-card-Co6qAkTZ.mjs} +5 -5
  373. package/dist/promotion-card-Co6qAkTZ.mjs.map +1 -0
  374. package/dist/promotion-card.cjs.js +1 -1
  375. package/dist/promotion-card.es.js +1 -1
  376. package/dist/purpur.css +1 -1
  377. package/dist/quantity-selector-Cy0aJGGX.js +2 -0
  378. package/dist/quantity-selector-Cy0aJGGX.js.map +1 -0
  379. package/dist/quantity-selector-k6ZaVrk1.mjs +162 -0
  380. package/dist/quantity-selector-k6ZaVrk1.mjs.map +1 -0
  381. package/dist/quantity-selector.cjs.js +1 -1
  382. package/dist/quantity-selector.es.js +2 -3
  383. package/dist/{radio-button-group-D_F6kWD6.mjs → radio-button-group-DjiTo3b1.mjs} +2 -2
  384. package/dist/{radio-button-group-D_F6kWD6.mjs.map → radio-button-group-DjiTo3b1.mjs.map} +1 -1
  385. package/dist/{radio-button-group-CdUrC7h9.js → radio-button-group-uCRGh1H5.js} +2 -2
  386. package/dist/{radio-button-group-CdUrC7h9.js.map → radio-button-group-uCRGh1H5.js.map} +1 -1
  387. package/dist/radio-button-group.cjs.js +1 -1
  388. package/dist/radio-button-group.es.js +1 -1
  389. package/dist/{radio-card-group-B9_jOJnM.mjs → radio-card-group-DoM7qYO1.mjs} +2 -2
  390. package/dist/{radio-card-group-B9_jOJnM.mjs.map → radio-card-group-DoM7qYO1.mjs.map} +1 -1
  391. package/dist/{radio-card-group-DcdGkfOp.js → radio-card-group-_9wJC-s3.js} +2 -2
  392. package/dist/{radio-card-group-DcdGkfOp.js.map → radio-card-group-_9wJC-s3.js.map} +1 -1
  393. package/dist/radio-card-group.cjs.js +1 -1
  394. package/dist/radio-card-group.es.js +1 -1
  395. package/dist/rich-text.cjs.js +1 -1
  396. package/dist/rich-text.es.js +1 -1
  397. package/dist/{search-field-afhtC6q5.mjs → search-field-BTJtRyw5.mjs} +3 -3
  398. package/dist/{search-field-afhtC6q5.mjs.map → search-field-BTJtRyw5.mjs.map} +1 -1
  399. package/dist/{search-field-WJBtiK0K.js → search-field-nzVXak1a.js} +2 -2
  400. package/dist/{search-field-WJBtiK0K.js.map → search-field-nzVXak1a.js.map} +1 -1
  401. package/dist/search-field.cjs.js +1 -1
  402. package/dist/search-field.es.js +1 -1
  403. package/dist/stepper-D59T-Y2_.mjs +469 -0
  404. package/dist/stepper-D59T-Y2_.mjs.map +1 -0
  405. package/dist/stepper-Dao4XaDV.js +2 -0
  406. package/dist/stepper-Dao4XaDV.js.map +1 -0
  407. package/dist/stepper.cjs.js +1 -1
  408. package/dist/stepper.es.js +1 -1
  409. package/dist/table-DRSgesQ4.mjs +4545 -0
  410. package/dist/table-DRSgesQ4.mjs.map +1 -0
  411. package/dist/table-zBs9JALh.js +5 -0
  412. package/dist/table-zBs9JALh.js.map +1 -0
  413. package/dist/table.cjs.js +1 -1
  414. package/dist/table.es.js +1 -1
  415. package/dist/tabs-D2__wbCs.js +2 -0
  416. package/dist/tabs-D2__wbCs.js.map +1 -0
  417. package/dist/tabs-DOG5g2wf.mjs +440 -0
  418. package/dist/tabs-DOG5g2wf.mjs.map +1 -0
  419. package/dist/tabs.cjs.js +1 -1
  420. package/dist/tabs.es.js +1 -1
  421. package/dist/{text-field-VW8ObP83.js → text-field-BSgqJjpv.js} +2 -2
  422. package/dist/text-field-BSgqJjpv.js.map +1 -0
  423. package/dist/{text-field-D0e-cRbG.mjs → text-field-MQHeITxy.mjs} +3 -3
  424. package/dist/text-field-MQHeITxy.mjs.map +1 -0
  425. package/dist/text-field.cjs.js +1 -1
  426. package/dist/text-field.es.js +1 -1
  427. package/dist/tooltip-DeP1UsPW.js +2 -0
  428. package/dist/{tooltip-B-11qk-0.js.map → tooltip-DeP1UsPW.js.map} +1 -1
  429. package/dist/{tooltip-DngYHn5W.mjs → tooltip-bqdd2lJL.mjs} +347 -309
  430. package/dist/{tooltip-DngYHn5W.mjs.map → tooltip-bqdd2lJL.mjs.map} +1 -1
  431. package/dist/tooltip.cjs.js +1 -1
  432. package/dist/tooltip.es.js +1 -1
  433. package/package.json +21 -26
  434. package/scripts/generate.mts +1 -4
  435. package/src/aliases.ts +8 -4
  436. package/src/entries.js +2 -1
  437. package/src/{autocomplete.ts → file-upload.ts} +1 -1
  438. package/src/library.ts +2 -2
  439. package/src/password-field.ts +0 -1
  440. package/src/purpur.css +4 -0
  441. package/dist/accordion-B6OoQ4uZ.mjs +0 -128
  442. package/dist/accordion-B6OoQ4uZ.mjs.map +0 -1
  443. package/dist/accordion-BfpN5h4C.js +0 -2
  444. package/dist/accordion-BfpN5h4C.js.map +0 -1
  445. package/dist/autocomplete-BX1KDZqL.js +0 -2
  446. package/dist/autocomplete-BX1KDZqL.js.map +0 -1
  447. package/dist/autocomplete-CmLzmWp4.mjs +0 -228
  448. package/dist/autocomplete-CmLzmWp4.mjs.map +0 -1
  449. package/dist/autocomplete.cjs.js +0 -2
  450. package/dist/autocomplete.cjs.js.map +0 -1
  451. package/dist/autocomplete.es.js +0 -6
  452. package/dist/autocomplete.es.js.map +0 -1
  453. package/dist/button-4-yWOgtD.mjs +0 -109
  454. package/dist/button-4-yWOgtD.mjs.map +0 -1
  455. package/dist/button-DmybVApa.js +0 -2
  456. package/dist/button-DmybVApa.js.map +0 -1
  457. package/dist/card-pdsBEJif.js.map +0 -1
  458. package/dist/card-t2ZkZ82G.mjs.map +0 -1
  459. package/dist/components/autocomplete/src/autocomplete.d.ts +0 -18
  460. package/dist/components/autocomplete/src/autocomplete.d.ts.map +0 -1
  461. package/dist/components/autocomplete/src/useAutocomplete.d.ts +0 -59
  462. package/dist/components/autocomplete/src/useAutocomplete.d.ts.map +0 -1
  463. package/dist/components/autocomplete/src/utils.d.ts +0 -7
  464. package/dist/components/autocomplete/src/utils.d.ts.map +0 -1
  465. package/dist/components/stepper/src/stepper-button.d.ts.map +0 -1
  466. package/dist/content-block-CDMrz41K.mjs.map +0 -1
  467. package/dist/content-block-DyYAnL2e.js.map +0 -1
  468. package/dist/date-range-field-BZUjfftV.mjs.map +0 -1
  469. package/dist/date-range-field-Dqqgj41u.js +0 -2
  470. package/dist/date-range-field-Dqqgj41u.js.map +0 -1
  471. package/dist/dismissable-chip-group-2updhyuR.js.map +0 -1
  472. package/dist/dismissable-chip-group-Cfs2s2BH.mjs.map +0 -1
  473. package/dist/drawer-DyLQfvEh.js +0 -2
  474. package/dist/drawer-DyLQfvEh.js.map +0 -1
  475. package/dist/drawer-cIUx6WSZ.mjs.map +0 -1
  476. package/dist/dropdown-C8VsfTQw.mjs +0 -936
  477. package/dist/dropdown-C8VsfTQw.mjs.map +0 -1
  478. package/dist/dropdown-p4R2yCnJ.js +0 -2
  479. package/dist/dropdown-p4R2yCnJ.js.map +0 -1
  480. package/dist/footer-Cn1-zG1v.js +0 -2
  481. package/dist/footer-Cn1-zG1v.js.map +0 -1
  482. package/dist/footer-D-2b7UIB.mjs.map +0 -1
  483. package/dist/heading-drD5ugCC.js.map +0 -1
  484. package/dist/heading-xwBuT_-9.mjs.map +0 -1
  485. package/dist/hero-banner--v-ezYMr.js.map +0 -1
  486. package/dist/hero-banner-n9K-Jsdz.mjs.map +0 -1
  487. package/dist/libraries/library/src/autocomplete.d.ts +0 -6
  488. package/dist/libraries/library/src/autocomplete.d.ts.map +0 -1
  489. package/dist/link-DY5WLpyc.mjs +0 -72
  490. package/dist/link-DhWVrkTz.js +0 -2
  491. package/dist/modal-Bu1Zv5Ic.mjs.map +0 -1
  492. package/dist/modal-D0Qxrvx5.js.map +0 -1
  493. package/dist/notification-banner-BxHwTFnH.js +0 -2
  494. package/dist/notification-banner-BxHwTFnH.js.map +0 -1
  495. package/dist/notification-banner-CZTQZ5Le.mjs.map +0 -1
  496. package/dist/popover-CY75TnbA.js +0 -2
  497. package/dist/popover-CY75TnbA.js.map +0 -1
  498. package/dist/popover-wiiwtqWE.mjs +0 -1043
  499. package/dist/popover-wiiwtqWE.mjs.map +0 -1
  500. package/dist/promotion-card-C1UoxzcV.js.map +0 -1
  501. package/dist/promotion-card-CooYPpFo.mjs.map +0 -1
  502. package/dist/quantity-selector-BEYMDsBM.js +0 -2
  503. package/dist/quantity-selector-BEYMDsBM.js.map +0 -1
  504. package/dist/quantity-selector-Cp-e5xKJ.mjs +0 -172
  505. package/dist/quantity-selector-Cp-e5xKJ.mjs.map +0 -1
  506. package/dist/stepper-20s8dnPA.mjs +0 -449
  507. package/dist/stepper-20s8dnPA.mjs.map +0 -1
  508. package/dist/stepper-VDiR2I8F.js +0 -2
  509. package/dist/stepper-VDiR2I8F.js.map +0 -1
  510. package/dist/table-B5ZitZoL.js +0 -9
  511. package/dist/table-B5ZitZoL.js.map +0 -1
  512. package/dist/table-CNIL-60s.mjs +0 -7428
  513. package/dist/table-CNIL-60s.mjs.map +0 -1
  514. package/dist/tabs-Bye5lgZ1.mjs +0 -424
  515. package/dist/tabs-Bye5lgZ1.mjs.map +0 -1
  516. package/dist/tabs-D-nfZHIA.js +0 -2
  517. package/dist/tabs-D-nfZHIA.js.map +0 -1
  518. package/dist/text-field-D0e-cRbG.mjs.map +0 -1
  519. package/dist/text-field-VW8ObP83.js.map +0 -1
  520. package/dist/tooltip-B-11qk-0.js +0 -2
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table-DRSgesQ4.mjs","sources":["../../../common/temp/node_modules/.pnpm/@tanstack+table-core@8.21.3/node_modules/@tanstack/table-core/build/lib/index.mjs","../../../common/temp/node_modules/.pnpm/@tanstack+react-table@8.21.3_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@tanstack/react-table/build/lib/index.mjs","../../../common/temp/node_modules/.pnpm/@dnd-kit+modifiers@9.0.0_@dnd-kit+core@6.3.1_react-dom@19.2.4_react@19.2.4__react@19.2.4__react@19.2.4/node_modules/@dnd-kit/modifiers/dist/modifiers.esm.js","../../../components/table/src/table-body.tsx","../../../common/temp/node_modules/.pnpm/@dnd-kit+sortable@10.0.0_@dnd-kit+core@6.3.1_react-dom@19.2.4_react@19.2.4__react@19.2.4__react@19.2.4/node_modules/@dnd-kit/sortable/dist/sortable.esm.js","../../../components/icon/dist/components/arrow-down.es.js","../../../components/icon/dist/components/arrow-up.es.js","../../../components/icon/dist/components/sorter.es.js","../../../components/table/src/drag-indicator-circle.tsx","../../../components/icon/dist/components/drag-horizontal.es.js","../../../components/table/src/use-drag-handle.hook.tsx","../../../components/table/src/use-drag-indicator-position.hook.ts","../../../components/table/src/use-drop-indicator.hook.ts","../../../components/table/src/use-element-visibility.hook.ts","../../../components/table/src/use-truncated-hook.tsx","../../../components/table/src/utils/unit-conversions.ts","../../../components/table/src/table-column-header-cell.tsx","../../../components/table/src/table-header.tsx","../../../components/table/src/table-row.tsx","../../../components/table/src/cell-types/empty-cell.tsx","../../../components/table/src/cell-types/badge-cell.tsx","../../../components/table/src/cell-types/body-text-cell.tsx","../../../components/table/src/cell-types/button-cell.tsx","../../../components/table/src/cell-types/button-group-cell.tsx","../../../components/table/src/cell-types/cta-link-cell.tsx","../../../components/table/src/cell-types/date-cell.tsx","../../../components/icon/dist/components/error.es.js","../../../components/table/src/cell-types/error-message-cell.tsx","../../../components/table/src/cell-types/icon-text-cell.tsx","../../../components/table/src/cell-types/lead-text-cell.tsx","../../../components/table/src/cell-types/link-cell.tsx","../../../components/table/src/cell-types/number-cell.tsx","../../../components/table/src/cell-types/row-selection-cell.tsx","../../../components/table/src/cell-types/row-toggle-cell.tsx","../../../components/table/src/cell-types/toggle-cell.tsx","../../../components/icon/dist/components/alert.es.js","../../../components/table/src/cell-types/warning-message-cell.tsx","../../../components/table/src/table-row-cell.tsx","../../../components/table/src/utils/custom-keyboard-coordinates.ts","../../../components/table/src/draggable-table.tsx","../../../components/table/src/use-screen-size.hook.ts","../../../components/table/src/table-action-bar.tsx","../../../components/table/src/empty-table.tsx","../../../components/table/src/table-row-cell-skeleton.tsx","../../../components/table/src/loading-table-rows.tsx","../../../components/table/src/table-content.tsx","../../../components/table/src/table-export-drawer.tsx","../../../components/table/src/table-headers.tsx","../../../components/icon/dist/components/drag-vertical.es.js","../../../components/icon/dist/components/sync.es.js","../../../components/table/src/table-settings-drawer.tsx","../../../components/icon/dist/components/download.es.js","../../../components/icon/dist/components/maximize.es.js","../../../components/icon/dist/components/minimize.es.js","../../../components/icon/dist/components/settings.es.js","../../../components/table/src/table-toolbar.tsx","../../../components/table/src/use-table-scroll.hook.tsx","../../../components/table/src/utils/custom-functions.ts","../../../components/table/src/table.tsx"],"sourcesContent":["/**\n * table-core\n *\n * Copyright (c) TanStack\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE.md file in the root directory of this source tree.\n *\n * @license MIT\n */\n// type Person = {\n// firstName: string\n// lastName: string\n// age: number\n// visits: number\n// status: string\n// progress: number\n// createdAt: Date\n// nested: {\n// foo: [\n// {\n// bar: 'bar'\n// }\n// ]\n// bar: { subBar: boolean }[]\n// baz: {\n// foo: 'foo'\n// bar: {\n// baz: 'baz'\n// }\n// }\n// }\n// }\n\n// const test: DeepKeys<Person> = 'nested.foo.0.bar'\n// const test2: DeepKeys<Person> = 'nested.bar'\n\n// const helper = createColumnHelper<Person>()\n\n// helper.accessor('nested.foo', {\n// cell: info => info.getValue(),\n// })\n\n// helper.accessor('nested.foo.0.bar', {\n// cell: info => info.getValue(),\n// })\n\n// helper.accessor('nested.bar', {\n// cell: info => info.getValue(),\n// })\n\nfunction createColumnHelper() {\n return {\n accessor: (accessor, column) => {\n return typeof accessor === 'function' ? {\n ...column,\n accessorFn: accessor\n } : {\n ...column,\n accessorKey: accessor\n };\n },\n display: column => column,\n group: column => column\n };\n}\n\n// Is this type a tuple?\n\n// If this type is a tuple, what indices are allowed?\n\n///\n\nfunction functionalUpdate(updater, input) {\n return typeof updater === 'function' ? updater(input) : updater;\n}\nfunction noop() {\n //\n}\nfunction makeStateUpdater(key, instance) {\n return updater => {\n instance.setState(old => {\n return {\n ...old,\n [key]: functionalUpdate(updater, old[key])\n };\n });\n };\n}\nfunction isFunction(d) {\n return d instanceof Function;\n}\nfunction isNumberArray(d) {\n return Array.isArray(d) && d.every(val => typeof val === 'number');\n}\nfunction flattenBy(arr, getChildren) {\n const flat = [];\n const recurse = subArr => {\n subArr.forEach(item => {\n flat.push(item);\n const children = getChildren(item);\n if (children != null && children.length) {\n recurse(children);\n }\n });\n };\n recurse(arr);\n return flat;\n}\nfunction memo(getDeps, fn, opts) {\n let deps = [];\n let result;\n return depArgs => {\n let depTime;\n if (opts.key && opts.debug) depTime = Date.now();\n const newDeps = getDeps(depArgs);\n const depsChanged = newDeps.length !== deps.length || newDeps.some((dep, index) => deps[index] !== dep);\n if (!depsChanged) {\n return result;\n }\n deps = newDeps;\n let resultTime;\n if (opts.key && opts.debug) resultTime = Date.now();\n result = fn(...newDeps);\n opts == null || opts.onChange == null || opts.onChange(result);\n if (opts.key && opts.debug) {\n if (opts != null && opts.debug()) {\n const depEndTime = Math.round((Date.now() - depTime) * 100) / 100;\n const resultEndTime = Math.round((Date.now() - resultTime) * 100) / 100;\n const resultFpsPercentage = resultEndTime / 16;\n const pad = (str, num) => {\n str = String(str);\n while (str.length < num) {\n str = ' ' + str;\n }\n return str;\n };\n console.info(`%c⏱ ${pad(resultEndTime, 5)} /${pad(depEndTime, 5)} ms`, `\n font-size: .6rem;\n font-weight: bold;\n color: hsl(${Math.max(0, Math.min(120 - 120 * resultFpsPercentage, 120))}deg 100% 31%);`, opts == null ? void 0 : opts.key);\n }\n }\n return result;\n };\n}\nfunction getMemoOptions(tableOptions, debugLevel, key, onChange) {\n return {\n debug: () => {\n var _tableOptions$debugAl;\n return (_tableOptions$debugAl = tableOptions == null ? void 0 : tableOptions.debugAll) != null ? _tableOptions$debugAl : tableOptions[debugLevel];\n },\n key: process.env.NODE_ENV === 'development' && key,\n onChange\n };\n}\n\nfunction createCell(table, row, column, columnId) {\n const getRenderValue = () => {\n var _cell$getValue;\n return (_cell$getValue = cell.getValue()) != null ? _cell$getValue : table.options.renderFallbackValue;\n };\n const cell = {\n id: `${row.id}_${column.id}`,\n row,\n column,\n getValue: () => row.getValue(columnId),\n renderValue: getRenderValue,\n getContext: memo(() => [table, column, row, cell], (table, column, row, cell) => ({\n table,\n column,\n row,\n cell: cell,\n getValue: cell.getValue,\n renderValue: cell.renderValue\n }), getMemoOptions(table.options, 'debugCells', 'cell.getContext'))\n };\n table._features.forEach(feature => {\n feature.createCell == null || feature.createCell(cell, column, row, table);\n }, {});\n return cell;\n}\n\nfunction createColumn(table, columnDef, depth, parent) {\n var _ref, _resolvedColumnDef$id;\n const defaultColumn = table._getDefaultColumnDef();\n const resolvedColumnDef = {\n ...defaultColumn,\n ...columnDef\n };\n const accessorKey = resolvedColumnDef.accessorKey;\n let id = (_ref = (_resolvedColumnDef$id = resolvedColumnDef.id) != null ? _resolvedColumnDef$id : accessorKey ? typeof String.prototype.replaceAll === 'function' ? accessorKey.replaceAll('.', '_') : accessorKey.replace(/\\./g, '_') : undefined) != null ? _ref : typeof resolvedColumnDef.header === 'string' ? resolvedColumnDef.header : undefined;\n let accessorFn;\n if (resolvedColumnDef.accessorFn) {\n accessorFn = resolvedColumnDef.accessorFn;\n } else if (accessorKey) {\n // Support deep accessor keys\n if (accessorKey.includes('.')) {\n accessorFn = originalRow => {\n let result = originalRow;\n for (const key of accessorKey.split('.')) {\n var _result;\n result = (_result = result) == null ? void 0 : _result[key];\n if (process.env.NODE_ENV !== 'production' && result === undefined) {\n console.warn(`\"${key}\" in deeply nested key \"${accessorKey}\" returned undefined.`);\n }\n }\n return result;\n };\n } else {\n accessorFn = originalRow => originalRow[resolvedColumnDef.accessorKey];\n }\n }\n if (!id) {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error(resolvedColumnDef.accessorFn ? `Columns require an id when using an accessorFn` : `Columns require an id when using a non-string header`);\n }\n throw new Error();\n }\n let column = {\n id: `${String(id)}`,\n accessorFn,\n parent: parent,\n depth,\n columnDef: resolvedColumnDef,\n columns: [],\n getFlatColumns: memo(() => [true], () => {\n var _column$columns;\n return [column, ...((_column$columns = column.columns) == null ? void 0 : _column$columns.flatMap(d => d.getFlatColumns()))];\n }, getMemoOptions(table.options, 'debugColumns', 'column.getFlatColumns')),\n getLeafColumns: memo(() => [table._getOrderColumnsFn()], orderColumns => {\n var _column$columns2;\n if ((_column$columns2 = column.columns) != null && _column$columns2.length) {\n let leafColumns = column.columns.flatMap(column => column.getLeafColumns());\n return orderColumns(leafColumns);\n }\n return [column];\n }, getMemoOptions(table.options, 'debugColumns', 'column.getLeafColumns'))\n };\n for (const feature of table._features) {\n feature.createColumn == null || feature.createColumn(column, table);\n }\n\n // Yes, we have to convert table to unknown, because we know more than the compiler here.\n return column;\n}\n\nconst debug = 'debugHeaders';\n//\n\nfunction createHeader(table, column, options) {\n var _options$id;\n const id = (_options$id = options.id) != null ? _options$id : column.id;\n let header = {\n id,\n column,\n index: options.index,\n isPlaceholder: !!options.isPlaceholder,\n placeholderId: options.placeholderId,\n depth: options.depth,\n subHeaders: [],\n colSpan: 0,\n rowSpan: 0,\n headerGroup: null,\n getLeafHeaders: () => {\n const leafHeaders = [];\n const recurseHeader = h => {\n if (h.subHeaders && h.subHeaders.length) {\n h.subHeaders.map(recurseHeader);\n }\n leafHeaders.push(h);\n };\n recurseHeader(header);\n return leafHeaders;\n },\n getContext: () => ({\n table,\n header: header,\n column\n })\n };\n table._features.forEach(feature => {\n feature.createHeader == null || feature.createHeader(header, table);\n });\n return header;\n}\nconst Headers = {\n createTable: table => {\n // Header Groups\n\n table.getHeaderGroups = memo(() => [table.getAllColumns(), table.getVisibleLeafColumns(), table.getState().columnPinning.left, table.getState().columnPinning.right], (allColumns, leafColumns, left, right) => {\n var _left$map$filter, _right$map$filter;\n const leftColumns = (_left$map$filter = left == null ? void 0 : left.map(columnId => leafColumns.find(d => d.id === columnId)).filter(Boolean)) != null ? _left$map$filter : [];\n const rightColumns = (_right$map$filter = right == null ? void 0 : right.map(columnId => leafColumns.find(d => d.id === columnId)).filter(Boolean)) != null ? _right$map$filter : [];\n const centerColumns = leafColumns.filter(column => !(left != null && left.includes(column.id)) && !(right != null && right.includes(column.id)));\n const headerGroups = buildHeaderGroups(allColumns, [...leftColumns, ...centerColumns, ...rightColumns], table);\n return headerGroups;\n }, getMemoOptions(table.options, debug, 'getHeaderGroups'));\n table.getCenterHeaderGroups = memo(() => [table.getAllColumns(), table.getVisibleLeafColumns(), table.getState().columnPinning.left, table.getState().columnPinning.right], (allColumns, leafColumns, left, right) => {\n leafColumns = leafColumns.filter(column => !(left != null && left.includes(column.id)) && !(right != null && right.includes(column.id)));\n return buildHeaderGroups(allColumns, leafColumns, table, 'center');\n }, getMemoOptions(table.options, debug, 'getCenterHeaderGroups'));\n table.getLeftHeaderGroups = memo(() => [table.getAllColumns(), table.getVisibleLeafColumns(), table.getState().columnPinning.left], (allColumns, leafColumns, left) => {\n var _left$map$filter2;\n const orderedLeafColumns = (_left$map$filter2 = left == null ? void 0 : left.map(columnId => leafColumns.find(d => d.id === columnId)).filter(Boolean)) != null ? _left$map$filter2 : [];\n return buildHeaderGroups(allColumns, orderedLeafColumns, table, 'left');\n }, getMemoOptions(table.options, debug, 'getLeftHeaderGroups'));\n table.getRightHeaderGroups = memo(() => [table.getAllColumns(), table.getVisibleLeafColumns(), table.getState().columnPinning.right], (allColumns, leafColumns, right) => {\n var _right$map$filter2;\n const orderedLeafColumns = (_right$map$filter2 = right == null ? void 0 : right.map(columnId => leafColumns.find(d => d.id === columnId)).filter(Boolean)) != null ? _right$map$filter2 : [];\n return buildHeaderGroups(allColumns, orderedLeafColumns, table, 'right');\n }, getMemoOptions(table.options, debug, 'getRightHeaderGroups'));\n\n // Footer Groups\n\n table.getFooterGroups = memo(() => [table.getHeaderGroups()], headerGroups => {\n return [...headerGroups].reverse();\n }, getMemoOptions(table.options, debug, 'getFooterGroups'));\n table.getLeftFooterGroups = memo(() => [table.getLeftHeaderGroups()], headerGroups => {\n return [...headerGroups].reverse();\n }, getMemoOptions(table.options, debug, 'getLeftFooterGroups'));\n table.getCenterFooterGroups = memo(() => [table.getCenterHeaderGroups()], headerGroups => {\n return [...headerGroups].reverse();\n }, getMemoOptions(table.options, debug, 'getCenterFooterGroups'));\n table.getRightFooterGroups = memo(() => [table.getRightHeaderGroups()], headerGroups => {\n return [...headerGroups].reverse();\n }, getMemoOptions(table.options, debug, 'getRightFooterGroups'));\n\n // Flat Headers\n\n table.getFlatHeaders = memo(() => [table.getHeaderGroups()], headerGroups => {\n return headerGroups.map(headerGroup => {\n return headerGroup.headers;\n }).flat();\n }, getMemoOptions(table.options, debug, 'getFlatHeaders'));\n table.getLeftFlatHeaders = memo(() => [table.getLeftHeaderGroups()], left => {\n return left.map(headerGroup => {\n return headerGroup.headers;\n }).flat();\n }, getMemoOptions(table.options, debug, 'getLeftFlatHeaders'));\n table.getCenterFlatHeaders = memo(() => [table.getCenterHeaderGroups()], left => {\n return left.map(headerGroup => {\n return headerGroup.headers;\n }).flat();\n }, getMemoOptions(table.options, debug, 'getCenterFlatHeaders'));\n table.getRightFlatHeaders = memo(() => [table.getRightHeaderGroups()], left => {\n return left.map(headerGroup => {\n return headerGroup.headers;\n }).flat();\n }, getMemoOptions(table.options, debug, 'getRightFlatHeaders'));\n\n // Leaf Headers\n\n table.getCenterLeafHeaders = memo(() => [table.getCenterFlatHeaders()], flatHeaders => {\n return flatHeaders.filter(header => {\n var _header$subHeaders;\n return !((_header$subHeaders = header.subHeaders) != null && _header$subHeaders.length);\n });\n }, getMemoOptions(table.options, debug, 'getCenterLeafHeaders'));\n table.getLeftLeafHeaders = memo(() => [table.getLeftFlatHeaders()], flatHeaders => {\n return flatHeaders.filter(header => {\n var _header$subHeaders2;\n return !((_header$subHeaders2 = header.subHeaders) != null && _header$subHeaders2.length);\n });\n }, getMemoOptions(table.options, debug, 'getLeftLeafHeaders'));\n table.getRightLeafHeaders = memo(() => [table.getRightFlatHeaders()], flatHeaders => {\n return flatHeaders.filter(header => {\n var _header$subHeaders3;\n return !((_header$subHeaders3 = header.subHeaders) != null && _header$subHeaders3.length);\n });\n }, getMemoOptions(table.options, debug, 'getRightLeafHeaders'));\n table.getLeafHeaders = memo(() => [table.getLeftHeaderGroups(), table.getCenterHeaderGroups(), table.getRightHeaderGroups()], (left, center, right) => {\n var _left$0$headers, _left$, _center$0$headers, _center$, _right$0$headers, _right$;\n return [...((_left$0$headers = (_left$ = left[0]) == null ? void 0 : _left$.headers) != null ? _left$0$headers : []), ...((_center$0$headers = (_center$ = center[0]) == null ? void 0 : _center$.headers) != null ? _center$0$headers : []), ...((_right$0$headers = (_right$ = right[0]) == null ? void 0 : _right$.headers) != null ? _right$0$headers : [])].map(header => {\n return header.getLeafHeaders();\n }).flat();\n }, getMemoOptions(table.options, debug, 'getLeafHeaders'));\n }\n};\nfunction buildHeaderGroups(allColumns, columnsToGroup, table, headerFamily) {\n var _headerGroups$0$heade, _headerGroups$;\n // Find the max depth of the columns:\n // build the leaf column row\n // build each buffer row going up\n // placeholder for non-existent level\n // real column for existing level\n\n let maxDepth = 0;\n const findMaxDepth = function (columns, depth) {\n if (depth === void 0) {\n depth = 1;\n }\n maxDepth = Math.max(maxDepth, depth);\n columns.filter(column => column.getIsVisible()).forEach(column => {\n var _column$columns;\n if ((_column$columns = column.columns) != null && _column$columns.length) {\n findMaxDepth(column.columns, depth + 1);\n }\n }, 0);\n };\n findMaxDepth(allColumns);\n let headerGroups = [];\n const createHeaderGroup = (headersToGroup, depth) => {\n // The header group we are creating\n const headerGroup = {\n depth,\n id: [headerFamily, `${depth}`].filter(Boolean).join('_'),\n headers: []\n };\n\n // The parent columns we're going to scan next\n const pendingParentHeaders = [];\n\n // Scan each column for parents\n headersToGroup.forEach(headerToGroup => {\n // What is the latest (last) parent column?\n\n const latestPendingParentHeader = [...pendingParentHeaders].reverse()[0];\n const isLeafHeader = headerToGroup.column.depth === headerGroup.depth;\n let column;\n let isPlaceholder = false;\n if (isLeafHeader && headerToGroup.column.parent) {\n // The parent header is new\n column = headerToGroup.column.parent;\n } else {\n // The parent header is repeated\n column = headerToGroup.column;\n isPlaceholder = true;\n }\n if (latestPendingParentHeader && (latestPendingParentHeader == null ? void 0 : latestPendingParentHeader.column) === column) {\n // This column is repeated. Add it as a sub header to the next batch\n latestPendingParentHeader.subHeaders.push(headerToGroup);\n } else {\n // This is a new header. Let's create it\n const header = createHeader(table, column, {\n id: [headerFamily, depth, column.id, headerToGroup == null ? void 0 : headerToGroup.id].filter(Boolean).join('_'),\n isPlaceholder,\n placeholderId: isPlaceholder ? `${pendingParentHeaders.filter(d => d.column === column).length}` : undefined,\n depth,\n index: pendingParentHeaders.length\n });\n\n // Add the headerToGroup as a subHeader of the new header\n header.subHeaders.push(headerToGroup);\n // Add the new header to the pendingParentHeaders to get grouped\n // in the next batch\n pendingParentHeaders.push(header);\n }\n headerGroup.headers.push(headerToGroup);\n headerToGroup.headerGroup = headerGroup;\n });\n headerGroups.push(headerGroup);\n if (depth > 0) {\n createHeaderGroup(pendingParentHeaders, depth - 1);\n }\n };\n const bottomHeaders = columnsToGroup.map((column, index) => createHeader(table, column, {\n depth: maxDepth,\n index\n }));\n createHeaderGroup(bottomHeaders, maxDepth - 1);\n headerGroups.reverse();\n\n // headerGroups = headerGroups.filter(headerGroup => {\n // return !headerGroup.headers.every(header => header.isPlaceholder)\n // })\n\n const recurseHeadersForSpans = headers => {\n const filteredHeaders = headers.filter(header => header.column.getIsVisible());\n return filteredHeaders.map(header => {\n let colSpan = 0;\n let rowSpan = 0;\n let childRowSpans = [0];\n if (header.subHeaders && header.subHeaders.length) {\n childRowSpans = [];\n recurseHeadersForSpans(header.subHeaders).forEach(_ref => {\n let {\n colSpan: childColSpan,\n rowSpan: childRowSpan\n } = _ref;\n colSpan += childColSpan;\n childRowSpans.push(childRowSpan);\n });\n } else {\n colSpan = 1;\n }\n const minChildRowSpan = Math.min(...childRowSpans);\n rowSpan = rowSpan + minChildRowSpan;\n header.colSpan = colSpan;\n header.rowSpan = rowSpan;\n return {\n colSpan,\n rowSpan\n };\n });\n };\n recurseHeadersForSpans((_headerGroups$0$heade = (_headerGroups$ = headerGroups[0]) == null ? void 0 : _headerGroups$.headers) != null ? _headerGroups$0$heade : []);\n return headerGroups;\n}\n\nconst createRow = (table, id, original, rowIndex, depth, subRows, parentId) => {\n let row = {\n id,\n index: rowIndex,\n original,\n depth,\n parentId,\n _valuesCache: {},\n _uniqueValuesCache: {},\n getValue: columnId => {\n if (row._valuesCache.hasOwnProperty(columnId)) {\n return row._valuesCache[columnId];\n }\n const column = table.getColumn(columnId);\n if (!(column != null && column.accessorFn)) {\n return undefined;\n }\n row._valuesCache[columnId] = column.accessorFn(row.original, rowIndex);\n return row._valuesCache[columnId];\n },\n getUniqueValues: columnId => {\n if (row._uniqueValuesCache.hasOwnProperty(columnId)) {\n return row._uniqueValuesCache[columnId];\n }\n const column = table.getColumn(columnId);\n if (!(column != null && column.accessorFn)) {\n return undefined;\n }\n if (!column.columnDef.getUniqueValues) {\n row._uniqueValuesCache[columnId] = [row.getValue(columnId)];\n return row._uniqueValuesCache[columnId];\n }\n row._uniqueValuesCache[columnId] = column.columnDef.getUniqueValues(row.original, rowIndex);\n return row._uniqueValuesCache[columnId];\n },\n renderValue: columnId => {\n var _row$getValue;\n return (_row$getValue = row.getValue(columnId)) != null ? _row$getValue : table.options.renderFallbackValue;\n },\n subRows: subRows != null ? subRows : [],\n getLeafRows: () => flattenBy(row.subRows, d => d.subRows),\n getParentRow: () => row.parentId ? table.getRow(row.parentId, true) : undefined,\n getParentRows: () => {\n let parentRows = [];\n let currentRow = row;\n while (true) {\n const parentRow = currentRow.getParentRow();\n if (!parentRow) break;\n parentRows.push(parentRow);\n currentRow = parentRow;\n }\n return parentRows.reverse();\n },\n getAllCells: memo(() => [table.getAllLeafColumns()], leafColumns => {\n return leafColumns.map(column => {\n return createCell(table, row, column, column.id);\n });\n }, getMemoOptions(table.options, 'debugRows', 'getAllCells')),\n _getAllCellsByColumnId: memo(() => [row.getAllCells()], allCells => {\n return allCells.reduce((acc, cell) => {\n acc[cell.column.id] = cell;\n return acc;\n }, {});\n }, getMemoOptions(table.options, 'debugRows', 'getAllCellsByColumnId'))\n };\n for (let i = 0; i < table._features.length; i++) {\n const feature = table._features[i];\n feature == null || feature.createRow == null || feature.createRow(row, table);\n }\n return row;\n};\n\n//\n\nconst ColumnFaceting = {\n createColumn: (column, table) => {\n column._getFacetedRowModel = table.options.getFacetedRowModel && table.options.getFacetedRowModel(table, column.id);\n column.getFacetedRowModel = () => {\n if (!column._getFacetedRowModel) {\n return table.getPreFilteredRowModel();\n }\n return column._getFacetedRowModel();\n };\n column._getFacetedUniqueValues = table.options.getFacetedUniqueValues && table.options.getFacetedUniqueValues(table, column.id);\n column.getFacetedUniqueValues = () => {\n if (!column._getFacetedUniqueValues) {\n return new Map();\n }\n return column._getFacetedUniqueValues();\n };\n column._getFacetedMinMaxValues = table.options.getFacetedMinMaxValues && table.options.getFacetedMinMaxValues(table, column.id);\n column.getFacetedMinMaxValues = () => {\n if (!column._getFacetedMinMaxValues) {\n return undefined;\n }\n return column._getFacetedMinMaxValues();\n };\n }\n};\n\nconst includesString = (row, columnId, filterValue) => {\n var _filterValue$toString, _row$getValue;\n const search = filterValue == null || (_filterValue$toString = filterValue.toString()) == null ? void 0 : _filterValue$toString.toLowerCase();\n return Boolean((_row$getValue = row.getValue(columnId)) == null || (_row$getValue = _row$getValue.toString()) == null || (_row$getValue = _row$getValue.toLowerCase()) == null ? void 0 : _row$getValue.includes(search));\n};\nincludesString.autoRemove = val => testFalsey(val);\nconst includesStringSensitive = (row, columnId, filterValue) => {\n var _row$getValue2;\n return Boolean((_row$getValue2 = row.getValue(columnId)) == null || (_row$getValue2 = _row$getValue2.toString()) == null ? void 0 : _row$getValue2.includes(filterValue));\n};\nincludesStringSensitive.autoRemove = val => testFalsey(val);\nconst equalsString = (row, columnId, filterValue) => {\n var _row$getValue3;\n return ((_row$getValue3 = row.getValue(columnId)) == null || (_row$getValue3 = _row$getValue3.toString()) == null ? void 0 : _row$getValue3.toLowerCase()) === (filterValue == null ? void 0 : filterValue.toLowerCase());\n};\nequalsString.autoRemove = val => testFalsey(val);\nconst arrIncludes = (row, columnId, filterValue) => {\n var _row$getValue4;\n return (_row$getValue4 = row.getValue(columnId)) == null ? void 0 : _row$getValue4.includes(filterValue);\n};\narrIncludes.autoRemove = val => testFalsey(val);\nconst arrIncludesAll = (row, columnId, filterValue) => {\n return !filterValue.some(val => {\n var _row$getValue5;\n return !((_row$getValue5 = row.getValue(columnId)) != null && _row$getValue5.includes(val));\n });\n};\narrIncludesAll.autoRemove = val => testFalsey(val) || !(val != null && val.length);\nconst arrIncludesSome = (row, columnId, filterValue) => {\n return filterValue.some(val => {\n var _row$getValue6;\n return (_row$getValue6 = row.getValue(columnId)) == null ? void 0 : _row$getValue6.includes(val);\n });\n};\narrIncludesSome.autoRemove = val => testFalsey(val) || !(val != null && val.length);\nconst equals = (row, columnId, filterValue) => {\n return row.getValue(columnId) === filterValue;\n};\nequals.autoRemove = val => testFalsey(val);\nconst weakEquals = (row, columnId, filterValue) => {\n return row.getValue(columnId) == filterValue;\n};\nweakEquals.autoRemove = val => testFalsey(val);\nconst inNumberRange = (row, columnId, filterValue) => {\n let [min, max] = filterValue;\n const rowValue = row.getValue(columnId);\n return rowValue >= min && rowValue <= max;\n};\ninNumberRange.resolveFilterValue = val => {\n let [unsafeMin, unsafeMax] = val;\n let parsedMin = typeof unsafeMin !== 'number' ? parseFloat(unsafeMin) : unsafeMin;\n let parsedMax = typeof unsafeMax !== 'number' ? parseFloat(unsafeMax) : unsafeMax;\n let min = unsafeMin === null || Number.isNaN(parsedMin) ? -Infinity : parsedMin;\n let max = unsafeMax === null || Number.isNaN(parsedMax) ? Infinity : parsedMax;\n if (min > max) {\n const temp = min;\n min = max;\n max = temp;\n }\n return [min, max];\n};\ninNumberRange.autoRemove = val => testFalsey(val) || testFalsey(val[0]) && testFalsey(val[1]);\n\n// Export\n\nconst filterFns = {\n includesString,\n includesStringSensitive,\n equalsString,\n arrIncludes,\n arrIncludesAll,\n arrIncludesSome,\n equals,\n weakEquals,\n inNumberRange\n};\n// Utils\n\nfunction testFalsey(val) {\n return val === undefined || val === null || val === '';\n}\n\n//\n\nconst ColumnFiltering = {\n getDefaultColumnDef: () => {\n return {\n filterFn: 'auto'\n };\n },\n getInitialState: state => {\n return {\n columnFilters: [],\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onColumnFiltersChange: makeStateUpdater('columnFilters', table),\n filterFromLeafRows: false,\n maxLeafRowFilterDepth: 100\n };\n },\n createColumn: (column, table) => {\n column.getAutoFilterFn = () => {\n const firstRow = table.getCoreRowModel().flatRows[0];\n const value = firstRow == null ? void 0 : firstRow.getValue(column.id);\n if (typeof value === 'string') {\n return filterFns.includesString;\n }\n if (typeof value === 'number') {\n return filterFns.inNumberRange;\n }\n if (typeof value === 'boolean') {\n return filterFns.equals;\n }\n if (value !== null && typeof value === 'object') {\n return filterFns.equals;\n }\n if (Array.isArray(value)) {\n return filterFns.arrIncludes;\n }\n return filterFns.weakEquals;\n };\n column.getFilterFn = () => {\n var _table$options$filter, _table$options$filter2;\n return isFunction(column.columnDef.filterFn) ? column.columnDef.filterFn : column.columnDef.filterFn === 'auto' ? column.getAutoFilterFn() : // @ts-ignore\n (_table$options$filter = (_table$options$filter2 = table.options.filterFns) == null ? void 0 : _table$options$filter2[column.columnDef.filterFn]) != null ? _table$options$filter : filterFns[column.columnDef.filterFn];\n };\n column.getCanFilter = () => {\n var _column$columnDef$ena, _table$options$enable, _table$options$enable2;\n return ((_column$columnDef$ena = column.columnDef.enableColumnFilter) != null ? _column$columnDef$ena : true) && ((_table$options$enable = table.options.enableColumnFilters) != null ? _table$options$enable : true) && ((_table$options$enable2 = table.options.enableFilters) != null ? _table$options$enable2 : true) && !!column.accessorFn;\n };\n column.getIsFiltered = () => column.getFilterIndex() > -1;\n column.getFilterValue = () => {\n var _table$getState$colum;\n return (_table$getState$colum = table.getState().columnFilters) == null || (_table$getState$colum = _table$getState$colum.find(d => d.id === column.id)) == null ? void 0 : _table$getState$colum.value;\n };\n column.getFilterIndex = () => {\n var _table$getState$colum2, _table$getState$colum3;\n return (_table$getState$colum2 = (_table$getState$colum3 = table.getState().columnFilters) == null ? void 0 : _table$getState$colum3.findIndex(d => d.id === column.id)) != null ? _table$getState$colum2 : -1;\n };\n column.setFilterValue = value => {\n table.setColumnFilters(old => {\n const filterFn = column.getFilterFn();\n const previousFilter = old == null ? void 0 : old.find(d => d.id === column.id);\n const newFilter = functionalUpdate(value, previousFilter ? previousFilter.value : undefined);\n\n //\n if (shouldAutoRemoveFilter(filterFn, newFilter, column)) {\n var _old$filter;\n return (_old$filter = old == null ? void 0 : old.filter(d => d.id !== column.id)) != null ? _old$filter : [];\n }\n const newFilterObj = {\n id: column.id,\n value: newFilter\n };\n if (previousFilter) {\n var _old$map;\n return (_old$map = old == null ? void 0 : old.map(d => {\n if (d.id === column.id) {\n return newFilterObj;\n }\n return d;\n })) != null ? _old$map : [];\n }\n if (old != null && old.length) {\n return [...old, newFilterObj];\n }\n return [newFilterObj];\n });\n };\n },\n createRow: (row, _table) => {\n row.columnFilters = {};\n row.columnFiltersMeta = {};\n },\n createTable: table => {\n table.setColumnFilters = updater => {\n const leafColumns = table.getAllLeafColumns();\n const updateFn = old => {\n var _functionalUpdate;\n return (_functionalUpdate = functionalUpdate(updater, old)) == null ? void 0 : _functionalUpdate.filter(filter => {\n const column = leafColumns.find(d => d.id === filter.id);\n if (column) {\n const filterFn = column.getFilterFn();\n if (shouldAutoRemoveFilter(filterFn, filter.value, column)) {\n return false;\n }\n }\n return true;\n });\n };\n table.options.onColumnFiltersChange == null || table.options.onColumnFiltersChange(updateFn);\n };\n table.resetColumnFilters = defaultState => {\n var _table$initialState$c, _table$initialState;\n table.setColumnFilters(defaultState ? [] : (_table$initialState$c = (_table$initialState = table.initialState) == null ? void 0 : _table$initialState.columnFilters) != null ? _table$initialState$c : []);\n };\n table.getPreFilteredRowModel = () => table.getCoreRowModel();\n table.getFilteredRowModel = () => {\n if (!table._getFilteredRowModel && table.options.getFilteredRowModel) {\n table._getFilteredRowModel = table.options.getFilteredRowModel(table);\n }\n if (table.options.manualFiltering || !table._getFilteredRowModel) {\n return table.getPreFilteredRowModel();\n }\n return table._getFilteredRowModel();\n };\n }\n};\nfunction shouldAutoRemoveFilter(filterFn, value, column) {\n return (filterFn && filterFn.autoRemove ? filterFn.autoRemove(value, column) : false) || typeof value === 'undefined' || typeof value === 'string' && !value;\n}\n\nconst sum = (columnId, _leafRows, childRows) => {\n // It's faster to just add the aggregations together instead of\n // process leaf nodes individually\n return childRows.reduce((sum, next) => {\n const nextValue = next.getValue(columnId);\n return sum + (typeof nextValue === 'number' ? nextValue : 0);\n }, 0);\n};\nconst min = (columnId, _leafRows, childRows) => {\n let min;\n childRows.forEach(row => {\n const value = row.getValue(columnId);\n if (value != null && (min > value || min === undefined && value >= value)) {\n min = value;\n }\n });\n return min;\n};\nconst max = (columnId, _leafRows, childRows) => {\n let max;\n childRows.forEach(row => {\n const value = row.getValue(columnId);\n if (value != null && (max < value || max === undefined && value >= value)) {\n max = value;\n }\n });\n return max;\n};\nconst extent = (columnId, _leafRows, childRows) => {\n let min;\n let max;\n childRows.forEach(row => {\n const value = row.getValue(columnId);\n if (value != null) {\n if (min === undefined) {\n if (value >= value) min = max = value;\n } else {\n if (min > value) min = value;\n if (max < value) max = value;\n }\n }\n });\n return [min, max];\n};\nconst mean = (columnId, leafRows) => {\n let count = 0;\n let sum = 0;\n leafRows.forEach(row => {\n let value = row.getValue(columnId);\n if (value != null && (value = +value) >= value) {\n ++count, sum += value;\n }\n });\n if (count) return sum / count;\n return;\n};\nconst median = (columnId, leafRows) => {\n if (!leafRows.length) {\n return;\n }\n const values = leafRows.map(row => row.getValue(columnId));\n if (!isNumberArray(values)) {\n return;\n }\n if (values.length === 1) {\n return values[0];\n }\n const mid = Math.floor(values.length / 2);\n const nums = values.sort((a, b) => a - b);\n return values.length % 2 !== 0 ? nums[mid] : (nums[mid - 1] + nums[mid]) / 2;\n};\nconst unique = (columnId, leafRows) => {\n return Array.from(new Set(leafRows.map(d => d.getValue(columnId))).values());\n};\nconst uniqueCount = (columnId, leafRows) => {\n return new Set(leafRows.map(d => d.getValue(columnId))).size;\n};\nconst count = (_columnId, leafRows) => {\n return leafRows.length;\n};\nconst aggregationFns = {\n sum,\n min,\n max,\n extent,\n mean,\n median,\n unique,\n uniqueCount,\n count\n};\n\n//\n\nconst ColumnGrouping = {\n getDefaultColumnDef: () => {\n return {\n aggregatedCell: props => {\n var _toString, _props$getValue;\n return (_toString = (_props$getValue = props.getValue()) == null || _props$getValue.toString == null ? void 0 : _props$getValue.toString()) != null ? _toString : null;\n },\n aggregationFn: 'auto'\n };\n },\n getInitialState: state => {\n return {\n grouping: [],\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onGroupingChange: makeStateUpdater('grouping', table),\n groupedColumnMode: 'reorder'\n };\n },\n createColumn: (column, table) => {\n column.toggleGrouping = () => {\n table.setGrouping(old => {\n // Find any existing grouping for this column\n if (old != null && old.includes(column.id)) {\n return old.filter(d => d !== column.id);\n }\n return [...(old != null ? old : []), column.id];\n });\n };\n column.getCanGroup = () => {\n var _column$columnDef$ena, _table$options$enable;\n return ((_column$columnDef$ena = column.columnDef.enableGrouping) != null ? _column$columnDef$ena : true) && ((_table$options$enable = table.options.enableGrouping) != null ? _table$options$enable : true) && (!!column.accessorFn || !!column.columnDef.getGroupingValue);\n };\n column.getIsGrouped = () => {\n var _table$getState$group;\n return (_table$getState$group = table.getState().grouping) == null ? void 0 : _table$getState$group.includes(column.id);\n };\n column.getGroupedIndex = () => {\n var _table$getState$group2;\n return (_table$getState$group2 = table.getState().grouping) == null ? void 0 : _table$getState$group2.indexOf(column.id);\n };\n column.getToggleGroupingHandler = () => {\n const canGroup = column.getCanGroup();\n return () => {\n if (!canGroup) return;\n column.toggleGrouping();\n };\n };\n column.getAutoAggregationFn = () => {\n const firstRow = table.getCoreRowModel().flatRows[0];\n const value = firstRow == null ? void 0 : firstRow.getValue(column.id);\n if (typeof value === 'number') {\n return aggregationFns.sum;\n }\n if (Object.prototype.toString.call(value) === '[object Date]') {\n return aggregationFns.extent;\n }\n };\n column.getAggregationFn = () => {\n var _table$options$aggreg, _table$options$aggreg2;\n if (!column) {\n throw new Error();\n }\n return isFunction(column.columnDef.aggregationFn) ? column.columnDef.aggregationFn : column.columnDef.aggregationFn === 'auto' ? column.getAutoAggregationFn() : (_table$options$aggreg = (_table$options$aggreg2 = table.options.aggregationFns) == null ? void 0 : _table$options$aggreg2[column.columnDef.aggregationFn]) != null ? _table$options$aggreg : aggregationFns[column.columnDef.aggregationFn];\n };\n },\n createTable: table => {\n table.setGrouping = updater => table.options.onGroupingChange == null ? void 0 : table.options.onGroupingChange(updater);\n table.resetGrouping = defaultState => {\n var _table$initialState$g, _table$initialState;\n table.setGrouping(defaultState ? [] : (_table$initialState$g = (_table$initialState = table.initialState) == null ? void 0 : _table$initialState.grouping) != null ? _table$initialState$g : []);\n };\n table.getPreGroupedRowModel = () => table.getFilteredRowModel();\n table.getGroupedRowModel = () => {\n if (!table._getGroupedRowModel && table.options.getGroupedRowModel) {\n table._getGroupedRowModel = table.options.getGroupedRowModel(table);\n }\n if (table.options.manualGrouping || !table._getGroupedRowModel) {\n return table.getPreGroupedRowModel();\n }\n return table._getGroupedRowModel();\n };\n },\n createRow: (row, table) => {\n row.getIsGrouped = () => !!row.groupingColumnId;\n row.getGroupingValue = columnId => {\n if (row._groupingValuesCache.hasOwnProperty(columnId)) {\n return row._groupingValuesCache[columnId];\n }\n const column = table.getColumn(columnId);\n if (!(column != null && column.columnDef.getGroupingValue)) {\n return row.getValue(columnId);\n }\n row._groupingValuesCache[columnId] = column.columnDef.getGroupingValue(row.original);\n return row._groupingValuesCache[columnId];\n };\n row._groupingValuesCache = {};\n },\n createCell: (cell, column, row, table) => {\n cell.getIsGrouped = () => column.getIsGrouped() && column.id === row.groupingColumnId;\n cell.getIsPlaceholder = () => !cell.getIsGrouped() && column.getIsGrouped();\n cell.getIsAggregated = () => {\n var _row$subRows;\n return !cell.getIsGrouped() && !cell.getIsPlaceholder() && !!((_row$subRows = row.subRows) != null && _row$subRows.length);\n };\n }\n};\nfunction orderColumns(leafColumns, grouping, groupedColumnMode) {\n if (!(grouping != null && grouping.length) || !groupedColumnMode) {\n return leafColumns;\n }\n const nonGroupingColumns = leafColumns.filter(col => !grouping.includes(col.id));\n if (groupedColumnMode === 'remove') {\n return nonGroupingColumns;\n }\n const groupingColumns = grouping.map(g => leafColumns.find(col => col.id === g)).filter(Boolean);\n return [...groupingColumns, ...nonGroupingColumns];\n}\n\n//\n\nconst ColumnOrdering = {\n getInitialState: state => {\n return {\n columnOrder: [],\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onColumnOrderChange: makeStateUpdater('columnOrder', table)\n };\n },\n createColumn: (column, table) => {\n column.getIndex = memo(position => [_getVisibleLeafColumns(table, position)], columns => columns.findIndex(d => d.id === column.id), getMemoOptions(table.options, 'debugColumns', 'getIndex'));\n column.getIsFirstColumn = position => {\n var _columns$;\n const columns = _getVisibleLeafColumns(table, position);\n return ((_columns$ = columns[0]) == null ? void 0 : _columns$.id) === column.id;\n };\n column.getIsLastColumn = position => {\n var _columns;\n const columns = _getVisibleLeafColumns(table, position);\n return ((_columns = columns[columns.length - 1]) == null ? void 0 : _columns.id) === column.id;\n };\n },\n createTable: table => {\n table.setColumnOrder = updater => table.options.onColumnOrderChange == null ? void 0 : table.options.onColumnOrderChange(updater);\n table.resetColumnOrder = defaultState => {\n var _table$initialState$c;\n table.setColumnOrder(defaultState ? [] : (_table$initialState$c = table.initialState.columnOrder) != null ? _table$initialState$c : []);\n };\n table._getOrderColumnsFn = memo(() => [table.getState().columnOrder, table.getState().grouping, table.options.groupedColumnMode], (columnOrder, grouping, groupedColumnMode) => columns => {\n // Sort grouped columns to the start of the column list\n // before the headers are built\n let orderedColumns = [];\n\n // If there is no order, return the normal columns\n if (!(columnOrder != null && columnOrder.length)) {\n orderedColumns = columns;\n } else {\n const columnOrderCopy = [...columnOrder];\n\n // If there is an order, make a copy of the columns\n const columnsCopy = [...columns];\n\n // And make a new ordered array of the columns\n\n // Loop over the columns and place them in order into the new array\n while (columnsCopy.length && columnOrderCopy.length) {\n const targetColumnId = columnOrderCopy.shift();\n const foundIndex = columnsCopy.findIndex(d => d.id === targetColumnId);\n if (foundIndex > -1) {\n orderedColumns.push(columnsCopy.splice(foundIndex, 1)[0]);\n }\n }\n\n // If there are any columns left, add them to the end\n orderedColumns = [...orderedColumns, ...columnsCopy];\n }\n return orderColumns(orderedColumns, grouping, groupedColumnMode);\n }, getMemoOptions(table.options, 'debugTable', '_getOrderColumnsFn'));\n }\n};\n\n//\n\nconst getDefaultColumnPinningState = () => ({\n left: [],\n right: []\n});\nconst ColumnPinning = {\n getInitialState: state => {\n return {\n columnPinning: getDefaultColumnPinningState(),\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onColumnPinningChange: makeStateUpdater('columnPinning', table)\n };\n },\n createColumn: (column, table) => {\n column.pin = position => {\n const columnIds = column.getLeafColumns().map(d => d.id).filter(Boolean);\n table.setColumnPinning(old => {\n var _old$left3, _old$right3;\n if (position === 'right') {\n var _old$left, _old$right;\n return {\n left: ((_old$left = old == null ? void 0 : old.left) != null ? _old$left : []).filter(d => !(columnIds != null && columnIds.includes(d))),\n right: [...((_old$right = old == null ? void 0 : old.right) != null ? _old$right : []).filter(d => !(columnIds != null && columnIds.includes(d))), ...columnIds]\n };\n }\n if (position === 'left') {\n var _old$left2, _old$right2;\n return {\n left: [...((_old$left2 = old == null ? void 0 : old.left) != null ? _old$left2 : []).filter(d => !(columnIds != null && columnIds.includes(d))), ...columnIds],\n right: ((_old$right2 = old == null ? void 0 : old.right) != null ? _old$right2 : []).filter(d => !(columnIds != null && columnIds.includes(d)))\n };\n }\n return {\n left: ((_old$left3 = old == null ? void 0 : old.left) != null ? _old$left3 : []).filter(d => !(columnIds != null && columnIds.includes(d))),\n right: ((_old$right3 = old == null ? void 0 : old.right) != null ? _old$right3 : []).filter(d => !(columnIds != null && columnIds.includes(d)))\n };\n });\n };\n column.getCanPin = () => {\n const leafColumns = column.getLeafColumns();\n return leafColumns.some(d => {\n var _d$columnDef$enablePi, _ref, _table$options$enable;\n return ((_d$columnDef$enablePi = d.columnDef.enablePinning) != null ? _d$columnDef$enablePi : true) && ((_ref = (_table$options$enable = table.options.enableColumnPinning) != null ? _table$options$enable : table.options.enablePinning) != null ? _ref : true);\n });\n };\n column.getIsPinned = () => {\n const leafColumnIds = column.getLeafColumns().map(d => d.id);\n const {\n left,\n right\n } = table.getState().columnPinning;\n const isLeft = leafColumnIds.some(d => left == null ? void 0 : left.includes(d));\n const isRight = leafColumnIds.some(d => right == null ? void 0 : right.includes(d));\n return isLeft ? 'left' : isRight ? 'right' : false;\n };\n column.getPinnedIndex = () => {\n var _table$getState$colum, _table$getState$colum2;\n const position = column.getIsPinned();\n return position ? (_table$getState$colum = (_table$getState$colum2 = table.getState().columnPinning) == null || (_table$getState$colum2 = _table$getState$colum2[position]) == null ? void 0 : _table$getState$colum2.indexOf(column.id)) != null ? _table$getState$colum : -1 : 0;\n };\n },\n createRow: (row, table) => {\n row.getCenterVisibleCells = memo(() => [row._getAllVisibleCells(), table.getState().columnPinning.left, table.getState().columnPinning.right], (allCells, left, right) => {\n const leftAndRight = [...(left != null ? left : []), ...(right != null ? right : [])];\n return allCells.filter(d => !leftAndRight.includes(d.column.id));\n }, getMemoOptions(table.options, 'debugRows', 'getCenterVisibleCells'));\n row.getLeftVisibleCells = memo(() => [row._getAllVisibleCells(), table.getState().columnPinning.left], (allCells, left) => {\n const cells = (left != null ? left : []).map(columnId => allCells.find(cell => cell.column.id === columnId)).filter(Boolean).map(d => ({\n ...d,\n position: 'left'\n }));\n return cells;\n }, getMemoOptions(table.options, 'debugRows', 'getLeftVisibleCells'));\n row.getRightVisibleCells = memo(() => [row._getAllVisibleCells(), table.getState().columnPinning.right], (allCells, right) => {\n const cells = (right != null ? right : []).map(columnId => allCells.find(cell => cell.column.id === columnId)).filter(Boolean).map(d => ({\n ...d,\n position: 'right'\n }));\n return cells;\n }, getMemoOptions(table.options, 'debugRows', 'getRightVisibleCells'));\n },\n createTable: table => {\n table.setColumnPinning = updater => table.options.onColumnPinningChange == null ? void 0 : table.options.onColumnPinningChange(updater);\n table.resetColumnPinning = defaultState => {\n var _table$initialState$c, _table$initialState;\n return table.setColumnPinning(defaultState ? getDefaultColumnPinningState() : (_table$initialState$c = (_table$initialState = table.initialState) == null ? void 0 : _table$initialState.columnPinning) != null ? _table$initialState$c : getDefaultColumnPinningState());\n };\n table.getIsSomeColumnsPinned = position => {\n var _pinningState$positio;\n const pinningState = table.getState().columnPinning;\n if (!position) {\n var _pinningState$left, _pinningState$right;\n return Boolean(((_pinningState$left = pinningState.left) == null ? void 0 : _pinningState$left.length) || ((_pinningState$right = pinningState.right) == null ? void 0 : _pinningState$right.length));\n }\n return Boolean((_pinningState$positio = pinningState[position]) == null ? void 0 : _pinningState$positio.length);\n };\n table.getLeftLeafColumns = memo(() => [table.getAllLeafColumns(), table.getState().columnPinning.left], (allColumns, left) => {\n return (left != null ? left : []).map(columnId => allColumns.find(column => column.id === columnId)).filter(Boolean);\n }, getMemoOptions(table.options, 'debugColumns', 'getLeftLeafColumns'));\n table.getRightLeafColumns = memo(() => [table.getAllLeafColumns(), table.getState().columnPinning.right], (allColumns, right) => {\n return (right != null ? right : []).map(columnId => allColumns.find(column => column.id === columnId)).filter(Boolean);\n }, getMemoOptions(table.options, 'debugColumns', 'getRightLeafColumns'));\n table.getCenterLeafColumns = memo(() => [table.getAllLeafColumns(), table.getState().columnPinning.left, table.getState().columnPinning.right], (allColumns, left, right) => {\n const leftAndRight = [...(left != null ? left : []), ...(right != null ? right : [])];\n return allColumns.filter(d => !leftAndRight.includes(d.id));\n }, getMemoOptions(table.options, 'debugColumns', 'getCenterLeafColumns'));\n }\n};\n\nfunction safelyAccessDocument(_document) {\n return _document || (typeof document !== 'undefined' ? document : null);\n}\n\n//\n\n//\n\nconst defaultColumnSizing = {\n size: 150,\n minSize: 20,\n maxSize: Number.MAX_SAFE_INTEGER\n};\nconst getDefaultColumnSizingInfoState = () => ({\n startOffset: null,\n startSize: null,\n deltaOffset: null,\n deltaPercentage: null,\n isResizingColumn: false,\n columnSizingStart: []\n});\nconst ColumnSizing = {\n getDefaultColumnDef: () => {\n return defaultColumnSizing;\n },\n getInitialState: state => {\n return {\n columnSizing: {},\n columnSizingInfo: getDefaultColumnSizingInfoState(),\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n columnResizeMode: 'onEnd',\n columnResizeDirection: 'ltr',\n onColumnSizingChange: makeStateUpdater('columnSizing', table),\n onColumnSizingInfoChange: makeStateUpdater('columnSizingInfo', table)\n };\n },\n createColumn: (column, table) => {\n column.getSize = () => {\n var _column$columnDef$min, _ref, _column$columnDef$max;\n const columnSize = table.getState().columnSizing[column.id];\n return Math.min(Math.max((_column$columnDef$min = column.columnDef.minSize) != null ? _column$columnDef$min : defaultColumnSizing.minSize, (_ref = columnSize != null ? columnSize : column.columnDef.size) != null ? _ref : defaultColumnSizing.size), (_column$columnDef$max = column.columnDef.maxSize) != null ? _column$columnDef$max : defaultColumnSizing.maxSize);\n };\n column.getStart = memo(position => [position, _getVisibleLeafColumns(table, position), table.getState().columnSizing], (position, columns) => columns.slice(0, column.getIndex(position)).reduce((sum, column) => sum + column.getSize(), 0), getMemoOptions(table.options, 'debugColumns', 'getStart'));\n column.getAfter = memo(position => [position, _getVisibleLeafColumns(table, position), table.getState().columnSizing], (position, columns) => columns.slice(column.getIndex(position) + 1).reduce((sum, column) => sum + column.getSize(), 0), getMemoOptions(table.options, 'debugColumns', 'getAfter'));\n column.resetSize = () => {\n table.setColumnSizing(_ref2 => {\n let {\n [column.id]: _,\n ...rest\n } = _ref2;\n return rest;\n });\n };\n column.getCanResize = () => {\n var _column$columnDef$ena, _table$options$enable;\n return ((_column$columnDef$ena = column.columnDef.enableResizing) != null ? _column$columnDef$ena : true) && ((_table$options$enable = table.options.enableColumnResizing) != null ? _table$options$enable : true);\n };\n column.getIsResizing = () => {\n return table.getState().columnSizingInfo.isResizingColumn === column.id;\n };\n },\n createHeader: (header, table) => {\n header.getSize = () => {\n let sum = 0;\n const recurse = header => {\n if (header.subHeaders.length) {\n header.subHeaders.forEach(recurse);\n } else {\n var _header$column$getSiz;\n sum += (_header$column$getSiz = header.column.getSize()) != null ? _header$column$getSiz : 0;\n }\n };\n recurse(header);\n return sum;\n };\n header.getStart = () => {\n if (header.index > 0) {\n const prevSiblingHeader = header.headerGroup.headers[header.index - 1];\n return prevSiblingHeader.getStart() + prevSiblingHeader.getSize();\n }\n return 0;\n };\n header.getResizeHandler = _contextDocument => {\n const column = table.getColumn(header.column.id);\n const canResize = column == null ? void 0 : column.getCanResize();\n return e => {\n if (!column || !canResize) {\n return;\n }\n e.persist == null || e.persist();\n if (isTouchStartEvent(e)) {\n // lets not respond to multiple touches (e.g. 2 or 3 fingers)\n if (e.touches && e.touches.length > 1) {\n return;\n }\n }\n const startSize = header.getSize();\n const columnSizingStart = header ? header.getLeafHeaders().map(d => [d.column.id, d.column.getSize()]) : [[column.id, column.getSize()]];\n const clientX = isTouchStartEvent(e) ? Math.round(e.touches[0].clientX) : e.clientX;\n const newColumnSizing = {};\n const updateOffset = (eventType, clientXPos) => {\n if (typeof clientXPos !== 'number') {\n return;\n }\n table.setColumnSizingInfo(old => {\n var _old$startOffset, _old$startSize;\n const deltaDirection = table.options.columnResizeDirection === 'rtl' ? -1 : 1;\n const deltaOffset = (clientXPos - ((_old$startOffset = old == null ? void 0 : old.startOffset) != null ? _old$startOffset : 0)) * deltaDirection;\n const deltaPercentage = Math.max(deltaOffset / ((_old$startSize = old == null ? void 0 : old.startSize) != null ? _old$startSize : 0), -0.999999);\n old.columnSizingStart.forEach(_ref3 => {\n let [columnId, headerSize] = _ref3;\n newColumnSizing[columnId] = Math.round(Math.max(headerSize + headerSize * deltaPercentage, 0) * 100) / 100;\n });\n return {\n ...old,\n deltaOffset,\n deltaPercentage\n };\n });\n if (table.options.columnResizeMode === 'onChange' || eventType === 'end') {\n table.setColumnSizing(old => ({\n ...old,\n ...newColumnSizing\n }));\n }\n };\n const onMove = clientXPos => updateOffset('move', clientXPos);\n const onEnd = clientXPos => {\n updateOffset('end', clientXPos);\n table.setColumnSizingInfo(old => ({\n ...old,\n isResizingColumn: false,\n startOffset: null,\n startSize: null,\n deltaOffset: null,\n deltaPercentage: null,\n columnSizingStart: []\n }));\n };\n const contextDocument = safelyAccessDocument(_contextDocument);\n const mouseEvents = {\n moveHandler: e => onMove(e.clientX),\n upHandler: e => {\n contextDocument == null || contextDocument.removeEventListener('mousemove', mouseEvents.moveHandler);\n contextDocument == null || contextDocument.removeEventListener('mouseup', mouseEvents.upHandler);\n onEnd(e.clientX);\n }\n };\n const touchEvents = {\n moveHandler: e => {\n if (e.cancelable) {\n e.preventDefault();\n e.stopPropagation();\n }\n onMove(e.touches[0].clientX);\n return false;\n },\n upHandler: e => {\n var _e$touches$;\n contextDocument == null || contextDocument.removeEventListener('touchmove', touchEvents.moveHandler);\n contextDocument == null || contextDocument.removeEventListener('touchend', touchEvents.upHandler);\n if (e.cancelable) {\n e.preventDefault();\n e.stopPropagation();\n }\n onEnd((_e$touches$ = e.touches[0]) == null ? void 0 : _e$touches$.clientX);\n }\n };\n const passiveIfSupported = passiveEventSupported() ? {\n passive: false\n } : false;\n if (isTouchStartEvent(e)) {\n contextDocument == null || contextDocument.addEventListener('touchmove', touchEvents.moveHandler, passiveIfSupported);\n contextDocument == null || contextDocument.addEventListener('touchend', touchEvents.upHandler, passiveIfSupported);\n } else {\n contextDocument == null || contextDocument.addEventListener('mousemove', mouseEvents.moveHandler, passiveIfSupported);\n contextDocument == null || contextDocument.addEventListener('mouseup', mouseEvents.upHandler, passiveIfSupported);\n }\n table.setColumnSizingInfo(old => ({\n ...old,\n startOffset: clientX,\n startSize,\n deltaOffset: 0,\n deltaPercentage: 0,\n columnSizingStart,\n isResizingColumn: column.id\n }));\n };\n };\n },\n createTable: table => {\n table.setColumnSizing = updater => table.options.onColumnSizingChange == null ? void 0 : table.options.onColumnSizingChange(updater);\n table.setColumnSizingInfo = updater => table.options.onColumnSizingInfoChange == null ? void 0 : table.options.onColumnSizingInfoChange(updater);\n table.resetColumnSizing = defaultState => {\n var _table$initialState$c;\n table.setColumnSizing(defaultState ? {} : (_table$initialState$c = table.initialState.columnSizing) != null ? _table$initialState$c : {});\n };\n table.resetHeaderSizeInfo = defaultState => {\n var _table$initialState$c2;\n table.setColumnSizingInfo(defaultState ? getDefaultColumnSizingInfoState() : (_table$initialState$c2 = table.initialState.columnSizingInfo) != null ? _table$initialState$c2 : getDefaultColumnSizingInfoState());\n };\n table.getTotalSize = () => {\n var _table$getHeaderGroup, _table$getHeaderGroup2;\n return (_table$getHeaderGroup = (_table$getHeaderGroup2 = table.getHeaderGroups()[0]) == null ? void 0 : _table$getHeaderGroup2.headers.reduce((sum, header) => {\n return sum + header.getSize();\n }, 0)) != null ? _table$getHeaderGroup : 0;\n };\n table.getLeftTotalSize = () => {\n var _table$getLeftHeaderG, _table$getLeftHeaderG2;\n return (_table$getLeftHeaderG = (_table$getLeftHeaderG2 = table.getLeftHeaderGroups()[0]) == null ? void 0 : _table$getLeftHeaderG2.headers.reduce((sum, header) => {\n return sum + header.getSize();\n }, 0)) != null ? _table$getLeftHeaderG : 0;\n };\n table.getCenterTotalSize = () => {\n var _table$getCenterHeade, _table$getCenterHeade2;\n return (_table$getCenterHeade = (_table$getCenterHeade2 = table.getCenterHeaderGroups()[0]) == null ? void 0 : _table$getCenterHeade2.headers.reduce((sum, header) => {\n return sum + header.getSize();\n }, 0)) != null ? _table$getCenterHeade : 0;\n };\n table.getRightTotalSize = () => {\n var _table$getRightHeader, _table$getRightHeader2;\n return (_table$getRightHeader = (_table$getRightHeader2 = table.getRightHeaderGroups()[0]) == null ? void 0 : _table$getRightHeader2.headers.reduce((sum, header) => {\n return sum + header.getSize();\n }, 0)) != null ? _table$getRightHeader : 0;\n };\n }\n};\nlet passiveSupported = null;\nfunction passiveEventSupported() {\n if (typeof passiveSupported === 'boolean') return passiveSupported;\n let supported = false;\n try {\n const options = {\n get passive() {\n supported = true;\n return false;\n }\n };\n const noop = () => {};\n window.addEventListener('test', noop, options);\n window.removeEventListener('test', noop);\n } catch (err) {\n supported = false;\n }\n passiveSupported = supported;\n return passiveSupported;\n}\nfunction isTouchStartEvent(e) {\n return e.type === 'touchstart';\n}\n\n//\n\nconst ColumnVisibility = {\n getInitialState: state => {\n return {\n columnVisibility: {},\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onColumnVisibilityChange: makeStateUpdater('columnVisibility', table)\n };\n },\n createColumn: (column, table) => {\n column.toggleVisibility = value => {\n if (column.getCanHide()) {\n table.setColumnVisibility(old => ({\n ...old,\n [column.id]: value != null ? value : !column.getIsVisible()\n }));\n }\n };\n column.getIsVisible = () => {\n var _ref, _table$getState$colum;\n const childColumns = column.columns;\n return (_ref = childColumns.length ? childColumns.some(c => c.getIsVisible()) : (_table$getState$colum = table.getState().columnVisibility) == null ? void 0 : _table$getState$colum[column.id]) != null ? _ref : true;\n };\n column.getCanHide = () => {\n var _column$columnDef$ena, _table$options$enable;\n return ((_column$columnDef$ena = column.columnDef.enableHiding) != null ? _column$columnDef$ena : true) && ((_table$options$enable = table.options.enableHiding) != null ? _table$options$enable : true);\n };\n column.getToggleVisibilityHandler = () => {\n return e => {\n column.toggleVisibility == null || column.toggleVisibility(e.target.checked);\n };\n };\n },\n createRow: (row, table) => {\n row._getAllVisibleCells = memo(() => [row.getAllCells(), table.getState().columnVisibility], cells => {\n return cells.filter(cell => cell.column.getIsVisible());\n }, getMemoOptions(table.options, 'debugRows', '_getAllVisibleCells'));\n row.getVisibleCells = memo(() => [row.getLeftVisibleCells(), row.getCenterVisibleCells(), row.getRightVisibleCells()], (left, center, right) => [...left, ...center, ...right], getMemoOptions(table.options, 'debugRows', 'getVisibleCells'));\n },\n createTable: table => {\n const makeVisibleColumnsMethod = (key, getColumns) => {\n return memo(() => [getColumns(), getColumns().filter(d => d.getIsVisible()).map(d => d.id).join('_')], columns => {\n return columns.filter(d => d.getIsVisible == null ? void 0 : d.getIsVisible());\n }, getMemoOptions(table.options, 'debugColumns', key));\n };\n table.getVisibleFlatColumns = makeVisibleColumnsMethod('getVisibleFlatColumns', () => table.getAllFlatColumns());\n table.getVisibleLeafColumns = makeVisibleColumnsMethod('getVisibleLeafColumns', () => table.getAllLeafColumns());\n table.getLeftVisibleLeafColumns = makeVisibleColumnsMethod('getLeftVisibleLeafColumns', () => table.getLeftLeafColumns());\n table.getRightVisibleLeafColumns = makeVisibleColumnsMethod('getRightVisibleLeafColumns', () => table.getRightLeafColumns());\n table.getCenterVisibleLeafColumns = makeVisibleColumnsMethod('getCenterVisibleLeafColumns', () => table.getCenterLeafColumns());\n table.setColumnVisibility = updater => table.options.onColumnVisibilityChange == null ? void 0 : table.options.onColumnVisibilityChange(updater);\n table.resetColumnVisibility = defaultState => {\n var _table$initialState$c;\n table.setColumnVisibility(defaultState ? {} : (_table$initialState$c = table.initialState.columnVisibility) != null ? _table$initialState$c : {});\n };\n table.toggleAllColumnsVisible = value => {\n var _value;\n value = (_value = value) != null ? _value : !table.getIsAllColumnsVisible();\n table.setColumnVisibility(table.getAllLeafColumns().reduce((obj, column) => ({\n ...obj,\n [column.id]: !value ? !(column.getCanHide != null && column.getCanHide()) : value\n }), {}));\n };\n table.getIsAllColumnsVisible = () => !table.getAllLeafColumns().some(column => !(column.getIsVisible != null && column.getIsVisible()));\n table.getIsSomeColumnsVisible = () => table.getAllLeafColumns().some(column => column.getIsVisible == null ? void 0 : column.getIsVisible());\n table.getToggleAllColumnsVisibilityHandler = () => {\n return e => {\n var _target;\n table.toggleAllColumnsVisible((_target = e.target) == null ? void 0 : _target.checked);\n };\n };\n }\n};\nfunction _getVisibleLeafColumns(table, position) {\n return !position ? table.getVisibleLeafColumns() : position === 'center' ? table.getCenterVisibleLeafColumns() : position === 'left' ? table.getLeftVisibleLeafColumns() : table.getRightVisibleLeafColumns();\n}\n\n//\n\nconst GlobalFaceting = {\n createTable: table => {\n table._getGlobalFacetedRowModel = table.options.getFacetedRowModel && table.options.getFacetedRowModel(table, '__global__');\n table.getGlobalFacetedRowModel = () => {\n if (table.options.manualFiltering || !table._getGlobalFacetedRowModel) {\n return table.getPreFilteredRowModel();\n }\n return table._getGlobalFacetedRowModel();\n };\n table._getGlobalFacetedUniqueValues = table.options.getFacetedUniqueValues && table.options.getFacetedUniqueValues(table, '__global__');\n table.getGlobalFacetedUniqueValues = () => {\n if (!table._getGlobalFacetedUniqueValues) {\n return new Map();\n }\n return table._getGlobalFacetedUniqueValues();\n };\n table._getGlobalFacetedMinMaxValues = table.options.getFacetedMinMaxValues && table.options.getFacetedMinMaxValues(table, '__global__');\n table.getGlobalFacetedMinMaxValues = () => {\n if (!table._getGlobalFacetedMinMaxValues) {\n return;\n }\n return table._getGlobalFacetedMinMaxValues();\n };\n }\n};\n\n//\n\nconst GlobalFiltering = {\n getInitialState: state => {\n return {\n globalFilter: undefined,\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onGlobalFilterChange: makeStateUpdater('globalFilter', table),\n globalFilterFn: 'auto',\n getColumnCanGlobalFilter: column => {\n var _table$getCoreRowMode;\n const value = (_table$getCoreRowMode = table.getCoreRowModel().flatRows[0]) == null || (_table$getCoreRowMode = _table$getCoreRowMode._getAllCellsByColumnId()[column.id]) == null ? void 0 : _table$getCoreRowMode.getValue();\n return typeof value === 'string' || typeof value === 'number';\n }\n };\n },\n createColumn: (column, table) => {\n column.getCanGlobalFilter = () => {\n var _column$columnDef$ena, _table$options$enable, _table$options$enable2, _table$options$getCol;\n return ((_column$columnDef$ena = column.columnDef.enableGlobalFilter) != null ? _column$columnDef$ena : true) && ((_table$options$enable = table.options.enableGlobalFilter) != null ? _table$options$enable : true) && ((_table$options$enable2 = table.options.enableFilters) != null ? _table$options$enable2 : true) && ((_table$options$getCol = table.options.getColumnCanGlobalFilter == null ? void 0 : table.options.getColumnCanGlobalFilter(column)) != null ? _table$options$getCol : true) && !!column.accessorFn;\n };\n },\n createTable: table => {\n table.getGlobalAutoFilterFn = () => {\n return filterFns.includesString;\n };\n table.getGlobalFilterFn = () => {\n var _table$options$filter, _table$options$filter2;\n const {\n globalFilterFn: globalFilterFn\n } = table.options;\n return isFunction(globalFilterFn) ? globalFilterFn : globalFilterFn === 'auto' ? table.getGlobalAutoFilterFn() : (_table$options$filter = (_table$options$filter2 = table.options.filterFns) == null ? void 0 : _table$options$filter2[globalFilterFn]) != null ? _table$options$filter : filterFns[globalFilterFn];\n };\n table.setGlobalFilter = updater => {\n table.options.onGlobalFilterChange == null || table.options.onGlobalFilterChange(updater);\n };\n table.resetGlobalFilter = defaultState => {\n table.setGlobalFilter(defaultState ? undefined : table.initialState.globalFilter);\n };\n }\n};\n\n//\n\nconst RowExpanding = {\n getInitialState: state => {\n return {\n expanded: {},\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onExpandedChange: makeStateUpdater('expanded', table),\n paginateExpandedRows: true\n };\n },\n createTable: table => {\n let registered = false;\n let queued = false;\n table._autoResetExpanded = () => {\n var _ref, _table$options$autoRe;\n if (!registered) {\n table._queue(() => {\n registered = true;\n });\n return;\n }\n if ((_ref = (_table$options$autoRe = table.options.autoResetAll) != null ? _table$options$autoRe : table.options.autoResetExpanded) != null ? _ref : !table.options.manualExpanding) {\n if (queued) return;\n queued = true;\n table._queue(() => {\n table.resetExpanded();\n queued = false;\n });\n }\n };\n table.setExpanded = updater => table.options.onExpandedChange == null ? void 0 : table.options.onExpandedChange(updater);\n table.toggleAllRowsExpanded = expanded => {\n if (expanded != null ? expanded : !table.getIsAllRowsExpanded()) {\n table.setExpanded(true);\n } else {\n table.setExpanded({});\n }\n };\n table.resetExpanded = defaultState => {\n var _table$initialState$e, _table$initialState;\n table.setExpanded(defaultState ? {} : (_table$initialState$e = (_table$initialState = table.initialState) == null ? void 0 : _table$initialState.expanded) != null ? _table$initialState$e : {});\n };\n table.getCanSomeRowsExpand = () => {\n return table.getPrePaginationRowModel().flatRows.some(row => row.getCanExpand());\n };\n table.getToggleAllRowsExpandedHandler = () => {\n return e => {\n e.persist == null || e.persist();\n table.toggleAllRowsExpanded();\n };\n };\n table.getIsSomeRowsExpanded = () => {\n const expanded = table.getState().expanded;\n return expanded === true || Object.values(expanded).some(Boolean);\n };\n table.getIsAllRowsExpanded = () => {\n const expanded = table.getState().expanded;\n\n // If expanded is true, save some cycles and return true\n if (typeof expanded === 'boolean') {\n return expanded === true;\n }\n if (!Object.keys(expanded).length) {\n return false;\n }\n\n // If any row is not expanded, return false\n if (table.getRowModel().flatRows.some(row => !row.getIsExpanded())) {\n return false;\n }\n\n // They must all be expanded :shrug:\n return true;\n };\n table.getExpandedDepth = () => {\n let maxDepth = 0;\n const rowIds = table.getState().expanded === true ? Object.keys(table.getRowModel().rowsById) : Object.keys(table.getState().expanded);\n rowIds.forEach(id => {\n const splitId = id.split('.');\n maxDepth = Math.max(maxDepth, splitId.length);\n });\n return maxDepth;\n };\n table.getPreExpandedRowModel = () => table.getSortedRowModel();\n table.getExpandedRowModel = () => {\n if (!table._getExpandedRowModel && table.options.getExpandedRowModel) {\n table._getExpandedRowModel = table.options.getExpandedRowModel(table);\n }\n if (table.options.manualExpanding || !table._getExpandedRowModel) {\n return table.getPreExpandedRowModel();\n }\n return table._getExpandedRowModel();\n };\n },\n createRow: (row, table) => {\n row.toggleExpanded = expanded => {\n table.setExpanded(old => {\n var _expanded;\n const exists = old === true ? true : !!(old != null && old[row.id]);\n let oldExpanded = {};\n if (old === true) {\n Object.keys(table.getRowModel().rowsById).forEach(rowId => {\n oldExpanded[rowId] = true;\n });\n } else {\n oldExpanded = old;\n }\n expanded = (_expanded = expanded) != null ? _expanded : !exists;\n if (!exists && expanded) {\n return {\n ...oldExpanded,\n [row.id]: true\n };\n }\n if (exists && !expanded) {\n const {\n [row.id]: _,\n ...rest\n } = oldExpanded;\n return rest;\n }\n return old;\n });\n };\n row.getIsExpanded = () => {\n var _table$options$getIsR;\n const expanded = table.getState().expanded;\n return !!((_table$options$getIsR = table.options.getIsRowExpanded == null ? void 0 : table.options.getIsRowExpanded(row)) != null ? _table$options$getIsR : expanded === true || (expanded == null ? void 0 : expanded[row.id]));\n };\n row.getCanExpand = () => {\n var _table$options$getRow, _table$options$enable, _row$subRows;\n return (_table$options$getRow = table.options.getRowCanExpand == null ? void 0 : table.options.getRowCanExpand(row)) != null ? _table$options$getRow : ((_table$options$enable = table.options.enableExpanding) != null ? _table$options$enable : true) && !!((_row$subRows = row.subRows) != null && _row$subRows.length);\n };\n row.getIsAllParentsExpanded = () => {\n let isFullyExpanded = true;\n let currentRow = row;\n while (isFullyExpanded && currentRow.parentId) {\n currentRow = table.getRow(currentRow.parentId, true);\n isFullyExpanded = currentRow.getIsExpanded();\n }\n return isFullyExpanded;\n };\n row.getToggleExpandedHandler = () => {\n const canExpand = row.getCanExpand();\n return () => {\n if (!canExpand) return;\n row.toggleExpanded();\n };\n };\n }\n};\n\n//\n\nconst defaultPageIndex = 0;\nconst defaultPageSize = 10;\nconst getDefaultPaginationState = () => ({\n pageIndex: defaultPageIndex,\n pageSize: defaultPageSize\n});\nconst RowPagination = {\n getInitialState: state => {\n return {\n ...state,\n pagination: {\n ...getDefaultPaginationState(),\n ...(state == null ? void 0 : state.pagination)\n }\n };\n },\n getDefaultOptions: table => {\n return {\n onPaginationChange: makeStateUpdater('pagination', table)\n };\n },\n createTable: table => {\n let registered = false;\n let queued = false;\n table._autoResetPageIndex = () => {\n var _ref, _table$options$autoRe;\n if (!registered) {\n table._queue(() => {\n registered = true;\n });\n return;\n }\n if ((_ref = (_table$options$autoRe = table.options.autoResetAll) != null ? _table$options$autoRe : table.options.autoResetPageIndex) != null ? _ref : !table.options.manualPagination) {\n if (queued) return;\n queued = true;\n table._queue(() => {\n table.resetPageIndex();\n queued = false;\n });\n }\n };\n table.setPagination = updater => {\n const safeUpdater = old => {\n let newState = functionalUpdate(updater, old);\n return newState;\n };\n return table.options.onPaginationChange == null ? void 0 : table.options.onPaginationChange(safeUpdater);\n };\n table.resetPagination = defaultState => {\n var _table$initialState$p;\n table.setPagination(defaultState ? getDefaultPaginationState() : (_table$initialState$p = table.initialState.pagination) != null ? _table$initialState$p : getDefaultPaginationState());\n };\n table.setPageIndex = updater => {\n table.setPagination(old => {\n let pageIndex = functionalUpdate(updater, old.pageIndex);\n const maxPageIndex = typeof table.options.pageCount === 'undefined' || table.options.pageCount === -1 ? Number.MAX_SAFE_INTEGER : table.options.pageCount - 1;\n pageIndex = Math.max(0, Math.min(pageIndex, maxPageIndex));\n return {\n ...old,\n pageIndex\n };\n });\n };\n table.resetPageIndex = defaultState => {\n var _table$initialState$p2, _table$initialState;\n table.setPageIndex(defaultState ? defaultPageIndex : (_table$initialState$p2 = (_table$initialState = table.initialState) == null || (_table$initialState = _table$initialState.pagination) == null ? void 0 : _table$initialState.pageIndex) != null ? _table$initialState$p2 : defaultPageIndex);\n };\n table.resetPageSize = defaultState => {\n var _table$initialState$p3, _table$initialState2;\n table.setPageSize(defaultState ? defaultPageSize : (_table$initialState$p3 = (_table$initialState2 = table.initialState) == null || (_table$initialState2 = _table$initialState2.pagination) == null ? void 0 : _table$initialState2.pageSize) != null ? _table$initialState$p3 : defaultPageSize);\n };\n table.setPageSize = updater => {\n table.setPagination(old => {\n const pageSize = Math.max(1, functionalUpdate(updater, old.pageSize));\n const topRowIndex = old.pageSize * old.pageIndex;\n const pageIndex = Math.floor(topRowIndex / pageSize);\n return {\n ...old,\n pageIndex,\n pageSize\n };\n });\n };\n //deprecated\n table.setPageCount = updater => table.setPagination(old => {\n var _table$options$pageCo;\n let newPageCount = functionalUpdate(updater, (_table$options$pageCo = table.options.pageCount) != null ? _table$options$pageCo : -1);\n if (typeof newPageCount === 'number') {\n newPageCount = Math.max(-1, newPageCount);\n }\n return {\n ...old,\n pageCount: newPageCount\n };\n });\n table.getPageOptions = memo(() => [table.getPageCount()], pageCount => {\n let pageOptions = [];\n if (pageCount && pageCount > 0) {\n pageOptions = [...new Array(pageCount)].fill(null).map((_, i) => i);\n }\n return pageOptions;\n }, getMemoOptions(table.options, 'debugTable', 'getPageOptions'));\n table.getCanPreviousPage = () => table.getState().pagination.pageIndex > 0;\n table.getCanNextPage = () => {\n const {\n pageIndex\n } = table.getState().pagination;\n const pageCount = table.getPageCount();\n if (pageCount === -1) {\n return true;\n }\n if (pageCount === 0) {\n return false;\n }\n return pageIndex < pageCount - 1;\n };\n table.previousPage = () => {\n return table.setPageIndex(old => old - 1);\n };\n table.nextPage = () => {\n return table.setPageIndex(old => {\n return old + 1;\n });\n };\n table.firstPage = () => {\n return table.setPageIndex(0);\n };\n table.lastPage = () => {\n return table.setPageIndex(table.getPageCount() - 1);\n };\n table.getPrePaginationRowModel = () => table.getExpandedRowModel();\n table.getPaginationRowModel = () => {\n if (!table._getPaginationRowModel && table.options.getPaginationRowModel) {\n table._getPaginationRowModel = table.options.getPaginationRowModel(table);\n }\n if (table.options.manualPagination || !table._getPaginationRowModel) {\n return table.getPrePaginationRowModel();\n }\n return table._getPaginationRowModel();\n };\n table.getPageCount = () => {\n var _table$options$pageCo2;\n return (_table$options$pageCo2 = table.options.pageCount) != null ? _table$options$pageCo2 : Math.ceil(table.getRowCount() / table.getState().pagination.pageSize);\n };\n table.getRowCount = () => {\n var _table$options$rowCou;\n return (_table$options$rowCou = table.options.rowCount) != null ? _table$options$rowCou : table.getPrePaginationRowModel().rows.length;\n };\n }\n};\n\n//\n\nconst getDefaultRowPinningState = () => ({\n top: [],\n bottom: []\n});\nconst RowPinning = {\n getInitialState: state => {\n return {\n rowPinning: getDefaultRowPinningState(),\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onRowPinningChange: makeStateUpdater('rowPinning', table)\n };\n },\n createRow: (row, table) => {\n row.pin = (position, includeLeafRows, includeParentRows) => {\n const leafRowIds = includeLeafRows ? row.getLeafRows().map(_ref => {\n let {\n id\n } = _ref;\n return id;\n }) : [];\n const parentRowIds = includeParentRows ? row.getParentRows().map(_ref2 => {\n let {\n id\n } = _ref2;\n return id;\n }) : [];\n const rowIds = new Set([...parentRowIds, row.id, ...leafRowIds]);\n table.setRowPinning(old => {\n var _old$top3, _old$bottom3;\n if (position === 'bottom') {\n var _old$top, _old$bottom;\n return {\n top: ((_old$top = old == null ? void 0 : old.top) != null ? _old$top : []).filter(d => !(rowIds != null && rowIds.has(d))),\n bottom: [...((_old$bottom = old == null ? void 0 : old.bottom) != null ? _old$bottom : []).filter(d => !(rowIds != null && rowIds.has(d))), ...Array.from(rowIds)]\n };\n }\n if (position === 'top') {\n var _old$top2, _old$bottom2;\n return {\n top: [...((_old$top2 = old == null ? void 0 : old.top) != null ? _old$top2 : []).filter(d => !(rowIds != null && rowIds.has(d))), ...Array.from(rowIds)],\n bottom: ((_old$bottom2 = old == null ? void 0 : old.bottom) != null ? _old$bottom2 : []).filter(d => !(rowIds != null && rowIds.has(d)))\n };\n }\n return {\n top: ((_old$top3 = old == null ? void 0 : old.top) != null ? _old$top3 : []).filter(d => !(rowIds != null && rowIds.has(d))),\n bottom: ((_old$bottom3 = old == null ? void 0 : old.bottom) != null ? _old$bottom3 : []).filter(d => !(rowIds != null && rowIds.has(d)))\n };\n });\n };\n row.getCanPin = () => {\n var _ref3;\n const {\n enableRowPinning,\n enablePinning\n } = table.options;\n if (typeof enableRowPinning === 'function') {\n return enableRowPinning(row);\n }\n return (_ref3 = enableRowPinning != null ? enableRowPinning : enablePinning) != null ? _ref3 : true;\n };\n row.getIsPinned = () => {\n const rowIds = [row.id];\n const {\n top,\n bottom\n } = table.getState().rowPinning;\n const isTop = rowIds.some(d => top == null ? void 0 : top.includes(d));\n const isBottom = rowIds.some(d => bottom == null ? void 0 : bottom.includes(d));\n return isTop ? 'top' : isBottom ? 'bottom' : false;\n };\n row.getPinnedIndex = () => {\n var _ref4, _visiblePinnedRowIds$;\n const position = row.getIsPinned();\n if (!position) return -1;\n const visiblePinnedRowIds = (_ref4 = position === 'top' ? table.getTopRows() : table.getBottomRows()) == null ? void 0 : _ref4.map(_ref5 => {\n let {\n id\n } = _ref5;\n return id;\n });\n return (_visiblePinnedRowIds$ = visiblePinnedRowIds == null ? void 0 : visiblePinnedRowIds.indexOf(row.id)) != null ? _visiblePinnedRowIds$ : -1;\n };\n },\n createTable: table => {\n table.setRowPinning = updater => table.options.onRowPinningChange == null ? void 0 : table.options.onRowPinningChange(updater);\n table.resetRowPinning = defaultState => {\n var _table$initialState$r, _table$initialState;\n return table.setRowPinning(defaultState ? getDefaultRowPinningState() : (_table$initialState$r = (_table$initialState = table.initialState) == null ? void 0 : _table$initialState.rowPinning) != null ? _table$initialState$r : getDefaultRowPinningState());\n };\n table.getIsSomeRowsPinned = position => {\n var _pinningState$positio;\n const pinningState = table.getState().rowPinning;\n if (!position) {\n var _pinningState$top, _pinningState$bottom;\n return Boolean(((_pinningState$top = pinningState.top) == null ? void 0 : _pinningState$top.length) || ((_pinningState$bottom = pinningState.bottom) == null ? void 0 : _pinningState$bottom.length));\n }\n return Boolean((_pinningState$positio = pinningState[position]) == null ? void 0 : _pinningState$positio.length);\n };\n table._getPinnedRows = (visibleRows, pinnedRowIds, position) => {\n var _table$options$keepPi;\n const rows = ((_table$options$keepPi = table.options.keepPinnedRows) != null ? _table$options$keepPi : true) ?\n //get all rows that are pinned even if they would not be otherwise visible\n //account for expanded parent rows, but not pagination or filtering\n (pinnedRowIds != null ? pinnedRowIds : []).map(rowId => {\n const row = table.getRow(rowId, true);\n return row.getIsAllParentsExpanded() ? row : null;\n }) :\n //else get only visible rows that are pinned\n (pinnedRowIds != null ? pinnedRowIds : []).map(rowId => visibleRows.find(row => row.id === rowId));\n return rows.filter(Boolean).map(d => ({\n ...d,\n position\n }));\n };\n table.getTopRows = memo(() => [table.getRowModel().rows, table.getState().rowPinning.top], (allRows, topPinnedRowIds) => table._getPinnedRows(allRows, topPinnedRowIds, 'top'), getMemoOptions(table.options, 'debugRows', 'getTopRows'));\n table.getBottomRows = memo(() => [table.getRowModel().rows, table.getState().rowPinning.bottom], (allRows, bottomPinnedRowIds) => table._getPinnedRows(allRows, bottomPinnedRowIds, 'bottom'), getMemoOptions(table.options, 'debugRows', 'getBottomRows'));\n table.getCenterRows = memo(() => [table.getRowModel().rows, table.getState().rowPinning.top, table.getState().rowPinning.bottom], (allRows, top, bottom) => {\n const topAndBottom = new Set([...(top != null ? top : []), ...(bottom != null ? bottom : [])]);\n return allRows.filter(d => !topAndBottom.has(d.id));\n }, getMemoOptions(table.options, 'debugRows', 'getCenterRows'));\n }\n};\n\n//\n\nconst RowSelection = {\n getInitialState: state => {\n return {\n rowSelection: {},\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onRowSelectionChange: makeStateUpdater('rowSelection', table),\n enableRowSelection: true,\n enableMultiRowSelection: true,\n enableSubRowSelection: true\n // enableGroupingRowSelection: false,\n // isAdditiveSelectEvent: (e: unknown) => !!e.metaKey,\n // isInclusiveSelectEvent: (e: unknown) => !!e.shiftKey,\n };\n },\n createTable: table => {\n table.setRowSelection = updater => table.options.onRowSelectionChange == null ? void 0 : table.options.onRowSelectionChange(updater);\n table.resetRowSelection = defaultState => {\n var _table$initialState$r;\n return table.setRowSelection(defaultState ? {} : (_table$initialState$r = table.initialState.rowSelection) != null ? _table$initialState$r : {});\n };\n table.toggleAllRowsSelected = value => {\n table.setRowSelection(old => {\n value = typeof value !== 'undefined' ? value : !table.getIsAllRowsSelected();\n const rowSelection = {\n ...old\n };\n const preGroupedFlatRows = table.getPreGroupedRowModel().flatRows;\n\n // We don't use `mutateRowIsSelected` here for performance reasons.\n // All of the rows are flat already, so it wouldn't be worth it\n if (value) {\n preGroupedFlatRows.forEach(row => {\n if (!row.getCanSelect()) {\n return;\n }\n rowSelection[row.id] = true;\n });\n } else {\n preGroupedFlatRows.forEach(row => {\n delete rowSelection[row.id];\n });\n }\n return rowSelection;\n });\n };\n table.toggleAllPageRowsSelected = value => table.setRowSelection(old => {\n const resolvedValue = typeof value !== 'undefined' ? value : !table.getIsAllPageRowsSelected();\n const rowSelection = {\n ...old\n };\n table.getRowModel().rows.forEach(row => {\n mutateRowIsSelected(rowSelection, row.id, resolvedValue, true, table);\n });\n return rowSelection;\n });\n\n // addRowSelectionRange: rowId => {\n // const {\n // rows,\n // rowsById,\n // options: { selectGroupingRows, selectSubRows },\n // } = table\n\n // const findSelectedRow = (rows: Row[]) => {\n // let found\n // rows.find(d => {\n // if (d.getIsSelected()) {\n // found = d\n // return true\n // }\n // const subFound = findSelectedRow(d.subRows || [])\n // if (subFound) {\n // found = subFound\n // return true\n // }\n // return false\n // })\n // return found\n // }\n\n // const firstRow = findSelectedRow(rows) || rows[0]\n // const lastRow = rowsById[rowId]\n\n // let include = false\n // const selectedRowIds = {}\n\n // const addRow = (row: Row) => {\n // mutateRowIsSelected(selectedRowIds, row.id, true, {\n // rowsById,\n // selectGroupingRows: selectGroupingRows!,\n // selectSubRows: selectSubRows!,\n // })\n // }\n\n // table.rows.forEach(row => {\n // const isFirstRow = row.id === firstRow.id\n // const isLastRow = row.id === lastRow.id\n\n // if (isFirstRow || isLastRow) {\n // if (!include) {\n // include = true\n // } else if (include) {\n // addRow(row)\n // include = false\n // }\n // }\n\n // if (include) {\n // addRow(row)\n // }\n // })\n\n // table.setRowSelection(selectedRowIds)\n // },\n table.getPreSelectedRowModel = () => table.getCoreRowModel();\n table.getSelectedRowModel = memo(() => [table.getState().rowSelection, table.getCoreRowModel()], (rowSelection, rowModel) => {\n if (!Object.keys(rowSelection).length) {\n return {\n rows: [],\n flatRows: [],\n rowsById: {}\n };\n }\n return selectRowsFn(table, rowModel);\n }, getMemoOptions(table.options, 'debugTable', 'getSelectedRowModel'));\n table.getFilteredSelectedRowModel = memo(() => [table.getState().rowSelection, table.getFilteredRowModel()], (rowSelection, rowModel) => {\n if (!Object.keys(rowSelection).length) {\n return {\n rows: [],\n flatRows: [],\n rowsById: {}\n };\n }\n return selectRowsFn(table, rowModel);\n }, getMemoOptions(table.options, 'debugTable', 'getFilteredSelectedRowModel'));\n table.getGroupedSelectedRowModel = memo(() => [table.getState().rowSelection, table.getSortedRowModel()], (rowSelection, rowModel) => {\n if (!Object.keys(rowSelection).length) {\n return {\n rows: [],\n flatRows: [],\n rowsById: {}\n };\n }\n return selectRowsFn(table, rowModel);\n }, getMemoOptions(table.options, 'debugTable', 'getGroupedSelectedRowModel'));\n\n ///\n\n // getGroupingRowCanSelect: rowId => {\n // const row = table.getRow(rowId)\n\n // if (!row) {\n // throw new Error()\n // }\n\n // if (typeof table.options.enableGroupingRowSelection === 'function') {\n // return table.options.enableGroupingRowSelection(row)\n // }\n\n // return table.options.enableGroupingRowSelection ?? false\n // },\n\n table.getIsAllRowsSelected = () => {\n const preGroupedFlatRows = table.getFilteredRowModel().flatRows;\n const {\n rowSelection\n } = table.getState();\n let isAllRowsSelected = Boolean(preGroupedFlatRows.length && Object.keys(rowSelection).length);\n if (isAllRowsSelected) {\n if (preGroupedFlatRows.some(row => row.getCanSelect() && !rowSelection[row.id])) {\n isAllRowsSelected = false;\n }\n }\n return isAllRowsSelected;\n };\n table.getIsAllPageRowsSelected = () => {\n const paginationFlatRows = table.getPaginationRowModel().flatRows.filter(row => row.getCanSelect());\n const {\n rowSelection\n } = table.getState();\n let isAllPageRowsSelected = !!paginationFlatRows.length;\n if (isAllPageRowsSelected && paginationFlatRows.some(row => !rowSelection[row.id])) {\n isAllPageRowsSelected = false;\n }\n return isAllPageRowsSelected;\n };\n table.getIsSomeRowsSelected = () => {\n var _table$getState$rowSe;\n const totalSelected = Object.keys((_table$getState$rowSe = table.getState().rowSelection) != null ? _table$getState$rowSe : {}).length;\n return totalSelected > 0 && totalSelected < table.getFilteredRowModel().flatRows.length;\n };\n table.getIsSomePageRowsSelected = () => {\n const paginationFlatRows = table.getPaginationRowModel().flatRows;\n return table.getIsAllPageRowsSelected() ? false : paginationFlatRows.filter(row => row.getCanSelect()).some(d => d.getIsSelected() || d.getIsSomeSelected());\n };\n table.getToggleAllRowsSelectedHandler = () => {\n return e => {\n table.toggleAllRowsSelected(e.target.checked);\n };\n };\n table.getToggleAllPageRowsSelectedHandler = () => {\n return e => {\n table.toggleAllPageRowsSelected(e.target.checked);\n };\n };\n },\n createRow: (row, table) => {\n row.toggleSelected = (value, opts) => {\n const isSelected = row.getIsSelected();\n table.setRowSelection(old => {\n var _opts$selectChildren;\n value = typeof value !== 'undefined' ? value : !isSelected;\n if (row.getCanSelect() && isSelected === value) {\n return old;\n }\n const selectedRowIds = {\n ...old\n };\n mutateRowIsSelected(selectedRowIds, row.id, value, (_opts$selectChildren = opts == null ? void 0 : opts.selectChildren) != null ? _opts$selectChildren : true, table);\n return selectedRowIds;\n });\n };\n row.getIsSelected = () => {\n const {\n rowSelection\n } = table.getState();\n return isRowSelected(row, rowSelection);\n };\n row.getIsSomeSelected = () => {\n const {\n rowSelection\n } = table.getState();\n return isSubRowSelected(row, rowSelection) === 'some';\n };\n row.getIsAllSubRowsSelected = () => {\n const {\n rowSelection\n } = table.getState();\n return isSubRowSelected(row, rowSelection) === 'all';\n };\n row.getCanSelect = () => {\n var _table$options$enable;\n if (typeof table.options.enableRowSelection === 'function') {\n return table.options.enableRowSelection(row);\n }\n return (_table$options$enable = table.options.enableRowSelection) != null ? _table$options$enable : true;\n };\n row.getCanSelectSubRows = () => {\n var _table$options$enable2;\n if (typeof table.options.enableSubRowSelection === 'function') {\n return table.options.enableSubRowSelection(row);\n }\n return (_table$options$enable2 = table.options.enableSubRowSelection) != null ? _table$options$enable2 : true;\n };\n row.getCanMultiSelect = () => {\n var _table$options$enable3;\n if (typeof table.options.enableMultiRowSelection === 'function') {\n return table.options.enableMultiRowSelection(row);\n }\n return (_table$options$enable3 = table.options.enableMultiRowSelection) != null ? _table$options$enable3 : true;\n };\n row.getToggleSelectedHandler = () => {\n const canSelect = row.getCanSelect();\n return e => {\n var _target;\n if (!canSelect) return;\n row.toggleSelected((_target = e.target) == null ? void 0 : _target.checked);\n };\n };\n }\n};\nconst mutateRowIsSelected = (selectedRowIds, id, value, includeChildren, table) => {\n var _row$subRows;\n const row = table.getRow(id, true);\n\n // const isGrouped = row.getIsGrouped()\n\n // if ( // TODO: enforce grouping row selection rules\n // !isGrouped ||\n // (isGrouped && table.options.enableGroupingRowSelection)\n // ) {\n if (value) {\n if (!row.getCanMultiSelect()) {\n Object.keys(selectedRowIds).forEach(key => delete selectedRowIds[key]);\n }\n if (row.getCanSelect()) {\n selectedRowIds[id] = true;\n }\n } else {\n delete selectedRowIds[id];\n }\n // }\n\n if (includeChildren && (_row$subRows = row.subRows) != null && _row$subRows.length && row.getCanSelectSubRows()) {\n row.subRows.forEach(row => mutateRowIsSelected(selectedRowIds, row.id, value, includeChildren, table));\n }\n};\nfunction selectRowsFn(table, rowModel) {\n const rowSelection = table.getState().rowSelection;\n const newSelectedFlatRows = [];\n const newSelectedRowsById = {};\n\n // Filters top level and nested rows\n const recurseRows = function (rows, depth) {\n return rows.map(row => {\n var _row$subRows2;\n const isSelected = isRowSelected(row, rowSelection);\n if (isSelected) {\n newSelectedFlatRows.push(row);\n newSelectedRowsById[row.id] = row;\n }\n if ((_row$subRows2 = row.subRows) != null && _row$subRows2.length) {\n row = {\n ...row,\n subRows: recurseRows(row.subRows)\n };\n }\n if (isSelected) {\n return row;\n }\n }).filter(Boolean);\n };\n return {\n rows: recurseRows(rowModel.rows),\n flatRows: newSelectedFlatRows,\n rowsById: newSelectedRowsById\n };\n}\nfunction isRowSelected(row, selection) {\n var _selection$row$id;\n return (_selection$row$id = selection[row.id]) != null ? _selection$row$id : false;\n}\nfunction isSubRowSelected(row, selection, table) {\n var _row$subRows3;\n if (!((_row$subRows3 = row.subRows) != null && _row$subRows3.length)) return false;\n let allChildrenSelected = true;\n let someSelected = false;\n row.subRows.forEach(subRow => {\n // Bail out early if we know both of these\n if (someSelected && !allChildrenSelected) {\n return;\n }\n if (subRow.getCanSelect()) {\n if (isRowSelected(subRow, selection)) {\n someSelected = true;\n } else {\n allChildrenSelected = false;\n }\n }\n\n // Check row selection of nested subrows\n if (subRow.subRows && subRow.subRows.length) {\n const subRowChildrenSelected = isSubRowSelected(subRow, selection);\n if (subRowChildrenSelected === 'all') {\n someSelected = true;\n } else if (subRowChildrenSelected === 'some') {\n someSelected = true;\n allChildrenSelected = false;\n } else {\n allChildrenSelected = false;\n }\n }\n });\n return allChildrenSelected ? 'all' : someSelected ? 'some' : false;\n}\n\nconst reSplitAlphaNumeric = /([0-9]+)/gm;\nconst alphanumeric = (rowA, rowB, columnId) => {\n return compareAlphanumeric(toString(rowA.getValue(columnId)).toLowerCase(), toString(rowB.getValue(columnId)).toLowerCase());\n};\nconst alphanumericCaseSensitive = (rowA, rowB, columnId) => {\n return compareAlphanumeric(toString(rowA.getValue(columnId)), toString(rowB.getValue(columnId)));\n};\n\n// The text filter is more basic (less numeric support)\n// but is much faster\nconst text = (rowA, rowB, columnId) => {\n return compareBasic(toString(rowA.getValue(columnId)).toLowerCase(), toString(rowB.getValue(columnId)).toLowerCase());\n};\n\n// The text filter is more basic (less numeric support)\n// but is much faster\nconst textCaseSensitive = (rowA, rowB, columnId) => {\n return compareBasic(toString(rowA.getValue(columnId)), toString(rowB.getValue(columnId)));\n};\nconst datetime = (rowA, rowB, columnId) => {\n const a = rowA.getValue(columnId);\n const b = rowB.getValue(columnId);\n\n // Can handle nullish values\n // Use > and < because == (and ===) doesn't work with\n // Date objects (would require calling getTime()).\n return a > b ? 1 : a < b ? -1 : 0;\n};\nconst basic = (rowA, rowB, columnId) => {\n return compareBasic(rowA.getValue(columnId), rowB.getValue(columnId));\n};\n\n// Utils\n\nfunction compareBasic(a, b) {\n return a === b ? 0 : a > b ? 1 : -1;\n}\nfunction toString(a) {\n if (typeof a === 'number') {\n if (isNaN(a) || a === Infinity || a === -Infinity) {\n return '';\n }\n return String(a);\n }\n if (typeof a === 'string') {\n return a;\n }\n return '';\n}\n\n// Mixed sorting is slow, but very inclusive of many edge cases.\n// It handles numbers, mixed alphanumeric combinations, and even\n// null, undefined, and Infinity\nfunction compareAlphanumeric(aStr, bStr) {\n // Split on number groups, but keep the delimiter\n // Then remove falsey split values\n const a = aStr.split(reSplitAlphaNumeric).filter(Boolean);\n const b = bStr.split(reSplitAlphaNumeric).filter(Boolean);\n\n // While\n while (a.length && b.length) {\n const aa = a.shift();\n const bb = b.shift();\n const an = parseInt(aa, 10);\n const bn = parseInt(bb, 10);\n const combo = [an, bn].sort();\n\n // Both are string\n if (isNaN(combo[0])) {\n if (aa > bb) {\n return 1;\n }\n if (bb > aa) {\n return -1;\n }\n continue;\n }\n\n // One is a string, one is a number\n if (isNaN(combo[1])) {\n return isNaN(an) ? -1 : 1;\n }\n\n // Both are numbers\n if (an > bn) {\n return 1;\n }\n if (bn > an) {\n return -1;\n }\n }\n return a.length - b.length;\n}\n\n// Exports\n\nconst sortingFns = {\n alphanumeric,\n alphanumericCaseSensitive,\n text,\n textCaseSensitive,\n datetime,\n basic\n};\n\n//\n\nconst RowSorting = {\n getInitialState: state => {\n return {\n sorting: [],\n ...state\n };\n },\n getDefaultColumnDef: () => {\n return {\n sortingFn: 'auto',\n sortUndefined: 1\n };\n },\n getDefaultOptions: table => {\n return {\n onSortingChange: makeStateUpdater('sorting', table),\n isMultiSortEvent: e => {\n return e.shiftKey;\n }\n };\n },\n createColumn: (column, table) => {\n column.getAutoSortingFn = () => {\n const firstRows = table.getFilteredRowModel().flatRows.slice(10);\n let isString = false;\n for (const row of firstRows) {\n const value = row == null ? void 0 : row.getValue(column.id);\n if (Object.prototype.toString.call(value) === '[object Date]') {\n return sortingFns.datetime;\n }\n if (typeof value === 'string') {\n isString = true;\n if (value.split(reSplitAlphaNumeric).length > 1) {\n return sortingFns.alphanumeric;\n }\n }\n }\n if (isString) {\n return sortingFns.text;\n }\n return sortingFns.basic;\n };\n column.getAutoSortDir = () => {\n const firstRow = table.getFilteredRowModel().flatRows[0];\n const value = firstRow == null ? void 0 : firstRow.getValue(column.id);\n if (typeof value === 'string') {\n return 'asc';\n }\n return 'desc';\n };\n column.getSortingFn = () => {\n var _table$options$sortin, _table$options$sortin2;\n if (!column) {\n throw new Error();\n }\n return isFunction(column.columnDef.sortingFn) ? column.columnDef.sortingFn : column.columnDef.sortingFn === 'auto' ? column.getAutoSortingFn() : (_table$options$sortin = (_table$options$sortin2 = table.options.sortingFns) == null ? void 0 : _table$options$sortin2[column.columnDef.sortingFn]) != null ? _table$options$sortin : sortingFns[column.columnDef.sortingFn];\n };\n column.toggleSorting = (desc, multi) => {\n // if (column.columns.length) {\n // column.columns.forEach((c, i) => {\n // if (c.id) {\n // table.toggleColumnSorting(c.id, undefined, multi || !!i)\n // }\n // })\n // return\n // }\n\n // this needs to be outside of table.setSorting to be in sync with rerender\n const nextSortingOrder = column.getNextSortingOrder();\n const hasManualValue = typeof desc !== 'undefined' && desc !== null;\n table.setSorting(old => {\n // Find any existing sorting for this column\n const existingSorting = old == null ? void 0 : old.find(d => d.id === column.id);\n const existingIndex = old == null ? void 0 : old.findIndex(d => d.id === column.id);\n let newSorting = [];\n\n // What should we do with this sort action?\n let sortAction;\n let nextDesc = hasManualValue ? desc : nextSortingOrder === 'desc';\n\n // Multi-mode\n if (old != null && old.length && column.getCanMultiSort() && multi) {\n if (existingSorting) {\n sortAction = 'toggle';\n } else {\n sortAction = 'add';\n }\n } else {\n // Normal mode\n if (old != null && old.length && existingIndex !== old.length - 1) {\n sortAction = 'replace';\n } else if (existingSorting) {\n sortAction = 'toggle';\n } else {\n sortAction = 'replace';\n }\n }\n\n // Handle toggle states that will remove the sorting\n if (sortAction === 'toggle') {\n // If we are \"actually\" toggling (not a manual set value), should we remove the sorting?\n if (!hasManualValue) {\n // Is our intention to remove?\n if (!nextSortingOrder) {\n sortAction = 'remove';\n }\n }\n }\n if (sortAction === 'add') {\n var _table$options$maxMul;\n newSorting = [...old, {\n id: column.id,\n desc: nextDesc\n }];\n // Take latest n columns\n newSorting.splice(0, newSorting.length - ((_table$options$maxMul = table.options.maxMultiSortColCount) != null ? _table$options$maxMul : Number.MAX_SAFE_INTEGER));\n } else if (sortAction === 'toggle') {\n // This flips (or sets) the\n newSorting = old.map(d => {\n if (d.id === column.id) {\n return {\n ...d,\n desc: nextDesc\n };\n }\n return d;\n });\n } else if (sortAction === 'remove') {\n newSorting = old.filter(d => d.id !== column.id);\n } else {\n newSorting = [{\n id: column.id,\n desc: nextDesc\n }];\n }\n return newSorting;\n });\n };\n column.getFirstSortDir = () => {\n var _ref, _column$columnDef$sor;\n const sortDescFirst = (_ref = (_column$columnDef$sor = column.columnDef.sortDescFirst) != null ? _column$columnDef$sor : table.options.sortDescFirst) != null ? _ref : column.getAutoSortDir() === 'desc';\n return sortDescFirst ? 'desc' : 'asc';\n };\n column.getNextSortingOrder = multi => {\n var _table$options$enable, _table$options$enable2;\n const firstSortDirection = column.getFirstSortDir();\n const isSorted = column.getIsSorted();\n if (!isSorted) {\n return firstSortDirection;\n }\n if (isSorted !== firstSortDirection && ((_table$options$enable = table.options.enableSortingRemoval) != null ? _table$options$enable : true) && (\n // If enableSortRemove, enable in general\n multi ? (_table$options$enable2 = table.options.enableMultiRemove) != null ? _table$options$enable2 : true : true) // If multi, don't allow if enableMultiRemove))\n ) {\n return false;\n }\n return isSorted === 'desc' ? 'asc' : 'desc';\n };\n column.getCanSort = () => {\n var _column$columnDef$ena, _table$options$enable3;\n return ((_column$columnDef$ena = column.columnDef.enableSorting) != null ? _column$columnDef$ena : true) && ((_table$options$enable3 = table.options.enableSorting) != null ? _table$options$enable3 : true) && !!column.accessorFn;\n };\n column.getCanMultiSort = () => {\n var _ref2, _column$columnDef$ena2;\n return (_ref2 = (_column$columnDef$ena2 = column.columnDef.enableMultiSort) != null ? _column$columnDef$ena2 : table.options.enableMultiSort) != null ? _ref2 : !!column.accessorFn;\n };\n column.getIsSorted = () => {\n var _table$getState$sorti;\n const columnSort = (_table$getState$sorti = table.getState().sorting) == null ? void 0 : _table$getState$sorti.find(d => d.id === column.id);\n return !columnSort ? false : columnSort.desc ? 'desc' : 'asc';\n };\n column.getSortIndex = () => {\n var _table$getState$sorti2, _table$getState$sorti3;\n return (_table$getState$sorti2 = (_table$getState$sorti3 = table.getState().sorting) == null ? void 0 : _table$getState$sorti3.findIndex(d => d.id === column.id)) != null ? _table$getState$sorti2 : -1;\n };\n column.clearSorting = () => {\n //clear sorting for just 1 column\n table.setSorting(old => old != null && old.length ? old.filter(d => d.id !== column.id) : []);\n };\n column.getToggleSortingHandler = () => {\n const canSort = column.getCanSort();\n return e => {\n if (!canSort) return;\n e.persist == null || e.persist();\n column.toggleSorting == null || column.toggleSorting(undefined, column.getCanMultiSort() ? table.options.isMultiSortEvent == null ? void 0 : table.options.isMultiSortEvent(e) : false);\n };\n };\n },\n createTable: table => {\n table.setSorting = updater => table.options.onSortingChange == null ? void 0 : table.options.onSortingChange(updater);\n table.resetSorting = defaultState => {\n var _table$initialState$s, _table$initialState;\n table.setSorting(defaultState ? [] : (_table$initialState$s = (_table$initialState = table.initialState) == null ? void 0 : _table$initialState.sorting) != null ? _table$initialState$s : []);\n };\n table.getPreSortedRowModel = () => table.getGroupedRowModel();\n table.getSortedRowModel = () => {\n if (!table._getSortedRowModel && table.options.getSortedRowModel) {\n table._getSortedRowModel = table.options.getSortedRowModel(table);\n }\n if (table.options.manualSorting || !table._getSortedRowModel) {\n return table.getPreSortedRowModel();\n }\n return table._getSortedRowModel();\n };\n }\n};\n\nconst builtInFeatures = [Headers, ColumnVisibility, ColumnOrdering, ColumnPinning, ColumnFaceting, ColumnFiltering, GlobalFaceting,\n//depends on ColumnFaceting\nGlobalFiltering,\n//depends on ColumnFiltering\nRowSorting, ColumnGrouping,\n//depends on RowSorting\nRowExpanding, RowPagination, RowPinning, RowSelection, ColumnSizing];\n\n//\n\nfunction createTable(options) {\n var _options$_features, _options$initialState;\n if (process.env.NODE_ENV !== 'production' && (options.debugAll || options.debugTable)) {\n console.info('Creating Table Instance...');\n }\n const _features = [...builtInFeatures, ...((_options$_features = options._features) != null ? _options$_features : [])];\n let table = {\n _features\n };\n const defaultOptions = table._features.reduce((obj, feature) => {\n return Object.assign(obj, feature.getDefaultOptions == null ? void 0 : feature.getDefaultOptions(table));\n }, {});\n const mergeOptions = options => {\n if (table.options.mergeOptions) {\n return table.options.mergeOptions(defaultOptions, options);\n }\n return {\n ...defaultOptions,\n ...options\n };\n };\n const coreInitialState = {};\n let initialState = {\n ...coreInitialState,\n ...((_options$initialState = options.initialState) != null ? _options$initialState : {})\n };\n table._features.forEach(feature => {\n var _feature$getInitialSt;\n initialState = (_feature$getInitialSt = feature.getInitialState == null ? void 0 : feature.getInitialState(initialState)) != null ? _feature$getInitialSt : initialState;\n });\n const queued = [];\n let queuedTimeout = false;\n const coreInstance = {\n _features,\n options: {\n ...defaultOptions,\n ...options\n },\n initialState,\n _queue: cb => {\n queued.push(cb);\n if (!queuedTimeout) {\n queuedTimeout = true;\n\n // Schedule a microtask to run the queued callbacks after\n // the current call stack (render, etc) has finished.\n Promise.resolve().then(() => {\n while (queued.length) {\n queued.shift()();\n }\n queuedTimeout = false;\n }).catch(error => setTimeout(() => {\n throw error;\n }));\n }\n },\n reset: () => {\n table.setState(table.initialState);\n },\n setOptions: updater => {\n const newOptions = functionalUpdate(updater, table.options);\n table.options = mergeOptions(newOptions);\n },\n getState: () => {\n return table.options.state;\n },\n setState: updater => {\n table.options.onStateChange == null || table.options.onStateChange(updater);\n },\n _getRowId: (row, index, parent) => {\n var _table$options$getRow;\n return (_table$options$getRow = table.options.getRowId == null ? void 0 : table.options.getRowId(row, index, parent)) != null ? _table$options$getRow : `${parent ? [parent.id, index].join('.') : index}`;\n },\n getCoreRowModel: () => {\n if (!table._getCoreRowModel) {\n table._getCoreRowModel = table.options.getCoreRowModel(table);\n }\n return table._getCoreRowModel();\n },\n // The final calls start at the bottom of the model,\n // expanded rows, which then work their way up\n\n getRowModel: () => {\n return table.getPaginationRowModel();\n },\n //in next version, we should just pass in the row model as the optional 2nd arg\n getRow: (id, searchAll) => {\n let row = (searchAll ? table.getPrePaginationRowModel() : table.getRowModel()).rowsById[id];\n if (!row) {\n row = table.getCoreRowModel().rowsById[id];\n if (!row) {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error(`getRow could not find row with ID: ${id}`);\n }\n throw new Error();\n }\n }\n return row;\n },\n _getDefaultColumnDef: memo(() => [table.options.defaultColumn], defaultColumn => {\n var _defaultColumn;\n defaultColumn = (_defaultColumn = defaultColumn) != null ? _defaultColumn : {};\n return {\n header: props => {\n const resolvedColumnDef = props.header.column.columnDef;\n if (resolvedColumnDef.accessorKey) {\n return resolvedColumnDef.accessorKey;\n }\n if (resolvedColumnDef.accessorFn) {\n return resolvedColumnDef.id;\n }\n return null;\n },\n // footer: props => props.header.column.id,\n cell: props => {\n var _props$renderValue$to, _props$renderValue;\n return (_props$renderValue$to = (_props$renderValue = props.renderValue()) == null || _props$renderValue.toString == null ? void 0 : _props$renderValue.toString()) != null ? _props$renderValue$to : null;\n },\n ...table._features.reduce((obj, feature) => {\n return Object.assign(obj, feature.getDefaultColumnDef == null ? void 0 : feature.getDefaultColumnDef());\n }, {}),\n ...defaultColumn\n };\n }, getMemoOptions(options, 'debugColumns', '_getDefaultColumnDef')),\n _getColumnDefs: () => table.options.columns,\n getAllColumns: memo(() => [table._getColumnDefs()], columnDefs => {\n const recurseColumns = function (columnDefs, parent, depth) {\n if (depth === void 0) {\n depth = 0;\n }\n return columnDefs.map(columnDef => {\n const column = createColumn(table, columnDef, depth, parent);\n const groupingColumnDef = columnDef;\n column.columns = groupingColumnDef.columns ? recurseColumns(groupingColumnDef.columns, column, depth + 1) : [];\n return column;\n });\n };\n return recurseColumns(columnDefs);\n }, getMemoOptions(options, 'debugColumns', 'getAllColumns')),\n getAllFlatColumns: memo(() => [table.getAllColumns()], allColumns => {\n return allColumns.flatMap(column => {\n return column.getFlatColumns();\n });\n }, getMemoOptions(options, 'debugColumns', 'getAllFlatColumns')),\n _getAllFlatColumnsById: memo(() => [table.getAllFlatColumns()], flatColumns => {\n return flatColumns.reduce((acc, column) => {\n acc[column.id] = column;\n return acc;\n }, {});\n }, getMemoOptions(options, 'debugColumns', 'getAllFlatColumnsById')),\n getAllLeafColumns: memo(() => [table.getAllColumns(), table._getOrderColumnsFn()], (allColumns, orderColumns) => {\n let leafColumns = allColumns.flatMap(column => column.getLeafColumns());\n return orderColumns(leafColumns);\n }, getMemoOptions(options, 'debugColumns', 'getAllLeafColumns')),\n getColumn: columnId => {\n const column = table._getAllFlatColumnsById()[columnId];\n if (process.env.NODE_ENV !== 'production' && !column) {\n console.error(`[Table] Column with id '${columnId}' does not exist.`);\n }\n return column;\n }\n };\n Object.assign(table, coreInstance);\n for (let index = 0; index < table._features.length; index++) {\n const feature = table._features[index];\n feature == null || feature.createTable == null || feature.createTable(table);\n }\n return table;\n}\n\nfunction getCoreRowModel() {\n return table => memo(() => [table.options.data], data => {\n const rowModel = {\n rows: [],\n flatRows: [],\n rowsById: {}\n };\n const accessRows = function (originalRows, depth, parentRow) {\n if (depth === void 0) {\n depth = 0;\n }\n const rows = [];\n for (let i = 0; i < originalRows.length; i++) {\n // This could be an expensive check at scale, so we should move it somewhere else, but where?\n // if (!id) {\n // if (process.env.NODE_ENV !== 'production') {\n // throw new Error(`getRowId expected an ID, but got ${id}`)\n // }\n // }\n\n // Make the row\n const row = createRow(table, table._getRowId(originalRows[i], i, parentRow), originalRows[i], i, depth, undefined, parentRow == null ? void 0 : parentRow.id);\n\n // Keep track of every row in a flat array\n rowModel.flatRows.push(row);\n // Also keep track of every row by its ID\n rowModel.rowsById[row.id] = row;\n // Push table row into parent\n rows.push(row);\n\n // Get the original subrows\n if (table.options.getSubRows) {\n var _row$originalSubRows;\n row.originalSubRows = table.options.getSubRows(originalRows[i], i);\n\n // Then recursively access them\n if ((_row$originalSubRows = row.originalSubRows) != null && _row$originalSubRows.length) {\n row.subRows = accessRows(row.originalSubRows, depth + 1, row);\n }\n }\n }\n return rows;\n };\n rowModel.rows = accessRows(data);\n return rowModel;\n }, getMemoOptions(table.options, 'debugTable', 'getRowModel', () => table._autoResetPageIndex()));\n}\n\nfunction getExpandedRowModel() {\n return table => memo(() => [table.getState().expanded, table.getPreExpandedRowModel(), table.options.paginateExpandedRows], (expanded, rowModel, paginateExpandedRows) => {\n if (!rowModel.rows.length || expanded !== true && !Object.keys(expanded != null ? expanded : {}).length) {\n return rowModel;\n }\n if (!paginateExpandedRows) {\n // Only expand rows at this point if they are being paginated\n return rowModel;\n }\n return expandRows(rowModel);\n }, getMemoOptions(table.options, 'debugTable', 'getExpandedRowModel'));\n}\nfunction expandRows(rowModel) {\n const expandedRows = [];\n const handleRow = row => {\n var _row$subRows;\n expandedRows.push(row);\n if ((_row$subRows = row.subRows) != null && _row$subRows.length && row.getIsExpanded()) {\n row.subRows.forEach(handleRow);\n }\n };\n rowModel.rows.forEach(handleRow);\n return {\n rows: expandedRows,\n flatRows: rowModel.flatRows,\n rowsById: rowModel.rowsById\n };\n}\n\nfunction getFacetedMinMaxValues() {\n return (table, columnId) => memo(() => {\n var _table$getColumn;\n return [(_table$getColumn = table.getColumn(columnId)) == null ? void 0 : _table$getColumn.getFacetedRowModel()];\n }, facetedRowModel => {\n if (!facetedRowModel) return undefined;\n const uniqueValues = facetedRowModel.flatRows.flatMap(flatRow => {\n var _flatRow$getUniqueVal;\n return (_flatRow$getUniqueVal = flatRow.getUniqueValues(columnId)) != null ? _flatRow$getUniqueVal : [];\n }).map(Number).filter(value => !Number.isNaN(value));\n if (!uniqueValues.length) return;\n let facetedMinValue = uniqueValues[0];\n let facetedMaxValue = uniqueValues[uniqueValues.length - 1];\n for (const value of uniqueValues) {\n if (value < facetedMinValue) facetedMinValue = value;else if (value > facetedMaxValue) facetedMaxValue = value;\n }\n return [facetedMinValue, facetedMaxValue];\n }, getMemoOptions(table.options, 'debugTable', 'getFacetedMinMaxValues'));\n}\n\nfunction filterRows(rows, filterRowImpl, table) {\n if (table.options.filterFromLeafRows) {\n return filterRowModelFromLeafs(rows, filterRowImpl, table);\n }\n return filterRowModelFromRoot(rows, filterRowImpl, table);\n}\nfunction filterRowModelFromLeafs(rowsToFilter, filterRow, table) {\n var _table$options$maxLea;\n const newFilteredFlatRows = [];\n const newFilteredRowsById = {};\n const maxDepth = (_table$options$maxLea = table.options.maxLeafRowFilterDepth) != null ? _table$options$maxLea : 100;\n const recurseFilterRows = function (rowsToFilter, depth) {\n if (depth === void 0) {\n depth = 0;\n }\n const rows = [];\n\n // Filter from children up first\n for (let i = 0; i < rowsToFilter.length; i++) {\n var _row$subRows;\n let row = rowsToFilter[i];\n const newRow = createRow(table, row.id, row.original, row.index, row.depth, undefined, row.parentId);\n newRow.columnFilters = row.columnFilters;\n if ((_row$subRows = row.subRows) != null && _row$subRows.length && depth < maxDepth) {\n newRow.subRows = recurseFilterRows(row.subRows, depth + 1);\n row = newRow;\n if (filterRow(row) && !newRow.subRows.length) {\n rows.push(row);\n newFilteredRowsById[row.id] = row;\n newFilteredFlatRows.push(row);\n continue;\n }\n if (filterRow(row) || newRow.subRows.length) {\n rows.push(row);\n newFilteredRowsById[row.id] = row;\n newFilteredFlatRows.push(row);\n continue;\n }\n } else {\n row = newRow;\n if (filterRow(row)) {\n rows.push(row);\n newFilteredRowsById[row.id] = row;\n newFilteredFlatRows.push(row);\n }\n }\n }\n return rows;\n };\n return {\n rows: recurseFilterRows(rowsToFilter),\n flatRows: newFilteredFlatRows,\n rowsById: newFilteredRowsById\n };\n}\nfunction filterRowModelFromRoot(rowsToFilter, filterRow, table) {\n var _table$options$maxLea2;\n const newFilteredFlatRows = [];\n const newFilteredRowsById = {};\n const maxDepth = (_table$options$maxLea2 = table.options.maxLeafRowFilterDepth) != null ? _table$options$maxLea2 : 100;\n\n // Filters top level and nested rows\n const recurseFilterRows = function (rowsToFilter, depth) {\n if (depth === void 0) {\n depth = 0;\n }\n // Filter from parents downward first\n\n const rows = [];\n\n // Apply the filter to any subRows\n for (let i = 0; i < rowsToFilter.length; i++) {\n let row = rowsToFilter[i];\n const pass = filterRow(row);\n if (pass) {\n var _row$subRows2;\n if ((_row$subRows2 = row.subRows) != null && _row$subRows2.length && depth < maxDepth) {\n const newRow = createRow(table, row.id, row.original, row.index, row.depth, undefined, row.parentId);\n newRow.subRows = recurseFilterRows(row.subRows, depth + 1);\n row = newRow;\n }\n rows.push(row);\n newFilteredFlatRows.push(row);\n newFilteredRowsById[row.id] = row;\n }\n }\n return rows;\n };\n return {\n rows: recurseFilterRows(rowsToFilter),\n flatRows: newFilteredFlatRows,\n rowsById: newFilteredRowsById\n };\n}\n\nfunction getFacetedRowModel() {\n return (table, columnId) => memo(() => [table.getPreFilteredRowModel(), table.getState().columnFilters, table.getState().globalFilter, table.getFilteredRowModel()], (preRowModel, columnFilters, globalFilter) => {\n if (!preRowModel.rows.length || !(columnFilters != null && columnFilters.length) && !globalFilter) {\n return preRowModel;\n }\n const filterableIds = [...columnFilters.map(d => d.id).filter(d => d !== columnId), globalFilter ? '__global__' : undefined].filter(Boolean);\n const filterRowsImpl = row => {\n // Horizontally filter rows through each column\n for (let i = 0; i < filterableIds.length; i++) {\n if (row.columnFilters[filterableIds[i]] === false) {\n return false;\n }\n }\n return true;\n };\n return filterRows(preRowModel.rows, filterRowsImpl, table);\n }, getMemoOptions(table.options, 'debugTable', 'getFacetedRowModel'));\n}\n\nfunction getFacetedUniqueValues() {\n return (table, columnId) => memo(() => {\n var _table$getColumn;\n return [(_table$getColumn = table.getColumn(columnId)) == null ? void 0 : _table$getColumn.getFacetedRowModel()];\n }, facetedRowModel => {\n if (!facetedRowModel) return new Map();\n let facetedUniqueValues = new Map();\n for (let i = 0; i < facetedRowModel.flatRows.length; i++) {\n const values = facetedRowModel.flatRows[i].getUniqueValues(columnId);\n for (let j = 0; j < values.length; j++) {\n const value = values[j];\n if (facetedUniqueValues.has(value)) {\n var _facetedUniqueValues$;\n facetedUniqueValues.set(value, ((_facetedUniqueValues$ = facetedUniqueValues.get(value)) != null ? _facetedUniqueValues$ : 0) + 1);\n } else {\n facetedUniqueValues.set(value, 1);\n }\n }\n }\n return facetedUniqueValues;\n }, getMemoOptions(table.options, 'debugTable', `getFacetedUniqueValues_${columnId}`));\n}\n\nfunction getFilteredRowModel() {\n return table => memo(() => [table.getPreFilteredRowModel(), table.getState().columnFilters, table.getState().globalFilter], (rowModel, columnFilters, globalFilter) => {\n if (!rowModel.rows.length || !(columnFilters != null && columnFilters.length) && !globalFilter) {\n for (let i = 0; i < rowModel.flatRows.length; i++) {\n rowModel.flatRows[i].columnFilters = {};\n rowModel.flatRows[i].columnFiltersMeta = {};\n }\n return rowModel;\n }\n const resolvedColumnFilters = [];\n const resolvedGlobalFilters = [];\n (columnFilters != null ? columnFilters : []).forEach(d => {\n var _filterFn$resolveFilt;\n const column = table.getColumn(d.id);\n if (!column) {\n return;\n }\n const filterFn = column.getFilterFn();\n if (!filterFn) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(`Could not find a valid 'column.filterFn' for column with the ID: ${column.id}.`);\n }\n return;\n }\n resolvedColumnFilters.push({\n id: d.id,\n filterFn,\n resolvedValue: (_filterFn$resolveFilt = filterFn.resolveFilterValue == null ? void 0 : filterFn.resolveFilterValue(d.value)) != null ? _filterFn$resolveFilt : d.value\n });\n });\n const filterableIds = (columnFilters != null ? columnFilters : []).map(d => d.id);\n const globalFilterFn = table.getGlobalFilterFn();\n const globallyFilterableColumns = table.getAllLeafColumns().filter(column => column.getCanGlobalFilter());\n if (globalFilter && globalFilterFn && globallyFilterableColumns.length) {\n filterableIds.push('__global__');\n globallyFilterableColumns.forEach(column => {\n var _globalFilterFn$resol;\n resolvedGlobalFilters.push({\n id: column.id,\n filterFn: globalFilterFn,\n resolvedValue: (_globalFilterFn$resol = globalFilterFn.resolveFilterValue == null ? void 0 : globalFilterFn.resolveFilterValue(globalFilter)) != null ? _globalFilterFn$resol : globalFilter\n });\n });\n }\n let currentColumnFilter;\n let currentGlobalFilter;\n\n // Flag the prefiltered row model with each filter state\n for (let j = 0; j < rowModel.flatRows.length; j++) {\n const row = rowModel.flatRows[j];\n row.columnFilters = {};\n if (resolvedColumnFilters.length) {\n for (let i = 0; i < resolvedColumnFilters.length; i++) {\n currentColumnFilter = resolvedColumnFilters[i];\n const id = currentColumnFilter.id;\n\n // Tag the row with the column filter state\n row.columnFilters[id] = currentColumnFilter.filterFn(row, id, currentColumnFilter.resolvedValue, filterMeta => {\n row.columnFiltersMeta[id] = filterMeta;\n });\n }\n }\n if (resolvedGlobalFilters.length) {\n for (let i = 0; i < resolvedGlobalFilters.length; i++) {\n currentGlobalFilter = resolvedGlobalFilters[i];\n const id = currentGlobalFilter.id;\n // Tag the row with the first truthy global filter state\n if (currentGlobalFilter.filterFn(row, id, currentGlobalFilter.resolvedValue, filterMeta => {\n row.columnFiltersMeta[id] = filterMeta;\n })) {\n row.columnFilters.__global__ = true;\n break;\n }\n }\n if (row.columnFilters.__global__ !== true) {\n row.columnFilters.__global__ = false;\n }\n }\n }\n const filterRowsImpl = row => {\n // Horizontally filter rows through each column\n for (let i = 0; i < filterableIds.length; i++) {\n if (row.columnFilters[filterableIds[i]] === false) {\n return false;\n }\n }\n return true;\n };\n\n // Filter final rows using all of the active filters\n return filterRows(rowModel.rows, filterRowsImpl, table);\n }, getMemoOptions(table.options, 'debugTable', 'getFilteredRowModel', () => table._autoResetPageIndex()));\n}\n\nfunction getGroupedRowModel() {\n return table => memo(() => [table.getState().grouping, table.getPreGroupedRowModel()], (grouping, rowModel) => {\n if (!rowModel.rows.length || !grouping.length) {\n rowModel.rows.forEach(row => {\n row.depth = 0;\n row.parentId = undefined;\n });\n return rowModel;\n }\n\n // Filter the grouping list down to columns that exist\n const existingGrouping = grouping.filter(columnId => table.getColumn(columnId));\n const groupedFlatRows = [];\n const groupedRowsById = {};\n // const onlyGroupedFlatRows: Row[] = [];\n // const onlyGroupedRowsById: Record<RowId, Row> = {};\n // const nonGroupedFlatRows: Row[] = [];\n // const nonGroupedRowsById: Record<RowId, Row> = {};\n\n // Recursively group the data\n const groupUpRecursively = function (rows, depth, parentId) {\n if (depth === void 0) {\n depth = 0;\n }\n // Grouping depth has been been met\n // Stop grouping and simply rewrite thd depth and row relationships\n if (depth >= existingGrouping.length) {\n return rows.map(row => {\n row.depth = depth;\n groupedFlatRows.push(row);\n groupedRowsById[row.id] = row;\n if (row.subRows) {\n row.subRows = groupUpRecursively(row.subRows, depth + 1, row.id);\n }\n return row;\n });\n }\n const columnId = existingGrouping[depth];\n\n // Group the rows together for this level\n const rowGroupsMap = groupBy(rows, columnId);\n\n // Perform aggregations for each group\n const aggregatedGroupedRows = Array.from(rowGroupsMap.entries()).map((_ref, index) => {\n let [groupingValue, groupedRows] = _ref;\n let id = `${columnId}:${groupingValue}`;\n id = parentId ? `${parentId}>${id}` : id;\n\n // First, Recurse to group sub rows before aggregation\n const subRows = groupUpRecursively(groupedRows, depth + 1, id);\n subRows.forEach(subRow => {\n subRow.parentId = id;\n });\n\n // Flatten the leaf rows of the rows in this group\n const leafRows = depth ? flattenBy(groupedRows, row => row.subRows) : groupedRows;\n const row = createRow(table, id, leafRows[0].original, index, depth, undefined, parentId);\n Object.assign(row, {\n groupingColumnId: columnId,\n groupingValue,\n subRows,\n leafRows,\n getValue: columnId => {\n // Don't aggregate columns that are in the grouping\n if (existingGrouping.includes(columnId)) {\n if (row._valuesCache.hasOwnProperty(columnId)) {\n return row._valuesCache[columnId];\n }\n if (groupedRows[0]) {\n var _groupedRows$0$getVal;\n row._valuesCache[columnId] = (_groupedRows$0$getVal = groupedRows[0].getValue(columnId)) != null ? _groupedRows$0$getVal : undefined;\n }\n return row._valuesCache[columnId];\n }\n if (row._groupingValuesCache.hasOwnProperty(columnId)) {\n return row._groupingValuesCache[columnId];\n }\n\n // Aggregate the values\n const column = table.getColumn(columnId);\n const aggregateFn = column == null ? void 0 : column.getAggregationFn();\n if (aggregateFn) {\n row._groupingValuesCache[columnId] = aggregateFn(columnId, leafRows, groupedRows);\n return row._groupingValuesCache[columnId];\n }\n }\n });\n subRows.forEach(subRow => {\n groupedFlatRows.push(subRow);\n groupedRowsById[subRow.id] = subRow;\n // if (subRow.getIsGrouped?.()) {\n // onlyGroupedFlatRows.push(subRow);\n // onlyGroupedRowsById[subRow.id] = subRow;\n // } else {\n // nonGroupedFlatRows.push(subRow);\n // nonGroupedRowsById[subRow.id] = subRow;\n // }\n });\n return row;\n });\n return aggregatedGroupedRows;\n };\n const groupedRows = groupUpRecursively(rowModel.rows, 0);\n groupedRows.forEach(subRow => {\n groupedFlatRows.push(subRow);\n groupedRowsById[subRow.id] = subRow;\n // if (subRow.getIsGrouped?.()) {\n // onlyGroupedFlatRows.push(subRow);\n // onlyGroupedRowsById[subRow.id] = subRow;\n // } else {\n // nonGroupedFlatRows.push(subRow);\n // nonGroupedRowsById[subRow.id] = subRow;\n // }\n });\n return {\n rows: groupedRows,\n flatRows: groupedFlatRows,\n rowsById: groupedRowsById\n };\n }, getMemoOptions(table.options, 'debugTable', 'getGroupedRowModel', () => {\n table._queue(() => {\n table._autoResetExpanded();\n table._autoResetPageIndex();\n });\n }));\n}\nfunction groupBy(rows, columnId) {\n const groupMap = new Map();\n return rows.reduce((map, row) => {\n const resKey = `${row.getGroupingValue(columnId)}`;\n const previous = map.get(resKey);\n if (!previous) {\n map.set(resKey, [row]);\n } else {\n previous.push(row);\n }\n return map;\n }, groupMap);\n}\n\nfunction getPaginationRowModel(opts) {\n return table => memo(() => [table.getState().pagination, table.getPrePaginationRowModel(), table.options.paginateExpandedRows ? undefined : table.getState().expanded], (pagination, rowModel) => {\n if (!rowModel.rows.length) {\n return rowModel;\n }\n const {\n pageSize,\n pageIndex\n } = pagination;\n let {\n rows,\n flatRows,\n rowsById\n } = rowModel;\n const pageStart = pageSize * pageIndex;\n const pageEnd = pageStart + pageSize;\n rows = rows.slice(pageStart, pageEnd);\n let paginatedRowModel;\n if (!table.options.paginateExpandedRows) {\n paginatedRowModel = expandRows({\n rows,\n flatRows,\n rowsById\n });\n } else {\n paginatedRowModel = {\n rows,\n flatRows,\n rowsById\n };\n }\n paginatedRowModel.flatRows = [];\n const handleRow = row => {\n paginatedRowModel.flatRows.push(row);\n if (row.subRows.length) {\n row.subRows.forEach(handleRow);\n }\n };\n paginatedRowModel.rows.forEach(handleRow);\n return paginatedRowModel;\n }, getMemoOptions(table.options, 'debugTable', 'getPaginationRowModel'));\n}\n\nfunction getSortedRowModel() {\n return table => memo(() => [table.getState().sorting, table.getPreSortedRowModel()], (sorting, rowModel) => {\n if (!rowModel.rows.length || !(sorting != null && sorting.length)) {\n return rowModel;\n }\n const sortingState = table.getState().sorting;\n const sortedFlatRows = [];\n\n // Filter out sortings that correspond to non existing columns\n const availableSorting = sortingState.filter(sort => {\n var _table$getColumn;\n return (_table$getColumn = table.getColumn(sort.id)) == null ? void 0 : _table$getColumn.getCanSort();\n });\n const columnInfoById = {};\n availableSorting.forEach(sortEntry => {\n const column = table.getColumn(sortEntry.id);\n if (!column) return;\n columnInfoById[sortEntry.id] = {\n sortUndefined: column.columnDef.sortUndefined,\n invertSorting: column.columnDef.invertSorting,\n sortingFn: column.getSortingFn()\n };\n });\n const sortData = rows => {\n // This will also perform a stable sorting using the row index\n // if needed.\n const sortedData = rows.map(row => ({\n ...row\n }));\n sortedData.sort((rowA, rowB) => {\n for (let i = 0; i < availableSorting.length; i += 1) {\n var _sortEntry$desc;\n const sortEntry = availableSorting[i];\n const columnInfo = columnInfoById[sortEntry.id];\n const sortUndefined = columnInfo.sortUndefined;\n const isDesc = (_sortEntry$desc = sortEntry == null ? void 0 : sortEntry.desc) != null ? _sortEntry$desc : false;\n let sortInt = 0;\n\n // All sorting ints should always return in ascending order\n if (sortUndefined) {\n const aValue = rowA.getValue(sortEntry.id);\n const bValue = rowB.getValue(sortEntry.id);\n const aUndefined = aValue === undefined;\n const bUndefined = bValue === undefined;\n if (aUndefined || bUndefined) {\n if (sortUndefined === 'first') return aUndefined ? -1 : 1;\n if (sortUndefined === 'last') return aUndefined ? 1 : -1;\n sortInt = aUndefined && bUndefined ? 0 : aUndefined ? sortUndefined : -sortUndefined;\n }\n }\n if (sortInt === 0) {\n sortInt = columnInfo.sortingFn(rowA, rowB, sortEntry.id);\n }\n\n // If sorting is non-zero, take care of desc and inversion\n if (sortInt !== 0) {\n if (isDesc) {\n sortInt *= -1;\n }\n if (columnInfo.invertSorting) {\n sortInt *= -1;\n }\n return sortInt;\n }\n }\n return rowA.index - rowB.index;\n });\n\n // If there are sub-rows, sort them\n sortedData.forEach(row => {\n var _row$subRows;\n sortedFlatRows.push(row);\n if ((_row$subRows = row.subRows) != null && _row$subRows.length) {\n row.subRows = sortData(row.subRows);\n }\n });\n return sortedData;\n };\n return {\n rows: sortData(rowModel.rows),\n flatRows: sortedFlatRows,\n rowsById: rowModel.rowsById\n };\n }, getMemoOptions(table.options, 'debugTable', 'getSortedRowModel', () => table._autoResetPageIndex()));\n}\n\nexport { ColumnFaceting, ColumnFiltering, ColumnGrouping, ColumnOrdering, ColumnPinning, ColumnSizing, ColumnVisibility, GlobalFaceting, GlobalFiltering, Headers, RowExpanding, RowPagination, RowPinning, RowSelection, RowSorting, _getVisibleLeafColumns, aggregationFns, buildHeaderGroups, createCell, createColumn, createColumnHelper, createRow, createTable, defaultColumnSizing, expandRows, filterFns, flattenBy, functionalUpdate, getCoreRowModel, getExpandedRowModel, getFacetedMinMaxValues, getFacetedRowModel, getFacetedUniqueValues, getFilteredRowModel, getGroupedRowModel, getMemoOptions, getPaginationRowModel, getSortedRowModel, isFunction, isNumberArray, isRowSelected, isSubRowSelected, makeStateUpdater, memo, noop, orderColumns, passiveEventSupported, reSplitAlphaNumeric, selectRowsFn, shouldAutoRemoveFilter, sortingFns };\n//# sourceMappingURL=index.mjs.map\n","/**\n * react-table\n *\n * Copyright (c) TanStack\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE.md file in the root directory of this source tree.\n *\n * @license MIT\n */\nimport * as React from 'react';\nimport { createTable } from '@tanstack/table-core';\nexport * from '@tanstack/table-core';\n\n//\n\n/**\n * If rendering headers, cells, or footers with custom markup, use flexRender instead of `cell.getValue()` or `cell.renderValue()`.\n */\nfunction flexRender(Comp, props) {\n return !Comp ? null : isReactComponent(Comp) ? /*#__PURE__*/React.createElement(Comp, props) : Comp;\n}\nfunction isReactComponent(component) {\n return isClassComponent(component) || typeof component === 'function' || isExoticComponent(component);\n}\nfunction isClassComponent(component) {\n return typeof component === 'function' && (() => {\n const proto = Object.getPrototypeOf(component);\n return proto.prototype && proto.prototype.isReactComponent;\n })();\n}\nfunction isExoticComponent(component) {\n return typeof component === 'object' && typeof component.$$typeof === 'symbol' && ['react.memo', 'react.forward_ref'].includes(component.$$typeof.description);\n}\nfunction useReactTable(options) {\n // Compose in the generic options to the user options\n const resolvedOptions = {\n state: {},\n // Dummy state\n onStateChange: () => {},\n // noop\n renderFallbackValue: null,\n ...options\n };\n\n // Create a new table and store it in state\n const [tableRef] = React.useState(() => ({\n current: createTable(resolvedOptions)\n }));\n\n // By default, manage table state here using the table's initial state\n const [state, setState] = React.useState(() => tableRef.current.initialState);\n\n // Compose the default state above with any user state. This will allow the user\n // to only control a subset of the state if desired.\n tableRef.current.setOptions(prev => ({\n ...prev,\n ...options,\n state: {\n ...state,\n ...options.state\n },\n // Similarly, we'll maintain both our internal state and any user-provided\n // state.\n onStateChange: updater => {\n setState(updater);\n options.onStateChange == null || options.onStateChange(updater);\n }\n }));\n return tableRef.current;\n}\n\nexport { flexRender, useReactTable };\n//# sourceMappingURL=index.mjs.map\n","import { getEventCoordinates } from '@dnd-kit/utilities';\n\nfunction createSnapModifier(gridSize) {\n return _ref => {\n let {\n transform\n } = _ref;\n return { ...transform,\n x: Math.ceil(transform.x / gridSize) * gridSize,\n y: Math.ceil(transform.y / gridSize) * gridSize\n };\n };\n}\n\nconst restrictToHorizontalAxis = _ref => {\n let {\n transform\n } = _ref;\n return { ...transform,\n y: 0\n };\n};\n\nfunction restrictToBoundingRect(transform, rect, boundingRect) {\n const value = { ...transform\n };\n\n if (rect.top + transform.y <= boundingRect.top) {\n value.y = boundingRect.top - rect.top;\n } else if (rect.bottom + transform.y >= boundingRect.top + boundingRect.height) {\n value.y = boundingRect.top + boundingRect.height - rect.bottom;\n }\n\n if (rect.left + transform.x <= boundingRect.left) {\n value.x = boundingRect.left - rect.left;\n } else if (rect.right + transform.x >= boundingRect.left + boundingRect.width) {\n value.x = boundingRect.left + boundingRect.width - rect.right;\n }\n\n return value;\n}\n\nconst restrictToParentElement = _ref => {\n let {\n containerNodeRect,\n draggingNodeRect,\n transform\n } = _ref;\n\n if (!draggingNodeRect || !containerNodeRect) {\n return transform;\n }\n\n return restrictToBoundingRect(transform, draggingNodeRect, containerNodeRect);\n};\n\nconst restrictToFirstScrollableAncestor = _ref => {\n let {\n draggingNodeRect,\n transform,\n scrollableAncestorRects\n } = _ref;\n const firstScrollableAncestorRect = scrollableAncestorRects[0];\n\n if (!draggingNodeRect || !firstScrollableAncestorRect) {\n return transform;\n }\n\n return restrictToBoundingRect(transform, draggingNodeRect, firstScrollableAncestorRect);\n};\n\nconst restrictToVerticalAxis = _ref => {\n let {\n transform\n } = _ref;\n return { ...transform,\n x: 0\n };\n};\n\nconst restrictToWindowEdges = _ref => {\n let {\n transform,\n draggingNodeRect,\n windowRect\n } = _ref;\n\n if (!draggingNodeRect || !windowRect) {\n return transform;\n }\n\n return restrictToBoundingRect(transform, draggingNodeRect, windowRect);\n};\n\nconst snapCenterToCursor = _ref => {\n let {\n activatorEvent,\n draggingNodeRect,\n transform\n } = _ref;\n\n if (draggingNodeRect && activatorEvent) {\n const activatorCoordinates = getEventCoordinates(activatorEvent);\n\n if (!activatorCoordinates) {\n return transform;\n }\n\n const offsetX = activatorCoordinates.x - draggingNodeRect.left;\n const offsetY = activatorCoordinates.y - draggingNodeRect.top;\n return { ...transform,\n x: transform.x + offsetX - draggingNodeRect.width / 2,\n y: transform.y + offsetY - draggingNodeRect.height / 2\n };\n }\n\n return transform;\n};\n\nexport { createSnapModifier, restrictToFirstScrollableAncestor, restrictToHorizontalAxis, restrictToParentElement, restrictToVerticalAxis, restrictToWindowEdges, snapCenterToCursor };\n//# sourceMappingURL=modifiers.esm.js.map\n","import React, { type ReactNode } from \"react\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./table.module.scss\";\nconst cx = c.bind(styles);\n\ntype TableBodyProps = {\n [\"data-testid\"]?: string;\n children: ReactNode;\n className?: string;\n};\n\nconst rootClassName = \"purpur-table-body\";\n\nexport const TableBody = ({ children, className, ...props }: TableBodyProps) => {\n const classes = cx(className, rootClassName);\n\n return (\n <tbody className={classes} {...props}>\n {children}\n </tbody>\n );\n};\n","import React, { useMemo, useRef, useEffect, useState, useContext } from 'react';\nimport { useDndContext, getClientRect, useDroppable, useDraggable, closestCorners, getFirstCollision, getScrollableAncestors, KeyboardCode } from '@dnd-kit/core';\nimport { useUniqueId, useIsomorphicLayoutEffect, CSS, useCombinedRefs, isKeyboardEvent, subtract } from '@dnd-kit/utilities';\n\n/**\r\n * Move an array item to a different position. Returns a new array with the item moved to the new position.\r\n */\nfunction arrayMove(array, from, to) {\n const newArray = array.slice();\n newArray.splice(to < 0 ? newArray.length + to : to, 0, newArray.splice(from, 1)[0]);\n return newArray;\n}\n\n/**\r\n * Swap an array item to a different position. Returns a new array with the item swapped to the new position.\r\n */\nfunction arraySwap(array, from, to) {\n const newArray = array.slice();\n newArray[from] = array[to];\n newArray[to] = array[from];\n return newArray;\n}\n\nfunction getSortedRects(items, rects) {\n return items.reduce((accumulator, id, index) => {\n const rect = rects.get(id);\n\n if (rect) {\n accumulator[index] = rect;\n }\n\n return accumulator;\n }, Array(items.length));\n}\n\nfunction isValidIndex(index) {\n return index !== null && index >= 0;\n}\n\nfunction itemsEqual(a, b) {\n if (a === b) {\n return true;\n }\n\n if (a.length !== b.length) {\n return false;\n }\n\n for (let i = 0; i < a.length; i++) {\n if (a[i] !== b[i]) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction normalizeDisabled(disabled) {\n if (typeof disabled === 'boolean') {\n return {\n draggable: disabled,\n droppable: disabled\n };\n }\n\n return disabled;\n}\n\n// To-do: We should be calculating scale transformation\nconst defaultScale = {\n scaleX: 1,\n scaleY: 1\n};\nconst horizontalListSortingStrategy = _ref => {\n var _rects$activeIndex;\n\n let {\n rects,\n activeNodeRect: fallbackActiveRect,\n activeIndex,\n overIndex,\n index\n } = _ref;\n const activeNodeRect = (_rects$activeIndex = rects[activeIndex]) != null ? _rects$activeIndex : fallbackActiveRect;\n\n if (!activeNodeRect) {\n return null;\n }\n\n const itemGap = getItemGap(rects, index, activeIndex);\n\n if (index === activeIndex) {\n const newIndexRect = rects[overIndex];\n\n if (!newIndexRect) {\n return null;\n }\n\n return {\n x: activeIndex < overIndex ? newIndexRect.left + newIndexRect.width - (activeNodeRect.left + activeNodeRect.width) : newIndexRect.left - activeNodeRect.left,\n y: 0,\n ...defaultScale\n };\n }\n\n if (index > activeIndex && index <= overIndex) {\n return {\n x: -activeNodeRect.width - itemGap,\n y: 0,\n ...defaultScale\n };\n }\n\n if (index < activeIndex && index >= overIndex) {\n return {\n x: activeNodeRect.width + itemGap,\n y: 0,\n ...defaultScale\n };\n }\n\n return {\n x: 0,\n y: 0,\n ...defaultScale\n };\n};\n\nfunction getItemGap(rects, index, activeIndex) {\n const currentRect = rects[index];\n const previousRect = rects[index - 1];\n const nextRect = rects[index + 1];\n\n if (!currentRect || !previousRect && !nextRect) {\n return 0;\n }\n\n if (activeIndex < index) {\n return previousRect ? currentRect.left - (previousRect.left + previousRect.width) : nextRect.left - (currentRect.left + currentRect.width);\n }\n\n return nextRect ? nextRect.left - (currentRect.left + currentRect.width) : currentRect.left - (previousRect.left + previousRect.width);\n}\n\nconst rectSortingStrategy = _ref => {\n let {\n rects,\n activeIndex,\n overIndex,\n index\n } = _ref;\n const newRects = arrayMove(rects, overIndex, activeIndex);\n const oldRect = rects[index];\n const newRect = newRects[index];\n\n if (!newRect || !oldRect) {\n return null;\n }\n\n return {\n x: newRect.left - oldRect.left,\n y: newRect.top - oldRect.top,\n scaleX: newRect.width / oldRect.width,\n scaleY: newRect.height / oldRect.height\n };\n};\n\nconst rectSwappingStrategy = _ref => {\n let {\n activeIndex,\n index,\n rects,\n overIndex\n } = _ref;\n let oldRect;\n let newRect;\n\n if (index === activeIndex) {\n oldRect = rects[index];\n newRect = rects[overIndex];\n }\n\n if (index === overIndex) {\n oldRect = rects[index];\n newRect = rects[activeIndex];\n }\n\n if (!newRect || !oldRect) {\n return null;\n }\n\n return {\n x: newRect.left - oldRect.left,\n y: newRect.top - oldRect.top,\n scaleX: newRect.width / oldRect.width,\n scaleY: newRect.height / oldRect.height\n };\n};\n\n// To-do: We should be calculating scale transformation\nconst defaultScale$1 = {\n scaleX: 1,\n scaleY: 1\n};\nconst verticalListSortingStrategy = _ref => {\n var _rects$activeIndex;\n\n let {\n activeIndex,\n activeNodeRect: fallbackActiveRect,\n index,\n rects,\n overIndex\n } = _ref;\n const activeNodeRect = (_rects$activeIndex = rects[activeIndex]) != null ? _rects$activeIndex : fallbackActiveRect;\n\n if (!activeNodeRect) {\n return null;\n }\n\n if (index === activeIndex) {\n const overIndexRect = rects[overIndex];\n\n if (!overIndexRect) {\n return null;\n }\n\n return {\n x: 0,\n y: activeIndex < overIndex ? overIndexRect.top + overIndexRect.height - (activeNodeRect.top + activeNodeRect.height) : overIndexRect.top - activeNodeRect.top,\n ...defaultScale$1\n };\n }\n\n const itemGap = getItemGap$1(rects, index, activeIndex);\n\n if (index > activeIndex && index <= overIndex) {\n return {\n x: 0,\n y: -activeNodeRect.height - itemGap,\n ...defaultScale$1\n };\n }\n\n if (index < activeIndex && index >= overIndex) {\n return {\n x: 0,\n y: activeNodeRect.height + itemGap,\n ...defaultScale$1\n };\n }\n\n return {\n x: 0,\n y: 0,\n ...defaultScale$1\n };\n};\n\nfunction getItemGap$1(clientRects, index, activeIndex) {\n const currentRect = clientRects[index];\n const previousRect = clientRects[index - 1];\n const nextRect = clientRects[index + 1];\n\n if (!currentRect) {\n return 0;\n }\n\n if (activeIndex < index) {\n return previousRect ? currentRect.top - (previousRect.top + previousRect.height) : nextRect ? nextRect.top - (currentRect.top + currentRect.height) : 0;\n }\n\n return nextRect ? nextRect.top - (currentRect.top + currentRect.height) : previousRect ? currentRect.top - (previousRect.top + previousRect.height) : 0;\n}\n\nconst ID_PREFIX = 'Sortable';\nconst Context = /*#__PURE__*/React.createContext({\n activeIndex: -1,\n containerId: ID_PREFIX,\n disableTransforms: false,\n items: [],\n overIndex: -1,\n useDragOverlay: false,\n sortedRects: [],\n strategy: rectSortingStrategy,\n disabled: {\n draggable: false,\n droppable: false\n }\n});\nfunction SortableContext(_ref) {\n let {\n children,\n id,\n items: userDefinedItems,\n strategy = rectSortingStrategy,\n disabled: disabledProp = false\n } = _ref;\n const {\n active,\n dragOverlay,\n droppableRects,\n over,\n measureDroppableContainers\n } = useDndContext();\n const containerId = useUniqueId(ID_PREFIX, id);\n const useDragOverlay = Boolean(dragOverlay.rect !== null);\n const items = useMemo(() => userDefinedItems.map(item => typeof item === 'object' && 'id' in item ? item.id : item), [userDefinedItems]);\n const isDragging = active != null;\n const activeIndex = active ? items.indexOf(active.id) : -1;\n const overIndex = over ? items.indexOf(over.id) : -1;\n const previousItemsRef = useRef(items);\n const itemsHaveChanged = !itemsEqual(items, previousItemsRef.current);\n const disableTransforms = overIndex !== -1 && activeIndex === -1 || itemsHaveChanged;\n const disabled = normalizeDisabled(disabledProp);\n useIsomorphicLayoutEffect(() => {\n if (itemsHaveChanged && isDragging) {\n measureDroppableContainers(items);\n }\n }, [itemsHaveChanged, items, isDragging, measureDroppableContainers]);\n useEffect(() => {\n previousItemsRef.current = items;\n }, [items]);\n const contextValue = useMemo(() => ({\n activeIndex,\n containerId,\n disabled,\n disableTransforms,\n items,\n overIndex,\n useDragOverlay,\n sortedRects: getSortedRects(items, droppableRects),\n strategy\n }), // eslint-disable-next-line react-hooks/exhaustive-deps\n [activeIndex, containerId, disabled.draggable, disabled.droppable, disableTransforms, items, overIndex, droppableRects, useDragOverlay, strategy]);\n return React.createElement(Context.Provider, {\n value: contextValue\n }, children);\n}\n\nconst defaultNewIndexGetter = _ref => {\n let {\n id,\n items,\n activeIndex,\n overIndex\n } = _ref;\n return arrayMove(items, activeIndex, overIndex).indexOf(id);\n};\nconst defaultAnimateLayoutChanges = _ref2 => {\n let {\n containerId,\n isSorting,\n wasDragging,\n index,\n items,\n newIndex,\n previousItems,\n previousContainerId,\n transition\n } = _ref2;\n\n if (!transition || !wasDragging) {\n return false;\n }\n\n if (previousItems !== items && index === newIndex) {\n return false;\n }\n\n if (isSorting) {\n return true;\n }\n\n return newIndex !== index && containerId === previousContainerId;\n};\nconst defaultTransition = {\n duration: 200,\n easing: 'ease'\n};\nconst transitionProperty = 'transform';\nconst disabledTransition = /*#__PURE__*/CSS.Transition.toString({\n property: transitionProperty,\n duration: 0,\n easing: 'linear'\n});\nconst defaultAttributes = {\n roleDescription: 'sortable'\n};\n\n/*\r\n * When the index of an item changes while sorting,\r\n * we need to temporarily disable the transforms\r\n */\n\nfunction useDerivedTransform(_ref) {\n let {\n disabled,\n index,\n node,\n rect\n } = _ref;\n const [derivedTransform, setDerivedtransform] = useState(null);\n const previousIndex = useRef(index);\n useIsomorphicLayoutEffect(() => {\n if (!disabled && index !== previousIndex.current && node.current) {\n const initial = rect.current;\n\n if (initial) {\n const current = getClientRect(node.current, {\n ignoreTransform: true\n });\n const delta = {\n x: initial.left - current.left,\n y: initial.top - current.top,\n scaleX: initial.width / current.width,\n scaleY: initial.height / current.height\n };\n\n if (delta.x || delta.y) {\n setDerivedtransform(delta);\n }\n }\n }\n\n if (index !== previousIndex.current) {\n previousIndex.current = index;\n }\n }, [disabled, index, node, rect]);\n useEffect(() => {\n if (derivedTransform) {\n setDerivedtransform(null);\n }\n }, [derivedTransform]);\n return derivedTransform;\n}\n\nfunction useSortable(_ref) {\n let {\n animateLayoutChanges = defaultAnimateLayoutChanges,\n attributes: userDefinedAttributes,\n disabled: localDisabled,\n data: customData,\n getNewIndex = defaultNewIndexGetter,\n id,\n strategy: localStrategy,\n resizeObserverConfig,\n transition = defaultTransition\n } = _ref;\n const {\n items,\n containerId,\n activeIndex,\n disabled: globalDisabled,\n disableTransforms,\n sortedRects,\n overIndex,\n useDragOverlay,\n strategy: globalStrategy\n } = useContext(Context);\n const disabled = normalizeLocalDisabled(localDisabled, globalDisabled);\n const index = items.indexOf(id);\n const data = useMemo(() => ({\n sortable: {\n containerId,\n index,\n items\n },\n ...customData\n }), [containerId, customData, index, items]);\n const itemsAfterCurrentSortable = useMemo(() => items.slice(items.indexOf(id)), [items, id]);\n const {\n rect,\n node,\n isOver,\n setNodeRef: setDroppableNodeRef\n } = useDroppable({\n id,\n data,\n disabled: disabled.droppable,\n resizeObserverConfig: {\n updateMeasurementsFor: itemsAfterCurrentSortable,\n ...resizeObserverConfig\n }\n });\n const {\n active,\n activatorEvent,\n activeNodeRect,\n attributes,\n setNodeRef: setDraggableNodeRef,\n listeners,\n isDragging,\n over,\n setActivatorNodeRef,\n transform\n } = useDraggable({\n id,\n data,\n attributes: { ...defaultAttributes,\n ...userDefinedAttributes\n },\n disabled: disabled.draggable\n });\n const setNodeRef = useCombinedRefs(setDroppableNodeRef, setDraggableNodeRef);\n const isSorting = Boolean(active);\n const displaceItem = isSorting && !disableTransforms && isValidIndex(activeIndex) && isValidIndex(overIndex);\n const shouldDisplaceDragSource = !useDragOverlay && isDragging;\n const dragSourceDisplacement = shouldDisplaceDragSource && displaceItem ? transform : null;\n const strategy = localStrategy != null ? localStrategy : globalStrategy;\n const finalTransform = displaceItem ? dragSourceDisplacement != null ? dragSourceDisplacement : strategy({\n rects: sortedRects,\n activeNodeRect,\n activeIndex,\n overIndex,\n index\n }) : null;\n const newIndex = isValidIndex(activeIndex) && isValidIndex(overIndex) ? getNewIndex({\n id,\n items,\n activeIndex,\n overIndex\n }) : index;\n const activeId = active == null ? void 0 : active.id;\n const previous = useRef({\n activeId,\n items,\n newIndex,\n containerId\n });\n const itemsHaveChanged = items !== previous.current.items;\n const shouldAnimateLayoutChanges = animateLayoutChanges({\n active,\n containerId,\n isDragging,\n isSorting,\n id,\n index,\n items,\n newIndex: previous.current.newIndex,\n previousItems: previous.current.items,\n previousContainerId: previous.current.containerId,\n transition,\n wasDragging: previous.current.activeId != null\n });\n const derivedTransform = useDerivedTransform({\n disabled: !shouldAnimateLayoutChanges,\n index,\n node,\n rect\n });\n useEffect(() => {\n if (isSorting && previous.current.newIndex !== newIndex) {\n previous.current.newIndex = newIndex;\n }\n\n if (containerId !== previous.current.containerId) {\n previous.current.containerId = containerId;\n }\n\n if (items !== previous.current.items) {\n previous.current.items = items;\n }\n }, [isSorting, newIndex, containerId, items]);\n useEffect(() => {\n if (activeId === previous.current.activeId) {\n return;\n }\n\n if (activeId != null && previous.current.activeId == null) {\n previous.current.activeId = activeId;\n return;\n }\n\n const timeoutId = setTimeout(() => {\n previous.current.activeId = activeId;\n }, 50);\n return () => clearTimeout(timeoutId);\n }, [activeId]);\n return {\n active,\n activeIndex,\n attributes,\n data,\n rect,\n index,\n newIndex,\n items,\n isOver,\n isSorting,\n isDragging,\n listeners,\n node,\n overIndex,\n over,\n setNodeRef,\n setActivatorNodeRef,\n setDroppableNodeRef,\n setDraggableNodeRef,\n transform: derivedTransform != null ? derivedTransform : finalTransform,\n transition: getTransition()\n };\n\n function getTransition() {\n if ( // Temporarily disable transitions for a single frame to set up derived transforms\n derivedTransform || // Or to prevent items jumping to back to their \"new\" position when items change\n itemsHaveChanged && previous.current.newIndex === index) {\n return disabledTransition;\n }\n\n if (shouldDisplaceDragSource && !isKeyboardEvent(activatorEvent) || !transition) {\n return undefined;\n }\n\n if (isSorting || shouldAnimateLayoutChanges) {\n return CSS.Transition.toString({ ...transition,\n property: transitionProperty\n });\n }\n\n return undefined;\n }\n}\n\nfunction normalizeLocalDisabled(localDisabled, globalDisabled) {\n var _localDisabled$dragga, _localDisabled$droppa;\n\n if (typeof localDisabled === 'boolean') {\n return {\n draggable: localDisabled,\n // Backwards compatibility\n droppable: false\n };\n }\n\n return {\n draggable: (_localDisabled$dragga = localDisabled == null ? void 0 : localDisabled.draggable) != null ? _localDisabled$dragga : globalDisabled.draggable,\n droppable: (_localDisabled$droppa = localDisabled == null ? void 0 : localDisabled.droppable) != null ? _localDisabled$droppa : globalDisabled.droppable\n };\n}\n\nfunction hasSortableData(entry) {\n if (!entry) {\n return false;\n }\n\n const data = entry.data.current;\n\n if (data && 'sortable' in data && typeof data.sortable === 'object' && 'containerId' in data.sortable && 'items' in data.sortable && 'index' in data.sortable) {\n return true;\n }\n\n return false;\n}\n\nconst directions = [KeyboardCode.Down, KeyboardCode.Right, KeyboardCode.Up, KeyboardCode.Left];\nconst sortableKeyboardCoordinates = (event, _ref) => {\n let {\n context: {\n active,\n collisionRect,\n droppableRects,\n droppableContainers,\n over,\n scrollableAncestors\n }\n } = _ref;\n\n if (directions.includes(event.code)) {\n event.preventDefault();\n\n if (!active || !collisionRect) {\n return;\n }\n\n const filteredContainers = [];\n droppableContainers.getEnabled().forEach(entry => {\n if (!entry || entry != null && entry.disabled) {\n return;\n }\n\n const rect = droppableRects.get(entry.id);\n\n if (!rect) {\n return;\n }\n\n switch (event.code) {\n case KeyboardCode.Down:\n if (collisionRect.top < rect.top) {\n filteredContainers.push(entry);\n }\n\n break;\n\n case KeyboardCode.Up:\n if (collisionRect.top > rect.top) {\n filteredContainers.push(entry);\n }\n\n break;\n\n case KeyboardCode.Left:\n if (collisionRect.left > rect.left) {\n filteredContainers.push(entry);\n }\n\n break;\n\n case KeyboardCode.Right:\n if (collisionRect.left < rect.left) {\n filteredContainers.push(entry);\n }\n\n break;\n }\n });\n const collisions = closestCorners({\n active,\n collisionRect: collisionRect,\n droppableRects,\n droppableContainers: filteredContainers,\n pointerCoordinates: null\n });\n let closestId = getFirstCollision(collisions, 'id');\n\n if (closestId === (over == null ? void 0 : over.id) && collisions.length > 1) {\n closestId = collisions[1].id;\n }\n\n if (closestId != null) {\n const activeDroppable = droppableContainers.get(active.id);\n const newDroppable = droppableContainers.get(closestId);\n const newRect = newDroppable ? droppableRects.get(newDroppable.id) : null;\n const newNode = newDroppable == null ? void 0 : newDroppable.node.current;\n\n if (newNode && newRect && activeDroppable && newDroppable) {\n const newScrollAncestors = getScrollableAncestors(newNode);\n const hasDifferentScrollAncestors = newScrollAncestors.some((element, index) => scrollableAncestors[index] !== element);\n const hasSameContainer = isSameContainer(activeDroppable, newDroppable);\n const isAfterActive = isAfter(activeDroppable, newDroppable);\n const offset = hasDifferentScrollAncestors || !hasSameContainer ? {\n x: 0,\n y: 0\n } : {\n x: isAfterActive ? collisionRect.width - newRect.width : 0,\n y: isAfterActive ? collisionRect.height - newRect.height : 0\n };\n const rectCoordinates = {\n x: newRect.left,\n y: newRect.top\n };\n const newCoordinates = offset.x && offset.y ? rectCoordinates : subtract(rectCoordinates, offset);\n return newCoordinates;\n }\n }\n }\n\n return undefined;\n};\n\nfunction isSameContainer(a, b) {\n if (!hasSortableData(a) || !hasSortableData(b)) {\n return false;\n }\n\n return a.data.current.sortable.containerId === b.data.current.sortable.containerId;\n}\n\nfunction isAfter(a, b) {\n if (!hasSortableData(a) || !hasSortableData(b)) {\n return false;\n }\n\n if (!isSameContainer(a, b)) {\n return false;\n }\n\n return a.data.current.sortable.index < b.data.current.sortable.index;\n}\n\nexport { SortableContext, arrayMove, arraySwap, defaultAnimateLayoutChanges, defaultNewIndexGetter, hasSortableData, horizontalListSortingStrategy, rectSortingStrategy, rectSwappingStrategy, sortableKeyboardCoordinates, useSortable, verticalListSortingStrategy };\n//# sourceMappingURL=sortable.esm.js.map\n","import { jsx as r } from \"react/jsx-runtime\";\nimport { I as w } from \"../icon-DNHpBTHs.mjs\";\nconst l = {\n name: \"arrow-down\",\n svg: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path fill-rule=\"evenodd\" d=\"M12 20.9a.9.9 0 0 1-.636-.264l-5.5-5.5a.9.9 0 1 1 1.272-1.272l3.964 3.963V4a.9.9 0 1 1 1.8 0v13.827l3.964-3.963a.9.9 0 0 1 1.272 1.272l-5.5 5.5A.9.9 0 0 1 12 20.9Z\" clip-rule=\"evenodd\"/></svg>',\n keywords: [\"arrow-down\"],\n category: \"utility\"\n}, n = (o) => /* @__PURE__ */ r(w, { ...o, svg: l });\nn.displayName = \"IconArrowDown\";\nexport {\n n as IconArrowDown\n};\n//# sourceMappingURL=arrow-down.es.js.map\n","import { jsx as r } from \"react/jsx-runtime\";\nimport { I as l } from \"../icon-DNHpBTHs.mjs\";\nconst a = {\n name: \"arrow-up\",\n svg: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path fill-rule=\"evenodd\" d=\"M11.364 3.364a.9.9 0 0 1 1.272 0l5.5 5.5a.9.9 0 1 1-1.272 1.272L12.9 6.173V20a.9.9 0 0 1-1.8 0V6.173l-3.964 3.963a.9.9 0 0 1-1.272-1.272l5.5-5.5Z\" clip-rule=\"evenodd\"/></svg>',\n keywords: [\"arrow-up\"],\n category: \"utility\"\n}, e = (o) => /* @__PURE__ */ r(l, { ...o, svg: a });\ne.displayName = \"IconArrowUp\";\nexport {\n e as IconArrowUp\n};\n//# sourceMappingURL=arrow-up.es.js.map\n","import { jsx as r } from \"react/jsx-runtime\";\nimport { I as e } from \"../icon-DNHpBTHs.mjs\";\nconst l = {\n name: \"sorter\",\n svg: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path fill-rule=\"evenodd\" d=\"M17 3.1a.9.9 0 0 1 .636.264l4.5 4.5a.9.9 0 1 1-1.272 1.272L17.9 6.173V20a.9.9 0 0 1-1.8 0V6.173l-2.964 2.963a.9.9 0 0 1-1.272-1.272l4.5-4.5A.9.9 0 0 1 17 3.1Zm-10 0a.9.9 0 0 1 .9.9v13.827l2.964-2.963a.9.9 0 1 1 1.272 1.272l-4.5 4.5a.9.9 0 0 1-1.272 0l-4.5-4.5a.9.9 0 0 1 1.272-1.272L6.1 17.827V4a.9.9 0 0 1 .9-.9Z\" clip-rule=\"evenodd\"/></svg>',\n keywords: [\"sorter\"],\n category: \"utility\"\n}, t = (o) => /* @__PURE__ */ r(e, { ...o, svg: l });\nt.displayName = \"IconSorter\";\nexport {\n t as IconSorter\n};\n//# sourceMappingURL=sorter.es.js.map\n","import React from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { useThemePortalContainer } from \"@purpur/theme\";\n\nexport interface DragIndicatorProps {\n top: number;\n left: number;\n container?: HTMLElement;\n}\n\n/**\n * Renders a drag indicator circle using a React Portal\n * to escape overflow clipping.\n *\n * Resolution order for the portal target:\n * 1. Explicit `container` prop (used by Table to keep the indicator inside a\n * scrolling/positioned ancestor).\n * 2. Nearest `ThemeProvider` wrapper (so the indicator picks up the active\n * color scheme's CSS variables).\n * 3. `document.body`.\n */\nexport const DragIndicatorCircle: React.FC<DragIndicatorProps> = ({ top, left, container }) => {\n const themePortalContainer = useThemePortalContainer();\n const resolvedContainer = container ?? themePortalContainer;\n const useAbsolute = container != null;\n const indicatorStyles: React.CSSProperties = {\n position: useAbsolute ? \"absolute\" : \"fixed\",\n pointerEvents: \"none\",\n zIndex: 9999,\n };\n\n Object.assign(indicatorStyles, {\n width: \"var(--purpur-spacing-150)\",\n height: \"var(--purpur-spacing-150)\",\n backgroundColor: \"var(--purpur-color-border-interactive-primary)\",\n borderRadius: \"50%\",\n left: `calc(${left}px)`,\n top: `${top}px`,\n transform: \"translate(-50%, -50%)\",\n });\n\n return createPortal(\n <div data-testid=\"drag-indicator\" style={indicatorStyles} aria-hidden=\"true\" />,\n resolvedContainer || document.body\n );\n};\n","import { jsx as r } from \"react/jsx-runtime\";\nimport { I as C } from \"../icon-DNHpBTHs.mjs\";\nconst l = {\n name: \"drag-horizontal\",\n svg: '<svg viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"currentColor\"><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M6.55556 16.667C5.69645 16.667 5 15.9705 5 15.1114C5 14.2523 5.69645 13.5559 6.55556 13.5559C7.41466 13.5559 8.11111 14.2523 8.11111 15.1114C8.11111 15.9705 7.41466 16.667 6.55556 16.667ZM10.4444 15.1114C10.4444 15.9705 11.1409 16.667 12 16.667C12.8591 16.667 13.5556 15.9705 13.5556 15.1114C13.5556 14.2523 12.8591 13.5559 12 13.5559C11.1409 13.5559 10.4444 14.2523 10.4444 15.1114ZM17.4444 16.667C16.5853 16.667 15.8889 15.9705 15.8889 15.1114C15.8889 14.2523 16.5853 13.5559 17.4444 13.5559C18.3036 13.5559 19 14.2523 19 15.1114C19 15.9705 18.3036 16.667 17.4444 16.667Z\"/><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M6.55556 10.4448C5.69645 10.4448 5 9.74833 5 8.88922C5 8.03011 5.69645 7.33366 6.55555 7.33366C7.41466 7.33366 8.11111 8.03011 8.11111 8.88922C8.11111 9.74833 7.41466 10.4448 6.55556 10.4448ZM10.4444 8.88922C10.4444 9.74833 11.1409 10.4448 12 10.4448C12.8591 10.4448 13.5556 9.74833 13.5556 8.88922C13.5556 8.03011 12.8591 7.33366 12 7.33366C11.1409 7.33366 10.4444 8.03011 10.4444 8.88922ZM17.4444 10.4448C16.5853 10.4448 15.8889 9.74833 15.8889 8.88922C15.8889 8.03011 16.5853 7.33366 17.4444 7.33366C18.3036 7.33366 19 8.03011 19 8.88922C19 9.74833 18.3036 10.4448 17.4444 10.4448Z\"/></svg>',\n keywords: [\"drag-horizontal\"],\n category: \"action\"\n}, e = (o) => /* @__PURE__ */ r(C, { ...o, svg: l });\ne.displayName = \"IconDragHorizontal\";\nexport {\n e as IconDragHorizontal\n};\n//# sourceMappingURL=drag-horizontal.es.js.map\n","import React from \"react\";\nimport { IconDragHorizontal } from \"@purpur/icon/drag-horizontal\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./table.module.scss\";\n\nconst cx = c.bind(styles);\nconst rootClassName = \"purpur-table-column-header-cell\";\n\nexport type TableColumnDragHandleProps = {\n overlayActive?: boolean;\n isFirstColumn: boolean;\n isLastColumn: boolean;\n columnDragAriaLabel: string;\n // Add any additional props from listeners\n [key: string]: unknown;\n};\n\nexport function TableColumnDragHandle({\n overlayActive,\n isFirstColumn,\n isLastColumn,\n columnDragAriaLabel,\n ...dragListeners // Capture the listeners from useSortable\n}: TableColumnDragHandleProps) {\n\n // Should be a button, not a div with role=\"button\" according to a11y audit:\n // \"Change the <div role=\"button\" tabindex=\"0\"> to a native <button type=\"button\">. This automatically provides the correct role and keyboard interaction without needing manual roles or tabindexes.\"\n\n return (\n <button\n className={cx(`${rootClassName}__drag-handle`, {\n [`${rootClassName}__border-radius-first-cell`]: isFirstColumn && !overlayActive,\n [`${rootClassName}__border-radius-last-cell`]: isLastColumn && !overlayActive,\n [`${rootClassName}__drag-handle--active`]: overlayActive,\n })}\n aria-label={columnDragAriaLabel}\n {...dragListeners}\n >\n <IconDragHorizontal className={cx(`${rootClassName}__drag-handle-icon`)} size=\"sm\" />\n </button>\n );\n}\n","import { type RefObject, useLayoutEffect, useState } from \"react\";\n\nimport type { DropIndicatorPosition } from \"./use-drop-indicator.hook\";\n\nexport interface DragIndicatorPosition {\n top: number;\n left: number;\n container?: HTMLElement;\n}\n\ninterface UseDragIndicatorPositionProps {\n elementRef: RefObject<HTMLElement | null>;\n dropIndicatorPosition: DropIndicatorPosition | null | undefined;\n}\n\n/**\n * Calculates the position for the circular drag indicator rendered via portal.\n * Only circle mode is retained; line indicator logic moved to CSS pseudo-elements.\n */\nexport function useDragIndicatorPosition({\n elementRef,\n dropIndicatorPosition,\n}: UseDragIndicatorPositionProps): DragIndicatorPosition | null {\n const [position, setPosition] = useState<DragIndicatorPosition | null>(null);\n\n useLayoutEffect(() => {\n if (!dropIndicatorPosition || !elementRef.current) {\n setPosition(null);\n return;\n }\n\n const calculatePosition = () => {\n if (!elementRef.current) return;\n\n const rect = elementRef.current.getBoundingClientRect();\n const tableContainer = elementRef.current.closest(\n \".purpur-table__container\"\n ) as HTMLElement | null;\n\n const offsetLeft = 2.5;\n const offsetRight = 1.5;\n\n if (tableContainer) {\n const containerRect = tableContainer.getBoundingClientRect();\n const left =\n dropIndicatorPosition === \"before\"\n ? rect.left - containerRect.left + tableContainer.scrollLeft + offsetLeft\n : rect.right - containerRect.left + tableContainer.scrollLeft - offsetRight;\n const top = rect.top - containerRect.top + tableContainer.scrollTop;\n setPosition({ top, left, container: tableContainer });\n } else {\n const left =\n dropIndicatorPosition === \"before\" ? rect.left + offsetLeft : rect.right - offsetRight;\n const top = rect.top;\n setPosition({ top, left });\n }\n };\n\n calculatePosition();\n\n const tableContainer = elementRef.current.closest(\".purpur-table__container\");\n const handleUpdate = () => requestAnimationFrame(calculatePosition);\n\n if (tableContainer) tableContainer.addEventListener(\"scroll\", handleUpdate, { passive: true });\n window.addEventListener(\"resize\", handleUpdate, { passive: true });\n\n return () => {\n if (tableContainer) tableContainer.removeEventListener(\"scroll\", handleUpdate);\n window.removeEventListener(\"resize\", handleUpdate);\n };\n }, [dropIndicatorPosition, elementRef]);\n\n return position;\n}\n","import { type UniqueIdentifier, useDndContext } from \"@dnd-kit/core\";\n\nexport type DropIndicatorPosition = \"before\" | \"after\" | null;\n\ninterface UseDropIndicatorProps {\n itemId?: UniqueIdentifier;\n sortableId?: string;\n enableDrag: boolean;\n}\n\n/**\n * Hook that determines where to show a drop indicator when dragging items\n * Works for both table columns and rows\n */\nexport function useDropIndicator({\n itemId,\n sortableId,\n enableDrag,\n}: UseDropIndicatorProps): DropIndicatorPosition {\n const dndContext = useDndContext();\n\n // Default: no indicator\n let dropIndicatorPosition: DropIndicatorPosition = null;\n if (enableDrag && dndContext.active && dndContext.over) {\n const activeId = dndContext.active.id;\n const overId = dndContext.over.id;\n const currentId = sortableId || itemId;\n\n if (activeId !== overId && overId === currentId) {\n // Try to get the current order from sortable items first (reflects drag order)\n // Fall back to droppableContainers if items haven't been populated yet\n const sortableItems = dndContext.over.data.current?.sortable?.items;\n const itemOrder =\n sortableItems && sortableItems.length > 0\n ? sortableItems\n : Array.from(dndContext.droppableContainers.keys());\n\n const activeIndex = itemOrder.indexOf(activeId as string);\n const overIndex = itemOrder.indexOf(overId as string);\n\n dropIndicatorPosition = activeIndex > overIndex ? \"before\" : \"after\";\n }\n }\n\n return dropIndicatorPosition;\n}\n","import { type RefObject,useEffect, useState } from \"react\";\n\nexport function useElementVisibility<T extends HTMLElement = HTMLElement>(\n ref: RefObject<T | null>,\n threshold: number = 1\n): boolean {\n const [isVisible, setIsVisible] = useState(false);\n\n useEffect(() => {\n const currentElement = ref.current;\n if (!currentElement) return;\n\n const observer = new window.IntersectionObserver(\n ([entry]) => {\n setIsVisible(entry.isIntersecting);\n },\n { threshold }\n );\n\n observer.observe(currentElement);\n\n return () => {\n observer.unobserve(currentElement);\n };\n }, [ref, threshold]);\n\n return isVisible;\n}\n","import { useEffect, useRef, useState } from \"react\";\n\nconst useTruncatedTooltip = () => {\n const [hasPopover, setHasPopover] = useState(false);\n const [showPopover, setShowPopover] = useState(false);\n const containerRef = useRef<HTMLDivElement | null>(null);\n\n useEffect(() => {\n const checkContentOverflow = () => {\n if (containerRef.current) {\n const contentElement: HTMLLinkElement | HTMLParagraphElement | null =\n containerRef.current.querySelector(\"a, p\");\n\n if (contentElement) {\n const containerWidth = containerRef.current.clientWidth;\n const contentWidth =\n contentElement.tagName.toLowerCase() === \"a\"\n ? contentElement.offsetWidth\n : contentElement.scrollWidth;\n\n setHasPopover(contentWidth > containerWidth);\n } else {\n setHasPopover(false);\n }\n } else {\n setHasPopover(false);\n }\n };\n\n checkContentOverflow();\n\n window.addEventListener(\"resize\", checkContentOverflow);\n\n return () => {\n window.removeEventListener(\"resize\", checkContentOverflow);\n };\n }, []);\n\n const onMouseEnter = () => {\n setShowPopover(hasPopover);\n };\n\n const onMouseLeave = () => {\n setShowPopover(false);\n };\n\n return { hasPopover, showPopover, containerRef, onMouseEnter, onMouseLeave };\n};\n\nexport default useTruncatedTooltip;\n","/**\n * Converts pixel values to rem values accounting for the Purpur rescale factor\n *\n * In the Purpur design system:\n * - For 16px rem base: --purpur-rescale = 1\n * - For 10px rem base: --purpur-rescale = 1.6\n *\n * @param pxValue The pixel value to convert to rem\n * @returns The value in rem units\n */\nexport const pxToRem = (pxValue: number): number => {\n const purpurRescale =\n typeof document === \"undefined\"\n ? 1\n : Number(\n getComputedStyle(document.documentElement).getPropertyValue(\"--purpur-rescale\") || \"1\"\n );\n\n // For 16px base (rescale=1): divide by 16\n // For 10px base (rescale=1.6): divide by 16 and then multiply by 1.6 = divide by 10\n const conversionFactor = 16 / (purpurRescale || 1);\n return pxValue / conversionFactor;\n};\n\n/**\n * Converts pixel values to rem strings with 'rem' unit appended\n *\n * @param pxValue The pixel value to convert to rem\n * @returns A string with the rem value and 'rem' unit\n */\nexport const pxToRemString = (pxValue: number): string => {\n return `${pxToRem(pxValue)}rem`;\n};\n","import React, { useRef } from \"react\";\nimport { type UniqueIdentifier } from \"@dnd-kit/core\";\nimport { useSortable } from \"@dnd-kit/sortable\";\nimport { Button } from \"@purpur/button\";\nimport { Checkbox, type CheckedState } from \"@purpur/checkbox\";\nimport { IconArrowDown } from \"@purpur/icon/arrow-down\";\nimport { IconArrowUp } from \"@purpur/icon/arrow-up\";\nimport { IconSearch } from \"@purpur/icon/search\";\nimport { IconSorter } from \"@purpur/icon/sorter\";\nimport { Paragraph } from \"@purpur/paragraph\";\nimport { Select, type SelectProps } from \"@purpur/select\";\nimport { TextField } from \"@purpur/text-field\";\nimport { Tooltip } from \"@purpur/tooltip\";\nimport { VisuallyHidden } from \"@purpur/visually-hidden\";\nimport {\n flexRender,\n type Header,\n type RowData,\n type SortDirection,\n type Table,\n} from \"@tanstack/react-table\";\nimport c from \"classnames/bind\";\n\nimport { DragIndicatorCircle } from \"./drag-indicator-circle\";\nimport styles from \"./table.module.scss\";\nimport { TableColumnDragHandle } from \"./use-drag-handle.hook\";\nimport { useDragIndicatorPosition } from \"./use-drag-indicator-position.hook\";\nimport { useDropIndicator } from \"./use-drop-indicator.hook\";\nimport { useElementVisibility } from \"./use-element-visibility.hook\";\nimport useTruncatedTooltip from \"./use-truncated-hook\";\nimport { pxToRemString } from \"./utils/unit-conversions\";\n\nconst cx = c.bind(styles);\n\nexport type ColumnDragEnabledProps = {\n enableColumnDrag: true;\n columnDragAriaLabel: string;\n};\n\nexport type ColumnDragDisabledProps = {\n enableColumnDrag?: false;\n columnDragAriaLabel?: never;\n};\n\nexport type TableColumnHeaderCellProps<TData> = {\n className?: string;\n stickyColumn: boolean;\n header: Header<TData, unknown>;\n tanstackTable: Table<TData>;\n isScrolled?: boolean;\n showBorder?: boolean;\n sortableId?: string;\n enableSorting?: boolean;\n activeId?: UniqueIdentifier | null;\n overlayActive?: boolean;\n tableHasFilters: boolean;\n} & (ColumnDragEnabledProps | ColumnDragDisabledProps);\n\nexport type SortingAriaLabels = {\n desc: string;\n asc: string;\n default: string;\n};\n\nexport type FilterVariants = \"string\" | \"select\";\n\nconst rootClassName = \"purpur-table-column-header-cell\";\n\nexport const TableColumnHeaderCell = <TData extends RowData>({\n className,\n enableSorting,\n header,\n stickyColumn,\n tanstackTable,\n isScrolled,\n showBorder,\n enableColumnDrag,\n sortableId,\n activeId,\n overlayActive,\n columnDragAriaLabel,\n tableHasFilters,\n}: TableColumnHeaderCellProps<TData>) => {\n const headerRef = useRef<HTMLTableCellElement | null>(null);\n\n const { attributes, listeners, setNodeRef, isSorting } = useSortable({\n id: sortableId || header.id,\n disabled: !enableColumnDrag || Boolean(overlayActive),\n });\n\n const isActiveColumn = activeId === header.id || sortableId === activeId;\n const draggingActive = (overlayActive || isSorting) && isActiveColumn;\n const isCheckBox = header.column.id === \"row-selection\" || header.id === \"row-selection\";\n const isRadiobutton = header.column.id === \"row-toggle\" || header.id === \"row-toggle\";\n const canSort = enableSorting && header.column.getCanSort();\n const hasFilter = header.column.columnDef.meta?.filterVariant !== undefined && tableHasFilters;\n\n const dropIndicatorPosition = useDropIndicator({\n itemId: header.id,\n sortableId,\n enableDrag: !!enableColumnDrag,\n });\n\n const isVisible = useElementVisibility(headerRef, 1);\n\n const getSortingDirection = (sortingDirection: SortDirection | false) => {\n switch (sortingDirection) {\n case \"desc\":\n return \"descending\";\n case \"asc\":\n return \"ascending\";\n case false:\n default:\n return \"none\";\n }\n };\n\n const widthInRemString = pxToRemString(header.getSize());\n\n const isFirstColumn = header.column.getIsFirstColumn();\n const isLastColumn = header.column.getIsLastColumn();\n\n const setRefs = (node: HTMLTableCellElement | null) => {\n headerRef.current = node;\n if (setNodeRef) {\n setNodeRef(node);\n }\n };\n\n const circleIndicatorPosition = useDragIndicatorPosition({\n elementRef: headerRef,\n dropIndicatorPosition,\n });\n\n // The <th> tag should NOT have aria-label according to a11y audit:\n // \"When a screen reader user navigates the table using reading keys, the screen reader will read the aria-label (\"Name\") and may completely ignore the interactive search input and drag handle nested inside the <th>.\"\n\n return (\n <>\n {circleIndicatorPosition && (\n <DragIndicatorCircle\n top={circleIndicatorPosition.top}\n left={circleIndicatorPosition.left}\n container={circleIndicatorPosition.container}\n />\n )}\n <th\n ref={setRefs}\n className={cx(className, rootClassName, {\n [`${rootClassName}__checkbox`]: isCheckBox,\n [`${rootClassName}__sticky-column`]: stickyColumn,\n [`${rootClassName}__sticky-column__with-sticky-border`]: isScrolled && showBorder,\n [`${rootClassName}__first-header-visible`]: isFirstColumn && isVisible,\n [`${rootClassName}__last-header-visible`]: isLastColumn && isVisible,\n [`${rootClassName}__border-radius-first-cell`]: isFirstColumn && !overlayActive,\n [`${rootClassName}__border-radius-last-cell`]: isLastColumn && !overlayActive,\n [`${rootClassName}__draggable`]: enableColumnDrag,\n [`${rootClassName}__column-drag-enabled`]: enableColumnDrag,\n [`${rootClassName}__dragging`]: draggingActive && !overlayActive,\n [`${rootClassName}--drop-indicator-before`]: dropIndicatorPosition === \"before\",\n [`${rootClassName}--drop-indicator-after`]: dropIndicatorPosition === \"after\",\n })}\n style={{\n width: isCheckBox || isRadiobutton ? widthInRemString : undefined,\n }}\n scope=\"col\"\n aria-sort={getSortingDirection(header.column.getIsSorted())}\n {...(enableColumnDrag\n ? {\n ...attributes,\n role: \"columnheader\", // Override the role=\"button\" from useSortable\n tabIndex: -1, // Make th non-focusable\n id: `header-${sortableId || header.id}`,\n }\n : {})}\n >\n {enableColumnDrag && (\n <TableColumnDragHandle\n {...listeners}\n overlayActive={overlayActive}\n isFirstColumn={isFirstColumn}\n isLastColumn={isLastColumn}\n columnDragAriaLabel={columnDragAriaLabel}\n />\n )}\n\n <div\n className={cx(`${rootClassName}__inner`)}\n style={{\n minWidth: widthInRemString,\n }}\n >\n <div className={cx(`${rootClassName}__content`)}>\n <div className={cx(`${rootClassName}__title`)}>\n <HeaderContent\n header={header}\n tanstackTable={tanstackTable}\n canSort={canSort}\n isCheckBox={isCheckBox}\n isRadiobutton={isRadiobutton}\n />\n </div>\n {hasFilter && !isCheckBox && (\n <div className={cx(`${rootClassName}__filter-wrapper`)}>\n <Filter header={header} />\n </div>\n )}\n {/* Placeholder element for columns without filters when table has filters. Its only used within the drag overlay */}\n {tableHasFilters && !hasFilter && !isCheckBox && !isRadiobutton && overlayActive && (\n <div className={cx(`${rootClassName}__filter-placeholder`)}></div>\n )}\n </div>\n </div>\n </th>\n </>\n );\n};\n\ntype HeaderContentProps<TData> = {\n header: Header<TData, unknown>;\n tanstackTable: Table<TData>;\n canSort: boolean | undefined;\n isCheckBox: boolean;\n isRadiobutton: boolean;\n};\n\nconst HeaderContent = <TData extends RowData>({\n header,\n tanstackTable,\n canSort,\n isCheckBox,\n isRadiobutton,\n}: HeaderContentProps<TData>) => {\n if (isCheckBox) {\n return (\n <HeaderCheckBox\n id={header.id}\n tanstackTable={tanstackTable}\n aria-label={header.column.columnDef.meta?.rowSelectionAriaLabels?.header ?? \"\"}\n />\n );\n }\n\n if (isRadiobutton) {\n const ariaLabel = header.column.columnDef.meta?.rowSelectionAriaLabels?.header ?? \"\";\n return <VisuallyHidden>{ariaLabel}</VisuallyHidden>;\n }\n\n // Button should not have aria-label according to a11y audit:\n // \"Because aria-label overrides all native text inside an element, screen readers will only announce \"Sort column, button\". Blind users tabbing through the table headers will have no idea which column they are sorting.\n // Let the screen reader naturally read the visible text (\"Name\").\n // To convey the sorting state, dynamically apply the aria-sort attribute (with values ascending, descending, or none) to the parent <th> element.\"\n\n if (canSort) {\n return (\n <Button\n variant=\"text\"\n iconOnly={false}\n size=\"sm\"\n type=\"button\"\n onClick={header.column.getToggleSortingHandler()}\n className={cx(`${rootClassName}__sortable-title`)}\n >\n <HeaderParagraph header={header} />\n {getIcon(header.column.getIsSorted())}\n </Button>\n );\n }\n\n return <HeaderParagraph className={cx(`${rootClassName}__title--default`)} header={header} />;\n};\n\ntype HeaderCheckboxProps<TData> = {\n id: string;\n [\"aria-label\"]: string;\n tanstackTable: Table<TData>;\n};\n\nconst HeaderCheckBox = <TData extends RowData>({\n id,\n [\"aria-label\"]: ariaLabel,\n tanstackTable,\n}: HeaderCheckboxProps<TData>) => {\n const checked: CheckedState = tanstackTable.getIsSomeRowsSelected()\n ? \"indeterminate\"\n : tanstackTable.getIsAllPageRowsSelected();\n\n return (\n <Checkbox\n id={id}\n onChange={() => tanstackTable.toggleAllPageRowsSelected()}\n checked={checked}\n aria-label={ariaLabel}\n />\n );\n};\n\nconst HeaderParagraph = <TData extends RowData>({\n header,\n className,\n}: {\n header: Header<TData, unknown>;\n className?: string;\n}) => {\n const { showPopover, containerRef, onMouseEnter, onMouseLeave } = useTruncatedTooltip();\n const children = flexRender(header.column.columnDef.header, header.getContext());\n\n const content = (\n <div\n ref={containerRef}\n className={cx(\"purpur-table-row-cell__truncate-wrapper\")}\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}\n >\n <Paragraph\n data-testid=\"purpur-table-column-header-cell-title\"\n variant=\"paragraph-100-bold\"\n className={cx(className, \"purpur-table-row-cell__truncate\")}\n >\n {children}\n </Paragraph>\n </div>\n );\n return (\n <Tooltip\n position=\"top\"\n align=\"center\"\n triggerElement={content}\n // @ts-expect-error open does not exist on tooltip but gets passed down to radix tooltip with ...props\n open={showPopover}\n contentClassName={cx(\"purpur-table-row-cell__tooltip-content\")}\n >\n {children}\n </Tooltip>\n );\n};\n\nconst getIcon = (sortingDirection: SortDirection | false) => {\n switch (sortingDirection) {\n case \"desc\":\n return <IconArrowDown size=\"xs\" className={cx(`${rootClassName}__sortable-icon`)} />;\n case \"asc\":\n return <IconArrowUp size=\"xs\" className={cx(`${rootClassName}__sortable-icon`)} />;\n case false:\n default:\n return <IconSorter size=\"xs\" className={cx(`${rootClassName}__sortable-icon`)} />;\n }\n};\n\nconst Filter = <TData extends RowData>({ header }: { header: Header<TData, unknown> }) => {\n const { filterVariant, filterKey, filterPlaceholder, filterAriaLabel } =\n header.column.columnDef.meta ?? {};\n\n if (filterVariant === \"string\") {\n const columnFilterValue = filterKey\n ? (header.column.getFilterValue() as {\n filterKey: string;\n value: string;\n })\n : (header.column.getFilterValue() as string);\n\n // Since the filter textbox have no label, it MUST have an aria-label for accessibility.\n // Placeholder is NOT sufficient as per a11y audit:\n // \"Placeholders are not a reliable way to provide an accessible name for form inputs.\n // They are often ignored by older assistive technologies, fail contrast requirements, and disappear when the user begins typing.\"\n\n return (\n <TextField\n onChange={(event) => {\n const filter = filterKey\n ? { filterKey, value: event.target.value, partialMatch: true }\n : event.target.value;\n header.column.setFilterValue(filter);\n }}\n type=\"text\"\n value={\n (typeof columnFilterValue === \"object\" && \"value\" in columnFilterValue\n ? columnFilterValue.value\n : columnFilterValue) ?? \"\"\n }\n placeholder={filterPlaceholder}\n aria-label={filterAriaLabel ?? filterPlaceholder}\n startAdornment={\n <IconSearch\n className={cx(`${rootClassName}__filter-start-adornment`)}\n key=\"search-icon\"\n size=\"xs\"\n />\n }\n />\n );\n }\n\n if (filterVariant === \"select\") {\n const columnFilterValue = header.column.getFilterValue() as {\n filterKey: string;\n value: string;\n };\n const selectProps = header.column.columnDef.meta?.selectProps as SelectProps;\n return (\n <Select\n {...selectProps}\n onChange={(event) => {\n const filter = filterKey ? { filterKey, value: event.target.value } : event.target.value;\n header.column.setFilterValue(filter);\n }}\n value={columnFilterValue?.value ?? \"\"}\n />\n );\n }\n\n return null;\n};\n","import React, { type ReactNode } from \"react\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./table.module.scss\";\nconst cx = c.bind(styles);\n\ntype TableHeaderProps = {\n [\"data-testid\"]?: string;\n children: ReactNode;\n className?: string;\n columnFiltersEnabled: boolean;\n};\n\nconst rootClassName = \"purpur-table-header\";\n\nexport const TableHeader = ({\n children,\n className,\n columnFiltersEnabled,\n ...props\n}: TableHeaderProps) => {\n const classes = cx(className, rootClassName, {\n [`${rootClassName}--has-filters`]: columnFiltersEnabled,\n });\n\n return (\n <thead className={classes} {...props}>\n {children}\n </thead>\n );\n};\n","import React, { type ReactNode } from \"react\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./table.module.scss\";\nconst cx = c.bind(styles);\n\ntype TableRowProps = {\n [\"data-testid\"]?: string;\n children: ReactNode;\n className?: string;\n isSelected?: boolean;\n};\n\nconst rootClassName = \"purpur-table-row\";\n\nexport const TableRow = ({\n children,\n className,\n [\"data-testid\"]: dataTestId,\n isSelected,\n}: TableRowProps) => (\n <tr\n data-testid={dataTestId}\n className={cx(className, rootClassName, { [`${rootClassName}--selected`]: isSelected })}\n >\n {children}\n </tr>\n);\n","import React from \"react\";\nimport { Paragraph } from \"@purpur/paragraph\";\n\nexport const EmptyCell = () => {\n return <Paragraph>-</Paragraph>;\n};\n","import React from \"react\";\nimport { Badge, type BadgeProps } from \"@purpur/badge\";\nimport { type Cell, type RowData } from \"@tanstack/react-table\";\n\nimport { EmptyCell } from \"./empty-cell\";\n\nexport type BadgeCellProps<TData> = {\n cell: Cell<TData, unknown>;\n};\n\nexport const BadgeCell = <TData extends RowData>({ cell }: BadgeCellProps<TData>) => {\n const value = cell.getValue<BadgeProps>();\n\n if (!value) {\n return <EmptyCell />;\n }\n\n const { variant, children, ...props } = value;\n\n return (\n <Badge variant={variant} {...props}>\n {children}\n </Badge>\n );\n};\n","import React from \"react\";\nimport { Paragraph } from \"@purpur/paragraph\";\nimport { Tooltip } from \"@purpur/tooltip\";\nimport { type Cell, type RowData } from \"@tanstack/react-table\";\nimport c from \"classnames/bind\";\n\nimport styles from \"../table.module.scss\";\nimport useTruncatedTooltip from \"../use-truncated-hook\";\nimport { pxToRemString } from \"../utils/unit-conversions\";\nimport { EmptyCell } from \"./empty-cell\";\nconst cx = c.bind(styles);\n\nexport type BodyTextCellProps<TData> = {\n cell: Cell<TData, unknown>;\n};\n\nexport const BodyTextCell = <TData extends RowData>({ cell }: BodyTextCellProps<TData>) => {\n const value = cell.getValue<string>();\n const { showPopover, containerRef, onMouseEnter, onMouseLeave } = useTruncatedTooltip();\n\n if (value === null || value === undefined || value === \"\") {\n return <EmptyCell />;\n }\n\n const minWidthInRemString = pxToRemString(cell.column.getSize());\n\n const content = (\n <div\n ref={containerRef}\n className={cx(\"purpur-table-row-cell__truncate-wrapper\")}\n style={{\n minWidth: minWidthInRemString,\n }}\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}\n >\n <Paragraph className={cx(\"purpur-table-row-cell__truncate\")}>{value}</Paragraph>\n </div>\n );\n\n return (\n <Tooltip\n position=\"top\"\n align=\"center\"\n triggerElement={content}\n // @ts-expect-error open does not exist on tooltip but gets passed down to radix tooltip with ...props\n open={showPopover}\n contentClassName={cx(\"purpur-table-row-cell__tooltip-content\")}\n >\n {value}\n </Tooltip>\n );\n};\n","import React from \"react\";\nimport { Button, type ButtonProps } from \"@purpur/button\";\nimport { type Cell, type RowData } from \"@tanstack/react-table\";\n\nimport { EmptyCell } from \"./empty-cell\";\n\nexport type ButtonCellProps<TData> = {\n cell: Cell<TData, unknown>;\n};\n\nexport const ButtonCell = <TData extends RowData>({ cell }: ButtonCellProps<TData>) => {\n const buttonProps = (cell.row.original as Record<string, ButtonProps>)[cell.column.id];\n\n if (buttonProps === undefined || buttonProps === null) {\n return <EmptyCell />;\n }\n const metaOnClick = cell.column.columnDef.meta?.onClick;\n\n const { children, ...restButtonProps } = buttonProps;\n\n return (\n <Button type=\"button\" onClick={() => metaOnClick?.(cell)} size=\"sm\" {...restButtonProps}>\n {children}\n </Button>\n );\n};\n","import React, { type ReactElement } from \"react\";\nimport { Button, type ButtonProps } from \"@purpur/button\";\nimport { type IconProps } from \"@purpur/icon\";\nimport { type Cell, type RowData } from \"@tanstack/react-table\";\nimport c from \"classnames/bind\";\n\nimport styles from \"../table.module.scss\";\nimport { EmptyCell } from \"./empty-cell\";\nconst cx = c.bind(styles);\n\ntype IconOnlyButtonVariant = Extract<ButtonProps, { iconOnly: true }>[\"variant\"];\n\nexport type ButtonGroupButtonProp = {\n id: string;\n ariaLabel: string;\n variant: IconOnlyButtonVariant;\n icon: ReactElement<IconProps>;\n};\n\nexport type ButtonGroupCellProps<TData> = {\n cell: Cell<TData, unknown>;\n};\n\nexport const ButtonGroupCell = <TData extends RowData>({ cell }: ButtonGroupCellProps<TData>) => {\n const buttons = (cell.row.original as Record<string, ButtonGroupButtonProp[]>)[cell.column.id];\n\n if (!buttons || !Array.isArray(buttons) || buttons.length === 0) {\n return <EmptyCell />;\n }\n\n return (\n <div className={cx(\"purpur-table-row-cell__button-group\")}>\n {buttons.map((props, index) => {\n const { icon, ariaLabel, variant, ...restProps } = props;\n return (\n <Button\n key={props.id || `button-${index}`}\n iconOnly\n aria-label={ariaLabel}\n variant={variant}\n type=\"button\"\n onClick={() => {\n cell.column.columnDef.meta?.onClick?.({\n ...cell,\n buttonId: `${cell.id}_${props.id}`,\n });\n }}\n {...restProps}\n >\n {icon}\n </Button>\n );\n })}\n </div>\n );\n};\n","import React from \"react\";\nimport { CtaLink, type CtaLinkProps } from \"@purpur/cta-link\";\nimport { type Cell, type RowData } from \"@tanstack/react-table\";\n\nimport { EmptyCell } from \"./empty-cell\";\n\nexport type CtaLinkCellProps<TData> = {\n cell: Cell<TData, unknown>;\n};\n\nexport const CtaLinkCell = <TData extends RowData>({ cell }: CtaLinkCellProps<TData>) => {\n const value = cell.getValue<CtaLinkProps>();\n\n if (!value) {\n return <EmptyCell />;\n }\n\n const { variant, children, ...props } = value;\n\n return (\n <CtaLink variant={variant} {...props}>\n {children}\n </CtaLink>\n );\n};\n","import React from \"react\";\nimport { Paragraph } from \"@purpur/paragraph\";\nimport { type Cell, type RowData } from \"@tanstack/react-table\";\nimport c from \"classnames/bind\";\n\nimport styles from \"../table.module.scss\";\nimport { EmptyCell } from \"./empty-cell\";\nconst cx = c.bind(styles);\n\nexport type DateCellProps<TData> = {\n cell: Cell<TData, unknown>;\n};\n\nexport const DateCell = <TData extends RowData>({ cell }: DateCellProps<TData>) => {\n const dateString = cell.getValue<string>();\n\n if (!dateString) {\n return <EmptyCell />;\n }\n\n const showTime = cell.column.columnDef.meta?.showTime ?? true;\n\n const dateObj = new Date(dateString);\n const date = dateObj.toLocaleDateString(\"sv-SE\");\n const time = dateObj.toLocaleTimeString(\"sv-SE\", { hour: \"2-digit\", minute: \"2-digit\" });\n\n return (\n <Paragraph className={cx(\"purpur-table-row-cell__date\")}>\n {date}\n <span>{showTime ? ` ${time}` : null}</span>\n </Paragraph>\n );\n};\n","import { jsx as o } from \"react/jsx-runtime\";\nimport { I as l } from \"../icon-DNHpBTHs.mjs\";\nconst e = {\n name: \"error\",\n svg: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path fill-rule=\"evenodd\" d=\"M10.354 3.05c.732-1.267 2.56-1.267 3.291 0l8.66 15c.732 1.267-.182 2.85-1.645 2.85H3.34c-1.463 0-2.377-1.583-1.646-2.85l8.66-15Zm1.595.862a.092.092 0 0 0-.036.038l-8.66 15a.092.092 0 0 0-.015.05c0 .014.005.032.015.05a.11.11 0 0 0 .036.038.09.09 0 0 0 .05.012H20.66a.088.088 0 0 0 .05-.012.106.106 0 0 0 .037-.038.105.105 0 0 0 .015-.05.092.092 0 0 0-.015-.05l-8.66-15a.092.092 0 0 0-.036-.038A.106.106 0 0 0 12 3.9a.105.105 0 0 0-.05.012Z\" clip-rule=\"evenodd\"/><path d=\"m12.523 14.922.412-6.25a.936.936 0 1 0-1.868 0l.421 6.25h1.035ZM12 17.52c.44 0 .826-.387.826-.815 0-.418-.387-.816-.826-.816-.428 0-.825.398-.825.816 0 .428.397.815.825.815Z\"/><path fill-rule=\"evenodd\" d=\"M12.691 15.096h-1.37l-.431-6.53a1 1 0 0 1 .997-1.066h.227a1 1 0 0 1 .998 1.064l-.42 6.532Zm.244-6.425a.936.936 0 1 0-1.868.002l.421 6.249h1.035l.412-6.25ZM13 16.706c0 .526-.466.99-1 .99-.522 0-1-.463-1-.99 0-.264.125-.51.304-.689.18-.178.429-.301.696-.301.536 0 1 .475 1 .99Zm-.174 0c0 .428-.387.815-.826.815-.428 0-.825-.387-.825-.815 0-.418.397-.816.825-.816.44 0 .826.398.826.816Z\" clip-rule=\"evenodd\"/></svg>',\n keywords: [\"error\"],\n category: \"status\"\n}, a = (r) => /* @__PURE__ */ o(l, { ...r, svg: e });\na.displayName = \"IconError\";\nexport {\n a as IconError\n};\n//# sourceMappingURL=error.es.js.map\n","import React from \"react\";\nimport { IconError } from \"@purpur/icon/error\";\nimport { Paragraph } from \"@purpur/paragraph\";\nimport { type Cell, type RowData } from \"@tanstack/react-table\";\nimport c from \"classnames/bind\";\n\nimport styles from \"../table.module.scss\";\nimport { EmptyCell } from \"./empty-cell\";\nconst cx = c.bind(styles);\n\nexport type ErrorAlertMessageProps<TData> = {\n cell: Cell<TData, unknown>;\n};\n\nexport const ErrorAlertMessageCell = <TData extends RowData>({\n cell,\n}: ErrorAlertMessageProps<TData>) => {\n const message = cell.getValue<string>();\n\n if (!message) {\n return <EmptyCell />;\n }\n\n return (\n <div className={cx(\"purpur-table-row-cell__error-message\")}>\n <IconError data-testid=\"error-icon\" />\n <Paragraph>{message}</Paragraph>\n </div>\n );\n};\n","import React from \"react\";\nimport { type Cell, type RowData } from \"@tanstack/react-table\";\nimport c from \"classnames/bind\";\n\nimport styles from \"../table.module.scss\";\nimport { EmptyCell } from \"./empty-cell\";\nconst cx = c.bind(styles);\n\nexport type IconTextCellProps<TData> = {\n cell: Cell<TData, unknown>;\n};\n\ntype CellValue = { icon: React.ReactNode; text?: string };\n\nexport const IconTextCell = <TData extends RowData>({ cell }: IconTextCellProps<TData>) => {\n const value = cell.getValue<CellValue>();\n\n if (!value) {\n return <EmptyCell />;\n }\n\n const { icon, text } = value;\n\n return (\n <div className={cx(\"purpur-table-row-cell__icon-text\")}>\n {icon}\n {text && text}\n </div>\n );\n};\n","import React from \"react\";\nimport { Paragraph } from \"@purpur/paragraph\";\nimport { type Cell, type RowData } from \"@tanstack/react-table\";\n\nimport { EmptyCell } from \"./empty-cell\";\n\nexport type LeadTextCellProps<TData> = {\n cell: Cell<TData, unknown>;\n};\n\nexport const LeadTextCell = <TData extends RowData>({ cell }: LeadTextCellProps<TData>) => {\n const value = cell.getValue<string>();\n\n if (value === null || value === undefined || value === \"\") {\n return <EmptyCell />;\n }\n\n return <Paragraph variant=\"paragraph-100-bold\">{value}</Paragraph>;\n};\n","import React from \"react\";\nimport { Link, type LinkProps } from \"@purpur/link\";\nimport { Tooltip } from \"@purpur/tooltip\";\nimport { type Cell, type RowData } from \"@tanstack/react-table\";\nimport c from \"classnames/bind\";\n\nimport styles from \"../table.module.scss\";\nimport useTruncatedTooltip from \"../use-truncated-hook\";\nimport { pxToRemString } from \"../utils/unit-conversions\";\nimport { EmptyCell } from \"./empty-cell\";\nconst cx = c.bind(styles);\n\nexport type LinkCellProps<TData> = {\n cell: Cell<TData, unknown>;\n};\n\nexport const LinkCell = <TData extends RowData>({ cell }: LinkCellProps<TData>) => {\n const value = cell.getValue<LinkProps>();\n const { hasPopover, showPopover, containerRef, onMouseEnter, onMouseLeave } =\n useTruncatedTooltip();\n\n if (!value) {\n return <EmptyCell />;\n }\n\n const { children, href, variant, ...props } = value;\n\n const widthInRemString = pxToRemString(cell.column.getSize());\n\n const content = (\n <div\n ref={containerRef}\n className={cx(\"purpur-table-row-cell__truncate-wrapper\")}\n style={{\n minWidth: widthInRemString,\n }}\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}\n >\n <Link\n className={cx(\"purpur-table-row-cell__truncate\", \"purpur-table-row-cell__link\", {\n \"purpur-table-row-cell__link--has-popover\": hasPopover,\n })}\n variant={variant ?? \"text\"}\n href={href}\n onClick={(e) => {\n // Stop event propagation to prevent Tooltip from blocking link navigation\n e.stopPropagation();\n }}\n {...props}\n >\n {children}\n </Link>\n </div>\n );\n return (\n <Tooltip\n position=\"top\"\n align=\"center\"\n triggerElement={content}\n // @ts-expect-error open does not exist on tooltip but gets passed down to radix tooltip with ...props\n open={showPopover}\n contentClassName={cx(\"purpur-table-row-cell__tooltip-content\")}\n >\n {children}\n </Tooltip>\n );\n};\n","import React from \"react\";\nimport { Paragraph } from \"@purpur/paragraph\";\nimport { type Cell, type RowData } from \"@tanstack/react-table\";\nimport c from \"classnames/bind\";\n\nimport styles from \"../table.module.scss\";\nimport { EmptyCell } from \"./empty-cell\";\nconst cx = c.bind(styles);\n\nexport type NumberCellProps<TData> = {\n cell: Cell<TData, unknown>;\n};\n\nexport const NumberCell = <TData extends RowData>({ cell }: NumberCellProps<TData>) => {\n const text = cell.getValue<string | number>();\n const rightAlignCell = cell.column.columnDef.meta?.numberCellAlignment === \"right\";\n\n if (!text && text !== 0) {\n return <EmptyCell />;\n }\n\n return (\n <Paragraph className={cx({ \"purpur-table-row-cell__right-align\": rightAlignCell })}>\n {text}\n </Paragraph>\n );\n};\n","import React from \"react\";\nimport { Checkbox } from \"@purpur/checkbox\";\nimport { type Cell, type RowData } from \"@tanstack/react-table\";\nimport c from \"classnames/bind\";\n\nimport styles from \"../table.module.scss\";\nconst cx = c.bind(styles);\n\nexport type RowSelectionCellProps<TData extends RowData> = {\n cell: Cell<TData, unknown>;\n};\n\nexport const RowSelectionCell = <TData extends RowData>({ cell }: RowSelectionCellProps<TData>) => (\n <Checkbox\n id={cell.id}\n className={cx(\"purpur-table-row-cell__row-selection\")}\n onChange={cell.row.getToggleSelectedHandler()}\n checked={cell.row.getIsSelected()}\n disabled={!cell.row.getCanSelect()}\n aria-label={cell.column.columnDef.meta?.rowSelectionAriaLabels?.row}\n />\n);\n","import React from \"react\";\nimport { type Cell, type RowData } from \"@tanstack/react-table\";\nimport c from \"classnames/bind\";\n\nimport styles from \"../table.module.scss\";\nconst cx = c.bind(styles);\n\nexport type RowToggleCellProps<TData extends RowData> = {\n cell: Cell<TData, unknown>;\n};\n\nexport const RowToggleCell = <TData extends RowData>({ cell }: RowToggleCellProps<TData>) => (\n <input\n id={cell.id}\n className={cx(\"purpur-table-row-cell__row-toggle\")}\n type=\"radio\"\n onChange={cell.row.getToggleSelectedHandler()}\n checked={cell.row.getIsSelected()}\n aria-checked={cell.row.getIsSelected()}\n disabled={!cell.row.getCanSelect()}\n aria-label={cell.column.columnDef.meta?.rowSelectionAriaLabels?.row}\n />\n);\n","import React from \"react\";\nimport { Toggle, type ToggleProps } from \"@purpur/toggle\";\nimport { type Cell, type RowData } from \"@tanstack/react-table\";\n\nimport { EmptyCell } from \"./empty-cell\";\n\nexport type ToggleCellProps<TData> = {\n cell: Cell<TData, unknown>;\n};\n\nexport const ToggleCell = <TData extends RowData>({ cell }: ToggleCellProps<TData>) => {\n const toggleProps = cell.getValue<ToggleProps>();\n\n if (!toggleProps) {\n return <EmptyCell />;\n }\n\n return <Toggle {...toggleProps} />;\n};\n","import { jsx as o } from \"react/jsx-runtime\";\nimport { I as r } from \"../icon-DNHpBTHs.mjs\";\nconst t = {\n name: \"alert\",\n svg: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"m13.038 7.067-.247 6.876h-1.566l-.247-6.876a1.03 1.03 0 1 1 2.06 0Zm.212 8.917c0 .649-.586 1.234-1.25 1.234-.649 0-1.25-.585-1.25-1.234 0-.633.601-1.234 1.25-1.234.664 0 1.25.601 1.25 1.234Z\"/><path fill-rule=\"evenodd\" d=\"M22 12c0 5.523-4.477 10-10 10S2 17.523 2 12 6.477 2 12 2s10 4.477 10 10Zm-1.75 0a8.25 8.25 0 1 1-16.5 0 8.25 8.25 0 0 1 16.5 0Z\" clip-rule=\"evenodd\"/></svg>',\n keywords: [\"alert\"],\n category: \"status\"\n}, l = (e) => /* @__PURE__ */ o(r, { ...e, svg: t });\nl.displayName = \"IconAlert\";\nexport {\n l as IconAlert\n};\n//# sourceMappingURL=alert.es.js.map\n","import React from \"react\";\nimport { IconAlert } from \"@purpur/icon/alert\";\nimport { Paragraph } from \"@purpur/paragraph\";\nimport { type Cell, type RowData } from \"@tanstack/react-table\";\nimport c from \"classnames/bind\";\n\nimport styles from \"../table.module.scss\";\nimport { EmptyCell } from \"./empty-cell\";\nconst cx = c.bind(styles);\n\nexport type WarningAlertMessageProps<TData> = {\n cell: Cell<TData, unknown>;\n};\n\nexport const WarningAlertMessageCell = <TData extends RowData>({\n cell,\n}: WarningAlertMessageProps<TData>) => {\n const message = cell.getValue<string>();\n\n if (!message) {\n return <EmptyCell />;\n }\n\n return (\n <div className={cx(\"purpur-table-row-cell__warning-message\")}>\n <IconAlert data-testid=\"alert-icon\" />\n <Paragraph>{message}</Paragraph>\n </div>\n );\n};\n","import React, { useRef } from \"react\";\nimport { type Cell, flexRender, type RowData } from \"@tanstack/react-table\";\nimport c from \"classnames/bind\";\n\nimport { BadgeCell } from \"./cell-types/badge-cell\";\nimport { BodyTextCell } from \"./cell-types/body-text-cell\";\nimport { ButtonCell } from \"./cell-types/button-cell\";\nimport { ButtonGroupCell } from \"./cell-types/button-group-cell\";\nimport { CtaLinkCell } from \"./cell-types/cta-link-cell\";\nimport { DateCell } from \"./cell-types/date-cell\";\nimport { ErrorAlertMessageCell } from \"./cell-types/error-message-cell\";\nimport { IconTextCell } from \"./cell-types/icon-text-cell\";\nimport { LeadTextCell } from \"./cell-types/lead-text-cell\";\nimport { LinkCell } from \"./cell-types/link-cell\";\nimport { NumberCell } from \"./cell-types/number-cell\";\nimport { RowSelectionCell } from \"./cell-types/row-selection-cell\";\nimport { RowToggleCell } from \"./cell-types/row-toggle-cell\";\nimport { ToggleCell } from \"./cell-types/toggle-cell\";\nimport { WarningAlertMessageCell } from \"./cell-types/warning-message-cell\";\nimport styles from \"./table.module.scss\";\nimport { useDropIndicator } from \"./use-drop-indicator.hook\";\nimport { useElementVisibility } from \"./use-element-visibility.hook\";\n\nconst cx = c.bind(styles);\n\ntype EmptyTableCell = {\n cell?: never;\n children: React.ReactNode;\n};\n\ntype TableRowCell<TData extends RowData> = {\n cell: Cell<TData, unknown>;\n children?: never;\n};\n\ntype TableRowCellProps<TData extends RowData> = {\n [\"data-testid\"]?: string;\n className?: string;\n stickyColumn?: boolean;\n colSpan?: number;\n isScrolled?: boolean;\n showBorder?: boolean;\n isLastRow: boolean;\n isFirstCell: boolean;\n isLastCell: boolean;\n enableColumnDrag: boolean;\n draggingActive?: boolean;\n isEmptyTable?: boolean;\n} & (EmptyTableCell | TableRowCell<TData>);\n\nconst rootClassName = \"purpur-table-row-cell\";\n\nconst TableRowCell = <TData extends RowData>({\n cell,\n className,\n [\"data-testid\"]: dataTestId,\n stickyColumn,\n children,\n colSpan = 1,\n isScrolled,\n showBorder,\n isLastRow,\n isFirstCell,\n isLastCell,\n enableColumnDrag,\n draggingActive,\n isEmptyTable,\n}: TableRowCellProps<TData>) => {\n const elementRef = useRef<HTMLTableCellElement | null>(null);\n const isVisible = useElementVisibility(elementRef, 1);\n\n // Get the column ID\n const columnId = cell?.column.id;\n\n // Use the drop indicator hook\n const dropIndicatorPosition = useDropIndicator({\n itemId: columnId,\n sortableId: columnId, // Use column ID for consistency\n enableDrag: !!enableColumnDrag,\n });\n\n // We no longer render a portal-based line indicator for body cells.\n // Pseudo-elements (::before/::after) controlled via modifier classes provide the visual line.\n // Row-level drag indicators (if implemented separately) can be re-added here in the future.\n\n const isRowSelector =\n cell?.column.columnDef.meta?.cellType === \"rowSelection\" ||\n cell?.column.columnDef.meta?.cellType === \"rowToggle\";\n\n const classes = cx(className, rootClassName, {\n [`${rootClassName}__sticky-column`]: stickyColumn,\n [`${rootClassName}__sticky-column__with-sticky-border`]: isScrolled && showBorder,\n [`${rootClassName}__border-radius-first-cell`]: isFirstCell && isLastRow,\n [`${rootClassName}__border-radius-last-cell`]: isLastCell && isLastRow,\n [`${rootClassName}__last-row-first-cell-visible`]:\n (cell?.column.getIsFirstColumn() || isFirstCell) && isVisible && isLastRow,\n [`${rootClassName}__last-row-last-cell-visible`]:\n (cell?.column.getIsLastColumn() || isLastCell) && isVisible && isLastRow,\n [`${rootClassName}__column-drag-enabled`]: enableColumnDrag,\n [`${rootClassName}__dragging`]: draggingActive,\n [`${rootClassName}__empty-table`]: isEmptyTable,\n [`${rootClassName}--drop-indicator-before`]:\n !isRowSelector && dropIndicatorPosition === \"before\",\n [`${rootClassName}--drop-indicator-after`]: !isRowSelector && dropIndicatorPosition === \"after\",\n });\n\n const cellContent = cell ? getCellContent(cell) : children;\n\n return (\n <>\n <td\n ref={elementRef}\n data-testid={dataTestId}\n className={classes}\n key={cell?.column.columnDef?.id}\n colSpan={colSpan}\n >\n {cellContent}\n </td>\n </>\n );\n};\n\nexport { TableRowCell };\n\nconst getCellContent = <TData extends RowData>(cell: Cell<TData, unknown>) => {\n const { cellType } = cell.column.columnDef.meta ?? {};\n\n const content = (() => {\n switch (cellType) {\n case \"badge\":\n return <BadgeCell cell={cell} />;\n case \"bodyText\":\n return <BodyTextCell cell={cell} />;\n case \"button\":\n return <ButtonCell cell={cell} />;\n case \"buttonGroup\":\n return <ButtonGroupCell cell={cell} />;\n case \"ctaLink\":\n return <CtaLinkCell cell={cell} />;\n case \"date\":\n return <DateCell cell={cell} />;\n case \"errorAlertMessage\":\n return <ErrorAlertMessageCell cell={cell} />;\n case \"iconText\":\n return <IconTextCell cell={cell} />;\n case \"leadText\":\n return <LeadTextCell cell={cell} />;\n case \"link\":\n return <LinkCell cell={cell} />;\n case \"number\":\n return <NumberCell cell={cell} />;\n case \"rowSelection\":\n return <RowSelectionCell cell={cell} />;\n case \"rowToggle\":\n return <RowToggleCell cell={cell} />;\n case \"toggle\":\n return <ToggleCell cell={cell} />;\n case \"warningAlertMessage\":\n return <WarningAlertMessageCell cell={cell} />;\n default:\n return flexRender(cell.column.columnDef.cell, cell.getContext());\n }\n })();\n\n return content;\n};\n","import { KeyboardCode, type KeyboardCoordinateGetter } from \"@dnd-kit/core\";\n\n/**\n * Simple keyboard coordinate handler that moves the drag overlay\n * left or right incrementally and lets collision detection determine\n * which column we're over.\n */\nexport const enhancedColumnKeyboardCoordinates: KeyboardCoordinateGetter = (\n event,\n { currentCoordinates, context: { active, droppableRects } }\n) => {\n if (!active || !currentCoordinates) {\n return;\n }\n\n // Only handle left/right movements\n if (event.code !== KeyboardCode.Right && event.code !== KeyboardCode.Left) {\n return;\n }\n\n event.preventDefault();\n\n // Get the active column's width to determine appropriate step size\n const activeRect = droppableRects.get(active.id);\n if (!activeRect) {\n return;\n }\n\n // Move by half the width of the active column or max 100px\n const stepSize = Math.min(activeRect.width * 0.5, 100);\n\n let newX: number;\n\n if (event.code === KeyboardCode.Right) {\n newX = currentCoordinates.x + stepSize;\n } else {\n newX = currentCoordinates.x - stepSize;\n }\n\n return {\n x: newX,\n y: currentCoordinates.y,\n };\n};\n","import React from \"react\";\nimport {\n closestCenter,\n DndContext,\n type DragEndEvent,\n DragOverlay,\n type DragStartEvent,\n KeyboardSensor,\n MeasuringStrategy,\n PointerSensor,\n TouchSensor,\n type UniqueIdentifier,\n useSensor,\n useSensors,\n} from \"@dnd-kit/core\";\nimport { restrictToHorizontalAxis } from \"@dnd-kit/modifiers\";\nimport { purpurMotionDuration150, purpurMotionEasingEaseInOut } from \"@purpur/tokens\";\nimport { type Row, type RowData, type Table } from \"@tanstack/react-table\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./table.module.scss\";\nimport { TableBody } from \"./table-body\";\nimport { TableColumnHeaderCell } from \"./table-column-header-cell\";\nimport { TableHeader } from \"./table-header\";\nimport { TableRow } from \"./table-row\";\nimport { TableRowCell } from \"./table-row-cell\";\nimport { enhancedColumnKeyboardCoordinates } from \"./utils/custom-keyboard-coordinates\";\n\nconst cx = c.bind(styles);\n\nexport interface ColumnDragAriaLabelsCopy {\n grab: string;\n grabbing: string;\n}\n\nexport interface DraggableTableProps<TData extends RowData = RowData> {\n children: React.ReactNode;\n activeId: UniqueIdentifier | null;\n setActiveId: React.Dispatch<React.SetStateAction<UniqueIdentifier | null>>;\n handleDragEnd: (event: DragEndEvent) => void;\n tableRows: Row<TData>[];\n tanstackTable: Table<TData>;\n variant: string;\n fullWidth: boolean;\n showColumnFiltersEnabled: boolean;\n columnDragAriaLabelsCopy: ColumnDragAriaLabelsCopy;\n rootClassName: string;\n}\n\nexport const DraggableTable = <TData extends RowData = RowData>({\n children,\n activeId,\n setActiveId,\n handleDragEnd,\n tableRows,\n tanstackTable,\n variant,\n fullWidth,\n showColumnFiltersEnabled,\n columnDragAriaLabelsCopy,\n rootClassName,\n}: DraggableTableProps<TData>): React.ReactElement => {\n const sensors = useSensors(\n useSensor(PointerSensor, {\n activationConstraint: {\n distance: 8,\n },\n }),\n useSensor(KeyboardSensor, {\n coordinateGetter: enhancedColumnKeyboardCoordinates,\n }),\n useSensor(TouchSensor, {})\n );\n\n const handleDragStart = (event: DragStartEvent) => {\n const { active } = event;\n setActiveId(active.id);\n };\n\n const handleDragCancel = () => {\n setActiveId(null);\n };\n\n return (\n <DndContext\n sensors={sensors}\n collisionDetection={closestCenter}\n onDragStart={handleDragStart}\n onDragEnd={handleDragEnd}\n onDragCancel={handleDragCancel}\n modifiers={[restrictToHorizontalAxis]}\n measuring={{\n droppable: {\n strategy: MeasuringStrategy.Always,\n },\n }}\n >\n {children}\n\n <DragOverlay\n dropAnimation={{\n duration: Number(purpurMotionDuration150),\n easing: purpurMotionEasingEaseInOut,\n }}\n adjustScale={false}\n >\n {activeId && activeId !== \"row-selection\" && activeId !== \"row-toggle\" ? (\n <div\n className={cx([`purpur-table__drag-overlay`, `purpur-table__drag-overlay--${variant}`])}\n aria-hidden=\"true\"\n >\n <table\n className={cx([\n `${rootClassName}__table`,\n { [`${rootClassName}__table--full-width`]: fullWidth },\n ])}\n role=\"presentation\"\n aria-hidden=\"true\"\n >\n <TableHeader columnFiltersEnabled={showColumnFiltersEnabled}>\n {tanstackTable.getHeaderGroups().map((headerGroup) => (\n <TableRow key={headerGroup.id}>\n {headerGroup.headers\n .filter((h) => h.id === activeId)\n .map((header) => (\n <TableColumnHeaderCell\n key={header.id}\n header={header}\n tanstackTable={tanstackTable}\n tableHasFilters={showColumnFiltersEnabled}\n stickyColumn={false}\n isScrolled={false}\n showBorder={false}\n enableSorting={false}\n overlayActive={true}\n enableColumnDrag={true}\n columnDragAriaLabel={columnDragAriaLabelsCopy.grab}\n />\n ))}\n </TableRow>\n ))}\n </TableHeader>\n <TableBody>\n {tableRows.map((row) => (\n <TableRow key={row.id} isSelected={false}>\n {row\n .getVisibleCells()\n .filter((cell) => cell.column.id === activeId)\n .map((cell) => (\n <TableRowCell\n key={cell.id}\n cell={cell}\n isLastRow={row.id === tableRows[tableRows.length - 1].id}\n isFirstCell={true}\n isLastCell={true}\n stickyColumn={false}\n isScrolled={false}\n showBorder={false}\n enableColumnDrag={true}\n />\n ))}\n </TableRow>\n ))}\n </TableBody>\n </table>\n {/* Live region for drag status updates (outside aria-hidden scope) */}\n <span\n aria-live=\"polite\"\n style={{\n position: \"absolute\",\n width: 1,\n height: 1,\n margin: -1,\n padding: 0,\n border: 0,\n clip: \"rect(0 0 0 0)\",\n overflow: \"hidden\",\n }}\n >\n {activeId ? columnDragAriaLabelsCopy.grabbing : \"\"}\n </span>\n </div>\n ) : null}\n </DragOverlay>\n </DndContext>\n );\n};\n","import { useLayoutEffect, useState } from \"react\";\nimport { purpurBreakpointRelativeLg } from \"@purpur/tokens\";\n\nexport const SCREEN_MEDIA_QUERY = {\n MAX_LG: `(max-width: ${purpurBreakpointRelativeLg})`,\n} as const;\n\nexport const useScreenSize = () => {\n const [isLgOrSmaller, setIsLgOrSmaller] = useState(false);\n\n useLayoutEffect(() => {\n const maxMediumScreen = window.matchMedia(SCREEN_MEDIA_QUERY.MAX_LG);\n function updateSize() {\n setIsLgOrSmaller(maxMediumScreen.matches);\n }\n\n window.addEventListener(\"resize\", updateSize);\n updateSize();\n return () => window.removeEventListener(\"resize\", updateSize);\n }, []);\n\n return { isLgOrSmaller };\n};\n","import React, { useId } from \"react\";\nimport { Button } from \"@purpur/button\";\nimport { Paragraph } from \"@purpur/paragraph\";\nimport { Toggle } from \"@purpur/toggle\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./table-action-bar.module.scss\";\nimport { useScreenSize } from \"./use-screen-size.hook\";\n\nexport type TableActionBarCopyProps = {\n buttons: {\n cancel: string;\n primary: string;\n secondary?: string;\n toggleSelected: string;\n };\n selectedRowsCount: {\n of: string;\n selected: string;\n };\n};\n\nexport type TableActionBarProps = {\n rowCount: number;\n selectedRowsCount: number;\n copy: TableActionBarCopyProps;\n isVisible: boolean;\n onCancelSelection: () => void;\n onToggleSelected: () => void;\n onPrimaryButtonClick: () => void;\n onSecondaryButtonClick?: () => void;\n};\n\nconst rootClassName = \"purpur-table-action-bar\";\nconst cx = c.bind(styles);\nconst rootTestId = \"purpur-table-action-bar\";\n\nexport const TableActionBar = ({\n rowCount,\n selectedRowsCount,\n copy,\n isVisible,\n onCancelSelection,\n onToggleSelected,\n onPrimaryButtonClick,\n onSecondaryButtonClick,\n}: TableActionBarProps) => {\n const { isLgOrSmaller } = useScreenSize();\n const uid = useId();\n\n return (\n <div\n data-testid={rootTestId}\n className={cx(rootClassName, { [`${rootClassName}--is-visible`]: isVisible })}\n >\n <div className={cx(styles[`${rootClassName}__selected-wrapper`])}>\n <Paragraph data-testid={`${rootTestId}-selected-text`}>\n <span>{selectedRowsCount}</span> {copy.selectedRowsCount.of} {rowCount}{\" \"}\n {copy.selectedRowsCount.selected}\n </Paragraph>\n\n <Toggle\n data-testid={`${rootTestId}-toggle-selected`}\n id={`${uid}-toggle-selected`}\n label={copy.buttons.toggleSelected}\n onChange={onToggleSelected}\n />\n </div>\n\n <div className={cx(styles[`${rootClassName}__button-group`])}>\n <Button\n data-testid={`${rootTestId}-cancel-button`}\n variant=\"text\"\n fullWidth={isLgOrSmaller}\n onClick={onCancelSelection}\n >\n {copy.buttons.cancel}\n </Button>\n\n <div className={cx(styles[`${rootClassName}__primary-secondary-buttons`])}>\n {onSecondaryButtonClick && copy.buttons.secondary && (\n <Button\n data-testid={`${rootTestId}-secondary-button`}\n variant=\"secondary\"\n fullWidth={isLgOrSmaller}\n onClick={onSecondaryButtonClick}\n >\n {copy.buttons.secondary}\n </Button>\n )}\n {onPrimaryButtonClick && copy.buttons.primary && (\n <Button\n data-testid={`${rootTestId}-primary-button`}\n variant=\"primary\"\n fullWidth={isLgOrSmaller}\n onClick={onPrimaryButtonClick}\n >\n {copy.buttons.primary}\n </Button>\n )}\n </div>\n </div>\n </div>\n );\n};\n","import React, { useEffect, useState } from \"react\";\nimport { Heading, type HeadingTagType } from \"@purpur/heading\";\nimport { Paragraph } from \"@purpur/paragraph\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./table.module.scss\";\nimport { TableRow } from \"./table-row\";\nimport { TableRowCell } from \"./table-row-cell\";\n\nconst cx = c.bind(styles);\nconst rootClassName = \"purpur-table\";\n\ntype EmptyTableProps = {\n variant: \"primary\" | \"secondary\";\n tag: HeadingTagType;\n title: string;\n description: string;\n colSpan: number;\n icon: React.ReactNode;\n tableContainerId: string;\n};\n\nexport const EmptyTable = ({\n variant,\n tag,\n title,\n description,\n colSpan,\n icon,\n tableContainerId,\n}: EmptyTableProps) => {\n const [visibleWidth, setVisibleWidth] = useState<number | undefined>(undefined);\n\n useEffect(() => {\n const updateWidth = () => {\n const container = document.getElementById(tableContainerId);\n if (container) {\n setVisibleWidth(container.clientWidth);\n }\n };\n\n updateWidth();\n window.addEventListener(\"resize\", updateWidth);\n\n const container = document.getElementById(tableContainerId);\n container?.addEventListener(\"scroll\", updateWidth);\n\n return () => {\n window.removeEventListener(\"resize\", updateWidth);\n container?.removeEventListener(\"scroll\", updateWidth);\n };\n }, [tableContainerId]);\n\n return (\n <TableRow>\n <TableRowCell\n colSpan={colSpan}\n isLastRow={true}\n isFirstCell={true}\n isLastCell={true}\n enableColumnDrag={false}\n isEmptyTable={true}\n >\n <div\n className={cx([\n `${rootClassName}__empty-section`,\n `${rootClassName}__empty-section--${variant}`,\n ])}\n style={\n visibleWidth\n ? { width: `calc(${visibleWidth}px - 2 * var(--purpur-border-width-xs))` }\n : undefined\n }\n >\n <div className={cx([`${rootClassName}__empty-section__inner`])}>\n {icon && <div className={cx(`${rootClassName}__empty-section__icon`)}>{icon}</div>}\n <div className={cx(`${rootClassName}__empty-section__texts`)}>\n <Heading data-testid=\"purpur-table-empty-table-title\" variant=\"title-100\" tag={tag}>\n {title}\n </Heading>\n <Paragraph data-testid=\"purpur-table-empty-table-description\">\n {description}\n </Paragraph>\n </div>\n </div>\n </div>\n </TableRowCell>\n </TableRow>\n );\n};\n","import React from \"react\";\nimport { Skeleton } from \"@purpur/skeleton\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./table.module.scss\";\nimport { pxToRemString } from \"./utils/unit-conversions\";\n\nconst cx = c.bind(styles);\n\ntype TableRowCellSkeletonProps = {\n isLastRow: boolean;\n isFirstCell: boolean;\n isLastCell: boolean;\n stickyColumn?: boolean;\n isScrolled: boolean;\n showBorder: boolean;\n cellWidth: number | string;\n};\n\nconst rootClassName = \"purpur-table-row-cell\";\n\nconst TableRowCellSkeleton = ({\n isLastRow,\n isFirstCell,\n isLastCell,\n stickyColumn,\n isScrolled,\n showBorder,\n cellWidth,\n}: TableRowCellSkeletonProps) => {\n const classes = cx(rootClassName, {\n [`${rootClassName}__sticky-column`]: stickyColumn,\n [`${rootClassName}__sticky-column__with-sticky-border`]: isScrolled && showBorder,\n [`${rootClassName}__border-radius-first-cell`]: isFirstCell && isLastRow,\n [`${rootClassName}__border-radius-last-cell`]: isLastCell && isLastRow,\n [`${rootClassName}__last-row-first-cell-visible`]: isFirstCell && isLastRow,\n [`${rootClassName}__last-row-last-cell-visible`]: isLastCell && isLastRow,\n });\n\n const cellWidthString = typeof cellWidth === \"string\" ? cellWidth : pxToRemString(cellWidth);\n\n return (\n <td\n className={classes}\n style={{\n minWidth: cellWidthString,\n maxWidth: cellWidthString,\n }}\n >\n <Skeleton\n data-testid=\"purpur-table-cell-skeleton\"\n className={cx(`${rootClassName}__skeleton`)}\n />\n </td>\n );\n};\n\nexport { TableRowCellSkeleton };\n","import React from \"react\";\n\nimport { TableRow } from \"./table-row\";\nimport { TableRowCellSkeleton } from \"./table-row-cell-skeleton\";\n\ntype LoadingTableRowsProps = {\n rowCount: number;\n isScrolled: boolean;\n stickyFirstColumn: boolean;\n getStickyColumn: (index: number) => boolean;\n cellWidths: (string | number)[];\n showBorder: (index: number) => boolean;\n};\n\nexport const LoadingTableRows = ({\n rowCount,\n getStickyColumn,\n stickyFirstColumn,\n isScrolled,\n cellWidths,\n showBorder,\n}: LoadingTableRowsProps) => (\n <>\n {Array.from({ length: rowCount }, (_value, index) => index).map((row, rowIndex) => (\n <TableRow key={`skeleton-row-${row}`}>\n {cellWidths.map((cellWidth, cellIndex) => (\n <TableRowCellSkeleton\n key={`skeleton-cell-${cellIndex}`}\n isLastRow={rowIndex === rowCount - 1}\n isFirstCell={cellIndex === 0}\n isLastCell={cellIndex === cellWidths.length - 1}\n stickyColumn={stickyFirstColumn && getStickyColumn(cellIndex)}\n isScrolled={isScrolled}\n showBorder={showBorder(cellIndex)}\n cellWidth={cellWidth}\n />\n ))}\n </TableRow>\n ))}\n </>\n);\n","import React from \"react\";\nimport type { UniqueIdentifier } from \"@dnd-kit/core\";\nimport { type HeadingTagType } from \"@purpur/heading\";\nimport type { Row, Table } from \"@tanstack/react-table\";\nimport type { RowData } from \"@tanstack/react-table\";\nimport c from \"classnames/bind\";\n\nimport { EmptyTable } from \"./empty-table\";\nimport { LoadingTableRows } from \"./loading-table-rows\";\nimport styles from \"./table.module.scss\";\nimport { TableBody } from \"./table-body\";\nimport { TableRow } from \"./table-row\";\nimport { TableRowCell } from \"./table-row-cell\";\n\nconst cx = c.bind(styles);\nconst rootClassName = \"purpur-table\";\n\ntype TableContentProps<TData extends RowData> = {\n tanstackTable: Table<TData>;\n tableRows: Row<TData>[];\n fullWidth: boolean;\n tableHeader: React.ReactNode;\n loading?: boolean;\n skeletonRows?: number;\n isEmptyTable?: boolean;\n stickyFirstColumn?: boolean;\n getStickyColumn?: (index: number) => boolean;\n isScrolled?: boolean;\n showBorder?: (index: number) => boolean;\n enableColumnDrag?: boolean;\n activeId?: UniqueIdentifier | null;\n getColumnWidths?: () => (string | number)[];\n variant?: \"primary\" | \"secondary\";\n emptyTableHeadingTag?: HeadingTagType;\n emptyTableCopy?: { title: string; description: string };\n emptyTableIcon?: React.ReactNode;\n tableContainerId?: string;\n};\n\nexport function TableContent<TData extends RowData>({\n tanstackTable,\n tableRows,\n fullWidth,\n tableHeader,\n loading,\n skeletonRows,\n isEmptyTable,\n stickyFirstColumn,\n getStickyColumn,\n isScrolled,\n showBorder,\n enableColumnDrag,\n activeId,\n getColumnWidths,\n variant,\n emptyTableHeadingTag,\n emptyTableCopy,\n emptyTableIcon,\n tableContainerId,\n}: TableContentProps<TData>) {\n return (\n <table\n className={cx([\n `${rootClassName}__table`,\n { [`${rootClassName}__table--full-width`]: fullWidth },\n ])}\n >\n {tableHeader}\n <TableBody>\n {loading && skeletonRows ? (\n <LoadingTableRows\n rowCount={skeletonRows}\n getStickyColumn={getStickyColumn!}\n stickyFirstColumn={stickyFirstColumn!}\n isScrolled={isScrolled!}\n cellWidths={getColumnWidths!()}\n showBorder={showBorder!}\n />\n ) : isEmptyTable && emptyTableCopy && emptyTableHeadingTag ? (\n <EmptyTable\n variant={variant!}\n tag={emptyTableHeadingTag}\n title={emptyTableCopy.title}\n description={emptyTableCopy.description}\n colSpan={tanstackTable.getVisibleLeafColumns().length}\n icon={emptyTableIcon}\n tableContainerId={tableContainerId!}\n />\n ) : (\n tableRows.map((row, rowIndex) => (\n <TableRow key={row.id} isSelected={row.getIsSelected()}>\n {row.getVisibleCells().map((cell, cellIndex) => (\n <TableRowCell\n key={cell.id}\n cell={cell}\n isLastRow={rowIndex === tableRows.length - 1}\n isFirstCell={cellIndex === 0}\n isLastCell={cellIndex === row.getVisibleCells().length - 1}\n stickyColumn={stickyFirstColumn && getStickyColumn!(cellIndex)}\n isScrolled={isScrolled!}\n showBorder={showBorder!(cellIndex)}\n enableColumnDrag={enableColumnDrag || false}\n draggingActive={activeId === cell.column.id}\n />\n ))}\n </TableRow>\n ))\n )}\n </TableBody>\n </table>\n );\n}\n","import React, { type Dispatch, type SetStateAction } from \"react\";\nimport { Button } from \"@purpur/button\";\nimport { Drawer } from \"@purpur/drawer\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./table-export-drawer.module.scss\";\n\nexport type TableExportDrawerCopyProps = {\n link: string;\n title: string;\n bodyText: string;\n closeButtonAriaLabel: string;\n};\n\nexport type TableExportDrawerProps = {\n id: string;\n isOpen: boolean;\n exportFormats: string[];\n copy: TableExportDrawerCopyProps;\n onExportData: (format: string) => void;\n setDrawerIsOpen: Dispatch<SetStateAction<boolean>>;\n zIndex?: number;\n};\n\nconst rootClassName = \"purpur-table-export-drawer\";\nconst cx = c.bind(styles);\nconst rootTestId = \"purpur-table-export-drawer\";\n\nexport const TableExportDrawer = ({\n id,\n exportFormats,\n isOpen,\n copy,\n onExportData,\n setDrawerIsOpen,\n zIndex,\n}: TableExportDrawerProps) => (\n <div id={id}>\n <Drawer data-testid={rootTestId} open={isOpen} onOpenChange={setDrawerIsOpen}>\n <Drawer.Content\n data-testid={`${rootTestId}-content`}\n zIndex={zIndex}\n title={copy.title}\n bodyText={copy.bodyText}\n closeButtonAriaLabel={copy.closeButtonAriaLabel}\n >\n <div className={cx(`${rootClassName}__content`)}>\n {exportFormats.map((format) => (\n <Button\n key={format}\n data-testid={`${rootTestId}-export-button`}\n variant=\"secondary\"\n onClick={() => onExportData(format)}\n fullWidth\n >\n {`${copy.link} ${format}`}\n </Button>\n ))}\n </div>\n </Drawer.Content>\n </Drawer>\n </div>\n);\n","import React from \"react\";\nimport type { UniqueIdentifier } from \"@dnd-kit/core\";\nimport { horizontalListSortingStrategy, SortableContext } from \"@dnd-kit/sortable\";\nimport type { HeaderGroup, Table } from \"@tanstack/react-table\";\nimport type { RowData } from \"@tanstack/react-table\";\n\nimport { TableColumnHeaderCell } from \"./table-column-header-cell\";\nimport { TableRow } from \"./table-row\";\n\ntype StandardTableHeadersProps<TData extends RowData> = {\n headerGroup: HeaderGroup<TData>;\n tanstackTable: Table<TData>;\n tableHasFilters: boolean;\n emptyTable: boolean;\n stickyFirstColumn: boolean;\n isScrolled: boolean;\n getStickyColumn: (index: number) => boolean;\n showBorder: (index: number) => boolean;\n enableSorting: boolean;\n};\n\nexport function StandardTableHeaders<TData extends RowData>({\n headerGroup,\n tanstackTable,\n tableHasFilters,\n emptyTable,\n stickyFirstColumn,\n isScrolled,\n getStickyColumn,\n showBorder,\n enableSorting,\n}: StandardTableHeadersProps<TData>) {\n return (\n <TableRow key={headerGroup.id}>\n {headerGroup.headers.map((header, index) => (\n <TableColumnHeaderCell\n key={header.id}\n header={header}\n tanstackTable={tanstackTable}\n tableHasFilters={tableHasFilters}\n stickyColumn={!emptyTable && stickyFirstColumn && getStickyColumn(index)}\n isScrolled={isScrolled}\n showBorder={showBorder(index)}\n enableSorting={enableSorting}\n />\n ))}\n </TableRow>\n );\n}\n\ntype SortableTableHeadersProps<TData extends RowData> = StandardTableHeadersProps<TData> & {\n columnOrder: string[];\n activeId: UniqueIdentifier | null;\n enableColumnDrag: boolean;\n columnDragAriaLabelsCopy?: Record<string, string>;\n};\n\nexport function SortableTableHeaders<TData extends RowData>({\n headerGroup,\n tanstackTable,\n tableHasFilters,\n emptyTable,\n stickyFirstColumn,\n isScrolled,\n getStickyColumn,\n showBorder,\n enableSorting,\n columnOrder,\n activeId,\n enableColumnDrag,\n columnDragAriaLabelsCopy,\n}: SortableTableHeadersProps<TData>) {\n return (\n <TableRow key={headerGroup.id}>\n <SortableContext items={columnOrder} strategy={horizontalListSortingStrategy}>\n {headerGroup.headers.map((header, index) => {\n const isSelectionColumn = header.id === \"row-selection\" || header.id === \"row-toggle\";\n\n return (\n <TableColumnHeaderCell\n key={header.id}\n header={header}\n tanstackTable={tanstackTable}\n tableHasFilters={tableHasFilters}\n stickyColumn={!emptyTable && stickyFirstColumn && getStickyColumn(index)}\n isScrolled={isScrolled}\n showBorder={showBorder(index)}\n enableSorting={enableSorting}\n sortableId={header.id}\n activeId={activeId}\n overlayActive={false}\n {...(!isSelectionColumn && enableColumnDrag && columnDragAriaLabelsCopy\n ? {\n enableColumnDrag: true,\n columnDragAriaLabel: columnDragAriaLabelsCopy.grab,\n }\n : {\n enableColumnDrag: false,\n })}\n />\n );\n })}\n </SortableContext>\n </TableRow>\n );\n}\n","import { jsx as C } from \"react/jsx-runtime\";\nimport { I as e } from \"../icon-DNHpBTHs.mjs\";\nconst o = {\n name: \"drag-vertical\",\n svg: '<svg viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"currentColor\"><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M7.33325 6.55556C7.33325 5.69645 8.0297 5 8.88881 5C9.74792 5 10.4444 5.69645 10.4444 6.55556C10.4444 7.41466 9.74792 8.11111 8.88881 8.11111C8.0297 8.11111 7.33325 7.41466 7.33325 6.55556ZM8.88881 10.4444C8.0297 10.4444 7.33325 11.1409 7.33325 12C7.33325 12.8591 8.0297 13.5556 8.88881 13.5556C9.74792 13.5556 10.4444 12.8591 10.4444 12C10.4444 11.1409 9.74792 10.4444 8.88881 10.4444ZM7.33325 17.4444C7.33325 16.5853 8.0297 15.8889 8.88881 15.8889C9.74792 15.8889 10.4444 16.5853 10.4444 17.4444C10.4444 18.3036 9.74792 19 8.88881 19C8.0297 19 7.33325 18.3036 7.33325 17.4444Z\"/><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M13.5555 6.55556C13.5555 5.69645 14.2519 5 15.111 5C15.9701 5 16.6666 5.69645 16.6666 6.55556C16.6666 7.41466 15.9701 8.11111 15.111 8.11111C14.2519 8.11111 13.5555 7.41466 13.5555 6.55556ZM15.111 10.4444C14.2519 10.4444 13.5555 11.1409 13.5555 12C13.5555 12.8591 14.2519 13.5556 15.111 13.5556C15.9701 13.5556 16.6666 12.8591 16.6666 12C16.6666 11.1409 15.9701 10.4444 15.111 10.4444ZM13.5555 17.4444C13.5555 16.5853 14.2519 15.8889 15.111 15.8889C15.9701 15.8889 16.6666 16.5853 16.6666 17.4444C16.6666 18.3036 15.9701 19 15.111 19C14.2519 19 13.5555 18.3036 13.5555 17.4444Z\"/></svg>',\n keywords: [\"drag-vertical\"],\n category: \"action\"\n}, l = (r) => /* @__PURE__ */ C(e, { ...r, svg: o });\nl.displayName = \"IconDragVertical\";\nexport {\n l as IconDragVertical\n};\n//# sourceMappingURL=drag-vertical.es.js.map\n","import { jsx as n } from \"react/jsx-runtime\";\nimport { I as a } from \"../icon-DNHpBTHs.mjs\";\nconst s = {\n name: \"sync\",\n svg: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path fill-rule=\"evenodd\" d=\"M12.015 4.786a7.218 7.218 0 0 0-7.219 7.219.9.9 0 1 1-1.8 0 9.018 9.018 0 0 1 15.189-6.577v-1.48a.9.9 0 1 1 1.8 0V8.92h-4.973a.9.9 0 0 1 0-1.8h2.318a7.199 7.199 0 0 0-5.315-2.334Zm8.118 6.319a.9.9 0 0 1 .9.9A9.018 9.018 0 0 1 5.83 18.568v1.469a.9.9 0 1 1-1.8 0v-4.973h4.973a.9.9 0 1 1 0 1.8H6.677a7.218 7.218 0 0 0 12.556-4.86.9.9 0 0 1 .9-.9Z\" clip-rule=\"evenodd\"/></svg>',\n keywords: [\"sync\"],\n category: \"action\"\n}, c = (o) => /* @__PURE__ */ n(a, { ...o, svg: s });\nc.displayName = \"IconSync\";\nexport {\n c as IconSync\n};\n//# sourceMappingURL=sync.es.js.map\n","import React, { useId, useState } from \"react\";\nimport {\n closestCenter,\n DndContext,\n type DragEndEvent,\n DragOverlay,\n type DragStartEvent,\n KeyboardSensor,\n PointerSensor,\n TouchSensor,\n type UniqueIdentifier,\n useSensor,\n useSensors,\n} from \"@dnd-kit/core\";\nimport { restrictToParentElement, restrictToVerticalAxis } from \"@dnd-kit/modifiers\";\nimport {\n arrayMove,\n SortableContext,\n sortableKeyboardCoordinates,\n useSortable,\n verticalListSortingStrategy,\n} from \"@dnd-kit/sortable\";\nimport { Button } from \"@purpur/button\";\nimport { Drawer } from \"@purpur/drawer\";\nimport { Heading } from \"@purpur/heading\";\nimport { IconArrowDown } from \"@purpur/icon/arrow-down\";\nimport { IconArrowUp } from \"@purpur/icon/arrow-up\";\nimport { IconDragVertical } from \"@purpur/icon/drag-vertical\";\nimport { IconSync } from \"@purpur/icon/sync\";\nimport { Paragraph } from \"@purpur/paragraph\";\nimport { Tabs } from \"@purpur/tabs\";\nimport { Toggle } from \"@purpur/toggle\";\nimport { purpurMotionDuration150, purpurMotionEasingEaseInOut } from \"@purpur/tokens\";\nimport { VisuallyHidden } from \"@purpur/visually-hidden\";\nimport { type Column, type RowData } from \"@tanstack/react-table\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./table-settings-drawer.module.scss\";\nimport { useDropIndicator } from \"./use-drop-indicator.hook\";\n\nexport type TableSettingsDrawerCopyProps<TEnableDrag extends boolean = boolean> = {\n title: string;\n generalSettings: {\n heading: string;\n toggles: {\n showFilters: string;\n lockFirstcolumn: string;\n };\n };\n columns: TEnableDrag extends true\n ? VisibleColumnsAndColumnDragCopyProps\n : VisibleColumnsOnlyCopyProps;\n buttons: {\n closeDrawer: string;\n resetSettings: string;\n };\n};\n\ntype ColumnManagementCopyBaseProps = {\n heading: string;\n};\n\ntype VisibleColumnsAndColumnDragCopyProps = ColumnManagementCopyBaseProps & {\n tabs: {\n order: string;\n visibility: string;\n };\n ariaLabels: {\n dragHandle: {\n action: string;\n instructions: string;\n };\n arrowButtons: {\n move: string;\n up: string;\n down: string;\n };\n };\n};\n\ntype VisibleColumnsOnlyCopyProps = ColumnManagementCopyBaseProps & {\n tabs?: never;\n buttons?: never;\n ariaLabels?: never;\n};\n\ntype ColumnDragEnabledProps = {\n enableColumnDrag: true;\n onColumnOrderChange: (newColumnOrder: string[]) => void;\n copy: TableSettingsDrawerCopyProps<true>;\n};\n\ntype ColumnDragDisabledProps = {\n enableColumnDrag?: false;\n onColumnOrderChange?: never;\n copy: TableSettingsDrawerCopyProps<false>;\n};\n\nexport type TableSettingsDrawerProps<TData> = {\n id: string;\n getAllColumns: () => Column<TData, unknown>[];\n onResetSettings: () => void;\n setDrawerIsOpen: React.Dispatch<React.SetStateAction<boolean>>;\n setShowColumnFiltersEnabled: React.Dispatch<React.SetStateAction<boolean>>;\n setStickyFirstColumn: React.Dispatch<React.SetStateAction<boolean>>;\n columnFiltersEnabled: boolean;\n isDrawerOpen: boolean;\n showColumnFilters: boolean;\n stickyFirstColumn: boolean;\n zIndex?: number;\n columnOrder?: string[];\n} & (ColumnDragEnabledProps | ColumnDragDisabledProps);\n\nconst rootClassName = \"purpur-table-settings-drawer\";\nconst cx = c.bind(styles);\nconst rootTestId = \"purpur-table-settings-drawer\";\n\nexport const TableSettingsDrawer = <TData extends RowData>({\n id,\n columnFiltersEnabled,\n copy,\n isDrawerOpen,\n showColumnFilters,\n stickyFirstColumn,\n getAllColumns,\n onResetSettings,\n setDrawerIsOpen,\n setShowColumnFiltersEnabled,\n setStickyFirstColumn,\n enableColumnDrag,\n zIndex,\n columnOrder,\n onColumnOrderChange,\n}: TableSettingsDrawerProps<TData>) => {\n return (\n <div id={id}>\n <Drawer data-testid={rootTestId} open={isDrawerOpen} onOpenChange={setDrawerIsOpen}>\n <Drawer.Content\n data-testid={`${rootTestId}-content`}\n zIndex={zIndex}\n closeButtonAriaLabel={copy.buttons.closeDrawer}\n title={copy.title}\n footerContent={\n <FooterContent text={copy.buttons.resetSettings} onClick={onResetSettings} />\n }\n stickyFooter\n aria-describedby={undefined}\n >\n <div className={cx(rootClassName)}>\n <GeneralSettings\n setShowColumnFiltersEnabled={setShowColumnFiltersEnabled}\n setStickyFirstColumn={setStickyFirstColumn}\n columnFiltersEnabled={columnFiltersEnabled}\n showColumnFilters={showColumnFilters}\n stickyFirstColumn={stickyFirstColumn}\n copy={copy.generalSettings}\n />\n <ColumnManagement<TData>\n getAllColumns={getAllColumns}\n heading={copy.columns.heading}\n columnOrder={columnOrder}\n {...(enableColumnDrag\n ? {\n enableColumnDrag: true,\n onColumnOrderChange: onColumnOrderChange,\n copy: copy as TableSettingsDrawerCopyProps<true>,\n }\n : {\n enableColumnDrag: false,\n copy: copy as TableSettingsDrawerCopyProps<false>,\n })}\n />\n </div>\n </Drawer.Content>\n </Drawer>\n </div>\n );\n};\n\nconst FooterContent = ({ text, onClick }: { text: string; onClick: () => void }) => (\n <div className={cx(`${rootClassName}__button-group`)}>\n <Button data-testid={`${rootTestId}-reset-button`} variant=\"text\" onClick={onClick}>\n <IconSync size=\"sm\" />\n {text}\n </Button>\n </div>\n);\n\ntype GeneralSettingsProps = {\n setShowColumnFiltersEnabled: React.Dispatch<React.SetStateAction<boolean>>;\n setStickyFirstColumn: React.Dispatch<React.SetStateAction<boolean>>;\n columnFiltersEnabled: boolean;\n stickyFirstColumn: boolean;\n showColumnFilters: boolean;\n copy: {\n heading: string;\n toggles: {\n showFilters: string;\n lockFirstcolumn: string;\n };\n };\n};\n\nconst GeneralSettings = ({\n setShowColumnFiltersEnabled,\n setStickyFirstColumn,\n columnFiltersEnabled,\n showColumnFilters,\n stickyFirstColumn,\n copy,\n}: GeneralSettingsProps) => {\n const uid = useId();\n return (\n <div\n data-testid={`${rootTestId}-general-settings`}\n className={cx(`${rootClassName}__general-settings`)}\n aria-labelledby={`${uid}-general-settings`}\n >\n <Heading id={`${uid}-general-settings`} variant=\"title-100\" tag=\"h3\">\n {copy.heading}\n </Heading>\n {columnFiltersEnabled && (\n <ToggleWrapper\n id={`${uid}-show-filters`}\n checked={showColumnFilters}\n label={copy.toggles.showFilters}\n onChange={setShowColumnFiltersEnabled}\n />\n )}\n <ToggleWrapper\n id={`${uid}-lock-first-column`}\n checked={stickyFirstColumn}\n label={copy.toggles.lockFirstcolumn}\n onChange={setStickyFirstColumn}\n />\n </div>\n );\n};\n\nconst ColumnManagement = <TData extends RowData>({\n heading,\n getAllColumns,\n enableColumnDrag,\n columnOrder,\n onColumnOrderChange,\n copy,\n}: {\n heading: string;\n getAllColumns: () => Column<TData, unknown>[];\n columnOrder?: string[];\n} & (ColumnDragDisabledProps | ColumnDragEnabledProps)) => {\n const allColumns = getAllColumns();\n\n const filterAwayRowSelectionToggle = (column: Column<TData, unknown>) =>\n column.id !== \"row-selection\" && column.id !== \"row-toggle\";\n\n const uid = useId();\n\n const filteredColumns = allColumns.filter(filterAwayRowSelectionToggle);\n\n const showColumnReorder = enableColumnDrag && columnOrder;\n\n return (\n <section\n data-testid={`${rootTestId}-column-management`}\n className={cx(\n `${rootClassName}__column-management`,\n `${rootClassName}__column-management--${showColumnReorder ? \"tabs\" : \"no-tabs\"}`\n )}\n aria-labelledby={`${uid}-column-management`}\n >\n <Heading id={`${uid}-column-management`} variant=\"title-100\" tag=\"h3\">\n {heading}\n </Heading>\n {showColumnReorder ? (\n <Tabs variant=\"line\" fullWidth={true}>\n <Tabs.Content tabId={\"VISIBILITY\"} name={copy.columns.tabs.visibility}>\n <div className={cx(`${rootClassName}__column-management-tab-content`)}>\n <VisibleColumns filteredColumns={filteredColumns} />\n </div>\n </Tabs.Content>\n <Tabs.Content tabId={\"ORDER\"} name={copy.columns.tabs.order}>\n <div className={cx(`${rootClassName}__column-management-tab-content`)}>\n <ColumnOrder<TData>\n allColumns={allColumns}\n filteredColumns={filteredColumns}\n columnOrder={columnOrder}\n enableColumnDrag={true}\n onColumnOrderChange={onColumnOrderChange}\n copy={copy}\n />\n </div>\n </Tabs.Content>\n </Tabs>\n ) : (\n <VisibleColumns filteredColumns={filteredColumns} />\n )}\n </section>\n );\n};\n\nconst VisibleColumns = <TData extends RowData>({\n filteredColumns,\n}: {\n filteredColumns: Column<TData, unknown>[];\n}) => {\n const visible = filteredColumns.filter((column) => column.getIsVisible());\n\n const isDisabled = (column: Column<TData, unknown>) =>\n !column.getCanHide() || (visible.length === 1 && visible.includes(column));\n\n return (\n <div className={cx(`${rootClassName}__column-visibility`)}>\n {filteredColumns.map((column) => (\n <ToggleWrapper\n key={column!.id}\n id={column!.id}\n checked={column!.getIsVisible()}\n disabled={isDisabled(column!)}\n label={column!.columnDef.header as string}\n onChange={() => column!.toggleVisibility()}\n />\n ))}\n </div>\n );\n};\n\nconst ColumnOrder = <TData extends RowData>({\n allColumns,\n filteredColumns,\n columnOrder,\n onColumnOrderChange,\n copy,\n}: {\n allColumns: Column<TData, unknown>[];\n filteredColumns: Column<TData, unknown>[];\n columnOrder: string[];\n} & ColumnDragEnabledProps) => {\n const sensors = useSensors(\n useSensor(PointerSensor),\n useSensor(TouchSensor),\n useSensor(KeyboardSensor, {\n coordinateGetter: sortableKeyboardCoordinates,\n })\n );\n\n const handleDragStart = (event: DragStartEvent) => {\n setActiveId(event.active.id);\n };\n\n const handleDragEnd = (event: DragEndEvent) => {\n const { active, over } = event;\n\n if (over && active.id !== over.id) {\n const currentOrder = allColumns.map((column) => column.id);\n\n const oldIndex = currentOrder.indexOf(String(active.id));\n const newIndex = currentOrder.indexOf(String(over.id));\n\n if (oldIndex !== -1 && newIndex !== -1) {\n const newOrder = [...currentOrder];\n const [removed] = newOrder.splice(oldIndex, 1);\n newOrder.splice(newIndex, 0, removed);\n\n if (onColumnOrderChange) onColumnOrderChange(newOrder);\n }\n }\n\n setActiveId(null);\n };\n\n const moveColumn = (id: string, direction: \"up\" | \"down\") => {\n const currentOrder = allColumns.map((column) => column.id);\n\n const index = currentOrder.indexOf(id);\n if (\n (direction === \"up\" && index === 0) ||\n (direction === \"down\" && index === currentOrder.length - 1)\n ) {\n return;\n }\n const newIndex = direction === \"up\" ? index - 1 : index + 1;\n const newOrder = arrayMove(currentOrder, index, newIndex);\n if (onColumnOrderChange) onColumnOrderChange(newOrder);\n };\n\n const [activeId, setActiveId] = useState<UniqueIdentifier | null>(null);\n\n const getColumnById = (id: string) => allColumns.find((col) => col.id === id);\n\n const activeColumn = activeId ? getColumnById(String(activeId)) : null;\n\n return (\n <div className={cx(`${rootClassName}__draggable-list`)}>\n <DndContext\n sensors={sensors}\n collisionDetection={closestCenter}\n onDragStart={handleDragStart}\n onDragEnd={handleDragEnd}\n modifiers={[restrictToVerticalAxis, restrictToParentElement]}\n >\n <SortableContext items={columnOrder} strategy={verticalListSortingStrategy}>\n {filteredColumns.map((column, index) => {\n return (\n <DraggableColumnItemWithIndicator\n key={column.id}\n column={column}\n moveColumn={moveColumn}\n isFirst={index === 0}\n isLast={index === filteredColumns.length - 1}\n copy={copy}\n index={index}\n />\n );\n })}\n </SortableContext>\n <DragOverlay\n dropAnimation={{\n duration: Number(purpurMotionDuration150),\n easing: purpurMotionEasingEaseInOut,\n }}\n >\n {activeColumn ? (\n <DraggableColumnItem\n id={activeColumn.id}\n label={activeColumn.columnDef.header as string}\n onMoveUp={() => {}}\n onMoveDown={() => {}}\n overlay\n copy={copy}\n />\n ) : null}\n </DragOverlay>\n </DndContext>\n </div>\n );\n};\n\nconst DraggableColumnItem = ({\n id,\n label,\n onMoveUp,\n onMoveDown,\n isFirst,\n isLast,\n overlay,\n copy,\n dropIndicatorPosition,\n}: {\n id: string;\n label: string;\n onMoveUp?: () => void;\n onMoveDown?: () => void;\n isFirst?: boolean;\n isLast?: boolean;\n overlay?: boolean;\n copy: TableSettingsDrawerCopyProps<true>;\n dropIndicatorPosition?: \"before\" | \"after\" | null;\n}) => {\n const { attributes, listeners, setNodeRef, isDragging } = useSortable({\n id,\n });\n\n return (\n <div\n ref={setNodeRef}\n className={cx(`${rootClassName}__draggable-item`, {\n [`${rootClassName}__draggable-item--overlay`]: overlay,\n [`${rootClassName}__draggable-item--dragging`]: isDragging,\n [`${rootClassName}__draggable-item--drop-indicator-before`]:\n dropIndicatorPosition === \"before\",\n [`${rootClassName}__draggable-item--drop-indicator-after`]:\n dropIndicatorPosition === \"after\",\n })}\n >\n <div className={cx(`${rootClassName}__draggable-item-content`)}>\n <div\n className={cx(`${rootClassName}__draggable-handle`, {\n [`${rootClassName}__draggable-handle--overlay`]: overlay,\n })}\n {...listeners}\n {...attributes}\n aria-label={`${copy.columns.ariaLabels.dragHandle.action} ${label}`}\n aria-describedby={`drag-instructions-${id}`}\n >\n <IconDragVertical className={cx(`${rootClassName}__draggable-handle-icon`)} size=\"sm\" />\n </div>\n <Paragraph>{label}</Paragraph>\n <VisuallyHidden id={`drag-instructions-${id}`}>\n {copy.columns.ariaLabels.dragHandle.instructions}\n </VisuallyHidden>\n </div>\n\n <div className={cx(`${rootClassName}__draggable-item-buttons`)}>\n <Button\n variant=\"secondary\"\n size=\"xs\"\n onClick={onMoveUp}\n disabled={isFirst || overlay}\n aria-label={`${copy.columns.ariaLabels.arrowButtons.move} ${label} ${copy.columns.ariaLabels.arrowButtons.up}`}\n iconOnly\n >\n <IconArrowUp size=\"xs\" />\n </Button>\n <Button\n variant=\"secondary\"\n size=\"xs\"\n onClick={onMoveDown}\n disabled={isLast || overlay}\n aria-label={`${copy.columns.ariaLabels.arrowButtons.move} ${label} ${copy.columns.ariaLabels.arrowButtons.down}`}\n iconOnly\n >\n <IconArrowDown size=\"xs\" />\n </Button>\n </div>\n </div>\n );\n};\n\nconst ToggleWrapper = ({\n id,\n checked,\n label,\n disabled,\n onChange,\n}: {\n id: string;\n checked: boolean;\n disabled?: boolean;\n label: string;\n onChange?: React.Dispatch<React.SetStateAction<boolean>>;\n}) => (\n <Toggle\n id={id}\n checked={checked}\n label={label}\n disabled={disabled}\n labelPosition=\"left\"\n className={cx(`${rootClassName}__toggle`)}\n onChange={onChange}\n data-testid={`${rootTestId}-toggle`}\n />\n);\n\nconst DraggableColumnItemWithIndicator = <TData extends RowData>({\n column,\n moveColumn,\n isFirst,\n isLast,\n copy,\n}: {\n column: Column<TData, unknown>;\n moveColumn: (id: string, direction: \"up\" | \"down\") => void;\n isFirst: boolean;\n isLast: boolean;\n copy: TableSettingsDrawerCopyProps<true>;\n index: number;\n}) => {\n const dropIndicatorPosition = useDropIndicator({ itemId: column.id, enableDrag: true });\n\n return (\n <DraggableColumnItem\n id={column.id}\n label={column.columnDef.header as string}\n onMoveUp={() => moveColumn(column.id, \"up\")}\n onMoveDown={() => moveColumn(column.id, \"down\")}\n isFirst={isFirst}\n isLast={isLast}\n copy={copy}\n dropIndicatorPosition={dropIndicatorPosition}\n />\n );\n};\n","import { jsx as a } from \"react/jsx-runtime\";\nimport { I as l } from \"../icon-DNHpBTHs.mjs\";\nconst n = {\n name: \"download\",\n svg: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path fill-rule=\"evenodd\" d=\"M22.4 21.5a.9.9 0 0 1-.9.9h-19a.9.9 0 0 1-.9-.9V11a.9.9 0 0 1 1.8 0v9.6h17.2V11a.9.9 0 0 1 1.8 0v10.5Zm-9.764-4.864a.9.9 0 0 1-1.272 0l-5-5a.9.9 0 0 1 1.272-1.272l3.464 3.463V2.5a.9.9 0 0 1 1.8 0v11.327l3.464-3.463a.9.9 0 0 1 1.272 1.272l-5 5Z\" clip-rule=\"evenodd\"/></svg>',\n keywords: [\"download\"],\n category: \"action\"\n}, d = (o) => /* @__PURE__ */ a(l, { ...o, svg: n });\nd.displayName = \"IconDownload\";\nexport {\n d as IconDownload\n};\n//# sourceMappingURL=download.es.js.map\n","import { jsx as o } from \"react/jsx-runtime\";\nimport { I as e } from \"../icon-DNHpBTHs.mjs\";\nconst i = {\n name: \"maximize\",\n svg: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path fill-rule=\"evenodd\" d=\"M13.635 3.828c0-.483.392-.875.875-.875h5.782a.75.75 0 0 1 .75.75v5.782a.875.875 0 0 1-1.75 0V5.941l-4.673 4.673a.875.875 0 1 1-1.238-1.237l4.674-4.674H14.51a.875.875 0 0 1-.875-.875ZM10.36 20.169a.875.875 0 0 1-.875.875H3.703a.75.75 0 0 1-.75-.75v-5.782a.875.875 0 1 1 1.75 0v3.544l4.674-4.673a.875.875 0 1 1 1.237 1.237l-4.673 4.674h3.544c.484 0 .875.392.875.875Z\" clip-rule=\"evenodd\"/></svg>',\n keywords: [\"maximize\"],\n category: \"action\"\n}, m = (a) => /* @__PURE__ */ o(e, { ...a, svg: i });\nm.displayName = \"IconMaximize\";\nexport {\n m as IconMaximize\n};\n//# sourceMappingURL=maximize.es.js.map\n","import { jsx as o } from \"react/jsx-runtime\";\nimport { I as e } from \"../icon-DNHpBTHs.mjs\";\nconst m = {\n name: \"minimize\",\n svg: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path fill-rule=\"evenodd\" d=\"M20.788 9.74a.875.875 0 0 1-.875.874h-5.782a.75.75 0 0 1-.75-.75V4.083a.875.875 0 1 1 1.75 0v3.544l4.674-4.674a.875.875 0 0 1 1.237 1.238L16.37 8.864h3.544c.483 0 .875.392.875.875Zm-17.58 4.518c0-.483.391-.875.875-.875h5.781a.75.75 0 0 1 .75.75v5.782a.875.875 0 1 1-1.75 0V16.37l-4.673 4.674a.875.875 0 0 1-1.238-1.238l4.674-4.673H4.083a.875.875 0 0 1-.875-.875Z\" clip-rule=\"evenodd\"/></svg>',\n keywords: [\"minimize\"],\n category: \"action\"\n}, n = (i) => /* @__PURE__ */ o(e, { ...i, svg: m });\nn.displayName = \"IconMinimize\";\nexport {\n n as IconMinimize\n};\n//# sourceMappingURL=minimize.es.js.map\n","import { jsx as l } from \"react/jsx-runtime\";\nimport { I as t } from \"../icon-DNHpBTHs.mjs\";\nconst s = {\n name: \"settings\",\n svg: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path fill-rule=\"evenodd\" d=\"M8.846 3.245c0-1.05.85-1.9 1.9-1.9h2.509a1.9 1.9 0 0 1 1.9 1.9v1.011c.712.29 1.374.676 1.972 1.14l.877-.506a1.9 1.9 0 0 1 2.595.696l1.255 2.172a1.9 1.9 0 0 1-.696 2.596l-.877.506a8.43 8.43 0 0 1 0 2.278l.877.506a1.9 1.9 0 0 1 .695 2.596L20.6 18.412a1.9 1.9 0 0 1-2.596.696l-.877-.507c-.597.465-1.26.85-1.971 1.14v1.012a1.9 1.9 0 0 1-1.9 1.9h-2.51a1.9 1.9 0 0 1-1.9-1.9v-1.01A8.352 8.352 0 0 1 6.874 18.6l-.877.507a1.9 1.9 0 0 1-2.595-.696L2.146 16.24a1.9 1.9 0 0 1 .696-2.596l.876-.506a8.425 8.425 0 0 1 0-2.278l-.877-.506a1.9 1.9 0 0 1-.695-2.596L3.4 5.586a1.9 1.9 0 0 1 2.596-.696l.877.507a8.351 8.351 0 0 1 1.973-1.141V3.245Zm1.9-.1a.1.1 0 0 0-.1.1v2.3l-.629.2a6.551 6.551 0 0 0-2.44 1.41L7.09 7.6 5.096 6.45a.1.1 0 0 0-.137.037L3.705 8.658a.1.1 0 0 0 .036.137l1.992 1.15-.14.643a6.586 6.586 0 0 0 0 2.822l.14.643-1.991 1.15a.1.1 0 0 0-.037.136l1.254 2.173a.1.1 0 0 0 .137.037l1.994-1.151.487.444a6.552 6.552 0 0 0 2.44 1.411l.629.2v2.3a.1.1 0 0 0 .1.1h2.509a.1.1 0 0 0 .1-.1v-2.301l.628-.2a6.551 6.551 0 0 0 2.44-1.41l.486-.445 1.995 1.152a.1.1 0 0 0 .136-.037l1.255-2.172a.1.1 0 0 0-.037-.137l-1.992-1.15.14-.643a6.585 6.585 0 0 0 0-2.822l-.14-.643 1.992-1.15a.1.1 0 0 0 .037-.137l-1.254-2.172a.1.1 0 0 0-.137-.037l-1.995 1.152-.486-.445a6.551 6.551 0 0 0-2.44-1.411l-.628-.2v-2.3a.1.1 0 0 0-.1-.1h-2.51ZM12 9.9a2.1 2.1 0 1 0 0 4.2 2.1 2.1 0 0 0 0-4.2ZM8.1 12a3.9 3.9 0 1 1 7.8 0 3.9 3.9 0 0 1-7.8 0Z\" clip-rule=\"evenodd\"/></svg>',\n keywords: [\"settings\"],\n category: \"action\"\n}, o = (a) => /* @__PURE__ */ l(t, { ...a, svg: s });\no.displayName = \"IconSettings\";\nexport {\n o as IconSettings\n};\n//# sourceMappingURL=settings.es.js.map\n","import React, { type Dispatch, type HTMLAttributes, type SetStateAction } from \"react\";\nimport { Button } from \"@purpur/button\";\nimport { IconDownload } from \"@purpur/icon/download\";\nimport { IconMaximize } from \"@purpur/icon/maximize\";\nimport { IconMinimize } from \"@purpur/icon/minimize\";\nimport { IconSettings } from \"@purpur/icon/settings\";\nimport { Paragraph } from \"@purpur/paragraph\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./table-toolbar.module.scss\";\n\nexport type TableToolbarCopyProps = {\n buttons?: {\n export?: string;\n settings?: string;\n expand?: string;\n minimize?: string;\n clearFilters?: string;\n };\n ariaLabels?: {\n export?: string;\n settings?: string;\n expand?: string;\n minimize?: string;\n clearFilters?: string;\n };\n rowCount?: {\n showing: string;\n of: string;\n rows: string;\n };\n};\n\nexport type TableToolbarProps = HTMLAttributes<HTMLDivElement> & {\n onSetDrawerIsOpen: Dispatch<SetStateAction<boolean>>;\n onResetColumnFilters: () => void;\n onToggleExpand?: (value: boolean) => void;\n onExportData?: () => void;\n visibleRowCount: number;\n totalRowCount: number;\n toolbarCopy?: TableToolbarCopyProps;\n expanded: boolean;\n isSettingsDrawerOpen: boolean;\n isExportDrawerOpen: boolean;\n hasExportsDrawer: boolean;\n showFilters: boolean;\n disableClearFilters: boolean;\n settingsDrawerAriaControls: string;\n exportDrawerAriaControls: string;\n};\n\nconst rootClassName = \"purpur-table-toolbar\";\nconst cx = c.bind(styles);\nconst rootTestId = \"purpur-table-toolbar\";\n\nexport const TableToolbar = ({\n [\"aria-controls\"]: ariaControls,\n settingsDrawerAriaControls,\n exportDrawerAriaControls,\n onExportData,\n onResetColumnFilters,\n onSetDrawerIsOpen,\n onToggleExpand,\n disableClearFilters,\n hasExportsDrawer,\n expanded,\n isExportDrawerOpen,\n isSettingsDrawerOpen,\n showFilters,\n toolbarCopy: copy,\n totalRowCount,\n visibleRowCount,\n}: TableToolbarProps) => {\n\n // NOTE: expanded button should NOT have aria-expanded or aria-controls\n // according to a11y audit:\n // \"The ARIA expanded state is specifically designed for disclosure widgets to indicate whether hidden content has been revealed or collapsed.\n // Because the table is already visible and this button merely changes its visual width or layout, using aria-expanded is semantically incorrect and misleading.\n // Screen reader users will expect new content to have been inserted into the DOM, which is not the case.\n // Additionally, the aria-controls attribute is generally reserved for components that actually control the presence or focus of another element (like tabs or comboboxes) and provides little to no value for a layout toggle.\"\n\n return (\n <div data-testid={rootTestId} className={cx(rootClassName)}>\n <div className={cx(`${rootClassName}__content`)}>\n {copy?.rowCount && (\n <Paragraph data-testid={`${rootTestId}-table-rows-count`}>\n {`${copy.rowCount.showing} ${visibleRowCount} ${copy.rowCount.of} ${totalRowCount} ${copy.rowCount.rows}`}\n </Paragraph>\n )}\n {copy?.buttons?.clearFilters && showFilters && (\n <Button\n data-testid={`${rootTestId}-clear-filters-button`}\n variant=\"text\"\n onClick={onResetColumnFilters}\n type=\"button\"\n aria-label={copy?.ariaLabels?.clearFilters}\n aria-controls={ariaControls}\n disabled={disableClearFilters}\n >\n {copy.buttons.clearFilters}\n </Button>\n )}\n </div>\n\n <div className={cx(`${rootClassName}__content`)}>\n {copy?.buttons?.export && (\n <Button\n data-testid={`${rootTestId}-export-button`}\n variant=\"text\"\n type=\"button\"\n onClick={onExportData}\n aria-label={copy?.ariaLabels?.export}\n {...(hasExportsDrawer && {\n \"aria-expanded\": isExportDrawerOpen,\n \"aria-controls\": exportDrawerAriaControls,\n \"aria-haspopup\": \"dialog\",\n })}\n >\n <IconDownload size=\"xs\" />\n {copy.buttons.export}\n </Button>\n )}\n {copy?.buttons?.settings && (\n <Button\n data-testid={`${rootTestId}-settings-button`}\n variant=\"text\"\n onClick={() => onSetDrawerIsOpen(true)}\n type=\"button\"\n aria-label={copy?.ariaLabels?.settings}\n aria-expanded={isSettingsDrawerOpen}\n aria-controls={settingsDrawerAriaControls}\n aria-haspopup=\"dialog\"\n >\n <IconSettings size=\"xs\" />\n {copy.buttons.settings}\n </Button>\n )}\n {onToggleExpand && copy?.buttons?.expand && (\n <Button\n data-testid={`${rootTestId}-expand-button`}\n className={cx(`${rootClassName}__expand-button`)}\n variant=\"text\"\n onClick={() => onToggleExpand(!expanded)}\n type=\"button\"\n aria-label={expanded ? copy?.ariaLabels?.minimize : copy?.ariaLabels?.expand}\n >\n {expanded ? <IconMinimize size=\"xs\" /> : <IconMaximize size=\"xs\" />}\n {expanded ? copy.buttons.minimize : copy.buttons.expand}\n </Button>\n )}\n </div>\n </div>\n );\n};\n","import { useEffect,useState } from \"react\";\n\ninterface TableScrollRef {\n current: HTMLElement | null;\n}\n\nexport const useTableScroll = (ref: TableScrollRef): boolean => {\n const [isScrolled, setIsScrolled] = useState<boolean>(false);\n\n useEffect(() => {\n const handleScroll = (): void => {\n if (ref.current) {\n setIsScrolled(ref.current.scrollLeft > 0);\n }\n };\n\n const container = ref.current;\n if (container) {\n container.addEventListener(\"scroll\", handleScroll);\n }\n\n return (): void => {\n if (container) {\n container.removeEventListener(\"scroll\", handleScroll);\n }\n };\n }, [ref]);\n\n return isScrolled;\n};\n","import { type BadgeVariant } from \"@purpur/badge\";\nimport { type Row } from \"@tanstack/react-table\";\n\nexport const filterOnFilterKey = <TData>(\n row: Row<TData>,\n columnId: string,\n filterValue: {\n filterKey: string;\n value: string;\n partialMatch?: boolean;\n }\n): boolean => {\n const { filterKey, value, partialMatch } = filterValue;\n const cellValue = row.getValue<Record<string, unknown>>(columnId);\n return Boolean(\n value === \"\" ||\n cellValue[filterKey] === value ||\n (partialMatch && cellValue[filterKey]?.toString().toLowerCase().includes(value.toLowerCase()))\n );\n};\n\nexport const sortOnBadgeVariant = <TData>(\n row1: Row<TData>,\n row0: Row<TData>,\n columnId: string\n): number => {\n const row0Value = row0.getValue(columnId) as {\n variant: BadgeVariant;\n children: React.ReactNode;\n };\n const row1Value = row1.getValue(columnId) as {\n variant: BadgeVariant;\n children: React.ReactNode;\n };\n\n return row1Value.variant.localeCompare(row0Value.variant);\n};\n\nexport const sortOnBadgeValue = <TData>(\n row1: Row<TData>,\n row0: Row<TData>,\n columnId: string\n): number => {\n const row0Value = row0.getValue(columnId) as {\n variant: BadgeVariant;\n children: React.ReactNode;\n };\n const row1Value = row1.getValue(columnId) as {\n variant: BadgeVariant;\n children: React.ReactNode;\n };\n\n const row0String = row0Value.children as string;\n const row1String = row1Value.children as string;\n\n return row1String.localeCompare(row0String);\n};\n","import React, { type ReactElement, useEffect, useId, useMemo, useRef, useState } from \"react\";\nimport type { DragEndEvent, UniqueIdentifier } from \"@dnd-kit/core\";\nimport type {\n ColumnDef,\n ColumnFiltersState,\n CoreOptions,\n PaginationState,\n RowData,\n RowSelectionState,\n SortingState,\n TableOptions,\n VisibilityState,\n} from \"@tanstack/react-table\";\nimport {\n getCoreRowModel,\n getFilteredRowModel,\n getPaginationRowModel,\n getSortedRowModel,\n useReactTable,\n} from \"@tanstack/react-table\";\nexport { createColumnHelper } from \"@tanstack/react-table\";\nimport { type PaginationProps } from \"@purpur/pagination\";\nimport c from \"classnames/bind\";\n\nimport { DraggableTable } from \"./draggable-table\";\n\nexport type {\n ColumnDef,\n ColumnFiltersState,\n CoreOptions,\n PaginationState,\n RowData,\n RowSelectionState,\n SortingState,\n TableOptions,\n VisibilityState,\n};\n\nimport styles from \"./table.module.scss\";\nimport { TableActionBar } from \"./table-action-bar\";\nimport { TableContent } from \"./table-content\";\nimport { TableExportDrawer } from \"./table-export-drawer\";\nimport { TableHeader } from \"./table-header\";\nimport { SortableTableHeaders, StandardTableHeaders } from \"./table-headers\";\nimport { TableSettingsDrawer, type TableSettingsDrawerCopyProps } from \"./table-settings-drawer\";\nimport { TableToolbar } from \"./table-toolbar\";\nimport type {\n WithActionBarProps,\n WithColumnDragProps,\n WithEmptyTableProps,\n WithLoadingProps,\n WithoutActionBarProps,\n WithoutColumnDragProps,\n WithoutEmptyTableProps,\n WithoutLoadingProps,\n WithoutRowSelectionProps,\n WithoutToolbarProps,\n WithRowSelectionProps,\n WithSortingProps,\n WithToolbarProps,\n} from \"./types\";\nimport { useTableScroll } from \"./use-table-scroll.hook\";\nimport { filterOnFilterKey, sortOnBadgeValue, sortOnBadgeVariant } from \"./utils/custom-functions\";\n\nconst cx = c.bind(styles);\n\nexport type TableProps<TData extends RowData> = {\n className?: string;\n variant?: \"primary\" | \"secondary\";\n columns: CoreOptions<TData>[\"columns\"];\n data: TData[];\n paginationComponent?: ReactElement<PaginationProps>;\n fullWidth?: boolean;\n controlledShowColumnFilters?: boolean;\n onShowColumnFiltersChange?: (value: boolean) => void;\n controlledStickyFirstColumn?: boolean;\n onStickyFirstColumnChange?: (value: boolean) => void;\n defaultShowColumnFilters?: boolean;\n defaultStickyFirstColumn?: boolean;\n /**\n * @deprecated Use defaultStickyFirstColumn instead\n */\n stickyFirstColumn?: boolean;\n onRowsCountChange?: (rowsCount: number) => void;\n drawerZIndex?: number;\n} & (WithToolbarProps | WithoutToolbarProps) &\n (WithSortingProps) &\n (WithActionBarProps | WithoutActionBarProps) &\n (WithEmptyTableProps | WithoutEmptyTableProps) &\n (WithoutLoadingProps | WithLoadingProps) &\n (WithoutRowSelectionProps | WithRowSelectionProps<TData>) &\n (WithColumnDragProps | WithoutColumnDragProps) &\n Partial<TableOptions<TData>>;\n\nconst rootClassName = \"purpur-table\";\n\nexport const Table = <TData extends RowData>({\n actionbarCopy,\n actionBarTotalRowCount,\n className,\n columns,\n data,\n emptyTableCopy,\n emptyTableHeadingTag,\n emptyTableIcon,\n enableActionBar,\n enableToolbar,\n exportDrawerCopy,\n exportFormats,\n fullWidth = true,\n loading,\n paginationComponent,\n rowSelectionAriaLabels,\n settingsDrawerCopy,\n showOnlySelectedRows,\n skeletonRows,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n sortingAriaLabels,\n state,\n controlledShowColumnFilters,\n onShowColumnFiltersChange,\n controlledStickyFirstColumn,\n onStickyFirstColumnChange,\n defaultShowColumnFilters,\n defaultStickyFirstColumn,\n stickyFirstColumn: stickyFirstColumnDeprecated,\n toolbarCopy,\n toolbarTotalRowCount,\n variant = \"primary\",\n getRowId,\n onExportData,\n onRowsCountChange,\n controlledExpanded,\n defaultExpanded,\n onToggleExpand,\n onPrimaryButtonClick,\n onSecondaryButtonClick,\n setShowOnlySelectedRows,\n drawerZIndex = 6,\n enableColumnDrag,\n columnDragAriaLabelsCopy,\n ...props\n}: TableProps<TData>) => {\n const [isSettingsDrawerOpen, setSettingsDrawerIsOpen] = useState(false);\n const [isExportDrawerOpen, setExportDrawerIsOpen] = useState(false);\n\n // Determine if controlled based on BOTH prop AND handler being provided\n const isExpandedControlled = controlledExpanded !== undefined && onToggleExpand !== undefined;\n const isShowColumnFiltersControlled =\n controlledShowColumnFilters !== undefined && onShowColumnFiltersChange !== undefined;\n const isStickyFirstColumnControlled =\n controlledStickyFirstColumn !== undefined && onStickyFirstColumnChange !== undefined;\n const effectiveDefaultStickyFirstColumn =\n defaultStickyFirstColumn !== undefined\n ? defaultStickyFirstColumn\n : stickyFirstColumnDeprecated !== undefined\n ? stickyFirstColumnDeprecated\n : true;\n\n // Internal state - only used when not controlled\n const [expandedInternal, setExpandedInternal] = useState(defaultExpanded ?? false);\n const [showColumnFiltersInternal, setShowColumnFiltersInternal] = useState(\n defaultShowColumnFilters ?? Boolean(props.enableFilters)\n );\n const [stickyFirstColumnInternal, setStickyFirstColumnInternal] = useState(\n effectiveDefaultStickyFirstColumn\n );\n\n // Use controlled value if fully controlled, otherwise use internal state\n const expanded = isExpandedControlled ? controlledExpanded! : expandedInternal;\n const showColumnFiltersEnabled = isShowColumnFiltersControlled\n ? controlledShowColumnFilters!\n : showColumnFiltersInternal;\n const stickyFirstColumn = isStickyFirstColumnControlled\n ? controlledStickyFirstColumn!\n : stickyFirstColumnInternal;\n\n // Wrapper functions to handle both controlled and uncontrolled state\n const onToggleExpandInternal = (value: boolean) => {\n if (!isExpandedControlled) {\n setExpandedInternal(value);\n }\n onToggleExpand!(value);\n };\n\n const setShowColumnFiltersEnabled = (value: boolean | ((prev: boolean) => boolean)) => {\n const newValue = typeof value === \"function\" ? value(showColumnFiltersEnabled) : value;\n\n if (isShowColumnFiltersControlled) {\n onShowColumnFiltersChange!(newValue);\n } else {\n setShowColumnFiltersInternal(newValue);\n }\n };\n\n const setStickyFirstColumn = (value: boolean | ((prev: boolean) => boolean)) => {\n const newValue = typeof value === \"function\" ? value(stickyFirstColumn) : value;\n\n if (isStickyFirstColumnControlled) {\n onStickyFirstColumnChange!(newValue);\n } else {\n setStickyFirstColumnInternal(newValue);\n }\n };\n\n const prevShowOnlySelectedRows = useRef(showOnlySelectedRows);\n const tableContainerRef = useRef<HTMLTableElement>(null);\n const uid = useId();\n const isScrolled = useTableScroll(tableContainerRef);\n\n const [activeId, setActiveId] = useState<UniqueIdentifier | null>(null);\n\n const classes = cx([\n rootClassName,\n {\n [`${rootClassName}--${variant}`]: variant,\n [`${rootClassName}--without-toolbar`]: !enableToolbar || !settingsDrawerCopy,\n },\n className,\n ]);\n\n // Only add row selection columns when enableRowSelection is true\n if (props.enableRowSelection) {\n columns = props.enableMultiRowSelection\n ? [\n {\n id: \"row-selection\",\n header: rowSelectionAriaLabels?.header,\n size: 46, // if changed, remember to adjust \"left\" on purpur-table-row-cell__sticky-column\"\n meta: {\n cellType: \"rowSelection\",\n rowSelectionAriaLabels,\n },\n },\n ...columns,\n ]\n : [\n {\n id: \"row-toggle\",\n header: rowSelectionAriaLabels?.header,\n size: 46, // if changed, remember to adjust \"left\" on purpur-table-row-cell__sticky-column\n meta: {\n cellType: \"rowToggle\",\n rowSelectionAriaLabels,\n },\n },\n ...columns,\n ];\n }\n\n const { filterFns, sortingFns, ...restProps } = props;\n\n const tanstackTable = useReactTable({\n columns,\n data,\n state,\n enableColumnFilters: showColumnFiltersEnabled,\n getRowId,\n filterFns: {\n ...filterFns,\n filterOnFilterKey: filterOnFilterKey<TData>,\n },\n sortingFns: {\n ...sortingFns,\n sortOnBadgeVariant: sortOnBadgeVariant<TData>,\n sortOnBadgeValue: sortOnBadgeValue<TData>,\n },\n getCoreRowModel: getCoreRowModel(),\n getSortedRowModel:\n props.enableSorting && !props.manualSorting ? getSortedRowModel() : undefined,\n getFilteredRowModel:\n props.enableFilters && !props.manualFiltering ? getFilteredRowModel() : undefined,\n getPaginationRowModel:\n paginationComponent && !props.manualPagination ? getPaginationRowModel() : undefined,\n ...restProps,\n });\n\n const rowCount = tanstackTable.getRowCount();\n\n useEffect(() => {\n if (onRowsCountChange) {\n onRowsCountChange(rowCount);\n }\n }, [rowCount, onRowsCountChange]);\n\n // Handle drag end - Only used when DnD is enabled\n const handleDragEnd = (event: DragEndEvent) => {\n const { active, over } = event;\n\n // Don't allow moving row selection columns\n if (active.id === \"row-selection\" || active.id === \"row-toggle\") {\n setActiveId(null);\n return;\n }\n\n // Don't allow dropping over row selection columns\n if (over && (over.id === \"row-selection\" || over.id === \"row-toggle\")) {\n setActiveId(null);\n return;\n }\n\n if (over && active.id !== over.id) {\n const currentOrder = tanstackTable.getAllLeafColumns().map((column) => column.id);\n const oldIndex = currentOrder.indexOf(String(active.id));\n const newIndex = currentOrder.indexOf(String(over.id));\n\n if (oldIndex !== -1 && newIndex !== -1) {\n const newOrder = [...currentOrder];\n const [removed] = newOrder.splice(oldIndex, 1);\n newOrder.splice(newIndex, 0, removed);\n tanstackTable.setColumnOrder(newOrder);\n }\n }\n\n setActiveId(null);\n };\n\n useEffect(() => {\n if (showOnlySelectedRows !== prevShowOnlySelectedRows.current) {\n tanstackTable.setPageIndex(0);\n prevShowOnlySelectedRows.current = showOnlySelectedRows;\n }\n }, [showOnlySelectedRows, tanstackTable]);\n\n const selectedRowsData = useMemo(() => {\n if (!state?.rowSelection) return { count: 0, visible: false };\n const count = Object.keys(state.rowSelection).length;\n return { count, visible: count > 0 };\n }, [state?.rowSelection]);\n\n const selectedRowsCount = selectedRowsData.count;\n const actionBarVisible = selectedRowsData.visible;\n\n const handleCancelSelection = () => {\n tanstackTable.resetRowSelection();\n setShowOnlySelectedRows?.(false);\n };\n\n const handleToggleSelected = () => {\n if (setShowOnlySelectedRows) {\n setShowOnlySelectedRows((prev) => !prev);\n }\n };\n\n const getStickyColumn = React.useCallback(\n (index: number) => {\n // When rowSelectionEnabled is true, the first two columns are sticky\n // Otherwise, only the first column is sticky\n return props.enableRowSelection ? index <= 1 : index === 0;\n },\n [props.enableRowSelection]\n );\n\n const handleResetColumnFilters = () => {\n tanstackTable.resetColumnFilters();\n };\n\n const handleExportButton = () => {\n if (typeof exportFormats === \"string\") {\n handleExportData(exportFormats);\n } else {\n setExportDrawerIsOpen((prev) => !prev);\n }\n };\n\n const handleExportData = (format: string) => {\n onExportData?.(format);\n };\n\n const handleResetSettings = () => {\n setShowColumnFiltersEnabled(defaultShowColumnFilters ?? Boolean(props.enableFilters));\n setStickyFirstColumn(effectiveDefaultStickyFirstColumn);\n tanstackTable.resetColumnOrder();\n tanstackTable.resetColumnVisibility();\n };\n\n const showBorder = React.useCallback(\n (index: number) => {\n // Only show the border for sticky columns when the table is scrolled\n return isScrolled && stickyFirstColumn && getStickyColumn(index);\n },\n [isScrolled, stickyFirstColumn, getStickyColumn]\n );\n\n const tableRows = tanstackTable.getRowModel().rows;\n const emptyTable = tableRows.length === 0 && Boolean(emptyTableCopy);\n\n // Extract header groups to avoid complex expression in dependency array\n const headerGroups = tanstackTable.getHeaderGroups();\n\n // Memoized table header to prevent re-renders and maintain filter focus\n const tableHeader = React.useMemo(\n () => (\n <TableHeader columnFiltersEnabled={showColumnFiltersEnabled}>\n {headerGroups.map((headerGroup) => {\n if (enableColumnDrag && state?.columnOrder) {\n return (\n <SortableTableHeaders\n key={headerGroup.id}\n headerGroup={headerGroup}\n tanstackTable={tanstackTable}\n tableHasFilters={showColumnFiltersEnabled}\n emptyTable={emptyTable}\n stickyFirstColumn={stickyFirstColumn}\n isScrolled={isScrolled}\n getStickyColumn={getStickyColumn}\n showBorder={showBorder}\n enableSorting={props.enableSorting || false}\n columnOrder={state.columnOrder}\n activeId={activeId}\n enableColumnDrag={enableColumnDrag}\n columnDragAriaLabelsCopy={columnDragAriaLabelsCopy}\n />\n );\n }\n\n return (\n <StandardTableHeaders\n key={headerGroup.id}\n headerGroup={headerGroup}\n tanstackTable={tanstackTable}\n tableHasFilters={showColumnFiltersEnabled}\n emptyTable={emptyTable}\n stickyFirstColumn={stickyFirstColumn}\n isScrolled={isScrolled}\n getStickyColumn={getStickyColumn}\n showBorder={showBorder}\n enableSorting={props.enableSorting || false}\n />\n );\n })}\n </TableHeader>\n ),\n [\n showColumnFiltersEnabled,\n headerGroups,\n enableColumnDrag,\n state?.columnOrder,\n props.enableSorting,\n columnDragAriaLabelsCopy,\n tanstackTable,\n emptyTable,\n stickyFirstColumn,\n isScrolled,\n getStickyColumn,\n showBorder,\n activeId,\n ]\n );\n\n const isEmptyTable = tableRows.length === 0 && Boolean(emptyTableCopy);\n\n const tableContent = (\n <TableContent\n tanstackTable={tanstackTable}\n tableRows={tableRows}\n fullWidth={fullWidth}\n tableHeader={tableHeader}\n loading={loading}\n skeletonRows={skeletonRows}\n isEmptyTable={isEmptyTable}\n stickyFirstColumn={stickyFirstColumn}\n getStickyColumn={getStickyColumn}\n isScrolled={isScrolled}\n showBorder={showBorder}\n enableColumnDrag={enableColumnDrag}\n activeId={activeId}\n getColumnWidths={() =>\n tanstackTable.getVisibleLeafColumns().map((column) => column.getSize() || \"100%\")\n }\n variant={variant}\n emptyTableHeadingTag={emptyTableHeadingTag}\n emptyTableCopy={emptyTableCopy}\n emptyTableIcon={emptyTableIcon}\n tableContainerId={`${uid}-table-container`}\n />\n );\n\n return (\n <div id={`${uid}-table`} className={classes}>\n {enableToolbar && (\n <TableToolbar\n aria-controls={`${uid}-table`}\n settingsDrawerAriaControls={`${uid}-settings-drawer`}\n exportDrawerAriaControls={`${uid}-export-drawer`}\n onSetDrawerIsOpen={setSettingsDrawerIsOpen}\n onResetColumnFilters={handleResetColumnFilters}\n onToggleExpand={onToggleExpandInternal}\n onExportData={handleExportButton}\n totalRowCount={toolbarTotalRowCount ?? tanstackTable.getRowCount()}\n visibleRowCount={tanstackTable.getRowModel().rows.length}\n toolbarCopy={toolbarCopy}\n expanded={expanded}\n isSettingsDrawerOpen={isSettingsDrawerOpen}\n hasExportsDrawer={Array.isArray(exportFormats)}\n isExportDrawerOpen={isExportDrawerOpen}\n showFilters={showColumnFiltersEnabled}\n disableClearFilters={tanstackTable.getState().columnFilters.length === 0}\n />\n )}\n <div\n id={`${uid}-table-container`}\n className={cx(`${rootClassName}__container`, {\n [`${rootClassName}__container--scrolled`]: isScrolled,\n })}\n ref={tableContainerRef}\n >\n {enableColumnDrag && columnDragAriaLabelsCopy ? (\n <DraggableTable\n activeId={activeId}\n setActiveId={setActiveId}\n handleDragEnd={handleDragEnd}\n tableRows={tableRows}\n tanstackTable={tanstackTable}\n variant={variant}\n fullWidth={fullWidth}\n showColumnFiltersEnabled={showColumnFiltersEnabled}\n columnDragAriaLabelsCopy={columnDragAriaLabelsCopy}\n rootClassName={rootClassName}\n >\n {tableContent}\n </DraggableTable>\n ) : (\n tableContent\n )}\n </div>\n {paginationComponent}\n {enableActionBar && actionBarTotalRowCount && actionbarCopy && onPrimaryButtonClick && (\n <TableActionBar\n rowCount={actionBarTotalRowCount}\n selectedRowsCount={selectedRowsCount}\n copy={actionbarCopy}\n isVisible={actionBarVisible}\n onCancelSelection={handleCancelSelection}\n onToggleSelected={handleToggleSelected}\n onPrimaryButtonClick={onPrimaryButtonClick}\n onSecondaryButtonClick={onSecondaryButtonClick}\n />\n )}\n {enableToolbar && settingsDrawerCopy && (\n <TableSettingsDrawer\n id={`${uid}-settings-drawer`}\n setDrawerIsOpen={setSettingsDrawerIsOpen}\n setShowColumnFiltersEnabled={setShowColumnFiltersEnabled}\n setStickyFirstColumn={setStickyFirstColumn}\n getAllColumns={tanstackTable.getAllLeafColumns}\n isDrawerOpen={isSettingsDrawerOpen}\n showColumnFilters={showColumnFiltersEnabled}\n stickyFirstColumn={stickyFirstColumn}\n onResetSettings={handleResetSettings}\n columnFiltersEnabled={Boolean(props.enableFilters)}\n zIndex={drawerZIndex}\n {...(enableColumnDrag && state?.columnOrder\n ? {\n enableColumnDrag: true,\n copy: settingsDrawerCopy as TableSettingsDrawerCopyProps<true>,\n columnOrder: state.columnOrder,\n onColumnOrderChange: (newOrder) => {\n tanstackTable.setColumnOrder(newOrder);\n },\n }\n : {\n enableColumnDrag: false,\n copy: settingsDrawerCopy as TableSettingsDrawerCopyProps<false>,\n })}\n />\n )}\n {Array.isArray(exportFormats) && exportDrawerCopy && (\n <TableExportDrawer\n id={`${uid}-export-drawer`}\n isOpen={isExportDrawerOpen}\n setDrawerIsOpen={setExportDrawerIsOpen}\n exportFormats={exportFormats}\n copy={exportDrawerCopy}\n onExportData={handleExportData}\n zIndex={drawerZIndex}\n />\n )}\n </div>\n );\n};\n\nTable.displayName = \"Table\";\n"],"names":["createColumnHelper","accessor","column","functionalUpdate","updater","input","makeStateUpdater","key","instance","old","isFunction","d","isNumberArray","val","flattenBy","arr","getChildren","flat","recurse","subArr","item","children","memo","getDeps","fn","opts","deps","result","depArgs","depTime","newDeps","dep","index","resultTime","depEndTime","resultEndTime","resultFpsPercentage","pad","str","num","getMemoOptions","tableOptions","debugLevel","onChange","_tableOptions$debugAl","createCell","table","row","columnId","getRenderValue","_cell$getValue","cell","feature","createColumn","columnDef","depth","parent","_ref","_resolvedColumnDef$id","resolvedColumnDef","accessorKey","id","accessorFn","originalRow","_result","_column$columns","orderColumns","_column$columns2","leafColumns","debug","createHeader","options","_options$id","header","leafHeaders","recurseHeader","h","Headers","allColumns","left","right","_left$map$filter","_right$map$filter","leftColumns","rightColumns","centerColumns","buildHeaderGroups","_left$map$filter2","orderedLeafColumns","_right$map$filter2","headerGroups","headerGroup","flatHeaders","_header$subHeaders","_header$subHeaders2","_header$subHeaders3","center","_left$0$headers","_left$","_center$0$headers","_center$","_right$0$headers","_right$","columnsToGroup","headerFamily","_headerGroups$0$heade","_headerGroups$","maxDepth","findMaxDepth","columns","createHeaderGroup","headersToGroup","pendingParentHeaders","headerToGroup","latestPendingParentHeader","isLeafHeader","isPlaceholder","bottomHeaders","recurseHeadersForSpans","headers","colSpan","rowSpan","childRowSpans","childColSpan","childRowSpan","minChildRowSpan","createRow","original","rowIndex","subRows","parentId","_row$getValue","parentRows","currentRow","parentRow","allCells","acc","i","ColumnFaceting","includesString","filterValue","_filterValue$toString","search","testFalsey","includesStringSensitive","_row$getValue2","equalsString","_row$getValue3","arrIncludes","_row$getValue4","arrIncludesAll","_row$getValue5","arrIncludesSome","_row$getValue6","equals","weakEquals","inNumberRange","min","max","rowValue","unsafeMin","unsafeMax","parsedMin","parsedMax","temp","filterFns","ColumnFiltering","state","firstRow","value","_table$options$filter","_table$options$filter2","_column$columnDef$ena","_table$options$enable","_table$options$enable2","_table$getState$colum","_table$getState$colum2","_table$getState$colum3","filterFn","previousFilter","newFilter","shouldAutoRemoveFilter","_old$filter","newFilterObj","_old$map","_table","updateFn","_functionalUpdate","filter","defaultState","_table$initialState$c","_table$initialState","sum","_leafRows","childRows","next","nextValue","extent","mean","leafRows","count","median","values","mid","nums","a","b","unique","uniqueCount","_columnId","aggregationFns","ColumnGrouping","props","_toString","_props$getValue","_table$getState$group","_table$getState$group2","canGroup","_table$options$aggreg","_table$options$aggreg2","_table$initialState$g","_row$subRows","grouping","groupedColumnMode","nonGroupingColumns","col","g","ColumnOrdering","position","_getVisibleLeafColumns","_columns$","_columns","columnOrder","orderedColumns","columnOrderCopy","columnsCopy","targetColumnId","foundIndex","getDefaultColumnPinningState","ColumnPinning","columnIds","_old$left3","_old$right3","_old$left","_old$right","_old$left2","_old$right2","_d$columnDef$enablePi","leafColumnIds","isLeft","isRight","leftAndRight","_pinningState$positio","pinningState","_pinningState$left","_pinningState$right","safelyAccessDocument","_document","defaultColumnSizing","getDefaultColumnSizingInfoState","ColumnSizing","_column$columnDef$min","_column$columnDef$max","columnSize","_ref2","_","rest","_header$column$getSiz","prevSiblingHeader","_contextDocument","canResize","e","isTouchStartEvent","startSize","columnSizingStart","clientX","newColumnSizing","updateOffset","eventType","clientXPos","_old$startOffset","_old$startSize","deltaDirection","deltaOffset","deltaPercentage","_ref3","headerSize","onMove","onEnd","contextDocument","mouseEvents","touchEvents","_e$touches$","passiveIfSupported","passiveEventSupported","_table$initialState$c2","_table$getHeaderGroup","_table$getHeaderGroup2","_table$getLeftHeaderG","_table$getLeftHeaderG2","_table$getCenterHeade","_table$getCenterHeade2","_table$getRightHeader","_table$getRightHeader2","passiveSupported","supported","noop","ColumnVisibility","childColumns","c","cells","makeVisibleColumnsMethod","getColumns","_value","obj","_target","GlobalFaceting","GlobalFiltering","_table$getCoreRowMode","_table$options$getCol","globalFilterFn","RowExpanding","registered","queued","_table$options$autoRe","expanded","_table$initialState$e","splitId","_expanded","exists","oldExpanded","rowId","_table$options$getIsR","_table$options$getRow","isFullyExpanded","canExpand","defaultPageIndex","defaultPageSize","getDefaultPaginationState","RowPagination","safeUpdater","_table$initialState$p","pageIndex","maxPageIndex","_table$initialState$p2","_table$initialState$p3","_table$initialState2","pageSize","topRowIndex","_table$options$pageCo","newPageCount","pageCount","pageOptions","_table$options$pageCo2","_table$options$rowCou","getDefaultRowPinningState","RowPinning","includeLeafRows","includeParentRows","leafRowIds","parentRowIds","rowIds","_old$top3","_old$bottom3","_old$top","_old$bottom","_old$top2","_old$bottom2","enableRowPinning","enablePinning","top","bottom","isTop","isBottom","_ref4","_visiblePinnedRowIds$","visiblePinnedRowIds","_ref5","_table$initialState$r","_pinningState$top","_pinningState$bottom","visibleRows","pinnedRowIds","_table$options$keepPi","allRows","topPinnedRowIds","bottomPinnedRowIds","topAndBottom","RowSelection","rowSelection","preGroupedFlatRows","resolvedValue","mutateRowIsSelected","rowModel","selectRowsFn","isAllRowsSelected","paginationFlatRows","isAllPageRowsSelected","_table$getState$rowSe","totalSelected","isSelected","_opts$selectChildren","selectedRowIds","isRowSelected","isSubRowSelected","_table$options$enable3","canSelect","includeChildren","newSelectedFlatRows","newSelectedRowsById","recurseRows","rows","_row$subRows2","selection","_selection$row$id","_row$subRows3","allChildrenSelected","someSelected","subRow","subRowChildrenSelected","reSplitAlphaNumeric","alphanumeric","rowA","rowB","compareAlphanumeric","toString","alphanumericCaseSensitive","text","compareBasic","textCaseSensitive","datetime","basic","aStr","bStr","aa","bb","an","bn","combo","sortingFns","RowSorting","firstRows","isString","_table$options$sortin","_table$options$sortin2","desc","multi","nextSortingOrder","hasManualValue","existingSorting","existingIndex","newSorting","sortAction","nextDesc","_table$options$maxMul","_column$columnDef$sor","firstSortDirection","isSorted","_column$columnDef$ena2","_table$getState$sorti","columnSort","_table$getState$sorti2","_table$getState$sorti3","canSort","_table$initialState$s","builtInFeatures","createTable","_options$_features","_options$initialState","_features","defaultOptions","mergeOptions","initialState","_feature$getInitialSt","queuedTimeout","coreInstance","cb","error","newOptions","searchAll","defaultColumn","_defaultColumn","_props$renderValue$to","_props$renderValue","columnDefs","recurseColumns","groupingColumnDef","flatColumns","getCoreRowModel","data","accessRows","originalRows","_row$originalSubRows","expandRows","expandedRows","handleRow","filterRows","filterRowImpl","filterRowModelFromLeafs","filterRowModelFromRoot","rowsToFilter","filterRow","_table$options$maxLea","newFilteredFlatRows","newFilteredRowsById","recurseFilterRows","newRow","_table$options$maxLea2","getFilteredRowModel","columnFilters","globalFilter","resolvedColumnFilters","resolvedGlobalFilters","_filterFn$resolveFilt","filterableIds","globallyFilterableColumns","_globalFilterFn$resol","currentColumnFilter","currentGlobalFilter","j","filterMeta","filterRowsImpl","getPaginationRowModel","pagination","flatRows","rowsById","pageStart","pageEnd","paginatedRowModel","getSortedRowModel","sorting","sortingState","sortedFlatRows","availableSorting","sort","_table$getColumn","columnInfoById","sortEntry","sortData","sortedData","_sortEntry$desc","columnInfo","sortUndefined","isDesc","sortInt","aValue","bValue","aUndefined","bUndefined","flexRender","Comp","isReactComponent","React","component","isClassComponent","isExoticComponent","proto","useReactTable","resolvedOptions","tableRef","setState","prev","restrictToHorizontalAxis","transform","restrictToBoundingRect","rect","boundingRect","restrictToParentElement","containerNodeRect","draggingNodeRect","restrictToVerticalAxis","cx","styles","rootClassName","TableBody","className","classes","arrayMove","array","from","to","newArray","getSortedRects","items","rects","accumulator","isValidIndex","itemsEqual","normalizeDisabled","disabled","defaultScale","horizontalListSortingStrategy","_rects$activeIndex","fallbackActiveRect","activeIndex","overIndex","activeNodeRect","itemGap","getItemGap","newIndexRect","currentRect","previousRect","nextRect","rectSortingStrategy","newRects","oldRect","newRect","defaultScale$1","verticalListSortingStrategy","overIndexRect","getItemGap$1","clientRects","ID_PREFIX","Context","SortableContext","userDefinedItems","strategy","disabledProp","active","dragOverlay","droppableRects","over","measureDroppableContainers","useDndContext","containerId","useUniqueId","useDragOverlay","useMemo","isDragging","previousItemsRef","useRef","itemsHaveChanged","disableTransforms","useIsomorphicLayoutEffect","useEffect","contextValue","defaultNewIndexGetter","defaultAnimateLayoutChanges","isSorting","wasDragging","newIndex","previousItems","previousContainerId","transition","defaultTransition","transitionProperty","disabledTransition","CSS","defaultAttributes","useDerivedTransform","node","derivedTransform","setDerivedtransform","useState","previousIndex","initial","current","getClientRect","delta","useSortable","animateLayoutChanges","userDefinedAttributes","localDisabled","customData","getNewIndex","localStrategy","resizeObserverConfig","globalDisabled","sortedRects","globalStrategy","useContext","normalizeLocalDisabled","itemsAfterCurrentSortable","isOver","setDroppableNodeRef","useDroppable","activatorEvent","attributes","setDraggableNodeRef","listeners","setActivatorNodeRef","useDraggable","setNodeRef","useCombinedRefs","displaceItem","shouldDisplaceDragSource","dragSourceDisplacement","finalTransform","activeId","previous","shouldAnimateLayoutChanges","timeoutId","getTransition","isKeyboardEvent","_localDisabled$dragga","_localDisabled$droppa","hasSortableData","entry","directions","KeyboardCode","sortableKeyboardCoordinates","event","collisionRect","droppableContainers","scrollableAncestors","filteredContainers","collisions","closestCorners","closestId","getFirstCollision","activeDroppable","newDroppable","newNode","hasDifferentScrollAncestors","getScrollableAncestors","element","hasSameContainer","isSameContainer","isAfterActive","isAfter","offset","rectCoordinates","subtract","l","n","o","r","w","t","DragIndicatorCircle","container","themePortalContainer","useThemePortalContainer","resolvedContainer","indicatorStyles","createPortal","C","TableColumnDragHandle","overlayActive","isFirstColumn","isLastColumn","columnDragAriaLabel","dragListeners","jsx","IconDragHorizontal","useDragIndicatorPosition","elementRef","dropIndicatorPosition","setPosition","useLayoutEffect","calculatePosition","tableContainer","offsetLeft","offsetRight","containerRect","handleUpdate","useDropIndicator","itemId","sortableId","enableDrag","dndContext","overId","sortableItems","itemOrder","useElementVisibility","ref","threshold","isVisible","setIsVisible","currentElement","observer","useTruncatedTooltip","hasPopover","setHasPopover","showPopover","setShowPopover","containerRef","checkContentOverflow","contentElement","containerWidth","contentWidth","pxToRem","pxValue","conversionFactor","pxToRemString","TableColumnHeaderCell","enableSorting","stickyColumn","tanstackTable","isScrolled","showBorder","enableColumnDrag","tableHasFilters","headerRef","isActiveColumn","draggingActive","isCheckBox","isRadiobutton","hasFilter","getSortingDirection","sortingDirection","widthInRemString","setRefs","circleIndicatorPosition","jsxs","Fragment","HeaderContent","Filter","HeaderCheckBox","ariaLabel","VisuallyHidden","Button","HeaderParagraph","getIcon","checked","Checkbox","onMouseEnter","onMouseLeave","content","Paragraph","Tooltip","IconArrowDown","IconArrowUp","IconSorter","filterVariant","filterKey","filterPlaceholder","filterAriaLabel","columnFilterValue","TextField","IconSearch","selectProps","Select","TableHeader","columnFiltersEnabled","TableRow","dataTestId","EmptyCell","BadgeCell","variant","Badge","BodyTextCell","minWidthInRemString","ButtonCell","buttonProps","metaOnClick","restButtonProps","ButtonGroupCell","buttons","icon","restProps","CtaLinkCell","CtaLink","DateCell","dateString","showTime","dateObj","date","time","ErrorAlertMessageCell","message","IconError","IconTextCell","LeadTextCell","LinkCell","href","Link","NumberCell","rightAlignCell","RowSelectionCell","RowToggleCell","ToggleCell","toggleProps","Toggle","WarningAlertMessageCell","IconAlert","TableRowCell","isLastRow","isFirstCell","isLastCell","isEmptyTable","isRowSelector","cellContent","getCellContent","cellType","enhancedColumnKeyboardCoordinates","currentCoordinates","activeRect","stepSize","newX","DraggableTable","setActiveId","handleDragEnd","tableRows","fullWidth","showColumnFiltersEnabled","columnDragAriaLabelsCopy","sensors","useSensors","useSensor","PointerSensor","KeyboardSensor","TouchSensor","DndContext","closestCenter","MeasuringStrategy","DragOverlay","purpurMotionDuration150","purpurMotionEasingEaseInOut","SCREEN_MEDIA_QUERY","purpurBreakpointRelativeLg","useScreenSize","isLgOrSmaller","setIsLgOrSmaller","maxMediumScreen","updateSize","rootTestId","TableActionBar","rowCount","selectedRowsCount","copy","onCancelSelection","onToggleSelected","onPrimaryButtonClick","onSecondaryButtonClick","uid","useId","EmptyTable","tag","title","description","tableContainerId","visibleWidth","setVisibleWidth","updateWidth","Heading","TableRowCellSkeleton","cellWidth","cellWidthString","Skeleton","LoadingTableRows","getStickyColumn","stickyFirstColumn","cellWidths","cellIndex","TableContent","tableHeader","loading","skeletonRows","getColumnWidths","emptyTableHeadingTag","emptyTableCopy","emptyTableIcon","TableExportDrawer","exportFormats","isOpen","onExportData","setDrawerIsOpen","zIndex","Drawer","format","StandardTableHeaders","emptyTable","SortableTableHeaders","isSelectionColumn","s","TableSettingsDrawer","isDrawerOpen","showColumnFilters","getAllColumns","onResetSettings","setShowColumnFiltersEnabled","setStickyFirstColumn","onColumnOrderChange","FooterContent","GeneralSettings","ColumnManagement","onClick","IconSync","ToggleWrapper","heading","filterAwayRowSelectionToggle","filteredColumns","showColumnReorder","Tabs","VisibleColumns","ColumnOrder","visible","isDisabled","handleDragStart","currentOrder","oldIndex","newOrder","removed","moveColumn","direction","activeColumn","DraggableColumnItemWithIndicator","DraggableColumnItem","label","onMoveUp","onMoveDown","isFirst","isLast","overlay","IconDragVertical","m","TableToolbar","ariaControls","settingsDrawerAriaControls","exportDrawerAriaControls","onResetColumnFilters","onSetDrawerIsOpen","onToggleExpand","disableClearFilters","hasExportsDrawer","isExportDrawerOpen","isSettingsDrawerOpen","showFilters","totalRowCount","visibleRowCount","IconDownload","IconSettings","IconMinimize","IconMaximize","useTableScroll","setIsScrolled","handleScroll","filterOnFilterKey","partialMatch","cellValue","sortOnBadgeVariant","row1","row0","row0Value","sortOnBadgeValue","row1Value","row0String","Table","actionbarCopy","actionBarTotalRowCount","enableActionBar","enableToolbar","exportDrawerCopy","paginationComponent","rowSelectionAriaLabels","settingsDrawerCopy","showOnlySelectedRows","sortingAriaLabels","controlledShowColumnFilters","onShowColumnFiltersChange","controlledStickyFirstColumn","onStickyFirstColumnChange","defaultShowColumnFilters","defaultStickyFirstColumn","stickyFirstColumnDeprecated","toolbarCopy","toolbarTotalRowCount","getRowId","onRowsCountChange","controlledExpanded","defaultExpanded","setShowOnlySelectedRows","drawerZIndex","setSettingsDrawerIsOpen","setExportDrawerIsOpen","isExpandedControlled","isShowColumnFiltersControlled","isStickyFirstColumnControlled","effectiveDefaultStickyFirstColumn","expandedInternal","setExpandedInternal","showColumnFiltersInternal","setShowColumnFiltersInternal","stickyFirstColumnInternal","setStickyFirstColumnInternal","onToggleExpandInternal","newValue","prevShowOnlySelectedRows","tableContainerRef","selectedRowsData","actionBarVisible","handleCancelSelection","handleToggleSelected","handleResetColumnFilters","handleExportButton","handleExportData","handleResetSettings","tableContent"],"mappings":"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","x_google_ignoreList":[0,1,2,4]}