@rpcbase/ui 0.287.0 → 0.289.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/assets/sha256.worker-DNtOSCbM.js.map +1 -0
- package/dist/components/FilesUploadField/index.d.ts.map +1 -1
- package/dist/index.js +12 -12
- package/dist/index10.js.map +1 -1
- package/dist/index100.js.map +1 -1
- package/dist/index101.js.map +1 -1
- package/dist/index102.js.map +1 -1
- package/dist/index103.js.map +1 -1
- package/dist/index104.js.map +1 -1
- package/dist/index105.js.map +1 -1
- package/dist/index106.js.map +1 -1
- package/dist/index107.js.map +1 -1
- package/dist/index108.js.map +1 -1
- package/dist/index109.js.map +1 -1
- package/dist/index11.js +96 -17
- package/dist/index11.js.map +1 -1
- package/dist/index110.js.map +1 -1
- package/dist/index111.js.map +1 -1
- package/dist/index112.js.map +1 -1
- package/dist/index113.js.map +1 -1
- package/dist/index114.js.map +1 -1
- package/dist/index115.js.map +1 -1
- package/dist/index116.js.map +1 -1
- package/dist/index117.js.map +1 -1
- package/dist/index118.js.map +1 -1
- package/dist/index119.js.map +1 -1
- package/dist/index12.js.map +1 -1
- package/dist/index120.js.map +1 -1
- package/dist/index121.js.map +1 -1
- package/dist/index122.js.map +1 -1
- package/dist/index123.js +1 -1
- package/dist/index123.js.map +1 -1
- package/dist/index124.js.map +1 -1
- package/dist/index125.js.map +1 -1
- package/dist/index126.js.map +1 -1
- package/dist/index127.js.map +1 -1
- package/dist/index128.js.map +1 -1
- package/dist/index129.js.map +1 -1
- package/dist/index13.js.map +1 -1
- package/dist/index130.js.map +1 -1
- package/dist/index131.js.map +1 -1
- package/dist/index132.js.map +1 -1
- package/dist/index133.js.map +1 -1
- package/dist/index134.js.map +1 -1
- package/dist/index135.js.map +1 -1
- package/dist/index136.js.map +1 -1
- package/dist/index137.js.map +1 -1
- package/dist/index138.js.map +1 -1
- package/dist/index139.js.map +1 -1
- package/dist/index14.js.map +1 -1
- package/dist/index140.js.map +1 -1
- package/dist/index141.js.map +1 -1
- package/dist/index142.js.map +1 -1
- package/dist/index143.js.map +1 -1
- package/dist/index144.js.map +1 -1
- package/dist/index145.js.map +1 -1
- package/dist/index146.js.map +1 -1
- package/dist/index147.js.map +1 -1
- package/dist/index148.js.map +1 -1
- package/dist/index149.js.map +1 -1
- package/dist/index15.js.map +1 -1
- package/dist/index150.js.map +1 -1
- package/dist/index151.js.map +1 -1
- package/dist/index152.js.map +1 -1
- package/dist/index153.js.map +1 -1
- package/dist/index154.js +4 -4
- package/dist/index154.js.map +1 -1
- package/dist/index155.js.map +1 -1
- package/dist/index156.js.map +1 -1
- package/dist/index157.js.map +1 -1
- package/dist/index158.js.map +1 -1
- package/dist/index159.js.map +1 -1
- package/dist/index16.js.map +1 -1
- package/dist/index160.js.map +1 -1
- package/dist/index161.js.map +1 -1
- package/dist/index162.js.map +1 -1
- package/dist/index163.js.map +1 -1
- package/dist/index164.js.map +1 -1
- package/dist/index165.js.map +1 -1
- package/dist/index166.js.map +1 -1
- package/dist/index167.js.map +1 -1
- package/dist/index168.js.map +1 -1
- package/dist/index169.js.map +1 -1
- package/dist/index17.js.map +1 -1
- package/dist/index170.js +18 -12
- package/dist/index170.js.map +1 -1
- package/dist/index171.js.map +1 -1
- package/dist/index172.js.map +1 -1
- package/dist/index173.js.map +1 -1
- package/dist/index174.js.map +1 -1
- package/dist/index175.js.map +1 -1
- package/dist/index176.js.map +1 -1
- package/dist/index177.js.map +1 -1
- package/dist/index178.js.map +1 -1
- package/dist/index179.js.map +1 -1
- package/dist/index18.js.map +1 -1
- package/dist/index180.js.map +1 -1
- package/dist/index181.js +1 -1
- package/dist/index181.js.map +1 -1
- package/dist/index182.js +3 -3
- package/dist/index182.js.map +1 -1
- package/dist/index183.js.map +1 -1
- package/dist/index184.js.map +1 -1
- package/dist/index185.js.map +1 -1
- package/dist/index186.js.map +1 -1
- package/dist/index187.js.map +1 -1
- package/dist/index188.js.map +1 -1
- package/dist/index189.js.map +1 -1
- package/dist/index19.js.map +1 -1
- package/dist/index190.js +9 -7
- package/dist/index190.js.map +1 -1
- package/dist/index191.js +4 -4
- package/dist/index191.js.map +1 -1
- package/dist/index192.js +4 -15
- package/dist/index192.js.map +1 -1
- package/dist/index193.js +13 -3
- package/dist/index193.js.map +1 -1
- package/dist/index194.js +2 -2
- package/dist/index194.js.map +1 -1
- package/dist/index195.js +4 -85
- package/dist/index195.js.map +1 -1
- package/dist/index196.js +79 -54
- package/dist/index196.js.map +1 -1
- package/dist/index197.js +68 -7
- package/dist/index197.js.map +1 -1
- package/dist/index198.js +3 -23
- package/dist/index198.js.map +1 -1
- package/dist/index199.js +6 -28
- package/dist/index199.js.map +1 -1
- package/dist/index20.js.map +1 -1
- package/dist/index200.js +4 -97
- package/dist/index200.js.map +1 -1
- package/dist/index201.js +3 -4
- package/dist/index201.js.map +1 -1
- package/dist/index202.js +23 -24
- package/dist/index202.js.map +1 -1
- package/dist/index203.js +28 -10
- package/dist/index203.js.map +1 -1
- package/dist/index204.js +97 -4
- package/dist/index204.js.map +1 -1
- package/dist/index205.js +4 -12
- package/dist/index205.js.map +1 -1
- package/dist/index206.js +22 -19
- package/dist/index206.js.map +1 -1
- package/dist/index207.js +4 -6
- package/dist/index207.js.map +1 -1
- package/dist/index208.js +4 -15
- package/dist/index208.js.map +1 -1
- package/dist/index209.js +10 -102
- package/dist/index209.js.map +1 -1
- package/dist/index210.js +21 -3
- package/dist/index210.js.map +1 -1
- package/dist/index211.js +5 -23
- package/dist/index211.js.map +1 -1
- package/dist/index212.js +15 -28
- package/dist/index212.js.map +1 -1
- package/dist/index213.js +101 -17
- package/dist/index213.js.map +1 -1
- package/dist/index214.js +3 -7
- package/dist/index214.js.map +1 -1
- package/dist/index215.js +24 -15
- package/dist/index215.js.map +1 -1
- package/dist/index216.js +27 -7
- package/dist/index216.js.map +1 -1
- package/dist/index217.js +17 -24
- package/dist/index217.js.map +1 -1
- package/dist/index218.js +6 -22
- package/dist/index218.js.map +1 -1
- package/dist/index219.js +15 -6
- package/dist/index219.js.map +1 -1
- package/dist/index220.js +8 -5
- package/dist/index220.js.map +1 -1
- package/dist/index221.js +27 -4
- package/dist/index221.js.map +1 -1
- package/dist/index222.js +23 -4
- package/dist/index222.js.map +1 -1
- package/dist/index223.js +6 -24
- package/dist/index223.js.map +1 -1
- package/dist/index224.js +5 -3
- package/dist/index224.js.map +1 -1
- package/dist/index225.js +4 -24
- package/dist/index225.js.map +1 -1
- package/dist/index226.js +4 -23
- package/dist/index226.js.map +1 -1
- package/dist/index227.js +23 -6
- package/dist/index227.js.map +1 -1
- package/dist/index228.js +22 -8
- package/dist/index228.js.map +1 -1
- package/dist/index229.js +3 -19
- package/dist/index229.js.map +1 -1
- package/dist/index23.js.map +1 -1
- package/dist/index230.js +22 -50
- package/dist/index230.js.map +1 -1
- package/dist/index231.js +7 -20
- package/dist/index231.js.map +1 -1
- package/dist/index232.js +9 -27
- package/dist/index232.js.map +1 -1
- package/dist/index233.js +17 -97
- package/dist/index233.js.map +1 -1
- package/dist/index234.js +50 -33
- package/dist/index234.js.map +1 -1
- package/dist/index235.js +20 -119
- package/dist/index235.js.map +1 -1
- package/dist/index236.js +28 -13
- package/dist/index236.js.map +1 -1
- package/dist/index237.js +98 -4
- package/dist/index237.js.map +1 -1
- package/dist/index238.js +33 -15
- package/dist/index238.js.map +1 -1
- package/dist/index239.js +116 -62
- package/dist/index239.js.map +1 -1
- package/dist/index24.js.map +1 -1
- package/dist/index240.js +13 -10
- package/dist/index240.js.map +1 -1
- package/dist/index241.js +4 -109
- package/dist/index241.js.map +1 -1
- package/dist/index242.js +14 -14
- package/dist/index242.js.map +1 -1
- package/dist/index243.js +64 -12
- package/dist/index243.js.map +1 -1
- package/dist/index244.js +10 -5
- package/dist/index244.js.map +1 -1
- package/dist/index245.js +104 -318
- package/dist/index245.js.map +1 -1
- package/dist/index246.js +14 -66
- package/dist/index246.js.map +1 -1
- package/dist/index247.js +12 -232
- package/dist/index247.js.map +1 -1
- package/dist/index248.js +4 -270
- package/dist/index248.js.map +1 -1
- package/dist/index249.js +313 -309
- package/dist/index249.js.map +1 -1
- package/dist/index25.js.map +1 -1
- package/dist/index250.js +60 -171
- package/dist/index250.js.map +1 -1
- package/dist/index251.js +252 -8
- package/dist/index251.js.map +1 -1
- package/dist/index252.js +268 -41
- package/dist/index252.js.map +1 -1
- package/dist/index253.js +316 -47
- package/dist/index253.js.map +1 -1
- package/dist/index254.js +179 -9
- package/dist/index254.js.map +1 -1
- package/dist/index255.js +6 -50
- package/dist/index255.js.map +1 -1
- package/dist/index256.js +41 -51
- package/dist/index256.js.map +1 -1
- package/dist/index257.js +50 -7
- package/dist/index257.js.map +1 -1
- package/dist/index258.js +9 -10
- package/dist/index258.js.map +1 -1
- package/dist/index259.js +51 -61
- package/dist/index259.js.map +1 -1
- package/dist/index26.js.map +1 -1
- package/dist/index260.js +53 -42
- package/dist/index260.js.map +1 -1
- package/dist/index261.js +9 -97
- package/dist/index261.js.map +1 -1
- package/dist/index262.js +31 -47
- package/dist/index262.js.map +1 -1
- package/dist/index263.js +61 -36
- package/dist/index263.js.map +1 -1
- package/dist/index264.js +43 -47
- package/dist/index264.js.map +1 -1
- package/dist/index265.js +92 -46
- package/dist/index265.js.map +1 -1
- package/dist/index266.js +48 -20
- package/dist/index266.js.map +1 -1
- package/dist/index267.js +33 -176
- package/dist/index267.js.map +1 -1
- package/dist/index268.js +49 -48
- package/dist/index268.js.map +1 -1
- package/dist/index269.js +68 -15
- package/dist/index269.js.map +1 -1
- package/dist/index27.js.map +1 -1
- package/dist/index270.js +20 -65
- package/dist/index270.js.map +1 -1
- package/dist/index271.js +202 -9
- package/dist/index271.js.map +1 -1
- package/dist/index272.js +48 -40
- package/dist/index272.js.map +1 -1
- package/dist/index273.js +60 -91
- package/dist/index273.js.map +1 -1
- package/dist/index274.js +9 -278
- package/dist/index274.js.map +1 -1
- package/dist/index275.js +38 -55
- package/dist/index275.js.map +1 -1
- package/dist/index276.js +91 -10
- package/dist/index276.js.map +1 -1
- package/dist/index277.js +278 -12
- package/dist/index277.js.map +1 -1
- package/dist/index278.js +58 -11
- package/dist/index278.js.map +1 -1
- package/dist/index279.js +11 -64
- package/dist/index279.js.map +1 -1
- package/dist/index28.js +5 -5
- package/dist/index28.js.map +1 -1
- package/dist/index280.js +12 -6
- package/dist/index280.js.map +1 -1
- package/dist/index281.js +3 -25
- package/dist/index281.js.map +1 -1
- package/dist/index282.js +3 -25
- package/dist/index282.js.map +1 -1
- package/dist/index283.js +12 -126
- package/dist/index283.js.map +1 -1
- package/dist/index284.js +63 -51
- package/dist/index284.js.map +1 -1
- package/dist/index285.js +5 -60
- package/dist/index285.js.map +1 -1
- package/dist/index286.js +24 -48
- package/dist/index286.js.map +1 -1
- package/dist/index287.js +24 -6
- package/dist/index287.js.map +1 -1
- package/dist/index288.js +125 -14
- package/dist/index288.js.map +1 -1
- package/dist/index289.js +51 -16
- package/dist/index289.js.map +1 -1
- package/dist/index29.js +5 -7
- package/dist/index29.js.map +1 -1
- package/dist/index290.js +56 -11
- package/dist/index290.js.map +1 -1
- package/dist/index291.js +47 -24
- package/dist/index291.js.map +1 -1
- package/dist/index292.js +7 -51
- package/dist/index292.js.map +1 -1
- package/dist/index293.js +15 -6
- package/dist/index293.js.map +1 -1
- package/dist/index294.js +18 -148
- package/dist/index294.js.map +1 -1
- package/dist/index295.js +12 -59
- package/dist/index295.js.map +1 -1
- package/dist/index296.js +25 -120
- package/dist/index296.js.map +1 -1
- package/dist/index297.js +54 -15
- package/dist/index297.js.map +1 -1
- package/dist/index298.js +5 -866
- package/dist/index298.js.map +1 -1
- package/dist/index299.js +148 -28
- package/dist/index299.js.map +1 -1
- package/dist/index3.js.map +1 -1
- package/dist/index30.js +6 -8
- package/dist/index30.js.map +1 -1
- package/dist/index300.js +55 -512
- package/dist/index300.js.map +1 -1
- package/dist/index301.js +111 -794
- package/dist/index301.js.map +1 -1
- package/dist/index302.js +14 -7436
- package/dist/index302.js.map +1 -1
- package/dist/index303.js +862 -6
- package/dist/index303.js.map +1 -1
- package/dist/index304.js +28 -12
- package/dist/index304.js.map +1 -1
- package/dist/index305.js +515 -5
- package/dist/index305.js.map +1 -1
- package/dist/index306.js +803 -5
- package/dist/index306.js.map +1 -1
- package/dist/index307.js +7426 -468
- package/dist/index307.js.map +1 -1
- package/dist/index308.js +6 -37
- package/dist/index308.js.map +1 -1
- package/dist/index309.js +12 -19
- package/dist/index309.js.map +1 -1
- package/dist/index31.js +5 -11
- package/dist/index31.js.map +1 -1
- package/dist/index310.js +5 -30
- package/dist/index310.js.map +1 -1
- package/dist/index311.js +5 -4
- package/dist/index311.js.map +1 -1
- package/dist/index312.js +461 -51
- package/dist/index312.js.map +1 -1
- package/dist/index313.js +36 -10
- package/dist/index313.js.map +1 -1
- package/dist/index314.js +19 -5
- package/dist/index314.js.map +1 -1
- package/dist/index315.js +29 -8
- package/dist/index315.js.map +1 -1
- package/dist/index316.js +4 -12
- package/dist/index316.js.map +1 -1
- package/dist/index317.js +60 -3
- package/dist/index317.js.map +1 -1
- package/dist/index318.js +10 -15
- package/dist/index318.js.map +1 -1
- package/dist/index319.js +5 -25
- package/dist/index319.js.map +1 -1
- package/dist/index32.js +5 -5
- package/dist/index32.js.map +1 -1
- package/dist/index320.js +9 -41
- package/dist/index320.js.map +1 -1
- package/dist/index321.js +11 -4
- package/dist/index321.js.map +1 -1
- package/dist/index322.js +3 -26
- package/dist/index322.js.map +1 -1
- package/dist/index323.js +15 -18
- package/dist/index323.js.map +1 -1
- package/dist/index324.js +22 -31
- package/dist/index324.js.map +1 -1
- package/dist/index325.js +41 -5
- package/dist/index325.js.map +1 -1
- package/dist/index326.js +4 -8
- package/dist/index326.js.map +1 -1
- package/dist/index327.js +25 -8
- package/dist/index327.js.map +1 -1
- package/dist/index328.js +19 -9
- package/dist/index328.js.map +1 -1
- package/dist/index329.js +34 -10
- package/dist/index329.js.map +1 -1
- package/dist/index33.js +9 -6
- package/dist/index33.js.map +1 -1
- package/dist/index330.js +5 -7
- package/dist/index330.js.map +1 -1
- package/dist/index331.js +9 -75
- package/dist/index331.js.map +1 -1
- package/dist/index332.js +8 -162
- package/dist/index332.js.map +1 -1
- package/dist/index333.js +9 -114
- package/dist/index333.js.map +1 -1
- package/dist/index334.js +10 -14
- package/dist/index334.js.map +1 -1
- package/dist/index335.js +7 -80
- package/dist/index335.js.map +1 -1
- package/dist/index336.js +68 -39
- package/dist/index336.js.map +1 -1
- package/dist/index337.js +160 -11
- package/dist/index337.js.map +1 -1
- package/dist/index338.js +113 -15
- package/dist/index338.js.map +1 -1
- package/dist/index339.js +13 -100
- package/dist/index339.js.map +1 -1
- package/dist/index34.js +6 -6
- package/dist/index34.js.map +1 -1
- package/dist/index340.js +73 -49
- package/dist/index340.js.map +1 -1
- package/dist/index341.js +34 -96
- package/dist/index341.js.map +1 -1
- package/dist/index342.js +12 -70
- package/dist/index342.js.map +1 -1
- package/dist/index343.js +14 -111
- package/dist/index343.js.map +1 -1
- package/dist/index344.js +94 -48
- package/dist/index344.js.map +1 -1
- package/dist/index345.js +50 -37
- package/dist/index345.js.map +1 -1
- package/dist/index346.js +89 -125
- package/dist/index346.js.map +1 -1
- package/dist/index347.js +52 -123
- package/dist/index347.js.map +1 -1
- package/dist/index348.js +54 -197
- package/dist/index348.js.map +1 -1
- package/dist/index349.js +44 -229
- package/dist/index349.js.map +1 -1
- package/dist/index35.js +9 -9
- package/dist/index35.js.map +1 -1
- package/dist/index350.js +42 -308
- package/dist/index350.js.map +1 -1
- package/dist/index351.js +144 -5
- package/dist/index351.js.map +1 -1
- package/dist/index352.js +142 -6
- package/dist/index352.js.map +1 -1
- package/dist/index353.js +257 -7
- package/dist/index353.js.map +1 -1
- package/dist/index354.js +241 -6
- package/dist/index354.js.map +1 -1
- package/dist/index355.js +309 -6
- package/dist/index355.js.map +1 -1
- package/dist/index356.js +5 -21
- package/dist/index356.js.map +1 -1
- package/dist/index357.js +6 -10
- package/dist/index357.js.map +1 -1
- package/dist/index358.js +7 -128
- package/dist/index358.js.map +1 -1
- package/dist/index359.js +6 -42
- package/dist/index359.js.map +1 -1
- package/dist/index36.js +12 -7
- package/dist/index36.js.map +1 -1
- package/dist/index360.js +6 -68
- package/dist/index360.js.map +1 -1
- package/dist/index361.js +20 -116
- package/dist/index361.js.map +1 -1
- package/dist/index362.js +10 -490
- package/dist/index362.js.map +1 -1
- package/dist/index363.js +128 -7
- package/dist/index363.js.map +1 -1
- package/dist/index364.js +42 -13
- package/dist/index364.js.map +1 -1
- package/dist/index365.js +67 -3
- package/dist/index365.js.map +1 -1
- package/dist/index366.js +115 -45
- package/dist/index366.js.map +1 -1
- package/dist/index367.js +490 -11
- package/dist/index367.js.map +1 -1
- package/dist/index368.js +8 -26
- package/dist/index368.js.map +1 -1
- package/dist/index369.js +12 -41
- package/dist/index369.js.map +1 -1
- package/dist/index37.js +13 -5
- package/dist/index37.js.map +1 -1
- package/dist/index370.js +4 -36
- package/dist/index370.js.map +1 -1
- package/dist/index371.js +45 -15
- package/dist/index371.js.map +1 -1
- package/dist/index372.js +24 -41
- package/dist/index372.js.map +1 -1
- package/dist/index373.js +3 -12
- package/dist/index373.js.map +1 -1
- package/dist/index374.js +27 -11
- package/dist/index374.js.map +1 -1
- package/dist/index375.js +40 -50
- package/dist/index375.js.map +1 -1
- package/dist/index376.js +37 -40
- package/dist/index376.js.map +1 -1
- package/dist/index377.js +12 -10
- package/dist/index377.js.map +1 -1
- package/dist/index378.js +40 -4
- package/dist/index378.js.map +1 -1
- package/dist/index379.js +7 -4
- package/dist/index379.js.map +1 -1
- package/dist/index38.js +5 -5
- package/dist/index38.js.map +1 -1
- package/dist/index380.js +29 -8
- package/dist/index380.js.map +1 -1
- package/dist/index381.js +9 -303
- package/dist/index381.js.map +1 -1
- package/dist/index382.js +57 -4
- package/dist/index382.js.map +1 -1
- package/dist/index383.js +40 -22
- package/dist/index383.js.map +1 -1
- package/dist/index384.js +15 -105
- package/dist/index384.js.map +1 -1
- package/dist/index385.js +5 -22
- package/dist/index385.js.map +1 -1
- package/dist/index386.js +10 -22
- package/dist/index386.js.map +1 -1
- package/dist/index387.js +289 -16
- package/dist/index387.js.map +1 -1
- package/dist/index388.js +4 -12
- package/dist/index388.js.map +1 -1
- package/dist/index389.js +20 -112
- package/dist/index389.js.map +1 -1
- package/dist/index39.js +6 -10
- package/dist/index39.js.map +1 -1
- package/dist/index390.js +3 -9
- package/dist/index390.js.map +1 -1
- package/dist/index391.js +104 -27
- package/dist/index391.js.map +1 -1
- package/dist/index392.js +20 -9
- package/dist/index392.js.map +1 -1
- package/dist/index393.js +20 -6
- package/dist/index393.js.map +1 -1
- package/dist/index394.js +14 -253
- package/dist/index394.js.map +1 -1
- package/dist/index395.js +12 -10
- package/dist/index395.js.map +1 -1
- package/dist/index396.js +117 -11
- package/dist/index396.js.map +1 -1
- package/dist/index397.js +8 -6
- package/dist/index397.js.map +1 -1
- package/dist/index398.js +32 -22
- package/dist/index398.js.map +1 -1
- package/dist/index399.js +9 -23
- package/dist/index399.js.map +1 -1
- package/dist/index4.js.map +1 -1
- package/dist/index40.js +8 -11
- package/dist/index40.js.map +1 -1
- package/dist/index400.js +6 -105
- package/dist/index400.js.map +1 -1
- package/dist/index401.js +3 -15
- package/dist/index401.js.map +1 -1
- package/dist/index402.js +251 -10
- package/dist/index402.js.map +1 -1
- package/dist/index403.js +9 -7
- package/dist/index403.js.map +1 -1
- package/dist/index404.js +11 -239
- package/dist/index404.js.map +1 -1
- package/dist/index405.js +7 -28
- package/dist/index405.js.map +1 -1
- package/dist/index406.js +21 -37
- package/dist/index406.js.map +1 -1
- package/dist/index407.js +21 -10
- package/dist/index407.js.map +1 -1
- package/dist/index408.js +97 -117
- package/dist/index408.js.map +1 -1
- package/dist/index409.js +15 -40
- package/dist/index409.js.map +1 -1
- package/dist/index41.js +6 -7
- package/dist/index41.js.map +1 -1
- package/dist/index410.js +11 -25
- package/dist/index410.js.map +1 -1
- package/dist/index411.js +7 -9
- package/dist/index411.js.map +1 -1
- package/dist/index412.js +3 -24
- package/dist/index412.js.map +1 -1
- package/dist/index413.js +226 -15
- package/dist/index413.js.map +1 -1
- package/dist/index414.js +24 -11
- package/dist/index414.js.map +1 -1
- package/dist/index415.js +38 -4
- package/dist/index415.js.map +1 -1
- package/dist/index416.js +11 -324
- package/dist/index416.js.map +1 -1
- package/dist/index417.js +119 -62
- package/dist/index417.js.map +1 -1
- package/dist/index418.js +42 -4
- package/dist/index418.js.map +1 -1
- package/dist/index419.js +25 -28
- package/dist/index419.js.map +1 -1
- package/dist/index42.js +6 -4
- package/dist/index42.js.map +1 -1
- package/dist/index420.js +11 -470
- package/dist/index420.js.map +1 -1
- package/dist/index421.js +23 -268
- package/dist/index421.js.map +1 -1
- package/dist/index422.js +24 -0
- package/dist/index422.js.map +1 -0
- package/dist/index423.js +17 -0
- package/dist/index423.js.map +1 -0
- package/dist/index424.js +8 -0
- package/dist/index424.js.map +1 -0
- package/dist/index425.js +328 -0
- package/dist/index425.js.map +1 -0
- package/dist/index426.js +66 -0
- package/dist/index426.js.map +1 -0
- package/dist/index427.js +7 -0
- package/dist/index427.js.map +1 -0
- package/dist/index428.js +31 -0
- package/dist/index428.js.map +1 -0
- package/dist/index429.js +474 -0
- package/dist/index429.js.map +1 -0
- package/dist/index43.js +68 -7
- package/dist/index43.js.map +1 -1
- package/dist/index430.js +272 -0
- package/dist/index430.js.map +1 -0
- package/dist/index44.js +7 -6
- package/dist/index44.js.map +1 -1
- package/dist/index45.js +31 -7
- package/dist/index45.js.map +1 -1
- package/dist/index46.js +10 -10
- package/dist/index46.js.map +1 -1
- package/dist/index47.js +15 -13
- package/dist/index47.js.map +1 -1
- package/dist/index48.js +201 -7
- package/dist/index48.js.map +1 -1
- package/dist/index49.js +20 -6
- package/dist/index49.js.map +1 -1
- package/dist/index5.js.map +1 -1
- package/dist/index50.js +16 -6
- package/dist/index50.js.map +1 -1
- package/dist/index51.js +123 -14
- package/dist/index51.js.map +1 -1
- package/dist/index52.js +19 -8
- package/dist/index52.js.map +1 -1
- package/dist/index53.js +5 -7
- package/dist/index53.js.map +1 -1
- package/dist/index54.js +9 -68
- package/dist/index54.js.map +1 -1
- package/dist/index55.js +7 -7
- package/dist/index55.js.map +1 -1
- package/dist/index56.js +9 -31
- package/dist/index56.js.map +1 -1
- package/dist/index57.js +13 -10
- package/dist/index57.js.map +1 -1
- package/dist/index58.js +8 -15
- package/dist/index58.js.map +1 -1
- package/dist/index59.js +10 -201
- package/dist/index59.js.map +1 -1
- package/dist/index6.js.map +1 -1
- package/dist/index60.js +13 -20
- package/dist/index60.js.map +1 -1
- package/dist/index61.js +9 -16
- package/dist/index61.js.map +1 -1
- package/dist/index62.js +10 -123
- package/dist/index62.js.map +1 -1
- package/dist/index63.js +5 -19
- package/dist/index63.js.map +1 -1
- package/dist/index64.js +42 -9
- package/dist/index64.js.map +1 -1
- package/dist/index65.js +387 -9
- package/dist/index65.js.map +1 -1
- package/dist/index66.js +37 -14
- package/dist/index66.js.map +1 -1
- package/dist/index67.js +21 -9
- package/dist/index67.js.map +1 -1
- package/dist/index68.js +4 -9
- package/dist/index68.js.map +1 -1
- package/dist/index69.js +6 -4
- package/dist/index69.js.map +1 -1
- package/dist/index7.js +3 -3
- package/dist/index7.js.map +1 -1
- package/dist/index70.js +57 -41
- package/dist/index70.js.map +1 -1
- package/dist/index71.js +5 -387
- package/dist/index71.js.map +1 -1
- package/dist/index72.js +6 -37
- package/dist/index72.js.map +1 -1
- package/dist/index73.js +5 -21
- package/dist/index73.js.map +1 -1
- package/dist/index74.js +4 -56
- package/dist/index74.js.map +1 -1
- package/dist/index75.js +7 -7
- package/dist/index75.js.map +1 -1
- package/dist/index76.js +6 -5
- package/dist/index76.js.map +1 -1
- package/dist/index77.js +6 -5
- package/dist/index77.js.map +1 -1
- package/dist/index78.js +11 -5
- package/dist/index78.js.map +1 -1
- package/dist/index79.js +11 -5
- package/dist/index79.js.map +1 -1
- package/dist/index8.js.map +1 -1
- package/dist/index80.js +7 -6
- package/dist/index80.js.map +1 -1
- package/dist/index81.js +10 -6
- package/dist/index81.js.map +1 -1
- package/dist/index82.js +5 -8
- package/dist/index82.js.map +1 -1
- package/dist/index83.js +6 -7
- package/dist/index83.js.map +1 -1
- package/dist/index84.js.map +1 -1
- package/dist/index85.js.map +1 -1
- package/dist/index86.js.map +1 -1
- package/dist/index87.js +2 -2
- package/dist/index87.js.map +1 -1
- package/dist/index88.js +31 -31
- package/dist/index88.js.map +1 -1
- package/dist/index89.js +1 -1
- package/dist/index89.js.map +1 -1
- package/dist/index9.js.map +1 -1
- package/dist/index90.js.map +1 -1
- package/dist/index91.js.map +1 -1
- package/dist/index92.js.map +1 -1
- package/dist/index93.js.map +1 -1
- package/dist/index94.js.map +1 -1
- package/dist/index95.js.map +1 -1
- package/dist/index96.js.map +1 -1
- package/dist/index97.js.map +1 -1
- package/dist/index98.js.map +1 -1
- package/dist/index99.js.map +1 -1
- package/package.json +13 -13
- package/dist/assets/sha256.worker-BEf4_Y9w.js.map +0 -1
package/dist/index298.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index298.js","names":["{\n item,\n isHovered,\n enableImagePreview,\n renderItem,\n onHoverEnter,\n onHoverLeave,\n onRemove,\n onRetry,\n startFullscreen,\n isUploading,\n isError,\n tileClasses,\n disabled,\n isDraggingExternal,\n removeButtonAriaLabel,\n}: {\n item: FileWithState\n isHovered: boolean\n enableImagePreview: boolean\n renderItem?: (props: FilesUploadFieldRenderItemProps) => ReactNode\n onHoverEnter: () => void\n onHoverLeave: () => void\n onRemove: (id: string) => void\n onRetry: (id: string) => void\n startFullscreen: (id: string) => void\n isUploading: boolean\n isError: boolean\n tileClasses: string\n disabled: boolean\n isDraggingExternal: boolean\n removeButtonAriaLabel: string\n}","{\n id: item.id,\n disabled,\n }","id","() => {\n const el = tileRef.current\n if (!el) return\n const rect = el.getBoundingClientRect()\n setPreviewPosition({ left: rect.left + rect.width / 2, top: rect.top - 10 })\n }","() => {\n if (!enableImagePreview || !isHovered) {\n setPreviewPosition(null)\n return\n }\n\n updatePreviewPosition()\n\n let raf = 0\n const schedule = () => {\n if (raf) cancelAnimationFrame(raf)\n raf = requestAnimationFrame(() => {\n raf = 0\n updatePreviewPosition()\n })\n }\n\n window.addEventListener(\"resize\", schedule)\n window.addEventListener(\"scroll\", schedule, true)\n return () => {\n if (raf) cancelAnimationFrame(raf)\n window.removeEventListener(\"resize\", schedule)\n window.removeEventListener(\"scroll\", schedule, true)\n }\n }","[enableImagePreview, isHovered]","CSS.Transform.toString(transform)","{\n transform: CSS.Transform.toString(transform),\n transition,\n }","renderItem\n ? renderItem({\n file: { id: item.id, url: item.url, alt: item.alt, uploadKey: item.uploadKey },\n previewUrl: item.previewUrl,\n status: item.status,\n progress: item.progress,\n fileName: item.fileName,\n })\n : enableImagePreview\n ? (\n <Image\n src={item.previewUrl}\n alt={item.alt ?? \"Uploaded file\"}\n sizes=\"96px\"\n className={cn(\n \"size-full rounded-md object-cover\",\n isUploading && \"opacity-75\",\n isError && \"grayscale\"\n )}\n />\n )\n : (\n <div className=\"flex size-full items-center justify-center rounded-md bg-slate-100 px-2 text-center text-[10px] font-medium text-slate-700 dark:bg-slate-800 dark:text-slate-200\">\n <span className=\"w-full truncate\">{item.fileName ?? item.alt ?? \"Fichier\"}</span>\n </div>\n )","alt","fileName","previewUrl","progress","status","uploadKey","url","(node) => {\n tileRef.current = node\n setNodeRef(node)\n }","cn(\n tileClasses,\n isDragging && \"z-20 ring-2 ring-primary shadow-xl\",\n isDraggingExternal && \"opacity-0\",\n !disabled && \"cursor-grab active:cursor-grabbing\",\n isDragging && \"cursor-grabbing\",\n disabled && \"cursor-default\"\n )","isDraggingExternal && \"opacity-0\"","!disabled && \"cursor-grab active:cursor-grabbing\"","isDragging && \"cursor-grabbing\"","disabled && \"cursor-default\"","isDragging && \"z-20 ring-2 ring-primary shadow-xl\"","() => {\n updatePreviewPosition()\n onHoverEnter()\n }","(event) => {\n const next = event.relatedTarget\n if (next instanceof Node && previewRef.current?.contains(next)) return\n onHoverLeave()\n }","() => {\n if (disabled) return\n onRemove(item.id)\n }","<X className=\"h-4 w-4\" />","<button\n type=\"button\"\n onClick={() => {\n if (disabled) return\n onRemove(item.id)\n }}\n disabled={disabled}\n className=\"absolute right-1 top-1 inline-flex size-6 items-center justify-center rounded-full bg-white text-slate-700 shadow-sm transition hover:scale-105 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary dark:bg-slate-900 dark:text-slate-200\"\n aria-label={removeButtonAriaLabel}\n >\n <X className=\"h-4 w-4\" />\n </button>","enableImagePreview &&\n isHovered &&\n previewPosition &&\n (() => {\n const preview = (\n <>\n <div\n ref={previewRef}\n className=\"pointer-events-auto fixed z-[60] w-52 -translate-x-1/2 -translate-y-full rounded-xl border border-slate-200 bg-white/95 p-3 shadow-2xl backdrop-blur dark:border-slate-700 dark:bg-slate-900/95\"\n style={{ left: previewPosition.left, top: previewPosition.top }}\n onMouseEnter={() => {\n updatePreviewPosition()\n onHoverEnter()\n }}\n onMouseLeave={(event) => {\n const next = event.relatedTarget\n if (next instanceof Node && tileRef.current?.contains(next)) return\n onHoverLeave()\n }}\n >\n <div className=\"relative overflow-hidden rounded-lg\">\n <Image src={item.url} alt={item.alt ?? \"Preview\"} sizes=\"208px\" className=\"h-40 w-full object-cover\" />\n <button\n type=\"button\"\n onClick={() => startFullscreen(item.id)}\n className=\"absolute right-2 top-2 inline-flex items-center justify-center rounded-full bg-black/70 p-2 text-white transition hover:bg-black\"\n aria-label=\"Plein écran\"\n >\n <Maximize2 className=\"h-3.5 w-3.5\" />\n </button>\n </div>\n </div>\n </>\n )\n\n if (typeof document === \"undefined\") return preview\n return createPortal(preview, document.body)\n })()","next","event","isUploading && (\n <div\n className=\"absolute inset-0 z-20 flex flex-col items-center justify-center gap-2 rounded-lg bg-black/40 text-white\"\n role=\"progressbar\"\n aria-label={item.fileName ?? item.alt ?? \"File\"}\n aria-valuemin={0}\n aria-valuemax={100}\n aria-valuenow={item.progress}\n >\n <Loader2 className=\"h-5 w-5 animate-spin\" aria-hidden=\"true\" />\n <div className=\"h-1.5 w-5/6 rounded-full bg-white/20\">\n <div className=\"h-full rounded-full bg-primary\" style={{ width: `${item.progress}%` }} />\n </div>\n <div className=\"text-xs font-semibold\">{item.progress}%</div>\n </div>\n )","isError && (\n <div\n className=\"absolute inset-0 z-10 flex flex-col items-center justify-center gap-2 rounded-lg bg-red-600/70 text-white\"\n role=\"alert\"\n >\n <div className=\"max-w-[92%] break-words text-center text-[10px] font-semibold leading-tight\" title={item.errorMessage}>\n {getErrorLabel(item.errorMessage)}\n </div>\n <button\n type=\"button\"\n onClick={() => onRetry(item.id)}\n disabled={disabled}\n className=\"rounded-full bg-white/90 px-3 py-1 text-xs font-semibold text-red-700 shadow-sm transition hover:bg-white focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-white\"\n >\n Réessayer\n </button>\n </div>\n )","errorMessage","<div\n ref={(node) => {\n tileRef.current = node\n setNodeRef(node)\n }}\n style={style}\n className={cn(\n tileClasses,\n isDragging && \"z-20 ring-2 ring-primary shadow-xl\",\n isDraggingExternal && \"opacity-0\",\n !disabled && \"cursor-grab active:cursor-grabbing\",\n isDragging && \"cursor-grabbing\",\n disabled && \"cursor-default\"\n )}\n onMouseEnter={() => {\n updatePreviewPosition()\n onHoverEnter()\n }}\n onMouseLeave={(event) => {\n const next = event.relatedTarget\n if (next instanceof Node && previewRef.current?.contains(next)) return\n onHoverLeave()\n }}\n {...attributes}\n {...listeners}\n >\n {tileContent}\n\n <button\n type=\"button\"\n onClick={() => {\n if (disabled) return\n onRemove(item.id)\n }}\n disabled={disabled}\n className=\"absolute right-1 top-1 inline-flex size-6 items-center justify-center rounded-full bg-white text-slate-700 shadow-sm transition hover:scale-105 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary dark:bg-slate-900 dark:text-slate-200\"\n aria-label={removeButtonAriaLabel}\n >\n <X className=\"h-4 w-4\" />\n </button>\n\n {enableImagePreview &&\n isHovered &&\n previewPosition &&\n (() => {\n const preview = (\n <>\n <div\n ref={previewRef}\n className=\"pointer-events-auto fixed z-[60] w-52 -translate-x-1/2 -translate-y-full rounded-xl border border-slate-200 bg-white/95 p-3 shadow-2xl backdrop-blur dark:border-slate-700 dark:bg-slate-900/95\"\n style={{ left: previewPosition.left, top: previewPosition.top }}\n onMouseEnter={() => {\n updatePreviewPosition()\n onHoverEnter()\n }}\n onMouseLeave={(event) => {\n const next = event.relatedTarget\n if (next instanceof Node && tileRef.current?.contains(next)) return\n onHoverLeave()\n }}\n >\n <div className=\"relative overflow-hidden rounded-lg\">\n <Image src={item.url} alt={item.alt ?? \"Preview\"} sizes=\"208px\" className=\"h-40 w-full object-cover\" />\n <button\n type=\"button\"\n onClick={() => startFullscreen(item.id)}\n className=\"absolute right-2 top-2 inline-flex items-center justify-center rounded-full bg-black/70 p-2 text-white transition hover:bg-black\"\n aria-label=\"Plein écran\"\n >\n <Maximize2 className=\"h-3.5 w-3.5\" />\n </button>\n </div>\n </div>\n </>\n )\n\n if (typeof document === \"undefined\") return preview\n return createPortal(preview, document.body)\n })()}\n\n {isUploading && (\n <div\n className=\"absolute inset-0 z-20 flex flex-col items-center justify-center gap-2 rounded-lg bg-black/40 text-white\"\n role=\"progressbar\"\n aria-label={item.fileName ?? item.alt ?? \"File\"}\n aria-valuemin={0}\n aria-valuemax={100}\n aria-valuenow={item.progress}\n >\n <Loader2 className=\"h-5 w-5 animate-spin\" aria-hidden=\"true\" />\n <div className=\"h-1.5 w-5/6 rounded-full bg-white/20\">\n <div className=\"h-full rounded-full bg-primary\" style={{ width: `${item.progress}%` }} />\n </div>\n <div className=\"text-xs font-semibold\">{item.progress}%</div>\n </div>\n )}\n\n {isError && (\n <div\n className=\"absolute inset-0 z-10 flex flex-col items-center justify-center gap-2 rounded-lg bg-red-600/70 text-white\"\n role=\"alert\"\n >\n <div className=\"max-w-[92%] break-words text-center text-[10px] font-semibold leading-tight\" title={item.errorMessage}>\n {getErrorLabel(item.errorMessage)}\n </div>\n <button\n type=\"button\"\n onClick={() => onRetry(item.id)}\n disabled={disabled}\n className=\"rounded-full bg-white/90 px-3 py-1 text-xs font-semibold text-red-700 shadow-sm transition hover:bg-white focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-white\"\n >\n Réessayer\n </button>\n </div>\n )}\n </div>"],"sources":["../src/components/FilesUploadField/index.tsx"],"sourcesContent":["import { useEffect, useMemo, useRef, useState, type ReactNode } from \"react\"\nimport { createPortal } from \"react-dom\"\nimport type { DragEndEvent, DragStartEvent, DropAnimation } from \"@dnd-kit/core\"\nimport {\n DndContext,\n DragOverlay,\n KeyboardSensor,\n PointerSensor,\n closestCenter,\n defaultDropAnimationSideEffects,\n useSensor,\n useSensors,\n} from \"@dnd-kit/core\"\nimport {\n SortableContext,\n arrayMove,\n rectSortingStrategy,\n sortableKeyboardCoordinates,\n useSortable,\n} from \"@dnd-kit/sortable\"\nimport { CSS } from \"@dnd-kit/utilities\"\nimport { Loader2, Maximize2, Plus, X } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nimport { Image, getImageSrcSet, isRpcbaseFileImageSrc, withImageWidth } from \"../Image\"\nimport Sha256Worker from \"./sha256.worker.ts?worker&inline\"\n\n\nexport type FilesUploadFieldFile = {\n id: string\n url: string\n alt?: string\n uploadKey?: string\n}\n\ntype FileUploadsInitResponse = {\n ok: boolean\n error?: string\n uploadId?: string\n uploadKey?: string\n chunkSize?: number\n chunksTotal?: number\n fileId?: string\n deduplicated?: boolean\n}\n\ntype FileUploadsStatusResponse = {\n ok: boolean\n error?: string\n status?: \"uploading\" | \"assembling\" | \"done\" | \"error\"\n chunkSize?: number\n chunksTotal?: number\n received?: number[]\n fileId?: string\n}\n\ntype FileUploadsCompleteResponse = {\n ok: boolean\n error?: string\n fileId?: string\n}\n\nconst sha256Hex = async (data: ArrayBuffer): Promise<string | null> => {\n if (typeof crypto === \"undefined\" || typeof crypto.subtle === \"undefined\") return null\n try {\n const digest = await crypto.subtle.digest(\"SHA-256\", data)\n const bytes = Array.from(new Uint8Array(digest))\n return bytes.map((b) => b.toString(16).padStart(2, \"0\")).join(\"\")\n } catch {\n return null\n }\n}\n\ntype HashWorkerResponse =\n | { ok: true; hash: string }\n | { ok: false; error: string }\n\nconst sha256FileHex = async (file: File, signal?: AbortSignal): Promise<string> => {\n if (typeof Worker === \"undefined\") {\n throw new Error(\"File hashing is not supported in this browser\")\n }\n\n return new Promise((resolve, reject) => {\n const worker = new Sha256Worker()\n\n const cleanup = () => {\n signal?.removeEventListener(\"abort\", handleAbort)\n worker.terminate()\n }\n\n const handleAbort = () => {\n cleanup()\n const error = new Error(\"Upload aborted\")\n error.name = \"AbortError\"\n reject(error)\n }\n\n if (signal?.aborted) {\n handleAbort()\n return\n }\n\n signal?.addEventListener(\"abort\", handleAbort, { once: true })\n worker.onerror = () => {\n cleanup()\n reject(new Error(\"Unable to hash file\"))\n }\n worker.onmessage = (event: MessageEvent<HashWorkerResponse>) => {\n cleanup()\n if (event.data.ok) {\n resolve(event.data.hash)\n return\n }\n reject(new Error(event.data.error === \"hash_unavailable\" ? \"File hashing is not supported in this browser\" : \"Unable to hash file\"))\n }\n worker.postMessage(file)\n })\n}\n\nconst postJson = async <T,>(\n url: string,\n body: unknown,\n options?: { headers?: Record<string, string>; signal?: AbortSignal },\n): Promise<{ ok: boolean; status: number; data: T }> => {\n const response = await fetch(url, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\", ...(options?.headers ?? {}) },\n credentials: \"include\",\n body: JSON.stringify(body),\n signal: options?.signal,\n })\n\n const payload = await response.json().catch(() => ({}))\n return { ok: response.ok, status: response.status, data: payload as T }\n}\n\nconst getJson = async <T,>(\n url: string,\n options?: { headers?: Record<string, string>; signal?: AbortSignal },\n): Promise<{ ok: boolean; status: number; data: T }> => {\n const response = await fetch(url, {\n credentials: \"include\",\n headers: options?.headers,\n signal: options?.signal,\n })\n const payload = await response.json().catch(() => ({}))\n return { ok: response.ok, status: response.status, data: payload as T }\n}\n\nconst putOctetStream = async ({\n url,\n body,\n sha256,\n uploadKey,\n signal,\n}: {\n url: string\n body: ArrayBuffer\n sha256?: string\n uploadKey?: string\n signal?: AbortSignal\n}): Promise<{ ok: boolean; status: number }> => {\n const headers: Record<string, string> = {\n \"Content-Type\": \"application/octet-stream\",\n }\n if (sha256) headers[\"X-Chunk-SHA256\"] = sha256\n if (uploadKey) headers[\"X-Upload-Key\"] = uploadKey\n\n const response = await fetch(url, {\n method: \"PUT\",\n credentials: \"include\",\n headers,\n body,\n signal,\n })\n\n return { ok: response.ok, status: response.status }\n}\n\nconst defaultUpload: FilesUploadFieldUploadHandler = async (file, onProgress, options) => {\n const deduplicationNamespace = options?.deduplicationNamespace?.trim()\n const fileHash = deduplicationNamespace\n ? await sha256FileHex(file, options?.signal)\n : null\n\n const initRes = await postJson<FileUploadsInitResponse>(\n \"/api/rb/file-uploads\",\n {\n filename: file.name,\n mimeType: file.type || \"application/octet-stream\",\n ...(options?.accessScope\n ? { accessScope: options.accessScope }\n : typeof options?.isPublic === \"boolean\"\n ? { isPublic: options.isPublic }\n : {}),\n ...(deduplicationNamespace && fileHash\n ? {\n deduplication: {\n namespace: deduplicationNamespace,\n algorithm: \"sha256\",\n hash: fileHash,\n },\n }\n : {}),\n totalSize: file.size,\n },\n { signal: options?.signal },\n )\n\n if (!initRes.ok || !(initRes.data as any)?.ok) {\n throw new Error((initRes.data as any)?.error ?? `Init failed (${initRes.status})`)\n }\n\n const deduplicatedFileId = String((initRes.data as any)?.fileId ?? \"\").trim()\n if ((initRes.data as any)?.deduplicated === true && deduplicatedFileId) {\n const deduplicatedUploadKey = typeof (initRes.data as any)?.uploadKey === \"string\"\n ? String((initRes.data as any).uploadKey)\n : null\n onProgress(100)\n return {\n id: deduplicatedFileId,\n url: `/api/rb/files/${encodeURIComponent(deduplicatedFileId)}`,\n alt: file.name,\n ...(deduplicatedUploadKey ? { uploadKey: deduplicatedUploadKey } : {}),\n }\n }\n\n const uploadId = String((initRes.data as any)?.uploadId ?? \"\")\n const uploadKey = typeof (initRes.data as any)?.uploadKey === \"string\" ? String((initRes.data as any).uploadKey) : null\n const chunkSize = Number((initRes.data as any)?.chunkSize ?? 0)\n const chunksTotal = Number((initRes.data as any)?.chunksTotal ?? 0)\n\n if (!uploadId || !chunkSize || !chunksTotal) {\n throw new Error(\"Upload init missing required fields\")\n }\n\n const doUploadChunk = async (index: number) => {\n const start = index * chunkSize\n const end = Math.min(file.size, start + chunkSize)\n const slice = file.slice(start, end)\n const body = await slice.arrayBuffer()\n const sha = await sha256Hex(body)\n\n const res = await putOctetStream({\n url: `/api/rb/file-uploads/${encodeURIComponent(uploadId)}/chunks/${index}`,\n body,\n sha256: sha ?? undefined,\n uploadKey: uploadKey ?? undefined,\n signal: options?.signal,\n })\n\n if (res.status === 204) return\n throw new Error(`Chunk ${index} failed (${res.status})`)\n }\n\n const uploadChunks = async (indices: number[], alreadyUploaded = 0) => {\n let uploaded = alreadyUploaded\n\n for (const idx of indices) {\n await doUploadChunk(idx)\n uploaded += 1\n const pct = Math.min(99, Math.floor((uploaded / chunksTotal) * 99))\n onProgress(pct)\n }\n }\n\n const allIndices = Array.from({ length: chunksTotal }, (_, i) => i)\n await uploadChunks(allIndices, 0)\n\n const complete = async (): Promise<string> => {\n const completeRes = await postJson<FileUploadsCompleteResponse>(\n `/api/rb/file-uploads/${encodeURIComponent(uploadId)}/complete`,\n {},\n { headers: uploadKey ? { \"X-Upload-Key\": uploadKey } : undefined, signal: options?.signal },\n )\n\n if (completeRes.ok && (completeRes.data as any)?.ok) {\n const fileId = String((completeRes.data as any)?.fileId ?? \"\")\n if (!fileId) throw new Error(\"Upload completed without fileId\")\n return fileId\n }\n\n const code = String((completeRes.data as any)?.error ?? \"\")\n if (completeRes.status !== 409 || code !== \"missing_chunks\") {\n throw new Error(code || `Complete failed (${completeRes.status})`)\n }\n\n const statusRes = await getJson<FileUploadsStatusResponse>(\n `/api/rb/file-uploads/${encodeURIComponent(uploadId)}/status`,\n { headers: uploadKey ? { \"X-Upload-Key\": uploadKey } : undefined, signal: options?.signal },\n )\n\n if (!statusRes.ok || !(statusRes.data as any)?.ok) {\n throw new Error((statusRes.data as any)?.error ?? `Status failed (${statusRes.status})`)\n }\n\n const received = Array.isArray((statusRes.data as any)?.received) ? (statusRes.data as any).received : []\n const present = new Set<number>(received)\n const missing: number[] = []\n for (let i = 0; i < chunksTotal; i += 1) {\n if (!present.has(i)) missing.push(i)\n }\n\n if (!missing.length) {\n throw new Error(\"missing_chunks\")\n }\n\n await uploadChunks(missing, present.size)\n return complete()\n }\n\n const fileId = await complete()\n\n onProgress(100)\n return {\n id: fileId,\n url: `/api/rb/files/${encodeURIComponent(fileId)}`,\n alt: file.name,\n ...(uploadKey ? { uploadKey } : {}),\n }\n}\n\nfunction SortableTile({\n item,\n isHovered,\n enableImagePreview,\n renderItem,\n onHoverEnter,\n onHoverLeave,\n onRemove,\n onRetry,\n startFullscreen,\n isUploading,\n isError,\n tileClasses,\n disabled,\n isDraggingExternal,\n removeButtonAriaLabel,\n}: {\n item: FileWithState\n isHovered: boolean\n enableImagePreview: boolean\n renderItem?: (props: FilesUploadFieldRenderItemProps) => ReactNode\n onHoverEnter: () => void\n onHoverLeave: () => void\n onRemove: (id: string) => void\n onRetry: (id: string) => void\n startFullscreen: (id: string) => void\n isUploading: boolean\n isError: boolean\n tileClasses: string\n disabled: boolean\n isDraggingExternal: boolean\n removeButtonAriaLabel: string\n}) {\n const { setNodeRef, attributes, listeners, transform, transition, isDragging } = useSortable({\n id: item.id,\n disabled,\n })\n\n const tileRef = useRef<HTMLDivElement | null>(null)\n const previewRef = useRef<HTMLDivElement | null>(null)\n const [previewPosition, setPreviewPosition] = useState<{ left: number; top: number } | null>(null)\n\n const updatePreviewPosition = () => {\n const el = tileRef.current\n if (!el) return\n const rect = el.getBoundingClientRect()\n setPreviewPosition({ left: rect.left + rect.width / 2, top: rect.top - 10 })\n }\n\n useEffect(() => {\n if (!enableImagePreview || !isHovered) {\n setPreviewPosition(null)\n return\n }\n\n updatePreviewPosition()\n\n let raf = 0\n const schedule = () => {\n if (raf) cancelAnimationFrame(raf)\n raf = requestAnimationFrame(() => {\n raf = 0\n updatePreviewPosition()\n })\n }\n\n window.addEventListener(\"resize\", schedule)\n window.addEventListener(\"scroll\", schedule, true)\n return () => {\n if (raf) cancelAnimationFrame(raf)\n window.removeEventListener(\"resize\", schedule)\n window.removeEventListener(\"scroll\", schedule, true)\n }\n }, [enableImagePreview, isHovered])\n\n const style = {\n transform: CSS.Transform.toString(transform),\n transition,\n }\n\n const tileContent = renderItem\n ? renderItem({\n file: { id: item.id, url: item.url, alt: item.alt, uploadKey: item.uploadKey },\n previewUrl: item.previewUrl,\n status: item.status,\n progress: item.progress,\n fileName: item.fileName,\n })\n : enableImagePreview\n ? (\n <Image\n src={item.previewUrl}\n alt={item.alt ?? \"Uploaded file\"}\n sizes=\"96px\"\n className={cn(\n \"size-full rounded-md object-cover\",\n isUploading && \"opacity-75\",\n isError && \"grayscale\"\n )}\n />\n )\n : (\n <div className=\"flex size-full items-center justify-center rounded-md bg-slate-100 px-2 text-center text-[10px] font-medium text-slate-700 dark:bg-slate-800 dark:text-slate-200\">\n <span className=\"w-full truncate\">{item.fileName ?? item.alt ?? \"Fichier\"}</span>\n </div>\n )\n\n return (\n <div\n ref={(node) => {\n tileRef.current = node\n setNodeRef(node)\n }}\n style={style}\n className={cn(\n tileClasses,\n isDragging && \"z-20 ring-2 ring-primary shadow-xl\",\n isDraggingExternal && \"opacity-0\",\n !disabled && \"cursor-grab active:cursor-grabbing\",\n isDragging && \"cursor-grabbing\",\n disabled && \"cursor-default\"\n )}\n onMouseEnter={() => {\n updatePreviewPosition()\n onHoverEnter()\n }}\n onMouseLeave={(event) => {\n const next = event.relatedTarget\n if (next instanceof Node && previewRef.current?.contains(next)) return\n onHoverLeave()\n }}\n {...attributes}\n {...listeners}\n >\n {tileContent}\n\n <button\n type=\"button\"\n onClick={() => {\n if (disabled) return\n onRemove(item.id)\n }}\n disabled={disabled}\n className=\"absolute right-1 top-1 inline-flex size-6 items-center justify-center rounded-full bg-white text-slate-700 shadow-sm transition hover:scale-105 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary dark:bg-slate-900 dark:text-slate-200\"\n aria-label={removeButtonAriaLabel}\n >\n <X className=\"h-4 w-4\" />\n </button>\n\n {enableImagePreview &&\n isHovered &&\n previewPosition &&\n (() => {\n const preview = (\n <>\n <div\n ref={previewRef}\n className=\"pointer-events-auto fixed z-[60] w-52 -translate-x-1/2 -translate-y-full rounded-xl border border-slate-200 bg-white/95 p-3 shadow-2xl backdrop-blur dark:border-slate-700 dark:bg-slate-900/95\"\n style={{ left: previewPosition.left, top: previewPosition.top }}\n onMouseEnter={() => {\n updatePreviewPosition()\n onHoverEnter()\n }}\n onMouseLeave={(event) => {\n const next = event.relatedTarget\n if (next instanceof Node && tileRef.current?.contains(next)) return\n onHoverLeave()\n }}\n >\n <div className=\"relative overflow-hidden rounded-lg\">\n <Image src={item.url} alt={item.alt ?? \"Preview\"} sizes=\"208px\" className=\"h-40 w-full object-cover\" />\n <button\n type=\"button\"\n onClick={() => startFullscreen(item.id)}\n className=\"absolute right-2 top-2 inline-flex items-center justify-center rounded-full bg-black/70 p-2 text-white transition hover:bg-black\"\n aria-label=\"Plein écran\"\n >\n <Maximize2 className=\"h-3.5 w-3.5\" />\n </button>\n </div>\n </div>\n </>\n )\n\n if (typeof document === \"undefined\") return preview\n return createPortal(preview, document.body)\n })()}\n\n {isUploading && (\n <div\n className=\"absolute inset-0 z-20 flex flex-col items-center justify-center gap-2 rounded-lg bg-black/40 text-white\"\n role=\"progressbar\"\n aria-label={item.fileName ?? item.alt ?? \"File\"}\n aria-valuemin={0}\n aria-valuemax={100}\n aria-valuenow={item.progress}\n >\n <Loader2 className=\"h-5 w-5 animate-spin\" aria-hidden=\"true\" />\n <div className=\"h-1.5 w-5/6 rounded-full bg-white/20\">\n <div className=\"h-full rounded-full bg-primary\" style={{ width: `${item.progress}%` }} />\n </div>\n <div className=\"text-xs font-semibold\">{item.progress}%</div>\n </div>\n )}\n\n {isError && (\n <div\n className=\"absolute inset-0 z-10 flex flex-col items-center justify-center gap-2 rounded-lg bg-red-600/70 text-white\"\n role=\"alert\"\n >\n <div className=\"max-w-[92%] break-words text-center text-[10px] font-semibold leading-tight\" title={item.errorMessage}>\n {getErrorLabel(item.errorMessage)}\n </div>\n <button\n type=\"button\"\n onClick={() => onRetry(item.id)}\n disabled={disabled}\n className=\"rounded-full bg-white/90 px-3 py-1 text-xs font-semibold text-red-700 shadow-sm transition hover:bg-white focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-white\"\n >\n Réessayer\n </button>\n </div>\n )}\n </div>\n )\n}\n\ntype UploadResult = FilesUploadFieldFile | Promise<FilesUploadFieldFile>\n\nexport type FileUploadAccessScope = \"owner\" | \"tenant\" | \"public\"\n\nexport type FilesUploadFieldUploadOptions = {\n signal?: AbortSignal\n isPublic?: boolean\n accessScope?: FileUploadAccessScope\n deduplicationNamespace?: string\n}\n\nexport type FilesUploadFieldUploadHandler = (\n file: File,\n onProgress: (progress: number) => void,\n options?: FilesUploadFieldUploadOptions,\n) => UploadResult\n\nexport type FilesUploadFieldRenderItemProps = {\n file: FilesUploadFieldFile\n previewUrl: string\n status: \"uploaded\" | \"uploading\" | \"error\"\n progress: number\n fileName?: string\n}\n\ntype FilesUploadFieldBaseProps = {\n initialFiles?: FilesUploadFieldFile[]\n onChange?: (files: FilesUploadFieldFile[]) => void\n upload?: FilesUploadFieldUploadHandler\n uploadDeduplicationNamespace?: string\n maxFiles?: number\n disabled?: boolean\n onUploadingChange?: (isUploading: boolean) => void\n accept?: string | string[]\n renderHeader?: () => ReactNode\n renderItem?: (props: FilesUploadFieldRenderItemProps) => ReactNode\n addButtonAriaLabel?: string\n removeButtonAriaLabel?: string\n variant?: \"card\" | \"bare\"\n}\n\ntype FilesUploadFieldVisibilityProps =\n | { uploadAccessScope?: never; uploadIsPublic?: boolean }\n | { uploadAccessScope: FileUploadAccessScope; uploadIsPublic?: never }\n\nexport type FilesUploadFieldProps = FilesUploadFieldBaseProps & FilesUploadFieldVisibilityProps\n\ntype FileWithState = FilesUploadFieldFile & {\n renderKey: string\n previewUrl: string\n status: \"uploaded\" | \"uploading\" | \"error\"\n progress: number\n fileName?: string\n mimeType?: string\n errorMessage?: string\n}\n\nfunction toPreview(file: File) {\n return URL.createObjectURL(file)\n}\n\nasync function preloadImagePreview(src: string) {\n const image = document.createElement(\"img\")\n const srcSet = getImageSrcSet(src)\n if (srcSet) {\n image.srcset = srcSet\n image.sizes = \"96px\"\n }\n image.src = isRpcbaseFileImageSrc(src) ? withImageWidth(src, 960) : src\n if (typeof image.decode === \"function\") {\n await image.decode().catch(() => undefined)\n return\n }\n if (image.complete) return\n\n await new Promise<void>((resolve) => {\n image.onload = () => resolve()\n image.onerror = () => resolve()\n })\n}\n\nconst getErrorMessage = (error: unknown): string => {\n if (error instanceof Error) return error.message\n if (typeof error === \"string\") return error\n return \"Upload failed\"\n}\n\nconst getErrorLabel = (message: string | undefined): string => {\n if (!message) return \"Échec\"\n if (message.startsWith(\"heif_decode_unsupported\")) return \"HEIC/HEVC non supporté\"\n return message\n}\n\nconst IMAGE_FILE_NAME_RE = /\\.(png|jpe?g|gif|webp|avif|heic|heif|svg|bmp)$/i\nconst DROP_ANIMATION_FALLBACK_MS = 350\n\nconst hideDraggedTileDropSideEffects = defaultDropAnimationSideEffects({\n styles: {\n active: {\n opacity: \"0\",\n },\n },\n})\n\nconst isImageItem = (item: FileWithState): boolean => {\n if (item.mimeType) return item.mimeType.startsWith(\"image/\")\n return IMAGE_FILE_NAME_RE.test(item.fileName ?? item.alt ?? \"\")\n}\n\nexport function FilesUploadField({\n initialFiles = [],\n onChange,\n upload = defaultUpload,\n uploadIsPublic,\n uploadAccessScope,\n uploadDeduplicationNamespace,\n maxFiles,\n disabled = false,\n onUploadingChange,\n accept,\n renderHeader,\n renderItem,\n addButtonAriaLabel = \"Ajouter un fichier\",\n removeButtonAriaLabel = \"Supprimer le fichier\",\n variant = \"card\",\n}: FilesUploadFieldProps) {\n const fileInputRef = useRef<HTMLInputElement>(null)\n const [images, setImages] = useState<FileWithState[]>(() =>\n initialFiles.map((file) => ({\n ...file,\n renderKey: file.id,\n previewUrl: file.url,\n status: \"uploaded\",\n progress: 100,\n }))\n )\n const [dragActive, setDragActive] = useState(false)\n const [fullscreenIndex, setFullscreenIndex] = useState<number | null>(null)\n const [hoveredId, setHoveredId] = useState<string | null>(null)\n const [activeId, setActiveId] = useState<string | null>(null)\n const [dropAnimatingId, setDropAnimatingId] = useState<string | null>(null)\n const hoverTimeoutRef = useRef<number | null>(null)\n const dropAnimationFallbackRef = useRef<{ id: string; timeout: number } | null>(null)\n const hasDragOverlayRef = useRef(false)\n const clearDropAnimationRef = useRef<(id: string) => void>(() => {})\n const dropAnimationRef = useRef<DropAnimation>({\n sideEffects(args) {\n const id = String(args.active.id)\n const fallback = dropAnimationFallbackRef.current\n if (fallback?.id === id) {\n window.clearTimeout(fallback.timeout)\n dropAnimationFallbackRef.current = null\n }\n\n const cleanup = hideDraggedTileDropSideEffects(args)\n\n return () => {\n cleanup?.()\n clearDropAnimationRef.current(id)\n }\n },\n })\n const skipNotifyRef = useRef(true)\n const imagesRef = useRef<FileWithState[]>([])\n const lastInitialImagesRef = useRef<FilesUploadFieldFile[]>(initialFiles)\n const onChangeRef = useRef(onChange)\n const onUploadingChangeRef = useRef(onUploadingChange)\n const replacedIdRef = useRef<Map<string, string>>(new Map())\n const fileRef = useRef<Map<string, File>>(new Map())\n const abortRef = useRef<Map<string, AbortController>>(new Map())\n const objectUrlRef = useRef<Map<string, string>>(new Map())\n const sensors = useSensors(\n useSensor(PointerSensor, { activationConstraint: { distance: 6 } }),\n useSensor(KeyboardSensor, { coordinateGetter: sortableKeyboardCoordinates })\n )\n\n useEffect(() => {\n return () => {\n for (const controller of abortRef.current.values()) {\n try {\n controller.abort()\n } catch {\n //\n }\n }\n abortRef.current.clear()\n if (dropAnimationFallbackRef.current !== null) {\n window.clearTimeout(dropAnimationFallbackRef.current.timeout)\n dropAnimationFallbackRef.current = null\n }\n fileRef.current.clear()\n replacedIdRef.current.clear()\n\n for (const url of objectUrlRef.current.values()) {\n if (typeof URL !== \"undefined\") {\n try {\n URL.revokeObjectURL(url)\n } catch {\n //\n }\n }\n }\n objectUrlRef.current.clear()\n }\n }, [])\n\n clearDropAnimationRef.current = (id: string) => {\n const fallback = dropAnimationFallbackRef.current\n if (fallback?.id === id) {\n window.clearTimeout(fallback.timeout)\n dropAnimationFallbackRef.current = null\n }\n\n setDropAnimatingId((current) => (current === id ? null : current))\n }\n\n useEffect(() => {\n if (typeof document === \"undefined\") return\n if (activeId) {\n document.body.style.cursor = \"grabbing\"\n return () => {\n document.body.style.cursor = \"\"\n }\n }\n document.body.style.cursor = \"\"\n }, [activeId])\n\n useEffect(() => {\n imagesRef.current = images\n }, [images])\n\n useEffect(() => {\n onChangeRef.current = onChange\n }, [onChange])\n\n useEffect(() => {\n onUploadingChangeRef.current = onUploadingChange\n }, [onUploadingChange])\n\n useEffect(() => {\n const previous = lastInitialImagesRef.current\n const samePropValue =\n previous.length === initialFiles.length &&\n previous.every((img, index) => {\n const next = initialFiles[index]\n return next && img.id === next.id && img.url === next.url && img.alt === next.alt\n })\n\n if (samePropValue) return\n lastInitialImagesRef.current = initialFiles\n\n const renderKeysById = new Map(imagesRef.current.map((img) => [img.id, img.renderKey]))\n const prepared: FileWithState[] = initialFiles.map((img) => ({\n ...img,\n renderKey: renderKeysById.get(img.id) ?? img.id,\n previewUrl: img.url,\n status: \"uploaded\",\n progress: 100,\n }))\n\n const preparedRawIds = new Set(prepared.map((img) => img.id))\n for (const [tempId, finalId] of replacedIdRef.current.entries()) {\n if (preparedRawIds.has(finalId)) {\n replacedIdRef.current.delete(tempId)\n }\n }\n\n const currentIds = new Set(imagesRef.current.map((img) => img.id))\n const hasStaleInitialImages = prepared.some((img) => {\n const mapped = replacedIdRef.current.get(img.id)\n return mapped ? currentIds.has(mapped) : false\n })\n if (hasStaleInitialImages) return\n\n const preparedIds = new Set(prepared.map((img) => img.id))\n for (const img of imagesRef.current) {\n if (preparedIds.has(img.id)) continue\n\n const controller = abortRef.current.get(img.id)\n if (controller) {\n abortRef.current.delete(img.id)\n try {\n controller.abort()\n } catch {\n //\n }\n }\n\n fileRef.current.delete(img.id)\n\n const tempUrl = objectUrlRef.current.get(img.id)\n if (tempUrl) {\n objectUrlRef.current.delete(img.id)\n try {\n URL.revokeObjectURL(tempUrl)\n } catch {\n //\n }\n }\n }\n\n setImages((current) => {\n const sameLength = current.length === prepared.length\n const sameContent =\n sameLength &&\n current.every((item, index) => {\n const next = prepared[index]\n return next && item.id === next.id && item.url === next.url && item.alt === next.alt && item.uploadKey === next.uploadKey\n })\n\n if (sameContent) return current\n\n skipNotifyRef.current = true\n return prepared\n })\n }, [initialFiles])\n\n useEffect(() => {\n if (skipNotifyRef.current) {\n skipNotifyRef.current = false\n return\n }\n\n onChangeRef.current?.(images.map(({ id, url, alt, uploadKey }) => ({ id, url, alt, uploadKey })))\n }, [images])\n\n useEffect(() => {\n onUploadingChangeRef.current?.(images.some((img) => img.status === \"uploading\"))\n }, [images])\n\n useEffect(() => {\n if (fullscreenIndex === null) {\n return\n }\n\n const handleKey = (event: KeyboardEvent) => {\n if (event.key === \"Escape\") {\n setFullscreenIndex(null)\n return\n }\n\n if (event.key === \"ArrowRight\") {\n setFullscreenIndex((current) => {\n if (current === null) return current\n return (current + 1) % images.length\n })\n return\n }\n\n if (event.key === \"ArrowLeft\") {\n setFullscreenIndex((current) => {\n if (current === null) return current\n return (current - 1 + images.length) % images.length\n })\n }\n }\n\n window.addEventListener(\"keydown\", handleKey)\n return () => window.removeEventListener(\"keydown\", handleKey)\n }, [fullscreenIndex, images.length])\n\n const handleFiles = async (files: FileList | File[]) => {\n if (disabled) return\n const normalizedMaxFiles = typeof maxFiles === \"number\" && Number.isFinite(maxFiles) && maxFiles > 0\n ? Math.floor(maxFiles)\n : null\n const remaining = normalizedMaxFiles === null\n ? Number.POSITIVE_INFINITY\n : Math.max(0, normalizedMaxFiles - imagesRef.current.length)\n const list = Array.from(files).slice(0, remaining)\n if (!list.length) return\n\n const uploads = list.map((file) => {\n const previewUrl = toPreview(file)\n const tempId = crypto.randomUUID()\n\n objectUrlRef.current.set(tempId, previewUrl)\n fileRef.current.set(tempId, file)\n\n const next: FileWithState = {\n id: tempId,\n url: previewUrl,\n renderKey: tempId,\n previewUrl,\n alt: file.name,\n status: \"uploading\",\n progress: 0,\n fileName: file.name,\n mimeType: file.type,\n }\n\n setImages((current) => [...current, next])\n\n const updateProgress = (value: number) => {\n const nextValue = Math.max(0, Math.min(99, value))\n setImages((current) =>\n current.map((item) =>\n item.id === tempId ? { ...item, progress: nextValue, status: \"uploading\" } : item\n )\n )\n }\n\n const finalize = async () => {\n const controller = new AbortController()\n abortRef.current.set(tempId, controller)\n\n try {\n const result = await upload(file, updateProgress, {\n signal: controller.signal,\n ...(uploadAccessScope ? { accessScope: uploadAccessScope } : { isPublic: uploadIsPublic ?? false }),\n ...(uploadDeduplicationNamespace ? { deduplicationNamespace: uploadDeduplicationNamespace } : {}),\n })\n replacedIdRef.current.set(tempId, result.id)\n\n const tempUrl = objectUrlRef.current.get(tempId)\n if (file.type.startsWith(\"image/\")) {\n await preloadImagePreview(result.url)\n }\n\n abortRef.current.delete(tempId)\n fileRef.current.delete(tempId)\n\n setImages((current) =>\n current.map((item) =>\n item.id === tempId\n ? {\n ...item,\n ...result,\n previewUrl: result.url,\n url: result.url,\n status: \"uploaded\",\n progress: 100,\n errorMessage: undefined,\n }\n : item\n )\n )\n\n if (tempUrl) {\n objectUrlRef.current.delete(tempId)\n window.requestAnimationFrame(() => URL.revokeObjectURL(tempUrl))\n }\n } catch (error) {\n abortRef.current.delete(tempId)\n if (controller.signal.aborted) {\n fileRef.current.delete(tempId)\n const tempUrl = objectUrlRef.current.get(tempId)\n if (tempUrl) {\n objectUrlRef.current.delete(tempId)\n try {\n URL.revokeObjectURL(tempUrl)\n } catch {\n //\n }\n }\n return\n }\n console.error(\"Upload failed\", error)\n const errorMessage = getErrorMessage(error)\n setImages((current) =>\n current.map((item) =>\n item.id === tempId\n ? { ...item, status: \"error\", progress: Math.max(0, Math.min(99, item.progress)), errorMessage }\n : item\n )\n )\n }\n }\n\n return finalize()\n })\n\n await Promise.allSettled(uploads)\n }\n\n const onFileInputChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n if (!event.target.files) return\n void handleFiles(event.target.files)\n event.target.value = \"\"\n }\n\n const openFileDialog = () => {\n if (disabled) return\n fileInputRef.current?.click()\n }\n\n const removeImage = (id: string) => {\n const controller = abortRef.current.get(id)\n if (controller) {\n abortRef.current.delete(id)\n try {\n controller.abort()\n } catch {\n //\n }\n }\n\n fileRef.current.delete(id)\n\n const tempUrl = objectUrlRef.current.get(id)\n if (tempUrl) {\n objectUrlRef.current.delete(id)\n try {\n URL.revokeObjectURL(tempUrl)\n } catch {\n //\n }\n }\n\n setImages((current) => current.filter((item) => item.id !== id))\n }\n\n const retryUpload = (id: string) => {\n if (disabled) return\n const file = fileRef.current.get(id)\n if (!file) return\n\n const existingController = abortRef.current.get(id)\n if (existingController) {\n try {\n existingController.abort()\n } catch {\n //\n }\n abortRef.current.delete(id)\n }\n\n setImages((current) =>\n current.map((item) => (item.id === id ? { ...item, status: \"uploading\", progress: 0, errorMessage: undefined } : item))\n )\n\n const updateProgress = (value: number) => {\n const nextValue = Math.max(0, Math.min(99, value))\n setImages((current) =>\n current.map((item) => (item.id === id ? { ...item, progress: nextValue, status: \"uploading\" } : item))\n )\n }\n\n const controller = new AbortController()\n abortRef.current.set(id, controller)\n\n void (async () => {\n try {\n const result = await upload(file, updateProgress, {\n signal: controller.signal,\n ...(uploadAccessScope ? { accessScope: uploadAccessScope } : { isPublic: uploadIsPublic ?? false }),\n ...(uploadDeduplicationNamespace ? { deduplicationNamespace: uploadDeduplicationNamespace } : {}),\n })\n replacedIdRef.current.set(id, result.id)\n\n const tempUrl = objectUrlRef.current.get(id)\n if (file.type.startsWith(\"image/\")) {\n await preloadImagePreview(result.url)\n }\n\n abortRef.current.delete(id)\n fileRef.current.delete(id)\n\n setImages((current) =>\n current.map((item) =>\n item.id === id\n ? { ...item, ...result, previewUrl: result.url, url: result.url, status: \"uploaded\", progress: 100, errorMessage: undefined }\n : item\n )\n )\n\n if (tempUrl) {\n objectUrlRef.current.delete(id)\n window.requestAnimationFrame(() => URL.revokeObjectURL(tempUrl))\n }\n } catch (error) {\n abortRef.current.delete(id)\n if (controller.signal.aborted) return\n console.error(\"Retry failed\", error)\n const errorMessage = getErrorMessage(error)\n setImages((current) => current.map((item) => (item.id === id ? { ...item, status: \"error\", errorMessage } : item)))\n }\n })()\n }\n\n const startFullscreen = (id: string) => {\n const index = images.findIndex((item) => item.id === id)\n if (index !== -1) {\n setFullscreenIndex(index)\n }\n }\n\n const clearPendingDropAnimation = () => {\n if (dropAnimationFallbackRef.current !== null) {\n window.clearTimeout(dropAnimationFallbackRef.current.timeout)\n dropAnimationFallbackRef.current = null\n }\n setDropAnimatingId(null)\n }\n\n const scheduleDropAnimationFallback = (id: string) => {\n if (dropAnimationFallbackRef.current !== null) {\n window.clearTimeout(dropAnimationFallbackRef.current.timeout)\n }\n\n dropAnimationFallbackRef.current = {\n id,\n timeout: window.setTimeout(() => {\n dropAnimationFallbackRef.current = null\n setDropAnimatingId((current) => (current === id ? null : current))\n }, DROP_ANIMATION_FALLBACK_MS),\n }\n }\n\n const finishDrag = (id: string) => {\n if (hasDragOverlayRef.current) {\n setDropAnimatingId(id)\n scheduleDropAnimationFallback(id)\n }\n setActiveId(null)\n }\n\n const handleDragStart = (event: DragStartEvent) => {\n clearPendingDropAnimation()\n setActiveId(String(event.active.id))\n }\n\n const handleDragEnd = (event: DragEndEvent) => {\n const { active, over } = event\n const activeId = String(active.id)\n\n if (!over) {\n finishDrag(activeId)\n return\n }\n\n const overId = String(over.id)\n\n if (activeId !== overId) {\n setImages((current) => {\n const oldIndex = current.findIndex((item) => item.id === activeId)\n const newIndex = current.findIndex((item) => item.id === overId)\n if (oldIndex === -1 || newIndex === -1) return current\n return arrayMove(current, oldIndex, newIndex)\n })\n }\n\n finishDrag(activeId)\n }\n\n const handleDragCancel = () => {\n if (activeId) {\n finishDrag(activeId)\n return\n }\n\n setActiveId(null)\n }\n\n const clearHoverTimeout = () => {\n if (hoverTimeoutRef.current !== null) {\n window.clearTimeout(hoverTimeoutRef.current)\n hoverTimeoutRef.current = null\n }\n }\n\n const fullscreenImage = useMemo(() => {\n if (fullscreenIndex === null) return null\n return images[fullscreenIndex] ?? null\n }, [fullscreenIndex, images])\n\n const containerClasses = cn(\n variant === \"bare\"\n ? \"rounded-lg transition-colors\"\n : \"rounded-xl border border-dashed border-slate-300 bg-white/70 p-4 shadow-sm transition-colors dark:border-slate-700 dark:bg-slate-900/60\",\n dragActive && (variant === \"bare\" ? \"bg-primary/5 ring-2 ring-primary/50\" : \"border-primary ring-2 ring-primary/50\"),\n disabled && \"opacity-70\"\n )\n\n const tileBaseClasses = \"group relative size-20 overflow-visible rounded-lg border border-slate-200 bg-slate-50 shadow-inner transition hover:shadow md:size-24 dark:border-slate-700 dark:bg-slate-800\"\n\n const acceptAttr = useMemo(() => {\n if (!accept) return undefined\n if (Array.isArray(accept)) return accept.join(\",\")\n return accept\n }, [accept])\n\n const enableImagePreview = useMemo(() => {\n if (renderItem) return false\n if (!acceptAttr) return false\n const tokens = acceptAttr.split(\",\").map((value) => value.trim()).filter(Boolean)\n if (!tokens.length) return false\n return tokens.every((token) =>\n token === \"image/*\" ||\n token.startsWith(\"image/\") ||\n token === \".heic\" ||\n token === \".heif\" ||\n token === \".heics\" ||\n token === \".heifs\"\n )\n }, [acceptAttr, renderItem])\n\n const canPreviewItem = (item: FileWithState) => enableImagePreview || (!renderItem && isImageItem(item))\n const normalizedMaxFiles = typeof maxFiles === \"number\" && Number.isFinite(maxFiles) && maxFiles > 0\n ? Math.floor(maxFiles)\n : null\n const canAddFiles = !disabled && (normalizedMaxFiles === null || images.length < normalizedMaxFiles)\n const statusItem = images.find((item) => item.status === \"error\") ??\n images.find((item) => item.status === \"uploading\")\n const uploadStatusMessage = statusItem\n ? statusItem.status === \"error\"\n ? getErrorLabel(statusItem.errorMessage)\n : `${statusItem.fileName ?? statusItem.alt ?? \"File\"}: ${statusItem.progress}%`\n : \"\"\n\n const toRenderItemProps = (item: FileWithState): FilesUploadFieldRenderItemProps => ({\n file: { id: item.id, url: item.url, alt: item.alt, uploadKey: item.uploadKey },\n previewUrl: item.previewUrl,\n status: item.status,\n progress: item.progress,\n fileName: item.fileName,\n })\n\n const dragOverlayContent = activeId\n ? (() => {\n const activeItem = images.find((item) => item.id === activeId)\n if (!activeItem) return null\n\n if (renderItem) {\n const rendered = renderItem(toRenderItemProps(activeItem))\n if (rendered === null || rendered === undefined || rendered === false) return null\n return (\n <div className=\"pointer-events-none\">\n <div className=\"h-24 w-24 overflow-hidden rounded-lg shadow-2xl\">{rendered}</div>\n </div>\n )\n }\n\n if (!canPreviewItem(activeItem)) return null\n return (\n <div className=\"pointer-events-none\">\n <Image\n src={activeItem.previewUrl}\n alt={activeItem.alt ?? \"Dragged image\"}\n sizes=\"96px\"\n className=\"h-24 w-24 rounded-lg object-cover shadow-2xl\"\n />\n </div>\n )\n })()\n : null\n\n const hasDragOverlay = dragOverlayContent !== null && dragOverlayContent !== undefined\n const hiddenDraggedTileId = hasDragOverlay ? activeId : dropAnimatingId\n hasDragOverlayRef.current = hasDragOverlay\n\n return (\n <div\n onDragOver={(event) => {\n event.preventDefault()\n if (canAddFiles) {\n setDragActive(true)\n }\n }}\n onDragLeave={() => setDragActive(false)}\n onDrop={(event) => {\n event.preventDefault()\n setDragActive(false)\n if (canAddFiles && event.dataTransfer.files?.length) {\n void handleFiles(event.dataTransfer.files)\n }\n }}\n className={containerClasses}\n >\n {renderHeader ? <div className=\"mb-3\">{renderHeader()}</div> : null}\n <div role=\"status\" className=\"sr-only\">{uploadStatusMessage}</div>\n\n <DndContext\n sensors={disabled ? undefined : sensors}\n collisionDetection={closestCenter}\n onDragStart={handleDragStart}\n onDragEnd={handleDragEnd}\n onDragCancel={handleDragCancel}\n >\n <SortableContext items={images.map((item) => item.id)} strategy={rectSortingStrategy}>\n <div className=\"flex flex-wrap gap-3\">\n {images.map((item) => {\n const isUploading = item.status === \"uploading\"\n const isError = item.status === \"error\"\n\n return (\n <SortableTile\n key={item.renderKey}\n item={item}\n isHovered={hoveredId === item.id}\n enableImagePreview={canPreviewItem(item)}\n renderItem={renderItem}\n onHoverEnter={() => {\n clearHoverTimeout()\n setHoveredId(item.id)\n }}\n onHoverLeave={() => {\n clearHoverTimeout()\n hoverTimeoutRef.current = window.setTimeout(() => {\n setHoveredId((current) => (current === item.id ? null : current))\n hoverTimeoutRef.current = null\n }, 120)\n }}\n onRemove={removeImage}\n onRetry={retryUpload}\n startFullscreen={startFullscreen}\n isUploading={isUploading}\n isError={isError}\n tileClasses={tileBaseClasses}\n disabled={disabled}\n isDraggingExternal={hiddenDraggedTileId === item.id}\n removeButtonAriaLabel={removeButtonAriaLabel}\n />\n )\n })}\n\n {canAddFiles && (variant === \"bare\" && images.length === 0 ? (\n <button\n type=\"button\"\n onClick={openFileDialog}\n disabled={disabled}\n className=\"flex w-full flex-col items-center justify-center gap-1 rounded-lg border border-dashed border-slate-300 px-4 py-6 text-slate-500 transition-colors hover:border-slate-400 hover:bg-slate-50 hover:text-slate-600 dark:border-slate-700 dark:hover:bg-slate-800/50\"\n aria-label={addButtonAriaLabel}\n >\n <Plus className=\"h-5 w-5\" />\n <span className=\"text-xs font-medium\">{addButtonAriaLabel}</span>\n <span className=\"text-[11px] text-slate-400 dark:text-slate-500\">ou glissez-déposez ici</span>\n </button>\n ) : variant === \"bare\" ? (\n <button\n type=\"button\"\n onClick={openFileDialog}\n disabled={disabled}\n className=\"flex size-20 items-center justify-center rounded-lg border border-dashed border-slate-300 text-slate-400 transition-colors hover:border-slate-400 hover:bg-slate-50 hover:text-slate-600 md:size-24 dark:border-slate-700 dark:hover:bg-slate-800/50 dark:hover:text-slate-300\"\n aria-label={addButtonAriaLabel}\n >\n <div className=\"flex flex-col items-center gap-1\">\n <Plus className=\"h-4 w-4\" />\n <span className=\"text-[11px] font-medium\">Ajouter</span>\n </div>\n </button>\n ) : (\n <button\n type=\"button\"\n onClick={openFileDialog}\n disabled={disabled}\n className={cn(\n tileBaseClasses,\n \"flex items-center justify-center border-dashed bg-white text-slate-500 hover:border-slate-300 dark:bg-slate-900\"\n )}\n aria-label={addButtonAriaLabel}\n >\n <div className=\"flex flex-col items-center gap-1\">\n <div className=\"flex size-9 items-center justify-center rounded-full border border-slate-300 bg-slate-100 text-slate-600 shadow-inner dark:border-slate-700 dark:bg-slate-800 dark:text-slate-200\">\n <Plus className=\"h-5 w-5\" />\n </div>\n <span className=\"text-xs font-medium\">Ajouter</span>\n </div>\n </button>\n ))}\n </div>\n </SortableContext>\n {(() => {\n const overlay = <DragOverlay dropAnimation={dropAnimationRef.current}>{dragOverlayContent}</DragOverlay>\n\n if (typeof document === \"undefined\") return overlay\n return createPortal(overlay, document.body)\n })()}\n </DndContext>\n\n <input\n ref={fileInputRef}\n type=\"file\"\n accept={acceptAttr}\n multiple={normalizedMaxFiles !== 1}\n disabled={!canAddFiles}\n className=\"hidden\"\n onChange={onFileInputChange}\n aria-hidden\n />\n\n {fullscreenImage && canPreviewItem(fullscreenImage) && (\n <div className=\"fixed inset-0 z-50 flex items-center justify-center bg-black/90\">\n <button\n type=\"button\"\n className=\"absolute left-6 top-1/2 -translate-y-1/2 rounded-full bg-white/10 p-3 text-white shadow-lg transition hover:bg-white/20 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-white\"\n onClick={() =>\n setFullscreenIndex((current) => {\n if (current === null) return current\n return (current - 1 + images.length) % images.length\n })\n }\n aria-label=\"Précédent\"\n >\n <svg viewBox=\"0 0 24 24\" className=\"h-6 w-6\" stroke=\"currentColor\" strokeWidth={2} fill=\"none\">\n <path d=\"M15 18l-6-6 6-6\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n </button>\n <div className=\"relative max-h-[80vh] max-w-4xl\">\n <Image\n src={fullscreenImage.url}\n alt={fullscreenImage.alt ?? \"Fullscreen\"}\n sizes=\"(max-width: 1024px) 100vw, 1024px\"\n className=\"max-h-[80vh] max-w-full rounded-lg object-contain shadow-2xl\"\n />\n <button\n type=\"button\"\n className=\"absolute right-3 top-3 inline-flex size-9 items-center justify-center rounded-full bg-black/70 text-white transition hover:bg-black focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-white\"\n onClick={() => setFullscreenIndex(null)}\n aria-label=\"Fermer\"\n >\n <X className=\"h-5 w-5\" />\n </button>\n </div>\n <button\n type=\"button\"\n className=\"absolute right-6 top-1/2 -translate-y-1/2 rounded-full bg-white/10 p-3 text-white shadow-lg transition hover:bg-white/20 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-white\"\n onClick={() =>\n setFullscreenIndex((current) => {\n if (current === null) return current\n return (current + 1) % images.length\n })\n }\n aria-label=\"Suivant\"\n >\n <svg viewBox=\"0 0 24 24\" className=\"h-6 w-6\" stroke=\"currentColor\" strokeWidth={2} fill=\"none\">\n <path d=\"M9 6l6 6-6 6\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n </button>\n </div>\n )}\n </div>\n )\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index298.js","names":["React","React$1","renderAsChild","asChild","children","render"],"sources":["../src/lib/render-as-child.ts"],"sourcesContent":["import * as React from \"react\"\n\n\ntype RenderProp = React.ReactElement | ((props: any, state: any) => React.ReactElement)\n\nexport function renderAsChild(\n asChild: boolean | undefined,\n render: RenderProp | undefined,\n children: React.ReactNode,\n) {\n if (!asChild) return render\n return React.Children.only(children) as React.ReactElement\n}\n"],"mappings":";;AAKA,SAAgBE,EACd,GACA,GACA,GACA;CAEA,OADKC,IACEH,EAAM,SAAS,KAAKI,CAAQ,IADdC;AAEvB"}
|
package/dist/index299.js
CHANGED
|
@@ -1,32 +1,152 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
let
|
|
18
|
-
|
|
19
|
-
let
|
|
20
|
-
return
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
1
|
+
import { cn as e } from "./index12.js";
|
|
2
|
+
import { DialogBackdrop as t } from "./index203.js";
|
|
3
|
+
import { DialogClose as n } from "./index216.js";
|
|
4
|
+
import { DialogDescription as r } from "./index219.js";
|
|
5
|
+
import { DialogPopup as i } from "./index284.js";
|
|
6
|
+
import { DialogPortal as a } from "./index287.js";
|
|
7
|
+
import { DialogRoot as o } from "./index292.js";
|
|
8
|
+
import { DialogTitle as s } from "./index293.js";
|
|
9
|
+
import { DialogTrigger as c } from "./index297.js";
|
|
10
|
+
import { renderAsChild as l } from "./index298.js";
|
|
11
|
+
import { c as u } from "react/compiler-runtime";
|
|
12
|
+
import * as d from "react";
|
|
13
|
+
import { XIcon as f } from "lucide-react";
|
|
14
|
+
import { jsx as p, jsxs as m } from "react/jsx-runtime";
|
|
15
|
+
//#region src/components/Dialog/index.tsx
|
|
16
|
+
function h(e) {
|
|
17
|
+
let t = u(4), n;
|
|
18
|
+
t[0] === e ? n = t[1] : ({...n} = e, t[0] = e, t[1] = n);
|
|
19
|
+
let r;
|
|
20
|
+
return t[2] === n ? r = t[3] : (r = /* @__PURE__ */ p(o, {
|
|
21
|
+
"data-slot": "dialog",
|
|
22
|
+
...n
|
|
23
|
+
}), t[2] = n, t[3] = r), r;
|
|
24
|
+
}
|
|
25
|
+
function g(e) {
|
|
26
|
+
let t = u(13), n, r, i, a;
|
|
27
|
+
t[0] === e ? (n = t[1], r = t[2], i = t[3], a = t[4]) : ({asChild: n, render: a, children: r, ...i} = e, t[0] = e, t[1] = n, t[2] = r, t[3] = i, t[4] = a);
|
|
28
|
+
let o;
|
|
29
|
+
t[5] !== n || t[6] !== r || t[7] !== a ? (o = l(n, a, r), t[5] = n, t[6] = r, t[7] = a, t[8] = o) : o = t[8];
|
|
30
|
+
let s = n ? null : r, d;
|
|
31
|
+
return t[9] !== i || t[10] !== o || t[11] !== s ? (d = /* @__PURE__ */ p(c, {
|
|
32
|
+
"data-slot": "dialog-trigger",
|
|
33
|
+
render: o,
|
|
34
|
+
...i,
|
|
35
|
+
children: s
|
|
36
|
+
}), t[9] = i, t[10] = o, t[11] = s, t[12] = d) : d = t[12], d;
|
|
37
|
+
}
|
|
38
|
+
function _(e) {
|
|
39
|
+
let t = u(4), n;
|
|
40
|
+
t[0] === e ? n = t[1] : ({...n} = e, t[0] = e, t[1] = n);
|
|
41
|
+
let r;
|
|
42
|
+
return t[2] === n ? r = t[3] : (r = /* @__PURE__ */ p(a, {
|
|
43
|
+
"data-slot": "dialog-portal",
|
|
44
|
+
...n
|
|
45
|
+
}), t[2] = n, t[3] = r), r;
|
|
46
|
+
}
|
|
47
|
+
function v(e) {
|
|
48
|
+
let t = u(13), r, i, a, o;
|
|
49
|
+
t[0] === e ? (r = t[1], i = t[2], a = t[3], o = t[4]) : ({asChild: r, render: o, children: i, ...a} = e, t[0] = e, t[1] = r, t[2] = i, t[3] = a, t[4] = o);
|
|
50
|
+
let s;
|
|
51
|
+
t[5] !== r || t[6] !== i || t[7] !== o ? (s = l(r, o, i), t[5] = r, t[6] = i, t[7] = o, t[8] = s) : s = t[8];
|
|
52
|
+
let c = r ? null : i, d;
|
|
53
|
+
return t[9] !== a || t[10] !== s || t[11] !== c ? (d = /* @__PURE__ */ p(n, {
|
|
54
|
+
"data-slot": "dialog-close",
|
|
55
|
+
render: s,
|
|
56
|
+
...a,
|
|
57
|
+
children: c
|
|
58
|
+
}), t[9] = a, t[10] = s, t[11] = c, t[12] = d) : d = t[12], d;
|
|
59
|
+
}
|
|
60
|
+
function y(n) {
|
|
61
|
+
let r = u(8), i, a;
|
|
62
|
+
r[0] === n ? (i = r[1], a = r[2]) : ({className: i, ...a} = n, r[0] = n, r[1] = i, r[2] = a);
|
|
63
|
+
let o;
|
|
64
|
+
r[3] === i ? o = r[4] : (o = e("data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 fixed inset-0 z-50 bg-black/50", i), r[3] = i, r[4] = o);
|
|
65
|
+
let s;
|
|
66
|
+
return r[5] !== a || r[6] !== o ? (s = /* @__PURE__ */ p(t, {
|
|
67
|
+
"data-slot": "dialog-overlay",
|
|
68
|
+
className: o,
|
|
69
|
+
...a
|
|
70
|
+
}), r[5] = a, r[6] = o, r[7] = s) : s = r[7], s;
|
|
71
|
+
}
|
|
72
|
+
var b = d.forwardRef((t, r) => {
|
|
73
|
+
let a = u(18), o, s, c, l, d;
|
|
74
|
+
a[0] === t ? (o = a[1], s = a[2], c = a[3], l = a[4], d = a[5]) : ({className: s, children: o, showCloseButton: l, showCloseButtonOutside: d, ...c} = t, a[0] = t, a[1] = o, a[2] = s, a[3] = c, a[4] = l, a[5] = d);
|
|
75
|
+
let h = l === void 0 || l, g = d !== void 0 && d, v;
|
|
76
|
+
a[6] === Symbol.for("react.memo_cache_sentinel") ? (v = /* @__PURE__ */ p(y, {}), a[6] = v) : v = a[6];
|
|
77
|
+
let b;
|
|
78
|
+
a[7] === s ? b = a[8] : (b = e("bg-background data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 sm:max-w-lg", s), a[7] = s, a[8] = b);
|
|
79
|
+
let x;
|
|
80
|
+
a[9] !== h || a[10] !== g ? (x = h && /* @__PURE__ */ m(n, {
|
|
81
|
+
"data-slot": "dialog-close",
|
|
82
|
+
className: e("absolute ring-offset-background focus:ring-ring transition-opacity focus:ring-2 focus:ring-offset-2 focus:outline-none disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0", g ? "-top-3 -right-3 z-[51] rounded-full border bg-background p-1 opacity-100 hover:bg-accent [&_svg]:size-5" : "top-4 right-4 rounded-xs opacity-70 hover:opacity-100 data-open:bg-accent data-open:text-muted-foreground [&_svg:not([class*='size-'])]:size-4"),
|
|
83
|
+
children: [/* @__PURE__ */ p(f, {}), /* @__PURE__ */ p("span", {
|
|
84
|
+
className: "sr-only",
|
|
85
|
+
children: "Close"
|
|
86
|
+
})]
|
|
87
|
+
}), a[9] = h, a[10] = g, a[11] = x) : x = a[11];
|
|
88
|
+
let S;
|
|
89
|
+
return a[12] !== o || a[13] !== c || a[14] !== r || a[15] !== b || a[16] !== x ? (S = /* @__PURE__ */ m(_, {
|
|
90
|
+
"data-slot": "dialog-portal",
|
|
91
|
+
children: [v, /* @__PURE__ */ m(i, {
|
|
92
|
+
ref: r,
|
|
93
|
+
"data-slot": "dialog-content",
|
|
94
|
+
className: b,
|
|
95
|
+
...c,
|
|
96
|
+
children: [o, x]
|
|
97
|
+
})]
|
|
98
|
+
}), a[12] = o, a[13] = c, a[14] = r, a[15] = b, a[16] = x, a[17] = S) : S = a[17], S;
|
|
99
|
+
});
|
|
100
|
+
b.displayName = "DialogContent";
|
|
101
|
+
function x(t) {
|
|
102
|
+
let n = u(8), r, i;
|
|
103
|
+
n[0] === t ? (r = n[1], i = n[2]) : ({className: r, ...i} = t, n[0] = t, n[1] = r, n[2] = i);
|
|
104
|
+
let a;
|
|
105
|
+
n[3] === r ? a = n[4] : (a = e("flex flex-col gap-2 text-center sm:text-left", r), n[3] = r, n[4] = a);
|
|
106
|
+
let o;
|
|
107
|
+
return n[5] !== i || n[6] !== a ? (o = /* @__PURE__ */ p("div", {
|
|
108
|
+
"data-slot": "dialog-header",
|
|
109
|
+
className: a,
|
|
110
|
+
...i
|
|
111
|
+
}), n[5] = i, n[6] = a, n[7] = o) : o = n[7], o;
|
|
112
|
+
}
|
|
113
|
+
function S(t) {
|
|
114
|
+
let n = u(8), r, i;
|
|
115
|
+
n[0] === t ? (r = n[1], i = n[2]) : ({className: r, ...i} = t, n[0] = t, n[1] = r, n[2] = i);
|
|
116
|
+
let a;
|
|
117
|
+
n[3] === r ? a = n[4] : (a = e("flex flex-col-reverse gap-2 sm:flex-row sm:justify-end", r), n[3] = r, n[4] = a);
|
|
118
|
+
let o;
|
|
119
|
+
return n[5] !== i || n[6] !== a ? (o = /* @__PURE__ */ p("div", {
|
|
120
|
+
"data-slot": "dialog-footer",
|
|
121
|
+
className: a,
|
|
122
|
+
...i
|
|
123
|
+
}), n[5] = i, n[6] = a, n[7] = o) : o = n[7], o;
|
|
124
|
+
}
|
|
125
|
+
function C(t) {
|
|
126
|
+
let n = u(8), r, i;
|
|
127
|
+
n[0] === t ? (r = n[1], i = n[2]) : ({className: r, ...i} = t, n[0] = t, n[1] = r, n[2] = i);
|
|
128
|
+
let a;
|
|
129
|
+
n[3] === r ? a = n[4] : (a = e("text-lg leading-none font-semibold", r), n[3] = r, n[4] = a);
|
|
130
|
+
let o;
|
|
131
|
+
return n[5] !== i || n[6] !== a ? (o = /* @__PURE__ */ p(s, {
|
|
132
|
+
"data-slot": "dialog-title",
|
|
133
|
+
className: a,
|
|
134
|
+
...i
|
|
135
|
+
}), n[5] = i, n[6] = a, n[7] = o) : o = n[7], o;
|
|
136
|
+
}
|
|
137
|
+
function w(t) {
|
|
138
|
+
let n = u(8), i, a;
|
|
139
|
+
n[0] === t ? (i = n[1], a = n[2]) : ({className: i, ...a} = t, n[0] = t, n[1] = i, n[2] = a);
|
|
140
|
+
let o;
|
|
141
|
+
n[3] === i ? o = n[4] : (o = e("text-muted-foreground text-sm", i), n[3] = i, n[4] = o);
|
|
142
|
+
let s;
|
|
143
|
+
return n[5] !== a || n[6] !== o ? (s = /* @__PURE__ */ p(r, {
|
|
144
|
+
"data-slot": "dialog-description",
|
|
145
|
+
className: o,
|
|
146
|
+
...a
|
|
147
|
+
}), n[5] = a, n[6] = o, n[7] = s) : s = n[7], s;
|
|
28
148
|
}
|
|
29
149
|
//#endregion
|
|
30
|
-
export {
|
|
150
|
+
export { h as Dialog, v as DialogClose, b as DialogContent, w as DialogDescription, S as DialogFooter, x as DialogHeader, y as DialogOverlay, _ as DialogPortal, C as DialogTitle, g as DialogTrigger };
|
|
31
151
|
|
|
32
152
|
//# sourceMappingURL=index299.js.map
|
package/dist/index299.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index299.js","names":["initialImages = []","accept = defaultImageAccept","addButtonAriaLabel = \"Ajouter une image\"","removeButtonAriaLabel = \"Supprimer l'image\"","{\n initialImages = [],\n onChange,\n accept = defaultImageAccept,\n addButtonAriaLabel = \"Ajouter une image\",\n removeButtonAriaLabel = \"Supprimer l'image\",\n ...props\n}: ImagesFieldProps","<FilesUploadField\n initialFiles={initialImages}\n onChange={onChange}\n accept={accept}\n addButtonAriaLabel={addButtonAriaLabel}\n removeButtonAriaLabel={removeButtonAriaLabel}\n {...props}\n />"],"sources":["../src/components/ImagesField/index.tsx"],"sourcesContent":["import type { FilesUploadFieldFile, FilesUploadFieldProps } from \"../FilesUploadField\"\nimport { FilesUploadField } from \"../FilesUploadField\"\n\n\nexport type ImagesFieldImage = FilesUploadFieldFile\n\ntype ToImagesFieldProps<T> = T extends unknown\n ? Omit<T, \"initialFiles\" | \"onChange\"> & {\n initialImages?: ImagesFieldImage[]\n onChange?: (images: ImagesFieldImage[]) => void\n }\n : never\n\nexport type ImagesFieldProps = ToImagesFieldProps<FilesUploadFieldProps>\n\nconst defaultImageAccept = [\"image/*\", \".heic\", \".heif\", \"image/heic\", \"image/heif\", \"image/heic-sequence\", \"image/heif-sequence\"]\n\nexport function ImagesField({\n initialImages = [],\n onChange,\n accept = defaultImageAccept,\n addButtonAriaLabel = \"Ajouter une image\",\n removeButtonAriaLabel = \"Supprimer l'image\",\n ...props\n}: ImagesFieldProps) {\n return (\n <FilesUploadField\n initialFiles={initialImages}\n onChange={onChange}\n accept={accept}\n addButtonAriaLabel={addButtonAriaLabel}\n removeButtonAriaLabel={removeButtonAriaLabel}\n {...props}\n />\n )\n}\n"],"mappings":";;;;AAeA,IAAM,IAAqB;CAAC;CAAW;CAAS;CAAS;CAAc;CAAc;CAAuB;AAAqB;AAEjI,SAAgB,EAAA,GAOK;gBALnB,GAIG,GALHA,GAEAC,GACAC,GACAC;CAL0BC,AAAAA,EAAAA,OAAAA,oEAC1B,CAAA,eAAA,gBAEA,QAAA,GACA,oBAAA,GACA,uBAAA,GACA,GAAA,KAN0BA;CAC1BJ,IAAAA;0BAAgB,IAAA,MAAA,KAAA,IAAA,CAAC,IAAjBA;YAEA,IAAA,MAAA,KAAA,IAAS,IAATC,GACA,IAAA,MAAA,KAAA,IAAqB,sBAArBC,GACA,IAAA,MAAA,KAAA,IAAwB,sBAAxBC,GAIEE;CADF,OAIY,EAAA,OAAA,KAAA,EAAA,QACY,KAAA,EAAA,QAHN,KAAA,EAAA,QACJ,KAAA,EAAA,QAIN,KAAA,EAAA,QADmB,KALzB,IAAA,kBAAC,GAAD;EACE,cAAc;EACJ;EACF;EACY;EACG;EACvB,GAAI;CACL,CAAA,GAJS,EAAA,KAAA,GACY,EAAA,MAAA,GAHN,EAAA,MAAA,GACJ,EAAA,MAAA,GAIN,EAAA,MAAA,GADmB,EAAA,MAAA,2BALzBA;AASJ"}
|
|
1
|
+
{"version":3,"file":"index299.js","names":["{\n ...props\n}: DialogPrimitive.Root.Props","<DialogPrimitive.Root data-slot=\"dialog\" {...props} />","DialogPrimitive.Root","{\n asChild,\n render,\n children,\n ...props\n}: DialogPrimitive.Trigger.Props & { asChild?: boolean }","renderAsChild(asChild, render, children)","<DialogPrimitive.Trigger\n data-slot=\"dialog-trigger\"\n render={renderAsChild(asChild, render, children)}\n {...props}\n >\n {asChild ? null : children}\n </DialogPrimitive.Trigger>","asChild ? null : children","DialogPrimitive.Trigger","{\n ...props\n}: DialogPrimitive.Portal.Props","<DialogPrimitive.Portal data-slot=\"dialog-portal\" {...props} />","DialogPrimitive.Portal","{\n asChild,\n render,\n children,\n ...props\n}: DialogPrimitive.Close.Props & { asChild?: boolean }","<DialogPrimitive.Close\n data-slot=\"dialog-close\"\n render={renderAsChild(asChild, render, children)}\n {...props}\n >\n {asChild ? null : children}\n </DialogPrimitive.Close>","DialogPrimitive.Close","{\n className,\n ...props\n}: DialogPrimitive.Backdrop.Props","cn(\n \"data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 fixed inset-0 z-50 bg-black/50\",\n className\n )","<DialogPrimitive.Backdrop\n data-slot=\"dialog-overlay\"\n className={cn(\n \"data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 fixed inset-0 z-50 bg-black/50\",\n className\n )}\n {...props}\n />","DialogPrimitive.Backdrop","showCloseButton = true","showCloseButtonOutside = false","{ className, children, showCloseButton = true, showCloseButtonOutside = false, ...props }","<DialogOverlay />","cn(\n \"bg-background data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 sm:max-w-lg\",\n className\n )","showCloseButton && (\n <DialogPrimitive.Close\n data-slot=\"dialog-close\"\n className={cn(\n \"absolute ring-offset-background focus:ring-ring transition-opacity focus:ring-2 focus:ring-offset-2 focus:outline-none disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n showCloseButtonOutside\n ? \"-top-3 -right-3 z-[51] rounded-full border bg-background p-1 opacity-100 hover:bg-accent [&_svg]:size-5\"\n : \"top-4 right-4 rounded-xs opacity-70 hover:opacity-100 data-open:bg-accent data-open:text-muted-foreground [&_svg:not([class*='size-'])]:size-4\"\n )}\n >\n <XIcon />\n <span className=\"sr-only\">Close</span>\n </DialogPrimitive.Close>\n )","<DialogPortal data-slot=\"dialog-portal\">\n <DialogOverlay />\n <DialogPrimitive.Popup\n ref={ref}\n data-slot=\"dialog-content\"\n className={cn(\n \"bg-background data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 sm:max-w-lg\",\n className\n )}\n {...props}\n >\n {children}\n {showCloseButton && (\n <DialogPrimitive.Close\n data-slot=\"dialog-close\"\n className={cn(\n \"absolute ring-offset-background focus:ring-ring transition-opacity focus:ring-2 focus:ring-offset-2 focus:outline-none disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n showCloseButtonOutside\n ? \"-top-3 -right-3 z-[51] rounded-full border bg-background p-1 opacity-100 hover:bg-accent [&_svg]:size-5\"\n : \"top-4 right-4 rounded-xs opacity-70 hover:opacity-100 data-open:bg-accent data-open:text-muted-foreground [&_svg:not([class*='size-'])]:size-4\"\n )}\n >\n <XIcon />\n <span className=\"sr-only\">Close</span>\n </DialogPrimitive.Close>\n )}\n </DialogPrimitive.Popup>\n </DialogPortal>","DialogPrimitive.Popup","{ className, ...props }: React.ComponentProps<\"div\">","cn(\"flex flex-col gap-2 text-center sm:text-left\", className)","<div\n data-slot=\"dialog-header\"\n className={cn(\"flex flex-col gap-2 text-center sm:text-left\", className)}\n {...props}\n />","cn(\"flex flex-col-reverse gap-2 sm:flex-row sm:justify-end\", className)","<div\n data-slot=\"dialog-footer\"\n className={cn(\"flex flex-col-reverse gap-2 sm:flex-row sm:justify-end\", className)}\n {...props}\n />","{\n className,\n ...props\n}: DialogPrimitive.Title.Props","cn(\"text-lg leading-none font-semibold\", className)","<DialogPrimitive.Title\n data-slot=\"dialog-title\"\n className={cn(\"text-lg leading-none font-semibold\", className)}\n {...props}\n />","DialogPrimitive.Title","{\n className,\n ...props\n}: DialogPrimitive.Description.Props","cn(\"text-muted-foreground text-sm\", className)","<DialogPrimitive.Description\n data-slot=\"dialog-description\"\n className={cn(\"text-muted-foreground text-sm\", className)}\n {...props}\n />","DialogPrimitive.Description","_c","DialogPrimitive.Root","DialogPrimitive.Trigger","DialogPrimitive.Portal","DialogPrimitive.Close","DialogPrimitive.Backdrop","React","DialogPrimitive.Popup","DialogPrimitive.Title","DialogPrimitive.Description","DialogClose$1","DialogDescription$1","DialogPortal$1","DialogTitle$1","DialogTrigger$1","React$1","Dialog","$","c","props","t0","t1","DialogRoot","DialogTrigger","asChild","children","render","renderAsChild","t2","t3","DialogPortal","DialogClose","DialogOverlay","className","cn","DialogBackdrop","DialogContent","showCloseButton","showCloseButtonOutside","t4","t5","XIcon","t6","ref","DialogPopup","DialogHeader","DialogFooter","DialogTitle","DialogDescription"],"sources":["../src/components/Dialog/index.tsx"],"sourcesContent":["import * as React from \"react\"\nimport { Dialog as DialogPrimitive } from \"@base-ui/react/dialog\"\nimport { XIcon } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\nimport { renderAsChild } from \"@/lib/render-as-child\"\n\n\nfunction Dialog({\n ...props\n}: DialogPrimitive.Root.Props) {\n return <DialogPrimitive.Root data-slot=\"dialog\" {...props} />\n}\n\nfunction DialogTrigger({\n asChild,\n render,\n children,\n ...props\n}: DialogPrimitive.Trigger.Props & { asChild?: boolean }) {\n return (\n <DialogPrimitive.Trigger\n data-slot=\"dialog-trigger\"\n render={renderAsChild(asChild, render, children)}\n {...props}\n >\n {asChild ? null : children}\n </DialogPrimitive.Trigger>\n )\n}\n\nfunction DialogPortal({\n ...props\n}: DialogPrimitive.Portal.Props) {\n return <DialogPrimitive.Portal data-slot=\"dialog-portal\" {...props} />\n}\n\nfunction DialogClose({\n asChild,\n render,\n children,\n ...props\n}: DialogPrimitive.Close.Props & { asChild?: boolean }) {\n return (\n <DialogPrimitive.Close\n data-slot=\"dialog-close\"\n render={renderAsChild(asChild, render, children)}\n {...props}\n >\n {asChild ? null : children}\n </DialogPrimitive.Close>\n )\n}\n\nfunction DialogOverlay({\n className,\n ...props\n}: DialogPrimitive.Backdrop.Props) {\n return (\n <DialogPrimitive.Backdrop\n data-slot=\"dialog-overlay\"\n className={cn(\n \"data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 fixed inset-0 z-50 bg-black/50\",\n className\n )}\n {...props}\n />\n )\n}\n\nconst DialogContent = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Popup>,\n DialogPrimitive.Popup.Props & {\n showCloseButton?: boolean\n showCloseButtonOutside?: boolean\n }\n>(({ className, children, showCloseButton = true, showCloseButtonOutside = false, ...props }, ref) => (\n <DialogPortal data-slot=\"dialog-portal\">\n <DialogOverlay />\n <DialogPrimitive.Popup\n ref={ref}\n data-slot=\"dialog-content\"\n className={cn(\n \"bg-background data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 sm:max-w-lg\",\n className\n )}\n {...props}\n >\n {children}\n {showCloseButton && (\n <DialogPrimitive.Close\n data-slot=\"dialog-close\"\n className={cn(\n \"absolute ring-offset-background focus:ring-ring transition-opacity focus:ring-2 focus:ring-offset-2 focus:outline-none disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n showCloseButtonOutside\n ? \"-top-3 -right-3 z-[51] rounded-full border bg-background p-1 opacity-100 hover:bg-accent [&_svg]:size-5\"\n : \"top-4 right-4 rounded-xs opacity-70 hover:opacity-100 data-open:bg-accent data-open:text-muted-foreground [&_svg:not([class*='size-'])]:size-4\"\n )}\n >\n <XIcon />\n <span className=\"sr-only\">Close</span>\n </DialogPrimitive.Close>\n )}\n </DialogPrimitive.Popup>\n </DialogPortal>\n))\nDialogContent.displayName = \"DialogContent\"\n\nfunction DialogHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"dialog-header\"\n className={cn(\"flex flex-col gap-2 text-center sm:text-left\", className)}\n {...props}\n />\n )\n}\n\nfunction DialogFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"dialog-footer\"\n className={cn(\"flex flex-col-reverse gap-2 sm:flex-row sm:justify-end\", className)}\n {...props}\n />\n )\n}\n\nfunction DialogTitle({\n className,\n ...props\n}: DialogPrimitive.Title.Props) {\n return (\n <DialogPrimitive.Title\n data-slot=\"dialog-title\"\n className={cn(\"text-lg leading-none font-semibold\", className)}\n {...props}\n />\n )\n}\n\nfunction DialogDescription({\n className,\n ...props\n}: DialogPrimitive.Description.Props) {\n return (\n <DialogPrimitive.Description\n data-slot=\"dialog-description\"\n className={cn(\"text-muted-foreground text-sm\", className)}\n {...props}\n />\n )\n}\n\nexport {\n Dialog,\n DialogClose,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogOverlay,\n DialogPortal,\n DialogTitle,\n DialogTrigger,\n}\n"],"mappings":"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"}
|
package/dist/index3.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index3.js","names":[],"sources":["../src/helpers/isMobileDevice.ts"],"sourcesContent":["export const isMobileDevice = () => {\n if (typeof navigator === \"undefined\") return false\n return /Android|iPhone|iPad|iPod/i.test(navigator.userAgent)\n}\n"],"mappings":";AAAA,
|
|
1
|
+
{"version":3,"file":"index3.js","names":["isMobileDevice"],"sources":["../src/helpers/isMobileDevice.ts"],"sourcesContent":["export const isMobileDevice = () => {\n if (typeof navigator === \"undefined\") return false\n return /Android|iPhone|iPad|iPod/i.test(navigator.userAgent)\n}\n"],"mappings":";AAAA,IAAaA,UACP,OAAO,YAAc,MAAoB,KACtC,4BAA4B,KAAK,UAAU,SAAS"}
|
package/dist/index30.js
CHANGED
|
@@ -1,12 +1,10 @@
|
|
|
1
|
-
import e from "./
|
|
2
|
-
//#region ../../node_modules/date-fns/
|
|
3
|
-
function t(t
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
weekStartsOn: 1
|
|
7
|
-
});
|
|
1
|
+
import e from "./index25.js";
|
|
2
|
+
//#region ../../node_modules/date-fns/_lib/getTimezoneOffsetInMilliseconds.js
|
|
3
|
+
function t(t) {
|
|
4
|
+
let n = e(t), r = new Date(Date.UTC(n.getFullYear(), n.getMonth(), n.getDate(), n.getHours(), n.getMinutes(), n.getSeconds(), n.getMilliseconds()));
|
|
5
|
+
return r.setUTCFullYear(n.getFullYear()), +t - r;
|
|
8
6
|
}
|
|
9
7
|
//#endregion
|
|
10
|
-
export { t as
|
|
8
|
+
export { t as getTimezoneOffsetInMilliseconds };
|
|
11
9
|
|
|
12
10
|
//# sourceMappingURL=index30.js.map
|
package/dist/index30.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index30.js","names":[],"sources":["../../../node_modules/date-fns/
|
|
1
|
+
{"version":3,"file":"index30.js","names":["toDate","getTimezoneOffsetInMilliseconds","_date","date","utcDate"],"sources":["../../../node_modules/date-fns/_lib/getTimezoneOffsetInMilliseconds.js"],"sourcesContent":["import { toDate } from \"../toDate.js\";\n\n/**\n * Google Chrome as of 67.0.3396.87 introduced timezones with offset that includes seconds.\n * They usually appear for dates that denote time before the timezones were introduced\n * (e.g. for 'Europe/Prague' timezone the offset is GMT+00:57:44 before 1 October 1891\n * and GMT+01:00:00 after that date)\n *\n * Date#getTimezoneOffset returns the offset in minutes and would return 57 for the example above,\n * which would lead to incorrect calculations.\n *\n * This function returns the timezone offset in milliseconds that takes seconds in account.\n */\nexport function getTimezoneOffsetInMilliseconds(date) {\n const _date = toDate(date);\n const utcDate = new Date(\n Date.UTC(\n _date.getFullYear(),\n _date.getMonth(),\n _date.getDate(),\n _date.getHours(),\n _date.getMinutes(),\n _date.getSeconds(),\n _date.getMilliseconds(),\n ),\n );\n utcDate.setUTCFullYear(_date.getFullYear());\n return +date - +utcDate;\n}\n"],"ignoreList":[0],"mappings":";;AAaA,SAAgBC,EAAgC,GAAM;CACpD,IAAMC,IAAQF,EAAOG,CAAI,GACnBC,IAAU,IAAI,KAClB,KAAK,IACHF,EAAM,YAAY,GAClBA,EAAM,SAAS,GACfA,EAAM,QAAQ,GACdA,EAAM,SAAS,GACfA,EAAM,WAAW,GACjBA,EAAM,WAAW,GACjBA,EAAM,gBAAgB,CACxB,CACF;CAEA,OADAE,EAAQ,eAAeF,EAAM,YAAY,CAAC,GACnC,CAACC,IAAQC;AAClB"}
|