@rpcbase/ui 0.164.0 → 0.166.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/index10.js +1 -1
- package/dist/index100.js +9 -24
- package/dist/index100.js.map +1 -1
- package/dist/index101.js +42 -6
- package/dist/index101.js.map +1 -1
- package/dist/index102.js +4 -4
- package/dist/index102.js.map +1 -1
- package/dist/index103.js +52 -7
- package/dist/index103.js.map +1 -1
- package/dist/index104.js +4 -5
- package/dist/index104.js.map +1 -1
- package/dist/index105.js +3 -3
- package/dist/index105.js.map +1 -1
- package/dist/index106.js +15 -5
- package/dist/index106.js.map +1 -1
- package/dist/index107.js +5 -4
- package/dist/index107.js.map +1 -1
- package/dist/index108.js +6 -7
- package/dist/index108.js.map +1 -1
- package/dist/index109.js +16 -5
- package/dist/index109.js.map +1 -1
- package/dist/index11.js +6 -15
- package/dist/index11.js.map +1 -1
- package/dist/index110.js +3 -3
- package/dist/index110.js.map +1 -1
- package/dist/index111.js +2 -2
- package/dist/index111.js.map +1 -1
- package/dist/index112.js +5 -6
- package/dist/index112.js.map +1 -1
- package/dist/index113.js +5 -145
- package/dist/index113.js.map +1 -1
- package/dist/index114.js +4 -39
- package/dist/index114.js.map +1 -1
- package/dist/index115.js +4 -4
- package/dist/index115.js.map +1 -1
- package/dist/index116.js +6 -7
- package/dist/index116.js.map +1 -1
- package/dist/index117.js +24 -13
- package/dist/index117.js.map +1 -1
- package/dist/index118.js +6 -13
- package/dist/index118.js.map +1 -1
- package/dist/index119.js +4 -7
- package/dist/index119.js.map +1 -1
- package/dist/index12.js +1 -1
- package/dist/index120.js +6 -31
- package/dist/index120.js.map +1 -1
- package/dist/index121.js +5 -10
- package/dist/index121.js.map +1 -1
- package/dist/index122.js +4 -10
- package/dist/index122.js.map +1 -1
- package/dist/index123.js +5 -8
- package/dist/index123.js.map +1 -1
- package/dist/index124.js +4 -13
- package/dist/index124.js.map +1 -1
- package/dist/index125.js +8 -101
- package/dist/index125.js.map +1 -1
- package/dist/index126.js +6 -20
- package/dist/index126.js.map +1 -1
- package/dist/index127.js +4 -53
- package/dist/index127.js.map +1 -1
- package/dist/index128.js +4 -72
- package/dist/index128.js.map +1 -1
- package/dist/index129.js +6 -9
- package/dist/index129.js.map +1 -1
- package/dist/index13.js +2 -2
- package/dist/index130.js +145 -20
- package/dist/index130.js.map +1 -1
- package/dist/index131.js +38 -15
- package/dist/index131.js.map +1 -1
- package/dist/index132.js +4 -23
- package/dist/index132.js.map +1 -1
- package/dist/index133.js +7 -6
- package/dist/index133.js.map +1 -1
- package/dist/index134.js +13 -5
- package/dist/index134.js.map +1 -1
- package/dist/index135.js +13 -23
- package/dist/index135.js.map +1 -1
- package/dist/index136.js +8 -35
- package/dist/index136.js.map +1 -1
- package/dist/index137.js +32 -16
- package/dist/index137.js.map +1 -1
- package/dist/index138.js +10 -6
- package/dist/index138.js.map +1 -1
- package/dist/index139.js +10 -4
- package/dist/index139.js.map +1 -1
- package/dist/index14.js +4 -4
- package/dist/index140.js +8 -4
- package/dist/index140.js.map +1 -1
- package/dist/index141.js +13 -4
- package/dist/index141.js.map +1 -1
- package/dist/index142.js +101 -4
- package/dist/index142.js.map +1 -1
- package/dist/index143.js +20 -4
- package/dist/index143.js.map +1 -1
- package/dist/index144.js +53 -6
- package/dist/index144.js.map +1 -1
- package/dist/index145.js +73 -24
- package/dist/index145.js.map +1 -1
- package/dist/index146.js +9 -7
- package/dist/index146.js.map +1 -1
- package/dist/index147.js +20 -6
- package/dist/index147.js.map +1 -1
- package/dist/index148.js +16 -5
- package/dist/index148.js.map +1 -1
- package/dist/index149.js +23 -3
- package/dist/index149.js.map +1 -1
- package/dist/index15.js +1 -1
- package/dist/index150.js +6 -3
- package/dist/index150.js.map +1 -1
- package/dist/index151.js +5 -4
- package/dist/index151.js.map +1 -1
- package/dist/index152.js +23 -3
- package/dist/index152.js.map +1 -1
- package/dist/index153.js +35 -5
- package/dist/index153.js.map +1 -1
- package/dist/index154.js +16 -4
- package/dist/index154.js.map +1 -1
- package/dist/index155.js +6 -3
- package/dist/index155.js.map +1 -1
- package/dist/index156.js +4 -3
- package/dist/index156.js.map +1 -1
- package/dist/index157.js +4 -3
- package/dist/index157.js.map +1 -1
- package/dist/index158.js +4 -33
- package/dist/index158.js.map +1 -1
- package/dist/index159.js +4 -249
- package/dist/index159.js.map +1 -1
- package/dist/index16.js +1 -1
- package/dist/index160.js +3 -114
- package/dist/index160.js.map +1 -1
- package/dist/index161.js +6 -219
- package/dist/index161.js.map +1 -1
- package/dist/index162.js +24 -67
- package/dist/index162.js.map +1 -1
- package/dist/index163.js +7 -20
- package/dist/index163.js.map +1 -1
- package/dist/index164.js +6 -209
- package/dist/index164.js.map +1 -1
- package/dist/index165.js +5 -319
- package/dist/index165.js.map +1 -1
- package/dist/index166.js +3 -130
- package/dist/index166.js.map +1 -1
- package/dist/index167.js +3 -20
- package/dist/index167.js.map +1 -1
- package/dist/index168.js +4 -75
- package/dist/index168.js.map +1 -1
- package/dist/index169.js +3 -18
- package/dist/index169.js.map +1 -1
- package/dist/index17.js +1 -1
- package/dist/index170.js +4 -101
- package/dist/index170.js.map +1 -1
- package/dist/index171.js +4 -5
- package/dist/index171.js.map +1 -1
- package/dist/index172.js +3 -14
- package/dist/index172.js.map +1 -1
- package/dist/index173.js +4 -2
- package/dist/index173.js.map +1 -1
- package/dist/index174.js +24 -7
- package/dist/index174.js.map +1 -1
- package/dist/index175.js +29 -327
- package/dist/index175.js.map +1 -1
- package/dist/index176.js +5 -50
- package/dist/index176.js.map +1 -1
- package/dist/index177.js +62 -41
- package/dist/index177.js.map +1 -1
- package/dist/index178.js +176 -42
- package/dist/index178.js.map +1 -1
- package/dist/index179.js +41 -200
- package/dist/index179.js.map +1 -1
- package/dist/index18.js +3 -12
- package/dist/index18.js.map +1 -1
- package/dist/index180.js +14 -22
- package/dist/index180.js.map +1 -1
- package/dist/index181.js +153 -23
- package/dist/index181.js.map +1 -1
- package/dist/index182.js +27 -396
- package/dist/index182.js.map +1 -1
- package/dist/index183.js +9 -3
- package/dist/index183.js.map +1 -1
- package/dist/index184.js +47 -5
- package/dist/index184.js.map +1 -1
- package/dist/index185.js +10 -67
- package/dist/index185.js.map +1 -1
- package/dist/index186.js +45 -2
- package/dist/index186.js.map +1 -1
- package/dist/index187.js +86 -354
- package/dist/index187.js.map +1 -1
- package/dist/index188.js +75 -250
- package/dist/index188.js.map +1 -1
- package/dist/index189.js +92 -47
- package/dist/index189.js.map +1 -1
- package/dist/index19.js +7 -7
- package/dist/index190.js +46 -40
- package/dist/index190.js.map +1 -1
- package/dist/index191.js +10 -168
- package/dist/index191.js.map +1 -1
- package/dist/index192.js +26 -98
- package/dist/index192.js.map +1 -1
- package/dist/index193.js +8 -24
- package/dist/index193.js.map +1 -1
- package/dist/index194.js +117 -8
- package/dist/index194.js.map +1 -1
- package/dist/index195.js +17 -4
- package/dist/index195.js.map +1 -1
- package/dist/index196.js +15 -5
- package/dist/index196.js.map +1 -1
- package/dist/index197.js +3 -4
- package/dist/index197.js.map +1 -1
- package/dist/index198.js +34 -464
- package/dist/index198.js.map +1 -1
- package/dist/index199.js +19 -184
- package/dist/index199.js.map +1 -1
- package/dist/index20.js +2 -2
- package/dist/index200.js +9 -107
- package/dist/index200.js.map +1 -1
- package/dist/index201.js +8 -262
- package/dist/index201.js.map +1 -1
- package/dist/index202.js +19 -9
- package/dist/index202.js.map +1 -1
- package/dist/index203.js +27 -41
- package/dist/index203.js.map +1 -1
- package/dist/index204.js +16 -4
- package/dist/index204.js.map +1 -1
- package/dist/index205.js +59 -2
- package/dist/index205.js.map +1 -1
- package/dist/index206.js +8 -67
- package/dist/index206.js.map +1 -1
- package/dist/index207.js +66 -84
- package/dist/index207.js.map +1 -1
- package/dist/index208.js +18 -45
- package/dist/index208.js.map +1 -1
- package/dist/index209.js +16 -7
- package/dist/index209.js.map +1 -1
- package/dist/index21.js +1 -1
- package/dist/index210.js +5 -4
- package/dist/index210.js.map +1 -1
- package/dist/index211.js +4 -50
- package/dist/index211.js.map +1 -1
- package/dist/index212.js +6 -67
- package/dist/index212.js.map +1 -1
- package/dist/index213.js +4 -180
- package/dist/index213.js.map +1 -1
- package/dist/index214.js +7 -46
- package/dist/index214.js.map +1 -1
- package/dist/index215.js +17 -58
- package/dist/index215.js.map +1 -1
- package/dist/index216.js +5 -8
- package/dist/index216.js.map +1 -1
- package/dist/index217.js +5 -66
- package/dist/index217.js.map +1 -1
- package/dist/index218.js +13 -19
- package/dist/index218.js.map +1 -1
- package/dist/index219.js +10 -16
- package/dist/index219.js.map +1 -1
- package/dist/index22.js +1 -1
- package/dist/index220.js +14 -5
- package/dist/index220.js.map +1 -1
- package/dist/index221.js +14 -5
- package/dist/index221.js.map +1 -1
- package/dist/index222.js +5 -6
- package/dist/index222.js.map +1 -1
- package/dist/index223.js +6 -4
- package/dist/index223.js.map +1 -1
- package/dist/index224.js +7 -7
- package/dist/index224.js.map +1 -1
- package/dist/index225.js +6 -17
- package/dist/index225.js.map +1 -1
- package/dist/index226.js +9 -5
- package/dist/index226.js.map +1 -1
- package/dist/index227.js +5 -5
- package/dist/index227.js.map +1 -1
- package/dist/index228.js +5 -13
- package/dist/index228.js.map +1 -1
- package/dist/index229.js +9 -10
- package/dist/index229.js.map +1 -1
- package/dist/index23.js +2 -2
- package/dist/index230.js +5 -14
- package/dist/index230.js.map +1 -1
- package/dist/index231.js +4 -13
- package/dist/index231.js.map +1 -1
- package/dist/index232.js +4 -5
- package/dist/index232.js.map +1 -1
- package/dist/index233.js +10 -5
- package/dist/index233.js.map +1 -1
- package/dist/index234.js +10 -7
- package/dist/index234.js.map +1 -1
- package/dist/index235.js +10 -6
- package/dist/index235.js.map +1 -1
- package/dist/index236.js +11 -9
- package/dist/index236.js.map +1 -1
- package/dist/index237.js +11 -5
- package/dist/index237.js.map +1 -1
- package/dist/index238.js +10 -5
- package/dist/index238.js.map +1 -1
- package/dist/index239.js +7 -9
- package/dist/index239.js.map +1 -1
- package/dist/index24.js +1 -1
- package/dist/index240.js +6 -5
- package/dist/index240.js.map +1 -1
- package/dist/index241.js +4 -4
- package/dist/index241.js.map +1 -1
- package/dist/index242.js +6 -4
- package/dist/index242.js.map +1 -1
- package/dist/index243.js +7 -11
- package/dist/index243.js.map +1 -1
- package/dist/index244.js +6 -10
- package/dist/index244.js.map +1 -1
- package/dist/index245.js +55 -10
- package/dist/index245.js.map +1 -1
- package/dist/index246.js +23 -11
- package/dist/index246.js.map +1 -1
- package/dist/index247.js +16 -11
- package/dist/index247.js.map +1 -1
- package/dist/index248.js +7 -10
- package/dist/index248.js.map +1 -1
- package/dist/index249.js +10 -7
- package/dist/index249.js.map +1 -1
- package/dist/index250.js +10 -6
- package/dist/index250.js.map +1 -1
- package/dist/index251.js +21 -5
- package/dist/index251.js.map +1 -1
- package/dist/index252.js +10 -6
- package/dist/index252.js.map +1 -1
- package/dist/index253.js +9 -7
- package/dist/index253.js.map +1 -1
- package/dist/index254.js +9 -6
- package/dist/index254.js.map +1 -1
- package/dist/index255.js +4 -55
- package/dist/index255.js.map +1 -1
- package/dist/index256.js +5 -23
- package/dist/index256.js.map +1 -1
- package/dist/index257.js +15 -15
- package/dist/index257.js.map +1 -1
- package/dist/index258.js +9 -7
- package/dist/index258.js.map +1 -1
- package/dist/index259.js +18 -10
- package/dist/index259.js.map +1 -1
- package/dist/index260.js +15 -10
- package/dist/index260.js.map +1 -1
- package/dist/index261.js +12 -21
- package/dist/index261.js.map +1 -1
- package/dist/index262.js +29 -10
- package/dist/index262.js.map +1 -1
- package/dist/index263.js +12 -9
- package/dist/index263.js.map +1 -1
- package/dist/index264.js +25 -9
- package/dist/index264.js.map +1 -1
- package/dist/index265.js +5 -4
- package/dist/index265.js.map +1 -1
- package/dist/index266.js +5 -6
- package/dist/index266.js.map +1 -1
- package/dist/index267.js +3 -17
- package/dist/index267.js.map +1 -1
- package/dist/index268.js +23 -9
- package/dist/index268.js.map +1 -1
- package/dist/index269.js +112 -18
- package/dist/index269.js.map +1 -1
- package/dist/index27.js +37 -3
- package/dist/index27.js.map +1 -1
- package/dist/index270.js +15 -15
- package/dist/index270.js.map +1 -1
- package/dist/index271.js +522 -10
- package/dist/index271.js.map +1 -1
- package/dist/index272.js +126 -28
- package/dist/index272.js.map +1 -1
- package/dist/index273.js +132 -11
- package/dist/index273.js.map +1 -1
- package/dist/index274.js +20 -25
- package/dist/index274.js.map +1 -1
- package/dist/index275.js +4 -5
- package/dist/index275.js.map +1 -1
- package/dist/index276.js +18 -64
- package/dist/index276.js.map +1 -1
- package/dist/index277.js +12 -48
- package/dist/index277.js.map +1 -1
- package/dist/index278.js +62 -33
- package/dist/index278.js.map +1 -1
- package/dist/index279.js +9 -101
- package/dist/index279.js.map +1 -1
- package/dist/index28.js +3 -125
- package/dist/index28.js.map +1 -1
- package/dist/index280.js +11 -95
- package/dist/index280.js.map +1 -1
- package/dist/index281.js +65 -99
- package/dist/index281.js.map +1 -1
- package/dist/index282.js +62 -22
- package/dist/index282.js.map +1 -1
- package/dist/index283.js +6 -29
- package/dist/index283.js.map +1 -1
- package/dist/index284.js +6 -5
- package/dist/index284.js.map +1 -1
- package/dist/index285.js +4 -2
- package/dist/index285.js.map +1 -1
- package/dist/index286.js +16 -2
- package/dist/index286.js.map +1 -1
- package/dist/index287.js +8 -13
- package/dist/index287.js.map +1 -1
- package/dist/index288.js +5 -154
- package/dist/index288.js.map +1 -1
- package/dist/index289.js +4 -30
- package/dist/index289.js.map +1 -1
- package/dist/index29.js +124 -47
- package/dist/index29.js.map +1 -1
- package/dist/index290.js +545 -9
- package/dist/index290.js.map +1 -1
- package/dist/index291.js +44 -45
- package/dist/index291.js.map +1 -1
- package/dist/index292.js +16 -10
- package/dist/index292.js.map +1 -1
- package/dist/index293.js +6 -44
- package/dist/index293.js.map +1 -1
- package/dist/index294.js +8 -95
- package/dist/index294.js.map +1 -1
- package/dist/index295.js +7 -86
- package/dist/index295.js.map +1 -1
- package/dist/index296.js +8 -105
- package/dist/index296.js.map +1 -1
- package/dist/index297.js +12 -52
- package/dist/index297.js.map +1 -1
- package/dist/index298.js +9 -11
- package/dist/index298.js.map +1 -1
- package/dist/index299.js +13 -37
- package/dist/index299.js.map +1 -1
- package/dist/index30.js +230 -218
- package/dist/index30.js.map +1 -1
- package/dist/index300.js +3 -8
- package/dist/index300.js.map +1 -1
- package/dist/index301.js +20 -114
- package/dist/index301.js.map +1 -1
- package/dist/index302.js +4 -17
- package/dist/index302.js.map +1 -1
- package/dist/index303.js +55 -15
- package/dist/index303.js.map +1 -1
- package/dist/index304.js +68 -4
- package/dist/index304.js.map +1 -1
- package/dist/index305.js +31 -37
- package/dist/index305.js.map +1 -1
- package/dist/index306.js +9 -21
- package/dist/index306.js.map +1 -1
- package/dist/index307.js +153 -10
- package/dist/index307.js.map +1 -1
- package/dist/index308.js +107 -8
- package/dist/index308.js.map +1 -1
- package/dist/index309.js +21 -18
- package/dist/index309.js.map +1 -1
- package/dist/index31.js +49 -42
- package/dist/index31.js.map +1 -1
- package/dist/index310.js +11 -27
- package/dist/index310.js.map +1 -1
- package/dist/index311.js +27 -16
- package/dist/index311.js.map +1 -1
- package/dist/index312.js +5 -5
- package/dist/index312.js.map +1 -1
- package/dist/index313.js +16 -19
- package/dist/index313.js.map +1 -1
- package/dist/index314.js +28 -12
- package/dist/index314.js.map +1 -1
- package/dist/index315.js +13 -5
- package/dist/index315.js.map +1 -1
- package/dist/index316.js +7 -3
- package/dist/index316.js.map +1 -1
- package/dist/index32.js +2638 -38
- package/dist/index32.js.map +1 -1
- package/dist/index33.js +390 -25
- package/dist/index33.js.map +1 -1
- package/dist/index34.js +230 -43
- package/dist/index34.js.map +1 -1
- package/dist/index35.js +20 -30
- package/dist/index35.js.map +1 -1
- package/dist/index36.js +137 -23
- package/dist/index36.js.map +1 -1
- package/dist/index37.js +187 -23
- package/dist/index37.js.map +1 -1
- package/dist/index38.js +75 -127
- package/dist/index38.js.map +1 -1
- package/dist/index39.js +87 -228
- package/dist/index39.js.map +1 -1
- package/dist/index40.js +6 -51
- package/dist/index40.js.map +1 -1
- package/dist/index41.js +804 -2601
- package/dist/index41.js.map +1 -1
- package/dist/index42.js +63 -391
- package/dist/index42.js.map +1 -1
- package/dist/index43.js +7 -232
- package/dist/index43.js.map +1 -1
- package/dist/index44.js +2 -22
- package/dist/index44.js.map +1 -1
- package/dist/index45.js +21 -139
- package/dist/index45.js.map +1 -1
- package/dist/index46.js +230 -183
- package/dist/index46.js.map +1 -1
- package/dist/index47.js +202 -74
- package/dist/index47.js.map +1 -1
- package/dist/index48.js +3 -90
- package/dist/index48.js.map +1 -1
- package/dist/index49.js +6 -5
- package/dist/index49.js.map +1 -1
- package/dist/index5.js +1 -1
- package/dist/index50.js +41 -837
- package/dist/index50.js.map +1 -1
- package/dist/index51.js +26 -65
- package/dist/index51.js.map +1 -1
- package/dist/index52.js +48 -34
- package/dist/index52.js.map +1 -1
- package/dist/index53.js +7 -7
- package/dist/index53.js.map +1 -1
- package/dist/index54.js +15 -2
- package/dist/index54.js.map +1 -1
- package/dist/index55.js +132 -22
- package/dist/index55.js.map +1 -1
- package/dist/index56.js +10 -233
- package/dist/index56.js.map +1 -1
- package/dist/index57.js +203 -191
- package/dist/index57.js.map +1 -1
- package/dist/index58.js +13 -7
- package/dist/index58.js.map +1 -1
- package/dist/index59.js +2 -2
- package/dist/index60.js +44 -24
- package/dist/index60.js.map +1 -1
- package/dist/index62.js +49 -11
- package/dist/index62.js.map +1 -1
- package/dist/index63.js +4 -4
- package/dist/index63.js.map +1 -1
- package/dist/index64.js +5 -47
- package/dist/index64.js.map +1 -1
- package/dist/index65.js +27 -50
- package/dist/index65.js.map +1 -1
- package/dist/index66.js +50 -8
- package/dist/index66.js.map +1 -1
- package/dist/index67.js +8 -14
- package/dist/index67.js.map +1 -1
- package/dist/index68.js +2 -134
- package/dist/index68.js.map +1 -1
- package/dist/index69.js +2 -11
- package/dist/index69.js.map +1 -1
- package/dist/index70.js +11 -216
- package/dist/index70.js.map +1 -1
- package/dist/index71.js +54 -13
- package/dist/index71.js.map +1 -1
- package/dist/index72.js +5 -46
- package/dist/index72.js.map +1 -1
- package/dist/index73.js +7 -49
- package/dist/index73.js.map +1 -1
- package/dist/index74.js +6 -4
- package/dist/index74.js.map +1 -1
- package/dist/index75.js +46 -5
- package/dist/index75.js.map +1 -1
- package/dist/index76.js +205 -27
- package/dist/index76.js.map +1 -1
- package/dist/index77.js +22 -50
- package/dist/index77.js.map +1 -1
- package/dist/index78.js +25 -9
- package/dist/index78.js.map +1 -1
- package/dist/index79.js +400 -2
- package/dist/index79.js.map +1 -1
- package/dist/index8.js +1 -1
- package/dist/index80.js +47 -2
- package/dist/index80.js.map +1 -1
- package/dist/index81.js +604 -52
- package/dist/index81.js.map +1 -1
- package/dist/index82.js +5 -5
- package/dist/index82.js.map +1 -1
- package/dist/index83.js +68 -7
- package/dist/index83.js.map +1 -1
- package/dist/index84.js +2 -6
- package/dist/index84.js.map +1 -1
- package/dist/index85.js +352 -594
- package/dist/index85.js.map +1 -1
- package/dist/index86.js +262 -52
- package/dist/index86.js.map +1 -1
- package/dist/index87.js +60 -4
- package/dist/index87.js.map +1 -1
- package/dist/index88.js +46 -4
- package/dist/index88.js.map +1 -1
- package/dist/index89.js +169 -15
- package/dist/index89.js.map +1 -1
- package/dist/index9.js +1 -1
- package/dist/index90.js +109 -5
- package/dist/index90.js.map +1 -1
- package/dist/index91.js +24 -7
- package/dist/index91.js.map +1 -1
- package/dist/index92.js +8 -17
- package/dist/index92.js.map +1 -1
- package/dist/index93.js +4 -4
- package/dist/index93.js.map +1 -1
- package/dist/index94.js +5 -4
- package/dist/index94.js.map +1 -1
- package/dist/index95.js +4 -5
- package/dist/index95.js.map +1 -1
- package/dist/index96.js +466 -5
- package/dist/index96.js.map +1 -1
- package/dist/index97.js +185 -4
- package/dist/index97.js.map +1 -1
- package/dist/index98.js +107 -4
- package/dist/index98.js.map +1 -1
- package/dist/index99.js +262 -6
- package/dist/index99.js.map +1 -1
- package/package.json +1 -1
- package/dist/index317.js +0 -27
- package/dist/index317.js.map +0 -1
- package/dist/index318.js +0 -116
- package/dist/index318.js.map +0 -1
- package/dist/index319.js +0 -19
- package/dist/index319.js.map +0 -1
- package/dist/index320.js +0 -528
- package/dist/index320.js.map +0 -1
- package/dist/index321.js +0 -131
- package/dist/index321.js.map +0 -1
- package/dist/index322.js +0 -137
- package/dist/index322.js.map +0 -1
- package/dist/index323.js +0 -24
- package/dist/index323.js.map +0 -1
- package/dist/index324.js +0 -9
- package/dist/index324.js.map +0 -1
- package/dist/index325.js +0 -9
- package/dist/index325.js.map +0 -1
- package/dist/index326.js +0 -7
- package/dist/index326.js.map +0 -1
- package/dist/index327.js +0 -19
- package/dist/index327.js.map +0 -1
- package/dist/index328.js +0 -12
- package/dist/index328.js.map +0 -1
- package/dist/index329.js +0 -9
- package/dist/index329.js.map +0 -1
- package/dist/index330.js +0 -8
- package/dist/index330.js.map +0 -1
- package/dist/index331.js +0 -549
- package/dist/index331.js.map +0 -1
- package/dist/index332.js +0 -50
- package/dist/index332.js.map +0 -1
- package/dist/index333.js +0 -21
- package/dist/index333.js.map +0 -1
- package/dist/index334.js +0 -10
- package/dist/index334.js.map +0 -1
- package/dist/index335.js +0 -12
- package/dist/index335.js.map +0 -1
- package/dist/index336.js +0 -11
- package/dist/index336.js.map +0 -1
- package/dist/index337.js +0 -12
- package/dist/index337.js.map +0 -1
- package/dist/index338.js +0 -16
- package/dist/index338.js.map +0 -1
- package/dist/index339.js +0 -13
- package/dist/index339.js.map +0 -1
- package/dist/index340.js +0 -17
- package/dist/index340.js.map +0 -1
- package/dist/index341.js +0 -68
- package/dist/index341.js.map +0 -1
- package/dist/index342.js +0 -72
- package/dist/index342.js.map +0 -1
- package/dist/index343.js +0 -12
- package/dist/index343.js.map +0 -1
- package/dist/index344.js +0 -17
- package/dist/index344.js.map +0 -1
- package/dist/index345.js +0 -69
- package/dist/index345.js.map +0 -1
- package/dist/index346.js +0 -71
- package/dist/index346.js.map +0 -1
- package/dist/index347.js +0 -34
- package/dist/index347.js.map +0 -1
- package/dist/index348.js +0 -12
- package/dist/index348.js.map +0 -1
- package/dist/index349.js +0 -156
- package/dist/index349.js.map +0 -1
- package/dist/index350.js +0 -111
- package/dist/index350.js.map +0 -1
- package/dist/index351.js +0 -8
- package/dist/index351.js.map +0 -1
- package/dist/index352.js +0 -59
- package/dist/index352.js.map +0 -1
- package/dist/index353.js +0 -7
- package/dist/index353.js.map +0 -1
- package/dist/index354.js +0 -26
- package/dist/index354.js.map +0 -1
- package/dist/index355.js +0 -19
- package/dist/index355.js.map +0 -1
- package/dist/index356.js +0 -32
- package/dist/index356.js.map +0 -1
- package/dist/index357.js +0 -16
- package/dist/index357.js.map +0 -1
- package/dist/index358.js +0 -10
- package/dist/index358.js.map +0 -1
- package/dist/index359.js +0 -26
- package/dist/index359.js.map +0 -1
- package/dist/index360.js +0 -16
- package/dist/index360.js.map +0 -1
- package/dist/index361.js +0 -31
- package/dist/index361.js.map +0 -1
- package/dist/index362.js +0 -8
- package/dist/index362.js.map +0 -1
package/dist/index179.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index179.js","sources":["../../../node_modules/@floating-ui/react-dom/dist/floating-ui.react-dom.mjs"],"sourcesContent":["import { computePosition, arrow as arrow$2, autoPlacement as autoPlacement$1, flip as flip$1, hide as hide$1, inline as inline$1, limitShift as limitShift$1, offset as offset$1, shift as shift$1, size as size$1 } from '@floating-ui/dom';\nexport { autoUpdate, computePosition, detectOverflow, getOverflowAncestors, platform } from '@floating-ui/dom';\nimport * as React from 'react';\nimport { useLayoutEffect } from 'react';\nimport * as ReactDOM from 'react-dom';\n\nvar isClient = typeof document !== 'undefined';\n\nvar noop = function noop() {};\nvar index = isClient ? useLayoutEffect : noop;\n\n// Fork of `fast-deep-equal` that only does the comparisons we need and compares\n// functions\nfunction deepEqual(a, b) {\n if (a === b) {\n return true;\n }\n if (typeof a !== typeof b) {\n return false;\n }\n if (typeof a === 'function' && a.toString() === b.toString()) {\n return true;\n }\n let length;\n let i;\n let keys;\n if (a && b && typeof a === 'object') {\n if (Array.isArray(a)) {\n length = a.length;\n if (length !== b.length) return false;\n for (i = length; i-- !== 0;) {\n if (!deepEqual(a[i], b[i])) {\n return false;\n }\n }\n return true;\n }\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) {\n return false;\n }\n for (i = length; i-- !== 0;) {\n if (!{}.hasOwnProperty.call(b, keys[i])) {\n return false;\n }\n }\n for (i = length; i-- !== 0;) {\n const key = keys[i];\n if (key === '_owner' && a.$$typeof) {\n continue;\n }\n if (!deepEqual(a[key], b[key])) {\n return false;\n }\n }\n return true;\n }\n return a !== a && b !== b;\n}\n\nfunction getDPR(element) {\n if (typeof window === 'undefined') {\n return 1;\n }\n const win = element.ownerDocument.defaultView || window;\n return win.devicePixelRatio || 1;\n}\n\nfunction roundByDPR(element, value) {\n const dpr = getDPR(element);\n return Math.round(value * dpr) / dpr;\n}\n\nfunction useLatestRef(value) {\n const ref = React.useRef(value);\n index(() => {\n ref.current = value;\n });\n return ref;\n}\n\n/**\n * Provides data to position a floating element.\n * @see https://floating-ui.com/docs/useFloating\n */\nfunction useFloating(options) {\n if (options === void 0) {\n options = {};\n }\n const {\n placement = 'bottom',\n strategy = 'absolute',\n middleware = [],\n platform,\n elements: {\n reference: externalReference,\n floating: externalFloating\n } = {},\n transform = true,\n whileElementsMounted,\n open\n } = options;\n const [data, setData] = React.useState({\n x: 0,\n y: 0,\n strategy,\n placement,\n middlewareData: {},\n isPositioned: false\n });\n const [latestMiddleware, setLatestMiddleware] = React.useState(middleware);\n if (!deepEqual(latestMiddleware, middleware)) {\n setLatestMiddleware(middleware);\n }\n const [_reference, _setReference] = React.useState(null);\n const [_floating, _setFloating] = React.useState(null);\n const setReference = React.useCallback(node => {\n if (node !== referenceRef.current) {\n referenceRef.current = node;\n _setReference(node);\n }\n }, []);\n const setFloating = React.useCallback(node => {\n if (node !== floatingRef.current) {\n floatingRef.current = node;\n _setFloating(node);\n }\n }, []);\n const referenceEl = externalReference || _reference;\n const floatingEl = externalFloating || _floating;\n const referenceRef = React.useRef(null);\n const floatingRef = React.useRef(null);\n const dataRef = React.useRef(data);\n const hasWhileElementsMounted = whileElementsMounted != null;\n const whileElementsMountedRef = useLatestRef(whileElementsMounted);\n const platformRef = useLatestRef(platform);\n const openRef = useLatestRef(open);\n const update = React.useCallback(() => {\n if (!referenceRef.current || !floatingRef.current) {\n return;\n }\n const config = {\n placement,\n strategy,\n middleware: latestMiddleware\n };\n if (platformRef.current) {\n config.platform = platformRef.current;\n }\n computePosition(referenceRef.current, floatingRef.current, config).then(data => {\n const fullData = {\n ...data,\n // The floating element's position may be recomputed while it's closed\n // but still mounted (such as when transitioning out). To ensure\n // `isPositioned` will be `false` initially on the next open, avoid\n // setting it to `true` when `open === false` (must be specified).\n isPositioned: openRef.current !== false\n };\n if (isMountedRef.current && !deepEqual(dataRef.current, fullData)) {\n dataRef.current = fullData;\n ReactDOM.flushSync(() => {\n setData(fullData);\n });\n }\n });\n }, [latestMiddleware, placement, strategy, platformRef, openRef]);\n index(() => {\n if (open === false && dataRef.current.isPositioned) {\n dataRef.current.isPositioned = false;\n setData(data => ({\n ...data,\n isPositioned: false\n }));\n }\n }, [open]);\n const isMountedRef = React.useRef(false);\n index(() => {\n isMountedRef.current = true;\n return () => {\n isMountedRef.current = false;\n };\n }, []);\n index(() => {\n if (referenceEl) referenceRef.current = referenceEl;\n if (floatingEl) floatingRef.current = floatingEl;\n if (referenceEl && floatingEl) {\n if (whileElementsMountedRef.current) {\n return whileElementsMountedRef.current(referenceEl, floatingEl, update);\n }\n update();\n }\n }, [referenceEl, floatingEl, update, whileElementsMountedRef, hasWhileElementsMounted]);\n const refs = React.useMemo(() => ({\n reference: referenceRef,\n floating: floatingRef,\n setReference,\n setFloating\n }), [setReference, setFloating]);\n const elements = React.useMemo(() => ({\n reference: referenceEl,\n floating: floatingEl\n }), [referenceEl, floatingEl]);\n const floatingStyles = React.useMemo(() => {\n const initialStyles = {\n position: strategy,\n left: 0,\n top: 0\n };\n if (!elements.floating) {\n return initialStyles;\n }\n const x = roundByDPR(elements.floating, data.x);\n const y = roundByDPR(elements.floating, data.y);\n if (transform) {\n return {\n ...initialStyles,\n transform: \"translate(\" + x + \"px, \" + y + \"px)\",\n ...(getDPR(elements.floating) >= 1.5 && {\n willChange: 'transform'\n })\n };\n }\n return {\n position: strategy,\n left: x,\n top: y\n };\n }, [strategy, transform, elements.floating, data.x, data.y]);\n return React.useMemo(() => ({\n ...data,\n update,\n refs,\n elements,\n floatingStyles\n }), [data, update, refs, elements, floatingStyles]);\n}\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * This wraps the core `arrow` middleware to allow React refs as the element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow$1 = options => {\n function isRef(value) {\n return {}.hasOwnProperty.call(value, 'current');\n }\n return {\n name: 'arrow',\n options,\n fn(state) {\n const {\n element,\n padding\n } = typeof options === 'function' ? options(state) : options;\n if (element && isRef(element)) {\n if (element.current != null) {\n return arrow$2({\n element: element.current,\n padding\n }).fn(state);\n }\n return {};\n }\n if (element) {\n return arrow$2({\n element,\n padding\n }).fn(state);\n }\n return {};\n }\n };\n};\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = (options, deps) => ({\n ...offset$1(options),\n options: [options, deps]\n});\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = (options, deps) => ({\n ...shift$1(options),\n options: [options, deps]\n});\n\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = (options, deps) => ({\n ...limitShift$1(options),\n options: [options, deps]\n});\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = (options, deps) => ({\n ...flip$1(options),\n options: [options, deps]\n});\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = (options, deps) => ({\n ...size$1(options),\n options: [options, deps]\n});\n\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = (options, deps) => ({\n ...autoPlacement$1(options),\n options: [options, deps]\n});\n\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = (options, deps) => ({\n ...hide$1(options),\n options: [options, deps]\n});\n\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = (options, deps) => ({\n ...inline$1(options),\n options: [options, deps]\n});\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * This wraps the core `arrow` middleware to allow React refs as the element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = (options, deps) => ({\n ...arrow$1(options),\n options: [options, deps]\n});\n\nexport { arrow, autoPlacement, flip, hide, inline, limitShift, offset, shift, size, useFloating };\n"],"names":["isClient","noop","index","useLayoutEffect","deepEqual","a","b","length","i","keys","key","getDPR","element","roundByDPR","value","dpr","useLatestRef","ref","React","useFloating","options","placement","strategy","middleware","platform","externalReference","externalFloating","transform","whileElementsMounted","open","data","setData","latestMiddleware","setLatestMiddleware","_reference","_setReference","_floating","_setFloating","setReference","node","referenceRef","setFloating","floatingRef","referenceEl","floatingEl","dataRef","hasWhileElementsMounted","whileElementsMountedRef","platformRef","openRef","update","config","computePosition","fullData","isMountedRef","ReactDOM","refs","elements","floatingStyles","initialStyles","x","y","arrow$1","isRef","state","padding","arrow$2","offset","deps","offset$1","shift","shift$1","limitShift","limitShift$1","flip","flip$1","size","size$1","hide","hide$1","arrow"],"mappings":";;;;;AAMA,IAAIA,IAAW,OAAO,WAAa,KAE/BC,KAAO,WAAgB;AAAC,GACxBC,IAAQF,IAAWG,IAAkBF;AAIzC,SAASG,EAAUC,GAAGC,GAAG;AACvB,MAAID,MAAMC;AACR,WAAO;AAET,MAAI,OAAOD,KAAM,OAAOC;AACtB,WAAO;AAET,MAAI,OAAOD,KAAM,cAAcA,EAAE,eAAeC,EAAE;AAChD,WAAO;AAET,MAAIC,GACAC,GACAC;AACJ,MAAIJ,KAAKC,KAAK,OAAOD,KAAM,UAAU;AACnC,QAAI,MAAM,QAAQA,CAAC,GAAG;AAEpB,UADAE,IAASF,EAAE,QACPE,MAAWD,EAAE,OAAQ,QAAO;AAChC,WAAKE,IAAID,GAAQC,QAAQ;AACvB,YAAI,CAACJ,EAAUC,EAAEG,CAAC,GAAGF,EAAEE,CAAC,CAAC;AACvB,iBAAO;AAGX,aAAO;AAAA,IACT;AAGA,QAFAC,IAAO,OAAO,KAAKJ,CAAC,GACpBE,IAASE,EAAK,QACVF,MAAW,OAAO,KAAKD,CAAC,EAAE;AAC5B,aAAO;AAET,SAAKE,IAAID,GAAQC,QAAQ;AACvB,UAAI,CAAC,CAAA,EAAG,eAAe,KAAKF,GAAGG,EAAKD,CAAC,CAAC;AACpC,eAAO;AAGX,SAAKA,IAAID,GAAQC,QAAQ,KAAI;AAC3B,YAAME,IAAMD,EAAKD,CAAC;AAClB,UAAI,EAAAE,MAAQ,YAAYL,EAAE,aAGtB,CAACD,EAAUC,EAAEK,CAAG,GAAGJ,EAAEI,CAAG,CAAC;AAC3B,eAAO;AAAA,IAEX;AACA,WAAO;AAAA,EACT;AACA,SAAOL,MAAMA,KAAKC,MAAMA;AAC1B;AAEA,SAASK,EAAOC,GAAS;AACvB,SAAI,OAAO,SAAW,MACb,KAEGA,EAAQ,cAAc,eAAe,QACtC,oBAAoB;AACjC;AAEA,SAASC,EAAWD,GAASE,GAAO;AAClC,QAAMC,IAAMJ,EAAOC,CAAO;AAC1B,SAAO,KAAK,MAAME,IAAQC,CAAG,IAAIA;AACnC;AAEA,SAASC,EAAaF,GAAO;AAC3B,QAAMG,IAAMC,EAAM,OAAOJ,CAAK;AAC9B,SAAAZ,EAAM,MAAM;AACV,IAAAe,EAAI,UAAUH;AAAA,EAChB,CAAC,GACMG;AACT;AAMA,SAASE,GAAYC,GAAS;AAC5B,EAAIA,MAAY,WACdA,IAAU,CAAA;AAEZ,QAAM;AAAA,IACJ,WAAAC,IAAY;AAAA,IACZ,UAAAC,IAAW;AAAA,IACX,YAAAC,IAAa,CAAA;AAAA,IACb,UAAAC;AAAA,IACA,UAAU;AAAA,MACR,WAAWC;AAAA,MACX,UAAUC;AAAA,IAChB,IAAQ,CAAA;AAAA,IACJ,WAAAC,IAAY;AAAA,IACZ,sBAAAC;AAAA,IACA,MAAAC;AAAA,EACJ,IAAMT,GACE,CAACU,GAAMC,CAAO,IAAIb,EAAM,SAAS;AAAA,IACrC,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAAI;AAAA,IACA,WAAAD;AAAA,IACA,gBAAgB,CAAA;AAAA,IAChB,cAAc;AAAA,EAClB,CAAG,GACK,CAACW,GAAkBC,CAAmB,IAAIf,EAAM,SAASK,CAAU;AACzE,EAAKnB,EAAU4B,GAAkBT,CAAU,KACzCU,EAAoBV,CAAU;AAEhC,QAAM,CAACW,GAAYC,CAAa,IAAIjB,EAAM,SAAS,IAAI,GACjD,CAACkB,GAAWC,CAAY,IAAInB,EAAM,SAAS,IAAI,GAC/CoB,IAAepB,EAAM,YAAY,CAAAqB,MAAQ;AAC7C,IAAIA,MAASC,EAAa,YACxBA,EAAa,UAAUD,GACvBJ,EAAcI,CAAI;AAAA,EAEtB,GAAG,CAAA,CAAE,GACCE,IAAcvB,EAAM,YAAY,CAAAqB,MAAQ;AAC5C,IAAIA,MAASG,EAAY,YACvBA,EAAY,UAAUH,GACtBF,EAAaE,CAAI;AAAA,EAErB,GAAG,CAAA,CAAE,GACCI,IAAclB,KAAqBS,GACnCU,IAAalB,KAAoBU,GACjCI,IAAetB,EAAM,OAAO,IAAI,GAChCwB,IAAcxB,EAAM,OAAO,IAAI,GAC/B2B,IAAU3B,EAAM,OAAOY,CAAI,GAC3BgB,IAA0BlB,KAAwB,MAClDmB,IAA0B/B,EAAaY,CAAoB,GAC3DoB,IAAchC,EAAaQ,CAAQ,GACnCyB,IAAUjC,EAAaa,CAAI,GAC3BqB,IAAShC,EAAM,YAAY,MAAM;AACrC,QAAI,CAACsB,EAAa,WAAW,CAACE,EAAY;AACxC;AAEF,UAAMS,IAAS;AAAA,MACb,WAAA9B;AAAA,MACA,UAAAC;AAAA,MACA,YAAYU;AAAA,IAClB;AACI,IAAIgB,EAAY,YACdG,EAAO,WAAWH,EAAY,UAEhCI,EAAgBZ,EAAa,SAASE,EAAY,SAASS,CAAM,EAAE,KAAK,CAAArB,MAAQ;AAC9E,YAAMuB,IAAW;AAAA,QACf,GAAGvB;AAAA;AAAA;AAAA;AAAA;AAAA,QAKH,cAAcmB,EAAQ,YAAY;AAAA,MAC1C;AACM,MAAIK,EAAa,WAAW,CAAClD,EAAUyC,EAAQ,SAASQ,CAAQ,MAC9DR,EAAQ,UAAUQ,GAClBE,EAAS,UAAU,MAAM;AACvB,QAAAxB,EAAQsB,CAAQ;AAAA,MAClB,CAAC;AAAA,IAEL,CAAC;AAAA,EACH,GAAG,CAACrB,GAAkBX,GAAWC,GAAU0B,GAAaC,CAAO,CAAC;AAChE,EAAA/C,EAAM,MAAM;AACV,IAAI2B,MAAS,MAASgB,EAAQ,QAAQ,iBACpCA,EAAQ,QAAQ,eAAe,IAC/Bd,EAAQ,CAAAD,OAAS;AAAA,MACf,GAAGA;AAAA,MACH,cAAc;AAAA,IACtB,EAAQ;AAAA,EAEN,GAAG,CAACD,CAAI,CAAC;AACT,QAAMyB,IAAepC,EAAM,OAAO,EAAK;AACvC,EAAAhB,EAAM,OACJoD,EAAa,UAAU,IAChB,MAAM;AACX,IAAAA,EAAa,UAAU;AAAA,EACzB,IACC,CAAA,CAAE,GACLpD,EAAM,MAAM;AAGV,QAFIyC,MAAaH,EAAa,UAAUG,IACpCC,MAAYF,EAAY,UAAUE,IAClCD,KAAeC,GAAY;AAC7B,UAAIG,EAAwB;AAC1B,eAAOA,EAAwB,QAAQJ,GAAaC,GAAYM,CAAM;AAExE,MAAAA,EAAM;AAAA,IACR;AAAA,EACF,GAAG,CAACP,GAAaC,GAAYM,GAAQH,GAAyBD,CAAuB,CAAC;AACtF,QAAMU,IAAOtC,EAAM,QAAQ,OAAO;AAAA,IAChC,WAAWsB;AAAA,IACX,UAAUE;AAAA,IACV,cAAAJ;AAAA,IACA,aAAAG;AAAA,EACJ,IAAM,CAACH,GAAcG,CAAW,CAAC,GACzBgB,IAAWvC,EAAM,QAAQ,OAAO;AAAA,IACpC,WAAWyB;AAAA,IACX,UAAUC;AAAA,EACd,IAAM,CAACD,GAAaC,CAAU,CAAC,GACvBc,IAAiBxC,EAAM,QAAQ,MAAM;AACzC,UAAMyC,IAAgB;AAAA,MACpB,UAAUrC;AAAA,MACV,MAAM;AAAA,MACN,KAAK;AAAA,IACX;AACI,QAAI,CAACmC,EAAS;AACZ,aAAOE;AAET,UAAMC,IAAI/C,EAAW4C,EAAS,UAAU3B,EAAK,CAAC,GACxC+B,IAAIhD,EAAW4C,EAAS,UAAU3B,EAAK,CAAC;AAC9C,WAAIH,IACK;AAAA,MACL,GAAGgC;AAAA,MACH,WAAW,eAAeC,IAAI,SAASC,IAAI;AAAA,MAC3C,GAAIlD,EAAO8C,EAAS,QAAQ,KAAK,OAAO;AAAA,QACtC,YAAY;AAAA,MACtB;AAAA,IACA,IAEW;AAAA,MACL,UAAUnC;AAAA,MACV,MAAMsC;AAAA,MACN,KAAKC;AAAA,IACX;AAAA,EACE,GAAG,CAACvC,GAAUK,GAAW8B,EAAS,UAAU3B,EAAK,GAAGA,EAAK,CAAC,CAAC;AAC3D,SAAOZ,EAAM,QAAQ,OAAO;AAAA,IAC1B,GAAGY;AAAA,IACH,QAAAoB;AAAA,IACA,MAAAM;AAAA,IACA,UAAAC;AAAA,IACA,gBAAAC;AAAA,EACJ,IAAM,CAAC5B,GAAMoB,GAAQM,GAAMC,GAAUC,CAAc,CAAC;AACpD;AAQA,MAAMI,KAAU,CAAA1C,MAAW;AACzB,WAAS2C,EAAMjD,GAAO;AACpB,WAAO,CAAA,EAAG,eAAe,KAAKA,GAAO,SAAS;AAAA,EAChD;AACA,SAAO;AAAA,IACL,MAAM;AAAA,IACN,SAAAM;AAAA,IACA,GAAG4C,GAAO;AACR,YAAM;AAAA,QACJ,SAAApD;AAAA,QACA,SAAAqD;AAAA,MACR,IAAU,OAAO7C,KAAY,aAAaA,EAAQ4C,CAAK,IAAI5C;AACrD,aAAIR,KAAWmD,EAAMnD,CAAO,IACtBA,EAAQ,WAAW,OACdsD,EAAQ;AAAA,QACb,SAAStD,EAAQ;AAAA,QACjB,SAAAqD;AAAA,MACZ,CAAW,EAAE,GAAGD,CAAK,IAEN,CAAA,IAELpD,IACKsD,EAAQ;AAAA,QACb,SAAAtD;AAAA,QACA,SAAAqD;AAAA,MACV,CAAS,EAAE,GAAGD,CAAK,IAEN,CAAA;AAAA,IACT;AAAA,EACJ;AACA,GASMG,KAAS,CAAC/C,GAASgD,OAAU;AAAA,EACjC,GAAGC,EAASjD,CAAO;AAAA,EACnB,SAAS,CAACA,GAASgD,CAAI;AACzB,IAOME,KAAQ,CAAClD,GAASgD,OAAU;AAAA,EAChC,GAAGG,EAAQnD,CAAO;AAAA,EAClB,SAAS,CAACA,GAASgD,CAAI;AACzB,IAKMI,KAAa,CAACpD,GAASgD,OAAU;AAAA,EACrC,GAAGK,EAAarD,CAAO;AAAA,EACvB,SAAS,CAACA,GAASgD,CAAI;AACzB,IAQMM,KAAO,CAACtD,GAASgD,OAAU;AAAA,EAC/B,GAAGO,EAAOvD,CAAO;AAAA,EACjB,SAAS,CAACA,GAASgD,CAAI;AACzB,IAQMQ,KAAO,CAACxD,GAASgD,OAAU;AAAA,EAC/B,GAAGS,EAAOzD,CAAO;AAAA,EACjB,SAAS,CAACA,GAASgD,CAAI;AACzB,IAkBMU,KAAO,CAAC1D,GAASgD,OAAU;AAAA,EAC/B,GAAGW,EAAO3D,CAAO;AAAA,EACjB,SAAS,CAACA,GAASgD,CAAI;AACzB,IAkBMY,KAAQ,CAAC5D,GAASgD,OAAU;AAAA,EAChC,GAAGN,GAAQ1C,CAAO;AAAA,EAClB,SAAS,CAACA,GAASgD,CAAI;AACzB;","x_google_ignoreList":[0]}
|
|
1
|
+
{"version":3,"file":"index179.js","sources":["../../../node_modules/@radix-ui/react-menu/node_modules/@radix-ui/react-slot/dist/index.mjs"],"sourcesContent":["// src/slot.tsx\nimport * as React from \"react\";\nimport { composeRefs } from \"@radix-ui/react-compose-refs\";\nimport { Fragment as Fragment2, jsx } from \"react/jsx-runtime\";\n// @__NO_SIDE_EFFECTS__\nfunction createSlot(ownerName) {\n const SlotClone = /* @__PURE__ */ createSlotClone(ownerName);\n const Slot2 = React.forwardRef((props, forwardedRef) => {\n const { children, ...slotProps } = props;\n const childrenArray = React.Children.toArray(children);\n const slottable = childrenArray.find(isSlottable);\n if (slottable) {\n const newElement = slottable.props.children;\n const newChildren = childrenArray.map((child) => {\n if (child === slottable) {\n if (React.Children.count(newElement) > 1) return React.Children.only(null);\n return React.isValidElement(newElement) ? newElement.props.children : null;\n } else {\n return child;\n }\n });\n return /* @__PURE__ */ jsx(SlotClone, { ...slotProps, ref: forwardedRef, children: React.isValidElement(newElement) ? React.cloneElement(newElement, void 0, newChildren) : null });\n }\n return /* @__PURE__ */ jsx(SlotClone, { ...slotProps, ref: forwardedRef, children });\n });\n Slot2.displayName = `${ownerName}.Slot`;\n return Slot2;\n}\nvar Slot = /* @__PURE__ */ createSlot(\"Slot\");\n// @__NO_SIDE_EFFECTS__\nfunction createSlotClone(ownerName) {\n const SlotClone = React.forwardRef((props, forwardedRef) => {\n const { children, ...slotProps } = props;\n if (React.isValidElement(children)) {\n const childrenRef = getElementRef(children);\n const props2 = mergeProps(slotProps, children.props);\n if (children.type !== React.Fragment) {\n props2.ref = forwardedRef ? composeRefs(forwardedRef, childrenRef) : childrenRef;\n }\n return React.cloneElement(children, props2);\n }\n return React.Children.count(children) > 1 ? React.Children.only(null) : null;\n });\n SlotClone.displayName = `${ownerName}.SlotClone`;\n return SlotClone;\n}\nvar SLOTTABLE_IDENTIFIER = Symbol(\"radix.slottable\");\n// @__NO_SIDE_EFFECTS__\nfunction createSlottable(ownerName) {\n const Slottable2 = ({ children }) => {\n return /* @__PURE__ */ jsx(Fragment2, { children });\n };\n Slottable2.displayName = `${ownerName}.Slottable`;\n Slottable2.__radixId = SLOTTABLE_IDENTIFIER;\n return Slottable2;\n}\nvar Slottable = /* @__PURE__ */ createSlottable(\"Slottable\");\nfunction isSlottable(child) {\n return React.isValidElement(child) && typeof child.type === \"function\" && \"__radixId\" in child.type && child.type.__radixId === SLOTTABLE_IDENTIFIER;\n}\nfunction mergeProps(slotProps, childProps) {\n const overrideProps = { ...childProps };\n for (const propName in childProps) {\n const slotPropValue = slotProps[propName];\n const childPropValue = childProps[propName];\n const isHandler = /^on[A-Z]/.test(propName);\n if (isHandler) {\n if (slotPropValue && childPropValue) {\n overrideProps[propName] = (...args) => {\n const result = childPropValue(...args);\n slotPropValue(...args);\n return result;\n };\n } else if (slotPropValue) {\n overrideProps[propName] = slotPropValue;\n }\n } else if (propName === \"style\") {\n overrideProps[propName] = { ...slotPropValue, ...childPropValue };\n } else if (propName === \"className\") {\n overrideProps[propName] = [slotPropValue, childPropValue].filter(Boolean).join(\" \");\n }\n }\n return { ...slotProps, ...overrideProps };\n}\nfunction getElementRef(element) {\n let getter = Object.getOwnPropertyDescriptor(element.props, \"ref\")?.get;\n let mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.ref;\n }\n getter = Object.getOwnPropertyDescriptor(element, \"ref\")?.get;\n mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.props.ref;\n }\n return element.props.ref || element.ref;\n}\nexport {\n Slot as Root,\n Slot,\n Slottable,\n createSlot,\n createSlottable\n};\n//# sourceMappingURL=index.mjs.map\n"],"names":["createSlot","ownerName","SlotClone","createSlotClone","Slot2","React","props","forwardedRef","children","slotProps","childrenArray","slottable","isSlottable","newElement","newChildren","child","jsx","childrenRef","getElementRef","props2","mergeProps","composeRefs","SLOTTABLE_IDENTIFIER","childProps","overrideProps","propName","slotPropValue","childPropValue","args","result","element","getter","mayWarn"],"mappings":"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","x_google_ignoreList":[0]}
|
package/dist/index18.js
CHANGED
|
@@ -1,18 +1,9 @@
|
|
|
1
|
-
import { j as a } from "./
|
|
1
|
+
import { j as a } from "./index28.js";
|
|
2
2
|
import { Check as ce, ChevronDown as re, ChevronUp as ue } from "lucide-react";
|
|
3
3
|
import * as n from "react";
|
|
4
|
-
import { DismissableLayerBranch as ae } from "./
|
|
4
|
+
import { DismissableLayerBranch as ae } from "./index29.js";
|
|
5
5
|
import { createPortal as fe } from "react-dom";
|
|
6
|
-
import "
|
|
7
|
-
import "./index30.js";
|
|
8
|
-
import "./index31.js";
|
|
9
|
-
import "./index32.js";
|
|
10
|
-
import "./index33.js";
|
|
11
|
-
import "./index34.js";
|
|
12
|
-
import "./index35.js";
|
|
13
|
-
import "./index36.js";
|
|
14
|
-
import de from "./index37.js";
|
|
15
|
-
import "./index38.js";
|
|
6
|
+
import { IMaskInput as de } from "react-imask";
|
|
16
7
|
import { Select as me, SelectTrigger as pe, SelectValue as he, SelectContent as be, SelectItem as ve } from "./index20.js";
|
|
17
8
|
import { useIsTouchDevice as ge } from "./index4.js";
|
|
18
9
|
import { cn as q } from "./index2.js";
|
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\"\n\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from \"@/components/Select\"\nimport { useIsTouchDevice } from \"@/helpers/useIsTouchDevice\"\nimport { cn } from \"@/lib/utils\"\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.scrollTop = 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 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 const useIsomorphicLayoutEffect = typeof window === \"undefined\" ? React.useEffect : React.useLayoutEffect\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 return\n }\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 return\n }\n\n onChange(next)\n },\n [onChange, 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 useIsomorphicLayoutEffect(() => {\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 setDraftValueRef={setTriggerDraftValueRef}\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 setDraftValueRef: React.MutableRefObject<((value: string) => void) | null>\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 setDraftValueRef,\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 setDraftValueRef.current = (nextValue) => {\n setDraft(nextValue)\n }\n return () => {\n setDraftValueRef.current = null\n }\n }, [setDraftValueRef])\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 return\n }\n\n if (resolved.selectableValue) {\n event.preventDefault()\n setHighlightedValue(resolved.selectableValue)\n setDraft(resolved.selectableValue)\n if (value !== resolved.selectableValue) {\n onCommit(resolved.selectableValue)\n }\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 if (value !== closestOption.value) {\n onCommit(closestOption.value)\n }\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":["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","highlightedValueRef","keyboardNavigationActiveRef","highlightedValue","setHighlightedValue","containerRef","desktopPopoverRef","desktopContentRef","desktopPopoverPosition","setDesktopPopoverPosition","uncontrolledOpen","setUncontrolledOpen","open","setOpen","useIsomorphicLayoutEffect","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","setDraftValueRef","isEditingRef","pointerDownOnInputRef","inputWasFocusedOnPointerDownRef","ignoreNextMaskCommitValueRef","draft","setDraft","nextValue","moveSelection","base","baseIndex","nextIndex","nextOption","triggerClassName","IMaskInput","appended","dynamicMasked","digits","hourPrefix","accepted","nextText","completed","resolved","closestOption","shouldSelectAll","element"],"mappings":";;;;;;;;;;;;;;;;;;AAkBA,SAASA,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,YAAYkB,GAErBrB,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,IAAsB7C,EAAM,OAAsB,IAAI,GACtD8C,IAA8B9C,EAAM,OAAO,EAAK,GAChD,CAAC+C,GAAkBC,CAAmB,IAAIhD,EAAM,SAAwB,IAAI,GAC5EiD,IAAejD,EAAM,OAA8B,IAAI,GACvDkD,IAAoBlD,EAAM,OAA8B,IAAI,GAC5DmD,IAAoBnD,EAAM,OAA8B,IAAI,GAC5D,CAACoD,GAAwBC,CAAyB,IAAIrD,EAAM,SAAS,OAAO;AAAA,IAChF,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,EAAA,EACP,GAEI,CAACsD,GAAkBC,CAAmB,IAAIvD,EAAM,SAAS,EAAK,GAC9DwD,IAAOpB,KAAYkB,GACnBG,IAAUpB,KAAgBkB,GAE1BG,KAA4B,OAAO,SAAW,MAAc1D,EAAM,YAAYA,EAAM,iBAEpF2D,IAAyB3D,EAAM,YAAY,CAAC4D,MAAwB;AACxE,IAAAf,EAAoB,UAAUe,GAC9BZ,EAAoBY,CAAI;AAAA,EAC1B,GAAG,CAAA,CAAE,GAECC,KAAyB7D,EAAM,YAAY,MAAM;AACrD,IAAA8C,EAA4B,UAAU;AAAA,EACxC,GAAG,CAAA,CAAE;AAEL,EAAA9C,EAAM,UAAU,MAAM;AACpB,QAAI,CAACwD,EAAM;AAEX,UAAMM,IAAgBlF,EAAQ,KAAK,CAACG,MAAWA,EAAO,UAAUX,CAAK;AACrE,QAAI0F,KAAiB9E,EAAmB8E,CAAa,GAAG;AACtD,MAAAH,EAAuBG,EAAc,KAAK;AAC1C;AAAA,IACF;AAEA,UAAMC,IAAenF,EAAQ,KAAK,CAACG,MAAWC,EAAmBD,CAAM,CAAC;AACxE,IAAA4E,EAAuBI,GAAc,SAAS,IAAI;AAAA,EACpD,GAAG,CAACP,GAAM5E,GAAS+E,GAAwBvF,CAAK,CAAC;AAEjD,QAAM4F,KAAchE,EAAM;AAAA,IACxB,CAAC4D,MAAwB;AACvB,UAAIA,MAAS,MAAM;AACjB,YAAI5B,GAAe;AACjB,UAAAA,EAAc,IAAI;AAClB;AAAA,QACF;AAEA,QAAAD,EAAS,IAAI;AACb;AAAA,MACF;AAEA,YAAMkC,IAAiBrF,EAAQ,KAAK,CAACG,MAAWA,EAAO,UAAU6E,CAAI;AACrE,UAAK5E,EAAmBiF,CAAc,GAItC;AAAA,YAAIjC,GAAe;AACjB,UAAAA,EAAc4B,CAAI;AAClB;AAAA,QACF;AAEA,QAAA7B,EAAS6B,CAAI;AAAA;AAAA,IACf;AAAA,IACA,CAAC7B,GAAUC,GAAepD,CAAO;AAAA,EAAA,GAG7BsF,IAAclE,EAAM;AAAA,IACxB,CAAC4D,MAAwB;AACvB,UAAIA,MAAS,MAAM;AACjB,QAAI5B,KACFA,EAAc,IAAI,GAEpBD,EAAS,IAAI;AACb;AAAA,MACF;AAEA,YAAMkC,IAAiBrF,EAAQ,KAAK,CAACG,MAAWA,EAAO,UAAU6E,CAAI;AACrE,MAAK5E,EAAmBiF,CAAc,MAIlCjC,KACFA,EAAc4B,CAAI,GAGpB7B,EAAS6B,CAAI;AAAA,IACf;AAAA,IACA,CAAC7B,GAAUC,GAAepD,CAAO;AAAA,EAAA;AAGnC,EAAAoB,EAAM,UAAU,MAAM;AACpB,QAAI,CAACwD,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,GAElBzD,EAAM,UAAU,MAAM;AACpB,QAAI,CAACwD;AACH;AAGF,UAAMe,IAAUrB,EAAkB;AAClC,QAAI,CAACqB;AACH;AAGF,UAAMC,IAAc,CAACJ,MAAsB;AACzC,YAAM/D,IAAW8C,EAAkB;AACnC,UAAI,CAAC9C;AACH;AAGF,YAAMoE,IAASL,EAAM;AACrB,UAAIK,MAAW;AACb;AAGF,YAAMC,IAAe,KAAK,IAAI,GAAGrE,EAAS,eAAeA,EAAS,YAAY,GACxEsE,IAAQtE,EAAS,aAAa,GAC9BuE,IAAWvE,EAAS,aAAaqE,GAEjCL,IAASD,EAAM;AAGrB,UAF4BC,aAAkB,QAAQhE,EAAS,SAASgE,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,GAAGrE,EAAS,YAAYoE,CAAM,CAAC;AACrF,MAAApE,EAAS,YAAYwE;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,GAETxD,EAAM,UAAU,MAAM;AAUpB,QATI,CAACwD,KAGDpB,MAAa,UAAa,CAACC,KAG3B,OAAO,SAAW,OAGlB,EAAE,0BAA0B;AAC9B;AAGF,UAAMyC,IAAUnC,EAAgB;AAChC,QAAI,EAAEmC,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,CAAC3C,GAAcmB,GAAMpB,GAAUqB,CAAO,CAAC;AAE1C,QAAM0B,IAA+BnF,EAAM,YAAY,MAAM;AAC3D,QAAI,OAAO,SAAW,IAAa;AAEnC,UAAM8E,IAAUnC,EAAgB,SAC1B4B,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;AAEL,SAAA/B,GAA0B,MAAM;AAE9B,QADI,CAACF,KAAQ1D,KACT,OAAO,SAAW,IAAa;AAEnC,IAAAqF,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,CAACrF,GAAU0D,GAAM2B,CAA4B,CAAC,GAEjDnF,EAAM,UAAU,MAAM;AACpB,QAAI,CAACwD,EAAM;AAEX,UAAMnD,IAAW8C,EAAkB;AACnC,QAAI,CAAC9C,EAAU;AA4Cf,UAAM0F,IAAM,sBA1CA,MAAM;AAChB,YAAMC,IAAW3F,EAAS,cAAc,uCAA2C;AACnF,UAAI2F,aAAoB,aAAa;AAEnC,cAAMC,IAAYD,EAAS,YAAY,GACjCE,IAAeF,EAAS,YAAYA,EAAS,eAAe;AAElE,YAAIC,IAAY5F,EAAS,WAAW;AAClC,UAAAA,EAAS,YAAY,KAAK,IAAI,GAAG4F,CAAS;AAC1C;AAAA,QACF;AAEA,cAAME,KAAiB9F,EAAS,YAAYA,EAAS;AACrD,QAAI6F,IAAeC,OACjB9F,EAAS,YAAY,KAAK,IAAI,GAAG6F,IAAe7F,EAAS,YAAY;AAEvE;AAAA,MACF;AAEA,YAAM+F,IAAM,MAAM,KAAK/F,EAAS,iBAAiB,iBAAmB,CAAC;AACrE,UAAI,CAAC+F,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,MAAA1D,EAAS,YAAYkG;AAAA,IACvB,CAEqC;AACrC,WAAO,MAAM,qBAAqBR,CAAG;AAAA,EACvC,GAAG,CAACvC,GAAM5E,CAAO,CAAC,GAElBoB,EAAM,UAAU,MAAM;AAGpB,QAFI,CAACwD,KACD,CAACT,KACD,CAACD,EAA4B,QAAS;AAE1C,UAAMzC,IAAW8C,EAAkB;AACnC,QAAI,CAAC9C,EAAU;AAEf,UAAMgE,IAAShE,EAAS,cAAc,+BAA+B0C,CAAgB,IAAI;AACzF,QAAI,EAAEsB,aAAkB,aAAc;AAEtC,UAAMmB,IAAU,GACVS,IAAY5B,EAAO,YAAYmB,GAC/BU,IAAe7B,EAAO,YAAYA,EAAO,eAAemB;AAE9D,QAAIS,IAAY5F,EAAS,WAAW;AAClC,MAAAA,EAAS,YAAY,KAAK,IAAI,GAAG4F,CAAS;AAC1C;AAAA,IACF;AAEA,UAAME,IAAiB9F,EAAS,YAAYA,EAAS;AACrD,IAAI6F,IAAeC,MACjB9F,EAAS,YAAY,KAAK,IAAI,GAAG6F,IAAe7F,EAAS,YAAY;AAAA,EAEzE,GAAG,CAAC0C,GAAkBS,CAAI,CAAC,GAGzB/B,gBAAAA,EAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAWC,EAAG,aAAa7B,CAAS;AAAA,MACpC,KAAKoD;AAAA,MAEL,UAAAuD,gBAAAA,EAAAA,KAAC,OAAA,EAAI,WAAU,YACb,UAAA;AAAA,QAAA/E,gBAAAA,EAAAA;AAAAA,UAACgF;AAAA,UAAA;AAAA,YACC,IAAI/D;AAAA,YACJ,aAAAT;AAAA,YACA,OAAA7D;AAAA,YACA,eAAe4F;AAAA,YACf,UAAUE;AAAA,YACV,SAAAtF;AAAA,YACA,UAAAkB;AAAA,YACA,UAAAqC;AAAA,YACA,MAAAqB;AAAA,YACA,SAAAC;AAAA,YACA,gBAAAvB;AAAA,YACA,eAAAI;AAAA,YACA,YAAAE;AAAA,YACA,qBAAAK;AAAA,YACA,qBAAqBc;AAAA,YACrB,wBAAAE;AAAA,YACA,UAAU,CAAC6C,MAAS;AAClB,cAAA/D,EAAgB,UAAU+D;AAAA,YAC5B;AAAA,YACA,kBAAkB9D;AAAA,UAAA;AAAA,QAAA;AAAA,QAGnBY,KAAQ,MAAM;AACb,gBAAMe,0BACHoC,IAAA,EACC,UAAAH,gBAAAA,EAAAA;AAAAA,YAAC;AAAA,YAAA;AAAA,cACC,KAAKtD;AAAA,cACL,eAAaX;AAAA,cACb,cAAW;AAAA,cACX,WAAWb;AAAA,gBACT;AAAA,gBACA;AAAA,cAAA;AAAA,cAEF,OAAO;AAAA,gBACL,MAAM0B,EAAuB;AAAA,gBAC7B,KAAKA,EAAuB;AAAA,gBAC5B,OAAOA,EAAuB;AAAA,cAAA;AAAA,cAGhC,UAAA;AAAA,gBAAA3B,gBAAAA,EAAAA;AAAAA,kBAAChC;AAAA,kBAAA;AAAA,oBACC,WAAU;AAAA,oBACV,aAAa0D;AAAA,kBAAA;AAAA,gBAAA;AAAA,gBAGf1B,gBAAAA,EAAAA;AAAAA,kBAAC;AAAA,kBAAA;AAAA,oBACC,KAAK0B;AAAA,oBACL,MAAK;AAAA,oBACL,WAAU;AAAA,oBAET,UAAAvE,EAAQ,IAAI,CAACG,MAAW;AACvB,4BAAM6H,IAAY7H,EAAO,UAAUX;AAEnC,6BACEoI,gBAAAA,EAAAA;AAAAA,wBAAC;AAAA,wBAAA;AAAA,0BAEC,MAAK;AAAA,0BACL,iBAAeI;AAAA,0BACf,cAAY7H,EAAO;AAAA,0BACnB,cAAY6H,IAAY,YAAY;AAAA,0BACpC,iBAAe7H,EAAO,WAAW,KAAK;AAAA,0BACtC,WAAW2C;AAAA,4BACT;AAAA,4BACA3C,EAAO,YAAY;AAAA,4BACnBgE,MAAqBhE,EAAO,SAAS;AAAA,0BAAA;AAAA,0BAEvC,aAAa,CAACqF,MAAU;AACtB,4BAAAA,EAAM,eAAA;AAAA,0BACR;AAAA,0BACA,SAAS,MAAM;AACb,4BAAIrF,EAAO,aAEX6D,EAAwB,UAAU7D,EAAO,KAAK,GAC9C4E,EAAuB5E,EAAO,KAAK,GACnC4D,EAAgB,SAAS,MAAM,EAAE,eAAe,IAAM,GACtDuB,EAAYnF,EAAO,KAAK,GACxB0E,EAAQ,EAAK;AAAA,0BACf;AAAA,0BACA,gBAAgB,MAAM;AACpB,4BAAIX,EAA4B,YAChCA,EAA4B,UAAU,IACtCa,EAAuB5E,EAAO,KAAK;AAAA,0BACrC;AAAA,0BACA,eAAe,CAACqF,MAAU;AACxB,4BAAItB,EAA4B,WAAWsB,EAAM,cAAc,KAAKA,EAAM,cAAc,MAGxFtB,EAA4B,UAAU,IACtCa,EAAuB5E,EAAO,KAAK;AAAA,0BACrC;AAAA,0BAEA,UAAA;AAAA,4BAAA0C,gBAAAA,EAAAA,IAAC,QAAA,EAAK,WAAU,gEACb,UAAAmF,IAAYnF,gBAAAA,EAAAA,IAACoF,IAAA,EAAM,eAAW,IAAC,WAAU,UAAA,CAAU,IAAK,MAC3D;AAAA,4BAEAL,gBAAAA,EAAAA,KAAC,OAAA,EAAI,WAAU,iBACb,UAAA;AAAA,8BAAA/E,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,aAAa0D;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;AAEA1C,GAAgB,cAAc;AAI9B,SAASkF,GAAsB;AAAA,EAC7B,IAAAjF;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,MAAA0D;AAAA,EACA,cAAAnB;AAAA,EACA,eAAAC;AAAA,EACA,eAAAC;AAAA,EACA,YAAAC;AACF,GAAyB;AACvB,QAAM0B,IAAclE,EAAM;AAAA,IACxB,CAAC4D,MAAiB;AAChB,YAAMK,IAAiBrF,EAAQ,KAAK,CAACG,MAAWA,EAAO,UAAU6E,CAAI;AACrE,MAAK5E,EAAmBiF,CAAc,MAIlCjC,KACFA,EAAc4B,CAAI,GAEpB7B,EAAS6B,CAAI;AAAA,IACf;AAAA,IACA,CAAC7B,GAAUC,GAAepD,CAAO;AAAA,EAAA;AAGnC,SACE6C,gBAAAA,MAAC,SAAI,aAAU,sBAAqB,WAAWC,EAAG,aAAa7B,CAAS,GACtE,UAAA2G,gBAAAA,EAAAA;AAAAA,IAACQ;AAAA,IAAA;AAAA,MACC,UAAAlH;AAAA,MACA,MAAA0D;AAAA,MACA,cAAAnB;AAAA,MACA,OAAOjE,KAAS;AAAA,MAChB,eAAe,CAACwF,MAASM,EAAYN,CAAI;AAAA,MAEzC,UAAA;AAAA,QAAAnC,gBAAAA,EAAAA;AAAAA,UAACwF;AAAA,UAAA;AAAA,YACC,IAAAnF;AAAA,YACA,eAAaQ;AAAA,YACb,iBAAeE,IAAa,SAAS;AAAA,YACrC,WAAWd;AAAA,cACT;AAAA,cACA,CAACtD,KAAS;AAAA,cACVoF,KAAQ;AAAA,cACR;AAAA,cACAtB;AAAA,YAAA;AAAA,YAGF,UAAAT,gBAAAA,EAAAA,IAACyF,MAAY,aAAAjF,EAAA,CAA0B;AAAA,UAAA;AAAA,QAAA;AAAA,QAGzCR,gBAAAA,EAAAA;AAAAA,UAAC0F;AAAA,UAAA;AAAA,YACC,eAAa5E;AAAA,YACb,YAAY;AAAA,YACZ,WAAU;AAAA,YAET,UAAA3D,EAAQ,IAAI,CAACG,MACZyH,gBAAAA,EAAAA;AAAAA,cAACY;AAAA,cAAA;AAAA,gBAEC,OAAOrI,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,SAASsI,GAAgBC,GAA6B;AAG3D,SAFsBC,GAAA,IAGb9F,gBAAAA,MAACsF,IAAA,EAAuB,GAAGO,EAAA,CAAO,IAGpC7F,gBAAAA,MAACI,IAAA,EAAiB,GAAGyF,EAAA,CAAO;AACrC;AAEAD,GAAgB,cAAc;AAuB9B,SAASZ,GAA8B;AAAA,EACrC,IAAA3E;AAAA,EACA,aAAAG;AAAA,EACA,OAAA7D;AAAA,EACA,eAAA4D;AAAA,EACA,UAAAwF;AAAA,EACA,SAAA5I;AAAA,EACA,UAAAkB;AAAA,EACA,UAAAqC;AAAA,EACA,MAAAqB;AAAA,EACA,SAAAC;AAAA,EACA,gBAAAvB;AAAA,EACA,eAAAI;AAAA,EACA,YAAAE;AAAA,EACA,qBAAAK;AAAA,EACA,qBAAAG;AAAA,EACA,wBAAAa;AAAA,EACA,UAAA4D;AAAA,EACA,kBAAAC;AACF,GAAuC;AACrC,QAAMC,IAAe3H,EAAM,OAAO,EAAK,GACjC4H,IAAwB5H,EAAM,OAAO,EAAK,GAC1C6H,IAAkC7H,EAAM,OAAO,EAAK,GACpD8H,IAA+B9H,EAAM,OAAsB,IAAI,GAE/D,CAAC+H,GAAOC,CAAQ,IAAIhI,EAAM,SAAS,MAAO5B,KAAgB,EAAG;AAEnE,EAAA4B,EAAM,UAAU,OACd0H,EAAiB,UAAU,CAACO,MAAc;AACxC,IAAAD,EAASC,CAAS;AAAA,EACpB,GACO,MAAM;AACX,IAAAP,EAAiB,UAAU;AAAA,EAC7B,IACC,CAACA,CAAgB,CAAC;AAErB,QAAMQ,IAAgBlI,EAAM;AAAA,IAC1B,CAACN,MAAsB;AACrB,YAAMyI,IAAOtF,EAAoB,WAAWzE,KAAS;AAErD,UAAIgK,IAAYxJ,EAAQ,UAAU,CAACG,MAAWA,EAAO,UAAUoJ,CAAI;AACnE,MAAIC,MAAc,OAChBA,IAAY1I,MAAc,IAAI,KAAKd,EAAQ;AAG7C,eAASyJ,IAAYD,IAAY1I,GAAW2I,KAAa,KAAKA,IAAYzJ,EAAQ,QAAQyJ,KAAa3I,GAAW;AAChH,cAAM4I,IAAa1J,EAAQyJ,CAAS;AACpC,YAAKrJ,EAAmBsJ,CAAU,GAElC;AAAA,UAAAtF,EAAoBsF,EAAW,KAAK,GACpCR,EAA6B,UAAUQ,EAAW,OAClDN,EAASM,EAAW,KAAK,GACzBtG,EAAcsG,EAAW,KAAK;AAC9B;AAAA;AAAA,MACF;AAAA,IACF;AAAA,IACA,CAACzF,GAAqBb,GAAepD,GAASoE,GAAqB5E,CAAK;AAAA,EAAA;AAG1E,EAAA4B,EAAM,UAAU,MAAM;AACpB,IAAI2H,EAAa,WACjBK,EAAS5J,KAAgB,EAAE;AAAA,EAC7B,GAAG,CAACA,CAAK,CAAC;AAEV,QAAMmK,IAAmB7G;AAAA,IACvB;AAAA,IACA;AAAA,IACA,CAACqG,KAAS;AAAA,IACVvE,KAAQ;AAAA,IACR;AAAA,IACAtB;AAAA,EAAA;AAGF,SACEsE,gBAAAA,EAAAA,KAAC,OAAA,EAAI,WAAU,kBACb,UAAA;AAAA,IAAA/E,gBAAAA,EAAAA;AAAAA,MAAC+G;AAAA,MAAA;AAAA,QACC,IAAA1G;AAAA,QACA,eAAaQ;AAAA,QACb,iBAAeE,IAAa,SAAS;AAAA,QACrC,MAAK;AAAA,QACL,UAAA1C;AAAA,QACA,UAAAqC;AAAA,QACA,UAAAsF;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,IAAazK,EAAK,OAAOwK,EAAO,MAAM,GAAG,CAAC,CAAC,CAAC;AAElD,iBADwB/J,EAAQ,KAAK,CAACG,MAAWA,EAAO,MAAM,WAAW,GAAG6J,CAAU,GAAG,CAAC,IAC9DF,EAAc,cAAc,CAAC,IAElDA,EAAc,cAAc,CAAC;AAAA,QACtC;AAAA,QACA,aAAAzG;AAAA,QACA,OAAO8F;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,KAIvC1K,KACFoJ,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,IAAWrK,EAAmCmK,GAAUlK,CAAO;AACrE,cAAI,CAACoK;AACH;AAGF,cAAIA,EAAS,iBAAiB;AAI5B,gBAHAhG,EAAoBgG,EAAS,eAAe,GAC5ChB,EAASgB,EAAS,eAAe,GAE7B5K,MAAU4K,EAAS;AACrB;AAGF,YAAAxB,EAASwB,EAAS,eAAe;AACjC;AAAA,UACF;AAEA,gBAAM7J,IAAgBF,EAAoB+J,EAAS,MAAM;AACzD,cAAI7J,KAAiB;AACnB;AAGF,gBAAM8J,IAAgB/J,GAA4BC,GAAeP,CAAO;AACxE,UAAKqK,KAILjG,EAAoBiG,EAAc,KAAK;AAAA,QACzC;AAAA,QACA,eAAe,MAAM;AAEnB,UADArB,EAAsB,UAAU,IAC5B,CAAA9H,MACC0D,KACHC,EAAQ,EAAI;AAAA,QAEhB;AAAA,QACA,aAAa,CAACW,MAAU;AAGtB,UAFAwD,EAAsB,UAAU,IAChCC,EAAgC,UAAU,OAAO,WAAa,OAAe,SAAS,kBAAkBzD,EAAM,eAC1G,CAAAtE,MACC0D,KACHC,EAAQ,EAAI;AAAA,QAEhB;AAAA,QACA,SAAS,MAAM;AACb,UAAI3D,KACC0D,KACHC,EAAQ,EAAI;AAAA,QAEhB;AAAA,QACA,WAAW,CAACW,MAAU;AACpB,cAAI,CAAAtE,GAIJ;AAAA,gBAAIsE,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,IAAWrK,EAAmCoJ,GAAOnJ,CAAO;AAClE,kBAAI,CAACoK;AACH;AAGF,kBAAIA,EAAS,iBAAiB;AAC5B,gBAAA5E,EAAM,eAAA,GACNpB,EAAoBgG,EAAS,eAAe,GAC5ChB,EAASgB,EAAS,eAAe,GAC7B5K,MAAU4K,EAAS,mBACrBxB,EAASwB,EAAS,eAAe,GAEnCvF,EAAQ,EAAK;AACb;AAAA,cACF;AAEA,oBAAMtE,IAAgBF,EAAoB+J,EAAS,MAAM;AACzD,kBAAI7J,KAAiB;AACnB;AAGF,oBAAM8J,IAAgB/J,GAA4BC,GAAeP,CAAO;AACxE,kBAAI,CAACqK;AACH;AAGF,cAAA7E,EAAM,eAAA,GACNpB,EAAoBiG,EAAc,KAAK,GACvCjB,EAASiB,EAAc,KAAK,GACxB7K,MAAU6K,EAAc,SAC1BzB,EAASyB,EAAc,KAAK,GAE9BxF,EAAQ,EAAK;AACb;AAAA,YACF;AAAA;AAAA,QACF;AAAA,QACA,SAAS,CAACW,MAAU;AAClB,gBAAM8E,IAAkB,CAACtB,EAAsB,WAAW,CAACC,EAAgC;AAI3F,cAHAD,EAAsB,UAAU,IAChCC,EAAgC,UAAU,IAC1CF,EAAa,UAAU,IACnBuB,GAAiB;AACnB,kBAAMC,IAAU/E,EAAM;AACtB,kCAAsB,MAAM+E,EAAQ,QAAQ;AAAA,UAC9C;AAEA,UAAIrJ,KAIA0D,KAIJC,EAAQ,EAAI;AAAA,QACd;AAAA,QACA,QAAQ,MAAM;AACZ,UAAAkE,EAAa,UAAU;AAEvB,gBAAMpJ,IAAUwJ,EAAM,KAAA;AACtB,cAAI,CAACxJ,GAAS;AACZ,YAAAyJ,EAAS5J,KAAgB,EAAE;AAC3B;AAAA,UACF;AAEA,gBAAM4K,IAAWrK,EAAmCJ,GAASK,CAAO;AACpE,cAAI,CAACoK,GAAU;AACb,YAAAhB,EAAS5J,KAAgB,EAAE;AAC3B;AAAA,UACF;AAEA,cAAI,CAAC4K,EAAS,iBAAiB;AAC7B,YAAAhB,EAAS5J,KAAgB,EAAE;AAC3B;AAAA,UACF;AAEA,UAAA4J,EAASgB,EAAS,eAAe,GAC7B5K,MAAU4K,EAAS,mBACrBxB,EAASwB,EAAS,eAAe;AAAA,QAErC;AAAA,MAAA;AAAA,IAAA;AAAA,IAGFvH,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,cAAY8B,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,UAAItE,KACJ2D,EAAQ,CAACD,CAAI;AAAA,QACf;AAAA,QAEA,UAAA/B,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/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\"\n\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from \"@/components/Select\"\nimport { useIsTouchDevice } from \"@/helpers/useIsTouchDevice\"\nimport { cn } from \"@/lib/utils\"\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.scrollTop = 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 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 const useIsomorphicLayoutEffect = typeof window === \"undefined\" ? React.useEffect : React.useLayoutEffect\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 return\n }\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 return\n }\n\n onChange(next)\n },\n [onChange, 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 useIsomorphicLayoutEffect(() => {\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 setDraftValueRef={setTriggerDraftValueRef}\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 setDraftValueRef: React.MutableRefObject<((value: string) => void) | null>\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 setDraftValueRef,\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 setDraftValueRef.current = (nextValue) => {\n setDraft(nextValue)\n }\n return () => {\n setDraftValueRef.current = null\n }\n }, [setDraftValueRef])\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 return\n }\n\n if (resolved.selectableValue) {\n event.preventDefault()\n setHighlightedValue(resolved.selectableValue)\n setDraft(resolved.selectableValue)\n if (value !== resolved.selectableValue) {\n onCommit(resolved.selectableValue)\n }\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 if (value !== closestOption.value) {\n onCommit(closestOption.value)\n }\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":["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","highlightedValueRef","keyboardNavigationActiveRef","highlightedValue","setHighlightedValue","containerRef","desktopPopoverRef","desktopContentRef","desktopPopoverPosition","setDesktopPopoverPosition","uncontrolledOpen","setUncontrolledOpen","open","setOpen","useIsomorphicLayoutEffect","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","setDraftValueRef","isEditingRef","pointerDownOnInputRef","inputWasFocusedOnPointerDownRef","ignoreNextMaskCommitValueRef","draft","setDraft","nextValue","moveSelection","base","baseIndex","nextIndex","nextOption","triggerClassName","IMaskInput","appended","dynamicMasked","digits","hourPrefix","accepted","nextText","completed","resolved","closestOption","shouldSelectAll","element"],"mappings":"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"}
|
package/dist/index180.js
CHANGED
|
@@ -1,25 +1,17 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
viewBox: "0 0 30 10",
|
|
14
|
-
preserveAspectRatio: "none",
|
|
15
|
-
children: r.asChild ? t : /* @__PURE__ */ o.jsx("polygon", { points: "0,0 30,0 15,10" })
|
|
16
|
-
}
|
|
17
|
-
);
|
|
18
|
-
});
|
|
19
|
-
e.displayName = v;
|
|
20
|
-
var h = e;
|
|
1
|
+
import h from "./index96.js";
|
|
2
|
+
function L(i, r, u) {
|
|
3
|
+
return s(i, r, void 0, u);
|
|
4
|
+
}
|
|
5
|
+
function s(i, r, u, e) {
|
|
6
|
+
r && (e = new h(e.metadata), e.selectNumberingPlan(r));
|
|
7
|
+
var f = e.type(u), n = f && f.possibleLengths() || e.possibleLengths();
|
|
8
|
+
if (!n)
|
|
9
|
+
return "IS_POSSIBLE";
|
|
10
|
+
var t = i.length, l = n[0];
|
|
11
|
+
return l === t ? "IS_POSSIBLE" : l > t ? "TOO_SHORT" : n[n.length - 1] < t ? "TOO_LONG" : n.indexOf(t, 1) >= 0 ? "IS_POSSIBLE" : "INVALID_LENGTH";
|
|
12
|
+
}
|
|
21
13
|
export {
|
|
22
|
-
|
|
23
|
-
|
|
14
|
+
s as checkNumberLengthForType,
|
|
15
|
+
L as default
|
|
24
16
|
};
|
|
25
17
|
//# sourceMappingURL=index180.js.map
|
package/dist/index180.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index180.js","sources":["../../../node_modules
|
|
1
|
+
{"version":3,"file":"index180.js","sources":["../../../node_modules/libphonenumber-js/es6/helpers/checkNumberLength.js"],"sourcesContent":["import Metadata from '../metadata.js';\nimport mergeArrays from './mergeArrays.js';\nexport default function checkNumberLength(nationalNumber, country, metadata) {\n return checkNumberLengthForType(nationalNumber, country, undefined, metadata);\n}\n\n// Checks whether a number is possible for a certain `country` based on the number length.\n//\n// This function is not supported by metadata generated with ancient versions of\n// `libphonenumber-js` (before version `1.0.18`) which didn't include \"possible lengths\".\n//\n// There was also a known issue with `checkNumberLength()` function:\n// if a number is possible only in a certain `country` among several `countries`\n// that share the same \"country calling code\", that function would check\n// the possibility of the phone number only in the \"main\" `country` for the \"country calling code\"\n// and would not check if it's actually be possible in the speciifc `country`.\n//\n// For example, \"+1310xxxx\" numbers are valid in Canada.\n// However, they are not possible in the US due to being too short.\n// Since Canada and the US share the same country calling code — \"+1\" —\n// `checkNumberLength()` function used to return not \"IS_POSSIBLE\" for \"+1310xxxx\" numbers.\n//\n// In such cases, when using \"/max\" metadata, `isValid()` could output `true`\n// but at the same time `isPossible()` could output `false`, which was contradictory.\n//\n// See https://issuetracker.google.com/issues/335892662 for the discusson in Google's issues.\n//\n// The solution suggested by Google was implemented: an optional `country` argument\n// was added to `checkNumberLength()` function. If present, that `country` will be used\n// to check phone number length for that specific `country` rather than the \"main\" country\n// for the shared \"country calling code\".\n//\nexport function checkNumberLengthForType(nationalNumber, country, type, metadata) {\n // If the exact `country` is specified, it's no necessarily already selected in `metadata`.\n // Most likely, in cases when there're multiple countries corresponding to the same\n // \"country calling code\", the \"main\" country for that \"country calling code\" will be selected.\n if (country) {\n metadata = new Metadata(metadata.metadata);\n metadata.selectNumberingPlan(country);\n }\n var type_info = metadata.type(type);\n\n // There should always be \"<possiblePengths/>\" set for every type element.\n // This is declared in the XML schema.\n // For size efficiency, where a sub-description (e.g. fixed-line)\n // has the same \"<possiblePengths/>\" as the \"general description\", this is missing,\n // so we fall back to the \"general description\". Where no numbers of the type\n // exist at all, there is one possible length (-1) which is guaranteed\n // not to match the length of any real phone number.\n var possible_lengths = type_info && type_info.possibleLengths() || metadata.possibleLengths();\n // let local_lengths = type_info && type.possibleLengthsLocal() || metadata.possibleLengthsLocal()\n\n // Metadata before version `1.0.18` didn't contain `possible_lengths`.\n if (!possible_lengths) {\n return 'IS_POSSIBLE';\n }\n if (type === 'FIXED_LINE_OR_MOBILE') {\n // No such country in metadata.\n /* istanbul ignore next */\n if (!metadata.type('FIXED_LINE')) {\n // The rare case has been encountered where no fixedLine data is available\n // (true for some non-geographic entities), so we just check mobile.\n return checkNumberLengthForType(nationalNumber, country, 'MOBILE', metadata);\n }\n var mobile_type = metadata.type('MOBILE');\n if (mobile_type) {\n // Merge the mobile data in if there was any. \"Concat\" creates a new\n // array, it doesn't edit possible_lengths in place, so we don't need a copy.\n // Note that when adding the possible lengths from mobile, we have\n // to again check they aren't empty since if they are this indicates\n // they are the same as the general desc and should be obtained from there.\n possible_lengths = mergeArrays(possible_lengths, mobile_type.possibleLengths());\n // The current list is sorted; we need to merge in the new list and\n // re-sort (duplicates are okay). Sorting isn't so expensive because\n // the lists are very small.\n\n // if (local_lengths) {\n // \tlocal_lengths = mergeArrays(local_lengths, mobile_type.possibleLengthsLocal())\n // } else {\n // \tlocal_lengths = mobile_type.possibleLengthsLocal()\n // }\n }\n }\n // If the type doesn't exist then return 'INVALID_LENGTH'.\n else if (type && !type_info) {\n return 'INVALID_LENGTH';\n }\n var actual_length = nationalNumber.length;\n\n // In `libphonenumber-js` all \"local-only\" formats are dropped for simplicity.\n // // This is safe because there is never an overlap beween the possible lengths\n // // and the local-only lengths; this is checked at build time.\n // if (local_lengths && local_lengths.indexOf(nationalNumber.length) >= 0)\n // {\n // \treturn 'IS_POSSIBLE_LOCAL_ONLY'\n // }\n\n var minimum_length = possible_lengths[0];\n if (minimum_length === actual_length) {\n return 'IS_POSSIBLE';\n }\n if (minimum_length > actual_length) {\n return 'TOO_SHORT';\n }\n if (possible_lengths[possible_lengths.length - 1] < actual_length) {\n return 'TOO_LONG';\n }\n\n // We skip the first element since we've already checked it.\n return possible_lengths.indexOf(actual_length, 1) >= 0 ? 'IS_POSSIBLE' : 'INVALID_LENGTH';\n}\n//# sourceMappingURL=checkNumberLength.js.map"],"names":["checkNumberLength","nationalNumber","country","metadata","checkNumberLengthForType","type","Metadata","type_info","possible_lengths","actual_length","minimum_length"],"mappings":";AAEe,SAASA,EAAkBC,GAAgBC,GAASC,GAAU;AAC3E,SAAOC,EAAyBH,GAAgBC,GAAS,QAAWC,CAAQ;AAC9E;AA4BO,SAASC,EAAyBH,GAAgBC,GAASG,GAAMF,GAAU;AAIhF,EAAID,MACFC,IAAW,IAAIG,EAASH,EAAS,QAAQ,GACzCA,EAAS,oBAAoBD,CAAO;AAEtC,MAAIK,IAAYJ,EAAS,KAAKE,CAAI,GAS9BG,IAAmBD,KAAaA,EAAU,gBAAe,KAAMJ,EAAS,gBAAe;AAI3F,MAAI,CAACK;AACH,WAAO;AAiCT,MAAIC,IAAgBR,EAAe,QAU/BS,IAAiBF,EAAiB,CAAC;AACvC,SAAIE,MAAmBD,IACd,gBAELC,IAAiBD,IACZ,cAELD,EAAiBA,EAAiB,SAAS,CAAC,IAAIC,IAC3C,aAIFD,EAAiB,QAAQC,GAAe,CAAC,KAAK,IAAI,gBAAgB;AAC3E;","x_google_ignoreList":[0]}
|