@purpur/library 9.10.1 → 10.0.1

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 (496) hide show
  1. package/CHANGELOG.json +118 -0
  2. package/CHANGELOG.md +51 -1
  3. package/dist/LICENSE.txt +234 -179
  4. package/dist/{RichText-IejAKqm2.js → RichText-B865Qkzj.js} +2 -2
  5. package/dist/{RichText-IejAKqm2.js.map → RichText-B865Qkzj.js.map} +1 -1
  6. package/dist/{RichText-2_z57EYi.mjs → RichText-CPkBwXNI.mjs} +2 -2
  7. package/dist/{RichText-2_z57EYi.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-CTWhxuS4.mjs → calendar-DTL_g0ue.mjs} +4 -14
  21. package/dist/{calendar-CTWhxuS4.mjs.map → calendar-DTL_g0ue.mjs.map} +1 -1
  22. package/dist/{calendar-Cwzqytai.js → calendar-DVOrK53J.js} +2 -2
  23. package/dist/{calendar-Cwzqytai.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-DiKGSL-7.mjs → carousel-Dq9yzk_-.mjs} +2 -2
  33. package/dist/{carousel-DiKGSL-7.mjs.map → carousel-Dq9yzk_-.mjs.map} +1 -1
  34. package/dist/{carousel-Dz_bUGo4.js → carousel-j-s6M1hu.js} +2 -2
  35. package/dist/{carousel-Dz_bUGo4.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-B2jmpVNr.js → chat-field-CLAjIHlM.js} +2 -2
  39. package/dist/{chat-field-B2jmpVNr.js.map → chat-field-CLAjIHlM.js.map} +1 -1
  40. package/dist/{chat-field-8cKqYcKi.mjs → chat-field-nxFRXoQx.mjs} +2 -2
  41. package/dist/{chat-field-8cKqYcKi.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-N5G3k2kr.js → comparison-table-CRWRijfG.js} +2 -2
  53. package/dist/{comparison-table-N5G3k2kr.js.map → comparison-table-CRWRijfG.js.map} +1 -1
  54. package/dist/{comparison-table-CmtSOUfK.mjs → comparison-table-DYaRaP9Z.mjs} +3 -3
  55. package/dist/{comparison-table-CmtSOUfK.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 +5 -5
  59. package/dist/components/accordion/src/accordion-item.d.ts.map +1 -1
  60. package/dist/components/accordion/src/accordion.d.ts +2 -6
  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/badge/src/badge.d.ts +1 -1
  65. package/dist/components/button/src/button.d.ts +3 -4
  66. package/dist/components/button/src/button.d.ts.map +1 -1
  67. package/dist/components/button/src/button.visual.fixtures.d.ts +1 -1
  68. package/dist/components/calendar/src/calendar.d.ts.map +1 -1
  69. package/dist/components/card/src/card-badge.d.ts +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-heading.d.ts +5 -5
  73. package/dist/components/card/src/card-heading.d.ts.map +1 -1
  74. package/dist/components/card/src/card-root.d.ts +1 -1
  75. package/dist/components/color-dot/src/color-dot.d.ts +2 -1
  76. package/dist/components/color-dot/src/color-dot.d.ts.map +1 -1
  77. package/dist/components/comparison-table/src/components/OptionCard/option-card.d.ts +1 -1
  78. package/dist/components/content-block/src/content-block-group.d.ts +1 -1
  79. package/dist/components/content-block/src/content-block.d.ts +2 -2
  80. package/dist/components/content-block/src/content-block.d.ts.map +1 -1
  81. package/dist/components/counter-badge/src/counter-badge.d.ts +1 -1
  82. package/dist/components/country-flag-icon/src/all-country-flag-assets.d.ts +0 -1
  83. package/dist/components/country-flag-icon/src/all-country-flag-assets.d.ts.map +1 -1
  84. package/dist/components/country-flag-icon/src/country-flag-icon.d.ts +1 -1
  85. package/dist/components/cta-link/src/cta-link.d.ts +10 -10
  86. package/dist/components/date-field/src/date-field.d.ts +1 -1
  87. package/dist/components/date-picker/src/date-picker.d.ts +1 -1
  88. package/dist/components/date-range-field/src/date-range-field.d.ts +2 -2
  89. package/dist/components/date-range-field/src/date-range-field.d.ts.map +1 -1
  90. package/dist/components/dismissable-chip-group/src/dismissable-chip-group.d.ts +2 -2
  91. package/dist/components/dismissable-chip-group/src/dismissable-chip-group.d.ts.map +1 -1
  92. package/dist/components/drawer/src/drawer-container.d.ts +1 -1
  93. package/dist/components/drawer/src/drawer-container.d.ts.map +1 -1
  94. package/dist/components/drawer/src/drawer-frame.d.ts +2 -2
  95. package/dist/components/drawer/src/drawer-handle.d.ts +1 -1
  96. package/dist/components/drawer/src/drawer-header.d.ts +1 -1
  97. package/dist/components/drawer/src/drawer-scroll-area.d.ts +1 -1
  98. package/dist/components/drawer/src/drawer-trigger.d.ts +1 -1
  99. package/dist/components/drawer/src/drawer.context.d.ts +2 -0
  100. package/dist/components/drawer/src/drawer.context.d.ts.map +1 -1
  101. package/dist/components/drawer/src/drawer.d.ts +2 -0
  102. package/dist/components/drawer/src/drawer.d.ts.map +1 -1
  103. package/dist/components/dropdown/src/dropdown-combobox.d.ts +2 -34
  104. package/dist/components/dropdown/src/dropdown-combobox.d.ts.map +1 -1
  105. package/dist/components/dropdown/src/dropdown-select.d.ts +2 -34
  106. package/dist/components/dropdown/src/dropdown-select.d.ts.map +1 -1
  107. package/dist/components/dropdown/src/dropdown-shared.d.ts +2 -1
  108. package/dist/components/dropdown/src/dropdown-shared.d.ts.map +1 -1
  109. package/dist/components/dropdown/src/dropdown.types.d.ts +24 -13
  110. package/dist/components/dropdown/src/dropdown.types.d.ts.map +1 -1
  111. package/dist/components/dropdown/src/useDropdown.d.ts +1 -1
  112. package/dist/components/dropdown/src/useDropdown.d.ts.map +1 -1
  113. package/dist/components/dropdown/src/useDropdownFilter.d.ts.map +1 -1
  114. package/dist/components/dropdown/src/useDropdownInput.d.ts.map +1 -1
  115. package/dist/components/field-helper-text/src/field-helper-text.d.ts +1 -1
  116. package/dist/components/file-upload/src/file-upload-button.d.ts +22 -0
  117. package/dist/components/file-upload/src/file-upload-button.d.ts.map +1 -0
  118. package/dist/components/file-upload/src/file-upload-drag-and-drop.d.ts +10 -0
  119. package/dist/components/file-upload/src/file-upload-drag-and-drop.d.ts.map +1 -0
  120. package/dist/components/file-upload/src/file-upload-file-name-label.d.ts +8 -0
  121. package/dist/components/file-upload/src/file-upload-file-name-label.d.ts.map +1 -0
  122. package/dist/components/file-upload/src/file-upload-icon.d.ts +8 -0
  123. package/dist/components/file-upload/src/file-upload-icon.d.ts.map +1 -0
  124. package/dist/components/file-upload/src/file-upload-types.d.ts +82 -0
  125. package/dist/components/file-upload/src/file-upload-types.d.ts.map +1 -0
  126. package/dist/components/file-upload/src/file-upload-utils.d.ts +7 -0
  127. package/dist/components/file-upload/src/file-upload-utils.d.ts.map +1 -0
  128. package/dist/components/file-upload/src/file-upload.d.ts +6 -0
  129. package/dist/components/file-upload/src/file-upload.d.ts.map +1 -0
  130. package/dist/components/file-upload/src/file-upload.visual.fixtures.d.ts +14 -0
  131. package/dist/components/file-upload/src/file-upload.visual.fixtures.d.ts.map +1 -0
  132. package/dist/components/footer/src/footer-social-link.d.ts +3 -3
  133. package/dist/components/heading/src/heading.d.ts +22 -4
  134. package/dist/components/heading/src/heading.d.ts.map +1 -1
  135. package/dist/components/hero-banner/src/hero-banner-types.d.ts +4 -4
  136. package/dist/components/hero-banner/src/hero-banner-types.d.ts.map +1 -1
  137. package/dist/components/hero-banner/src/hero-banner.d.ts +1 -1
  138. package/dist/components/hero-banner/src/hero-banner.d.ts.map +1 -1
  139. package/dist/components/icon/src/icon.d.ts +2 -2
  140. package/dist/components/illustrative-icon/src/static-illustrative-icon.d.ts +2 -2
  141. package/dist/components/label/src/label.d.ts +1 -1
  142. package/dist/components/listbox/src/listbox.d.ts +1 -1
  143. package/dist/components/loading/src/loading-illustrative.d.ts +1 -1
  144. package/dist/components/logo/src/logo.types.d.ts +1 -1
  145. package/dist/components/modal/src/modal-content.d.ts +1 -1
  146. package/dist/components/modal/src/modal-content.d.ts.map +1 -1
  147. package/dist/components/notification-banner/src/notification-banner.d.ts +3 -3
  148. package/dist/components/notification-banner/src/notification-banner.d.ts.map +1 -1
  149. package/dist/components/pagination/src/pagination-page-size-selector.d.ts +2 -2
  150. package/dist/components/pagination/src/pagination-page-trigger.d.ts +1 -1
  151. package/dist/components/pagination/src/pagination-pages.d.ts +2 -2
  152. package/dist/components/pagination/src/pagination-step-trigger.d.ts +2 -2
  153. package/dist/components/pagination/src/pagination-truncation-separator.d.ts +1 -1
  154. package/dist/components/pagination/src/types.d.ts +1 -1
  155. package/dist/components/pagination/src/use-page-options.hook.d.ts +1 -1
  156. package/dist/components/pagination/src/use-page-size-options.hook.d.ts +1 -1
  157. package/dist/components/paragraph/src/paragraph.d.ts +1 -1
  158. package/dist/components/password-field/src/password-strength-indicator.d.ts +1 -1
  159. package/dist/components/popover/src/popover-button.d.ts +2 -2
  160. package/dist/components/product-card/src/product-card.d.ts +1 -1
  161. package/dist/components/promotion-card/src/promotion-card.d.ts +10 -10
  162. package/dist/components/promotion-card/src/promotion-card.d.ts.map +1 -1
  163. package/dist/components/quantity-selector/src/quantity-selector-button.d.ts +2 -3
  164. package/dist/components/quantity-selector/src/quantity-selector-button.d.ts.map +1 -1
  165. package/dist/components/quantity-selector/src/quantity-selector.d.ts +3 -6
  166. package/dist/components/quantity-selector/src/quantity-selector.d.ts.map +1 -1
  167. package/dist/components/radio-button-group/src/radio-button-group-root.d.ts +1 -1
  168. package/dist/components/radio-card-group/src/radio-card-item.d.ts +1 -1
  169. package/dist/components/rich-text/src/types.d.ts +3 -3
  170. package/dist/components/search-field/src/search-field-autocomplete.d.ts +1 -1
  171. package/dist/components/search-field/src/search-field-base.d.ts +1 -1
  172. package/dist/components/select/src/select.d.ts +1 -1
  173. package/dist/components/skeleton/src/skeleton.d.ts +1 -1
  174. package/dist/components/spacer/src/spacer.d.ts +2 -2
  175. package/dist/components/spinner/src/spinner.d.ts +3 -3
  176. package/dist/components/stepper/src/stepper-container.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 +2 -2
  182. package/dist/components/stepper/src/stepper.d.ts.map +1 -1
  183. package/dist/components/stepper/src/types.d.ts +2 -2
  184. package/dist/components/stepper/src/types.d.ts.map +1 -1
  185. package/dist/components/stepper/src/use-content-focus.hook.d.ts.map +1 -1
  186. package/dist/components/table/src/cell-types/button-group-cell.d.ts +2 -2
  187. package/dist/components/table/src/draggable-table.d.ts.map +1 -1
  188. package/dist/components/table/src/empty-table.d.ts +2 -2
  189. package/dist/components/table/src/table-column-header-cell.d.ts +1 -2
  190. package/dist/components/table/src/table-column-header-cell.d.ts.map +1 -1
  191. package/dist/components/table/src/table-content.d.ts +1 -1
  192. package/dist/components/table/src/table-headers.d.ts +2 -3
  193. package/dist/components/table/src/table-headers.d.ts.map +1 -1
  194. package/dist/components/table/src/table-settings-drawer.d.ts +11 -20
  195. package/dist/components/table/src/table-settings-drawer.d.ts.map +1 -1
  196. package/dist/components/table/src/table.d.ts +1 -8
  197. package/dist/components/table/src/table.d.ts.map +1 -1
  198. package/dist/components/table/src/test-utils/helpers.d.ts +10 -19
  199. package/dist/components/table/src/test-utils/helpers.d.ts.map +1 -1
  200. package/dist/components/tabs/src/tab-content.d.ts +4 -2
  201. package/dist/components/tabs/src/tab-content.d.ts.map +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 +1 -1
  206. package/dist/components/toggle/src/toggle.d.ts +1 -1
  207. package/dist/components/tooltip/src/tooltip.d.ts +4 -6
  208. package/dist/components/tooltip/src/tooltip.d.ts.map +1 -1
  209. package/dist/components-metadata.js +20 -10
  210. package/dist/{content-block-CDMrz41K.mjs → content-block-BCM0I3Y2.mjs} +2 -2
  211. package/dist/content-block-BCM0I3Y2.mjs.map +1 -0
  212. package/dist/{content-block-DyYAnL2e.js → content-block-DQppQumZ.js} +2 -2
  213. package/dist/content-block-DQppQumZ.js.map +1 -0
  214. package/dist/content-block.cjs.js +1 -1
  215. package/dist/content-block.es.js +1 -1
  216. package/dist/core.esm-BmIwrKkJ.js +6 -0
  217. package/dist/core.esm-BmIwrKkJ.js.map +1 -0
  218. package/dist/core.esm-CKGHpLM_.mjs +2892 -0
  219. package/dist/core.esm-CKGHpLM_.mjs.map +1 -0
  220. package/dist/country-flag-icon/LICENSE.txt +11 -0
  221. package/dist/country-flag-icon/all-country-flag-assets.cjs.js +1 -1
  222. package/dist/country-flag-icon/all-country-flag-assets.cjs.js.map +1 -1
  223. package/dist/country-flag-icon/all-country-flag-assets.d.ts +0 -1
  224. package/dist/country-flag-icon/all-country-flag-assets.d.ts.map +1 -1
  225. package/dist/country-flag-icon/all-country-flag-assets.es.js +0 -1
  226. package/dist/country-flag-icon/all-country-flag-assets.es.js.map +1 -1
  227. package/dist/country-flag-icon/dynamic-country-flag-icon.cjs.js +2 -0
  228. package/dist/country-flag-icon/dynamic-country-flag-icon.cjs.js.map +1 -0
  229. package/dist/country-flag-icon/dynamic-country-flag-icon.es.js +366 -0
  230. package/dist/country-flag-icon/dynamic-country-flag-icon.es.js.map +1 -0
  231. package/dist/{date-field-CwZ64buh.js → date-field-CtpWDaSh.js} +2 -2
  232. package/dist/{date-field-CwZ64buh.js.map → date-field-CtpWDaSh.js.map} +1 -1
  233. package/dist/{date-field-ChYx0N2j.mjs → date-field-_rCuf15v.mjs} +2 -2
  234. package/dist/{date-field-ChYx0N2j.mjs.map → date-field-_rCuf15v.mjs.map} +1 -1
  235. package/dist/date-field.cjs.js +1 -1
  236. package/dist/date-field.es.js +1 -1
  237. package/dist/{date-picker-BWMKTOq6.js → date-picker-BYlszX1W.js} +2 -2
  238. package/dist/{date-picker-BWMKTOq6.js.map → date-picker-BYlszX1W.js.map} +1 -1
  239. package/dist/{date-picker-CTyqgBRB.mjs → date-picker-sqcNAplg.mjs} +6 -6
  240. package/dist/{date-picker-CTyqgBRB.mjs.map → date-picker-sqcNAplg.mjs.map} +1 -1
  241. package/dist/date-picker.cjs.js +1 -1
  242. package/dist/date-picker.es.js +1 -1
  243. package/dist/date-range-field-B33XeBW8.js +2 -0
  244. package/dist/date-range-field-B33XeBW8.js.map +1 -0
  245. package/dist/{date-range-field-DDr-qEGX.mjs → date-range-field-BmjQeiOv.mjs} +23 -23
  246. package/dist/date-range-field-BmjQeiOv.mjs.map +1 -0
  247. package/dist/date-range-field.cjs.js +1 -1
  248. package/dist/date-range-field.es.js +1 -1
  249. package/dist/{dismissable-chip-group-2updhyuR.js → dismissable-chip-group-5ALErhD2.js} +2 -2
  250. package/dist/dismissable-chip-group-5ALErhD2.js.map +1 -0
  251. package/dist/{dismissable-chip-group-Cfs2s2BH.mjs → dismissable-chip-group-DMNU7g5e.mjs} +3 -3
  252. package/dist/dismissable-chip-group-DMNU7g5e.mjs.map +1 -0
  253. package/dist/dismissable-chip-group.cjs.js +1 -1
  254. package/dist/dismissable-chip-group.es.js +1 -1
  255. package/dist/{drawer-Cnk2OKgi.mjs → drawer-Chx3H8EU.mjs} +241 -233
  256. package/dist/drawer-Chx3H8EU.mjs.map +1 -0
  257. package/dist/drawer-oFJcxW58.js +2 -0
  258. package/dist/drawer-oFJcxW58.js.map +1 -0
  259. package/dist/drawer.cjs.js +1 -1
  260. package/dist/drawer.es.js +1 -1
  261. package/dist/dropdown-Bn7WvsL2.js +2 -0
  262. package/dist/dropdown-Bn7WvsL2.js.map +1 -0
  263. package/dist/dropdown-CrufJnb4.mjs +945 -0
  264. package/dist/dropdown-CrufJnb4.mjs.map +1 -0
  265. package/dist/dropdown.cjs.js +1 -1
  266. package/dist/dropdown.es.js +1 -1
  267. package/dist/file-upload-Ctw6LCTU.mjs +589 -0
  268. package/dist/file-upload-Ctw6LCTU.mjs.map +1 -0
  269. package/dist/file-upload-MvNuX4ks.js +2 -0
  270. package/dist/file-upload-MvNuX4ks.js.map +1 -0
  271. package/dist/file-upload.cjs.js +2 -0
  272. package/dist/file-upload.cjs.js.map +1 -0
  273. package/dist/file-upload.es.js +5 -0
  274. package/dist/file-upload.es.js.map +1 -0
  275. package/dist/{floating-ui.react-dom-EredA301.mjs → floating-ui.react-dom-1kwKo24Z.mjs} +15 -15
  276. package/dist/{floating-ui.react-dom-EredA301.mjs.map → floating-ui.react-dom-1kwKo24Z.mjs.map} +1 -1
  277. package/dist/footer-Bbemct3Z.js +2 -0
  278. package/dist/footer-Bbemct3Z.js.map +1 -0
  279. package/dist/{footer-D5YkHmCo.mjs → footer-DkVmTd-f.mjs} +24 -24
  280. package/dist/footer-DkVmTd-f.mjs.map +1 -0
  281. package/dist/footer.cjs.js +1 -1
  282. package/dist/footer.es.js +1 -1
  283. package/dist/{heading-xwBuT_-9.mjs → heading-BG7JTFO1.mjs} +25 -24
  284. package/dist/heading-BG7JTFO1.mjs.map +1 -0
  285. package/dist/{heading-drD5ugCC.js → heading-BPeRwNYu.js} +2 -2
  286. package/dist/heading-BPeRwNYu.js.map +1 -0
  287. package/dist/heading.cjs.js +1 -1
  288. package/dist/heading.es.js +6 -5
  289. package/dist/{hero-banner-BXRArPWP.mjs → hero-banner-ChDoFRhq.mjs} +4 -4
  290. package/dist/hero-banner-ChDoFRhq.mjs.map +1 -0
  291. package/dist/{hero-banner-CW7DIEZe.js → hero-banner-Mag1OwL4.js} +2 -2
  292. package/dist/hero-banner-Mag1OwL4.js.map +1 -0
  293. package/dist/hero-banner.cjs.js +1 -1
  294. package/dist/hero-banner.es.js +1 -1
  295. package/dist/index-BPY_9ddu.js +2 -0
  296. package/dist/index-BPY_9ddu.js.map +1 -0
  297. package/dist/index-Fewa56cA.mjs +440 -0
  298. package/dist/index-Fewa56cA.mjs.map +1 -0
  299. package/dist/libraries/library/src/calendar.d.ts +1 -1
  300. package/dist/libraries/library/src/card.d.ts +1 -1
  301. package/dist/libraries/library/src/container.d.ts +1 -1
  302. package/dist/libraries/library/src/content-block.d.ts +1 -1
  303. package/dist/libraries/library/src/dismissable-chip-group.d.ts +1 -1
  304. package/dist/libraries/library/src/drawer.d.ts +1 -1
  305. package/dist/libraries/library/src/file-upload.d.ts +6 -0
  306. package/dist/libraries/library/src/file-upload.d.ts.map +1 -0
  307. package/dist/libraries/library/src/library.d.ts +1 -1
  308. package/dist/libraries/library/src/library.d.ts.map +1 -1
  309. package/dist/libraries/library/src/notification-banner.d.ts +1 -1
  310. package/dist/libraries/library/src/notification.d.ts +1 -1
  311. package/dist/libraries/theme/src/ThemeProvider.d.ts +1 -1
  312. package/dist/library.cjs.js +1 -1
  313. package/dist/library.es.js +595 -596
  314. package/dist/{modal-CnC4Zyjk.js → modal-CXOYUsJm.js} +2 -2
  315. package/dist/modal-CXOYUsJm.js.map +1 -0
  316. package/dist/{modal-BuUQrUYJ.mjs → modal-Pwvhrzn-.mjs} +31 -31
  317. package/dist/modal-Pwvhrzn-.mjs.map +1 -0
  318. package/dist/modal.cjs.js +1 -1
  319. package/dist/modal.es.js +1 -1
  320. package/dist/{notification-CeoAXDXq.js → notification-BkM2vLzI.js} +2 -2
  321. package/dist/{notification-CeoAXDXq.js.map → notification-BkM2vLzI.js.map} +1 -1
  322. package/dist/{notification-C3f3N1K1.mjs → notification-Cbn0UN1p.mjs} +3 -3
  323. package/dist/{notification-C3f3N1K1.mjs.map → notification-Cbn0UN1p.mjs.map} +1 -1
  324. package/dist/notification-banner-B9RhXAZ8.js +2 -0
  325. package/dist/notification-banner-B9RhXAZ8.js.map +1 -0
  326. package/dist/{notification-banner-BvAy8dlg.mjs → notification-banner-C4NVekCZ.mjs} +5 -5
  327. package/dist/notification-banner-C4NVekCZ.mjs.map +1 -0
  328. package/dist/notification-banner.cjs.js +1 -1
  329. package/dist/notification-banner.es.js +1 -1
  330. package/dist/notification.cjs.js +1 -1
  331. package/dist/notification.es.js +1 -1
  332. package/dist/{password-field-C_E4563x.mjs → password-field-Cy_E-D_G.mjs} +29 -29
  333. package/dist/{password-field-C_E4563x.mjs.map → password-field-Cy_E-D_G.mjs.map} +1 -1
  334. package/dist/{password-field-BjKdBoIK.js → password-field-lKyWHjQS.js} +2 -2
  335. package/dist/{password-field-BjKdBoIK.js.map → password-field-lKyWHjQS.js.map} +1 -1
  336. package/dist/password-field.cjs.js +1 -1
  337. package/dist/password-field.es.js +1 -1
  338. package/dist/popover-B6ntmuEK.mjs +614 -0
  339. package/dist/popover-B6ntmuEK.mjs.map +1 -0
  340. package/dist/popover-DJHMEFXP.js +2 -0
  341. package/dist/popover-DJHMEFXP.js.map +1 -0
  342. package/dist/popover.cjs.js +1 -1
  343. package/dist/popover.es.js +1 -1
  344. package/dist/{product-card-CxfHfJVV.mjs → product-card-BMseoNrG.mjs} +3 -3
  345. package/dist/{product-card-CxfHfJVV.mjs.map → product-card-BMseoNrG.mjs.map} +1 -1
  346. package/dist/{product-card-XxBwuxM-.js → product-card-D0jX5-up.js} +2 -2
  347. package/dist/{product-card-XxBwuxM-.js.map → product-card-D0jX5-up.js.map} +1 -1
  348. package/dist/product-card.cjs.js +1 -1
  349. package/dist/product-card.es.js +1 -1
  350. package/dist/{promotion-card-C1UoxzcV.js → promotion-card-B3mz__m7.js} +2 -2
  351. package/dist/promotion-card-B3mz__m7.js.map +1 -0
  352. package/dist/{promotion-card-CooYPpFo.mjs → promotion-card-Co6qAkTZ.mjs} +5 -5
  353. package/dist/promotion-card-Co6qAkTZ.mjs.map +1 -0
  354. package/dist/promotion-card.cjs.js +1 -1
  355. package/dist/promotion-card.es.js +1 -1
  356. package/dist/purpur.css +1 -1
  357. package/dist/quantity-selector-Cy0aJGGX.js +2 -0
  358. package/dist/quantity-selector-Cy0aJGGX.js.map +1 -0
  359. package/dist/quantity-selector-k6ZaVrk1.mjs +162 -0
  360. package/dist/quantity-selector-k6ZaVrk1.mjs.map +1 -0
  361. package/dist/quantity-selector.cjs.js +1 -1
  362. package/dist/quantity-selector.es.js +2 -3
  363. package/dist/{radio-button-group-D_F6kWD6.mjs → radio-button-group-DjiTo3b1.mjs} +2 -2
  364. package/dist/{radio-button-group-D_F6kWD6.mjs.map → radio-button-group-DjiTo3b1.mjs.map} +1 -1
  365. package/dist/{radio-button-group-CdUrC7h9.js → radio-button-group-uCRGh1H5.js} +2 -2
  366. package/dist/{radio-button-group-CdUrC7h9.js.map → radio-button-group-uCRGh1H5.js.map} +1 -1
  367. package/dist/radio-button-group.cjs.js +1 -1
  368. package/dist/radio-button-group.es.js +1 -1
  369. package/dist/{radio-card-group-B9_jOJnM.mjs → radio-card-group-DoM7qYO1.mjs} +2 -2
  370. package/dist/{radio-card-group-B9_jOJnM.mjs.map → radio-card-group-DoM7qYO1.mjs.map} +1 -1
  371. package/dist/{radio-card-group-DcdGkfOp.js → radio-card-group-_9wJC-s3.js} +2 -2
  372. package/dist/{radio-card-group-DcdGkfOp.js.map → radio-card-group-_9wJC-s3.js.map} +1 -1
  373. package/dist/radio-card-group.cjs.js +1 -1
  374. package/dist/radio-card-group.es.js +1 -1
  375. package/dist/rich-text.cjs.js +1 -1
  376. package/dist/rich-text.es.js +1 -1
  377. package/dist/{search-field-BTqVE1-l.mjs → search-field-BTJtRyw5.mjs} +3 -3
  378. package/dist/{search-field-BTqVE1-l.mjs.map → search-field-BTJtRyw5.mjs.map} +1 -1
  379. package/dist/{search-field-DkJrwzJB.js → search-field-nzVXak1a.js} +2 -2
  380. package/dist/{search-field-DkJrwzJB.js.map → search-field-nzVXak1a.js.map} +1 -1
  381. package/dist/search-field.cjs.js +1 -1
  382. package/dist/search-field.es.js +1 -1
  383. package/dist/stepper-D59T-Y2_.mjs +469 -0
  384. package/dist/stepper-D59T-Y2_.mjs.map +1 -0
  385. package/dist/stepper-Dao4XaDV.js +2 -0
  386. package/dist/stepper-Dao4XaDV.js.map +1 -0
  387. package/dist/stepper.cjs.js +1 -1
  388. package/dist/stepper.es.js +1 -1
  389. package/dist/table-DRSgesQ4.mjs +4545 -0
  390. package/dist/table-DRSgesQ4.mjs.map +1 -0
  391. package/dist/table-zBs9JALh.js +5 -0
  392. package/dist/table-zBs9JALh.js.map +1 -0
  393. package/dist/table.cjs.js +1 -1
  394. package/dist/table.es.js +1 -1
  395. package/dist/tabs-D2__wbCs.js +2 -0
  396. package/dist/tabs-D2__wbCs.js.map +1 -0
  397. package/dist/tabs-DOG5g2wf.mjs +440 -0
  398. package/dist/tabs-DOG5g2wf.mjs.map +1 -0
  399. package/dist/tabs.cjs.js +1 -1
  400. package/dist/tabs.es.js +1 -1
  401. package/dist/{text-field-CS0PT5T6.js → text-field-BSgqJjpv.js} +2 -2
  402. package/dist/text-field-BSgqJjpv.js.map +1 -0
  403. package/dist/{text-field-C9LX7LBf.mjs → text-field-MQHeITxy.mjs} +3 -3
  404. package/dist/text-field-MQHeITxy.mjs.map +1 -0
  405. package/dist/text-field.cjs.js +1 -1
  406. package/dist/text-field.es.js +1 -1
  407. package/dist/tooltip-DeP1UsPW.js +2 -0
  408. package/dist/{tooltip-COFCRUKv.js.map → tooltip-DeP1UsPW.js.map} +1 -1
  409. package/dist/{tooltip-FH9R2MAA.mjs → tooltip-bqdd2lJL.mjs} +347 -309
  410. package/dist/{tooltip-FH9R2MAA.mjs.map → tooltip-bqdd2lJL.mjs.map} +1 -1
  411. package/dist/tooltip.cjs.js +1 -1
  412. package/dist/tooltip.es.js +1 -1
  413. package/package.json +25 -25
  414. package/src/aliases.ts +4 -4
  415. package/src/entries.js +1 -1
  416. package/src/{autocomplete.ts → file-upload.ts} +1 -1
  417. package/src/library.ts +1 -1
  418. package/src/purpur.css +4 -0
  419. package/dist/accordion-B6OoQ4uZ.mjs +0 -128
  420. package/dist/accordion-B6OoQ4uZ.mjs.map +0 -1
  421. package/dist/accordion-BfpN5h4C.js +0 -2
  422. package/dist/accordion-BfpN5h4C.js.map +0 -1
  423. package/dist/autocomplete-C6AqdYaZ.mjs +0 -228
  424. package/dist/autocomplete-C6AqdYaZ.mjs.map +0 -1
  425. package/dist/autocomplete-yrPbF5gq.js +0 -2
  426. package/dist/autocomplete-yrPbF5gq.js.map +0 -1
  427. package/dist/autocomplete.cjs.js +0 -2
  428. package/dist/autocomplete.cjs.js.map +0 -1
  429. package/dist/autocomplete.es.js +0 -6
  430. package/dist/autocomplete.es.js.map +0 -1
  431. package/dist/button-DZgtrGqN.js +0 -2
  432. package/dist/button-DZgtrGqN.js.map +0 -1
  433. package/dist/button-EVRfctR8.mjs +0 -109
  434. package/dist/button-EVRfctR8.mjs.map +0 -1
  435. package/dist/card-pdsBEJif.js.map +0 -1
  436. package/dist/card-t2ZkZ82G.mjs.map +0 -1
  437. package/dist/components/autocomplete/src/autocomplete.d.ts +0 -18
  438. package/dist/components/autocomplete/src/autocomplete.d.ts.map +0 -1
  439. package/dist/components/autocomplete/src/useAutocomplete.d.ts +0 -59
  440. package/dist/components/autocomplete/src/useAutocomplete.d.ts.map +0 -1
  441. package/dist/components/autocomplete/src/utils.d.ts +0 -7
  442. package/dist/components/autocomplete/src/utils.d.ts.map +0 -1
  443. package/dist/components/stepper/src/stepper-button.d.ts.map +0 -1
  444. package/dist/content-block-CDMrz41K.mjs.map +0 -1
  445. package/dist/content-block-DyYAnL2e.js.map +0 -1
  446. package/dist/date-range-field-CvzOl-eC.js +0 -2
  447. package/dist/date-range-field-CvzOl-eC.js.map +0 -1
  448. package/dist/date-range-field-DDr-qEGX.mjs.map +0 -1
  449. package/dist/dismissable-chip-group-2updhyuR.js.map +0 -1
  450. package/dist/dismissable-chip-group-Cfs2s2BH.mjs.map +0 -1
  451. package/dist/drawer-BnqxUIPM.js +0 -2
  452. package/dist/drawer-BnqxUIPM.js.map +0 -1
  453. package/dist/drawer-Cnk2OKgi.mjs.map +0 -1
  454. package/dist/dropdown-C8VsfTQw.mjs +0 -936
  455. package/dist/dropdown-C8VsfTQw.mjs.map +0 -1
  456. package/dist/dropdown-p4R2yCnJ.js +0 -2
  457. package/dist/dropdown-p4R2yCnJ.js.map +0 -1
  458. package/dist/footer-B8rzVSrZ.js +0 -2
  459. package/dist/footer-B8rzVSrZ.js.map +0 -1
  460. package/dist/footer-D5YkHmCo.mjs.map +0 -1
  461. package/dist/heading-drD5ugCC.js.map +0 -1
  462. package/dist/heading-xwBuT_-9.mjs.map +0 -1
  463. package/dist/hero-banner-BXRArPWP.mjs.map +0 -1
  464. package/dist/hero-banner-CW7DIEZe.js.map +0 -1
  465. package/dist/libraries/library/src/autocomplete.d.ts +0 -6
  466. package/dist/libraries/library/src/autocomplete.d.ts.map +0 -1
  467. package/dist/modal-BuUQrUYJ.mjs.map +0 -1
  468. package/dist/modal-CnC4Zyjk.js.map +0 -1
  469. package/dist/notification-banner-BvAy8dlg.mjs.map +0 -1
  470. package/dist/notification-banner-DUe4fT1r.js +0 -2
  471. package/dist/notification-banner-DUe4fT1r.js.map +0 -1
  472. package/dist/popover-4phnhJLj.js +0 -2
  473. package/dist/popover-4phnhJLj.js.map +0 -1
  474. package/dist/popover-DhObSx97.mjs +0 -1043
  475. package/dist/popover-DhObSx97.mjs.map +0 -1
  476. package/dist/promotion-card-C1UoxzcV.js.map +0 -1
  477. package/dist/promotion-card-CooYPpFo.mjs.map +0 -1
  478. package/dist/quantity-selector-Ds7d4MnV.js +0 -2
  479. package/dist/quantity-selector-Ds7d4MnV.js.map +0 -1
  480. package/dist/quantity-selector-DwkKKmFy.mjs +0 -172
  481. package/dist/quantity-selector-DwkKKmFy.mjs.map +0 -1
  482. package/dist/stepper-5rQ3cK18.js +0 -2
  483. package/dist/stepper-5rQ3cK18.js.map +0 -1
  484. package/dist/stepper-B3p9r3gv.mjs +0 -449
  485. package/dist/stepper-B3p9r3gv.mjs.map +0 -1
  486. package/dist/table-BIyaTsOh.js +0 -9
  487. package/dist/table-BIyaTsOh.js.map +0 -1
  488. package/dist/table-BtymEUG4.mjs +0 -7428
  489. package/dist/table-BtymEUG4.mjs.map +0 -1
  490. package/dist/tabs-Bye5lgZ1.mjs +0 -424
  491. package/dist/tabs-Bye5lgZ1.mjs.map +0 -1
  492. package/dist/tabs-D-nfZHIA.js +0 -2
  493. package/dist/tabs-D-nfZHIA.js.map +0 -1
  494. package/dist/text-field-C9LX7LBf.mjs.map +0 -1
  495. package/dist/text-field-CS0PT5T6.js.map +0 -1
  496. package/dist/tooltip-COFCRUKv.js +0 -2
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table-zBs9JALh.js","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","handleDragStart","handleDragCancel","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","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]}