@rpcbase/ui 0.224.0 → 0.226.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/components/DayPickerField/index.d.ts.map +1 -1
- package/dist/components/Dialog/index.d.ts +13 -9
- package/dist/components/Dialog/index.d.ts.map +1 -1
- package/dist/components/FilesUploadField/index.d.ts.map +1 -1
- package/dist/components/HourPickerField/index.d.ts.map +1 -1
- package/dist/components/PhoneNumberInput/index.d.ts.map +1 -1
- package/dist/components/PhoneNumberInput/suggestions.d.ts.map +1 -1
- package/dist/components/Select/index.d.ts +16 -10
- package/dist/components/Select/index.d.ts.map +1 -1
- package/dist/index10.js +102 -103
- package/dist/index10.js.map +1 -1
- package/dist/index100.js +11 -4
- package/dist/index100.js.map +1 -1
- package/dist/index101.js +69 -52
- package/dist/index101.js.map +1 -1
- package/dist/index102.js +38 -5
- package/dist/index102.js.map +1 -1
- package/dist/index103.js +14 -5
- package/dist/index103.js.map +1 -1
- package/dist/index104.js +23 -15
- package/dist/index104.js.map +1 -1
- package/dist/index105.js +110 -5
- package/dist/index105.js.map +1 -1
- package/dist/index106.js +13 -8
- package/dist/index106.js.map +1 -1
- package/dist/index107.js +4 -16
- package/dist/index107.js.map +1 -1
- package/dist/index108.js +4 -5
- package/dist/index108.js.map +1 -1
- package/dist/index109.js +5 -5
- package/dist/index109.js.map +1 -1
- package/dist/index110.js +11 -5
- package/dist/index110.js.map +1 -1
- package/dist/index111.js +19 -5
- package/dist/index111.js.map +1 -1
- package/dist/index112.js +13 -5
- package/dist/index112.js.map +1 -1
- package/dist/index113.js +261 -4
- package/dist/index113.js.map +1 -1
- package/dist/index114.js +4 -6
- package/dist/index114.js.map +1 -1
- package/dist/index115.js +28 -25
- package/dist/index115.js.map +1 -1
- package/dist/index116.js +126 -6
- package/dist/index116.js.map +1 -1
- package/dist/index117.js +5 -4
- package/dist/index117.js.map +1 -1
- package/dist/index118.js +78 -6
- package/dist/index118.js.map +1 -1
- package/dist/index119.js +66 -5
- package/dist/index119.js.map +1 -1
- package/dist/index12.js +1 -1
- package/dist/index120.js +8 -4
- package/dist/index120.js.map +1 -1
- package/dist/index121.js +16 -6
- package/dist/index121.js.map +1 -1
- package/dist/index122.js +92 -4
- package/dist/index122.js.map +1 -1
- package/dist/index123.js +65 -8
- package/dist/index123.js.map +1 -1
- package/dist/index124.js +45 -5
- package/dist/index124.js.map +1 -1
- package/dist/index125.js +52 -5
- package/dist/index125.js.map +1 -1
- package/dist/index126.js +4 -4
- package/dist/index126.js.map +1 -1
- package/dist/index127.js +4 -6
- package/dist/index127.js.map +1 -1
- package/dist/index128.js +15 -145
- package/dist/index128.js.map +1 -1
- package/dist/index129.js +5 -39
- package/dist/index129.js.map +1 -1
- package/dist/index130.js +7 -4
- package/dist/index130.js.map +1 -1
- package/dist/index131.js +16 -7
- package/dist/index131.js.map +1 -1
- package/dist/index132.js +4 -13
- package/dist/index132.js.map +1 -1
- package/dist/index133.js +4 -13
- package/dist/index133.js.map +1 -1
- package/dist/index134.js +5 -7
- package/dist/index134.js.map +1 -1
- package/dist/index135.js +5 -31
- package/dist/index135.js.map +1 -1
- package/dist/index136.js +4 -10
- package/dist/index136.js.map +1 -1
- package/dist/index137.js +4 -10
- package/dist/index137.js.map +1 -1
- package/dist/index138.js +6 -8
- package/dist/index138.js.map +1 -1
- package/dist/index139.js +24 -13
- package/dist/index139.js.map +1 -1
- package/dist/index140.js +6 -101
- package/dist/index140.js.map +1 -1
- package/dist/index141.js +5 -20
- package/dist/index141.js.map +1 -1
- package/dist/index142.js +6 -53
- package/dist/index142.js.map +1 -1
- package/dist/index143.js +5 -72
- package/dist/index143.js.map +1 -1
- package/dist/index144.js +4 -9
- package/dist/index144.js.map +1 -1
- package/dist/index145.js +5 -20
- package/dist/index145.js.map +1 -1
- package/dist/index146.js +4 -16
- package/dist/index146.js.map +1 -1
- package/dist/index147.js +8 -23
- package/dist/index147.js.map +1 -1
- package/dist/index148.js +5 -6
- package/dist/index148.js.map +1 -1
- package/dist/index149.js +4 -5
- package/dist/index149.js.map +1 -1
- package/dist/index150.js +3 -22
- package/dist/index150.js.map +1 -1
- package/dist/index151.js +7 -35
- package/dist/index151.js.map +1 -1
- package/dist/index152.js +146 -16
- package/dist/index152.js.map +1 -1
- package/dist/index153.js +39 -6
- package/dist/index153.js.map +1 -1
- package/dist/index154.js +4 -4
- package/dist/index154.js.map +1 -1
- package/dist/index155.js +7 -4
- package/dist/index155.js.map +1 -1
- package/dist/index156.js +13 -4
- package/dist/index156.js.map +1 -1
- package/dist/index157.js +13 -4
- package/dist/index157.js.map +1 -1
- package/dist/index158.js +7 -3
- package/dist/index158.js.map +1 -1
- package/dist/index159.js +31 -6
- package/dist/index159.js.map +1 -1
- package/dist/index16.js +77 -72
- package/dist/index16.js.map +1 -1
- package/dist/index160.js +11 -24
- package/dist/index160.js.map +1 -1
- package/dist/index161.js +10 -7
- package/dist/index161.js.map +1 -1
- package/dist/index162.js +8 -6
- package/dist/index162.js.map +1 -1
- package/dist/index163.js +13 -5
- package/dist/index163.js.map +1 -1
- package/dist/index164.js +101 -3
- package/dist/index164.js.map +1 -1
- package/dist/index165.js +20 -4
- package/dist/index165.js.map +1 -1
- package/dist/index166.js +53 -4
- package/dist/index166.js.map +1 -1
- package/dist/index167.js +72 -3
- package/dist/index167.js.map +1 -1
- package/dist/index168.js +9 -4
- package/dist/index168.js.map +1 -1
- package/dist/index169.js +20 -3
- package/dist/index169.js.map +1 -1
- package/dist/index170.js +16 -3
- package/dist/index170.js.map +1 -1
- package/dist/index171.js +23 -3
- package/dist/index171.js.map +1 -1
- package/dist/index172.js +6 -46
- package/dist/index172.js.map +1 -1
- package/dist/index173.js +5 -229
- package/dist/index173.js.map +1 -1
- package/dist/index174.js +24 -22
- package/dist/index174.js.map +1 -1
- package/dist/index175.js +35 -25
- package/dist/index175.js.map +1 -1
- package/dist/index176.js +16 -401
- package/dist/index176.js.map +1 -1
- package/dist/index177.js +6 -13
- package/dist/index177.js.map +1 -1
- package/dist/index178.js +4 -154
- package/dist/index178.js.map +1 -1
- package/dist/index179.js +4 -30
- package/dist/index179.js.map +1 -1
- package/dist/index18.js +205 -186
- package/dist/index18.js.map +1 -1
- package/dist/index180.js +4 -9
- package/dist/index180.js.map +1 -1
- package/dist/index181.js +4 -48
- package/dist/index181.js.map +1 -1
- package/dist/index182.js +3 -11
- package/dist/index182.js.map +1 -1
- package/dist/index183.js +6 -44
- package/dist/index183.js.map +1 -1
- package/dist/index184.js +24 -96
- package/dist/index184.js.map +1 -1
- package/dist/index185.js +7 -86
- package/dist/index185.js.map +1 -1
- package/dist/index186.js +6 -105
- package/dist/index186.js.map +1 -1
- package/dist/index187.js +5 -52
- package/dist/index187.js.map +1 -1
- package/dist/index188.js +3 -11
- package/dist/index188.js.map +1 -1
- package/dist/index189.js +3 -37
- package/dist/index189.js.map +1 -1
- package/dist/index19.js +280 -208
- package/dist/index19.js.map +1 -1
- package/dist/index190.js +4 -8
- package/dist/index190.js.map +1 -1
- package/dist/index191.js +3 -116
- package/dist/index191.js.map +1 -1
- package/dist/index192.js +4 -17
- package/dist/index192.js.map +1 -1
- package/dist/index193.js +3 -15
- package/dist/index193.js.map +1 -1
- package/dist/index194.js +3 -3
- package/dist/index194.js.map +1 -1
- package/dist/index195.js +3 -36
- package/dist/index195.js.map +1 -1
- package/dist/index196.js +13 -20
- package/dist/index196.js.map +1 -1
- package/dist/index197.js +154 -9
- package/dist/index197.js.map +1 -1
- package/dist/index198.js +30 -8
- package/dist/index198.js.map +1 -1
- package/dist/index199.js +9 -19
- package/dist/index199.js.map +1 -1
- package/dist/index200.js +45 -25
- package/dist/index200.js.map +1 -1
- package/dist/index201.js +11 -16
- package/dist/index201.js.map +1 -1
- package/dist/index202.js +44 -58
- package/dist/index202.js.map +1 -1
- package/dist/index203.js +95 -8
- package/dist/index203.js.map +1 -1
- package/dist/index204.js +81 -61
- package/dist/index204.js.map +1 -1
- package/dist/index205.js +103 -17
- package/dist/index205.js.map +1 -1
- package/dist/index206.js +50 -14
- package/dist/index206.js.map +1 -1
- package/dist/index207.js +10 -4
- package/dist/index207.js.map +1 -1
- package/dist/index208.js +36 -4
- package/dist/index208.js.map +1 -1
- package/dist/index209.js +8 -6
- package/dist/index209.js.map +1 -1
- package/dist/index210.js +116 -4
- package/dist/index210.js.map +1 -1
- package/dist/index211.js +17 -6
- package/dist/index211.js.map +1 -1
- package/dist/index212.js +15 -16
- package/dist/index212.js.map +1 -1
- package/dist/index213.js +3 -4
- package/dist/index213.js.map +1 -1
- package/dist/index214.js +36 -4
- package/dist/index214.js.map +1 -1
- package/dist/index215.js +20 -12
- package/dist/index215.js.map +1 -1
- package/dist/index216.js +9 -9
- package/dist/index216.js.map +1 -1
- package/dist/index217.js +8 -13
- package/dist/index217.js.map +1 -1
- package/dist/index218.js +19 -13
- package/dist/index218.js.map +1 -1
- package/dist/index219.js +28 -4
- package/dist/index219.js.map +1 -1
- package/dist/index220.js +16 -5
- package/dist/index220.js.map +1 -1
- package/dist/index221.js +66 -6
- package/dist/index221.js.map +1 -1
- package/dist/index222.js +8 -5
- package/dist/index222.js.map +1 -1
- package/dist/index223.js +11 -54
- package/dist/index223.js.map +1 -1
- package/dist/index224.js +8 -8
- package/dist/index224.js.map +1 -1
- package/dist/index225.js +5 -4
- package/dist/index225.js.map +1 -1
- package/dist/index226.js +13 -4
- package/dist/index226.js.map +1 -1
- package/dist/index227.js +3 -8
- package/dist/index227.js.map +1 -1
- package/dist/index228.js +3 -4
- package/dist/index228.js.map +1 -1
- package/dist/index229.js +99 -4
- package/dist/index229.js.map +1 -1
- package/dist/index230.js +29 -3
- package/dist/index230.js.map +1 -1
- package/dist/index231.js +51 -10
- package/dist/index231.js.map +1 -1
- package/dist/index232.js +17 -9
- package/dist/index232.js.map +1 -1
- package/dist/index233.js +5 -9
- package/dist/index233.js.map +1 -1
- package/dist/index234.js +122 -10
- package/dist/index234.js.map +1 -1
- package/dist/index235.js +27 -10
- package/dist/index235.js.map +1 -1
- package/dist/index236.js +32 -9
- package/dist/index236.js.map +1 -1
- package/dist/index237.js +73 -6
- package/dist/index237.js.map +1 -1
- package/dist/index238.js +262 -5
- package/dist/index238.js.map +1 -1
- package/dist/index239.js +28 -4
- package/dist/index239.js.map +1 -1
- package/dist/index240.js +6 -5
- package/dist/index240.js.map +1 -1
- package/dist/index241.js +142 -6
- package/dist/index241.js.map +1 -1
- package/dist/index242.js +61 -5
- package/dist/index242.js.map +1 -1
- package/dist/index243.js +49 -16
- package/dist/index243.js.map +1 -1
- package/dist/index244.js +15 -8
- package/dist/index244.js.map +1 -1
- package/dist/index245.js +132 -9
- package/dist/index245.js.map +1 -1
- package/dist/index246.js +7 -9
- package/dist/index246.js.map +1 -1
- package/dist/index247.js +5 -22
- package/dist/index247.js.map +1 -1
- package/dist/index248.js +4 -11
- package/dist/index248.js.map +1 -1
- package/dist/index249.js +11 -9
- package/dist/index249.js.map +1 -1
- package/dist/index250.js +21 -9
- package/dist/index250.js.map +1 -1
- package/dist/index251.js +20 -5
- package/dist/index251.js.map +1 -1
- package/dist/index252.js +11 -5
- package/dist/index252.js.map +1 -1
- package/dist/index253.js +48 -14
- package/dist/index253.js.map +1 -1
- package/dist/index254.js +16 -9
- package/dist/index254.js.map +1 -1
- package/dist/index255.js +21 -18
- package/dist/index255.js.map +1 -1
- package/dist/index256.js +50 -14
- package/dist/index256.js.map +1 -1
- package/dist/index257.js +25 -12
- package/dist/index257.js.map +1 -1
- package/dist/index258.js +41 -29
- package/dist/index258.js.map +1 -1
- package/dist/index259.js +39 -12
- package/dist/index259.js.map +1 -1
- package/dist/index260.js +45 -26
- package/dist/index260.js.map +1 -1
- package/dist/index261.js +20 -5
- package/dist/index261.js.map +1 -1
- package/dist/index262.js +68 -22
- package/dist/index262.js.map +1 -1
- package/dist/index263.js +18 -29
- package/dist/index263.js.map +1 -1
- package/dist/index264.js +12 -5
- package/dist/index264.js.map +1 -1
- package/dist/index265.js +12 -19
- package/dist/index265.js.map +1 -1
- package/dist/index266.js +18 -4
- package/dist/index266.js.map +1 -1
- package/dist/index267.js +36 -17
- package/dist/index267.js.map +1 -1
- package/dist/index268.js +278 -12
- package/dist/index268.js.map +1 -1
- package/dist/index269.js +69 -5
- package/dist/index269.js.map +1 -1
- package/dist/index270.js +84 -3
- package/dist/index270.js.map +1 -1
- package/dist/index271.js +3 -23
- package/dist/index271.js.map +1 -1
- package/dist/index272.js +28 -111
- package/dist/index272.js.map +1 -1
- package/dist/index273.js +16 -15
- package/dist/index273.js.map +1 -1
- package/dist/index274.js +32 -527
- package/dist/index274.js.map +1 -1
- package/dist/index275.js +14 -123
- package/dist/index275.js.map +1 -1
- package/dist/index276.js +3 -133
- package/dist/index276.js.map +1 -1
- package/dist/index277.js +26 -4
- package/dist/index277.js.map +1 -1
- package/dist/index278.js +4 -5
- package/dist/index278.js.map +1 -1
- package/dist/index279.js +79 -4
- package/dist/index279.js.map +1 -1
- package/dist/index28.js +1 -1
- package/dist/index280.js +269 -15
- package/dist/index280.js.map +1 -1
- package/dist/index281.js +11 -8
- package/dist/index281.js.map +1 -1
- package/dist/index282.js +10 -5
- package/dist/index282.js.map +1 -1
- package/dist/index283.js +25 -4
- package/dist/index283.js.map +1 -1
- package/dist/index284.js +16 -545
- package/dist/index284.js.map +1 -1
- package/dist/index285.js +123 -44
- package/dist/index285.js.map +1 -1
- package/dist/index286.js +5 -17
- package/dist/index286.js.map +1 -1
- package/dist/index287.js +40 -5
- package/dist/index287.js.map +1 -1
- package/dist/index288.js +65 -7
- package/dist/index288.js.map +1 -1
- package/dist/index289.js +14 -7
- package/dist/index289.js.map +1 -1
- package/dist/index290.js +7 -7
- package/dist/index290.js.map +1 -1
- package/dist/index291.js +5 -11
- package/dist/index291.js.map +1 -1
- package/dist/index292.js +3 -8
- package/dist/index292.js.map +1 -1
- package/dist/index293.js +10 -12
- package/dist/index293.js.map +1 -1
- package/dist/index294.js +8 -69
- package/dist/index294.js.map +1 -1
- package/dist/index295.js +398 -7
- package/dist/index295.js.map +1 -1
- package/dist/index296.js +53 -14
- package/dist/index296.js.map +1 -1
- package/dist/index297.js +12 -66
- package/dist/index297.js.map +1 -1
- package/dist/index298.js +11 -64
- package/dist/index298.js.map +1 -1
- package/dist/index299.js +58 -4
- package/dist/index299.js.map +1 -1
- package/dist/index30.js +1 -1
- package/dist/index300.js +9 -56
- package/dist/index300.js.map +1 -1
- package/dist/index301.js +66 -67
- package/dist/index301.js.map +1 -1
- package/dist/index302.js +20 -31
- package/dist/index302.js.map +1 -1
- package/dist/index303.js +17 -9
- package/dist/index303.js.map +1 -1
- package/dist/index304.js +5 -152
- package/dist/index304.js.map +1 -1
- package/dist/index305.js +5 -107
- package/dist/index305.js.map +1 -1
- package/dist/index306.js +6 -3
- package/dist/index306.js.map +1 -1
- package/dist/index307.js +4 -22
- package/dist/index307.js.map +1 -1
- package/dist/index308.js +6 -15
- package/dist/index308.js.map +1 -1
- package/dist/index309.js +16 -28
- package/dist/index309.js.map +1 -1
- package/dist/index31.js +227 -120
- package/dist/index31.js.map +1 -1
- package/dist/index310.js +4 -12
- package/dist/index310.js.map +1 -1
- package/dist/index311.js +4 -6
- package/dist/index311.js.map +1 -1
- package/dist/index312.js +13 -23
- package/dist/index312.js.map +1 -1
- package/dist/index313.js +10 -13
- package/dist/index313.js.map +1 -1
- package/dist/index314.js +13 -27
- package/dist/index314.js.map +1 -1
- package/dist/index315.js +14 -5
- package/dist/index315.js.map +1 -1
- package/dist/index316.js +8 -0
- package/dist/index316.js.map +1 -0
- package/dist/index317.js +9 -0
- package/dist/index317.js.map +1 -0
- package/dist/index318.js +10 -0
- package/dist/index318.js.map +1 -0
- package/dist/index319.js +9 -0
- package/dist/index319.js.map +1 -0
- package/dist/index32.js +21 -229
- package/dist/index32.js.map +1 -1
- package/dist/index320.js +58 -0
- package/dist/index320.js.map +1 -0
- package/dist/index321.js +12 -0
- package/dist/index321.js.map +1 -0
- package/dist/index322.js +8 -0
- package/dist/index322.js.map +1 -0
- package/dist/index323.js +8 -0
- package/dist/index323.js.map +1 -0
- package/dist/index324.js +12 -0
- package/dist/index324.js.map +1 -0
- package/dist/index325.js +8 -0
- package/dist/index325.js.map +1 -0
- package/dist/index326.js +8 -0
- package/dist/index326.js.map +1 -0
- package/dist/index327.js +7 -0
- package/dist/index327.js.map +1 -0
- package/dist/index328.js +14 -0
- package/dist/index328.js.map +1 -0
- package/dist/index329.js +13 -0
- package/dist/index329.js.map +1 -0
- package/dist/index33.js +4 -23
- package/dist/index33.js.map +1 -1
- package/dist/index330.js +13 -0
- package/dist/index330.js.map +1 -0
- package/dist/index331.js +14 -0
- package/dist/index331.js.map +1 -0
- package/dist/index332.js +14 -0
- package/dist/index332.js.map +1 -0
- package/dist/index333.js +13 -0
- package/dist/index333.js.map +1 -0
- package/dist/index334.js +10 -0
- package/dist/index334.js.map +1 -0
- package/dist/index335.js +9 -0
- package/dist/index335.js.map +1 -0
- package/dist/index336.js +8 -0
- package/dist/index336.js.map +1 -0
- package/dist/index337.js +9 -0
- package/dist/index337.js.map +1 -0
- package/dist/index338.js +10 -0
- package/dist/index338.js.map +1 -0
- package/dist/index339.js +9 -0
- package/dist/index339.js.map +1 -0
- package/dist/index34.js +62 -51
- package/dist/index34.js.map +1 -1
- package/dist/index340.js +20 -0
- package/dist/index340.js.map +1 -0
- package/dist/index341.js +11 -0
- package/dist/index341.js.map +1 -0
- package/dist/index342.js +14 -0
- package/dist/index342.js.map +1 -0
- package/dist/index343.js +14 -0
- package/dist/index343.js.map +1 -0
- package/dist/index344.js +25 -0
- package/dist/index344.js.map +1 -0
- package/dist/index345.js +14 -0
- package/dist/index345.js.map +1 -0
- package/dist/index346.js +13 -0
- package/dist/index346.js.map +1 -0
- package/dist/index347.js +13 -0
- package/dist/index347.js.map +1 -0
- package/dist/index348.js +8 -0
- package/dist/index348.js.map +1 -0
- package/dist/index349.js +9 -0
- package/dist/index349.js.map +1 -0
- package/dist/index35.js +38 -21
- package/dist/index35.js.map +1 -1
- package/dist/index350.js +20 -0
- package/dist/index350.js.map +1 -0
- package/dist/index351.js +13 -0
- package/dist/index351.js.map +1 -0
- package/dist/index352.js +22 -0
- package/dist/index352.js.map +1 -0
- package/dist/index353.js +19 -0
- package/dist/index353.js.map +1 -0
- package/dist/index354.js +16 -0
- package/dist/index354.js.map +1 -0
- package/dist/index355.js +33 -0
- package/dist/index355.js.map +1 -0
- package/dist/index356.js +16 -0
- package/dist/index356.js.map +1 -0
- package/dist/index357.js +29 -0
- package/dist/index357.js.map +1 -0
- package/dist/index358.js +9 -0
- package/dist/index358.js.map +1 -0
- package/dist/index359.js +24 -0
- package/dist/index359.js.map +1 -0
- package/dist/index36.js +75 -127
- package/dist/index36.js.map +1 -1
- package/dist/index360.js +12 -0
- package/dist/index360.js.map +1 -0
- package/dist/index361.js +29 -0
- package/dist/index361.js.map +1 -0
- package/dist/index362.js +30 -0
- package/dist/index362.js.map +1 -0
- package/dist/index363.js +141 -0
- package/dist/index363.js.map +1 -0
- package/dist/index364.js +16 -0
- package/dist/index364.js.map +1 -0
- package/dist/index365.js +230 -0
- package/dist/index365.js.map +1 -0
- package/dist/index366.js +7 -0
- package/dist/index366.js.map +1 -0
- package/dist/index367.js +23 -0
- package/dist/index367.js.map +1 -0
- package/dist/index368.js +81 -0
- package/dist/index368.js.map +1 -0
- package/dist/index369.js +15 -0
- package/dist/index369.js.map +1 -0
- package/dist/index37.js +22 -221
- package/dist/index37.js.map +1 -1
- package/dist/index370.js +7 -0
- package/dist/index370.js.map +1 -0
- package/dist/index371.js +81 -0
- package/dist/index371.js.map +1 -0
- package/dist/index372.js +204 -0
- package/dist/index372.js.map +1 -0
- package/dist/index373.js +75 -0
- package/dist/index373.js.map +1 -0
- package/dist/index374.js +12 -0
- package/dist/index374.js.map +1 -0
- package/dist/index375.js +20 -0
- package/dist/index375.js.map +1 -0
- package/dist/index376.js +19 -0
- package/dist/index376.js.map +1 -0
- package/dist/index377.js +7 -0
- package/dist/index377.js.map +1 -0
- package/dist/index378.js +15 -0
- package/dist/index378.js.map +1 -0
- package/dist/index379.js +9 -0
- package/dist/index379.js.map +1 -0
- package/dist/index38.js +37 -90
- package/dist/index38.js.map +1 -1
- package/dist/index380.js +24 -0
- package/dist/index380.js.map +1 -0
- package/dist/index381.js +48 -0
- package/dist/index381.js.map +1 -0
- package/dist/index382.js +21 -0
- package/dist/index382.js.map +1 -0
- package/dist/index383.js +8 -0
- package/dist/index383.js.map +1 -0
- package/dist/index384.js +8 -0
- package/dist/index384.js.map +1 -0
- package/dist/index385.js +21 -0
- package/dist/index385.js.map +1 -0
- package/dist/index386.js +16 -0
- package/dist/index386.js.map +1 -0
- package/dist/index387.js +18 -0
- package/dist/index387.js.map +1 -0
- package/dist/index388.js +495 -0
- package/dist/index388.js.map +1 -0
- package/dist/index389.js +6 -0
- package/dist/index389.js.map +1 -0
- package/dist/index39.js +28 -119
- package/dist/index39.js.map +1 -1
- package/dist/index390.js +6 -0
- package/dist/index390.js.map +1 -0
- package/dist/index391.js +8 -0
- package/dist/index391.js.map +1 -0
- package/dist/index392.js +8 -0
- package/dist/index392.js.map +1 -0
- package/dist/index393.js +7 -0
- package/dist/index393.js.map +1 -0
- package/dist/index394.js +19 -0
- package/dist/index394.js.map +1 -0
- package/dist/index395.js +12 -0
- package/dist/index395.js.map +1 -0
- package/dist/index396.js +9 -0
- package/dist/index396.js.map +1 -0
- package/dist/index397.js +8 -0
- package/dist/index397.js.map +1 -0
- package/dist/index398.js +549 -0
- package/dist/index398.js.map +1 -0
- package/dist/index399.js +50 -0
- package/dist/index399.js.map +1 -0
- package/dist/index40.js +23 -6
- package/dist/index40.js.map +1 -1
- package/dist/index400.js +21 -0
- package/dist/index400.js.map +1 -0
- package/dist/index401.js +9 -0
- package/dist/index401.js.map +1 -0
- package/dist/index402.js +11 -0
- package/dist/index402.js.map +1 -0
- package/dist/index403.js +10 -0
- package/dist/index403.js.map +1 -0
- package/dist/index404.js +11 -0
- package/dist/index404.js.map +1 -0
- package/dist/index405.js +15 -0
- package/dist/index405.js.map +1 -0
- package/dist/index406.js +12 -0
- package/dist/index406.js.map +1 -0
- package/dist/index407.js +16 -0
- package/dist/index407.js.map +1 -0
- package/dist/index408.js +11 -0
- package/dist/index408.js.map +1 -0
- package/dist/index409.js +5 -0
- package/dist/index409.js.map +1 -0
- package/dist/index41.js +51 -817
- package/dist/index41.js.map +1 -1
- package/dist/index410.js +47 -0
- package/dist/index410.js.map +1 -0
- package/dist/index411.js +59 -0
- package/dist/index411.js.map +1 -0
- package/dist/index412.js +11 -0
- package/dist/index412.js.map +1 -0
- package/dist/index413.js +5 -0
- package/dist/index413.js.map +1 -0
- package/dist/index414.js +58 -0
- package/dist/index414.js.map +1 -0
- package/dist/index415.js +59 -0
- package/dist/index415.js.map +1 -0
- package/dist/index416.js +8 -0
- package/dist/index416.js.map +1 -0
- package/dist/index417.js +59 -0
- package/dist/index417.js.map +1 -0
- package/dist/index418.js +71 -0
- package/dist/index418.js.map +1 -0
- package/dist/index419.js +34 -0
- package/dist/index419.js.map +1 -0
- package/dist/index42.js +51 -57
- package/dist/index42.js.map +1 -1
- package/dist/index420.js +12 -0
- package/dist/index420.js.map +1 -0
- package/dist/index421.js +156 -0
- package/dist/index421.js.map +1 -0
- package/dist/index422.js +111 -0
- package/dist/index422.js.map +1 -0
- package/dist/index423.js +5 -0
- package/dist/index423.js.map +1 -0
- package/dist/index424.js +5 -0
- package/dist/index424.js.map +1 -0
- package/dist/index425.js +5 -0
- package/dist/index425.js.map +1 -0
- package/dist/index426.js +5 -0
- package/dist/index426.js.map +1 -0
- package/dist/index427.js +19 -0
- package/dist/index427.js.map +1 -0
- package/dist/index428.js +32 -0
- package/dist/index428.js.map +1 -0
- package/dist/index429.js +16 -0
- package/dist/index429.js.map +1 -0
- package/dist/index43.js +21 -7
- package/dist/index43.js.map +1 -1
- package/dist/index430.js +10 -0
- package/dist/index430.js.map +1 -0
- package/dist/index44.js +130 -2
- package/dist/index44.js.map +1 -1
- package/dist/index45.js +221 -11
- package/dist/index45.js.map +1 -1
- package/dist/index46.js +90 -18
- package/dist/index46.js.map +1 -1
- package/dist/index47.js +126 -7
- package/dist/index47.js.map +1 -1
- package/dist/index48.js +6 -2
- package/dist/index48.js.map +1 -1
- package/dist/index49.js +326 -23
- package/dist/index49.js.map +1 -1
- package/dist/index50.js +247 -221
- package/dist/index50.js.map +1 -1
- package/dist/index51.js +27 -2
- package/dist/index51.js.map +1 -1
- package/dist/index52.js +129 -2
- package/dist/index52.js.map +1 -1
- package/dist/index53.js +26 -2
- package/dist/index53.js.map +1 -1
- package/dist/index54.js +23 -2
- package/dist/index54.js.map +1 -1
- package/dist/index55.js +145 -6
- package/dist/index55.js.map +1 -1
- package/dist/index56.js +34 -33
- package/dist/index56.js.map +1 -1
- package/dist/index57.js +28 -48
- package/dist/index57.js.map +1 -1
- package/dist/index58.js +41 -8
- package/dist/index58.js.map +1 -1
- package/dist/index59.js +21 -12
- package/dist/index59.js.map +1 -1
- package/dist/index6.js +84 -85
- package/dist/index6.js.map +1 -1
- package/dist/index60.js +132 -6
- package/dist/index60.js.map +1 -1
- package/dist/index61.js +51 -8
- package/dist/index61.js.map +1 -1
- package/dist/index62.js +30 -6
- package/dist/index62.js.map +1 -1
- package/dist/index63.js +57 -4
- package/dist/index63.js.map +1 -1
- package/dist/index64.js +7 -47
- package/dist/index64.js.map +1 -1
- package/dist/index65.js +2 -51
- package/dist/index65.js.map +1 -1
- package/dist/index66.js +11 -7
- package/dist/index66.js.map +1 -1
- package/dist/index67.js +17 -13
- package/dist/index67.js.map +1 -1
- package/dist/index68.js +7 -133
- package/dist/index68.js.map +1 -1
- package/dist/index69.js +2 -11
- package/dist/index69.js.map +1 -1
- package/dist/index7.js +123 -98
- package/dist/index7.js.map +1 -1
- package/dist/index70.js +22 -215
- package/dist/index70.js.map +1 -1
- package/dist/index71.js +234 -13
- package/dist/index71.js.map +1 -1
- package/dist/index72.js +5 -46
- package/dist/index72.js.map +1 -1
- package/dist/index73.js +7 -49
- package/dist/index73.js.map +1 -1
- package/dist/index74.js +6 -4
- package/dist/index74.js.map +1 -1
- package/dist/index75.js +2 -6
- package/dist/index75.js.map +1 -1
- package/dist/index76.js +2 -28
- package/dist/index76.js.map +1 -1
- package/dist/index77.js +2 -50
- package/dist/index77.js.map +1 -1
- package/dist/index78.js +2 -9
- package/dist/index78.js.map +1 -1
- package/dist/index79.js +5 -46
- package/dist/index79.js.map +1 -1
- package/dist/index8.js +53 -54
- package/dist/index8.js.map +1 -1
- package/dist/index80.js +68 -5
- package/dist/index80.js.map +1 -1
- package/dist/index81.js +2 -69
- package/dist/index81.js.map +1 -1
- package/dist/index82.js +364 -2
- package/dist/index82.js.map +1 -1
- package/dist/index83.js +201 -303
- package/dist/index83.js.map +1 -1
- package/dist/index84.js +46 -247
- package/dist/index84.js.map +1 -1
- package/dist/index85.js +42 -56
- package/dist/index85.js.map +1 -1
- package/dist/index86.js +169 -46
- package/dist/index86.js.map +1 -1
- package/dist/index87.js +96 -156
- package/dist/index87.js.map +1 -1
- package/dist/index88.js +24 -109
- package/dist/index88.js.map +1 -1
- package/dist/index89.js +8 -25
- package/dist/index89.js.map +1 -1
- package/dist/index9.js +1 -1
- package/dist/index90.js +5 -8
- package/dist/index90.js.map +1 -1
- package/dist/index91.js +5 -4
- package/dist/index91.js.map +1 -1
- package/dist/index92.js +4 -5
- package/dist/index92.js.map +1 -1
- package/dist/index93.js +466 -4
- package/dist/index93.js.map +1 -1
- package/dist/index94.js +139 -420
- package/dist/index94.js.map +1 -1
- package/dist/index95.js +71 -149
- package/dist/index95.js.map +1 -1
- package/dist/index96.js +229 -74
- package/dist/index96.js.map +1 -1
- package/dist/index97.js +9 -262
- package/dist/index97.js.map +1 -1
- package/dist/index98.js +42 -9
- package/dist/index98.js.map +1 -1
- package/dist/index99.js +4 -42
- package/dist/index99.js.map +1 -1
- package/dist/lib/render-as-child.d.ts +5 -0
- package/dist/lib/render-as-child.d.ts.map +1 -0
- package/package.json +3 -6
- package/dist/lib/react-compose-refs.d.ts +0 -5
- package/dist/lib/react-compose-refs.d.ts.map +0 -1
package/dist/index8.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index8.js","sources":["../src/components/FilesUploadField/index.tsx"],"sourcesContent":["import { useEffect, useMemo, useRef, useState, type ReactNode } from \"react\"\nimport { createPortal } from \"react-dom\"\nimport { DismissableLayerBranch } from \"@radix-ui/react-dismissable-layer\"\nimport type { DragEndEvent } from \"@dnd-kit/core\"\nimport { DndContext, DragOverlay, KeyboardSensor, PointerSensor, closestCenter, useSensor, useSensors } from \"@dnd-kit/core\"\nimport {\n SortableContext,\n arrayMove,\n rectSortingStrategy,\n sortableKeyboardCoordinates,\n useSortable,\n} from \"@dnd-kit/sortable\"\nimport { CSS } from \"@dnd-kit/utilities\"\nimport { Loader2, Maximize2, Plus, X } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nimport { Image } from \"../Image\"\n\n\nexport type FilesUploadFieldFile = {\n id: string\n url: string\n alt?: string\n uploadKey?: string\n}\n\ntype FileUploadsInitResponse = {\n ok: boolean\n error?: string\n uploadId?: string\n uploadKey?: string\n chunkSize?: number\n chunksTotal?: number\n}\n\ntype FileUploadsStatusResponse = {\n ok: boolean\n error?: string\n status?: \"uploading\" | \"assembling\" | \"done\" | \"error\"\n chunkSize?: number\n chunksTotal?: number\n received?: number[]\n fileId?: string\n}\n\ntype FileUploadsCompleteResponse = {\n ok: boolean\n error?: string\n fileId?: string\n}\n\nconst sha256Hex = async (data: ArrayBuffer): Promise<string | null> => {\n if (typeof crypto === \"undefined\" || typeof crypto.subtle === \"undefined\") return null\n try {\n const digest = await crypto.subtle.digest(\"SHA-256\", data)\n const bytes = Array.from(new Uint8Array(digest))\n return bytes.map((b) => b.toString(16).padStart(2, \"0\")).join(\"\")\n } catch {\n return null\n }\n}\n\nconst postJson = async <T,>(\n url: string,\n body: unknown,\n options?: { headers?: Record<string, string>; signal?: AbortSignal },\n): Promise<{ ok: boolean; status: number; data: T }> => {\n const response = await fetch(url, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\", ...(options?.headers ?? {}) },\n credentials: \"include\",\n body: JSON.stringify(body),\n signal: options?.signal,\n })\n\n const payload = await response.json().catch(() => ({}))\n return { ok: response.ok, status: response.status, data: payload as T }\n}\n\nconst getJson = async <T,>(\n url: string,\n options?: { headers?: Record<string, string>; signal?: AbortSignal },\n): Promise<{ ok: boolean; status: number; data: T }> => {\n const response = await fetch(url, {\n credentials: \"include\",\n headers: options?.headers,\n signal: options?.signal,\n })\n const payload = await response.json().catch(() => ({}))\n return { ok: response.ok, status: response.status, data: payload as T }\n}\n\nconst putOctetStream = async ({\n url,\n body,\n sha256,\n uploadKey,\n signal,\n}: {\n url: string\n body: ArrayBuffer\n sha256?: string\n uploadKey?: string\n signal?: AbortSignal\n}): Promise<{ ok: boolean; status: number }> => {\n const headers: Record<string, string> = {\n \"Content-Type\": \"application/octet-stream\",\n }\n if (sha256) headers[\"X-Chunk-SHA256\"] = sha256\n if (uploadKey) headers[\"X-Upload-Key\"] = uploadKey\n\n const response = await fetch(url, {\n method: \"PUT\",\n credentials: \"include\",\n headers,\n body,\n signal,\n })\n\n return { ok: response.ok, status: response.status }\n}\n\nconst defaultUpload: UploadHandler = async (file, onProgress, options) => {\n const initRes = await postJson<FileUploadsInitResponse>(\n \"/api/rb/file-uploads\",\n {\n filename: file.name,\n mimeType: file.type || \"application/octet-stream\",\n ...(typeof options?.isPublic === \"boolean\" ? { isPublic: options.isPublic } : {}),\n totalSize: file.size,\n },\n { signal: options?.signal },\n )\n\n if (!initRes.ok || !(initRes.data as any)?.ok) {\n throw new Error((initRes.data as any)?.error ?? `Init failed (${initRes.status})`)\n }\n\n const uploadId = String((initRes.data as any)?.uploadId ?? \"\")\n const uploadKey = typeof (initRes.data as any)?.uploadKey === \"string\" ? String((initRes.data as any).uploadKey) : null\n const chunkSize = Number((initRes.data as any)?.chunkSize ?? 0)\n const chunksTotal = Number((initRes.data as any)?.chunksTotal ?? 0)\n\n if (!uploadId || !chunkSize || !chunksTotal) {\n throw new Error(\"Upload init missing required fields\")\n }\n\n const doUploadChunk = async (index: number) => {\n const start = index * chunkSize\n const end = Math.min(file.size, start + chunkSize)\n const slice = file.slice(start, end)\n const body = await slice.arrayBuffer()\n const sha = await sha256Hex(body)\n\n const res = await putOctetStream({\n url: `/api/rb/file-uploads/${encodeURIComponent(uploadId)}/chunks/${index}`,\n body,\n sha256: sha ?? undefined,\n uploadKey: uploadKey ?? undefined,\n signal: options?.signal,\n })\n\n if (res.status === 204) return\n throw new Error(`Chunk ${index} failed (${res.status})`)\n }\n\n const uploadChunks = async (indices: number[], alreadyUploaded = 0) => {\n let uploaded = alreadyUploaded\n\n for (const idx of indices) {\n await doUploadChunk(idx)\n uploaded += 1\n const pct = Math.min(99, Math.floor((uploaded / chunksTotal) * 99))\n onProgress(pct)\n }\n }\n\n const allIndices = Array.from({ length: chunksTotal }, (_, i) => i)\n await uploadChunks(allIndices, 0)\n\n const complete = async (): Promise<string> => {\n const completeRes = await postJson<FileUploadsCompleteResponse>(\n `/api/rb/file-uploads/${encodeURIComponent(uploadId)}/complete`,\n {},\n { headers: uploadKey ? { \"X-Upload-Key\": uploadKey } : undefined, signal: options?.signal },\n )\n\n if (completeRes.ok && (completeRes.data as any)?.ok) {\n const fileId = String((completeRes.data as any)?.fileId ?? \"\")\n if (!fileId) throw new Error(\"Upload completed without fileId\")\n return fileId\n }\n\n const code = String((completeRes.data as any)?.error ?? \"\")\n if (completeRes.status !== 409 || code !== \"missing_chunks\") {\n throw new Error(code || `Complete failed (${completeRes.status})`)\n }\n\n const statusRes = await getJson<FileUploadsStatusResponse>(\n `/api/rb/file-uploads/${encodeURIComponent(uploadId)}/status`,\n { headers: uploadKey ? { \"X-Upload-Key\": uploadKey } : undefined, signal: options?.signal },\n )\n\n if (!statusRes.ok || !(statusRes.data as any)?.ok) {\n throw new Error((statusRes.data as any)?.error ?? `Status failed (${statusRes.status})`)\n }\n\n const received = Array.isArray((statusRes.data as any)?.received) ? (statusRes.data as any).received : []\n const present = new Set<number>(received)\n const missing: number[] = []\n for (let i = 0; i < chunksTotal; i += 1) {\n if (!present.has(i)) missing.push(i)\n }\n\n if (!missing.length) {\n throw new Error(\"missing_chunks\")\n }\n\n await uploadChunks(missing, present.size)\n return complete()\n }\n\n const fileId = await complete()\n\n onProgress(100)\n return {\n id: fileId,\n url: `/api/rb/files/${encodeURIComponent(fileId)}`,\n alt: file.name,\n ...(uploadKey ? { uploadKey } : {}),\n }\n}\n\nfunction SortableTile({\n item,\n isHovered,\n enableImagePreview,\n renderItem,\n onHoverEnter,\n onHoverLeave,\n onRemove,\n onRetry,\n startFullscreen,\n isUploading,\n isError,\n tileClasses,\n disabled,\n isDraggingExternal,\n removeButtonAriaLabel,\n}: {\n item: FileWithState\n isHovered: boolean\n enableImagePreview: boolean\n renderItem?: (props: FilesUploadFieldRenderItemProps) => ReactNode\n onHoverEnter: () => void\n onHoverLeave: () => void\n onRemove: (id: string) => void\n onRetry: (id: string) => void\n startFullscreen: (id: string) => void\n isUploading: boolean\n isError: boolean\n tileClasses: string\n disabled: boolean\n isDraggingExternal: boolean\n removeButtonAriaLabel: string\n}) {\n const { setNodeRef, attributes, listeners, transform, transition, isDragging } = useSortable({\n id: item.id,\n disabled,\n })\n\n const tileRef = useRef<HTMLDivElement | null>(null)\n const previewRef = useRef<HTMLDivElement | null>(null)\n const [previewPosition, setPreviewPosition] = useState<{ left: number; top: number } | null>(null)\n\n const updatePreviewPosition = () => {\n const el = tileRef.current\n if (!el) return\n const rect = el.getBoundingClientRect()\n setPreviewPosition({ left: rect.left + rect.width / 2, top: rect.top - 10 })\n }\n\n useEffect(() => {\n if (!enableImagePreview || !isHovered) {\n setPreviewPosition(null)\n return\n }\n\n updatePreviewPosition()\n\n let raf = 0\n const schedule = () => {\n if (raf) cancelAnimationFrame(raf)\n raf = requestAnimationFrame(() => {\n raf = 0\n updatePreviewPosition()\n })\n }\n\n window.addEventListener(\"resize\", schedule)\n window.addEventListener(\"scroll\", schedule, true)\n return () => {\n if (raf) cancelAnimationFrame(raf)\n window.removeEventListener(\"resize\", schedule)\n window.removeEventListener(\"scroll\", schedule, true)\n }\n }, [enableImagePreview, isHovered])\n\n const style = {\n transform: CSS.Transform.toString(transform),\n transition,\n }\n\n const tileContent = renderItem\n ? renderItem({\n file: { id: item.id, url: item.url, alt: item.alt, uploadKey: item.uploadKey },\n previewUrl: item.previewUrl,\n status: item.status,\n progress: item.progress,\n fileName: item.fileName,\n })\n : enableImagePreview\n ? (\n <Image\n src={item.previewUrl}\n alt={item.alt ?? \"Uploaded file\"}\n sizes=\"96px\"\n className={cn(\n \"size-full rounded-md object-cover\",\n isUploading && \"opacity-75\",\n isError && \"grayscale\"\n )}\n />\n )\n : (\n <div className=\"flex size-full items-center justify-center rounded-md bg-slate-100 px-2 text-center text-[10px] font-medium text-slate-700 dark:bg-slate-800 dark:text-slate-200\">\n <span className=\"w-full truncate\">{item.fileName ?? item.alt ?? \"Fichier\"}</span>\n </div>\n )\n\n return (\n <div\n ref={(node) => {\n tileRef.current = node\n setNodeRef(node)\n }}\n style={style}\n className={cn(\n tileClasses,\n isDragging && \"z-20 ring-2 ring-primary shadow-xl\",\n isDraggingExternal && \"opacity-0\",\n !disabled && \"cursor-grab active:cursor-grabbing\",\n isDragging && \"cursor-grabbing\",\n disabled && \"cursor-default\"\n )}\n onMouseEnter={() => {\n updatePreviewPosition()\n onHoverEnter()\n }}\n onMouseLeave={(event) => {\n const next = event.relatedTarget\n if (next instanceof Node && previewRef.current?.contains(next)) return\n onHoverLeave()\n }}\n {...attributes}\n {...listeners}\n >\n {tileContent}\n\n <button\n type=\"button\"\n onClick={() => {\n if (disabled) return\n onRemove(item.id)\n }}\n disabled={disabled}\n className=\"absolute right-1 top-1 inline-flex size-6 items-center justify-center rounded-full bg-white text-slate-700 shadow-sm transition hover:scale-105 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary dark:bg-slate-900 dark:text-slate-200\"\n aria-label={removeButtonAriaLabel}\n >\n <X className=\"h-4 w-4\" />\n </button>\n\n {enableImagePreview &&\n isHovered &&\n previewPosition &&\n (() => {\n const preview = (\n <DismissableLayerBranch>\n <div\n ref={previewRef}\n className=\"pointer-events-auto fixed z-[60] w-52 -translate-x-1/2 -translate-y-full rounded-xl border border-slate-200 bg-white/95 p-3 shadow-2xl backdrop-blur dark:border-slate-700 dark:bg-slate-900/95\"\n style={{ left: previewPosition.left, top: previewPosition.top }}\n onMouseEnter={() => {\n updatePreviewPosition()\n onHoverEnter()\n }}\n onMouseLeave={(event) => {\n const next = event.relatedTarget\n if (next instanceof Node && tileRef.current?.contains(next)) return\n onHoverLeave()\n }}\n >\n <div className=\"relative overflow-hidden rounded-lg\">\n <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 </DismissableLayerBranch>\n )\n\n if (typeof document === \"undefined\") return preview\n return createPortal(preview, document.body)\n })()}\n\n {isUploading && (\n <div className=\"absolute inset-0 z-20 flex flex-col items-center justify-center gap-2 rounded-lg bg-black/40 text-white\">\n <Loader2 className=\"h-5 w-5 animate-spin\" />\n <div className=\"h-1.5 w-5/6 rounded-full bg-white/20\">\n <div className=\"h-full rounded-full bg-primary\" style={{ width: `${item.progress}%` }} />\n </div>\n <div className=\"text-xs font-semibold\">{item.progress}%</div>\n </div>\n )}\n\n {isError && (\n <div className=\"absolute inset-0 z-10 flex flex-col items-center justify-center gap-2 rounded-lg bg-red-600/70 text-white\">\n <div className=\"max-w-[92%] break-words text-center text-[10px] font-semibold leading-tight\" title={item.errorMessage}>\n {getErrorLabel(item.errorMessage)}\n </div>\n <button\n type=\"button\"\n onClick={() => onRetry(item.id)}\n disabled={disabled}\n className=\"rounded-full bg-white/90 px-3 py-1 text-xs font-semibold text-red-700 shadow-sm transition hover:bg-white focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-white\"\n >\n Réessayer\n </button>\n </div>\n )}\n </div>\n )\n}\n\ntype UploadResult = FilesUploadFieldFile | Promise<FilesUploadFieldFile>\n\ntype UploadHandler = (\n file: File,\n onProgress: (progress: number) => void,\n options?: { signal?: AbortSignal; isPublic?: boolean },\n) => UploadResult\n\nexport type FilesUploadFieldRenderItemProps = {\n file: FilesUploadFieldFile\n previewUrl: string\n status: \"uploaded\" | \"uploading\" | \"error\"\n progress: number\n fileName?: string\n}\n\nexport type FilesUploadFieldProps = {\n initialFiles?: FilesUploadFieldFile[]\n onChange?: (files: FilesUploadFieldFile[]) => void\n upload?: UploadHandler\n uploadIsPublic?: boolean\n disabled?: boolean\n onUploadingChange?: (isUploading: boolean) => void\n accept?: string | string[]\n renderHeader?: () => ReactNode\n renderItem?: (props: FilesUploadFieldRenderItemProps) => ReactNode\n addButtonAriaLabel?: string\n removeButtonAriaLabel?: string\n}\n\ntype FileWithState = FilesUploadFieldFile & {\n previewUrl: string\n status: \"uploaded\" | \"uploading\" | \"error\"\n progress: number\n fileName?: string\n errorMessage?: string\n}\n\nfunction toPreview(file: File) {\n return URL.createObjectURL(file)\n}\n\nconst getErrorMessage = (error: unknown): string => {\n if (error instanceof Error) return error.message\n if (typeof error === \"string\") return error\n return \"Upload failed\"\n}\n\nconst getErrorLabel = (message: string | undefined): string => {\n if (!message) return \"Échec\"\n if (message.startsWith(\"heif_decode_unsupported\")) return \"HEIC/HEVC non supporté\"\n return message\n}\n\nexport function FilesUploadField({\n initialFiles = [],\n onChange,\n upload = defaultUpload,\n uploadIsPublic = false,\n disabled = false,\n onUploadingChange,\n accept,\n renderHeader,\n renderItem,\n addButtonAriaLabel = \"Ajouter un fichier\",\n removeButtonAriaLabel = \"Supprimer le fichier\",\n}: FilesUploadFieldProps) {\n const fileInputRef = useRef<HTMLInputElement>(null)\n const [images, setImages] = useState<FileWithState[]>(() =>\n initialFiles.map((file) => ({ ...file, previewUrl: file.url, status: \"uploaded\", progress: 100 }))\n )\n const [dragActive, setDragActive] = useState(false)\n const [fullscreenIndex, setFullscreenIndex] = useState<number | null>(null)\n const [hoveredId, setHoveredId] = useState<string | null>(null)\n const [activeId, setActiveId] = useState<string | null>(null)\n const hoverTimeoutRef = useRef<number | null>(null)\n const skipNotifyRef = useRef(true)\n const imagesRef = useRef<FileWithState[]>([])\n const lastInitialImagesRef = useRef<FilesUploadFieldFile[]>(initialFiles)\n const onChangeRef = useRef(onChange)\n const onUploadingChangeRef = useRef(onUploadingChange)\n const replacedIdRef = useRef<Map<string, string>>(new Map())\n const fileRef = useRef<Map<string, File>>(new Map())\n const abortRef = useRef<Map<string, AbortController>>(new Map())\n const objectUrlRef = useRef<Map<string, string>>(new Map())\n const sensors = useSensors(\n useSensor(PointerSensor, { activationConstraint: { distance: 6 } }),\n useSensor(KeyboardSensor, { coordinateGetter: sortableKeyboardCoordinates })\n )\n\n useEffect(() => {\n return () => {\n for (const controller of abortRef.current.values()) {\n try {\n controller.abort()\n } catch {\n //\n }\n }\n abortRef.current.clear()\n fileRef.current.clear()\n replacedIdRef.current.clear()\n\n for (const url of objectUrlRef.current.values()) {\n if (typeof URL !== \"undefined\") {\n try {\n URL.revokeObjectURL(url)\n } catch {\n //\n }\n }\n }\n objectUrlRef.current.clear()\n }\n }, [])\n\n useEffect(() => {\n if (typeof document === \"undefined\") return\n if (activeId) {\n document.body.style.cursor = \"grabbing\"\n return () => {\n document.body.style.cursor = \"\"\n }\n }\n document.body.style.cursor = \"\"\n }, [activeId])\n\n useEffect(() => {\n imagesRef.current = images\n }, [images])\n\n useEffect(() => {\n onChangeRef.current = onChange\n }, [onChange])\n\n useEffect(() => {\n onUploadingChangeRef.current = onUploadingChange\n }, [onUploadingChange])\n\n useEffect(() => {\n const previous = lastInitialImagesRef.current\n const samePropValue =\n previous.length === initialFiles.length &&\n previous.every((img, index) => {\n const next = initialFiles[index]\n return next && img.id === next.id && img.url === next.url && img.alt === next.alt\n })\n\n if (samePropValue) return\n lastInitialImagesRef.current = initialFiles\n\n const prepared: FileWithState[] = initialFiles.map((img) => ({\n ...img,\n previewUrl: img.url,\n status: \"uploaded\",\n progress: 100,\n }))\n\n const preparedRawIds = new Set(prepared.map((img) => img.id))\n for (const [tempId, finalId] of replacedIdRef.current.entries()) {\n if (preparedRawIds.has(finalId)) {\n replacedIdRef.current.delete(tempId)\n }\n }\n\n const currentIds = new Set(imagesRef.current.map((img) => img.id))\n const hasStaleInitialImages = prepared.some((img) => {\n const mapped = replacedIdRef.current.get(img.id)\n return mapped ? currentIds.has(mapped) : false\n })\n if (hasStaleInitialImages) return\n\n const preparedIds = new Set(prepared.map((img) => img.id))\n for (const img of imagesRef.current) {\n if (preparedIds.has(img.id)) continue\n\n const controller = abortRef.current.get(img.id)\n if (controller) {\n abortRef.current.delete(img.id)\n try {\n controller.abort()\n } catch {\n //\n }\n }\n\n fileRef.current.delete(img.id)\n\n const tempUrl = objectUrlRef.current.get(img.id)\n if (tempUrl) {\n objectUrlRef.current.delete(img.id)\n try {\n URL.revokeObjectURL(tempUrl)\n } catch {\n //\n }\n }\n }\n\n setImages((current) => {\n const sameLength = current.length === prepared.length\n const sameContent =\n sameLength &&\n current.every((item, index) => {\n const next = prepared[index]\n return next && item.id === next.id && item.url === next.url && item.alt === next.alt && item.uploadKey === next.uploadKey\n })\n\n if (sameContent) return current\n\n skipNotifyRef.current = true\n return prepared\n })\n }, [initialFiles])\n\n useEffect(() => {\n if (skipNotifyRef.current) {\n skipNotifyRef.current = false\n return\n }\n\n onChangeRef.current?.(images.map(({ id, url, alt, uploadKey }) => ({ id, url, alt, uploadKey })))\n }, [images])\n\n useEffect(() => {\n onUploadingChangeRef.current?.(images.some((img) => img.status === \"uploading\"))\n }, [images])\n\n useEffect(() => {\n if (fullscreenIndex === null) {\n return\n }\n\n const handleKey = (event: KeyboardEvent) => {\n if (event.key === \"Escape\") {\n setFullscreenIndex(null)\n return\n }\n\n if (event.key === \"ArrowRight\") {\n setFullscreenIndex((current) => {\n if (current === null) return current\n return (current + 1) % images.length\n })\n return\n }\n\n if (event.key === \"ArrowLeft\") {\n setFullscreenIndex((current) => {\n if (current === null) return current\n return (current - 1 + images.length) % images.length\n })\n }\n }\n\n window.addEventListener(\"keydown\", handleKey)\n return () => window.removeEventListener(\"keydown\", handleKey)\n }, [fullscreenIndex, images.length])\n\n const handleFiles = async (files: FileList | File[]) => {\n if (disabled) return\n const list = Array.from(files)\n\n const uploads = list.map((file) => {\n const previewUrl = toPreview(file)\n const tempId = crypto.randomUUID()\n\n objectUrlRef.current.set(tempId, previewUrl)\n fileRef.current.set(tempId, file)\n\n const next: FileWithState = {\n id: tempId,\n url: previewUrl,\n previewUrl,\n alt: file.name,\n status: \"uploading\",\n progress: 0,\n fileName: file.name,\n }\n\n setImages((current) => [...current, next])\n\n const updateProgress = (value: number) => {\n const nextValue = Math.max(0, Math.min(99, value))\n setImages((current) =>\n current.map((item) =>\n item.id === tempId ? { ...item, progress: nextValue, status: \"uploading\" } : item\n )\n )\n }\n\n const finalize = async () => {\n const controller = new AbortController()\n abortRef.current.set(tempId, controller)\n\n try {\n const result = await upload(file, updateProgress, { signal: controller.signal, isPublic: uploadIsPublic })\n replacedIdRef.current.set(tempId, result.id)\n\n const tempUrl = objectUrlRef.current.get(tempId)\n if (tempUrl) {\n objectUrlRef.current.delete(tempId)\n try {\n URL.revokeObjectURL(tempUrl)\n } catch {\n //\n }\n }\n\n abortRef.current.delete(tempId)\n fileRef.current.delete(tempId)\n\n setImages((current) =>\n current.map((item) =>\n item.id === tempId\n ? {\n ...item,\n ...result,\n previewUrl: result.url,\n url: result.url,\n status: \"uploaded\",\n progress: 100,\n errorMessage: undefined,\n }\n : item\n )\n )\n } catch (error) {\n abortRef.current.delete(tempId)\n if (controller.signal.aborted) {\n fileRef.current.delete(tempId)\n const tempUrl = objectUrlRef.current.get(tempId)\n if (tempUrl) {\n objectUrlRef.current.delete(tempId)\n try {\n URL.revokeObjectURL(tempUrl)\n } catch {\n //\n }\n }\n return\n }\n console.error(\"Upload failed\", error)\n const errorMessage = getErrorMessage(error)\n setImages((current) =>\n current.map((item) =>\n item.id === tempId\n ? { ...item, status: \"error\", progress: Math.max(0, Math.min(99, item.progress)), errorMessage }\n : item\n )\n )\n }\n }\n\n return finalize()\n })\n\n await Promise.allSettled(uploads)\n }\n\n const onFileInputChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n if (!event.target.files) return\n void handleFiles(event.target.files)\n event.target.value = \"\"\n }\n\n const openFileDialog = () => {\n if (disabled) return\n fileInputRef.current?.click()\n }\n\n const removeImage = (id: string) => {\n const controller = abortRef.current.get(id)\n if (controller) {\n abortRef.current.delete(id)\n try {\n controller.abort()\n } catch {\n //\n }\n }\n\n fileRef.current.delete(id)\n\n const tempUrl = objectUrlRef.current.get(id)\n if (tempUrl) {\n objectUrlRef.current.delete(id)\n try {\n URL.revokeObjectURL(tempUrl)\n } catch {\n //\n }\n }\n\n setImages((current) => current.filter((item) => item.id !== id))\n }\n\n const retryUpload = (id: string) => {\n if (disabled) return\n const file = fileRef.current.get(id)\n if (!file) return\n\n const existingController = abortRef.current.get(id)\n if (existingController) {\n try {\n existingController.abort()\n } catch {\n //\n }\n abortRef.current.delete(id)\n }\n\n setImages((current) =>\n current.map((item) => (item.id === id ? { ...item, status: \"uploading\", progress: 0, errorMessage: undefined } : item))\n )\n\n const updateProgress = (value: number) => {\n const nextValue = Math.max(0, Math.min(99, value))\n setImages((current) =>\n current.map((item) => (item.id === id ? { ...item, progress: nextValue, status: \"uploading\" } : item))\n )\n }\n\n const controller = new AbortController()\n abortRef.current.set(id, controller)\n\n void (async () => {\n try {\n const result = await upload(file, updateProgress, { signal: controller.signal, isPublic: uploadIsPublic })\n replacedIdRef.current.set(id, result.id)\n\n const tempUrl = objectUrlRef.current.get(id)\n if (tempUrl) {\n objectUrlRef.current.delete(id)\n try {\n URL.revokeObjectURL(tempUrl)\n } catch {\n //\n }\n }\n\n abortRef.current.delete(id)\n fileRef.current.delete(id)\n\n setImages((current) =>\n current.map((item) =>\n item.id === id\n ? { ...item, ...result, previewUrl: result.url, url: result.url, status: \"uploaded\", progress: 100, errorMessage: undefined }\n : item\n )\n )\n } catch (error) {\n abortRef.current.delete(id)\n if (controller.signal.aborted) return\n console.error(\"Retry failed\", error)\n const errorMessage = getErrorMessage(error)\n setImages((current) => current.map((item) => (item.id === id ? { ...item, status: \"error\", errorMessage } : item)))\n }\n })()\n }\n\n const startFullscreen = (id: string) => {\n const index = images.findIndex((item) => item.id === id)\n if (index !== -1) {\n setFullscreenIndex(index)\n }\n }\n\n const handleDragStart = (event: DragEndEvent) => {\n setActiveId(String(event.active.id))\n }\n\n const handleDragEnd = (event: DragEndEvent) => {\n const { active, over } = event\n if (!over) {\n setActiveId(null)\n return\n }\n\n const activeId = String(active.id)\n const overId = String(over.id)\n\n if (activeId !== overId) {\n setImages((current) => {\n const oldIndex = current.findIndex((item) => item.id === activeId)\n const newIndex = current.findIndex((item) => item.id === overId)\n if (oldIndex === -1 || newIndex === -1) return current\n return arrayMove(current, oldIndex, newIndex)\n })\n }\n\n setActiveId(null)\n }\n\n const handleDragCancel = () => {\n setActiveId(null)\n }\n\n const clearHoverTimeout = () => {\n if (hoverTimeoutRef.current !== null) {\n window.clearTimeout(hoverTimeoutRef.current)\n hoverTimeoutRef.current = null\n }\n }\n\n const fullscreenImage = useMemo(() => {\n if (fullscreenIndex === null) return null\n return images[fullscreenIndex] ?? null\n }, [fullscreenIndex, images])\n\n const containerClasses = cn(\n \"rounded-xl border border-dashed border-slate-300 bg-white/70 p-4 shadow-sm transition-colors dark:border-slate-700 dark:bg-slate-900/60\",\n dragActive && \"border-primary ring-2 ring-primary/50\",\n disabled && \"opacity-70\"\n )\n\n const tileBaseClasses = \"group relative size-20 overflow-visible rounded-lg border border-slate-200 bg-slate-50 shadow-inner transition hover:shadow md:size-24 dark:border-slate-700 dark:bg-slate-800\"\n\n const acceptAttr = useMemo(() => {\n if (!accept) return undefined\n if (Array.isArray(accept)) return accept.join(\",\")\n return accept\n }, [accept])\n\n const enableImagePreview = useMemo(() => {\n if (renderItem) return false\n if (!acceptAttr) return false\n const tokens = acceptAttr.split(\",\").map((value) => value.trim()).filter(Boolean)\n if (!tokens.length) return false\n return tokens.every((token) =>\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 toRenderItemProps = (item: FileWithState): FilesUploadFieldRenderItemProps => ({\n file: { id: item.id, url: item.url, alt: item.alt, uploadKey: item.uploadKey },\n previewUrl: item.previewUrl,\n status: item.status,\n progress: item.progress,\n fileName: item.fileName,\n })\n\n const dragOverlayContent = activeId\n ? (() => {\n const activeItem = images.find((item) => item.id === activeId)\n if (!activeItem) return null\n\n if (renderItem) {\n const rendered = renderItem(toRenderItemProps(activeItem))\n if (rendered === null || rendered === undefined || rendered === false) return null\n return (\n <div className=\"pointer-events-none\">\n <div className=\"h-24 w-24 overflow-hidden rounded-lg shadow-2xl\">{rendered}</div>\n </div>\n )\n }\n\n if (!enableImagePreview) return null\n return (\n <div className=\"pointer-events-none\">\n <Image\n src={activeItem.previewUrl}\n alt={activeItem.alt ?? \"Dragged image\"}\n sizes=\"96px\"\n className=\"h-24 w-24 rounded-lg object-cover shadow-2xl\"\n />\n </div>\n )\n })()\n : null\n\n const hideActiveTile = dragOverlayContent !== null && dragOverlayContent !== undefined\n\n return (\n <div\n onDragOver={(event) => {\n event.preventDefault()\n if (!disabled) {\n setDragActive(true)\n }\n }}\n onDragLeave={() => setDragActive(false)}\n onDrop={(event) => {\n event.preventDefault()\n setDragActive(false)\n if (event.dataTransfer.files?.length) {\n void handleFiles(event.dataTransfer.files)\n }\n }}\n className={containerClasses}\n >\n {renderHeader ? <div className=\"mb-3\">{renderHeader()}</div> : null}\n\n <DndContext\n sensors={disabled ? undefined : sensors}\n collisionDetection={closestCenter}\n onDragStart={handleDragStart}\n onDragEnd={handleDragEnd}\n onDragCancel={handleDragCancel}\n >\n <SortableContext items={images.map((item) => item.id)} strategy={rectSortingStrategy}>\n <div className=\"flex flex-wrap gap-3\">\n {images.map((item) => {\n const isUploading = item.status === \"uploading\"\n const isError = item.status === \"error\"\n\n return (\n <SortableTile\n key={item.id}\n item={item}\n isHovered={hoveredId === item.id}\n enableImagePreview={enableImagePreview}\n renderItem={renderItem}\n onHoverEnter={() => {\n clearHoverTimeout()\n setHoveredId(item.id)\n }}\n onHoverLeave={() => {\n clearHoverTimeout()\n hoverTimeoutRef.current = window.setTimeout(() => {\n setHoveredId((current) => (current === item.id ? null : current))\n hoverTimeoutRef.current = null\n }, 120)\n }}\n onRemove={removeImage}\n onRetry={retryUpload}\n startFullscreen={startFullscreen}\n isUploading={isUploading}\n isError={isError}\n tileClasses={tileBaseClasses}\n disabled={disabled}\n isDraggingExternal={hideActiveTile && activeId === item.id}\n removeButtonAriaLabel={removeButtonAriaLabel}\n />\n )\n })}\n\n <button\n type=\"button\"\n onClick={openFileDialog}\n disabled={disabled}\n className={cn(\n tileBaseClasses,\n \"flex items-center justify-center border-dashed bg-white text-slate-500 hover:border-slate-300 dark:bg-slate-900\"\n )}\n aria-label={addButtonAriaLabel}\n >\n <div className=\"flex flex-col items-center gap-1\">\n <div className=\"flex size-9 items-center justify-center rounded-full border border-slate-300 bg-slate-100 text-slate-600 shadow-inner dark:border-slate-700 dark:bg-slate-800 dark:text-slate-200\">\n <Plus className=\"h-5 w-5\" />\n </div>\n <span className=\"text-xs font-medium\">Ajouter</span>\n </div>\n </button>\n </div>\n </SortableContext>\n {(() => {\n const overlay = <DragOverlay>{dragOverlayContent}</DragOverlay>\n\n if (typeof document === \"undefined\") return overlay\n return createPortal(overlay, document.body)\n })()}\n </DndContext>\n\n <input\n ref={fileInputRef}\n type=\"file\"\n accept={acceptAttr}\n multiple\n className=\"hidden\"\n onChange={onFileInputChange}\n aria-hidden\n />\n\n {enableImagePreview && fullscreenImage && (\n <div className=\"fixed inset-0 z-50 flex items-center justify-center bg-black/90\">\n <button\n type=\"button\"\n className=\"absolute left-6 top-1/2 -translate-y-1/2 rounded-full bg-white/10 p-3 text-white shadow-lg transition hover:bg-white/20 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-white\"\n onClick={() =>\n setFullscreenIndex((current) => {\n if (current === null) return current\n return (current - 1 + images.length) % images.length\n })\n }\n aria-label=\"Précédent\"\n >\n <svg viewBox=\"0 0 24 24\" className=\"h-6 w-6\" stroke=\"currentColor\" strokeWidth={2} fill=\"none\">\n <path d=\"M15 18l-6-6 6-6\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n </button>\n <div className=\"relative max-h-[80vh] max-w-4xl\">\n <Image\n src={fullscreenImage.url}\n alt={fullscreenImage.alt ?? \"Fullscreen\"}\n sizes=\"(max-width: 1024px) 100vw, 1024px\"\n className=\"max-h-[80vh] max-w-full rounded-lg object-contain shadow-2xl\"\n />\n <button\n type=\"button\"\n className=\"absolute right-3 top-3 inline-flex size-9 items-center justify-center rounded-full bg-black/70 text-white transition hover:bg-black focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-white\"\n onClick={() => setFullscreenIndex(null)}\n aria-label=\"Fermer\"\n >\n <X className=\"h-5 w-5\" />\n </button>\n </div>\n <button\n type=\"button\"\n className=\"absolute right-6 top-1/2 -translate-y-1/2 rounded-full bg-white/10 p-3 text-white shadow-lg transition hover:bg-white/20 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-white\"\n onClick={() =>\n setFullscreenIndex((current) => {\n if (current === null) return current\n return (current + 1) % images.length\n })\n }\n aria-label=\"Suivant\"\n >\n <svg viewBox=\"0 0 24 24\" className=\"h-6 w-6\" stroke=\"currentColor\" strokeWidth={2} fill=\"none\">\n <path d=\"M9 6l6 6-6 6\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n </button>\n </div>\n )}\n </div>\n )\n}\n"],"names":["sha256Hex","data","crypto","subtle","digest","Array","from","Uint8Array","map","b","toString","padStart","join","postJson","url","body","options","response","fetch","method","headers","credentials","JSON","stringify","signal","payload","json","catch","ok","status","getJson","putOctetStream","sha256","uploadKey","defaultUpload","file","onProgress","initRes","filename","name","mimeType","type","isPublic","totalSize","size","Error","error","uploadId","String","chunkSize","Number","chunksTotal","doUploadChunk","index","start","end","Math","min","slice","arrayBuffer","sha","res","encodeURIComponent","undefined","uploadChunks","indices","alreadyUploaded","uploaded","idx","pct","floor","allIndices","length","_","i","complete","completeRes","fileId","code","statusRes","received","isArray","present","Set","missing","has","push","id","alt","SortableTile","t0","$","_c","item","isHovered","enableImagePreview","renderItem","onHoverEnter","onHoverLeave","onRemove","onRetry","startFullscreen","isUploading","isError","tileClasses","disabled","isDraggingExternal","removeButtonAriaLabel","t1","setNodeRef","attributes","listeners","transform","transition","isDragging","useSortable","tileRef","useRef","previewRef","previewPosition","setPreviewPosition","useState","t2","Symbol","for","el","current","rect","getBoundingClientRect","left","width","top","updatePreviewPosition","t3","t4","raf","schedule","cancelAnimationFrame","requestAnimationFrame","window","addEventListener","removeEventListener","useEffect","t5","CSS","Transform","t6","style","t7","fileName","previewUrl","progress","jsx","Image","cn","tileContent","t8","node","t9","t10","t11","t12","t13","t14","t15","t16","event","next","relatedTarget","Node","contains","t17","t18","X","t19","t20","preview","DismissableLayerBranch","event_0","next_0","jsxs","Maximize2","document","createPortal","t21","Loader2","t22","errorMessage","getErrorLabel","t23","toPreview","URL","createObjectURL","getErrorMessage","message","startsWith","FilesUploadField","initialFiles","onChange","upload","uploadIsPublic","onUploadingChange","accept","renderHeader","addButtonAriaLabel","fileInputRef","_temp","images","setImages","dragActive","setDragActive","fullscreenIndex","setFullscreenIndex","hoveredId","setHoveredId","activeId","setActiveId","hoverTimeoutRef","skipNotifyRef","imagesRef","lastInitialImagesRef","onChangeRef","onUploadingChangeRef","Map","replacedIdRef","fileRef","abortRef","objectUrlRef","activationConstraint","distance","coordinateGetter","sortableKeyboardCoordinates","sensors","useSensors","useSensor","PointerSensor","KeyboardSensor","controller","values","abort","clear","revokeObjectURL","cursor","_temp2","t24","t25","t26","t27","previous","every","img","prepared","_temp3","preparedRawIds","_temp4","tempId","finalId","entries","delete","currentIds","_temp5","some","img_3","mapped","get","preparedIds","_temp6","img_5","controller_0","tempUrl","index_0","t28","t29","_temp7","t30","t31","_temp8","t32","t33","handleKey","key","current_0","current_1","t34","files","uploads","file_0","tempId_0","randomUUID","set","next_1","current_2","updateProgress","value","nextValue","max","current_3","item_0","controller_1","AbortController","result","tempUrl_1","current_5","item_2","t35","aborted","tempUrl_0","console","current_4","item_1","finalize","Promise","allSettled","handleFiles","target","onFileInputChange","t36","click","openFileDialog","t37","id_0","controller_2","tempUrl_2","current_6","filter","item_3","removeImage","t38","id_1","file_1","existingController","current_7","item_4","updateProgress_0","value_0","nextValue_0","current_8","item_5","controller_3","result_0","tempUrl_3","current_10","item_7","t39","errorMessage_0","current_9","item_6","retryUpload","id_2","index_1","findIndex","item_8","t40","event_1","active","handleDragStart","t41","event_2","over","activeId_0","overId","current_11","oldIndex","item_9","newIndex","item_10","arrayMove","handleDragEnd","t42","handleDragCancel","t43","clearTimeout","clearHoverTimeout","t44","bb0","fullscreenImage","t45","t46","t47","containerClasses","t48","bb1","t49","acceptAttr","bb2","tokens","split","_temp9","Boolean","_temp0","toRenderItemProps","_temp1","t50","activeItem","find","item_12","rendered","dragOverlayContent","hideActiveTile","t51","event_3","preventDefault","t52","t53","event_4","dataTransfer","t54","t55","t56","_temp10","t57","item_14","setTimeout","current_12","tileBaseClasses","t58","t59","Plus","t60","t61","t62","SortableContext","rectSortingStrategy","t63","bb3","t64","DragOverlay","overlay","t65","DndContext","closestCenter","t66","current_13","current_14","t67","item_13","item_11","token","value_1","trim","img_6","url_0","img_4","img_2","img_1","img_0"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index8.js","sources":["../src/components/FilesUploadField/index.tsx"],"sourcesContent":["import { useEffect, useMemo, useRef, useState, type ReactNode } from \"react\"\nimport { createPortal } from \"react-dom\"\nimport type { DragEndEvent } from \"@dnd-kit/core\"\nimport { DndContext, DragOverlay, KeyboardSensor, PointerSensor, closestCenter, useSensor, useSensors } from \"@dnd-kit/core\"\nimport {\n SortableContext,\n arrayMove,\n rectSortingStrategy,\n sortableKeyboardCoordinates,\n useSortable,\n} from \"@dnd-kit/sortable\"\nimport { CSS } from \"@dnd-kit/utilities\"\nimport { Loader2, Maximize2, Plus, X } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nimport { Image } from \"../Image\"\n\n\nexport type FilesUploadFieldFile = {\n id: string\n url: string\n alt?: string\n uploadKey?: string\n}\n\ntype FileUploadsInitResponse = {\n ok: boolean\n error?: string\n uploadId?: string\n uploadKey?: string\n chunkSize?: number\n chunksTotal?: number\n}\n\ntype FileUploadsStatusResponse = {\n ok: boolean\n error?: string\n status?: \"uploading\" | \"assembling\" | \"done\" | \"error\"\n chunkSize?: number\n chunksTotal?: number\n received?: number[]\n fileId?: string\n}\n\ntype FileUploadsCompleteResponse = {\n ok: boolean\n error?: string\n fileId?: string\n}\n\nconst sha256Hex = async (data: ArrayBuffer): Promise<string | null> => {\n if (typeof crypto === \"undefined\" || typeof crypto.subtle === \"undefined\") return null\n try {\n const digest = await crypto.subtle.digest(\"SHA-256\", data)\n const bytes = Array.from(new Uint8Array(digest))\n return bytes.map((b) => b.toString(16).padStart(2, \"0\")).join(\"\")\n } catch {\n return null\n }\n}\n\nconst postJson = async <T,>(\n url: string,\n body: unknown,\n options?: { headers?: Record<string, string>; signal?: AbortSignal },\n): Promise<{ ok: boolean; status: number; data: T }> => {\n const response = await fetch(url, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\", ...(options?.headers ?? {}) },\n credentials: \"include\",\n body: JSON.stringify(body),\n signal: options?.signal,\n })\n\n const payload = await response.json().catch(() => ({}))\n return { ok: response.ok, status: response.status, data: payload as T }\n}\n\nconst getJson = async <T,>(\n url: string,\n options?: { headers?: Record<string, string>; signal?: AbortSignal },\n): Promise<{ ok: boolean; status: number; data: T }> => {\n const response = await fetch(url, {\n credentials: \"include\",\n headers: options?.headers,\n signal: options?.signal,\n })\n const payload = await response.json().catch(() => ({}))\n return { ok: response.ok, status: response.status, data: payload as T }\n}\n\nconst putOctetStream = async ({\n url,\n body,\n sha256,\n uploadKey,\n signal,\n}: {\n url: string\n body: ArrayBuffer\n sha256?: string\n uploadKey?: string\n signal?: AbortSignal\n}): Promise<{ ok: boolean; status: number }> => {\n const headers: Record<string, string> = {\n \"Content-Type\": \"application/octet-stream\",\n }\n if (sha256) headers[\"X-Chunk-SHA256\"] = sha256\n if (uploadKey) headers[\"X-Upload-Key\"] = uploadKey\n\n const response = await fetch(url, {\n method: \"PUT\",\n credentials: \"include\",\n headers,\n body,\n signal,\n })\n\n return { ok: response.ok, status: response.status }\n}\n\nconst defaultUpload: UploadHandler = async (file, onProgress, options) => {\n const initRes = await postJson<FileUploadsInitResponse>(\n \"/api/rb/file-uploads\",\n {\n filename: file.name,\n mimeType: file.type || \"application/octet-stream\",\n ...(typeof options?.isPublic === \"boolean\" ? { isPublic: options.isPublic } : {}),\n totalSize: file.size,\n },\n { signal: options?.signal },\n )\n\n if (!initRes.ok || !(initRes.data as any)?.ok) {\n throw new Error((initRes.data as any)?.error ?? `Init failed (${initRes.status})`)\n }\n\n const uploadId = String((initRes.data as any)?.uploadId ?? \"\")\n const uploadKey = typeof (initRes.data as any)?.uploadKey === \"string\" ? String((initRes.data as any).uploadKey) : null\n const chunkSize = Number((initRes.data as any)?.chunkSize ?? 0)\n const chunksTotal = Number((initRes.data as any)?.chunksTotal ?? 0)\n\n if (!uploadId || !chunkSize || !chunksTotal) {\n throw new Error(\"Upload init missing required fields\")\n }\n\n const doUploadChunk = async (index: number) => {\n const start = index * chunkSize\n const end = Math.min(file.size, start + chunkSize)\n const slice = file.slice(start, end)\n const body = await slice.arrayBuffer()\n const sha = await sha256Hex(body)\n\n const res = await putOctetStream({\n url: `/api/rb/file-uploads/${encodeURIComponent(uploadId)}/chunks/${index}`,\n body,\n sha256: sha ?? undefined,\n uploadKey: uploadKey ?? undefined,\n signal: options?.signal,\n })\n\n if (res.status === 204) return\n throw new Error(`Chunk ${index} failed (${res.status})`)\n }\n\n const uploadChunks = async (indices: number[], alreadyUploaded = 0) => {\n let uploaded = alreadyUploaded\n\n for (const idx of indices) {\n await doUploadChunk(idx)\n uploaded += 1\n const pct = Math.min(99, Math.floor((uploaded / chunksTotal) * 99))\n onProgress(pct)\n }\n }\n\n const allIndices = Array.from({ length: chunksTotal }, (_, i) => i)\n await uploadChunks(allIndices, 0)\n\n const complete = async (): Promise<string> => {\n const completeRes = await postJson<FileUploadsCompleteResponse>(\n `/api/rb/file-uploads/${encodeURIComponent(uploadId)}/complete`,\n {},\n { headers: uploadKey ? { \"X-Upload-Key\": uploadKey } : undefined, signal: options?.signal },\n )\n\n if (completeRes.ok && (completeRes.data as any)?.ok) {\n const fileId = String((completeRes.data as any)?.fileId ?? \"\")\n if (!fileId) throw new Error(\"Upload completed without fileId\")\n return fileId\n }\n\n const code = String((completeRes.data as any)?.error ?? \"\")\n if (completeRes.status !== 409 || code !== \"missing_chunks\") {\n throw new Error(code || `Complete failed (${completeRes.status})`)\n }\n\n const statusRes = await getJson<FileUploadsStatusResponse>(\n `/api/rb/file-uploads/${encodeURIComponent(uploadId)}/status`,\n { headers: uploadKey ? { \"X-Upload-Key\": uploadKey } : undefined, signal: options?.signal },\n )\n\n if (!statusRes.ok || !(statusRes.data as any)?.ok) {\n throw new Error((statusRes.data as any)?.error ?? `Status failed (${statusRes.status})`)\n }\n\n const received = Array.isArray((statusRes.data as any)?.received) ? (statusRes.data as any).received : []\n const present = new Set<number>(received)\n const missing: number[] = []\n for (let i = 0; i < chunksTotal; i += 1) {\n if (!present.has(i)) missing.push(i)\n }\n\n if (!missing.length) {\n throw new Error(\"missing_chunks\")\n }\n\n await uploadChunks(missing, present.size)\n return complete()\n }\n\n const fileId = await complete()\n\n onProgress(100)\n return {\n id: fileId,\n url: `/api/rb/files/${encodeURIComponent(fileId)}`,\n alt: file.name,\n ...(uploadKey ? { uploadKey } : {}),\n }\n}\n\nfunction SortableTile({\n item,\n isHovered,\n enableImagePreview,\n renderItem,\n onHoverEnter,\n onHoverLeave,\n onRemove,\n onRetry,\n startFullscreen,\n isUploading,\n isError,\n tileClasses,\n disabled,\n isDraggingExternal,\n removeButtonAriaLabel,\n}: {\n item: FileWithState\n isHovered: boolean\n enableImagePreview: boolean\n renderItem?: (props: FilesUploadFieldRenderItemProps) => ReactNode\n onHoverEnter: () => void\n onHoverLeave: () => void\n onRemove: (id: string) => void\n onRetry: (id: string) => void\n startFullscreen: (id: string) => void\n isUploading: boolean\n isError: boolean\n tileClasses: string\n disabled: boolean\n isDraggingExternal: boolean\n removeButtonAriaLabel: string\n}) {\n const { setNodeRef, attributes, listeners, transform, transition, isDragging } = useSortable({\n id: item.id,\n disabled,\n })\n\n const tileRef = useRef<HTMLDivElement | null>(null)\n const previewRef = useRef<HTMLDivElement | null>(null)\n const [previewPosition, setPreviewPosition] = useState<{ left: number; top: number } | null>(null)\n\n const updatePreviewPosition = () => {\n const el = tileRef.current\n if (!el) return\n const rect = el.getBoundingClientRect()\n setPreviewPosition({ left: rect.left + rect.width / 2, top: rect.top - 10 })\n }\n\n useEffect(() => {\n if (!enableImagePreview || !isHovered) {\n setPreviewPosition(null)\n return\n }\n\n updatePreviewPosition()\n\n let raf = 0\n const schedule = () => {\n if (raf) cancelAnimationFrame(raf)\n raf = requestAnimationFrame(() => {\n raf = 0\n updatePreviewPosition()\n })\n }\n\n window.addEventListener(\"resize\", schedule)\n window.addEventListener(\"scroll\", schedule, true)\n return () => {\n if (raf) cancelAnimationFrame(raf)\n window.removeEventListener(\"resize\", schedule)\n window.removeEventListener(\"scroll\", schedule, true)\n }\n }, [enableImagePreview, isHovered])\n\n const style = {\n transform: CSS.Transform.toString(transform),\n transition,\n }\n\n const tileContent = renderItem\n ? renderItem({\n file: { id: item.id, url: item.url, alt: item.alt, uploadKey: item.uploadKey },\n previewUrl: item.previewUrl,\n status: item.status,\n progress: item.progress,\n fileName: item.fileName,\n })\n : enableImagePreview\n ? (\n <Image\n src={item.previewUrl}\n alt={item.alt ?? \"Uploaded file\"}\n sizes=\"96px\"\n className={cn(\n \"size-full rounded-md object-cover\",\n isUploading && \"opacity-75\",\n isError && \"grayscale\"\n )}\n />\n )\n : (\n <div className=\"flex size-full items-center justify-center rounded-md bg-slate-100 px-2 text-center text-[10px] font-medium text-slate-700 dark:bg-slate-800 dark:text-slate-200\">\n <span className=\"w-full truncate\">{item.fileName ?? item.alt ?? \"Fichier\"}</span>\n </div>\n )\n\n return (\n <div\n ref={(node) => {\n tileRef.current = node\n setNodeRef(node)\n }}\n style={style}\n className={cn(\n tileClasses,\n isDragging && \"z-20 ring-2 ring-primary shadow-xl\",\n isDraggingExternal && \"opacity-0\",\n !disabled && \"cursor-grab active:cursor-grabbing\",\n isDragging && \"cursor-grabbing\",\n disabled && \"cursor-default\"\n )}\n onMouseEnter={() => {\n updatePreviewPosition()\n onHoverEnter()\n }}\n onMouseLeave={(event) => {\n const next = event.relatedTarget\n if (next instanceof Node && previewRef.current?.contains(next)) return\n onHoverLeave()\n }}\n {...attributes}\n {...listeners}\n >\n {tileContent}\n\n <button\n type=\"button\"\n onClick={() => {\n if (disabled) return\n onRemove(item.id)\n }}\n disabled={disabled}\n className=\"absolute right-1 top-1 inline-flex size-6 items-center justify-center rounded-full bg-white text-slate-700 shadow-sm transition hover:scale-105 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary dark:bg-slate-900 dark:text-slate-200\"\n aria-label={removeButtonAriaLabel}\n >\n <X className=\"h-4 w-4\" />\n </button>\n\n {enableImagePreview &&\n isHovered &&\n previewPosition &&\n (() => {\n const preview = (\n <>\n <div\n ref={previewRef}\n className=\"pointer-events-auto fixed z-[60] w-52 -translate-x-1/2 -translate-y-full rounded-xl border border-slate-200 bg-white/95 p-3 shadow-2xl backdrop-blur dark:border-slate-700 dark:bg-slate-900/95\"\n style={{ left: previewPosition.left, top: previewPosition.top }}\n onMouseEnter={() => {\n updatePreviewPosition()\n onHoverEnter()\n }}\n onMouseLeave={(event) => {\n const next = event.relatedTarget\n if (next instanceof Node && tileRef.current?.contains(next)) return\n onHoverLeave()\n }}\n >\n <div className=\"relative overflow-hidden rounded-lg\">\n <Image src={item.url} alt={item.alt ?? \"Preview\"} sizes=\"208px\" className=\"h-40 w-full object-cover\" />\n <button\n type=\"button\"\n onClick={() => startFullscreen(item.id)}\n className=\"absolute right-2 top-2 inline-flex items-center justify-center rounded-full bg-black/70 p-2 text-white transition hover:bg-black\"\n aria-label=\"Plein écran\"\n >\n <Maximize2 className=\"h-3.5 w-3.5\" />\n </button>\n </div>\n </div>\n </>\n )\n\n if (typeof document === \"undefined\") return preview\n return createPortal(preview, document.body)\n })()}\n\n {isUploading && (\n <div className=\"absolute inset-0 z-20 flex flex-col items-center justify-center gap-2 rounded-lg bg-black/40 text-white\">\n <Loader2 className=\"h-5 w-5 animate-spin\" />\n <div className=\"h-1.5 w-5/6 rounded-full bg-white/20\">\n <div className=\"h-full rounded-full bg-primary\" style={{ width: `${item.progress}%` }} />\n </div>\n <div className=\"text-xs font-semibold\">{item.progress}%</div>\n </div>\n )}\n\n {isError && (\n <div className=\"absolute inset-0 z-10 flex flex-col items-center justify-center gap-2 rounded-lg bg-red-600/70 text-white\">\n <div className=\"max-w-[92%] break-words text-center text-[10px] font-semibold leading-tight\" title={item.errorMessage}>\n {getErrorLabel(item.errorMessage)}\n </div>\n <button\n type=\"button\"\n onClick={() => onRetry(item.id)}\n disabled={disabled}\n className=\"rounded-full bg-white/90 px-3 py-1 text-xs font-semibold text-red-700 shadow-sm transition hover:bg-white focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-white\"\n >\n Réessayer\n </button>\n </div>\n )}\n </div>\n )\n}\n\ntype UploadResult = FilesUploadFieldFile | Promise<FilesUploadFieldFile>\n\ntype UploadHandler = (\n file: File,\n onProgress: (progress: number) => void,\n options?: { signal?: AbortSignal; isPublic?: boolean },\n) => UploadResult\n\nexport type FilesUploadFieldRenderItemProps = {\n file: FilesUploadFieldFile\n previewUrl: string\n status: \"uploaded\" | \"uploading\" | \"error\"\n progress: number\n fileName?: string\n}\n\nexport type FilesUploadFieldProps = {\n initialFiles?: FilesUploadFieldFile[]\n onChange?: (files: FilesUploadFieldFile[]) => void\n upload?: UploadHandler\n uploadIsPublic?: boolean\n disabled?: boolean\n onUploadingChange?: (isUploading: boolean) => void\n accept?: string | string[]\n renderHeader?: () => ReactNode\n renderItem?: (props: FilesUploadFieldRenderItemProps) => ReactNode\n addButtonAriaLabel?: string\n removeButtonAriaLabel?: string\n}\n\ntype FileWithState = FilesUploadFieldFile & {\n previewUrl: string\n status: \"uploaded\" | \"uploading\" | \"error\"\n progress: number\n fileName?: string\n errorMessage?: string\n}\n\nfunction toPreview(file: File) {\n return URL.createObjectURL(file)\n}\n\nconst getErrorMessage = (error: unknown): string => {\n if (error instanceof Error) return error.message\n if (typeof error === \"string\") return error\n return \"Upload failed\"\n}\n\nconst getErrorLabel = (message: string | undefined): string => {\n if (!message) return \"Échec\"\n if (message.startsWith(\"heif_decode_unsupported\")) return \"HEIC/HEVC non supporté\"\n return message\n}\n\nexport function FilesUploadField({\n initialFiles = [],\n onChange,\n upload = defaultUpload,\n uploadIsPublic = false,\n disabled = false,\n onUploadingChange,\n accept,\n renderHeader,\n renderItem,\n addButtonAriaLabel = \"Ajouter un fichier\",\n removeButtonAriaLabel = \"Supprimer le fichier\",\n}: FilesUploadFieldProps) {\n const fileInputRef = useRef<HTMLInputElement>(null)\n const [images, setImages] = useState<FileWithState[]>(() =>\n initialFiles.map((file) => ({ ...file, previewUrl: file.url, status: \"uploaded\", progress: 100 }))\n )\n const [dragActive, setDragActive] = useState(false)\n const [fullscreenIndex, setFullscreenIndex] = useState<number | null>(null)\n const [hoveredId, setHoveredId] = useState<string | null>(null)\n const [activeId, setActiveId] = useState<string | null>(null)\n const hoverTimeoutRef = useRef<number | null>(null)\n const skipNotifyRef = useRef(true)\n const imagesRef = useRef<FileWithState[]>([])\n const lastInitialImagesRef = useRef<FilesUploadFieldFile[]>(initialFiles)\n const onChangeRef = useRef(onChange)\n const onUploadingChangeRef = useRef(onUploadingChange)\n const replacedIdRef = useRef<Map<string, string>>(new Map())\n const fileRef = useRef<Map<string, File>>(new Map())\n const abortRef = useRef<Map<string, AbortController>>(new Map())\n const objectUrlRef = useRef<Map<string, string>>(new Map())\n const sensors = useSensors(\n useSensor(PointerSensor, { activationConstraint: { distance: 6 } }),\n useSensor(KeyboardSensor, { coordinateGetter: sortableKeyboardCoordinates })\n )\n\n useEffect(() => {\n return () => {\n for (const controller of abortRef.current.values()) {\n try {\n controller.abort()\n } catch {\n //\n }\n }\n abortRef.current.clear()\n fileRef.current.clear()\n replacedIdRef.current.clear()\n\n for (const url of objectUrlRef.current.values()) {\n if (typeof URL !== \"undefined\") {\n try {\n URL.revokeObjectURL(url)\n } catch {\n //\n }\n }\n }\n objectUrlRef.current.clear()\n }\n }, [])\n\n useEffect(() => {\n if (typeof document === \"undefined\") return\n if (activeId) {\n document.body.style.cursor = \"grabbing\"\n return () => {\n document.body.style.cursor = \"\"\n }\n }\n document.body.style.cursor = \"\"\n }, [activeId])\n\n useEffect(() => {\n imagesRef.current = images\n }, [images])\n\n useEffect(() => {\n onChangeRef.current = onChange\n }, [onChange])\n\n useEffect(() => {\n onUploadingChangeRef.current = onUploadingChange\n }, [onUploadingChange])\n\n useEffect(() => {\n const previous = lastInitialImagesRef.current\n const samePropValue =\n previous.length === initialFiles.length &&\n previous.every((img, index) => {\n const next = initialFiles[index]\n return next && img.id === next.id && img.url === next.url && img.alt === next.alt\n })\n\n if (samePropValue) return\n lastInitialImagesRef.current = initialFiles\n\n const prepared: FileWithState[] = initialFiles.map((img) => ({\n ...img,\n previewUrl: img.url,\n status: \"uploaded\",\n progress: 100,\n }))\n\n const preparedRawIds = new Set(prepared.map((img) => img.id))\n for (const [tempId, finalId] of replacedIdRef.current.entries()) {\n if (preparedRawIds.has(finalId)) {\n replacedIdRef.current.delete(tempId)\n }\n }\n\n const currentIds = new Set(imagesRef.current.map((img) => img.id))\n const hasStaleInitialImages = prepared.some((img) => {\n const mapped = replacedIdRef.current.get(img.id)\n return mapped ? currentIds.has(mapped) : false\n })\n if (hasStaleInitialImages) return\n\n const preparedIds = new Set(prepared.map((img) => img.id))\n for (const img of imagesRef.current) {\n if (preparedIds.has(img.id)) continue\n\n const controller = abortRef.current.get(img.id)\n if (controller) {\n abortRef.current.delete(img.id)\n try {\n controller.abort()\n } catch {\n //\n }\n }\n\n fileRef.current.delete(img.id)\n\n const tempUrl = objectUrlRef.current.get(img.id)\n if (tempUrl) {\n objectUrlRef.current.delete(img.id)\n try {\n URL.revokeObjectURL(tempUrl)\n } catch {\n //\n }\n }\n }\n\n setImages((current) => {\n const sameLength = current.length === prepared.length\n const sameContent =\n sameLength &&\n current.every((item, index) => {\n const next = prepared[index]\n return next && item.id === next.id && item.url === next.url && item.alt === next.alt && item.uploadKey === next.uploadKey\n })\n\n if (sameContent) return current\n\n skipNotifyRef.current = true\n return prepared\n })\n }, [initialFiles])\n\n useEffect(() => {\n if (skipNotifyRef.current) {\n skipNotifyRef.current = false\n return\n }\n\n onChangeRef.current?.(images.map(({ id, url, alt, uploadKey }) => ({ id, url, alt, uploadKey })))\n }, [images])\n\n useEffect(() => {\n onUploadingChangeRef.current?.(images.some((img) => img.status === \"uploading\"))\n }, [images])\n\n useEffect(() => {\n if (fullscreenIndex === null) {\n return\n }\n\n const handleKey = (event: KeyboardEvent) => {\n if (event.key === \"Escape\") {\n setFullscreenIndex(null)\n return\n }\n\n if (event.key === \"ArrowRight\") {\n setFullscreenIndex((current) => {\n if (current === null) return current\n return (current + 1) % images.length\n })\n return\n }\n\n if (event.key === \"ArrowLeft\") {\n setFullscreenIndex((current) => {\n if (current === null) return current\n return (current - 1 + images.length) % images.length\n })\n }\n }\n\n window.addEventListener(\"keydown\", handleKey)\n return () => window.removeEventListener(\"keydown\", handleKey)\n }, [fullscreenIndex, images.length])\n\n const handleFiles = async (files: FileList | File[]) => {\n if (disabled) return\n const list = Array.from(files)\n\n const uploads = list.map((file) => {\n const previewUrl = toPreview(file)\n const tempId = crypto.randomUUID()\n\n objectUrlRef.current.set(tempId, previewUrl)\n fileRef.current.set(tempId, file)\n\n const next: FileWithState = {\n id: tempId,\n url: previewUrl,\n previewUrl,\n alt: file.name,\n status: \"uploading\",\n progress: 0,\n fileName: file.name,\n }\n\n setImages((current) => [...current, next])\n\n const updateProgress = (value: number) => {\n const nextValue = Math.max(0, Math.min(99, value))\n setImages((current) =>\n current.map((item) =>\n item.id === tempId ? { ...item, progress: nextValue, status: \"uploading\" } : item\n )\n )\n }\n\n const finalize = async () => {\n const controller = new AbortController()\n abortRef.current.set(tempId, controller)\n\n try {\n const result = await upload(file, updateProgress, { signal: controller.signal, isPublic: uploadIsPublic })\n replacedIdRef.current.set(tempId, result.id)\n\n const tempUrl = objectUrlRef.current.get(tempId)\n if (tempUrl) {\n objectUrlRef.current.delete(tempId)\n try {\n URL.revokeObjectURL(tempUrl)\n } catch {\n //\n }\n }\n\n abortRef.current.delete(tempId)\n fileRef.current.delete(tempId)\n\n setImages((current) =>\n current.map((item) =>\n item.id === tempId\n ? {\n ...item,\n ...result,\n previewUrl: result.url,\n url: result.url,\n status: \"uploaded\",\n progress: 100,\n errorMessage: undefined,\n }\n : item\n )\n )\n } catch (error) {\n abortRef.current.delete(tempId)\n if (controller.signal.aborted) {\n fileRef.current.delete(tempId)\n const tempUrl = objectUrlRef.current.get(tempId)\n if (tempUrl) {\n objectUrlRef.current.delete(tempId)\n try {\n URL.revokeObjectURL(tempUrl)\n } catch {\n //\n }\n }\n return\n }\n console.error(\"Upload failed\", error)\n const errorMessage = getErrorMessage(error)\n setImages((current) =>\n current.map((item) =>\n item.id === tempId\n ? { ...item, status: \"error\", progress: Math.max(0, Math.min(99, item.progress)), errorMessage }\n : item\n )\n )\n }\n }\n\n return finalize()\n })\n\n await Promise.allSettled(uploads)\n }\n\n const onFileInputChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n if (!event.target.files) return\n void handleFiles(event.target.files)\n event.target.value = \"\"\n }\n\n const openFileDialog = () => {\n if (disabled) return\n fileInputRef.current?.click()\n }\n\n const removeImage = (id: string) => {\n const controller = abortRef.current.get(id)\n if (controller) {\n abortRef.current.delete(id)\n try {\n controller.abort()\n } catch {\n //\n }\n }\n\n fileRef.current.delete(id)\n\n const tempUrl = objectUrlRef.current.get(id)\n if (tempUrl) {\n objectUrlRef.current.delete(id)\n try {\n URL.revokeObjectURL(tempUrl)\n } catch {\n //\n }\n }\n\n setImages((current) => current.filter((item) => item.id !== id))\n }\n\n const retryUpload = (id: string) => {\n if (disabled) return\n const file = fileRef.current.get(id)\n if (!file) return\n\n const existingController = abortRef.current.get(id)\n if (existingController) {\n try {\n existingController.abort()\n } catch {\n //\n }\n abortRef.current.delete(id)\n }\n\n setImages((current) =>\n current.map((item) => (item.id === id ? { ...item, status: \"uploading\", progress: 0, errorMessage: undefined } : item))\n )\n\n const updateProgress = (value: number) => {\n const nextValue = Math.max(0, Math.min(99, value))\n setImages((current) =>\n current.map((item) => (item.id === id ? { ...item, progress: nextValue, status: \"uploading\" } : item))\n )\n }\n\n const controller = new AbortController()\n abortRef.current.set(id, controller)\n\n void (async () => {\n try {\n const result = await upload(file, updateProgress, { signal: controller.signal, isPublic: uploadIsPublic })\n replacedIdRef.current.set(id, result.id)\n\n const tempUrl = objectUrlRef.current.get(id)\n if (tempUrl) {\n objectUrlRef.current.delete(id)\n try {\n URL.revokeObjectURL(tempUrl)\n } catch {\n //\n }\n }\n\n abortRef.current.delete(id)\n fileRef.current.delete(id)\n\n setImages((current) =>\n current.map((item) =>\n item.id === id\n ? { ...item, ...result, previewUrl: result.url, url: result.url, status: \"uploaded\", progress: 100, errorMessage: undefined }\n : item\n )\n )\n } catch (error) {\n abortRef.current.delete(id)\n if (controller.signal.aborted) return\n console.error(\"Retry failed\", error)\n const errorMessage = getErrorMessage(error)\n setImages((current) => current.map((item) => (item.id === id ? { ...item, status: \"error\", errorMessage } : item)))\n }\n })()\n }\n\n const startFullscreen = (id: string) => {\n const index = images.findIndex((item) => item.id === id)\n if (index !== -1) {\n setFullscreenIndex(index)\n }\n }\n\n const handleDragStart = (event: DragEndEvent) => {\n setActiveId(String(event.active.id))\n }\n\n const handleDragEnd = (event: DragEndEvent) => {\n const { active, over } = event\n if (!over) {\n setActiveId(null)\n return\n }\n\n const activeId = String(active.id)\n const overId = String(over.id)\n\n if (activeId !== overId) {\n setImages((current) => {\n const oldIndex = current.findIndex((item) => item.id === activeId)\n const newIndex = current.findIndex((item) => item.id === overId)\n if (oldIndex === -1 || newIndex === -1) return current\n return arrayMove(current, oldIndex, newIndex)\n })\n }\n\n setActiveId(null)\n }\n\n const handleDragCancel = () => {\n setActiveId(null)\n }\n\n const clearHoverTimeout = () => {\n if (hoverTimeoutRef.current !== null) {\n window.clearTimeout(hoverTimeoutRef.current)\n hoverTimeoutRef.current = null\n }\n }\n\n const fullscreenImage = useMemo(() => {\n if (fullscreenIndex === null) return null\n return images[fullscreenIndex] ?? null\n }, [fullscreenIndex, images])\n\n const containerClasses = cn(\n \"rounded-xl border border-dashed border-slate-300 bg-white/70 p-4 shadow-sm transition-colors dark:border-slate-700 dark:bg-slate-900/60\",\n dragActive && \"border-primary ring-2 ring-primary/50\",\n disabled && \"opacity-70\"\n )\n\n const tileBaseClasses = \"group relative size-20 overflow-visible rounded-lg border border-slate-200 bg-slate-50 shadow-inner transition hover:shadow md:size-24 dark:border-slate-700 dark:bg-slate-800\"\n\n const acceptAttr = useMemo(() => {\n if (!accept) return undefined\n if (Array.isArray(accept)) return accept.join(\",\")\n return accept\n }, [accept])\n\n const enableImagePreview = useMemo(() => {\n if (renderItem) return false\n if (!acceptAttr) return false\n const tokens = acceptAttr.split(\",\").map((value) => value.trim()).filter(Boolean)\n if (!tokens.length) return false\n return tokens.every((token) =>\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 toRenderItemProps = (item: FileWithState): FilesUploadFieldRenderItemProps => ({\n file: { id: item.id, url: item.url, alt: item.alt, uploadKey: item.uploadKey },\n previewUrl: item.previewUrl,\n status: item.status,\n progress: item.progress,\n fileName: item.fileName,\n })\n\n const dragOverlayContent = activeId\n ? (() => {\n const activeItem = images.find((item) => item.id === activeId)\n if (!activeItem) return null\n\n if (renderItem) {\n const rendered = renderItem(toRenderItemProps(activeItem))\n if (rendered === null || rendered === undefined || rendered === false) return null\n return (\n <div className=\"pointer-events-none\">\n <div className=\"h-24 w-24 overflow-hidden rounded-lg shadow-2xl\">{rendered}</div>\n </div>\n )\n }\n\n if (!enableImagePreview) return null\n return (\n <div className=\"pointer-events-none\">\n <Image\n src={activeItem.previewUrl}\n alt={activeItem.alt ?? \"Dragged image\"}\n sizes=\"96px\"\n className=\"h-24 w-24 rounded-lg object-cover shadow-2xl\"\n />\n </div>\n )\n })()\n : null\n\n const hideActiveTile = dragOverlayContent !== null && dragOverlayContent !== undefined\n\n return (\n <div\n onDragOver={(event) => {\n event.preventDefault()\n if (!disabled) {\n setDragActive(true)\n }\n }}\n onDragLeave={() => setDragActive(false)}\n onDrop={(event) => {\n event.preventDefault()\n setDragActive(false)\n if (event.dataTransfer.files?.length) {\n void handleFiles(event.dataTransfer.files)\n }\n }}\n className={containerClasses}\n >\n {renderHeader ? <div className=\"mb-3\">{renderHeader()}</div> : null}\n\n <DndContext\n sensors={disabled ? undefined : sensors}\n collisionDetection={closestCenter}\n onDragStart={handleDragStart}\n onDragEnd={handleDragEnd}\n onDragCancel={handleDragCancel}\n >\n <SortableContext items={images.map((item) => item.id)} strategy={rectSortingStrategy}>\n <div className=\"flex flex-wrap gap-3\">\n {images.map((item) => {\n const isUploading = item.status === \"uploading\"\n const isError = item.status === \"error\"\n\n return (\n <SortableTile\n key={item.id}\n item={item}\n isHovered={hoveredId === item.id}\n enableImagePreview={enableImagePreview}\n renderItem={renderItem}\n onHoverEnter={() => {\n clearHoverTimeout()\n setHoveredId(item.id)\n }}\n onHoverLeave={() => {\n clearHoverTimeout()\n hoverTimeoutRef.current = window.setTimeout(() => {\n setHoveredId((current) => (current === item.id ? null : current))\n hoverTimeoutRef.current = null\n }, 120)\n }}\n onRemove={removeImage}\n onRetry={retryUpload}\n startFullscreen={startFullscreen}\n isUploading={isUploading}\n isError={isError}\n tileClasses={tileBaseClasses}\n disabled={disabled}\n isDraggingExternal={hideActiveTile && activeId === item.id}\n removeButtonAriaLabel={removeButtonAriaLabel}\n />\n )\n })}\n\n <button\n type=\"button\"\n onClick={openFileDialog}\n disabled={disabled}\n className={cn(\n tileBaseClasses,\n \"flex items-center justify-center border-dashed bg-white text-slate-500 hover:border-slate-300 dark:bg-slate-900\"\n )}\n aria-label={addButtonAriaLabel}\n >\n <div className=\"flex flex-col items-center gap-1\">\n <div className=\"flex size-9 items-center justify-center rounded-full border border-slate-300 bg-slate-100 text-slate-600 shadow-inner dark:border-slate-700 dark:bg-slate-800 dark:text-slate-200\">\n <Plus className=\"h-5 w-5\" />\n </div>\n <span className=\"text-xs font-medium\">Ajouter</span>\n </div>\n </button>\n </div>\n </SortableContext>\n {(() => {\n const overlay = <DragOverlay>{dragOverlayContent}</DragOverlay>\n\n if (typeof document === \"undefined\") return overlay\n return createPortal(overlay, document.body)\n })()}\n </DndContext>\n\n <input\n ref={fileInputRef}\n type=\"file\"\n accept={acceptAttr}\n multiple\n className=\"hidden\"\n onChange={onFileInputChange}\n aria-hidden\n />\n\n {enableImagePreview && fullscreenImage && (\n <div className=\"fixed inset-0 z-50 flex items-center justify-center bg-black/90\">\n <button\n type=\"button\"\n className=\"absolute left-6 top-1/2 -translate-y-1/2 rounded-full bg-white/10 p-3 text-white shadow-lg transition hover:bg-white/20 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-white\"\n onClick={() =>\n setFullscreenIndex((current) => {\n if (current === null) return current\n return (current - 1 + images.length) % images.length\n })\n }\n aria-label=\"Précédent\"\n >\n <svg viewBox=\"0 0 24 24\" className=\"h-6 w-6\" stroke=\"currentColor\" strokeWidth={2} fill=\"none\">\n <path d=\"M15 18l-6-6 6-6\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n </button>\n <div className=\"relative max-h-[80vh] max-w-4xl\">\n <Image\n src={fullscreenImage.url}\n alt={fullscreenImage.alt ?? \"Fullscreen\"}\n sizes=\"(max-width: 1024px) 100vw, 1024px\"\n className=\"max-h-[80vh] max-w-full rounded-lg object-contain shadow-2xl\"\n />\n <button\n type=\"button\"\n className=\"absolute right-3 top-3 inline-flex size-9 items-center justify-center rounded-full bg-black/70 text-white transition hover:bg-black focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-white\"\n onClick={() => setFullscreenIndex(null)}\n aria-label=\"Fermer\"\n >\n <X className=\"h-5 w-5\" />\n </button>\n </div>\n <button\n type=\"button\"\n className=\"absolute right-6 top-1/2 -translate-y-1/2 rounded-full bg-white/10 p-3 text-white shadow-lg transition hover:bg-white/20 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-white\"\n onClick={() =>\n setFullscreenIndex((current) => {\n if (current === null) return current\n return (current + 1) % images.length\n })\n }\n aria-label=\"Suivant\"\n >\n <svg viewBox=\"0 0 24 24\" className=\"h-6 w-6\" stroke=\"currentColor\" strokeWidth={2} fill=\"none\">\n <path d=\"M9 6l6 6-6 6\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n </button>\n </div>\n )}\n </div>\n )\n}\n"],"names":["sha256Hex","data","crypto","subtle","digest","Array","from","Uint8Array","map","b","toString","padStart","join","postJson","url","body","options","response","fetch","method","headers","credentials","JSON","stringify","signal","payload","json","catch","ok","status","getJson","putOctetStream","sha256","uploadKey","defaultUpload","file","onProgress","initRes","filename","name","mimeType","type","isPublic","totalSize","size","Error","error","uploadId","String","chunkSize","Number","chunksTotal","doUploadChunk","index","start","end","Math","min","slice","arrayBuffer","sha","res","encodeURIComponent","undefined","uploadChunks","indices","alreadyUploaded","uploaded","idx","pct","floor","allIndices","length","_","i","complete","completeRes","fileId","code","statusRes","received","isArray","present","Set","missing","has","push","id","alt","SortableTile","t0","$","_c","item","isHovered","enableImagePreview","renderItem","onHoverEnter","onHoverLeave","onRemove","onRetry","startFullscreen","isUploading","isError","tileClasses","disabled","isDraggingExternal","removeButtonAriaLabel","t1","setNodeRef","attributes","listeners","transform","transition","isDragging","useSortable","tileRef","useRef","previewRef","previewPosition","setPreviewPosition","useState","t2","Symbol","for","el","current","rect","getBoundingClientRect","left","width","top","updatePreviewPosition","t3","t4","raf","schedule","cancelAnimationFrame","requestAnimationFrame","window","addEventListener","removeEventListener","useEffect","t5","CSS","Transform","t6","style","t7","fileName","previewUrl","progress","jsx","Image","cn","tileContent","t8","node","t9","t10","t11","t12","t13","t14","t15","t16","event","next","relatedTarget","Node","contains","t17","t18","X","t19","t20","preview","event_0","next_0","jsxs","Maximize2","document","createPortal","t21","Loader2","t22","errorMessage","getErrorLabel","t23","toPreview","URL","createObjectURL","getErrorMessage","message","startsWith","FilesUploadField","initialFiles","onChange","upload","uploadIsPublic","onUploadingChange","accept","renderHeader","addButtonAriaLabel","fileInputRef","_temp","images","setImages","dragActive","setDragActive","fullscreenIndex","setFullscreenIndex","hoveredId","setHoveredId","activeId","setActiveId","hoverTimeoutRef","skipNotifyRef","imagesRef","lastInitialImagesRef","onChangeRef","onUploadingChangeRef","Map","replacedIdRef","fileRef","abortRef","objectUrlRef","activationConstraint","distance","coordinateGetter","sortableKeyboardCoordinates","sensors","useSensors","useSensor","PointerSensor","KeyboardSensor","controller","values","abort","clear","revokeObjectURL","cursor","_temp2","t24","t25","t26","t27","previous","every","img","prepared","_temp3","preparedRawIds","_temp4","tempId","finalId","entries","delete","currentIds","_temp5","some","img_3","mapped","get","preparedIds","_temp6","img_5","controller_0","tempUrl","index_0","t28","t29","_temp7","t30","t31","_temp8","t32","t33","handleKey","key","current_0","current_1","t34","files","uploads","file_0","tempId_0","randomUUID","set","next_1","current_2","updateProgress","value","nextValue","max","current_3","item_0","controller_1","AbortController","result","tempUrl_1","current_5","item_2","t35","aborted","tempUrl_0","console","current_4","item_1","finalize","Promise","allSettled","handleFiles","target","onFileInputChange","t36","click","openFileDialog","t37","id_0","controller_2","tempUrl_2","current_6","filter","item_3","removeImage","t38","id_1","file_1","existingController","current_7","item_4","updateProgress_0","value_0","nextValue_0","current_8","item_5","controller_3","result_0","tempUrl_3","current_10","item_7","t39","errorMessage_0","current_9","item_6","retryUpload","id_2","index_1","findIndex","item_8","t40","event_1","active","handleDragStart","t41","event_2","over","activeId_0","overId","current_11","oldIndex","item_9","newIndex","item_10","arrayMove","handleDragEnd","t42","handleDragCancel","t43","clearTimeout","clearHoverTimeout","t44","bb0","fullscreenImage","t45","t46","t47","containerClasses","t48","bb1","t49","acceptAttr","bb2","tokens","split","_temp9","Boolean","_temp0","toRenderItemProps","_temp1","t50","activeItem","find","item_12","rendered","dragOverlayContent","hideActiveTile","t51","event_3","preventDefault","t52","t53","event_4","dataTransfer","t54","t55","t56","_temp10","t57","item_14","setTimeout","current_12","tileBaseClasses","t58","t59","Plus","t60","t61","t62","SortableContext","rectSortingStrategy","t63","bb3","t64","DragOverlay","overlay","t65","DndContext","closestCenter","t66","current_13","current_14","t67","item_13","item_11","token","value_1","trim","img_6","url_0","img_4","img_2","img_1","img_0"],"mappings":"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"}
|
package/dist/index80.js
CHANGED
|
@@ -1,9 +1,72 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
import m from "./index205.js";
|
|
2
|
+
import p from "./index206.js";
|
|
3
|
+
import y from "./index204.js";
|
|
4
|
+
import b from "./index93.js";
|
|
5
|
+
import l from "./index196.js";
|
|
6
|
+
function i(e) {
|
|
7
|
+
"@babel/helpers - typeof";
|
|
8
|
+
return i = typeof Symbol == "function" && typeof Symbol.iterator == "symbol" ? function(r) {
|
|
9
|
+
return typeof r;
|
|
10
|
+
} : function(r) {
|
|
11
|
+
return r && typeof Symbol == "function" && r.constructor === Symbol && r !== Symbol.prototype ? "symbol" : typeof r;
|
|
12
|
+
}, i(e);
|
|
13
|
+
}
|
|
14
|
+
function c(e, r) {
|
|
15
|
+
var t = Object.keys(e);
|
|
16
|
+
if (Object.getOwnPropertySymbols) {
|
|
17
|
+
var o = Object.getOwnPropertySymbols(e);
|
|
18
|
+
r && (o = o.filter(function(n) {
|
|
19
|
+
return Object.getOwnPropertyDescriptor(e, n).enumerable;
|
|
20
|
+
})), t.push.apply(t, o);
|
|
21
|
+
}
|
|
22
|
+
return t;
|
|
23
|
+
}
|
|
24
|
+
function f(e) {
|
|
25
|
+
for (var r = 1; r < arguments.length; r++) {
|
|
26
|
+
var t = arguments[r] != null ? arguments[r] : {};
|
|
27
|
+
r % 2 ? c(Object(t), !0).forEach(function(o) {
|
|
28
|
+
s(e, o, t[o]);
|
|
29
|
+
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : c(Object(t)).forEach(function(o) {
|
|
30
|
+
Object.defineProperty(e, o, Object.getOwnPropertyDescriptor(t, o));
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
return e;
|
|
34
|
+
}
|
|
35
|
+
function s(e, r, t) {
|
|
36
|
+
return (r = g(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e;
|
|
37
|
+
}
|
|
38
|
+
function g(e) {
|
|
39
|
+
var r = O(e, "string");
|
|
40
|
+
return i(r) == "symbol" ? r : r + "";
|
|
41
|
+
}
|
|
42
|
+
function O(e, r) {
|
|
43
|
+
if (i(e) != "object" || !e) return e;
|
|
44
|
+
var t = e[Symbol.toPrimitive];
|
|
45
|
+
if (t !== void 0) {
|
|
46
|
+
var o = t.call(e, r);
|
|
47
|
+
if (i(o) != "object") return o;
|
|
48
|
+
throw new TypeError("@@toPrimitive must return a primitive value.");
|
|
49
|
+
}
|
|
50
|
+
return (r === "string" ? String : Number)(e);
|
|
51
|
+
}
|
|
52
|
+
function h() {
|
|
53
|
+
var e = m(arguments), r = e.text, t = e.options, o = e.metadata;
|
|
54
|
+
t = f(f({}, t), {}, {
|
|
55
|
+
extract: !1
|
|
56
|
+
});
|
|
57
|
+
try {
|
|
58
|
+
var n = p(r, t, o);
|
|
59
|
+
o = new b(o), o.selectNumberingPlan(n.countryCallingCode);
|
|
60
|
+
var u = l(n.nationalNumber, n.country, o);
|
|
61
|
+
if (u !== "IS_POSSIBLE")
|
|
62
|
+
return u;
|
|
63
|
+
} catch (a) {
|
|
64
|
+
if (a instanceof y)
|
|
65
|
+
return a.message;
|
|
66
|
+
throw a;
|
|
67
|
+
}
|
|
5
68
|
}
|
|
6
69
|
export {
|
|
7
|
-
|
|
70
|
+
h as default
|
|
8
71
|
};
|
|
9
72
|
//# sourceMappingURL=index80.js.map
|
package/dist/index80.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index80.js","sources":["../../../node_modules/libphonenumber-js/
|
|
1
|
+
{"version":3,"file":"index80.js","sources":["../../../node_modules/libphonenumber-js/es6/validatePhoneNumberLength.js"],"sourcesContent":["function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport normalizeArguments from './normalizeArguments.js';\nimport parsePhoneNumberWithError from './parsePhoneNumberWithError_.js';\nimport ParseError from './ParseError.js';\nimport Metadata from './metadata.js';\nimport checkNumberLength from './helpers/checkNumberLength.js';\nexport default function validatePhoneNumberLength() {\n var _normalizeArguments = normalizeArguments(arguments),\n text = _normalizeArguments.text,\n options = _normalizeArguments.options,\n metadata = _normalizeArguments.metadata;\n options = _objectSpread(_objectSpread({}, options), {}, {\n extract: false\n });\n\n // Parse phone number.\n try {\n var phoneNumber = parsePhoneNumberWithError(text, options, metadata);\n metadata = new Metadata(metadata);\n metadata.selectNumberingPlan(phoneNumber.countryCallingCode);\n var result = checkNumberLength(phoneNumber.nationalNumber, phoneNumber.country, metadata);\n if (result !== 'IS_POSSIBLE') {\n return result;\n }\n } catch (error) {\n /* istanbul ignore else */\n if (error instanceof ParseError) {\n return error.message;\n } else {\n throw error;\n }\n }\n}\n//# sourceMappingURL=validatePhoneNumberLength.js.map"],"names":["_typeof","o","ownKeys","r","_objectSpread","_defineProperty","_toPropertyKey","t","i","_toPrimitive","e","validatePhoneNumberLength","_normalizeArguments","normalizeArguments","text","options","metadata","phoneNumber","parsePhoneNumberWithError","Metadata","result","checkNumberLength","error","ParseError"],"mappings":";;;;;AAAA,SAASA,EAAQC,GAAG;AAAE;AAA2B,SAAOD,IAAwB,OAAO,UAArB,cAA2C,OAAO,OAAO,YAA1B,WAAqC,SAAUC,GAAG;AAAE,WAAO,OAAOA;AAAA,EAAG,IAAI,SAAUA,GAAG;AAAE,WAAOA,KAAmB,OAAO,UAArB,cAA+BA,EAAE,gBAAgB,UAAUA,MAAM,OAAO,YAAY,WAAW,OAAOA;AAAA,EAAG,GAAGD,EAAQC,CAAC;AAAG;AAC7T,SAASC,EAAQ,GAAG,GAAG;AAAE,MAAI,IAAI,OAAO,KAAK,CAAC;AAAG,MAAI,OAAO,uBAAuB;AAAE,QAAI,IAAI,OAAO,sBAAsB,CAAC;AAAG,UAAM,IAAI,EAAE,OAAO,SAAUC,GAAG;AAAE,aAAO,OAAO,yBAAyB,GAAGA,CAAC,EAAE;AAAA,IAAY,CAAC,IAAI,EAAE,KAAK,MAAM,GAAG,CAAC;AAAA,EAAG;AAAE,SAAO;AAAG;AAC9P,SAASC,EAAc,GAAG;AAAE,WAAS,IAAI,GAAG,IAAI,UAAU,QAAQ,KAAK;AAAE,QAAI,IAAY,UAAU,CAAC,KAAnB,OAAuB,UAAU,CAAC,IAAI,CAAA;AAAI,QAAI,IAAIF,EAAQ,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,SAAUC,GAAG;AAAE,MAAAE,EAAgB,GAAGF,GAAG,EAAEA,CAAC,CAAC;AAAA,IAAG,CAAC,IAAI,OAAO,4BAA4B,OAAO,iBAAiB,GAAG,OAAO,0BAA0B,CAAC,CAAC,IAAID,EAAQ,OAAO,CAAC,CAAC,EAAE,QAAQ,SAAUC,GAAG;AAAE,aAAO,eAAe,GAAGA,GAAG,OAAO,yBAAyB,GAAGA,CAAC,CAAC;AAAA,IAAG,CAAC;AAAA,EAAG;AAAE,SAAO;AAAG;AACtb,SAASE,EAAgB,GAAG,GAAG,GAAG;AAAE,UAAQ,IAAIC,EAAe,CAAC,MAAM,IAAI,OAAO,eAAe,GAAG,GAAG,EAAE,OAAO,GAAG,YAAY,IAAI,cAAc,IAAI,UAAU,GAAE,CAAE,IAAI,EAAE,CAAC,IAAI,GAAG;AAAG;AACnL,SAASA,EAAeC,GAAG;AAAE,MAAIC,IAAIC,EAAaF,GAAG,QAAQ;AAAG,SAAmBP,EAAQQ,CAAC,KAArB,WAAyBA,IAAIA,IAAI;AAAI;AAC5G,SAASC,EAAaF,GAAG,GAAG;AAAE,MAAgBP,EAAQO,CAAC,KAArB,YAA0B,CAACA,EAAG,QAAOA;AAAG,MAAIG,IAAIH,EAAE,OAAO,WAAW;AAAG,MAAeG,MAAX,QAAc;AAAE,QAAIF,IAAIE,EAAE,KAAKH,GAAG,CAAc;AAAG,QAAgBP,EAAQQ,CAAC,KAArB,SAAwB,QAAOA;AAAG,UAAM,IAAI,UAAU,8CAA8C;AAAA,EAAG;AAAE,UAAqB,MAAb,WAAiB,SAAS,QAAQD,CAAC;AAAG;AAM5S,SAASI,IAA4B;AAClD,MAAIC,IAAsBC,EAAmB,SAAS,GACpDC,IAAOF,EAAoB,MAC3BG,IAAUH,EAAoB,SAC9BI,IAAWJ,EAAoB;AACjC,EAAAG,IAAUX,EAAcA,EAAc,CAAA,GAAIW,CAAO,GAAG,CAAA,GAAI;AAAA,IACtD,SAAS;AAAA,EACb,CAAG;AAGD,MAAI;AACF,QAAIE,IAAcC,EAA0BJ,GAAMC,GAASC,CAAQ;AACnE,IAAAA,IAAW,IAAIG,EAASH,CAAQ,GAChCA,EAAS,oBAAoBC,EAAY,kBAAkB;AAC3D,QAAIG,IAASC,EAAkBJ,EAAY,gBAAgBA,EAAY,SAASD,CAAQ;AACxF,QAAII,MAAW;AACb,aAAOA;AAAA,EAEX,SAASE,GAAO;AAEd,QAAIA,aAAiBC;AACnB,aAAOD,EAAM;AAEb,UAAMA;AAAA,EAEV;AACF;","x_google_ignoreList":[0]}
|