@rpcbase/ui 0.280.0 → 0.281.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/AddressAutocompleteInput/index.d.ts +1 -1
- package/dist/components/AddressAutocompleteInput/index.d.ts.map +1 -1
- package/dist/components/ApplePayButton/index.d.ts +1 -1
- package/dist/components/ApplePayButton/index.d.ts.map +1 -1
- package/dist/components/Checkbox/index.d.ts +1 -1
- package/dist/components/Checkbox/index.d.ts.map +1 -1
- package/dist/components/DayPickerField/index.d.ts +2 -2
- package/dist/components/DayPickerField/index.d.ts.map +1 -1
- package/dist/components/Dialog/index.d.ts +9 -9
- package/dist/components/Dialog/index.d.ts.map +1 -1
- package/dist/components/FilesUploadField/index.d.ts +1 -1
- package/dist/components/FilesUploadField/index.d.ts.map +1 -1
- package/dist/components/HourPickerField/index.d.ts +2 -2
- package/dist/components/HourPickerField/index.d.ts.map +1 -1
- package/dist/components/I18nField/index.d.ts +1 -1
- package/dist/components/I18nField/index.d.ts.map +1 -1
- package/dist/components/Image/index.d.ts +1 -1
- package/dist/components/Image/index.d.ts.map +1 -1
- package/dist/components/ImagesField/index.d.ts +1 -1
- package/dist/components/ImagesField/index.d.ts.map +1 -1
- package/dist/components/Input/index.d.ts +1 -1
- package/dist/components/Input/index.d.ts.map +1 -1
- package/dist/components/Notifications/NotificationsButton.d.ts +1 -1
- package/dist/components/Notifications/NotificationsButton.d.ts.map +1 -1
- package/dist/components/Notifications/NotificationsDrawer.d.ts +1 -1
- package/dist/components/Notifications/NotificationsDrawer.d.ts.map +1 -1
- package/dist/components/Notifications/NotificationsSettings.d.ts +1 -1
- package/dist/components/Notifications/NotificationsSettings.d.ts.map +1 -1
- package/dist/components/PhoneNumberInput/suggestions.d.ts +3 -3
- package/dist/components/PhoneNumberInput/suggestions.d.ts.map +1 -1
- package/dist/components/Select/index.d.ts +2 -2
- package/dist/components/Select/index.d.ts.map +1 -1
- package/dist/components/header/MenuPopover/index.d.ts +1 -1
- package/dist/components/header/MenuPopover/index.d.ts.map +1 -1
- package/dist/index.js +12 -12
- package/dist/index10.js +6 -4
- package/dist/index10.js.map +1 -1
- package/dist/index12.js.map +1 -1
- package/dist/index13.js.map +1 -1
- package/dist/index14.js.map +1 -1
- package/dist/index15.js.map +1 -1
- package/dist/index154.js +19 -7
- package/dist/index154.js.map +1 -1
- package/dist/index16.js +36 -45
- package/dist/index16.js.map +1 -1
- package/dist/index160.js +3 -3
- package/dist/index160.js.map +1 -1
- package/dist/index166.js +5 -5
- package/dist/index166.js.map +1 -1
- package/dist/index172.js +27 -25
- package/dist/index172.js.map +1 -1
- package/dist/index181.js +1 -1
- package/dist/index181.js.map +1 -1
- package/dist/index182.js +145 -162
- package/dist/index182.js.map +1 -1
- package/dist/index184.js +6 -8
- package/dist/index184.js.map +1 -1
- package/dist/index186.js +2 -8
- package/dist/index186.js.map +1 -1
- package/dist/index19.js +1 -1
- package/dist/index19.js.map +1 -1
- package/dist/index195.js +1 -1
- package/dist/index195.js.map +1 -1
- package/dist/index196.js +2 -2
- package/dist/index196.js.map +1 -1
- package/dist/index197.js +1 -1
- package/dist/index197.js.map +1 -1
- package/dist/index198.js +16 -15
- package/dist/index198.js.map +1 -1
- package/dist/index199.js +13 -17
- package/dist/index199.js.map +1 -1
- package/dist/index200.js +3 -2
- package/dist/index200.js.map +1 -1
- package/dist/index207.js +5 -90
- package/dist/index207.js.map +1 -1
- package/dist/index208.js +15 -3
- package/dist/index208.js.map +1 -1
- package/dist/index209.js +102 -22
- package/dist/index209.js.map +1 -1
- package/dist/index210.js +3 -28
- package/dist/index210.js.map +1 -1
- package/dist/index211.js +23 -19
- package/dist/index211.js.map +1 -1
- package/dist/index212.js +27 -6
- package/dist/index212.js.map +1 -1
- package/dist/index213.js +19 -14
- package/dist/index213.js.map +1 -1
- package/dist/index214.js +5 -6
- package/dist/index214.js.map +1 -1
- package/dist/index215.js +14 -26
- package/dist/index215.js.map +1 -1
- package/dist/index216.js +7 -22
- package/dist/index216.js.map +1 -1
- package/dist/index217.js +27 -6
- package/dist/index217.js.map +1 -1
- package/dist/index218.js +23 -5
- package/dist/index218.js.map +1 -1
- package/dist/index219.js +6 -4
- package/dist/index219.js.map +1 -1
- package/dist/index220.js +5 -4
- package/dist/index220.js.map +1 -1
- package/dist/index221.js +4 -24
- package/dist/index221.js.map +1 -1
- package/dist/index222.js +4 -3
- package/dist/index222.js.map +1 -1
- package/dist/index223.js +21 -21
- package/dist/index223.js.map +1 -1
- package/dist/index224.js +3 -23
- package/dist/index224.js.map +1 -1
- package/dist/index225.js +23 -6
- package/dist/index225.js.map +1 -1
- package/dist/index226.js +22 -9
- package/dist/index226.js.map +1 -1
- package/dist/index227.js +5 -17
- package/dist/index227.js.map +1 -1
- package/dist/index228.js +8 -49
- package/dist/index228.js.map +1 -1
- package/dist/index229.js +18 -5
- package/dist/index229.js.map +1 -1
- package/dist/index230.js +50 -19
- package/dist/index230.js.map +1 -1
- package/dist/index231.js +20 -28
- package/dist/index231.js.map +1 -1
- package/dist/index232.js +27 -104
- package/dist/index232.js.map +1 -1
- package/dist/index233.js +98 -33
- package/dist/index233.js.map +1 -1
- package/dist/index234.js +28 -113
- package/dist/index234.js.map +1 -1
- package/dist/index235.js +117 -11
- package/dist/index235.js.map +1 -1
- package/dist/index236.js +12 -4
- package/dist/index236.js.map +1 -1
- package/dist/index237.js +4 -15
- package/dist/index237.js.map +1 -1
- package/dist/index238.js +13 -62
- package/dist/index238.js.map +1 -1
- package/dist/index239.js +64 -9
- package/dist/index239.js.map +1 -1
- package/dist/index240.js +10 -106
- package/dist/index240.js.map +1 -1
- package/dist/index241.js +107 -13
- package/dist/index241.js.map +1 -1
- package/dist/index242.js +16 -13
- package/dist/index242.js.map +1 -1
- package/dist/index243.js +13 -5
- package/dist/index243.js.map +1 -1
- package/dist/index244.js +4 -316
- package/dist/index244.js.map +1 -1
- package/dist/index245.js +315 -58
- package/dist/index245.js.map +1 -1
- package/dist/index246.js +58 -223
- package/dist/index246.js.map +1 -1
- package/dist/index247.js +215 -318
- package/dist/index247.js.map +1 -1
- package/dist/index248.js +250 -306
- package/dist/index248.js.map +1 -1
- package/dist/index249.js +308 -173
- package/dist/index249.js.map +1 -1
- package/dist/index250.js +178 -7
- package/dist/index250.js.map +1 -1
- package/dist/index251.js +8 -15
- package/dist/index251.js.map +1 -1
- package/dist/index252.js +41 -5
- package/dist/index252.js.map +1 -1
- package/dist/index253.js +46 -38
- package/dist/index253.js.map +1 -1
- package/dist/index254.js +7 -50
- package/dist/index254.js.map +1 -1
- package/dist/index255.js +49 -6
- package/dist/index255.js.map +1 -1
- package/dist/index256.js +48 -46
- package/dist/index256.js.map +1 -1
- package/dist/index257.js +6 -51
- package/dist/index257.js.map +1 -1
- package/dist/index258.js +10 -9
- package/dist/index258.js.map +1 -1
- package/dist/index259.js +60 -8
- package/dist/index259.js.map +1 -1
- package/dist/index26.js.map +1 -1
- package/dist/index260.js +41 -60
- package/dist/index260.js.map +1 -1
- package/dist/index261.js +88 -34
- package/dist/index261.js.map +1 -1
- package/dist/index262.js +47 -94
- package/dist/index262.js.map +1 -1
- package/dist/index263.js +36 -49
- package/dist/index263.js.map +1 -1
- package/dist/index264.js +45 -32
- package/dist/index264.js.map +1 -1
- package/dist/index265.js +47 -46
- package/dist/index265.js.map +1 -1
- package/dist/index266.js +18 -48
- package/dist/index266.js.map +1 -1
- package/dist/index267.js +174 -15
- package/dist/index267.js.map +1 -1
- package/dist/index268.js +47 -169
- package/dist/index268.js.map +1 -1
- package/dist/index269.js +17 -34
- package/dist/index269.js.map +1 -1
- package/dist/index270.js +59 -10
- package/dist/index270.js.map +1 -1
- package/dist/index271.js +10 -66
- package/dist/index271.js.map +1 -1
- package/dist/index272.js +4 -4
- package/dist/index273.js +71 -69
- package/dist/index273.js.map +1 -1
- package/dist/index274.js +158 -152
- package/dist/index274.js.map +1 -1
- package/dist/index275.js +7 -13
- package/dist/index275.js.map +1 -1
- package/dist/index276.js +12 -5
- package/dist/index276.js.map +1 -1
- package/dist/index277.js +12 -6
- package/dist/index277.js.map +1 -1
- package/dist/index278.js +11 -12
- package/dist/index278.js.map +1 -1
- package/dist/index279.js +65 -9
- package/dist/index279.js.map +1 -1
- package/dist/index280.js +6 -74
- package/dist/index280.js.map +1 -1
- package/dist/index281.js +25 -6
- package/dist/index281.js.map +1 -1
- package/dist/index282.js +24 -24
- package/dist/index282.js.map +1 -1
- package/dist/index283.js +125 -24
- package/dist/index283.js.map +1 -1
- package/dist/index284.js +52 -115
- package/dist/index284.js.map +1 -1
- package/dist/index285.js +59 -55
- package/dist/index285.js.map +1 -1
- package/dist/index286.js +48 -61
- package/dist/index286.js.map +1 -1
- package/dist/index287.js +5 -48
- package/dist/index287.js.map +1 -1
- package/dist/index288.js +14 -8
- package/dist/index288.js.map +1 -1
- package/dist/index289.js +18 -14
- package/dist/index289.js.map +1 -1
- package/dist/index290.js +10 -17
- package/dist/index290.js.map +1 -1
- package/dist/index291.js +23 -11
- package/dist/index291.js.map +1 -1
- package/dist/index292.js +52 -25
- package/dist/index292.js.map +1 -1
- package/dist/index293.js +6 -52
- package/dist/index293.js.map +1 -1
- package/dist/index294.js +137 -5
- package/dist/index294.js.map +1 -1
- package/dist/index295.js +59 -149
- package/dist/index295.js.map +1 -1
- package/dist/index296.js +90 -49
- package/dist/index296.js.map +1 -1
- package/dist/index297.js +11 -117
- package/dist/index297.js.map +1 -1
- package/dist/index298.js +863 -11
- package/dist/index298.js.map +1 -1
- package/dist/index299.js +21 -865
- package/dist/index299.js.map +1 -1
- package/dist/index3.js.map +1 -1
- package/dist/index300.js +417 -27
- package/dist/index300.js.map +1 -1
- package/dist/index301.js +774 -483
- package/dist/index301.js.map +1 -1
- package/dist/index302.js +7436 -803
- package/dist/index302.js.map +1 -1
- package/dist/index303.js +7 -7429
- package/dist/index303.js.map +1 -1
- package/dist/index304.js +12 -6
- package/dist/index304.js.map +1 -1
- package/dist/index305.js +5 -12
- package/dist/index305.js.map +1 -1
- package/dist/index306.js +3 -3
- package/dist/index306.js.map +1 -1
- package/dist/index307.js +469 -5
- package/dist/index307.js.map +1 -1
- package/dist/index308.js +32 -464
- package/dist/index308.js.map +1 -1
- package/dist/index309.js +18 -36
- package/dist/index309.js.map +1 -1
- package/dist/index310.js +28 -17
- package/dist/index310.js.map +1 -1
- package/dist/index311.js +4 -30
- package/dist/index311.js.map +1 -1
- package/dist/index312.js +59 -4
- package/dist/index312.js.map +1 -1
- package/dist/index313.js +11 -59
- package/dist/index313.js.map +1 -1
- package/dist/index314.js +5 -9
- package/dist/index314.js.map +1 -1
- package/dist/index315.js +9 -5
- package/dist/index315.js.map +1 -1
- package/dist/index316.js +12 -9
- package/dist/index316.js.map +1 -1
- package/dist/index317.js +3 -13
- package/dist/index317.js.map +1 -1
- package/dist/index318.js +17 -3
- package/dist/index318.js.map +1 -1
- package/dist/index319.js +23 -14
- package/dist/index319.js.map +1 -1
- package/dist/index320.js +39 -23
- package/dist/index320.js.map +1 -1
- package/dist/index321.js +5 -41
- package/dist/index321.js.map +1 -1
- package/dist/index322.js +25 -5
- package/dist/index322.js.map +1 -1
- package/dist/index323.js +18 -24
- package/dist/index323.js.map +1 -1
- package/dist/index324.js +32 -17
- package/dist/index324.js.map +1 -1
- package/dist/index325.js +5 -34
- package/dist/index325.js.map +1 -1
- package/dist/index326.js +9 -5
- package/dist/index326.js.map +1 -1
- package/dist/index327.js +7 -8
- package/dist/index327.js.map +1 -1
- package/dist/index328.js +9 -8
- package/dist/index328.js.map +1 -1
- package/dist/index329.js +10 -9
- package/dist/index329.js.map +1 -1
- package/dist/index330.js +7 -10
- package/dist/index330.js.map +1 -1
- package/dist/index331.js +75 -7
- package/dist/index331.js.map +1 -1
- package/dist/index332.js +153 -66
- package/dist/index332.js.map +1 -1
- package/dist/index333.js +99 -147
- package/dist/index333.js.map +1 -1
- package/dist/index334.js +13 -113
- package/dist/index334.js.map +1 -1
- package/dist/index335.js +78 -12
- package/dist/index335.js.map +1 -1
- package/dist/index336.js +23 -57
- package/dist/index336.js.map +1 -1
- package/dist/index337.js +12 -45
- package/dist/index337.js.map +1 -1
- package/dist/index338.js +16 -13
- package/dist/index338.js.map +1 -1
- package/dist/index339.js +100 -15
- package/dist/index339.js.map +1 -1
- package/dist/index340.js +50 -95
- package/dist/index340.js.map +1 -1
- package/dist/index341.js +57 -5
- package/dist/index341.js.map +1 -1
- package/dist/index342.js +41 -78
- package/dist/index342.js.map +1 -1
- package/dist/index343.js +100 -58
- package/dist/index343.js.map +1 -1
- package/dist/index344.js +46 -104
- package/dist/index344.js.map +1 -1
- package/dist/index345.js +39 -51
- package/dist/index345.js.map +1 -1
- package/dist/index346.js +143 -42
- package/dist/index346.js.map +1 -1
- package/dist/index347.js +122 -123
- package/dist/index347.js.map +1 -1
- package/dist/index348.js +224 -108
- package/dist/index348.js.map +1 -1
- package/dist/index349.js +158 -174
- package/dist/index349.js.map +1 -1
- package/dist/index350.js +213 -144
- package/dist/index350.js.map +1 -1
- package/dist/index351.js +5 -309
- package/dist/index351.js.map +1 -1
- package/dist/index352.js +6 -5
- package/dist/index352.js.map +1 -1
- package/dist/index353.js +7 -6
- package/dist/index353.js.map +1 -1
- package/dist/index354.js +4 -5
- package/dist/index354.js.map +1 -1
- package/dist/index355.js +4 -4
- package/dist/index355.js.map +1 -1
- package/dist/index356.js +21 -6
- package/dist/index356.js.map +1 -1
- package/dist/index357.js +10 -21
- package/dist/index357.js.map +1 -1
- package/dist/index358.js +128 -10
- package/dist/index358.js.map +1 -1
- package/dist/index359.js +36 -122
- package/dist/index359.js.map +1 -1
- package/dist/index360.js +64 -38
- package/dist/index360.js.map +1 -1
- package/dist/index361.js +115 -66
- package/dist/index361.js.map +1 -1
- package/dist/index362.js +485 -112
- package/dist/index362.js.map +1 -1
- package/dist/index363.js +7 -490
- package/dist/index363.js.map +1 -1
- package/dist/index364.js +1 -1
- package/dist/index364.js.map +1 -1
- package/dist/index367.js +2 -9
- package/dist/index367.js.map +1 -1
- package/dist/index368.js +26 -5
- package/dist/index368.js.map +1 -1
- package/dist/index369.js +43 -27
- package/dist/index369.js.map +1 -1
- package/dist/index370.js +35 -46
- package/dist/index370.js.map +1 -1
- package/dist/index371.js +16 -27
- package/dist/index371.js.map +1 -1
- package/dist/index372.js +41 -16
- package/dist/index372.js.map +1 -1
- package/dist/index373.js +11 -42
- package/dist/index373.js.map +1 -1
- package/dist/index374.js +10 -14
- package/dist/index374.js.map +1 -1
- package/dist/index375.js +51 -9
- package/dist/index375.js.map +1 -1
- package/dist/index376.js +40 -53
- package/dist/index376.js.map +1 -1
- package/dist/index377.js +17 -43
- package/dist/index377.js.map +1 -1
- package/dist/index378.js +4 -15
- package/dist/index378.js.map +1 -1
- package/dist/index379.js +4 -4
- package/dist/index379.js.map +1 -1
- package/dist/index380.js +9 -4
- package/dist/index380.js.map +1 -1
- package/dist/index381.js +304 -9
- package/dist/index381.js.map +1 -1
- package/dist/index382.js +4 -339
- package/dist/index382.js.map +1 -1
- package/dist/index383.js +21 -5
- package/dist/index383.js.map +1 -1
- package/dist/index384.js +106 -16
- package/dist/index384.js.map +1 -1
- package/dist/index385.js +19 -109
- package/dist/index385.js.map +1 -1
- package/dist/index386.js +18 -18
- package/dist/index386.js.map +1 -1
- package/dist/index387.js +14 -19
- package/dist/index387.js.map +1 -1
- package/dist/index388.js +12 -4
- package/dist/index388.js.map +1 -1
- package/dist/index389.js +113 -20
- package/dist/index389.js.map +1 -1
- package/dist/index390.js +5 -11
- package/dist/index390.js.map +1 -1
- package/dist/index391.js +28 -85
- package/dist/index391.js.map +1 -1
- package/dist/index392.js +9 -9
- package/dist/index392.js.map +1 -1
- package/dist/index393.js +6 -29
- package/dist/index393.js.map +1 -1
- package/dist/index394.js +254 -10
- package/dist/index394.js.map +1 -1
- package/dist/index395.js +12 -6
- package/dist/index395.js.map +1 -1
- package/dist/index396.js +11 -252
- package/dist/index396.js.map +1 -1
- package/dist/index397.js +6 -11
- package/dist/index397.js.map +1 -1
- package/dist/index398.js +22 -10
- package/dist/index398.js.map +1 -1
- package/dist/index399.js +22 -6
- package/dist/index399.js.map +1 -1
- package/dist/index4.js.map +1 -1
- package/dist/index400.js +103 -21
- package/dist/index400.js.map +1 -1
- package/dist/index401.js +15 -23
- package/dist/index401.js.map +1 -1
- package/dist/index402.js +11 -108
- package/dist/index402.js.map +1 -1
- package/dist/index403.js +10 -15
- package/dist/index403.js.map +1 -1
- package/dist/index404.js +237 -10
- package/dist/index404.js.map +1 -1
- package/dist/index405.js +27 -9
- package/dist/index405.js.map +1 -1
- package/dist/index406.js +33 -238
- package/dist/index406.js.map +1 -1
- package/dist/index407.js +11 -30
- package/dist/index407.js.map +1 -1
- package/dist/index408.js +118 -48
- package/dist/index408.js.map +1 -1
- package/dist/index409.js +39 -11
- package/dist/index409.js.map +1 -1
- package/dist/index410.js +18 -121
- package/dist/index410.js.map +1 -1
- package/dist/index411.js +11 -39
- package/dist/index411.js.map +1 -1
- package/dist/index412.js +21 -24
- package/dist/index412.js.map +1 -1
- package/dist/index413.js +17 -11
- package/dist/index413.js.map +1 -1
- package/dist/index414.js +10 -20
- package/dist/index414.js.map +1 -1
- package/dist/index415.js +4 -17
- package/dist/index415.js.map +1 -1
- package/dist/index416.js +300 -14
- package/dist/index416.js.map +1 -1
- package/dist/index417.js +61 -323
- package/dist/index417.js.map +1 -1
- package/dist/index418.js +4 -63
- package/dist/index418.js.map +1 -1
- package/dist/index419.js +28 -4
- package/dist/index419.js.map +1 -1
- package/dist/index420.js +468 -25
- package/dist/index420.js.map +1 -1
- package/dist/index421.js +250 -452
- package/dist/index421.js.map +1 -1
- package/dist/index6.js.map +1 -1
- package/dist/index7.js +91 -133
- package/dist/index7.js.map +1 -1
- package/dist/index70.js +2 -2
- package/dist/index70.js.map +1 -1
- package/dist/index71.js +11 -4
- package/dist/index71.js.map +1 -1
- package/dist/index72.js +1 -3
- package/dist/index72.js.map +1 -1
- package/dist/index8.js.map +1 -1
- package/dist/index9.js +16 -19
- package/dist/index9.js.map +1 -1
- package/dist/test-only/TestCoverageTestBadge/index.d.ts +1 -1
- package/dist/test-only/TestCoverageTestBadge/index.d.ts.map +1 -1
- package/package.json +15 -15
- package/dist/index422.js +0 -272
- package/dist/index422.js.map +0 -1
package/dist/index301.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index301.js","names":["React","Select","MenuListProps","OptionProps","Props","SelectProps","SelectInstance","SingleValue","StylesConfig","components","selectComponents","cn","LanguageCode","LocalizedStringEntry","Record","value","updatedAt","Date","autoTranslated","TExtra","LocalizedString","I18nValue","LocaleContextValue","locale","setLocale","next","I18nFieldLocaleContext","createContext","I18nFieldLocaleProviderProps","children","ReactNode","defaultValue","onChange","locales","I18nFieldLocaleProvider","t0","$","_c","isControlled","undefined","t1","getPreferredLocale","getEnvironmentLocales","defaultLocale","internalLocale","setInternalLocale","useState","activeLocale","t2","t3","t4","current","resolveLocaleMatch","useEffect","t5","contextValue","t6","I18nFieldProps","Omit","InputHTMLAttributes","HTMLInputElement","TextareaHTMLAttributes","HTMLTextAreaElement","onLocaleChange","option","LanguageOption","multiline","inputClassName","selectProps","Partial","selectFooter","languageSelectTabIndex","name","code","searchable","DEFAULT_LOCALE","normalizeLocaleCode","trim","replace","toLowerCase","primaryLocaleCode","split","normalizedLocale","availableLocales","filter","length","find","candidates","document","push","documentElement","lang","navigator","Array","from","languages","language","candidate","matchedLocale","defaultLocaleMatch","languageCodeToBadge","primary","normalized","slice","toUpperCase","stripDiacritics","normalize","resolveLocalizedEntry","Object","prototype","hasOwnProperty","call","parts","Boolean","pop","join","resolveLocalizedValue","createDisplayNames","type","Intl","DisplayNames","isArray","safeDisplayName","displayNames","of","buildLanguageOptions","allowed","englishDisplayNames","pool","map","Set","entry","sort","a","b","localeCompare","selectStyles","control","display","menu","provided","marginTop","borderRadius","boxShadow","backgroundColor","overflow","zIndex","menuList","maxHeight","padding","flexDirection","state","fontSize","isFocused","isSelected","color","cursor","noOptionsMessage","HiddenControl","Symbol","for","NullComponent","SearchMenuContextValue","searchTerm","setSearchTerm","onSearchKeyDown","event","KeyboardEvent","searchInputRef","RefObject","SearchMenuContext","SearchableMenuList","props","search","useContext","target","Option","data","innerRef","innerProps","I18nField","forwardRef","forwardedRef","className","disabled","localeProp","rest","valueProp","SharedProps","restProps","rows","initialValue","internalValue","setInternalValue","currentValue","localeContext","keys","localePool","localeValues","_temp","initialLocale","t7","t8","t10","t9","t11","t12","t13","t14","option_1","_temp2","selectedOption","menuOpen","setMenuOpen","rootRef","useRef","inputRef","triggerRef","containerRef","selectRef","selectionSnapshotRef","t15","left","top","menuPosition","setMenuPosition","t16","t17","useImperativeHandle","handleLocaleSelect","option_2","nextLocale","closeMenu","t18","currentEntry","nextValue","handleTextChange","t19","currentText","t20","option_3","query","some","token","includes","filterOption","buttonPosition","t21","trigger","container","triggerRect","getBoundingClientRect","containerRect","bottom","updateMenuPosition","t22","Node","contains","isInsideComponent","t23","target_0","focus","selection","start","end","setSelectionRange","restoreMainFocus","t24","target_1","requestAnimationFrame","activeElement","t25","t26","t27","restoreFocus","forwardedSelectProps","selectPlaceholder","userClassNamePrefix","userSelectComponents","userSelectStyles","styles","classNamePrefix","placeholder","t28","query_0","rank","option_4","startsWith","token_0","token_1","t29","option_5","diff","filteredOptions","event_0","key","preventDefault","first","handleSearchKeyDown","t30","searchMenuContextValue","t31","t32","Control","IndicatorsContainer","DropdownIndicator","IndicatorSeparator","ValueContainer","MenuList","mergedSelectComponents","t33","t34","mergedSelectStyles","t35","t36","handleResize","window","addEventListener","removeEventListener","useLayoutEffect","t37","event_1","onFocus","t38","event_2","relatedTarget","onBlur","t39","t40","t41","ref","Ref","sharedFieldProps","t42","t43","event_3","t44","t45","t46","t47","t48","t49","target_2","selectionStart","selectionEnd","select","t50","t51","t52","_temp3","t53","t54","t55","pointerEvents","width","t56","t57","t58","t59","t60","t61","t62","displayName","option_0","event_4"],"sources":["../src/components/I18nField/index.tsx"],"sourcesContent":["import * as React from \"react\"\nimport Select, {\n type MenuListProps,\n type OptionProps,\n type Props as SelectProps,\n type SelectInstance,\n type SingleValue,\n type StylesConfig,\n components as selectComponents,\n} from \"react-select\"\n\nimport { cn } from \"@/lib/utils\"\n\n\nexport type LanguageCode = string\n\nexport type LocalizedStringEntry<TExtra extends Record<string, unknown> = Record<string, unknown>> = {\n value: string\n updatedAt: Date\n autoTranslated?: boolean\n} & TExtra\n\nexport type LocalizedString<TExtra extends Record<string, unknown> = Record<string, unknown>> = Record<\n LanguageCode,\n LocalizedStringEntry<TExtra>\n>\n\nexport type I18nValue<TExtra extends Record<string, unknown> = Record<string, unknown>> = LocalizedString<TExtra>\n\ntype LocaleContextValue = {\n locale: LanguageCode | null\n setLocale: (next: LanguageCode) => void\n}\n\nconst I18nFieldLocaleContext = React.createContext<LocaleContextValue | null>(null)\n\ntype I18nFieldLocaleProviderProps = {\n children: React.ReactNode\n value?: LanguageCode\n defaultValue?: LanguageCode\n onChange?: (locale: LanguageCode) => void\n locales?: LanguageCode[]\n}\n\nexport function I18nFieldLocaleProvider({\n children,\n value,\n defaultValue,\n onChange,\n locales,\n}: I18nFieldLocaleProviderProps) {\n const isControlled = value !== undefined\n const defaultLocale = React.useMemo(\n () => getPreferredLocale([defaultValue, ...getEnvironmentLocales()], locales),\n [defaultValue, locales]\n )\n const [internalLocale, setInternalLocale] = React.useState<LanguageCode>(defaultLocale)\n const activeLocale = (value ?? internalLocale) as LanguageCode\n\n const setLocale = React.useCallback(\n (next: LanguageCode) => {\n if (!isControlled) {\n setInternalLocale(next)\n }\n onChange?.(next)\n },\n [isControlled, onChange]\n )\n\n React.useEffect(() => {\n if (isControlled) return\n setInternalLocale((current) => (resolveLocaleMatch(current, locales) ? current : defaultLocale))\n }, [defaultLocale, isControlled, locales])\n\n const contextValue = React.useMemo<LocaleContextValue>(\n () => ({\n locale: activeLocale,\n setLocale,\n }),\n [activeLocale, setLocale]\n )\n\n return <I18nFieldLocaleContext.Provider value={contextValue}>{children}</I18nFieldLocaleContext.Provider>\n}\n\ntype I18nFieldProps = Omit<\n React.InputHTMLAttributes<HTMLInputElement>,\n \"value\" | \"defaultValue\" | \"onChange\"\n> &\n Omit<\n React.TextareaHTMLAttributes<HTMLTextAreaElement>,\n \"value\" | \"defaultValue\" | \"onChange\"\n > & {\n value?: I18nValue\n defaultValue?: I18nValue\n locale?: LanguageCode\n defaultLocale?: LanguageCode\n onChange?: (value: I18nValue) => void\n onLocaleChange?: (locale: LanguageCode, option: LanguageOption) => void\n locales?: LanguageCode[]\n multiline?: boolean\n inputClassName?: string\n selectProps?: Partial<SelectProps<LanguageOption, false>>\n selectFooter?: React.ReactNode\n languageSelectTabIndex?: number\n }\n\ntype LanguageOption = {\n value: LanguageCode\n name: string\n code: string\n searchable: string[]\n}\n\nconst DEFAULT_LOCALE: LanguageCode = \"en\"\n\nfunction normalizeLocaleCode(code: string) {\n return code.trim().replace(/_/g, \"-\").toLowerCase()\n}\n\nfunction primaryLocaleCode(code: string) {\n return normalizeLocaleCode(code).split(\"-\")[0] ?? \"\"\n}\n\nfunction resolveLocaleMatch(locale: LanguageCode | undefined, locales: LanguageCode[] | undefined) {\n const normalizedLocale = typeof locale === \"string\" ? normalizeLocaleCode(locale) : \"\"\n if (!normalizedLocale) return null\n\n const availableLocales = (locales ?? []).filter(\n (code): code is LanguageCode => typeof code === \"string\" && code.length > 0\n )\n if (availableLocales.length === 0) return locale?.trim() ?? normalizedLocale\n\n return availableLocales.find((code) => normalizeLocaleCode(code) === normalizedLocale) ??\n availableLocales.find((code) => primaryLocaleCode(code) === primaryLocaleCode(normalizedLocale)) ??\n null\n}\n\nfunction getEnvironmentLocales() {\n const candidates: LanguageCode[] = []\n if (typeof document !== \"undefined\") {\n candidates.push(document.documentElement.lang)\n }\n if (typeof navigator !== \"undefined\") {\n candidates.push(...Array.from(navigator.languages ?? []), navigator.language)\n }\n return candidates\n}\n\nfunction getPreferredLocale(candidates: Array<LanguageCode | undefined>, locales?: LanguageCode[]) {\n for (const candidate of candidates) {\n const matchedLocale = resolveLocaleMatch(candidate, locales)\n if (matchedLocale) return matchedLocale\n }\n\n const defaultLocaleMatch = resolveLocaleMatch(DEFAULT_LOCALE, locales)\n if (defaultLocaleMatch) return defaultLocaleMatch\n\n return locales?.[0] ?? DEFAULT_LOCALE\n}\n\nfunction languageCodeToBadge(code: string) {\n const primary = code.split(\"-\")[0] ?? \"\"\n const normalized = primary.replace(/[^A-Za-z]/g, \"\")\n if (!normalized) return \"?\"\n return normalized.slice(0, 3).toUpperCase()\n}\n\nfunction stripDiacritics(value: string) {\n return value.normalize(\"NFD\").replace(/[\\u0300-\\u036f]/g, \"\")\n}\n\nfunction normalize(value: string) {\n return stripDiacritics(value).toLowerCase()\n}\n\nfunction resolveLocalizedEntry(value: I18nValue, locale: LanguageCode) {\n if (Object.prototype.hasOwnProperty.call(value, locale)) {\n return value[locale]\n }\n\n const parts = locale.split(\"-\").filter(Boolean)\n while (parts.length > 1) {\n parts.pop()\n const candidate = parts.join(\"-\")\n if (Object.prototype.hasOwnProperty.call(value, candidate)) {\n return value[candidate]\n }\n }\n\n return undefined\n}\n\nfunction resolveLocalizedValue(value: I18nValue, locale: LanguageCode) {\n return resolveLocalizedEntry(value, locale)?.value ?? \"\"\n}\n\nfunction createDisplayNames(locale: string | string[] | undefined, type: \"language\") {\n if (typeof Intl === \"undefined\" || typeof Intl.DisplayNames === \"undefined\") return null\n try {\n const locales = Array.isArray(locale) ? locale : locale ? [locale] : undefined\n return new Intl.DisplayNames(locales, { type })\n } catch {\n return null\n }\n}\n\nfunction safeDisplayName(displayNames: Intl.DisplayNames | null, value: string) {\n if (!displayNames) return undefined\n try {\n return displayNames.of(value) ?? undefined\n } catch {\n return undefined\n }\n}\n\nfunction buildLanguageOptions(locale?: string | string[], allowed?: LanguageCode[]) {\n const displayNames = createDisplayNames(locale, \"language\")\n const englishDisplayNames = createDisplayNames(\"en\", \"language\")\n const pool = (allowed ?? []).filter((code): code is LanguageCode => typeof code === \"string\" && code.length > 0)\n\n return pool\n .map((code) => {\n const name = safeDisplayName(displayNames, code) ?? safeDisplayName(englishDisplayNames, code) ?? code\n return {\n value: code,\n name,\n code,\n searchable: Array.from(\n new Set([\n name,\n safeDisplayName(englishDisplayNames, code) ?? code,\n code.toLowerCase(),\n code.toUpperCase(),\n ])\n ).map((entry) => normalize(entry)),\n }\n })\n .sort((a, b) => a.name.localeCompare(b.name))\n}\n\nconst selectStyles: StylesConfig<LanguageOption, false> = {\n control: () => ({\n display: \"none\",\n }),\n menu: (provided) => ({\n ...provided,\n marginTop: 4,\n borderRadius: \"var(--radius)\",\n boxShadow: \"0 18px 36px rgba(15, 23, 42, 0.18)\",\n backgroundColor: \"hsl(var(--popover))\",\n overflow: \"hidden\",\n zIndex: 30,\n }),\n menuList: (provided) => ({\n ...provided,\n maxHeight: 280,\n padding: 0,\n display: \"flex\",\n flexDirection: \"column\",\n overflow: \"hidden\",\n }),\n option: (provided, state) => ({\n ...provided,\n fontSize: \"0.875rem\",\n backgroundColor: state.isFocused\n ? \"hsl(var(--muted))\"\n : state.isSelected\n ? \"hsl(var(--accent))\"\n : \"transparent\",\n color: state.isSelected\n ? \"hsl(var(--accent-foreground))\"\n : \"hsl(var(--foreground))\",\n cursor: \"pointer\",\n }),\n noOptionsMessage: (provided) => ({\n ...provided,\n fontSize: \"0.875rem\",\n color: \"hsl(var(--muted-foreground))\",\n }),\n}\n\nconst HiddenControl = () => <div style={{ display: \"none\" }} />\nconst NullComponent = () => null\n\ntype SearchMenuContextValue = {\n searchTerm: string\n setSearchTerm: (next: string) => void\n onSearchKeyDown: (event: React.KeyboardEvent<HTMLInputElement>) => void\n searchInputRef: React.RefObject<HTMLInputElement | null>\n selectFooter?: React.ReactNode\n}\n\nconst SearchMenuContext = React.createContext<SearchMenuContextValue | null>(null)\n\n// MenuList must keep a stable component identity across renders: an inline component\n// would be remounted on every keystroke, unmounting the focused search input and\n// closing the menu through the root onBlur handler.\nfunction SearchableMenuList(props: MenuListProps<LanguageOption, false>) {\n const search = React.useContext(SearchMenuContext)\n const { children } = props\n return (\n <selectComponents.MenuList {...props} className=\"!p-0 flex flex-col overflow-hidden\">\n {search ? (\n <div className=\"border-b border-muted px-2 pb-2 pt-2\">\n <input\n ref={search.searchInputRef}\n value={search.searchTerm}\n onChange={(event) => search.setSearchTerm(event.target.value)}\n onKeyDown={search.onSearchKeyDown}\n className=\"w-full rounded-md border border-input bg-background px-3 py-2 text-sm focus:outline-none focus:ring-2 focus:ring-ring\"\n placeholder=\"Search language…\"\n />\n </div>\n ) : null}\n <div className=\"max-h-60 overflow-y-auto\">{children}</div>\n {search?.selectFooter ? (\n <div className=\"border-t border-muted bg-muted/60 px-3 py-2 text-xs text-muted-foreground\">\n {search.selectFooter}\n </div>\n ) : null}\n </selectComponents.MenuList>\n )\n}\n\nfunction Option(props: OptionProps<LanguageOption, false>) {\n const { data, innerRef, innerProps, isFocused, isSelected } = props\n return (\n <div\n ref={innerRef}\n {...innerProps}\n className={cn(\n \"flex cursor-pointer items-center justify-between gap-3 px-3 py-2 text-sm\",\n isSelected\n ? \"bg-accent text-accent-foreground\"\n : isFocused\n ? \"bg-muted text-foreground\"\n : \"text-foreground\"\n )}\n >\n <span className=\"flex min-w-0 items-center gap-2\">\n <span className=\"truncate\">{data.name}</span>\n </span>\n <span className=\"text-xs text-muted-foreground uppercase\">{data.code}</span>\n </div>\n )\n}\n\nexport const I18nField = React.forwardRef<HTMLInputElement | HTMLTextAreaElement, I18nFieldProps>(\n function I18nField(props, forwardedRef) {\n const {\n value: valueProp,\n defaultValue,\n locale: localeProp,\n defaultLocale,\n onChange,\n onLocaleChange,\n locales,\n multiline,\n className,\n inputClassName,\n selectProps,\n selectFooter,\n languageSelectTabIndex = -1,\n disabled,\n ...rest\n } = props\n\n type SharedProps = React.InputHTMLAttributes<HTMLInputElement> &\n React.TextareaHTMLAttributes<HTMLTextAreaElement> & { rows?: number }\n\n const { rows, ...restProps } = rest as SharedProps\n\n const initialValue = React.useMemo<I18nValue>(() => valueProp ?? defaultValue ?? {}, [defaultValue, valueProp])\n const [internalValue, setInternalValue] = React.useState<I18nValue>(initialValue)\n const isControlled = valueProp !== undefined\n const currentValue = isControlled ? valueProp ?? {} : internalValue\n const [searchTerm, setSearchTerm] = React.useState(\"\")\n const localeContext = React.useContext(I18nFieldLocaleContext)\n\n const localePool = React.useMemo(() => {\n const pool = Array.from(new Set([...(locales ?? []), ...Object.keys(currentValue)]))\n return buildLanguageOptions(undefined, pool)\n }, [currentValue, locales])\n\n const initialLocale = React.useMemo(() => {\n const localeValues = localePool.map((option) => option.value)\n return localeProp ??\n localeContext?.locale ??\n getPreferredLocale(\n [defaultLocale, ...getEnvironmentLocales(), Object.keys(currentValue)[0] as LanguageCode | undefined],\n localeValues\n )\n }, [currentValue, defaultLocale, localeContext?.locale, localePool, localeProp])\n\n const [internalLocale, setInternalLocale] = React.useState<LanguageCode>(initialLocale)\n const activeLocale = localeProp ?? localeContext?.locale ?? internalLocale\n\n React.useEffect(() => {\n if (!isControlled) {\n setInternalValue(initialValue)\n }\n }, [initialValue, isControlled])\n\n React.useEffect(() => {\n if (localeProp && localeProp !== internalLocale) {\n setInternalLocale(localeProp)\n }\n }, [internalLocale, localeProp])\n\n React.useEffect(() => {\n if (!localeProp && localeContext?.locale && localeContext.locale !== internalLocale) {\n setInternalLocale(localeContext.locale)\n }\n }, [internalLocale, localeContext?.locale, localeProp])\n\n const selectedOption =\n localePool.find((option) => option.value === activeLocale) ??\n localePool.find((option) => option.value === DEFAULT_LOCALE) ??\n localePool[0] ??\n null\n\n const [menuOpen, setMenuOpen] = React.useState(false)\n const rootRef = React.useRef<HTMLDivElement | null>(null)\n const inputRef = React.useRef<HTMLInputElement | HTMLTextAreaElement | null>(null)\n const triggerRef = React.useRef<HTMLButtonElement | null>(null)\n const containerRef = React.useRef<HTMLDivElement | null>(null)\n const selectRef = React.useRef<SelectInstance<LanguageOption, false> | null>(null)\n const searchInputRef = React.useRef<HTMLInputElement | null>(null)\n const selectionSnapshotRef = React.useRef<{ start: number | null; end: number | null } | null>(null)\n const [menuPosition, setMenuPosition] = React.useState<{ left: number; top: number }>({ left: 0, top: 0 })\n\n React.useImperativeHandle(forwardedRef, () => inputRef.current as HTMLInputElement & HTMLTextAreaElement, [])\n\n const handleLocaleSelect = (option: SingleValue<LanguageOption>) => {\n if (!option) return\n const nextLocale = option.value\n if (!isControlled) {\n setInternalLocale(nextLocale)\n }\n onLocaleChange?.(nextLocale, option)\n localeContext?.setLocale(nextLocale)\n closeMenu(true)\n }\n\n const handleTextChange = (event: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement>) => {\n const currentEntry = currentValue[activeLocale]\n const nextValue = {\n ...currentValue,\n [activeLocale]: {\n ...(currentEntry ?? {}),\n value: event.target.value,\n updatedAt: new Date(),\n autoTranslated: false,\n },\n }\n if (!isControlled) {\n setInternalValue(nextValue)\n }\n onChange?.(nextValue)\n }\n\n const currentText = resolveLocalizedValue(currentValue, activeLocale)\n\n const filterOption = React.useCallback(\n (option: { data: LanguageOption }) => {\n if (!searchTerm) return true\n const query = normalize(searchTerm)\n return option.data.searchable.some((token) => token.includes(query))\n },\n [searchTerm]\n )\n\n const buttonPosition = multiline ? \"left-2 top-2 -translate-y-0\" : \"left-3 top-1/2 -translate-y-1/2\"\n const inputPaddingLeft = \"pl-10 pr-3\"\n\n const updateMenuPosition = React.useCallback(() => {\n const trigger = triggerRef.current\n const container = containerRef.current\n if (!trigger || !container) return\n const triggerRect = trigger.getBoundingClientRect()\n const containerRect = container.getBoundingClientRect()\n setMenuPosition({\n left: triggerRect.left - containerRect.left,\n top: triggerRect.bottom - containerRect.top + 4,\n })\n }, [])\n\n const isInsideComponent = React.useCallback((target: EventTarget | null) => {\n if (!target || !(target instanceof Node)) return false\n return Boolean(rootRef.current?.contains(target))\n }, [])\n\n const restoreMainFocus = React.useCallback(() => {\n const target = inputRef.current\n if (!target) return\n target.focus()\n const selection = selectionSnapshotRef.current\n if (selection && selection.start != null && selection.end != null) {\n target.setSelectionRange(selection.start, selection.end)\n }\n }, [])\n\n React.useEffect(() => {\n if (!menuOpen) return\n const target = searchInputRef.current\n if (!target) return\n requestAnimationFrame(() => {\n if (document.activeElement === target) return\n target.focus()\n const end = target.value.length\n try {\n target.setSelectionRange(end, end)\n } catch {\n /* ignore */\n }\n })\n }, [menuOpen, searchTerm])\n\n const closeMenu = React.useCallback(\n (restoreFocus = true) => {\n setMenuOpen(false)\n setSearchTerm(\"\")\n if (restoreFocus) {\n requestAnimationFrame(() => {\n restoreMainFocus()\n })\n }\n },\n [restoreMainFocus]\n )\n\n const {\n components: userSelectComponents,\n styles: userSelectStyles,\n classNamePrefix: userClassNamePrefix,\n placeholder: selectPlaceholder,\n noOptionsMessage,\n ...forwardedSelectProps\n } = selectProps ?? {}\n\n const filteredOptions = React.useMemo(() => {\n const query = normalize(searchTerm)\n const rank = (option: LanguageOption) => {\n const code = option.code.toLowerCase()\n if (query && code === query) return 0\n if (query && code.startsWith(query)) return 1\n if (query && option.searchable.some((token) => token.startsWith(query))) return 2\n if (query && option.searchable.some((token) => token.includes(query))) return 3\n return 4\n }\n return localePool\n .filter((option) => filterOption({ data: option }))\n .sort((a, b) => {\n const diff = rank(a) - rank(b)\n if (diff !== 0) return diff\n return a.name.localeCompare(b.name)\n })\n }, [filterOption, localePool, searchTerm])\n\n const handleSearchKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {\n if (event.key === \"Escape\") {\n event.preventDefault()\n closeMenu(true)\n return\n }\n if (event.key === \"Enter\") {\n event.preventDefault()\n const first = filteredOptions[0]\n if (first) {\n handleLocaleSelect(first)\n }\n return\n }\n if (event.key === \"ArrowDown\" || event.key === \"ArrowUp\") {\n event.preventDefault()\n selectRef.current?.focus()\n }\n }\n\n const searchMenuContextValue: SearchMenuContextValue = {\n searchTerm,\n setSearchTerm,\n onSearchKeyDown: handleSearchKeyDown,\n searchInputRef,\n selectFooter,\n }\n\n const mergedSelectComponents = React.useMemo(\n () => ({\n Control: HiddenControl,\n IndicatorsContainer: NullComponent,\n DropdownIndicator: NullComponent,\n IndicatorSeparator: NullComponent,\n ValueContainer: NullComponent,\n MenuList: SearchableMenuList,\n ...(userSelectComponents ?? {}),\n Option,\n }),\n [userSelectComponents]\n )\n\n const mergedSelectStyles = React.useMemo<StylesConfig<LanguageOption, false>>(\n () => ({\n ...selectStyles,\n ...(userSelectStyles ?? {}),\n }),\n [userSelectStyles]\n )\n\n React.useLayoutEffect(() => {\n if (!menuOpen) return\n updateMenuPosition()\n const handleResize = () => updateMenuPosition()\n window.addEventListener(\"resize\", handleResize)\n return () => window.removeEventListener(\"resize\", handleResize)\n }, [menuOpen, updateMenuPosition])\n\n const sharedFieldProps = {\n ...restProps,\n ref: inputRef as React.Ref<any>,\n disabled,\n value: currentText,\n onChange: handleTextChange,\n onFocus: (event: React.FocusEvent<any>) => {\n if (menuOpen) {\n closeMenu(false)\n }\n restProps.onFocus?.(event)\n },\n onBlur: (event: React.FocusEvent<any>) => {\n if (!isInsideComponent(event.relatedTarget)) {\n closeMenu(false)\n }\n restProps.onBlur?.(event)\n },\n className: cn(\n \"w-full rounded-md border border-input bg-background text-base ring-offset-background 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 multiline ? \"min-h-24 py-2\" : \"h-10 py-2\",\n inputPaddingLeft,\n inputClassName\n ),\n placeholder: restProps.placeholder,\n }\n\n return (\n <div\n ref={rootRef}\n className={cn(\"relative flex flex-col\", className)}\n onBlur={(event) => {\n if (!isInsideComponent(event.relatedTarget)) {\n closeMenu(false)\n }\n }}\n >\n <div ref={containerRef} className=\"relative\">\n {multiline ? (\n <textarea rows={rows} {...sharedFieldProps} />\n ) : (\n <input type=\"text\" {...sharedFieldProps} />\n )}\n\n <button\n type=\"button\"\n className={cn(\n \"absolute flex h-6 w-6 items-center justify-center rounded border text-xs font-semibold leading-none transition focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n buttonPosition,\n disabled ? \"cursor-not-allowed opacity-50 pointer-events-none\" : \"cursor-pointer hover:bg-muted\",\n selectedOption ? \"border-transparent\" : \"border-dashed border-border text-muted-foreground\"\n )}\n aria-label={selectedOption ? `Select language (${selectedOption.code})` : \"Select language\"}\n onMouseDown={(event) => event.preventDefault()}\n onClick={() => {\n if (disabled) return\n const target = inputRef.current\n if (target) {\n selectionSnapshotRef.current = {\n start: target.selectionStart,\n end: target.selectionEnd,\n }\n }\n setSearchTerm(\"\")\n setMenuOpen(true)\n requestAnimationFrame(() => {\n if (searchInputRef.current) {\n searchInputRef.current.focus()\n searchInputRef.current.select()\n } else {\n selectRef.current?.focus()\n }\n })\n }}\n tabIndex={languageSelectTabIndex}\n disabled={disabled}\n ref={triggerRef}\n >\n <span aria-hidden=\"true\">{selectedOption ? languageCodeToBadge(selectedOption.code) : \"?\"}</span>\n </button>\n </div>\n\n <div\n className=\"absolute left-0 top-full z-30 mt-1\"\n style={{\n pointerEvents: menuOpen ? \"auto\" : \"none\",\n width: \"min(260px, 100%)\",\n left: menuPosition.left,\n top: menuPosition.top,\n }}\n >\n <SearchMenuContext.Provider value={searchMenuContextValue}>\n <Select<LanguageOption, false>\n {...forwardedSelectProps}\n menuIsOpen={menuOpen}\n options={filteredOptions}\n value={null}\n onChange={handleLocaleSelect}\n classNamePrefix={userClassNamePrefix ?? \"i18n-language-select\"}\n components={mergedSelectComponents}\n styles={mergedSelectStyles}\n isClearable={false}\n isSearchable={false}\n backspaceRemovesValue={false}\n tabSelectsValue\n menuShouldScrollIntoView={false}\n placeholder={selectPlaceholder ?? \"\"}\n filterOption={filterOption}\n noOptionsMessage={noOptionsMessage}\n onMenuClose={() => closeMenu(true)}\n ref={selectRef}\n />\n </SearchMenuContext.Provider>\n </div>\n </div>\n )\n }\n)\n\nI18nField.displayName = \"I18nField\"\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index301.js","names":["viewport","tolerance","option","next","matchingOption","event","target","container","popover","trigger","padding","firstEnabled","targetTop","targetBottom","viewportBottom","baseIndex","nextText","resolved","targetMinutes","closestOption","id","triggerTestId","disabled","readOnly","inputRef","placeholder","draft","triggerClassName","selectedLabel"],"sources":["../src/components/HourPickerField/index.tsx"],"sourcesContent":["import { Check, ChevronDown, ChevronUp } from \"lucide-react\"\nimport * as React from \"react\"\nimport { createPortal } from \"react-dom\"\nimport { IMaskInput } from \"react-imask\"\nimport IMask, { InputMask } from \"imask\"\n\nimport { useIsTouchDevice } from \"@/helpers/useIsTouchDevice\"\nimport { cn } from \"@/lib/utils\"\n\n\n// WARNING: used to preserve input mask even with tree shaking\n// DO NOT REMOVE THIS CODE OR THIS COMMENT\nconst imaskAny = IMask as any\nif (typeof imaskAny.InputMask !== \"function\") {\n imaskAny.InputMask = InputMask\n}\n\n\nexport type HourPickerOption = {\n value: string\n label: string\n selectedLabel?: React.ReactNode\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\nfunction getAcceptedInputSignature(raw: string) {\n const parsed = parseTimeInput(raw)\n if (parsed) {\n return `parsed:${parsed}`\n }\n\n const digits = raw.replace(/\\D/g, \"\")\n if (!digits) {\n return \"empty\"\n }\n\n if (digits.length <= 2) {\n return `hour:${Number(digits)}`\n }\n\n const minutePart = digits.slice(-2)\n const hourPart = digits.slice(0, -2)\n return `hour-minute:${Number(hourPart)}:${minutePart}`\n}\n\ntype ParsedTimeInputResult = {\n parsed: string\n selectableValue: string | null\n}\n\nfunction parseTimeInputWithSelectableOption(raw: string, options: HourPickerOption[]): ParsedTimeInputResult | null {\n const parsed = parseTimeInput(raw)\n if (!parsed) return null\n\n const parsedOption = options.find((option) => option.value === parsed)\n if (isOptionSelectable(parsedOption)) {\n return { parsed, selectableValue: parsed }\n }\n\n return { parsed, selectableValue: null }\n}\n\nfunction timeStringToMinutes(value: string) {\n const match = /^(\\d{2}):(\\d{2})$/.exec(value)\n if (!match) {\n return null\n }\n\n const hours = Number(match[1])\n const minutes = Number(match[2])\n\n if (!Number.isFinite(hours) || !Number.isFinite(minutes)) {\n return null\n }\n\n return hours * 60 + minutes\n}\n\nfunction isOptionSelectable(option: HourPickerOption | undefined) {\n if (!option) return false\n return !option.disabled\n}\n\nfunction findClosestSelectableOption(targetMinutes: number, options: HourPickerOption[]) {\n let bestOption: HourPickerOption | null = null\n let bestDiff = Number.POSITIVE_INFINITY\n let bestMinutes = Number.NEGATIVE_INFINITY\n\n for (const option of options) {\n if (!isOptionSelectable(option)) continue\n const optionMinutes = timeStringToMinutes(option.value)\n if (optionMinutes == null) continue\n\n const diff = Math.abs(optionMinutes - targetMinutes)\n if (diff < bestDiff || (diff === bestDiff && optionMinutes > bestMinutes)) {\n bestOption = option\n bestDiff = diff\n bestMinutes = optionMinutes\n }\n }\n\n return bestOption\n}\n\ntype HourPickerScrollButtonDirection = \"up\" | \"down\"\n\ntype HourPickerScrollButtonProps = {\n direction: HourPickerScrollButtonDirection\n viewportRef: React.RefObject<HTMLElement | null>\n speed?: number\n className?: string\n}\n\nfunction HourPickerScrollButton({\n direction,\n viewportRef,\n speed = 400,\n className,\n}: HourPickerScrollButtonProps) {\n const [disabled, setDisabled] = React.useState(true)\n const animationRef = React.useRef<number | undefined>(undefined)\n const lastTimeRef = React.useRef<number | undefined>(undefined)\n const isScrollingRef = React.useRef(false)\n\n const checkScrollability = React.useCallback(() => {\n const viewport = viewportRef.current\n if (!viewport) {\n setDisabled(true)\n return\n }\n\n const { scrollTop, scrollHeight, clientHeight } = viewport\n const tolerance = 2\n\n const canScrollUp = scrollTop > tolerance\n const canScrollDown = scrollTop < (scrollHeight - clientHeight - tolerance)\n const hasScrollableContent = scrollHeight > clientHeight + tolerance\n\n if (!hasScrollableContent) {\n setDisabled(true)\n return\n }\n\n const shouldDisable = direction === \"up\" ? !canScrollUp : !canScrollDown\n setDisabled(shouldDisable)\n }, [direction, viewportRef])\n\n React.useEffect(() => {\n const viewport = viewportRef.current\n if (!viewport) return\n\n checkScrollability()\n\n const handleScroll = () => checkScrollability()\n const handleResize = () => checkScrollability()\n\n viewport.addEventListener(\"scroll\", handleScroll, { passive: true })\n\n const resizeObserver = new ResizeObserver(handleResize)\n resizeObserver.observe(viewport)\n\n const mutationObserver = new MutationObserver(handleResize)\n mutationObserver.observe(viewport, { childList: true, subtree: true })\n\n return () => {\n viewport.removeEventListener(\"scroll\", handleScroll)\n resizeObserver.disconnect()\n mutationObserver.disconnect()\n }\n }, [viewportRef, checkScrollability])\n\n const stopScrolling = React.useCallback(() => {\n if (animationRef.current) {\n cancelAnimationFrame(animationRef.current)\n animationRef.current = undefined\n }\n isScrollingRef.current = false\n lastTimeRef.current = undefined\n }, [])\n\n const smoothScroll = React.useCallback(\n (currentTime: number) => {\n const viewport = viewportRef.current\n if (!viewport || disabled || !isScrollingRef.current) {\n stopScrolling()\n return\n }\n\n if (!lastTimeRef.current) {\n lastTimeRef.current = currentTime\n }\n\n const deltaTime = currentTime - lastTimeRef.current\n const distance = (speed * deltaTime) / 1000\n\n if (distance < 0.1) {\n animationRef.current = requestAnimationFrame(smoothScroll)\n return\n }\n\n const oldScrollTop = viewport.scrollTop\n const maxScroll = viewport.scrollHeight - viewport.clientHeight\n\n let newScrollTop: number\n if (direction === \"up\") {\n newScrollTop = Math.max(0, oldScrollTop - distance)\n } else {\n newScrollTop = Math.min(maxScroll, oldScrollTop + distance)\n }\n\n viewport.scrollTo({ top: newScrollTop })\n\n lastTimeRef.current = currentTime\n\n const tolerance = 1\n const canContinue =\n direction === \"up\"\n ? newScrollTop > tolerance\n : newScrollTop < (maxScroll - tolerance)\n\n if (canContinue && Math.abs(newScrollTop - oldScrollTop) > 0.01) {\n animationRef.current = requestAnimationFrame(smoothScroll)\n } else {\n stopScrolling()\n setTimeout(checkScrollability, 16)\n }\n },\n [checkScrollability, direction, disabled, speed, stopScrolling, viewportRef],\n )\n\n const startScrolling = React.useCallback(() => {\n if (disabled || !viewportRef.current || isScrollingRef.current) return\n\n isScrollingRef.current = true\n lastTimeRef.current = undefined\n animationRef.current = requestAnimationFrame(smoothScroll)\n }, [disabled, smoothScroll, viewportRef])\n\n React.useEffect(() => stopScrolling, [stopScrolling])\n\n return (\n <div\n className={cn(\n \"flex items-center justify-center py-1 select-none\",\n disabled ? \"cursor-default opacity-40\" : \"cursor-pointer opacity-100 hover:bg-accent/20\",\n className\n )}\n onPointerEnter={() => {\n if (!disabled) startScrolling()\n }}\n onPointerMove={() => {\n if (!disabled && !isScrollingRef.current) startScrolling()\n }}\n onPointerLeave={() => {\n stopScrolling()\n }}\n >\n {direction === \"up\"\n ? <ChevronUp aria-hidden className=\"h-4 w-4 opacity-50\" />\n : <ChevronDown aria-hidden className=\"h-4 w-4 opacity-50\" />}\n </div>\n )\n}\n\nexport type HourPickerInputProps = {\n id?: string\n value: string | null\n onChange: (value: string | null) => void\n onValueUpdate?: (value: string | null) => void\n options: HourPickerOption[]\n placeholder?: string\n className?: string\n inputClassName?: string\n disabled?: boolean\n readOnly?: boolean\n open?: boolean\n onOpenChange?: (open: boolean) => void\n triggerTestId?: string\n contentTestId?: string\n isHydrated?: boolean\n}\n\nexport function HourPickerInput({\n id,\n value,\n onChange,\n onValueUpdate,\n options,\n placeholder = \"Select time\",\n className,\n inputClassName,\n disabled,\n readOnly,\n open: openProp,\n onOpenChange,\n triggerTestId,\n contentTestId,\n isHydrated,\n}: HourPickerInputProps) {\n const reactId = React.useId()\n const triggerId = id ?? `hours-picker-${reactId}`\n const triggerInputRef = React.useRef<HTMLInputElement | null>(null)\n const setTriggerDraftValueRef = React.useRef<((value: string) => void) | null>(null)\n const setTriggerDraftValueHandler = React.useCallback((handler: ((value: string) => void) | null) => {\n setTriggerDraftValueRef.current = handler\n }, [])\n const highlightedValueRef = React.useRef<string | null>(null)\n const keyboardNavigationActiveRef = React.useRef(false)\n const [highlightedValue, setHighlightedValue] = React.useState<string | null>(null)\n const containerRef = React.useRef<HTMLDivElement | null>(null)\n const desktopPopoverRef = React.useRef<HTMLDivElement | null>(null)\n const desktopContentRef = React.useRef<HTMLDivElement | null>(null)\n const [desktopPopoverPosition, setDesktopPopoverPosition] = React.useState(() => ({\n left: 0,\n top: 0,\n width: 0,\n }))\n\n const [uncontrolledOpen, setUncontrolledOpen] = React.useState(false)\n const open = openProp ?? uncontrolledOpen\n const setOpen = onOpenChange ?? setUncontrolledOpen\n const openRef = React.useRef(false)\n openRef.current = open\n\n React.useEffect(() => {\n if (!open) {\n return\n }\n if (disabled || readOnly) {\n return\n }\n\n const input = triggerInputRef.current\n if (!(input instanceof HTMLInputElement)) {\n return\n }\n if (typeof document !== \"undefined\" && document.activeElement === input) {\n return\n }\n\n input.focus({ preventScroll: true })\n }, [disabled, open, readOnly])\n\n const updateHighlightedValue = React.useCallback((next: string | null) => {\n highlightedValueRef.current = next\n setHighlightedValue(next)\n }, [])\n\n const markKeyboardNavigation = React.useCallback(() => {\n keyboardNavigationActiveRef.current = true\n }, [])\n\n React.useEffect(() => {\n if (!open) return\n\n const currentOption = options.find((option) => option.value === value)\n if (currentOption && isOptionSelectable(currentOption)) {\n updateHighlightedValue(currentOption.value)\n return\n }\n\n const firstEnabled = options.find((option) => isOptionSelectable(option))\n updateHighlightedValue(firstEnabled?.value ?? null)\n }, [open, options, updateHighlightedValue, value])\n\n const updateValue = React.useCallback(\n (next: string | null) => {\n if (next === null) {\n if (onValueUpdate) {\n onValueUpdate(null)\n }\n return\n }\n\n const matchingOption = options.find((option) => option.value === next)\n if (!isOptionSelectable(matchingOption)) {\n return\n }\n\n if (onValueUpdate) {\n onValueUpdate(next)\n }\n },\n [onValueUpdate, options],\n )\n\n const commitValue = React.useCallback(\n (next: string | null) => {\n if (next === null) {\n if (onValueUpdate) {\n onValueUpdate(null)\n }\n onChange(null)\n return\n }\n\n const matchingOption = options.find((option) => option.value === next)\n if (!isOptionSelectable(matchingOption)) {\n return\n }\n\n if (onValueUpdate) {\n onValueUpdate(next)\n }\n\n onChange(next)\n },\n [onChange, onValueUpdate, options],\n )\n\n React.useEffect(() => {\n if (!open) return\n\n const ownerDocument = containerRef.current?.ownerDocument ?? document\n const ownerWindow = ownerDocument.defaultView ?? window\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 const handleKeyDown = (event: KeyboardEvent) => {\n if (event.key !== \"Escape\") {\n return\n }\n if (!openRef.current) {\n return\n }\n\n const target = event.target\n if (!(target instanceof Node)) {\n return\n }\n\n const container = containerRef.current\n const popover = desktopPopoverRef.current\n if (!container?.contains(target) && !popover?.contains(target)) {\n return\n }\n\n event.preventDefault()\n event.stopPropagation()\n setOpen(false)\n }\n\n ownerDocument.addEventListener(\"pointerdown\", handlePointerDown, true)\n ownerWindow.addEventListener(\"keydown\", handleKeyDown, true)\n return () => {\n ownerDocument.removeEventListener(\"pointerdown\", handlePointerDown, true)\n ownerWindow.removeEventListener(\"keydown\", handleKeyDown, true)\n }\n }, [open, setOpen])\n\n React.useEffect(() => {\n if (!open) {\n return\n }\n\n const popover = desktopPopoverRef.current\n if (!popover) {\n return\n }\n\n const handleWheel = (event: WheelEvent) => {\n const viewport = desktopContentRef.current\n if (!viewport) {\n return\n }\n\n const deltaY = event.deltaY\n if (deltaY === 0) {\n return\n }\n\n const maxScrollTop = Math.max(0, viewport.scrollHeight - viewport.clientHeight)\n const atTop = viewport.scrollTop <= 0\n const atBottom = viewport.scrollTop >= maxScrollTop\n\n const target = event.target\n const isWheelOverViewport = target instanceof Node && viewport.contains(target)\n\n if (isWheelOverViewport) {\n if ((deltaY < 0 && atTop) || (deltaY > 0 && atBottom)) {\n event.preventDefault()\n }\n return\n }\n\n event.preventDefault()\n const nextScrollTop = Math.min(maxScrollTop, Math.max(0, viewport.scrollTop + deltaY))\n viewport.scrollTop = nextScrollTop\n }\n\n popover.addEventListener(\"wheel\", handleWheel, { passive: false })\n return () => {\n popover.removeEventListener(\"wheel\", handleWheel)\n }\n }, [open])\n\n React.useEffect(() => {\n if (!open) {\n return\n }\n if (openProp !== undefined && !onOpenChange) {\n return\n }\n if (typeof window === \"undefined\") {\n return\n }\n if (!(\"IntersectionObserver\" in window)) {\n return\n }\n\n const trigger = triggerInputRef.current\n if (!(trigger instanceof HTMLElement)) {\n return\n }\n\n let isActive = true\n const observer = new IntersectionObserver(entries => {\n if (!isActive) {\n return\n }\n const entry = entries[0]\n if (entry && !entry.isIntersecting) {\n setOpen(false)\n }\n })\n observer.observe(trigger)\n return () => {\n isActive = false\n observer.disconnect()\n }\n }, [onOpenChange, open, openProp, setOpen])\n\n const updateDesktopPopoverPosition = React.useCallback(() => {\n if (typeof window === \"undefined\") return\n\n const trigger = triggerInputRef.current\n const popover = desktopPopoverRef.current\n if (!(trigger instanceof HTMLElement) || !popover) return\n\n const rect = trigger.getBoundingClientRect()\n const popoverHeight = popover.offsetHeight\n const viewportWidth = window.innerWidth ?? 0\n const viewportHeight = window.innerHeight ?? 0\n const padding = 8\n\n const width = rect.width\n\n let left = rect.left\n if (left + width > viewportWidth - padding) {\n left = Math.max(padding, viewportWidth - width - padding)\n }\n if (left < padding) {\n left = padding\n }\n\n let top = rect.bottom + padding\n const overflowBottom = top + popoverHeight > viewportHeight - padding\n const aboveTop = rect.top - popoverHeight - padding\n if (overflowBottom && aboveTop >= padding) {\n top = aboveTop\n }\n\n if (top < padding) {\n top = padding\n }\n if (top + popoverHeight > viewportHeight - padding) {\n top = Math.max(padding, viewportHeight - popoverHeight - padding)\n }\n\n setDesktopPopoverPosition({ left, top, width })\n }, [])\n\n // React Compiler rejects hook aliasing (useIsomorphicLayoutEffect pattern), so we\n // call useLayoutEffect directly and keep the SSR guard inside the effect.\n React.useLayoutEffect(() => {\n if (!open || disabled) return\n if (typeof window === \"undefined\") return\n\n updateDesktopPopoverPosition()\n const rafId = window.requestAnimationFrame(updateDesktopPopoverPosition)\n\n window.addEventListener(\"scroll\", updateDesktopPopoverPosition, true)\n window.addEventListener(\"resize\", updateDesktopPopoverPosition)\n return () => {\n window.cancelAnimationFrame(rafId)\n window.removeEventListener(\"scroll\", updateDesktopPopoverPosition, true)\n window.removeEventListener(\"resize\", updateDesktopPopoverPosition)\n }\n }, [disabled, open, updateDesktopPopoverPosition])\n\n React.useEffect(() => {\n if (!open) return\n\n const viewport = desktopContentRef.current\n if (!viewport) return\n\n const run = () => {\n const selected = viewport.querySelector(\"[role=\\\"option\\\"][data-state=\\\"checked\\\"]\")\n if (selected instanceof HTMLElement) {\n const padding = 8\n const targetTop = selected.offsetTop - padding\n const targetBottom = selected.offsetTop + selected.offsetHeight + padding\n\n if (targetTop < viewport.scrollTop) {\n viewport.scrollTop = Math.max(0, targetTop)\n return\n }\n\n const viewportBottom = viewport.scrollTop + viewport.clientHeight\n if (targetBottom > viewportBottom) {\n viewport.scrollTop = Math.max(0, targetBottom - viewport.clientHeight)\n }\n return\n }\n\n const all = Array.from(viewport.querySelectorAll(\"[role=\\\"option\\\"]\")) as HTMLElement[]\n if (!all.length) return\n\n let firstEnabled: HTMLElement | undefined\n let lastDisabledBefore: HTMLElement | undefined\n\n for (const el of all) {\n const isDisabled = el.hasAttribute(\"data-disabled\")\n if (!isDisabled) {\n firstEnabled = el\n break\n }\n lastDisabledBefore = el\n }\n\n if (!firstEnabled) return\n\n const target = lastDisabledBefore ? lastDisabledBefore : firstEnabled\n\n const offset = Math.max(0, target.offsetTop - 8)\n viewport.scrollTop = offset\n }\n\n const raf = requestAnimationFrame(run)\n return () => cancelAnimationFrame(raf)\n }, [open, options])\n\n React.useEffect(() => {\n if (!open) return\n if (!highlightedValue) return\n if (!keyboardNavigationActiveRef.current) return\n\n const viewport = desktopContentRef.current\n if (!viewport) return\n\n const target = viewport.querySelector(`[role=\"option\"][data-value=\"${highlightedValue}\"]`)\n if (!(target instanceof HTMLElement)) return\n\n const padding = 8\n const targetTop = target.offsetTop - padding\n const targetBottom = target.offsetTop + target.offsetHeight + padding\n\n if (targetTop < viewport.scrollTop) {\n viewport.scrollTop = Math.max(0, targetTop)\n return\n }\n\n const viewportBottom = viewport.scrollTop + viewport.clientHeight\n if (targetBottom > viewportBottom) {\n viewport.scrollTop = Math.max(0, targetBottom - viewport.clientHeight)\n }\n }, [highlightedValue, open])\n\n const selectedOption = options.find((option) => option.value === value)\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 selectedLabel={selectedOption?.selectedLabel}\n disabled={disabled}\n readOnly={readOnly}\n open={open}\n setOpen={setOpen}\n inputClassName={inputClassName}\n triggerTestId={triggerTestId}\n isHydrated={isHydrated}\n highlightedValueRef={highlightedValueRef}\n setHighlightedValue={updateHighlightedValue}\n markKeyboardNavigation={markKeyboardNavigation}\n inputRef={(node) => {\n triggerInputRef.current = node\n }}\n onDraftValueHandlerChange={setTriggerDraftValueHandler}\n />\n\n {open ? (() => {\n const popover = (\n <>\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 </>\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 readOnly,\n open,\n onOpenChange,\n triggerTestId,\n contentTestId,\n isHydrated,\n}: HourPickerFieldProps) {\n const reactId = React.useId()\n const triggerId = id ?? `hours-picker-${reactId}`\n const triggerRef = React.useRef<HTMLButtonElement | null>(null)\n const containerRef = React.useRef<HTMLDivElement | null>(null)\n const popoverRef = React.useRef<HTMLDivElement | null>(null)\n const viewportRef = React.useRef<HTMLDivElement | null>(null)\n const [popoverPosition, setPopoverPosition] = React.useState(() => ({\n left: 0,\n top: 0,\n width: 0,\n }))\n const [uncontrolledOpen, setUncontrolledOpen] = React.useState(false)\n const resolvedOpen = open ?? uncontrolledOpen\n const setOpen = onOpenChange ?? setUncontrolledOpen\n const openRef = React.useRef(false)\n openRef.current = resolvedOpen\n\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 const updatePopoverPosition = React.useCallback(() => {\n if (typeof window === \"undefined\") {\n return\n }\n\n const trigger = triggerRef.current\n const popover = popoverRef.current\n if (!(trigger instanceof HTMLElement) || !popover) {\n return\n }\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 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 setPopoverPosition({ left, top, width })\n }, [])\n\n React.useLayoutEffect(() => {\n if (!resolvedOpen || disabled) {\n return\n }\n if (typeof window === \"undefined\") {\n return\n }\n\n updatePopoverPosition()\n const rafId = window.requestAnimationFrame(updatePopoverPosition)\n\n window.addEventListener(\"scroll\", updatePopoverPosition, true)\n window.addEventListener(\"resize\", updatePopoverPosition)\n return () => {\n window.cancelAnimationFrame(rafId)\n window.removeEventListener(\"scroll\", updatePopoverPosition, true)\n window.removeEventListener(\"resize\", updatePopoverPosition)\n }\n }, [disabled, resolvedOpen, updatePopoverPosition])\n\n React.useEffect(() => {\n if (!resolvedOpen) {\n return\n }\n\n const ownerDocument = containerRef.current?.ownerDocument ?? document\n const ownerWindow = ownerDocument.defaultView ?? window\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?.contains(target)) {\n return\n }\n\n const popover = popoverRef.current\n if (popover?.contains(target)) {\n return\n }\n\n setOpen(false)\n }\n\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.key !== \"Escape\" || !openRef.current) {\n return\n }\n\n const target = event.target\n if (!(target instanceof Node)) {\n return\n }\n\n const container = containerRef.current\n const popover = popoverRef.current\n if (!container?.contains(target) && !popover?.contains(target)) {\n return\n }\n\n event.preventDefault()\n event.stopPropagation()\n setOpen(false)\n triggerRef.current?.focus({ preventScroll: true })\n }\n\n ownerDocument.addEventListener(\"pointerdown\", handlePointerDown, true)\n ownerWindow.addEventListener(\"keydown\", handleKeyDown, true)\n return () => {\n ownerDocument.removeEventListener(\"pointerdown\", handlePointerDown, true)\n ownerWindow.removeEventListener(\"keydown\", handleKeyDown, true)\n }\n }, [resolvedOpen, setOpen])\n\n const selectedOption = options.find((option) => option.value === value)\n const selectedLabel = selectedOption?.selectedLabel ?? selectedOption?.label ?? value\n\n return (\n <div\n data-slot=\"hours-picker-field\"\n className={cn(\"w-[150px]\", className)}\n ref={containerRef}\n >\n <button\n ref={triggerRef}\n id={triggerId}\n type=\"button\"\n role=\"combobox\"\n aria-expanded={resolvedOpen}\n aria-controls={`${triggerId}-content`}\n disabled={disabled}\n data-testid={triggerTestId}\n data-hydrated={isHydrated ? \"true\" : undefined}\n className={cn(\n \"flex h-10 w-full items-center justify-between rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50\",\n \"hover:bg-accent hover:text-accent-foreground\",\n !value && \"text-muted-foreground\",\n resolvedOpen && \"ring-2 ring-primary ring-offset-2\",\n inputClassName,\n )}\n onClick={() => {\n if (disabled || readOnly) {\n return\n }\n setOpen(!resolvedOpen)\n }}\n >\n <span className=\"line-clamp-1 text-left\">\n {value ? selectedLabel : placeholder}\n </span>\n <ChevronDown aria-hidden className=\"h-4 w-4 shrink-0 opacity-50\" />\n </button>\n\n {resolvedOpen ? (() => {\n const popover = (\n <>\n <div\n ref={popoverRef}\n id={`${triggerId}-content`}\n data-testid={contentTestId}\n data-state=\"open\"\n className={cn(\n \"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: popoverPosition.left,\n top: popoverPosition.top,\n width: popoverPosition.width,\n }}\n >\n <HourPickerScrollButton\n direction=\"up\"\n viewportRef={viewportRef}\n />\n\n <div\n ref={viewportRef}\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 isChecked && \"bg-accent text-accent-foreground\",\n )}\n onMouseDown={(event) => {\n event.preventDefault()\n }}\n onClick={() => {\n if (option.disabled || readOnly) {\n return\n }\n\n commitValue(option.value)\n setOpen(false)\n triggerRef.current?.focus({ preventScroll: true })\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={viewportRef}\n />\n </div>\n </>\n )\n\n if (typeof document === \"undefined\") {\n return popover\n }\n\n return createPortal(popover, document.body)\n })() : null}\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 selectedLabel?: React.ReactNode\n disabled?: boolean\n readOnly?: boolean\n open: boolean\n setOpen: (open: boolean) => void\n inputClassName?: string\n triggerTestId?: string\n isHydrated?: boolean\n highlightedValueRef: React.MutableRefObject<string | null>\n setHighlightedValue: (value: string | null) => void\n markKeyboardNavigation: () => void\n inputRef: (node: HTMLInputElement | null) => void\n onDraftValueHandlerChange: (handler: ((value: string) => void) | null) => void\n}\n\nfunction HourPickerMaskedSelectTrigger({\n id,\n placeholder,\n value,\n onValueUpdate,\n onCommit,\n options,\n selectedLabel,\n disabled,\n readOnly,\n open,\n setOpen,\n inputClassName,\n triggerTestId,\n isHydrated,\n highlightedValueRef,\n setHighlightedValue,\n markKeyboardNavigation,\n inputRef,\n onDraftValueHandlerChange,\n}: HourPickerMaskedSelectTriggerProps) {\n const isEditingRef = React.useRef(false)\n const pointerDownOnInputRef = React.useRef(false)\n const inputWasFocusedOnPointerDownRef = React.useRef(false)\n const ignoreNextMaskCommitValueRef = React.useRef<string | null>(null)\n const lastAcceptedSignatureRef = React.useRef<string | null>(null)\n const clearCommitPendingRef = React.useRef(false)\n\n const [draft, setDraft] = React.useState(() => (value ? value : \"\"))\n\n React.useEffect(() => {\n onDraftValueHandlerChange((nextValue) => {\n setDraft(nextValue)\n })\n return () => {\n onDraftValueHandlerChange(null)\n }\n }, [onDraftValueHandlerChange])\n\n const moveSelection = React.useCallback(\n (direction: -1 | 1) => {\n const base = highlightedValueRef.current ?? value ?? \"\"\n\n let baseIndex = options.findIndex((option) => option.value === base)\n if (baseIndex === -1) {\n baseIndex = direction === 1 ? -1 : options.length\n }\n\n for (let nextIndex = baseIndex + direction; nextIndex >= 0 && nextIndex < options.length; nextIndex += direction) {\n const nextOption = options[nextIndex]\n if (!isOptionSelectable(nextOption)) continue\n\n setHighlightedValue(nextOption.value)\n ignoreNextMaskCommitValueRef.current = nextOption.value\n setDraft(nextOption.value)\n onValueUpdate(nextOption.value)\n return\n }\n },\n [highlightedValueRef, onValueUpdate, options, setHighlightedValue, value],\n )\n\n React.useEffect(() => {\n if (isEditingRef.current) return\n setDraft(value ? value : \"\")\n }, [value])\n\n React.useEffect(() => {\n lastAcceptedSignatureRef.current = getAcceptedInputSignature(draft)\n }, [draft])\n\n React.useEffect(() => {\n if (value === null) {\n clearCommitPendingRef.current = false\n }\n }, [value])\n\n const triggerClassName = cn(\n \"peer 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 value && selectedLabel != null && \"text-transparent focus:text-foreground\",\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, _mask, event) => {\n if (!event) {\n return\n }\n const nextText = typeof accepted === \"string\" ? accepted : String(accepted ?? \"\")\n const nextDigits = nextText.replace(/\\D/g, \"\")\n const nextSignature = getAcceptedInputSignature(nextText)\n if (lastAcceptedSignatureRef.current === nextSignature) {\n return\n }\n lastAcceptedSignatureRef.current = nextSignature\n setDraft(nextText)\n\n if (nextDigits.length !== 0) {\n clearCommitPendingRef.current = false\n return\n }\n\n if (value && !clearCommitPendingRef.current) {\n clearCommitPendingRef.current = true\n onCommit(null)\n }\n }}\n onComplete={(completed, _mask, event) => {\n if (!event) {\n return\n }\n const nextText = typeof completed === \"string\" ? completed : String(completed ?? \"\")\n if (ignoreNextMaskCommitValueRef.current === nextText) {\n ignoreNextMaskCommitValueRef.current = null\n return\n }\n\n const resolved = parseTimeInputWithSelectableOption(nextText, options)\n if (!resolved) {\n return\n }\n\n if (resolved.selectableValue) {\n setHighlightedValue(resolved.selectableValue)\n setDraft(resolved.selectableValue)\n\n if (value === resolved.selectableValue) {\n return\n }\n\n onCommit(resolved.selectableValue)\n return\n }\n\n const targetMinutes = timeStringToMinutes(resolved.parsed)\n if (targetMinutes == null) {\n return\n }\n\n const closestOption = findClosestSelectableOption(targetMinutes, options)\n if (!closestOption) {\n return\n }\n\n setHighlightedValue(closestOption.value)\n }}\n onPointerDown={() => {\n pointerDownOnInputRef.current = true\n if (disabled) return\n if (!open) {\n setOpen(true)\n }\n }}\n onMouseDown={(event) => {\n pointerDownOnInputRef.current = true\n inputWasFocusedOnPointerDownRef.current = typeof document !== \"undefined\" && document.activeElement === event.currentTarget\n if (disabled) return\n if (!open) {\n setOpen(true)\n }\n }}\n onClick={() => {\n if (disabled) return\n if (!open) {\n setOpen(true)\n }\n }}\n onKeyDown={(event) => {\n if (disabled) {\n return\n }\n\n if (event.key === \"Tab\" && open && !event.defaultPrevented) {\n setOpen(false)\n return\n }\n\n if (event.key === \"Escape\") {\n if (!open) {\n return\n }\n event.preventDefault()\n setOpen(false)\n return\n }\n\n if (!open && !event.defaultPrevented) {\n const shouldReopen =\n (event.key.length === 1 || event.key === \"Backspace\" || event.key === \"Delete\") &&\n !event.ctrlKey &&\n !event.metaKey &&\n !event.altKey\n\n if (shouldReopen) {\n setOpen(true)\n }\n }\n\n if (event.key === \"ArrowDown\" || event.key === \"ArrowUp\") {\n markKeyboardNavigation()\n event.preventDefault()\n\n if (!open) {\n setOpen(true)\n return\n }\n\n moveSelection(event.key === \"ArrowDown\" ? 1 : -1)\n return\n }\n\n if (event.key === \"Enter\") {\n markKeyboardNavigation()\n const resolved = parseTimeInputWithSelectableOption(draft, options)\n if (!resolved) {\n if (!open) {\n return\n }\n\n if (draft.trim() !== \"\") {\n return\n }\n\n const highlightedOption = options.find((option) => option.value === highlightedValueRef.current)\n const fallbackValue =\n (isOptionSelectable(highlightedOption) ? highlightedOption?.value : undefined) ??\n options.find((option) => isOptionSelectable(option))?.value\n\n if (!fallbackValue) {\n return\n }\n\n event.preventDefault()\n setHighlightedValue(fallbackValue)\n setDraft(fallbackValue)\n onCommit(fallbackValue)\n setOpen(false)\n return\n }\n\n if (resolved.selectableValue) {\n event.preventDefault()\n setHighlightedValue(resolved.selectableValue)\n setDraft(resolved.selectableValue)\n onCommit(resolved.selectableValue)\n setOpen(false)\n return\n }\n\n const targetMinutes = timeStringToMinutes(resolved.parsed)\n if (targetMinutes == null) {\n return\n }\n\n const closestOption = findClosestSelectableOption(targetMinutes, options)\n if (!closestOption) {\n return\n }\n\n event.preventDefault()\n setHighlightedValue(closestOption.value)\n setDraft(closestOption.value)\n onCommit(closestOption.value)\n setOpen(false)\n return\n }\n }}\n onFocus={(event) => {\n const shouldSelectAll = !pointerDownOnInputRef.current || !inputWasFocusedOnPointerDownRef.current\n pointerDownOnInputRef.current = false\n inputWasFocusedOnPointerDownRef.current = false\n isEditingRef.current = true\n if (shouldSelectAll) {\n const element = event.currentTarget\n requestAnimationFrame(() => element.select())\n }\n\n if (disabled) {\n return\n }\n\n if (open) {\n return\n }\n\n setOpen(true)\n }}\n onBlur={() => {\n isEditingRef.current = false\n\n const trimmed = draft.trim()\n if (!trimmed) {\n setDraft(value ? value : \"\")\n return\n }\n\n const resolved = parseTimeInputWithSelectableOption(trimmed, options)\n if (!resolved) {\n setDraft(value ? value : \"\")\n return\n }\n\n if (!resolved.selectableValue) {\n setDraft(value ? value : \"\")\n return\n }\n\n setDraft(resolved.selectableValue)\n if (value !== resolved.selectableValue) {\n onCommit(resolved.selectableValue)\n }\n }}\n />\n\n {value && selectedLabel != null ? (\n <span\n aria-hidden=\"true\"\n data-slot=\"hours-picker-input-selected-label\"\n className={cn(\n \"pointer-events-none absolute inset-y-0 left-3 right-10 flex min-w-0 items-center text-base peer-focus:hidden md:text-sm\",\n disabled && \"opacity-50\",\n )}\n >\n <span className=\"min-w-0 truncate\">{selectedLabel}</span>\n </span>\n ) : null}\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"],"mappings":"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"}
|