@rpcbase/ui 0.181.0 → 0.183.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/helpers/index.d.ts +1 -0
- package/dist/helpers/index.d.ts.map +1 -1
- package/dist/helpers/useScrollPagination.d.ts +23 -0
- package/dist/helpers/useScrollPagination.d.ts.map +1 -0
- package/dist/helpers/useScrollPagination.test.d.ts +2 -0
- package/dist/helpers/useScrollPagination.test.d.ts.map +1 -0
- package/dist/index.js +62 -60
- package/dist/index.js.map +1 -1
- package/dist/index10.js +23 -69
- package/dist/index10.js.map +1 -1
- package/dist/index100.js +5 -4
- package/dist/index100.js.map +1 -1
- package/dist/index101.js +3 -3
- package/dist/index101.js.map +1 -1
- package/dist/index102.js +4 -6
- package/dist/index102.js.map +1 -1
- package/dist/index103.js +6 -145
- package/dist/index103.js.map +1 -1
- package/dist/index104.js +144 -38
- package/dist/index104.js.map +1 -1
- package/dist/index105.js +39 -4
- package/dist/index105.js.map +1 -1
- package/dist/index106.js +4 -7
- package/dist/index106.js.map +1 -1
- package/dist/index107.js +6 -12
- package/dist/index107.js.map +1 -1
- package/dist/index108.js +13 -13
- package/dist/index108.js.map +1 -1
- package/dist/index109.js +13 -7
- package/dist/index109.js.map +1 -1
- package/dist/index11.js +62 -544
- package/dist/index11.js.map +1 -1
- package/dist/index110.js +6 -30
- package/dist/index110.js.map +1 -1
- package/dist/index111.js +31 -10
- package/dist/index111.js.map +1 -1
- package/dist/index112.js +10 -10
- package/dist/index112.js.map +1 -1
- package/dist/index113.js +10 -8
- package/dist/index113.js.map +1 -1
- package/dist/index114.js +8 -13
- package/dist/index114.js.map +1 -1
- package/dist/index115.js +13 -101
- package/dist/index115.js.map +1 -1
- package/dist/index116.js +102 -20
- package/dist/index116.js.map +1 -1
- package/dist/index117.js +20 -54
- package/dist/index117.js.map +1 -1
- package/dist/index118.js +51 -70
- package/dist/index118.js.map +1 -1
- package/dist/index119.js +72 -9
- package/dist/index119.js.map +1 -1
- package/dist/index12.js +535 -110
- package/dist/index12.js.map +1 -1
- package/dist/index120.js +9 -20
- package/dist/index120.js.map +1 -1
- package/dist/index121.js +20 -16
- package/dist/index121.js.map +1 -1
- package/dist/index122.js +16 -23
- package/dist/index122.js.map +1 -1
- package/dist/index123.js +23 -6
- package/dist/index123.js.map +1 -1
- package/dist/index124.js +6 -5
- package/dist/index124.js.map +1 -1
- package/dist/index125.js +5 -23
- package/dist/index125.js.map +1 -1
- package/dist/index126.js +24 -35
- package/dist/index126.js.map +1 -1
- package/dist/index127.js +35 -16
- package/dist/index127.js.map +1 -1
- package/dist/index128.js +16 -7
- package/dist/index128.js.map +1 -1
- package/dist/index129.js +6 -4
- package/dist/index129.js.map +1 -1
- package/dist/index13.js +122 -71
- package/dist/index13.js.map +1 -1
- package/dist/index130.js +4 -4
- package/dist/index130.js.map +1 -1
- package/dist/index131.js +4 -4
- package/dist/index131.js.map +1 -1
- package/dist/index132.js +4 -4
- package/dist/index132.js.map +1 -1
- package/dist/index133.js +4 -3
- package/dist/index133.js.map +1 -1
- package/dist/index134.js +3 -6
- package/dist/index134.js.map +1 -1
- package/dist/index135.js +7 -24
- package/dist/index135.js.map +1 -1
- package/dist/index136.js +24 -8
- package/dist/index136.js.map +1 -1
- package/dist/index137.js +7 -6
- package/dist/index137.js.map +1 -1
- package/dist/index138.js +6 -5
- package/dist/index138.js.map +1 -1
- package/dist/index139.js +5 -3
- package/dist/index139.js.map +1 -1
- package/dist/index14.js +61 -717
- package/dist/index14.js.map +1 -1
- package/dist/index140.js +3 -3
- package/dist/index140.js.map +1 -1
- package/dist/index141.js +3 -4
- package/dist/index141.js.map +1 -1
- package/dist/index142.js +4 -3
- package/dist/index142.js.map +1 -1
- package/dist/index143.js +3 -4
- package/dist/index143.js.map +1 -1
- package/dist/index144.js +4 -3
- package/dist/index144.js.map +1 -1
- package/dist/index145.js +3 -3
- package/dist/index145.js.map +1 -1
- package/dist/index146.js +3 -3
- package/dist/index146.js.map +1 -1
- package/dist/index147.js +3 -46
- package/dist/index147.js.map +1 -1
- package/dist/index148.js +2 -2
- package/dist/index15.js +727 -18
- package/dist/index15.js.map +1 -1
- package/dist/index150.js +2 -2
- package/dist/index152.js +3 -3
- package/dist/index153.js +40 -599
- package/dist/index153.js.map +1 -1
- package/dist/index154.js +605 -5
- package/dist/index154.js.map +1 -1
- package/dist/index155.js +5 -68
- package/dist/index155.js.map +1 -1
- package/dist/index156.js +69 -2
- package/dist/index156.js.map +1 -1
- package/dist/index157.js +2 -364
- package/dist/index157.js.map +1 -1
- package/dist/index158.js +303 -201
- package/dist/index158.js.map +1 -1
- package/dist/index159.js +247 -46
- package/dist/index159.js.map +1 -1
- package/dist/index16.js +19 -14
- package/dist/index16.js.map +1 -1
- package/dist/index160.js +56 -42
- package/dist/index160.js.map +1 -1
- package/dist/index161.js +46 -169
- package/dist/index161.js.map +1 -1
- package/dist/index162.js +156 -96
- package/dist/index162.js.map +1 -1
- package/dist/index163.js +109 -24
- package/dist/index163.js.map +1 -1
- package/dist/index164.js +25 -8
- package/dist/index164.js.map +1 -1
- package/dist/index165.js +8 -5
- package/dist/index165.js.map +1 -1
- package/dist/index166.js +4 -5
- package/dist/index166.js.map +1 -1
- package/dist/index167.js +5 -4
- package/dist/index167.js.map +1 -1
- package/dist/index168.js +4 -466
- package/dist/index168.js.map +1 -1
- package/dist/index169.js +420 -139
- package/dist/index169.js.map +1 -1
- package/dist/index17.js +13 -382
- package/dist/index17.js.map +1 -1
- package/dist/index170.js +149 -71
- package/dist/index170.js.map +1 -1
- package/dist/index171.js +74 -229
- package/dist/index171.js.map +1 -1
- package/dist/index172.js +262 -9
- package/dist/index172.js.map +1 -1
- package/dist/index173.js +9 -42
- package/dist/index173.js.map +1 -1
- package/dist/index174.js +42 -4
- package/dist/index174.js.map +1 -1
- package/dist/index175.js +4 -16
- package/dist/index175.js.map +1 -1
- package/dist/index176.js +57 -4
- package/dist/index176.js.map +1 -1
- package/dist/index177.js +8 -5
- package/dist/index177.js.map +1 -1
- package/dist/index178.js +55 -47
- package/dist/index178.js.map +1 -1
- package/dist/index179.js +17 -64
- package/dist/index179.js.map +1 -1
- package/dist/index18.js +363 -695
- package/dist/index18.js.map +1 -1
- package/dist/index180.js +16 -6
- package/dist/index180.js.map +1 -1
- package/dist/index181.js +5 -4
- package/dist/index181.js.map +1 -1
- package/dist/index182.js +5 -7
- package/dist/index182.js.map +1 -1
- package/dist/index183.js +6 -17
- package/dist/index183.js.map +1 -1
- package/dist/index184.js +4 -5
- package/dist/index184.js.map +1 -1
- package/dist/index185.js +7 -5
- package/dist/index185.js.map +1 -1
- package/dist/index186.js +17 -13
- package/dist/index186.js.map +1 -1
- package/dist/index187.js +5 -10
- package/dist/index187.js.map +1 -1
- package/dist/index188.js +5 -14
- package/dist/index188.js.map +1 -1
- package/dist/index189.js +13 -14
- package/dist/index189.js.map +1 -1
- package/dist/index19.js +685 -624
- package/dist/index19.js.map +1 -1
- package/dist/index190.js +10 -5
- package/dist/index190.js.map +1 -1
- package/dist/index191.js +14 -6
- package/dist/index191.js.map +1 -1
- package/dist/index192.js +14 -7
- package/dist/index192.js.map +1 -1
- package/dist/index193.js +5 -6
- package/dist/index193.js.map +1 -1
- package/dist/index194.js +6 -9
- package/dist/index194.js.map +1 -1
- package/dist/index195.js +7 -5
- package/dist/index195.js.map +1 -1
- package/dist/index196.js +6 -5
- package/dist/index196.js.map +1 -1
- package/dist/index197.js +9 -9
- package/dist/index197.js.map +1 -1
- package/dist/index198.js +5 -5
- package/dist/index198.js.map +1 -1
- package/dist/index199.js +5 -5
- package/dist/index199.js.map +1 -1
- package/dist/index2.js +2 -2
- package/dist/index20.js +640 -191
- package/dist/index20.js.map +1 -1
- package/dist/index200.js +9 -4
- package/dist/index200.js.map +1 -1
- package/dist/index201.js +5 -11
- package/dist/index201.js.map +1 -1
- package/dist/index202.js +5 -10
- package/dist/index202.js.map +1 -1
- package/dist/index203.js +4 -10
- package/dist/index203.js.map +1 -1
- package/dist/index204.js +11 -11
- package/dist/index204.js.map +1 -1
- package/dist/index205.js +10 -11
- package/dist/index205.js.map +1 -1
- package/dist/index206.js +10 -10
- package/dist/index206.js.map +1 -1
- package/dist/index207.js +11 -7
- package/dist/index207.js.map +1 -1
- package/dist/index208.js +11 -6
- package/dist/index208.js.map +1 -1
- package/dist/index209.js +10 -5
- package/dist/index209.js.map +1 -1
- package/dist/index21.js +209 -5
- package/dist/index21.js.map +1 -1
- package/dist/index210.js +7 -6
- package/dist/index210.js.map +1 -1
- package/dist/index211.js +6 -7
- package/dist/index211.js.map +1 -1
- package/dist/index212.js +5 -6
- package/dist/index212.js.map +1 -1
- package/dist/index213.js +6 -55
- package/dist/index213.js.map +1 -1
- package/dist/index214.js +7 -8
- package/dist/index214.js.map +1 -1
- package/dist/index215.js +6 -19
- package/dist/index215.js.map +1 -1
- package/dist/index216.js +54 -15
- package/dist/index216.js.map +1 -1
- package/dist/index217.js +16 -7
- package/dist/index217.js.map +1 -1
- package/dist/index218.js +7 -10
- package/dist/index218.js.map +1 -1
- package/dist/index219.js +9 -9
- package/dist/index219.js.map +1 -1
- package/dist/index22.js +5 -35
- package/dist/index22.js.map +1 -1
- package/dist/index220.js +10 -21
- package/dist/index220.js.map +1 -1
- package/dist/index221.js +21 -10
- package/dist/index221.js.map +1 -1
- package/dist/index222.js +10 -9
- package/dist/index222.js.map +1 -1
- package/dist/index223.js +6 -6
- package/dist/index223.js.map +1 -1
- package/dist/index224.js +9 -4
- package/dist/index224.js.map +1 -1
- package/dist/index225.js +4 -5
- package/dist/index225.js.map +1 -1
- package/dist/index226.js +5 -16
- package/dist/index226.js.map +1 -1
- package/dist/index227.js +16 -9
- package/dist/index227.js.map +1 -1
- package/dist/index228.js +9 -18
- package/dist/index228.js.map +1 -1
- package/dist/index229.js +15 -12
- package/dist/index229.js.map +1 -1
- package/dist/index23.js +24 -258
- package/dist/index23.js.map +1 -1
- package/dist/index230.js +12 -9
- package/dist/index230.js.map +1 -1
- package/dist/index231.js +12 -29
- package/dist/index231.js.map +1 -1
- package/dist/index232.js +28 -11
- package/dist/index232.js.map +1 -1
- package/dist/index233.js +10 -23
- package/dist/index233.js.map +1 -1
- package/dist/index234.js +25 -5
- package/dist/index234.js.map +1 -1
- package/dist/index235.js +5 -24
- package/dist/index235.js.map +1 -1
- package/dist/index236.js +24 -28
- package/dist/index236.js.map +1 -1
- package/dist/index237.js +29 -5
- package/dist/index237.js.map +1 -1
- package/dist/index238.js +5 -68
- package/dist/index238.js.map +1 -1
- package/dist/index239.js +64 -177
- package/dist/index239.js.map +1 -1
- package/dist/index24.js +254 -166
- package/dist/index24.js.map +1 -1
- package/dist/index240.js +176 -42
- package/dist/index240.js.map +1 -1
- package/dist/index241.js +45 -12
- package/dist/index241.js.map +1 -1
- package/dist/index242.js +13 -154
- package/dist/index242.js.map +1 -1
- package/dist/index243.js +151 -27
- package/dist/index243.js.map +1 -1
- package/dist/index244.js +30 -9
- package/dist/index244.js.map +1 -1
- package/dist/index245.js +9 -47
- package/dist/index245.js.map +1 -1
- package/dist/index246.js +46 -10
- package/dist/index246.js.map +1 -1
- package/dist/index247.js +11 -44
- package/dist/index247.js.map +1 -1
- package/dist/index248.js +40 -91
- package/dist/index248.js.map +1 -1
- package/dist/index249.js +85 -76
- package/dist/index249.js.map +1 -1
- package/dist/index25.js +180 -14
- package/dist/index25.js.map +1 -1
- package/dist/index250.js +69 -88
- package/dist/index250.js.map +1 -1
- package/dist/index251.js +92 -39
- package/dist/index251.js.map +1 -1
- package/dist/index252.js +51 -10
- package/dist/index252.js.map +1 -1
- package/dist/index253.js +10 -36
- package/dist/index253.js.map +1 -1
- package/dist/index254.js +37 -8
- package/dist/index254.js.map +1 -1
- package/dist/index255.js +8 -116
- package/dist/index255.js.map +1 -1
- package/dist/index256.js +115 -16
- package/dist/index256.js.map +1 -1
- package/dist/index257.js +17 -15
- package/dist/index257.js.map +1 -1
- package/dist/index258.js +15 -3
- package/dist/index258.js.map +1 -1
- package/dist/index259.js +3 -36
- package/dist/index259.js.map +1 -1
- package/dist/index26.js +15 -2763
- package/dist/index26.js.map +1 -1
- package/dist/index260.js +35 -19
- package/dist/index260.js.map +1 -1
- package/dist/index261.js +20 -9
- package/dist/index261.js.map +1 -1
- package/dist/index262.js +8 -7
- package/dist/index262.js.map +1 -1
- package/dist/index263.js +8 -19
- package/dist/index263.js.map +1 -1
- package/dist/index264.js +14 -23
- package/dist/index264.js.map +1 -1
- package/dist/index265.js +26 -14
- package/dist/index265.js.map +1 -1
- package/dist/index266.js +16 -4
- package/dist/index266.js.map +1 -1
- package/dist/index267.js +5 -19
- package/dist/index267.js.map +1 -1
- package/dist/index268.js +19 -13
- package/dist/index268.js.map +1 -1
- package/dist/index269.js +13 -5
- package/dist/index269.js.map +1 -1
- package/dist/index27.js +2761 -35
- package/dist/index27.js.map +1 -1
- package/dist/index270.js +5 -3
- package/dist/index270.js.map +1 -1
- package/dist/index271.js +3 -24
- package/dist/index271.js.map +1 -1
- package/dist/index272.js +22 -111
- package/dist/index272.js.map +1 -1
- package/dist/index273.js +111 -14
- package/dist/index273.js.map +1 -1
- package/dist/index274.js +14 -523
- package/dist/index274.js.map +1 -1
- package/dist/index275.js +511 -114
- package/dist/index275.js.map +1 -1
- package/dist/index276.js +111 -117
- package/dist/index276.js.map +1 -1
- package/dist/index277.js +133 -20
- package/dist/index277.js.map +1 -1
- package/dist/index278.js +20 -5
- package/dist/index278.js.map +1 -1
- package/dist/index279.js +5 -5
- package/dist/index279.js.map +1 -1
- package/dist/index28.js +37 -3
- package/dist/index28.js.map +1 -1
- package/dist/index280.js +6 -4
- package/dist/index280.js.map +1 -1
- package/dist/index281.js +4 -16
- package/dist/index281.js.map +1 -1
- package/dist/index282.js +14 -7
- package/dist/index282.js.map +1 -1
- package/dist/index283.js +8 -5
- package/dist/index283.js.map +1 -1
- package/dist/index284.js +5 -4
- package/dist/index284.js.map +1 -1
- package/dist/index285.js +4 -545
- package/dist/index285.js.map +1 -1
- package/dist/index286.js +544 -45
- package/dist/index286.js.map +1 -1
- package/dist/index287.js +47 -18
- package/dist/index287.js.map +1 -1
- package/dist/index288.js +17 -6
- package/dist/index288.js.map +1 -1
- package/dist/index289.js +6 -8
- package/dist/index289.js.map +1 -1
- package/dist/index29.js +3 -125
- package/dist/index29.js.map +1 -1
- package/dist/index290.js +8 -7
- package/dist/index290.js.map +1 -1
- package/dist/index291.js +7 -8
- package/dist/index291.js.map +1 -1
- package/dist/index292.js +8 -12
- package/dist/index292.js.map +1 -1
- package/dist/index293.js +12 -9
- package/dist/index293.js.map +1 -1
- package/dist/index294.js +9 -13
- package/dist/index294.js.map +1 -1
- package/dist/index295.js +14 -69
- package/dist/index295.js.map +1 -1
- package/dist/index296.js +68 -8
- package/dist/index296.js.map +1 -1
- package/dist/index297.js +9 -14
- package/dist/index297.js.map +1 -1
- package/dist/index298.js +14 -66
- package/dist/index298.js.map +1 -1
- package/dist/index299.js +65 -64
- package/dist/index299.js.map +1 -1
- package/dist/index30.js +120 -227
- package/dist/index30.js.map +1 -1
- package/dist/index300.js +64 -4
- package/dist/index300.js.map +1 -1
- package/dist/index301.js +5 -56
- package/dist/index301.js.map +1 -1
- package/dist/index302.js +54 -66
- package/dist/index302.js.map +1 -1
- package/dist/index303.js +67 -30
- package/dist/index303.js.map +1 -1
- package/dist/index304.js +31 -9
- package/dist/index304.js.map +1 -1
- package/dist/index305.js +9 -153
- package/dist/index305.js.map +1 -1
- package/dist/index306.js +142 -97
- package/dist/index306.js.map +1 -1
- package/dist/index307.js +108 -4
- package/dist/index307.js.map +1 -1
- package/dist/index308.js +3 -22
- package/dist/index308.js.map +1 -1
- package/dist/index309.js +22 -15
- package/dist/index309.js.map +1 -1
- package/dist/index31.js +229 -21
- package/dist/index31.js.map +1 -1
- package/dist/index310.js +14 -27
- package/dist/index310.js.map +1 -1
- package/dist/index311.js +27 -11
- package/dist/index311.js.map +1 -1
- package/dist/index312.js +11 -5
- package/dist/index312.js.map +1 -1
- package/dist/index313.js +6 -12
- package/dist/index313.js.map +1 -1
- package/dist/index314.js +20 -25
- package/dist/index314.js.map +1 -1
- package/dist/index315.js +12 -4
- package/dist/index315.js.map +1 -1
- package/dist/index316.js +25 -20
- package/dist/index316.js.map +1 -1
- package/dist/index317.js +8 -0
- package/dist/index317.js.map +1 -0
- package/dist/index32.js +23 -50
- package/dist/index32.js.map +1 -1
- package/dist/index33.js +50 -2640
- package/dist/index33.js.map +1 -1
- package/dist/index34.js +2598 -351
- package/dist/index34.js.map +1 -1
- package/dist/index35.js +375 -214
- package/dist/index35.js.map +1 -1
- package/dist/index36.js +230 -19
- package/dist/index36.js.map +1 -1
- package/dist/index37.js +18 -138
- package/dist/index37.js.map +1 -1
- package/dist/index38.js +125 -170
- package/dist/index38.js.map +1 -1
- package/dist/index39.js +174 -64
- package/dist/index39.js.map +1 -1
- package/dist/index40.js +72 -94
- package/dist/index40.js.map +1 -1
- package/dist/index41.js +98 -5
- package/dist/index41.js.map +1 -1
- package/dist/index42.js +5 -843
- package/dist/index42.js.map +1 -1
- package/dist/index43.js +832 -54
- package/dist/index43.js.map +1 -1
- package/dist/index44.js +66 -8
- package/dist/index44.js.map +1 -1
- package/dist/index45.js +8 -2
- package/dist/index45.js.map +1 -1
- package/dist/index46.js +2 -24
- package/dist/index46.js.map +1 -1
- package/dist/index47.js +22 -232
- package/dist/index47.js.map +1 -1
- package/dist/index48.js +233 -6
- package/dist/index48.js.map +1 -1
- package/dist/index49.js +203 -32
- package/dist/index49.js.map +1 -1
- package/dist/index5.js +1 -1
- package/dist/index50.js +3 -26
- package/dist/index50.js.map +1 -1
- package/dist/index51.js +6 -7
- package/dist/index51.js.map +1 -1
- package/dist/index52.js +47 -11
- package/dist/index52.js.map +1 -1
- package/dist/index53.js +26 -204
- package/dist/index53.js.map +1 -1
- package/dist/index54.js +50 -3
- package/dist/index54.js.map +1 -1
- package/dist/index55.js +7 -47
- package/dist/index55.js.map +1 -1
- package/dist/index56.js +12 -48
- package/dist/index56.js.map +1 -1
- package/dist/index57.js +133 -7
- package/dist/index57.js.map +1 -1
- package/dist/index58.js +10 -14
- package/dist/index58.js.map +1 -1
- package/dist/index59.js +210 -127
- package/dist/index59.js.map +1 -1
- package/dist/index6.js +138 -25
- package/dist/index6.js.map +1 -1
- package/dist/index60.js +12 -10
- package/dist/index60.js.map +1 -1
- package/dist/index61.js +32 -215
- package/dist/index61.js.map +1 -1
- package/dist/index62.js +47 -13
- package/dist/index62.js.map +1 -1
- package/dist/index63.js +7 -46
- package/dist/index63.js.map +1 -1
- package/dist/index67.js +2 -2
- package/dist/index69.js +3 -3
- package/dist/index7.js +26 -29
- package/dist/index7.js.map +1 -1
- package/dist/index70.js +11 -53
- package/dist/index70.js.map +1 -1
- package/dist/index71.js +54 -2
- package/dist/index71.js.map +1 -1
- package/dist/index72.js +6 -2
- package/dist/index72.js.map +1 -1
- package/dist/index73.js +7 -5
- package/dist/index73.js.map +1 -1
- package/dist/index74.js +4 -6
- 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 -52
- package/dist/index76.js.map +1 -1
- package/dist/index77.js +52 -5
- package/dist/index77.js.map +1 -1
- package/dist/index78.js +4 -4
- package/dist/index78.js.map +1 -1
- package/dist/index79.js +4 -15
- package/dist/index79.js.map +1 -1
- package/dist/index8.js +28 -222
- package/dist/index8.js.map +1 -1
- package/dist/index80.js +15 -5
- package/dist/index80.js.map +1 -1
- package/dist/index81.js +5 -7
- package/dist/index81.js.map +1 -1
- package/dist/index82.js +6 -15
- package/dist/index82.js.map +1 -1
- package/dist/index83.js +16 -4
- package/dist/index83.js.map +1 -1
- package/dist/index84.js +1 -1
- package/dist/index84.js.map +1 -1
- package/dist/index85.js +4 -5
- package/dist/index85.js.map +1 -1
- package/dist/index86.js +4 -4
- package/dist/index86.js.map +1 -1
- package/dist/index87.js +5 -4
- package/dist/index87.js.map +1 -1
- package/dist/index88.js +2 -2
- package/dist/index88.js.map +1 -1
- package/dist/index89.js +3 -5
- package/dist/index89.js.map +1 -1
- package/dist/index9.js +226 -23
- package/dist/index9.js.map +1 -1
- package/dist/index90.js +6 -24
- package/dist/index90.js.map +1 -1
- package/dist/index91.js +24 -6
- package/dist/index91.js.map +1 -1
- package/dist/index92.js +6 -4
- package/dist/index92.js.map +1 -1
- package/dist/index93.js +3 -5
- package/dist/index93.js.map +1 -1
- package/dist/index94.js +6 -5
- package/dist/index94.js.map +1 -1
- package/dist/index95.js +5 -4
- package/dist/index95.js.map +1 -1
- package/dist/index96.js +3 -4
- package/dist/index96.js.map +1 -1
- package/dist/index97.js +5 -4
- package/dist/index97.js.map +1 -1
- package/dist/index98.js +4 -8
- package/dist/index98.js.map +1 -1
- package/dist/index99.js +8 -5
- package/dist/index99.js.map +1 -1
- package/package.json +1 -1
package/dist/index18.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index18.js","sources":["../src/components/HourPickerField/index.tsx"],"sourcesContent":["import { Check, ChevronDown, ChevronUp } from \"lucide-react\"\nimport * as React from \"react\"\nimport { DismissableLayerBranch } from \"@radix-ui/react-dismissable-layer\"\nimport { createPortal } from \"react-dom\"\nimport { IMaskInput } from \"react-imask\"\nimport IMask, { InputMask } from \"imask\"\n\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from \"@/components/Select\"\nimport { useIsTouchDevice } from \"@/helpers/useIsTouchDevice\"\nimport { cn } from \"@/lib/utils\"\n\n\n// WARNING: used to preserve input mask even with tree shaking\n// DO NOT REMOVE THIS CODE OR THIS COMMENT\nconst imaskAny = IMask as any\nif (typeof imaskAny.InputMask !== \"function\") {\n imaskAny.InputMask = InputMask\n}\n\n\nexport type HourPickerOption = {\n value: string\n label: string\n disabled?: boolean\n description?: React.ReactNode\n}\n\nfunction pad2(value: number) {\n return String(value).padStart(2, \"0\")\n}\n\nfunction parseTimeInput(raw: string) {\n const trimmed = raw.trim()\n if (!trimmed) return null\n\n const match = /^(\\d{1,2}):(\\d{2})$/.exec(trimmed)\n if (!match) {\n return null\n }\n\n const hours = Number(match[1])\n const minutes = Number(match[2])\n if (!Number.isFinite(hours) || !Number.isFinite(minutes)) {\n return null\n }\n\n if (hours < 0 || hours > 23 || minutes < 0 || minutes > 59) {\n return null\n }\n\n return `${pad2(hours)}:${pad2(minutes)}`\n}\n\ntype ParsedTimeInputResult = {\n parsed: string\n selectableValue: string | null\n}\n\nfunction parseTimeInputWithSelectableOption(raw: string, options: HourPickerOption[]): ParsedTimeInputResult | null {\n const parsed = parseTimeInput(raw)\n if (!parsed) return null\n\n const parsedOption = options.find((option) => option.value === parsed)\n if (isOptionSelectable(parsedOption)) {\n return { parsed, selectableValue: parsed }\n }\n\n return { parsed, selectableValue: null }\n}\n\nfunction timeStringToMinutes(value: string) {\n const match = /^(\\d{2}):(\\d{2})$/.exec(value)\n if (!match) {\n return null\n }\n\n const hours = Number(match[1])\n const minutes = Number(match[2])\n\n if (!Number.isFinite(hours) || !Number.isFinite(minutes)) {\n return null\n }\n\n return hours * 60 + minutes\n}\n\nfunction isOptionSelectable(option: HourPickerOption | undefined) {\n if (!option) return false\n return !option.disabled\n}\n\nfunction findClosestSelectableOption(targetMinutes: number, options: HourPickerOption[]) {\n let bestOption: HourPickerOption | null = null\n let bestDiff = Number.POSITIVE_INFINITY\n let bestMinutes = Number.NEGATIVE_INFINITY\n\n for (const option of options) {\n if (!isOptionSelectable(option)) continue\n const optionMinutes = timeStringToMinutes(option.value)\n if (optionMinutes == null) continue\n\n const diff = Math.abs(optionMinutes - targetMinutes)\n if (diff < bestDiff || (diff === bestDiff && optionMinutes > bestMinutes)) {\n bestOption = option\n bestDiff = diff\n bestMinutes = optionMinutes\n }\n }\n\n return bestOption\n}\n\ntype HourPickerScrollButtonDirection = \"up\" | \"down\"\n\ntype HourPickerScrollButtonProps = {\n direction: HourPickerScrollButtonDirection\n viewportRef: React.RefObject<HTMLElement | null>\n speed?: number\n className?: string\n}\n\nfunction HourPickerScrollButton({\n direction,\n viewportRef,\n speed = 400,\n className,\n}: HourPickerScrollButtonProps) {\n const [disabled, setDisabled] = React.useState(true)\n const animationRef = React.useRef<number | undefined>(undefined)\n const lastTimeRef = React.useRef<number | undefined>(undefined)\n const isScrollingRef = React.useRef(false)\n\n const checkScrollability = React.useCallback(() => {\n const viewport = viewportRef.current\n if (!viewport) {\n setDisabled(true)\n return\n }\n\n const { scrollTop, scrollHeight, clientHeight } = viewport\n const tolerance = 2\n\n const canScrollUp = scrollTop > tolerance\n const canScrollDown = scrollTop < (scrollHeight - clientHeight - tolerance)\n const hasScrollableContent = scrollHeight > clientHeight + tolerance\n\n if (!hasScrollableContent) {\n setDisabled(true)\n return\n }\n\n const shouldDisable = direction === \"up\" ? !canScrollUp : !canScrollDown\n setDisabled(shouldDisable)\n }, [direction, viewportRef])\n\n React.useEffect(() => {\n const viewport = viewportRef.current\n if (!viewport) return\n\n checkScrollability()\n\n const handleScroll = () => checkScrollability()\n const handleResize = () => checkScrollability()\n\n viewport.addEventListener(\"scroll\", handleScroll, { passive: true })\n\n const resizeObserver = new ResizeObserver(handleResize)\n resizeObserver.observe(viewport)\n\n const mutationObserver = new MutationObserver(handleResize)\n mutationObserver.observe(viewport, { childList: true, subtree: true })\n\n return () => {\n viewport.removeEventListener(\"scroll\", handleScroll)\n resizeObserver.disconnect()\n mutationObserver.disconnect()\n }\n }, [viewportRef, checkScrollability])\n\n const stopScrolling = React.useCallback(() => {\n if (animationRef.current) {\n cancelAnimationFrame(animationRef.current)\n animationRef.current = undefined\n }\n isScrollingRef.current = false\n lastTimeRef.current = undefined\n }, [])\n\n const smoothScroll = React.useCallback(\n (currentTime: number) => {\n const viewport = viewportRef.current\n if (!viewport || disabled || !isScrollingRef.current) {\n stopScrolling()\n return\n }\n\n if (!lastTimeRef.current) {\n lastTimeRef.current = currentTime\n }\n\n const deltaTime = currentTime - lastTimeRef.current\n const distance = (speed * deltaTime) / 1000\n\n if (distance < 0.1) {\n animationRef.current = requestAnimationFrame(smoothScroll)\n return\n }\n\n const oldScrollTop = viewport.scrollTop\n const maxScroll = viewport.scrollHeight - viewport.clientHeight\n\n let newScrollTop: number\n if (direction === \"up\") {\n newScrollTop = Math.max(0, oldScrollTop - distance)\n } else {\n newScrollTop = Math.min(maxScroll, oldScrollTop + distance)\n }\n\n viewport.scrollTo({ top: newScrollTop })\n\n lastTimeRef.current = currentTime\n\n const tolerance = 1\n const canContinue =\n direction === \"up\"\n ? newScrollTop > tolerance\n : newScrollTop < (maxScroll - tolerance)\n\n if (canContinue && Math.abs(newScrollTop - oldScrollTop) > 0.01) {\n animationRef.current = requestAnimationFrame(smoothScroll)\n } else {\n stopScrolling()\n setTimeout(checkScrollability, 16)\n }\n },\n [checkScrollability, direction, disabled, speed, stopScrolling, viewportRef],\n )\n\n const startScrolling = React.useCallback(() => {\n if (disabled || !viewportRef.current || isScrollingRef.current) return\n\n isScrollingRef.current = true\n lastTimeRef.current = undefined\n animationRef.current = requestAnimationFrame(smoothScroll)\n }, [disabled, smoothScroll, viewportRef])\n\n React.useEffect(() => stopScrolling, [stopScrolling])\n\n return (\n <div\n className={cn(\n \"flex items-center justify-center py-1 select-none\",\n disabled ? \"cursor-default opacity-40\" : \"cursor-pointer opacity-100 hover:bg-accent/20\",\n className\n )}\n onPointerEnter={() => {\n if (!disabled) startScrolling()\n }}\n onPointerMove={() => {\n if (!disabled && !isScrollingRef.current) startScrolling()\n }}\n onPointerLeave={() => {\n stopScrolling()\n }}\n >\n {direction === \"up\"\n ? <ChevronUp aria-hidden className=\"h-4 w-4 opacity-50\" />\n : <ChevronDown aria-hidden className=\"h-4 w-4 opacity-50\" />}\n </div>\n )\n}\n\nexport type HourPickerInputProps = {\n id?: string\n value: string | null\n onChange: (value: string | null) => void\n onValueUpdate?: (value: string | null) => void\n options: HourPickerOption[]\n placeholder?: string\n className?: string\n inputClassName?: string\n disabled?: boolean\n readOnly?: boolean\n open?: boolean\n onOpenChange?: (open: boolean) => void\n triggerTestId?: string\n contentTestId?: string\n isHydrated?: boolean\n}\n\nexport function HourPickerInput({\n id,\n value,\n onChange,\n onValueUpdate,\n options,\n placeholder = \"Select time\",\n className,\n inputClassName,\n disabled,\n readOnly,\n open: openProp,\n onOpenChange,\n triggerTestId,\n contentTestId,\n isHydrated,\n}: HourPickerInputProps) {\n const reactId = React.useId()\n const triggerId = id ?? `hours-picker-${reactId}`\n const triggerInputRef = React.useRef<HTMLInputElement | null>(null)\n const setTriggerDraftValueRef = React.useRef<((value: string) => void) | null>(null)\n const setTriggerDraftValueHandler = React.useCallback((handler: ((value: string) => void) | null) => {\n setTriggerDraftValueRef.current = handler\n }, [])\n const highlightedValueRef = React.useRef<string | null>(null)\n const keyboardNavigationActiveRef = React.useRef(false)\n const [highlightedValue, setHighlightedValue] = React.useState<string | null>(null)\n const containerRef = React.useRef<HTMLDivElement | null>(null)\n const desktopPopoverRef = React.useRef<HTMLDivElement | null>(null)\n const desktopContentRef = React.useRef<HTMLDivElement | null>(null)\n const [desktopPopoverPosition, setDesktopPopoverPosition] = React.useState(() => ({\n left: 0,\n top: 0,\n width: 0,\n }))\n\n const [uncontrolledOpen, setUncontrolledOpen] = React.useState(false)\n const open = openProp ?? uncontrolledOpen\n const setOpen = onOpenChange ?? setUncontrolledOpen\n\n React.useEffect(() => {\n if (!open) {\n return\n }\n if (disabled || readOnly) {\n return\n }\n\n const input = triggerInputRef.current\n if (!(input instanceof HTMLInputElement)) {\n return\n }\n if (typeof document !== \"undefined\" && document.activeElement === input) {\n return\n }\n\n input.focus({ preventScroll: true })\n }, [disabled, open, readOnly])\n\n const updateHighlightedValue = React.useCallback((next: string | null) => {\n highlightedValueRef.current = next\n setHighlightedValue(next)\n }, [])\n\n const markKeyboardNavigation = React.useCallback(() => {\n keyboardNavigationActiveRef.current = true\n }, [])\n\n React.useEffect(() => {\n if (!open) return\n\n const currentOption = options.find((option) => option.value === value)\n if (currentOption && isOptionSelectable(currentOption)) {\n updateHighlightedValue(currentOption.value)\n return\n }\n\n const firstEnabled = options.find((option) => isOptionSelectable(option))\n updateHighlightedValue(firstEnabled?.value ?? null)\n }, [open, options, updateHighlightedValue, value])\n\n const updateValue = React.useCallback(\n (next: string | null) => {\n if (next === null) {\n if (onValueUpdate) {\n onValueUpdate(null)\n }\n return\n }\n\n const matchingOption = options.find((option) => option.value === next)\n if (!isOptionSelectable(matchingOption)) {\n return\n }\n\n if (onValueUpdate) {\n onValueUpdate(next)\n }\n },\n [onValueUpdate, options],\n )\n\n const commitValue = React.useCallback(\n (next: string | null) => {\n if (next === null) {\n if (onValueUpdate) {\n onValueUpdate(null)\n }\n onChange(null)\n return\n }\n\n const matchingOption = options.find((option) => option.value === next)\n if (!isOptionSelectable(matchingOption)) {\n return\n }\n\n if (onValueUpdate) {\n onValueUpdate(next)\n }\n\n onChange(next)\n },\n [onChange, onValueUpdate, options],\n )\n\n React.useEffect(() => {\n if (!open) return\n\n const handlePointerDown = (event: PointerEvent) => {\n const target = event.target\n if (!(target instanceof Node)) {\n return\n }\n\n const container = containerRef.current\n if (!container) {\n return\n }\n\n if (container.contains(target)) {\n return\n }\n\n const popover = desktopPopoverRef.current\n if (popover?.contains(target)) {\n return\n }\n\n setOpen(false)\n }\n\n document.addEventListener(\"pointerdown\", handlePointerDown, true)\n return () => {\n document.removeEventListener(\"pointerdown\", handlePointerDown, true)\n }\n }, [open, setOpen])\n\n React.useEffect(() => {\n if (!open) {\n return\n }\n\n const popover = desktopPopoverRef.current\n if (!popover) {\n return\n }\n\n const handleWheel = (event: WheelEvent) => {\n const viewport = desktopContentRef.current\n if (!viewport) {\n return\n }\n\n const deltaY = event.deltaY\n if (deltaY === 0) {\n return\n }\n\n const maxScrollTop = Math.max(0, viewport.scrollHeight - viewport.clientHeight)\n const atTop = viewport.scrollTop <= 0\n const atBottom = viewport.scrollTop >= maxScrollTop\n\n const target = event.target\n const isWheelOverViewport = target instanceof Node && viewport.contains(target)\n\n if (isWheelOverViewport) {\n if ((deltaY < 0 && atTop) || (deltaY > 0 && atBottom)) {\n event.preventDefault()\n }\n return\n }\n\n event.preventDefault()\n const nextScrollTop = Math.min(maxScrollTop, Math.max(0, viewport.scrollTop + deltaY))\n viewport.scrollTop = nextScrollTop\n }\n\n popover.addEventListener(\"wheel\", handleWheel, { passive: false })\n return () => {\n popover.removeEventListener(\"wheel\", handleWheel)\n }\n }, [open])\n\n React.useEffect(() => {\n if (!open) {\n return\n }\n if (openProp !== undefined && !onOpenChange) {\n return\n }\n if (typeof window === \"undefined\") {\n return\n }\n if (!(\"IntersectionObserver\" in window)) {\n return\n }\n\n const trigger = triggerInputRef.current\n if (!(trigger instanceof HTMLElement)) {\n return\n }\n\n let isActive = true\n const observer = new IntersectionObserver(entries => {\n if (!isActive) {\n return\n }\n const entry = entries[0]\n if (entry && !entry.isIntersecting) {\n setOpen(false)\n }\n })\n observer.observe(trigger)\n return () => {\n isActive = false\n observer.disconnect()\n }\n }, [onOpenChange, open, openProp, setOpen])\n\n const updateDesktopPopoverPosition = React.useCallback(() => {\n if (typeof window === \"undefined\") return\n\n const trigger = triggerInputRef.current\n const popover = desktopPopoverRef.current\n if (!(trigger instanceof HTMLElement) || !popover) return\n\n const rect = trigger.getBoundingClientRect()\n const popoverHeight = popover.offsetHeight\n const viewportWidth = window.innerWidth ?? 0\n const viewportHeight = window.innerHeight ?? 0\n const padding = 8\n\n const width = rect.width\n\n let left = rect.left\n if (left + width > viewportWidth - padding) {\n left = Math.max(padding, viewportWidth - width - padding)\n }\n if (left < padding) {\n left = padding\n }\n\n let top = rect.bottom + padding\n const overflowBottom = top + popoverHeight > viewportHeight - padding\n const aboveTop = rect.top - popoverHeight - padding\n if (overflowBottom && aboveTop >= padding) {\n top = aboveTop\n }\n\n if (top < padding) {\n top = padding\n }\n if (top + popoverHeight > viewportHeight - padding) {\n top = Math.max(padding, viewportHeight - popoverHeight - padding)\n }\n\n setDesktopPopoverPosition({ left, top, width })\n }, [])\n\n // React Compiler rejects hook aliasing (useIsomorphicLayoutEffect pattern), so we\n // call useLayoutEffect directly and keep the SSR guard inside the effect.\n React.useLayoutEffect(() => {\n if (!open || disabled) return\n if (typeof window === \"undefined\") return\n\n updateDesktopPopoverPosition()\n const rafId = window.requestAnimationFrame(updateDesktopPopoverPosition)\n\n window.addEventListener(\"scroll\", updateDesktopPopoverPosition, true)\n window.addEventListener(\"resize\", updateDesktopPopoverPosition)\n return () => {\n window.cancelAnimationFrame(rafId)\n window.removeEventListener(\"scroll\", updateDesktopPopoverPosition, true)\n window.removeEventListener(\"resize\", updateDesktopPopoverPosition)\n }\n }, [disabled, open, updateDesktopPopoverPosition])\n\n React.useEffect(() => {\n if (!open) return\n\n const viewport = desktopContentRef.current\n if (!viewport) return\n\n const run = () => {\n const selected = viewport.querySelector(\"[role=\\\"option\\\"][data-state=\\\"checked\\\"]\")\n if (selected instanceof HTMLElement) {\n const padding = 8\n const targetTop = selected.offsetTop - padding\n const targetBottom = selected.offsetTop + selected.offsetHeight + padding\n\n if (targetTop < viewport.scrollTop) {\n viewport.scrollTop = Math.max(0, targetTop)\n return\n }\n\n const viewportBottom = viewport.scrollTop + viewport.clientHeight\n if (targetBottom > viewportBottom) {\n viewport.scrollTop = Math.max(0, targetBottom - viewport.clientHeight)\n }\n return\n }\n\n const all = Array.from(viewport.querySelectorAll(\"[role=\\\"option\\\"]\")) as HTMLElement[]\n if (!all.length) return\n\n let firstEnabled: HTMLElement | undefined\n let lastDisabledBefore: HTMLElement | undefined\n\n for (const el of all) {\n const isDisabled = el.hasAttribute(\"data-disabled\")\n if (!isDisabled) {\n firstEnabled = el\n break\n }\n lastDisabledBefore = el\n }\n\n if (!firstEnabled) return\n\n const target = lastDisabledBefore ? lastDisabledBefore : firstEnabled\n\n const offset = Math.max(0, target.offsetTop - 8)\n viewport.scrollTop = offset\n }\n\n const raf = requestAnimationFrame(run)\n return () => cancelAnimationFrame(raf)\n }, [open, options])\n\n React.useEffect(() => {\n if (!open) return\n if (!highlightedValue) return\n if (!keyboardNavigationActiveRef.current) return\n\n const viewport = desktopContentRef.current\n if (!viewport) return\n\n const target = viewport.querySelector(`[role=\"option\"][data-value=\"${highlightedValue}\"]`)\n if (!(target instanceof HTMLElement)) return\n\n const padding = 8\n const targetTop = target.offsetTop - padding\n const targetBottom = target.offsetTop + target.offsetHeight + padding\n\n if (targetTop < viewport.scrollTop) {\n viewport.scrollTop = Math.max(0, targetTop)\n return\n }\n\n const viewportBottom = viewport.scrollTop + viewport.clientHeight\n if (targetBottom > viewportBottom) {\n viewport.scrollTop = Math.max(0, targetBottom - viewport.clientHeight)\n }\n }, [highlightedValue, open])\n\n return (\n <div\n data-slot=\"hours-picker-input\"\n className={cn(\"w-[150px]\", className)}\n ref={containerRef}\n >\n <div className=\"relative\">\n <HourPickerMaskedSelectTrigger\n id={triggerId}\n placeholder={placeholder}\n value={value}\n onValueUpdate={updateValue}\n onCommit={commitValue}\n options={options}\n disabled={disabled}\n readOnly={readOnly}\n open={open}\n setOpen={setOpen}\n inputClassName={inputClassName}\n triggerTestId={triggerTestId}\n isHydrated={isHydrated}\n highlightedValueRef={highlightedValueRef}\n setHighlightedValue={updateHighlightedValue}\n markKeyboardNavigation={markKeyboardNavigation}\n inputRef={(node) => {\n triggerInputRef.current = node\n }}\n onDraftValueHandlerChange={setTriggerDraftValueHandler}\n />\n\n {open ? (() => {\n const popover = (\n <DismissableLayerBranch>\n <div\n ref={desktopPopoverRef}\n data-testid={contentTestId}\n data-state=\"open\"\n className={cn(\n \"pointer-events-auto fixed z-[60] overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-md\",\n \"data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95\",\n )}\n style={{\n left: desktopPopoverPosition.left,\n top: desktopPopoverPosition.top,\n width: desktopPopoverPosition.width,\n }}\n >\n <HourPickerScrollButton\n direction=\"up\"\n viewportRef={desktopContentRef}\n />\n\n <div\n ref={desktopContentRef}\n role=\"listbox\"\n className=\"max-h-64 overflow-y-auto p-1 [overscroll-behavior:contain] [scrollbar-width:none] [-ms-overflow-style:none] [&::-webkit-scrollbar]:hidden\"\n >\n {options.map((option) => {\n const isChecked = option.value === value\n\n return (\n <div\n key={option.value}\n role=\"option\"\n aria-selected={isChecked}\n data-value={option.value}\n data-state={isChecked ? \"checked\" : \"unchecked\"}\n data-disabled={option.disabled ? \"\" : undefined}\n className={cn(\n \"relative flex w-full select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none cursor-pointer\",\n option.disabled && \"pointer-events-none opacity-50\",\n highlightedValue === option.value && \"bg-accent text-accent-foreground\",\n )}\n onMouseDown={(event) => {\n event.preventDefault()\n }}\n onClick={() => {\n if (option.disabled) return\n\n setTriggerDraftValueRef.current?.(option.value)\n updateHighlightedValue(option.value)\n triggerInputRef.current?.focus({ preventScroll: true })\n commitValue(option.value)\n setOpen(false)\n }}\n onPointerEnter={() => {\n if (keyboardNavigationActiveRef.current) return\n keyboardNavigationActiveRef.current = false\n updateHighlightedValue(option.value)\n }}\n onPointerMove={(event) => {\n if (keyboardNavigationActiveRef.current && event.movementX === 0 && event.movementY === 0) {\n return\n }\n keyboardNavigationActiveRef.current = false\n updateHighlightedValue(option.value)\n }}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n {isChecked ? <Check aria-hidden className=\"h-4 w-4\" /> : null}\n </span>\n\n <div className=\"flex flex-col\">\n <span>{option.label}</span>\n {option.description != null ? (\n <span data-slot=\"description\" className=\"text-xs text-muted-foreground\">\n {option.description}\n </span>\n ) : null}\n </div>\n </div>\n )\n })}\n </div>\n\n <HourPickerScrollButton\n direction=\"down\"\n viewportRef={desktopContentRef}\n />\n </div>\n </DismissableLayerBranch>\n )\n\n if (typeof document === \"undefined\") return popover\n return createPortal(popover, document.body)\n })() : null}\n </div>\n </div>\n )\n}\n\nHourPickerInput.displayName = \"HourPickerInput\"\n\nexport type HourPickerFieldProps = HourPickerInputProps\n\nfunction HourPickerSelectField({\n id,\n value,\n onChange,\n onValueUpdate,\n options,\n placeholder = \"Select time\",\n className,\n inputClassName,\n disabled,\n open,\n onOpenChange,\n triggerTestId,\n contentTestId,\n isHydrated,\n}: HourPickerFieldProps) {\n const commitValue = React.useCallback(\n (next: string) => {\n const matchingOption = options.find((option) => option.value === next)\n if (!isOptionSelectable(matchingOption)) {\n return\n }\n\n if (onValueUpdate) {\n onValueUpdate(next)\n }\n onChange(next)\n },\n [onChange, onValueUpdate, options],\n )\n\n return (\n <div data-slot=\"hours-picker-field\" className={cn(\"w-[150px]\", className)}>\n <Select\n disabled={disabled}\n open={open}\n onOpenChange={onOpenChange}\n value={value ?? \"\"}\n onValueChange={(next) => commitValue(next)}\n >\n <SelectTrigger\n id={id}\n data-testid={triggerTestId}\n data-hydrated={isHydrated ? \"true\" : undefined}\n className={cn(\n \"transition-colors hover:bg-accent hover:text-accent-foreground\",\n !value && \"text-muted-foreground\",\n open && \"ring-2 ring-primary ring-offset-2\",\n \"[&_[data-slot='description']]:hidden\",\n inputClassName,\n )}\n >\n <SelectValue placeholder={placeholder} />\n </SelectTrigger>\n\n <SelectContent\n data-testid={contentTestId}\n autoScroll={\"firstEnabledWithContext\"}\n className=\"max-h-64 overflow-y-auto\"\n >\n {options.map((option) => (\n <SelectItem\n key={option.value}\n value={option.value}\n disabled={option.disabled}\n >\n <span>{option.label}</span>\n {option.description != null ? (\n <span data-slot=\"description\" className=\"block text-xs text-muted-foreground\">\n {option.description}\n </span>\n ) : null}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n )\n}\n\nexport function HourPickerField(props: HourPickerFieldProps) {\n const isTouchDevice = useIsTouchDevice()\n\n if (isTouchDevice) {\n return <HourPickerSelectField {...props} />\n }\n\n return <HourPickerInput {...props} />\n}\n\nHourPickerField.displayName = \"HourPickerField\"\n\ntype HourPickerMaskedSelectTriggerProps = {\n id: string\n placeholder: string\n value: string | null\n onValueUpdate: (value: string | null) => void\n onCommit: (value: string | null) => void\n options: HourPickerOption[]\n disabled?: boolean\n readOnly?: boolean\n open: boolean\n setOpen: (open: boolean) => void\n inputClassName?: string\n triggerTestId?: string\n isHydrated?: boolean\n highlightedValueRef: React.MutableRefObject<string | null>\n setHighlightedValue: (value: string | null) => void\n markKeyboardNavigation: () => void\n inputRef: (node: HTMLInputElement | null) => void\n onDraftValueHandlerChange: (handler: ((value: string) => void) | null) => void\n}\n\nfunction HourPickerMaskedSelectTrigger({\n id,\n placeholder,\n value,\n onValueUpdate,\n onCommit,\n options,\n disabled,\n readOnly,\n open,\n setOpen,\n inputClassName,\n triggerTestId,\n isHydrated,\n highlightedValueRef,\n setHighlightedValue,\n markKeyboardNavigation,\n inputRef,\n onDraftValueHandlerChange,\n}: HourPickerMaskedSelectTriggerProps) {\n const isEditingRef = React.useRef(false)\n const pointerDownOnInputRef = React.useRef(false)\n const inputWasFocusedOnPointerDownRef = React.useRef(false)\n const ignoreNextMaskCommitValueRef = React.useRef<string | null>(null)\n\n const [draft, setDraft] = React.useState(() => (value ? value : \"\"))\n\n React.useEffect(() => {\n onDraftValueHandlerChange((nextValue) => {\n setDraft(nextValue)\n })\n return () => {\n onDraftValueHandlerChange(null)\n }\n }, [onDraftValueHandlerChange])\n\n const moveSelection = React.useCallback(\n (direction: -1 | 1) => {\n const base = highlightedValueRef.current ?? value ?? \"\"\n\n let baseIndex = options.findIndex((option) => option.value === base)\n if (baseIndex === -1) {\n baseIndex = direction === 1 ? -1 : options.length\n }\n\n for (let nextIndex = baseIndex + direction; nextIndex >= 0 && nextIndex < options.length; nextIndex += direction) {\n const nextOption = options[nextIndex]\n if (!isOptionSelectable(nextOption)) continue\n\n setHighlightedValue(nextOption.value)\n ignoreNextMaskCommitValueRef.current = nextOption.value\n setDraft(nextOption.value)\n onValueUpdate(nextOption.value)\n return\n }\n },\n [highlightedValueRef, onValueUpdate, options, setHighlightedValue, value],\n )\n\n React.useEffect(() => {\n if (isEditingRef.current) return\n setDraft(value ? value : \"\")\n }, [value])\n\n const triggerClassName = cn(\n \"flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 pr-10 text-base ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 md:text-sm\",\n \"transition-colors group-hover:bg-accent group-hover:text-accent-foreground\",\n !draft && \"text-muted-foreground\",\n open && \"ring-2 ring-primary ring-offset-2\",\n \"[&_[data-slot='description']]:hidden\",\n inputClassName,\n )\n\n return (\n <div className=\"relative group\">\n <IMaskInput\n id={id}\n data-testid={triggerTestId}\n data-hydrated={isHydrated ? \"true\" : undefined}\n type=\"text\"\n disabled={disabled}\n readOnly={readOnly}\n inputRef={inputRef}\n autoComplete={\"off\"}\n mask={[\n { mask: \"00:00\", lazy: true },\n { mask: \"0:00\", lazy: true },\n ]}\n dispatch={(appended, dynamicMasked) => {\n const digits = (dynamicMasked.value + appended).replace(/\\D/g, \"\")\n if (digits.length <= 2) return dynamicMasked.compiledMasks[0]\n if (digits.length >= 4) return dynamicMasked.compiledMasks[0]\n\n const hourPrefix = pad2(Number(digits.slice(0, 2)))\n const hasTwoDigitHour = options.some((option) => option.value.startsWith(`${hourPrefix}:`))\n if (hasTwoDigitHour) return dynamicMasked.compiledMasks[0]\n\n return dynamicMasked.compiledMasks[1]\n }}\n placeholder={placeholder}\n value={draft}\n className={triggerClassName}\n onAccept={(accepted) => {\n const nextText = typeof accepted === \"string\" ? accepted : String(accepted ?? \"\")\n setDraft(nextText)\n\n if (nextText.replace(/\\D/g, \"\").length !== 0) {\n return\n }\n\n if (value) {\n onCommit(null)\n }\n }}\n onComplete={(completed) => {\n const nextText = typeof completed === \"string\" ? completed : String(completed ?? \"\")\n if (ignoreNextMaskCommitValueRef.current === nextText) {\n ignoreNextMaskCommitValueRef.current = null\n return\n }\n\n const resolved = parseTimeInputWithSelectableOption(nextText, options)\n if (!resolved) {\n return\n }\n\n if (resolved.selectableValue) {\n setHighlightedValue(resolved.selectableValue)\n setDraft(resolved.selectableValue)\n\n if (value === resolved.selectableValue) {\n return\n }\n\n onCommit(resolved.selectableValue)\n return\n }\n\n const targetMinutes = timeStringToMinutes(resolved.parsed)\n if (targetMinutes == null) {\n return\n }\n\n const closestOption = findClosestSelectableOption(targetMinutes, options)\n if (!closestOption) {\n return\n }\n\n setHighlightedValue(closestOption.value)\n }}\n onPointerDown={() => {\n pointerDownOnInputRef.current = true\n if (disabled) return\n if (!open) {\n setOpen(true)\n }\n }}\n onMouseDown={(event) => {\n pointerDownOnInputRef.current = true\n inputWasFocusedOnPointerDownRef.current = typeof document !== \"undefined\" && document.activeElement === event.currentTarget\n if (disabled) return\n if (!open) {\n setOpen(true)\n }\n }}\n onClick={() => {\n if (disabled) return\n if (!open) {\n setOpen(true)\n }\n }}\n onKeyDown={(event) => {\n if (disabled) {\n return\n }\n\n if (event.key === \"Tab\" && open && !event.defaultPrevented) {\n setOpen(false)\n return\n }\n\n if (event.key === \"Escape\") {\n if (!open) {\n return\n }\n event.preventDefault()\n setOpen(false)\n return\n }\n\n if (!open && !event.defaultPrevented) {\n const shouldReopen =\n (event.key.length === 1 || event.key === \"Backspace\" || event.key === \"Delete\") &&\n !event.ctrlKey &&\n !event.metaKey &&\n !event.altKey\n\n if (shouldReopen) {\n setOpen(true)\n }\n }\n\n if (event.key === \"ArrowDown\" || event.key === \"ArrowUp\") {\n markKeyboardNavigation()\n event.preventDefault()\n\n if (!open) {\n setOpen(true)\n return\n }\n\n moveSelection(event.key === \"ArrowDown\" ? 1 : -1)\n return\n }\n\n if (event.key === \"Enter\") {\n markKeyboardNavigation()\n const resolved = parseTimeInputWithSelectableOption(draft, options)\n if (!resolved) {\n if (!open) {\n return\n }\n\n if (draft.trim() !== \"\") {\n return\n }\n\n const highlightedOption = options.find((option) => option.value === highlightedValueRef.current)\n const fallbackValue =\n (isOptionSelectable(highlightedOption) ? highlightedOption?.value : undefined) ??\n options.find((option) => isOptionSelectable(option))?.value\n\n if (!fallbackValue) {\n return\n }\n\n event.preventDefault()\n setHighlightedValue(fallbackValue)\n setDraft(fallbackValue)\n onCommit(fallbackValue)\n setOpen(false)\n return\n }\n\n if (resolved.selectableValue) {\n event.preventDefault()\n setHighlightedValue(resolved.selectableValue)\n setDraft(resolved.selectableValue)\n onCommit(resolved.selectableValue)\n setOpen(false)\n return\n }\n\n const targetMinutes = timeStringToMinutes(resolved.parsed)\n if (targetMinutes == null) {\n return\n }\n\n const closestOption = findClosestSelectableOption(targetMinutes, options)\n if (!closestOption) {\n return\n }\n\n event.preventDefault()\n setHighlightedValue(closestOption.value)\n setDraft(closestOption.value)\n onCommit(closestOption.value)\n setOpen(false)\n return\n }\n }}\n onFocus={(event) => {\n const shouldSelectAll = !pointerDownOnInputRef.current || !inputWasFocusedOnPointerDownRef.current\n pointerDownOnInputRef.current = false\n inputWasFocusedOnPointerDownRef.current = false\n isEditingRef.current = true\n if (shouldSelectAll) {\n const element = event.currentTarget\n requestAnimationFrame(() => element.select())\n }\n\n if (disabled) {\n return\n }\n\n if (open) {\n return\n }\n\n setOpen(true)\n }}\n onBlur={() => {\n isEditingRef.current = false\n\n const trimmed = draft.trim()\n if (!trimmed) {\n setDraft(value ? value : \"\")\n return\n }\n\n const resolved = parseTimeInputWithSelectableOption(trimmed, options)\n if (!resolved) {\n setDraft(value ? value : \"\")\n return\n }\n\n if (!resolved.selectableValue) {\n setDraft(value ? value : \"\")\n return\n }\n\n setDraft(resolved.selectableValue)\n if (value !== resolved.selectableValue) {\n onCommit(resolved.selectableValue)\n }\n }}\n />\n\n <button\n type=\"button\"\n tabIndex={-1}\n disabled={disabled}\n data-slot=\"hours-picker-input-toggle\"\n className={cn(\n \"absolute right-1 top-1/2 inline-flex size-8 -translate-y-1/2 items-center justify-center rounded-md text-muted-foreground transition-colors hover:text-accent-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50\",\n )}\n aria-label={open ? \"Close time picker\" : \"Open time picker\"}\n onPointerDown={(event) => {\n event.preventDefault()\n }}\n onMouseDown={(event) => {\n event.preventDefault()\n }}\n onClick={() => {\n if (disabled) return\n setOpen(!open)\n }}\n >\n <ChevronDown aria-hidden className=\"size-4\" />\n </button>\n </div>\n )\n}\n"],"names":["imaskAny","IMask","InputMask","pad2","value","parseTimeInput","raw","trimmed","match","hours","minutes","parseTimeInputWithSelectableOption","options","parsed","parsedOption","option","isOptionSelectable","timeStringToMinutes","findClosestSelectableOption","targetMinutes","bestOption","bestDiff","bestMinutes","optionMinutes","diff","HourPickerScrollButton","direction","viewportRef","speed","className","disabled","setDisabled","React","animationRef","lastTimeRef","isScrollingRef","checkScrollability","viewport","scrollTop","scrollHeight","clientHeight","tolerance","canScrollUp","canScrollDown","handleScroll","handleResize","resizeObserver","mutationObserver","stopScrolling","smoothScroll","currentTime","deltaTime","distance","oldScrollTop","maxScroll","newScrollTop","startScrolling","jsx","cn","ChevronUp","ChevronDown","HourPickerInput","id","onChange","onValueUpdate","placeholder","inputClassName","readOnly","openProp","onOpenChange","triggerTestId","contentTestId","isHydrated","reactId","triggerId","triggerInputRef","setTriggerDraftValueRef","setTriggerDraftValueHandler","handler","highlightedValueRef","keyboardNavigationActiveRef","highlightedValue","setHighlightedValue","containerRef","desktopPopoverRef","desktopContentRef","desktopPopoverPosition","setDesktopPopoverPosition","uncontrolledOpen","setUncontrolledOpen","open","setOpen","input","updateHighlightedValue","next","markKeyboardNavigation","currentOption","firstEnabled","updateValue","matchingOption","commitValue","handlePointerDown","event","target","container","popover","handleWheel","deltaY","maxScrollTop","atTop","atBottom","nextScrollTop","trigger","isActive","observer","entries","entry","updateDesktopPopoverPosition","rect","popoverHeight","viewportWidth","viewportHeight","padding","width","left","top","overflowBottom","aboveTop","rafId","raf","selected","targetTop","targetBottom","viewportBottom","all","lastDisabledBefore","el","offset","jsxs","HourPickerMaskedSelectTrigger","node","DismissableLayerBranch","isChecked","Check","createPortal","HourPickerSelectField","Select","SelectTrigger","SelectValue","SelectContent","SelectItem","HourPickerField","props","useIsTouchDevice","onCommit","inputRef","onDraftValueHandlerChange","isEditingRef","pointerDownOnInputRef","inputWasFocusedOnPointerDownRef","ignoreNextMaskCommitValueRef","draft","setDraft","nextValue","moveSelection","base","baseIndex","nextIndex","nextOption","triggerClassName","IMaskInput","appended","dynamicMasked","digits","hourPrefix","accepted","nextText","completed","resolved","closestOption","highlightedOption","fallbackValue","shouldSelectAll","element"],"mappings":";;;;;;;;;;AAcA,MAAMA,KAAWC;AACb,OAAOD,GAAS,aAAc,eAChCA,GAAS,YAAYE;AAWvB,SAASC,EAAKC,GAAe;AAC3B,SAAO,OAAOA,CAAK,EAAE,SAAS,GAAG,GAAG;AACtC;AAEA,SAASC,GAAeC,GAAa;AACnC,QAAMC,IAAUD,EAAI,KAAA;AACpB,MAAI,CAACC,EAAS,QAAO;AAErB,QAAMC,IAAQ,sBAAsB,KAAKD,CAAO;AAChD,MAAI,CAACC;AACH,WAAO;AAGT,QAAMC,IAAQ,OAAOD,EAAM,CAAC,CAAC,GACvBE,IAAU,OAAOF,EAAM,CAAC,CAAC;AAK/B,SAJI,CAAC,OAAO,SAASC,CAAK,KAAK,CAAC,OAAO,SAASC,CAAO,KAInDD,IAAQ,KAAKA,IAAQ,MAAMC,IAAU,KAAKA,IAAU,KAC/C,OAGF,GAAGP,EAAKM,CAAK,CAAC,IAAIN,EAAKO,CAAO,CAAC;AACxC;AAOA,SAASC,EAAmCL,GAAaM,GAA2D;AAClH,QAAMC,IAASR,GAAeC,CAAG;AACjC,MAAI,CAACO,EAAQ,QAAO;AAEpB,QAAMC,IAAeF,EAAQ,KAAK,CAACG,MAAWA,EAAO,UAAUF,CAAM;AACrE,SAAIG,EAAmBF,CAAY,IAC1B,EAAE,QAAAD,GAAQ,iBAAiBA,EAAA,IAG7B,EAAE,QAAAA,GAAQ,iBAAiB,KAAA;AACpC;AAEA,SAASI,EAAoBb,GAAe;AAC1C,QAAMI,IAAQ,oBAAoB,KAAKJ,CAAK;AAC5C,MAAI,CAACI;AACH,WAAO;AAGT,QAAMC,IAAQ,OAAOD,EAAM,CAAC,CAAC,GACvBE,IAAU,OAAOF,EAAM,CAAC,CAAC;AAE/B,SAAI,CAAC,OAAO,SAASC,CAAK,KAAK,CAAC,OAAO,SAASC,CAAO,IAC9C,OAGFD,IAAQ,KAAKC;AACtB;AAEA,SAASM,EAAmBD,GAAsC;AAChE,SAAKA,IACE,CAACA,EAAO,WADK;AAEtB;AAEA,SAASG,GAA4BC,GAAuBP,GAA6B;AACvF,MAAIQ,IAAsC,MACtCC,IAAW,OAAO,mBAClBC,IAAc,OAAO;AAEzB,aAAWP,KAAUH,GAAS;AAC5B,QAAI,CAACI,EAAmBD,CAAM,EAAG;AACjC,UAAMQ,IAAgBN,EAAoBF,EAAO,KAAK;AACtD,QAAIQ,KAAiB,KAAM;AAE3B,UAAMC,IAAO,KAAK,IAAID,IAAgBJ,CAAa;AACnD,KAAIK,IAAOH,KAAaG,MAASH,KAAYE,IAAgBD,OAC3DF,IAAaL,GACbM,IAAWG,GACXF,IAAcC;AAAA,EAElB;AAEA,SAAOH;AACT;AAWA,SAASK,GAAuB;AAAA,EAC9B,WAAAC;AAAA,EACA,aAAAC;AAAA,EACA,OAAAC,IAAQ;AAAA,EACR,WAAAC;AACF,GAAgC;AAC9B,QAAM,CAACC,GAAUC,CAAW,IAAIC,EAAM,SAAS,EAAI,GAC7CC,IAAeD,EAAM,OAA2B,MAAS,GACzDE,IAAcF,EAAM,OAA2B,MAAS,GACxDG,IAAiBH,EAAM,OAAO,EAAK,GAEnCI,IAAqBJ,EAAM,YAAY,MAAM;AACjD,UAAMK,IAAWV,EAAY;AAC7B,QAAI,CAACU,GAAU;AACb,MAAAN,EAAY,EAAI;AAChB;AAAA,IACF;AAEA,UAAM,EAAE,WAAAO,GAAW,cAAAC,GAAc,cAAAC,EAAA,IAAiBH,GAC5CI,IAAY,GAEZC,IAAcJ,IAAYG,GAC1BE,IAAgBL,IAAaC,IAAeC,IAAeC;AAGjE,QAAI,EAFyBF,IAAeC,IAAeC,IAEhC;AACzB,MAAAV,EAAY,EAAI;AAChB;AAAA,IACF;AAGA,IAAAA,EADsBL,MAAc,OAAO,CAACgB,IAAc,CAACC,CAClC;AAAA,EAC3B,GAAG,CAACjB,GAAWC,CAAW,CAAC;AAE3B,EAAAK,EAAM,UAAU,MAAM;AACpB,UAAMK,IAAWV,EAAY;AAC7B,QAAI,CAACU,EAAU;AAEf,IAAAD,EAAA;AAEA,UAAMQ,IAAe,MAAMR,EAAA,GACrBS,IAAe,MAAMT,EAAA;AAE3B,IAAAC,EAAS,iBAAiB,UAAUO,GAAc,EAAE,SAAS,IAAM;AAEnE,UAAME,IAAiB,IAAI,eAAeD,CAAY;AACtD,IAAAC,EAAe,QAAQT,CAAQ;AAE/B,UAAMU,IAAmB,IAAI,iBAAiBF,CAAY;AAC1D,WAAAE,EAAiB,QAAQV,GAAU,EAAE,WAAW,IAAM,SAAS,IAAM,GAE9D,MAAM;AACX,MAAAA,EAAS,oBAAoB,UAAUO,CAAY,GACnDE,EAAe,WAAA,GACfC,EAAiB,WAAA;AAAA,IACnB;AAAA,EACF,GAAG,CAACpB,GAAaS,CAAkB,CAAC;AAEpC,QAAMY,IAAgBhB,EAAM,YAAY,MAAM;AAC5C,IAAIC,EAAa,YACf,qBAAqBA,EAAa,OAAO,GACzCA,EAAa,UAAU,SAEzBE,EAAe,UAAU,IACzBD,EAAY,UAAU;AAAA,EACxB,GAAG,CAAA,CAAE,GAECe,IAAejB,EAAM;AAAA,IACzB,CAACkB,MAAwB;AACvB,YAAMb,IAAWV,EAAY;AAC7B,UAAI,CAACU,KAAYP,KAAY,CAACK,EAAe,SAAS;AACpD,QAAAa,EAAA;AACA;AAAA,MACF;AAEA,MAAKd,EAAY,YACfA,EAAY,UAAUgB;AAGxB,YAAMC,IAAYD,IAAchB,EAAY,SACtCkB,IAAYxB,IAAQuB,IAAa;AAEvC,UAAIC,IAAW,KAAK;AAClB,QAAAnB,EAAa,UAAU,sBAAsBgB,CAAY;AACzD;AAAA,MACF;AAEA,YAAMI,IAAehB,EAAS,WACxBiB,IAAYjB,EAAS,eAAeA,EAAS;AAEnD,UAAIkB;AACJ,MAAI7B,MAAc,OAChB6B,IAAe,KAAK,IAAI,GAAGF,IAAeD,CAAQ,IAElDG,IAAe,KAAK,IAAID,GAAWD,IAAeD,CAAQ,GAG5Df,EAAS,SAAS,EAAE,KAAKkB,EAAA,CAAc,GAEvCrB,EAAY,UAAUgB;AAEtB,YAAMT,IAAY;AAMlB,OAJEf,MAAc,OACV6B,IAAed,IACfc,IAAgBD,IAAYb,MAEf,KAAK,IAAIc,IAAeF,CAAY,IAAI,OACzDpB,EAAa,UAAU,sBAAsBgB,CAAY,KAEzDD,EAAA,GACA,WAAWZ,GAAoB,EAAE;AAAA,IAErC;AAAA,IACA,CAACA,GAAoBV,GAAWI,GAAUF,GAAOoB,GAAerB,CAAW;AAAA,EAAA,GAGvE6B,IAAiBxB,EAAM,YAAY,MAAM;AAC7C,IAAIF,KAAY,CAACH,EAAY,WAAWQ,EAAe,YAEvDA,EAAe,UAAU,IACzBD,EAAY,UAAU,QACtBD,EAAa,UAAU,sBAAsBgB,CAAY;AAAA,EAC3D,GAAG,CAACnB,GAAUmB,GAActB,CAAW,CAAC;AAExC,SAAAK,EAAM,UAAU,MAAMgB,GAAe,CAACA,CAAa,CAAC,GAGlDS,gBAAAA,EAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWC;AAAA,QACT;AAAA,QACA5B,IAAW,8BAA8B;AAAA,QACzCD;AAAA,MAAA;AAAA,MAEF,gBAAgB,MAAM;AACpB,QAAKC,KAAU0B,EAAA;AAAA,MACjB;AAAA,MACA,eAAe,MAAM;AACnB,QAAI,CAAC1B,KAAY,CAACK,EAAe,WAASqB,EAAA;AAAA,MAC5C;AAAA,MACA,gBAAgB,MAAM;AACpB,QAAAR,EAAA;AAAA,MACF;AAAA,MAEC,UAAAtB,MAAc,OACX+B,gBAAAA,EAAAA,IAACE,IAAA,EAAU,eAAW,IAAC,WAAU,qBAAA,CAAqB,IACtDF,gBAAAA,EAAAA,IAACG,IAAA,EAAY,eAAW,IAAC,WAAU,qBAAA,CAAqB;AAAA,IAAA;AAAA,EAAA;AAGlE;AAoBO,SAASC,GAAgB;AAAA,EAC9B,IAAAC;AAAA,EACA,OAAA1D;AAAA,EACA,UAAA2D;AAAA,EACA,eAAAC;AAAA,EACA,SAAApD;AAAA,EACA,aAAAqD,IAAc;AAAA,EACd,WAAApC;AAAA,EACA,gBAAAqC;AAAA,EACA,UAAApC;AAAA,EACA,UAAAqC;AAAA,EACA,MAAMC;AAAA,EACN,cAAAC;AAAA,EACA,eAAAC;AAAA,EACA,eAAAC;AAAA,EACA,YAAAC;AACF,GAAyB;AACvB,QAAMC,IAAUzC,EAAM,MAAA,GAChB0C,IAAYZ,KAAM,gBAAgBW,CAAO,IACzCE,IAAkB3C,EAAM,OAAgC,IAAI,GAC5D4C,IAA0B5C,EAAM,OAAyC,IAAI,GAC7E6C,IAA8B7C,EAAM,YAAY,CAAC8C,MAA8C;AACnG,IAAAF,EAAwB,UAAUE;AAAA,EACpC,GAAG,CAAA,CAAE,GACCC,IAAsB/C,EAAM,OAAsB,IAAI,GACtDgD,IAA8BhD,EAAM,OAAO,EAAK,GAChD,CAACiD,GAAkBC,CAAmB,IAAIlD,EAAM,SAAwB,IAAI,GAC5EmD,IAAenD,EAAM,OAA8B,IAAI,GACvDoD,IAAoBpD,EAAM,OAA8B,IAAI,GAC5DqD,IAAoBrD,EAAM,OAA8B,IAAI,GAC5D,CAACsD,GAAwBC,CAAyB,IAAIvD,EAAM,SAAS,OAAO;AAAA,IAChF,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,EAAA,EACP,GAEI,CAACwD,GAAkBC,CAAmB,IAAIzD,EAAM,SAAS,EAAK,GAC9D0D,IAAOtB,KAAYoB,GACnBG,IAAUtB,KAAgBoB;AAEhC,EAAAzD,EAAM,UAAU,MAAM;AAIpB,QAHI,CAAC0D,KAGD5D,KAAYqC;AACd;AAGF,UAAMyB,IAAQjB,EAAgB;AAC9B,IAAMiB,aAAiB,qBAGnB,OAAO,WAAa,OAAe,SAAS,kBAAkBA,KAIlEA,EAAM,MAAM,EAAE,eAAe,GAAA,CAAM;AAAA,EACrC,GAAG,CAAC9D,GAAU4D,GAAMvB,CAAQ,CAAC;AAE7B,QAAM0B,IAAyB7D,EAAM,YAAY,CAAC8D,MAAwB;AACxE,IAAAf,EAAoB,UAAUe,GAC9BZ,EAAoBY,CAAI;AAAA,EAC1B,GAAG,CAAA,CAAE,GAECC,KAAyB/D,EAAM,YAAY,MAAM;AACrD,IAAAgD,EAA4B,UAAU;AAAA,EACxC,GAAG,CAAA,CAAE;AAEL,EAAAhD,EAAM,UAAU,MAAM;AACpB,QAAI,CAAC0D,EAAM;AAEX,UAAMM,IAAgBpF,EAAQ,KAAK,CAACG,MAAWA,EAAO,UAAUX,CAAK;AACrE,QAAI4F,KAAiBhF,EAAmBgF,CAAa,GAAG;AACtD,MAAAH,EAAuBG,EAAc,KAAK;AAC1C;AAAA,IACF;AAEA,UAAMC,IAAerF,EAAQ,KAAK,CAACG,MAAWC,EAAmBD,CAAM,CAAC;AACxE,IAAA8E,EAAuBI,GAAc,SAAS,IAAI;AAAA,EACpD,GAAG,CAACP,GAAM9E,GAASiF,GAAwBzF,CAAK,CAAC;AAEjD,QAAM8F,KAAclE,EAAM;AAAA,IACxB,CAAC8D,MAAwB;AACvB,UAAIA,MAAS,MAAM;AACjB,QAAI9B,KACFA,EAAc,IAAI;AAEpB;AAAA,MACF;AAEA,YAAMmC,IAAiBvF,EAAQ,KAAK,CAACG,MAAWA,EAAO,UAAU+E,CAAI;AACrE,MAAK9E,EAAmBmF,CAAc,KAIlCnC,KACFA,EAAc8B,CAAI;AAAA,IAEtB;AAAA,IACA,CAAC9B,GAAepD,CAAO;AAAA,EAAA,GAGnBwF,KAAcpE,EAAM;AAAA,IACxB,CAAC8D,MAAwB;AACvB,UAAIA,MAAS,MAAM;AACjB,QAAI9B,KACFA,EAAc,IAAI,GAEpBD,EAAS,IAAI;AACb;AAAA,MACF;AAEA,YAAMoC,IAAiBvF,EAAQ,KAAK,CAACG,MAAWA,EAAO,UAAU+E,CAAI;AACrE,MAAK9E,EAAmBmF,CAAc,MAIlCnC,KACFA,EAAc8B,CAAI,GAGpB/B,EAAS+B,CAAI;AAAA,IACf;AAAA,IACA,CAAC/B,GAAUC,GAAepD,CAAO;AAAA,EAAA;AAGnC,EAAAoB,EAAM,UAAU,MAAM;AACpB,QAAI,CAAC0D,EAAM;AAEX,UAAMW,IAAoB,CAACC,MAAwB;AACjD,YAAMC,IAASD,EAAM;AACrB,UAAI,EAAEC,aAAkB;AACtB;AAGF,YAAMC,IAAYrB,EAAa;AAU/B,MATI,CAACqB,KAIDA,EAAU,SAASD,CAAM,KAIbnB,EAAkB,SACrB,SAASmB,CAAM,KAI5BZ,EAAQ,EAAK;AAAA,IACf;AAEA,oBAAS,iBAAiB,eAAeU,GAAmB,EAAI,GACzD,MAAM;AACX,eAAS,oBAAoB,eAAeA,GAAmB,EAAI;AAAA,IACrE;AAAA,EACF,GAAG,CAACX,GAAMC,CAAO,CAAC,GAElB3D,EAAM,UAAU,MAAM;AACpB,QAAI,CAAC0D;AACH;AAGF,UAAMe,IAAUrB,EAAkB;AAClC,QAAI,CAACqB;AACH;AAGF,UAAMC,IAAc,CAACJ,MAAsB;AACzC,YAAMjE,IAAWgD,EAAkB;AACnC,UAAI,CAAChD;AACH;AAGF,YAAMsE,IAASL,EAAM;AACrB,UAAIK,MAAW;AACb;AAGF,YAAMC,IAAe,KAAK,IAAI,GAAGvE,EAAS,eAAeA,EAAS,YAAY,GACxEwE,IAAQxE,EAAS,aAAa,GAC9ByE,IAAWzE,EAAS,aAAauE,GAEjCL,IAASD,EAAM;AAGrB,UAF4BC,aAAkB,QAAQlE,EAAS,SAASkE,CAAM,GAErD;AACvB,SAAKI,IAAS,KAAKE,KAAWF,IAAS,KAAKG,MAC1CR,EAAM,eAAA;AAER;AAAA,MACF;AAEA,MAAAA,EAAM,eAAA;AACN,YAAMS,IAAgB,KAAK,IAAIH,GAAc,KAAK,IAAI,GAAGvE,EAAS,YAAYsE,CAAM,CAAC;AACrF,MAAAtE,EAAS,YAAY0E;AAAA,IACvB;AAEA,WAAAN,EAAQ,iBAAiB,SAASC,GAAa,EAAE,SAAS,IAAO,GAC1D,MAAM;AACX,MAAAD,EAAQ,oBAAoB,SAASC,CAAW;AAAA,IAClD;AAAA,EACF,GAAG,CAAChB,CAAI,CAAC,GAET1D,EAAM,UAAU,MAAM;AAUpB,QATI,CAAC0D,KAGDtB,MAAa,UAAa,CAACC,KAG3B,OAAO,SAAW,OAGlB,EAAE,0BAA0B;AAC9B;AAGF,UAAM2C,IAAUrC,EAAgB;AAChC,QAAI,EAAEqC,aAAmB;AACvB;AAGF,QAAIC,IAAW;AACf,UAAMC,IAAW,IAAI,qBAAqB,CAAAC,MAAW;AACnD,UAAI,CAACF;AACH;AAEF,YAAMG,IAAQD,EAAQ,CAAC;AACvB,MAAIC,KAAS,CAACA,EAAM,kBAClBzB,EAAQ,EAAK;AAAA,IAEjB,CAAC;AACD,WAAAuB,EAAS,QAAQF,CAAO,GACjB,MAAM;AACX,MAAAC,IAAW,IACXC,EAAS,WAAA;AAAA,IACX;AAAA,EACF,GAAG,CAAC7C,GAAcqB,GAAMtB,GAAUuB,CAAO,CAAC;AAE1C,QAAM0B,IAA+BrF,EAAM,YAAY,MAAM;AAC3D,QAAI,OAAO,SAAW,IAAa;AAEnC,UAAMgF,IAAUrC,EAAgB,SAC1B8B,IAAUrB,EAAkB;AAClC,QAAI,EAAE4B,aAAmB,gBAAgB,CAACP,EAAS;AAEnD,UAAMa,IAAON,EAAQ,sBAAA,GACfO,IAAgBd,EAAQ,cACxBe,IAAgB,OAAO,cAAc,GACrCC,IAAiB,OAAO,eAAe,GACvCC,IAAU,GAEVC,IAAQL,EAAK;AAEnB,QAAIM,IAAON,EAAK;AAChB,IAAIM,IAAOD,IAAQH,IAAgBE,MACjCE,IAAO,KAAK,IAAIF,GAASF,IAAgBG,IAAQD,CAAO,IAEtDE,IAAOF,MACTE,IAAOF;AAGT,QAAIG,IAAMP,EAAK,SAASI;AACxB,UAAMI,IAAiBD,IAAMN,IAAgBE,IAAiBC,GACxDK,IAAWT,EAAK,MAAMC,IAAgBG;AAC5C,IAAII,KAAkBC,KAAYL,MAChCG,IAAME,IAGJF,IAAMH,MACRG,IAAMH,IAEJG,IAAMN,IAAgBE,IAAiBC,MACzCG,IAAM,KAAK,IAAIH,GAASD,IAAiBF,IAAgBG,CAAO,IAGlEnC,EAA0B,EAAE,MAAAqC,GAAM,KAAAC,GAAK,OAAAF,EAAA,CAAO;AAAA,EAChD,GAAG,CAAA,CAAE;AAIL,SAAA3F,EAAM,gBAAgB,MAAM;AAE1B,QADI,CAAC0D,KAAQ5D,KACT,OAAO,SAAW,IAAa;AAEnC,IAAAuF,EAAA;AACA,UAAMW,IAAQ,OAAO,sBAAsBX,CAA4B;AAEvE,kBAAO,iBAAiB,UAAUA,GAA8B,EAAI,GACpE,OAAO,iBAAiB,UAAUA,CAA4B,GACvD,MAAM;AACX,aAAO,qBAAqBW,CAAK,GACjC,OAAO,oBAAoB,UAAUX,GAA8B,EAAI,GACvE,OAAO,oBAAoB,UAAUA,CAA4B;AAAA,IACnE;AAAA,EACF,GAAG,CAACvF,GAAU4D,GAAM2B,CAA4B,CAAC,GAEjDrF,EAAM,UAAU,MAAM;AACpB,QAAI,CAAC0D,EAAM;AAEX,UAAMrD,IAAWgD,EAAkB;AACnC,QAAI,CAAChD,EAAU;AA4Cf,UAAM4F,IAAM,sBA1CA,MAAM;AAChB,YAAMC,IAAW7F,EAAS,cAAc,uCAA2C;AACnF,UAAI6F,aAAoB,aAAa;AAEnC,cAAMC,IAAYD,EAAS,YAAY,GACjCE,IAAeF,EAAS,YAAYA,EAAS,eAAe;AAElE,YAAIC,IAAY9F,EAAS,WAAW;AAClC,UAAAA,EAAS,YAAY,KAAK,IAAI,GAAG8F,CAAS;AAC1C;AAAA,QACF;AAEA,cAAME,KAAiBhG,EAAS,YAAYA,EAAS;AACrD,QAAI+F,IAAeC,OACjBhG,EAAS,YAAY,KAAK,IAAI,GAAG+F,IAAe/F,EAAS,YAAY;AAEvE;AAAA,MACF;AAEA,YAAMiG,IAAM,MAAM,KAAKjG,EAAS,iBAAiB,iBAAmB,CAAC;AACrE,UAAI,CAACiG,EAAI,OAAQ;AAEjB,UAAIrC,GACAsC;AAEJ,iBAAWC,KAAMF,GAAK;AAEpB,YAAI,CADeE,EAAG,aAAa,eAAe,GACjC;AACf,UAAAvC,IAAeuC;AACf;AAAA,QACF;AACA,QAAAD,IAAqBC;AAAA,MACvB;AAEA,UAAI,CAACvC,EAAc;AAInB,YAAMwC,IAAS,KAAK,IAAI,IAFTF,KAA0CtC,GAEvB,YAAY,CAAC;AAC/C,MAAA5D,EAAS,YAAYoG;AAAA,IACvB,CAEqC;AACrC,WAAO,MAAM,qBAAqBR,CAAG;AAAA,EACvC,GAAG,CAACvC,GAAM9E,CAAO,CAAC,GAElBoB,EAAM,UAAU,MAAM;AAGpB,QAFI,CAAC0D,KACD,CAACT,KACD,CAACD,EAA4B,QAAS;AAE1C,UAAM3C,IAAWgD,EAAkB;AACnC,QAAI,CAAChD,EAAU;AAEf,UAAMkE,IAASlE,EAAS,cAAc,+BAA+B4C,CAAgB,IAAI;AACzF,QAAI,EAAEsB,aAAkB,aAAc;AAEtC,UAAMmB,IAAU,GACVS,IAAY5B,EAAO,YAAYmB,GAC/BU,IAAe7B,EAAO,YAAYA,EAAO,eAAemB;AAE9D,QAAIS,IAAY9F,EAAS,WAAW;AAClC,MAAAA,EAAS,YAAY,KAAK,IAAI,GAAG8F,CAAS;AAC1C;AAAA,IACF;AAEA,UAAME,IAAiBhG,EAAS,YAAYA,EAAS;AACrD,IAAI+F,IAAeC,MACjBhG,EAAS,YAAY,KAAK,IAAI,GAAG+F,IAAe/F,EAAS,YAAY;AAAA,EAEzE,GAAG,CAAC4C,GAAkBS,CAAI,CAAC,GAGzBjC,gBAAAA,EAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAWC,EAAG,aAAa7B,CAAS;AAAA,MACpC,KAAKsD;AAAA,MAEL,UAAAuD,gBAAAA,EAAAA,KAAC,OAAA,EAAI,WAAU,YACb,UAAA;AAAA,QAAAjF,gBAAAA,EAAAA;AAAAA,UAACkF;AAAA,UAAA;AAAA,YACC,IAAIjE;AAAA,YACJ,aAAAT;AAAA,YACA,OAAA7D;AAAA,YACA,eAAe8F;AAAA,YACf,UAAUE;AAAA,YACV,SAAAxF;AAAA,YACA,UAAAkB;AAAA,YACA,UAAAqC;AAAA,YACA,MAAAuB;AAAA,YACA,SAAAC;AAAA,YACA,gBAAAzB;AAAA,YACA,eAAAI;AAAA,YACA,YAAAE;AAAA,YACA,qBAAAO;AAAA,YACA,qBAAqBc;AAAA,YACrB,wBAAAE;AAAA,YACA,UAAU,CAAC6C,MAAS;AAClB,cAAAjE,EAAgB,UAAUiE;AAAA,YAC5B;AAAA,YACA,2BAA2B/D;AAAA,UAAA;AAAA,QAAA;AAAA,QAG5Ba,KAAQ,MAAM;AACb,gBAAMe,0BACHoC,IAAA,EACC,UAAAH,gBAAAA,EAAAA;AAAAA,YAAC;AAAA,YAAA;AAAA,cACC,KAAKtD;AAAA,cACL,eAAab;AAAA,cACb,cAAW;AAAA,cACX,WAAWb;AAAA,gBACT;AAAA,gBACA;AAAA,cAAA;AAAA,cAEF,OAAO;AAAA,gBACL,MAAM4B,EAAuB;AAAA,gBAC7B,KAAKA,EAAuB;AAAA,gBAC5B,OAAOA,EAAuB;AAAA,cAAA;AAAA,cAGhC,UAAA;AAAA,gBAAA7B,gBAAAA,EAAAA;AAAAA,kBAAChC;AAAA,kBAAA;AAAA,oBACC,WAAU;AAAA,oBACV,aAAa4D;AAAA,kBAAA;AAAA,gBAAA;AAAA,gBAGf5B,gBAAAA,EAAAA;AAAAA,kBAAC;AAAA,kBAAA;AAAA,oBACC,KAAK4B;AAAA,oBACL,MAAK;AAAA,oBACL,WAAU;AAAA,oBAET,UAAAzE,EAAQ,IAAI,CAACG,MAAW;AACvB,4BAAM+H,IAAY/H,EAAO,UAAUX;AAEnC,6BACEsI,gBAAAA,EAAAA;AAAAA,wBAAC;AAAA,wBAAA;AAAA,0BAEC,MAAK;AAAA,0BACL,iBAAeI;AAAA,0BACf,cAAY/H,EAAO;AAAA,0BACnB,cAAY+H,IAAY,YAAY;AAAA,0BACpC,iBAAe/H,EAAO,WAAW,KAAK;AAAA,0BACtC,WAAW2C;AAAA,4BACT;AAAA,4BACA3C,EAAO,YAAY;AAAA,4BACnBkE,MAAqBlE,EAAO,SAAS;AAAA,0BAAA;AAAA,0BAEvC,aAAa,CAACuF,MAAU;AACtB,4BAAAA,EAAM,eAAA;AAAA,0BACR;AAAA,0BACA,SAAS,MAAM;AACb,4BAAIvF,EAAO,aAEX6D,EAAwB,UAAU7D,EAAO,KAAK,GAC9C8E,EAAuB9E,EAAO,KAAK,GACnC4D,EAAgB,SAAS,MAAM,EAAE,eAAe,IAAM,GACtDyB,GAAYrF,EAAO,KAAK,GACxB4E,EAAQ,EAAK;AAAA,0BACf;AAAA,0BACA,gBAAgB,MAAM;AACpB,4BAAIX,EAA4B,YAChCA,EAA4B,UAAU,IACtCa,EAAuB9E,EAAO,KAAK;AAAA,0BACrC;AAAA,0BACA,eAAe,CAACuF,MAAU;AACxB,4BAAItB,EAA4B,WAAWsB,EAAM,cAAc,KAAKA,EAAM,cAAc,MAGxFtB,EAA4B,UAAU,IACtCa,EAAuB9E,EAAO,KAAK;AAAA,0BACrC;AAAA,0BAEA,UAAA;AAAA,4BAAA0C,gBAAAA,EAAAA,IAAC,QAAA,EAAK,WAAU,gEACb,UAAAqF,IAAYrF,gBAAAA,EAAAA,IAACsF,IAAA,EAAM,eAAW,IAAC,WAAU,UAAA,CAAU,IAAK,MAC3D;AAAA,4BAEAL,gBAAAA,EAAAA,KAAC,OAAA,EAAI,WAAU,iBACb,UAAA;AAAA,8BAAAjF,gBAAAA,EAAAA,IAAC,QAAA,EAAM,YAAO,MAAA,CAAM;AAAA,8BACnB1C,EAAO,eAAe,OACrB0C,gBAAAA,EAAAA,IAAC,QAAA,EAAK,aAAU,eAAc,WAAU,iCACrC,UAAA1C,EAAO,YAAA,CACV,IACE;AAAA,4BAAA,EAAA,CACN;AAAA,0BAAA;AAAA,wBAAA;AAAA,wBA/CKA,EAAO;AAAA,sBAAA;AAAA,oBAkDlB,CAAC;AAAA,kBAAA;AAAA,gBAAA;AAAA,gBAGH0C,gBAAAA,EAAAA;AAAAA,kBAAChC;AAAA,kBAAA;AAAA,oBACC,WAAU;AAAA,oBACV,aAAa4D;AAAA,kBAAA;AAAA,gBAAA;AAAA,cACf;AAAA,YAAA;AAAA,UAAA,GAEJ;AAGF,iBAAI,OAAO,WAAa,MAAoBoB,IACrCuC,GAAavC,GAAS,SAAS,IAAI;AAAA,QAC5C,OAAO;AAAA,MAAA,EAAA,CACT;AAAA,IAAA;AAAA,EAAA;AAGN;AAEA5C,GAAgB,cAAc;AAI9B,SAASoF,GAAsB;AAAA,EAC7B,IAAAnF;AAAA,EACA,OAAA1D;AAAA,EACA,UAAA2D;AAAA,EACA,eAAAC;AAAA,EACA,SAAApD;AAAA,EACA,aAAAqD,IAAc;AAAA,EACd,WAAApC;AAAA,EACA,gBAAAqC;AAAA,EACA,UAAApC;AAAA,EACA,MAAA4D;AAAA,EACA,cAAArB;AAAA,EACA,eAAAC;AAAA,EACA,eAAAC;AAAA,EACA,YAAAC;AACF,GAAyB;AACvB,QAAM4B,IAAcpE,EAAM;AAAA,IACxB,CAAC8D,MAAiB;AAChB,YAAMK,IAAiBvF,EAAQ,KAAK,CAACG,MAAWA,EAAO,UAAU+E,CAAI;AACrE,MAAK9E,EAAmBmF,CAAc,MAIlCnC,KACFA,EAAc8B,CAAI,GAEpB/B,EAAS+B,CAAI;AAAA,IACf;AAAA,IACA,CAAC/B,GAAUC,GAAepD,CAAO;AAAA,EAAA;AAGnC,SACE6C,gBAAAA,MAAC,SAAI,aAAU,sBAAqB,WAAWC,EAAG,aAAa7B,CAAS,GACtE,UAAA6G,gBAAAA,EAAAA;AAAAA,IAACQ;AAAA,IAAA;AAAA,MACC,UAAApH;AAAA,MACA,MAAA4D;AAAA,MACA,cAAArB;AAAA,MACA,OAAOjE,KAAS;AAAA,MAChB,eAAe,CAAC0F,MAASM,EAAYN,CAAI;AAAA,MAEzC,UAAA;AAAA,QAAArC,gBAAAA,EAAAA;AAAAA,UAAC0F;AAAA,UAAA;AAAA,YACC,IAAArF;AAAA,YACA,eAAaQ;AAAA,YACb,iBAAeE,IAAa,SAAS;AAAA,YACrC,WAAWd;AAAA,cACT;AAAA,cACA,CAACtD,KAAS;AAAA,cACVsF,KAAQ;AAAA,cACR;AAAA,cACAxB;AAAA,YAAA;AAAA,YAGF,UAAAT,gBAAAA,EAAAA,IAAC2F,MAAY,aAAAnF,EAAA,CAA0B;AAAA,UAAA;AAAA,QAAA;AAAA,QAGzCR,gBAAAA,EAAAA;AAAAA,UAAC4F;AAAA,UAAA;AAAA,YACC,eAAa9E;AAAA,YACb,YAAY;AAAA,YACZ,WAAU;AAAA,YAET,UAAA3D,EAAQ,IAAI,CAACG,MACZ2H,gBAAAA,EAAAA;AAAAA,cAACY;AAAA,cAAA;AAAA,gBAEC,OAAOvI,EAAO;AAAA,gBACd,UAAUA,EAAO;AAAA,gBAEjB,UAAA;AAAA,kBAAA0C,gBAAAA,EAAAA,IAAC,QAAA,EAAM,YAAO,MAAA,CAAM;AAAA,kBACnB1C,EAAO,eAAe,OACrB0C,gBAAAA,EAAAA,IAAC,QAAA,EAAK,aAAU,eAAc,WAAU,uCACrC,UAAA1C,EAAO,YAAA,CACV,IACE;AAAA,gBAAA;AAAA,cAAA;AAAA,cATCA,EAAO;AAAA,YAAA,CAWf;AAAA,UAAA;AAAA,QAAA;AAAA,MACH;AAAA,IAAA;AAAA,EAAA,GAEJ;AAEJ;AAEO,SAASwI,GAAgBC,GAA6B;AAG3D,SAFsBC,GAAA,IAGbhG,gBAAAA,MAACwF,IAAA,EAAuB,GAAGO,EAAA,CAAO,IAGpC/F,gBAAAA,MAACI,IAAA,EAAiB,GAAG2F,EAAA,CAAO;AACrC;AAEAD,GAAgB,cAAc;AAuB9B,SAASZ,GAA8B;AAAA,EACrC,IAAA7E;AAAA,EACA,aAAAG;AAAA,EACA,OAAA7D;AAAA,EACA,eAAA4D;AAAA,EACA,UAAA0F;AAAA,EACA,SAAA9I;AAAA,EACA,UAAAkB;AAAA,EACA,UAAAqC;AAAA,EACA,MAAAuB;AAAA,EACA,SAAAC;AAAA,EACA,gBAAAzB;AAAA,EACA,eAAAI;AAAA,EACA,YAAAE;AAAA,EACA,qBAAAO;AAAA,EACA,qBAAAG;AAAA,EACA,wBAAAa;AAAA,EACA,UAAA4D;AAAA,EACA,2BAAAC;AACF,GAAuC;AACrC,QAAMC,IAAe7H,EAAM,OAAO,EAAK,GACjC8H,IAAwB9H,EAAM,OAAO,EAAK,GAC1C+H,IAAkC/H,EAAM,OAAO,EAAK,GACpDgI,IAA+BhI,EAAM,OAAsB,IAAI,GAE/D,CAACiI,GAAOC,CAAQ,IAAIlI,EAAM,SAAS,MAAO5B,KAAgB,EAAG;AAEnE,EAAA4B,EAAM,UAAU,OACd4H,EAA0B,CAACO,MAAc;AACvC,IAAAD,EAASC,CAAS;AAAA,EACpB,CAAC,GACM,MAAM;AACX,IAAAP,EAA0B,IAAI;AAAA,EAChC,IACC,CAACA,CAAyB,CAAC;AAE9B,QAAMQ,IAAgBpI,EAAM;AAAA,IAC1B,CAACN,MAAsB;AACrB,YAAM2I,IAAOtF,EAAoB,WAAW3E,KAAS;AAErD,UAAIkK,IAAY1J,EAAQ,UAAU,CAACG,MAAWA,EAAO,UAAUsJ,CAAI;AACnE,MAAIC,MAAc,OAChBA,IAAY5I,MAAc,IAAI,KAAKd,EAAQ;AAG7C,eAAS2J,IAAYD,IAAY5I,GAAW6I,KAAa,KAAKA,IAAY3J,EAAQ,QAAQ2J,KAAa7I,GAAW;AAChH,cAAM8I,IAAa5J,EAAQ2J,CAAS;AACpC,YAAKvJ,EAAmBwJ,CAAU,GAElC;AAAA,UAAAtF,EAAoBsF,EAAW,KAAK,GACpCR,EAA6B,UAAUQ,EAAW,OAClDN,EAASM,EAAW,KAAK,GACzBxG,EAAcwG,EAAW,KAAK;AAC9B;AAAA;AAAA,MACF;AAAA,IACF;AAAA,IACA,CAACzF,GAAqBf,GAAepD,GAASsE,GAAqB9E,CAAK;AAAA,EAAA;AAG1E,EAAA4B,EAAM,UAAU,MAAM;AACpB,IAAI6H,EAAa,WACjBK,EAAS9J,KAAgB,EAAE;AAAA,EAC7B,GAAG,CAACA,CAAK,CAAC;AAEV,QAAMqK,IAAmB/G;AAAA,IACvB;AAAA,IACA;AAAA,IACA,CAACuG,KAAS;AAAA,IACVvE,KAAQ;AAAA,IACR;AAAA,IACAxB;AAAA,EAAA;AAGF,SACEwE,gBAAAA,EAAAA,KAAC,OAAA,EAAI,WAAU,kBACb,UAAA;AAAA,IAAAjF,gBAAAA,EAAAA;AAAAA,MAACiH;AAAA,MAAA;AAAA,QACC,IAAA5G;AAAA,QACA,eAAaQ;AAAA,QACb,iBAAeE,IAAa,SAAS;AAAA,QACrC,MAAK;AAAA,QACL,UAAA1C;AAAA,QACA,UAAAqC;AAAA,QACA,UAAAwF;AAAA,QACA,cAAc;AAAA,QACd,MAAM;AAAA,UACJ,EAAE,MAAM,SAAS,MAAM,GAAA;AAAA,UACvB,EAAE,MAAM,QAAQ,MAAM,GAAA;AAAA,QAAK;AAAA,QAE7B,UAAU,CAACgB,GAAUC,MAAkB;AACrC,gBAAMC,KAAUD,EAAc,QAAQD,GAAU,QAAQ,OAAO,EAAE;AAEjE,cADIE,EAAO,UAAU,KACjBA,EAAO,UAAU,EAAG,QAAOD,EAAc,cAAc,CAAC;AAE5D,gBAAME,IAAa3K,EAAK,OAAO0K,EAAO,MAAM,GAAG,CAAC,CAAC,CAAC;AAElD,iBADwBjK,EAAQ,KAAK,CAACG,MAAWA,EAAO,MAAM,WAAW,GAAG+J,CAAU,GAAG,CAAC,IAC9DF,EAAc,cAAc,CAAC,IAElDA,EAAc,cAAc,CAAC;AAAA,QACtC;AAAA,QACA,aAAA3G;AAAA,QACA,OAAOgG;AAAA,QACP,WAAWQ;AAAA,QACX,UAAU,CAACM,MAAa;AACtB,gBAAMC,IAAW,OAAOD,KAAa,WAAWA,IAAW,OAAOA,KAAY,EAAE;AAGhF,UAFAb,EAASc,CAAQ,GAEbA,EAAS,QAAQ,OAAO,EAAE,EAAE,WAAW,KAIvC5K,KACFsJ,EAAS,IAAI;AAAA,QAEjB;AAAA,QACA,YAAY,CAACuB,MAAc;AACzB,gBAAMD,IAAW,OAAOC,KAAc,WAAWA,IAAY,OAAOA,KAAa,EAAE;AACnF,cAAIjB,EAA6B,YAAYgB,GAAU;AACrD,YAAAhB,EAA6B,UAAU;AACvC;AAAA,UACF;AAEA,gBAAMkB,IAAWvK,EAAmCqK,GAAUpK,CAAO;AACrE,cAAI,CAACsK;AACH;AAGF,cAAIA,EAAS,iBAAiB;AAI5B,gBAHAhG,EAAoBgG,EAAS,eAAe,GAC5ChB,EAASgB,EAAS,eAAe,GAE7B9K,MAAU8K,EAAS;AACrB;AAGF,YAAAxB,EAASwB,EAAS,eAAe;AACjC;AAAA,UACF;AAEA,gBAAM/J,IAAgBF,EAAoBiK,EAAS,MAAM;AACzD,cAAI/J,KAAiB;AACnB;AAGF,gBAAMgK,IAAgBjK,GAA4BC,GAAeP,CAAO;AACxE,UAAKuK,KAILjG,EAAoBiG,EAAc,KAAK;AAAA,QACzC;AAAA,QACA,eAAe,MAAM;AAEnB,UADArB,EAAsB,UAAU,IAC5B,CAAAhI,MACC4D,KACHC,EAAQ,EAAI;AAAA,QAEhB;AAAA,QACA,aAAa,CAACW,MAAU;AAGtB,UAFAwD,EAAsB,UAAU,IAChCC,EAAgC,UAAU,OAAO,WAAa,OAAe,SAAS,kBAAkBzD,EAAM,eAC1G,CAAAxE,MACC4D,KACHC,EAAQ,EAAI;AAAA,QAEhB;AAAA,QACA,SAAS,MAAM;AACb,UAAI7D,KACC4D,KACHC,EAAQ,EAAI;AAAA,QAEhB;AAAA,QACA,WAAW,CAACW,MAAU;AACpB,cAAI,CAAAxE,GAIJ;AAAA,gBAAIwE,EAAM,QAAQ,SAASZ,KAAQ,CAACY,EAAM,kBAAkB;AAC1D,cAAAX,EAAQ,EAAK;AACb;AAAA,YACF;AAEA,gBAAIW,EAAM,QAAQ,UAAU;AAC1B,kBAAI,CAACZ;AACH;AAEF,cAAAY,EAAM,eAAA,GACNX,EAAQ,EAAK;AACb;AAAA,YACF;AAcA,gBAZI,CAACD,KAAQ,CAACY,EAAM,qBAEfA,EAAM,IAAI,WAAW,KAAKA,EAAM,QAAQ,eAAeA,EAAM,QAAQ,aACtE,CAACA,EAAM,WACP,CAACA,EAAM,WACP,CAACA,EAAM,UAGPX,EAAQ,EAAI,GAIZW,EAAM,QAAQ,eAAeA,EAAM,QAAQ,WAAW;AAIxD,kBAHAP,EAAA,GACAO,EAAM,eAAA,GAEF,CAACZ,GAAM;AACT,gBAAAC,EAAQ,EAAI;AACZ;AAAA,cACF;AAEA,cAAAyE,EAAc9D,EAAM,QAAQ,cAAc,IAAI,EAAE;AAChD;AAAA,YACF;AAEA,gBAAIA,EAAM,QAAQ,SAAS;AACzB,cAAAP,EAAA;AACA,oBAAMmF,IAAWvK,EAAmCsJ,GAAOrJ,CAAO;AAClE,kBAAI,CAACsK,GAAU;AAKb,oBAJI,CAACxF,KAIDuE,EAAM,KAAA,MAAW;AACnB;AAGF,sBAAMmB,IAAoBxK,EAAQ,KAAK,CAACG,MAAWA,EAAO,UAAUgE,EAAoB,OAAO,GACzFsG,KACHrK,EAAmBoK,CAAiB,IAAIA,GAAmB,QAAQ,WACpExK,EAAQ,KAAK,CAACG,MAAWC,EAAmBD,CAAM,CAAC,GAAG;AAExD,oBAAI,CAACsK;AACH;AAGF,gBAAA/E,EAAM,eAAA,GACNpB,EAAoBmG,CAAa,GACjCnB,EAASmB,CAAa,GACtB3B,EAAS2B,CAAa,GACtB1F,EAAQ,EAAK;AACb;AAAA,cACF;AAEA,kBAAIuF,EAAS,iBAAiB;AAC5B,gBAAA5E,EAAM,eAAA,GACNpB,EAAoBgG,EAAS,eAAe,GAC5ChB,EAASgB,EAAS,eAAe,GACjCxB,EAASwB,EAAS,eAAe,GACjCvF,EAAQ,EAAK;AACb;AAAA,cACF;AAEA,oBAAMxE,IAAgBF,EAAoBiK,EAAS,MAAM;AACzD,kBAAI/J,KAAiB;AACnB;AAGF,oBAAMgK,IAAgBjK,GAA4BC,GAAeP,CAAO;AACxE,kBAAI,CAACuK;AACH;AAGF,cAAA7E,EAAM,eAAA,GACNpB,EAAoBiG,EAAc,KAAK,GACvCjB,EAASiB,EAAc,KAAK,GAC5BzB,EAASyB,EAAc,KAAK,GAC5BxF,EAAQ,EAAK;AACb;AAAA,YACF;AAAA;AAAA,QACF;AAAA,QACA,SAAS,CAACW,MAAU;AAClB,gBAAMgF,IAAkB,CAACxB,EAAsB,WAAW,CAACC,EAAgC;AAI3F,cAHAD,EAAsB,UAAU,IAChCC,EAAgC,UAAU,IAC1CF,EAAa,UAAU,IACnByB,GAAiB;AACnB,kBAAMC,IAAUjF,EAAM;AACtB,kCAAsB,MAAMiF,EAAQ,QAAQ;AAAA,UAC9C;AAEA,UAAIzJ,KAIA4D,KAIJC,EAAQ,EAAI;AAAA,QACd;AAAA,QACA,QAAQ,MAAM;AACZ,UAAAkE,EAAa,UAAU;AAEvB,gBAAMtJ,IAAU0J,EAAM,KAAA;AACtB,cAAI,CAAC1J,GAAS;AACZ,YAAA2J,EAAS9J,KAAgB,EAAE;AAC3B;AAAA,UACF;AAEA,gBAAM8K,IAAWvK,EAAmCJ,GAASK,CAAO;AACpE,cAAI,CAACsK,GAAU;AACb,YAAAhB,EAAS9J,KAAgB,EAAE;AAC3B;AAAA,UACF;AAEA,cAAI,CAAC8K,EAAS,iBAAiB;AAC7B,YAAAhB,EAAS9J,KAAgB,EAAE;AAC3B;AAAA,UACF;AAEA,UAAA8J,EAASgB,EAAS,eAAe,GAC7B9K,MAAU8K,EAAS,mBACrBxB,EAASwB,EAAS,eAAe;AAAA,QAErC;AAAA,MAAA;AAAA,IAAA;AAAA,IAGFzH,gBAAAA,EAAAA;AAAAA,MAAC;AAAA,MAAA;AAAA,QACC,MAAK;AAAA,QACL,UAAU;AAAA,QACV,UAAA3B;AAAA,QACA,aAAU;AAAA,QACV,WAAW4B;AAAA,UACT;AAAA,QAAA;AAAA,QAEF,cAAYgC,IAAO,sBAAsB;AAAA,QACzC,eAAe,CAACY,MAAU;AACxB,UAAAA,EAAM,eAAA;AAAA,QACR;AAAA,QACA,aAAa,CAACA,MAAU;AACtB,UAAAA,EAAM,eAAA;AAAA,QACR;AAAA,QACA,SAAS,MAAM;AACb,UAAIxE,KACJ6D,EAAQ,CAACD,CAAI;AAAA,QACf;AAAA,QAEA,UAAAjC,gBAAAA,EAAAA,IAACG,IAAA,EAAY,eAAW,IAAC,WAAU,SAAA,CAAS;AAAA,MAAA;AAAA,IAAA;AAAA,EAC9C,GACF;AAEJ;"}
|
|
1
|
+
{"version":3,"file":"index18.js","sources":["../src/components/I18nField/index.tsx"],"sourcesContent":["import * as React from \"react\"\nimport Select, {\n type OptionProps,\n type Props as SelectProps,\n type SelectInstance,\n type SingleValue,\n type StylesConfig,\n components as selectComponents,\n} from \"react-select\"\n\nimport { cn } from \"@/lib/utils\"\n\n\nexport type LanguageCode = string\n\nexport type LocalizedString = Record<LanguageCode, string>\n\nexport type I18nValue = LocalizedString\n\ntype LocaleContextValue = {\n locale: LanguageCode | null\n setLocale: (next: LanguageCode) => void\n}\n\nconst I18nFieldLocaleContext = React.createContext<LocaleContextValue | null>(null)\n\ntype I18nFieldLocaleProviderProps = {\n children: React.ReactNode\n value?: LanguageCode\n defaultValue?: LanguageCode\n onChange?: (locale: LanguageCode) => void\n}\n\nexport function I18nFieldLocaleProvider({ children, value, defaultValue, onChange }: I18nFieldLocaleProviderProps) {\n const isControlled = value !== undefined\n const [internalLocale, setInternalLocale] = React.useState<LanguageCode>(defaultValue ?? DEFAULT_LOCALE)\n const activeLocale = (value ?? internalLocale) as LanguageCode\n\n const setLocale = React.useCallback(\n (next: LanguageCode) => {\n if (!isControlled) {\n setInternalLocale(next)\n }\n onChange?.(next)\n },\n [isControlled, onChange]\n )\n\n const contextValue = React.useMemo<LocaleContextValue>(\n () => ({\n locale: activeLocale,\n setLocale,\n }),\n [activeLocale, setLocale]\n )\n\n return <I18nFieldLocaleContext.Provider value={contextValue}>{children}</I18nFieldLocaleContext.Provider>\n}\n\ntype I18nFieldProps = Omit<\n React.InputHTMLAttributes<HTMLInputElement>,\n \"value\" | \"defaultValue\" | \"onChange\"\n> &\n Omit<\n React.TextareaHTMLAttributes<HTMLTextAreaElement>,\n \"value\" | \"defaultValue\" | \"onChange\"\n > & {\n value?: I18nValue\n defaultValue?: I18nValue\n locale?: LanguageCode\n defaultLocale?: LanguageCode\n onChange?: (value: I18nValue) => void\n onLocaleChange?: (locale: LanguageCode, option: LanguageOption) => void\n locales?: LanguageCode[]\n multiline?: boolean\n inputClassName?: string\n selectProps?: Partial<SelectProps<LanguageOption, false>>\n selectFooter?: React.ReactNode\n languageSelectTabIndex?: number\n }\n\ntype LanguageOption = {\n value: LanguageCode\n name: string\n code: string\n searchable: string[]\n}\n\nconst DEFAULT_LOCALE: LanguageCode = \"en\"\n\nfunction languageCodeToBadge(code: string) {\n const primary = code.split(\"-\")[0] ?? \"\"\n const normalized = primary.replace(/[^A-Za-z]/g, \"\")\n if (!normalized) return \"?\"\n return normalized.slice(0, 3).toUpperCase()\n}\n\nfunction stripDiacritics(value: string) {\n return value.normalize(\"NFD\").replace(/[\\u0300-\\u036f]/g, \"\")\n}\n\nfunction normalize(value: string) {\n return stripDiacritics(value).toLowerCase()\n}\n\nfunction resolveLocalizedValue(value: I18nValue, locale: LanguageCode) {\n if (Object.prototype.hasOwnProperty.call(value, locale)) {\n return value[locale] ?? \"\"\n }\n\n const parts = locale.split(\"-\").filter(Boolean)\n while (parts.length > 1) {\n parts.pop()\n const candidate = parts.join(\"-\")\n if (Object.prototype.hasOwnProperty.call(value, candidate)) {\n return value[candidate] ?? \"\"\n }\n }\n\n return \"\"\n}\n\nfunction createDisplayNames(locale: string | string[] | undefined, type: \"language\") {\n if (typeof Intl === \"undefined\" || typeof Intl.DisplayNames === \"undefined\") return null\n try {\n const locales = Array.isArray(locale) ? locale : locale ? [locale] : undefined\n return new Intl.DisplayNames(locales, { type })\n } catch {\n return null\n }\n}\n\nfunction safeDisplayName(displayNames: Intl.DisplayNames | null, value: string) {\n if (!displayNames) return undefined\n try {\n return displayNames.of(value) ?? undefined\n } catch {\n return undefined\n }\n}\n\nfunction buildLanguageOptions(locale?: string | string[], allowed?: LanguageCode[]) {\n const displayNames = createDisplayNames(locale, \"language\")\n const englishDisplayNames = createDisplayNames(\"en\", \"language\")\n const pool = (allowed ?? []).filter((code): code is LanguageCode => typeof code === \"string\" && code.length > 0)\n\n return pool\n .map((code) => {\n const name = safeDisplayName(displayNames, code) ?? safeDisplayName(englishDisplayNames, code) ?? code\n return {\n value: code,\n name,\n code,\n searchable: Array.from(\n new Set([\n name,\n safeDisplayName(englishDisplayNames, code) ?? code,\n code.toLowerCase(),\n code.toUpperCase(),\n ])\n ).map((entry) => normalize(entry)),\n }\n })\n .sort((a, b) => a.name.localeCompare(b.name))\n}\n\nconst selectStyles: StylesConfig<LanguageOption, false> = {\n control: () => ({\n display: \"none\",\n }),\n menu: (provided) => ({\n ...provided,\n marginTop: 4,\n borderRadius: \"var(--radius)\",\n boxShadow: \"0 18px 36px rgba(15, 23, 42, 0.18)\",\n backgroundColor: \"hsl(var(--popover))\",\n overflow: \"hidden\",\n zIndex: 30,\n }),\n menuList: (provided) => ({\n ...provided,\n maxHeight: 280,\n padding: 0,\n display: \"flex\",\n flexDirection: \"column\",\n overflow: \"hidden\",\n }),\n option: (provided, state) => ({\n ...provided,\n fontSize: \"0.875rem\",\n backgroundColor: state.isFocused\n ? \"hsl(var(--muted))\"\n : state.isSelected\n ? \"hsl(var(--accent))\"\n : \"transparent\",\n color: state.isSelected\n ? \"hsl(var(--accent-foreground))\"\n : \"hsl(var(--foreground))\",\n cursor: \"pointer\",\n }),\n noOptionsMessage: (provided) => ({\n ...provided,\n fontSize: \"0.875rem\",\n color: \"hsl(var(--muted-foreground))\",\n }),\n}\n\nconst HiddenControl = () => <div style={{ display: \"none\" }} />\nconst NullComponent = () => null\n\nfunction Option(props: OptionProps<LanguageOption, false>) {\n const { data, innerRef, innerProps, isFocused, isSelected } = props\n return (\n <div\n ref={innerRef}\n {...innerProps}\n className={cn(\n \"flex cursor-pointer items-center justify-between gap-3 px-3 py-2 text-sm\",\n isSelected\n ? \"bg-accent text-accent-foreground\"\n : isFocused\n ? \"bg-muted text-foreground\"\n : \"text-foreground\"\n )}\n >\n <span className=\"flex min-w-0 items-center gap-2\">\n <span className=\"truncate\">{data.name}</span>\n </span>\n <span className=\"text-xs text-muted-foreground uppercase\">{data.code}</span>\n </div>\n )\n}\n\nexport const I18nField = React.forwardRef<HTMLInputElement | HTMLTextAreaElement, I18nFieldProps>(\n function I18nField(props, forwardedRef) {\n const {\n value: valueProp,\n defaultValue,\n locale: localeProp,\n defaultLocale,\n onChange,\n onLocaleChange,\n locales,\n multiline,\n className,\n inputClassName,\n selectProps,\n selectFooter,\n languageSelectTabIndex = -1,\n disabled,\n ...rest\n } = props\n\n type SharedProps = React.InputHTMLAttributes<HTMLInputElement> &\n React.TextareaHTMLAttributes<HTMLTextAreaElement> & { rows?: number }\n\n const { rows, ...restProps } = rest as SharedProps\n\n const initialValue = React.useMemo<I18nValue>(() => valueProp ?? defaultValue ?? {}, [defaultValue, valueProp])\n const [internalValue, setInternalValue] = React.useState<I18nValue>(initialValue)\n const isControlled = valueProp !== undefined\n const currentValue = isControlled ? valueProp ?? {} : internalValue\n const [searchTerm, setSearchTerm] = React.useState(\"\")\n const localeContext = React.useContext(I18nFieldLocaleContext)\n\n const localePool = React.useMemo(() => {\n const pool = Array.from(new Set([...(locales ?? []), ...Object.keys(currentValue)]))\n return buildLanguageOptions(undefined, pool)\n }, [currentValue, locales])\n\n const initialLocale = React.useMemo(() => {\n const candidate =\n localeProp ??\n localeContext?.locale ??\n defaultLocale ??\n (Object.keys(currentValue)[0] as LanguageCode | undefined) ??\n localePool[0]?.value ??\n DEFAULT_LOCALE\n return candidate\n }, [currentValue, defaultLocale, localeContext?.locale, localePool, localeProp])\n\n const [internalLocale, setInternalLocale] = React.useState<LanguageCode>(initialLocale)\n const activeLocale = localeProp ?? localeContext?.locale ?? internalLocale\n\n React.useEffect(() => {\n if (!isControlled) {\n setInternalValue(initialValue)\n }\n }, [initialValue, isControlled])\n\n React.useEffect(() => {\n if (localeProp && localeProp !== internalLocale) {\n setInternalLocale(localeProp)\n }\n }, [internalLocale, localeProp])\n\n React.useEffect(() => {\n if (!localeProp && localeContext?.locale && localeContext.locale !== internalLocale) {\n setInternalLocale(localeContext.locale)\n }\n }, [internalLocale, localeContext?.locale, localeProp])\n\n const selectedOption =\n localePool.find((option) => option.value === activeLocale) ??\n localePool.find((option) => option.value === DEFAULT_LOCALE) ??\n localePool[0] ??\n null\n\n const [menuOpen, setMenuOpen] = React.useState(false)\n const rootRef = React.useRef<HTMLDivElement | null>(null)\n const inputRef = React.useRef<HTMLInputElement | HTMLTextAreaElement | null>(null)\n const triggerRef = React.useRef<HTMLButtonElement | null>(null)\n const containerRef = React.useRef<HTMLDivElement | null>(null)\n const selectRef = React.useRef<SelectInstance<LanguageOption, false> | null>(null)\n const searchInputRef = React.useRef<HTMLInputElement | null>(null)\n const selectionSnapshotRef = React.useRef<{ start: number | null; end: number | null } | null>(null)\n const [menuPosition, setMenuPosition] = React.useState<{ left: number; top: number }>({ left: 0, top: 0 })\n\n React.useImperativeHandle(forwardedRef, () => inputRef.current as HTMLInputElement & HTMLTextAreaElement, [])\n\n const handleLocaleSelect = (option: SingleValue<LanguageOption>) => {\n if (!option) return\n const nextLocale = option.value\n if (!isControlled) {\n setInternalLocale(nextLocale)\n }\n onLocaleChange?.(nextLocale, option)\n localeContext?.setLocale(nextLocale)\n closeMenu(true)\n }\n\n const handleTextChange = (event: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement>) => {\n const nextValue = {\n ...currentValue,\n [activeLocale]: event.target.value,\n }\n if (!isControlled) {\n setInternalValue(nextValue)\n }\n onChange?.(nextValue)\n }\n\n const currentText = resolveLocalizedValue(currentValue, activeLocale)\n\n const filterOption = React.useCallback(\n (option: { data: LanguageOption }) => {\n if (!searchTerm) return true\n const query = normalize(searchTerm)\n return option.data.searchable.some((token) => token.includes(query))\n },\n [searchTerm]\n )\n\n const buttonPosition = multiline ? \"left-2 top-2 -translate-y-0\" : \"left-3 top-1/2 -translate-y-1/2\"\n const inputPaddingLeft = \"pl-10 pr-3\"\n\n const updateMenuPosition = React.useCallback(() => {\n const trigger = triggerRef.current\n const container = containerRef.current\n if (!trigger || !container) return\n const triggerRect = trigger.getBoundingClientRect()\n const containerRect = container.getBoundingClientRect()\n setMenuPosition({\n left: triggerRect.left - containerRect.left,\n top: triggerRect.bottom - containerRect.top + 4,\n })\n }, [])\n\n const isInsideComponent = React.useCallback((target: EventTarget | null) => {\n if (!target || !(target instanceof Node)) return false\n return Boolean(rootRef.current?.contains(target))\n }, [])\n\n const restoreMainFocus = React.useCallback(() => {\n const target = inputRef.current\n if (!target) return\n target.focus()\n const selection = selectionSnapshotRef.current\n if (selection && selection.start != null && selection.end != null) {\n target.setSelectionRange(selection.start, selection.end)\n }\n }, [])\n\n React.useEffect(() => {\n if (!menuOpen) return\n const target = searchInputRef.current\n if (!target) return\n requestAnimationFrame(() => {\n if (document.activeElement === target) return\n target.focus()\n const end = target.value.length\n try {\n target.setSelectionRange(end, end)\n } catch {\n /* ignore */\n }\n })\n }, [menuOpen, searchTerm])\n\n const closeMenu = React.useCallback(\n (restoreFocus = true) => {\n setMenuOpen(false)\n setSearchTerm(\"\")\n if (restoreFocus) {\n requestAnimationFrame(() => {\n restoreMainFocus()\n })\n }\n },\n [restoreMainFocus]\n )\n\n const {\n components: userSelectComponents,\n styles: userSelectStyles,\n classNamePrefix: userClassNamePrefix,\n placeholder: selectPlaceholder,\n noOptionsMessage,\n ...forwardedSelectProps\n } = selectProps ?? {}\n\n const filteredOptions = React.useMemo(() => {\n const query = normalize(searchTerm)\n const rank = (option: LanguageOption) => {\n const code = option.code.toLowerCase()\n if (query && code === query) return 0\n if (query && code.startsWith(query)) return 1\n if (query && option.searchable.some((token) => token.startsWith(query))) return 2\n if (query && option.searchable.some((token) => token.includes(query))) return 3\n return 4\n }\n return localePool\n .filter((option) => filterOption({ data: option }))\n .sort((a, b) => {\n const diff = rank(a) - rank(b)\n if (diff !== 0) return diff\n return a.name.localeCompare(b.name)\n })\n }, [filterOption, localePool, searchTerm])\n\n const mergedSelectComponents = React.useMemo(\n () => ({\n Control: HiddenControl,\n IndicatorsContainer: NullComponent,\n DropdownIndicator: NullComponent,\n IndicatorSeparator: NullComponent,\n ValueContainer: NullComponent,\n MenuList: (props: any) => {\n const { children } = props\n return (\n <selectComponents.MenuList {...props} className=\"!p-0 flex flex-col overflow-hidden\">\n <div className=\"border-b border-muted px-2 pb-2 pt-2\">\n <input\n ref={searchInputRef}\n value={searchTerm}\n onChange={(event) => setSearchTerm(event.target.value)}\n onKeyDown={(event) => {\n if (event.key === \"Escape\") {\n event.preventDefault()\n closeMenu(true)\n return\n }\n if (event.key === \"Enter\") {\n event.preventDefault()\n const first = filteredOptions[0]\n if (first) {\n handleLocaleSelect(first)\n }\n return\n }\n if (event.key === \"ArrowDown\" || event.key === \"ArrowUp\") {\n event.preventDefault()\n selectRef.current?.focus()\n }\n }}\n className=\"w-full rounded-md border border-input bg-background px-3 py-2 text-sm focus:outline-none focus:ring-2 focus:ring-ring\"\n placeholder=\"Search language…\"\n />\n </div>\n <div className=\"max-h-60 overflow-y-auto\">{children}</div>\n {selectFooter ? (\n <div className=\"border-t border-muted bg-muted/60 px-3 py-2 text-xs text-muted-foreground\">\n {selectFooter}\n </div>\n ) : null}\n </selectComponents.MenuList>\n )\n },\n ...(userSelectComponents ?? {}),\n Option,\n }),\n [closeMenu, filterOption, filteredOptions, handleLocaleSelect, localePool, searchTerm, selectFooter, userSelectComponents]\n )\n\n const mergedSelectStyles = React.useMemo<StylesConfig<LanguageOption, false>>(\n () => ({\n ...selectStyles,\n ...(userSelectStyles ?? {}),\n }),\n [userSelectStyles]\n )\n\n React.useLayoutEffect(() => {\n if (!menuOpen) return\n updateMenuPosition()\n const handleResize = () => updateMenuPosition()\n window.addEventListener(\"resize\", handleResize)\n return () => window.removeEventListener(\"resize\", handleResize)\n }, [menuOpen, updateMenuPosition])\n\n const sharedFieldProps = {\n ...restProps,\n ref: inputRef as React.Ref<any>,\n disabled,\n value: currentText,\n onChange: handleTextChange,\n onFocus: (event: React.FocusEvent<any>) => {\n if (menuOpen) {\n closeMenu(false)\n }\n restProps.onFocus?.(event)\n },\n onBlur: (event: React.FocusEvent<any>) => {\n if (!isInsideComponent(event.relatedTarget)) {\n closeMenu(false)\n }\n restProps.onBlur?.(event)\n },\n className: cn(\n \"w-full rounded-md border border-input bg-background text-base ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 md:text-sm\",\n multiline ? \"min-h-24 py-2\" : \"h-10 py-2\",\n inputPaddingLeft,\n inputClassName\n ),\n placeholder: restProps.placeholder,\n }\n\n return (\n <div\n ref={rootRef}\n className={cn(\"relative flex flex-col\", className)}\n onBlur={(event) => {\n if (!isInsideComponent(event.relatedTarget)) {\n closeMenu(false)\n }\n }}\n >\n <div ref={containerRef} className=\"relative\">\n {multiline ? (\n <textarea rows={rows} {...sharedFieldProps} />\n ) : (\n <input type=\"text\" {...sharedFieldProps} />\n )}\n\n <button\n type=\"button\"\n className={cn(\n \"absolute flex h-6 w-6 items-center justify-center rounded border text-xs font-semibold leading-none transition focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n buttonPosition,\n disabled ? \"cursor-not-allowed opacity-50 pointer-events-none\" : \"cursor-pointer hover:bg-muted\",\n selectedOption ? \"border-transparent\" : \"border-dashed border-border text-muted-foreground\"\n )}\n aria-label={selectedOption ? `Select language (${selectedOption.code})` : \"Select language\"}\n onMouseDown={(event) => event.preventDefault()}\n onClick={() => {\n if (disabled) return\n const target = inputRef.current\n if (target) {\n selectionSnapshotRef.current = {\n start: target.selectionStart,\n end: target.selectionEnd,\n }\n }\n setSearchTerm(\"\")\n setMenuOpen(true)\n requestAnimationFrame(() => {\n if (searchInputRef.current) {\n searchInputRef.current.focus()\n searchInputRef.current.select()\n } else {\n selectRef.current?.focus()\n }\n })\n }}\n tabIndex={languageSelectTabIndex}\n disabled={disabled}\n ref={triggerRef}\n >\n <span aria-hidden=\"true\">{selectedOption ? languageCodeToBadge(selectedOption.code) : \"?\"}</span>\n </button>\n </div>\n\n <div\n className=\"absolute left-0 top-full z-30 mt-1\"\n style={{\n pointerEvents: menuOpen ? \"auto\" : \"none\",\n width: \"min(260px, 100%)\",\n left: menuPosition.left,\n top: menuPosition.top,\n }}\n >\n <Select<LanguageOption, false>\n {...forwardedSelectProps}\n menuIsOpen={menuOpen}\n options={filteredOptions}\n value={null}\n onChange={handleLocaleSelect}\n classNamePrefix={userClassNamePrefix ?? \"i18n-language-select\"}\n components={mergedSelectComponents}\n styles={mergedSelectStyles}\n isClearable={false}\n isSearchable={false}\n backspaceRemovesValue={false}\n tabSelectsValue\n menuShouldScrollIntoView={false}\n placeholder={selectPlaceholder ?? \"\"}\n filterOption={filterOption}\n noOptionsMessage={noOptionsMessage}\n onMenuClose={() => closeMenu(true)}\n ref={selectRef}\n />\n </div>\n </div>\n )\n }\n)\n\nI18nField.displayName = \"I18nField\"\n"],"names":["I18nFieldLocaleContext","React","I18nFieldLocaleProvider","children","value","defaultValue","onChange","isControlled","internalLocale","setInternalLocale","DEFAULT_LOCALE","activeLocale","setLocale","next","contextValue","languageCodeToBadge","code","normalized","stripDiacritics","normalize","resolveLocalizedValue","locale","parts","candidate","createDisplayNames","type","locales","safeDisplayName","displayNames","buildLanguageOptions","allowed","englishDisplayNames","name","entry","a","b","selectStyles","provided","state","HiddenControl","jsx","NullComponent","Option","props","data","innerRef","innerProps","isFocused","isSelected","jsxs","cn","I18nField","forwardedRef","valueProp","localeProp","defaultLocale","onLocaleChange","multiline","className","inputClassName","selectProps","selectFooter","languageSelectTabIndex","disabled","rest","rows","restProps","initialValue","internalValue","setInternalValue","currentValue","searchTerm","setSearchTerm","localeContext","localePool","pool","initialLocale","selectedOption","option","menuOpen","setMenuOpen","rootRef","inputRef","triggerRef","containerRef","selectRef","searchInputRef","selectionSnapshotRef","menuPosition","setMenuPosition","handleLocaleSelect","nextLocale","closeMenu","handleTextChange","event","nextValue","currentText","filterOption","query","token","buttonPosition","inputPaddingLeft","updateMenuPosition","trigger","container","triggerRect","containerRect","isInsideComponent","target","restoreMainFocus","selection","end","restoreFocus","userSelectComponents","userSelectStyles","userClassNamePrefix","selectPlaceholder","noOptionsMessage","forwardedSelectProps","filteredOptions","rank","diff","mergedSelectComponents","selectComponents","first","mergedSelectStyles","handleResize","sharedFieldProps","Select"],"mappings":";;;;AAwBA,MAAMA,KAAyBC,EAAM,cAAyC,IAAI;AAS3E,SAASC,GAAwB,EAAE,UAAAC,GAAU,OAAAC,GAAO,cAAAC,GAAc,UAAAC,KAA0C;AACjH,QAAMC,IAAeH,MAAU,QACzB,CAACI,GAAgBC,CAAiB,IAAIR,EAAM,SAAuBI,KAAgBK,CAAc,GACjGC,IAAgBP,KAASI,GAEzBI,IAAYX,EAAM;AAAA,IACtB,CAACY,MAAuB;AACtB,MAAKN,KACHE,EAAkBI,CAAI,GAExBP,IAAWO,CAAI;AAAA,IACjB;AAAA,IACA,CAACN,GAAcD,CAAQ;AAAA,EAAA,GAGnBQ,IAAeb,EAAM;AAAA,IACzB,OAAO;AAAA,MACL,QAAQU;AAAA,MACR,WAAAC;AAAA,IAAA;AAAA,IAEF,CAACD,GAAcC,CAAS;AAAA,EAAA;AAG1B,+BAAQZ,GAAuB,UAAvB,EAAgC,OAAOc,GAAe,UAAAX,GAAS;AACzE;AA+BA,MAAMO,IAA+B;AAErC,SAASK,GAAoBC,GAAc;AAEzC,QAAMC,KADUD,EAAK,MAAM,GAAG,EAAE,CAAC,KAAK,IACX,QAAQ,cAAc,EAAE;AACnD,SAAKC,IACEA,EAAW,MAAM,GAAG,CAAC,EAAE,YAAA,IADN;AAE1B;AAEA,SAASC,GAAgBd,GAAe;AACtC,SAAOA,EAAM,UAAU,KAAK,EAAE,QAAQ,oBAAoB,EAAE;AAC9D;AAEA,SAASe,EAAUf,GAAe;AAChC,SAAOc,GAAgBd,CAAK,EAAE,YAAA;AAChC;AAEA,SAASgB,GAAsBhB,GAAkBiB,GAAsB;AACrE,MAAI,OAAO,UAAU,eAAe,KAAKjB,GAAOiB,CAAM;AACpD,WAAOjB,EAAMiB,CAAM,KAAK;AAG1B,QAAMC,IAAQD,EAAO,MAAM,GAAG,EAAE,OAAO,OAAO;AAC9C,SAAOC,EAAM,SAAS,KAAG;AACvB,IAAAA,EAAM,IAAA;AACN,UAAMC,IAAYD,EAAM,KAAK,GAAG;AAChC,QAAI,OAAO,UAAU,eAAe,KAAKlB,GAAOmB,CAAS;AACvD,aAAOnB,EAAMmB,CAAS,KAAK;AAAA,EAE/B;AAEA,SAAO;AACT;AAEA,SAASC,GAAmBH,GAAuCI,GAAkB;AACnF,MAAI,OAAO,OAAS,OAAe,OAAO,KAAK,eAAiB,IAAa,QAAO;AACpF,MAAI;AACF,UAAMC,IAAU,MAAM,QAAQL,CAAM,IAAIA,IAASA,IAAS,CAACA,CAAM,IAAI;AACrE,WAAO,IAAI,KAAK,aAAaK,GAAS,EAAE,MAAAD,GAAM;AAAA,EAChD,QAAQ;AACN,WAAO;AAAA,EACT;AACF;AAEA,SAASE,EAAgBC,GAAwCxB,GAAe;AAC9E,MAAKwB;AACL,QAAI;AACF,aAAOA,EAAa,GAAGxB,CAAK,KAAK;AAAA,IACnC,QAAQ;AACN;AAAA,IACF;AACF;AAEA,SAASyB,GAAqBR,GAA4BS,GAA0B;AAClF,QAAMF,IAAeJ,GAAmBH,GAAQ,UAAU,GACpDU,IAAsBP,GAAmB,MAAM,UAAU;AAG/D,UAFcM,KAAW,CAAA,GAAI,OAAO,CAACd,MAA+B,OAAOA,KAAS,YAAYA,EAAK,SAAS,CAAC,EAG5G,IAAI,CAACA,MAAS;AACb,UAAMgB,IAAOL,EAAgBC,GAAcZ,CAAI,KAAKW,EAAgBI,GAAqBf,CAAI,KAAKA;AAClG,WAAO;AAAA,MACL,OAAOA;AAAA,MACP,MAAAgB;AAAA,MACA,MAAAhB;AAAA,MACA,YAAY,MAAM;AAAA,4BACZ,IAAI;AAAA,UACNgB;AAAA,UACAL,EAAgBI,GAAqBf,CAAI,KAAKA;AAAA,UAC9CA,EAAK,YAAA;AAAA,UACLA,EAAK,YAAA;AAAA,QAAY,CAClB;AAAA,MAAA,EACD,IAAI,CAACiB,MAAUd,EAAUc,CAAK,CAAC;AAAA,IAAA;AAAA,EAErC,CAAC,EACA,KAAK,CAACC,GAAGC,MAAMD,EAAE,KAAK,cAAcC,EAAE,IAAI,CAAC;AAChD;AAEA,MAAMC,KAAoD;AAAA,EACxD,SAAS,OAAO;AAAA,IACd,SAAS;AAAA,EAAA;AAAA,EAEX,MAAM,CAACC,OAAc;AAAA,IACnB,GAAGA;AAAA,IACH,WAAW;AAAA,IACX,cAAc;AAAA,IACd,WAAW;AAAA,IACX,iBAAiB;AAAA,IACjB,UAAU;AAAA,IACV,QAAQ;AAAA,EAAA;AAAA,EAEV,UAAU,CAACA,OAAc;AAAA,IACvB,GAAGA;AAAA,IACH,WAAW;AAAA,IACX,SAAS;AAAA,IACT,SAAS;AAAA,IACT,eAAe;AAAA,IACf,UAAU;AAAA,EAAA;AAAA,EAEZ,QAAQ,CAACA,GAAUC,OAAW;AAAA,IAC5B,GAAGD;AAAA,IACH,UAAU;AAAA,IACV,iBAAiBC,EAAM,YACnB,sBACAA,EAAM,aACJ,uBACA;AAAA,IACN,OAAOA,EAAM,aACT,kCACA;AAAA,IACJ,QAAQ;AAAA,EAAA;AAAA,EAEV,kBAAkB,CAACD,OAAc;AAAA,IAC/B,GAAGA;AAAA,IACH,UAAU;AAAA,IACV,OAAO;AAAA,EAAA;AAEX,GAEME,KAAgB,MAAMC,gBAAAA,EAAAA,IAAC,OAAA,EAAI,OAAO,EAAE,SAAS,UAAU,GACvDC,IAAgB,MAAM;AAE5B,SAASC,GAAOC,GAA2C;AACzD,QAAM,EAAE,MAAAC,GAAM,UAAAC,GAAU,YAAAC,GAAY,WAAAC,GAAW,YAAAC,MAAeL;AAC9D,SACEM,gBAAAA,EAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAKJ;AAAA,MACJ,GAAGC;AAAA,MACJ,WAAWI;AAAA,QACT;AAAA,QACAF,IACI,qCACAD,IACE,6BACA;AAAA,MAAA;AAAA,MAGR,UAAA;AAAA,QAAAP,gBAAAA,EAAAA,IAAC,QAAA,EAAK,WAAU,mCACd,UAAAA,gBAAAA,EAAAA,IAAC,UAAK,WAAU,YAAY,UAAAI,EAAK,KAAA,CAAK,EAAA,CACxC;AAAA,QACAJ,gBAAAA,EAAAA,IAAC,QAAA,EAAK,WAAU,2CAA2C,YAAK,KAAA,CAAK;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAG3E;AAEO,MAAMW,KAAYlD,EAAM;AAAA,EAC7B,SAAmB0C,GAAOS,GAAc;AACtC,UAAM;AAAA,MACJ,OAAOC;AAAA,MACP,cAAAhD;AAAA,MACA,QAAQiD;AAAA,MACR,eAAAC;AAAA,MACA,UAAAjD;AAAA,MACA,gBAAAkD;AAAA,MACA,SAAA9B;AAAA,MACA,WAAA+B;AAAA,MACA,WAAAC;AAAA,MACA,gBAAAC;AAAA,MACA,aAAAC;AAAA,MACA,cAAAC;AAAA,MACA,wBAAAC,KAAyB;AAAA,MACzB,UAAAC;AAAA,MACA,GAAGC;AAAA,IAAA,IACDrB,GAKE,EAAE,MAAAsB,IAAM,GAAGC,EAAA,IAAcF,IAEzBG,IAAelE,EAAM,QAAmB,MAAMoD,KAAahD,KAAgB,IAAI,CAACA,GAAcgD,CAAS,CAAC,GACxG,CAACe,IAAeC,CAAgB,IAAIpE,EAAM,SAAoBkE,CAAY,GAC1E5D,IAAe8C,MAAc,QAC7BiB,IAAe/D,IAAe8C,KAAa,CAAA,IAAKe,IAChD,CAACG,GAAYC,CAAa,IAAIvE,EAAM,SAAS,EAAE,GAC/CwE,IAAgBxE,EAAM,WAAWD,EAAsB,GAEvD0E,IAAazE,EAAM,QAAQ,MAAM;AACrC,YAAM0E,IAAO,MAAM,KAAK,oBAAI,IAAI,CAAC,GAAIjD,KAAW,CAAA,GAAK,GAAG,OAAO,KAAK4C,CAAY,CAAC,CAAC,CAAC;AACnF,aAAOzC,GAAqB,QAAW8C,CAAI;AAAA,IAC7C,GAAG,CAACL,GAAc5C,CAAO,CAAC,GAEpBkD,KAAgB3E,EAAM,QAAQ,MAEhCqD,KACAmB,GAAe,UACflB,KACC,OAAO,KAAKe,CAAY,EAAE,CAAC,KAC5BI,EAAW,CAAC,GAAG,SACfhE,GAED,CAAC4D,GAAcf,GAAekB,GAAe,QAAQC,GAAYpB,CAAU,CAAC,GAEzE,CAAC9C,GAAgBC,CAAiB,IAAIR,EAAM,SAAuB2E,EAAa,GAChFjE,IAAe2C,KAAcmB,GAAe,UAAUjE;AAE5D,IAAAP,EAAM,UAAU,MAAM;AACpB,MAAKM,KACH8D,EAAiBF,CAAY;AAAA,IAEjC,GAAG,CAACA,GAAc5D,CAAY,CAAC,GAE/BN,EAAM,UAAU,MAAM;AACpB,MAAIqD,KAAcA,MAAe9C,KAC/BC,EAAkB6C,CAAU;AAAA,IAEhC,GAAG,CAAC9C,GAAgB8C,CAAU,CAAC,GAE/BrD,EAAM,UAAU,MAAM;AACpB,MAAI,CAACqD,KAAcmB,GAAe,UAAUA,EAAc,WAAWjE,KACnEC,EAAkBgE,EAAc,MAAM;AAAA,IAE1C,GAAG,CAACjE,GAAgBiE,GAAe,QAAQnB,CAAU,CAAC;AAEtD,UAAMuB,IACJH,EAAW,KAAK,CAACI,MAAWA,EAAO,UAAUnE,CAAY,KACzD+D,EAAW,KAAK,CAACI,MAAWA,EAAO,UAAUpE,CAAc,KAC3DgE,EAAW,CAAC,KACZ,MAEI,CAACK,GAAUC,CAAW,IAAI/E,EAAM,SAAS,EAAK,GAC9CgF,IAAUhF,EAAM,OAA8B,IAAI,GAClDiF,IAAWjF,EAAM,OAAsD,IAAI,GAC3EkF,IAAalF,EAAM,OAAiC,IAAI,GACxDmF,IAAenF,EAAM,OAA8B,IAAI,GACvDoF,IAAYpF,EAAM,OAAqD,IAAI,GAC3EqF,IAAiBrF,EAAM,OAAgC,IAAI,GAC3DsF,IAAuBtF,EAAM,OAA4D,IAAI,GAC7F,CAACuF,GAAcC,EAAe,IAAIxF,EAAM,SAAwC,EAAE,MAAM,GAAG,KAAK,GAAG;AAEzG,IAAAA,EAAM,oBAAoBmD,GAAc,MAAM8B,EAAS,SAAmD,CAAA,CAAE;AAE5G,UAAMQ,IAAqB,CAACZ,MAAwC;AAClE,UAAI,CAACA,EAAQ;AACb,YAAMa,IAAab,EAAO;AAC1B,MAAKvE,KACHE,EAAkBkF,CAAU,GAE9BnC,IAAiBmC,GAAYb,CAAM,GACnCL,GAAe,UAAUkB,CAAU,GACnCC,EAAU,EAAI;AAAA,IAChB,GAEMC,KAAmB,CAACC,MAAqE;AAC7F,YAAMC,IAAY;AAAA,QAChB,GAAGzB;AAAA,QACH,CAAC3D,CAAY,GAAGmF,EAAM,OAAO;AAAA,MAAA;AAE/B,MAAKvF,KACH8D,EAAiB0B,CAAS,GAE5BzF,IAAWyF,CAAS;AAAA,IACtB,GAEMC,KAAc5E,GAAsBkD,GAAc3D,CAAY,GAE9DsF,IAAehG,EAAM;AAAA,MACzB,CAAC6E,MAAqC;AACpC,YAAI,CAACP,EAAY,QAAO;AACxB,cAAM2B,IAAQ/E,EAAUoD,CAAU;AAClC,eAAOO,EAAO,KAAK,WAAW,KAAK,CAACqB,MAAUA,EAAM,SAASD,CAAK,CAAC;AAAA,MACrE;AAAA,MACA,CAAC3B,CAAU;AAAA,IAAA,GAGP6B,KAAiB3C,IAAY,gCAAgC,mCAC7D4C,KAAmB,cAEnBC,IAAqBrG,EAAM,YAAY,MAAM;AACjD,YAAMsG,IAAUpB,EAAW,SACrBqB,IAAYpB,EAAa;AAC/B,UAAI,CAACmB,KAAW,CAACC,EAAW;AAC5B,YAAMC,IAAcF,EAAQ,sBAAA,GACtBG,IAAgBF,EAAU,sBAAA;AAChC,MAAAf,GAAgB;AAAA,QACd,MAAMgB,EAAY,OAAOC,EAAc;AAAA,QACvC,KAAKD,EAAY,SAASC,EAAc,MAAM;AAAA,MAAA,CAC/C;AAAA,IACH,GAAG,CAAA,CAAE,GAECC,IAAoB1G,EAAM,YAAY,CAAC2G,MACvC,CAACA,KAAU,EAAEA,aAAkB,QAAc,KAC1C,EAAQ3B,EAAQ,SAAS,SAAS2B,CAAM,GAC9C,CAAA,CAAE,GAECC,KAAmB5G,EAAM,YAAY,MAAM;AAC/C,YAAM2G,IAAS1B,EAAS;AACxB,UAAI,CAAC0B,EAAQ;AACb,MAAAA,EAAO,MAAA;AACP,YAAME,IAAYvB,EAAqB;AACvC,MAAIuB,KAAaA,EAAU,SAAS,QAAQA,EAAU,OAAO,QAC3DF,EAAO,kBAAkBE,EAAU,OAAOA,EAAU,GAAG;AAAA,IAE3D,GAAG,CAAA,CAAE;AAEL,IAAA7G,EAAM,UAAU,MAAM;AACpB,UAAI,CAAC8E,EAAU;AACf,YAAM6B,IAAStB,EAAe;AAC9B,MAAKsB,KACL,sBAAsB,MAAM;AAC1B,YAAI,SAAS,kBAAkBA,EAAQ;AACvC,QAAAA,EAAO,MAAA;AACP,cAAMG,IAAMH,EAAO,MAAM;AACzB,YAAI;AACF,UAAAA,EAAO,kBAAkBG,GAAKA,CAAG;AAAA,QACnC,QAAQ;AAAA,QAER;AAAA,MACF,CAAC;AAAA,IACH,GAAG,CAAChC,GAAUR,CAAU,CAAC;AAEzB,UAAMqB,IAAY3F,EAAM;AAAA,MACtB,CAAC+G,IAAe,OAAS;AACvB,QAAAhC,EAAY,EAAK,GACjBR,EAAc,EAAE,GACZwC,KACF,sBAAsB,MAAM;AAC1B,UAAAH,GAAA;AAAA,QACF,CAAC;AAAA,MAEL;AAAA,MACA,CAACA,EAAgB;AAAA,IAAA,GAGb;AAAA,MACJ,YAAYI;AAAA,MACZ,QAAQC;AAAA,MACR,iBAAiBC;AAAA,MACjB,aAAaC;AAAA,MACb,kBAAAC;AAAA,MACA,GAAGC;AAAA,IAAA,IACD1D,MAAe,CAAA,GAEb2D,IAAkBtH,EAAM,QAAQ,MAAM;AAC1C,YAAMiG,IAAQ/E,EAAUoD,CAAU,GAC5BiD,IAAO,CAAC1C,MAA2B;AACvC,cAAM9D,IAAO8D,EAAO,KAAK,YAAA;AACzB,eAAIoB,KAASlF,MAASkF,IAAc,IAChCA,KAASlF,EAAK,WAAWkF,CAAK,IAAU,IACxCA,KAASpB,EAAO,WAAW,KAAK,CAACqB,MAAUA,EAAM,WAAWD,CAAK,CAAC,IAAU,IAC5EA,KAASpB,EAAO,WAAW,KAAK,CAACqB,MAAUA,EAAM,SAASD,CAAK,CAAC,IAAU,IACvE;AAAA,MACT;AACA,aAAOxB,EACJ,OAAO,CAACI,MAAWmB,EAAa,EAAE,MAAMnB,EAAA,CAAQ,CAAC,EACjD,KAAK,CAAC5C,GAAGC,MAAM;AACd,cAAMsF,IAAOD,EAAKtF,CAAC,IAAIsF,EAAKrF,CAAC;AAC7B,eAAIsF,MAAS,IAAUA,IAChBvF,EAAE,KAAK,cAAcC,EAAE,IAAI;AAAA,MACpC,CAAC;AAAA,IACL,GAAG,CAAC8D,GAAcvB,GAAYH,CAAU,CAAC,GAEnCmD,KAAyBzH,EAAM;AAAA,MACnC,OAAO;AAAA,QACL,SAASsC;AAAA,QACT,qBAAqBE;AAAA,QACrB,mBAAmBA;AAAA,QACnB,oBAAoBA;AAAA,QACpB,gBAAgBA;AAAA,QAChB,UAAU,CAACE,MAAe;AACxB,gBAAM,EAAE,UAAAxC,MAAawC;AACrB,wCACGgF,GAAiB,UAAjB,EAA2B,GAAGhF,GAAO,WAAU,sCAC9C,UAAA;AAAA,YAAAH,gBAAAA,EAAAA,IAAC,OAAA,EAAI,WAAU,wCACb,UAAAA,gBAAAA,EAAAA;AAAAA,cAAC;AAAA,cAAA;AAAA,gBACC,KAAK8C;AAAA,gBACL,OAAOf;AAAA,gBACP,UAAU,CAACuB,MAAUtB,EAAcsB,EAAM,OAAO,KAAK;AAAA,gBACrD,WAAW,CAACA,MAAU;AACpB,sBAAIA,EAAM,QAAQ,UAAU;AAC1B,oBAAAA,EAAM,eAAA,GACNF,EAAU,EAAI;AACd;AAAA,kBACF;AACA,sBAAIE,EAAM,QAAQ,SAAS;AACzB,oBAAAA,EAAM,eAAA;AACN,0BAAM8B,IAAQL,EAAgB,CAAC;AAC/B,oBAAIK,KACFlC,EAAmBkC,CAAK;AAE1B;AAAA,kBACF;AACA,mBAAI9B,EAAM,QAAQ,eAAeA,EAAM,QAAQ,eAC7CA,EAAM,eAAA,GACNT,EAAU,SAAS,MAAA;AAAA,gBAEvB;AAAA,gBACA,WAAU;AAAA,gBACV,aAAY;AAAA,cAAA;AAAA,YAAA,GAEhB;AAAA,YACA7C,gBAAAA,EAAAA,IAAC,OAAA,EAAI,WAAU,4BAA4B,UAAArC,EAAA,CAAS;AAAA,YACnD0D,IACCrB,gBAAAA,EAAAA,IAAC,OAAA,EAAI,WAAU,6EACZ,aACH,IACE;AAAA,UAAA,GACN;AAAA,QAEJ;AAAA,QACA,GAAIyE,MAAwB,CAAA;AAAA,QAC5B,QAAAvE;AAAA,MAAA;AAAA,MAEF,CAACkD,GAAWK,GAAcsB,GAAiB7B,GAAoBhB,GAAYH,GAAYV,GAAcoD,EAAoB;AAAA,IAAA,GAGrHY,KAAqB5H,EAAM;AAAA,MAC/B,OAAO;AAAA,QACL,GAAGmC;AAAA,QACH,GAAI8E,MAAoB,CAAA;AAAA,MAAC;AAAA,MAE3B,CAACA,EAAgB;AAAA,IAAA;AAGnB,IAAAjH,EAAM,gBAAgB,MAAM;AAC1B,UAAI,CAAC8E,EAAU;AACf,MAAAuB,EAAA;AACA,YAAMwB,IAAe,MAAMxB,EAAA;AAC3B,oBAAO,iBAAiB,UAAUwB,CAAY,GACvC,MAAM,OAAO,oBAAoB,UAAUA,CAAY;AAAA,IAChE,GAAG,CAAC/C,GAAUuB,CAAkB,CAAC;AAEjC,UAAMyB,KAAmB;AAAA,MACvB,GAAG7D;AAAA,MACH,KAAKgB;AAAA,MACL,UAAAnB;AAAA,MACA,OAAOiC;AAAA,MACP,UAAUH;AAAA,MACV,SAAS,CAACC,MAAiC;AACzC,QAAIf,KACFa,EAAU,EAAK,GAEjB1B,EAAU,UAAU4B,CAAK;AAAA,MAC3B;AAAA,MACA,QAAQ,CAACA,MAAiC;AACxC,QAAKa,EAAkBb,EAAM,aAAa,KACxCF,EAAU,EAAK,GAEjB1B,EAAU,SAAS4B,CAAK;AAAA,MAC1B;AAAA,MACA,WAAW5C;AAAA,QACT;AAAA,QACAO,IAAY,kBAAkB;AAAA,QAC9B4C;AAAA,QACA1C;AAAA,MAAA;AAAA,MAEF,aAAaO,EAAU;AAAA,IAAA;AAGzB,WACEjB,gBAAAA,EAAAA;AAAAA,MAAC;AAAA,MAAA;AAAA,QACC,KAAKgC;AAAA,QACL,WAAW/B,EAAG,0BAA0BQ,EAAS;AAAA,QACjD,QAAQ,CAACoC,MAAU;AACjB,UAAKa,EAAkBb,EAAM,aAAa,KACxCF,EAAU,EAAK;AAAA,QAEnB;AAAA,QAEA,UAAA;AAAA,UAAA3C,gBAAAA,EAAAA,KAAC,OAAA,EAAI,KAAKmC,GAAc,WAAU,YAC/B,UAAA;AAAA,YAAA3B,IACCjB,gBAAAA,EAAAA,IAAC,YAAA,EAAS,MAAAyB,IAAa,GAAG8D,GAAA,CAAkB,IAE5CvF,gBAAAA,EAAAA,IAAC,SAAA,EAAM,MAAK,QAAQ,GAAGuF,GAAA,CAAkB;AAAA,YAG3CvF,gBAAAA,EAAAA;AAAAA,cAAC;AAAA,cAAA;AAAA,gBACC,MAAK;AAAA,gBACL,WAAWU;AAAA,kBACT;AAAA,kBACAkD;AAAA,kBACArC,IAAW,sDAAsD;AAAA,kBACjEc,IAAiB,uBAAuB;AAAA,gBAAA;AAAA,gBAE1C,cAAYA,IAAiB,oBAAoBA,EAAe,IAAI,MAAM;AAAA,gBAC1E,aAAa,CAACiB,MAAUA,EAAM,eAAA;AAAA,gBAC9B,SAAS,MAAM;AACb,sBAAI/B,EAAU;AACd,wBAAM6C,IAAS1B,EAAS;AACxB,kBAAI0B,MACFrB,EAAqB,UAAU;AAAA,oBAC7B,OAAOqB,EAAO;AAAA,oBACd,KAAKA,EAAO;AAAA,kBAAA,IAGhBpC,EAAc,EAAE,GAChBQ,EAAY,EAAI,GAChB,sBAAsB,MAAM;AAC1B,oBAAIM,EAAe,WACjBA,EAAe,QAAQ,MAAA,GACvBA,EAAe,QAAQ,OAAA,KAEvBD,EAAU,SAAS,MAAA;AAAA,kBAEvB,CAAC;AAAA,gBACH;AAAA,gBACA,UAAUvB;AAAA,gBACV,UAAAC;AAAA,gBACA,KAAKoB;AAAA,gBAEL,UAAA3C,gBAAAA,EAAAA,IAAC,UAAK,eAAY,QAAQ,cAAiBzB,GAAoB8D,EAAe,IAAI,IAAI,IAAA,CAAI;AAAA,cAAA;AAAA,YAAA;AAAA,UAC5F,GACF;AAAA,UAEArC,gBAAAA,EAAAA;AAAAA,YAAC;AAAA,YAAA;AAAA,cACC,WAAU;AAAA,cACV,OAAO;AAAA,gBACL,eAAeuC,IAAW,SAAS;AAAA,gBACnC,OAAO;AAAA,gBACP,MAAMS,EAAa;AAAA,gBACnB,KAAKA,EAAa;AAAA,cAAA;AAAA,cAGpB,UAAAhD,gBAAAA,EAAAA;AAAAA,gBAACwF;AAAA,gBAAA;AAAA,kBACE,GAAGV;AAAA,kBACJ,YAAYvC;AAAA,kBACZ,SAASwC;AAAA,kBACT,OAAO;AAAA,kBACP,UAAU7B;AAAA,kBACV,iBAAiByB,MAAuB;AAAA,kBACxC,YAAYO;AAAA,kBACZ,QAAQG;AAAA,kBACR,aAAa;AAAA,kBACb,cAAc;AAAA,kBACd,uBAAuB;AAAA,kBACvB,iBAAe;AAAA,kBACf,0BAA0B;AAAA,kBAC1B,aAAaT,MAAqB;AAAA,kBAClC,cAAAnB;AAAA,kBACA,kBAAAoB;AAAA,kBACA,aAAa,MAAMzB,EAAU,EAAI;AAAA,kBACjC,KAAKP;AAAA,gBAAA;AAAA,cAAA;AAAA,YACP;AAAA,UAAA;AAAA,QACF;AAAA,MAAA;AAAA,IAAA;AAAA,EAGN;AACF;AAEAlC,GAAU,cAAc;"}
|
package/dist/index180.js
CHANGED
|
@@ -1,10 +1,20 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
import { defaultDateLib as o } from "./index104.js";
|
|
2
|
+
class y {
|
|
3
|
+
constructor(t, i, s = o) {
|
|
4
|
+
this.date = t, this.displayMonth = i, this.outside = !!(i && !s.isSameMonth(t, i)), this.dateLib = s, this.isoDate = s.format(t, "yyyy-MM-dd"), this.displayMonthId = s.format(i, "yyyy-MM"), this.dateMonthId = s.format(t, "yyyy-MM");
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Checks if this day is equal to another `CalendarDay`, considering both the
|
|
8
|
+
* date and the displayed month.
|
|
9
|
+
*
|
|
10
|
+
* @param day The `CalendarDay` to compare with.
|
|
11
|
+
* @returns `true` if the days are equal, otherwise `false`.
|
|
12
|
+
*/
|
|
13
|
+
isEqualTo(t) {
|
|
14
|
+
return this.dateLib.isSameDay(t.date, this.date) && this.dateLib.isSameMonth(t.displayMonth, this.displayMonth);
|
|
15
|
+
}
|
|
6
16
|
}
|
|
7
17
|
export {
|
|
8
|
-
|
|
18
|
+
y as CalendarDay
|
|
9
19
|
};
|
|
10
20
|
//# sourceMappingURL=index180.js.map
|
package/dist/index180.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index180.js","sources":["../../../node_modules/react-day-picker/dist/esm/
|
|
1
|
+
{"version":3,"file":"index180.js","sources":["../../../node_modules/react-day-picker/dist/esm/classes/CalendarDay.js"],"sourcesContent":["import { defaultDateLib } from \"./DateLib.js\";\n/**\n * Represents a day displayed in the calendar.\n *\n * In DayPicker, a `CalendarDay` is a wrapper around a `Date` object that\n * provides additional information about the day, such as whether it belongs to\n * the displayed month.\n */\nexport class CalendarDay {\n constructor(date, displayMonth, dateLib = defaultDateLib) {\n this.date = date;\n this.displayMonth = displayMonth;\n this.outside = Boolean(displayMonth && !dateLib.isSameMonth(date, displayMonth));\n this.dateLib = dateLib;\n this.isoDate = dateLib.format(date, \"yyyy-MM-dd\");\n this.displayMonthId = dateLib.format(displayMonth, \"yyyy-MM\");\n this.dateMonthId = dateLib.format(date, \"yyyy-MM\");\n }\n /**\n * Checks if this day is equal to another `CalendarDay`, considering both the\n * date and the displayed month.\n *\n * @param day The `CalendarDay` to compare with.\n * @returns `true` if the days are equal, otherwise `false`.\n */\n isEqualTo(day) {\n return (this.dateLib.isSameDay(day.date, this.date) &&\n this.dateLib.isSameMonth(day.displayMonth, this.displayMonth));\n }\n}\n"],"names":["CalendarDay","date","displayMonth","dateLib","defaultDateLib","day"],"mappings":";AAQO,MAAMA,EAAY;AAAA,EACrB,YAAYC,GAAMC,GAAcC,IAAUC,GAAgB;AACtD,SAAK,OAAOH,GACZ,KAAK,eAAeC,GACpB,KAAK,UAAU,GAAQA,KAAgB,CAACC,EAAQ,YAAYF,GAAMC,CAAY,IAC9E,KAAK,UAAUC,GACf,KAAK,UAAUA,EAAQ,OAAOF,GAAM,YAAY,GAChD,KAAK,iBAAiBE,EAAQ,OAAOD,GAAc,SAAS,GAC5D,KAAK,cAAcC,EAAQ,OAAOF,GAAM,SAAS;AAAA,EACrD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,UAAUI,GAAK;AACX,WAAQ,KAAK,QAAQ,UAAUA,EAAI,MAAM,KAAK,IAAI,KAC9C,KAAK,QAAQ,YAAYA,EAAI,cAAc,KAAK,YAAY;AAAA,EACpE;AACJ;","x_google_ignoreList":[0]}
|
package/dist/index181.js
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
class a {
|
|
2
|
+
constructor(t, s) {
|
|
3
|
+
this.date = t, this.weeks = s;
|
|
4
|
+
}
|
|
4
5
|
}
|
|
5
6
|
export {
|
|
6
|
-
|
|
7
|
+
a as CalendarMonth
|
|
7
8
|
};
|
|
8
9
|
//# sourceMappingURL=index181.js.map
|
package/dist/index181.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index181.js","sources":["../../../node_modules/react-day-picker/dist/esm/
|
|
1
|
+
{"version":3,"file":"index181.js","sources":["../../../node_modules/react-day-picker/dist/esm/classes/CalendarMonth.js"],"sourcesContent":["/**\n * Represents a month in a calendar year.\n *\n * A `CalendarMonth` contains the weeks within the month and the date of the\n * month.\n */\nexport class CalendarMonth {\n constructor(month, weeks) {\n this.date = month;\n this.weeks = weeks;\n }\n}\n"],"names":["CalendarMonth","month","weeks"],"mappings":"AAMO,MAAMA,EAAc;AAAA,EACvB,YAAYC,GAAOC,GAAO;AACtB,SAAK,OAAOD,GACZ,KAAK,QAAQC;AAAA,EACjB;AACJ;","x_google_ignoreList":[0]}
|
package/dist/index182.js
CHANGED
|
@@ -1,11 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
return isNaN(r) ? a(e, NaN) : (r && t.setDate(t.getDate() + r), t);
|
|
1
|
+
class t {
|
|
2
|
+
constructor(e, s) {
|
|
3
|
+
this.days = s, this.weekNumber = e;
|
|
4
|
+
}
|
|
6
5
|
}
|
|
7
6
|
export {
|
|
8
|
-
|
|
9
|
-
s as default
|
|
7
|
+
t as CalendarWeek
|
|
10
8
|
};
|
|
11
9
|
//# sourceMappingURL=index182.js.map
|
package/dist/index182.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index182.js","sources":["../../../node_modules/
|
|
1
|
+
{"version":3,"file":"index182.js","sources":["../../../node_modules/react-day-picker/dist/esm/classes/CalendarWeek.js"],"sourcesContent":["/**\n * Represents a week in a calendar month.\n *\n * A `CalendarWeek` contains the days within the week and the week number.\n */\nexport class CalendarWeek {\n constructor(weekNumber, days) {\n this.days = days;\n this.weekNumber = weekNumber;\n }\n}\n"],"names":["CalendarWeek","weekNumber","days"],"mappings":"AAKO,MAAMA,EAAa;AAAA,EACtB,YAAYC,GAAYC,GAAM;AAC1B,SAAK,OAAOA,GACZ,KAAK,aAAaD;AAAA,EACtB;AACJ;","x_google_ignoreList":[0]}
|
package/dist/index183.js
CHANGED
|
@@ -1,21 +1,10 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
function
|
|
4
|
-
const t =
|
|
5
|
-
|
|
6
|
-
if (!o)
|
|
7
|
-
return t;
|
|
8
|
-
const r = t.getDate(), e = s(n, t.getTime());
|
|
9
|
-
e.setMonth(t.getMonth() + o + 1, 0);
|
|
10
|
-
const a = e.getDate();
|
|
11
|
-
return r >= a ? e : (t.setFullYear(
|
|
12
|
-
e.getFullYear(),
|
|
13
|
-
e.getMonth(),
|
|
14
|
-
r
|
|
15
|
-
), t);
|
|
1
|
+
import { getBroadcastWeeksInMonth as n } from "./index267.js";
|
|
2
|
+
import { startOfBroadcastWeek as s } from "./index184.js";
|
|
3
|
+
function d(e, t) {
|
|
4
|
+
const o = s(e, t), r = n(e, t);
|
|
5
|
+
return t.addDays(o, r * 7 - 1);
|
|
16
6
|
}
|
|
17
7
|
export {
|
|
18
|
-
|
|
19
|
-
u as default
|
|
8
|
+
d as endOfBroadcastWeek
|
|
20
9
|
};
|
|
21
10
|
//# sourceMappingURL=index183.js.map
|
package/dist/index183.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index183.js","sources":["../../../node_modules/
|
|
1
|
+
{"version":3,"file":"index183.js","sources":["../../../node_modules/react-day-picker/dist/esm/helpers/endOfBroadcastWeek.js"],"sourcesContent":["import { getBroadcastWeeksInMonth } from \"./getBroadcastWeeksInMonth.js\";\nimport { startOfBroadcastWeek } from \"./startOfBroadcastWeek.js\";\n/**\n * Returns the end date of the week in the broadcast calendar.\n *\n * The broadcast week ends on the last day of the last broadcast week for the\n * given date.\n *\n * @since 9.4.0\n * @param date The date for which to calculate the end of the broadcast week.\n * @param dateLib The date library to use for date manipulation.\n * @returns The end date of the broadcast week.\n */\nexport function endOfBroadcastWeek(date, dateLib) {\n const startDate = startOfBroadcastWeek(date, dateLib);\n const numberOfWeeks = getBroadcastWeeksInMonth(date, dateLib);\n const endDate = dateLib.addDays(startDate, numberOfWeeks * 7 - 1);\n return endDate;\n}\n"],"names":["endOfBroadcastWeek","date","dateLib","startDate","startOfBroadcastWeek","numberOfWeeks","getBroadcastWeeksInMonth"],"mappings":";;AAaO,SAASA,EAAmBC,GAAMC,GAAS;AAC9C,QAAMC,IAAYC,EAAqBH,GAAMC,CAAO,GAC9CG,IAAgBC,EAAyBL,GAAMC,CAAO;AAE5D,SADgBA,EAAQ,QAAQC,GAAWE,IAAgB,IAAI,CAAC;AAEpE;","x_google_ignoreList":[0]}
|
package/dist/index184.js
CHANGED
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
return r(
|
|
1
|
+
function n(s, e) {
|
|
2
|
+
const t = e.startOfMonth(s), r = t.getDay();
|
|
3
|
+
return r === 1 ? t : r === 0 ? e.addDays(t, -6) : e.addDays(t, -1 * (r - 1));
|
|
4
4
|
}
|
|
5
5
|
export {
|
|
6
|
-
|
|
7
|
-
o as default
|
|
6
|
+
n as startOfBroadcastWeek
|
|
8
7
|
};
|
|
9
8
|
//# sourceMappingURL=index184.js.map
|
package/dist/index184.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index184.js","sources":["../../../node_modules/
|
|
1
|
+
{"version":3,"file":"index184.js","sources":["../../../node_modules/react-day-picker/dist/esm/helpers/startOfBroadcastWeek.js"],"sourcesContent":["/**\n * Returns the start date of the week in the broadcast calendar.\n *\n * The broadcast week starts on Monday. If the first day of the month is not a\n * Monday, this function calculates the previous Monday as the start of the\n * broadcast week.\n *\n * @since 9.4.0\n * @param date The date for which to calculate the start of the broadcast week.\n * @param dateLib The date library to use for date manipulation.\n * @returns The start date of the broadcast week.\n */\nexport function startOfBroadcastWeek(date, dateLib) {\n const firstOfMonth = dateLib.startOfMonth(date);\n const dayOfWeek = firstOfMonth.getDay();\n if (dayOfWeek === 1) {\n return firstOfMonth;\n }\n else if (dayOfWeek === 0) {\n return dateLib.addDays(firstOfMonth, -1 * 6);\n }\n else {\n return dateLib.addDays(firstOfMonth, -1 * (dayOfWeek - 1));\n }\n}\n"],"names":["startOfBroadcastWeek","date","dateLib","firstOfMonth","dayOfWeek"],"mappings":"AAYO,SAASA,EAAqBC,GAAMC,GAAS;AAChD,QAAMC,IAAeD,EAAQ,aAAaD,CAAI,GACxCG,IAAYD,EAAa,OAAM;AACrC,SAAIC,MAAc,IACPD,IAEFC,MAAc,IACZF,EAAQ,QAAQC,GAAc,EAAM,IAGpCD,EAAQ,QAAQC,GAAc,MAAMC,IAAY,EAAE;AAEjE;","x_google_ignoreList":[0]}
|
package/dist/index185.js
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
import { constructFrom as a } from "./index279.js";
|
|
2
|
+
import { toDate as i } from "./index280.js";
|
|
3
|
+
function s(e, r, o) {
|
|
4
|
+
const t = i(e, o?.in);
|
|
5
|
+
return isNaN(r) ? a(e, NaN) : (r && t.setDate(t.getDate() + r), t);
|
|
4
6
|
}
|
|
5
7
|
export {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
+
s as addDays,
|
|
9
|
+
s as default
|
|
8
10
|
};
|
|
9
11
|
//# sourceMappingURL=index185.js.map
|
package/dist/index185.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index185.js","sources":["../../../node_modules/date-fns/
|
|
1
|
+
{"version":3,"file":"index185.js","sources":["../../../node_modules/date-fns/addDays.js"],"sourcesContent":["import { constructFrom } from \"./constructFrom.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link addDays} function options.\n */\n\n/**\n * @name addDays\n * @category Day Helpers\n * @summary Add the specified number of days to the given date.\n *\n * @description\n * Add the specified number of days to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param amount - The amount of days to be added.\n * @param options - An object with options\n *\n * @returns The new date with the days added\n *\n * @example\n * // Add 10 days to 1 September 2014:\n * const result = addDays(new Date(2014, 8, 1), 10)\n * //=> Thu Sep 11 2014 00:00:00\n */\nexport function addDays(date, amount, options) {\n const _date = toDate(date, options?.in);\n if (isNaN(amount)) return constructFrom(options?.in || date, NaN);\n\n // If 0 days, no-op to avoid changing times in the hour before end of DST\n if (!amount) return _date;\n\n _date.setDate(_date.getDate() + amount);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default addDays;\n"],"names":["addDays","date","amount","options","_date","toDate","constructFrom"],"mappings":";;AA6BO,SAASA,EAAQC,GAAMC,GAAQC,GAAS;AAC7C,QAAMC,IAAQC,EAAOJ,GAAME,GAAS,EAAE;AACtC,SAAI,MAAMD,CAAM,IAAUI,EAA6BL,GAAM,GAAG,KAG3DC,KAELE,EAAM,QAAQA,EAAM,QAAO,IAAKF,CAAM,GAC/BE;AACT;","x_google_ignoreList":[0]}
|
package/dist/index186.js
CHANGED
|
@@ -1,17 +1,21 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
return
|
|
1
|
+
import { constructFrom as s } from "./index279.js";
|
|
2
|
+
import { toDate as f } from "./index280.js";
|
|
3
|
+
function u(n, o, i) {
|
|
4
|
+
const t = f(n, i?.in);
|
|
5
|
+
if (isNaN(o)) return s(n, NaN);
|
|
6
|
+
if (!o)
|
|
7
|
+
return t;
|
|
8
|
+
const r = t.getDate(), e = s(n, t.getTime());
|
|
9
|
+
e.setMonth(t.getMonth() + o + 1, 0);
|
|
10
|
+
const a = e.getDate();
|
|
11
|
+
return r >= a ? e : (t.setFullYear(
|
|
12
|
+
e.getFullYear(),
|
|
13
|
+
e.getMonth(),
|
|
14
|
+
r
|
|
15
|
+
), t);
|
|
12
16
|
}
|
|
13
17
|
export {
|
|
14
|
-
|
|
15
|
-
|
|
18
|
+
u as addMonths,
|
|
19
|
+
u as default
|
|
16
20
|
};
|
|
17
21
|
//# sourceMappingURL=index186.js.map
|
package/dist/index186.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index186.js","sources":["../../../node_modules/date-fns/
|
|
1
|
+
{"version":3,"file":"index186.js","sources":["../../../node_modules/date-fns/addMonths.js"],"sourcesContent":["import { constructFrom } from \"./constructFrom.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link addMonths} function options.\n */\n\n/**\n * @name addMonths\n * @category Month Helpers\n * @summary Add the specified number of months to the given date.\n *\n * @description\n * Add the specified number of months to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param amount - The amount of months to be added.\n * @param options - The options object\n *\n * @returns The new date with the months added\n *\n * @example\n * // Add 5 months to 1 September 2014:\n * const result = addMonths(new Date(2014, 8, 1), 5)\n * //=> Sun Feb 01 2015 00:00:00\n *\n * // Add one month to 30 January 2023:\n * const result = addMonths(new Date(2023, 0, 30), 1)\n * //=> Tue Feb 28 2023 00:00:00\n */\nexport function addMonths(date, amount, options) {\n const _date = toDate(date, options?.in);\n if (isNaN(amount)) return constructFrom(options?.in || date, NaN);\n if (!amount) {\n // If 0 months, no-op to avoid changing times in the hour before end of DST\n return _date;\n }\n const dayOfMonth = _date.getDate();\n\n // The JS Date object supports date math by accepting out-of-bounds values for\n // month, day, etc. For example, new Date(2020, 0, 0) returns 31 Dec 2019 and\n // new Date(2020, 13, 1) returns 1 Feb 2021. This is *almost* the behavior we\n // want except that dates will wrap around the end of a month, meaning that\n // new Date(2020, 13, 31) will return 3 Mar 2021 not 28 Feb 2021 as desired. So\n // we'll default to the end of the desired month by adding 1 to the desired\n // month and using a date of 0 to back up one day to the end of the desired\n // month.\n const endOfDesiredMonth = constructFrom(options?.in || date, _date.getTime());\n endOfDesiredMonth.setMonth(_date.getMonth() + amount + 1, 0);\n const daysInMonth = endOfDesiredMonth.getDate();\n if (dayOfMonth >= daysInMonth) {\n // If we're already at the end of the month, then this is the correct date\n // and we're done.\n return endOfDesiredMonth;\n } else {\n // Otherwise, we now know that setting the original day-of-month value won't\n // cause an overflow, so set the desired day-of-month. Note that we can't\n // just set the date of `endOfDesiredMonth` because that object may have had\n // its time changed in the unusual case where where a DST transition was on\n // the last day of the month and its local time was in the hour skipped or\n // repeated next to a DST transition. So we use `date` instead which is\n // guaranteed to still have the original time.\n _date.setFullYear(\n endOfDesiredMonth.getFullYear(),\n endOfDesiredMonth.getMonth(),\n dayOfMonth,\n );\n return _date;\n }\n}\n\n// Fallback for modularized imports:\nexport default addMonths;\n"],"names":["addMonths","date","amount","options","_date","toDate","constructFrom","dayOfMonth","endOfDesiredMonth","daysInMonth"],"mappings":";;AAiCO,SAASA,EAAUC,GAAMC,GAAQC,GAAS;AAC/C,QAAMC,IAAQC,EAAOJ,GAAME,GAAS,EAAE;AACtC,MAAI,MAAMD,CAAM,EAAG,QAAOI,EAA6BL,GAAM,GAAG;AAChE,MAAI,CAACC;AAEH,WAAOE;AAET,QAAMG,IAAaH,EAAM,QAAO,GAU1BI,IAAoBF,EAA6BL,GAAMG,EAAM,QAAO,CAAE;AAC5E,EAAAI,EAAkB,SAASJ,EAAM,SAAQ,IAAKF,IAAS,GAAG,CAAC;AAC3D,QAAMO,IAAcD,EAAkB,QAAO;AAC7C,SAAID,KAAcE,IAGTD,KASPJ,EAAM;AAAA,IACJI,EAAkB,YAAW;AAAA,IAC7BA,EAAkB,SAAQ;AAAA,IAC1BD;AAAA,EACN,GACWH;AAEX;","x_google_ignoreList":[0]}
|
package/dist/index187.js
CHANGED
|
@@ -1,14 +1,9 @@
|
|
|
1
|
-
import {
|
|
2
|
-
function
|
|
3
|
-
|
|
4
|
-
a?.in,
|
|
5
|
-
n,
|
|
6
|
-
r
|
|
7
|
-
), o = e.getFullYear() - t.getFullYear(), f = e.getMonth() - t.getMonth();
|
|
8
|
-
return o * 12 + f;
|
|
1
|
+
import { addDays as r } from "./index185.js";
|
|
2
|
+
function o(a, d, e) {
|
|
3
|
+
return r(a, d * 7, e);
|
|
9
4
|
}
|
|
10
5
|
export {
|
|
11
|
-
|
|
12
|
-
|
|
6
|
+
o as addWeeks,
|
|
7
|
+
o as default
|
|
13
8
|
};
|
|
14
9
|
//# sourceMappingURL=index187.js.map
|
package/dist/index187.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index187.js","sources":["../../../node_modules/date-fns/
|
|
1
|
+
{"version":3,"file":"index187.js","sources":["../../../node_modules/date-fns/addWeeks.js"],"sourcesContent":["import { addDays } from \"./addDays.js\";\n\n/**\n * The {@link addWeeks} function options.\n */\n\n/**\n * @name addWeeks\n * @category Week Helpers\n * @summary Add the specified number of weeks to the given date.\n *\n * @description\n * Add the specified number of weeks to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param amount - The amount of weeks to be added.\n * @param options - An object with options\n *\n * @returns The new date with the weeks added\n *\n * @example\n * // Add 4 weeks to 1 September 2014:\n * const result = addWeeks(new Date(2014, 8, 1), 4)\n * //=> Mon Sep 29 2014 00:00:00\n */\nexport function addWeeks(date, amount, options) {\n return addDays(date, amount * 7, options);\n}\n\n// Fallback for modularized imports:\nexport default addWeeks;\n"],"names":["addWeeks","date","amount","options","addDays"],"mappings":";AA4BO,SAASA,EAASC,GAAMC,GAAQC,GAAS;AAC9C,SAAOC,EAAQH,GAAMC,IAAS,GAAGC,CAAO;AAC1C;","x_google_ignoreList":[0]}
|
package/dist/index188.js
CHANGED
|
@@ -1,18 +1,9 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
const { start: e, end: r } = l(a?.in, s);
|
|
5
|
-
let n = +e > +r;
|
|
6
|
-
const c = n ? +e : +r, t = n ? r : e;
|
|
7
|
-
t.setHours(0, 0, 0, 0), t.setDate(1);
|
|
8
|
-
let i = 1;
|
|
9
|
-
const o = [];
|
|
10
|
-
for (; +t <= c; )
|
|
11
|
-
o.push(m(e, t)), t.setMonth(t.getMonth() + i);
|
|
12
|
-
return n ? o.reverse() : o;
|
|
1
|
+
import { addMonths as d } from "./index186.js";
|
|
2
|
+
function e(r, t, a) {
|
|
3
|
+
return d(r, t * 12, a);
|
|
13
4
|
}
|
|
14
5
|
export {
|
|
15
|
-
|
|
16
|
-
|
|
6
|
+
e as addYears,
|
|
7
|
+
e as default
|
|
17
8
|
};
|
|
18
9
|
//# sourceMappingURL=index188.js.map
|