brd-ui-kit 0.1.75 → 0.1.77

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 (501) hide show
  1. package/dist/brd-ui-kit.css +1 -1
  2. package/dist/calendar-PqChui7l.cjs +2 -0
  3. package/dist/{calendar-DReGV_22.cjs.map → calendar-PqChui7l.cjs.map} +1 -1
  4. package/dist/{calendar-C0DXP3T-.js → calendar-XWqEaWHP.js} +267 -272
  5. package/dist/{calendar-C0DXP3T-.js.map → calendar-XWqEaWHP.js.map} +1 -1
  6. package/dist/{calendar-locale-CP2pxhFK.cjs → calendar-locale-CosU_VZY.cjs} +2 -2
  7. package/dist/{calendar-locale-CP2pxhFK.cjs.map → calendar-locale-CosU_VZY.cjs.map} +1 -1
  8. package/dist/{calendar-locale-DJf03PI9.js → calendar-locale-DqQZymBn.js} +2 -2
  9. package/dist/{calendar-locale-DJf03PI9.js.map → calendar-locale-DqQZymBn.js.map} +1 -1
  10. package/dist/chart-9H_9wEfR.cjs +63 -0
  11. package/dist/{chart-C69jBlXa.cjs.map → chart-9H_9wEfR.cjs.map} +1 -1
  12. package/dist/{chart-CAPCe8o5.js → chart-DFbmMKiQ.js} +2956 -2951
  13. package/dist/{chart-CAPCe8o5.js.map → chart-DFbmMKiQ.js.map} +1 -1
  14. package/dist/components/app-sidebar/app-sidebar.d.ts +2 -2
  15. package/dist/components/basic-chart/basic-chart.d.ts +1 -1
  16. package/dist/components/basic-table/basic-table.d.ts +5 -5
  17. package/dist/components/data-table/data-table-actions-column.d.ts +3 -3
  18. package/dist/components/data-table/data-table-bulk-actions.d.ts +3 -3
  19. package/dist/components/data-table/data-table-column-visibility.d.ts +2 -2
  20. package/dist/components/data-table/data-table-filter.d.ts +2 -2
  21. package/dist/components/data-table/data-table-row-actions-column.d.ts +5 -5
  22. package/dist/components/data-table/use-data-table-editable-rows.d.ts +5 -5
  23. package/dist/components/files-uploader/files-uploader.d.ts +2 -2
  24. package/dist/components/icons/ArrowCounterClockwise.d.ts +1 -0
  25. package/dist/components/icons/BoundingBox.d.ts +1 -0
  26. package/dist/components/icons/Briefcase.d.ts +1 -0
  27. package/dist/components/icons/Building.d.ts +1 -0
  28. package/dist/components/icons/Buildings.d.ts +1 -0
  29. package/dist/components/icons/CaretDown.d.ts +1 -0
  30. package/dist/components/icons/CaretLeft.d.ts +1 -0
  31. package/dist/components/icons/CaretRight.d.ts +1 -0
  32. package/dist/components/icons/CaretUp.d.ts +1 -0
  33. package/dist/components/icons/CaretUpDown.d.ts +1 -0
  34. package/dist/components/icons/ChartLine.d.ts +1 -0
  35. package/dist/components/icons/Check.d.ts +1 -0
  36. package/dist/components/icons/CheckCircle.d.ts +1 -0
  37. package/dist/components/icons/Clock.d.ts +1 -0
  38. package/dist/components/icons/CreditCard.d.ts +1 -0
  39. package/dist/components/icons/DotsThree.d.ts +1 -0
  40. package/dist/components/icons/DownloadSimple.d.ts +1 -0
  41. package/dist/components/icons/EnvelopeSimple.d.ts +1 -0
  42. package/dist/components/icons/Eye.d.ts +1 -0
  43. package/dist/components/icons/EyeSlash.d.ts +1 -0
  44. package/dist/components/icons/FileText.d.ts +1 -0
  45. package/dist/components/icons/Folder.d.ts +1 -0
  46. package/dist/components/icons/Funnel.d.ts +1 -0
  47. package/dist/components/icons/Gear.d.ts +1 -0
  48. package/dist/components/icons/Info.d.ts +1 -0
  49. package/dist/components/icons/LockKey.d.ts +1 -0
  50. package/dist/components/icons/MagnifyingGlass.d.ts +1 -0
  51. package/dist/components/icons/MaxLogo.d.ts +1 -0
  52. package/dist/components/icons/Package.d.ts +1 -0
  53. package/dist/components/icons/Pencil.d.ts +1 -0
  54. package/dist/components/icons/Phone.d.ts +1 -0
  55. package/dist/components/icons/Plus.d.ts +1 -0
  56. package/dist/components/icons/PresentationChart.d.ts +1 -0
  57. package/dist/components/icons/SpinnerGap.d.ts +1 -0
  58. package/dist/components/icons/TelegramLogo.d.ts +1 -0
  59. package/dist/components/icons/Trash.d.ts +1 -0
  60. package/dist/components/icons/UserCircleGear.d.ts +1 -0
  61. package/dist/components/icons/Users.d.ts +1 -0
  62. package/dist/components/icons/UsersFour.d.ts +1 -0
  63. package/dist/components/icons/Warning.d.ts +1 -0
  64. package/dist/components/icons/WarningCircle.d.ts +1 -0
  65. package/dist/components/icons/WhatsAppLogoFilled.d.ts +1 -0
  66. package/dist/components/icons/Wrench.d.ts +1 -0
  67. package/dist/components/icons/X.d.ts +1 -0
  68. package/dist/components/icons/XCircle.d.ts +1 -0
  69. package/dist/components/icons/index.d.ts +50 -0
  70. package/dist/components/icons/stroke-icon.d.ts +19 -0
  71. package/dist/components/icons.d.ts +2 -0
  72. package/dist/components/input-field/input-field.d.ts +3 -3
  73. package/dist/components/input-password/input-password.d.ts +1 -1
  74. package/dist/components/input-phone/input-phone.d.ts +4 -4
  75. package/dist/components/popover-modal/popover-modal.d.ts +4 -4
  76. package/dist/components/select-field/select-field.d.ts +2 -2
  77. package/dist/components/ui/avatar/avatar.d.ts +7 -7
  78. package/dist/components/ui/badge/badge.d.ts +2 -2
  79. package/dist/components/ui/button/button.d.ts +3 -3
  80. package/dist/components/ui/calendar/calendar.d.ts +6 -6
  81. package/dist/components/ui/calendar/calendar.styles.d.ts +1 -1
  82. package/dist/components/ui/card/card.d.ts +13 -13
  83. package/dist/components/ui/chart/chart.d.ts +23 -21
  84. package/dist/components/ui/checkbox/checkbox.d.ts +4 -4
  85. package/dist/components/ui/combobox/combobox.d.ts +6 -6
  86. package/dist/components/ui/dialog/dialog.d.ts +11 -11
  87. package/dist/components/ui/drawer/drawer.d.ts +11 -11
  88. package/dist/components/ui/dropdown-menu/dropdown-menu.d.ts +42 -42
  89. package/dist/components/ui/icon/icon-map.d.ts +68 -0
  90. package/dist/components/ui/icon/icon.d.ts +6 -6
  91. package/dist/components/ui/icon/index.d.ts +3 -1
  92. package/dist/components/ui/input/input.d.ts +2 -2
  93. package/dist/components/ui/input-group/input-group.d.ts +7 -7
  94. package/dist/components/ui/label/label.d.ts +4 -4
  95. package/dist/components/ui/pagination/pagination.d.ts +8 -8
  96. package/dist/components/ui/popover/popover.d.ts +8 -8
  97. package/dist/components/ui/progress/progress.d.ts +4 -4
  98. package/dist/components/ui/radio-group/radio-group.d.ts +7 -7
  99. package/dist/components/ui/select/select.d.ts +11 -11
  100. package/dist/components/ui/select-calendar-menu/select-calendar-menu.d.ts +4 -4
  101. package/dist/components/ui/separator/separator.d.ts +4 -4
  102. package/dist/components/ui/switch/switch.d.ts +4 -4
  103. package/dist/components/ui/table/table.d.ts +17 -17
  104. package/dist/components/ui/tabs/tabs.d.ts +8 -8
  105. package/dist/components/ui/toggle-group/toggle-group.styles.d.ts +1 -1
  106. package/dist/components/ui/tooltip/tooltip.d.ts +8 -8
  107. package/dist/components/ui/typography/typography.d.ts +174 -174
  108. package/dist/components-app-pagination-app-pagination.cjs +1 -1
  109. package/dist/components-app-pagination-app-pagination.cjs.map +1 -1
  110. package/dist/components-app-pagination-app-pagination.js +34 -32
  111. package/dist/components-app-pagination-app-pagination.js.map +1 -1
  112. package/dist/components-app-sidebar-app-sidebar.cjs +1 -1
  113. package/dist/components-app-sidebar-app-sidebar.cjs.map +1 -1
  114. package/dist/components-app-sidebar-app-sidebar.js +33 -32
  115. package/dist/components-app-sidebar-app-sidebar.js.map +1 -1
  116. package/dist/components-avatar-uploader-avatar-uploader.cjs +2 -2
  117. package/dist/components-avatar-uploader-avatar-uploader.cjs.map +1 -1
  118. package/dist/components-avatar-uploader-avatar-uploader.js +54 -36
  119. package/dist/components-avatar-uploader-avatar-uploader.js.map +1 -1
  120. package/dist/components-basic-avatar-basic-avatar.cjs +2 -2
  121. package/dist/components-basic-avatar-basic-avatar.cjs.map +1 -1
  122. package/dist/components-basic-avatar-basic-avatar.js +25 -5
  123. package/dist/components-basic-avatar-basic-avatar.js.map +1 -1
  124. package/dist/components-basic-chart-basic-chart.cjs +2 -2
  125. package/dist/components-basic-chart-basic-chart.cjs.map +1 -1
  126. package/dist/components-basic-chart-basic-chart.js +106 -108
  127. package/dist/components-basic-chart-basic-chart.js.map +1 -1
  128. package/dist/components-basic-table-basic-table.cjs +2 -2
  129. package/dist/components-basic-table-basic-table.cjs.map +1 -1
  130. package/dist/components-basic-table-basic-table.js +232 -231
  131. package/dist/components-basic-table-basic-table.js.map +1 -1
  132. package/dist/components-data-table-data-table-actions-column.cjs +1 -1
  133. package/dist/components-data-table-data-table-actions-column.cjs.map +1 -1
  134. package/dist/components-data-table-data-table-actions-column.js +1 -1
  135. package/dist/components-data-table-data-table-actions-column.js.map +1 -1
  136. package/dist/components-data-table-data-table-bulk-actions.cjs +1 -1
  137. package/dist/components-data-table-data-table-bulk-actions.cjs.map +1 -1
  138. package/dist/components-data-table-data-table-bulk-actions.js +9 -9
  139. package/dist/components-data-table-data-table-bulk-actions.js.map +1 -1
  140. package/dist/components-data-table-data-table-column-visibility.cjs +1 -1
  141. package/dist/components-data-table-data-table-column-visibility.cjs.map +1 -1
  142. package/dist/components-data-table-data-table-column-visibility.js +11 -10
  143. package/dist/components-data-table-data-table-column-visibility.js.map +1 -1
  144. package/dist/components-data-table-data-table-filter.cjs +1 -1
  145. package/dist/components-data-table-data-table-filter.cjs.map +1 -1
  146. package/dist/components-data-table-data-table-filter.js +15 -15
  147. package/dist/components-data-table-data-table-filter.js.map +1 -1
  148. package/dist/components-data-table-data-table-row-actions-column.cjs +1 -1
  149. package/dist/components-data-table-data-table-row-actions-column.cjs.map +1 -1
  150. package/dist/components-data-table-data-table-row-actions-column.js +1 -1
  151. package/dist/components-data-table-data-table-row-actions-column.js.map +1 -1
  152. package/dist/components-data-table-use-data-table-editable-rows.cjs +1 -1
  153. package/dist/components-data-table-use-data-table-editable-rows.cjs.map +1 -1
  154. package/dist/components-data-table-use-data-table-editable-rows.js +88 -90
  155. package/dist/components-data-table-use-data-table-editable-rows.js.map +1 -1
  156. package/dist/components-files-uploader-files-uploader.cjs +3 -3
  157. package/dist/components-files-uploader-files-uploader.cjs.map +1 -1
  158. package/dist/components-files-uploader-files-uploader.js +41 -38
  159. package/dist/components-files-uploader-files-uploader.js.map +1 -1
  160. package/dist/components-icons-ArrowCounterClockwise.cjs +2 -0
  161. package/dist/components-icons-ArrowCounterClockwise.cjs.map +1 -0
  162. package/dist/components-icons-ArrowCounterClockwise.js +5 -0
  163. package/dist/components-icons-ArrowCounterClockwise.js.map +1 -0
  164. package/dist/components-icons-BoundingBox.cjs +2 -0
  165. package/dist/components-icons-BoundingBox.cjs.map +1 -0
  166. package/dist/components-icons-BoundingBox.js +5 -0
  167. package/dist/components-icons-BoundingBox.js.map +1 -0
  168. package/dist/components-icons-Briefcase.cjs +2 -0
  169. package/dist/components-icons-Briefcase.cjs.map +1 -0
  170. package/dist/components-icons-Briefcase.js +5 -0
  171. package/dist/components-icons-Briefcase.js.map +1 -0
  172. package/dist/components-icons-Building.cjs +2 -0
  173. package/dist/components-icons-Building.cjs.map +1 -0
  174. package/dist/components-icons-Building.js +5 -0
  175. package/dist/components-icons-Building.js.map +1 -0
  176. package/dist/components-icons-Buildings.cjs +2 -0
  177. package/dist/components-icons-Buildings.cjs.map +1 -0
  178. package/dist/components-icons-Buildings.js +5 -0
  179. package/dist/components-icons-Buildings.js.map +1 -0
  180. package/dist/components-icons-CaretDown.cjs +2 -0
  181. package/dist/components-icons-CaretDown.cjs.map +1 -0
  182. package/dist/components-icons-CaretDown.js +5 -0
  183. package/dist/components-icons-CaretDown.js.map +1 -0
  184. package/dist/components-icons-CaretLeft.cjs +2 -0
  185. package/dist/components-icons-CaretLeft.cjs.map +1 -0
  186. package/dist/components-icons-CaretLeft.js +5 -0
  187. package/dist/components-icons-CaretLeft.js.map +1 -0
  188. package/dist/components-icons-CaretRight.cjs +2 -0
  189. package/dist/components-icons-CaretRight.cjs.map +1 -0
  190. package/dist/components-icons-CaretRight.js +5 -0
  191. package/dist/components-icons-CaretRight.js.map +1 -0
  192. package/dist/components-icons-CaretUp.cjs +2 -0
  193. package/dist/components-icons-CaretUp.cjs.map +1 -0
  194. package/dist/components-icons-CaretUp.js +5 -0
  195. package/dist/components-icons-CaretUp.js.map +1 -0
  196. package/dist/components-icons-CaretUpDown.cjs +2 -0
  197. package/dist/components-icons-CaretUpDown.cjs.map +1 -0
  198. package/dist/components-icons-CaretUpDown.js +5 -0
  199. package/dist/components-icons-CaretUpDown.js.map +1 -0
  200. package/dist/components-icons-ChartLine.cjs +2 -0
  201. package/dist/components-icons-ChartLine.cjs.map +1 -0
  202. package/dist/components-icons-ChartLine.js +5 -0
  203. package/dist/components-icons-ChartLine.js.map +1 -0
  204. package/dist/components-icons-Check.cjs +2 -0
  205. package/dist/components-icons-Check.cjs.map +1 -0
  206. package/dist/components-icons-Check.js +5 -0
  207. package/dist/components-icons-Check.js.map +1 -0
  208. package/dist/components-icons-CheckCircle.cjs +2 -0
  209. package/dist/components-icons-CheckCircle.cjs.map +1 -0
  210. package/dist/components-icons-CheckCircle.js +5 -0
  211. package/dist/components-icons-CheckCircle.js.map +1 -0
  212. package/dist/components-icons-Clock.cjs +2 -0
  213. package/dist/components-icons-Clock.cjs.map +1 -0
  214. package/dist/components-icons-Clock.js +5 -0
  215. package/dist/components-icons-Clock.js.map +1 -0
  216. package/dist/components-icons-CreditCard.cjs +2 -0
  217. package/dist/components-icons-CreditCard.cjs.map +1 -0
  218. package/dist/components-icons-CreditCard.js +5 -0
  219. package/dist/components-icons-CreditCard.js.map +1 -0
  220. package/dist/components-icons-DotsThree.cjs +2 -0
  221. package/dist/components-icons-DotsThree.cjs.map +1 -0
  222. package/dist/components-icons-DotsThree.js +5 -0
  223. package/dist/components-icons-DotsThree.js.map +1 -0
  224. package/dist/components-icons-DownloadSimple.cjs +2 -0
  225. package/dist/components-icons-DownloadSimple.cjs.map +1 -0
  226. package/dist/components-icons-DownloadSimple.js +5 -0
  227. package/dist/components-icons-DownloadSimple.js.map +1 -0
  228. package/dist/components-icons-EnvelopeSimple.cjs +2 -0
  229. package/dist/components-icons-EnvelopeSimple.cjs.map +1 -0
  230. package/dist/components-icons-EnvelopeSimple.js +5 -0
  231. package/dist/components-icons-EnvelopeSimple.js.map +1 -0
  232. package/dist/components-icons-Eye.cjs +2 -0
  233. package/dist/components-icons-Eye.cjs.map +1 -0
  234. package/dist/components-icons-Eye.js +5 -0
  235. package/dist/components-icons-Eye.js.map +1 -0
  236. package/dist/components-icons-EyeSlash.cjs +2 -0
  237. package/dist/components-icons-EyeSlash.cjs.map +1 -0
  238. package/dist/components-icons-EyeSlash.js +5 -0
  239. package/dist/components-icons-EyeSlash.js.map +1 -0
  240. package/dist/components-icons-FileText.cjs +2 -0
  241. package/dist/components-icons-FileText.cjs.map +1 -0
  242. package/dist/components-icons-FileText.js +5 -0
  243. package/dist/components-icons-FileText.js.map +1 -0
  244. package/dist/components-icons-Folder.cjs +2 -0
  245. package/dist/components-icons-Folder.cjs.map +1 -0
  246. package/dist/components-icons-Folder.js +5 -0
  247. package/dist/components-icons-Folder.js.map +1 -0
  248. package/dist/components-icons-Funnel.cjs +2 -0
  249. package/dist/components-icons-Funnel.cjs.map +1 -0
  250. package/dist/components-icons-Funnel.js +5 -0
  251. package/dist/components-icons-Funnel.js.map +1 -0
  252. package/dist/components-icons-Gear.cjs +2 -0
  253. package/dist/components-icons-Gear.cjs.map +1 -0
  254. package/dist/components-icons-Gear.js +5 -0
  255. package/dist/components-icons-Gear.js.map +1 -0
  256. package/dist/components-icons-Info.cjs +2 -0
  257. package/dist/components-icons-Info.cjs.map +1 -0
  258. package/dist/components-icons-Info.js +5 -0
  259. package/dist/components-icons-Info.js.map +1 -0
  260. package/dist/components-icons-LockKey.cjs +2 -0
  261. package/dist/components-icons-LockKey.cjs.map +1 -0
  262. package/dist/components-icons-LockKey.js +5 -0
  263. package/dist/components-icons-LockKey.js.map +1 -0
  264. package/dist/components-icons-MagnifyingGlass.cjs +2 -0
  265. package/dist/components-icons-MagnifyingGlass.cjs.map +1 -0
  266. package/dist/components-icons-MagnifyingGlass.js +5 -0
  267. package/dist/components-icons-MagnifyingGlass.js.map +1 -0
  268. package/dist/components-icons-MaxLogo.cjs +2 -0
  269. package/dist/components-icons-MaxLogo.cjs.map +1 -0
  270. package/dist/components-icons-MaxLogo.js +5 -0
  271. package/dist/components-icons-MaxLogo.js.map +1 -0
  272. package/dist/components-icons-Package.cjs +2 -0
  273. package/dist/components-icons-Package.cjs.map +1 -0
  274. package/dist/components-icons-Package.js +5 -0
  275. package/dist/components-icons-Package.js.map +1 -0
  276. package/dist/components-icons-Pencil.cjs +2 -0
  277. package/dist/components-icons-Pencil.cjs.map +1 -0
  278. package/dist/components-icons-Pencil.js +5 -0
  279. package/dist/components-icons-Pencil.js.map +1 -0
  280. package/dist/components-icons-Phone.cjs +2 -0
  281. package/dist/components-icons-Phone.cjs.map +1 -0
  282. package/dist/components-icons-Phone.js +5 -0
  283. package/dist/components-icons-Phone.js.map +1 -0
  284. package/dist/components-icons-Plus.cjs +2 -0
  285. package/dist/components-icons-Plus.cjs.map +1 -0
  286. package/dist/components-icons-Plus.js +5 -0
  287. package/dist/components-icons-Plus.js.map +1 -0
  288. package/dist/components-icons-PresentationChart.cjs +2 -0
  289. package/dist/components-icons-PresentationChart.cjs.map +1 -0
  290. package/dist/components-icons-PresentationChart.js +5 -0
  291. package/dist/components-icons-PresentationChart.js.map +1 -0
  292. package/dist/components-icons-SpinnerGap.cjs +2 -0
  293. package/dist/components-icons-SpinnerGap.cjs.map +1 -0
  294. package/dist/components-icons-SpinnerGap.js +5 -0
  295. package/dist/components-icons-SpinnerGap.js.map +1 -0
  296. package/dist/components-icons-TelegramLogo.cjs +2 -0
  297. package/dist/components-icons-TelegramLogo.cjs.map +1 -0
  298. package/dist/components-icons-TelegramLogo.js +5 -0
  299. package/dist/components-icons-TelegramLogo.js.map +1 -0
  300. package/dist/components-icons-Trash.cjs +2 -0
  301. package/dist/components-icons-Trash.cjs.map +1 -0
  302. package/dist/components-icons-Trash.js +5 -0
  303. package/dist/components-icons-Trash.js.map +1 -0
  304. package/dist/components-icons-UserCircleGear.cjs +2 -0
  305. package/dist/components-icons-UserCircleGear.cjs.map +1 -0
  306. package/dist/components-icons-UserCircleGear.js +5 -0
  307. package/dist/components-icons-UserCircleGear.js.map +1 -0
  308. package/dist/components-icons-Users.cjs +2 -0
  309. package/dist/components-icons-Users.cjs.map +1 -0
  310. package/dist/components-icons-Users.js +5 -0
  311. package/dist/components-icons-Users.js.map +1 -0
  312. package/dist/components-icons-UsersFour.cjs +2 -0
  313. package/dist/components-icons-UsersFour.cjs.map +1 -0
  314. package/dist/components-icons-UsersFour.js +5 -0
  315. package/dist/components-icons-UsersFour.js.map +1 -0
  316. package/dist/components-icons-Warning.cjs +2 -0
  317. package/dist/components-icons-Warning.cjs.map +1 -0
  318. package/dist/components-icons-Warning.js +5 -0
  319. package/dist/components-icons-Warning.js.map +1 -0
  320. package/dist/components-icons-WarningCircle.cjs +2 -0
  321. package/dist/components-icons-WarningCircle.cjs.map +1 -0
  322. package/dist/components-icons-WarningCircle.js +5 -0
  323. package/dist/components-icons-WarningCircle.js.map +1 -0
  324. package/dist/components-icons-WhatsAppLogoFilled.cjs +2 -0
  325. package/dist/components-icons-WhatsAppLogoFilled.cjs.map +1 -0
  326. package/dist/components-icons-WhatsAppLogoFilled.js +5 -0
  327. package/dist/components-icons-WhatsAppLogoFilled.js.map +1 -0
  328. package/dist/components-icons-Wrench.cjs +2 -0
  329. package/dist/components-icons-Wrench.cjs.map +1 -0
  330. package/dist/components-icons-Wrench.js +5 -0
  331. package/dist/components-icons-Wrench.js.map +1 -0
  332. package/dist/components-icons-X.cjs +2 -0
  333. package/dist/components-icons-X.cjs.map +1 -0
  334. package/dist/components-icons-X.js +5 -0
  335. package/dist/components-icons-X.js.map +1 -0
  336. package/dist/components-icons-XCircle.cjs +2 -0
  337. package/dist/components-icons-XCircle.cjs.map +1 -0
  338. package/dist/components-icons-XCircle.js +5 -0
  339. package/dist/components-icons-XCircle.js.map +1 -0
  340. package/dist/components-icons-stroke-icon.cjs +2 -0
  341. package/dist/components-icons-stroke-icon.cjs.map +1 -0
  342. package/dist/components-icons-stroke-icon.js +39 -0
  343. package/dist/components-icons-stroke-icon.js.map +1 -0
  344. package/dist/components-icons.cjs +2 -0
  345. package/dist/components-icons.cjs.map +1 -0
  346. package/dist/components-icons.js +97 -0
  347. package/dist/components-icons.js.map +1 -0
  348. package/dist/components-input-contact-input-contact.cjs +4 -4
  349. package/dist/components-input-contact-input-contact.cjs.map +1 -1
  350. package/dist/components-input-contact-input-contact.js +104 -75
  351. package/dist/components-input-contact-input-contact.js.map +1 -1
  352. package/dist/components-input-field-input-field.cjs +1 -1
  353. package/dist/components-input-field-input-field.cjs.map +1 -1
  354. package/dist/components-input-field-input-field.js +18 -19
  355. package/dist/components-input-field-input-field.js.map +1 -1
  356. package/dist/components-input-password-input-password.cjs +1 -1
  357. package/dist/components-input-password-input-password.cjs.map +1 -1
  358. package/dist/components-input-password-input-password.js +14 -52
  359. package/dist/components-input-password-input-password.js.map +1 -1
  360. package/dist/components-input-phone-input-phone.cjs.map +1 -1
  361. package/dist/components-input-phone-input-phone.js.map +1 -1
  362. package/dist/components-popover-modal-popover-modal.cjs +1 -1
  363. package/dist/components-popover-modal-popover-modal.cjs.map +1 -1
  364. package/dist/components-popover-modal-popover-modal.js +40 -29
  365. package/dist/components-popover-modal-popover-modal.js.map +1 -1
  366. package/dist/components-select-field-select-field.cjs.map +1 -1
  367. package/dist/components-select-field-select-field.js.map +1 -1
  368. package/dist/components-ui-avatar-avatar.cjs +1 -1
  369. package/dist/components-ui-avatar-avatar.cjs.map +1 -1
  370. package/dist/components-ui-avatar-avatar.js +12 -13
  371. package/dist/components-ui-avatar-avatar.js.map +1 -1
  372. package/dist/components-ui-badge-badge.cjs +1 -1
  373. package/dist/components-ui-badge-badge.cjs.map +1 -1
  374. package/dist/components-ui-badge-badge.js +10 -11
  375. package/dist/components-ui-badge-badge.js.map +1 -1
  376. package/dist/components-ui-button-button.cjs +1 -1
  377. package/dist/components-ui-button-button.cjs.map +1 -1
  378. package/dist/components-ui-button-button.js +10 -11
  379. package/dist/components-ui-button-button.js.map +1 -1
  380. package/dist/components-ui-button-button.styles.cjs +4 -4
  381. package/dist/components-ui-button-button.styles.cjs.map +1 -1
  382. package/dist/components-ui-button-button.styles.js +4 -4
  383. package/dist/components-ui-button-button.styles.js.map +1 -1
  384. package/dist/components-ui-calendar-calendar.cjs +1 -1
  385. package/dist/components-ui-calendar-calendar.js +4 -3
  386. package/dist/components-ui-calendar-calendar.js.map +1 -1
  387. package/dist/components-ui-calendar-calendar.styles.cjs +1 -1
  388. package/dist/components-ui-calendar-calendar.styles.cjs.map +1 -1
  389. package/dist/components-ui-calendar-calendar.styles.js +1 -1
  390. package/dist/components-ui-calendar-calendar.styles.js.map +1 -1
  391. package/dist/components-ui-calendar.cjs +1 -1
  392. package/dist/components-ui-calendar.js +2 -2
  393. package/dist/components-ui-card-card.cjs +1 -1
  394. package/dist/components-ui-card-card.cjs.map +1 -1
  395. package/dist/components-ui-card-card.js +10 -11
  396. package/dist/components-ui-card-card.js.map +1 -1
  397. package/dist/components-ui-chart-chart.cjs +1 -1
  398. package/dist/components-ui-chart-chart.js +1 -1
  399. package/dist/components-ui-chart.cjs +1 -1
  400. package/dist/components-ui-chart.js +1 -1
  401. package/dist/components-ui-checkbox-checkbox.cjs +1 -1
  402. package/dist/components-ui-checkbox-checkbox.cjs.map +1 -1
  403. package/dist/components-ui-checkbox-checkbox.js +13 -13
  404. package/dist/components-ui-checkbox-checkbox.js.map +1 -1
  405. package/dist/components-ui-combobox-combobox.cjs +5 -5
  406. package/dist/components-ui-combobox-combobox.cjs.map +1 -1
  407. package/dist/components-ui-combobox-combobox.js +1478 -1479
  408. package/dist/components-ui-combobox-combobox.js.map +1 -1
  409. package/dist/components-ui-dialog-dialog.cjs +1 -1
  410. package/dist/components-ui-dialog-dialog.cjs.map +1 -1
  411. package/dist/components-ui-dialog-dialog.js +23 -23
  412. package/dist/components-ui-dialog-dialog.js.map +1 -1
  413. package/dist/components-ui-drawer-drawer.cjs +2 -2
  414. package/dist/components-ui-drawer-drawer.cjs.map +1 -1
  415. package/dist/components-ui-drawer-drawer.js +16 -19
  416. package/dist/components-ui-drawer-drawer.js.map +1 -1
  417. package/dist/components-ui-dropdown-menu-dropdown-menu.cjs +1 -1
  418. package/dist/components-ui-dropdown-menu-dropdown-menu.cjs.map +1 -1
  419. package/dist/components-ui-dropdown-menu-dropdown-menu.js +1 -1
  420. package/dist/components-ui-dropdown-menu-dropdown-menu.js.map +1 -1
  421. package/dist/components-ui-icon-icon-map.cjs +2 -0
  422. package/dist/components-ui-icon-icon-map.cjs.map +1 -0
  423. package/dist/components-ui-icon-icon-map.js +71 -0
  424. package/dist/components-ui-icon-icon-map.js.map +1 -0
  425. package/dist/components-ui-icon-icon.cjs +1 -1
  426. package/dist/components-ui-icon-icon.cjs.map +1 -1
  427. package/dist/components-ui-icon-icon.js +29 -61735
  428. package/dist/components-ui-icon-icon.js.map +1 -1
  429. package/dist/components-ui-icon.cjs +1 -1
  430. package/dist/components-ui-icon.js +3 -1
  431. package/dist/components-ui-icon.js.map +1 -1
  432. package/dist/components-ui-input-group-input-group.cjs +1 -1
  433. package/dist/components-ui-input-group-input-group.cjs.map +1 -1
  434. package/dist/components-ui-input-group-input-group.js +12 -13
  435. package/dist/components-ui-input-group-input-group.js.map +1 -1
  436. package/dist/components-ui-input-input.cjs +1 -1
  437. package/dist/components-ui-input-input.cjs.map +1 -1
  438. package/dist/components-ui-input-input.js +2 -3
  439. package/dist/components-ui-input-input.js.map +1 -1
  440. package/dist/components-ui-label-label.cjs +1 -1
  441. package/dist/components-ui-label-label.cjs.map +1 -1
  442. package/dist/components-ui-label-label.js +1 -1
  443. package/dist/components-ui-label-label.js.map +1 -1
  444. package/dist/components-ui-pagination-pagination.cjs +2 -2
  445. package/dist/components-ui-pagination-pagination.cjs.map +1 -1
  446. package/dist/components-ui-pagination-pagination.js +48 -46
  447. package/dist/components-ui-pagination-pagination.js.map +1 -1
  448. package/dist/components-ui-popover-popover.cjs +1 -1
  449. package/dist/components-ui-popover-popover.cjs.map +1 -1
  450. package/dist/components-ui-popover-popover.js +14 -19
  451. package/dist/components-ui-popover-popover.js.map +1 -1
  452. package/dist/components-ui-progress-progress.cjs +1 -1
  453. package/dist/components-ui-progress-progress.cjs.map +1 -1
  454. package/dist/components-ui-progress-progress.js +1 -1
  455. package/dist/components-ui-progress-progress.js.map +1 -1
  456. package/dist/components-ui-radio-group-radio-group.cjs +1 -1
  457. package/dist/components-ui-radio-group-radio-group.cjs.map +1 -1
  458. package/dist/components-ui-radio-group-radio-group.js +0 -1
  459. package/dist/components-ui-radio-group-radio-group.js.map +1 -1
  460. package/dist/components-ui-select-calendar-menu-select-calendar-menu.cjs +1 -1
  461. package/dist/components-ui-select-calendar-menu-select-calendar-menu.cjs.map +1 -1
  462. package/dist/components-ui-select-calendar-menu-select-calendar-menu.js +54 -47
  463. package/dist/components-ui-select-calendar-menu-select-calendar-menu.js.map +1 -1
  464. package/dist/components-ui-select-select.cjs +1 -1
  465. package/dist/components-ui-select-select.cjs.map +1 -1
  466. package/dist/components-ui-select-select.js +36 -36
  467. package/dist/components-ui-select-select.js.map +1 -1
  468. package/dist/components-ui-separator-separator.cjs +1 -1
  469. package/dist/components-ui-separator-separator.cjs.map +1 -1
  470. package/dist/components-ui-separator-separator.js +11 -12
  471. package/dist/components-ui-separator-separator.js.map +1 -1
  472. package/dist/components-ui-sonner-sonner.cjs +1 -1
  473. package/dist/components-ui-sonner-sonner.cjs.map +1 -1
  474. package/dist/components-ui-sonner-sonner.js +38 -32
  475. package/dist/components-ui-sonner-sonner.js.map +1 -1
  476. package/dist/components-ui-switch-switch.cjs +1 -1
  477. package/dist/components-ui-switch-switch.cjs.map +1 -1
  478. package/dist/components-ui-switch-switch.js +6 -7
  479. package/dist/components-ui-switch-switch.js.map +1 -1
  480. package/dist/components-ui-table-table.cjs +1 -1
  481. package/dist/components-ui-table-table.cjs.map +1 -1
  482. package/dist/components-ui-table-table.js +0 -1
  483. package/dist/components-ui-table-table.js.map +1 -1
  484. package/dist/components-ui-tabs-tabs.cjs +2 -2
  485. package/dist/components-ui-tabs-tabs.cjs.map +1 -1
  486. package/dist/components-ui-tabs-tabs.js +16 -16
  487. package/dist/components-ui-tabs-tabs.js.map +1 -1
  488. package/dist/components-ui-tooltip-tooltip.cjs +1 -1
  489. package/dist/components-ui-tooltip-tooltip.cjs.map +1 -1
  490. package/dist/components-ui-tooltip-tooltip.js +9 -10
  491. package/dist/components-ui-tooltip-tooltip.js.map +1 -1
  492. package/dist/components-ui-typography-typography.cjs +1 -1
  493. package/dist/components-ui-typography-typography.cjs.map +1 -1
  494. package/dist/components-ui-typography-typography.js +7 -7
  495. package/dist/components-ui-typography-typography.js.map +1 -1
  496. package/dist/index.cjs +1 -1
  497. package/dist/index.js +234 -233
  498. package/dist/index.js.map +1 -1
  499. package/package.json +10 -1
  500. package/dist/calendar-DReGV_22.cjs +0 -2
  501. package/dist/chart-C69jBlXa.cjs +0 -63
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const U=require("react");function q(t){const n=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(t){for(const i in t)if(i!=="default"){const b=Object.getOwnPropertyDescriptor(t,i);Object.defineProperty(n,i,b.get?b:{enumerable:!0,get:()=>t[i]})}}return n.default=t,Object.freeze(n)}const c=q(U);function z(t){return typeof t=="string"?t:typeof t=="number"||typeof t=="boolean"?String(t):""}function A(t,n){return typeof n=="function"?n(t):n}function j(t,n,i){const[b,E]=c.useState(i),y=t!==void 0,V=y?t:b,R=c.useCallback(x=>{const m=A(V,x);y||E(m),n?.(m)},[y,n,V]);return[V,R]}function B({rows:t,getRowId:n,setRows:i,editingRowId:b,onEditingRowIdChange:E,editingValues:y,onEditingValuesChange:V,onRowDelete:R,onRowEditCancel:x,onRowEditSave:m,onRowEditStart:S,onRowsChange:k}){const[r,l]=j(b,E,null),[f,u]=j(y,V,{}),[P,O]=c.useState(!0);c.useEffect(()=>{O(!0)},[t]);const d=c.useCallback(e=>t.find(s=>n(s)===e)??null,[n,t]),C=c.useCallback((e,s)=>{O(!1),i?.(e),k?.(s)},[k,i]),T=c.useCallback((e,s,o)=>{const a=n(e),p=s.reduce((v,g)=>(v[g]=o?.[g]??z(e[g]),v),{});l(a),u(p),S?.({editableKeys:s,initialValues:p,row:e,rowId:a})},[n,S,l,u]),D=c.useCallback(()=>{const e=r?d(r):null,s=f;l(null),u({}),x?.({editingValues:s,row:e,rowId:r})},[r,f,d,x,l,u]),_=c.useCallback(e=>{const s=d(e);if(!s)return;const o={...s,...f},a=t,p=a.map(g=>n(g)===e?o:g);C(p,{editingValues:f,nextRow:o,nextRows:p,previousRow:s,previousRows:a,rowId:e,type:"edit-save"}),l(null),u({}),m?.({editingValues:f,nextRow:o,previousRow:s,rowId:e})},[C,f,d,n,m,t,l,u]),M=c.useCallback(e=>{const s=d(e);if(!s)return;const o=t,a=o.filter(v=>n(v)!==e);C(a,{nextRows:a,previousRows:o,row:s,rowId:e,type:"delete"}),r===e&&(l(null),u({})),R?.({row:s,rowId:e})},[C,r,d,n,R,t,l,u]);return{autoResetPageIndex:P,cancelEditingRow:D,deleteRow:M,editingRowId:r,editingValues:f,saveEditingRow:_,setEditingValues:u,setEditingRowId:l,startEditingRow:T}}exports.useDataTableEditableRows=B;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const i=require("react");function D(e){return typeof e=="string"?e:typeof e=="number"||typeof e=="boolean"?String(e):""}function M(e,s){return typeof s=="function"?s(e):s}function P(e,s,x){const[E,k]=i.useState(x),p=e!==void 0,g=p?e:E,y=i.useCallback(C=>{const V=M(g,C);p||k(V),s?.(V)},[p,s,g]);return[g,y]}function O({rows:e,getRowId:s,setRows:x,editingRowId:E,onEditingRowIdChange:k,editingValues:p,onEditingValuesChange:g,onRowDelete:y,onRowEditCancel:C,onRowEditSave:V,onRowEditStart:S,onRowsChange:m}){const[a,l]=P(E,k,null),[r,u]=P(p,g,{}),[U,T]=i.useState(!0),f=i.useCallback(t=>e.find(n=>s(n)===t)??null,[s,e]),R=i.useCallback((t,n)=>{T(!1),x?.(t),m?.(n),i.startTransition(()=>{T(!0)})},[m,x]),j=i.useCallback((t,n,c)=>{const o=s(t),b=n.reduce((v,d)=>(v[d]=c?.[d]??D(t[d]),v),{});l(o),u(b),S?.({editableKeys:n,initialValues:b,row:t,rowId:o})},[s,S,l,u]),q=i.useCallback(()=>{const t=a?f(a):null,n=r;l(null),u({}),C?.({editingValues:n,row:t,rowId:a})},[a,r,f,C,l,u]),A=i.useCallback(t=>{const n=f(t);if(!n)return;const c={...n,...r},o=e,b=o.map(d=>s(d)===t?c:d);R(b,{editingValues:r,nextRow:c,nextRows:b,previousRow:n,previousRows:o,rowId:t,type:"edit-save"}),l(null),u({}),V?.({editingValues:r,nextRow:c,previousRow:n,rowId:t})},[R,r,f,s,V,e,l,u]),B=i.useCallback(t=>{const n=f(t);if(!n)return;const c=e,o=c.filter(v=>s(v)!==t);R(o,{nextRows:o,previousRows:c,row:n,rowId:t,type:"delete"}),a===t&&(l(null),u({})),y?.({row:n,rowId:t})},[R,a,f,s,y,e,l,u]);return{autoResetPageIndex:U,cancelEditingRow:q,deleteRow:B,editingRowId:a,editingValues:r,saveEditingRow:A,setEditingValues:u,setEditingRowId:l,startEditingRow:j}}exports.useDataTableEditableRows=O;
2
2
  //# sourceMappingURL=components-data-table-use-data-table-editable-rows.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"components-data-table-use-data-table-editable-rows.cjs","sources":["../src/components/data-table/use-data-table-editable-rows.ts"],"sourcesContent":["import * as React from \"react\";\n\ntype EditableRowKey<TData> = Extract<keyof TData, string>;\ntype EditableValues = Record<string, string>;\n\ntype DataTableRowEditStartEvent<TData> = {\n editableKeys: readonly EditableRowKey<TData>[];\n initialValues: EditableValues;\n row: TData;\n rowId: string;\n};\n\ntype DataTableRowEditCancelEvent<TData> = {\n editingValues: EditableValues;\n row: TData | null;\n rowId: string | null;\n};\n\ntype DataTableRowEditSaveEvent<TData> = {\n editingValues: EditableValues;\n nextRow: TData;\n previousRow: TData;\n rowId: string;\n};\n\ntype DataTableRowDeleteEvent<TData> = {\n row: TData;\n rowId: string;\n};\n\ntype DataTableRowsChangeEvent<TData> =\n | ({\n nextRows: TData[];\n previousRows: TData[];\n type: \"edit-save\";\n } & DataTableRowEditSaveEvent<TData>)\n | ({\n nextRows: TData[];\n previousRows: TData[];\n type: \"delete\";\n } & DataTableRowDeleteEvent<TData>);\n\ntype UseDataTableEditableRowsOptions<TData> = {\n rows: TData[];\n getRowId: (row: TData) => string;\n setRows?: React.Dispatch<React.SetStateAction<TData[]>>;\n editingRowId?: string | null;\n onEditingRowIdChange?: (rowId: string | null) => void;\n editingValues?: EditableValues;\n onEditingValuesChange?: React.Dispatch<React.SetStateAction<EditableValues>>;\n onRowDelete?: (event: DataTableRowDeleteEvent<TData>) => void;\n onRowEditCancel?: (event: DataTableRowEditCancelEvent<TData>) => void;\n onRowEditSave?: (event: DataTableRowEditSaveEvent<TData>) => void;\n onRowEditStart?: (event: DataTableRowEditStartEvent<TData>) => void;\n onRowsChange?: (event: DataTableRowsChangeEvent<TData>) => void;\n};\n\nfunction toEditableString(value: unknown) {\n if (typeof value === \"string\") {\n return value;\n }\n\n if (typeof value === \"number\" || typeof value === \"boolean\") {\n return String(value);\n }\n\n return \"\";\n}\n\nfunction applyUpdater<TData>(previousValue: TData, updater: React.SetStateAction<TData>) {\n return typeof updater === \"function\"\n ? (updater as (value: TData) => TData)(previousValue)\n : updater;\n}\n\nfunction useControllableState<TData>(\n controlledValue: TData | undefined,\n onChange: ((nextValue: TData) => void) | undefined,\n defaultValue: TData,\n) {\n const [uncontrolledValue, setUncontrolledValue] = React.useState(defaultValue);\n const isControlled = controlledValue !== undefined;\n const value = isControlled ? controlledValue : uncontrolledValue;\n\n const setValue = React.useCallback(\n (updater: React.SetStateAction<TData>) => {\n const nextValue = applyUpdater(value, updater);\n\n if (!isControlled) {\n setUncontrolledValue(nextValue);\n }\n\n onChange?.(nextValue);\n },\n [isControlled, onChange, value],\n );\n\n return [value, setValue] as const;\n}\n\nfunction useDataTableEditableRows<TData>({\n rows,\n getRowId,\n setRows,\n editingRowId: controlledEditingRowId,\n onEditingRowIdChange,\n editingValues: controlledEditingValues,\n onEditingValuesChange,\n onRowDelete,\n onRowEditCancel,\n onRowEditSave,\n onRowEditStart,\n onRowsChange,\n}: UseDataTableEditableRowsOptions<TData>) {\n const [editingRowId, setEditingRowId] = useControllableState<string | null>(\n controlledEditingRowId,\n onEditingRowIdChange,\n null,\n );\n const [editingValues, setEditingValues] = useControllableState<EditableValues>(\n controlledEditingValues,\n onEditingValuesChange,\n {},\n );\n const [autoResetPageIndex, setAutoResetPageIndex] = React.useState(true);\n\n React.useEffect(() => {\n setAutoResetPageIndex(true);\n }, [rows]);\n\n const findRowById = React.useCallback(\n (rowId: string) => rows.find((row) => getRowId(row) === rowId) ?? null,\n [getRowId, rows],\n );\n\n const commitRowsChange = React.useCallback(\n (nextRows: TData[], event: DataTableRowsChangeEvent<TData>) => {\n setAutoResetPageIndex(false);\n setRows?.(nextRows);\n onRowsChange?.(event);\n },\n [onRowsChange, setRows],\n );\n\n const startEditingRow = React.useCallback(\n (\n row: TData,\n editableKeys: readonly EditableRowKey<TData>[],\n overrides?: Partial<Record<EditableRowKey<TData>, string>>,\n ) => {\n const rowId = getRowId(row);\n const initialValues = editableKeys.reduce<EditableValues>((accumulator, key) => {\n accumulator[key] = overrides?.[key] ?? toEditableString(row[key]);\n return accumulator;\n }, {});\n\n setEditingRowId(rowId);\n setEditingValues(initialValues);\n onRowEditStart?.({\n editableKeys,\n initialValues,\n row,\n rowId,\n });\n },\n [getRowId, onRowEditStart, setEditingRowId, setEditingValues],\n );\n\n const cancelEditingRow = React.useCallback(() => {\n const row = editingRowId ? findRowById(editingRowId) : null;\n const nextEditingValues = editingValues;\n\n setEditingRowId(null);\n setEditingValues({});\n onRowEditCancel?.({\n editingValues: nextEditingValues,\n row,\n rowId: editingRowId,\n });\n }, [\n editingRowId,\n editingValues,\n findRowById,\n onRowEditCancel,\n setEditingRowId,\n setEditingValues,\n ]);\n\n const saveEditingRow = React.useCallback(\n (rowId: string) => {\n const previousRow = findRowById(rowId);\n\n if (!previousRow) {\n return;\n }\n\n const nextRow = {\n ...previousRow,\n ...editingValues,\n };\n const previousRows = rows;\n const nextRows = previousRows.map((row) =>\n getRowId(row) === rowId ? nextRow : row,\n );\n const event: DataTableRowsChangeEvent<TData> = {\n editingValues,\n nextRow,\n nextRows,\n previousRow,\n previousRows,\n rowId,\n type: \"edit-save\",\n };\n\n commitRowsChange(nextRows, event);\n setEditingRowId(null);\n setEditingValues({});\n onRowEditSave?.({\n editingValues,\n nextRow,\n previousRow,\n rowId,\n });\n },\n [\n commitRowsChange,\n editingValues,\n findRowById,\n getRowId,\n onRowEditSave,\n rows,\n setEditingRowId,\n setEditingValues,\n ],\n );\n\n const deleteRow = React.useCallback(\n (rowId: string) => {\n const row = findRowById(rowId);\n\n if (!row) {\n return;\n }\n\n const previousRows = rows;\n const nextRows = previousRows.filter((item) => getRowId(item) !== rowId);\n const event: DataTableRowsChangeEvent<TData> = {\n nextRows,\n previousRows,\n row,\n rowId,\n type: \"delete\",\n };\n\n commitRowsChange(nextRows, event);\n\n if (editingRowId === rowId) {\n setEditingRowId(null);\n setEditingValues({});\n }\n\n onRowDelete?.({\n row,\n rowId,\n });\n },\n [\n commitRowsChange,\n editingRowId,\n findRowById,\n getRowId,\n onRowDelete,\n rows,\n setEditingRowId,\n setEditingValues,\n ],\n );\n\n return {\n autoResetPageIndex,\n cancelEditingRow,\n deleteRow,\n editingRowId,\n editingValues,\n saveEditingRow,\n setEditingValues,\n setEditingRowId,\n startEditingRow,\n };\n}\n\nexport { useDataTableEditableRows };\nexport type {\n DataTableRowDeleteEvent,\n DataTableRowEditCancelEvent,\n DataTableRowEditSaveEvent,\n DataTableRowEditStartEvent,\n DataTableRowsChangeEvent,\n EditableRowKey,\n UseDataTableEditableRowsOptions,\n};\n"],"names":["toEditableString","value","applyUpdater","previousValue","updater","useControllableState","controlledValue","onChange","defaultValue","uncontrolledValue","setUncontrolledValue","React","isControlled","setValue","nextValue","useDataTableEditableRows","rows","getRowId","setRows","controlledEditingRowId","onEditingRowIdChange","controlledEditingValues","onEditingValuesChange","onRowDelete","onRowEditCancel","onRowEditSave","onRowEditStart","onRowsChange","editingRowId","setEditingRowId","editingValues","setEditingValues","autoResetPageIndex","setAutoResetPageIndex","findRowById","rowId","row","commitRowsChange","nextRows","event","startEditingRow","editableKeys","overrides","initialValues","accumulator","key","cancelEditingRow","nextEditingValues","saveEditingRow","previousRow","nextRow","previousRows","deleteRow","item"],"mappings":"mYAyDA,SAASA,EAAiBC,EAAgB,CACxC,OAAI,OAAOA,GAAU,SACZA,EAGL,OAAOA,GAAU,UAAY,OAAOA,GAAU,UACzC,OAAOA,CAAK,EAGd,EACT,CAEA,SAASC,EAAoBC,EAAsBC,EAAsC,CACvF,OAAO,OAAOA,GAAY,WACrBA,EAAoCD,CAAa,EAClDC,CACN,CAEA,SAASC,EACPC,EACAC,EACAC,EACA,CACA,KAAM,CAACC,EAAmBC,CAAoB,EAAIC,EAAM,SAASH,CAAY,EACvEI,EAAeN,IAAoB,OACnCL,EAAQW,EAAeN,EAAkBG,EAEzCI,EAAWF,EAAM,YACpBP,GAAyC,CACxC,MAAMU,EAAYZ,EAAaD,EAAOG,CAAO,EAExCQ,GACHF,EAAqBI,CAAS,EAGhCP,IAAWO,CAAS,CACtB,EACA,CAACF,EAAcL,EAAUN,CAAK,CAAA,EAGhC,MAAO,CAACA,EAAOY,CAAQ,CACzB,CAEA,SAASE,EAAgC,CACvC,KAAAC,EACA,SAAAC,EACA,QAAAC,EACA,aAAcC,EACd,qBAAAC,EACA,cAAeC,EACf,sBAAAC,EACA,YAAAC,EACA,gBAAAC,EACA,cAAAC,EACA,eAAAC,EACA,aAAAC,CACF,EAA2C,CACzC,KAAM,CAACC,EAAcC,CAAe,EAAIxB,EACtCc,EACAC,EACA,IAAA,EAEI,CAACU,EAAeC,CAAgB,EAAI1B,EACxCgB,EACAC,EACA,CAAA,CAAC,EAEG,CAACU,EAAoBC,CAAqB,EAAItB,EAAM,SAAS,EAAI,EAEvEA,EAAM,UAAU,IAAM,CACpBsB,EAAsB,EAAI,CAC5B,EAAG,CAACjB,CAAI,CAAC,EAET,MAAMkB,EAAcvB,EAAM,YACvBwB,GAAkBnB,EAAK,KAAMoB,GAAQnB,EAASmB,CAAG,IAAMD,CAAK,GAAK,KAClE,CAAClB,EAAUD,CAAI,CAAA,EAGXqB,EAAmB1B,EAAM,YAC7B,CAAC2B,EAAmBC,IAA2C,CAC7DN,EAAsB,EAAK,EAC3Bf,IAAUoB,CAAQ,EAClBX,IAAeY,CAAK,CACtB,EACA,CAACZ,EAAcT,CAAO,CAAA,EAGlBsB,EAAkB7B,EAAM,YAC5B,CACEyB,EACAK,EACAC,IACG,CACH,MAAMP,EAAQlB,EAASmB,CAAG,EACpBO,EAAgBF,EAAa,OAAuB,CAACG,EAAaC,KACtED,EAAYC,CAAG,EAAIH,IAAYG,CAAG,GAAK7C,EAAiBoC,EAAIS,CAAG,CAAC,EACzDD,GACN,CAAA,CAAE,EAELf,EAAgBM,CAAK,EACrBJ,EAAiBY,CAAa,EAC9BjB,IAAiB,CACf,aAAAe,EACA,cAAAE,EACA,IAAAP,EACA,MAAAD,CAAA,CACD,CACH,EACA,CAAClB,EAAUS,EAAgBG,EAAiBE,CAAgB,CAAA,EAGxDe,EAAmBnC,EAAM,YAAY,IAAM,CAC/C,MAAMyB,EAAMR,EAAeM,EAAYN,CAAY,EAAI,KACjDmB,EAAoBjB,EAE1BD,EAAgB,IAAI,EACpBE,EAAiB,CAAA,CAAE,EACnBP,IAAkB,CAChB,cAAeuB,EACf,IAAAX,EACA,MAAOR,CAAA,CACR,CACH,EAAG,CACDA,EACAE,EACAI,EACAV,EACAK,EACAE,CAAA,CACD,EAEKiB,EAAiBrC,EAAM,YAC1BwB,GAAkB,CACjB,MAAMc,EAAcf,EAAYC,CAAK,EAErC,GAAI,CAACc,EACH,OAGF,MAAMC,EAAU,CACd,GAAGD,EACH,GAAGnB,CAAA,EAECqB,EAAenC,EACfsB,EAAWa,EAAa,IAAKf,GACjCnB,EAASmB,CAAG,IAAMD,EAAQe,EAAUd,CAAA,EAYtCC,EAAiBC,EAV8B,CAC7C,cAAAR,EACA,QAAAoB,EACA,SAAAZ,EACA,YAAAW,EACA,aAAAE,EACA,MAAAhB,EACA,KAAM,WAAA,CAGwB,EAChCN,EAAgB,IAAI,EACpBE,EAAiB,CAAA,CAAE,EACnBN,IAAgB,CACd,cAAAK,EACA,QAAAoB,EACA,YAAAD,EACA,MAAAd,CAAA,CACD,CACH,EACA,CACEE,EACAP,EACAI,EACAjB,EACAQ,EACAT,EACAa,EACAE,CAAA,CACF,EAGIqB,EAAYzC,EAAM,YACrBwB,GAAkB,CACjB,MAAMC,EAAMF,EAAYC,CAAK,EAE7B,GAAI,CAACC,EACH,OAGF,MAAMe,EAAenC,EACfsB,EAAWa,EAAa,OAAQE,GAASpC,EAASoC,CAAI,IAAMlB,CAAK,EASvEE,EAAiBC,EAR8B,CAC7C,SAAAA,EACA,aAAAa,EACA,IAAAf,EACA,MAAAD,EACA,KAAM,QAAA,CAGwB,EAE5BP,IAAiBO,IACnBN,EAAgB,IAAI,EACpBE,EAAiB,CAAA,CAAE,GAGrBR,IAAc,CACZ,IAAAa,EACA,MAAAD,CAAA,CACD,CACH,EACA,CACEE,EACAT,EACAM,EACAjB,EACAM,EACAP,EACAa,EACAE,CAAA,CACF,EAGF,MAAO,CACL,mBAAAC,EACA,iBAAAc,EACA,UAAAM,EACA,aAAAxB,EACA,cAAAE,EACA,eAAAkB,EACA,iBAAAjB,EACA,gBAAAF,EACA,gBAAAW,CAAA,CAEJ"}
1
+ {"version":3,"file":"components-data-table-use-data-table-editable-rows.cjs","sources":["../src/components/data-table/use-data-table-editable-rows.ts"],"sourcesContent":["import { startTransition, useCallback, useState } from \"react\";\nimport type { Dispatch, SetStateAction } from \"react\";\n\ntype EditableRowKey<TData> = Extract<keyof TData, string>;\ntype EditableValues = Record<string, string>;\n\ntype DataTableRowEditStartEvent<TData> = {\n editableKeys: readonly EditableRowKey<TData>[];\n initialValues: EditableValues;\n row: TData;\n rowId: string;\n};\n\ntype DataTableRowEditCancelEvent<TData> = {\n editingValues: EditableValues;\n row: TData | null;\n rowId: string | null;\n};\n\ntype DataTableRowEditSaveEvent<TData> = {\n editingValues: EditableValues;\n nextRow: TData;\n previousRow: TData;\n rowId: string;\n};\n\ntype DataTableRowDeleteEvent<TData> = {\n row: TData;\n rowId: string;\n};\n\ntype DataTableRowsChangeEvent<TData> =\n | ({\n nextRows: TData[];\n previousRows: TData[];\n type: \"edit-save\";\n } & DataTableRowEditSaveEvent<TData>)\n | ({\n nextRows: TData[];\n previousRows: TData[];\n type: \"delete\";\n } & DataTableRowDeleteEvent<TData>);\n\ntype UseDataTableEditableRowsOptions<TData> = {\n rows: TData[];\n getRowId: (row: TData) => string;\n setRows?: Dispatch<SetStateAction<TData[]>>;\n editingRowId?: string | null;\n onEditingRowIdChange?: (rowId: string | null) => void;\n editingValues?: EditableValues;\n onEditingValuesChange?: Dispatch<SetStateAction<EditableValues>>;\n onRowDelete?: (event: DataTableRowDeleteEvent<TData>) => void;\n onRowEditCancel?: (event: DataTableRowEditCancelEvent<TData>) => void;\n onRowEditSave?: (event: DataTableRowEditSaveEvent<TData>) => void;\n onRowEditStart?: (event: DataTableRowEditStartEvent<TData>) => void;\n onRowsChange?: (event: DataTableRowsChangeEvent<TData>) => void;\n};\n\nfunction toEditableString(value: unknown) {\n if (typeof value === \"string\") {\n return value;\n }\n\n if (typeof value === \"number\" || typeof value === \"boolean\") {\n return String(value);\n }\n\n return \"\";\n}\n\nfunction applyUpdater<TData>(previousValue: TData, updater: SetStateAction<TData>) {\n return typeof updater === \"function\"\n ? (updater as (value: TData) => TData)(previousValue)\n : updater;\n}\n\nfunction useControllableState<TData>(\n controlledValue: TData | undefined,\n onChange: ((nextValue: TData) => void) | undefined,\n defaultValue: TData,\n) {\n const [uncontrolledValue, setUncontrolledValue] = useState(defaultValue);\n const isControlled = controlledValue !== undefined;\n const value = isControlled ? controlledValue : uncontrolledValue;\n\n const setValue = useCallback(\n (updater: SetStateAction<TData>) => {\n const nextValue = applyUpdater(value, updater);\n\n if (!isControlled) {\n setUncontrolledValue(nextValue);\n }\n\n onChange?.(nextValue);\n },\n [isControlled, onChange, value],\n );\n\n return [value, setValue] as const;\n}\n\nfunction useDataTableEditableRows<TData>({\n rows,\n getRowId,\n setRows,\n editingRowId: controlledEditingRowId,\n onEditingRowIdChange,\n editingValues: controlledEditingValues,\n onEditingValuesChange,\n onRowDelete,\n onRowEditCancel,\n onRowEditSave,\n onRowEditStart,\n onRowsChange,\n}: UseDataTableEditableRowsOptions<TData>) {\n const [editingRowId, setEditingRowId] = useControllableState<string | null>(\n controlledEditingRowId,\n onEditingRowIdChange,\n null,\n );\n const [editingValues, setEditingValues] = useControllableState<EditableValues>(\n controlledEditingValues,\n onEditingValuesChange,\n {},\n );\n const [autoResetPageIndex, setAutoResetPageIndex] = useState(true);\n\n const findRowById = useCallback(\n (rowId: string) => rows.find((row) => getRowId(row) === rowId) ?? null,\n [getRowId, rows],\n );\n\n const commitRowsChange = useCallback(\n (nextRows: TData[], event: DataTableRowsChangeEvent<TData>) => {\n setAutoResetPageIndex(false);\n setRows?.(nextRows);\n onRowsChange?.(event);\n startTransition(() => {\n setAutoResetPageIndex(true);\n });\n },\n [onRowsChange, setRows],\n );\n\n const startEditingRow = useCallback(\n (\n row: TData,\n editableKeys: readonly EditableRowKey<TData>[],\n overrides?: Partial<Record<EditableRowKey<TData>, string>>,\n ) => {\n const rowId = getRowId(row);\n const initialValues = editableKeys.reduce<EditableValues>((accumulator, key) => {\n accumulator[key] = overrides?.[key] ?? toEditableString(row[key]);\n return accumulator;\n }, {});\n\n setEditingRowId(rowId);\n setEditingValues(initialValues);\n onRowEditStart?.({\n editableKeys,\n initialValues,\n row,\n rowId,\n });\n },\n [getRowId, onRowEditStart, setEditingRowId, setEditingValues],\n );\n\n const cancelEditingRow = useCallback(() => {\n const row = editingRowId ? findRowById(editingRowId) : null;\n const nextEditingValues = editingValues;\n\n setEditingRowId(null);\n setEditingValues({});\n onRowEditCancel?.({\n editingValues: nextEditingValues,\n row,\n rowId: editingRowId,\n });\n }, [\n editingRowId,\n editingValues,\n findRowById,\n onRowEditCancel,\n setEditingRowId,\n setEditingValues,\n ]);\n\n const saveEditingRow = useCallback(\n (rowId: string) => {\n const previousRow = findRowById(rowId);\n\n if (!previousRow) {\n return;\n }\n\n const nextRow = {\n ...previousRow,\n ...editingValues,\n };\n const previousRows = rows;\n const nextRows = previousRows.map((row) =>\n getRowId(row) === rowId ? nextRow : row,\n );\n const event: DataTableRowsChangeEvent<TData> = {\n editingValues,\n nextRow,\n nextRows,\n previousRow,\n previousRows,\n rowId,\n type: \"edit-save\",\n };\n\n commitRowsChange(nextRows, event);\n setEditingRowId(null);\n setEditingValues({});\n onRowEditSave?.({\n editingValues,\n nextRow,\n previousRow,\n rowId,\n });\n },\n [\n commitRowsChange,\n editingValues,\n findRowById,\n getRowId,\n onRowEditSave,\n rows,\n setEditingRowId,\n setEditingValues,\n ],\n );\n\n const deleteRow = useCallback(\n (rowId: string) => {\n const row = findRowById(rowId);\n\n if (!row) {\n return;\n }\n\n const previousRows = rows;\n const nextRows = previousRows.filter((item) => getRowId(item) !== rowId);\n const event: DataTableRowsChangeEvent<TData> = {\n nextRows,\n previousRows,\n row,\n rowId,\n type: \"delete\",\n };\n\n commitRowsChange(nextRows, event);\n\n if (editingRowId === rowId) {\n setEditingRowId(null);\n setEditingValues({});\n }\n\n onRowDelete?.({\n row,\n rowId,\n });\n },\n [\n commitRowsChange,\n editingRowId,\n findRowById,\n getRowId,\n onRowDelete,\n rows,\n setEditingRowId,\n setEditingValues,\n ],\n );\n\n return {\n autoResetPageIndex,\n cancelEditingRow,\n deleteRow,\n editingRowId,\n editingValues,\n saveEditingRow,\n setEditingValues,\n setEditingRowId,\n startEditingRow,\n };\n}\n\nexport { useDataTableEditableRows };\nexport type {\n DataTableRowDeleteEvent,\n DataTableRowEditCancelEvent,\n DataTableRowEditSaveEvent,\n DataTableRowEditStartEvent,\n DataTableRowsChangeEvent,\n EditableRowKey,\n UseDataTableEditableRowsOptions,\n};\n"],"names":["toEditableString","value","applyUpdater","previousValue","updater","useControllableState","controlledValue","onChange","defaultValue","uncontrolledValue","setUncontrolledValue","useState","isControlled","setValue","useCallback","nextValue","useDataTableEditableRows","rows","getRowId","setRows","controlledEditingRowId","onEditingRowIdChange","controlledEditingValues","onEditingValuesChange","onRowDelete","onRowEditCancel","onRowEditSave","onRowEditStart","onRowsChange","editingRowId","setEditingRowId","editingValues","setEditingValues","autoResetPageIndex","setAutoResetPageIndex","findRowById","rowId","row","commitRowsChange","nextRows","event","startTransition","startEditingRow","editableKeys","overrides","initialValues","accumulator","key","cancelEditingRow","nextEditingValues","saveEditingRow","previousRow","nextRow","previousRows","deleteRow","item"],"mappings":"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"}
@@ -1,156 +1,154 @@
1
- import * as i from "react";
2
- function z(n) {
1
+ import { useState as B, useCallback as a, startTransition as F } from "react";
2
+ function G(n) {
3
3
  return typeof n == "string" ? n : typeof n == "number" || typeof n == "boolean" ? String(n) : "";
4
4
  }
5
- function D(n, s) {
5
+ function H(n, s) {
6
6
  return typeof s == "function" ? s(n) : s;
7
7
  }
8
- function U(n, s, C) {
9
- const [k, m] = i.useState(C), d = n !== void 0, V = d ? n : k, v = i.useCallback(
10
- (E) => {
11
- const g = D(V, E);
12
- d || m(g), s?.(g);
8
+ function A(n, s, v) {
9
+ const [R, P] = B(v), V = n !== void 0, g = V ? n : R, m = a(
10
+ (y) => {
11
+ const x = H(g, y);
12
+ V || P(x), s?.(x);
13
13
  },
14
- [d, s, V]
14
+ [V, s, g]
15
15
  );
16
- return [V, v];
16
+ return [g, m];
17
17
  }
18
- function F({
18
+ function L({
19
19
  rows: n,
20
20
  getRowId: s,
21
- setRows: C,
22
- editingRowId: k,
23
- onEditingRowIdChange: m,
24
- editingValues: d,
25
- onEditingValuesChange: V,
26
- onRowDelete: v,
27
- onRowEditCancel: E,
28
- onRowEditSave: g,
29
- onRowEditStart: y,
30
- onRowsChange: S
21
+ setRows: v,
22
+ editingRowId: R,
23
+ onEditingRowIdChange: P,
24
+ editingValues: V,
25
+ onEditingValuesChange: g,
26
+ onRowDelete: m,
27
+ onRowEditCancel: y,
28
+ onRowEditSave: x,
29
+ onRowEditStart: S,
30
+ onRowsChange: T
31
31
  }) {
32
- const [a, l] = U(
33
- k,
34
- m,
32
+ const [l, i] = A(
33
+ R,
34
+ P,
35
35
  null
36
- ), [f, u] = U(
37
- d,
36
+ ), [r, o] = A(
38
37
  V,
38
+ g,
39
39
  {}
40
- ), [A, P] = i.useState(!0);
41
- i.useEffect(() => {
42
- P(!0);
43
- }, [n]);
44
- const r = i.useCallback(
40
+ ), [C, U] = B(!0), f = a(
45
41
  (t) => n.find((e) => s(e) === t) ?? null,
46
42
  [s, n]
47
- ), R = i.useCallback(
43
+ ), E = a(
48
44
  (t, e) => {
49
- P(!1), C?.(t), S?.(e);
45
+ U(!1), v?.(t), T?.(e), F(() => {
46
+ U(!0);
47
+ });
50
48
  },
51
- [S, C]
52
- ), B = i.useCallback(
53
- (t, e, c) => {
54
- const o = s(t), p = e.reduce((x, b) => (x[b] = c?.[b] ?? z(t[b]), x), {});
55
- l(o), u(p), y?.({
49
+ [T, v]
50
+ ), j = a(
51
+ (t, e, u) => {
52
+ const c = s(t), p = e.reduce((b, d) => (b[d] = u?.[d] ?? G(t[d]), b), {});
53
+ i(c), o(p), S?.({
56
54
  editableKeys: e,
57
55
  initialValues: p,
58
56
  row: t,
59
- rowId: o
57
+ rowId: c
60
58
  });
61
59
  },
62
- [s, y, l, u]
63
- ), T = i.useCallback(() => {
64
- const t = a ? r(a) : null, e = f;
65
- l(null), u({}), E?.({
60
+ [s, S, i, o]
61
+ ), q = a(() => {
62
+ const t = l ? f(l) : null, e = r;
63
+ i(null), o({}), y?.({
66
64
  editingValues: e,
67
65
  row: t,
68
- rowId: a
66
+ rowId: l
69
67
  });
70
68
  }, [
71
- a,
72
- f,
73
- r,
74
- E,
75
69
  l,
76
- u
77
- ]), j = i.useCallback(
70
+ r,
71
+ f,
72
+ y,
73
+ i,
74
+ o
75
+ ]), z = a(
78
76
  (t) => {
79
- const e = r(t);
77
+ const e = f(t);
80
78
  if (!e)
81
79
  return;
82
- const c = {
80
+ const u = {
83
81
  ...e,
84
- ...f
85
- }, o = n, p = o.map(
86
- (b) => s(b) === t ? c : b
82
+ ...r
83
+ }, c = n, p = c.map(
84
+ (d) => s(d) === t ? u : d
87
85
  );
88
- R(p, {
89
- editingValues: f,
90
- nextRow: c,
86
+ E(p, {
87
+ editingValues: r,
88
+ nextRow: u,
91
89
  nextRows: p,
92
90
  previousRow: e,
93
- previousRows: o,
91
+ previousRows: c,
94
92
  rowId: t,
95
93
  type: "edit-save"
96
- }), l(null), u({}), g?.({
97
- editingValues: f,
98
- nextRow: c,
94
+ }), i(null), o({}), x?.({
95
+ editingValues: r,
96
+ nextRow: u,
99
97
  previousRow: e,
100
98
  rowId: t
101
99
  });
102
100
  },
103
101
  [
104
- R,
105
- f,
102
+ E,
106
103
  r,
104
+ f,
107
105
  s,
108
- g,
106
+ x,
109
107
  n,
110
- l,
111
- u
108
+ i,
109
+ o
112
110
  ]
113
- ), q = i.useCallback(
111
+ ), D = a(
114
112
  (t) => {
115
- const e = r(t);
113
+ const e = f(t);
116
114
  if (!e)
117
115
  return;
118
- const c = n, o = c.filter((x) => s(x) !== t);
119
- R(o, {
120
- nextRows: o,
121
- previousRows: c,
116
+ const u = n, c = u.filter((b) => s(b) !== t);
117
+ E(c, {
118
+ nextRows: c,
119
+ previousRows: u,
122
120
  row: e,
123
121
  rowId: t,
124
122
  type: "delete"
125
- }), a === t && (l(null), u({})), v?.({
123
+ }), l === t && (i(null), o({})), m?.({
126
124
  row: e,
127
125
  rowId: t
128
126
  });
129
127
  },
130
128
  [
131
- R,
132
- a,
133
- r,
129
+ E,
130
+ l,
131
+ f,
134
132
  s,
135
- v,
133
+ m,
136
134
  n,
137
- l,
138
- u
135
+ i,
136
+ o
139
137
  ]
140
138
  );
141
139
  return {
142
- autoResetPageIndex: A,
143
- cancelEditingRow: T,
144
- deleteRow: q,
145
- editingRowId: a,
146
- editingValues: f,
147
- saveEditingRow: j,
148
- setEditingValues: u,
149
- setEditingRowId: l,
150
- startEditingRow: B
140
+ autoResetPageIndex: C,
141
+ cancelEditingRow: q,
142
+ deleteRow: D,
143
+ editingRowId: l,
144
+ editingValues: r,
145
+ saveEditingRow: z,
146
+ setEditingValues: o,
147
+ setEditingRowId: i,
148
+ startEditingRow: j
151
149
  };
152
150
  }
153
151
  export {
154
- F as useDataTableEditableRows
152
+ L as useDataTableEditableRows
155
153
  };
156
154
  //# sourceMappingURL=components-data-table-use-data-table-editable-rows.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"components-data-table-use-data-table-editable-rows.js","sources":["../src/components/data-table/use-data-table-editable-rows.ts"],"sourcesContent":["import * as React from \"react\";\n\ntype EditableRowKey<TData> = Extract<keyof TData, string>;\ntype EditableValues = Record<string, string>;\n\ntype DataTableRowEditStartEvent<TData> = {\n editableKeys: readonly EditableRowKey<TData>[];\n initialValues: EditableValues;\n row: TData;\n rowId: string;\n};\n\ntype DataTableRowEditCancelEvent<TData> = {\n editingValues: EditableValues;\n row: TData | null;\n rowId: string | null;\n};\n\ntype DataTableRowEditSaveEvent<TData> = {\n editingValues: EditableValues;\n nextRow: TData;\n previousRow: TData;\n rowId: string;\n};\n\ntype DataTableRowDeleteEvent<TData> = {\n row: TData;\n rowId: string;\n};\n\ntype DataTableRowsChangeEvent<TData> =\n | ({\n nextRows: TData[];\n previousRows: TData[];\n type: \"edit-save\";\n } & DataTableRowEditSaveEvent<TData>)\n | ({\n nextRows: TData[];\n previousRows: TData[];\n type: \"delete\";\n } & DataTableRowDeleteEvent<TData>);\n\ntype UseDataTableEditableRowsOptions<TData> = {\n rows: TData[];\n getRowId: (row: TData) => string;\n setRows?: React.Dispatch<React.SetStateAction<TData[]>>;\n editingRowId?: string | null;\n onEditingRowIdChange?: (rowId: string | null) => void;\n editingValues?: EditableValues;\n onEditingValuesChange?: React.Dispatch<React.SetStateAction<EditableValues>>;\n onRowDelete?: (event: DataTableRowDeleteEvent<TData>) => void;\n onRowEditCancel?: (event: DataTableRowEditCancelEvent<TData>) => void;\n onRowEditSave?: (event: DataTableRowEditSaveEvent<TData>) => void;\n onRowEditStart?: (event: DataTableRowEditStartEvent<TData>) => void;\n onRowsChange?: (event: DataTableRowsChangeEvent<TData>) => void;\n};\n\nfunction toEditableString(value: unknown) {\n if (typeof value === \"string\") {\n return value;\n }\n\n if (typeof value === \"number\" || typeof value === \"boolean\") {\n return String(value);\n }\n\n return \"\";\n}\n\nfunction applyUpdater<TData>(previousValue: TData, updater: React.SetStateAction<TData>) {\n return typeof updater === \"function\"\n ? (updater as (value: TData) => TData)(previousValue)\n : updater;\n}\n\nfunction useControllableState<TData>(\n controlledValue: TData | undefined,\n onChange: ((nextValue: TData) => void) | undefined,\n defaultValue: TData,\n) {\n const [uncontrolledValue, setUncontrolledValue] = React.useState(defaultValue);\n const isControlled = controlledValue !== undefined;\n const value = isControlled ? controlledValue : uncontrolledValue;\n\n const setValue = React.useCallback(\n (updater: React.SetStateAction<TData>) => {\n const nextValue = applyUpdater(value, updater);\n\n if (!isControlled) {\n setUncontrolledValue(nextValue);\n }\n\n onChange?.(nextValue);\n },\n [isControlled, onChange, value],\n );\n\n return [value, setValue] as const;\n}\n\nfunction useDataTableEditableRows<TData>({\n rows,\n getRowId,\n setRows,\n editingRowId: controlledEditingRowId,\n onEditingRowIdChange,\n editingValues: controlledEditingValues,\n onEditingValuesChange,\n onRowDelete,\n onRowEditCancel,\n onRowEditSave,\n onRowEditStart,\n onRowsChange,\n}: UseDataTableEditableRowsOptions<TData>) {\n const [editingRowId, setEditingRowId] = useControllableState<string | null>(\n controlledEditingRowId,\n onEditingRowIdChange,\n null,\n );\n const [editingValues, setEditingValues] = useControllableState<EditableValues>(\n controlledEditingValues,\n onEditingValuesChange,\n {},\n );\n const [autoResetPageIndex, setAutoResetPageIndex] = React.useState(true);\n\n React.useEffect(() => {\n setAutoResetPageIndex(true);\n }, [rows]);\n\n const findRowById = React.useCallback(\n (rowId: string) => rows.find((row) => getRowId(row) === rowId) ?? null,\n [getRowId, rows],\n );\n\n const commitRowsChange = React.useCallback(\n (nextRows: TData[], event: DataTableRowsChangeEvent<TData>) => {\n setAutoResetPageIndex(false);\n setRows?.(nextRows);\n onRowsChange?.(event);\n },\n [onRowsChange, setRows],\n );\n\n const startEditingRow = React.useCallback(\n (\n row: TData,\n editableKeys: readonly EditableRowKey<TData>[],\n overrides?: Partial<Record<EditableRowKey<TData>, string>>,\n ) => {\n const rowId = getRowId(row);\n const initialValues = editableKeys.reduce<EditableValues>((accumulator, key) => {\n accumulator[key] = overrides?.[key] ?? toEditableString(row[key]);\n return accumulator;\n }, {});\n\n setEditingRowId(rowId);\n setEditingValues(initialValues);\n onRowEditStart?.({\n editableKeys,\n initialValues,\n row,\n rowId,\n });\n },\n [getRowId, onRowEditStart, setEditingRowId, setEditingValues],\n );\n\n const cancelEditingRow = React.useCallback(() => {\n const row = editingRowId ? findRowById(editingRowId) : null;\n const nextEditingValues = editingValues;\n\n setEditingRowId(null);\n setEditingValues({});\n onRowEditCancel?.({\n editingValues: nextEditingValues,\n row,\n rowId: editingRowId,\n });\n }, [\n editingRowId,\n editingValues,\n findRowById,\n onRowEditCancel,\n setEditingRowId,\n setEditingValues,\n ]);\n\n const saveEditingRow = React.useCallback(\n (rowId: string) => {\n const previousRow = findRowById(rowId);\n\n if (!previousRow) {\n return;\n }\n\n const nextRow = {\n ...previousRow,\n ...editingValues,\n };\n const previousRows = rows;\n const nextRows = previousRows.map((row) =>\n getRowId(row) === rowId ? nextRow : row,\n );\n const event: DataTableRowsChangeEvent<TData> = {\n editingValues,\n nextRow,\n nextRows,\n previousRow,\n previousRows,\n rowId,\n type: \"edit-save\",\n };\n\n commitRowsChange(nextRows, event);\n setEditingRowId(null);\n setEditingValues({});\n onRowEditSave?.({\n editingValues,\n nextRow,\n previousRow,\n rowId,\n });\n },\n [\n commitRowsChange,\n editingValues,\n findRowById,\n getRowId,\n onRowEditSave,\n rows,\n setEditingRowId,\n setEditingValues,\n ],\n );\n\n const deleteRow = React.useCallback(\n (rowId: string) => {\n const row = findRowById(rowId);\n\n if (!row) {\n return;\n }\n\n const previousRows = rows;\n const nextRows = previousRows.filter((item) => getRowId(item) !== rowId);\n const event: DataTableRowsChangeEvent<TData> = {\n nextRows,\n previousRows,\n row,\n rowId,\n type: \"delete\",\n };\n\n commitRowsChange(nextRows, event);\n\n if (editingRowId === rowId) {\n setEditingRowId(null);\n setEditingValues({});\n }\n\n onRowDelete?.({\n row,\n rowId,\n });\n },\n [\n commitRowsChange,\n editingRowId,\n findRowById,\n getRowId,\n onRowDelete,\n rows,\n setEditingRowId,\n setEditingValues,\n ],\n );\n\n return {\n autoResetPageIndex,\n cancelEditingRow,\n deleteRow,\n editingRowId,\n editingValues,\n saveEditingRow,\n setEditingValues,\n setEditingRowId,\n startEditingRow,\n };\n}\n\nexport { useDataTableEditableRows };\nexport type {\n DataTableRowDeleteEvent,\n DataTableRowEditCancelEvent,\n DataTableRowEditSaveEvent,\n DataTableRowEditStartEvent,\n DataTableRowsChangeEvent,\n EditableRowKey,\n UseDataTableEditableRowsOptions,\n};\n"],"names":["toEditableString","value","applyUpdater","previousValue","updater","useControllableState","controlledValue","onChange","defaultValue","uncontrolledValue","setUncontrolledValue","React","isControlled","setValue","nextValue","useDataTableEditableRows","rows","getRowId","setRows","controlledEditingRowId","onEditingRowIdChange","controlledEditingValues","onEditingValuesChange","onRowDelete","onRowEditCancel","onRowEditSave","onRowEditStart","onRowsChange","editingRowId","setEditingRowId","editingValues","setEditingValues","autoResetPageIndex","setAutoResetPageIndex","findRowById","rowId","row","commitRowsChange","nextRows","event","startEditingRow","editableKeys","overrides","initialValues","accumulator","key","cancelEditingRow","nextEditingValues","saveEditingRow","previousRow","nextRow","previousRows","deleteRow","item"],"mappings":"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"}
1
+ {"version":3,"file":"components-data-table-use-data-table-editable-rows.js","sources":["../src/components/data-table/use-data-table-editable-rows.ts"],"sourcesContent":["import { startTransition, useCallback, useState } from \"react\";\nimport type { Dispatch, SetStateAction } from \"react\";\n\ntype EditableRowKey<TData> = Extract<keyof TData, string>;\ntype EditableValues = Record<string, string>;\n\ntype DataTableRowEditStartEvent<TData> = {\n editableKeys: readonly EditableRowKey<TData>[];\n initialValues: EditableValues;\n row: TData;\n rowId: string;\n};\n\ntype DataTableRowEditCancelEvent<TData> = {\n editingValues: EditableValues;\n row: TData | null;\n rowId: string | null;\n};\n\ntype DataTableRowEditSaveEvent<TData> = {\n editingValues: EditableValues;\n nextRow: TData;\n previousRow: TData;\n rowId: string;\n};\n\ntype DataTableRowDeleteEvent<TData> = {\n row: TData;\n rowId: string;\n};\n\ntype DataTableRowsChangeEvent<TData> =\n | ({\n nextRows: TData[];\n previousRows: TData[];\n type: \"edit-save\";\n } & DataTableRowEditSaveEvent<TData>)\n | ({\n nextRows: TData[];\n previousRows: TData[];\n type: \"delete\";\n } & DataTableRowDeleteEvent<TData>);\n\ntype UseDataTableEditableRowsOptions<TData> = {\n rows: TData[];\n getRowId: (row: TData) => string;\n setRows?: Dispatch<SetStateAction<TData[]>>;\n editingRowId?: string | null;\n onEditingRowIdChange?: (rowId: string | null) => void;\n editingValues?: EditableValues;\n onEditingValuesChange?: Dispatch<SetStateAction<EditableValues>>;\n onRowDelete?: (event: DataTableRowDeleteEvent<TData>) => void;\n onRowEditCancel?: (event: DataTableRowEditCancelEvent<TData>) => void;\n onRowEditSave?: (event: DataTableRowEditSaveEvent<TData>) => void;\n onRowEditStart?: (event: DataTableRowEditStartEvent<TData>) => void;\n onRowsChange?: (event: DataTableRowsChangeEvent<TData>) => void;\n};\n\nfunction toEditableString(value: unknown) {\n if (typeof value === \"string\") {\n return value;\n }\n\n if (typeof value === \"number\" || typeof value === \"boolean\") {\n return String(value);\n }\n\n return \"\";\n}\n\nfunction applyUpdater<TData>(previousValue: TData, updater: SetStateAction<TData>) {\n return typeof updater === \"function\"\n ? (updater as (value: TData) => TData)(previousValue)\n : updater;\n}\n\nfunction useControllableState<TData>(\n controlledValue: TData | undefined,\n onChange: ((nextValue: TData) => void) | undefined,\n defaultValue: TData,\n) {\n const [uncontrolledValue, setUncontrolledValue] = useState(defaultValue);\n const isControlled = controlledValue !== undefined;\n const value = isControlled ? controlledValue : uncontrolledValue;\n\n const setValue = useCallback(\n (updater: SetStateAction<TData>) => {\n const nextValue = applyUpdater(value, updater);\n\n if (!isControlled) {\n setUncontrolledValue(nextValue);\n }\n\n onChange?.(nextValue);\n },\n [isControlled, onChange, value],\n );\n\n return [value, setValue] as const;\n}\n\nfunction useDataTableEditableRows<TData>({\n rows,\n getRowId,\n setRows,\n editingRowId: controlledEditingRowId,\n onEditingRowIdChange,\n editingValues: controlledEditingValues,\n onEditingValuesChange,\n onRowDelete,\n onRowEditCancel,\n onRowEditSave,\n onRowEditStart,\n onRowsChange,\n}: UseDataTableEditableRowsOptions<TData>) {\n const [editingRowId, setEditingRowId] = useControllableState<string | null>(\n controlledEditingRowId,\n onEditingRowIdChange,\n null,\n );\n const [editingValues, setEditingValues] = useControllableState<EditableValues>(\n controlledEditingValues,\n onEditingValuesChange,\n {},\n );\n const [autoResetPageIndex, setAutoResetPageIndex] = useState(true);\n\n const findRowById = useCallback(\n (rowId: string) => rows.find((row) => getRowId(row) === rowId) ?? null,\n [getRowId, rows],\n );\n\n const commitRowsChange = useCallback(\n (nextRows: TData[], event: DataTableRowsChangeEvent<TData>) => {\n setAutoResetPageIndex(false);\n setRows?.(nextRows);\n onRowsChange?.(event);\n startTransition(() => {\n setAutoResetPageIndex(true);\n });\n },\n [onRowsChange, setRows],\n );\n\n const startEditingRow = useCallback(\n (\n row: TData,\n editableKeys: readonly EditableRowKey<TData>[],\n overrides?: Partial<Record<EditableRowKey<TData>, string>>,\n ) => {\n const rowId = getRowId(row);\n const initialValues = editableKeys.reduce<EditableValues>((accumulator, key) => {\n accumulator[key] = overrides?.[key] ?? toEditableString(row[key]);\n return accumulator;\n }, {});\n\n setEditingRowId(rowId);\n setEditingValues(initialValues);\n onRowEditStart?.({\n editableKeys,\n initialValues,\n row,\n rowId,\n });\n },\n [getRowId, onRowEditStart, setEditingRowId, setEditingValues],\n );\n\n const cancelEditingRow = useCallback(() => {\n const row = editingRowId ? findRowById(editingRowId) : null;\n const nextEditingValues = editingValues;\n\n setEditingRowId(null);\n setEditingValues({});\n onRowEditCancel?.({\n editingValues: nextEditingValues,\n row,\n rowId: editingRowId,\n });\n }, [\n editingRowId,\n editingValues,\n findRowById,\n onRowEditCancel,\n setEditingRowId,\n setEditingValues,\n ]);\n\n const saveEditingRow = useCallback(\n (rowId: string) => {\n const previousRow = findRowById(rowId);\n\n if (!previousRow) {\n return;\n }\n\n const nextRow = {\n ...previousRow,\n ...editingValues,\n };\n const previousRows = rows;\n const nextRows = previousRows.map((row) =>\n getRowId(row) === rowId ? nextRow : row,\n );\n const event: DataTableRowsChangeEvent<TData> = {\n editingValues,\n nextRow,\n nextRows,\n previousRow,\n previousRows,\n rowId,\n type: \"edit-save\",\n };\n\n commitRowsChange(nextRows, event);\n setEditingRowId(null);\n setEditingValues({});\n onRowEditSave?.({\n editingValues,\n nextRow,\n previousRow,\n rowId,\n });\n },\n [\n commitRowsChange,\n editingValues,\n findRowById,\n getRowId,\n onRowEditSave,\n rows,\n setEditingRowId,\n setEditingValues,\n ],\n );\n\n const deleteRow = useCallback(\n (rowId: string) => {\n const row = findRowById(rowId);\n\n if (!row) {\n return;\n }\n\n const previousRows = rows;\n const nextRows = previousRows.filter((item) => getRowId(item) !== rowId);\n const event: DataTableRowsChangeEvent<TData> = {\n nextRows,\n previousRows,\n row,\n rowId,\n type: \"delete\",\n };\n\n commitRowsChange(nextRows, event);\n\n if (editingRowId === rowId) {\n setEditingRowId(null);\n setEditingValues({});\n }\n\n onRowDelete?.({\n row,\n rowId,\n });\n },\n [\n commitRowsChange,\n editingRowId,\n findRowById,\n getRowId,\n onRowDelete,\n rows,\n setEditingRowId,\n setEditingValues,\n ],\n );\n\n return {\n autoResetPageIndex,\n cancelEditingRow,\n deleteRow,\n editingRowId,\n editingValues,\n saveEditingRow,\n setEditingValues,\n setEditingRowId,\n startEditingRow,\n };\n}\n\nexport { useDataTableEditableRows };\nexport type {\n DataTableRowDeleteEvent,\n DataTableRowEditCancelEvent,\n DataTableRowEditSaveEvent,\n DataTableRowEditStartEvent,\n DataTableRowsChangeEvent,\n EditableRowKey,\n UseDataTableEditableRowsOptions,\n};\n"],"names":["toEditableString","value","applyUpdater","previousValue","updater","useControllableState","controlledValue","onChange","defaultValue","uncontrolledValue","setUncontrolledValue","useState","isControlled","setValue","useCallback","nextValue","useDataTableEditableRows","rows","getRowId","setRows","controlledEditingRowId","onEditingRowIdChange","controlledEditingValues","onEditingValuesChange","onRowDelete","onRowEditCancel","onRowEditSave","onRowEditStart","onRowsChange","editingRowId","setEditingRowId","editingValues","setEditingValues","autoResetPageIndex","setAutoResetPageIndex","findRowById","rowId","row","commitRowsChange","nextRows","event","startTransition","startEditingRow","editableKeys","overrides","initialValues","accumulator","key","cancelEditingRow","nextEditingValues","saveEditingRow","previousRow","nextRow","previousRows","deleteRow","item"],"mappings":";AA0DA,SAASA,EAAiBC,GAAgB;AACxC,SAAI,OAAOA,KAAU,WACZA,IAGL,OAAOA,KAAU,YAAY,OAAOA,KAAU,YACzC,OAAOA,CAAK,IAGd;AACT;AAEA,SAASC,EAAoBC,GAAsBC,GAAgC;AACjF,SAAO,OAAOA,KAAY,aACrBA,EAAoCD,CAAa,IAClDC;AACN;AAEA,SAASC,EACPC,GACAC,GACAC,GACA;AACA,QAAM,CAACC,GAAmBC,CAAoB,IAAIC,EAASH,CAAY,GACjEI,IAAeN,MAAoB,QACnCL,IAAQW,IAAeN,IAAkBG,GAEzCI,IAAWC;AAAA,IACf,CAACV,MAAmC;AAClC,YAAMW,IAAYb,EAAaD,GAAOG,CAAO;AAE7C,MAAKQ,KACHF,EAAqBK,CAAS,GAGhCR,IAAWQ,CAAS;AAAA,IACtB;AAAA,IACA,CAACH,GAAcL,GAAUN,CAAK;AAAA,EAAA;AAGhC,SAAO,CAACA,GAAOY,CAAQ;AACzB;AAEA,SAASG,EAAgC;AAAA,EACvC,MAAAC;AAAA,EACA,UAAAC;AAAA,EACA,SAAAC;AAAA,EACA,cAAcC;AAAA,EACd,sBAAAC;AAAA,EACA,eAAeC;AAAA,EACf,uBAAAC;AAAA,EACA,aAAAC;AAAA,EACA,iBAAAC;AAAA,EACA,eAAAC;AAAA,EACA,gBAAAC;AAAA,EACA,cAAAC;AACF,GAA2C;AACzC,QAAM,CAACC,GAAcC,CAAe,IAAIzB;AAAA,IACtCe;AAAA,IACAC;AAAA,IACA;AAAA,EAAA,GAEI,CAACU,GAAeC,CAAgB,IAAI3B;AAAA,IACxCiB;AAAA,IACAC;AAAA,IACA,CAAA;AAAA,EAAC,GAEG,CAACU,GAAoBC,CAAqB,IAAIvB,EAAS,EAAI,GAE3DwB,IAAcrB;AAAA,IAClB,CAACsB,MAAkBnB,EAAK,KAAK,CAACoB,MAAQnB,EAASmB,CAAG,MAAMD,CAAK,KAAK;AAAA,IAClE,CAAClB,GAAUD,CAAI;AAAA,EAAA,GAGXqB,IAAmBxB;AAAA,IACvB,CAACyB,GAAmBC,MAA2C;AAC7D,MAAAN,EAAsB,EAAK,GAC3Bf,IAAUoB,CAAQ,GAClBX,IAAeY,CAAK,GACpBC,EAAgB,MAAM;AACpB,QAAAP,EAAsB,EAAI;AAAA,MAC5B,CAAC;AAAA,IACH;AAAA,IACA,CAACN,GAAcT,CAAO;AAAA,EAAA,GAGlBuB,IAAkB5B;AAAA,IACtB,CACEuB,GACAM,GACAC,MACG;AACH,YAAMR,IAAQlB,EAASmB,CAAG,GACpBQ,IAAgBF,EAAa,OAAuB,CAACG,GAAaC,OACtED,EAAYC,CAAG,IAAIH,IAAYG,CAAG,KAAK/C,EAAiBqC,EAAIU,CAAG,CAAC,GACzDD,IACN,CAAA,CAAE;AAEL,MAAAhB,EAAgBM,CAAK,GACrBJ,EAAiBa,CAAa,GAC9BlB,IAAiB;AAAA,QACf,cAAAgB;AAAA,QACA,eAAAE;AAAA,QACA,KAAAR;AAAA,QACA,OAAAD;AAAA,MAAA,CACD;AAAA,IACH;AAAA,IACA,CAAClB,GAAUS,GAAgBG,GAAiBE,CAAgB;AAAA,EAAA,GAGxDgB,IAAmBlC,EAAY,MAAM;AACzC,UAAMuB,IAAMR,IAAeM,EAAYN,CAAY,IAAI,MACjDoB,IAAoBlB;AAE1B,IAAAD,EAAgB,IAAI,GACpBE,EAAiB,CAAA,CAAE,GACnBP,IAAkB;AAAA,MAChB,eAAewB;AAAA,MACf,KAAAZ;AAAA,MACA,OAAOR;AAAA,IAAA,CACR;AAAA,EACH,GAAG;AAAA,IACDA;AAAA,IACAE;AAAA,IACAI;AAAA,IACAV;AAAA,IACAK;AAAA,IACAE;AAAA,EAAA,CACD,GAEKkB,IAAiBpC;AAAA,IACrB,CAACsB,MAAkB;AACjB,YAAMe,IAAchB,EAAYC,CAAK;AAErC,UAAI,CAACe;AACH;AAGF,YAAMC,IAAU;AAAA,QACd,GAAGD;AAAA,QACH,GAAGpB;AAAA,MAAA,GAECsB,IAAepC,GACfsB,IAAWc,EAAa;AAAA,QAAI,CAAChB,MACjCnB,EAASmB,CAAG,MAAMD,IAAQgB,IAAUf;AAAA,MAAA;AAYtC,MAAAC,EAAiBC,GAV8B;AAAA,QAC7C,eAAAR;AAAA,QACA,SAAAqB;AAAA,QACA,UAAAb;AAAA,QACA,aAAAY;AAAA,QACA,cAAAE;AAAA,QACA,OAAAjB;AAAA,QACA,MAAM;AAAA,MAAA,CAGwB,GAChCN,EAAgB,IAAI,GACpBE,EAAiB,CAAA,CAAE,GACnBN,IAAgB;AAAA,QACd,eAAAK;AAAA,QACA,SAAAqB;AAAA,QACA,aAAAD;AAAA,QACA,OAAAf;AAAA,MAAA,CACD;AAAA,IACH;AAAA,IACA;AAAA,MACEE;AAAA,MACAP;AAAA,MACAI;AAAA,MACAjB;AAAA,MACAQ;AAAA,MACAT;AAAA,MACAa;AAAA,MACAE;AAAA,IAAA;AAAA,EACF,GAGIsB,IAAYxC;AAAA,IAChB,CAACsB,MAAkB;AACjB,YAAMC,IAAMF,EAAYC,CAAK;AAE7B,UAAI,CAACC;AACH;AAGF,YAAMgB,IAAepC,GACfsB,IAAWc,EAAa,OAAO,CAACE,MAASrC,EAASqC,CAAI,MAAMnB,CAAK;AASvE,MAAAE,EAAiBC,GAR8B;AAAA,QAC7C,UAAAA;AAAA,QACA,cAAAc;AAAA,QACA,KAAAhB;AAAA,QACA,OAAAD;AAAA,QACA,MAAM;AAAA,MAAA,CAGwB,GAE5BP,MAAiBO,MACnBN,EAAgB,IAAI,GACpBE,EAAiB,CAAA,CAAE,IAGrBR,IAAc;AAAA,QACZ,KAAAa;AAAA,QACA,OAAAD;AAAA,MAAA,CACD;AAAA,IACH;AAAA,IACA;AAAA,MACEE;AAAA,MACAT;AAAA,MACAM;AAAA,MACAjB;AAAA,MACAM;AAAA,MACAP;AAAA,MACAa;AAAA,MACAE;AAAA,IAAA;AAAA,EACF;AAGF,SAAO;AAAA,IACL,oBAAAC;AAAA,IACA,kBAAAe;AAAA,IACA,WAAAM;AAAA,IACA,cAAAzB;AAAA,IACA,eAAAE;AAAA,IACA,gBAAAmB;AAAA,IACA,kBAAAlB;AAAA,IACA,iBAAAF;AAAA,IACA,iBAAAY;AAAA,EAAA;AAEJ;"}
@@ -1,8 +1,8 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("react/jsx-runtime"),p=require("./lib-utils.cjs"),A=require("react"),X=require("./index-DJD-8LQA.cjs"),j=require("./components-ui-icon-icon.cjs"),M=require("./components-ui-typography-typography.cjs");require("./components-ui-typography-typography.styles.cjs");const G=["B","KB","MB","GB","TB"],f=1024,V=5*f*f,H=5,J=["all"],Q=800,W={image:{"image/*":[".jpg",".jpeg",".png",".webp"]},pdf:{"application/pdf":[".pdf"]},doc:{"application/msword":[".doc"],"application/vnd.openxmlformats-officedocument.wordprocessingml.document":[".docx"]},excel:{"application/vnd.ms-excel":[".xls"],"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":[".xlsx"]},text:{"text/plain":[".txt"]},all:{}},Y=e=>{if(!e)return"0 B";const t=Math.floor(Math.log(e)/Math.log(f));return`${(e/Math.pow(f,t)).toFixed(2)} ${G[t]}`},v=e=>`${e.name}:${e.size}`,ee=e=>e.reduce((t,o)=>({...t,...W[o]}),{}),te=(e,t)=>{const o=e.filter(n=>n.status==="uploaded"),l=e.filter(n=>n.status==="error"),a=Math.max(0,t-o.length);return[...o,...l.slice(0,a)]},w=(e,t,o)=>({url:URL.createObjectURL(e),name:e.name,size:Y(e.size),addedAt:new Date().toISOString(),status:t,error:o}),re=e=>e==="file-too-large"?"Файл слишком большой":"Неподдерживаемый формат",se=(e,t,o)=>{const l=new Set(o.map(v)),a=new Set(t.map(v));return e.filter(n=>{if(n.status!=="error")return!0;const g=v(n);return!l.has(g)&&!a.has(g)})},oe=e=>{const t=e.name.split(".").pop()?.toLowerCase();return t?["jpg","jpeg","png","webp"].includes(t)?"image":t==="pdf"?"pdf":["doc","docx"].includes(t)?"doc":["xls","xlsx"].includes(t)?"excel":t==="txt"?"text":"other":"other"},ne=({value:e=[],onChange:t,multiple:o=!1,maxFiles:l=H,disabled:a=!1,className:n,maxSize:g=V,variant:h="grid",accepts:U=J,icon:L,title:F,text:_,showFiles:$=!0,isErrorText:N=!1})=>{const[y,E]=A.useState(!1),[I,S]=A.useState(null),m=e,b=m.filter(r=>r.status==="uploaded").length,q=(r,c)=>{S(null);const u=Math.max(0,l-b),x=r.slice(0,u),Z=r.slice(u),d=[...c.map(i=>w(i.file,"error",re(i.errors[0]?.code))),...Z.map(i=>w(i,"error",`Максимальное количество файлов: ${l}`))];d.length&&S(d[0].error||"Ошибка загрузки"),!(!x.length&&!d.length)&&(E(!0),setTimeout(()=>{const i=x.map(K=>w(K,"uploaded")),k=se(m,i,d),T=o?te([...k,...i,...d],l):[...i,...d].slice(0,1);t?.(T.length?T:[]),E(!1)},Q))},{getRootProps:D,getInputProps:B,isDragActive:C}=X.useDropzone({onDrop:q,accept:ee(U),maxSize:g,multiple:o&&l>1,disabled:a||y}),R=r=>()=>{const c=m.filter((u,x)=>x!==r);t?.(c.length?c:[])},P=m.map((r,c)=>({file:r,index:c})).filter(({file:r})=>r.status==="uploaded"),z=b>=l,O={grid:"grid-cols-2 sm:grid-cols-3 md:grid-cols-4",list:"grid-cols-1",compact:"grid-cols-2 sm:grid-cols-3"};return s.jsxs("div",{className:p.cn("w-full space-y-4",n?.container),children:[s.jsxs("div",{className:p.cn("grid h-full w-full gap-4",h==="list"?"grid-cols-1":O[h]),children:[$&&P.map(({file:r,index:c})=>{const u=oe(r);return s.jsxs("div",{className:`group bg-primary-bg relative aspect-square h-full w-full
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("react/jsx-runtime"),p=require("./lib-utils.cjs"),A=require("react"),K=require("./index-DJD-8LQA.cjs"),V=require("phosphor-strokes-icons/icons/Plus"),H=require("phosphor-strokes-icons/icons/SpinnerGap"),j=require("./components-icons-stroke-icon.cjs"),J=require("phosphor-strokes-icons/icons/X"),M=require("./components-ui-typography-typography.cjs");require("./components-ui-typography-typography.styles.cjs");const Q=["B","KB","MB","GB","TB"],x=1024,W=5*x*x,Y=5,ee=["all"],te=800,re={image:{"image/*":[".jpg",".jpeg",".png",".webp"]},pdf:{"application/pdf":[".pdf"]},doc:{"application/msword":[".doc"],"application/vnd.openxmlformats-officedocument.wordprocessingml.document":[".docx"]},excel:{"application/vnd.ms-excel":[".xls"],"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":[".xlsx"]},text:{"text/plain":[".txt"]},all:{}},se=e=>{if(!e)return"0 B";const t=Math.floor(Math.log(e)/Math.log(x));return`${(e/Math.pow(x,t)).toFixed(2)} ${Q[t]}`},v=e=>`${e.name}:${e.size}`,oe=e=>e.reduce((t,o)=>({...t,...re[o]}),{}),ne=(e,t)=>{const o=e.filter(n=>n.status==="uploaded"),c=e.filter(n=>n.status==="error"),a=Math.max(0,t-o.length);return[...o,...c.slice(0,a)]},S=(e,t,o)=>({url:URL.createObjectURL(e),name:e.name,size:se(e.size),addedAt:new Date().toISOString(),status:t,error:o}),ce=e=>e==="file-too-large"?"Файл слишком большой":"Неподдерживаемый формат",le=(e,t,o)=>{const c=new Set(o.map(v)),a=new Set(t.map(v));return e.filter(n=>{if(n.status!=="error")return!0;const g=v(n);return!c.has(g)&&!a.has(g)})},ie=e=>{const t=e.name.split(".").pop()?.toLowerCase();return t?["jpg","jpeg","png","webp"].includes(t)?"image":t==="pdf"?"pdf":["doc","docx"].includes(t)?"doc":["xls","xlsx"].includes(t)?"excel":t==="txt"?"text":"other":"other"},ae=({value:e=[],onChange:t,multiple:o=!1,maxFiles:c=Y,disabled:a=!1,className:n,maxSize:g=W,variant:h="grid",accepts:U=ee,icon:q,title:w,text:F,showFiles:L=!0,isErrorText:$=!1})=>{const[b,I]=A.useState(!1),[_,E]=A.useState(null),m=e,y=m.filter(r=>r.status==="uploaded").length,N=(r,l)=>{E(null);const u=Math.max(0,c-y),f=r.slice(0,u),X=r.slice(u),d=[...l.map(i=>S(i.file,"error",ce(i.errors[0]?.code))),...X.map(i=>S(i,"error",`Максимальное количество файлов: ${c}`))];d.length&&E(d[0].error||"Ошибка загрузки"),!(!f.length&&!d.length)&&(I(!0),setTimeout(()=>{const i=f.map(Z=>S(Z,"uploaded")),G=le(m,i,d),T=o?ne([...G,...i,...d],c):[...i,...d].slice(0,1);t?.(T.length?T:[]),I(!1)},te))},{getRootProps:D,getInputProps:B,isDragActive:C}=K.useDropzone({onDrop:N,accept:oe(U),maxSize:g,multiple:o&&c>1,disabled:a||b}),P=r=>()=>{const l=m.filter((u,f)=>f!==r);t?.(l.length?l:[])},R=m.map((r,l)=>({file:r,index:l})).filter(({file:r})=>r.status==="uploaded"),k=y>=c,z=q??V.Plus,O={grid:"grid-cols-2 sm:grid-cols-3 md:grid-cols-4",list:"grid-cols-1",compact:"grid-cols-2 sm:grid-cols-3"};return s.jsxs("div",{className:p.cn("w-full space-y-4",n?.container),children:[s.jsxs("div",{className:p.cn("grid h-full w-full gap-4",h==="list"?"grid-cols-1":O[h]),children:[L&&R.map(({file:r,index:l})=>{const u=ie(r);return s.jsxs("div",{className:`group bg-primary-bg relative aspect-square h-full w-full
2
2
  overflow-hidden rounded-lg`,children:[u==="image"?s.jsx("img",{src:r.url,className:"h-full w-full object-cover"}):s.jsx("div",{className:`flex h-full w-full items-center justify-center bg-gray-100
3
3
  text-sm font-semibold`,children:r.name.split(".").pop()?.toUpperCase()}),s.jsx("div",{className:`bg-primary-inverse-bg/50 text-primary-bg absolute inset-0
4
4
  flex items-center justify-center opacity-0 transition-opacity
5
- hover:opacity-100`,children:s.jsx(j.Icon,{onClick:R(c),type:"x"})})]},`${r.url}-${r.addedAt}-${c}`)}),!z&&s.jsxs("div",{...D(),className:p.cn(`relative flex cursor-pointer flex-col items-center justify-center
5
+ hover:opacity-100`,children:s.jsx(j.StrokeIcon,{onClick:P(l),icon:J.X})})]},`${r.url}-${r.addedAt}-${l}`)}),!k&&s.jsxs("div",{...D(),className:p.cn(`relative flex cursor-pointer flex-col items-center justify-center
6
6
  rounded-lg border-2 border-dashed border-gray-300 bg-gray-50
7
- transition-colors hover:bg-gray-100`,C&&"border-primary bg-primary/5",(a||y)&&"cursor-not-allowed opacity-50",h==="list"?"min-h-37.5":"aspect-square",n?.blockAdd),children:[s.jsx("input",{...B()}),y?s.jsx(j.Icon,{type:"spinner-gap",className:"text-sub-label-text h-8 w-8 animate-spin"}):s.jsxs("div",{className:"flex flex-col items-center space-y-2 p-4 text-center",children:[s.jsx(j.Icon,{type:L?.type??"plus",className:p.cn("text-sub-label-text h-8 w-8",n?.icon)}),s.jsx(M.Typography,{className:p.cn("text-sub-label-text",n?.title),children:o?`${F||"Добавить"} (${b}/${l})`:F||"Добавить"}),_&&s.jsx(M.Typography,{className:p.cn("text-sub-label-text",n?.text),children:_})]})]})]}),!N&&I&&s.jsx("div",{className:"rounded-lg bg-red-50 p-3 text-sm text-red-600",children:I})]})};exports.FilesUploader=ne;
7
+ transition-colors hover:bg-gray-100`,C&&"border-primary bg-primary/5",(a||b)&&"cursor-not-allowed opacity-50",h==="list"?"min-h-37.5":"aspect-square",n?.blockAdd),children:[s.jsx("input",{...B()}),b?s.jsx(j.StrokeIcon,{icon:H.SpinnerGap,className:"text-sub-label-text h-8 w-8 animate-spin"}):s.jsxs("div",{className:"flex flex-col items-center space-y-2 p-4 text-center",children:[s.jsx(j.StrokeIcon,{icon:z,className:p.cn("text-sub-label-text h-8 w-8",n?.icon)}),s.jsx(M.Typography,{className:p.cn("text-sub-label-text",n?.title),children:o?`${w||"Добавить"} (${y}/${c})`:w||"Добавить"}),F&&s.jsx(M.Typography,{className:p.cn("text-sub-label-text",n?.text),children:F})]})]})]}),!$&&_&&s.jsx("div",{className:"rounded-lg bg-red-50 p-3 text-sm text-red-600",children:_})]})};exports.FilesUploader=ae;
8
8
  //# sourceMappingURL=components-files-uploader-files-uploader.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"components-files-uploader-files-uploader.cjs","sources":["../src/components/files-uploader/files-uploader.tsx"],"sourcesContent":["import { cn } from \"@/lib/utils\";\nimport { useState } from \"react\";\nimport { type FileRejection, useDropzone } from \"react-dropzone\";\nimport { Icon, type IconProps } from \"../ui/icon\";\nimport { Typography } from \"../ui/typography\";\n\ntype Variant = \"grid\" | \"list\" | \"compact\";\ntype AcceptType = \"image\" | \"pdf\" | \"doc\" | \"excel\" | \"text\" | \"all\";\n\nexport type UploadedFileData = {\n url: string;\n name: string;\n size: string;\n addedAt: string;\n status: \"uploaded\" | \"error\";\n error?: string;\n};\n\nexport type FilesUploaderValue = UploadedFileData[] | [];\n\nexport type PropsFilesUploader = {\n value?: FilesUploaderValue;\n onChange?: (value: FilesUploaderValue) => void;\n multiple?: boolean;\n maxFiles?: number;\n disabled?: boolean;\n isErrorText?: boolean;\n className?: {\n container?: string;\n blockAdd?: string;\n title?: string;\n text?: string;\n icon?: string;\n };\n maxSize?: number;\n variant?: Variant;\n accepts?: AcceptType[];\n icon?: IconProps;\n title?: string;\n text?: string;\n showFiles?: boolean;\n};\n\nconst FILE_SIZE_UNITS = [\"B\", \"KB\", \"MB\", \"GB\", \"TB\"];\nconst FILE_SIZE_KB = 1024;\n\nconst DEFAULT_MAX_SIZE = 5 * FILE_SIZE_KB * FILE_SIZE_KB;\nconst DEFAULT_MAX_FILES = 5;\nconst DEFAULT_ACCEPT: AcceptType[] = [\"all\"];\nconst DEFAULT_TIMEOUT = 800;\n\nconst ACCEPT_MAP: Record<AcceptType, Record<string, string[]>> = {\n image: { \"image/*\": [\".jpg\", \".jpeg\", \".png\", \".webp\"] },\n pdf: { \"application/pdf\": [\".pdf\"] },\n doc: {\n \"application/msword\": [\".doc\"],\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\": [\".docx\"],\n },\n excel: {\n \"application/vnd.ms-excel\": [\".xls\"],\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\": [\".xlsx\"],\n },\n text: { \"text/plain\": [\".txt\"] },\n all: {},\n};\n\nconst formatFileSize = (bytes: number) => {\n if (!bytes) return \"0 B\";\n const i = Math.floor(Math.log(bytes) / Math.log(FILE_SIZE_KB));\n return `${(bytes / Math.pow(FILE_SIZE_KB, i)).toFixed(2)} ${FILE_SIZE_UNITS[i]}`;\n};\n\nconst getFileIdentity = (file: Pick<UploadedFileData, \"name\" | \"size\">) =>\n `${file.name}:${file.size}`;\n\nconst fileAcceptMap = (accepts: AcceptType[]) =>\n accepts.reduce((acc, t) => ({ ...acc, ...ACCEPT_MAP[t] }), {});\n\nconst limitFilesForValue = (\n nextFiles: UploadedFileData[],\n maxFiles: number,\n): UploadedFileData[] => {\n const uploadedFiles = nextFiles.filter((file) => file.status === \"uploaded\");\n const errorFiles = nextFiles.filter((file) => file.status === \"error\");\n const availableErrorSlots = Math.max(0, maxFiles - uploadedFiles.length);\n\n return [...uploadedFiles, ...errorFiles.slice(0, availableErrorSlots)];\n};\n\nconst mapFile = (\n file: File,\n status: UploadedFileData[\"status\"],\n error?: string,\n): UploadedFileData => ({\n url: URL.createObjectURL(file),\n name: file.name,\n size: formatFileSize(file.size),\n addedAt: new Date().toISOString(),\n status,\n error,\n});\n\nconst getRejectedError = (code?: string) =>\n code === \"file-too-large\" ? \"Файл слишком большой\" : \"Неподдерживаемый формат\";\n\nconst replaceDuplicateErrors = (\n currentFiles: UploadedFileData[],\n newFiles: UploadedFileData[],\n rejectedFiles: UploadedFileData[],\n) => {\n const rejectedFileIds = new Set(rejectedFiles.map(getFileIdentity));\n const acceptedFileIds = new Set(newFiles.map(getFileIdentity));\n\n return currentFiles.filter((existingFile) => {\n if (existingFile.status !== \"error\") return true;\n const id = getFileIdentity(existingFile);\n return !rejectedFileIds.has(id) && !acceptedFileIds.has(id);\n });\n};\n\nconst getFileType = (file: UploadedFileData) => {\n const ext = file.name.split(\".\").pop()?.toLowerCase();\n\n if (!ext) return \"other\";\n if ([\"jpg\", \"jpeg\", \"png\", \"webp\"].includes(ext)) return \"image\";\n if (ext === \"pdf\") return \"pdf\";\n if ([\"doc\", \"docx\"].includes(ext)) return \"doc\";\n if ([\"xls\", \"xlsx\"].includes(ext)) return \"excel\";\n if (ext === \"txt\") return \"text\";\n\n return \"other\";\n};\n\nexport const FilesUploader = ({\n value = [],\n onChange,\n multiple = false,\n maxFiles = DEFAULT_MAX_FILES,\n disabled = false,\n className,\n maxSize = DEFAULT_MAX_SIZE,\n variant = \"grid\",\n accepts = DEFAULT_ACCEPT,\n icon,\n title,\n text,\n showFiles = true,\n isErrorText = false,\n}: PropsFilesUploader) => {\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState<string | null>(null);\n\n const files = value;\n const uploadedCount = files.filter((file) => file.status === \"uploaded\").length;\n\n const onDrop = (acceptedFiles: File[], rejectedFiles: FileRejection[]) => {\n setError(null);\n const remainingUploadSlots = Math.max(0, maxFiles - uploadedCount);\n const acceptedFilesToUpload = acceptedFiles.slice(0, remainingUploadSlots);\n const overflowAcceptedFiles = acceptedFiles.slice(remainingUploadSlots);\n\n const rejectedMapped = [\n ...rejectedFiles.map((rejection) =>\n mapFile(rejection.file, \"error\", getRejectedError(rejection.errors[0]?.code)),\n ),\n ...overflowAcceptedFiles.map((file) =>\n mapFile(file, \"error\", `Максимальное количество файлов: ${maxFiles}`),\n ),\n ];\n\n if (rejectedMapped.length) {\n setError(rejectedMapped[0].error || \"Ошибка загрузки\");\n }\n\n if (!acceptedFilesToUpload.length && !rejectedMapped.length) return;\n\n setLoading(true);\n\n setTimeout(() => {\n const newFiles = acceptedFilesToUpload.map((file) => mapFile(file, \"uploaded\"));\n const nextBaseFiles = replaceDuplicateErrors(files, newFiles, rejectedMapped);\n const nextFiles = multiple\n ? limitFilesForValue([...nextBaseFiles, ...newFiles, ...rejectedMapped], maxFiles)\n : [...newFiles, ...rejectedMapped].slice(0, 1);\n\n onChange?.(nextFiles.length ? nextFiles : []);\n setLoading(false);\n }, DEFAULT_TIMEOUT);\n };\n\n const { getRootProps, getInputProps, isDragActive } = useDropzone({\n onDrop,\n accept: fileAcceptMap(accepts),\n maxSize,\n multiple: multiple && maxFiles > 1,\n disabled: disabled || loading,\n });\n\n const removeFile = (index: number) => () => {\n const updated = files.filter((_, i) => i !== index);\n onChange?.(updated.length ? updated : []);\n };\n\n const uploadedFiles = files\n .map((file, index) => ({ file, index }))\n .filter(({ file }) => file.status === \"uploaded\");\n\n const isMaxFilesReached = uploadedCount >= maxFiles;\n\n const gridClasses = {\n grid: \"grid-cols-2 sm:grid-cols-3 md:grid-cols-4\",\n list: \"grid-cols-1\",\n compact: \"grid-cols-2 sm:grid-cols-3\",\n };\n\n return (\n <div className={cn(\"w-full space-y-4\", className?.container)}>\n <div\n className={cn(\n \"grid h-full w-full gap-4\",\n variant === \"list\" ? \"grid-cols-1\" : gridClasses[variant],\n )}\n >\n {showFiles &&\n uploadedFiles.map(({ file, index }) => {\n const type = getFileType(file);\n\n return (\n <div\n key={`${file.url}-${file.addedAt}-${index}`}\n className=\"group bg-primary-bg relative aspect-square h-full w-full\n overflow-hidden rounded-lg\"\n >\n {type === \"image\" ? (\n <img\n src={file.url}\n className=\"h-full w-full object-cover\"\n />\n ) : (\n <div\n className=\"flex h-full w-full items-center justify-center bg-gray-100\n text-sm font-semibold\"\n >\n {file.name.split(\".\").pop()?.toUpperCase()}\n </div>\n )}\n\n <div\n className=\"bg-primary-inverse-bg/50 text-primary-bg absolute inset-0\n flex items-center justify-center opacity-0 transition-opacity\n hover:opacity-100\"\n >\n <Icon\n onClick={removeFile(index)}\n type={\"x\"}\n />\n </div>\n </div>\n );\n })}\n\n {!isMaxFilesReached && (\n <div\n {...getRootProps()}\n className={cn(\n `relative flex cursor-pointer flex-col items-center justify-center\n rounded-lg border-2 border-dashed border-gray-300 bg-gray-50\n transition-colors hover:bg-gray-100`,\n isDragActive && \"border-primary bg-primary/5\",\n (disabled || loading) && \"cursor-not-allowed opacity-50\",\n variant === \"list\" ? \"min-h-37.5\" : \"aspect-square\",\n className?.blockAdd,\n )}\n >\n <input {...getInputProps()} />\n\n {loading ? (\n <Icon\n type=\"spinner-gap\"\n className=\"text-sub-label-text h-8 w-8 animate-spin\"\n />\n ) : (\n <div className=\"flex flex-col items-center space-y-2 p-4 text-center\">\n <Icon\n type={icon?.type ?? \"plus\"}\n className={cn(\"text-sub-label-text h-8 w-8\", className?.icon)}\n />\n\n <Typography className={cn(\"text-sub-label-text\", className?.title)}>\n {multiple\n ? `${title || \"Добавить\"} (${uploadedCount}/${maxFiles})`\n : title || \"Добавить\"}\n </Typography>\n\n {text && (\n <Typography className={cn(\"text-sub-label-text\", className?.text)}>\n {text}\n </Typography>\n )}\n </div>\n )}\n </div>\n )}\n </div>\n\n {!isErrorText && error && (\n <div className=\"rounded-lg bg-red-50 p-3 text-sm text-red-600\">{error}</div>\n )}\n </div>\n );\n};\n"],"names":["FILE_SIZE_UNITS","FILE_SIZE_KB","DEFAULT_MAX_SIZE","DEFAULT_MAX_FILES","DEFAULT_ACCEPT","DEFAULT_TIMEOUT","ACCEPT_MAP","formatFileSize","bytes","i","getFileIdentity","file","fileAcceptMap","accepts","acc","t","limitFilesForValue","nextFiles","maxFiles","uploadedFiles","errorFiles","availableErrorSlots","mapFile","status","error","getRejectedError","code","replaceDuplicateErrors","currentFiles","newFiles","rejectedFiles","rejectedFileIds","acceptedFileIds","existingFile","id","getFileType","ext","FilesUploader","value","onChange","multiple","disabled","className","maxSize","variant","icon","title","text","showFiles","isErrorText","loading","setLoading","useState","setError","files","uploadedCount","onDrop","acceptedFiles","remainingUploadSlots","acceptedFilesToUpload","overflowAcceptedFiles","rejectedMapped","rejection","nextBaseFiles","getRootProps","getInputProps","isDragActive","useDropzone","removeFile","index","updated","_","isMaxFilesReached","gridClasses","cn","jsxs","type","jsx","Icon","Typography"],"mappings":"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"}
1
+ {"version":3,"file":"components-files-uploader-files-uploader.cjs","sources":["../src/components/files-uploader/files-uploader.tsx"],"sourcesContent":["import { cn } from \"@/lib/utils\";\nimport { useState } from \"react\";\nimport { type FileRejection, useDropzone } from \"react-dropzone\";\nimport { Plus } from \"@/components/icons/Plus\";\nimport { SpinnerGap } from \"@/components/icons/SpinnerGap\";\nimport { StrokeIcon, type StrokeIconComponent } from \"@/components/icons/stroke-icon\";\nimport { X } from \"@/components/icons/X\";\nimport { Typography } from \"../ui/typography\";\n\ntype Variant = \"grid\" | \"list\" | \"compact\";\ntype AcceptType = \"image\" | \"pdf\" | \"doc\" | \"excel\" | \"text\" | \"all\";\n\nexport type UploadedFileData = {\n url: string;\n name: string;\n size: string;\n addedAt: string;\n status: \"uploaded\" | \"error\";\n error?: string;\n};\n\nexport type FilesUploaderValue = UploadedFileData[] | [];\n\nexport type PropsFilesUploader = {\n value?: FilesUploaderValue;\n onChange?: (value: FilesUploaderValue) => void;\n multiple?: boolean;\n maxFiles?: number;\n disabled?: boolean;\n isErrorText?: boolean;\n className?: {\n container?: string;\n blockAdd?: string;\n title?: string;\n text?: string;\n icon?: string;\n };\n maxSize?: number;\n variant?: Variant;\n accepts?: AcceptType[];\n icon?: StrokeIconComponent;\n title?: string;\n text?: string;\n showFiles?: boolean;\n};\n\nconst FILE_SIZE_UNITS = [\"B\", \"KB\", \"MB\", \"GB\", \"TB\"];\nconst FILE_SIZE_KB = 1024;\n\nconst DEFAULT_MAX_SIZE = 5 * FILE_SIZE_KB * FILE_SIZE_KB;\nconst DEFAULT_MAX_FILES = 5;\nconst DEFAULT_ACCEPT: AcceptType[] = [\"all\"];\nconst DEFAULT_TIMEOUT = 800;\n\nconst ACCEPT_MAP: Record<AcceptType, Record<string, string[]>> = {\n image: { \"image/*\": [\".jpg\", \".jpeg\", \".png\", \".webp\"] },\n pdf: { \"application/pdf\": [\".pdf\"] },\n doc: {\n \"application/msword\": [\".doc\"],\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\": [\".docx\"],\n },\n excel: {\n \"application/vnd.ms-excel\": [\".xls\"],\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\": [\".xlsx\"],\n },\n text: { \"text/plain\": [\".txt\"] },\n all: {},\n};\n\nconst formatFileSize = (bytes: number) => {\n if (!bytes) return \"0 B\";\n const i = Math.floor(Math.log(bytes) / Math.log(FILE_SIZE_KB));\n return `${(bytes / Math.pow(FILE_SIZE_KB, i)).toFixed(2)} ${FILE_SIZE_UNITS[i]}`;\n};\n\nconst getFileIdentity = (file: Pick<UploadedFileData, \"name\" | \"size\">) =>\n `${file.name}:${file.size}`;\n\nconst fileAcceptMap = (accepts: AcceptType[]) =>\n accepts.reduce((acc, t) => ({ ...acc, ...ACCEPT_MAP[t] }), {});\n\nconst limitFilesForValue = (\n nextFiles: UploadedFileData[],\n maxFiles: number,\n): UploadedFileData[] => {\n const uploadedFiles = nextFiles.filter((file) => file.status === \"uploaded\");\n const errorFiles = nextFiles.filter((file) => file.status === \"error\");\n const availableErrorSlots = Math.max(0, maxFiles - uploadedFiles.length);\n\n return [...uploadedFiles, ...errorFiles.slice(0, availableErrorSlots)];\n};\n\nconst mapFile = (\n file: File,\n status: UploadedFileData[\"status\"],\n error?: string,\n): UploadedFileData => ({\n url: URL.createObjectURL(file),\n name: file.name,\n size: formatFileSize(file.size),\n addedAt: new Date().toISOString(),\n status,\n error,\n});\n\nconst getRejectedError = (code?: string) =>\n code === \"file-too-large\" ? \"Файл слишком большой\" : \"Неподдерживаемый формат\";\n\nconst replaceDuplicateErrors = (\n currentFiles: UploadedFileData[],\n newFiles: UploadedFileData[],\n rejectedFiles: UploadedFileData[],\n) => {\n const rejectedFileIds = new Set(rejectedFiles.map(getFileIdentity));\n const acceptedFileIds = new Set(newFiles.map(getFileIdentity));\n\n return currentFiles.filter((existingFile) => {\n if (existingFile.status !== \"error\") return true;\n const id = getFileIdentity(existingFile);\n return !rejectedFileIds.has(id) && !acceptedFileIds.has(id);\n });\n};\n\nconst getFileType = (file: UploadedFileData) => {\n const ext = file.name.split(\".\").pop()?.toLowerCase();\n\n if (!ext) return \"other\";\n if ([\"jpg\", \"jpeg\", \"png\", \"webp\"].includes(ext)) return \"image\";\n if (ext === \"pdf\") return \"pdf\";\n if ([\"doc\", \"docx\"].includes(ext)) return \"doc\";\n if ([\"xls\", \"xlsx\"].includes(ext)) return \"excel\";\n if (ext === \"txt\") return \"text\";\n\n return \"other\";\n};\n\nexport const FilesUploader = ({\n value = [],\n onChange,\n multiple = false,\n maxFiles = DEFAULT_MAX_FILES,\n disabled = false,\n className,\n maxSize = DEFAULT_MAX_SIZE,\n variant = \"grid\",\n accepts = DEFAULT_ACCEPT,\n icon,\n title,\n text,\n showFiles = true,\n isErrorText = false,\n}: PropsFilesUploader) => {\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState<string | null>(null);\n\n const files = value;\n const uploadedCount = files.filter((file) => file.status === \"uploaded\").length;\n\n const onDrop = (acceptedFiles: File[], rejectedFiles: FileRejection[]) => {\n setError(null);\n const remainingUploadSlots = Math.max(0, maxFiles - uploadedCount);\n const acceptedFilesToUpload = acceptedFiles.slice(0, remainingUploadSlots);\n const overflowAcceptedFiles = acceptedFiles.slice(remainingUploadSlots);\n\n const rejectedMapped = [\n ...rejectedFiles.map((rejection) =>\n mapFile(rejection.file, \"error\", getRejectedError(rejection.errors[0]?.code)),\n ),\n ...overflowAcceptedFiles.map((file) =>\n mapFile(file, \"error\", `Максимальное количество файлов: ${maxFiles}`),\n ),\n ];\n\n if (rejectedMapped.length) {\n setError(rejectedMapped[0].error || \"Ошибка загрузки\");\n }\n\n if (!acceptedFilesToUpload.length && !rejectedMapped.length) return;\n\n setLoading(true);\n\n setTimeout(() => {\n const newFiles = acceptedFilesToUpload.map((file) => mapFile(file, \"uploaded\"));\n const nextBaseFiles = replaceDuplicateErrors(files, newFiles, rejectedMapped);\n const nextFiles = multiple\n ? limitFilesForValue([...nextBaseFiles, ...newFiles, ...rejectedMapped], maxFiles)\n : [...newFiles, ...rejectedMapped].slice(0, 1);\n\n onChange?.(nextFiles.length ? nextFiles : []);\n setLoading(false);\n }, DEFAULT_TIMEOUT);\n };\n\n const { getRootProps, getInputProps, isDragActive } = useDropzone({\n onDrop,\n accept: fileAcceptMap(accepts),\n maxSize,\n multiple: multiple && maxFiles > 1,\n disabled: disabled || loading,\n });\n\n const removeFile = (index: number) => () => {\n const updated = files.filter((_, i) => i !== index);\n onChange?.(updated.length ? updated : []);\n };\n\n const uploadedFiles = files\n .map((file, index) => ({ file, index }))\n .filter(({ file }) => file.status === \"uploaded\");\n\n const isMaxFilesReached = uploadedCount >= maxFiles;\n const uploadIcon = icon ?? Plus;\n\n const gridClasses = {\n grid: \"grid-cols-2 sm:grid-cols-3 md:grid-cols-4\",\n list: \"grid-cols-1\",\n compact: \"grid-cols-2 sm:grid-cols-3\",\n };\n\n return (\n <div className={cn(\"w-full space-y-4\", className?.container)}>\n <div\n className={cn(\n \"grid h-full w-full gap-4\",\n variant === \"list\" ? \"grid-cols-1\" : gridClasses[variant],\n )}\n >\n {showFiles &&\n uploadedFiles.map(({ file, index }) => {\n const type = getFileType(file);\n\n return (\n <div\n key={`${file.url}-${file.addedAt}-${index}`}\n className=\"group bg-primary-bg relative aspect-square h-full w-full\n overflow-hidden rounded-lg\"\n >\n {type === \"image\" ? (\n <img\n src={file.url}\n className=\"h-full w-full object-cover\"\n />\n ) : (\n <div\n className=\"flex h-full w-full items-center justify-center bg-gray-100\n text-sm font-semibold\"\n >\n {file.name.split(\".\").pop()?.toUpperCase()}\n </div>\n )}\n\n <div\n className=\"bg-primary-inverse-bg/50 text-primary-bg absolute inset-0\n flex items-center justify-center opacity-0 transition-opacity\n hover:opacity-100\"\n >\n <StrokeIcon\n onClick={removeFile(index)}\n icon={X}\n />\n </div>\n </div>\n );\n })}\n\n {!isMaxFilesReached && (\n <div\n {...getRootProps()}\n className={cn(\n `relative flex cursor-pointer flex-col items-center justify-center\n rounded-lg border-2 border-dashed border-gray-300 bg-gray-50\n transition-colors hover:bg-gray-100`,\n isDragActive && \"border-primary bg-primary/5\",\n (disabled || loading) && \"cursor-not-allowed opacity-50\",\n variant === \"list\" ? \"min-h-37.5\" : \"aspect-square\",\n className?.blockAdd,\n )}\n >\n <input {...getInputProps()} />\n\n {loading ? (\n <StrokeIcon\n icon={SpinnerGap}\n className=\"text-sub-label-text h-8 w-8 animate-spin\"\n />\n ) : (\n <div className=\"flex flex-col items-center space-y-2 p-4 text-center\">\n <StrokeIcon\n icon={uploadIcon}\n className={cn(\"text-sub-label-text h-8 w-8\", className?.icon)}\n />\n\n <Typography className={cn(\"text-sub-label-text\", className?.title)}>\n {multiple\n ? `${title || \"Добавить\"} (${uploadedCount}/${maxFiles})`\n : title || \"Добавить\"}\n </Typography>\n\n {text && (\n <Typography className={cn(\"text-sub-label-text\", className?.text)}>\n {text}\n </Typography>\n )}\n </div>\n )}\n </div>\n )}\n </div>\n\n {!isErrorText && error && (\n <div className=\"rounded-lg bg-red-50 p-3 text-sm text-red-600\">{error}</div>\n )}\n </div>\n );\n};\n"],"names":["FILE_SIZE_UNITS","FILE_SIZE_KB","DEFAULT_MAX_SIZE","DEFAULT_MAX_FILES","DEFAULT_ACCEPT","DEFAULT_TIMEOUT","ACCEPT_MAP","formatFileSize","bytes","i","getFileIdentity","file","fileAcceptMap","accepts","acc","t","limitFilesForValue","nextFiles","maxFiles","uploadedFiles","errorFiles","availableErrorSlots","mapFile","status","error","getRejectedError","code","replaceDuplicateErrors","currentFiles","newFiles","rejectedFiles","rejectedFileIds","acceptedFileIds","existingFile","id","getFileType","ext","FilesUploader","value","onChange","multiple","disabled","className","maxSize","variant","icon","title","text","showFiles","isErrorText","loading","setLoading","useState","setError","files","uploadedCount","onDrop","acceptedFiles","remainingUploadSlots","acceptedFilesToUpload","overflowAcceptedFiles","rejectedMapped","rejection","nextBaseFiles","getRootProps","getInputProps","isDragActive","useDropzone","removeFile","index","updated","_","isMaxFilesReached","uploadIcon","Plus","gridClasses","cn","jsxs","type","jsx","StrokeIcon","X","SpinnerGap","Typography"],"mappings":"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"}