@rpcbase/ui 0.216.0 → 0.218.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (562) hide show
  1. package/dist/components/FilesUploadField/index.d.ts.map +1 -1
  2. package/dist/components/HourPickerField/index.d.ts.map +1 -1
  3. package/dist/components/Notifications/NotificationsDrawer.d.ts.map +1 -1
  4. package/dist/index10.js +544 -489
  5. package/dist/index10.js.map +1 -1
  6. package/dist/index100.js +5 -24
  7. package/dist/index100.js.map +1 -1
  8. package/dist/index101.js +4 -6
  9. package/dist/index101.js.map +1 -1
  10. package/dist/index102.js +7 -3
  11. package/dist/index102.js.map +1 -1
  12. package/dist/index103.js +5 -6
  13. package/dist/index103.js.map +1 -1
  14. package/dist/index104.js +4 -5
  15. package/dist/index104.js.map +1 -1
  16. package/dist/index105.js +3 -3
  17. package/dist/index105.js.map +1 -1
  18. package/dist/index106.js +5 -4
  19. package/dist/index106.js.map +1 -1
  20. package/dist/index107.js +145 -4
  21. package/dist/index107.js.map +1 -1
  22. package/dist/index108.js +39 -8
  23. package/dist/index108.js.map +1 -1
  24. package/dist/index109.js +4 -5
  25. package/dist/index109.js.map +1 -1
  26. package/dist/index110.js +7 -4
  27. package/dist/index110.js.map +1 -1
  28. package/dist/index111.js +13 -4
  29. package/dist/index111.js.map +1 -1
  30. package/dist/index112.js +13 -6
  31. package/dist/index112.js.map +1 -1
  32. package/dist/index113.js +7 -145
  33. package/dist/index113.js.map +1 -1
  34. package/dist/index114.js +30 -38
  35. package/dist/index114.js.map +1 -1
  36. package/dist/index115.js +10 -4
  37. package/dist/index115.js.map +1 -1
  38. package/dist/index116.js +10 -7
  39. package/dist/index116.js.map +1 -1
  40. package/dist/index117.js +8 -13
  41. package/dist/index117.js.map +1 -1
  42. package/dist/index118.js +13 -13
  43. package/dist/index118.js.map +1 -1
  44. package/dist/index119.js +100 -6
  45. package/dist/index119.js.map +1 -1
  46. package/dist/index120.js +20 -32
  47. package/dist/index120.js.map +1 -1
  48. package/dist/index121.js +52 -9
  49. package/dist/index121.js.map +1 -1
  50. package/dist/index122.js +71 -9
  51. package/dist/index122.js.map +1 -1
  52. package/dist/index123.js +9 -8
  53. package/dist/index123.js.map +1 -1
  54. package/dist/index124.js +20 -13
  55. package/dist/index124.js.map +1 -1
  56. package/dist/index125.js +16 -101
  57. package/dist/index125.js.map +1 -1
  58. package/dist/index126.js +24 -20
  59. package/dist/index126.js.map +1 -1
  60. package/dist/index127.js +6 -53
  61. package/dist/index127.js.map +1 -1
  62. package/dist/index128.js +5 -72
  63. package/dist/index128.js.map +1 -1
  64. package/dist/index129.js +23 -9
  65. package/dist/index129.js.map +1 -1
  66. package/dist/index130.js +33 -19
  67. package/dist/index130.js.map +1 -1
  68. package/dist/index131.js +16 -17
  69. package/dist/index131.js.map +1 -1
  70. package/dist/index132.js +6 -23
  71. package/dist/index132.js.map +1 -1
  72. package/dist/index133.js +4 -6
  73. package/dist/index133.js.map +1 -1
  74. package/dist/index134.js +4 -5
  75. package/dist/index134.js.map +1 -1
  76. package/dist/index135.js +4 -23
  77. package/dist/index135.js.map +1 -1
  78. package/dist/index136.js +5 -35
  79. package/dist/index136.js.map +1 -1
  80. package/dist/index137.js +4 -16
  81. package/dist/index137.js.map +1 -1
  82. package/dist/index138.js +5 -5
  83. package/dist/index138.js.map +1 -1
  84. package/dist/index139.js +24 -5
  85. package/dist/index139.js.map +1 -1
  86. package/dist/index140.js +7 -4
  87. package/dist/index140.js.map +1 -1
  88. package/dist/index141.js +6 -4
  89. package/dist/index141.js.map +1 -1
  90. package/dist/index142.js +5 -4
  91. package/dist/index142.js.map +1 -1
  92. package/dist/index143.js +3 -3
  93. package/dist/index143.js.map +1 -1
  94. package/dist/index144.js +3 -6
  95. package/dist/index144.js.map +1 -1
  96. package/dist/index145.js +5 -24
  97. package/dist/index145.js.map +1 -1
  98. package/dist/index146.js +3 -7
  99. package/dist/index146.js.map +1 -1
  100. package/dist/index147.js +4 -6
  101. package/dist/index147.js.map +1 -1
  102. package/dist/index148.js +3 -5
  103. package/dist/index148.js.map +1 -1
  104. package/dist/index149.js +3 -3
  105. package/dist/index149.js.map +1 -1
  106. package/dist/index150.js +3 -3
  107. package/dist/index150.js.map +1 -1
  108. package/dist/index151.js +46 -4
  109. package/dist/index151.js.map +1 -1
  110. package/dist/index152.js +229 -3
  111. package/dist/index152.js.map +1 -1
  112. package/dist/index153.js +22 -5
  113. package/dist/index153.js.map +1 -1
  114. package/dist/index154.js +24 -3
  115. package/dist/index154.js.map +1 -1
  116. package/dist/index155.js +400 -3
  117. package/dist/index155.js.map +1 -1
  118. package/dist/index156.js +5 -3
  119. package/dist/index156.js.map +1 -1
  120. package/dist/index157.js +61 -598
  121. package/dist/index157.js.map +1 -1
  122. package/dist/index158.js +2 -6
  123. package/dist/index158.js.map +1 -1
  124. package/dist/index159.js +351 -56
  125. package/dist/index159.js.map +1 -1
  126. package/dist/index16.js +167 -149
  127. package/dist/index16.js.map +1 -1
  128. package/dist/index160.js +262 -2
  129. package/dist/index160.js.map +1 -1
  130. package/dist/index161.js +50 -353
  131. package/dist/index161.js.map +1 -1
  132. package/dist/index162.js +45 -260
  133. package/dist/index162.js.map +1 -1
  134. package/dist/index163.js +150 -41
  135. package/dist/index163.js.map +1 -1
  136. package/dist/index164.js +105 -42
  137. package/dist/index164.js.map +1 -1
  138. package/dist/index165.js +24 -169
  139. package/dist/index165.js.map +1 -1
  140. package/dist/index166.js +8 -110
  141. package/dist/index166.js.map +1 -1
  142. package/dist/index167.js +4 -24
  143. package/dist/index167.js.map +1 -1
  144. package/dist/index168.js +6 -8
  145. package/dist/index168.js.map +1 -1
  146. package/dist/index169.js +4 -4
  147. package/dist/index169.js.map +1 -1
  148. package/dist/index170.js +466 -5
  149. package/dist/index170.js.map +1 -1
  150. package/dist/index171.js +185 -4
  151. package/dist/index171.js.map +1 -1
  152. package/dist/index172.js +65 -424
  153. package/dist/index172.js.map +1 -1
  154. package/dist/index173.js +223 -146
  155. package/dist/index173.js.map +1 -1
  156. package/dist/index174.js +9 -107
  157. package/dist/index174.js.map +1 -1
  158. package/dist/index175.js +37 -257
  159. package/dist/index175.js.map +1 -1
  160. package/dist/index176.js +4 -9
  161. package/dist/index176.js.map +1 -1
  162. package/dist/index177.js +56 -40
  163. package/dist/index177.js.map +1 -1
  164. package/dist/index178.js +8 -4
  165. package/dist/index178.js.map +1 -1
  166. package/dist/index179.js +65 -23
  167. package/dist/index179.js.map +1 -1
  168. package/dist/index180.js +20 -29
  169. package/dist/index180.js.map +1 -1
  170. package/dist/index181.js +17 -5
  171. package/dist/index181.js.map +1 -1
  172. package/dist/index182.js +4 -15
  173. package/dist/index182.js.map +1 -1
  174. package/dist/index183.js +4 -4
  175. package/dist/index183.js.map +1 -1
  176. package/dist/index184.js +6 -5
  177. package/dist/index184.js.map +1 -1
  178. package/dist/index185.js +4 -58
  179. package/dist/index185.js.map +1 -1
  180. package/dist/index186.js +6 -66
  181. package/dist/index186.js.map +1 -1
  182. package/dist/index187.js +16 -6
  183. package/dist/index187.js.map +1 -1
  184. package/dist/index188.js +4 -4
  185. package/dist/index188.js.map +1 -1
  186. package/dist/index189.js +4 -6
  187. package/dist/index189.js.map +1 -1
  188. package/dist/index190.js +12 -16
  189. package/dist/index190.js.map +1 -1
  190. package/dist/index191.js +9 -4
  191. package/dist/index191.js.map +1 -1
  192. package/dist/index192.js +13 -4
  193. package/dist/index192.js.map +1 -1
  194. package/dist/index193.js +13 -12
  195. package/dist/index193.js.map +1 -1
  196. package/dist/index194.js +4 -9
  197. package/dist/index194.js.map +1 -1
  198. package/dist/index195.js +5 -13
  199. package/dist/index195.js.map +1 -1
  200. package/dist/index196.js +6 -13
  201. package/dist/index196.js.map +1 -1
  202. package/dist/index197.js +5 -4
  203. package/dist/index197.js.map +1 -1
  204. package/dist/index198.js +54 -5
  205. package/dist/index198.js.map +1 -1
  206. package/dist/index199.js +8 -6
  207. package/dist/index199.js.map +1 -1
  208. package/dist/index200.js +4 -5
  209. package/dist/index200.js.map +1 -1
  210. package/dist/index201.js +4 -54
  211. package/dist/index201.js.map +1 -1
  212. package/dist/index202.js +8 -8
  213. package/dist/index202.js.map +1 -1
  214. package/dist/index203.js +4 -4
  215. package/dist/index203.js.map +1 -1
  216. package/dist/index204.js +4 -4
  217. package/dist/index204.js.map +1 -1
  218. package/dist/index205.js +3 -8
  219. package/dist/index205.js.map +1 -1
  220. package/dist/index206.js +10 -4
  221. package/dist/index206.js.map +1 -1
  222. package/dist/index207.js +9 -4
  223. package/dist/index207.js.map +1 -1
  224. package/dist/index208.js +9 -3
  225. package/dist/index208.js.map +1 -1
  226. package/dist/index209.js +10 -10
  227. package/dist/index209.js.map +1 -1
  228. package/dist/index210.js +10 -9
  229. package/dist/index210.js.map +1 -1
  230. package/dist/index211.js +9 -9
  231. package/dist/index211.js.map +1 -1
  232. package/dist/index212.js +6 -10
  233. package/dist/index212.js.map +1 -1
  234. package/dist/index213.js +5 -10
  235. package/dist/index213.js.map +1 -1
  236. package/dist/index214.js +4 -9
  237. package/dist/index214.js.map +1 -1
  238. package/dist/index215.js +5 -6
  239. package/dist/index215.js.map +1 -1
  240. package/dist/index216.js +6 -5
  241. package/dist/index216.js.map +1 -1
  242. package/dist/index217.js +5 -4
  243. package/dist/index217.js.map +1 -1
  244. package/dist/index218.js +16 -5
  245. package/dist/index218.js.map +1 -1
  246. package/dist/index219.js +7 -6
  247. package/dist/index219.js.map +1 -1
  248. package/dist/index220.js +10 -5
  249. package/dist/index220.js.map +1 -1
  250. package/dist/index221.js +10 -8
  251. package/dist/index221.js.map +1 -1
  252. package/dist/index222.js +21 -19
  253. package/dist/index222.js.map +1 -1
  254. package/dist/index223.js +10 -16
  255. package/dist/index223.js.map +1 -1
  256. package/dist/index224.js +9 -7
  257. package/dist/index224.js.map +1 -1
  258. package/dist/index225.js +9 -10
  259. package/dist/index225.js.map +1 -1
  260. package/dist/index226.js +4 -10
  261. package/dist/index226.js.map +1 -1
  262. package/dist/index227.js +5 -21
  263. package/dist/index227.js.map +1 -1
  264. package/dist/index228.js +16 -10
  265. package/dist/index228.js.map +1 -1
  266. package/dist/index229.js +8 -8
  267. package/dist/index229.js.map +1 -1
  268. package/dist/index230.js +18 -9
  269. package/dist/index230.js.map +1 -1
  270. package/dist/index231.js +15 -4
  271. package/dist/index231.js.map +1 -1
  272. package/dist/index232.js +12 -5
  273. package/dist/index232.js.map +1 -1
  274. package/dist/index233.js +28 -15
  275. package/dist/index233.js.map +1 -1
  276. package/dist/index234.js +12 -9
  277. package/dist/index234.js.map +1 -1
  278. package/dist/index235.js +25 -18
  279. package/dist/index235.js.map +1 -1
  280. package/dist/index236.js +5 -15
  281. package/dist/index236.js.map +1 -1
  282. package/dist/index237.js +24 -12
  283. package/dist/index237.js.map +1 -1
  284. package/dist/index238.js +29 -30
  285. package/dist/index238.js.map +1 -1
  286. package/dist/index239.js +5 -13
  287. package/dist/index239.js.map +1 -1
  288. package/dist/index240.js +13 -25
  289. package/dist/index240.js.map +1 -1
  290. package/dist/index241.js +154 -5
  291. package/dist/index241.js.map +1 -1
  292. package/dist/index242.js +28 -65
  293. package/dist/index242.js.map +1 -1
  294. package/dist/index243.js +9 -180
  295. package/dist/index243.js.map +1 -1
  296. package/dist/index244.js +43 -41
  297. package/dist/index244.js.map +1 -1
  298. package/dist/index245.js +10 -12
  299. package/dist/index245.js.map +1 -1
  300. package/dist/index246.js +41 -151
  301. package/dist/index246.js.map +1 -1
  302. package/dist/index247.js +92 -27
  303. package/dist/index247.js.map +1 -1
  304. package/dist/index248.js +86 -9
  305. package/dist/index248.js.map +1 -1
  306. package/dist/index249.js +96 -39
  307. package/dist/index249.js.map +1 -1
  308. package/dist/index250.js +51 -10
  309. package/dist/index250.js.map +1 -1
  310. package/dist/index251.js +10 -43
  311. package/dist/index251.js.map +1 -1
  312. package/dist/index252.js +31 -89
  313. package/dist/index252.js.map +1 -1
  314. package/dist/index253.js +8 -86
  315. package/dist/index253.js.map +1 -1
  316. package/dist/index254.js +106 -95
  317. package/dist/index254.js.map +1 -1
  318. package/dist/index255.js +16 -51
  319. package/dist/index255.js.map +1 -1
  320. package/dist/index256.js +14 -10
  321. package/dist/index256.js.map +1 -1
  322. package/dist/index257.js +3 -37
  323. package/dist/index257.js.map +1 -1
  324. package/dist/index258.js +36 -8
  325. package/dist/index258.js.map +1 -1
  326. package/dist/index259.js +19 -115
  327. package/dist/index259.js.map +1 -1
  328. package/dist/index260.js +9 -17
  329. package/dist/index260.js.map +1 -1
  330. package/dist/index261.js +8 -15
  331. package/dist/index261.js.map +1 -1
  332. package/dist/index262.js +19 -3
  333. package/dist/index262.js.map +1 -1
  334. package/dist/index263.js +23 -31
  335. package/dist/index263.js.map +1 -1
  336. package/dist/index264.js +15 -19
  337. package/dist/index264.js.map +1 -1
  338. package/dist/index265.js +4 -9
  339. package/dist/index265.js.map +1 -1
  340. package/dist/index266.js +17 -8
  341. package/dist/index266.js.map +1 -1
  342. package/dist/index267.js +12 -19
  343. package/dist/index267.js.map +1 -1
  344. package/dist/index268.js +5 -29
  345. package/dist/index268.js.map +1 -1
  346. package/dist/index269.js +3 -17
  347. package/dist/index269.js.map +1 -1
  348. package/dist/index270.js +24 -5
  349. package/dist/index270.js.map +1 -1
  350. package/dist/index271.js +113 -3
  351. package/dist/index271.js.map +1 -1
  352. package/dist/index272.js +15 -23
  353. package/dist/index272.js.map +1 -1
  354. package/dist/index273.js +524 -107
  355. package/dist/index273.js.map +1 -1
  356. package/dist/index274.js +124 -14
  357. package/dist/index274.js.map +1 -1
  358. package/dist/index275.js +123 -519
  359. package/dist/index275.js.map +1 -1
  360. package/dist/index276.js +20 -125
  361. package/dist/index276.js.map +1 -1
  362. package/dist/index277.js +4 -133
  363. package/dist/index277.js.map +1 -1
  364. package/dist/index278.js +4 -4
  365. package/dist/index278.js.map +1 -1
  366. package/dist/index279.js +4 -18
  367. package/dist/index279.js.map +1 -1
  368. package/dist/index280.js +15 -12
  369. package/dist/index280.js.map +1 -1
  370. package/dist/index281.js +8 -20
  371. package/dist/index281.js.map +1 -1
  372. package/dist/index282.js +5 -64
  373. package/dist/index282.js.map +1 -1
  374. package/dist/index283.js +5 -69
  375. package/dist/index283.js.map +1 -1
  376. package/dist/index284.js +545 -8
  377. package/dist/index284.js.map +1 -1
  378. package/dist/index285.js +46 -13
  379. package/dist/index285.js.map +1 -1
  380. package/dist/index286.js +18 -66
  381. package/dist/index286.js.map +1 -1
  382. package/dist/index287.js +5 -4
  383. package/dist/index287.js.map +1 -1
  384. package/dist/index288.js +7 -4
  385. package/dist/index288.js.map +1 -1
  386. package/dist/index289.js +7 -4
  387. package/dist/index289.js.map +1 -1
  388. package/dist/index290.js +7 -15
  389. package/dist/index290.js.map +1 -1
  390. package/dist/index291.js +11 -8
  391. package/dist/index291.js.map +1 -1
  392. package/dist/index292.js +8 -5
  393. package/dist/index292.js.map +1 -1
  394. package/dist/index293.js +12 -4
  395. package/dist/index293.js.map +1 -1
  396. package/dist/index294.js +62 -543
  397. package/dist/index294.js.map +1 -1
  398. package/dist/index295.js +65 -43
  399. package/dist/index295.js.map +1 -1
  400. package/dist/index296.js +9 -18
  401. package/dist/index296.js.map +1 -1
  402. package/dist/index297.js +14 -6
  403. package/dist/index297.js.map +1 -1
  404. package/dist/index298.js +66 -8
  405. package/dist/index298.js.map +1 -1
  406. package/dist/index299.js +4 -6
  407. package/dist/index299.js.map +1 -1
  408. package/dist/index300.js +56 -8
  409. package/dist/index300.js.map +1 -1
  410. package/dist/index301.js +68 -12
  411. package/dist/index301.js.map +1 -1
  412. package/dist/index302.js +31 -9
  413. package/dist/index302.js.map +1 -1
  414. package/dist/index303.js +9 -13
  415. package/dist/index303.js.map +1 -1
  416. package/dist/index304.js +153 -4
  417. package/dist/index304.js.map +1 -1
  418. package/dist/index305.js +108 -23
  419. package/dist/index305.js.map +1 -1
  420. package/dist/index306.js +3 -4
  421. package/dist/index306.js.map +1 -1
  422. package/dist/index307.js +23 -56
  423. package/dist/index307.js.map +1 -1
  424. package/dist/index308.js +16 -68
  425. package/dist/index308.js.map +1 -1
  426. package/dist/index309.js +29 -31
  427. package/dist/index309.js.map +1 -1
  428. package/dist/index31.js +5 -5
  429. package/dist/index310.js +13 -9
  430. package/dist/index310.js.map +1 -1
  431. package/dist/index311.js +7 -153
  432. package/dist/index311.js.map +1 -1
  433. package/dist/index312.js +22 -107
  434. package/dist/index312.js.map +1 -1
  435. package/dist/index313.js +11 -21
  436. package/dist/index313.js.map +1 -1
  437. package/dist/index314.js +26 -11
  438. package/dist/index314.js.map +1 -1
  439. package/dist/index315.js +4 -27
  440. package/dist/index315.js.map +1 -1
  441. package/dist/index32.js +24 -24
  442. package/dist/index33.js +3 -3
  443. package/dist/index36.js +1 -1
  444. package/dist/index37.js +2 -2
  445. package/dist/index40.js +2 -2
  446. package/dist/index41.js +242 -270
  447. package/dist/index41.js.map +1 -1
  448. package/dist/index45.js +1 -1
  449. package/dist/index46.js +1 -1
  450. package/dist/index49.js +1 -1
  451. package/dist/index50.js +1 -1
  452. package/dist/index51.js +2 -205
  453. package/dist/index51.js.map +1 -1
  454. package/dist/index52.js +2 -4
  455. package/dist/index52.js.map +1 -1
  456. package/dist/index53.js +2 -7
  457. package/dist/index53.js.map +1 -1
  458. package/dist/index54.js +2 -48
  459. package/dist/index54.js.map +1 -1
  460. package/dist/index55.js +5 -47
  461. package/dist/index55.js.map +1 -1
  462. package/dist/index56.js +33 -50
  463. package/dist/index56.js.map +1 -1
  464. package/dist/index57.js +48 -7
  465. package/dist/index57.js.map +1 -1
  466. package/dist/index58.js +7 -14
  467. package/dist/index58.js.map +1 -1
  468. package/dist/index59.js +11 -133
  469. package/dist/index59.js.map +1 -1
  470. package/dist/index60.js +3 -10
  471. package/dist/index60.js.map +1 -1
  472. package/dist/index61.js +45 -214
  473. package/dist/index61.js.map +1 -1
  474. package/dist/index62.js +51 -13
  475. package/dist/index62.js.map +1 -1
  476. package/dist/index63.js +7 -33
  477. package/dist/index63.js.map +1 -1
  478. package/dist/index64.js +13 -45
  479. package/dist/index64.js.map +1 -1
  480. package/dist/index65.js +133 -7
  481. package/dist/index65.js.map +1 -1
  482. package/dist/index66.js +9 -48
  483. package/dist/index66.js.map +1 -1
  484. package/dist/index67.js +216 -3
  485. package/dist/index67.js.map +1 -1
  486. package/dist/index68.js +13 -6
  487. package/dist/index68.js.map +1 -1
  488. package/dist/index69.js +46 -27
  489. package/dist/index69.js.map +1 -1
  490. package/dist/index70.js +50 -50
  491. package/dist/index70.js.map +1 -1
  492. package/dist/index71.js +4 -9
  493. package/dist/index71.js.map +1 -1
  494. package/dist/index72.js +5 -11
  495. package/dist/index72.js.map +1 -1
  496. package/dist/index73.js +28 -2
  497. package/dist/index73.js.map +1 -1
  498. package/dist/index74.js +50 -2
  499. package/dist/index74.js.map +1 -1
  500. package/dist/index75.js +9 -2
  501. package/dist/index75.js.map +1 -1
  502. package/dist/index76.js +6 -2
  503. package/dist/index76.js.map +1 -1
  504. package/dist/index77.js +7 -5
  505. package/dist/index77.js.map +1 -1
  506. package/dist/index78.js +5 -7
  507. package/dist/index78.js.map +1 -1
  508. package/dist/index79.js +46 -5
  509. package/dist/index79.js.map +1 -1
  510. package/dist/index8.js +535 -543
  511. package/dist/index8.js.map +1 -1
  512. package/dist/index80.js +52 -47
  513. package/dist/index80.js.map +1 -1
  514. package/dist/index81.js +4 -229
  515. package/dist/index81.js.map +1 -1
  516. package/dist/index82.js +5 -22
  517. package/dist/index82.js.map +1 -1
  518. package/dist/index83.js +15 -24
  519. package/dist/index83.js.map +1 -1
  520. package/dist/index84.js +5 -400
  521. package/dist/index84.js.map +1 -1
  522. package/dist/index85.js +7 -46
  523. package/dist/index85.js.map +1 -1
  524. package/dist/index86.js +17 -52
  525. package/dist/index86.js.map +1 -1
  526. package/dist/index87.js +4 -4
  527. package/dist/index87.js.map +1 -1
  528. package/dist/index88.js +3 -3
  529. package/dist/index88.js.map +1 -1
  530. package/dist/index89.js +5 -15
  531. package/dist/index89.js.map +1 -1
  532. package/dist/index90.js +5 -5
  533. package/dist/index90.js.map +1 -1
  534. package/dist/index91.js +3 -6
  535. package/dist/index91.js.map +1 -1
  536. package/dist/index92.js +3 -15
  537. package/dist/index92.js.map +1 -1
  538. package/dist/index93.js +6 -4
  539. package/dist/index93.js.map +1 -1
  540. package/dist/index94.js +24 -4
  541. package/dist/index94.js.map +1 -1
  542. package/dist/index95.js +6 -5
  543. package/dist/index95.js.map +1 -1
  544. package/dist/index96.js +4 -5
  545. package/dist/index96.js.map +1 -1
  546. package/dist/index97.js +5 -3
  547. package/dist/index97.js.map +1 -1
  548. package/dist/index98.js +4 -3
  549. package/dist/index98.js.map +1 -1
  550. package/dist/index99.js +4 -6
  551. package/dist/index99.js.map +1 -1
  552. package/package.json +3 -2
  553. package/dist/index316.js +0 -8
  554. package/dist/index316.js.map +0 -1
  555. package/dist/index317.js +0 -19
  556. package/dist/index317.js.map +0 -1
  557. package/dist/index318.js +0 -32
  558. package/dist/index318.js.map +0 -1
  559. package/dist/index319.js +0 -16
  560. package/dist/index319.js.map +0 -1
  561. package/dist/index320.js +0 -10
  562. package/dist/index320.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index8.js","sources":["../src/components/FilesUploadField/index.tsx"],"sourcesContent":["import { useEffect, useMemo, useRef, useState, type ReactNode } from \"react\"\nimport { createPortal } from \"react-dom\"\nimport { DismissableLayerBranch } from \"@radix-ui/react-dismissable-layer\"\nimport type { DragEndEvent } from \"@dnd-kit/core\"\nimport { DndContext, DragOverlay, KeyboardSensor, PointerSensor, closestCenter, useSensor, useSensors } from \"@dnd-kit/core\"\nimport {\n SortableContext,\n arrayMove,\n rectSortingStrategy,\n sortableKeyboardCoordinates,\n useSortable,\n} from \"@dnd-kit/sortable\"\nimport { CSS } from \"@dnd-kit/utilities\"\nimport { Loader2, Maximize2, Plus, X } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\n\nexport type FilesUploadFieldFile = {\n id: string\n url: string\n alt?: string\n uploadKey?: string\n}\n\nconst TENANT_ID_QUERY_PARAM = \"rb-tenant-id\"\n\ntype FileUploadsInitResponse = {\n ok: boolean\n error?: string\n uploadId?: string\n uploadKey?: string\n chunkSize?: number\n chunksTotal?: number\n}\n\ntype FileUploadsStatusResponse = {\n ok: boolean\n error?: string\n status?: \"uploading\" | \"assembling\" | \"done\" | \"error\"\n chunkSize?: number\n chunksTotal?: number\n received?: number[]\n fileId?: string\n}\n\ntype FileUploadsCompleteResponse = {\n ok: boolean\n error?: string\n fileId?: string\n}\n\nconst sha256Hex = async (data: ArrayBuffer): Promise<string | null> => {\n if (typeof crypto === \"undefined\" || typeof crypto.subtle === \"undefined\") return null\n try {\n const digest = await crypto.subtle.digest(\"SHA-256\", data)\n const bytes = Array.from(new Uint8Array(digest))\n return bytes.map((b) => b.toString(16).padStart(2, \"0\")).join(\"\")\n } catch {\n return null\n }\n}\n\nconst readTenantIdFromLocation = (): string | null => {\n if (typeof window === \"undefined\") return null\n const raw = new URLSearchParams(window.location.search || \"\").get(TENANT_ID_QUERY_PARAM)\n const normalized = raw?.trim() ?? \"\"\n return normalized ? normalized : null\n}\n\nconst withTenant = (path: string, tenantId: string | null): string => {\n if (!tenantId) return path\n const sep = path.includes(\"?\") ? \"&\" : \"?\"\n return `${path}${sep}${TENANT_ID_QUERY_PARAM}=${encodeURIComponent(tenantId)}`\n}\n\nconst postJson = async <T,>(\n url: string,\n body: unknown,\n options?: { headers?: Record<string, string>; signal?: AbortSignal },\n): Promise<{ ok: boolean; status: number; data: T }> => {\n const response = await fetch(url, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\", ...(options?.headers ?? {}) },\n credentials: \"include\",\n body: JSON.stringify(body),\n signal: options?.signal,\n })\n\n const payload = await response.json().catch(() => ({}))\n return { ok: response.ok, status: response.status, data: payload as T }\n}\n\nconst getJson = async <T,>(\n url: string,\n options?: { headers?: Record<string, string>; signal?: AbortSignal },\n): Promise<{ ok: boolean; status: number; data: T }> => {\n const response = await fetch(url, {\n credentials: \"include\",\n headers: options?.headers,\n signal: options?.signal,\n })\n const payload = await response.json().catch(() => ({}))\n return { ok: response.ok, status: response.status, data: payload as T }\n}\n\nconst putOctetStream = async ({\n url,\n body,\n sha256,\n uploadKey,\n signal,\n}: {\n url: string\n body: ArrayBuffer\n sha256?: string\n uploadKey?: string\n signal?: AbortSignal\n}): Promise<{ ok: boolean; status: number }> => {\n const headers: Record<string, string> = {\n \"Content-Type\": \"application/octet-stream\",\n }\n if (sha256) headers[\"X-Chunk-SHA256\"] = sha256\n if (uploadKey) headers[\"X-Upload-Key\"] = uploadKey\n\n const response = await fetch(url, {\n method: \"PUT\",\n credentials: \"include\",\n headers,\n body,\n signal,\n })\n\n return { ok: response.ok, status: response.status }\n}\n\nconst defaultUpload: UploadHandler = async (file, onProgress, options) => {\n const tenantId = readTenantIdFromLocation()\n\n const initRes = await postJson<FileUploadsInitResponse>(\n withTenant(\"/api/rb/file-uploads\", tenantId),\n {\n filename: file.name,\n mimeType: file.type || \"application/octet-stream\",\n ...(typeof options?.isPublic === \"boolean\" ? { isPublic: options.isPublic } : {}),\n totalSize: file.size,\n },\n { signal: options?.signal },\n )\n\n if (!initRes.ok || !(initRes.data as any)?.ok) {\n throw new Error((initRes.data as any)?.error ?? `Init failed (${initRes.status})`)\n }\n\n const uploadId = String((initRes.data as any)?.uploadId ?? \"\")\n const uploadKey = typeof (initRes.data as any)?.uploadKey === \"string\" ? String((initRes.data as any).uploadKey) : null\n const chunkSize = Number((initRes.data as any)?.chunkSize ?? 0)\n const chunksTotal = Number((initRes.data as any)?.chunksTotal ?? 0)\n\n if (!uploadId || !chunkSize || !chunksTotal) {\n throw new Error(\"Upload init missing required fields\")\n }\n\n const doUploadChunk = async (index: number) => {\n const start = index * chunkSize\n const end = Math.min(file.size, start + chunkSize)\n const slice = file.slice(start, end)\n const body = await slice.arrayBuffer()\n const sha = await sha256Hex(body)\n\n const res = await putOctetStream({\n url: withTenant(`/api/rb/file-uploads/${encodeURIComponent(uploadId)}/chunks/${index}`, tenantId),\n body,\n sha256: sha ?? undefined,\n uploadKey: uploadKey ?? undefined,\n signal: options?.signal,\n })\n\n if (res.status === 204) return\n throw new Error(`Chunk ${index} failed (${res.status})`)\n }\n\n const uploadChunks = async (indices: number[], alreadyUploaded = 0) => {\n let uploaded = alreadyUploaded\n\n for (const idx of indices) {\n await doUploadChunk(idx)\n uploaded += 1\n const pct = Math.min(99, Math.floor((uploaded / chunksTotal) * 99))\n onProgress(pct)\n }\n }\n\n const allIndices = Array.from({ length: chunksTotal }, (_, i) => i)\n await uploadChunks(allIndices, 0)\n\n const complete = async (): Promise<string> => {\n const completeRes = await postJson<FileUploadsCompleteResponse>(\n withTenant(`/api/rb/file-uploads/${encodeURIComponent(uploadId)}/complete`, tenantId),\n {},\n { headers: uploadKey ? { \"X-Upload-Key\": uploadKey } : undefined, signal: options?.signal },\n )\n\n if (completeRes.ok && (completeRes.data as any)?.ok) {\n const fileId = String((completeRes.data as any)?.fileId ?? \"\")\n if (!fileId) throw new Error(\"Upload completed without fileId\")\n return fileId\n }\n\n const code = String((completeRes.data as any)?.error ?? \"\")\n if (completeRes.status !== 409 || code !== \"missing_chunks\") {\n throw new Error(code || `Complete failed (${completeRes.status})`)\n }\n\n const statusRes = await getJson<FileUploadsStatusResponse>(\n withTenant(`/api/rb/file-uploads/${encodeURIComponent(uploadId)}/status`, tenantId),\n { headers: uploadKey ? { \"X-Upload-Key\": uploadKey } : undefined, signal: options?.signal },\n )\n\n if (!statusRes.ok || !(statusRes.data as any)?.ok) {\n throw new Error((statusRes.data as any)?.error ?? `Status failed (${statusRes.status})`)\n }\n\n const received = Array.isArray((statusRes.data as any)?.received) ? (statusRes.data as any).received : []\n const present = new Set<number>(received)\n const missing: number[] = []\n for (let i = 0; i < chunksTotal; i += 1) {\n if (!present.has(i)) missing.push(i)\n }\n\n if (!missing.length) {\n throw new Error(\"missing_chunks\")\n }\n\n await uploadChunks(missing, present.size)\n return complete()\n }\n\n const fileId = await complete()\n\n onProgress(100)\n return {\n id: fileId,\n url: withTenant(`/api/rb/files/${encodeURIComponent(fileId)}`, tenantId),\n alt: file.name,\n ...(uploadKey ? { uploadKey } : {}),\n }\n}\n\nfunction SortableTile({\n item,\n isHovered,\n enableImagePreview,\n renderItem,\n onHoverEnter,\n onHoverLeave,\n onRemove,\n onRetry,\n startFullscreen,\n isUploading,\n isError,\n tileClasses,\n disabled,\n isDraggingExternal,\n removeButtonAriaLabel,\n}: {\n item: FileWithState\n isHovered: boolean\n enableImagePreview: boolean\n renderItem?: (props: FilesUploadFieldRenderItemProps) => ReactNode\n onHoverEnter: () => void\n onHoverLeave: () => void\n onRemove: (id: string) => void\n onRetry: (id: string) => void\n startFullscreen: (id: string) => void\n isUploading: boolean\n isError: boolean\n tileClasses: string\n disabled: boolean\n isDraggingExternal: boolean\n removeButtonAriaLabel: string\n}) {\n const { setNodeRef, attributes, listeners, transform, transition, isDragging } = useSortable({\n id: item.id,\n disabled,\n })\n\n const tileRef = useRef<HTMLDivElement | null>(null)\n const previewRef = useRef<HTMLDivElement | null>(null)\n const [previewPosition, setPreviewPosition] = useState<{ left: number; top: number } | null>(null)\n\n const updatePreviewPosition = () => {\n const el = tileRef.current\n if (!el) return\n const rect = el.getBoundingClientRect()\n setPreviewPosition({ left: rect.left + rect.width / 2, top: rect.top - 10 })\n }\n\n useEffect(() => {\n if (!enableImagePreview || !isHovered) {\n setPreviewPosition(null)\n return\n }\n\n updatePreviewPosition()\n\n let raf = 0\n const schedule = () => {\n if (raf) cancelAnimationFrame(raf)\n raf = requestAnimationFrame(() => {\n raf = 0\n updatePreviewPosition()\n })\n }\n\n window.addEventListener(\"resize\", schedule)\n window.addEventListener(\"scroll\", schedule, true)\n return () => {\n if (raf) cancelAnimationFrame(raf)\n window.removeEventListener(\"resize\", schedule)\n window.removeEventListener(\"scroll\", schedule, true)\n }\n }, [enableImagePreview, isHovered])\n\n const style = {\n transform: CSS.Transform.toString(transform),\n transition,\n }\n\n const tileContent = renderItem\n ? renderItem({\n file: { id: item.id, url: item.url, alt: item.alt, uploadKey: item.uploadKey },\n previewUrl: item.previewUrl,\n status: item.status,\n progress: item.progress,\n fileName: item.fileName,\n })\n : enableImagePreview\n ? (\n <img\n src={item.previewUrl}\n alt={item.alt ?? \"Uploaded file\"}\n className={cn(\n \"size-full rounded-md object-cover\",\n isUploading && \"opacity-75\",\n isError && \"grayscale\"\n )}\n />\n )\n : (\n <div className=\"flex size-full items-center justify-center rounded-md bg-slate-100 px-2 text-center text-[10px] font-medium text-slate-700 dark:bg-slate-800 dark:text-slate-200\">\n <span className=\"w-full truncate\">{item.fileName ?? item.alt ?? \"Fichier\"}</span>\n </div>\n )\n\n return (\n <div\n ref={(node) => {\n tileRef.current = node\n setNodeRef(node)\n }}\n style={style}\n className={cn(\n tileClasses,\n isDragging && \"z-20 ring-2 ring-primary shadow-xl\",\n isDraggingExternal && \"opacity-0\",\n !disabled && \"cursor-grab active:cursor-grabbing\",\n isDragging && \"cursor-grabbing\",\n disabled && \"cursor-default\"\n )}\n onMouseEnter={() => {\n updatePreviewPosition()\n onHoverEnter()\n }}\n onMouseLeave={(event) => {\n const next = event.relatedTarget\n if (next instanceof Node && previewRef.current?.contains(next)) return\n onHoverLeave()\n }}\n {...attributes}\n {...listeners}\n >\n {tileContent}\n\n <button\n type=\"button\"\n onClick={() => {\n if (disabled) return\n onRemove(item.id)\n }}\n disabled={disabled}\n className=\"absolute right-1 top-1 inline-flex size-6 items-center justify-center rounded-full bg-white text-slate-700 shadow-sm transition hover:scale-105 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary dark:bg-slate-900 dark:text-slate-200\"\n aria-label={removeButtonAriaLabel}\n >\n <X className=\"h-4 w-4\" />\n </button>\n\n {enableImagePreview &&\n isHovered &&\n previewPosition &&\n (() => {\n const preview = (\n <DismissableLayerBranch>\n <div\n ref={previewRef}\n className=\"pointer-events-auto fixed z-[60] w-52 -translate-x-1/2 -translate-y-full rounded-xl border border-slate-200 bg-white/95 p-3 shadow-2xl backdrop-blur dark:border-slate-700 dark:bg-slate-900/95\"\n style={{ left: previewPosition.left, top: previewPosition.top }}\n onMouseEnter={() => {\n updatePreviewPosition()\n onHoverEnter()\n }}\n onMouseLeave={(event) => {\n const next = event.relatedTarget\n if (next instanceof Node && tileRef.current?.contains(next)) return\n onHoverLeave()\n }}\n >\n <div className=\"relative overflow-hidden rounded-lg\">\n <img src={item.url} alt={item.alt ?? \"Preview\"} className=\"h-40 w-full object-cover\" />\n <button\n type=\"button\"\n onClick={() => startFullscreen(item.id)}\n className=\"absolute right-2 top-2 inline-flex items-center justify-center rounded-full bg-black/70 p-2 text-white transition hover:bg-black\"\n aria-label=\"Plein écran\"\n >\n <Maximize2 className=\"h-3.5 w-3.5\" />\n </button>\n </div>\n </div>\n </DismissableLayerBranch>\n )\n\n if (typeof document === \"undefined\") return preview\n return createPortal(preview, document.body)\n })()}\n\n {isUploading && (\n <div className=\"absolute inset-0 z-20 flex flex-col items-center justify-center gap-2 rounded-lg bg-black/40 text-white\">\n <Loader2 className=\"h-5 w-5 animate-spin\" />\n <div className=\"h-1.5 w-5/6 rounded-full bg-white/20\">\n <div className=\"h-full rounded-full bg-primary\" style={{ width: `${item.progress}%` }} />\n </div>\n <div className=\"text-xs font-semibold\">{item.progress}%</div>\n </div>\n )}\n\n {isError && (\n <div className=\"absolute inset-0 z-10 flex flex-col items-center justify-center gap-2 rounded-lg bg-red-600/70 text-white\">\n <div className=\"text-xs font-semibold\">Échec</div>\n <button\n type=\"button\"\n onClick={() => onRetry(item.id)}\n disabled={disabled}\n className=\"rounded-full bg-white/90 px-3 py-1 text-xs font-semibold text-red-700 shadow-sm transition hover:bg-white focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-white\"\n >\n Réessayer\n </button>\n </div>\n )}\n </div>\n )\n}\n\ntype UploadResult = FilesUploadFieldFile | Promise<FilesUploadFieldFile>\n\ntype UploadHandler = (\n file: File,\n onProgress: (progress: number) => void,\n options?: { signal?: AbortSignal; isPublic?: boolean },\n) => UploadResult\n\nexport type FilesUploadFieldRenderItemProps = {\n file: FilesUploadFieldFile\n previewUrl: string\n status: \"uploaded\" | \"uploading\" | \"error\"\n progress: number\n fileName?: string\n}\n\nexport type FilesUploadFieldProps = {\n initialFiles?: FilesUploadFieldFile[]\n onChange?: (files: FilesUploadFieldFile[]) => void\n upload?: UploadHandler\n uploadIsPublic?: boolean\n disabled?: boolean\n onUploadingChange?: (isUploading: boolean) => void\n accept?: string | string[]\n renderHeader?: () => ReactNode\n renderItem?: (props: FilesUploadFieldRenderItemProps) => ReactNode\n addButtonAriaLabel?: string\n removeButtonAriaLabel?: string\n}\n\ntype FileWithState = FilesUploadFieldFile & {\n previewUrl: string\n status: \"uploaded\" | \"uploading\" | \"error\"\n progress: number\n fileName?: string\n}\n\nfunction toPreview(file: File) {\n return URL.createObjectURL(file)\n}\n\nexport function FilesUploadField({\n initialFiles = [],\n onChange,\n upload = defaultUpload,\n uploadIsPublic = false,\n disabled = false,\n onUploadingChange,\n accept,\n renderHeader,\n renderItem,\n addButtonAriaLabel = \"Ajouter un fichier\",\n removeButtonAriaLabel = \"Supprimer le fichier\",\n}: FilesUploadFieldProps) {\n const fileInputRef = useRef<HTMLInputElement>(null)\n const [images, setImages] = useState<FileWithState[]>(() =>\n initialFiles.map((file) => ({ ...file, previewUrl: file.url, status: \"uploaded\", progress: 100 }))\n )\n const [dragActive, setDragActive] = useState(false)\n const [fullscreenIndex, setFullscreenIndex] = useState<number | null>(null)\n const [hoveredId, setHoveredId] = useState<string | null>(null)\n const [activeId, setActiveId] = useState<string | null>(null)\n const hoverTimeoutRef = useRef<number | null>(null)\n const skipNotifyRef = useRef(true)\n const imagesRef = useRef<FileWithState[]>([])\n const lastInitialImagesRef = useRef<FilesUploadFieldFile[]>(initialFiles)\n const onChangeRef = useRef(onChange)\n const onUploadingChangeRef = useRef(onUploadingChange)\n const replacedIdRef = useRef<Map<string, string>>(new Map())\n const fileRef = useRef<Map<string, File>>(new Map())\n const abortRef = useRef<Map<string, AbortController>>(new Map())\n const objectUrlRef = useRef<Map<string, string>>(new Map())\n const sensors = useSensors(\n useSensor(PointerSensor, { activationConstraint: { distance: 6 } }),\n useSensor(KeyboardSensor, { coordinateGetter: sortableKeyboardCoordinates })\n )\n\n useEffect(() => {\n return () => {\n for (const controller of abortRef.current.values()) {\n try {\n controller.abort()\n } catch {\n //\n }\n }\n abortRef.current.clear()\n fileRef.current.clear()\n replacedIdRef.current.clear()\n\n for (const url of objectUrlRef.current.values()) {\n if (typeof URL !== \"undefined\") {\n try {\n URL.revokeObjectURL(url)\n } catch {\n //\n }\n }\n }\n objectUrlRef.current.clear()\n }\n }, [])\n\n useEffect(() => {\n if (typeof document === \"undefined\") return\n if (activeId) {\n document.body.style.cursor = \"grabbing\"\n return () => {\n document.body.style.cursor = \"\"\n }\n }\n document.body.style.cursor = \"\"\n }, [activeId])\n\n useEffect(() => {\n imagesRef.current = images\n }, [images])\n\n useEffect(() => {\n onChangeRef.current = onChange\n }, [onChange])\n\n useEffect(() => {\n onUploadingChangeRef.current = onUploadingChange\n }, [onUploadingChange])\n\n useEffect(() => {\n const previous = lastInitialImagesRef.current\n const samePropValue =\n previous.length === initialFiles.length &&\n previous.every((img, index) => {\n const next = initialFiles[index]\n return next && img.id === next.id && img.url === next.url && img.alt === next.alt\n })\n\n if (samePropValue) return\n lastInitialImagesRef.current = initialFiles\n\n const prepared: FileWithState[] = initialFiles.map((img) => ({\n ...img,\n previewUrl: img.url,\n status: \"uploaded\",\n progress: 100,\n }))\n\n const preparedRawIds = new Set(prepared.map((img) => img.id))\n for (const [tempId, finalId] of replacedIdRef.current.entries()) {\n if (preparedRawIds.has(finalId)) {\n replacedIdRef.current.delete(tempId)\n }\n }\n\n const currentIds = new Set(imagesRef.current.map((img) => img.id))\n const hasStaleInitialImages = prepared.some((img) => {\n const mapped = replacedIdRef.current.get(img.id)\n return mapped ? currentIds.has(mapped) : false\n })\n if (hasStaleInitialImages) return\n\n const preparedIds = new Set(prepared.map((img) => img.id))\n for (const img of imagesRef.current) {\n if (preparedIds.has(img.id)) continue\n\n const controller = abortRef.current.get(img.id)\n if (controller) {\n abortRef.current.delete(img.id)\n try {\n controller.abort()\n } catch {\n //\n }\n }\n\n fileRef.current.delete(img.id)\n\n const tempUrl = objectUrlRef.current.get(img.id)\n if (tempUrl) {\n objectUrlRef.current.delete(img.id)\n try {\n URL.revokeObjectURL(tempUrl)\n } catch {\n //\n }\n }\n }\n\n setImages((current) => {\n const sameLength = current.length === prepared.length\n const sameContent =\n sameLength &&\n current.every((item, index) => {\n const next = prepared[index]\n return next && item.id === next.id && item.url === next.url && item.alt === next.alt && item.uploadKey === next.uploadKey\n })\n\n if (sameContent) return current\n\n skipNotifyRef.current = true\n return prepared\n })\n }, [initialFiles])\n\n useEffect(() => {\n if (skipNotifyRef.current) {\n skipNotifyRef.current = false\n return\n }\n\n onChangeRef.current?.(images.map(({ id, url, alt, uploadKey }) => ({ id, url, alt, uploadKey })))\n }, [images])\n\n useEffect(() => {\n onUploadingChangeRef.current?.(images.some((img) => img.status === \"uploading\"))\n }, [images])\n\n useEffect(() => {\n if (fullscreenIndex === null) {\n return\n }\n\n const handleKey = (event: KeyboardEvent) => {\n if (event.key === \"Escape\") {\n setFullscreenIndex(null)\n return\n }\n\n if (event.key === \"ArrowRight\") {\n setFullscreenIndex((current) => {\n if (current === null) return current\n return (current + 1) % images.length\n })\n return\n }\n\n if (event.key === \"ArrowLeft\") {\n setFullscreenIndex((current) => {\n if (current === null) return current\n return (current - 1 + images.length) % images.length\n })\n }\n }\n\n window.addEventListener(\"keydown\", handleKey)\n return () => window.removeEventListener(\"keydown\", handleKey)\n }, [fullscreenIndex, images.length])\n\n const handleFiles = async (files: FileList | File[]) => {\n if (disabled) return\n const list = Array.from(files)\n\n const uploads = list.map((file) => {\n const previewUrl = toPreview(file)\n const tempId = crypto.randomUUID()\n\n objectUrlRef.current.set(tempId, previewUrl)\n fileRef.current.set(tempId, file)\n\n const next: FileWithState = {\n id: tempId,\n url: previewUrl,\n previewUrl,\n alt: file.name,\n status: \"uploading\",\n progress: 0,\n fileName: file.name,\n }\n\n setImages((current) => [...current, next])\n\n const updateProgress = (value: number) => {\n const nextValue = Math.max(0, Math.min(99, value))\n setImages((current) =>\n current.map((item) =>\n item.id === tempId ? { ...item, progress: nextValue, status: \"uploading\" } : item\n )\n )\n }\n\n const finalize = async () => {\n const controller = new AbortController()\n abortRef.current.set(tempId, controller)\n\n try {\n const result = await upload(file, updateProgress, { signal: controller.signal, isPublic: uploadIsPublic })\n replacedIdRef.current.set(tempId, result.id)\n\n const tempUrl = objectUrlRef.current.get(tempId)\n if (tempUrl) {\n objectUrlRef.current.delete(tempId)\n try {\n URL.revokeObjectURL(tempUrl)\n } catch {\n //\n }\n }\n\n abortRef.current.delete(tempId)\n fileRef.current.delete(tempId)\n\n setImages((current) =>\n current.map((item) =>\n item.id === tempId\n ? {\n ...item,\n ...result,\n previewUrl: result.url,\n url: result.url,\n status: \"uploaded\",\n progress: 100,\n }\n : item\n )\n )\n } catch (error) {\n abortRef.current.delete(tempId)\n if (controller.signal.aborted) {\n fileRef.current.delete(tempId)\n const tempUrl = objectUrlRef.current.get(tempId)\n if (tempUrl) {\n objectUrlRef.current.delete(tempId)\n try {\n URL.revokeObjectURL(tempUrl)\n } catch {\n //\n }\n }\n return\n }\n console.error(\"Upload failed\", error)\n setImages((current) =>\n current.map((item) =>\n item.id === tempId\n ? { ...item, status: \"error\", progress: Math.max(0, Math.min(99, item.progress)) }\n : item\n )\n )\n }\n }\n\n return finalize()\n })\n\n await Promise.allSettled(uploads)\n }\n\n const onFileInputChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n if (!event.target.files) return\n void handleFiles(event.target.files)\n event.target.value = \"\"\n }\n\n const openFileDialog = () => {\n if (disabled) return\n fileInputRef.current?.click()\n }\n\n const removeImage = (id: string) => {\n const controller = abortRef.current.get(id)\n if (controller) {\n abortRef.current.delete(id)\n try {\n controller.abort()\n } catch {\n //\n }\n }\n\n fileRef.current.delete(id)\n\n const tempUrl = objectUrlRef.current.get(id)\n if (tempUrl) {\n objectUrlRef.current.delete(id)\n try {\n URL.revokeObjectURL(tempUrl)\n } catch {\n //\n }\n }\n\n setImages((current) => current.filter((item) => item.id !== id))\n }\n\n const retryUpload = (id: string) => {\n if (disabled) return\n const file = fileRef.current.get(id)\n if (!file) return\n\n const existingController = abortRef.current.get(id)\n if (existingController) {\n try {\n existingController.abort()\n } catch {\n //\n }\n abortRef.current.delete(id)\n }\n\n setImages((current) =>\n current.map((item) => (item.id === id ? { ...item, status: \"uploading\", progress: 0 } : item))\n )\n\n const updateProgress = (value: number) => {\n const nextValue = Math.max(0, Math.min(99, value))\n setImages((current) =>\n current.map((item) => (item.id === id ? { ...item, progress: nextValue, status: \"uploading\" } : item))\n )\n }\n\n const controller = new AbortController()\n abortRef.current.set(id, controller)\n\n void (async () => {\n try {\n const result = await upload(file, updateProgress, { signal: controller.signal, isPublic: uploadIsPublic })\n replacedIdRef.current.set(id, result.id)\n\n const tempUrl = objectUrlRef.current.get(id)\n if (tempUrl) {\n objectUrlRef.current.delete(id)\n try {\n URL.revokeObjectURL(tempUrl)\n } catch {\n //\n }\n }\n\n abortRef.current.delete(id)\n fileRef.current.delete(id)\n\n setImages((current) =>\n current.map((item) =>\n item.id === id\n ? { ...item, ...result, previewUrl: result.url, url: result.url, status: \"uploaded\", progress: 100 }\n : item\n )\n )\n } catch (error) {\n abortRef.current.delete(id)\n if (controller.signal.aborted) return\n console.error(\"Retry failed\", error)\n setImages((current) => current.map((item) => (item.id === id ? { ...item, status: \"error\" } : item)))\n }\n })()\n }\n\n const startFullscreen = (id: string) => {\n const index = images.findIndex((item) => item.id === id)\n if (index !== -1) {\n setFullscreenIndex(index)\n }\n }\n\n const handleDragStart = (event: DragEndEvent) => {\n setActiveId(String(event.active.id))\n }\n\n const handleDragEnd = (event: DragEndEvent) => {\n const { active, over } = event\n if (!over) {\n setActiveId(null)\n return\n }\n\n const activeId = String(active.id)\n const overId = String(over.id)\n\n if (activeId !== overId) {\n setImages((current) => {\n const oldIndex = current.findIndex((item) => item.id === activeId)\n const newIndex = current.findIndex((item) => item.id === overId)\n if (oldIndex === -1 || newIndex === -1) return current\n return arrayMove(current, oldIndex, newIndex)\n })\n }\n\n setActiveId(null)\n }\n\n const handleDragCancel = () => {\n setActiveId(null)\n }\n\n const clearHoverTimeout = () => {\n if (hoverTimeoutRef.current !== null) {\n window.clearTimeout(hoverTimeoutRef.current)\n hoverTimeoutRef.current = null\n }\n }\n\n const fullscreenImage = useMemo(() => {\n if (fullscreenIndex === null) return null\n return images[fullscreenIndex] ?? null\n }, [fullscreenIndex, images])\n\n const containerClasses = cn(\n \"rounded-xl border border-dashed border-slate-300 bg-white/70 p-4 shadow-sm transition-colors dark:border-slate-700 dark:bg-slate-900/60\",\n dragActive && \"border-primary ring-2 ring-primary/50\",\n disabled && \"opacity-70\"\n )\n\n const tileBaseClasses = \"group relative size-20 overflow-visible rounded-lg border border-slate-200 bg-slate-50 shadow-inner transition hover:shadow md:size-24 dark:border-slate-700 dark:bg-slate-800\"\n\n const acceptAttr = useMemo(() => {\n if (!accept) return undefined\n if (Array.isArray(accept)) return accept.join(\",\")\n return accept\n }, [accept])\n\n const enableImagePreview = useMemo(() => {\n if (renderItem) return false\n if (!acceptAttr) return false\n const tokens = acceptAttr.split(\",\").map((value) => value.trim()).filter(Boolean)\n if (!tokens.length) return false\n return tokens.every((token) => token === \"image/*\" || token.startsWith(\"image/\"))\n }, [acceptAttr, renderItem])\n\n const toRenderItemProps = (item: FileWithState): FilesUploadFieldRenderItemProps => ({\n file: { id: item.id, url: item.url, alt: item.alt, uploadKey: item.uploadKey },\n previewUrl: item.previewUrl,\n status: item.status,\n progress: item.progress,\n fileName: item.fileName,\n })\n\n const dragOverlayContent = activeId\n ? (() => {\n const activeItem = images.find((item) => item.id === activeId)\n if (!activeItem) return null\n\n if (renderItem) {\n const rendered = renderItem(toRenderItemProps(activeItem))\n if (rendered === null || rendered === undefined || rendered === false) return null\n return (\n <div className=\"pointer-events-none\">\n <div className=\"h-24 w-24 overflow-hidden rounded-lg shadow-2xl\">{rendered}</div>\n </div>\n )\n }\n\n if (!enableImagePreview) return null\n return (\n <div className=\"pointer-events-none\">\n <img\n src={activeItem.previewUrl}\n alt={activeItem.alt ?? \"Dragged image\"}\n className=\"h-24 w-24 rounded-lg object-cover shadow-2xl\"\n />\n </div>\n )\n })()\n : null\n\n const hideActiveTile = dragOverlayContent !== null && dragOverlayContent !== undefined\n\n return (\n <div\n onDragOver={(event) => {\n event.preventDefault()\n if (!disabled) {\n setDragActive(true)\n }\n }}\n onDragLeave={() => setDragActive(false)}\n onDrop={(event) => {\n event.preventDefault()\n setDragActive(false)\n if (event.dataTransfer.files?.length) {\n void handleFiles(event.dataTransfer.files)\n }\n }}\n className={containerClasses}\n >\n {renderHeader ? <div className=\"mb-3\">{renderHeader()}</div> : null}\n\n <DndContext\n sensors={disabled ? undefined : sensors}\n collisionDetection={closestCenter}\n onDragStart={handleDragStart}\n onDragEnd={handleDragEnd}\n onDragCancel={handleDragCancel}\n >\n <SortableContext items={images.map((item) => item.id)} strategy={rectSortingStrategy}>\n <div className=\"flex flex-wrap gap-3\">\n {images.map((item) => {\n const isUploading = item.status === \"uploading\"\n const isError = item.status === \"error\"\n\n return (\n <SortableTile\n key={item.id}\n item={item}\n isHovered={hoveredId === item.id}\n enableImagePreview={enableImagePreview}\n renderItem={renderItem}\n onHoverEnter={() => {\n clearHoverTimeout()\n setHoveredId(item.id)\n }}\n onHoverLeave={() => {\n clearHoverTimeout()\n hoverTimeoutRef.current = window.setTimeout(() => {\n setHoveredId((current) => (current === item.id ? null : current))\n hoverTimeoutRef.current = null\n }, 120)\n }}\n onRemove={removeImage}\n onRetry={retryUpload}\n startFullscreen={startFullscreen}\n isUploading={isUploading}\n isError={isError}\n tileClasses={tileBaseClasses}\n disabled={disabled}\n isDraggingExternal={hideActiveTile && activeId === item.id}\n removeButtonAriaLabel={removeButtonAriaLabel}\n />\n )\n })}\n\n <button\n type=\"button\"\n onClick={openFileDialog}\n disabled={disabled}\n className={cn(\n tileBaseClasses,\n \"flex items-center justify-center border-dashed bg-white text-slate-500 hover:border-slate-300 dark:bg-slate-900\"\n )}\n aria-label={addButtonAriaLabel}\n >\n <div className=\"flex flex-col items-center gap-1\">\n <div className=\"flex size-9 items-center justify-center rounded-full border border-slate-300 bg-slate-100 text-slate-600 shadow-inner dark:border-slate-700 dark:bg-slate-800 dark:text-slate-200\">\n <Plus className=\"h-5 w-5\" />\n </div>\n <span className=\"text-xs font-medium\">Ajouter</span>\n </div>\n </button>\n </div>\n </SortableContext>\n {(() => {\n const overlay = <DragOverlay>{dragOverlayContent}</DragOverlay>\n\n if (typeof document === \"undefined\") return overlay\n return createPortal(overlay, document.body)\n })()}\n </DndContext>\n\n <input\n ref={fileInputRef}\n type=\"file\"\n accept={acceptAttr}\n multiple\n className=\"hidden\"\n onChange={onFileInputChange}\n aria-hidden\n />\n\n {enableImagePreview && fullscreenImage && (\n <div className=\"fixed inset-0 z-50 flex items-center justify-center bg-black/90\">\n <button\n type=\"button\"\n className=\"absolute left-6 top-1/2 -translate-y-1/2 rounded-full bg-white/10 p-3 text-white shadow-lg transition hover:bg-white/20 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-white\"\n onClick={() =>\n setFullscreenIndex((current) => {\n if (current === null) return current\n return (current - 1 + images.length) % images.length\n })\n }\n aria-label=\"Précédent\"\n >\n <svg viewBox=\"0 0 24 24\" className=\"h-6 w-6\" stroke=\"currentColor\" strokeWidth={2} fill=\"none\">\n <path d=\"M15 18l-6-6 6-6\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n </button>\n <div className=\"relative max-h-[80vh] max-w-4xl\">\n <img\n src={fullscreenImage.url}\n alt={fullscreenImage.alt ?? \"Fullscreen\"}\n className=\"max-h-[80vh] max-w-full rounded-lg object-contain shadow-2xl\"\n />\n <button\n type=\"button\"\n className=\"absolute right-3 top-3 inline-flex size-9 items-center justify-center rounded-full bg-black/70 text-white transition hover:bg-black focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-white\"\n onClick={() => setFullscreenIndex(null)}\n aria-label=\"Fermer\"\n >\n <X className=\"h-5 w-5\" />\n </button>\n </div>\n <button\n type=\"button\"\n className=\"absolute right-6 top-1/2 -translate-y-1/2 rounded-full bg-white/10 p-3 text-white shadow-lg transition hover:bg-white/20 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-white\"\n onClick={() =>\n setFullscreenIndex((current) => {\n if (current === null) return current\n return (current + 1) % images.length\n })\n }\n aria-label=\"Suivant\"\n >\n <svg viewBox=\"0 0 24 24\" className=\"h-6 w-6\" stroke=\"currentColor\" strokeWidth={2} fill=\"none\">\n <path d=\"M9 6l6 6-6 6\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n </button>\n </div>\n )}\n </div>\n )\n}\n"],"names":["TENANT_ID_QUERY_PARAM","sha256Hex","data","crypto","subtle","digest","Array","from","Uint8Array","map","b","toString","padStart","join","readTenantIdFromLocation","window","normalized","URLSearchParams","location","search","get","trim","withTenant","path","tenantId","sep","includes","encodeURIComponent","postJson","url","body","options","response","fetch","method","headers","credentials","JSON","stringify","signal","payload","json","catch","ok","status","getJson","putOctetStream","sha256","uploadKey","defaultUpload","file","onProgress","initRes","filename","name","mimeType","type","isPublic","totalSize","size","Error","error","uploadId","String","chunkSize","Number","chunksTotal","doUploadChunk","index","start","end","Math","min","slice","arrayBuffer","sha","res","undefined","uploadChunks","indices","alreadyUploaded","uploaded","idx","pct","floor","allIndices","length","_","i","complete","completeRes","fileId","code","statusRes","received","isArray","present","Set","missing","has","push","id","alt","SortableTile","t0","$","_c","item","isHovered","enableImagePreview","renderItem","onHoverEnter","onHoverLeave","onRemove","onRetry","startFullscreen","isUploading","isError","tileClasses","disabled","isDraggingExternal","removeButtonAriaLabel","t1","setNodeRef","attributes","listeners","transform","transition","isDragging","useSortable","tileRef","useRef","previewRef","previewPosition","setPreviewPosition","useState","t2","Symbol","for","el","current","rect","getBoundingClientRect","left","width","top","updatePreviewPosition","t3","t4","raf","schedule","cancelAnimationFrame","requestAnimationFrame","addEventListener","removeEventListener","useEffect","t5","CSS","Transform","t6","style","t7","fileName","previewUrl","progress","jsx","cn","tileContent","t8","node","t9","t10","t11","t12","t13","t14","t15","t16","event","next","relatedTarget","Node","contains","t17","t18","X","t19","t20","preview","DismissableLayerBranch","event_0","next_0","jsxs","Maximize2","document","createPortal","t21","Loader2","t22","t23","toPreview","URL","createObjectURL","FilesUploadField","initialFiles","onChange","upload","uploadIsPublic","onUploadingChange","accept","renderHeader","addButtonAriaLabel","fileInputRef","_temp","images","setImages","dragActive","setDragActive","fullscreenIndex","setFullscreenIndex","hoveredId","setHoveredId","activeId","setActiveId","hoverTimeoutRef","skipNotifyRef","imagesRef","lastInitialImagesRef","onChangeRef","onUploadingChangeRef","Map","replacedIdRef","fileRef","abortRef","objectUrlRef","activationConstraint","distance","coordinateGetter","sortableKeyboardCoordinates","sensors","useSensors","useSensor","PointerSensor","KeyboardSensor","controller","values","abort","clear","revokeObjectURL","cursor","_temp2","t24","t25","t26","t27","previous","every","img","prepared","_temp3","preparedRawIds","_temp4","tempId","finalId","entries","delete","currentIds","_temp5","some","img_3","mapped","preparedIds","_temp6","img_5","controller_0","tempUrl","index_0","t28","t29","_temp7","t30","t31","_temp8","t32","t33","handleKey","key","current_0","current_1","t34","files","uploads","file_0","tempId_0","randomUUID","set","next_1","current_2","updateProgress","value","nextValue","max","current_3","item_0","controller_1","AbortController","result","tempUrl_1","current_5","item_2","t35","aborted","tempUrl_0","console","current_4","item_1","finalize","Promise","allSettled","handleFiles","target","onFileInputChange","t36","click","openFileDialog","t37","id_0","controller_2","tempUrl_2","current_6","filter","item_3","removeImage","t38","id_1","file_1","existingController","current_7","item_4","updateProgress_0","value_0","nextValue_0","current_8","item_5","controller_3","result_0","tempUrl_3","current_10","item_7","t39","current_9","item_6","retryUpload","id_2","index_1","findIndex","item_8","t40","event_1","active","handleDragStart","t41","event_2","over","activeId_0","overId","current_11","oldIndex","item_9","newIndex","item_10","arrayMove","handleDragEnd","t42","handleDragCancel","t43","clearTimeout","clearHoverTimeout","t44","bb0","fullscreenImage","t45","t46","t47","containerClasses","t48","bb1","t49","acceptAttr","bb2","tokens","split","_temp9","Boolean","_temp0","toRenderItemProps","_temp1","t50","activeItem","find","item_12","rendered","dragOverlayContent","hideActiveTile","t51","event_3","preventDefault","t52","t53","event_4","dataTransfer","t54","t55","t56","_temp10","t57","item_14","setTimeout","current_12","tileBaseClasses","t58","t59","Plus","t60","t61","t62","SortableContext","rectSortingStrategy","t63","bb3","t64","DragOverlay","overlay","t65","DndContext","closestCenter","t66","current_13","current_14","t67","item_13","item_11","token","startsWith","value_1","img_6","url_0","img_4","img_2","img_1","img_0"],"mappings":"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"}
1
+ {"version":3,"file":"index8.js","sources":["../src/components/FilesUploadField/index.tsx"],"sourcesContent":["import { useEffect, useMemo, useRef, useState, type ReactNode } from \"react\"\nimport { createPortal } from \"react-dom\"\nimport { DismissableLayerBranch } from \"@radix-ui/react-dismissable-layer\"\nimport type { DragEndEvent } from \"@dnd-kit/core\"\nimport { DndContext, DragOverlay, KeyboardSensor, PointerSensor, closestCenter, useSensor, useSensors } from \"@dnd-kit/core\"\nimport {\n SortableContext,\n arrayMove,\n rectSortingStrategy,\n sortableKeyboardCoordinates,\n useSortable,\n} from \"@dnd-kit/sortable\"\nimport { CSS } from \"@dnd-kit/utilities\"\nimport { Loader2, Maximize2, Plus, X } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\n\nexport type FilesUploadFieldFile = {\n id: string\n url: string\n alt?: string\n uploadKey?: string\n}\n\ntype FileUploadsInitResponse = {\n ok: boolean\n error?: string\n uploadId?: string\n uploadKey?: string\n chunkSize?: number\n chunksTotal?: number\n}\n\ntype FileUploadsStatusResponse = {\n ok: boolean\n error?: string\n status?: \"uploading\" | \"assembling\" | \"done\" | \"error\"\n chunkSize?: number\n chunksTotal?: number\n received?: number[]\n fileId?: string\n}\n\ntype FileUploadsCompleteResponse = {\n ok: boolean\n error?: string\n fileId?: string\n}\n\nconst sha256Hex = async (data: ArrayBuffer): Promise<string | null> => {\n if (typeof crypto === \"undefined\" || typeof crypto.subtle === \"undefined\") return null\n try {\n const digest = await crypto.subtle.digest(\"SHA-256\", data)\n const bytes = Array.from(new Uint8Array(digest))\n return bytes.map((b) => b.toString(16).padStart(2, \"0\")).join(\"\")\n } catch {\n return null\n }\n}\n\nconst postJson = async <T,>(\n url: string,\n body: unknown,\n options?: { headers?: Record<string, string>; signal?: AbortSignal },\n): Promise<{ ok: boolean; status: number; data: T }> => {\n const response = await fetch(url, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\", ...(options?.headers ?? {}) },\n credentials: \"include\",\n body: JSON.stringify(body),\n signal: options?.signal,\n })\n\n const payload = await response.json().catch(() => ({}))\n return { ok: response.ok, status: response.status, data: payload as T }\n}\n\nconst getJson = async <T,>(\n url: string,\n options?: { headers?: Record<string, string>; signal?: AbortSignal },\n): Promise<{ ok: boolean; status: number; data: T }> => {\n const response = await fetch(url, {\n credentials: \"include\",\n headers: options?.headers,\n signal: options?.signal,\n })\n const payload = await response.json().catch(() => ({}))\n return { ok: response.ok, status: response.status, data: payload as T }\n}\n\nconst putOctetStream = async ({\n url,\n body,\n sha256,\n uploadKey,\n signal,\n}: {\n url: string\n body: ArrayBuffer\n sha256?: string\n uploadKey?: string\n signal?: AbortSignal\n}): Promise<{ ok: boolean; status: number }> => {\n const headers: Record<string, string> = {\n \"Content-Type\": \"application/octet-stream\",\n }\n if (sha256) headers[\"X-Chunk-SHA256\"] = sha256\n if (uploadKey) headers[\"X-Upload-Key\"] = uploadKey\n\n const response = await fetch(url, {\n method: \"PUT\",\n credentials: \"include\",\n headers,\n body,\n signal,\n })\n\n return { ok: response.ok, status: response.status }\n}\n\nconst defaultUpload: UploadHandler = async (file, onProgress, options) => {\n const initRes = await postJson<FileUploadsInitResponse>(\n \"/api/rb/file-uploads\",\n {\n filename: file.name,\n mimeType: file.type || \"application/octet-stream\",\n ...(typeof options?.isPublic === \"boolean\" ? { isPublic: options.isPublic } : {}),\n totalSize: file.size,\n },\n { signal: options?.signal },\n )\n\n if (!initRes.ok || !(initRes.data as any)?.ok) {\n throw new Error((initRes.data as any)?.error ?? `Init failed (${initRes.status})`)\n }\n\n const uploadId = String((initRes.data as any)?.uploadId ?? \"\")\n const uploadKey = typeof (initRes.data as any)?.uploadKey === \"string\" ? String((initRes.data as any).uploadKey) : null\n const chunkSize = Number((initRes.data as any)?.chunkSize ?? 0)\n const chunksTotal = Number((initRes.data as any)?.chunksTotal ?? 0)\n\n if (!uploadId || !chunkSize || !chunksTotal) {\n throw new Error(\"Upload init missing required fields\")\n }\n\n const doUploadChunk = async (index: number) => {\n const start = index * chunkSize\n const end = Math.min(file.size, start + chunkSize)\n const slice = file.slice(start, end)\n const body = await slice.arrayBuffer()\n const sha = await sha256Hex(body)\n\n const res = await putOctetStream({\n url: `/api/rb/file-uploads/${encodeURIComponent(uploadId)}/chunks/${index}`,\n body,\n sha256: sha ?? undefined,\n uploadKey: uploadKey ?? undefined,\n signal: options?.signal,\n })\n\n if (res.status === 204) return\n throw new Error(`Chunk ${index} failed (${res.status})`)\n }\n\n const uploadChunks = async (indices: number[], alreadyUploaded = 0) => {\n let uploaded = alreadyUploaded\n\n for (const idx of indices) {\n await doUploadChunk(idx)\n uploaded += 1\n const pct = Math.min(99, Math.floor((uploaded / chunksTotal) * 99))\n onProgress(pct)\n }\n }\n\n const allIndices = Array.from({ length: chunksTotal }, (_, i) => i)\n await uploadChunks(allIndices, 0)\n\n const complete = async (): Promise<string> => {\n const completeRes = await postJson<FileUploadsCompleteResponse>(\n `/api/rb/file-uploads/${encodeURIComponent(uploadId)}/complete`,\n {},\n { headers: uploadKey ? { \"X-Upload-Key\": uploadKey } : undefined, signal: options?.signal },\n )\n\n if (completeRes.ok && (completeRes.data as any)?.ok) {\n const fileId = String((completeRes.data as any)?.fileId ?? \"\")\n if (!fileId) throw new Error(\"Upload completed without fileId\")\n return fileId\n }\n\n const code = String((completeRes.data as any)?.error ?? \"\")\n if (completeRes.status !== 409 || code !== \"missing_chunks\") {\n throw new Error(code || `Complete failed (${completeRes.status})`)\n }\n\n const statusRes = await getJson<FileUploadsStatusResponse>(\n `/api/rb/file-uploads/${encodeURIComponent(uploadId)}/status`,\n { headers: uploadKey ? { \"X-Upload-Key\": uploadKey } : undefined, signal: options?.signal },\n )\n\n if (!statusRes.ok || !(statusRes.data as any)?.ok) {\n throw new Error((statusRes.data as any)?.error ?? `Status failed (${statusRes.status})`)\n }\n\n const received = Array.isArray((statusRes.data as any)?.received) ? (statusRes.data as any).received : []\n const present = new Set<number>(received)\n const missing: number[] = []\n for (let i = 0; i < chunksTotal; i += 1) {\n if (!present.has(i)) missing.push(i)\n }\n\n if (!missing.length) {\n throw new Error(\"missing_chunks\")\n }\n\n await uploadChunks(missing, present.size)\n return complete()\n }\n\n const fileId = await complete()\n\n onProgress(100)\n return {\n id: fileId,\n url: `/api/rb/files/${encodeURIComponent(fileId)}`,\n alt: file.name,\n ...(uploadKey ? { uploadKey } : {}),\n }\n}\n\nfunction SortableTile({\n item,\n isHovered,\n enableImagePreview,\n renderItem,\n onHoverEnter,\n onHoverLeave,\n onRemove,\n onRetry,\n startFullscreen,\n isUploading,\n isError,\n tileClasses,\n disabled,\n isDraggingExternal,\n removeButtonAriaLabel,\n}: {\n item: FileWithState\n isHovered: boolean\n enableImagePreview: boolean\n renderItem?: (props: FilesUploadFieldRenderItemProps) => ReactNode\n onHoverEnter: () => void\n onHoverLeave: () => void\n onRemove: (id: string) => void\n onRetry: (id: string) => void\n startFullscreen: (id: string) => void\n isUploading: boolean\n isError: boolean\n tileClasses: string\n disabled: boolean\n isDraggingExternal: boolean\n removeButtonAriaLabel: string\n}) {\n const { setNodeRef, attributes, listeners, transform, transition, isDragging } = useSortable({\n id: item.id,\n disabled,\n })\n\n const tileRef = useRef<HTMLDivElement | null>(null)\n const previewRef = useRef<HTMLDivElement | null>(null)\n const [previewPosition, setPreviewPosition] = useState<{ left: number; top: number } | null>(null)\n\n const updatePreviewPosition = () => {\n const el = tileRef.current\n if (!el) return\n const rect = el.getBoundingClientRect()\n setPreviewPosition({ left: rect.left + rect.width / 2, top: rect.top - 10 })\n }\n\n useEffect(() => {\n if (!enableImagePreview || !isHovered) {\n setPreviewPosition(null)\n return\n }\n\n updatePreviewPosition()\n\n let raf = 0\n const schedule = () => {\n if (raf) cancelAnimationFrame(raf)\n raf = requestAnimationFrame(() => {\n raf = 0\n updatePreviewPosition()\n })\n }\n\n window.addEventListener(\"resize\", schedule)\n window.addEventListener(\"scroll\", schedule, true)\n return () => {\n if (raf) cancelAnimationFrame(raf)\n window.removeEventListener(\"resize\", schedule)\n window.removeEventListener(\"scroll\", schedule, true)\n }\n }, [enableImagePreview, isHovered])\n\n const style = {\n transform: CSS.Transform.toString(transform),\n transition,\n }\n\n const tileContent = renderItem\n ? renderItem({\n file: { id: item.id, url: item.url, alt: item.alt, uploadKey: item.uploadKey },\n previewUrl: item.previewUrl,\n status: item.status,\n progress: item.progress,\n fileName: item.fileName,\n })\n : enableImagePreview\n ? (\n <img\n src={item.previewUrl}\n alt={item.alt ?? \"Uploaded file\"}\n className={cn(\n \"size-full rounded-md object-cover\",\n isUploading && \"opacity-75\",\n isError && \"grayscale\"\n )}\n />\n )\n : (\n <div className=\"flex size-full items-center justify-center rounded-md bg-slate-100 px-2 text-center text-[10px] font-medium text-slate-700 dark:bg-slate-800 dark:text-slate-200\">\n <span className=\"w-full truncate\">{item.fileName ?? item.alt ?? \"Fichier\"}</span>\n </div>\n )\n\n return (\n <div\n ref={(node) => {\n tileRef.current = node\n setNodeRef(node)\n }}\n style={style}\n className={cn(\n tileClasses,\n isDragging && \"z-20 ring-2 ring-primary shadow-xl\",\n isDraggingExternal && \"opacity-0\",\n !disabled && \"cursor-grab active:cursor-grabbing\",\n isDragging && \"cursor-grabbing\",\n disabled && \"cursor-default\"\n )}\n onMouseEnter={() => {\n updatePreviewPosition()\n onHoverEnter()\n }}\n onMouseLeave={(event) => {\n const next = event.relatedTarget\n if (next instanceof Node && previewRef.current?.contains(next)) return\n onHoverLeave()\n }}\n {...attributes}\n {...listeners}\n >\n {tileContent}\n\n <button\n type=\"button\"\n onClick={() => {\n if (disabled) return\n onRemove(item.id)\n }}\n disabled={disabled}\n className=\"absolute right-1 top-1 inline-flex size-6 items-center justify-center rounded-full bg-white text-slate-700 shadow-sm transition hover:scale-105 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary dark:bg-slate-900 dark:text-slate-200\"\n aria-label={removeButtonAriaLabel}\n >\n <X className=\"h-4 w-4\" />\n </button>\n\n {enableImagePreview &&\n isHovered &&\n previewPosition &&\n (() => {\n const preview = (\n <DismissableLayerBranch>\n <div\n ref={previewRef}\n className=\"pointer-events-auto fixed z-[60] w-52 -translate-x-1/2 -translate-y-full rounded-xl border border-slate-200 bg-white/95 p-3 shadow-2xl backdrop-blur dark:border-slate-700 dark:bg-slate-900/95\"\n style={{ left: previewPosition.left, top: previewPosition.top }}\n onMouseEnter={() => {\n updatePreviewPosition()\n onHoverEnter()\n }}\n onMouseLeave={(event) => {\n const next = event.relatedTarget\n if (next instanceof Node && tileRef.current?.contains(next)) return\n onHoverLeave()\n }}\n >\n <div className=\"relative overflow-hidden rounded-lg\">\n <img src={item.url} alt={item.alt ?? \"Preview\"} className=\"h-40 w-full object-cover\" />\n <button\n type=\"button\"\n onClick={() => startFullscreen(item.id)}\n className=\"absolute right-2 top-2 inline-flex items-center justify-center rounded-full bg-black/70 p-2 text-white transition hover:bg-black\"\n aria-label=\"Plein écran\"\n >\n <Maximize2 className=\"h-3.5 w-3.5\" />\n </button>\n </div>\n </div>\n </DismissableLayerBranch>\n )\n\n if (typeof document === \"undefined\") return preview\n return createPortal(preview, document.body)\n })()}\n\n {isUploading && (\n <div className=\"absolute inset-0 z-20 flex flex-col items-center justify-center gap-2 rounded-lg bg-black/40 text-white\">\n <Loader2 className=\"h-5 w-5 animate-spin\" />\n <div className=\"h-1.5 w-5/6 rounded-full bg-white/20\">\n <div className=\"h-full rounded-full bg-primary\" style={{ width: `${item.progress}%` }} />\n </div>\n <div className=\"text-xs font-semibold\">{item.progress}%</div>\n </div>\n )}\n\n {isError && (\n <div className=\"absolute inset-0 z-10 flex flex-col items-center justify-center gap-2 rounded-lg bg-red-600/70 text-white\">\n <div className=\"text-xs font-semibold\">Échec</div>\n <button\n type=\"button\"\n onClick={() => onRetry(item.id)}\n disabled={disabled}\n className=\"rounded-full bg-white/90 px-3 py-1 text-xs font-semibold text-red-700 shadow-sm transition hover:bg-white focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-white\"\n >\n Réessayer\n </button>\n </div>\n )}\n </div>\n )\n}\n\ntype UploadResult = FilesUploadFieldFile | Promise<FilesUploadFieldFile>\n\ntype UploadHandler = (\n file: File,\n onProgress: (progress: number) => void,\n options?: { signal?: AbortSignal; isPublic?: boolean },\n) => UploadResult\n\nexport type FilesUploadFieldRenderItemProps = {\n file: FilesUploadFieldFile\n previewUrl: string\n status: \"uploaded\" | \"uploading\" | \"error\"\n progress: number\n fileName?: string\n}\n\nexport type FilesUploadFieldProps = {\n initialFiles?: FilesUploadFieldFile[]\n onChange?: (files: FilesUploadFieldFile[]) => void\n upload?: UploadHandler\n uploadIsPublic?: boolean\n disabled?: boolean\n onUploadingChange?: (isUploading: boolean) => void\n accept?: string | string[]\n renderHeader?: () => ReactNode\n renderItem?: (props: FilesUploadFieldRenderItemProps) => ReactNode\n addButtonAriaLabel?: string\n removeButtonAriaLabel?: string\n}\n\ntype FileWithState = FilesUploadFieldFile & {\n previewUrl: string\n status: \"uploaded\" | \"uploading\" | \"error\"\n progress: number\n fileName?: string\n}\n\nfunction toPreview(file: File) {\n return URL.createObjectURL(file)\n}\n\nexport function FilesUploadField({\n initialFiles = [],\n onChange,\n upload = defaultUpload,\n uploadIsPublic = false,\n disabled = false,\n onUploadingChange,\n accept,\n renderHeader,\n renderItem,\n addButtonAriaLabel = \"Ajouter un fichier\",\n removeButtonAriaLabel = \"Supprimer le fichier\",\n}: FilesUploadFieldProps) {\n const fileInputRef = useRef<HTMLInputElement>(null)\n const [images, setImages] = useState<FileWithState[]>(() =>\n initialFiles.map((file) => ({ ...file, previewUrl: file.url, status: \"uploaded\", progress: 100 }))\n )\n const [dragActive, setDragActive] = useState(false)\n const [fullscreenIndex, setFullscreenIndex] = useState<number | null>(null)\n const [hoveredId, setHoveredId] = useState<string | null>(null)\n const [activeId, setActiveId] = useState<string | null>(null)\n const hoverTimeoutRef = useRef<number | null>(null)\n const skipNotifyRef = useRef(true)\n const imagesRef = useRef<FileWithState[]>([])\n const lastInitialImagesRef = useRef<FilesUploadFieldFile[]>(initialFiles)\n const onChangeRef = useRef(onChange)\n const onUploadingChangeRef = useRef(onUploadingChange)\n const replacedIdRef = useRef<Map<string, string>>(new Map())\n const fileRef = useRef<Map<string, File>>(new Map())\n const abortRef = useRef<Map<string, AbortController>>(new Map())\n const objectUrlRef = useRef<Map<string, string>>(new Map())\n const sensors = useSensors(\n useSensor(PointerSensor, { activationConstraint: { distance: 6 } }),\n useSensor(KeyboardSensor, { coordinateGetter: sortableKeyboardCoordinates })\n )\n\n useEffect(() => {\n return () => {\n for (const controller of abortRef.current.values()) {\n try {\n controller.abort()\n } catch {\n //\n }\n }\n abortRef.current.clear()\n fileRef.current.clear()\n replacedIdRef.current.clear()\n\n for (const url of objectUrlRef.current.values()) {\n if (typeof URL !== \"undefined\") {\n try {\n URL.revokeObjectURL(url)\n } catch {\n //\n }\n }\n }\n objectUrlRef.current.clear()\n }\n }, [])\n\n useEffect(() => {\n if (typeof document === \"undefined\") return\n if (activeId) {\n document.body.style.cursor = \"grabbing\"\n return () => {\n document.body.style.cursor = \"\"\n }\n }\n document.body.style.cursor = \"\"\n }, [activeId])\n\n useEffect(() => {\n imagesRef.current = images\n }, [images])\n\n useEffect(() => {\n onChangeRef.current = onChange\n }, [onChange])\n\n useEffect(() => {\n onUploadingChangeRef.current = onUploadingChange\n }, [onUploadingChange])\n\n useEffect(() => {\n const previous = lastInitialImagesRef.current\n const samePropValue =\n previous.length === initialFiles.length &&\n previous.every((img, index) => {\n const next = initialFiles[index]\n return next && img.id === next.id && img.url === next.url && img.alt === next.alt\n })\n\n if (samePropValue) return\n lastInitialImagesRef.current = initialFiles\n\n const prepared: FileWithState[] = initialFiles.map((img) => ({\n ...img,\n previewUrl: img.url,\n status: \"uploaded\",\n progress: 100,\n }))\n\n const preparedRawIds = new Set(prepared.map((img) => img.id))\n for (const [tempId, finalId] of replacedIdRef.current.entries()) {\n if (preparedRawIds.has(finalId)) {\n replacedIdRef.current.delete(tempId)\n }\n }\n\n const currentIds = new Set(imagesRef.current.map((img) => img.id))\n const hasStaleInitialImages = prepared.some((img) => {\n const mapped = replacedIdRef.current.get(img.id)\n return mapped ? currentIds.has(mapped) : false\n })\n if (hasStaleInitialImages) return\n\n const preparedIds = new Set(prepared.map((img) => img.id))\n for (const img of imagesRef.current) {\n if (preparedIds.has(img.id)) continue\n\n const controller = abortRef.current.get(img.id)\n if (controller) {\n abortRef.current.delete(img.id)\n try {\n controller.abort()\n } catch {\n //\n }\n }\n\n fileRef.current.delete(img.id)\n\n const tempUrl = objectUrlRef.current.get(img.id)\n if (tempUrl) {\n objectUrlRef.current.delete(img.id)\n try {\n URL.revokeObjectURL(tempUrl)\n } catch {\n //\n }\n }\n }\n\n setImages((current) => {\n const sameLength = current.length === prepared.length\n const sameContent =\n sameLength &&\n current.every((item, index) => {\n const next = prepared[index]\n return next && item.id === next.id && item.url === next.url && item.alt === next.alt && item.uploadKey === next.uploadKey\n })\n\n if (sameContent) return current\n\n skipNotifyRef.current = true\n return prepared\n })\n }, [initialFiles])\n\n useEffect(() => {\n if (skipNotifyRef.current) {\n skipNotifyRef.current = false\n return\n }\n\n onChangeRef.current?.(images.map(({ id, url, alt, uploadKey }) => ({ id, url, alt, uploadKey })))\n }, [images])\n\n useEffect(() => {\n onUploadingChangeRef.current?.(images.some((img) => img.status === \"uploading\"))\n }, [images])\n\n useEffect(() => {\n if (fullscreenIndex === null) {\n return\n }\n\n const handleKey = (event: KeyboardEvent) => {\n if (event.key === \"Escape\") {\n setFullscreenIndex(null)\n return\n }\n\n if (event.key === \"ArrowRight\") {\n setFullscreenIndex((current) => {\n if (current === null) return current\n return (current + 1) % images.length\n })\n return\n }\n\n if (event.key === \"ArrowLeft\") {\n setFullscreenIndex((current) => {\n if (current === null) return current\n return (current - 1 + images.length) % images.length\n })\n }\n }\n\n window.addEventListener(\"keydown\", handleKey)\n return () => window.removeEventListener(\"keydown\", handleKey)\n }, [fullscreenIndex, images.length])\n\n const handleFiles = async (files: FileList | File[]) => {\n if (disabled) return\n const list = Array.from(files)\n\n const uploads = list.map((file) => {\n const previewUrl = toPreview(file)\n const tempId = crypto.randomUUID()\n\n objectUrlRef.current.set(tempId, previewUrl)\n fileRef.current.set(tempId, file)\n\n const next: FileWithState = {\n id: tempId,\n url: previewUrl,\n previewUrl,\n alt: file.name,\n status: \"uploading\",\n progress: 0,\n fileName: file.name,\n }\n\n setImages((current) => [...current, next])\n\n const updateProgress = (value: number) => {\n const nextValue = Math.max(0, Math.min(99, value))\n setImages((current) =>\n current.map((item) =>\n item.id === tempId ? { ...item, progress: nextValue, status: \"uploading\" } : item\n )\n )\n }\n\n const finalize = async () => {\n const controller = new AbortController()\n abortRef.current.set(tempId, controller)\n\n try {\n const result = await upload(file, updateProgress, { signal: controller.signal, isPublic: uploadIsPublic })\n replacedIdRef.current.set(tempId, result.id)\n\n const tempUrl = objectUrlRef.current.get(tempId)\n if (tempUrl) {\n objectUrlRef.current.delete(tempId)\n try {\n URL.revokeObjectURL(tempUrl)\n } catch {\n //\n }\n }\n\n abortRef.current.delete(tempId)\n fileRef.current.delete(tempId)\n\n setImages((current) =>\n current.map((item) =>\n item.id === tempId\n ? {\n ...item,\n ...result,\n previewUrl: result.url,\n url: result.url,\n status: \"uploaded\",\n progress: 100,\n }\n : item\n )\n )\n } catch (error) {\n abortRef.current.delete(tempId)\n if (controller.signal.aborted) {\n fileRef.current.delete(tempId)\n const tempUrl = objectUrlRef.current.get(tempId)\n if (tempUrl) {\n objectUrlRef.current.delete(tempId)\n try {\n URL.revokeObjectURL(tempUrl)\n } catch {\n //\n }\n }\n return\n }\n console.error(\"Upload failed\", error)\n setImages((current) =>\n current.map((item) =>\n item.id === tempId\n ? { ...item, status: \"error\", progress: Math.max(0, Math.min(99, item.progress)) }\n : item\n )\n )\n }\n }\n\n return finalize()\n })\n\n await Promise.allSettled(uploads)\n }\n\n const onFileInputChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n if (!event.target.files) return\n void handleFiles(event.target.files)\n event.target.value = \"\"\n }\n\n const openFileDialog = () => {\n if (disabled) return\n fileInputRef.current?.click()\n }\n\n const removeImage = (id: string) => {\n const controller = abortRef.current.get(id)\n if (controller) {\n abortRef.current.delete(id)\n try {\n controller.abort()\n } catch {\n //\n }\n }\n\n fileRef.current.delete(id)\n\n const tempUrl = objectUrlRef.current.get(id)\n if (tempUrl) {\n objectUrlRef.current.delete(id)\n try {\n URL.revokeObjectURL(tempUrl)\n } catch {\n //\n }\n }\n\n setImages((current) => current.filter((item) => item.id !== id))\n }\n\n const retryUpload = (id: string) => {\n if (disabled) return\n const file = fileRef.current.get(id)\n if (!file) return\n\n const existingController = abortRef.current.get(id)\n if (existingController) {\n try {\n existingController.abort()\n } catch {\n //\n }\n abortRef.current.delete(id)\n }\n\n setImages((current) =>\n current.map((item) => (item.id === id ? { ...item, status: \"uploading\", progress: 0 } : item))\n )\n\n const updateProgress = (value: number) => {\n const nextValue = Math.max(0, Math.min(99, value))\n setImages((current) =>\n current.map((item) => (item.id === id ? { ...item, progress: nextValue, status: \"uploading\" } : item))\n )\n }\n\n const controller = new AbortController()\n abortRef.current.set(id, controller)\n\n void (async () => {\n try {\n const result = await upload(file, updateProgress, { signal: controller.signal, isPublic: uploadIsPublic })\n replacedIdRef.current.set(id, result.id)\n\n const tempUrl = objectUrlRef.current.get(id)\n if (tempUrl) {\n objectUrlRef.current.delete(id)\n try {\n URL.revokeObjectURL(tempUrl)\n } catch {\n //\n }\n }\n\n abortRef.current.delete(id)\n fileRef.current.delete(id)\n\n setImages((current) =>\n current.map((item) =>\n item.id === id\n ? { ...item, ...result, previewUrl: result.url, url: result.url, status: \"uploaded\", progress: 100 }\n : item\n )\n )\n } catch (error) {\n abortRef.current.delete(id)\n if (controller.signal.aborted) return\n console.error(\"Retry failed\", error)\n setImages((current) => current.map((item) => (item.id === id ? { ...item, status: \"error\" } : item)))\n }\n })()\n }\n\n const startFullscreen = (id: string) => {\n const index = images.findIndex((item) => item.id === id)\n if (index !== -1) {\n setFullscreenIndex(index)\n }\n }\n\n const handleDragStart = (event: DragEndEvent) => {\n setActiveId(String(event.active.id))\n }\n\n const handleDragEnd = (event: DragEndEvent) => {\n const { active, over } = event\n if (!over) {\n setActiveId(null)\n return\n }\n\n const activeId = String(active.id)\n const overId = String(over.id)\n\n if (activeId !== overId) {\n setImages((current) => {\n const oldIndex = current.findIndex((item) => item.id === activeId)\n const newIndex = current.findIndex((item) => item.id === overId)\n if (oldIndex === -1 || newIndex === -1) return current\n return arrayMove(current, oldIndex, newIndex)\n })\n }\n\n setActiveId(null)\n }\n\n const handleDragCancel = () => {\n setActiveId(null)\n }\n\n const clearHoverTimeout = () => {\n if (hoverTimeoutRef.current !== null) {\n window.clearTimeout(hoverTimeoutRef.current)\n hoverTimeoutRef.current = null\n }\n }\n\n const fullscreenImage = useMemo(() => {\n if (fullscreenIndex === null) return null\n return images[fullscreenIndex] ?? null\n }, [fullscreenIndex, images])\n\n const containerClasses = cn(\n \"rounded-xl border border-dashed border-slate-300 bg-white/70 p-4 shadow-sm transition-colors dark:border-slate-700 dark:bg-slate-900/60\",\n dragActive && \"border-primary ring-2 ring-primary/50\",\n disabled && \"opacity-70\"\n )\n\n const tileBaseClasses = \"group relative size-20 overflow-visible rounded-lg border border-slate-200 bg-slate-50 shadow-inner transition hover:shadow md:size-24 dark:border-slate-700 dark:bg-slate-800\"\n\n const acceptAttr = useMemo(() => {\n if (!accept) return undefined\n if (Array.isArray(accept)) return accept.join(\",\")\n return accept\n }, [accept])\n\n const enableImagePreview = useMemo(() => {\n if (renderItem) return false\n if (!acceptAttr) return false\n const tokens = acceptAttr.split(\",\").map((value) => value.trim()).filter(Boolean)\n if (!tokens.length) return false\n return tokens.every((token) => token === \"image/*\" || token.startsWith(\"image/\"))\n }, [acceptAttr, renderItem])\n\n const toRenderItemProps = (item: FileWithState): FilesUploadFieldRenderItemProps => ({\n file: { id: item.id, url: item.url, alt: item.alt, uploadKey: item.uploadKey },\n previewUrl: item.previewUrl,\n status: item.status,\n progress: item.progress,\n fileName: item.fileName,\n })\n\n const dragOverlayContent = activeId\n ? (() => {\n const activeItem = images.find((item) => item.id === activeId)\n if (!activeItem) return null\n\n if (renderItem) {\n const rendered = renderItem(toRenderItemProps(activeItem))\n if (rendered === null || rendered === undefined || rendered === false) return null\n return (\n <div className=\"pointer-events-none\">\n <div className=\"h-24 w-24 overflow-hidden rounded-lg shadow-2xl\">{rendered}</div>\n </div>\n )\n }\n\n if (!enableImagePreview) return null\n return (\n <div className=\"pointer-events-none\">\n <img\n src={activeItem.previewUrl}\n alt={activeItem.alt ?? \"Dragged image\"}\n className=\"h-24 w-24 rounded-lg object-cover shadow-2xl\"\n />\n </div>\n )\n })()\n : null\n\n const hideActiveTile = dragOverlayContent !== null && dragOverlayContent !== undefined\n\n return (\n <div\n onDragOver={(event) => {\n event.preventDefault()\n if (!disabled) {\n setDragActive(true)\n }\n }}\n onDragLeave={() => setDragActive(false)}\n onDrop={(event) => {\n event.preventDefault()\n setDragActive(false)\n if (event.dataTransfer.files?.length) {\n void handleFiles(event.dataTransfer.files)\n }\n }}\n className={containerClasses}\n >\n {renderHeader ? <div className=\"mb-3\">{renderHeader()}</div> : null}\n\n <DndContext\n sensors={disabled ? undefined : sensors}\n collisionDetection={closestCenter}\n onDragStart={handleDragStart}\n onDragEnd={handleDragEnd}\n onDragCancel={handleDragCancel}\n >\n <SortableContext items={images.map((item) => item.id)} strategy={rectSortingStrategy}>\n <div className=\"flex flex-wrap gap-3\">\n {images.map((item) => {\n const isUploading = item.status === \"uploading\"\n const isError = item.status === \"error\"\n\n return (\n <SortableTile\n key={item.id}\n item={item}\n isHovered={hoveredId === item.id}\n enableImagePreview={enableImagePreview}\n renderItem={renderItem}\n onHoverEnter={() => {\n clearHoverTimeout()\n setHoveredId(item.id)\n }}\n onHoverLeave={() => {\n clearHoverTimeout()\n hoverTimeoutRef.current = window.setTimeout(() => {\n setHoveredId((current) => (current === item.id ? null : current))\n hoverTimeoutRef.current = null\n }, 120)\n }}\n onRemove={removeImage}\n onRetry={retryUpload}\n startFullscreen={startFullscreen}\n isUploading={isUploading}\n isError={isError}\n tileClasses={tileBaseClasses}\n disabled={disabled}\n isDraggingExternal={hideActiveTile && activeId === item.id}\n removeButtonAriaLabel={removeButtonAriaLabel}\n />\n )\n })}\n\n <button\n type=\"button\"\n onClick={openFileDialog}\n disabled={disabled}\n className={cn(\n tileBaseClasses,\n \"flex items-center justify-center border-dashed bg-white text-slate-500 hover:border-slate-300 dark:bg-slate-900\"\n )}\n aria-label={addButtonAriaLabel}\n >\n <div className=\"flex flex-col items-center gap-1\">\n <div className=\"flex size-9 items-center justify-center rounded-full border border-slate-300 bg-slate-100 text-slate-600 shadow-inner dark:border-slate-700 dark:bg-slate-800 dark:text-slate-200\">\n <Plus className=\"h-5 w-5\" />\n </div>\n <span className=\"text-xs font-medium\">Ajouter</span>\n </div>\n </button>\n </div>\n </SortableContext>\n {(() => {\n const overlay = <DragOverlay>{dragOverlayContent}</DragOverlay>\n\n if (typeof document === \"undefined\") return overlay\n return createPortal(overlay, document.body)\n })()}\n </DndContext>\n\n <input\n ref={fileInputRef}\n type=\"file\"\n accept={acceptAttr}\n multiple\n className=\"hidden\"\n onChange={onFileInputChange}\n aria-hidden\n />\n\n {enableImagePreview && fullscreenImage && (\n <div className=\"fixed inset-0 z-50 flex items-center justify-center bg-black/90\">\n <button\n type=\"button\"\n className=\"absolute left-6 top-1/2 -translate-y-1/2 rounded-full bg-white/10 p-3 text-white shadow-lg transition hover:bg-white/20 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-white\"\n onClick={() =>\n setFullscreenIndex((current) => {\n if (current === null) return current\n return (current - 1 + images.length) % images.length\n })\n }\n aria-label=\"Précédent\"\n >\n <svg viewBox=\"0 0 24 24\" className=\"h-6 w-6\" stroke=\"currentColor\" strokeWidth={2} fill=\"none\">\n <path d=\"M15 18l-6-6 6-6\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n </button>\n <div className=\"relative max-h-[80vh] max-w-4xl\">\n <img\n src={fullscreenImage.url}\n alt={fullscreenImage.alt ?? \"Fullscreen\"}\n className=\"max-h-[80vh] max-w-full rounded-lg object-contain shadow-2xl\"\n />\n <button\n type=\"button\"\n className=\"absolute right-3 top-3 inline-flex size-9 items-center justify-center rounded-full bg-black/70 text-white transition hover:bg-black focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-white\"\n onClick={() => setFullscreenIndex(null)}\n aria-label=\"Fermer\"\n >\n <X className=\"h-5 w-5\" />\n </button>\n </div>\n <button\n type=\"button\"\n className=\"absolute right-6 top-1/2 -translate-y-1/2 rounded-full bg-white/10 p-3 text-white shadow-lg transition hover:bg-white/20 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-white\"\n onClick={() =>\n setFullscreenIndex((current) => {\n if (current === null) return current\n return (current + 1) % images.length\n })\n }\n aria-label=\"Suivant\"\n >\n <svg viewBox=\"0 0 24 24\" className=\"h-6 w-6\" stroke=\"currentColor\" strokeWidth={2} fill=\"none\">\n <path d=\"M9 6l6 6-6 6\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n </button>\n </div>\n )}\n </div>\n )\n}\n"],"names":["sha256Hex","data","crypto","subtle","digest","Array","from","Uint8Array","map","b","toString","padStart","join","postJson","url","body","options","response","fetch","method","headers","credentials","JSON","stringify","signal","payload","json","catch","ok","status","getJson","putOctetStream","sha256","uploadKey","defaultUpload","file","onProgress","initRes","filename","name","mimeType","type","isPublic","totalSize","size","Error","error","uploadId","String","chunkSize","Number","chunksTotal","doUploadChunk","index","start","end","Math","min","slice","arrayBuffer","sha","res","encodeURIComponent","undefined","uploadChunks","indices","alreadyUploaded","uploaded","idx","pct","floor","allIndices","length","_","i","complete","completeRes","fileId","code","statusRes","received","isArray","present","Set","missing","has","push","id","alt","SortableTile","t0","$","_c","item","isHovered","enableImagePreview","renderItem","onHoverEnter","onHoverLeave","onRemove","onRetry","startFullscreen","isUploading","isError","tileClasses","disabled","isDraggingExternal","removeButtonAriaLabel","t1","setNodeRef","attributes","listeners","transform","transition","isDragging","useSortable","tileRef","useRef","previewRef","previewPosition","setPreviewPosition","useState","t2","Symbol","for","el","current","rect","getBoundingClientRect","left","width","top","updatePreviewPosition","t3","t4","raf","schedule","cancelAnimationFrame","requestAnimationFrame","window","addEventListener","removeEventListener","useEffect","t5","CSS","Transform","t6","style","t7","fileName","previewUrl","progress","jsx","cn","tileContent","t8","node","t9","t10","t11","t12","t13","t14","t15","t16","event","next","relatedTarget","Node","contains","t17","t18","X","t19","t20","preview","DismissableLayerBranch","event_0","next_0","jsxs","Maximize2","document","createPortal","t21","Loader2","t22","t23","toPreview","URL","createObjectURL","FilesUploadField","initialFiles","onChange","upload","uploadIsPublic","onUploadingChange","accept","renderHeader","addButtonAriaLabel","fileInputRef","_temp","images","setImages","dragActive","setDragActive","fullscreenIndex","setFullscreenIndex","hoveredId","setHoveredId","activeId","setActiveId","hoverTimeoutRef","skipNotifyRef","imagesRef","lastInitialImagesRef","onChangeRef","onUploadingChangeRef","Map","replacedIdRef","fileRef","abortRef","objectUrlRef","activationConstraint","distance","coordinateGetter","sortableKeyboardCoordinates","sensors","useSensors","useSensor","PointerSensor","KeyboardSensor","controller","values","abort","clear","revokeObjectURL","cursor","_temp2","t24","t25","t26","t27","previous","every","img","prepared","_temp3","preparedRawIds","_temp4","tempId","finalId","entries","delete","currentIds","_temp5","some","img_3","mapped","get","preparedIds","_temp6","img_5","controller_0","tempUrl","index_0","t28","t29","_temp7","t30","t31","_temp8","t32","t33","handleKey","key","current_0","current_1","t34","files","uploads","file_0","tempId_0","randomUUID","set","next_1","current_2","updateProgress","value","nextValue","max","current_3","item_0","controller_1","AbortController","result","tempUrl_1","current_5","item_2","t35","aborted","tempUrl_0","console","current_4","item_1","finalize","Promise","allSettled","handleFiles","target","onFileInputChange","t36","click","openFileDialog","t37","id_0","controller_2","tempUrl_2","current_6","filter","item_3","removeImage","t38","id_1","file_1","existingController","current_7","item_4","updateProgress_0","value_0","nextValue_0","current_8","item_5","controller_3","result_0","tempUrl_3","current_10","item_7","t39","current_9","item_6","retryUpload","id_2","index_1","findIndex","item_8","t40","event_1","active","handleDragStart","t41","event_2","over","activeId_0","overId","current_11","oldIndex","item_9","newIndex","item_10","arrayMove","handleDragEnd","t42","handleDragCancel","t43","clearTimeout","clearHoverTimeout","t44","bb0","fullscreenImage","t45","t46","t47","containerClasses","t48","bb1","t49","acceptAttr","bb2","tokens","split","_temp9","Boolean","_temp0","toRenderItemProps","_temp1","t50","activeItem","find","item_12","rendered","dragOverlayContent","hideActiveTile","t51","event_3","preventDefault","t52","t53","event_4","dataTransfer","t54","t55","t56","_temp10","t57","item_14","setTimeout","current_12","tileBaseClasses","t58","t59","Plus","t60","t61","t62","SortableContext","rectSortingStrategy","t63","bb3","t64","DragOverlay","overlay","t65","DndContext","closestCenter","t66","current_13","current_14","t67","item_13","item_11","token","startsWith","value_1","trim","img_6","url_0","img_4","img_2","img_1","img_0"],"mappings":"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"}
package/dist/index80.js CHANGED
@@ -1,50 +1,55 @@
1
- import * as l from "react";
2
- import { composeRefs as m } from "./index55.js";
3
- import { j as u } from "./index30.js";
4
- // @__NO_SIDE_EFFECTS__
5
- function x(e) {
6
- const r = /* @__PURE__ */ y(e), t = l.forwardRef((o, n) => {
7
- const { children: i, ...c } = o, s = l.Children.toArray(i), a = s.find(g);
8
- if (a) {
9
- const f = a.props.children, d = s.map((p) => p === a ? l.Children.count(f) > 1 ? l.Children.only(null) : l.isValidElement(f) ? f.props.children : null : p);
10
- return /* @__PURE__ */ u.jsx(r, { ...c, ref: n, children: l.isValidElement(f) ? l.cloneElement(f, void 0, d) : null });
11
- }
12
- return /* @__PURE__ */ u.jsx(r, { ...c, ref: n, children: i });
13
- });
14
- return t.displayName = `${e}.Slot`, t;
15
- }
16
- // @__NO_SIDE_EFFECTS__
17
- function y(e) {
18
- const r = l.forwardRef((t, o) => {
19
- const { children: n, ...i } = t;
20
- if (l.isValidElement(n)) {
21
- const c = R(n), s = C(i, n.props);
22
- return n.type !== l.Fragment && (s.ref = o ? m(o, c) : c), l.cloneElement(n, s);
23
- }
24
- return l.Children.count(n) > 1 ? l.Children.only(null) : null;
25
- });
26
- return r.displayName = `${e}.SlotClone`, r;
27
- }
28
- var E = /* @__PURE__ */ Symbol("radix.slottable");
29
- function g(e) {
30
- return l.isValidElement(e) && typeof e.type == "function" && "__radixId" in e.type && e.type.__radixId === E;
31
- }
32
- function C(e, r) {
33
- const t = { ...r };
34
- for (const o in r) {
35
- const n = e[o], i = r[o];
36
- /^on[A-Z]/.test(o) ? n && i ? t[o] = (...s) => {
37
- const a = i(...s);
38
- return n(...s), a;
39
- } : n && (t[o] = n) : o === "style" ? t[o] = { ...n, ...i } : o === "className" && (t[o] = [n, i].filter(Boolean).join(" "));
40
- }
41
- return { ...e, ...t };
42
- }
43
- function R(e) {
44
- let r = Object.getOwnPropertyDescriptor(e.props, "ref")?.get, t = r && "isReactWarning" in r && r.isReactWarning;
45
- return t ? e.ref : (r = Object.getOwnPropertyDescriptor(e, "ref")?.get, t = r && "isReactWarning" in r && r.isReactWarning, t ? e.props.ref : e.props.ref || e.ref);
46
- }
1
+ import { Button as e } from "./index81.js";
2
+ import { CaptionLabel as p } from "./index82.js";
3
+ import { Chevron as x } from "./index83.js";
4
+ import { Day as n } from "./index84.js";
5
+ import { DayButton as d } from "./index85.js";
6
+ import { Dropdown as u } from "./index86.js";
7
+ import { DropdownNav as k } from "./index87.js";
8
+ import { Footer as D } from "./index88.js";
9
+ import { Month as i } from "./index89.js";
10
+ import { MonthCaption as v } from "./index90.js";
11
+ import { MonthGrid as y } from "./index91.js";
12
+ import { Months as b } from "./index92.js";
13
+ import { MonthsDropdown as l } from "./index93.js";
14
+ import { Nav as F } from "./index94.js";
15
+ import { NextMonthButton as H } from "./index95.js";
16
+ import { Option as O } from "./index96.js";
17
+ import { PreviousMonthButton as R } from "./index97.js";
18
+ import { Root as Y } from "./index98.js";
19
+ import { Select as j } from "./index99.js";
20
+ import { Week as z } from "./index100.js";
21
+ import { Weekday as E } from "./index101.js";
22
+ import { Weekdays as J } from "./index102.js";
23
+ import { WeekNumber as Q } from "./index103.js";
24
+ import { WeekNumberHeader as U } from "./index104.js";
25
+ import { Weeks as X } from "./index105.js";
26
+ import { YearsDropdown as _ } from "./index106.js";
47
27
  export {
48
- x as createSlot
28
+ e as Button,
29
+ p as CaptionLabel,
30
+ x as Chevron,
31
+ n as Day,
32
+ d as DayButton,
33
+ u as Dropdown,
34
+ k as DropdownNav,
35
+ D as Footer,
36
+ i as Month,
37
+ v as MonthCaption,
38
+ y as MonthGrid,
39
+ b as Months,
40
+ l as MonthsDropdown,
41
+ F as Nav,
42
+ H as NextMonthButton,
43
+ O as Option,
44
+ R as PreviousMonthButton,
45
+ Y as Root,
46
+ j as Select,
47
+ z as Week,
48
+ Q as WeekNumber,
49
+ U as WeekNumberHeader,
50
+ E as Weekday,
51
+ J as Weekdays,
52
+ X as Weeks,
53
+ _ as YearsDropdown
49
54
  };
50
55
  //# sourceMappingURL=index80.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index80.js","sources":["../../../node_modules/@radix-ui/react-collection/node_modules/@radix-ui/react-slot/dist/index.mjs"],"sourcesContent":["// src/slot.tsx\nimport * as React from \"react\";\nimport { composeRefs } from \"@radix-ui/react-compose-refs\";\nimport { Fragment as Fragment2, jsx } from \"react/jsx-runtime\";\n// @__NO_SIDE_EFFECTS__\nfunction createSlot(ownerName) {\n const SlotClone = /* @__PURE__ */ createSlotClone(ownerName);\n const Slot2 = React.forwardRef((props, forwardedRef) => {\n const { children, ...slotProps } = props;\n const childrenArray = React.Children.toArray(children);\n const slottable = childrenArray.find(isSlottable);\n if (slottable) {\n const newElement = slottable.props.children;\n const newChildren = childrenArray.map((child) => {\n if (child === slottable) {\n if (React.Children.count(newElement) > 1) return React.Children.only(null);\n return React.isValidElement(newElement) ? newElement.props.children : null;\n } else {\n return child;\n }\n });\n return /* @__PURE__ */ jsx(SlotClone, { ...slotProps, ref: forwardedRef, children: React.isValidElement(newElement) ? React.cloneElement(newElement, void 0, newChildren) : null });\n }\n return /* @__PURE__ */ jsx(SlotClone, { ...slotProps, ref: forwardedRef, children });\n });\n Slot2.displayName = `${ownerName}.Slot`;\n return Slot2;\n}\nvar Slot = /* @__PURE__ */ createSlot(\"Slot\");\n// @__NO_SIDE_EFFECTS__\nfunction createSlotClone(ownerName) {\n const SlotClone = React.forwardRef((props, forwardedRef) => {\n const { children, ...slotProps } = props;\n if (React.isValidElement(children)) {\n const childrenRef = getElementRef(children);\n const props2 = mergeProps(slotProps, children.props);\n if (children.type !== React.Fragment) {\n props2.ref = forwardedRef ? composeRefs(forwardedRef, childrenRef) : childrenRef;\n }\n return React.cloneElement(children, props2);\n }\n return React.Children.count(children) > 1 ? React.Children.only(null) : null;\n });\n SlotClone.displayName = `${ownerName}.SlotClone`;\n return SlotClone;\n}\nvar SLOTTABLE_IDENTIFIER = Symbol(\"radix.slottable\");\n// @__NO_SIDE_EFFECTS__\nfunction createSlottable(ownerName) {\n const Slottable2 = ({ children }) => {\n return /* @__PURE__ */ jsx(Fragment2, { children });\n };\n Slottable2.displayName = `${ownerName}.Slottable`;\n Slottable2.__radixId = SLOTTABLE_IDENTIFIER;\n return Slottable2;\n}\nvar Slottable = /* @__PURE__ */ createSlottable(\"Slottable\");\nfunction isSlottable(child) {\n return React.isValidElement(child) && typeof child.type === \"function\" && \"__radixId\" in child.type && child.type.__radixId === SLOTTABLE_IDENTIFIER;\n}\nfunction mergeProps(slotProps, childProps) {\n const overrideProps = { ...childProps };\n for (const propName in childProps) {\n const slotPropValue = slotProps[propName];\n const childPropValue = childProps[propName];\n const isHandler = /^on[A-Z]/.test(propName);\n if (isHandler) {\n if (slotPropValue && childPropValue) {\n overrideProps[propName] = (...args) => {\n const result = childPropValue(...args);\n slotPropValue(...args);\n return result;\n };\n } else if (slotPropValue) {\n overrideProps[propName] = slotPropValue;\n }\n } else if (propName === \"style\") {\n overrideProps[propName] = { ...slotPropValue, ...childPropValue };\n } else if (propName === \"className\") {\n overrideProps[propName] = [slotPropValue, childPropValue].filter(Boolean).join(\" \");\n }\n }\n return { ...slotProps, ...overrideProps };\n}\nfunction getElementRef(element) {\n let getter = Object.getOwnPropertyDescriptor(element.props, \"ref\")?.get;\n let mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.ref;\n }\n getter = Object.getOwnPropertyDescriptor(element, \"ref\")?.get;\n mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.props.ref;\n }\n return element.props.ref || element.ref;\n}\nexport {\n Slot as Root,\n Slot,\n Slottable,\n createSlot,\n createSlottable\n};\n//# sourceMappingURL=index.mjs.map\n"],"names":["createSlot","ownerName","SlotClone","createSlotClone","Slot2","React","props","forwardedRef","children","slotProps","childrenArray","slottable","isSlottable","newElement","newChildren","child","jsx","childrenRef","getElementRef","props2","mergeProps","composeRefs","SLOTTABLE_IDENTIFIER","childProps","overrideProps","propName","slotPropValue","childPropValue","args","result","element","getter","mayWarn"],"mappings":"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","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"index80.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;"}