@rpcbase/ui 0.234.0 → 0.236.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 (648) hide show
  1. package/dist/components/FilesUploadField/index.d.ts.map +1 -1
  2. package/dist/components/Notifications/NotificationsDrawer.d.ts.map +1 -1
  3. package/dist/components/Notifications/types.d.ts +11 -2
  4. package/dist/components/Notifications/types.d.ts.map +1 -1
  5. package/dist/index100.js +52 -5
  6. package/dist/index100.js.map +1 -1
  7. package/dist/index101.js +3 -7
  8. package/dist/index101.js.map +1 -1
  9. package/dist/index102.js +4 -5
  10. package/dist/index102.js.map +1 -1
  11. package/dist/index103.js +15 -4
  12. package/dist/index103.js.map +1 -1
  13. package/dist/index104.js +5 -4
  14. package/dist/index104.js.map +1 -1
  15. package/dist/index105.js +7 -6
  16. package/dist/index105.js.map +1 -1
  17. package/dist/index106.js +16 -145
  18. package/dist/index106.js.map +1 -1
  19. package/dist/index107.js +4 -39
  20. package/dist/index107.js.map +1 -1
  21. package/dist/index108.js +4 -4
  22. package/dist/index108.js.map +1 -1
  23. package/dist/index109.js +5 -7
  24. package/dist/index109.js.map +1 -1
  25. package/dist/index110.js +5 -13
  26. package/dist/index110.js.map +1 -1
  27. package/dist/index111.js +4 -13
  28. package/dist/index111.js.map +1 -1
  29. package/dist/index112.js +4 -7
  30. package/dist/index112.js.map +1 -1
  31. package/dist/index113.js +6 -31
  32. package/dist/index113.js.map +1 -1
  33. package/dist/index114.js +24 -10
  34. package/dist/index114.js.map +1 -1
  35. package/dist/index115.js +6 -10
  36. package/dist/index115.js.map +1 -1
  37. package/dist/index116.js +4 -8
  38. package/dist/index116.js.map +1 -1
  39. package/dist/index117.js +6 -13
  40. package/dist/index117.js.map +1 -1
  41. package/dist/index118.js +5 -101
  42. package/dist/index118.js.map +1 -1
  43. package/dist/index119.js +5 -20
  44. package/dist/index119.js.map +1 -1
  45. package/dist/index120.js +5 -53
  46. package/dist/index120.js.map +1 -1
  47. package/dist/index121.js +4 -72
  48. package/dist/index121.js.map +1 -1
  49. package/dist/index122.js +8 -9
  50. package/dist/index122.js.map +1 -1
  51. package/dist/index123.js +5 -20
  52. package/dist/index123.js.map +1 -1
  53. package/dist/index124.js +4 -16
  54. package/dist/index124.js.map +1 -1
  55. package/dist/index125.js +4 -23
  56. package/dist/index125.js.map +1 -1
  57. package/dist/index126.js +6 -6
  58. package/dist/index126.js.map +1 -1
  59. package/dist/index127.js +145 -5
  60. package/dist/index127.js.map +1 -1
  61. package/dist/index128.js +39 -23
  62. package/dist/index128.js.map +1 -1
  63. package/dist/index129.js +5 -35
  64. package/dist/index129.js.map +1 -1
  65. package/dist/index130.js +8 -16
  66. package/dist/index130.js.map +1 -1
  67. package/dist/index131.js +13 -6
  68. package/dist/index131.js.map +1 -1
  69. package/dist/index132.js +13 -4
  70. package/dist/index132.js.map +1 -1
  71. package/dist/index133.js +7 -4
  72. package/dist/index133.js.map +1 -1
  73. package/dist/index134.js +31 -4
  74. package/dist/index134.js.map +1 -1
  75. package/dist/index135.js +10 -4
  76. package/dist/index135.js.map +1 -1
  77. package/dist/index136.js +10 -3
  78. package/dist/index136.js.map +1 -1
  79. package/dist/index137.js +8 -6
  80. package/dist/index137.js.map +1 -1
  81. package/dist/index138.js +14 -24
  82. package/dist/index138.js.map +1 -1
  83. package/dist/index139.js +101 -7
  84. package/dist/index139.js.map +1 -1
  85. package/dist/index140.js +20 -7
  86. package/dist/index140.js.map +1 -1
  87. package/dist/index141.js +53 -5
  88. package/dist/index141.js.map +1 -1
  89. package/dist/index142.js +72 -3
  90. package/dist/index142.js.map +1 -1
  91. package/dist/index143.js +9 -3
  92. package/dist/index143.js.map +1 -1
  93. package/dist/index144.js +20 -4
  94. package/dist/index144.js.map +1 -1
  95. package/dist/index145.js +16 -3
  96. package/dist/index145.js.map +1 -1
  97. package/dist/index146.js +23 -4
  98. package/dist/index146.js.map +1 -1
  99. package/dist/index147.js +6 -3
  100. package/dist/index147.js.map +1 -1
  101. package/dist/index148.js +5 -3
  102. package/dist/index148.js.map +1 -1
  103. package/dist/index149.js +23 -3
  104. package/dist/index149.js.map +1 -1
  105. package/dist/index150.js +35 -6
  106. package/dist/index150.js.map +1 -1
  107. package/dist/index151.js +16 -69
  108. package/dist/index151.js.map +1 -1
  109. package/dist/index152.js +7 -2
  110. package/dist/index152.js.map +1 -1
  111. package/dist/index153.js +4 -363
  112. package/dist/index153.js.map +1 -1
  113. package/dist/index154.js +4 -261
  114. package/dist/index154.js.map +1 -1
  115. package/dist/index155.js +4 -60
  116. package/dist/index155.js.map +1 -1
  117. package/dist/index156.js +4 -46
  118. package/dist/index156.js.map +1 -1
  119. package/dist/index157.js +3 -169
  120. package/dist/index157.js.map +1 -1
  121. package/dist/index158.js +6 -109
  122. package/dist/index158.js.map +1 -1
  123. package/dist/index159.js +24 -25
  124. package/dist/index159.js.map +1 -1
  125. package/dist/index16.js +152 -144
  126. package/dist/index16.js.map +1 -1
  127. package/dist/index160.js +8 -8
  128. package/dist/index160.js.map +1 -1
  129. package/dist/index161.js +6 -4
  130. package/dist/index161.js.map +1 -1
  131. package/dist/index162.js +5 -5
  132. package/dist/index162.js.map +1 -1
  133. package/dist/index163.js +3 -4
  134. package/dist/index163.js.map +1 -1
  135. package/dist/index164.js +3 -466
  136. package/dist/index164.js.map +1 -1
  137. package/dist/index165.js +4 -185
  138. package/dist/index165.js.map +1 -1
  139. package/dist/index166.js +3 -107
  140. package/dist/index166.js.map +1 -1
  141. package/dist/index167.js +4 -262
  142. package/dist/index167.js.map +1 -1
  143. package/dist/index168.js +3 -9
  144. package/dist/index168.js.map +1 -1
  145. package/dist/index169.js +3 -42
  146. package/dist/index169.js.map +1 -1
  147. package/dist/index170.js +3 -4
  148. package/dist/index170.js.map +1 -1
  149. package/dist/index172.js +3 -3
  150. package/dist/index175.js +1 -1
  151. package/dist/index176.js +4 -4
  152. package/dist/index182.js +1 -1
  153. package/dist/index184.js +12 -12
  154. package/dist/index185.js +1 -1
  155. package/dist/index187.js +5 -5
  156. package/dist/index189.js +6 -6
  157. package/dist/index190.js +5 -5
  158. package/dist/index193.js +3 -3
  159. package/dist/index194.js +5 -5
  160. package/dist/index196.js +20 -59
  161. package/dist/index196.js.map +1 -1
  162. package/dist/index197.js +66 -8
  163. package/dist/index197.js.map +1 -1
  164. package/dist/index198.js +6 -87
  165. package/dist/index198.js.map +1 -1
  166. package/dist/index199.js +11 -19
  167. package/dist/index199.js.map +1 -1
  168. package/dist/index200.js +48 -14
  169. package/dist/index200.js.map +1 -1
  170. package/dist/index201.js +4 -6
  171. package/dist/index201.js.map +1 -1
  172. package/dist/index202.js +29 -5
  173. package/dist/index202.js.map +1 -1
  174. package/dist/index203.js +16 -6
  175. package/dist/index203.js.map +1 -1
  176. package/dist/index204.js +5 -4
  177. package/dist/index204.js.map +1 -1
  178. package/dist/index205.js +21 -6
  179. package/dist/index205.js.map +1 -1
  180. package/dist/index206.js +51 -16
  181. package/dist/index206.js.map +1 -1
  182. package/dist/index207.js +25 -4
  183. package/dist/index207.js.map +1 -1
  184. package/dist/index208.js +41 -4
  185. package/dist/index208.js.map +1 -1
  186. package/dist/index209.js +39 -12
  187. package/dist/index209.js.map +1 -1
  188. package/dist/index210.js +45 -10
  189. package/dist/index210.js.map +1 -1
  190. package/dist/index211.js +20 -13
  191. package/dist/index211.js.map +1 -1
  192. package/dist/index212.js +70 -13
  193. package/dist/index212.js.map +1 -1
  194. package/dist/index213.js +17 -4
  195. package/dist/index213.js.map +1 -1
  196. package/dist/index214.js +11 -5
  197. package/dist/index214.js.map +1 -1
  198. package/dist/index215.js +27 -6
  199. package/dist/index215.js.map +1 -1
  200. package/dist/index216.js +13 -5
  201. package/dist/index216.js.map +1 -1
  202. package/dist/index217.js +17 -53
  203. package/dist/index217.js.map +1 -1
  204. package/dist/index218.js +36 -8
  205. package/dist/index218.js.map +1 -1
  206. package/dist/index219.js +262 -4
  207. package/dist/index219.js.map +1 -1
  208. package/dist/index220.js +278 -4
  209. package/dist/index220.js.map +1 -1
  210. package/dist/index221.js +68 -8
  211. package/dist/index221.js.map +1 -1
  212. package/dist/index222.js +99 -4
  213. package/dist/index222.js.map +1 -1
  214. package/dist/index223.js +83 -4
  215. package/dist/index223.js.map +1 -1
  216. package/dist/index224.js +3 -3
  217. package/dist/index224.js.map +1 -1
  218. package/dist/index225.js +29 -10
  219. package/dist/index225.js.map +1 -1
  220. package/dist/index226.js +16 -9
  221. package/dist/index226.js.map +1 -1
  222. package/dist/index227.js +35 -10
  223. package/dist/index227.js.map +1 -1
  224. package/dist/index228.js +16 -10
  225. package/dist/index228.js.map +1 -1
  226. package/dist/index229.js +3 -10
  227. package/dist/index229.js.map +1 -1
  228. package/dist/index230.js +26 -9
  229. package/dist/index230.js.map +1 -1
  230. package/dist/index231.js +28 -6
  231. package/dist/index231.js.map +1 -1
  232. package/dist/index232.js +4 -6
  233. package/dist/index232.js.map +1 -1
  234. package/dist/index233.js +78 -4
  235. package/dist/index233.js.map +1 -1
  236. package/dist/index234.js +269 -5
  237. package/dist/index234.js.map +1 -1
  238. package/dist/index235.js +11 -6
  239. package/dist/index235.js.map +1 -1
  240. package/dist/index236.js +10 -5
  241. package/dist/index236.js.map +1 -1
  242. package/dist/index237.js +25 -16
  243. package/dist/index237.js.map +1 -1
  244. package/dist/index238.js +16 -7
  245. package/dist/index238.js.map +1 -1
  246. package/dist/index239.js +124 -9
  247. package/dist/index239.js.map +1 -1
  248. package/dist/index240.js +5 -10
  249. package/dist/index240.js.map +1 -1
  250. package/dist/index241.js +40 -21
  251. package/dist/index241.js.map +1 -1
  252. package/dist/index242.js +65 -10
  253. package/dist/index242.js.map +1 -1
  254. package/dist/index243.js +14 -10
  255. package/dist/index243.js.map +1 -1
  256. package/dist/index244.js +7 -9
  257. package/dist/index244.js.map +1 -1
  258. package/dist/index245.js +5 -4
  259. package/dist/index245.js.map +1 -1
  260. package/dist/index246.js +3 -5
  261. package/dist/index246.js.map +1 -1
  262. package/dist/index247.js +10 -16
  263. package/dist/index247.js.map +1 -1
  264. package/dist/index248.js +7 -9
  265. package/dist/index248.js.map +1 -1
  266. package/dist/index249.js +132 -17
  267. package/dist/index249.js.map +1 -1
  268. package/dist/index250.js +397 -13
  269. package/dist/index250.js.map +1 -1
  270. package/dist/index251.js +52 -12
  271. package/dist/index251.js.map +1 -1
  272. package/dist/index252.js +10 -28
  273. package/dist/index252.js.map +1 -1
  274. package/dist/index253.js +11 -12
  275. package/dist/index253.js.map +1 -1
  276. package/dist/index254.js +13 -25
  277. package/dist/index254.js.map +1 -1
  278. package/dist/index255.js +154 -5
  279. package/dist/index255.js.map +1 -1
  280. package/dist/index256.js +29 -12
  281. package/dist/index256.js.map +1 -1
  282. package/dist/index257.js +9 -154
  283. package/dist/index257.js.map +1 -1
  284. package/dist/index258.js +45 -27
  285. package/dist/index258.js.map +1 -1
  286. package/dist/index259.js +11 -9
  287. package/dist/index259.js.map +1 -1
  288. package/dist/index260.js +41 -45
  289. package/dist/index260.js.map +1 -1
  290. package/dist/index261.js +94 -10
  291. package/dist/index261.js.map +1 -1
  292. package/dist/index262.js +82 -40
  293. package/dist/index262.js.map +1 -1
  294. package/dist/index263.js +95 -85
  295. package/dist/index263.js.map +1 -1
  296. package/dist/index264.js +46 -80
  297. package/dist/index264.js.map +1 -1
  298. package/dist/index265.js +10 -104
  299. package/dist/index265.js.map +1 -1
  300. package/dist/index266.js +30 -45
  301. package/dist/index266.js.map +1 -1
  302. package/dist/index267.js +8 -11
  303. package/dist/index267.js.map +1 -1
  304. package/dist/index268.js +110 -31
  305. package/dist/index268.js.map +1 -1
  306. package/dist/index269.js +17 -8
  307. package/dist/index269.js.map +1 -1
  308. package/dist/index270.js +13 -114
  309. package/dist/index270.js.map +1 -1
  310. package/dist/index271.js +3 -17
  311. package/dist/index271.js.map +1 -1
  312. package/dist/index272.js +33 -12
  313. package/dist/index272.js.map +1 -1
  314. package/dist/index273.js +20 -3
  315. package/dist/index273.js.map +1 -1
  316. package/dist/index274.js +9 -36
  317. package/dist/index274.js.map +1 -1
  318. package/dist/index275.js +8 -20
  319. package/dist/index275.js.map +1 -1
  320. package/dist/index276.js +58 -9
  321. package/dist/index276.js.map +1 -1
  322. package/dist/index277.js +8 -8
  323. package/dist/index277.js.map +1 -1
  324. package/dist/index278.js +87 -19
  325. package/dist/index278.js.map +1 -1
  326. package/dist/index279.js +18 -27
  327. package/dist/index279.js.map +1 -1
  328. package/dist/index280.js +15 -15
  329. package/dist/index280.js.map +1 -1
  330. package/dist/index281.js +6 -20
  331. package/dist/index281.js.map +1 -1
  332. package/dist/index282.js +4 -65
  333. package/dist/index282.js.map +1 -1
  334. package/dist/index283.js +6 -6
  335. package/dist/index283.js.map +1 -1
  336. package/dist/index284.js +4 -11
  337. package/dist/index284.js.map +1 -1
  338. package/dist/index285.js +6 -50
  339. package/dist/index285.js.map +1 -1
  340. package/dist/index286.js +17 -4
  341. package/dist/index286.js.map +1 -1
  342. package/dist/index287.js +4 -29
  343. package/dist/index287.js.map +1 -1
  344. package/dist/index288.js +4 -16
  345. package/dist/index288.js.map +1 -1
  346. package/dist/index289.js +12 -5
  347. package/dist/index289.js.map +1 -1
  348. package/dist/index290.js +9 -21
  349. package/dist/index290.js.map +1 -1
  350. package/dist/index291.js +13 -51
  351. package/dist/index291.js.map +1 -1
  352. package/dist/index292.js +13 -25
  353. package/dist/index292.js.map +1 -1
  354. package/dist/index293.js +4 -41
  355. package/dist/index293.js.map +1 -1
  356. package/dist/index294.js +5 -39
  357. package/dist/index294.js.map +1 -1
  358. package/dist/index295.js +7 -45
  359. package/dist/index295.js.map +1 -1
  360. package/dist/index296.js +5 -20
  361. package/dist/index296.js.map +1 -1
  362. package/dist/index297.js +52 -68
  363. package/dist/index297.js.map +1 -1
  364. package/dist/index298.js +8 -17
  365. package/dist/index298.js.map +1 -1
  366. package/dist/index299.js +4 -11
  367. package/dist/index299.js.map +1 -1
  368. package/dist/index300.js +4 -27
  369. package/dist/index300.js.map +1 -1
  370. package/dist/index301.js +8 -13
  371. package/dist/index301.js.map +1 -1
  372. package/dist/index302.js +4 -18
  373. package/dist/index302.js.map +1 -1
  374. package/dist/index303.js +4 -36
  375. package/dist/index303.js.map +1 -1
  376. package/dist/index304.js +3 -262
  377. package/dist/index304.js.map +1 -1
  378. package/dist/index305.js +10 -278
  379. package/dist/index305.js.map +1 -1
  380. package/dist/index306.js +9 -68
  381. package/dist/index306.js.map +1 -1
  382. package/dist/index307.js +9 -99
  383. package/dist/index307.js.map +1 -1
  384. package/dist/index308.js +10 -83
  385. package/dist/index308.js.map +1 -1
  386. package/dist/index309.js +10 -3
  387. package/dist/index309.js.map +1 -1
  388. package/dist/index31.js +24 -24
  389. package/dist/index310.js +9 -29
  390. package/dist/index310.js.map +1 -1
  391. package/dist/index311.js +6 -16
  392. package/dist/index311.js.map +1 -1
  393. package/dist/index312.js +6 -35
  394. package/dist/index312.js.map +1 -1
  395. package/dist/index313.js +4 -16
  396. package/dist/index313.js.map +1 -1
  397. package/dist/index314.js +5 -3
  398. package/dist/index314.js.map +1 -1
  399. package/dist/index315.js +6 -26
  400. package/dist/index315.js.map +1 -1
  401. package/dist/index316.js +5 -28
  402. package/dist/index316.js.map +1 -1
  403. package/dist/index317.js +20 -4
  404. package/dist/index317.js.map +1 -1
  405. package/dist/index318.js +28 -78
  406. package/dist/index318.js.map +1 -1
  407. package/dist/index319.js +15 -268
  408. package/dist/index319.js.map +1 -1
  409. package/dist/index32.js +3 -3
  410. package/dist/index320.js +15 -10
  411. package/dist/index320.js.map +1 -1
  412. package/dist/index321.js +7 -10
  413. package/dist/index321.js.map +1 -1
  414. package/dist/index322.js +10 -25
  415. package/dist/index322.js.map +1 -1
  416. package/dist/index323.js +10 -16
  417. package/dist/index323.js.map +1 -1
  418. package/dist/index324.js +21 -125
  419. package/dist/index324.js.map +1 -1
  420. package/dist/index325.js +10 -5
  421. package/dist/index325.js.map +1 -1
  422. package/dist/index326.js +9 -40
  423. package/dist/index326.js.map +1 -1
  424. package/dist/index327.js +9 -65
  425. package/dist/index327.js.map +1 -1
  426. package/dist/index328.js +5 -14
  427. package/dist/index328.js.map +1 -1
  428. package/dist/index329.js +5 -7
  429. package/dist/index329.js.map +1 -1
  430. package/dist/index330.js +16 -5
  431. package/dist/index330.js.map +1 -1
  432. package/dist/index331.js +9 -3
  433. package/dist/index331.js.map +1 -1
  434. package/dist/index332.js +18 -10
  435. package/dist/index332.js.map +1 -1
  436. package/dist/index333.js +15 -7
  437. package/dist/index333.js.map +1 -1
  438. package/dist/index334.js +11 -132
  439. package/dist/index334.js.map +1 -1
  440. package/dist/index335.js +29 -399
  441. package/dist/index335.js.map +1 -1
  442. package/dist/index336.js +12 -52
  443. package/dist/index336.js.map +1 -1
  444. package/dist/index337.js +25 -11
  445. package/dist/index337.js.map +1 -1
  446. package/dist/index338.js +5 -11
  447. package/dist/index338.js.map +1 -1
  448. package/dist/index339.js +1 -1
  449. package/dist/index346.js +2 -2
  450. package/dist/index347.js +5 -122
  451. package/dist/index347.js.map +1 -1
  452. package/dist/index348.js +121 -31
  453. package/dist/index348.js.map +1 -1
  454. package/dist/index349.js +31 -72
  455. package/dist/index349.js.map +1 -1
  456. package/dist/index350.js +70 -139
  457. package/dist/index350.js.map +1 -1
  458. package/dist/index351.js +116 -35
  459. package/dist/index351.js.map +1 -1
  460. package/dist/index352.js +56 -44
  461. package/dist/index352.js.map +1 -1
  462. package/dist/index353.js +49 -14
  463. package/dist/index353.js.map +1 -1
  464. package/dist/index354.js +15 -6
  465. package/dist/index354.js.map +1 -1
  466. package/dist/index359.js +4 -5
  467. package/dist/index359.js.map +1 -1
  468. package/dist/index360.js +11 -17
  469. package/dist/index360.js.map +1 -1
  470. package/dist/index361.js +16 -12
  471. package/dist/index361.js.map +1 -1
  472. package/dist/index362.js +5 -20
  473. package/dist/index362.js.map +1 -1
  474. package/dist/index363.js +21 -4
  475. package/dist/index363.js.map +1 -1
  476. package/dist/index364.js +44 -11
  477. package/dist/index364.js.map +1 -1
  478. package/dist/index365.js +17 -16
  479. package/dist/index365.js.map +1 -1
  480. package/dist/index366.js +5 -6
  481. package/dist/index366.js.map +1 -1
  482. package/dist/index367.js +199 -19
  483. package/dist/index367.js.map +1 -1
  484. package/dist/index368.js +78 -45
  485. package/dist/index368.js.map +1 -1
  486. package/dist/index369.js +21 -18
  487. package/dist/index369.js.map +1 -1
  488. package/dist/index370.js +5 -5
  489. package/dist/index370.js.map +1 -1
  490. package/dist/index371.js +16 -199
  491. package/dist/index371.js.map +1 -1
  492. package/dist/index372.js +12 -77
  493. package/dist/index372.js.map +1 -1
  494. package/dist/index374.js +3 -3
  495. package/dist/index375.js +1 -1
  496. package/dist/index376.js +3 -3
  497. package/dist/index378.js +2 -2
  498. package/dist/index380.js +1 -1
  499. package/dist/index381.js +2 -2
  500. package/dist/index384.js +2 -2
  501. package/dist/index386.js +1 -1
  502. package/dist/index387.js +3 -5
  503. package/dist/index387.js.map +1 -1
  504. package/dist/index388.js +3 -5
  505. package/dist/index388.js.map +1 -1
  506. package/dist/index389.js +5 -4
  507. package/dist/index389.js.map +1 -1
  508. package/dist/index390.js +4 -15
  509. package/dist/index390.js.map +1 -1
  510. package/dist/index391.js +4 -9
  511. package/dist/index391.js.map +1 -1
  512. package/dist/index392.js +15 -5
  513. package/dist/index392.js.map +1 -1
  514. package/dist/index393.js +8 -4
  515. package/dist/index393.js.map +1 -1
  516. package/dist/index394.js +5 -545
  517. package/dist/index394.js.map +1 -1
  518. package/dist/index395.js +5 -47
  519. package/dist/index395.js.map +1 -1
  520. package/dist/index396.js +543 -15
  521. package/dist/index396.js.map +1 -1
  522. package/dist/index397.js +47 -6
  523. package/dist/index397.js.map +1 -1
  524. package/dist/index398.js +17 -7
  525. package/dist/index398.js.map +1 -1
  526. package/dist/index399.js +5 -6
  527. package/dist/index399.js.map +1 -1
  528. package/dist/index400.js +7 -7
  529. package/dist/index400.js.map +1 -1
  530. package/dist/index401.js +6 -11
  531. package/dist/index401.js.map +1 -1
  532. package/dist/index402.js +7 -8
  533. package/dist/index402.js.map +1 -1
  534. package/dist/index403.js +11 -12
  535. package/dist/index403.js.map +1 -1
  536. package/dist/index404.js +9 -3
  537. package/dist/index404.js.map +1 -1
  538. package/dist/index405.js +13 -3
  539. package/dist/index405.js.map +1 -1
  540. package/dist/index407.js +1 -1
  541. package/dist/index408.js +7 -4
  542. package/dist/index408.js.map +1 -1
  543. package/dist/index409.js +2 -56
  544. package/dist/index409.js.map +1 -1
  545. package/dist/index410.js +43 -67
  546. package/dist/index410.js.map +1 -1
  547. package/dist/index411.js +56 -31
  548. package/dist/index411.js.map +1 -1
  549. package/dist/index412.js +8 -9
  550. package/dist/index412.js.map +1 -1
  551. package/dist/index413.js +2 -153
  552. package/dist/index413.js.map +1 -1
  553. package/dist/index414.js +54 -107
  554. package/dist/index414.js.map +1 -1
  555. package/dist/index415.js +55 -7
  556. package/dist/index415.js.map +1 -1
  557. package/dist/index416.js +5 -2
  558. package/dist/index416.js.map +1 -1
  559. package/dist/index417.js +54 -42
  560. package/dist/index417.js.map +1 -1
  561. package/dist/index418.js +68 -56
  562. package/dist/index418.js.map +1 -1
  563. package/dist/index419.js +31 -8
  564. package/dist/index419.js.map +1 -1
  565. package/dist/index420.js +9 -2
  566. package/dist/index420.js.map +1 -1
  567. package/dist/index421.js +152 -54
  568. package/dist/index421.js.map +1 -1
  569. package/dist/index422.js +108 -56
  570. package/dist/index422.js.map +1 -1
  571. package/dist/index423.js +2 -16
  572. package/dist/index423.js.map +1 -1
  573. package/dist/index424.js +2 -29
  574. package/dist/index424.js.map +1 -1
  575. package/dist/index425.js +2 -13
  576. package/dist/index425.js.map +1 -1
  577. package/dist/index426.js +2 -7
  578. package/dist/index426.js.map +1 -1
  579. package/dist/index427.js +16 -2
  580. package/dist/index427.js.map +1 -1
  581. package/dist/index428.js +29 -2
  582. package/dist/index428.js.map +1 -1
  583. package/dist/index429.js +13 -2
  584. package/dist/index429.js.map +1 -1
  585. package/dist/index430.js +7 -2
  586. package/dist/index430.js.map +1 -1
  587. package/dist/index48.js +2 -2
  588. package/dist/index49.js +28 -28
  589. package/dist/index50.js +21 -21
  590. package/dist/index51.js +1 -1
  591. package/dist/index52.js +8 -8
  592. package/dist/index53.js +2 -2
  593. package/dist/index55.js +17 -17
  594. package/dist/index56.js +4 -4
  595. package/dist/index57.js +3 -3
  596. package/dist/index58.js +7 -7
  597. package/dist/index59.js +4 -4
  598. package/dist/index60.js +12 -12
  599. package/dist/index61.js +2 -2
  600. package/dist/index62.js +2 -2
  601. package/dist/index74.js +1 -1
  602. package/dist/index75.js +2 -2
  603. package/dist/index76.js +2 -2
  604. package/dist/index79.js +6 -52
  605. package/dist/index79.js.map +1 -1
  606. package/dist/index8.js +533 -698
  607. package/dist/index8.js.map +1 -1
  608. package/dist/index80.js +68 -4
  609. package/dist/index80.js.map +1 -1
  610. package/dist/index81.js +2 -5
  611. package/dist/index81.js.map +1 -1
  612. package/dist/index82.js +363 -15
  613. package/dist/index82.js.map +1 -1
  614. package/dist/index83.js +261 -5
  615. package/dist/index83.js.map +1 -1
  616. package/dist/index84.js +60 -7
  617. package/dist/index84.js.map +1 -1
  618. package/dist/index85.js +46 -16
  619. package/dist/index85.js.map +1 -1
  620. package/dist/index86.js +169 -4
  621. package/dist/index86.js.map +1 -1
  622. package/dist/index87.js +109 -4
  623. package/dist/index87.js.map +1 -1
  624. package/dist/index88.js +24 -5
  625. package/dist/index88.js.map +1 -1
  626. package/dist/index89.js +8 -6
  627. package/dist/index89.js.map +1 -1
  628. package/dist/index90.js +4 -4
  629. package/dist/index90.js.map +1 -1
  630. package/dist/index91.js +5 -4
  631. package/dist/index91.js.map +1 -1
  632. package/dist/index92.js +4 -6
  633. package/dist/index92.js.map +1 -1
  634. package/dist/index93.js +466 -24
  635. package/dist/index93.js.map +1 -1
  636. package/dist/index94.js +185 -6
  637. package/dist/index94.js.map +1 -1
  638. package/dist/index95.js +107 -4
  639. package/dist/index95.js.map +1 -1
  640. package/dist/index96.js +262 -6
  641. package/dist/index96.js.map +1 -1
  642. package/dist/index97.js +9 -5
  643. package/dist/index97.js.map +1 -1
  644. package/dist/index98.js +42 -4
  645. package/dist/index98.js.map +1 -1
  646. package/dist/index99.js +4 -5
  647. package/dist/index99.js.map +1 -1
  648. package/package.json +1 -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 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\nimport { Image } from \"../Image\"\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 <Image\n src={item.previewUrl}\n alt={item.alt ?? \"Uploaded file\"}\n sizes=\"96px\"\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 <>\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 <Image src={item.url} alt={item.alt ?? \"Preview\"} sizes=\"208px\" 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 </>\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=\"max-w-[92%] break-words text-center text-[10px] font-semibold leading-tight\" title={item.errorMessage}>\n {getErrorLabel(item.errorMessage)}\n </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 variant?: \"card\" | \"bare\"\n}\n\ntype FileWithState = FilesUploadFieldFile & {\n previewUrl: string\n status: \"uploaded\" | \"uploading\" | \"error\"\n progress: number\n fileName?: string\n mimeType?: string\n errorMessage?: string\n}\n\nfunction toPreview(file: File) {\n return URL.createObjectURL(file)\n}\n\nconst getErrorMessage = (error: unknown): string => {\n if (error instanceof Error) return error.message\n if (typeof error === \"string\") return error\n return \"Upload failed\"\n}\n\nconst getErrorLabel = (message: string | undefined): string => {\n if (!message) return \"Échec\"\n if (message.startsWith(\"heif_decode_unsupported\")) return \"HEIC/HEVC non supporté\"\n return message\n}\n\nconst IMAGE_FILE_NAME_RE = /\\.(png|jpe?g|gif|webp|avif|heic|heif|svg|bmp)$/i\n\nconst isImageItem = (item: FileWithState): boolean => {\n if (item.mimeType) return item.mimeType.startsWith(\"image/\")\n return IMAGE_FILE_NAME_RE.test(item.fileName ?? item.alt ?? \"\")\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 variant = \"card\",\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 mimeType: file.type,\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 errorMessage: undefined,\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 const errorMessage = getErrorMessage(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)), errorMessage }\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, errorMessage: undefined } : 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, errorMessage: undefined }\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 const errorMessage = getErrorMessage(error)\n setImages((current) => current.map((item) => (item.id === id ? { ...item, status: \"error\", errorMessage } : 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 variant === \"bare\"\n ? \"rounded-lg transition-colors\"\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 && (variant === \"bare\" ? \"bg-primary/5 ring-2 ring-primary/50\" : \"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) =>\n token === \"image/*\" ||\n token.startsWith(\"image/\") ||\n token === \".heic\" ||\n token === \".heif\" ||\n token === \".heics\" ||\n token === \".heifs\"\n )\n }, [acceptAttr, renderItem])\n\n const canPreviewItem = (item: FileWithState) => enableImagePreview || (!renderItem && isImageItem(item))\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 (!canPreviewItem(activeItem)) return null\n return (\n <div className=\"pointer-events-none\">\n <Image\n src={activeItem.previewUrl}\n alt={activeItem.alt ?? \"Dragged image\"}\n sizes=\"96px\"\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={canPreviewItem(item)}\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 {variant === \"bare\" && images.length === 0 ? (\n <button\n type=\"button\"\n onClick={openFileDialog}\n disabled={disabled}\n className=\"flex w-full flex-col items-center justify-center gap-1 rounded-lg border border-dashed border-slate-300 px-4 py-6 text-slate-500 transition-colors hover:border-slate-400 hover:bg-slate-50 hover:text-slate-600 dark:border-slate-700 dark:hover:bg-slate-800/50\"\n aria-label={addButtonAriaLabel}\n >\n <Plus className=\"h-5 w-5\" />\n <span className=\"text-xs font-medium\">{addButtonAriaLabel}</span>\n <span className=\"text-[11px] text-slate-400 dark:text-slate-500\">ou glissez-déposez ici</span>\n </button>\n ) : variant === \"bare\" ? (\n <button\n type=\"button\"\n onClick={openFileDialog}\n disabled={disabled}\n className=\"flex size-20 items-center justify-center rounded-lg border border-dashed border-slate-300 text-slate-400 transition-colors hover:border-slate-400 hover:bg-slate-50 hover:text-slate-600 md:size-24 dark:border-slate-700 dark:hover:bg-slate-800/50 dark:hover:text-slate-300\"\n aria-label={addButtonAriaLabel}\n >\n <div className=\"flex flex-col items-center gap-1\">\n <Plus className=\"h-4 w-4\" />\n <span className=\"text-[11px] font-medium\">Ajouter</span>\n </div>\n </button>\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 )}\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 {fullscreenImage && canPreviewItem(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 <Image\n src={fullscreenImage.url}\n alt={fullscreenImage.alt ?? \"Fullscreen\"}\n sizes=\"(max-width: 1024px) 100vw, 1024px\"\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","Image","cn","tileContent","t8","node","t9","t10","t11","t12","t13","t14","t15","t16","event","next","relatedTarget","Node","contains","t17","t18","X","t19","t20","preview","event_0","next_0","jsxs","Maximize2","document","createPortal","t21","Loader2","t22","errorMessage","getErrorLabel","t23","toPreview","URL","createObjectURL","getErrorMessage","message","startsWith","IMAGE_FILE_NAME_RE","isImageItem","test","FilesUploadField","initialFiles","onChange","upload","uploadIsPublic","onUploadingChange","accept","renderHeader","addButtonAriaLabel","variant","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","t28","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","t29","t30","_temp7","t31","t32","_temp8","t33","t34","handleKey","key","current_0","current_1","t35","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","t36","aborted","tempUrl_0","console","current_4","item_1","finalize","Promise","allSettled","handleFiles","target","onFileInputChange","t37","click","openFileDialog","t38","id_0","controller_2","tempUrl_2","current_6","filter","item_3","removeImage","t39","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","t40","errorMessage_0","current_9","item_6","retryUpload","id_2","index_1","findIndex","item_8","t41","event_1","active","handleDragStart","t42","event_2","over","activeId_0","overId","current_11","oldIndex","item_9","newIndex","item_10","arrayMove","handleDragEnd","t43","handleDragCancel","t44","clearTimeout","clearHoverTimeout","t45","bb0","fullscreenImage","t46","t47","t48","t49","containerClasses","t50","bb1","t51","acceptAttr","bb2","tokens","split","_temp9","Boolean","_temp0","t52","item_11","canPreviewItem","toRenderItemProps","_temp1","t53","activeItem","find","item_13","rendered","dragOverlayContent","hideActiveTile","t54","event_3","preventDefault","t55","t56","event_4","dataTransfer","t57","t58","t59","_temp10","t60","item_15","setTimeout","current_12","tileBaseClasses","t61","Plus","t62","t63","SortableContext","rectSortingStrategy","t64","bb3","t65","DragOverlay","overlay","t66","DndContext","closestCenter","t67","current_13","current_14","t68","item_14","item_12","token","value_1","trim","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 type { DragEndEvent, DragStartEvent, DropAnimation } from \"@dnd-kit/core\"\nimport {\n DndContext,\n DragOverlay,\n KeyboardSensor,\n PointerSensor,\n closestCenter,\n defaultDropAnimationSideEffects,\n useSensor,\n useSensors,\n} 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\nimport { Image } from \"../Image\"\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 <Image\n src={item.previewUrl}\n alt={item.alt ?? \"Uploaded file\"}\n sizes=\"96px\"\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 <>\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 <Image src={item.url} alt={item.alt ?? \"Preview\"} sizes=\"208px\" 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 </>\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=\"max-w-[92%] break-words text-center text-[10px] font-semibold leading-tight\" title={item.errorMessage}>\n {getErrorLabel(item.errorMessage)}\n </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 variant?: \"card\" | \"bare\"\n}\n\ntype FileWithState = FilesUploadFieldFile & {\n previewUrl: string\n status: \"uploaded\" | \"uploading\" | \"error\"\n progress: number\n fileName?: string\n mimeType?: string\n errorMessage?: string\n}\n\nfunction toPreview(file: File) {\n return URL.createObjectURL(file)\n}\n\nconst getErrorMessage = (error: unknown): string => {\n if (error instanceof Error) return error.message\n if (typeof error === \"string\") return error\n return \"Upload failed\"\n}\n\nconst getErrorLabel = (message: string | undefined): string => {\n if (!message) return \"Échec\"\n if (message.startsWith(\"heif_decode_unsupported\")) return \"HEIC/HEVC non supporté\"\n return message\n}\n\nconst IMAGE_FILE_NAME_RE = /\\.(png|jpe?g|gif|webp|avif|heic|heif|svg|bmp)$/i\nconst DROP_ANIMATION_FALLBACK_MS = 350\n\nconst hideDraggedTileDropSideEffects = defaultDropAnimationSideEffects({\n styles: {\n active: {\n opacity: \"0\",\n },\n },\n})\n\nconst isImageItem = (item: FileWithState): boolean => {\n if (item.mimeType) return item.mimeType.startsWith(\"image/\")\n return IMAGE_FILE_NAME_RE.test(item.fileName ?? item.alt ?? \"\")\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 variant = \"card\",\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 [dropAnimatingId, setDropAnimatingId] = useState<string | null>(null)\n const hoverTimeoutRef = useRef<number | null>(null)\n const dropAnimationFallbackRef = useRef<{ id: string; timeout: number } | null>(null)\n const hasDragOverlayRef = useRef(false)\n const clearDropAnimationRef = useRef<(id: string) => void>(() => {})\n const dropAnimationRef = useRef<DropAnimation>({\n sideEffects(args) {\n const id = String(args.active.id)\n const fallback = dropAnimationFallbackRef.current\n if (fallback?.id === id) {\n window.clearTimeout(fallback.timeout)\n dropAnimationFallbackRef.current = null\n }\n\n const cleanup = hideDraggedTileDropSideEffects(args)\n\n return () => {\n cleanup?.()\n clearDropAnimationRef.current(id)\n }\n },\n })\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 if (dropAnimationFallbackRef.current !== null) {\n window.clearTimeout(dropAnimationFallbackRef.current.timeout)\n dropAnimationFallbackRef.current = null\n }\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 clearDropAnimationRef.current = (id: string) => {\n const fallback = dropAnimationFallbackRef.current\n if (fallback?.id === id) {\n window.clearTimeout(fallback.timeout)\n dropAnimationFallbackRef.current = null\n }\n\n setDropAnimatingId((current) => (current === id ? null : current))\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 mimeType: file.type,\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 errorMessage: undefined,\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 const errorMessage = getErrorMessage(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)), errorMessage }\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, errorMessage: undefined } : 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, errorMessage: undefined }\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 const errorMessage = getErrorMessage(error)\n setImages((current) => current.map((item) => (item.id === id ? { ...item, status: \"error\", errorMessage } : 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 clearPendingDropAnimation = () => {\n if (dropAnimationFallbackRef.current !== null) {\n window.clearTimeout(dropAnimationFallbackRef.current.timeout)\n dropAnimationFallbackRef.current = null\n }\n setDropAnimatingId(null)\n }\n\n const scheduleDropAnimationFallback = (id: string) => {\n if (dropAnimationFallbackRef.current !== null) {\n window.clearTimeout(dropAnimationFallbackRef.current.timeout)\n }\n\n dropAnimationFallbackRef.current = {\n id,\n timeout: window.setTimeout(() => {\n dropAnimationFallbackRef.current = null\n setDropAnimatingId((current) => (current === id ? null : current))\n }, DROP_ANIMATION_FALLBACK_MS),\n }\n }\n\n const finishDrag = (id: string) => {\n if (hasDragOverlayRef.current) {\n setDropAnimatingId(id)\n scheduleDropAnimationFallback(id)\n }\n setActiveId(null)\n }\n\n const handleDragStart = (event: DragStartEvent) => {\n clearPendingDropAnimation()\n setActiveId(String(event.active.id))\n }\n\n const handleDragEnd = (event: DragEndEvent) => {\n const { active, over } = event\n const activeId = String(active.id)\n\n if (!over) {\n finishDrag(activeId)\n return\n }\n\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 finishDrag(activeId)\n }\n\n const handleDragCancel = () => {\n if (activeId) {\n finishDrag(activeId)\n return\n }\n\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 variant === \"bare\"\n ? \"rounded-lg transition-colors\"\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 && (variant === \"bare\" ? \"bg-primary/5 ring-2 ring-primary/50\" : \"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) =>\n token === \"image/*\" ||\n token.startsWith(\"image/\") ||\n token === \".heic\" ||\n token === \".heif\" ||\n token === \".heics\" ||\n token === \".heifs\"\n )\n }, [acceptAttr, renderItem])\n\n const canPreviewItem = (item: FileWithState) => enableImagePreview || (!renderItem && isImageItem(item))\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 (!canPreviewItem(activeItem)) return null\n return (\n <div className=\"pointer-events-none\">\n <Image\n src={activeItem.previewUrl}\n alt={activeItem.alt ?? \"Dragged image\"}\n sizes=\"96px\"\n className=\"h-24 w-24 rounded-lg object-cover shadow-2xl\"\n />\n </div>\n )\n })()\n : null\n\n const hasDragOverlay = dragOverlayContent !== null && dragOverlayContent !== undefined\n const hiddenDraggedTileId = hasDragOverlay ? activeId : dropAnimatingId\n hasDragOverlayRef.current = hasDragOverlay\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={canPreviewItem(item)}\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={hiddenDraggedTileId === item.id}\n removeButtonAriaLabel={removeButtonAriaLabel}\n />\n )\n })}\n\n {variant === \"bare\" && images.length === 0 ? (\n <button\n type=\"button\"\n onClick={openFileDialog}\n disabled={disabled}\n className=\"flex w-full flex-col items-center justify-center gap-1 rounded-lg border border-dashed border-slate-300 px-4 py-6 text-slate-500 transition-colors hover:border-slate-400 hover:bg-slate-50 hover:text-slate-600 dark:border-slate-700 dark:hover:bg-slate-800/50\"\n aria-label={addButtonAriaLabel}\n >\n <Plus className=\"h-5 w-5\" />\n <span className=\"text-xs font-medium\">{addButtonAriaLabel}</span>\n <span className=\"text-[11px] text-slate-400 dark:text-slate-500\">ou glissez-déposez ici</span>\n </button>\n ) : variant === \"bare\" ? (\n <button\n type=\"button\"\n onClick={openFileDialog}\n disabled={disabled}\n className=\"flex size-20 items-center justify-center rounded-lg border border-dashed border-slate-300 text-slate-400 transition-colors hover:border-slate-400 hover:bg-slate-50 hover:text-slate-600 md:size-24 dark:border-slate-700 dark:hover:bg-slate-800/50 dark:hover:text-slate-300\"\n aria-label={addButtonAriaLabel}\n >\n <div className=\"flex flex-col items-center gap-1\">\n <Plus className=\"h-4 w-4\" />\n <span className=\"text-[11px] font-medium\">Ajouter</span>\n </div>\n </button>\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 )}\n </div>\n </SortableContext>\n {(() => {\n const overlay = <DragOverlay dropAnimation={dropAnimationRef.current}>{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 {fullscreenImage && canPreviewItem(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 <Image\n src={fullscreenImage.url}\n alt={fullscreenImage.alt ?? \"Fullscreen\"}\n sizes=\"(max-width: 1024px) 100vw, 1024px\"\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","Image","cn","tileContent","t8","node","t9","t10","t11","t12","t13","t14","t15","t16","event","next","relatedTarget","Node","contains","t17","t18","X","t19","t20","preview","event_0","next_0","jsxs","Maximize2","document","createPortal","t21","Loader2","t22","errorMessage","getErrorLabel","t23","toPreview","URL","createObjectURL","getErrorMessage","message","startsWith","IMAGE_FILE_NAME_RE","DROP_ANIMATION_FALLBACK_MS","hideDraggedTileDropSideEffects","defaultDropAnimationSideEffects","styles","active","opacity","isImageItem","test","FilesUploadField","initialFiles","onChange","upload","uploadIsPublic","onUploadingChange","accept","renderHeader","addButtonAriaLabel","variant","fileInputRef","images","setImages","dragActive","setDragActive","fullscreenIndex","setFullscreenIndex","hoveredId","setHoveredId","activeId","setActiveId","dropAnimatingId","setDropAnimatingId","hoverTimeoutRef","dropAnimationFallbackRef","hasDragOverlayRef","clearDropAnimationRef","dropAnimationRef","sideEffects","args","fallback","clearTimeout","timeout","cleanup","skipNotifyRef","imagesRef","lastInitialImagesRef","onChangeRef","onUploadingChangeRef","replacedIdRef","Map","fileRef","abortRef","objectUrlRef","sensors","useSensors","useSensor","PointerSensor","activationConstraint","distance","KeyboardSensor","coordinateGetter","sortableKeyboardCoordinates","controller","values","abort","clear","revokeObjectURL","cursor","previous","every","img","prepared","preparedRawIds","tempId","finalId","entries","delete","currentIds","some","mapped","get","preparedIds","tempUrl","handleKey","key","handleFiles","files","uploads","randomUUID","set","updateProgress","value","nextValue","max","AbortController","result","aborted","console","finalize","Promise","allSettled","onFileInputChange","target","openFileDialog","click","removeImage","filter","retryUpload","existingController","findIndex","clearPendingDropAnimation","scheduleDropAnimationFallback","setTimeout","finishDrag","handleDragStart","handleDragEnd","over","overId","oldIndex","newIndex","arrayMove","handleDragCancel","clearHoverTimeout","fullscreenImage","useMemo","containerClasses","tileBaseClasses","acceptAttr","tokens","split","trim","Boolean","token","canPreviewItem","toRenderItemProps","dragOverlayContent","activeItem","find","rendered","hasDragOverlay","hiddenDraggedTileId","preventDefault","dataTransfer","DndContext","closestCenter","SortableContext","rectSortingStrategy","Plus","overlay","DragOverlay"],"mappings":"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"}
package/dist/index80.js CHANGED
@@ -1,8 +1,72 @@
1
- import e from "react";
2
- function o(t) {
3
- return e.createElement("button", { ...t });
1
+ import m from "./index263.js";
2
+ import p from "./index264.js";
3
+ import y from "./index262.js";
4
+ import b from "./index93.js";
5
+ import l from "./index254.js";
6
+ function i(e) {
7
+ "@babel/helpers - typeof";
8
+ return i = typeof Symbol == "function" && typeof Symbol.iterator == "symbol" ? function(r) {
9
+ return typeof r;
10
+ } : function(r) {
11
+ return r && typeof Symbol == "function" && r.constructor === Symbol && r !== Symbol.prototype ? "symbol" : typeof r;
12
+ }, i(e);
13
+ }
14
+ function c(e, r) {
15
+ var t = Object.keys(e);
16
+ if (Object.getOwnPropertySymbols) {
17
+ var o = Object.getOwnPropertySymbols(e);
18
+ r && (o = o.filter(function(n) {
19
+ return Object.getOwnPropertyDescriptor(e, n).enumerable;
20
+ })), t.push.apply(t, o);
21
+ }
22
+ return t;
23
+ }
24
+ function f(e) {
25
+ for (var r = 1; r < arguments.length; r++) {
26
+ var t = arguments[r] != null ? arguments[r] : {};
27
+ r % 2 ? c(Object(t), !0).forEach(function(o) {
28
+ s(e, o, t[o]);
29
+ }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : c(Object(t)).forEach(function(o) {
30
+ Object.defineProperty(e, o, Object.getOwnPropertyDescriptor(t, o));
31
+ });
32
+ }
33
+ return e;
34
+ }
35
+ function s(e, r, t) {
36
+ return (r = g(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e;
37
+ }
38
+ function g(e) {
39
+ var r = O(e, "string");
40
+ return i(r) == "symbol" ? r : r + "";
41
+ }
42
+ function O(e, r) {
43
+ if (i(e) != "object" || !e) return e;
44
+ var t = e[Symbol.toPrimitive];
45
+ if (t !== void 0) {
46
+ var o = t.call(e, r);
47
+ if (i(o) != "object") return o;
48
+ throw new TypeError("@@toPrimitive must return a primitive value.");
49
+ }
50
+ return (r === "string" ? String : Number)(e);
51
+ }
52
+ function h() {
53
+ var e = m(arguments), r = e.text, t = e.options, o = e.metadata;
54
+ t = f(f({}, t), {}, {
55
+ extract: !1
56
+ });
57
+ try {
58
+ var n = p(r, t, o);
59
+ o = new b(o), o.selectNumberingPlan(n.countryCallingCode);
60
+ var u = l(n.nationalNumber, n.country, o);
61
+ if (u !== "IS_POSSIBLE")
62
+ return u;
63
+ } catch (a) {
64
+ if (a instanceof y)
65
+ return a.message;
66
+ throw a;
67
+ }
4
68
  }
5
69
  export {
6
- o as Button
70
+ h as default
7
71
  };
8
72
  //# sourceMappingURL=index80.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index80.js","sources":["../../../node_modules/react-day-picker/dist/esm/components/Button.js"],"sourcesContent":["import React from \"react\";\n/**\n * Render the button elements in the calendar.\n *\n * @private\n * @deprecated Use `PreviousMonthButton` or `@link NextMonthButton` instead.\n */\nexport function Button(props) {\n return React.createElement(\"button\", { ...props });\n}\n"],"names":["Button","props","React"],"mappings":";AAOO,SAASA,EAAOC,GAAO;AAC1B,SAAOC,EAAM,cAAc,UAAU,EAAE,GAAGD,EAAK,CAAE;AACrD;","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"index80.js","sources":["../../../node_modules/libphonenumber-js/es6/validatePhoneNumberLength.js"],"sourcesContent":["function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport normalizeArguments from './normalizeArguments.js';\nimport parsePhoneNumberWithError from './parsePhoneNumberWithError_.js';\nimport ParseError from './ParseError.js';\nimport Metadata from './metadata.js';\nimport checkNumberLength from './helpers/checkNumberLength.js';\nexport default function validatePhoneNumberLength() {\n var _normalizeArguments = normalizeArguments(arguments),\n text = _normalizeArguments.text,\n options = _normalizeArguments.options,\n metadata = _normalizeArguments.metadata;\n options = _objectSpread(_objectSpread({}, options), {}, {\n extract: false\n });\n\n // Parse phone number.\n try {\n var phoneNumber = parsePhoneNumberWithError(text, options, metadata);\n metadata = new Metadata(metadata);\n metadata.selectNumberingPlan(phoneNumber.countryCallingCode);\n var result = checkNumberLength(phoneNumber.nationalNumber, phoneNumber.country, metadata);\n if (result !== 'IS_POSSIBLE') {\n return result;\n }\n } catch (error) {\n /* istanbul ignore else */\n if (error instanceof ParseError) {\n return error.message;\n } else {\n throw error;\n }\n }\n}\n//# sourceMappingURL=validatePhoneNumberLength.js.map"],"names":["_typeof","o","ownKeys","r","_objectSpread","_defineProperty","_toPropertyKey","t","i","_toPrimitive","e","validatePhoneNumberLength","_normalizeArguments","normalizeArguments","text","options","metadata","phoneNumber","parsePhoneNumberWithError","Metadata","result","checkNumberLength","error","ParseError"],"mappings":";;;;;AAAA,SAASA,EAAQC,GAAG;AAAE;AAA2B,SAAOD,IAAwB,OAAO,UAArB,cAA2C,OAAO,OAAO,YAA1B,WAAqC,SAAUC,GAAG;AAAE,WAAO,OAAOA;AAAA,EAAG,IAAI,SAAUA,GAAG;AAAE,WAAOA,KAAmB,OAAO,UAArB,cAA+BA,EAAE,gBAAgB,UAAUA,MAAM,OAAO,YAAY,WAAW,OAAOA;AAAA,EAAG,GAAGD,EAAQC,CAAC;AAAG;AAC7T,SAASC,EAAQ,GAAG,GAAG;AAAE,MAAI,IAAI,OAAO,KAAK,CAAC;AAAG,MAAI,OAAO,uBAAuB;AAAE,QAAI,IAAI,OAAO,sBAAsB,CAAC;AAAG,UAAM,IAAI,EAAE,OAAO,SAAUC,GAAG;AAAE,aAAO,OAAO,yBAAyB,GAAGA,CAAC,EAAE;AAAA,IAAY,CAAC,IAAI,EAAE,KAAK,MAAM,GAAG,CAAC;AAAA,EAAG;AAAE,SAAO;AAAG;AAC9P,SAASC,EAAc,GAAG;AAAE,WAAS,IAAI,GAAG,IAAI,UAAU,QAAQ,KAAK;AAAE,QAAI,IAAY,UAAU,CAAC,KAAnB,OAAuB,UAAU,CAAC,IAAI,CAAA;AAAI,QAAI,IAAIF,EAAQ,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,SAAUC,GAAG;AAAE,MAAAE,EAAgB,GAAGF,GAAG,EAAEA,CAAC,CAAC;AAAA,IAAG,CAAC,IAAI,OAAO,4BAA4B,OAAO,iBAAiB,GAAG,OAAO,0BAA0B,CAAC,CAAC,IAAID,EAAQ,OAAO,CAAC,CAAC,EAAE,QAAQ,SAAUC,GAAG;AAAE,aAAO,eAAe,GAAGA,GAAG,OAAO,yBAAyB,GAAGA,CAAC,CAAC;AAAA,IAAG,CAAC;AAAA,EAAG;AAAE,SAAO;AAAG;AACtb,SAASE,EAAgB,GAAG,GAAG,GAAG;AAAE,UAAQ,IAAIC,EAAe,CAAC,MAAM,IAAI,OAAO,eAAe,GAAG,GAAG,EAAE,OAAO,GAAG,YAAY,IAAI,cAAc,IAAI,UAAU,GAAE,CAAE,IAAI,EAAE,CAAC,IAAI,GAAG;AAAG;AACnL,SAASA,EAAeC,GAAG;AAAE,MAAIC,IAAIC,EAAaF,GAAG,QAAQ;AAAG,SAAmBP,EAAQQ,CAAC,KAArB,WAAyBA,IAAIA,IAAI;AAAI;AAC5G,SAASC,EAAaF,GAAG,GAAG;AAAE,MAAgBP,EAAQO,CAAC,KAArB,YAA0B,CAACA,EAAG,QAAOA;AAAG,MAAIG,IAAIH,EAAE,OAAO,WAAW;AAAG,MAAeG,MAAX,QAAc;AAAE,QAAIF,IAAIE,EAAE,KAAKH,GAAG,CAAc;AAAG,QAAgBP,EAAQQ,CAAC,KAArB,SAAwB,QAAOA;AAAG,UAAM,IAAI,UAAU,8CAA8C;AAAA,EAAG;AAAE,UAAqB,MAAb,WAAiB,SAAS,QAAQD,CAAC;AAAG;AAM5S,SAASI,IAA4B;AAClD,MAAIC,IAAsBC,EAAmB,SAAS,GACpDC,IAAOF,EAAoB,MAC3BG,IAAUH,EAAoB,SAC9BI,IAAWJ,EAAoB;AACjC,EAAAG,IAAUX,EAAcA,EAAc,CAAA,GAAIW,CAAO,GAAG,CAAA,GAAI;AAAA,IACtD,SAAS;AAAA,EACb,CAAG;AAGD,MAAI;AACF,QAAIE,IAAcC,EAA0BJ,GAAMC,GAASC,CAAQ;AACnE,IAAAA,IAAW,IAAIG,EAASH,CAAQ,GAChCA,EAAS,oBAAoBC,EAAY,kBAAkB;AAC3D,QAAIG,IAASC,EAAkBJ,EAAY,gBAAgBA,EAAY,SAASD,CAAQ;AACxF,QAAII,MAAW;AACb,aAAOA;AAAA,EAEX,SAASE,GAAO;AAEd,QAAIA,aAAiBC;AACnB,aAAOD,EAAM;AAEb,UAAMA;AAAA,EAEV;AACF;","x_google_ignoreList":[0]}