@rpcbase/ui 0.183.0 → 0.185.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 (640) hide show
  1. package/dist/index10.js +25 -24
  2. package/dist/index10.js.map +1 -1
  3. package/dist/index100.js +107 -5
  4. package/dist/index100.js.map +1 -1
  5. package/dist/index101.js +262 -4
  6. package/dist/index101.js.map +1 -1
  7. package/dist/index102.js +9 -4
  8. package/dist/index102.js.map +1 -1
  9. package/dist/index103.js +42 -6
  10. package/dist/index103.js.map +1 -1
  11. package/dist/index104.js +4 -145
  12. package/dist/index104.js.map +1 -1
  13. package/dist/index105.js +45 -38
  14. package/dist/index105.js.map +1 -1
  15. package/dist/index106.js +52 -5
  16. package/dist/index106.js.map +1 -1
  17. package/dist/index107.js +4 -7
  18. package/dist/index107.js.map +1 -1
  19. package/dist/index108.js +3 -12
  20. package/dist/index108.js.map +1 -1
  21. package/dist/index109.js +15 -13
  22. package/dist/index109.js.map +1 -1
  23. package/dist/index11.js +34 -66
  24. package/dist/index11.js.map +1 -1
  25. package/dist/index110.js +5 -7
  26. package/dist/index110.js.map +1 -1
  27. package/dist/index111.js +7 -31
  28. package/dist/index111.js.map +1 -1
  29. package/dist/index112.js +16 -10
  30. package/dist/index112.js.map +1 -1
  31. package/dist/index113.js +4 -10
  32. package/dist/index113.js.map +1 -1
  33. package/dist/index114.js +4 -8
  34. package/dist/index114.js.map +1 -1
  35. package/dist/index115.js +5 -13
  36. package/dist/index115.js.map +1 -1
  37. package/dist/index116.js +5 -101
  38. package/dist/index116.js.map +1 -1
  39. package/dist/index117.js +5 -20
  40. package/dist/index117.js.map +1 -1
  41. package/dist/index118.js +4 -53
  42. package/dist/index118.js.map +1 -1
  43. package/dist/index119.js +6 -72
  44. package/dist/index119.js.map +1 -1
  45. package/dist/index12.js +556 -525
  46. package/dist/index12.js.map +1 -1
  47. package/dist/index120.js +24 -9
  48. package/dist/index120.js.map +1 -1
  49. package/dist/index121.js +6 -20
  50. package/dist/index121.js.map +1 -1
  51. package/dist/index122.js +4 -16
  52. package/dist/index122.js.map +1 -1
  53. package/dist/index123.js +6 -23
  54. package/dist/index123.js.map +1 -1
  55. package/dist/index124.js +5 -6
  56. package/dist/index124.js.map +1 -1
  57. package/dist/index125.js +4 -5
  58. package/dist/index125.js.map +1 -1
  59. package/dist/index126.js +5 -23
  60. package/dist/index126.js.map +1 -1
  61. package/dist/index127.js +5 -35
  62. package/dist/index127.js.map +1 -1
  63. package/dist/index128.js +9 -16
  64. package/dist/index128.js.map +1 -1
  65. package/dist/index129.js +5 -6
  66. package/dist/index129.js.map +1 -1
  67. package/dist/index13.js +128 -118
  68. package/dist/index13.js.map +1 -1
  69. package/dist/index130.js +4 -4
  70. package/dist/index130.js.map +1 -1
  71. package/dist/index131.js +4 -4
  72. package/dist/index131.js.map +1 -1
  73. package/dist/index132.js +6 -4
  74. package/dist/index132.js.map +1 -1
  75. package/dist/index133.js +145 -4
  76. package/dist/index133.js.map +1 -1
  77. package/dist/index134.js +39 -3
  78. package/dist/index134.js.map +1 -1
  79. package/dist/index135.js +4 -6
  80. package/dist/index135.js.map +1 -1
  81. package/dist/index136.js +8 -24
  82. package/dist/index136.js.map +1 -1
  83. package/dist/index137.js +13 -7
  84. package/dist/index137.js.map +1 -1
  85. package/dist/index138.js +13 -6
  86. package/dist/index138.js.map +1 -1
  87. package/dist/index139.js +7 -5
  88. package/dist/index139.js.map +1 -1
  89. package/dist/index14.js +74 -74
  90. package/dist/index14.js.map +1 -1
  91. package/dist/index140.js +31 -3
  92. package/dist/index140.js.map +1 -1
  93. package/dist/index141.js +10 -3
  94. package/dist/index141.js.map +1 -1
  95. package/dist/index142.js +10 -4
  96. package/dist/index142.js.map +1 -1
  97. package/dist/index143.js +8 -3
  98. package/dist/index143.js.map +1 -1
  99. package/dist/index144.js +13 -4
  100. package/dist/index144.js.map +1 -1
  101. package/dist/index145.js +101 -3
  102. package/dist/index145.js.map +1 -1
  103. package/dist/index146.js +20 -4
  104. package/dist/index146.js.map +1 -1
  105. package/dist/index147.js +53 -3
  106. package/dist/index147.js.map +1 -1
  107. package/dist/index148.js +71 -45
  108. package/dist/index148.js.map +1 -1
  109. package/dist/index149.js +9 -205
  110. package/dist/index149.js.map +1 -1
  111. package/dist/index15.js +763 -624
  112. package/dist/index15.js.map +1 -1
  113. package/dist/index150.js +20 -21
  114. package/dist/index150.js.map +1 -1
  115. package/dist/index151.js +16 -24
  116. package/dist/index151.js.map +1 -1
  117. package/dist/index152.js +23 -399
  118. package/dist/index152.js.map +1 -1
  119. package/dist/index153.js +6 -46
  120. package/dist/index153.js.map +1 -1
  121. package/dist/index154.js +5 -605
  122. package/dist/index154.js.map +1 -1
  123. package/dist/index155.js +23 -5
  124. package/dist/index155.js.map +1 -1
  125. package/dist/index156.js +34 -68
  126. package/dist/index156.js.map +1 -1
  127. package/dist/index157.js +16 -2
  128. package/dist/index157.js.map +1 -1
  129. package/dist/index158.js +6 -363
  130. package/dist/index158.js.map +1 -1
  131. package/dist/index159.js +4 -261
  132. package/dist/index159.js.map +1 -1
  133. package/dist/index16.js +20 -22
  134. package/dist/index16.js.map +1 -1
  135. package/dist/index160.js +4 -60
  136. package/dist/index160.js.map +1 -1
  137. package/dist/index161.js +4 -46
  138. package/dist/index161.js.map +1 -1
  139. package/dist/index162.js +4 -169
  140. package/dist/index162.js.map +1 -1
  141. package/dist/index163.js +3 -109
  142. package/dist/index163.js.map +1 -1
  143. package/dist/index164.js +6 -24
  144. package/dist/index164.js.map +1 -1
  145. package/dist/index165.js +24 -8
  146. package/dist/index165.js.map +1 -1
  147. package/dist/index166.js +7 -4
  148. package/dist/index166.js.map +1 -1
  149. package/dist/index167.js +6 -5
  150. package/dist/index167.js.map +1 -1
  151. package/dist/index168.js +5 -4
  152. package/dist/index168.js.map +1 -1
  153. package/dist/index169.js +3 -466
  154. package/dist/index169.js.map +1 -1
  155. package/dist/index17.js +17 -17
  156. package/dist/index17.js.map +1 -1
  157. package/dist/index170.js +3 -185
  158. package/dist/index170.js.map +1 -1
  159. package/dist/index171.js +4 -107
  160. package/dist/index171.js.map +1 -1
  161. package/dist/index172.js +3 -262
  162. package/dist/index172.js.map +1 -1
  163. package/dist/index173.js +4 -9
  164. package/dist/index173.js.map +1 -1
  165. package/dist/index174.js +3 -42
  166. package/dist/index174.js.map +1 -1
  167. package/dist/index175.js +3 -4
  168. package/dist/index175.js.map +1 -1
  169. package/dist/index176.js +3 -58
  170. package/dist/index176.js.map +1 -1
  171. package/dist/index177.js +46 -8
  172. package/dist/index177.js.map +1 -1
  173. package/dist/index178.js +201 -62
  174. package/dist/index178.js.map +1 -1
  175. package/dist/index179.js +22 -20
  176. package/dist/index179.js.map +1 -1
  177. package/dist/index18.js +411 -341
  178. package/dist/index18.js.map +1 -1
  179. package/dist/index180.js +24 -16
  180. package/dist/index180.js.map +1 -1
  181. package/dist/index181.js +398 -4
  182. package/dist/index181.js.map +1 -1
  183. package/dist/index182.js +604 -4
  184. package/dist/index182.js.map +1 -1
  185. package/dist/index183.js +13 -6
  186. package/dist/index183.js.map +1 -1
  187. package/dist/index184.js +154 -4
  188. package/dist/index184.js.map +1 -1
  189. package/dist/index185.js +30 -7
  190. package/dist/index185.js.map +1 -1
  191. package/dist/index186.js +9 -17
  192. package/dist/index186.js.map +1 -1
  193. package/dist/index187.js +47 -5
  194. package/dist/index187.js.map +1 -1
  195. package/dist/index188.js +11 -5
  196. package/dist/index188.js.map +1 -1
  197. package/dist/index189.js +44 -13
  198. package/dist/index189.js.map +1 -1
  199. package/dist/index19.js +626 -660
  200. package/dist/index19.js.map +1 -1
  201. package/dist/index190.js +95 -10
  202. package/dist/index190.js.map +1 -1
  203. package/dist/index191.js +86 -14
  204. package/dist/index191.js.map +1 -1
  205. package/dist/index192.js +105 -14
  206. package/dist/index192.js.map +1 -1
  207. package/dist/index193.js +52 -5
  208. package/dist/index193.js.map +1 -1
  209. package/dist/index194.js +11 -6
  210. package/dist/index194.js.map +1 -1
  211. package/dist/index195.js +37 -7
  212. package/dist/index195.js.map +1 -1
  213. package/dist/index196.js +8 -6
  214. package/dist/index196.js.map +1 -1
  215. package/dist/index197.js +116 -9
  216. package/dist/index197.js.map +1 -1
  217. package/dist/index198.js +17 -5
  218. package/dist/index198.js.map +1 -1
  219. package/dist/index199.js +15 -5
  220. package/dist/index199.js.map +1 -1
  221. package/dist/index20.js +442 -634
  222. package/dist/index20.js.map +1 -1
  223. package/dist/index200.js +3 -9
  224. package/dist/index200.js.map +1 -1
  225. package/dist/index201.js +36 -5
  226. package/dist/index201.js.map +1 -1
  227. package/dist/index202.js +20 -5
  228. package/dist/index202.js.map +1 -1
  229. package/dist/index203.js +9 -4
  230. package/dist/index203.js.map +1 -1
  231. package/dist/index204.js +8 -11
  232. package/dist/index204.js.map +1 -1
  233. package/dist/index205.js +19 -10
  234. package/dist/index205.js.map +1 -1
  235. package/dist/index206.js +28 -10
  236. package/dist/index206.js.map +1 -1
  237. package/dist/index207.js +16 -11
  238. package/dist/index207.js.map +1 -1
  239. package/dist/index208.js +58 -11
  240. package/dist/index208.js.map +1 -1
  241. package/dist/index209.js +8 -10
  242. package/dist/index209.js.map +1 -1
  243. package/dist/index21.js +254 -200
  244. package/dist/index21.js.map +1 -1
  245. package/dist/index210.js +66 -7
  246. package/dist/index210.js.map +1 -1
  247. package/dist/index211.js +19 -6
  248. package/dist/index211.js.map +1 -1
  249. package/dist/index212.js +16 -5
  250. package/dist/index212.js.map +1 -1
  251. package/dist/index213.js +5 -6
  252. package/dist/index213.js.map +1 -1
  253. package/dist/index214.js +5 -7
  254. package/dist/index214.js.map +1 -1
  255. package/dist/index215.js +6 -6
  256. package/dist/index215.js.map +1 -1
  257. package/dist/index216.js +4 -55
  258. package/dist/index216.js.map +1 -1
  259. package/dist/index217.js +7 -16
  260. package/dist/index217.js.map +1 -1
  261. package/dist/index218.js +17 -7
  262. package/dist/index218.js.map +1 -1
  263. package/dist/index219.js +5 -10
  264. package/dist/index219.js.map +1 -1
  265. package/dist/index22.js +1 -1
  266. package/dist/index22.js.map +1 -1
  267. package/dist/index220.js +5 -10
  268. package/dist/index220.js.map +1 -1
  269. package/dist/index221.js +13 -21
  270. package/dist/index221.js.map +1 -1
  271. package/dist/index222.js +10 -10
  272. package/dist/index222.js.map +1 -1
  273. package/dist/index223.js +14 -9
  274. package/dist/index223.js.map +1 -1
  275. package/dist/index224.js +14 -9
  276. package/dist/index224.js.map +1 -1
  277. package/dist/index225.js +5 -4
  278. package/dist/index225.js.map +1 -1
  279. package/dist/index226.js +6 -5
  280. package/dist/index226.js.map +1 -1
  281. package/dist/index227.js +7 -16
  282. package/dist/index227.js.map +1 -1
  283. package/dist/index228.js +6 -9
  284. package/dist/index228.js.map +1 -1
  285. package/dist/index229.js +9 -18
  286. package/dist/index229.js.map +1 -1
  287. package/dist/index23.js +27 -34
  288. package/dist/index23.js.map +1 -1
  289. package/dist/index230.js +5 -15
  290. package/dist/index230.js.map +1 -1
  291. package/dist/index231.js +5 -12
  292. package/dist/index231.js.map +1 -1
  293. package/dist/index232.js +9 -29
  294. package/dist/index232.js.map +1 -1
  295. package/dist/index233.js +5 -12
  296. package/dist/index233.js.map +1 -1
  297. package/dist/index234.js +5 -25
  298. package/dist/index234.js.map +1 -1
  299. package/dist/index235.js +4 -5
  300. package/dist/index235.js.map +1 -1
  301. package/dist/index236.js +11 -24
  302. package/dist/index236.js.map +1 -1
  303. package/dist/index237.js +10 -28
  304. package/dist/index237.js.map +1 -1
  305. package/dist/index238.js +11 -5
  306. package/dist/index238.js.map +1 -1
  307. package/dist/index239.js +11 -67
  308. package/dist/index239.js.map +1 -1
  309. package/dist/index24.js +219 -222
  310. package/dist/index24.js.map +1 -1
  311. package/dist/index240.js +11 -180
  312. package/dist/index240.js.map +1 -1
  313. package/dist/index241.js +10 -46
  314. package/dist/index241.js.map +1 -1
  315. package/dist/index242.js +7 -13
  316. package/dist/index242.js.map +1 -1
  317. package/dist/index243.js +6 -154
  318. package/dist/index243.js.map +1 -1
  319. package/dist/index244.js +5 -30
  320. package/dist/index244.js.map +1 -1
  321. package/dist/index245.js +6 -9
  322. package/dist/index245.js.map +1 -1
  323. package/dist/index246.js +7 -47
  324. package/dist/index246.js.map +1 -1
  325. package/dist/index247.js +6 -11
  326. package/dist/index247.js.map +1 -1
  327. package/dist/index248.js +54 -43
  328. package/dist/index248.js.map +1 -1
  329. package/dist/index249.js +13 -92
  330. package/dist/index249.js.map +1 -1
  331. package/dist/index25.js +46 -50
  332. package/dist/index25.js.map +1 -1
  333. package/dist/index250.js +7 -86
  334. package/dist/index250.js.map +1 -1
  335. package/dist/index251.js +8 -103
  336. package/dist/index251.js.map +1 -1
  337. package/dist/index252.js +9 -51
  338. package/dist/index252.js.map +1 -1
  339. package/dist/index253.js +21 -11
  340. package/dist/index253.js.map +1 -1
  341. package/dist/index254.js +10 -37
  342. package/dist/index254.js.map +1 -1
  343. package/dist/index255.js +8 -7
  344. package/dist/index255.js.map +1 -1
  345. package/dist/index256.js +9 -116
  346. package/dist/index256.js.map +1 -1
  347. package/dist/index257.js +4 -17
  348. package/dist/index257.js.map +1 -1
  349. package/dist/index258.js +5 -15
  350. package/dist/index258.js.map +1 -1
  351. package/dist/index259.js +16 -3
  352. package/dist/index259.js.map +1 -1
  353. package/dist/index260.js +9 -36
  354. package/dist/index260.js.map +1 -1
  355. package/dist/index261.js +18 -20
  356. package/dist/index261.js.map +1 -1
  357. package/dist/index262.js +15 -9
  358. package/dist/index262.js.map +1 -1
  359. package/dist/index263.js +12 -8
  360. package/dist/index263.js.map +1 -1
  361. package/dist/index264.js +28 -18
  362. package/dist/index264.js.map +1 -1
  363. package/dist/index265.js +11 -27
  364. package/dist/index265.js.map +1 -1
  365. package/dist/index266.js +23 -14
  366. package/dist/index266.js.map +1 -1
  367. package/dist/index267.js +5 -4
  368. package/dist/index267.js.map +1 -1
  369. package/dist/index268.js +24 -18
  370. package/dist/index268.js.map +1 -1
  371. package/dist/index269.js +29 -13
  372. package/dist/index269.js.map +1 -1
  373. package/dist/index270.js +5 -5
  374. package/dist/index270.js.map +1 -1
  375. package/dist/index271.js +68 -3
  376. package/dist/index271.js.map +1 -1
  377. package/dist/index272.js +179 -22
  378. package/dist/index272.js.map +1 -1
  379. package/dist/index273.js +43 -109
  380. package/dist/index273.js.map +1 -1
  381. package/dist/index274.js +20 -15
  382. package/dist/index274.js.map +1 -1
  383. package/dist/index275.js +4 -524
  384. package/dist/index275.js.map +1 -1
  385. package/dist/index276.js +18 -127
  386. package/dist/index276.js.map +1 -1
  387. package/dist/index277.js +12 -133
  388. package/dist/index277.js.map +1 -1
  389. package/dist/index278.js +5 -21
  390. package/dist/index278.js.map +1 -1
  391. package/dist/index279.js +3 -6
  392. package/dist/index279.js.map +1 -1
  393. package/dist/index28.js +3 -37
  394. package/dist/index28.js.map +1 -1
  395. package/dist/index280.js +23 -5
  396. package/dist/index280.js.map +1 -1
  397. package/dist/index281.js +113 -4
  398. package/dist/index281.js.map +1 -1
  399. package/dist/index282.js +15 -15
  400. package/dist/index282.js.map +1 -1
  401. package/dist/index283.js +524 -8
  402. package/dist/index283.js.map +1 -1
  403. package/dist/index284.js +127 -5
  404. package/dist/index284.js.map +1 -1
  405. package/dist/index285.js +133 -4
  406. package/dist/index285.js.map +1 -1
  407. package/dist/index286.js +5 -545
  408. package/dist/index286.js.map +1 -1
  409. package/dist/index287.js +6 -47
  410. package/dist/index287.js.map +1 -1
  411. package/dist/index288.js +4 -18
  412. package/dist/index288.js.map +1 -1
  413. package/dist/index289.js +15 -6
  414. package/dist/index289.js.map +1 -1
  415. package/dist/index29.js +37 -3
  416. package/dist/index29.js.map +1 -1
  417. package/dist/index290.js +8 -8
  418. package/dist/index290.js.map +1 -1
  419. package/dist/index291.js +5 -7
  420. package/dist/index291.js.map +1 -1
  421. package/dist/index292.js +4 -8
  422. package/dist/index292.js.map +1 -1
  423. package/dist/index293.js +545 -12
  424. package/dist/index293.js.map +1 -1
  425. package/dist/index294.js +47 -10
  426. package/dist/index294.js.map +1 -1
  427. package/dist/index295.js +17 -13
  428. package/dist/index295.js.map +1 -1
  429. package/dist/index296.js +7 -69
  430. package/dist/index296.js.map +1 -1
  431. package/dist/index297.js +9 -9
  432. package/dist/index297.js.map +1 -1
  433. package/dist/index298.js +8 -14
  434. package/dist/index298.js.map +1 -1
  435. package/dist/index299.js +9 -66
  436. package/dist/index299.js.map +1 -1
  437. package/dist/index3.js.map +1 -1
  438. package/dist/index30.js +3 -125
  439. package/dist/index30.js.map +1 -1
  440. package/dist/index300.js +12 -64
  441. package/dist/index300.js.map +1 -1
  442. package/dist/index301.js +9 -4
  443. package/dist/index301.js.map +1 -1
  444. package/dist/index302.js +14 -56
  445. package/dist/index302.js.map +1 -1
  446. package/dist/index303.js +65 -68
  447. package/dist/index303.js.map +1 -1
  448. package/dist/index304.js +68 -30
  449. package/dist/index304.js.map +1 -1
  450. package/dist/index305.js +9 -9
  451. package/dist/index305.js.map +1 -1
  452. package/dist/index306.js +13 -152
  453. package/dist/index306.js.map +1 -1
  454. package/dist/index307.js +65 -107
  455. package/dist/index307.js.map +1 -1
  456. package/dist/index308.js +4 -3
  457. package/dist/index308.js.map +1 -1
  458. package/dist/index309.js +56 -23
  459. package/dist/index309.js.map +1 -1
  460. package/dist/index31.js +120 -227
  461. package/dist/index31.js.map +1 -1
  462. package/dist/index310.js +68 -16
  463. package/dist/index310.js.map +1 -1
  464. package/dist/index311.js +31 -29
  465. package/dist/index311.js.map +1 -1
  466. package/dist/index312.js +9 -13
  467. package/dist/index312.js.map +1 -1
  468. package/dist/index313.js +153 -7
  469. package/dist/index313.js.map +1 -1
  470. package/dist/index314.js +107 -22
  471. package/dist/index314.js.map +1 -1
  472. package/dist/index315.js +4 -13
  473. package/dist/index315.js.map +1 -1
  474. package/dist/index316.js +22 -27
  475. package/dist/index316.js.map +1 -1
  476. package/dist/index317.js +16 -5
  477. package/dist/index317.js.map +1 -1
  478. package/dist/index318.js +32 -0
  479. package/dist/index318.js.map +1 -0
  480. package/dist/index319.js +16 -0
  481. package/dist/index319.js.map +1 -0
  482. package/dist/index32.js +229 -21
  483. package/dist/index32.js.map +1 -1
  484. package/dist/index320.js +10 -0
  485. package/dist/index320.js.map +1 -0
  486. package/dist/index321.js +26 -0
  487. package/dist/index321.js.map +1 -0
  488. package/dist/index322.js +16 -0
  489. package/dist/index322.js.map +1 -0
  490. package/dist/index323.js +31 -0
  491. package/dist/index323.js.map +1 -0
  492. package/dist/index324.js +8 -0
  493. package/dist/index324.js.map +1 -0
  494. package/dist/index33.js +23 -50
  495. package/dist/index33.js.map +1 -1
  496. package/dist/index34.js +50 -2640
  497. package/dist/index34.js.map +1 -1
  498. package/dist/index35.js +2598 -351
  499. package/dist/index35.js.map +1 -1
  500. package/dist/index36.js +375 -214
  501. package/dist/index36.js.map +1 -1
  502. package/dist/index37.js +230 -19
  503. package/dist/index37.js.map +1 -1
  504. package/dist/index38.js +18 -138
  505. package/dist/index38.js.map +1 -1
  506. package/dist/index39.js +113 -170
  507. package/dist/index39.js.map +1 -1
  508. package/dist/index4.js +17 -15
  509. package/dist/index4.js.map +1 -1
  510. package/dist/index40.js +209 -64
  511. package/dist/index40.js.map +1 -1
  512. package/dist/index41.js +86 -94
  513. package/dist/index41.js.map +1 -1
  514. package/dist/index42.js +118 -5
  515. package/dist/index42.js.map +1 -1
  516. package/dist/index43.js +5 -843
  517. package/dist/index43.js.map +1 -1
  518. package/dist/index44.js +832 -54
  519. package/dist/index44.js.map +1 -1
  520. package/dist/index45.js +57 -8
  521. package/dist/index45.js.map +1 -1
  522. package/dist/index46.js +8 -2
  523. package/dist/index46.js.map +1 -1
  524. package/dist/index47.js +2 -24
  525. package/dist/index47.js.map +1 -1
  526. package/dist/index48.js +11 -233
  527. package/dist/index48.js.map +1 -1
  528. package/dist/index49.js +19 -205
  529. package/dist/index49.js.map +1 -1
  530. package/dist/index5.js +34 -34
  531. package/dist/index5.js.map +1 -1
  532. package/dist/index50.js +7 -3
  533. package/dist/index50.js.map +1 -1
  534. package/dist/index51.js +2 -7
  535. package/dist/index51.js.map +1 -1
  536. package/dist/index52.js +22 -46
  537. package/dist/index52.js.map +1 -1
  538. package/dist/index53.js +232 -25
  539. package/dist/index53.js.map +1 -1
  540. package/dist/index54.js +50 -47
  541. package/dist/index54.js.map +1 -1
  542. package/dist/index55.js +2 -8
  543. package/dist/index55.js.map +1 -1
  544. package/dist/index56.js +2 -15
  545. package/dist/index56.js.map +1 -1
  546. package/dist/index57.js +5 -133
  547. package/dist/index57.js.map +1 -1
  548. package/dist/index58.js +7 -10
  549. package/dist/index58.js.map +1 -1
  550. package/dist/index59.js +5 -216
  551. package/dist/index59.js.map +1 -1
  552. package/dist/index6.js +154 -120
  553. package/dist/index6.js.map +1 -1
  554. package/dist/index60.js +2 -13
  555. package/dist/index60.js.map +1 -1
  556. package/dist/index61.js +2 -34
  557. package/dist/index61.js.map +1 -1
  558. package/dist/index62.js +6 -46
  559. package/dist/index62.js.map +1 -1
  560. package/dist/index63.js +33 -7
  561. package/dist/index63.js.map +1 -1
  562. package/dist/index64.js +24 -47
  563. package/dist/index64.js.map +1 -1
  564. package/dist/index65.js +8 -4
  565. package/dist/index65.js.map +1 -1
  566. package/dist/index66.js +11 -5
  567. package/dist/index66.js.map +1 -1
  568. package/dist/index67.js +202 -25
  569. package/dist/index67.js.map +1 -1
  570. package/dist/index68.js +4 -50
  571. package/dist/index68.js.map +1 -1
  572. package/dist/index69.js +48 -9
  573. package/dist/index69.js.map +1 -1
  574. package/dist/index7.js +29 -24
  575. package/dist/index7.js.map +1 -1
  576. package/dist/index70.js +49 -10
  577. package/dist/index70.js.map +1 -1
  578. package/dist/index71.js +7 -53
  579. package/dist/index71.js.map +1 -1
  580. package/dist/index72.js +14 -5
  581. package/dist/index72.js.map +1 -1
  582. package/dist/index73.js +133 -7
  583. package/dist/index73.js.map +1 -1
  584. package/dist/index74.js +10 -5
  585. package/dist/index74.js.map +1 -1
  586. package/dist/index75.js +217 -2
  587. package/dist/index75.js.map +1 -1
  588. package/dist/index76.js +13 -2
  589. package/dist/index76.js.map +1 -1
  590. package/dist/index77.js +47 -52
  591. package/dist/index77.js.map +1 -1
  592. package/dist/index78.js +49 -4
  593. package/dist/index78.js.map +1 -1
  594. package/dist/index79.js +4 -5
  595. package/dist/index79.js.map +1 -1
  596. package/dist/index8.js +21 -24
  597. package/dist/index8.js.map +1 -1
  598. package/dist/index80.js +5 -15
  599. package/dist/index80.js.map +1 -1
  600. package/dist/index81.js +28 -6
  601. package/dist/index81.js.map +1 -1
  602. package/dist/index82.js +50 -8
  603. package/dist/index82.js.map +1 -1
  604. package/dist/index83.js +9 -17
  605. package/dist/index83.js.map +1 -1
  606. package/dist/index84.js +5 -4
  607. package/dist/index84.js.map +1 -1
  608. package/dist/index85.js +68 -4
  609. package/dist/index85.js.map +1 -1
  610. package/dist/index86.js +2 -6
  611. package/dist/index86.js.map +1 -1
  612. package/dist/index87.js +363 -5
  613. package/dist/index87.js.map +1 -1
  614. package/dist/index88.js +261 -4
  615. package/dist/index88.js.map +1 -1
  616. package/dist/index89.js +60 -4
  617. package/dist/index89.js.map +1 -1
  618. package/dist/index9.js +138 -187
  619. package/dist/index9.js.map +1 -1
  620. package/dist/index90.js +46 -6
  621. package/dist/index90.js.map +1 -1
  622. package/dist/index91.js +169 -24
  623. package/dist/index91.js.map +1 -1
  624. package/dist/index92.js +109 -6
  625. package/dist/index92.js.map +1 -1
  626. package/dist/index93.js +24 -4
  627. package/dist/index93.js.map +1 -1
  628. package/dist/index94.js +8 -7
  629. package/dist/index94.js.map +1 -1
  630. package/dist/index95.js +4 -5
  631. package/dist/index95.js.map +1 -1
  632. package/dist/index96.js +5 -4
  633. package/dist/index96.js.map +1 -1
  634. package/dist/index97.js +4 -5
  635. package/dist/index97.js.map +1 -1
  636. package/dist/index98.js +466 -4
  637. package/dist/index98.js.map +1 -1
  638. package/dist/index99.js +185 -8
  639. package/dist/index99.js.map +1 -1
  640. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index15.js","sources":["../src/components/FilesUploadField/index.tsx"],"sourcesContent":["import { useEffect, useMemo, useRef, useState, type ReactNode } from \"react\"\nimport { createPortal } from \"react-dom\"\nimport type { DragEndEvent } from \"@dnd-kit/core\"\nimport { DndContext, DragOverlay, KeyboardSensor, PointerSensor, closestCenter, useSensor, useSensors } from \"@dnd-kit/core\"\nimport {\n SortableContext,\n arrayMove,\n rectSortingStrategy,\n sortableKeyboardCoordinates,\n useSortable,\n} from \"@dnd-kit/sortable\"\nimport { CSS } from \"@dnd-kit/utilities\"\nimport { Loader2, Maximize2, Plus, X } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\n\nexport type FilesUploadFieldFile = {\n id: string\n url: string\n alt?: string\n uploadKey?: string\n}\n\nconst TENANT_ID_QUERY_PARAM = \"rb-tenant-id\"\n\ntype FileUploadsInitResponse = {\n ok: boolean\n error?: string\n uploadId?: string\n uploadKey?: string\n chunkSize?: number\n chunksTotal?: number\n}\n\ntype FileUploadsStatusResponse = {\n ok: boolean\n error?: string\n status?: \"uploading\" | \"assembling\" | \"done\" | \"error\"\n chunkSize?: number\n chunksTotal?: number\n received?: number[]\n fileId?: string\n}\n\ntype FileUploadsCompleteResponse = {\n ok: boolean\n error?: string\n fileId?: string\n}\n\nconst sha256Hex = async (data: ArrayBuffer): Promise<string | null> => {\n if (typeof crypto === \"undefined\" || typeof crypto.subtle === \"undefined\") return null\n try {\n const digest = await crypto.subtle.digest(\"SHA-256\", data)\n const bytes = Array.from(new Uint8Array(digest))\n return bytes.map((b) => b.toString(16).padStart(2, \"0\")).join(\"\")\n } catch {\n return null\n }\n}\n\nconst readTenantIdFromLocation = (): string | null => {\n if (typeof window === \"undefined\") return null\n const raw = new URLSearchParams(window.location.search || \"\").get(TENANT_ID_QUERY_PARAM)\n const normalized = raw?.trim() ?? \"\"\n return normalized ? normalized : null\n}\n\nconst withTenant = (path: string, tenantId: string | null): string => {\n if (!tenantId) return path\n const sep = path.includes(\"?\") ? \"&\" : \"?\"\n return `${path}${sep}${TENANT_ID_QUERY_PARAM}=${encodeURIComponent(tenantId)}`\n}\n\nconst postJson = async <T,>(\n url: string,\n body: unknown,\n options?: { headers?: Record<string, string>; signal?: AbortSignal },\n): Promise<{ ok: boolean; status: number; data: T }> => {\n const response = await fetch(url, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\", ...(options?.headers ?? {}) },\n credentials: \"include\",\n body: JSON.stringify(body),\n signal: options?.signal,\n })\n\n const payload = await response.json().catch(() => ({}))\n return { ok: response.ok, status: response.status, data: payload as T }\n}\n\nconst getJson = async <T,>(\n url: string,\n options?: { headers?: Record<string, string>; signal?: AbortSignal },\n): Promise<{ ok: boolean; status: number; data: T }> => {\n const response = await fetch(url, {\n credentials: \"include\",\n headers: options?.headers,\n signal: options?.signal,\n })\n const payload = await response.json().catch(() => ({}))\n return { ok: response.ok, status: response.status, data: payload as T }\n}\n\nconst putOctetStream = async ({\n url,\n body,\n sha256,\n uploadKey,\n signal,\n}: {\n url: string\n body: ArrayBuffer\n sha256?: string\n uploadKey?: string\n signal?: AbortSignal\n}): Promise<{ ok: boolean; status: number }> => {\n const headers: Record<string, string> = {\n \"Content-Type\": \"application/octet-stream\",\n }\n if (sha256) headers[\"X-Chunk-SHA256\"] = sha256\n if (uploadKey) headers[\"X-Upload-Key\"] = uploadKey\n\n const response = await fetch(url, {\n method: \"PUT\",\n credentials: \"include\",\n headers,\n body,\n signal,\n })\n\n return { ok: response.ok, status: response.status }\n}\n\nconst defaultUpload: UploadHandler = async (file, onProgress, options) => {\n const tenantId = readTenantIdFromLocation()\n\n const initRes = await postJson<FileUploadsInitResponse>(\n withTenant(\"/api/rb/file-uploads\", tenantId),\n {\n filename: file.name,\n mimeType: file.type || \"application/octet-stream\",\n ...(typeof options?.isPublic === \"boolean\" ? { isPublic: options.isPublic } : {}),\n totalSize: file.size,\n },\n { signal: options?.signal },\n )\n\n if (!initRes.ok || !(initRes.data as any)?.ok) {\n throw new Error((initRes.data as any)?.error ?? `Init failed (${initRes.status})`)\n }\n\n const uploadId = String((initRes.data as any)?.uploadId ?? \"\")\n const uploadKey = typeof (initRes.data as any)?.uploadKey === \"string\" ? String((initRes.data as any).uploadKey) : null\n const chunkSize = Number((initRes.data as any)?.chunkSize ?? 0)\n const chunksTotal = Number((initRes.data as any)?.chunksTotal ?? 0)\n\n if (!uploadId || !chunkSize || !chunksTotal) {\n throw new Error(\"Upload init missing required fields\")\n }\n\n const doUploadChunk = async (index: number) => {\n const start = index * chunkSize\n const end = Math.min(file.size, start + chunkSize)\n const slice = file.slice(start, end)\n const body = await slice.arrayBuffer()\n const sha = await sha256Hex(body)\n\n const res = await putOctetStream({\n url: withTenant(`/api/rb/file-uploads/${encodeURIComponent(uploadId)}/chunks/${index}`, tenantId),\n body,\n sha256: sha ?? undefined,\n uploadKey: uploadKey ?? undefined,\n signal: options?.signal,\n })\n\n if (res.status === 204) return\n throw new Error(`Chunk ${index} failed (${res.status})`)\n }\n\n const uploadChunks = async (indices: number[], alreadyUploaded = 0) => {\n let uploaded = alreadyUploaded\n\n for (const idx of indices) {\n await doUploadChunk(idx)\n uploaded += 1\n const pct = Math.min(99, Math.floor((uploaded / chunksTotal) * 99))\n onProgress(pct)\n }\n }\n\n const allIndices = Array.from({ length: chunksTotal }, (_, i) => i)\n await uploadChunks(allIndices, 0)\n\n const complete = async (): Promise<string> => {\n const completeRes = await postJson<FileUploadsCompleteResponse>(\n withTenant(`/api/rb/file-uploads/${encodeURIComponent(uploadId)}/complete`, tenantId),\n {},\n { headers: uploadKey ? { \"X-Upload-Key\": uploadKey } : undefined, signal: options?.signal },\n )\n\n if (completeRes.ok && (completeRes.data as any)?.ok) {\n const fileId = String((completeRes.data as any)?.fileId ?? \"\")\n if (!fileId) throw new Error(\"Upload completed without fileId\")\n return fileId\n }\n\n const code = String((completeRes.data as any)?.error ?? \"\")\n if (completeRes.status !== 409 || code !== \"missing_chunks\") {\n throw new Error(code || `Complete failed (${completeRes.status})`)\n }\n\n const statusRes = await getJson<FileUploadsStatusResponse>(\n withTenant(`/api/rb/file-uploads/${encodeURIComponent(uploadId)}/status`, tenantId),\n { headers: uploadKey ? { \"X-Upload-Key\": uploadKey } : undefined, signal: options?.signal },\n )\n\n if (!statusRes.ok || !(statusRes.data as any)?.ok) {\n throw new Error((statusRes.data as any)?.error ?? `Status failed (${statusRes.status})`)\n }\n\n const received = Array.isArray((statusRes.data as any)?.received) ? (statusRes.data as any).received : []\n const present = new Set<number>(received)\n const missing: number[] = []\n for (let i = 0; i < chunksTotal; i += 1) {\n if (!present.has(i)) missing.push(i)\n }\n\n if (!missing.length) {\n throw new Error(\"missing_chunks\")\n }\n\n await uploadChunks(missing, present.size)\n return complete()\n }\n\n const fileId = await complete()\n\n onProgress(100)\n return {\n id: fileId,\n url: withTenant(`/api/rb/files/${encodeURIComponent(fileId)}`, tenantId),\n alt: file.name,\n ...(uploadKey ? { uploadKey } : {}),\n }\n}\n\nfunction SortableTile({\n item,\n isHovered,\n enableImagePreview,\n renderItem,\n onHoverEnter,\n onHoverLeave,\n onRemove,\n onRetry,\n startFullscreen,\n isUploading,\n isError,\n tileClasses,\n disabled,\n isDraggingExternal,\n removeButtonAriaLabel,\n}: {\n item: FileWithState\n isHovered: boolean\n enableImagePreview: boolean\n renderItem?: (props: FilesUploadFieldRenderItemProps) => ReactNode\n onHoverEnter: () => void\n onHoverLeave: () => void\n onRemove: (id: string) => void\n onRetry: (id: string) => void\n startFullscreen: (id: string) => void\n isUploading: boolean\n isError: boolean\n tileClasses: string\n disabled: boolean\n isDraggingExternal: boolean\n removeButtonAriaLabel: string\n}) {\n const { setNodeRef, attributes, listeners, transform, transition, isDragging } = useSortable({\n id: item.id,\n disabled,\n })\n\n const tileRef = useRef<HTMLDivElement | null>(null)\n const previewRef = useRef<HTMLDivElement | null>(null)\n const [previewPosition, setPreviewPosition] = useState<{ left: number; top: number } | null>(null)\n\n const updatePreviewPosition = () => {\n const el = tileRef.current\n if (!el) return\n const rect = el.getBoundingClientRect()\n setPreviewPosition({ left: rect.left + rect.width / 2, top: rect.top - 10 })\n }\n\n useEffect(() => {\n if (!enableImagePreview || !isHovered) {\n setPreviewPosition(null)\n return\n }\n\n updatePreviewPosition()\n\n let raf = 0\n const schedule = () => {\n if (raf) cancelAnimationFrame(raf)\n raf = requestAnimationFrame(() => {\n raf = 0\n updatePreviewPosition()\n })\n }\n\n window.addEventListener(\"resize\", schedule)\n window.addEventListener(\"scroll\", schedule, true)\n return () => {\n if (raf) cancelAnimationFrame(raf)\n window.removeEventListener(\"resize\", schedule)\n window.removeEventListener(\"scroll\", schedule, true)\n }\n }, [enableImagePreview, isHovered])\n\n const style = {\n transform: CSS.Transform.toString(transform),\n transition,\n }\n\n const tileContent = renderItem\n ? renderItem({\n file: { id: item.id, url: item.url, alt: item.alt, uploadKey: item.uploadKey },\n previewUrl: item.previewUrl,\n status: item.status,\n progress: item.progress,\n fileName: item.fileName,\n })\n : enableImagePreview\n ? (\n <img\n src={item.previewUrl}\n alt={item.alt ?? \"Uploaded file\"}\n className={cn(\n \"size-full rounded-md object-cover\",\n isUploading && \"opacity-75\",\n isError && \"grayscale\"\n )}\n />\n )\n : (\n <div className=\"flex size-full items-center justify-center rounded-md bg-slate-100 px-2 text-center text-[10px] font-medium text-slate-700 dark:bg-slate-800 dark:text-slate-200\">\n <span className=\"w-full truncate\">{item.fileName ?? item.alt ?? \"Fichier\"}</span>\n </div>\n )\n\n return (\n <div\n ref={(node) => {\n tileRef.current = node\n setNodeRef(node)\n }}\n style={style}\n className={cn(\n tileClasses,\n isDragging && \"z-20 ring-2 ring-primary shadow-xl\",\n isDraggingExternal && \"opacity-0\",\n !disabled && \"cursor-grab active:cursor-grabbing\",\n isDragging && \"cursor-grabbing\",\n disabled && \"cursor-default\"\n )}\n onMouseEnter={() => {\n updatePreviewPosition()\n onHoverEnter()\n }}\n onMouseLeave={(event) => {\n const next = event.relatedTarget\n if (next instanceof Node && previewRef.current?.contains(next)) return\n onHoverLeave()\n }}\n {...attributes}\n {...listeners}\n >\n {tileContent}\n\n <button\n type=\"button\"\n onClick={() => {\n if (disabled) return\n onRemove(item.id)\n }}\n disabled={disabled}\n className=\"absolute right-1 top-1 inline-flex size-6 items-center justify-center rounded-full bg-white text-slate-700 shadow-sm transition hover:scale-105 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary dark:bg-slate-900 dark:text-slate-200\"\n aria-label={removeButtonAriaLabel}\n >\n <X className=\"h-4 w-4\" />\n </button>\n\n {enableImagePreview &&\n isHovered &&\n previewPosition &&\n (() => {\n const preview = (\n <div\n ref={previewRef}\n className=\"fixed z-[60] w-52 -translate-x-1/2 -translate-y-full rounded-xl border border-slate-200 bg-white/95 p-3 shadow-2xl backdrop-blur dark:border-slate-700 dark:bg-slate-900/95\"\n style={{ left: previewPosition.left, top: previewPosition.top }}\n onMouseEnter={() => {\n updatePreviewPosition()\n onHoverEnter()\n }}\n onMouseLeave={(event) => {\n const next = event.relatedTarget\n if (next instanceof Node && tileRef.current?.contains(next)) return\n onHoverLeave()\n }}\n >\n <div className=\"relative overflow-hidden rounded-lg\">\n <img src={item.url} alt={item.alt ?? \"Preview\"} className=\"h-40 w-full object-cover\" />\n <button\n type=\"button\"\n onClick={() => startFullscreen(item.id)}\n className=\"absolute right-2 top-2 inline-flex items-center justify-center rounded-full bg-black/70 p-2 text-white transition hover:bg-black\"\n aria-label=\"Plein écran\"\n >\n <Maximize2 className=\"h-3.5 w-3.5\" />\n </button>\n </div>\n </div>\n )\n\n if (typeof document === \"undefined\") return preview\n return createPortal(preview, document.body)\n })()}\n\n {isUploading && (\n <div className=\"absolute inset-0 z-20 flex flex-col items-center justify-center gap-2 rounded-lg bg-black/40 text-white\">\n <Loader2 className=\"h-5 w-5 animate-spin\" />\n <div className=\"h-1.5 w-5/6 rounded-full bg-white/20\">\n <div className=\"h-full rounded-full bg-primary\" style={{ width: `${item.progress}%` }} />\n </div>\n <div className=\"text-xs font-semibold\">{item.progress}%</div>\n </div>\n )}\n\n {isError && (\n <div className=\"absolute inset-0 z-10 flex flex-col items-center justify-center gap-2 rounded-lg bg-red-600/70 text-white\">\n <div className=\"text-xs font-semibold\">Échec</div>\n <button\n type=\"button\"\n onClick={() => onRetry(item.id)}\n disabled={disabled}\n className=\"rounded-full bg-white/90 px-3 py-1 text-xs font-semibold text-red-700 shadow-sm transition hover:bg-white focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-white\"\n >\n Réessayer\n </button>\n </div>\n )}\n </div>\n )\n}\n\ntype UploadResult = FilesUploadFieldFile | Promise<FilesUploadFieldFile>\n\ntype UploadHandler = (\n file: File,\n onProgress: (progress: number) => void,\n options?: { signal?: AbortSignal; isPublic?: boolean },\n) => UploadResult\n\nexport type FilesUploadFieldRenderItemProps = {\n file: FilesUploadFieldFile\n previewUrl: string\n status: \"uploaded\" | \"uploading\" | \"error\"\n progress: number\n fileName?: string\n}\n\nexport type FilesUploadFieldProps = {\n initialFiles?: FilesUploadFieldFile[]\n onChange?: (files: FilesUploadFieldFile[]) => void\n upload?: UploadHandler\n uploadIsPublic?: boolean\n disabled?: boolean\n onUploadingChange?: (isUploading: boolean) => void\n accept?: string | string[]\n renderHeader?: () => ReactNode\n renderItem?: (props: FilesUploadFieldRenderItemProps) => ReactNode\n addButtonAriaLabel?: string\n removeButtonAriaLabel?: string\n}\n\ntype FileWithState = FilesUploadFieldFile & {\n previewUrl: string\n status: \"uploaded\" | \"uploading\" | \"error\"\n progress: number\n fileName?: string\n}\n\nfunction toPreview(file: File) {\n return URL.createObjectURL(file)\n}\n\nexport function FilesUploadField({\n initialFiles = [],\n onChange,\n upload = defaultUpload,\n uploadIsPublic = false,\n disabled = false,\n onUploadingChange,\n accept,\n renderHeader,\n renderItem,\n addButtonAriaLabel = \"Ajouter un fichier\",\n removeButtonAriaLabel = \"Supprimer le fichier\",\n}: FilesUploadFieldProps) {\n const fileInputRef = useRef<HTMLInputElement>(null)\n const [images, setImages] = useState<FileWithState[]>(() =>\n initialFiles.map((file) => ({ ...file, previewUrl: file.url, status: \"uploaded\", progress: 100 }))\n )\n const [dragActive, setDragActive] = useState(false)\n const [fullscreenIndex, setFullscreenIndex] = useState<number | null>(null)\n const [hoveredId, setHoveredId] = useState<string | null>(null)\n const [activeId, setActiveId] = useState<string | null>(null)\n const hoverTimeoutRef = useRef<number | null>(null)\n const skipNotifyRef = useRef(true)\n const imagesRef = useRef<FileWithState[]>([])\n const lastInitialImagesRef = useRef<FilesUploadFieldFile[]>(initialFiles)\n const onChangeRef = useRef(onChange)\n const onUploadingChangeRef = useRef(onUploadingChange)\n const replacedIdRef = useRef<Map<string, string>>(new Map())\n const fileRef = useRef<Map<string, File>>(new Map())\n const abortRef = useRef<Map<string, AbortController>>(new Map())\n const objectUrlRef = useRef<Map<string, string>>(new Map())\n const sensors = useSensors(\n useSensor(PointerSensor, { activationConstraint: { distance: 6 } }),\n useSensor(KeyboardSensor, { coordinateGetter: sortableKeyboardCoordinates })\n )\n\n useEffect(() => {\n return () => {\n for (const controller of abortRef.current.values()) {\n try {\n controller.abort()\n } catch {\n //\n }\n }\n abortRef.current.clear()\n fileRef.current.clear()\n replacedIdRef.current.clear()\n\n for (const url of objectUrlRef.current.values()) {\n if (typeof URL !== \"undefined\") {\n try {\n URL.revokeObjectURL(url)\n } catch {\n //\n }\n }\n }\n objectUrlRef.current.clear()\n }\n }, [])\n\n useEffect(() => {\n if (typeof document === \"undefined\") return\n if (activeId) {\n document.body.style.cursor = \"grabbing\"\n return () => {\n document.body.style.cursor = \"\"\n }\n }\n document.body.style.cursor = \"\"\n }, [activeId])\n\n useEffect(() => {\n imagesRef.current = images\n }, [images])\n\n useEffect(() => {\n onChangeRef.current = onChange\n }, [onChange])\n\n useEffect(() => {\n onUploadingChangeRef.current = onUploadingChange\n }, [onUploadingChange])\n\n useEffect(() => {\n const previous = lastInitialImagesRef.current\n const samePropValue =\n previous.length === initialFiles.length &&\n previous.every((img, index) => {\n const next = initialFiles[index]\n return next && img.id === next.id && img.url === next.url && img.alt === next.alt\n })\n\n if (samePropValue) return\n lastInitialImagesRef.current = initialFiles\n\n const prepared: FileWithState[] = initialFiles.map((img) => ({\n ...img,\n previewUrl: img.url,\n status: \"uploaded\",\n progress: 100,\n }))\n\n const preparedRawIds = new Set(prepared.map((img) => img.id))\n for (const [tempId, finalId] of replacedIdRef.current.entries()) {\n if (preparedRawIds.has(finalId)) {\n replacedIdRef.current.delete(tempId)\n }\n }\n\n const currentIds = new Set(imagesRef.current.map((img) => img.id))\n const hasStaleInitialImages = prepared.some((img) => {\n const mapped = replacedIdRef.current.get(img.id)\n return mapped ? currentIds.has(mapped) : false\n })\n if (hasStaleInitialImages) return\n\n const preparedIds = new Set(prepared.map((img) => img.id))\n for (const img of imagesRef.current) {\n if (preparedIds.has(img.id)) continue\n\n const controller = abortRef.current.get(img.id)\n if (controller) {\n abortRef.current.delete(img.id)\n try {\n controller.abort()\n } catch {\n //\n }\n }\n\n fileRef.current.delete(img.id)\n\n const tempUrl = objectUrlRef.current.get(img.id)\n if (tempUrl) {\n objectUrlRef.current.delete(img.id)\n try {\n URL.revokeObjectURL(tempUrl)\n } catch {\n //\n }\n }\n }\n\n setImages((current) => {\n const sameLength = current.length === prepared.length\n const sameContent =\n sameLength &&\n current.every((item, index) => {\n const next = prepared[index]\n return next && item.id === next.id && item.url === next.url && item.alt === next.alt && item.uploadKey === next.uploadKey\n })\n\n if (sameContent) return current\n\n skipNotifyRef.current = true\n return prepared\n })\n }, [initialFiles])\n\n useEffect(() => {\n if (skipNotifyRef.current) {\n skipNotifyRef.current = false\n return\n }\n\n onChangeRef.current?.(images.map(({ id, url, alt, uploadKey }) => ({ id, url, alt, uploadKey })))\n }, [images])\n\n useEffect(() => {\n onUploadingChangeRef.current?.(images.some((img) => img.status === \"uploading\"))\n }, [images])\n\n useEffect(() => {\n if (fullscreenIndex === null) {\n return\n }\n\n const handleKey = (event: KeyboardEvent) => {\n if (event.key === \"Escape\") {\n setFullscreenIndex(null)\n return\n }\n\n if (event.key === \"ArrowRight\") {\n setFullscreenIndex((current) => {\n if (current === null) return current\n return (current + 1) % images.length\n })\n return\n }\n\n if (event.key === \"ArrowLeft\") {\n setFullscreenIndex((current) => {\n if (current === null) return current\n return (current - 1 + images.length) % images.length\n })\n }\n }\n\n window.addEventListener(\"keydown\", handleKey)\n return () => window.removeEventListener(\"keydown\", handleKey)\n }, [fullscreenIndex, images.length])\n\n const handleFiles = async (files: FileList | File[]) => {\n if (disabled) return\n const list = Array.from(files)\n\n const uploads = list.map((file) => {\n const previewUrl = toPreview(file)\n const tempId = crypto.randomUUID()\n\n objectUrlRef.current.set(tempId, previewUrl)\n fileRef.current.set(tempId, file)\n\n const next: FileWithState = {\n id: tempId,\n url: previewUrl,\n previewUrl,\n alt: file.name,\n status: \"uploading\",\n progress: 0,\n fileName: file.name,\n }\n\n setImages((current) => [...current, next])\n\n const updateProgress = (value: number) => {\n const nextValue = Math.max(0, Math.min(99, value))\n setImages((current) =>\n current.map((item) =>\n item.id === tempId ? { ...item, progress: nextValue, status: \"uploading\" } : item\n )\n )\n }\n\n const finalize = async () => {\n const controller = new AbortController()\n abortRef.current.set(tempId, controller)\n\n try {\n const result = await upload(file, updateProgress, { signal: controller.signal, isPublic: uploadIsPublic })\n replacedIdRef.current.set(tempId, result.id)\n\n const tempUrl = objectUrlRef.current.get(tempId)\n if (tempUrl) {\n objectUrlRef.current.delete(tempId)\n try {\n URL.revokeObjectURL(tempUrl)\n } catch {\n //\n }\n }\n\n abortRef.current.delete(tempId)\n fileRef.current.delete(tempId)\n\n setImages((current) =>\n current.map((item) =>\n item.id === tempId\n ? {\n ...item,\n ...result,\n previewUrl: result.url,\n url: result.url,\n status: \"uploaded\",\n progress: 100,\n }\n : item\n )\n )\n } catch (error) {\n abortRef.current.delete(tempId)\n if (controller.signal.aborted) {\n fileRef.current.delete(tempId)\n const tempUrl = objectUrlRef.current.get(tempId)\n if (tempUrl) {\n objectUrlRef.current.delete(tempId)\n try {\n URL.revokeObjectURL(tempUrl)\n } catch {\n //\n }\n }\n return\n }\n console.error(\"Upload failed\", error)\n setImages((current) =>\n current.map((item) =>\n item.id === tempId\n ? { ...item, status: \"error\", progress: Math.max(0, Math.min(99, item.progress)) }\n : item\n )\n )\n }\n }\n\n return finalize()\n })\n\n await Promise.allSettled(uploads)\n }\n\n const onFileInputChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n if (!event.target.files) return\n void handleFiles(event.target.files)\n event.target.value = \"\"\n }\n\n const openFileDialog = () => {\n if (disabled) return\n fileInputRef.current?.click()\n }\n\n const removeImage = (id: string) => {\n const controller = abortRef.current.get(id)\n if (controller) {\n abortRef.current.delete(id)\n try {\n controller.abort()\n } catch {\n //\n }\n }\n\n fileRef.current.delete(id)\n\n const tempUrl = objectUrlRef.current.get(id)\n if (tempUrl) {\n objectUrlRef.current.delete(id)\n try {\n URL.revokeObjectURL(tempUrl)\n } catch {\n //\n }\n }\n\n setImages((current) => current.filter((item) => item.id !== id))\n }\n\n const retryUpload = (id: string) => {\n if (disabled) return\n const file = fileRef.current.get(id)\n if (!file) return\n\n const existingController = abortRef.current.get(id)\n if (existingController) {\n try {\n existingController.abort()\n } catch {\n //\n }\n abortRef.current.delete(id)\n }\n\n setImages((current) =>\n current.map((item) => (item.id === id ? { ...item, status: \"uploading\", progress: 0 } : item))\n )\n\n const updateProgress = (value: number) => {\n const nextValue = Math.max(0, Math.min(99, value))\n setImages((current) =>\n current.map((item) => (item.id === id ? { ...item, progress: nextValue, status: \"uploading\" } : item))\n )\n }\n\n const controller = new AbortController()\n abortRef.current.set(id, controller)\n\n void (async () => {\n try {\n const result = await upload(file, updateProgress, { signal: controller.signal, isPublic: uploadIsPublic })\n replacedIdRef.current.set(id, result.id)\n\n const tempUrl = objectUrlRef.current.get(id)\n if (tempUrl) {\n objectUrlRef.current.delete(id)\n try {\n URL.revokeObjectURL(tempUrl)\n } catch {\n //\n }\n }\n\n abortRef.current.delete(id)\n fileRef.current.delete(id)\n\n setImages((current) =>\n current.map((item) =>\n item.id === id\n ? { ...item, ...result, previewUrl: result.url, url: result.url, status: \"uploaded\", progress: 100 }\n : item\n )\n )\n } catch (error) {\n abortRef.current.delete(id)\n if (controller.signal.aborted) return\n console.error(\"Retry failed\", error)\n setImages((current) => current.map((item) => (item.id === id ? { ...item, status: \"error\" } : item)))\n }\n })()\n }\n\n const startFullscreen = (id: string) => {\n const index = images.findIndex((item) => item.id === id)\n if (index !== -1) {\n setFullscreenIndex(index)\n }\n }\n\n const handleDragStart = (event: DragEndEvent) => {\n setActiveId(String(event.active.id))\n }\n\n const handleDragEnd = (event: DragEndEvent) => {\n const { active, over } = event\n if (!over) {\n setActiveId(null)\n return\n }\n\n const activeId = String(active.id)\n const overId = String(over.id)\n\n if (activeId !== overId) {\n setImages((current) => {\n const oldIndex = current.findIndex((item) => item.id === activeId)\n const newIndex = current.findIndex((item) => item.id === overId)\n if (oldIndex === -1 || newIndex === -1) return current\n return arrayMove(current, oldIndex, newIndex)\n })\n }\n\n setActiveId(null)\n }\n\n const handleDragCancel = () => {\n setActiveId(null)\n }\n\n const clearHoverTimeout = () => {\n if (hoverTimeoutRef.current !== null) {\n window.clearTimeout(hoverTimeoutRef.current)\n hoverTimeoutRef.current = null\n }\n }\n\n const fullscreenImage = useMemo(() => {\n if (fullscreenIndex === null) return null\n return images[fullscreenIndex] ?? null\n }, [fullscreenIndex, images])\n\n const containerClasses = cn(\n \"rounded-xl border border-dashed border-slate-300 bg-white/70 p-4 shadow-sm transition-colors dark:border-slate-700 dark:bg-slate-900/60\",\n dragActive && \"border-primary ring-2 ring-primary/50\",\n disabled && \"opacity-70\"\n )\n\n const tileBaseClasses = \"group relative size-20 overflow-visible rounded-lg border border-slate-200 bg-slate-50 shadow-inner transition hover:shadow md:size-24 dark:border-slate-700 dark:bg-slate-800\"\n\n const acceptAttr = useMemo(() => {\n if (!accept) return undefined\n if (Array.isArray(accept)) return accept.join(\",\")\n return accept\n }, [accept])\n\n const enableImagePreview = useMemo(() => {\n if (renderItem) return false\n if (!acceptAttr) return false\n const tokens = acceptAttr.split(\",\").map((value) => value.trim()).filter(Boolean)\n if (!tokens.length) return false\n return tokens.every((token) => token === \"image/*\" || token.startsWith(\"image/\"))\n }, [acceptAttr, renderItem])\n\n const toRenderItemProps = (item: FileWithState): FilesUploadFieldRenderItemProps => ({\n file: { id: item.id, url: item.url, alt: item.alt, uploadKey: item.uploadKey },\n previewUrl: item.previewUrl,\n status: item.status,\n progress: item.progress,\n fileName: item.fileName,\n })\n\n const dragOverlayContent = activeId\n ? (() => {\n const activeItem = images.find((item) => item.id === activeId)\n if (!activeItem) return null\n\n if (renderItem) {\n const rendered = renderItem(toRenderItemProps(activeItem))\n if (rendered === null || rendered === undefined || rendered === false) return null\n return (\n <div className=\"pointer-events-none\">\n <div className=\"h-24 w-24 overflow-hidden rounded-lg shadow-2xl\">{rendered}</div>\n </div>\n )\n }\n\n if (!enableImagePreview) return null\n return (\n <div className=\"pointer-events-none\">\n <img\n src={activeItem.previewUrl}\n alt={activeItem.alt ?? \"Dragged image\"}\n className=\"h-24 w-24 rounded-lg object-cover shadow-2xl\"\n />\n </div>\n )\n })()\n : null\n\n const hideActiveTile = dragOverlayContent !== null && dragOverlayContent !== undefined\n\n return (\n <div\n onDragOver={(event) => {\n event.preventDefault()\n if (!disabled) {\n setDragActive(true)\n }\n }}\n onDragLeave={() => setDragActive(false)}\n onDrop={(event) => {\n event.preventDefault()\n setDragActive(false)\n if (event.dataTransfer.files?.length) {\n void handleFiles(event.dataTransfer.files)\n }\n }}\n className={containerClasses}\n >\n {renderHeader ? <div className=\"mb-3\">{renderHeader()}</div> : null}\n\n <DndContext\n sensors={disabled ? undefined : sensors}\n collisionDetection={closestCenter}\n onDragStart={handleDragStart}\n onDragEnd={handleDragEnd}\n onDragCancel={handleDragCancel}\n >\n <SortableContext items={images.map((item) => item.id)} strategy={rectSortingStrategy}>\n <div className=\"flex flex-wrap gap-3\">\n {images.map((item) => {\n const isUploading = item.status === \"uploading\"\n const isError = item.status === \"error\"\n\n return (\n <SortableTile\n key={item.id}\n item={item}\n isHovered={hoveredId === item.id}\n enableImagePreview={enableImagePreview}\n renderItem={renderItem}\n onHoverEnter={() => {\n clearHoverTimeout()\n setHoveredId(item.id)\n }}\n onHoverLeave={() => {\n clearHoverTimeout()\n hoverTimeoutRef.current = window.setTimeout(() => {\n setHoveredId((current) => (current === item.id ? null : current))\n hoverTimeoutRef.current = null\n }, 120)\n }}\n onRemove={removeImage}\n onRetry={retryUpload}\n startFullscreen={startFullscreen}\n isUploading={isUploading}\n isError={isError}\n tileClasses={tileBaseClasses}\n disabled={disabled}\n isDraggingExternal={hideActiveTile && activeId === item.id}\n removeButtonAriaLabel={removeButtonAriaLabel}\n />\n )\n })}\n\n <button\n type=\"button\"\n onClick={openFileDialog}\n disabled={disabled}\n className={cn(\n tileBaseClasses,\n \"flex items-center justify-center border-dashed bg-white text-slate-500 hover:border-slate-300 dark:bg-slate-900\"\n )}\n aria-label={addButtonAriaLabel}\n >\n <div className=\"flex flex-col items-center gap-1\">\n <div className=\"flex size-9 items-center justify-center rounded-full border border-slate-300 bg-slate-100 text-slate-600 shadow-inner dark:border-slate-700 dark:bg-slate-800 dark:text-slate-200\">\n <Plus className=\"h-5 w-5\" />\n </div>\n <span className=\"text-xs font-medium\">Ajouter</span>\n </div>\n </button>\n </div>\n </SortableContext>\n {(() => {\n const overlay = <DragOverlay>{dragOverlayContent}</DragOverlay>\n\n if (typeof document === \"undefined\") return overlay\n return createPortal(overlay, document.body)\n })()}\n </DndContext>\n\n <input\n ref={fileInputRef}\n type=\"file\"\n accept={acceptAttr}\n multiple\n className=\"hidden\"\n onChange={onFileInputChange}\n aria-hidden\n />\n\n {enableImagePreview && fullscreenImage && (\n <div className=\"fixed inset-0 z-50 flex items-center justify-center bg-black/90\">\n <button\n type=\"button\"\n className=\"absolute left-6 top-1/2 -translate-y-1/2 rounded-full bg-white/10 p-3 text-white shadow-lg transition hover:bg-white/20 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-white\"\n onClick={() =>\n setFullscreenIndex((current) => {\n if (current === null) return current\n return (current - 1 + images.length) % images.length\n })\n }\n aria-label=\"Précédent\"\n >\n <svg viewBox=\"0 0 24 24\" className=\"h-6 w-6\" stroke=\"currentColor\" strokeWidth={2} fill=\"none\">\n <path d=\"M15 18l-6-6 6-6\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n </button>\n <div className=\"relative max-h-[80vh] max-w-4xl\">\n <img\n src={fullscreenImage.url}\n alt={fullscreenImage.alt ?? \"Fullscreen\"}\n className=\"max-h-[80vh] max-w-full rounded-lg object-contain shadow-2xl\"\n />\n <button\n type=\"button\"\n className=\"absolute right-3 top-3 inline-flex size-9 items-center justify-center rounded-full bg-black/70 text-white transition hover:bg-black focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-white\"\n onClick={() => setFullscreenIndex(null)}\n aria-label=\"Fermer\"\n >\n <X className=\"h-5 w-5\" />\n </button>\n </div>\n <button\n type=\"button\"\n className=\"absolute right-6 top-1/2 -translate-y-1/2 rounded-full bg-white/10 p-3 text-white shadow-lg transition hover:bg-white/20 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-white\"\n onClick={() =>\n setFullscreenIndex((current) => {\n if (current === null) return current\n return (current + 1) % images.length\n })\n }\n aria-label=\"Suivant\"\n >\n <svg viewBox=\"0 0 24 24\" className=\"h-6 w-6\" stroke=\"currentColor\" strokeWidth={2} fill=\"none\">\n <path d=\"M9 6l6 6-6 6\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n </button>\n </div>\n )}\n </div>\n )\n}\n"],"names":["TENANT_ID_QUERY_PARAM","sha256Hex","data","digest","b","readTenantIdFromLocation","normalized","withTenant","path","tenantId","sep","postJson","url","body","options","response","payload","getJson","putOctetStream","sha256","uploadKey","signal","headers","defaultUpload","file","onProgress","initRes","uploadId","chunkSize","chunksTotal","doUploadChunk","index","start","end","sha","res","uploadChunks","indices","alreadyUploaded","uploaded","idx","pct","allIndices","_","i","complete","completeRes","fileId","code","statusRes","received","present","missing","SortableTile","item","isHovered","enableImagePreview","renderItem","onHoverEnter","onHoverLeave","onRemove","onRetry","startFullscreen","isUploading","isError","tileClasses","disabled","isDraggingExternal","removeButtonAriaLabel","setNodeRef","attributes","listeners","transform","transition","isDragging","useSortable","tileRef","useRef","previewRef","previewPosition","setPreviewPosition","useState","updatePreviewPosition","el","rect","useEffect","raf","schedule","style","CSS","tileContent","jsx","cn","jsxs","node","event","next","X","preview","Maximize2","createPortal","Loader2","toPreview","FilesUploadField","initialFiles","onChange","upload","uploadIsPublic","onUploadingChange","accept","renderHeader","addButtonAriaLabel","fileInputRef","images","setImages","dragActive","setDragActive","fullscreenIndex","setFullscreenIndex","hoveredId","setHoveredId","activeId","setActiveId","hoverTimeoutRef","skipNotifyRef","imagesRef","lastInitialImagesRef","onChangeRef","onUploadingChangeRef","replacedIdRef","fileRef","abortRef","objectUrlRef","sensors","useSensors","useSensor","PointerSensor","KeyboardSensor","sortableKeyboardCoordinates","controller","previous","img","prepared","preparedRawIds","tempId","finalId","currentIds","mapped","preparedIds","tempUrl","current","id","alt","handleKey","handleFiles","files","uploads","previewUrl","updateProgress","value","nextValue","result","error","onFileInputChange","openFileDialog","removeImage","retryUpload","existingController","handleDragStart","handleDragEnd","active","over","overId","oldIndex","newIndex","arrayMove","handleDragCancel","clearHoverTimeout","fullscreenImage","useMemo","containerClasses","tileBaseClasses","acceptAttr","tokens","token","toRenderItemProps","dragOverlayContent","activeItem","rendered","hideActiveTile","DndContext","closestCenter","SortableContext","rectSortingStrategy","Plus","overlay","DragOverlay"],"mappings":";;;;;;;;AAwBA,MAAMA,KAAwB,gBA2BxBC,KAAY,OAAOC,MAA8C;AACrE,MAAI,OAAO,SAAW,OAAe,OAAO,OAAO,SAAW,IAAa,QAAO;AAClF,MAAI;AACF,UAAMC,IAAS,MAAM,OAAO,OAAO,OAAO,WAAWD,CAAI;AAEzD,WADc,MAAM,KAAK,IAAI,WAAWC,CAAM,CAAC,EAClC,IAAI,CAACC,MAAMA,EAAE,SAAS,EAAE,EAAE,SAAS,GAAG,GAAG,CAAC,EAAE,KAAK,EAAE;AAAA,EAClE,QAAQ;AACN,WAAO;AAAA,EACT;AACF,GAEMC,KAA2B,MAAqB;AACpD,MAAI,OAAO,SAAW,IAAa,QAAO;AAE1C,QAAMC,IADM,IAAI,gBAAgB,OAAO,SAAS,UAAU,EAAE,EAAE,IAAIN,EAAqB,GAC/D,KAAA,KAAU;AAClC,SAAOM,KAA0B;AACnC,GAEMC,IAAa,CAACC,GAAcC,MAAoC;AACpE,MAAI,CAACA,EAAU,QAAOD;AACtB,QAAME,IAAMF,EAAK,SAAS,GAAG,IAAI,MAAM;AACvC,SAAO,GAAGA,CAAI,GAAGE,CAAG,GAAGV,EAAqB,IAAI,mBAAmBS,CAAQ,CAAC;AAC9E,GAEME,KAAW,OACfC,GACAC,GACAC,MACsD;AACtD,QAAMC,IAAW,MAAM,MAAMH,GAAK;AAAA,IAChC,QAAQ;AAAA,IACR,SAAS,EAAE,gBAAgB,oBAAoB,GAAIE,GAAS,WAAW,GAAC;AAAA,IACxE,aAAa;AAAA,IACb,MAAM,KAAK,UAAUD,CAAI;AAAA,IACzB,QAAQC,GAAS;AAAA,EAAA,CAClB,GAEKE,IAAU,MAAMD,EAAS,KAAA,EAAO,MAAM,OAAO,CAAA,EAAG;AACtD,SAAO,EAAE,IAAIA,EAAS,IAAI,QAAQA,EAAS,QAAQ,MAAMC,EAAA;AAC3D,GAEMC,KAAU,OACdL,GACAE,MACsD;AACtD,QAAMC,IAAW,MAAM,MAAMH,GAAK;AAAA,IAChC,aAAa;AAAA,IACb,SAASE,GAAS;AAAA,IAClB,QAAQA,GAAS;AAAA,EAAA,CAClB,GACKE,IAAU,MAAMD,EAAS,KAAA,EAAO,MAAM,OAAO,CAAA,EAAG;AACtD,SAAO,EAAE,IAAIA,EAAS,IAAI,QAAQA,EAAS,QAAQ,MAAMC,EAAA;AAC3D,GAEME,KAAiB,OAAO;AAAA,EAC5B,KAAAN;AAAA,EACA,MAAAC;AAAA,EACA,QAAAM;AAAA,EACA,WAAAC;AAAA,EACA,QAAAC;AACF,MAMgD;AAC9C,QAAMC,IAAkC;AAAA,IACtC,gBAAgB;AAAA,EAAA;AAElB,EAAIH,MAAQG,EAAQ,gBAAgB,IAAIH,IACpCC,MAAWE,EAAQ,cAAc,IAAIF;AAEzC,QAAML,IAAW,MAAM,MAAMH,GAAK;AAAA,IAChC,QAAQ;AAAA,IACR,aAAa;AAAA,IACb,SAAAU;AAAA,IACA,MAAAT;AAAA,IACA,QAAAQ;AAAA,EAAA,CACD;AAED,SAAO,EAAE,IAAIN,EAAS,IAAI,QAAQA,EAAS,OAAA;AAC7C,GAEMQ,KAA+B,OAAOC,GAAMC,GAAYX,MAAY;AACxE,QAAML,IAAWJ,GAAA,GAEXqB,IAAU,MAAMf;AAAA,IACpBJ,EAAW,wBAAwBE,CAAQ;AAAA,IAC3C;AAAA,MACE,UAAUe,EAAK;AAAA,MACf,UAAUA,EAAK,QAAQ;AAAA,MACvB,GAAI,OAAOV,GAAS,YAAa,YAAY,EAAE,UAAUA,EAAQ,SAAA,IAAa,CAAA;AAAA,MAC9E,WAAWU,EAAK;AAAA,IAAA;AAAA,IAElB,EAAE,QAAQV,GAAS,OAAA;AAAA,EAAO;AAG5B,MAAI,CAACY,EAAQ,MAAM,CAAEA,EAAQ,MAAc;AACzC,UAAM,IAAI,MAAOA,EAAQ,MAAc,SAAS,gBAAgBA,EAAQ,MAAM,GAAG;AAGnF,QAAMC,IAAW,OAAQD,EAAQ,MAAc,YAAY,EAAE,GACvDN,IAAY,OAAQM,EAAQ,MAAc,aAAc,WAAW,OAAQA,EAAQ,KAAa,SAAS,IAAI,MAC7GE,IAAY,OAAQF,EAAQ,MAAc,aAAa,CAAC,GACxDG,IAAc,OAAQH,EAAQ,MAAc,eAAe,CAAC;AAElE,MAAI,CAACC,KAAY,CAACC,KAAa,CAACC;AAC9B,UAAM,IAAI,MAAM,qCAAqC;AAGvD,QAAMC,IAAgB,OAAOC,MAAkB;AAC7C,UAAMC,IAAQD,IAAQH,GAChBK,IAAM,KAAK,IAAIT,EAAK,MAAMQ,IAAQJ,CAAS,GAE3Cf,IAAO,MADCW,EAAK,MAAMQ,GAAOC,CAAG,EACV,YAAA,GACnBC,IAAM,MAAMjC,GAAUY,CAAI,GAE1BsB,IAAM,MAAMjB,GAAe;AAAA,MAC/B,KAAKX,EAAW,wBAAwB,mBAAmBoB,CAAQ,CAAC,WAAWI,CAAK,IAAItB,CAAQ;AAAA,MAChG,MAAAI;AAAA,MACA,QAAQqB,KAAO;AAAA,MACf,WAAWd,KAAa;AAAA,MACxB,QAAQN,GAAS;AAAA,IAAA,CAClB;AAED,QAAIqB,EAAI,WAAW;AACnB,YAAM,IAAI,MAAM,SAASJ,CAAK,YAAYI,EAAI,MAAM,GAAG;AAAA,EACzD,GAEMC,IAAe,OAAOC,GAAmBC,IAAkB,MAAM;AACrE,QAAIC,IAAWD;AAEf,eAAWE,KAAOH,GAAS;AACzB,YAAMP,EAAcU,CAAG,GACvBD,KAAY;AACZ,YAAME,IAAM,KAAK,IAAI,IAAI,KAAK,MAAOF,IAAWV,IAAe,EAAE,CAAC;AAClE,MAAAJ,EAAWgB,CAAG;AAAA,IAChB;AAAA,EACF,GAEMC,IAAa,MAAM,KAAK,EAAE,QAAQb,KAAe,CAACc,GAAGC,MAAMA,CAAC;AAClE,QAAMR,EAAaM,GAAY,CAAC;AAEhC,QAAMG,IAAW,YAA6B;AAC5C,UAAMC,IAAc,MAAMnC;AAAA,MACxBJ,EAAW,wBAAwB,mBAAmBoB,CAAQ,CAAC,aAAalB,CAAQ;AAAA,MACpF,CAAA;AAAA,MACA,EAAE,SAASW,IAAY,EAAE,gBAAgBA,MAAc,QAAW,QAAQN,GAAS,OAAA;AAAA,IAAO;AAG5F,QAAIgC,EAAY,MAAOA,EAAY,MAAc,IAAI;AACnD,YAAMC,IAAS,OAAQD,EAAY,MAAc,UAAU,EAAE;AAC7D,UAAI,CAACC,EAAQ,OAAM,IAAI,MAAM,iCAAiC;AAC9D,aAAOA;AAAAA,IACT;AAEA,UAAMC,IAAO,OAAQF,EAAY,MAAc,SAAS,EAAE;AAC1D,QAAIA,EAAY,WAAW,OAAOE,MAAS;AACzC,YAAM,IAAI,MAAMA,KAAQ,oBAAoBF,EAAY,MAAM,GAAG;AAGnE,UAAMG,IAAY,MAAMhC;AAAA,MACtBV,EAAW,wBAAwB,mBAAmBoB,CAAQ,CAAC,WAAWlB,CAAQ;AAAA,MAClF,EAAE,SAASW,IAAY,EAAE,gBAAgBA,MAAc,QAAW,QAAQN,GAAS,OAAA;AAAA,IAAO;AAG5F,QAAI,CAACmC,EAAU,MAAM,CAAEA,EAAU,MAAc;AAC7C,YAAM,IAAI,MAAOA,EAAU,MAAc,SAAS,kBAAkBA,EAAU,MAAM,GAAG;AAGzF,UAAMC,IAAW,MAAM,QAASD,EAAU,MAAc,QAAQ,IAAKA,EAAU,KAAa,WAAW,CAAA,GACjGE,IAAU,IAAI,IAAYD,CAAQ,GAClCE,IAAoB,CAAA;AAC1B,aAASR,IAAI,GAAGA,IAAIf,GAAae,KAAK;AACpC,MAAKO,EAAQ,IAAIP,CAAC,KAAGQ,EAAQ,KAAKR,CAAC;AAGrC,QAAI,CAACQ,EAAQ;AACX,YAAM,IAAI,MAAM,gBAAgB;AAGlC,iBAAMhB,EAAagB,GAASD,EAAQ,IAAI,GACjCN,EAAA;AAAA,EACT,GAEME,IAAS,MAAMF,EAAA;AAErB,SAAApB,EAAW,GAAG,GACP;AAAA,IACL,IAAIsB;AAAA,IACJ,KAAKxC,EAAW,iBAAiB,mBAAmBwC,CAAM,CAAC,IAAItC,CAAQ;AAAA,IACvE,KAAKe,EAAK;AAAA,IACV,GAAIJ,IAAY,EAAE,WAAAA,MAAc,CAAA;AAAA,EAAC;AAErC;AAEA,SAASiC,GAAa;AAAA,EACpB,MAAAC;AAAA,EACA,WAAAC;AAAA,EACA,oBAAAC;AAAA,EACA,YAAAC;AAAA,EACA,cAAAC;AAAA,EACA,cAAAC;AAAA,EACA,UAAAC;AAAA,EACA,SAAAC;AAAA,EACA,iBAAAC;AAAA,EACA,aAAAC;AAAA,EACA,SAAAC;AAAA,EACA,aAAAC;AAAA,EACA,UAAAC;AAAA,EACA,oBAAAC;AAAA,EACA,uBAAAC;AACF,GAgBG;AACD,QAAM,EAAE,YAAAC,GAAY,YAAAC,GAAY,WAAAC,GAAW,WAAAC,GAAW,YAAAC,GAAY,YAAAC,EAAA,IAAeC,GAAY;AAAA,IAC3F,IAAIrB,EAAK;AAAA,IACT,UAAAY;AAAA,EAAA,CACD,GAEKU,IAAUC,EAA8B,IAAI,GAC5CC,IAAaD,EAA8B,IAAI,GAC/C,CAACE,GAAiBC,CAAkB,IAAIC,EAA+C,IAAI,GAE3FC,IAAwB,MAAM;AAClC,UAAMC,IAAKP,EAAQ;AACnB,QAAI,CAACO,EAAI;AACT,UAAMC,IAAOD,EAAG,sBAAA;AAChB,IAAAH,EAAmB,EAAE,MAAMI,EAAK,OAAOA,EAAK,QAAQ,GAAG,KAAKA,EAAK,MAAM,GAAA,CAAI;AAAA,EAC7E;AAEA,EAAAC,EAAU,MAAM;AACd,QAAI,CAAC7B,KAAsB,CAACD,GAAW;AACrC,MAAAyB,EAAmB,IAAI;AACvB;AAAA,IACF;AAEA,IAAAE,EAAA;AAEA,QAAII,IAAM;AACV,UAAMC,IAAW,MAAM;AACrB,MAAID,0BAA0BA,CAAG,GACjCA,IAAM,sBAAsB,MAAM;AAChC,QAAAA,IAAM,GACNJ,EAAA;AAAA,MACF,CAAC;AAAA,IACH;AAEA,kBAAO,iBAAiB,UAAUK,CAAQ,GAC1C,OAAO,iBAAiB,UAAUA,GAAU,EAAI,GACzC,MAAM;AACX,MAAID,0BAA0BA,CAAG,GACjC,OAAO,oBAAoB,UAAUC,CAAQ,GAC7C,OAAO,oBAAoB,UAAUA,GAAU,EAAI;AAAA,IACrD;AAAA,EACF,GAAG,CAAC/B,GAAoBD,CAAS,CAAC;AAElC,QAAMiC,IAAQ;AAAA,IACZ,WAAWC,GAAI,UAAU,SAASjB,CAAS;AAAA,IAC3C,YAAAC;AAAA,EAAA,GAGIiB,IAAcjC,IAChBA,EAAW;AAAA,IACT,MAAM,EAAE,IAAIH,EAAK,IAAI,KAAKA,EAAK,KAAK,KAAKA,EAAK,KAAK,WAAWA,EAAK,UAAA;AAAA,IACnE,YAAYA,EAAK;AAAA,IACjB,QAAQA,EAAK;AAAA,IACb,UAAUA,EAAK;AAAA,IACf,UAAUA,EAAK;AAAA,EAAA,CAChB,IACDE,IAEEmC,gBAAAA,EAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAKrC,EAAK;AAAA,MACV,KAAKA,EAAK,OAAO;AAAA,MACjB,WAAWsC;AAAA,QACT;AAAA,QACA7B,KAAe;AAAA,QACfC,KAAW;AAAA,MAAA;AAAA,IACb;AAAA,EAAA,IAIF2B,gBAAAA,EAAAA,IAAC,OAAA,EAAI,WAAU,oKACb,UAAAA,gBAAAA,EAAAA,IAAC,QAAA,EAAK,WAAU,mBAAmB,UAAArC,EAAK,YAAYA,EAAK,OAAO,WAAU,GAC5E;AAGN,SACEuC,gBAAAA,EAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAK,CAACC,MAAS;AACb,QAAAlB,EAAQ,UAAUkB,GAClBzB,EAAWyB,CAAI;AAAA,MACjB;AAAA,MACA,OAAAN;AAAA,MACA,WAAWI;AAAA,QACT3B;AAAA,QACAS,KAAc;AAAA,QACdP,KAAsB;AAAA,QACtB,CAACD,KAAY;AAAA,QACbQ,KAAc;AAAA,QACdR,KAAY;AAAA,MAAA;AAAA,MAEd,cAAc,MAAM;AAClB,QAAAgB,EAAA,GACAxB,EAAA;AAAA,MACF;AAAA,MACA,cAAc,CAACqC,MAAU;AACvB,cAAMC,IAAOD,EAAM;AACnB,QAAIC,aAAgB,QAAQlB,EAAW,SAAS,SAASkB,CAAI,KAC7DrC,EAAA;AAAA,MACF;AAAA,MACC,GAAGW;AAAA,MACH,GAAGC;AAAA,MAEH,UAAA;AAAA,QAAAmB;AAAA,QAEDC,gBAAAA,EAAAA;AAAAA,UAAC;AAAA,UAAA;AAAA,YACC,MAAK;AAAA,YACL,SAAS,MAAM;AACb,cAAIzB,KACJN,EAASN,EAAK,EAAE;AAAA,YAClB;AAAA,YACA,UAAAY;AAAA,YACA,WAAU;AAAA,YACV,cAAYE;AAAA,YAEZ,UAAAuB,gBAAAA,EAAAA,IAACM,IAAA,EAAE,WAAU,UAAA,CAAU;AAAA,UAAA;AAAA,QAAA;AAAA,QAGxBzC,KACCD,KACAwB,MACC,MAAM;AACL,gBAAMmB,IACJP,gBAAAA,EAAAA;AAAAA,YAAC;AAAA,YAAA;AAAA,cACC,KAAKb;AAAA,cACL,WAAU;AAAA,cACV,OAAO,EAAE,MAAMC,EAAgB,MAAM,KAAKA,EAAgB,IAAA;AAAA,cAC1D,cAAc,MAAM;AAClB,gBAAAG,EAAA,GACAxB,EAAA;AAAA,cACF;AAAA,cACA,cAAc,CAACqC,MAAU;AACvB,sBAAMC,IAAOD,EAAM;AACnB,gBAAIC,aAAgB,QAAQpB,EAAQ,SAAS,SAASoB,CAAI,KAC1DrC,EAAA;AAAA,cACF;AAAA,cAEA,UAAAkC,gBAAAA,EAAAA,KAAC,OAAA,EAAI,WAAU,uCACb,UAAA;AAAA,gBAAAF,gBAAAA,EAAAA,IAAC,OAAA,EAAI,KAAKrC,EAAK,KAAK,KAAKA,EAAK,OAAO,WAAW,WAAU,2BAAA,CAA2B;AAAA,gBACrFqC,gBAAAA,EAAAA;AAAAA,kBAAC;AAAA,kBAAA;AAAA,oBACC,MAAK;AAAA,oBACL,SAAS,MAAM7B,EAAgBR,EAAK,EAAE;AAAA,oBACtC,WAAU;AAAA,oBACV,cAAW;AAAA,oBAEX,UAAAqC,gBAAAA,EAAAA,IAACQ,IAAA,EAAU,WAAU,cAAA,CAAc;AAAA,kBAAA;AAAA,gBAAA;AAAA,cACrC,EAAA,CACF;AAAA,YAAA;AAAA,UAAA;AAIJ,iBAAI,OAAO,WAAa,MAAoBD,IACrCE,GAAaF,GAAS,SAAS,IAAI;AAAA,QAC5C,GAAA;AAAA,QAEDnC,KACC8B,gBAAAA,EAAAA,KAAC,OAAA,EAAI,WAAU,2GACb,UAAA;AAAA,UAAAF,gBAAAA,EAAAA,IAACU,IAAA,EAAQ,WAAU,uBAAA,CAAuB;AAAA,gCACzC,OAAA,EAAI,WAAU,wCACb,UAAAV,gBAAAA,EAAAA,IAAC,SAAI,WAAU,kCAAiC,OAAO,EAAE,OAAO,GAAGrC,EAAK,QAAQ,OAAO,GACzF;AAAA,UACAuC,gBAAAA,EAAAA,KAAC,OAAA,EAAI,WAAU,yBAAyB,UAAA;AAAA,YAAAvC,EAAK;AAAA,YAAS;AAAA,UAAA,EAAA,CAAC;AAAA,QAAA,GACzD;AAAA,QAGDU,KACC6B,gBAAAA,EAAAA,KAAC,OAAA,EAAI,WAAU,6GACb,UAAA;AAAA,UAAAF,gBAAAA,EAAAA,IAAC,OAAA,EAAI,WAAU,yBAAwB,UAAA,SAAK;AAAA,UAC5CA,gBAAAA,EAAAA;AAAAA,YAAC;AAAA,YAAA;AAAA,cACC,MAAK;AAAA,cACL,SAAS,MAAM9B,EAAQP,EAAK,EAAE;AAAA,cAC9B,UAAAY;AAAA,cACA,WAAU;AAAA,cACX,UAAA;AAAA,YAAA;AAAA,UAAA;AAAA,QAED,EAAA,CACF;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAIR;AAuCA,SAASoC,GAAU9E,GAAY;AAC7B,SAAO,IAAI,gBAAgBA,CAAI;AACjC;AAEO,SAAS+E,GAAiB;AAAA,EAC/B,cAAAC,IAAe,CAAA;AAAA,EACf,UAAAC;AAAA,EACA,QAAAC,IAASnF;AAAA,EACT,gBAAAoF,IAAiB;AAAA,EACjB,UAAAzC,IAAW;AAAA,EACX,mBAAA0C;AAAA,EACA,QAAAC;AAAA,EACA,cAAAC;AAAA,EACA,YAAArD;AAAA,EACA,oBAAAsD,IAAqB;AAAA,EACrB,uBAAA3C,IAAwB;AAC1B,GAA0B;AACxB,QAAM4C,IAAenC,EAAyB,IAAI,GAC5C,CAACoC,GAAQC,CAAS,IAAIjC;AAAA,IAA0B,MACpDuB,EAAa,IAAI,CAAChF,OAAU,EAAE,GAAGA,GAAM,YAAYA,EAAK,KAAK,QAAQ,YAAY,UAAU,MAAM;AAAA,EAAA,GAE7F,CAAC2F,GAAYC,CAAa,IAAInC,EAAS,EAAK,GAC5C,CAACoC,GAAiBC,CAAkB,IAAIrC,EAAwB,IAAI,GACpE,CAACsC,GAAWC,CAAY,IAAIvC,EAAwB,IAAI,GACxD,CAACwC,GAAUC,CAAW,IAAIzC,EAAwB,IAAI,GACtD0C,IAAkB9C,EAAsB,IAAI,GAC5C+C,IAAgB/C,EAAO,EAAI,GAC3BgD,IAAYhD,EAAwB,EAAE,GACtCiD,IAAuBjD,EAA+B2B,CAAY,GAClEuB,IAAclD,EAAO4B,CAAQ,GAC7BuB,IAAuBnD,EAAO+B,CAAiB,GAC/CqB,IAAgBpD,EAA4B,oBAAI,KAAK,GACrDqD,IAAUrD,EAA0B,oBAAI,KAAK,GAC7CsD,IAAWtD,EAAqC,oBAAI,KAAK,GACzDuD,IAAevD,EAA4B,oBAAI,KAAK,GACpDwD,KAAUC;AAAA,IACdC,GAAUC,IAAe,EAAE,sBAAsB,EAAE,UAAU,EAAA,GAAK;AAAA,IAClED,GAAUE,IAAgB,EAAE,kBAAkBC,IAA6B;AAAA,EAAA;AAG7E,EAAArD,EAAU,MACD,MAAM;AACX,eAAWsD,KAAcR,EAAS,QAAQ,OAAA;AACxC,UAAI;AACF,QAAAQ,EAAW,MAAA;AAAA,MACb,QAAQ;AAAA,MAER;AAEF,IAAAR,EAAS,QAAQ,MAAA,GACjBD,EAAQ,QAAQ,MAAA,GAChBD,EAAc,QAAQ,MAAA;AAEtB,eAAWrH,KAAOwH,EAAa,QAAQ,OAAA;AACrC,UAAI,OAAO,MAAQ;AACjB,YAAI;AACF,cAAI,gBAAgBxH,CAAG;AAAA,QACzB,QAAQ;AAAA,QAER;AAGJ,IAAAwH,EAAa,QAAQ,MAAA;AAAA,EACvB,GACC,CAAA,CAAE,GAEL/C,EAAU,MAAM;AACd,QAAI,SAAO,WAAa,MACxB;AAAA,UAAIoC;AACF,wBAAS,KAAK,MAAM,SAAS,YACtB,MAAM;AACX,mBAAS,KAAK,MAAM,SAAS;AAAA,QAC/B;AAEF,eAAS,KAAK,MAAM,SAAS;AAAA;AAAA,EAC/B,GAAG,CAACA,CAAQ,CAAC,GAEbpC,EAAU,MAAM;AACd,IAAAwC,EAAU,UAAUZ;AAAA,EACtB,GAAG,CAACA,CAAM,CAAC,GAEX5B,EAAU,MAAM;AACd,IAAA0C,EAAY,UAAUtB;AAAA,EACxB,GAAG,CAACA,CAAQ,CAAC,GAEbpB,EAAU,MAAM;AACd,IAAA2C,EAAqB,UAAUpB;AAAA,EACjC,GAAG,CAACA,CAAiB,CAAC,GAEtBvB,EAAU,MAAM;AACd,UAAMuD,IAAWd,EAAqB;AAQtC,QANEc,EAAS,WAAWpC,EAAa,UACjCoC,EAAS,MAAM,CAACC,GAAK9G,MAAU;AAC7B,YAAMiE,IAAOQ,EAAazE,CAAK;AAC/B,aAAOiE,KAAQ6C,EAAI,OAAO7C,EAAK,MAAM6C,EAAI,QAAQ7C,EAAK,OAAO6C,EAAI,QAAQ7C,EAAK;AAAA,IAChF,CAAC,EAEgB;AACnB,IAAA8B,EAAqB,UAAUtB;AAE/B,UAAMsC,IAA4BtC,EAAa,IAAI,CAACqC,OAAS;AAAA,MAC3D,GAAGA;AAAA,MACH,YAAYA,EAAI;AAAA,MAChB,QAAQ;AAAA,MACR,UAAU;AAAA,IAAA,EACV,GAEIE,IAAiB,IAAI,IAAID,EAAS,IAAI,CAACD,MAAQA,EAAI,EAAE,CAAC;AAC5D,eAAW,CAACG,GAAQC,CAAO,KAAKhB,EAAc,QAAQ;AACpD,MAAIc,EAAe,IAAIE,CAAO,KAC5BhB,EAAc,QAAQ,OAAOe,CAAM;AAIvC,UAAME,IAAa,IAAI,IAAIrB,EAAU,QAAQ,IAAI,CAACgB,MAAQA,EAAI,EAAE,CAAC;AAKjE,QAJ8BC,EAAS,KAAK,CAACD,MAAQ;AACnD,YAAMM,IAASlB,EAAc,QAAQ,IAAIY,EAAI,EAAE;AAC/C,aAAOM,IAASD,EAAW,IAAIC,CAAM,IAAI;AAAA,IAC3C,CAAC,EAC0B;AAE3B,UAAMC,IAAc,IAAI,IAAIN,EAAS,IAAI,CAACD,MAAQA,EAAI,EAAE,CAAC;AACzD,eAAWA,KAAOhB,EAAU,SAAS;AACnC,UAAIuB,EAAY,IAAIP,EAAI,EAAE,EAAG;AAE7B,YAAMF,IAAaR,EAAS,QAAQ,IAAIU,EAAI,EAAE;AAC9C,UAAIF,GAAY;AACd,QAAAR,EAAS,QAAQ,OAAOU,EAAI,EAAE;AAC9B,YAAI;AACF,UAAAF,EAAW,MAAA;AAAA,QACb,QAAQ;AAAA,QAER;AAAA,MACF;AAEA,MAAAT,EAAQ,QAAQ,OAAOW,EAAI,EAAE;AAE7B,YAAMQ,IAAUjB,EAAa,QAAQ,IAAIS,EAAI,EAAE;AAC/C,UAAIQ,GAAS;AACX,QAAAjB,EAAa,QAAQ,OAAOS,EAAI,EAAE;AAClC,YAAI;AACF,cAAI,gBAAgBQ,CAAO;AAAA,QAC7B,QAAQ;AAAA,QAER;AAAA,MACF;AAAA,IACF;AAEA,IAAAnC,EAAU,CAACoC,MACUA,EAAQ,WAAWR,EAAS,UAG7CQ,EAAQ,MAAM,CAAChG,GAAMvB,MAAU;AAC7B,YAAMiE,IAAO8C,EAAS/G,CAAK;AAC3B,aAAOiE,KAAQ1C,EAAK,OAAO0C,EAAK,MAAM1C,EAAK,QAAQ0C,EAAK,OAAO1C,EAAK,QAAQ0C,EAAK,OAAO1C,EAAK,cAAc0C,EAAK;AAAA,IAClH,CAAC,IAEqBsD,KAExB1B,EAAc,UAAU,IACjBkB,EACR;AAAA,EACH,GAAG,CAACtC,CAAY,CAAC,GAEjBnB,EAAU,MAAM;AACd,QAAIuC,EAAc,SAAS;AACzB,MAAAA,EAAc,UAAU;AACxB;AAAA,IACF;AAEA,IAAAG,EAAY,UAAUd,EAAO,IAAI,CAAC,EAAE,IAAAsC,GAAI,KAAA3I,GAAK,KAAA4I,GAAK,WAAApI,EAAA,OAAiB,EAAE,IAAAmI,GAAI,KAAA3I,GAAK,KAAA4I,GAAK,WAAApI,EAAA,EAAY,CAAC;AAAA,EAClG,GAAG,CAAC6F,CAAM,CAAC,GAEX5B,EAAU,MAAM;AACd,IAAA2C,EAAqB,UAAUf,EAAO,KAAK,CAAC4B,MAAQA,EAAI,WAAW,WAAW,CAAC;AAAA,EACjF,GAAG,CAAC5B,CAAM,CAAC,GAEX5B,EAAU,MAAM;AACd,QAAIgC,MAAoB;AACtB;AAGF,UAAMoC,IAAY,CAAC1D,MAAyB;AAC1C,UAAIA,EAAM,QAAQ,UAAU;AAC1B,QAAAuB,EAAmB,IAAI;AACvB;AAAA,MACF;AAEA,UAAIvB,EAAM,QAAQ,cAAc;AAC9B,QAAAuB,EAAmB,CAACgC,MACdA,MAAY,OAAaA,KACrBA,IAAU,KAAKrC,EAAO,MAC/B;AACD;AAAA,MACF;AAEA,MAAIlB,EAAM,QAAQ,eAChBuB,EAAmB,CAACgC,MACdA,MAAY,OAAaA,KACrBA,IAAU,IAAIrC,EAAO,UAAUA,EAAO,MAC/C;AAAA,IAEL;AAEA,kBAAO,iBAAiB,WAAWwC,CAAS,GACrC,MAAM,OAAO,oBAAoB,WAAWA,CAAS;AAAA,EAC9D,GAAG,CAACpC,GAAiBJ,EAAO,MAAM,CAAC;AAEnC,QAAMyC,KAAc,OAAOC,MAA6B;AACtD,QAAIzF,EAAU;AAGd,UAAM0F,IAFO,MAAM,KAAKD,CAAK,EAER,IAAI,CAACnI,MAAS;AACjC,YAAMqI,IAAavD,GAAU9E,CAAI,GAC3BwH,IAAS,OAAO,WAAA;AAEtB,MAAAZ,EAAa,QAAQ,IAAIY,GAAQa,CAAU,GAC3C3B,EAAQ,QAAQ,IAAIc,GAAQxH,CAAI;AAEhC,YAAMwE,IAAsB;AAAA,QAC1B,IAAIgD;AAAA,QACJ,KAAKa;AAAA,QACL,YAAAA;AAAA,QACA,KAAKrI,EAAK;AAAA,QACV,QAAQ;AAAA,QACR,UAAU;AAAA,QACV,UAAUA,EAAK;AAAA,MAAA;AAGjB,MAAA0F,EAAU,CAACoC,MAAY,CAAC,GAAGA,GAAStD,CAAI,CAAC;AAEzC,YAAM8D,IAAiB,CAACC,MAAkB;AACxC,cAAMC,IAAY,KAAK,IAAI,GAAG,KAAK,IAAI,IAAID,CAAK,CAAC;AACjD,QAAA7C;AAAA,UAAU,CAACoC,MACTA,EAAQ;AAAA,YAAI,CAAChG,MACXA,EAAK,OAAO0F,IAAS,EAAE,GAAG1F,GAAM,UAAU0G,GAAW,QAAQ,YAAA,IAAgB1G;AAAA,UAAA;AAAA,QAC/E;AAAA,MAEJ;AA+DA,cA7DiB,YAAY;AAC3B,cAAMqF,IAAa,IAAI,gBAAA;AACvB,QAAAR,EAAS,QAAQ,IAAIa,GAAQL,CAAU;AAEvC,YAAI;AACF,gBAAMsB,IAAS,MAAMvD,EAAOlF,GAAMsI,GAAgB,EAAE,QAAQnB,EAAW,QAAQ,UAAUhC,EAAA,CAAgB;AACzG,UAAAsB,EAAc,QAAQ,IAAIe,GAAQiB,EAAO,EAAE;AAE3C,gBAAMZ,IAAUjB,EAAa,QAAQ,IAAIY,CAAM;AAC/C,cAAIK,GAAS;AACX,YAAAjB,EAAa,QAAQ,OAAOY,CAAM;AAClC,gBAAI;AACF,kBAAI,gBAAgBK,CAAO;AAAA,YAC7B,QAAQ;AAAA,YAER;AAAA,UACF;AAEA,UAAAlB,EAAS,QAAQ,OAAOa,CAAM,GAC9Bd,EAAQ,QAAQ,OAAOc,CAAM,GAE7B9B;AAAA,YAAU,CAACoC,MACTA,EAAQ;AAAA,cAAI,CAAChG,OACXA,GAAK,OAAO0F,IACR;AAAA,gBACE,GAAG1F;AAAA,gBACH,GAAG2G;AAAA,gBACH,YAAYA,EAAO;AAAA,gBACnB,KAAKA,EAAO;AAAA,gBACZ,QAAQ;AAAA,gBACR,UAAU;AAAA,cAAA,IAEZ3G;AAAA,YAAA;AAAA,UACN;AAAA,QAEJ,SAAS4G,GAAO;AAEd,cADA/B,EAAS,QAAQ,OAAOa,CAAM,GAC1BL,EAAW,OAAO,SAAS;AAC7B,YAAAT,EAAQ,QAAQ,OAAOc,CAAM;AAC7B,kBAAMK,IAAUjB,EAAa,QAAQ,IAAIY,CAAM;AAC/C,gBAAIK,GAAS;AACX,cAAAjB,EAAa,QAAQ,OAAOY,CAAM;AAClC,kBAAI;AACF,oBAAI,gBAAgBK,CAAO;AAAA,cAC7B,QAAQ;AAAA,cAER;AAAA,YACF;AACA;AAAA,UACF;AACA,kBAAQ,MAAM,iBAAiBa,CAAK,GACpChD;AAAA,YAAU,CAACoC,MACTA,EAAQ;AAAA,cAAI,CAAChG,MACXA,EAAK,OAAO0F,IACR,EAAE,GAAG1F,GAAM,QAAQ,SAAS,UAAU,KAAK,IAAI,GAAG,KAAK,IAAI,IAAIA,EAAK,QAAQ,CAAC,MAC7EA;AAAA,YAAA;AAAA,UACN;AAAA,QAEJ;AAAA,MACF,GAEO;AAAA,IACT,CAAC;AAED,UAAM,QAAQ,WAAWsG,CAAO;AAAA,EAClC,GAEMO,KAAoB,CAACpE,MAA+C;AACxE,IAAKA,EAAM,OAAO,UACb2D,GAAY3D,EAAM,OAAO,KAAK,GACnCA,EAAM,OAAO,QAAQ;AAAA,EACvB,GAEMqE,KAAiB,MAAM;AAC3B,IAAIlG,KACJ8C,EAAa,SAAS,MAAA;AAAA,EACxB,GAEMqD,KAAc,CAACd,MAAe;AAClC,UAAMZ,IAAaR,EAAS,QAAQ,IAAIoB,CAAE;AAC1C,QAAIZ,GAAY;AACd,MAAAR,EAAS,QAAQ,OAAOoB,CAAE;AAC1B,UAAI;AACF,QAAAZ,EAAW,MAAA;AAAA,MACb,QAAQ;AAAA,MAER;AAAA,IACF;AAEA,IAAAT,EAAQ,QAAQ,OAAOqB,CAAE;AAEzB,UAAMF,IAAUjB,EAAa,QAAQ,IAAImB,CAAE;AAC3C,QAAIF,GAAS;AACX,MAAAjB,EAAa,QAAQ,OAAOmB,CAAE;AAC9B,UAAI;AACF,YAAI,gBAAgBF,CAAO;AAAA,MAC7B,QAAQ;AAAA,MAER;AAAA,IACF;AAEA,IAAAnC,EAAU,CAACoC,MAAYA,EAAQ,OAAO,CAAChG,MAASA,EAAK,OAAOiG,CAAE,CAAC;AAAA,EACjE,GAEMe,KAAc,CAACf,MAAe;AAClC,QAAIrF,EAAU;AACd,UAAM1C,IAAO0G,EAAQ,QAAQ,IAAIqB,CAAE;AACnC,QAAI,CAAC/H,EAAM;AAEX,UAAM+I,IAAqBpC,EAAS,QAAQ,IAAIoB,CAAE;AAClD,QAAIgB,GAAoB;AACtB,UAAI;AACF,QAAAA,EAAmB,MAAA;AAAA,MACrB,QAAQ;AAAA,MAER;AACA,MAAApC,EAAS,QAAQ,OAAOoB,CAAE;AAAA,IAC5B;AAEA,IAAArC;AAAA,MAAU,CAACoC,MACTA,EAAQ,IAAI,CAAChG,MAAUA,EAAK,OAAOiG,IAAK,EAAE,GAAGjG,GAAM,QAAQ,aAAa,UAAU,EAAA,IAAMA,CAAK;AAAA,IAAA;AAG/F,UAAMwG,IAAiB,CAACC,MAAkB;AACxC,YAAMC,IAAY,KAAK,IAAI,GAAG,KAAK,IAAI,IAAID,CAAK,CAAC;AACjD,MAAA7C;AAAA,QAAU,CAACoC,MACTA,EAAQ,IAAI,CAAChG,MAAUA,EAAK,OAAOiG,IAAK,EAAE,GAAGjG,GAAM,UAAU0G,GAAW,QAAQ,YAAA,IAAgB1G,CAAK;AAAA,MAAA;AAAA,IAEzG,GAEMqF,IAAa,IAAI,gBAAA;AACvB,IAAAR,EAAS,QAAQ,IAAIoB,GAAIZ,CAAU,IAE7B,YAAY;AAChB,UAAI;AACF,cAAMsB,IAAS,MAAMvD,EAAOlF,GAAMsI,GAAgB,EAAE,QAAQnB,EAAW,QAAQ,UAAUhC,EAAA,CAAgB;AACzG,QAAAsB,EAAc,QAAQ,IAAIsB,GAAIU,EAAO,EAAE;AAEvC,cAAMZ,IAAUjB,EAAa,QAAQ,IAAImB,CAAE;AAC3C,YAAIF,GAAS;AACX,UAAAjB,EAAa,QAAQ,OAAOmB,CAAE;AAC9B,cAAI;AACF,gBAAI,gBAAgBF,CAAO;AAAA,UAC7B,QAAQ;AAAA,UAER;AAAA,QACF;AAEA,QAAAlB,EAAS,QAAQ,OAAOoB,CAAE,GAC1BrB,EAAQ,QAAQ,OAAOqB,CAAE,GAEzBrC;AAAA,UAAU,CAACoC,MACTA,EAAQ;AAAA,YAAI,CAAChG,MACXA,EAAK,OAAOiG,IACR,EAAE,GAAGjG,GAAM,GAAG2G,GAAQ,YAAYA,EAAO,KAAK,KAAKA,EAAO,KAAK,QAAQ,YAAY,UAAU,QAC7F3G;AAAA,UAAA;AAAA,QACN;AAAA,MAEJ,SAAS4G,GAAO;AAEd,YADA/B,EAAS,QAAQ,OAAOoB,CAAE,GACtBZ,EAAW,OAAO,QAAS;AAC/B,gBAAQ,MAAM,gBAAgBuB,CAAK,GACnChD,EAAU,CAACoC,MAAYA,EAAQ,IAAI,CAAChG,MAAUA,EAAK,OAAOiG,IAAK,EAAE,GAAGjG,GAAM,QAAQ,QAAA,IAAYA,CAAK,CAAC;AAAA,MACtG;AAAA,IACF,GAAA;AAAA,EACF,GAEMQ,KAAkB,CAACyF,MAAe;AACtC,UAAMxH,IAAQkF,EAAO,UAAU,CAAC3D,MAASA,EAAK,OAAOiG,CAAE;AACvD,IAAIxH,MAAU,MACZuF,EAAmBvF,CAAK;AAAA,EAE5B,GAEMyI,KAAkB,CAACzE,MAAwB;AAC/C,IAAA2B,EAAY,OAAO3B,EAAM,OAAO,EAAE,CAAC;AAAA,EACrC,GAEM0E,KAAgB,CAAC1E,MAAwB;AAC7C,UAAM,EAAE,QAAA2E,GAAQ,MAAAC,EAAA,IAAS5E;AACzB,QAAI,CAAC4E,GAAM;AACT,MAAAjD,EAAY,IAAI;AAChB;AAAA,IACF;AAEA,UAAMD,IAAW,OAAOiD,EAAO,EAAE,GAC3BE,IAAS,OAAOD,EAAK,EAAE;AAE7B,IAAIlD,MAAamD,KACf1D,EAAU,CAACoC,MAAY;AACrB,YAAMuB,IAAWvB,EAAQ,UAAU,CAAChG,MAASA,EAAK,OAAOmE,CAAQ,GAC3DqD,IAAWxB,EAAQ,UAAU,CAAChG,MAASA,EAAK,OAAOsH,CAAM;AAC/D,aAAIC,MAAa,MAAMC,MAAa,KAAWxB,IACxCyB,GAAUzB,GAASuB,GAAUC,CAAQ;AAAA,IAC9C,CAAC,GAGHpD,EAAY,IAAI;AAAA,EAClB,GAEMsD,KAAmB,MAAM;AAC7B,IAAAtD,EAAY,IAAI;AAAA,EAClB,GAEMuD,KAAoB,MAAM;AAC9B,IAAItD,EAAgB,YAAY,SAC9B,OAAO,aAAaA,EAAgB,OAAO,GAC3CA,EAAgB,UAAU;AAAA,EAE9B,GAEMuD,IAAkBC,GAAQ,MAC1B9D,MAAoB,OAAa,OAC9BJ,EAAOI,CAAe,KAAK,MACjC,CAACA,GAAiBJ,CAAM,CAAC,GAEtBmE,KAAmBxF;AAAA,IACvB;AAAA,IACAuB,KAAc;AAAA,IACdjD,KAAY;AAAA,EAAA,GAGRmH,KAAkB,kLAElBC,IAAaH,GAAQ,MAAM;AAC/B,QAAKtE;AACL,aAAI,MAAM,QAAQA,CAAM,IAAUA,EAAO,KAAK,GAAG,IAC1CA;AAAA,EACT,GAAG,CAACA,CAAM,CAAC,GAELrD,IAAqB2H,GAAQ,MAAM;AAEvC,QADI1H,KACA,CAAC6H,EAAY,QAAO;AACxB,UAAMC,IAASD,EAAW,MAAM,GAAG,EAAE,IAAI,CAACvB,MAAUA,EAAM,KAAA,CAAM,EAAE,OAAO,OAAO;AAChF,WAAKwB,EAAO,SACLA,EAAO,MAAM,CAACC,MAAUA,MAAU,aAAaA,EAAM,WAAW,QAAQ,CAAC,IADrD;AAAA,EAE7B,GAAG,CAACF,GAAY7H,CAAU,CAAC,GAErBgI,KAAoB,CAACnI,OAA0D;AAAA,IACnF,MAAM,EAAE,IAAIA,EAAK,IAAI,KAAKA,EAAK,KAAK,KAAKA,EAAK,KAAK,WAAWA,EAAK,UAAA;AAAA,IACnE,YAAYA,EAAK;AAAA,IACjB,QAAQA,EAAK;AAAA,IACb,UAAUA,EAAK;AAAA,IACf,UAAUA,EAAK;AAAA,EAAA,IAGXoI,KAAqBjE,KACtB,MAAM;AACL,UAAMkE,IAAa1E,EAAO,KAAK,CAAC3D,MAASA,EAAK,OAAOmE,CAAQ;AAC7D,QAAI,CAACkE,EAAY,QAAO;AAExB,QAAIlI,GAAY;AACd,YAAMmI,IAAWnI,EAAWgI,GAAkBE,CAAU,CAAC;AACzD,aAAIC,KAAa,QAAkCA,MAAa,KAAc,OAE5EjG,gBAAAA,EAAAA,IAAC,SAAI,WAAU,uBACb,gCAAC,OAAA,EAAI,WAAU,mDAAmD,UAAAiG,EAAA,CAAS,EAAA,CAC7E;AAAA,IAEJ;AAEA,WAAKpI,IAEHmC,gBAAAA,EAAAA,IAAC,OAAA,EAAI,WAAU,uBACb,UAAAA,gBAAAA,EAAAA;AAAAA,MAAC;AAAA,MAAA;AAAA,QACC,KAAKgG,EAAW;AAAA,QAChB,KAAKA,EAAW,OAAO;AAAA,QACvB,WAAU;AAAA,MAAA;AAAA,IAAA,GAEd,IAR8B;AAAA,EAUlC,OACA,MAEEE,KAAiBH,MAAuB;AAE9C,SACE7F,gBAAAA,EAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACC,YAAY,CAACE,MAAU;AACrB,QAAAA,EAAM,eAAA,GACD7B,KACHkD,EAAc,EAAI;AAAA,MAEtB;AAAA,MACA,aAAa,MAAMA,EAAc,EAAK;AAAA,MACtC,QAAQ,CAACrB,MAAU;AACjB,QAAAA,EAAM,eAAA,GACNqB,EAAc,EAAK,GACfrB,EAAM,aAAa,OAAO,UACvB2D,GAAY3D,EAAM,aAAa,KAAK;AAAA,MAE7C;AAAA,MACA,WAAWqF;AAAA,MAEV,UAAA;AAAA,QAAAtE,0BAAgB,OAAA,EAAI,WAAU,QAAQ,UAAAA,KAAe,IAAS;AAAA,QAE/DjB,gBAAAA,EAAAA;AAAAA,UAACiG;AAAA,UAAA;AAAA,YACC,SAAS5H,IAAW,SAAYmE;AAAA,YAChC,oBAAoB0D;AAAA,YACpB,aAAavB;AAAA,YACb,WAAWC;AAAA,YACX,cAAcO;AAAA,YAEd,UAAA;AAAA,cAAArF,gBAAAA,EAAAA,IAACqG,IAAA,EAAgB,OAAO/E,EAAO,IAAI,CAAC3D,MAASA,EAAK,EAAE,GAAG,UAAU2I,IAC/D,UAAApG,gBAAAA,EAAAA,KAAC,OAAA,EAAI,WAAU,wBACZ,UAAA;AAAA,gBAAAoB,EAAO,IAAI,CAAC3D,MAAS;AACpB,wBAAMS,IAAcT,EAAK,WAAW,aAC9BU,IAAUV,EAAK,WAAW;AAEhC,yBACEqC,gBAAAA,EAAAA;AAAAA,oBAACtC;AAAA,oBAAA;AAAA,sBAEC,MAAAC;AAAA,sBACA,WAAWiE,MAAcjE,EAAK;AAAA,sBAC9B,oBAAAE;AAAA,sBACA,YAAAC;AAAA,sBACA,cAAc,MAAM;AAClB,wBAAAwH,GAAA,GACAzD,EAAalE,EAAK,EAAE;AAAA,sBACtB;AAAA,sBACA,cAAc,MAAM;AAClB,wBAAA2H,GAAA,GACAtD,EAAgB,UAAU,OAAO,WAAW,MAAM;AAChD,0BAAAH,EAAa,CAAC8B,MAAaA,MAAYhG,EAAK,KAAK,OAAOgG,CAAQ,GAChE3B,EAAgB,UAAU;AAAA,wBAC5B,GAAG,GAAG;AAAA,sBACR;AAAA,sBACA,UAAU0C;AAAA,sBACV,SAASC;AAAA,sBACT,iBAAAxG;AAAA,sBACA,aAAAC;AAAA,sBACA,SAAAC;AAAA,sBACA,aAAaqH;AAAA,sBACb,UAAAnH;AAAA,sBACA,oBAAoB2H,MAAkBpE,MAAanE,EAAK;AAAA,sBACxD,uBAAAc;AAAA,oBAAA;AAAA,oBAxBKd,EAAK;AAAA,kBAAA;AAAA,gBA2BhB,CAAC;AAAA,gBAEDqC,gBAAAA,EAAAA;AAAAA,kBAAC;AAAA,kBAAA;AAAA,oBACC,MAAK;AAAA,oBACL,SAASyE;AAAA,oBACT,UAAAlG;AAAA,oBACA,WAAW0B;AAAA,sBACTyF;AAAA,sBACA;AAAA,oBAAA;AAAA,oBAEF,cAAYtE;AAAA,oBAEZ,UAAAlB,gBAAAA,EAAAA,KAAC,OAAA,EAAI,WAAU,oCACb,UAAA;AAAA,sBAAAF,gBAAAA,EAAAA,IAAC,SAAI,WAAU,qLACb,gCAACuG,IAAA,EAAK,WAAU,WAAU,EAAA,CAC5B;AAAA,sBACAvG,gBAAAA,EAAAA,IAAC,QAAA,EAAK,WAAU,uBAAsB,UAAA,UAAA,CAAO;AAAA,oBAAA,EAAA,CAC/C;AAAA,kBAAA;AAAA,gBAAA;AAAA,cACF,EAAA,CACF,EAAA,CACF;AAAA,eACE,MAAM;AACN,sBAAMwG,IAAUxG,gBAAAA,EAAAA,IAACyG,IAAA,EAAa,UAAAV,GAAA,CAAmB;AAEjD,uBAAI,OAAO,WAAa,MAAoBS,IACrC/F,GAAa+F,GAAS,SAAS,IAAI;AAAA,cAC5C,GAAA;AAAA,YAAG;AAAA,UAAA;AAAA,QAAA;AAAA,QAGLxG,gBAAAA,EAAAA;AAAAA,UAAC;AAAA,UAAA;AAAA,YACC,KAAKqB;AAAA,YACL,MAAK;AAAA,YACL,QAAQsE;AAAA,YACR,UAAQ;AAAA,YACR,WAAU;AAAA,YACV,UAAUnB;AAAA,YACV,eAAW;AAAA,UAAA;AAAA,QAAA;AAAA,QAGZ3G,KAAsB0H,KACrBrF,gBAAAA,OAAC,OAAA,EAAI,WAAU,mEACb,UAAA;AAAA,UAAAF,gBAAAA,EAAAA;AAAAA,YAAC;AAAA,YAAA;AAAA,cACC,MAAK;AAAA,cACL,WAAU;AAAA,cACV,SAAS,MACP2B,EAAmB,CAACgC,MACdA,MAAY,OAAaA,KACrBA,IAAU,IAAIrC,EAAO,UAAUA,EAAO,MAC/C;AAAA,cAEH,cAAW;AAAA,cAEX,UAAAtB,gBAAAA,EAAAA,IAAC,SAAI,SAAQ,aAAY,WAAU,WAAU,QAAO,gBAAe,aAAa,GAAG,MAAK,QACtF,UAAAA,gBAAAA,MAAC,UAAK,GAAE,mBAAkB,eAAc,SAAQ,gBAAe,SAAQ,EAAA,CACzE;AAAA,YAAA;AAAA,UAAA;AAAA,UAEFE,gBAAAA,EAAAA,KAAC,OAAA,EAAI,WAAU,mCACb,UAAA;AAAA,YAAAF,gBAAAA,EAAAA;AAAAA,cAAC;AAAA,cAAA;AAAA,gBACC,KAAKuF,EAAgB;AAAA,gBACrB,KAAKA,EAAgB,OAAO;AAAA,gBAC5B,WAAU;AAAA,cAAA;AAAA,YAAA;AAAA,YAEVvF,gBAAAA,EAAAA;AAAAA,cAAC;AAAA,cAAA;AAAA,gBACC,MAAK;AAAA,gBACL,WAAU;AAAA,gBACV,SAAS,MAAM2B,EAAmB,IAAI;AAAA,gBACtC,cAAW;AAAA,gBAEX,UAAA3B,gBAAAA,EAAAA,IAACM,IAAA,EAAE,WAAU,UAAA,CAAU;AAAA,cAAA;AAAA,YAAA;AAAA,UACzB,GACJ;AAAA,UACAN,gBAAAA,EAAAA;AAAAA,YAAC;AAAA,YAAA;AAAA,cACC,MAAK;AAAA,cACL,WAAU;AAAA,cACV,SAAS,MACP2B,EAAmB,CAACgC,MACdA,MAAY,OAAaA,KACrBA,IAAU,KAAKrC,EAAO,MAC/B;AAAA,cAEH,cAAW;AAAA,cAEX,UAAAtB,gBAAAA,EAAAA,IAAC,SAAI,SAAQ,aAAY,WAAU,WAAU,QAAO,gBAAe,aAAa,GAAG,MAAK,QACtF,UAAAA,gBAAAA,MAAC,UAAK,GAAE,gBAAe,eAAc,SAAQ,gBAAe,SAAQ,EAAA,CACtE;AAAA,YAAA;AAAA,UAAA;AAAA,QACF,EAAA,CACF;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAIR;"}
1
+ {"version":3,"file":"index15.js","sources":["../src/components/FilesUploadField/index.tsx"],"sourcesContent":["import { useEffect, useMemo, useRef, useState, type ReactNode } from \"react\"\nimport { createPortal } from \"react-dom\"\nimport type { DragEndEvent } from \"@dnd-kit/core\"\nimport { DndContext, DragOverlay, KeyboardSensor, PointerSensor, closestCenter, useSensor, useSensors } from \"@dnd-kit/core\"\nimport {\n SortableContext,\n arrayMove,\n rectSortingStrategy,\n sortableKeyboardCoordinates,\n useSortable,\n} from \"@dnd-kit/sortable\"\nimport { CSS } from \"@dnd-kit/utilities\"\nimport { Loader2, Maximize2, Plus, X } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\n\nexport type FilesUploadFieldFile = {\n id: string\n url: string\n alt?: string\n uploadKey?: string\n}\n\nconst TENANT_ID_QUERY_PARAM = \"rb-tenant-id\"\n\ntype FileUploadsInitResponse = {\n ok: boolean\n error?: string\n uploadId?: string\n uploadKey?: string\n chunkSize?: number\n chunksTotal?: number\n}\n\ntype FileUploadsStatusResponse = {\n ok: boolean\n error?: string\n status?: \"uploading\" | \"assembling\" | \"done\" | \"error\"\n chunkSize?: number\n chunksTotal?: number\n received?: number[]\n fileId?: string\n}\n\ntype FileUploadsCompleteResponse = {\n ok: boolean\n error?: string\n fileId?: string\n}\n\nconst sha256Hex = async (data: ArrayBuffer): Promise<string | null> => {\n if (typeof crypto === \"undefined\" || typeof crypto.subtle === \"undefined\") return null\n try {\n const digest = await crypto.subtle.digest(\"SHA-256\", data)\n const bytes = Array.from(new Uint8Array(digest))\n return bytes.map((b) => b.toString(16).padStart(2, \"0\")).join(\"\")\n } catch {\n return null\n }\n}\n\nconst readTenantIdFromLocation = (): string | null => {\n if (typeof window === \"undefined\") return null\n const raw = new URLSearchParams(window.location.search || \"\").get(TENANT_ID_QUERY_PARAM)\n const normalized = raw?.trim() ?? \"\"\n return normalized ? normalized : null\n}\n\nconst withTenant = (path: string, tenantId: string | null): string => {\n if (!tenantId) return path\n const sep = path.includes(\"?\") ? \"&\" : \"?\"\n return `${path}${sep}${TENANT_ID_QUERY_PARAM}=${encodeURIComponent(tenantId)}`\n}\n\nconst postJson = async <T,>(\n url: string,\n body: unknown,\n options?: { headers?: Record<string, string>; signal?: AbortSignal },\n): Promise<{ ok: boolean; status: number; data: T }> => {\n const response = await fetch(url, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\", ...(options?.headers ?? {}) },\n credentials: \"include\",\n body: JSON.stringify(body),\n signal: options?.signal,\n })\n\n const payload = await response.json().catch(() => ({}))\n return { ok: response.ok, status: response.status, data: payload as T }\n}\n\nconst getJson = async <T,>(\n url: string,\n options?: { headers?: Record<string, string>; signal?: AbortSignal },\n): Promise<{ ok: boolean; status: number; data: T }> => {\n const response = await fetch(url, {\n credentials: \"include\",\n headers: options?.headers,\n signal: options?.signal,\n })\n const payload = await response.json().catch(() => ({}))\n return { ok: response.ok, status: response.status, data: payload as T }\n}\n\nconst putOctetStream = async ({\n url,\n body,\n sha256,\n uploadKey,\n signal,\n}: {\n url: string\n body: ArrayBuffer\n sha256?: string\n uploadKey?: string\n signal?: AbortSignal\n}): Promise<{ ok: boolean; status: number }> => {\n const headers: Record<string, string> = {\n \"Content-Type\": \"application/octet-stream\",\n }\n if (sha256) headers[\"X-Chunk-SHA256\"] = sha256\n if (uploadKey) headers[\"X-Upload-Key\"] = uploadKey\n\n const response = await fetch(url, {\n method: \"PUT\",\n credentials: \"include\",\n headers,\n body,\n signal,\n })\n\n return { ok: response.ok, status: response.status }\n}\n\nconst defaultUpload: UploadHandler = async (file, onProgress, options) => {\n const tenantId = readTenantIdFromLocation()\n\n const initRes = await postJson<FileUploadsInitResponse>(\n withTenant(\"/api/rb/file-uploads\", tenantId),\n {\n filename: file.name,\n mimeType: file.type || \"application/octet-stream\",\n ...(typeof options?.isPublic === \"boolean\" ? { isPublic: options.isPublic } : {}),\n totalSize: file.size,\n },\n { signal: options?.signal },\n )\n\n if (!initRes.ok || !(initRes.data as any)?.ok) {\n throw new Error((initRes.data as any)?.error ?? `Init failed (${initRes.status})`)\n }\n\n const uploadId = String((initRes.data as any)?.uploadId ?? \"\")\n const uploadKey = typeof (initRes.data as any)?.uploadKey === \"string\" ? String((initRes.data as any).uploadKey) : null\n const chunkSize = Number((initRes.data as any)?.chunkSize ?? 0)\n const chunksTotal = Number((initRes.data as any)?.chunksTotal ?? 0)\n\n if (!uploadId || !chunkSize || !chunksTotal) {\n throw new Error(\"Upload init missing required fields\")\n }\n\n const doUploadChunk = async (index: number) => {\n const start = index * chunkSize\n const end = Math.min(file.size, start + chunkSize)\n const slice = file.slice(start, end)\n const body = await slice.arrayBuffer()\n const sha = await sha256Hex(body)\n\n const res = await putOctetStream({\n url: withTenant(`/api/rb/file-uploads/${encodeURIComponent(uploadId)}/chunks/${index}`, tenantId),\n body,\n sha256: sha ?? undefined,\n uploadKey: uploadKey ?? undefined,\n signal: options?.signal,\n })\n\n if (res.status === 204) return\n throw new Error(`Chunk ${index} failed (${res.status})`)\n }\n\n const uploadChunks = async (indices: number[], alreadyUploaded = 0) => {\n let uploaded = alreadyUploaded\n\n for (const idx of indices) {\n await doUploadChunk(idx)\n uploaded += 1\n const pct = Math.min(99, Math.floor((uploaded / chunksTotal) * 99))\n onProgress(pct)\n }\n }\n\n const allIndices = Array.from({ length: chunksTotal }, (_, i) => i)\n await uploadChunks(allIndices, 0)\n\n const complete = async (): Promise<string> => {\n const completeRes = await postJson<FileUploadsCompleteResponse>(\n withTenant(`/api/rb/file-uploads/${encodeURIComponent(uploadId)}/complete`, tenantId),\n {},\n { headers: uploadKey ? { \"X-Upload-Key\": uploadKey } : undefined, signal: options?.signal },\n )\n\n if (completeRes.ok && (completeRes.data as any)?.ok) {\n const fileId = String((completeRes.data as any)?.fileId ?? \"\")\n if (!fileId) throw new Error(\"Upload completed without fileId\")\n return fileId\n }\n\n const code = String((completeRes.data as any)?.error ?? \"\")\n if (completeRes.status !== 409 || code !== \"missing_chunks\") {\n throw new Error(code || `Complete failed (${completeRes.status})`)\n }\n\n const statusRes = await getJson<FileUploadsStatusResponse>(\n withTenant(`/api/rb/file-uploads/${encodeURIComponent(uploadId)}/status`, tenantId),\n { headers: uploadKey ? { \"X-Upload-Key\": uploadKey } : undefined, signal: options?.signal },\n )\n\n if (!statusRes.ok || !(statusRes.data as any)?.ok) {\n throw new Error((statusRes.data as any)?.error ?? `Status failed (${statusRes.status})`)\n }\n\n const received = Array.isArray((statusRes.data as any)?.received) ? (statusRes.data as any).received : []\n const present = new Set<number>(received)\n const missing: number[] = []\n for (let i = 0; i < chunksTotal; i += 1) {\n if (!present.has(i)) missing.push(i)\n }\n\n if (!missing.length) {\n throw new Error(\"missing_chunks\")\n }\n\n await uploadChunks(missing, present.size)\n return complete()\n }\n\n const fileId = await complete()\n\n onProgress(100)\n return {\n id: fileId,\n url: withTenant(`/api/rb/files/${encodeURIComponent(fileId)}`, tenantId),\n alt: file.name,\n ...(uploadKey ? { uploadKey } : {}),\n }\n}\n\nfunction SortableTile({\n item,\n isHovered,\n enableImagePreview,\n renderItem,\n onHoverEnter,\n onHoverLeave,\n onRemove,\n onRetry,\n startFullscreen,\n isUploading,\n isError,\n tileClasses,\n disabled,\n isDraggingExternal,\n removeButtonAriaLabel,\n}: {\n item: FileWithState\n isHovered: boolean\n enableImagePreview: boolean\n renderItem?: (props: FilesUploadFieldRenderItemProps) => ReactNode\n onHoverEnter: () => void\n onHoverLeave: () => void\n onRemove: (id: string) => void\n onRetry: (id: string) => void\n startFullscreen: (id: string) => void\n isUploading: boolean\n isError: boolean\n tileClasses: string\n disabled: boolean\n isDraggingExternal: boolean\n removeButtonAriaLabel: string\n}) {\n const { setNodeRef, attributes, listeners, transform, transition, isDragging } = useSortable({\n id: item.id,\n disabled,\n })\n\n const tileRef = useRef<HTMLDivElement | null>(null)\n const previewRef = useRef<HTMLDivElement | null>(null)\n const [previewPosition, setPreviewPosition] = useState<{ left: number; top: number } | null>(null)\n\n const updatePreviewPosition = () => {\n const el = tileRef.current\n if (!el) return\n const rect = el.getBoundingClientRect()\n setPreviewPosition({ left: rect.left + rect.width / 2, top: rect.top - 10 })\n }\n\n useEffect(() => {\n if (!enableImagePreview || !isHovered) {\n setPreviewPosition(null)\n return\n }\n\n updatePreviewPosition()\n\n let raf = 0\n const schedule = () => {\n if (raf) cancelAnimationFrame(raf)\n raf = requestAnimationFrame(() => {\n raf = 0\n updatePreviewPosition()\n })\n }\n\n window.addEventListener(\"resize\", schedule)\n window.addEventListener(\"scroll\", schedule, true)\n return () => {\n if (raf) cancelAnimationFrame(raf)\n window.removeEventListener(\"resize\", schedule)\n window.removeEventListener(\"scroll\", schedule, true)\n }\n }, [enableImagePreview, isHovered])\n\n const style = {\n transform: CSS.Transform.toString(transform),\n transition,\n }\n\n const tileContent = renderItem\n ? renderItem({\n file: { id: item.id, url: item.url, alt: item.alt, uploadKey: item.uploadKey },\n previewUrl: item.previewUrl,\n status: item.status,\n progress: item.progress,\n fileName: item.fileName,\n })\n : enableImagePreview\n ? (\n <img\n src={item.previewUrl}\n alt={item.alt ?? \"Uploaded file\"}\n className={cn(\n \"size-full rounded-md object-cover\",\n isUploading && \"opacity-75\",\n isError && \"grayscale\"\n )}\n />\n )\n : (\n <div className=\"flex size-full items-center justify-center rounded-md bg-slate-100 px-2 text-center text-[10px] font-medium text-slate-700 dark:bg-slate-800 dark:text-slate-200\">\n <span className=\"w-full truncate\">{item.fileName ?? item.alt ?? \"Fichier\"}</span>\n </div>\n )\n\n return (\n <div\n ref={(node) => {\n tileRef.current = node\n setNodeRef(node)\n }}\n style={style}\n className={cn(\n tileClasses,\n isDragging && \"z-20 ring-2 ring-primary shadow-xl\",\n isDraggingExternal && \"opacity-0\",\n !disabled && \"cursor-grab active:cursor-grabbing\",\n isDragging && \"cursor-grabbing\",\n disabled && \"cursor-default\"\n )}\n onMouseEnter={() => {\n updatePreviewPosition()\n onHoverEnter()\n }}\n onMouseLeave={(event) => {\n const next = event.relatedTarget\n if (next instanceof Node && previewRef.current?.contains(next)) return\n onHoverLeave()\n }}\n {...attributes}\n {...listeners}\n >\n {tileContent}\n\n <button\n type=\"button\"\n onClick={() => {\n if (disabled) return\n onRemove(item.id)\n }}\n disabled={disabled}\n className=\"absolute right-1 top-1 inline-flex size-6 items-center justify-center rounded-full bg-white text-slate-700 shadow-sm transition hover:scale-105 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary dark:bg-slate-900 dark:text-slate-200\"\n aria-label={removeButtonAriaLabel}\n >\n <X className=\"h-4 w-4\" />\n </button>\n\n {enableImagePreview &&\n isHovered &&\n previewPosition &&\n (() => {\n const preview = (\n <div\n ref={previewRef}\n className=\"fixed z-[60] w-52 -translate-x-1/2 -translate-y-full rounded-xl border border-slate-200 bg-white/95 p-3 shadow-2xl backdrop-blur dark:border-slate-700 dark:bg-slate-900/95\"\n style={{ left: previewPosition.left, top: previewPosition.top }}\n onMouseEnter={() => {\n updatePreviewPosition()\n onHoverEnter()\n }}\n onMouseLeave={(event) => {\n const next = event.relatedTarget\n if (next instanceof Node && tileRef.current?.contains(next)) return\n onHoverLeave()\n }}\n >\n <div className=\"relative overflow-hidden rounded-lg\">\n <img src={item.url} alt={item.alt ?? \"Preview\"} className=\"h-40 w-full object-cover\" />\n <button\n type=\"button\"\n onClick={() => startFullscreen(item.id)}\n className=\"absolute right-2 top-2 inline-flex items-center justify-center rounded-full bg-black/70 p-2 text-white transition hover:bg-black\"\n aria-label=\"Plein écran\"\n >\n <Maximize2 className=\"h-3.5 w-3.5\" />\n </button>\n </div>\n </div>\n )\n\n if (typeof document === \"undefined\") return preview\n return createPortal(preview, document.body)\n })()}\n\n {isUploading && (\n <div className=\"absolute inset-0 z-20 flex flex-col items-center justify-center gap-2 rounded-lg bg-black/40 text-white\">\n <Loader2 className=\"h-5 w-5 animate-spin\" />\n <div className=\"h-1.5 w-5/6 rounded-full bg-white/20\">\n <div className=\"h-full rounded-full bg-primary\" style={{ width: `${item.progress}%` }} />\n </div>\n <div className=\"text-xs font-semibold\">{item.progress}%</div>\n </div>\n )}\n\n {isError && (\n <div className=\"absolute inset-0 z-10 flex flex-col items-center justify-center gap-2 rounded-lg bg-red-600/70 text-white\">\n <div className=\"text-xs font-semibold\">Échec</div>\n <button\n type=\"button\"\n onClick={() => onRetry(item.id)}\n disabled={disabled}\n className=\"rounded-full bg-white/90 px-3 py-1 text-xs font-semibold text-red-700 shadow-sm transition hover:bg-white focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-white\"\n >\n Réessayer\n </button>\n </div>\n )}\n </div>\n )\n}\n\ntype UploadResult = FilesUploadFieldFile | Promise<FilesUploadFieldFile>\n\ntype UploadHandler = (\n file: File,\n onProgress: (progress: number) => void,\n options?: { signal?: AbortSignal; isPublic?: boolean },\n) => UploadResult\n\nexport type FilesUploadFieldRenderItemProps = {\n file: FilesUploadFieldFile\n previewUrl: string\n status: \"uploaded\" | \"uploading\" | \"error\"\n progress: number\n fileName?: string\n}\n\nexport type FilesUploadFieldProps = {\n initialFiles?: FilesUploadFieldFile[]\n onChange?: (files: FilesUploadFieldFile[]) => void\n upload?: UploadHandler\n uploadIsPublic?: boolean\n disabled?: boolean\n onUploadingChange?: (isUploading: boolean) => void\n accept?: string | string[]\n renderHeader?: () => ReactNode\n renderItem?: (props: FilesUploadFieldRenderItemProps) => ReactNode\n addButtonAriaLabel?: string\n removeButtonAriaLabel?: string\n}\n\ntype FileWithState = FilesUploadFieldFile & {\n previewUrl: string\n status: \"uploaded\" | \"uploading\" | \"error\"\n progress: number\n fileName?: string\n}\n\nfunction toPreview(file: File) {\n return URL.createObjectURL(file)\n}\n\nexport function FilesUploadField({\n initialFiles = [],\n onChange,\n upload = defaultUpload,\n uploadIsPublic = false,\n disabled = false,\n onUploadingChange,\n accept,\n renderHeader,\n renderItem,\n addButtonAriaLabel = \"Ajouter un fichier\",\n removeButtonAriaLabel = \"Supprimer le fichier\",\n}: FilesUploadFieldProps) {\n const fileInputRef = useRef<HTMLInputElement>(null)\n const [images, setImages] = useState<FileWithState[]>(() =>\n initialFiles.map((file) => ({ ...file, previewUrl: file.url, status: \"uploaded\", progress: 100 }))\n )\n const [dragActive, setDragActive] = useState(false)\n const [fullscreenIndex, setFullscreenIndex] = useState<number | null>(null)\n const [hoveredId, setHoveredId] = useState<string | null>(null)\n const [activeId, setActiveId] = useState<string | null>(null)\n const hoverTimeoutRef = useRef<number | null>(null)\n const skipNotifyRef = useRef(true)\n const imagesRef = useRef<FileWithState[]>([])\n const lastInitialImagesRef = useRef<FilesUploadFieldFile[]>(initialFiles)\n const onChangeRef = useRef(onChange)\n const onUploadingChangeRef = useRef(onUploadingChange)\n const replacedIdRef = useRef<Map<string, string>>(new Map())\n const fileRef = useRef<Map<string, File>>(new Map())\n const abortRef = useRef<Map<string, AbortController>>(new Map())\n const objectUrlRef = useRef<Map<string, string>>(new Map())\n const sensors = useSensors(\n useSensor(PointerSensor, { activationConstraint: { distance: 6 } }),\n useSensor(KeyboardSensor, { coordinateGetter: sortableKeyboardCoordinates })\n )\n\n useEffect(() => {\n return () => {\n for (const controller of abortRef.current.values()) {\n try {\n controller.abort()\n } catch {\n //\n }\n }\n abortRef.current.clear()\n fileRef.current.clear()\n replacedIdRef.current.clear()\n\n for (const url of objectUrlRef.current.values()) {\n if (typeof URL !== \"undefined\") {\n try {\n URL.revokeObjectURL(url)\n } catch {\n //\n }\n }\n }\n objectUrlRef.current.clear()\n }\n }, [])\n\n useEffect(() => {\n if (typeof document === \"undefined\") return\n if (activeId) {\n document.body.style.cursor = \"grabbing\"\n return () => {\n document.body.style.cursor = \"\"\n }\n }\n document.body.style.cursor = \"\"\n }, [activeId])\n\n useEffect(() => {\n imagesRef.current = images\n }, [images])\n\n useEffect(() => {\n onChangeRef.current = onChange\n }, [onChange])\n\n useEffect(() => {\n onUploadingChangeRef.current = onUploadingChange\n }, [onUploadingChange])\n\n useEffect(() => {\n const previous = lastInitialImagesRef.current\n const samePropValue =\n previous.length === initialFiles.length &&\n previous.every((img, index) => {\n const next = initialFiles[index]\n return next && img.id === next.id && img.url === next.url && img.alt === next.alt\n })\n\n if (samePropValue) return\n lastInitialImagesRef.current = initialFiles\n\n const prepared: FileWithState[] = initialFiles.map((img) => ({\n ...img,\n previewUrl: img.url,\n status: \"uploaded\",\n progress: 100,\n }))\n\n const preparedRawIds = new Set(prepared.map((img) => img.id))\n for (const [tempId, finalId] of replacedIdRef.current.entries()) {\n if (preparedRawIds.has(finalId)) {\n replacedIdRef.current.delete(tempId)\n }\n }\n\n const currentIds = new Set(imagesRef.current.map((img) => img.id))\n const hasStaleInitialImages = prepared.some((img) => {\n const mapped = replacedIdRef.current.get(img.id)\n return mapped ? currentIds.has(mapped) : false\n })\n if (hasStaleInitialImages) return\n\n const preparedIds = new Set(prepared.map((img) => img.id))\n for (const img of imagesRef.current) {\n if (preparedIds.has(img.id)) continue\n\n const controller = abortRef.current.get(img.id)\n if (controller) {\n abortRef.current.delete(img.id)\n try {\n controller.abort()\n } catch {\n //\n }\n }\n\n fileRef.current.delete(img.id)\n\n const tempUrl = objectUrlRef.current.get(img.id)\n if (tempUrl) {\n objectUrlRef.current.delete(img.id)\n try {\n URL.revokeObjectURL(tempUrl)\n } catch {\n //\n }\n }\n }\n\n setImages((current) => {\n const sameLength = current.length === prepared.length\n const sameContent =\n sameLength &&\n current.every((item, index) => {\n const next = prepared[index]\n return next && item.id === next.id && item.url === next.url && item.alt === next.alt && item.uploadKey === next.uploadKey\n })\n\n if (sameContent) return current\n\n skipNotifyRef.current = true\n return prepared\n })\n }, [initialFiles])\n\n useEffect(() => {\n if (skipNotifyRef.current) {\n skipNotifyRef.current = false\n return\n }\n\n onChangeRef.current?.(images.map(({ id, url, alt, uploadKey }) => ({ id, url, alt, uploadKey })))\n }, [images])\n\n useEffect(() => {\n onUploadingChangeRef.current?.(images.some((img) => img.status === \"uploading\"))\n }, [images])\n\n useEffect(() => {\n if (fullscreenIndex === null) {\n return\n }\n\n const handleKey = (event: KeyboardEvent) => {\n if (event.key === \"Escape\") {\n setFullscreenIndex(null)\n return\n }\n\n if (event.key === \"ArrowRight\") {\n setFullscreenIndex((current) => {\n if (current === null) return current\n return (current + 1) % images.length\n })\n return\n }\n\n if (event.key === \"ArrowLeft\") {\n setFullscreenIndex((current) => {\n if (current === null) return current\n return (current - 1 + images.length) % images.length\n })\n }\n }\n\n window.addEventListener(\"keydown\", handleKey)\n return () => window.removeEventListener(\"keydown\", handleKey)\n }, [fullscreenIndex, images.length])\n\n const handleFiles = async (files: FileList | File[]) => {\n if (disabled) return\n const list = Array.from(files)\n\n const uploads = list.map((file) => {\n const previewUrl = toPreview(file)\n const tempId = crypto.randomUUID()\n\n objectUrlRef.current.set(tempId, previewUrl)\n fileRef.current.set(tempId, file)\n\n const next: FileWithState = {\n id: tempId,\n url: previewUrl,\n previewUrl,\n alt: file.name,\n status: \"uploading\",\n progress: 0,\n fileName: file.name,\n }\n\n setImages((current) => [...current, next])\n\n const updateProgress = (value: number) => {\n const nextValue = Math.max(0, Math.min(99, value))\n setImages((current) =>\n current.map((item) =>\n item.id === tempId ? { ...item, progress: nextValue, status: \"uploading\" } : item\n )\n )\n }\n\n const finalize = async () => {\n const controller = new AbortController()\n abortRef.current.set(tempId, controller)\n\n try {\n const result = await upload(file, updateProgress, { signal: controller.signal, isPublic: uploadIsPublic })\n replacedIdRef.current.set(tempId, result.id)\n\n const tempUrl = objectUrlRef.current.get(tempId)\n if (tempUrl) {\n objectUrlRef.current.delete(tempId)\n try {\n URL.revokeObjectURL(tempUrl)\n } catch {\n //\n }\n }\n\n abortRef.current.delete(tempId)\n fileRef.current.delete(tempId)\n\n setImages((current) =>\n current.map((item) =>\n item.id === tempId\n ? {\n ...item,\n ...result,\n previewUrl: result.url,\n url: result.url,\n status: \"uploaded\",\n progress: 100,\n }\n : item\n )\n )\n } catch (error) {\n abortRef.current.delete(tempId)\n if (controller.signal.aborted) {\n fileRef.current.delete(tempId)\n const tempUrl = objectUrlRef.current.get(tempId)\n if (tempUrl) {\n objectUrlRef.current.delete(tempId)\n try {\n URL.revokeObjectURL(tempUrl)\n } catch {\n //\n }\n }\n return\n }\n console.error(\"Upload failed\", error)\n setImages((current) =>\n current.map((item) =>\n item.id === tempId\n ? { ...item, status: \"error\", progress: Math.max(0, Math.min(99, item.progress)) }\n : item\n )\n )\n }\n }\n\n return finalize()\n })\n\n await Promise.allSettled(uploads)\n }\n\n const onFileInputChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n if (!event.target.files) return\n void handleFiles(event.target.files)\n event.target.value = \"\"\n }\n\n const openFileDialog = () => {\n if (disabled) return\n fileInputRef.current?.click()\n }\n\n const removeImage = (id: string) => {\n const controller = abortRef.current.get(id)\n if (controller) {\n abortRef.current.delete(id)\n try {\n controller.abort()\n } catch {\n //\n }\n }\n\n fileRef.current.delete(id)\n\n const tempUrl = objectUrlRef.current.get(id)\n if (tempUrl) {\n objectUrlRef.current.delete(id)\n try {\n URL.revokeObjectURL(tempUrl)\n } catch {\n //\n }\n }\n\n setImages((current) => current.filter((item) => item.id !== id))\n }\n\n const retryUpload = (id: string) => {\n if (disabled) return\n const file = fileRef.current.get(id)\n if (!file) return\n\n const existingController = abortRef.current.get(id)\n if (existingController) {\n try {\n existingController.abort()\n } catch {\n //\n }\n abortRef.current.delete(id)\n }\n\n setImages((current) =>\n current.map((item) => (item.id === id ? { ...item, status: \"uploading\", progress: 0 } : item))\n )\n\n const updateProgress = (value: number) => {\n const nextValue = Math.max(0, Math.min(99, value))\n setImages((current) =>\n current.map((item) => (item.id === id ? { ...item, progress: nextValue, status: \"uploading\" } : item))\n )\n }\n\n const controller = new AbortController()\n abortRef.current.set(id, controller)\n\n void (async () => {\n try {\n const result = await upload(file, updateProgress, { signal: controller.signal, isPublic: uploadIsPublic })\n replacedIdRef.current.set(id, result.id)\n\n const tempUrl = objectUrlRef.current.get(id)\n if (tempUrl) {\n objectUrlRef.current.delete(id)\n try {\n URL.revokeObjectURL(tempUrl)\n } catch {\n //\n }\n }\n\n abortRef.current.delete(id)\n fileRef.current.delete(id)\n\n setImages((current) =>\n current.map((item) =>\n item.id === id\n ? { ...item, ...result, previewUrl: result.url, url: result.url, status: \"uploaded\", progress: 100 }\n : item\n )\n )\n } catch (error) {\n abortRef.current.delete(id)\n if (controller.signal.aborted) return\n console.error(\"Retry failed\", error)\n setImages((current) => current.map((item) => (item.id === id ? { ...item, status: \"error\" } : item)))\n }\n })()\n }\n\n const startFullscreen = (id: string) => {\n const index = images.findIndex((item) => item.id === id)\n if (index !== -1) {\n setFullscreenIndex(index)\n }\n }\n\n const handleDragStart = (event: DragEndEvent) => {\n setActiveId(String(event.active.id))\n }\n\n const handleDragEnd = (event: DragEndEvent) => {\n const { active, over } = event\n if (!over) {\n setActiveId(null)\n return\n }\n\n const activeId = String(active.id)\n const overId = String(over.id)\n\n if (activeId !== overId) {\n setImages((current) => {\n const oldIndex = current.findIndex((item) => item.id === activeId)\n const newIndex = current.findIndex((item) => item.id === overId)\n if (oldIndex === -1 || newIndex === -1) return current\n return arrayMove(current, oldIndex, newIndex)\n })\n }\n\n setActiveId(null)\n }\n\n const handleDragCancel = () => {\n setActiveId(null)\n }\n\n const clearHoverTimeout = () => {\n if (hoverTimeoutRef.current !== null) {\n window.clearTimeout(hoverTimeoutRef.current)\n hoverTimeoutRef.current = null\n }\n }\n\n const fullscreenImage = useMemo(() => {\n if (fullscreenIndex === null) return null\n return images[fullscreenIndex] ?? null\n }, [fullscreenIndex, images])\n\n const containerClasses = cn(\n \"rounded-xl border border-dashed border-slate-300 bg-white/70 p-4 shadow-sm transition-colors dark:border-slate-700 dark:bg-slate-900/60\",\n dragActive && \"border-primary ring-2 ring-primary/50\",\n disabled && \"opacity-70\"\n )\n\n const tileBaseClasses = \"group relative size-20 overflow-visible rounded-lg border border-slate-200 bg-slate-50 shadow-inner transition hover:shadow md:size-24 dark:border-slate-700 dark:bg-slate-800\"\n\n const acceptAttr = useMemo(() => {\n if (!accept) return undefined\n if (Array.isArray(accept)) return accept.join(\",\")\n return accept\n }, [accept])\n\n const enableImagePreview = useMemo(() => {\n if (renderItem) return false\n if (!acceptAttr) return false\n const tokens = acceptAttr.split(\",\").map((value) => value.trim()).filter(Boolean)\n if (!tokens.length) return false\n return tokens.every((token) => token === \"image/*\" || token.startsWith(\"image/\"))\n }, [acceptAttr, renderItem])\n\n const toRenderItemProps = (item: FileWithState): FilesUploadFieldRenderItemProps => ({\n file: { id: item.id, url: item.url, alt: item.alt, uploadKey: item.uploadKey },\n previewUrl: item.previewUrl,\n status: item.status,\n progress: item.progress,\n fileName: item.fileName,\n })\n\n const dragOverlayContent = activeId\n ? (() => {\n const activeItem = images.find((item) => item.id === activeId)\n if (!activeItem) return null\n\n if (renderItem) {\n const rendered = renderItem(toRenderItemProps(activeItem))\n if (rendered === null || rendered === undefined || rendered === false) return null\n return (\n <div className=\"pointer-events-none\">\n <div className=\"h-24 w-24 overflow-hidden rounded-lg shadow-2xl\">{rendered}</div>\n </div>\n )\n }\n\n if (!enableImagePreview) return null\n return (\n <div className=\"pointer-events-none\">\n <img\n src={activeItem.previewUrl}\n alt={activeItem.alt ?? \"Dragged image\"}\n className=\"h-24 w-24 rounded-lg object-cover shadow-2xl\"\n />\n </div>\n )\n })()\n : null\n\n const hideActiveTile = dragOverlayContent !== null && dragOverlayContent !== undefined\n\n return (\n <div\n onDragOver={(event) => {\n event.preventDefault()\n if (!disabled) {\n setDragActive(true)\n }\n }}\n onDragLeave={() => setDragActive(false)}\n onDrop={(event) => {\n event.preventDefault()\n setDragActive(false)\n if (event.dataTransfer.files?.length) {\n void handleFiles(event.dataTransfer.files)\n }\n }}\n className={containerClasses}\n >\n {renderHeader ? <div className=\"mb-3\">{renderHeader()}</div> : null}\n\n <DndContext\n sensors={disabled ? undefined : sensors}\n collisionDetection={closestCenter}\n onDragStart={handleDragStart}\n onDragEnd={handleDragEnd}\n onDragCancel={handleDragCancel}\n >\n <SortableContext items={images.map((item) => item.id)} strategy={rectSortingStrategy}>\n <div className=\"flex flex-wrap gap-3\">\n {images.map((item) => {\n const isUploading = item.status === \"uploading\"\n const isError = item.status === \"error\"\n\n return (\n <SortableTile\n key={item.id}\n item={item}\n isHovered={hoveredId === item.id}\n enableImagePreview={enableImagePreview}\n renderItem={renderItem}\n onHoverEnter={() => {\n clearHoverTimeout()\n setHoveredId(item.id)\n }}\n onHoverLeave={() => {\n clearHoverTimeout()\n hoverTimeoutRef.current = window.setTimeout(() => {\n setHoveredId((current) => (current === item.id ? null : current))\n hoverTimeoutRef.current = null\n }, 120)\n }}\n onRemove={removeImage}\n onRetry={retryUpload}\n startFullscreen={startFullscreen}\n isUploading={isUploading}\n isError={isError}\n tileClasses={tileBaseClasses}\n disabled={disabled}\n isDraggingExternal={hideActiveTile && activeId === item.id}\n removeButtonAriaLabel={removeButtonAriaLabel}\n />\n )\n })}\n\n <button\n type=\"button\"\n onClick={openFileDialog}\n disabled={disabled}\n className={cn(\n tileBaseClasses,\n \"flex items-center justify-center border-dashed bg-white text-slate-500 hover:border-slate-300 dark:bg-slate-900\"\n )}\n aria-label={addButtonAriaLabel}\n >\n <div className=\"flex flex-col items-center gap-1\">\n <div className=\"flex size-9 items-center justify-center rounded-full border border-slate-300 bg-slate-100 text-slate-600 shadow-inner dark:border-slate-700 dark:bg-slate-800 dark:text-slate-200\">\n <Plus className=\"h-5 w-5\" />\n </div>\n <span className=\"text-xs font-medium\">Ajouter</span>\n </div>\n </button>\n </div>\n </SortableContext>\n {(() => {\n const overlay = <DragOverlay>{dragOverlayContent}</DragOverlay>\n\n if (typeof document === \"undefined\") return overlay\n return createPortal(overlay, document.body)\n })()}\n </DndContext>\n\n <input\n ref={fileInputRef}\n type=\"file\"\n accept={acceptAttr}\n multiple\n className=\"hidden\"\n onChange={onFileInputChange}\n aria-hidden\n />\n\n {enableImagePreview && fullscreenImage && (\n <div className=\"fixed inset-0 z-50 flex items-center justify-center bg-black/90\">\n <button\n type=\"button\"\n className=\"absolute left-6 top-1/2 -translate-y-1/2 rounded-full bg-white/10 p-3 text-white shadow-lg transition hover:bg-white/20 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-white\"\n onClick={() =>\n setFullscreenIndex((current) => {\n if (current === null) return current\n return (current - 1 + images.length) % images.length\n })\n }\n aria-label=\"Précédent\"\n >\n <svg viewBox=\"0 0 24 24\" className=\"h-6 w-6\" stroke=\"currentColor\" strokeWidth={2} fill=\"none\">\n <path d=\"M15 18l-6-6 6-6\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n </button>\n <div className=\"relative max-h-[80vh] max-w-4xl\">\n <img\n src={fullscreenImage.url}\n alt={fullscreenImage.alt ?? \"Fullscreen\"}\n className=\"max-h-[80vh] max-w-full rounded-lg object-contain shadow-2xl\"\n />\n <button\n type=\"button\"\n className=\"absolute right-3 top-3 inline-flex size-9 items-center justify-center rounded-full bg-black/70 text-white transition hover:bg-black focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-white\"\n onClick={() => setFullscreenIndex(null)}\n aria-label=\"Fermer\"\n >\n <X className=\"h-5 w-5\" />\n </button>\n </div>\n <button\n type=\"button\"\n className=\"absolute right-6 top-1/2 -translate-y-1/2 rounded-full bg-white/10 p-3 text-white shadow-lg transition hover:bg-white/20 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-white\"\n onClick={() =>\n setFullscreenIndex((current) => {\n if (current === null) return current\n return (current + 1) % images.length\n })\n }\n aria-label=\"Suivant\"\n >\n <svg viewBox=\"0 0 24 24\" className=\"h-6 w-6\" stroke=\"currentColor\" strokeWidth={2} fill=\"none\">\n <path d=\"M9 6l6 6-6 6\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n </button>\n </div>\n )}\n </div>\n )\n}\n"],"names":["TENANT_ID_QUERY_PARAM","sha256Hex","data","crypto","subtle","digest","Array","from","Uint8Array","map","b","toString","padStart","join","readTenantIdFromLocation","window","normalized","URLSearchParams","location","search","get","trim","withTenant","path","tenantId","sep","includes","encodeURIComponent","postJson","url","body","options","response","fetch","method","headers","credentials","JSON","stringify","signal","payload","json","catch","ok","status","getJson","putOctetStream","sha256","uploadKey","defaultUpload","file","onProgress","initRes","filename","name","mimeType","type","isPublic","totalSize","size","Error","error","uploadId","String","chunkSize","Number","chunksTotal","doUploadChunk","index","start","end","Math","min","slice","arrayBuffer","sha","res","undefined","uploadChunks","indices","alreadyUploaded","uploaded","idx","pct","floor","allIndices","length","_","i","complete","completeRes","fileId","code","statusRes","received","isArray","present","Set","missing","has","push","id","alt","SortableTile","t0","$","_c","item","isHovered","enableImagePreview","renderItem","onHoverEnter","onHoverLeave","onRemove","onRetry","startFullscreen","isUploading","isError","tileClasses","disabled","isDraggingExternal","removeButtonAriaLabel","t1","setNodeRef","attributes","listeners","transform","transition","isDragging","useSortable","tileRef","useRef","previewRef","previewPosition","setPreviewPosition","useState","t2","Symbol","for","el","current","rect","getBoundingClientRect","left","width","top","updatePreviewPosition","t3","t4","raf","schedule","cancelAnimationFrame","requestAnimationFrame","addEventListener","removeEventListener","useEffect","t5","CSS","Transform","t6","style","t7","fileName","previewUrl","progress","jsx","cn","tileContent","t8","node","t9","t10","t11","t12","t13","t14","t15","t16","event","next","relatedTarget","Node","contains","t17","t18","X","t19","t20","preview","event_0","next_0","jsxs","Maximize2","document","createPortal","t21","Loader2","t22","t23","toPreview","URL","createObjectURL","FilesUploadField","initialFiles","onChange","upload","uploadIsPublic","onUploadingChange","accept","renderHeader","addButtonAriaLabel","fileInputRef","_temp","images","setImages","dragActive","setDragActive","fullscreenIndex","setFullscreenIndex","hoveredId","setHoveredId","activeId","setActiveId","hoverTimeoutRef","skipNotifyRef","imagesRef","lastInitialImagesRef","onChangeRef","onUploadingChangeRef","Map","replacedIdRef","fileRef","abortRef","objectUrlRef","activationConstraint","distance","coordinateGetter","sortableKeyboardCoordinates","sensors","useSensors","useSensor","PointerSensor","KeyboardSensor","controller","values","abort","clear","revokeObjectURL","cursor","_temp2","t24","t25","t26","t27","previous","every","img","prepared","_temp3","preparedRawIds","_temp4","tempId","finalId","entries","delete","currentIds","_temp5","some","img_3","mapped","preparedIds","_temp6","img_5","controller_0","tempUrl","index_0","t28","t29","_temp7","t30","t31","_temp8","t32","t33","handleKey","key","current_0","current_1","t34","files","uploads","file_0","tempId_0","randomUUID","set","next_1","current_2","updateProgress","value","nextValue","max","current_3","item_0","controller_1","AbortController","result","tempUrl_1","current_5","item_2","t35","aborted","tempUrl_0","console","current_4","item_1","finalize","Promise","allSettled","handleFiles","target","onFileInputChange","t36","click","openFileDialog","t37","id_0","controller_2","tempUrl_2","current_6","filter","item_3","removeImage","t38","id_1","file_1","existingController","current_7","item_4","updateProgress_0","value_0","nextValue_0","current_8","item_5","controller_3","result_0","tempUrl_3","current_10","item_7","t39","current_9","item_6","retryUpload","id_2","index_1","findIndex","item_8","t40","event_1","active","handleDragStart","t41","event_2","over","activeId_0","overId","current_11","oldIndex","item_9","newIndex","item_10","arrayMove","handleDragEnd","t42","handleDragCancel","t43","clearTimeout","clearHoverTimeout","t44","bb0","fullscreenImage","t45","t46","t47","containerClasses","t48","bb1","t49","acceptAttr","bb2","tokens","split","_temp9","Boolean","_temp0","toRenderItemProps","_temp1","t50","activeItem","find","item_12","rendered","dragOverlayContent","hideActiveTile","t51","event_3","preventDefault","t52","t53","event_4","dataTransfer","t54","t55","t56","_temp10","t57","item_14","setTimeout","current_12","tileBaseClasses","t58","t59","Plus","t60","t61","t62","SortableContext","rectSortingStrategy","t63","bb3","t64","DragOverlay","overlay","t65","DndContext","closestCenter","t66","current_13","current_14","t67","item_13","item_11","token","startsWith","value_1","img_6","url_0","img_4","img_2","img_1","img_0"],"mappings":"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"}
package/dist/index150.js CHANGED
@@ -1,25 +1,24 @@
1
- import * as n from "react";
2
- import { Primitive as p } from "./index61.js";
3
- import { j as o } from "./index29.js";
4
- var v = "Arrow", e = n.forwardRef((r, i) => {
5
- const { children: t, width: s = 10, height: a = 5, ...m } = r;
6
- return /* @__PURE__ */ o.jsx(
7
- p.svg,
8
- {
9
- ...m,
10
- ref: i,
11
- width: s,
12
- height: a,
13
- viewBox: "0 0 30 10",
14
- preserveAspectRatio: "none",
15
- children: r.asChild ? t : /* @__PURE__ */ o.jsx("polygon", { points: "0,0 30,0 15,10" })
1
+ import { useState as a } from "react";
2
+ import { calculateFocusTarget as T } from "./index259.js";
3
+ import { getNextFocus as v } from "./index260.js";
4
+ function I(e, o, r, i, f) {
5
+ const { autoFocus: F } = e, [d, m] = a(), c = T(o.days, r, i || (() => !1), d), [s, u] = a(F ? c : void 0);
6
+ return {
7
+ isFocusTarget: (n) => !!c?.isEqualTo(n),
8
+ setFocused: u,
9
+ focused: s,
10
+ blur: () => {
11
+ m(s), u(void 0);
12
+ },
13
+ moveFocus: (n, l) => {
14
+ if (!s)
15
+ return;
16
+ const t = v(n, l, s, o.navStart, o.navEnd, e, f);
17
+ t && (e.disableNavigation && !o.days.some((g) => g.isEqualTo(t)) || (o.goToDay(t), u(t)));
16
18
  }
17
- );
18
- });
19
- e.displayName = v;
20
- var h = e;
19
+ };
20
+ }
21
21
  export {
22
- e as Arrow,
23
- h as Root
22
+ I as useFocus
24
23
  };
25
24
  //# sourceMappingURL=index150.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index150.js","sources":["../../../node_modules/@radix-ui/react-arrow/dist/index.mjs"],"sourcesContent":["// src/arrow.tsx\nimport * as React from \"react\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { jsx } from \"react/jsx-runtime\";\nvar NAME = \"Arrow\";\nvar Arrow = React.forwardRef((props, forwardedRef) => {\n const { children, width = 10, height = 5, ...arrowProps } = props;\n return /* @__PURE__ */ jsx(\n Primitive.svg,\n {\n ...arrowProps,\n ref: forwardedRef,\n width,\n height,\n viewBox: \"0 0 30 10\",\n preserveAspectRatio: \"none\",\n children: props.asChild ? children : /* @__PURE__ */ jsx(\"polygon\", { points: \"0,0 30,0 15,10\" })\n }\n );\n});\nArrow.displayName = NAME;\nvar Root = Arrow;\nexport {\n Arrow,\n Root\n};\n//# sourceMappingURL=index.mjs.map\n"],"names":["NAME","Arrow","React","props","forwardedRef","children","width","height","arrowProps","jsx","Primitive","Root"],"mappings":";;;AAIA,IAAIA,IAAO,SACPC,IAAQC,EAAM,WAAW,CAACC,GAAOC,MAAiB;AACpD,QAAM,EAAE,UAAAC,GAAU,OAAAC,IAAQ,IAAI,QAAAC,IAAS,GAAG,GAAGC,EAAU,IAAKL;AAC5D,SAAuBM,gBAAAA,EAAAA;AAAAA,IACrBC,EAAU;AAAA,IACV;AAAA,MACE,GAAGF;AAAA,MACH,KAAKJ;AAAA,MACL,OAAAE;AAAA,MACA,QAAAC;AAAA,MACA,SAAS;AAAA,MACT,qBAAqB;AAAA,MACrB,UAAUJ,EAAM,UAAUE,IAA2BI,gBAAAA,EAAAA,IAAI,WAAW,EAAE,QAAQ,iBAAgB,CAAE;AAAA,IACtG;AAAA,EACA;AACA,CAAC;AACDR,EAAM,cAAcD;AACjB,IAACW,IAAOV;","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"index150.js","sources":["../../../node_modules/react-day-picker/dist/esm/useFocus.js"],"sourcesContent":["import { useState } from \"react\";\nimport { calculateFocusTarget } from \"./helpers/calculateFocusTarget.js\";\nimport { getNextFocus } from \"./helpers/getNextFocus.js\";\n/**\n * Manages focus behavior for the DayPicker component, including setting,\n * moving, and blurring focus on calendar days.\n *\n * @template T - The type of DayPicker props.\n * @param props - The DayPicker props.\n * @param calendar - The calendar object containing the displayed days and\n * months.\n * @param getModifiers - A function to retrieve modifiers for a given day.\n * @param isSelected - A function to check if a date is selected.\n * @param dateLib - The date utility library instance.\n * @returns An object containing focus-related methods and the currently focused\n * day.\n */\nexport function useFocus(props, calendar, getModifiers, isSelected, dateLib) {\n const { autoFocus } = props;\n const [lastFocused, setLastFocused] = useState();\n const focusTarget = calculateFocusTarget(calendar.days, getModifiers, isSelected || (() => false), lastFocused);\n const [focusedDay, setFocused] = useState(autoFocus ? focusTarget : undefined);\n const blur = () => {\n setLastFocused(focusedDay);\n setFocused(undefined);\n };\n const moveFocus = (moveBy, moveDir) => {\n if (!focusedDay)\n return;\n const nextFocus = getNextFocus(moveBy, moveDir, focusedDay, calendar.navStart, calendar.navEnd, props, dateLib);\n if (!nextFocus)\n return;\n if (props.disableNavigation) {\n const isNextInCalendar = calendar.days.some((day) => day.isEqualTo(nextFocus));\n if (!isNextInCalendar) {\n return;\n }\n }\n calendar.goToDay(nextFocus);\n setFocused(nextFocus);\n };\n const isFocusTarget = (day) => {\n return Boolean(focusTarget?.isEqualTo(day));\n };\n const useFocus = {\n isFocusTarget,\n setFocused,\n focused: focusedDay,\n blur,\n moveFocus,\n };\n return useFocus;\n}\n"],"names":["useFocus","props","calendar","getModifiers","isSelected","dateLib","autoFocus","lastFocused","setLastFocused","useState","focusTarget","calculateFocusTarget","focusedDay","setFocused","day","moveBy","moveDir","nextFocus","getNextFocus"],"mappings":";;;AAiBO,SAASA,EAASC,GAAOC,GAAUC,GAAcC,GAAYC,GAAS;AACzE,QAAM,EAAE,WAAAC,EAAS,IAAKL,GAChB,CAACM,GAAaC,CAAc,IAAIC,EAAQ,GACxCC,IAAcC,EAAqBT,EAAS,MAAMC,GAAcC,MAAe,MAAM,KAAQG,CAAW,GACxG,CAACK,GAAYC,CAAU,IAAIJ,EAASH,IAAYI,IAAc,MAAS;AA8B7E,SAPiB;AAAA,IACb,eAJkB,CAACI,MACZ,EAAQJ,GAAa,UAAUI,CAAG;AAAA,IAIzC,YAAAD;AAAA,IACA,SAASD;AAAA,IACT,MA1BS,MAAM;AACf,MAAAJ,EAAeI,CAAU,GACzBC,EAAW,MAAS;AAAA,IACxB;AAAA,IAwBI,WAvBc,CAACE,GAAQC,MAAY;AACnC,UAAI,CAACJ;AACD;AACJ,YAAMK,IAAYC,EAAaH,GAAQC,GAASJ,GAAYV,EAAS,UAAUA,EAAS,QAAQD,GAAOI,CAAO;AAC9G,MAAKY,MAEDhB,EAAM,qBAEF,CADqBC,EAAS,KAAK,KAAK,CAACY,MAAQA,EAAI,UAAUG,CAAS,CAAC,MAKjFf,EAAS,QAAQe,CAAS,GAC1BJ,EAAWI,CAAS;AAAA,IACxB;AAAA,EAUJ;AAEA;","x_google_ignoreList":[0]}
package/dist/index151.js CHANGED
@@ -1,28 +1,20 @@
1
- import * as h from "react";
2
- import { useLayoutEffect as z } from "./index65.js";
3
- function c(r) {
4
- const [d, e] = h.useState(void 0);
5
- return z(() => {
6
- if (r) {
7
- e({ width: r.offsetWidth, height: r.offsetHeight });
8
- const f = new ResizeObserver((i) => {
9
- if (!Array.isArray(i) || !i.length)
10
- return;
11
- const b = i[0];
12
- let o, t;
13
- if ("borderBoxSize" in b) {
14
- const s = b.borderBoxSize, u = Array.isArray(s) ? s[0] : s;
15
- o = u.inlineSize, t = u.blockSize;
16
- } else
17
- o = r.offsetWidth, t = r.offsetHeight;
18
- e({ width: o, height: t });
19
- });
20
- return f.observe(r, { box: "border-box" }), () => f.unobserve(r);
21
- } else
22
- e(void 0);
23
- }, [r]), d;
1
+ import { useMulti as i } from "./index261.js";
2
+ import { useRange as o } from "./index262.js";
3
+ import { useSingle as s } from "./index263.js";
4
+ function f(e, n) {
5
+ const t = s(e, n), r = i(e, n), u = o(e, n);
6
+ switch (e.mode) {
7
+ case "single":
8
+ return t;
9
+ case "multiple":
10
+ return r;
11
+ case "range":
12
+ return u;
13
+ default:
14
+ return;
15
+ }
24
16
  }
25
17
  export {
26
- c as useSize
18
+ f as useSelection
27
19
  };
28
20
  //# sourceMappingURL=index151.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index151.js","sources":["../../../node_modules/@radix-ui/react-use-size/dist/index.mjs"],"sourcesContent":["// packages/react/use-size/src/use-size.tsx\nimport * as React from \"react\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nfunction useSize(element) {\n const [size, setSize] = React.useState(void 0);\n useLayoutEffect(() => {\n if (element) {\n setSize({ width: element.offsetWidth, height: element.offsetHeight });\n const resizeObserver = new ResizeObserver((entries) => {\n if (!Array.isArray(entries)) {\n return;\n }\n if (!entries.length) {\n return;\n }\n const entry = entries[0];\n let width;\n let height;\n if (\"borderBoxSize\" in entry) {\n const borderSizeEntry = entry[\"borderBoxSize\"];\n const borderSize = Array.isArray(borderSizeEntry) ? borderSizeEntry[0] : borderSizeEntry;\n width = borderSize[\"inlineSize\"];\n height = borderSize[\"blockSize\"];\n } else {\n width = element.offsetWidth;\n height = element.offsetHeight;\n }\n setSize({ width, height });\n });\n resizeObserver.observe(element, { box: \"border-box\" });\n return () => resizeObserver.unobserve(element);\n } else {\n setSize(void 0);\n }\n }, [element]);\n return size;\n}\nexport {\n useSize\n};\n//# sourceMappingURL=index.mjs.map\n"],"names":["useSize","element","size","setSize","React","useLayoutEffect","resizeObserver","entries","entry","width","height","borderSizeEntry","borderSize"],"mappings":";;AAGA,SAASA,EAAQC,GAAS;AACxB,QAAM,CAACC,GAAMC,CAAO,IAAIC,EAAM,SAAS,MAAM;AAC7CC,SAAAA,EAAgB,MAAM;AACpB,QAAIJ,GAAS;AACX,MAAAE,EAAQ,EAAE,OAAOF,EAAQ,aAAa,QAAQA,EAAQ,cAAc;AACpE,YAAMK,IAAiB,IAAI,eAAe,CAACC,MAAY;AAIrD,YAHI,CAAC,MAAM,QAAQA,CAAO,KAGtB,CAACA,EAAQ;AACX;AAEF,cAAMC,IAAQD,EAAQ,CAAC;AACvB,YAAIE,GACAC;AACJ,YAAI,mBAAmBF,GAAO;AAC5B,gBAAMG,IAAkBH,EAAM,eACxBI,IAAa,MAAM,QAAQD,CAAe,IAAIA,EAAgB,CAAC,IAAIA;AACzE,UAAAF,IAAQG,EAAW,YACnBF,IAASE,EAAW;AAAA,QACtB;AACE,UAAAH,IAAQR,EAAQ,aAChBS,IAAST,EAAQ;AAEnB,QAAAE,EAAQ,EAAE,OAAAM,GAAO,QAAAC,GAAQ;AAAA,MAC3B,CAAC;AACD,aAAAJ,EAAe,QAAQL,GAAS,EAAE,KAAK,aAAY,CAAE,GAC9C,MAAMK,EAAe,UAAUL,CAAO;AAAA,IAC/C;AACE,MAAAE,EAAQ,MAAM;AAAA,EAElB,GAAG,CAACF,CAAO,CAAC,GACLC;AACT;","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"index151.js","sources":["../../../node_modules/react-day-picker/dist/esm/useSelection.js"],"sourcesContent":["import { useMulti } from \"./selection/useMulti.js\";\nimport { useRange } from \"./selection/useRange.js\";\nimport { useSingle } from \"./selection/useSingle.js\";\n/**\n * Determines the appropriate selection hook to use based on the selection mode\n * and returns the corresponding selection object.\n *\n * @template T - The type of DayPicker props.\n * @param props - The DayPicker props.\n * @param dateLib - The date utility library instance.\n * @returns The selection object for the specified mode, or `undefined` if no\n * mode is set.\n */\nexport function useSelection(props, dateLib) {\n const single = useSingle(props, dateLib);\n const multi = useMulti(props, dateLib);\n const range = useRange(props, dateLib);\n switch (props.mode) {\n case \"single\":\n return single;\n case \"multiple\":\n return multi;\n case \"range\":\n return range;\n default:\n return undefined;\n }\n}\n"],"names":["useSelection","props","dateLib","single","useSingle","multi","useMulti","range","useRange"],"mappings":";;;AAaO,SAASA,EAAaC,GAAOC,GAAS;AACzC,QAAMC,IAASC,EAAUH,GAAOC,CAAO,GACjCG,IAAQC,EAASL,GAAOC,CAAO,GAC/BK,IAAQC,EAASP,GAAOC,CAAO;AACrC,UAAQD,EAAM,MAAI;AAAA,IACd,KAAK;AACD,aAAOE;AAAA,IACX,KAAK;AACD,aAAOE;AAAA,IACX,KAAK;AACD,aAAOE;AAAA,IACX;AACI;AAAA,EACZ;AACA;","x_google_ignoreList":[0]}