@rpcbase/ui 0.287.0 → 0.289.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 (738) hide show
  1. package/dist/assets/sha256.worker-DNtOSCbM.js.map +1 -0
  2. package/dist/components/FilesUploadField/index.d.ts.map +1 -1
  3. package/dist/index.js +12 -12
  4. package/dist/index10.js.map +1 -1
  5. package/dist/index100.js.map +1 -1
  6. package/dist/index101.js.map +1 -1
  7. package/dist/index102.js.map +1 -1
  8. package/dist/index103.js.map +1 -1
  9. package/dist/index104.js.map +1 -1
  10. package/dist/index105.js.map +1 -1
  11. package/dist/index106.js.map +1 -1
  12. package/dist/index107.js.map +1 -1
  13. package/dist/index108.js.map +1 -1
  14. package/dist/index109.js.map +1 -1
  15. package/dist/index11.js +96 -17
  16. package/dist/index11.js.map +1 -1
  17. package/dist/index110.js.map +1 -1
  18. package/dist/index111.js.map +1 -1
  19. package/dist/index112.js.map +1 -1
  20. package/dist/index113.js.map +1 -1
  21. package/dist/index114.js.map +1 -1
  22. package/dist/index115.js.map +1 -1
  23. package/dist/index116.js.map +1 -1
  24. package/dist/index117.js.map +1 -1
  25. package/dist/index118.js.map +1 -1
  26. package/dist/index119.js.map +1 -1
  27. package/dist/index12.js.map +1 -1
  28. package/dist/index120.js.map +1 -1
  29. package/dist/index121.js.map +1 -1
  30. package/dist/index122.js.map +1 -1
  31. package/dist/index123.js +1 -1
  32. package/dist/index123.js.map +1 -1
  33. package/dist/index124.js.map +1 -1
  34. package/dist/index125.js.map +1 -1
  35. package/dist/index126.js.map +1 -1
  36. package/dist/index127.js.map +1 -1
  37. package/dist/index128.js.map +1 -1
  38. package/dist/index129.js.map +1 -1
  39. package/dist/index13.js.map +1 -1
  40. package/dist/index130.js.map +1 -1
  41. package/dist/index131.js.map +1 -1
  42. package/dist/index132.js.map +1 -1
  43. package/dist/index133.js.map +1 -1
  44. package/dist/index134.js.map +1 -1
  45. package/dist/index135.js.map +1 -1
  46. package/dist/index136.js.map +1 -1
  47. package/dist/index137.js.map +1 -1
  48. package/dist/index138.js.map +1 -1
  49. package/dist/index139.js.map +1 -1
  50. package/dist/index14.js.map +1 -1
  51. package/dist/index140.js.map +1 -1
  52. package/dist/index141.js.map +1 -1
  53. package/dist/index142.js.map +1 -1
  54. package/dist/index143.js.map +1 -1
  55. package/dist/index144.js.map +1 -1
  56. package/dist/index145.js.map +1 -1
  57. package/dist/index146.js.map +1 -1
  58. package/dist/index147.js.map +1 -1
  59. package/dist/index148.js.map +1 -1
  60. package/dist/index149.js.map +1 -1
  61. package/dist/index15.js.map +1 -1
  62. package/dist/index150.js.map +1 -1
  63. package/dist/index151.js.map +1 -1
  64. package/dist/index152.js.map +1 -1
  65. package/dist/index153.js.map +1 -1
  66. package/dist/index154.js +4 -4
  67. package/dist/index154.js.map +1 -1
  68. package/dist/index155.js.map +1 -1
  69. package/dist/index156.js.map +1 -1
  70. package/dist/index157.js.map +1 -1
  71. package/dist/index158.js.map +1 -1
  72. package/dist/index159.js.map +1 -1
  73. package/dist/index16.js.map +1 -1
  74. package/dist/index160.js.map +1 -1
  75. package/dist/index161.js.map +1 -1
  76. package/dist/index162.js.map +1 -1
  77. package/dist/index163.js.map +1 -1
  78. package/dist/index164.js.map +1 -1
  79. package/dist/index165.js.map +1 -1
  80. package/dist/index166.js.map +1 -1
  81. package/dist/index167.js.map +1 -1
  82. package/dist/index168.js.map +1 -1
  83. package/dist/index169.js.map +1 -1
  84. package/dist/index17.js.map +1 -1
  85. package/dist/index170.js +18 -12
  86. package/dist/index170.js.map +1 -1
  87. package/dist/index171.js.map +1 -1
  88. package/dist/index172.js.map +1 -1
  89. package/dist/index173.js.map +1 -1
  90. package/dist/index174.js.map +1 -1
  91. package/dist/index175.js.map +1 -1
  92. package/dist/index176.js.map +1 -1
  93. package/dist/index177.js.map +1 -1
  94. package/dist/index178.js.map +1 -1
  95. package/dist/index179.js.map +1 -1
  96. package/dist/index18.js.map +1 -1
  97. package/dist/index180.js.map +1 -1
  98. package/dist/index181.js +1 -1
  99. package/dist/index181.js.map +1 -1
  100. package/dist/index182.js +3 -3
  101. package/dist/index182.js.map +1 -1
  102. package/dist/index183.js.map +1 -1
  103. package/dist/index184.js.map +1 -1
  104. package/dist/index185.js.map +1 -1
  105. package/dist/index186.js.map +1 -1
  106. package/dist/index187.js.map +1 -1
  107. package/dist/index188.js.map +1 -1
  108. package/dist/index189.js.map +1 -1
  109. package/dist/index19.js.map +1 -1
  110. package/dist/index190.js +9 -7
  111. package/dist/index190.js.map +1 -1
  112. package/dist/index191.js +4 -4
  113. package/dist/index191.js.map +1 -1
  114. package/dist/index192.js +4 -15
  115. package/dist/index192.js.map +1 -1
  116. package/dist/index193.js +13 -3
  117. package/dist/index193.js.map +1 -1
  118. package/dist/index194.js +2 -2
  119. package/dist/index194.js.map +1 -1
  120. package/dist/index195.js +4 -85
  121. package/dist/index195.js.map +1 -1
  122. package/dist/index196.js +79 -54
  123. package/dist/index196.js.map +1 -1
  124. package/dist/index197.js +68 -7
  125. package/dist/index197.js.map +1 -1
  126. package/dist/index198.js +3 -23
  127. package/dist/index198.js.map +1 -1
  128. package/dist/index199.js +6 -28
  129. package/dist/index199.js.map +1 -1
  130. package/dist/index20.js.map +1 -1
  131. package/dist/index200.js +4 -97
  132. package/dist/index200.js.map +1 -1
  133. package/dist/index201.js +3 -4
  134. package/dist/index201.js.map +1 -1
  135. package/dist/index202.js +23 -24
  136. package/dist/index202.js.map +1 -1
  137. package/dist/index203.js +28 -10
  138. package/dist/index203.js.map +1 -1
  139. package/dist/index204.js +97 -4
  140. package/dist/index204.js.map +1 -1
  141. package/dist/index205.js +4 -12
  142. package/dist/index205.js.map +1 -1
  143. package/dist/index206.js +22 -19
  144. package/dist/index206.js.map +1 -1
  145. package/dist/index207.js +4 -6
  146. package/dist/index207.js.map +1 -1
  147. package/dist/index208.js +4 -15
  148. package/dist/index208.js.map +1 -1
  149. package/dist/index209.js +10 -102
  150. package/dist/index209.js.map +1 -1
  151. package/dist/index210.js +21 -3
  152. package/dist/index210.js.map +1 -1
  153. package/dist/index211.js +5 -23
  154. package/dist/index211.js.map +1 -1
  155. package/dist/index212.js +15 -28
  156. package/dist/index212.js.map +1 -1
  157. package/dist/index213.js +101 -17
  158. package/dist/index213.js.map +1 -1
  159. package/dist/index214.js +3 -7
  160. package/dist/index214.js.map +1 -1
  161. package/dist/index215.js +24 -15
  162. package/dist/index215.js.map +1 -1
  163. package/dist/index216.js +27 -7
  164. package/dist/index216.js.map +1 -1
  165. package/dist/index217.js +17 -24
  166. package/dist/index217.js.map +1 -1
  167. package/dist/index218.js +6 -22
  168. package/dist/index218.js.map +1 -1
  169. package/dist/index219.js +15 -6
  170. package/dist/index219.js.map +1 -1
  171. package/dist/index220.js +8 -5
  172. package/dist/index220.js.map +1 -1
  173. package/dist/index221.js +27 -4
  174. package/dist/index221.js.map +1 -1
  175. package/dist/index222.js +23 -4
  176. package/dist/index222.js.map +1 -1
  177. package/dist/index223.js +6 -24
  178. package/dist/index223.js.map +1 -1
  179. package/dist/index224.js +5 -3
  180. package/dist/index224.js.map +1 -1
  181. package/dist/index225.js +4 -24
  182. package/dist/index225.js.map +1 -1
  183. package/dist/index226.js +4 -23
  184. package/dist/index226.js.map +1 -1
  185. package/dist/index227.js +23 -6
  186. package/dist/index227.js.map +1 -1
  187. package/dist/index228.js +22 -8
  188. package/dist/index228.js.map +1 -1
  189. package/dist/index229.js +3 -19
  190. package/dist/index229.js.map +1 -1
  191. package/dist/index23.js.map +1 -1
  192. package/dist/index230.js +22 -50
  193. package/dist/index230.js.map +1 -1
  194. package/dist/index231.js +7 -20
  195. package/dist/index231.js.map +1 -1
  196. package/dist/index232.js +9 -27
  197. package/dist/index232.js.map +1 -1
  198. package/dist/index233.js +17 -97
  199. package/dist/index233.js.map +1 -1
  200. package/dist/index234.js +50 -33
  201. package/dist/index234.js.map +1 -1
  202. package/dist/index235.js +20 -119
  203. package/dist/index235.js.map +1 -1
  204. package/dist/index236.js +28 -13
  205. package/dist/index236.js.map +1 -1
  206. package/dist/index237.js +98 -4
  207. package/dist/index237.js.map +1 -1
  208. package/dist/index238.js +33 -15
  209. package/dist/index238.js.map +1 -1
  210. package/dist/index239.js +116 -62
  211. package/dist/index239.js.map +1 -1
  212. package/dist/index24.js.map +1 -1
  213. package/dist/index240.js +13 -10
  214. package/dist/index240.js.map +1 -1
  215. package/dist/index241.js +4 -109
  216. package/dist/index241.js.map +1 -1
  217. package/dist/index242.js +14 -14
  218. package/dist/index242.js.map +1 -1
  219. package/dist/index243.js +64 -12
  220. package/dist/index243.js.map +1 -1
  221. package/dist/index244.js +10 -5
  222. package/dist/index244.js.map +1 -1
  223. package/dist/index245.js +104 -318
  224. package/dist/index245.js.map +1 -1
  225. package/dist/index246.js +14 -66
  226. package/dist/index246.js.map +1 -1
  227. package/dist/index247.js +12 -232
  228. package/dist/index247.js.map +1 -1
  229. package/dist/index248.js +4 -270
  230. package/dist/index248.js.map +1 -1
  231. package/dist/index249.js +313 -309
  232. package/dist/index249.js.map +1 -1
  233. package/dist/index25.js.map +1 -1
  234. package/dist/index250.js +60 -171
  235. package/dist/index250.js.map +1 -1
  236. package/dist/index251.js +252 -8
  237. package/dist/index251.js.map +1 -1
  238. package/dist/index252.js +268 -41
  239. package/dist/index252.js.map +1 -1
  240. package/dist/index253.js +316 -47
  241. package/dist/index253.js.map +1 -1
  242. package/dist/index254.js +179 -9
  243. package/dist/index254.js.map +1 -1
  244. package/dist/index255.js +6 -50
  245. package/dist/index255.js.map +1 -1
  246. package/dist/index256.js +41 -51
  247. package/dist/index256.js.map +1 -1
  248. package/dist/index257.js +50 -7
  249. package/dist/index257.js.map +1 -1
  250. package/dist/index258.js +9 -10
  251. package/dist/index258.js.map +1 -1
  252. package/dist/index259.js +51 -61
  253. package/dist/index259.js.map +1 -1
  254. package/dist/index26.js.map +1 -1
  255. package/dist/index260.js +53 -42
  256. package/dist/index260.js.map +1 -1
  257. package/dist/index261.js +9 -97
  258. package/dist/index261.js.map +1 -1
  259. package/dist/index262.js +31 -47
  260. package/dist/index262.js.map +1 -1
  261. package/dist/index263.js +61 -36
  262. package/dist/index263.js.map +1 -1
  263. package/dist/index264.js +43 -47
  264. package/dist/index264.js.map +1 -1
  265. package/dist/index265.js +92 -46
  266. package/dist/index265.js.map +1 -1
  267. package/dist/index266.js +48 -20
  268. package/dist/index266.js.map +1 -1
  269. package/dist/index267.js +33 -176
  270. package/dist/index267.js.map +1 -1
  271. package/dist/index268.js +49 -48
  272. package/dist/index268.js.map +1 -1
  273. package/dist/index269.js +68 -15
  274. package/dist/index269.js.map +1 -1
  275. package/dist/index27.js.map +1 -1
  276. package/dist/index270.js +20 -65
  277. package/dist/index270.js.map +1 -1
  278. package/dist/index271.js +202 -9
  279. package/dist/index271.js.map +1 -1
  280. package/dist/index272.js +48 -40
  281. package/dist/index272.js.map +1 -1
  282. package/dist/index273.js +60 -91
  283. package/dist/index273.js.map +1 -1
  284. package/dist/index274.js +9 -278
  285. package/dist/index274.js.map +1 -1
  286. package/dist/index275.js +38 -55
  287. package/dist/index275.js.map +1 -1
  288. package/dist/index276.js +91 -10
  289. package/dist/index276.js.map +1 -1
  290. package/dist/index277.js +278 -12
  291. package/dist/index277.js.map +1 -1
  292. package/dist/index278.js +58 -11
  293. package/dist/index278.js.map +1 -1
  294. package/dist/index279.js +11 -64
  295. package/dist/index279.js.map +1 -1
  296. package/dist/index28.js +5 -5
  297. package/dist/index28.js.map +1 -1
  298. package/dist/index280.js +12 -6
  299. package/dist/index280.js.map +1 -1
  300. package/dist/index281.js +3 -25
  301. package/dist/index281.js.map +1 -1
  302. package/dist/index282.js +3 -25
  303. package/dist/index282.js.map +1 -1
  304. package/dist/index283.js +12 -126
  305. package/dist/index283.js.map +1 -1
  306. package/dist/index284.js +63 -51
  307. package/dist/index284.js.map +1 -1
  308. package/dist/index285.js +5 -60
  309. package/dist/index285.js.map +1 -1
  310. package/dist/index286.js +24 -48
  311. package/dist/index286.js.map +1 -1
  312. package/dist/index287.js +24 -6
  313. package/dist/index287.js.map +1 -1
  314. package/dist/index288.js +125 -14
  315. package/dist/index288.js.map +1 -1
  316. package/dist/index289.js +51 -16
  317. package/dist/index289.js.map +1 -1
  318. package/dist/index29.js +5 -7
  319. package/dist/index29.js.map +1 -1
  320. package/dist/index290.js +56 -11
  321. package/dist/index290.js.map +1 -1
  322. package/dist/index291.js +47 -24
  323. package/dist/index291.js.map +1 -1
  324. package/dist/index292.js +7 -51
  325. package/dist/index292.js.map +1 -1
  326. package/dist/index293.js +15 -6
  327. package/dist/index293.js.map +1 -1
  328. package/dist/index294.js +18 -148
  329. package/dist/index294.js.map +1 -1
  330. package/dist/index295.js +12 -59
  331. package/dist/index295.js.map +1 -1
  332. package/dist/index296.js +25 -120
  333. package/dist/index296.js.map +1 -1
  334. package/dist/index297.js +54 -15
  335. package/dist/index297.js.map +1 -1
  336. package/dist/index298.js +5 -866
  337. package/dist/index298.js.map +1 -1
  338. package/dist/index299.js +148 -28
  339. package/dist/index299.js.map +1 -1
  340. package/dist/index3.js.map +1 -1
  341. package/dist/index30.js +6 -8
  342. package/dist/index30.js.map +1 -1
  343. package/dist/index300.js +55 -512
  344. package/dist/index300.js.map +1 -1
  345. package/dist/index301.js +111 -794
  346. package/dist/index301.js.map +1 -1
  347. package/dist/index302.js +14 -7436
  348. package/dist/index302.js.map +1 -1
  349. package/dist/index303.js +862 -6
  350. package/dist/index303.js.map +1 -1
  351. package/dist/index304.js +28 -12
  352. package/dist/index304.js.map +1 -1
  353. package/dist/index305.js +515 -5
  354. package/dist/index305.js.map +1 -1
  355. package/dist/index306.js +803 -5
  356. package/dist/index306.js.map +1 -1
  357. package/dist/index307.js +7426 -468
  358. package/dist/index307.js.map +1 -1
  359. package/dist/index308.js +6 -37
  360. package/dist/index308.js.map +1 -1
  361. package/dist/index309.js +12 -19
  362. package/dist/index309.js.map +1 -1
  363. package/dist/index31.js +5 -11
  364. package/dist/index31.js.map +1 -1
  365. package/dist/index310.js +5 -30
  366. package/dist/index310.js.map +1 -1
  367. package/dist/index311.js +5 -4
  368. package/dist/index311.js.map +1 -1
  369. package/dist/index312.js +461 -51
  370. package/dist/index312.js.map +1 -1
  371. package/dist/index313.js +36 -10
  372. package/dist/index313.js.map +1 -1
  373. package/dist/index314.js +19 -5
  374. package/dist/index314.js.map +1 -1
  375. package/dist/index315.js +29 -8
  376. package/dist/index315.js.map +1 -1
  377. package/dist/index316.js +4 -12
  378. package/dist/index316.js.map +1 -1
  379. package/dist/index317.js +60 -3
  380. package/dist/index317.js.map +1 -1
  381. package/dist/index318.js +10 -15
  382. package/dist/index318.js.map +1 -1
  383. package/dist/index319.js +5 -25
  384. package/dist/index319.js.map +1 -1
  385. package/dist/index32.js +5 -5
  386. package/dist/index32.js.map +1 -1
  387. package/dist/index320.js +9 -41
  388. package/dist/index320.js.map +1 -1
  389. package/dist/index321.js +11 -4
  390. package/dist/index321.js.map +1 -1
  391. package/dist/index322.js +3 -26
  392. package/dist/index322.js.map +1 -1
  393. package/dist/index323.js +15 -18
  394. package/dist/index323.js.map +1 -1
  395. package/dist/index324.js +22 -31
  396. package/dist/index324.js.map +1 -1
  397. package/dist/index325.js +41 -5
  398. package/dist/index325.js.map +1 -1
  399. package/dist/index326.js +4 -8
  400. package/dist/index326.js.map +1 -1
  401. package/dist/index327.js +25 -8
  402. package/dist/index327.js.map +1 -1
  403. package/dist/index328.js +19 -9
  404. package/dist/index328.js.map +1 -1
  405. package/dist/index329.js +34 -10
  406. package/dist/index329.js.map +1 -1
  407. package/dist/index33.js +9 -6
  408. package/dist/index33.js.map +1 -1
  409. package/dist/index330.js +5 -7
  410. package/dist/index330.js.map +1 -1
  411. package/dist/index331.js +9 -75
  412. package/dist/index331.js.map +1 -1
  413. package/dist/index332.js +8 -162
  414. package/dist/index332.js.map +1 -1
  415. package/dist/index333.js +9 -114
  416. package/dist/index333.js.map +1 -1
  417. package/dist/index334.js +10 -14
  418. package/dist/index334.js.map +1 -1
  419. package/dist/index335.js +7 -80
  420. package/dist/index335.js.map +1 -1
  421. package/dist/index336.js +68 -39
  422. package/dist/index336.js.map +1 -1
  423. package/dist/index337.js +160 -11
  424. package/dist/index337.js.map +1 -1
  425. package/dist/index338.js +113 -15
  426. package/dist/index338.js.map +1 -1
  427. package/dist/index339.js +13 -100
  428. package/dist/index339.js.map +1 -1
  429. package/dist/index34.js +6 -6
  430. package/dist/index34.js.map +1 -1
  431. package/dist/index340.js +73 -49
  432. package/dist/index340.js.map +1 -1
  433. package/dist/index341.js +34 -96
  434. package/dist/index341.js.map +1 -1
  435. package/dist/index342.js +12 -70
  436. package/dist/index342.js.map +1 -1
  437. package/dist/index343.js +14 -111
  438. package/dist/index343.js.map +1 -1
  439. package/dist/index344.js +94 -48
  440. package/dist/index344.js.map +1 -1
  441. package/dist/index345.js +50 -37
  442. package/dist/index345.js.map +1 -1
  443. package/dist/index346.js +89 -125
  444. package/dist/index346.js.map +1 -1
  445. package/dist/index347.js +52 -123
  446. package/dist/index347.js.map +1 -1
  447. package/dist/index348.js +54 -197
  448. package/dist/index348.js.map +1 -1
  449. package/dist/index349.js +44 -229
  450. package/dist/index349.js.map +1 -1
  451. package/dist/index35.js +9 -9
  452. package/dist/index35.js.map +1 -1
  453. package/dist/index350.js +42 -308
  454. package/dist/index350.js.map +1 -1
  455. package/dist/index351.js +144 -5
  456. package/dist/index351.js.map +1 -1
  457. package/dist/index352.js +142 -6
  458. package/dist/index352.js.map +1 -1
  459. package/dist/index353.js +257 -7
  460. package/dist/index353.js.map +1 -1
  461. package/dist/index354.js +241 -6
  462. package/dist/index354.js.map +1 -1
  463. package/dist/index355.js +309 -6
  464. package/dist/index355.js.map +1 -1
  465. package/dist/index356.js +5 -21
  466. package/dist/index356.js.map +1 -1
  467. package/dist/index357.js +6 -10
  468. package/dist/index357.js.map +1 -1
  469. package/dist/index358.js +7 -128
  470. package/dist/index358.js.map +1 -1
  471. package/dist/index359.js +6 -42
  472. package/dist/index359.js.map +1 -1
  473. package/dist/index36.js +12 -7
  474. package/dist/index36.js.map +1 -1
  475. package/dist/index360.js +6 -68
  476. package/dist/index360.js.map +1 -1
  477. package/dist/index361.js +20 -116
  478. package/dist/index361.js.map +1 -1
  479. package/dist/index362.js +10 -490
  480. package/dist/index362.js.map +1 -1
  481. package/dist/index363.js +128 -7
  482. package/dist/index363.js.map +1 -1
  483. package/dist/index364.js +42 -13
  484. package/dist/index364.js.map +1 -1
  485. package/dist/index365.js +67 -3
  486. package/dist/index365.js.map +1 -1
  487. package/dist/index366.js +115 -45
  488. package/dist/index366.js.map +1 -1
  489. package/dist/index367.js +490 -11
  490. package/dist/index367.js.map +1 -1
  491. package/dist/index368.js +8 -26
  492. package/dist/index368.js.map +1 -1
  493. package/dist/index369.js +12 -41
  494. package/dist/index369.js.map +1 -1
  495. package/dist/index37.js +13 -5
  496. package/dist/index37.js.map +1 -1
  497. package/dist/index370.js +4 -36
  498. package/dist/index370.js.map +1 -1
  499. package/dist/index371.js +45 -15
  500. package/dist/index371.js.map +1 -1
  501. package/dist/index372.js +24 -41
  502. package/dist/index372.js.map +1 -1
  503. package/dist/index373.js +3 -12
  504. package/dist/index373.js.map +1 -1
  505. package/dist/index374.js +27 -11
  506. package/dist/index374.js.map +1 -1
  507. package/dist/index375.js +40 -50
  508. package/dist/index375.js.map +1 -1
  509. package/dist/index376.js +37 -40
  510. package/dist/index376.js.map +1 -1
  511. package/dist/index377.js +12 -10
  512. package/dist/index377.js.map +1 -1
  513. package/dist/index378.js +40 -4
  514. package/dist/index378.js.map +1 -1
  515. package/dist/index379.js +7 -4
  516. package/dist/index379.js.map +1 -1
  517. package/dist/index38.js +5 -5
  518. package/dist/index38.js.map +1 -1
  519. package/dist/index380.js +29 -8
  520. package/dist/index380.js.map +1 -1
  521. package/dist/index381.js +9 -303
  522. package/dist/index381.js.map +1 -1
  523. package/dist/index382.js +57 -4
  524. package/dist/index382.js.map +1 -1
  525. package/dist/index383.js +40 -22
  526. package/dist/index383.js.map +1 -1
  527. package/dist/index384.js +15 -105
  528. package/dist/index384.js.map +1 -1
  529. package/dist/index385.js +5 -22
  530. package/dist/index385.js.map +1 -1
  531. package/dist/index386.js +10 -22
  532. package/dist/index386.js.map +1 -1
  533. package/dist/index387.js +289 -16
  534. package/dist/index387.js.map +1 -1
  535. package/dist/index388.js +4 -12
  536. package/dist/index388.js.map +1 -1
  537. package/dist/index389.js +20 -112
  538. package/dist/index389.js.map +1 -1
  539. package/dist/index39.js +6 -10
  540. package/dist/index39.js.map +1 -1
  541. package/dist/index390.js +3 -9
  542. package/dist/index390.js.map +1 -1
  543. package/dist/index391.js +104 -27
  544. package/dist/index391.js.map +1 -1
  545. package/dist/index392.js +20 -9
  546. package/dist/index392.js.map +1 -1
  547. package/dist/index393.js +20 -6
  548. package/dist/index393.js.map +1 -1
  549. package/dist/index394.js +14 -253
  550. package/dist/index394.js.map +1 -1
  551. package/dist/index395.js +12 -10
  552. package/dist/index395.js.map +1 -1
  553. package/dist/index396.js +117 -11
  554. package/dist/index396.js.map +1 -1
  555. package/dist/index397.js +8 -6
  556. package/dist/index397.js.map +1 -1
  557. package/dist/index398.js +32 -22
  558. package/dist/index398.js.map +1 -1
  559. package/dist/index399.js +9 -23
  560. package/dist/index399.js.map +1 -1
  561. package/dist/index4.js.map +1 -1
  562. package/dist/index40.js +8 -11
  563. package/dist/index40.js.map +1 -1
  564. package/dist/index400.js +6 -105
  565. package/dist/index400.js.map +1 -1
  566. package/dist/index401.js +3 -15
  567. package/dist/index401.js.map +1 -1
  568. package/dist/index402.js +251 -10
  569. package/dist/index402.js.map +1 -1
  570. package/dist/index403.js +9 -7
  571. package/dist/index403.js.map +1 -1
  572. package/dist/index404.js +11 -239
  573. package/dist/index404.js.map +1 -1
  574. package/dist/index405.js +7 -28
  575. package/dist/index405.js.map +1 -1
  576. package/dist/index406.js +21 -37
  577. package/dist/index406.js.map +1 -1
  578. package/dist/index407.js +21 -10
  579. package/dist/index407.js.map +1 -1
  580. package/dist/index408.js +97 -117
  581. package/dist/index408.js.map +1 -1
  582. package/dist/index409.js +15 -40
  583. package/dist/index409.js.map +1 -1
  584. package/dist/index41.js +6 -7
  585. package/dist/index41.js.map +1 -1
  586. package/dist/index410.js +11 -25
  587. package/dist/index410.js.map +1 -1
  588. package/dist/index411.js +7 -9
  589. package/dist/index411.js.map +1 -1
  590. package/dist/index412.js +3 -24
  591. package/dist/index412.js.map +1 -1
  592. package/dist/index413.js +226 -15
  593. package/dist/index413.js.map +1 -1
  594. package/dist/index414.js +24 -11
  595. package/dist/index414.js.map +1 -1
  596. package/dist/index415.js +38 -4
  597. package/dist/index415.js.map +1 -1
  598. package/dist/index416.js +11 -324
  599. package/dist/index416.js.map +1 -1
  600. package/dist/index417.js +119 -62
  601. package/dist/index417.js.map +1 -1
  602. package/dist/index418.js +42 -4
  603. package/dist/index418.js.map +1 -1
  604. package/dist/index419.js +25 -28
  605. package/dist/index419.js.map +1 -1
  606. package/dist/index42.js +6 -4
  607. package/dist/index42.js.map +1 -1
  608. package/dist/index420.js +11 -470
  609. package/dist/index420.js.map +1 -1
  610. package/dist/index421.js +23 -268
  611. package/dist/index421.js.map +1 -1
  612. package/dist/index422.js +24 -0
  613. package/dist/index422.js.map +1 -0
  614. package/dist/index423.js +17 -0
  615. package/dist/index423.js.map +1 -0
  616. package/dist/index424.js +8 -0
  617. package/dist/index424.js.map +1 -0
  618. package/dist/index425.js +328 -0
  619. package/dist/index425.js.map +1 -0
  620. package/dist/index426.js +66 -0
  621. package/dist/index426.js.map +1 -0
  622. package/dist/index427.js +7 -0
  623. package/dist/index427.js.map +1 -0
  624. package/dist/index428.js +31 -0
  625. package/dist/index428.js.map +1 -0
  626. package/dist/index429.js +474 -0
  627. package/dist/index429.js.map +1 -0
  628. package/dist/index43.js +68 -7
  629. package/dist/index43.js.map +1 -1
  630. package/dist/index430.js +272 -0
  631. package/dist/index430.js.map +1 -0
  632. package/dist/index44.js +7 -6
  633. package/dist/index44.js.map +1 -1
  634. package/dist/index45.js +31 -7
  635. package/dist/index45.js.map +1 -1
  636. package/dist/index46.js +10 -10
  637. package/dist/index46.js.map +1 -1
  638. package/dist/index47.js +15 -13
  639. package/dist/index47.js.map +1 -1
  640. package/dist/index48.js +201 -7
  641. package/dist/index48.js.map +1 -1
  642. package/dist/index49.js +20 -6
  643. package/dist/index49.js.map +1 -1
  644. package/dist/index5.js.map +1 -1
  645. package/dist/index50.js +16 -6
  646. package/dist/index50.js.map +1 -1
  647. package/dist/index51.js +123 -14
  648. package/dist/index51.js.map +1 -1
  649. package/dist/index52.js +19 -8
  650. package/dist/index52.js.map +1 -1
  651. package/dist/index53.js +5 -7
  652. package/dist/index53.js.map +1 -1
  653. package/dist/index54.js +9 -68
  654. package/dist/index54.js.map +1 -1
  655. package/dist/index55.js +7 -7
  656. package/dist/index55.js.map +1 -1
  657. package/dist/index56.js +9 -31
  658. package/dist/index56.js.map +1 -1
  659. package/dist/index57.js +13 -10
  660. package/dist/index57.js.map +1 -1
  661. package/dist/index58.js +8 -15
  662. package/dist/index58.js.map +1 -1
  663. package/dist/index59.js +10 -201
  664. package/dist/index59.js.map +1 -1
  665. package/dist/index6.js.map +1 -1
  666. package/dist/index60.js +13 -20
  667. package/dist/index60.js.map +1 -1
  668. package/dist/index61.js +9 -16
  669. package/dist/index61.js.map +1 -1
  670. package/dist/index62.js +10 -123
  671. package/dist/index62.js.map +1 -1
  672. package/dist/index63.js +5 -19
  673. package/dist/index63.js.map +1 -1
  674. package/dist/index64.js +42 -9
  675. package/dist/index64.js.map +1 -1
  676. package/dist/index65.js +387 -9
  677. package/dist/index65.js.map +1 -1
  678. package/dist/index66.js +37 -14
  679. package/dist/index66.js.map +1 -1
  680. package/dist/index67.js +21 -9
  681. package/dist/index67.js.map +1 -1
  682. package/dist/index68.js +4 -9
  683. package/dist/index68.js.map +1 -1
  684. package/dist/index69.js +6 -4
  685. package/dist/index69.js.map +1 -1
  686. package/dist/index7.js +3 -3
  687. package/dist/index7.js.map +1 -1
  688. package/dist/index70.js +57 -41
  689. package/dist/index70.js.map +1 -1
  690. package/dist/index71.js +5 -387
  691. package/dist/index71.js.map +1 -1
  692. package/dist/index72.js +6 -37
  693. package/dist/index72.js.map +1 -1
  694. package/dist/index73.js +5 -21
  695. package/dist/index73.js.map +1 -1
  696. package/dist/index74.js +4 -56
  697. package/dist/index74.js.map +1 -1
  698. package/dist/index75.js +7 -7
  699. package/dist/index75.js.map +1 -1
  700. package/dist/index76.js +6 -5
  701. package/dist/index76.js.map +1 -1
  702. package/dist/index77.js +6 -5
  703. package/dist/index77.js.map +1 -1
  704. package/dist/index78.js +11 -5
  705. package/dist/index78.js.map +1 -1
  706. package/dist/index79.js +11 -5
  707. package/dist/index79.js.map +1 -1
  708. package/dist/index8.js.map +1 -1
  709. package/dist/index80.js +7 -6
  710. package/dist/index80.js.map +1 -1
  711. package/dist/index81.js +10 -6
  712. package/dist/index81.js.map +1 -1
  713. package/dist/index82.js +5 -8
  714. package/dist/index82.js.map +1 -1
  715. package/dist/index83.js +6 -7
  716. package/dist/index83.js.map +1 -1
  717. package/dist/index84.js.map +1 -1
  718. package/dist/index85.js.map +1 -1
  719. package/dist/index86.js.map +1 -1
  720. package/dist/index87.js +2 -2
  721. package/dist/index87.js.map +1 -1
  722. package/dist/index88.js +31 -31
  723. package/dist/index88.js.map +1 -1
  724. package/dist/index89.js +1 -1
  725. package/dist/index89.js.map +1 -1
  726. package/dist/index9.js.map +1 -1
  727. package/dist/index90.js.map +1 -1
  728. package/dist/index91.js.map +1 -1
  729. package/dist/index92.js.map +1 -1
  730. package/dist/index93.js.map +1 -1
  731. package/dist/index94.js.map +1 -1
  732. package/dist/index95.js.map +1 -1
  733. package/dist/index96.js.map +1 -1
  734. package/dist/index97.js.map +1 -1
  735. package/dist/index98.js.map +1 -1
  736. package/dist/index99.js.map +1 -1
  737. package/package.json +13 -13
  738. package/dist/assets/sha256.worker-BEf4_Y9w.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index298.js","names":["{\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 id: item.id,\n disabled,\n }","id","() => {\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 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]","CSS.Transform.toString(transform)","{\n transform: CSS.Transform.toString(transform),\n transition,\n }","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 )","alt","fileName","previewUrl","progress","status","uploadKey","url","(node) => {\n tileRef.current = node\n setNodeRef(node)\n }","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 )","isDraggingExternal && \"opacity-0\"","!disabled && \"cursor-grab active:cursor-grabbing\"","isDragging && \"cursor-grabbing\"","disabled && \"cursor-default\"","isDragging && \"z-20 ring-2 ring-primary shadow-xl\"","() => {\n updatePreviewPosition()\n onHoverEnter()\n }","(event) => {\n const next = event.relatedTarget\n if (next instanceof Node && previewRef.current?.contains(next)) return\n onHoverLeave()\n }","() => {\n if (disabled) return\n onRemove(item.id)\n }","<X className=\"h-4 w-4\" />","<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>","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 })()","next","event","isUploading && (\n <div\n className=\"absolute inset-0 z-20 flex flex-col items-center justify-center gap-2 rounded-lg bg-black/40 text-white\"\n role=\"progressbar\"\n aria-label={item.fileName ?? item.alt ?? \"File\"}\n aria-valuemin={0}\n aria-valuemax={100}\n aria-valuenow={item.progress}\n >\n <Loader2 className=\"h-5 w-5 animate-spin\" aria-hidden=\"true\" />\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 )","isError && (\n <div\n className=\"absolute inset-0 z-10 flex flex-col items-center justify-center gap-2 rounded-lg bg-red-600/70 text-white\"\n role=\"alert\"\n >\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 )","errorMessage","<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\n className=\"absolute inset-0 z-20 flex flex-col items-center justify-center gap-2 rounded-lg bg-black/40 text-white\"\n role=\"progressbar\"\n aria-label={item.fileName ?? item.alt ?? \"File\"}\n aria-valuemin={0}\n aria-valuemax={100}\n aria-valuenow={item.progress}\n >\n <Loader2 className=\"h-5 w-5 animate-spin\" aria-hidden=\"true\" />\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\n className=\"absolute inset-0 z-10 flex flex-col items-center justify-center gap-2 rounded-lg bg-red-600/70 text-white\"\n role=\"alert\"\n >\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>"],"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, getImageSrcSet, isRpcbaseFileImageSrc, withImageWidth } from \"../Image\"\nimport Sha256Worker from \"./sha256.worker.ts?worker&inline\"\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 fileId?: string\n deduplicated?: boolean\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\ntype HashWorkerResponse =\n | { ok: true; hash: string }\n | { ok: false; error: string }\n\nconst sha256FileHex = async (file: File, signal?: AbortSignal): Promise<string> => {\n if (typeof Worker === \"undefined\") {\n throw new Error(\"File hashing is not supported in this browser\")\n }\n\n return new Promise((resolve, reject) => {\n const worker = new Sha256Worker()\n\n const cleanup = () => {\n signal?.removeEventListener(\"abort\", handleAbort)\n worker.terminate()\n }\n\n const handleAbort = () => {\n cleanup()\n const error = new Error(\"Upload aborted\")\n error.name = \"AbortError\"\n reject(error)\n }\n\n if (signal?.aborted) {\n handleAbort()\n return\n }\n\n signal?.addEventListener(\"abort\", handleAbort, { once: true })\n worker.onerror = () => {\n cleanup()\n reject(new Error(\"Unable to hash file\"))\n }\n worker.onmessage = (event: MessageEvent<HashWorkerResponse>) => {\n cleanup()\n if (event.data.ok) {\n resolve(event.data.hash)\n return\n }\n reject(new Error(event.data.error === \"hash_unavailable\" ? \"File hashing is not supported in this browser\" : \"Unable to hash file\"))\n }\n worker.postMessage(file)\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: FilesUploadFieldUploadHandler = async (file, onProgress, options) => {\n const deduplicationNamespace = options?.deduplicationNamespace?.trim()\n const fileHash = deduplicationNamespace\n ? await sha256FileHex(file, options?.signal)\n : null\n\n const initRes = await postJson<FileUploadsInitResponse>(\n \"/api/rb/file-uploads\",\n {\n filename: file.name,\n mimeType: file.type || \"application/octet-stream\",\n ...(options?.accessScope\n ? { accessScope: options.accessScope }\n : typeof options?.isPublic === \"boolean\"\n ? { isPublic: options.isPublic }\n : {}),\n ...(deduplicationNamespace && fileHash\n ? {\n deduplication: {\n namespace: deduplicationNamespace,\n algorithm: \"sha256\",\n hash: fileHash,\n },\n }\n : {}),\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 deduplicatedFileId = String((initRes.data as any)?.fileId ?? \"\").trim()\n if ((initRes.data as any)?.deduplicated === true && deduplicatedFileId) {\n const deduplicatedUploadKey = typeof (initRes.data as any)?.uploadKey === \"string\"\n ? String((initRes.data as any).uploadKey)\n : null\n onProgress(100)\n return {\n id: deduplicatedFileId,\n url: `/api/rb/files/${encodeURIComponent(deduplicatedFileId)}`,\n alt: file.name,\n ...(deduplicatedUploadKey ? { uploadKey: deduplicatedUploadKey } : {}),\n }\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\n className=\"absolute inset-0 z-20 flex flex-col items-center justify-center gap-2 rounded-lg bg-black/40 text-white\"\n role=\"progressbar\"\n aria-label={item.fileName ?? item.alt ?? \"File\"}\n aria-valuemin={0}\n aria-valuemax={100}\n aria-valuenow={item.progress}\n >\n <Loader2 className=\"h-5 w-5 animate-spin\" aria-hidden=\"true\" />\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\n className=\"absolute inset-0 z-10 flex flex-col items-center justify-center gap-2 rounded-lg bg-red-600/70 text-white\"\n role=\"alert\"\n >\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\nexport type FileUploadAccessScope = \"owner\" | \"tenant\" | \"public\"\n\nexport type FilesUploadFieldUploadOptions = {\n signal?: AbortSignal\n isPublic?: boolean\n accessScope?: FileUploadAccessScope\n deduplicationNamespace?: string\n}\n\nexport type FilesUploadFieldUploadHandler = (\n file: File,\n onProgress: (progress: number) => void,\n options?: FilesUploadFieldUploadOptions,\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\ntype FilesUploadFieldBaseProps = {\n initialFiles?: FilesUploadFieldFile[]\n onChange?: (files: FilesUploadFieldFile[]) => void\n upload?: FilesUploadFieldUploadHandler\n uploadDeduplicationNamespace?: string\n maxFiles?: number\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 FilesUploadFieldVisibilityProps =\n | { uploadAccessScope?: never; uploadIsPublic?: boolean }\n | { uploadAccessScope: FileUploadAccessScope; uploadIsPublic?: never }\n\nexport type FilesUploadFieldProps = FilesUploadFieldBaseProps & FilesUploadFieldVisibilityProps\n\ntype FileWithState = FilesUploadFieldFile & {\n renderKey: string\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\nasync function preloadImagePreview(src: string) {\n const image = document.createElement(\"img\")\n const srcSet = getImageSrcSet(src)\n if (srcSet) {\n image.srcset = srcSet\n image.sizes = \"96px\"\n }\n image.src = isRpcbaseFileImageSrc(src) ? withImageWidth(src, 960) : src\n if (typeof image.decode === \"function\") {\n await image.decode().catch(() => undefined)\n return\n }\n if (image.complete) return\n\n await new Promise<void>((resolve) => {\n image.onload = () => resolve()\n image.onerror = () => resolve()\n })\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,\n uploadAccessScope,\n uploadDeduplicationNamespace,\n maxFiles,\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) => ({\n ...file,\n renderKey: file.id,\n previewUrl: file.url,\n status: \"uploaded\",\n progress: 100,\n }))\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 renderKeysById = new Map(imagesRef.current.map((img) => [img.id, img.renderKey]))\n const prepared: FileWithState[] = initialFiles.map((img) => ({\n ...img,\n renderKey: renderKeysById.get(img.id) ?? img.id,\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 normalizedMaxFiles = typeof maxFiles === \"number\" && Number.isFinite(maxFiles) && maxFiles > 0\n ? Math.floor(maxFiles)\n : null\n const remaining = normalizedMaxFiles === null\n ? Number.POSITIVE_INFINITY\n : Math.max(0, normalizedMaxFiles - imagesRef.current.length)\n const list = Array.from(files).slice(0, remaining)\n if (!list.length) return\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 renderKey: tempId,\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, {\n signal: controller.signal,\n ...(uploadAccessScope ? { accessScope: uploadAccessScope } : { isPublic: uploadIsPublic ?? false }),\n ...(uploadDeduplicationNamespace ? { deduplicationNamespace: uploadDeduplicationNamespace } : {}),\n })\n replacedIdRef.current.set(tempId, result.id)\n\n const tempUrl = objectUrlRef.current.get(tempId)\n if (file.type.startsWith(\"image/\")) {\n await preloadImagePreview(result.url)\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\n if (tempUrl) {\n objectUrlRef.current.delete(tempId)\n window.requestAnimationFrame(() => URL.revokeObjectURL(tempUrl))\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, {\n signal: controller.signal,\n ...(uploadAccessScope ? { accessScope: uploadAccessScope } : { isPublic: uploadIsPublic ?? false }),\n ...(uploadDeduplicationNamespace ? { deduplicationNamespace: uploadDeduplicationNamespace } : {}),\n })\n replacedIdRef.current.set(id, result.id)\n\n const tempUrl = objectUrlRef.current.get(id)\n if (file.type.startsWith(\"image/\")) {\n await preloadImagePreview(result.url)\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\n if (tempUrl) {\n objectUrlRef.current.delete(id)\n window.requestAnimationFrame(() => URL.revokeObjectURL(tempUrl))\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 const normalizedMaxFiles = typeof maxFiles === \"number\" && Number.isFinite(maxFiles) && maxFiles > 0\n ? Math.floor(maxFiles)\n : null\n const canAddFiles = !disabled && (normalizedMaxFiles === null || images.length < normalizedMaxFiles)\n const statusItem = images.find((item) => item.status === \"error\") ??\n images.find((item) => item.status === \"uploading\")\n const uploadStatusMessage = statusItem\n ? statusItem.status === \"error\"\n ? getErrorLabel(statusItem.errorMessage)\n : `${statusItem.fileName ?? statusItem.alt ?? \"File\"}: ${statusItem.progress}%`\n : \"\"\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 (canAddFiles) {\n setDragActive(true)\n }\n }}\n onDragLeave={() => setDragActive(false)}\n onDrop={(event) => {\n event.preventDefault()\n setDragActive(false)\n if (canAddFiles && 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 <div role=\"status\" className=\"sr-only\">{uploadStatusMessage}</div>\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.renderKey}\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 {canAddFiles && (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={normalizedMaxFiles !== 1}\n disabled={!canAddFiles}\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"],"mappings":"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"}
1
+ {"version":3,"file":"index298.js","names":["React","React$1","renderAsChild","asChild","children","render"],"sources":["../src/lib/render-as-child.ts"],"sourcesContent":["import * as React from \"react\"\n\n\ntype RenderProp = React.ReactElement | ((props: any, state: any) => React.ReactElement)\n\nexport function renderAsChild(\n asChild: boolean | undefined,\n render: RenderProp | undefined,\n children: React.ReactNode,\n) {\n if (!asChild) return render\n return React.Children.only(children) as React.ReactElement\n}\n"],"mappings":";;AAKA,SAAgBE,EACd,GACA,GACA,GACA;CAEA,OADKC,IACEH,EAAM,SAAS,KAAKI,CAAQ,IADdC;AAEvB"}
package/dist/index299.js CHANGED
@@ -1,32 +1,152 @@
1
- import { FilesUploadField as e } from "./index298.js";
2
- import { c as t } from "react/compiler-runtime";
3
- import { jsx as n } from "react/jsx-runtime";
4
- //#region src/components/ImagesField/index.tsx
5
- var r = [
6
- "image/*",
7
- ".heic",
8
- ".heif",
9
- "image/heic",
10
- "image/heif",
11
- "image/heic-sequence",
12
- "image/heif-sequence"
13
- ];
14
- function i(i) {
15
- let a = t(16), o, s, c, l, u, d;
16
- a[0] === i ? (o = a[1], s = a[2], c = a[3], l = a[4], u = a[5], d = a[6]) : ({initialImages: c, onChange: o, accept: l, addButtonAriaLabel: u, removeButtonAriaLabel: d, ...s} = i, a[0] = i, a[1] = o, a[2] = s, a[3] = c, a[4] = l, a[5] = u, a[6] = d);
17
- let f;
18
- a[7] === c ? f = a[8] : (f = c === void 0 ? [] : c, a[7] = c, a[8] = f);
19
- let p = f, m = l === void 0 ? r : l, h = u === void 0 ? "Ajouter une image" : u, g = d === void 0 ? "Supprimer l'image" : d, _;
20
- return a[9] !== m || a[10] !== h || a[11] !== p || a[12] !== o || a[13] !== s || a[14] !== g ? (_ = /* @__PURE__ */ n(e, {
21
- initialFiles: p,
22
- onChange: o,
23
- accept: m,
24
- addButtonAriaLabel: h,
25
- removeButtonAriaLabel: g,
26
- ...s
27
- }), a[9] = m, a[10] = h, a[11] = p, a[12] = o, a[13] = s, a[14] = g, a[15] = _) : _ = a[15], _;
1
+ import { cn as e } from "./index12.js";
2
+ import { DialogBackdrop as t } from "./index203.js";
3
+ import { DialogClose as n } from "./index216.js";
4
+ import { DialogDescription as r } from "./index219.js";
5
+ import { DialogPopup as i } from "./index284.js";
6
+ import { DialogPortal as a } from "./index287.js";
7
+ import { DialogRoot as o } from "./index292.js";
8
+ import { DialogTitle as s } from "./index293.js";
9
+ import { DialogTrigger as c } from "./index297.js";
10
+ import { renderAsChild as l } from "./index298.js";
11
+ import { c as u } from "react/compiler-runtime";
12
+ import * as d from "react";
13
+ import { XIcon as f } from "lucide-react";
14
+ import { jsx as p, jsxs as m } from "react/jsx-runtime";
15
+ //#region src/components/Dialog/index.tsx
16
+ function h(e) {
17
+ let t = u(4), n;
18
+ t[0] === e ? n = t[1] : ({...n} = e, t[0] = e, t[1] = n);
19
+ let r;
20
+ return t[2] === n ? r = t[3] : (r = /* @__PURE__ */ p(o, {
21
+ "data-slot": "dialog",
22
+ ...n
23
+ }), t[2] = n, t[3] = r), r;
24
+ }
25
+ function g(e) {
26
+ let t = u(13), n, r, i, a;
27
+ t[0] === e ? (n = t[1], r = t[2], i = t[3], a = t[4]) : ({asChild: n, render: a, children: r, ...i} = e, t[0] = e, t[1] = n, t[2] = r, t[3] = i, t[4] = a);
28
+ let o;
29
+ t[5] !== n || t[6] !== r || t[7] !== a ? (o = l(n, a, r), t[5] = n, t[6] = r, t[7] = a, t[8] = o) : o = t[8];
30
+ let s = n ? null : r, d;
31
+ return t[9] !== i || t[10] !== o || t[11] !== s ? (d = /* @__PURE__ */ p(c, {
32
+ "data-slot": "dialog-trigger",
33
+ render: o,
34
+ ...i,
35
+ children: s
36
+ }), t[9] = i, t[10] = o, t[11] = s, t[12] = d) : d = t[12], d;
37
+ }
38
+ function _(e) {
39
+ let t = u(4), n;
40
+ t[0] === e ? n = t[1] : ({...n} = e, t[0] = e, t[1] = n);
41
+ let r;
42
+ return t[2] === n ? r = t[3] : (r = /* @__PURE__ */ p(a, {
43
+ "data-slot": "dialog-portal",
44
+ ...n
45
+ }), t[2] = n, t[3] = r), r;
46
+ }
47
+ function v(e) {
48
+ let t = u(13), r, i, a, o;
49
+ t[0] === e ? (r = t[1], i = t[2], a = t[3], o = t[4]) : ({asChild: r, render: o, children: i, ...a} = e, t[0] = e, t[1] = r, t[2] = i, t[3] = a, t[4] = o);
50
+ let s;
51
+ t[5] !== r || t[6] !== i || t[7] !== o ? (s = l(r, o, i), t[5] = r, t[6] = i, t[7] = o, t[8] = s) : s = t[8];
52
+ let c = r ? null : i, d;
53
+ return t[9] !== a || t[10] !== s || t[11] !== c ? (d = /* @__PURE__ */ p(n, {
54
+ "data-slot": "dialog-close",
55
+ render: s,
56
+ ...a,
57
+ children: c
58
+ }), t[9] = a, t[10] = s, t[11] = c, t[12] = d) : d = t[12], d;
59
+ }
60
+ function y(n) {
61
+ let r = u(8), i, a;
62
+ r[0] === n ? (i = r[1], a = r[2]) : ({className: i, ...a} = n, r[0] = n, r[1] = i, r[2] = a);
63
+ let o;
64
+ r[3] === i ? o = r[4] : (o = e("data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 fixed inset-0 z-50 bg-black/50", i), r[3] = i, r[4] = o);
65
+ let s;
66
+ return r[5] !== a || r[6] !== o ? (s = /* @__PURE__ */ p(t, {
67
+ "data-slot": "dialog-overlay",
68
+ className: o,
69
+ ...a
70
+ }), r[5] = a, r[6] = o, r[7] = s) : s = r[7], s;
71
+ }
72
+ var b = d.forwardRef((t, r) => {
73
+ let a = u(18), o, s, c, l, d;
74
+ a[0] === t ? (o = a[1], s = a[2], c = a[3], l = a[4], d = a[5]) : ({className: s, children: o, showCloseButton: l, showCloseButtonOutside: d, ...c} = t, a[0] = t, a[1] = o, a[2] = s, a[3] = c, a[4] = l, a[5] = d);
75
+ let h = l === void 0 || l, g = d !== void 0 && d, v;
76
+ a[6] === Symbol.for("react.memo_cache_sentinel") ? (v = /* @__PURE__ */ p(y, {}), a[6] = v) : v = a[6];
77
+ let b;
78
+ a[7] === s ? b = a[8] : (b = e("bg-background data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 sm:max-w-lg", s), a[7] = s, a[8] = b);
79
+ let x;
80
+ a[9] !== h || a[10] !== g ? (x = h && /* @__PURE__ */ m(n, {
81
+ "data-slot": "dialog-close",
82
+ className: e("absolute ring-offset-background focus:ring-ring transition-opacity focus:ring-2 focus:ring-offset-2 focus:outline-none disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0", g ? "-top-3 -right-3 z-[51] rounded-full border bg-background p-1 opacity-100 hover:bg-accent [&_svg]:size-5" : "top-4 right-4 rounded-xs opacity-70 hover:opacity-100 data-open:bg-accent data-open:text-muted-foreground [&_svg:not([class*='size-'])]:size-4"),
83
+ children: [/* @__PURE__ */ p(f, {}), /* @__PURE__ */ p("span", {
84
+ className: "sr-only",
85
+ children: "Close"
86
+ })]
87
+ }), a[9] = h, a[10] = g, a[11] = x) : x = a[11];
88
+ let S;
89
+ return a[12] !== o || a[13] !== c || a[14] !== r || a[15] !== b || a[16] !== x ? (S = /* @__PURE__ */ m(_, {
90
+ "data-slot": "dialog-portal",
91
+ children: [v, /* @__PURE__ */ m(i, {
92
+ ref: r,
93
+ "data-slot": "dialog-content",
94
+ className: b,
95
+ ...c,
96
+ children: [o, x]
97
+ })]
98
+ }), a[12] = o, a[13] = c, a[14] = r, a[15] = b, a[16] = x, a[17] = S) : S = a[17], S;
99
+ });
100
+ b.displayName = "DialogContent";
101
+ function x(t) {
102
+ let n = u(8), r, i;
103
+ n[0] === t ? (r = n[1], i = n[2]) : ({className: r, ...i} = t, n[0] = t, n[1] = r, n[2] = i);
104
+ let a;
105
+ n[3] === r ? a = n[4] : (a = e("flex flex-col gap-2 text-center sm:text-left", r), n[3] = r, n[4] = a);
106
+ let o;
107
+ return n[5] !== i || n[6] !== a ? (o = /* @__PURE__ */ p("div", {
108
+ "data-slot": "dialog-header",
109
+ className: a,
110
+ ...i
111
+ }), n[5] = i, n[6] = a, n[7] = o) : o = n[7], o;
112
+ }
113
+ function S(t) {
114
+ let n = u(8), r, i;
115
+ n[0] === t ? (r = n[1], i = n[2]) : ({className: r, ...i} = t, n[0] = t, n[1] = r, n[2] = i);
116
+ let a;
117
+ n[3] === r ? a = n[4] : (a = e("flex flex-col-reverse gap-2 sm:flex-row sm:justify-end", r), n[3] = r, n[4] = a);
118
+ let o;
119
+ return n[5] !== i || n[6] !== a ? (o = /* @__PURE__ */ p("div", {
120
+ "data-slot": "dialog-footer",
121
+ className: a,
122
+ ...i
123
+ }), n[5] = i, n[6] = a, n[7] = o) : o = n[7], o;
124
+ }
125
+ function C(t) {
126
+ let n = u(8), r, i;
127
+ n[0] === t ? (r = n[1], i = n[2]) : ({className: r, ...i} = t, n[0] = t, n[1] = r, n[2] = i);
128
+ let a;
129
+ n[3] === r ? a = n[4] : (a = e("text-lg leading-none font-semibold", r), n[3] = r, n[4] = a);
130
+ let o;
131
+ return n[5] !== i || n[6] !== a ? (o = /* @__PURE__ */ p(s, {
132
+ "data-slot": "dialog-title",
133
+ className: a,
134
+ ...i
135
+ }), n[5] = i, n[6] = a, n[7] = o) : o = n[7], o;
136
+ }
137
+ function w(t) {
138
+ let n = u(8), i, a;
139
+ n[0] === t ? (i = n[1], a = n[2]) : ({className: i, ...a} = t, n[0] = t, n[1] = i, n[2] = a);
140
+ let o;
141
+ n[3] === i ? o = n[4] : (o = e("text-muted-foreground text-sm", i), n[3] = i, n[4] = o);
142
+ let s;
143
+ return n[5] !== a || n[6] !== o ? (s = /* @__PURE__ */ p(r, {
144
+ "data-slot": "dialog-description",
145
+ className: o,
146
+ ...a
147
+ }), n[5] = a, n[6] = o, n[7] = s) : s = n[7], s;
28
148
  }
29
149
  //#endregion
30
- export { i as ImagesField };
150
+ export { h as Dialog, v as DialogClose, b as DialogContent, w as DialogDescription, S as DialogFooter, x as DialogHeader, y as DialogOverlay, _ as DialogPortal, C as DialogTitle, g as DialogTrigger };
31
151
 
32
152
  //# sourceMappingURL=index299.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index299.js","names":["initialImages = []","accept = defaultImageAccept","addButtonAriaLabel = \"Ajouter une image\"","removeButtonAriaLabel = \"Supprimer l'image\"","{\n initialImages = [],\n onChange,\n accept = defaultImageAccept,\n addButtonAriaLabel = \"Ajouter une image\",\n removeButtonAriaLabel = \"Supprimer l'image\",\n ...props\n}: ImagesFieldProps","<FilesUploadField\n initialFiles={initialImages}\n onChange={onChange}\n accept={accept}\n addButtonAriaLabel={addButtonAriaLabel}\n removeButtonAriaLabel={removeButtonAriaLabel}\n {...props}\n />"],"sources":["../src/components/ImagesField/index.tsx"],"sourcesContent":["import type { FilesUploadFieldFile, FilesUploadFieldProps } from \"../FilesUploadField\"\nimport { FilesUploadField } from \"../FilesUploadField\"\n\n\nexport type ImagesFieldImage = FilesUploadFieldFile\n\ntype ToImagesFieldProps<T> = T extends unknown\n ? Omit<T, \"initialFiles\" | \"onChange\"> & {\n initialImages?: ImagesFieldImage[]\n onChange?: (images: ImagesFieldImage[]) => void\n }\n : never\n\nexport type ImagesFieldProps = ToImagesFieldProps<FilesUploadFieldProps>\n\nconst defaultImageAccept = [\"image/*\", \".heic\", \".heif\", \"image/heic\", \"image/heif\", \"image/heic-sequence\", \"image/heif-sequence\"]\n\nexport function ImagesField({\n initialImages = [],\n onChange,\n accept = defaultImageAccept,\n addButtonAriaLabel = \"Ajouter une image\",\n removeButtonAriaLabel = \"Supprimer l'image\",\n ...props\n}: ImagesFieldProps) {\n return (\n <FilesUploadField\n initialFiles={initialImages}\n onChange={onChange}\n accept={accept}\n addButtonAriaLabel={addButtonAriaLabel}\n removeButtonAriaLabel={removeButtonAriaLabel}\n {...props}\n />\n )\n}\n"],"mappings":";;;;AAeA,IAAM,IAAqB;CAAC;CAAW;CAAS;CAAS;CAAc;CAAc;CAAuB;AAAqB;AAEjI,SAAgB,EAAA,GAOK;gBALnB,GAIG,GALHA,GAEAC,GACAC,GACAC;CAL0BC,AAAAA,EAAAA,OAAAA,oEAC1B,CAAA,eAAA,gBAEA,QAAA,GACA,oBAAA,GACA,uBAAA,GACA,GAAA,KAN0BA;CAC1BJ,IAAAA;0BAAgB,IAAA,MAAA,KAAA,IAAA,CAAC,IAAjBA;YAEA,IAAA,MAAA,KAAA,IAAS,IAATC,GACA,IAAA,MAAA,KAAA,IAAqB,sBAArBC,GACA,IAAA,MAAA,KAAA,IAAwB,sBAAxBC,GAIEE;CADF,OAIY,EAAA,OAAA,KAAA,EAAA,QACY,KAAA,EAAA,QAHN,KAAA,EAAA,QACJ,KAAA,EAAA,QAIN,KAAA,EAAA,QADmB,KALzB,IAAA,kBAAC,GAAD;EACE,cAAc;EACJ;EACF;EACY;EACG;EACvB,GAAI;CACL,CAAA,GAJS,EAAA,KAAA,GACY,EAAA,MAAA,GAHN,EAAA,MAAA,GACJ,EAAA,MAAA,GAIN,EAAA,MAAA,GADmB,EAAA,MAAA,2BALzBA;AASJ"}
1
+ {"version":3,"file":"index299.js","names":["{\n ...props\n}: DialogPrimitive.Root.Props","<DialogPrimitive.Root data-slot=\"dialog\" {...props} />","DialogPrimitive.Root","{\n asChild,\n render,\n children,\n ...props\n}: DialogPrimitive.Trigger.Props & { asChild?: boolean }","renderAsChild(asChild, render, children)","<DialogPrimitive.Trigger\n data-slot=\"dialog-trigger\"\n render={renderAsChild(asChild, render, children)}\n {...props}\n >\n {asChild ? null : children}\n </DialogPrimitive.Trigger>","asChild ? null : children","DialogPrimitive.Trigger","{\n ...props\n}: DialogPrimitive.Portal.Props","<DialogPrimitive.Portal data-slot=\"dialog-portal\" {...props} />","DialogPrimitive.Portal","{\n asChild,\n render,\n children,\n ...props\n}: DialogPrimitive.Close.Props & { asChild?: boolean }","<DialogPrimitive.Close\n data-slot=\"dialog-close\"\n render={renderAsChild(asChild, render, children)}\n {...props}\n >\n {asChild ? null : children}\n </DialogPrimitive.Close>","DialogPrimitive.Close","{\n className,\n ...props\n}: DialogPrimitive.Backdrop.Props","cn(\n \"data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 fixed inset-0 z-50 bg-black/50\",\n className\n )","<DialogPrimitive.Backdrop\n data-slot=\"dialog-overlay\"\n className={cn(\n \"data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 fixed inset-0 z-50 bg-black/50\",\n className\n )}\n {...props}\n />","DialogPrimitive.Backdrop","showCloseButton = true","showCloseButtonOutside = false","{ className, children, showCloseButton = true, showCloseButtonOutside = false, ...props }","<DialogOverlay />","cn(\n \"bg-background data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 sm:max-w-lg\",\n className\n )","showCloseButton && (\n <DialogPrimitive.Close\n data-slot=\"dialog-close\"\n className={cn(\n \"absolute ring-offset-background focus:ring-ring transition-opacity focus:ring-2 focus:ring-offset-2 focus:outline-none disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n showCloseButtonOutside\n ? \"-top-3 -right-3 z-[51] rounded-full border bg-background p-1 opacity-100 hover:bg-accent [&_svg]:size-5\"\n : \"top-4 right-4 rounded-xs opacity-70 hover:opacity-100 data-open:bg-accent data-open:text-muted-foreground [&_svg:not([class*='size-'])]:size-4\"\n )}\n >\n <XIcon />\n <span className=\"sr-only\">Close</span>\n </DialogPrimitive.Close>\n )","<DialogPortal data-slot=\"dialog-portal\">\n <DialogOverlay />\n <DialogPrimitive.Popup\n ref={ref}\n data-slot=\"dialog-content\"\n className={cn(\n \"bg-background data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 sm:max-w-lg\",\n className\n )}\n {...props}\n >\n {children}\n {showCloseButton && (\n <DialogPrimitive.Close\n data-slot=\"dialog-close\"\n className={cn(\n \"absolute ring-offset-background focus:ring-ring transition-opacity focus:ring-2 focus:ring-offset-2 focus:outline-none disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n showCloseButtonOutside\n ? \"-top-3 -right-3 z-[51] rounded-full border bg-background p-1 opacity-100 hover:bg-accent [&_svg]:size-5\"\n : \"top-4 right-4 rounded-xs opacity-70 hover:opacity-100 data-open:bg-accent data-open:text-muted-foreground [&_svg:not([class*='size-'])]:size-4\"\n )}\n >\n <XIcon />\n <span className=\"sr-only\">Close</span>\n </DialogPrimitive.Close>\n )}\n </DialogPrimitive.Popup>\n </DialogPortal>","DialogPrimitive.Popup","{ className, ...props }: React.ComponentProps<\"div\">","cn(\"flex flex-col gap-2 text-center sm:text-left\", className)","<div\n data-slot=\"dialog-header\"\n className={cn(\"flex flex-col gap-2 text-center sm:text-left\", className)}\n {...props}\n />","cn(\"flex flex-col-reverse gap-2 sm:flex-row sm:justify-end\", className)","<div\n data-slot=\"dialog-footer\"\n className={cn(\"flex flex-col-reverse gap-2 sm:flex-row sm:justify-end\", className)}\n {...props}\n />","{\n className,\n ...props\n}: DialogPrimitive.Title.Props","cn(\"text-lg leading-none font-semibold\", className)","<DialogPrimitive.Title\n data-slot=\"dialog-title\"\n className={cn(\"text-lg leading-none font-semibold\", className)}\n {...props}\n />","DialogPrimitive.Title","{\n className,\n ...props\n}: DialogPrimitive.Description.Props","cn(\"text-muted-foreground text-sm\", className)","<DialogPrimitive.Description\n data-slot=\"dialog-description\"\n className={cn(\"text-muted-foreground text-sm\", className)}\n {...props}\n />","DialogPrimitive.Description","_c","DialogPrimitive.Root","DialogPrimitive.Trigger","DialogPrimitive.Portal","DialogPrimitive.Close","DialogPrimitive.Backdrop","React","DialogPrimitive.Popup","DialogPrimitive.Title","DialogPrimitive.Description","DialogClose$1","DialogDescription$1","DialogPortal$1","DialogTitle$1","DialogTrigger$1","React$1","Dialog","$","c","props","t0","t1","DialogRoot","DialogTrigger","asChild","children","render","renderAsChild","t2","t3","DialogPortal","DialogClose","DialogOverlay","className","cn","DialogBackdrop","DialogContent","showCloseButton","showCloseButtonOutside","t4","t5","XIcon","t6","ref","DialogPopup","DialogHeader","DialogFooter","DialogTitle","DialogDescription"],"sources":["../src/components/Dialog/index.tsx"],"sourcesContent":["import * as React from \"react\"\nimport { Dialog as DialogPrimitive } from \"@base-ui/react/dialog\"\nimport { XIcon } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\nimport { renderAsChild } from \"@/lib/render-as-child\"\n\n\nfunction Dialog({\n ...props\n}: DialogPrimitive.Root.Props) {\n return <DialogPrimitive.Root data-slot=\"dialog\" {...props} />\n}\n\nfunction DialogTrigger({\n asChild,\n render,\n children,\n ...props\n}: DialogPrimitive.Trigger.Props & { asChild?: boolean }) {\n return (\n <DialogPrimitive.Trigger\n data-slot=\"dialog-trigger\"\n render={renderAsChild(asChild, render, children)}\n {...props}\n >\n {asChild ? null : children}\n </DialogPrimitive.Trigger>\n )\n}\n\nfunction DialogPortal({\n ...props\n}: DialogPrimitive.Portal.Props) {\n return <DialogPrimitive.Portal data-slot=\"dialog-portal\" {...props} />\n}\n\nfunction DialogClose({\n asChild,\n render,\n children,\n ...props\n}: DialogPrimitive.Close.Props & { asChild?: boolean }) {\n return (\n <DialogPrimitive.Close\n data-slot=\"dialog-close\"\n render={renderAsChild(asChild, render, children)}\n {...props}\n >\n {asChild ? null : children}\n </DialogPrimitive.Close>\n )\n}\n\nfunction DialogOverlay({\n className,\n ...props\n}: DialogPrimitive.Backdrop.Props) {\n return (\n <DialogPrimitive.Backdrop\n data-slot=\"dialog-overlay\"\n className={cn(\n \"data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 fixed inset-0 z-50 bg-black/50\",\n className\n )}\n {...props}\n />\n )\n}\n\nconst DialogContent = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Popup>,\n DialogPrimitive.Popup.Props & {\n showCloseButton?: boolean\n showCloseButtonOutside?: boolean\n }\n>(({ className, children, showCloseButton = true, showCloseButtonOutside = false, ...props }, ref) => (\n <DialogPortal data-slot=\"dialog-portal\">\n <DialogOverlay />\n <DialogPrimitive.Popup\n ref={ref}\n data-slot=\"dialog-content\"\n className={cn(\n \"bg-background data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 sm:max-w-lg\",\n className\n )}\n {...props}\n >\n {children}\n {showCloseButton && (\n <DialogPrimitive.Close\n data-slot=\"dialog-close\"\n className={cn(\n \"absolute ring-offset-background focus:ring-ring transition-opacity focus:ring-2 focus:ring-offset-2 focus:outline-none disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n showCloseButtonOutside\n ? \"-top-3 -right-3 z-[51] rounded-full border bg-background p-1 opacity-100 hover:bg-accent [&_svg]:size-5\"\n : \"top-4 right-4 rounded-xs opacity-70 hover:opacity-100 data-open:bg-accent data-open:text-muted-foreground [&_svg:not([class*='size-'])]:size-4\"\n )}\n >\n <XIcon />\n <span className=\"sr-only\">Close</span>\n </DialogPrimitive.Close>\n )}\n </DialogPrimitive.Popup>\n </DialogPortal>\n))\nDialogContent.displayName = \"DialogContent\"\n\nfunction DialogHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"dialog-header\"\n className={cn(\"flex flex-col gap-2 text-center sm:text-left\", className)}\n {...props}\n />\n )\n}\n\nfunction DialogFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"dialog-footer\"\n className={cn(\"flex flex-col-reverse gap-2 sm:flex-row sm:justify-end\", className)}\n {...props}\n />\n )\n}\n\nfunction DialogTitle({\n className,\n ...props\n}: DialogPrimitive.Title.Props) {\n return (\n <DialogPrimitive.Title\n data-slot=\"dialog-title\"\n className={cn(\"text-lg leading-none font-semibold\", className)}\n {...props}\n />\n )\n}\n\nfunction DialogDescription({\n className,\n ...props\n}: DialogPrimitive.Description.Props) {\n return (\n <DialogPrimitive.Description\n data-slot=\"dialog-description\"\n className={cn(\"text-muted-foreground text-sm\", className)}\n {...props}\n />\n )\n}\n\nexport {\n Dialog,\n DialogClose,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogOverlay,\n DialogPortal,\n DialogTitle,\n DialogTrigger,\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index3.js","names":[],"sources":["../src/helpers/isMobileDevice.ts"],"sourcesContent":["export const isMobileDevice = () => {\n if (typeof navigator === \"undefined\") return false\n return /Android|iPhone|iPad|iPod/i.test(navigator.userAgent)\n}\n"],"mappings":";AAAA,IAAa,UACP,OAAO,YAAc,MAAoB,KACtC,4BAA4B,KAAK,UAAU,SAAS"}
1
+ {"version":3,"file":"index3.js","names":["isMobileDevice"],"sources":["../src/helpers/isMobileDevice.ts"],"sourcesContent":["export const isMobileDevice = () => {\n if (typeof navigator === \"undefined\") return false\n return /Android|iPhone|iPad|iPod/i.test(navigator.userAgent)\n}\n"],"mappings":";AAAA,IAAaA,UACP,OAAO,YAAc,MAAoB,KACtC,4BAA4B,KAAK,UAAU,SAAS"}
package/dist/index30.js CHANGED
@@ -1,12 +1,10 @@
1
- import e from "./index29.js";
2
- //#region ../../node_modules/date-fns/startOfISOWeek.js
3
- function t(t, n) {
4
- return e(t, {
5
- ...n,
6
- weekStartsOn: 1
7
- });
1
+ import e from "./index25.js";
2
+ //#region ../../node_modules/date-fns/_lib/getTimezoneOffsetInMilliseconds.js
3
+ function t(t) {
4
+ let n = e(t), r = new Date(Date.UTC(n.getFullYear(), n.getMonth(), n.getDate(), n.getHours(), n.getMinutes(), n.getSeconds(), n.getMilliseconds()));
5
+ return r.setUTCFullYear(n.getFullYear()), +t - r;
8
6
  }
9
7
  //#endregion
10
- export { t as default, t as startOfISOWeek };
8
+ export { t as getTimezoneOffsetInMilliseconds };
11
9
 
12
10
  //# sourceMappingURL=index30.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index30.js","names":[],"sources":["../../../node_modules/date-fns/startOfISOWeek.js"],"sourcesContent":["import { startOfWeek } from \"./startOfWeek.js\";\n\n/**\n * The {@link startOfISOWeek} function options.\n */\n\n/**\n * @name startOfISOWeek\n * @category ISO Week Helpers\n * @summary Return the start of an ISO week for the given date.\n *\n * @description\n * Return the start of an ISO week for the given date.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The start of an ISO week\n *\n * @example\n * // The start of an ISO week for 2 September 2014 11:55:00:\n * const result = startOfISOWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport function startOfISOWeek(date, options) {\n return startOfWeek(date, { ...options, weekStartsOn: 1 });\n}\n\n// Fallback for modularized imports:\nexport default startOfISOWeek;\n"],"x_google_ignoreList":[0],"mappings":";;AA8BA,SAAgB,EAAe,GAAM,GAAS;CAC5C,OAAO,EAAY,GAAM;EAAE,GAAG;EAAS,cAAc;CAAE,CAAC;AAC1D"}
1
+ {"version":3,"file":"index30.js","names":["toDate","getTimezoneOffsetInMilliseconds","_date","date","utcDate"],"sources":["../../../node_modules/date-fns/_lib/getTimezoneOffsetInMilliseconds.js"],"sourcesContent":["import { toDate } from \"../toDate.js\";\n\n/**\n * Google Chrome as of 67.0.3396.87 introduced timezones with offset that includes seconds.\n * They usually appear for dates that denote time before the timezones were introduced\n * (e.g. for 'Europe/Prague' timezone the offset is GMT+00:57:44 before 1 October 1891\n * and GMT+01:00:00 after that date)\n *\n * Date#getTimezoneOffset returns the offset in minutes and would return 57 for the example above,\n * which would lead to incorrect calculations.\n *\n * This function returns the timezone offset in milliseconds that takes seconds in account.\n */\nexport function getTimezoneOffsetInMilliseconds(date) {\n const _date = toDate(date);\n const utcDate = new Date(\n Date.UTC(\n _date.getFullYear(),\n _date.getMonth(),\n _date.getDate(),\n _date.getHours(),\n _date.getMinutes(),\n _date.getSeconds(),\n _date.getMilliseconds(),\n ),\n );\n utcDate.setUTCFullYear(_date.getFullYear());\n return +date - +utcDate;\n}\n"],"ignoreList":[0],"mappings":";;AAaA,SAAgBC,EAAgC,GAAM;CACpD,IAAMC,IAAQF,EAAOG,CAAI,GACnBC,IAAU,IAAI,KAClB,KAAK,IACHF,EAAM,YAAY,GAClBA,EAAM,SAAS,GACfA,EAAM,QAAQ,GACdA,EAAM,SAAS,GACfA,EAAM,WAAW,GACjBA,EAAM,WAAW,GACjBA,EAAM,gBAAgB,CACxB,CACF;CAEA,OADAE,EAAQ,eAAeF,EAAM,YAAY,CAAC,GACnC,CAACC,IAAQC;AAClB"}