@rpcbase/ui 0.280.0 → 0.282.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 +88 -88
- 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/index14.js
CHANGED
|
@@ -4,18 +4,18 @@ import { cn as n } from "./index12.js";
|
|
|
4
4
|
import { Input as r } from "./index13.js";
|
|
5
5
|
import { c as i } from "react/compiler-runtime";
|
|
6
6
|
import { useEffect as a, useMemo as o, useRef as s, useState as c } from "react";
|
|
7
|
-
import { Loader2 as
|
|
8
|
-
import { Fragment as
|
|
7
|
+
import { Loader2 as l } from "lucide-react";
|
|
8
|
+
import { Fragment as u, jsx as d, jsxs as f } from "react/jsx-runtime";
|
|
9
9
|
//#region src/components/AddressAutocompleteInput/index.tsx
|
|
10
|
-
var
|
|
10
|
+
var p = /* @__PURE__ */ new Set(/* @__PURE__ */ "street_address.route.premise.subpremise.intersection.sublocality.sublocality_level_1.sublocality_level_2.sublocality_level_3.sublocality_level_4.sublocality_level_5.administrative_area_level_1.administrative_area_level_2.administrative_area_level_3.administrative_area_level_4.administrative_area_level_5.administrative_area_level_6.administrative_area_level_7.postal_code.locality.country.geocode.plus_code.political.neighborhood.colloquial_area.lodging.train_station.transit_station".split(".")), m = /* @__PURE__ */ new WeakMap(), h = (e) => (m.get(e) ?? e.text?.text ?? "").replace(/, France$/, "").trim(), g = (e) => {
|
|
11
11
|
let t = i(8), { prediction: n } = e, r, a, o;
|
|
12
12
|
if (t[0] !== n) {
|
|
13
13
|
o = Symbol.for("react.early_return_sentinel");
|
|
14
14
|
bb0: {
|
|
15
|
-
r =
|
|
16
|
-
let e =
|
|
15
|
+
r = h(n);
|
|
16
|
+
let e = m.get(n) ?? n.text?.text ?? "", t = n.text?.matches ?? [], i = r.length < e.length;
|
|
17
17
|
if (t.length === 0) {
|
|
18
|
-
o = /* @__PURE__ */ u
|
|
18
|
+
o = /* @__PURE__ */ d(u, { children: r });
|
|
19
19
|
break bb0;
|
|
20
20
|
}
|
|
21
21
|
a = [];
|
|
@@ -25,7 +25,7 @@ var f = /* @__PURE__ */ new Set(/* @__PURE__ */ "street_address.route.premise.su
|
|
|
25
25
|
let n = e.startOffset, o = Math.min(e.endOffset, r.length);
|
|
26
26
|
if (n > s && a.push(r.substring(s, n)), o > n) {
|
|
27
27
|
let e = r.substring(n, o);
|
|
28
|
-
a.push(/* @__PURE__ */
|
|
28
|
+
a.push(/* @__PURE__ */ d("strong", { children: e }, t));
|
|
29
29
|
}
|
|
30
30
|
s = Math.max(s, o);
|
|
31
31
|
}), s < r.length && a.push(r.substring(s));
|
|
@@ -35,133 +35,133 @@ var f = /* @__PURE__ */ new Set(/* @__PURE__ */ "street_address.route.premise.su
|
|
|
35
35
|
if (o !== Symbol.for("react.early_return_sentinel")) return o;
|
|
36
36
|
if (a.length === 0) {
|
|
37
37
|
let e;
|
|
38
|
-
return t[4] === r ? e = t[5] : (e = /* @__PURE__ */ u
|
|
38
|
+
return t[4] === r ? e = t[5] : (e = /* @__PURE__ */ d(u, { children: r }), t[4] = r, t[5] = e), e;
|
|
39
39
|
}
|
|
40
40
|
let s;
|
|
41
|
-
return t[6] === a ? s = t[7] : (s = /* @__PURE__ */ u
|
|
42
|
-
},
|
|
41
|
+
return t[6] === a ? s = t[7] : (s = /* @__PURE__ */ d(u, { children: a }), t[6] = a, t[7] = s), s;
|
|
42
|
+
}, _ = (e, t) => !e.types || e.types.length === 0 || !t || t.size === 0 || e.types.some((e) => t.has(e)), ee = (e) => e.types?.some((e) => e === "establishment" || e === "point_of_interest") ?? !1, v = (e, t) => e.placeId || `${e.text?.text ?? "prediction"}-${t}`, y = (e) => {
|
|
43
43
|
let t = /* @__PURE__ */ new Map();
|
|
44
44
|
return e.forEach((e) => {
|
|
45
45
|
let n = e.placeId;
|
|
46
46
|
n && (t.has(n) || t.set(n, e));
|
|
47
47
|
}), Array.from(t.values());
|
|
48
|
-
}, b = (e, t) => e.filter((e) =>
|
|
49
|
-
let [
|
|
50
|
-
if (!
|
|
48
|
+
}, b = (e, t) => e.filter((e) => _(e, t)), x = (e) => e.sort((e, t) => (e.distanceMeters ?? Infinity) - (t.distanceMeters ?? Infinity)), S = (e, t) => x(b(y(e), t)), C = (e, t) => h(e).toLowerCase() === t.trim().toLowerCase(), w = ({ id: i, label: u, placeholder: _, value: y, onValueChange: b, disabled: x, name: w, className: T, autofillShimName: te, googleMapsApiKey: E, locationRestriction: D, allowedTypes: O, loadingIndicator: k }) => {
|
|
49
|
+
let [A, j] = c(y ?? ""), [M, N] = c([]), [P, F] = c(!1), [I, L] = c(-1), [R, z] = c(!1), B = s(null), V = s(null), H = s(!1), U = s(!1), W = s(null), G = s(/* @__PURE__ */ new Map()), K = s([]), q = s("smooth"), J = s(y), Y = s(b), X = e("places", E), Z = o(() => {
|
|
50
|
+
if (!O) return p;
|
|
51
51
|
let e = /* @__PURE__ */ new Set();
|
|
52
|
-
for (let t of
|
|
52
|
+
for (let t of O) e.add(t);
|
|
53
53
|
return e;
|
|
54
|
-
}, [
|
|
54
|
+
}, [O]);
|
|
55
55
|
a(() => {
|
|
56
|
-
|
|
56
|
+
j(y ?? ""), U.current = !1;
|
|
57
57
|
}, [y]), a(() => {
|
|
58
|
-
|
|
59
|
-
|
|
58
|
+
J.current = y, Y.current = b;
|
|
59
|
+
}, [b, y]), a(() => {
|
|
60
|
+
if (H.current) {
|
|
61
|
+
H.current = !1;
|
|
60
62
|
return;
|
|
61
63
|
}
|
|
62
|
-
let e =
|
|
63
|
-
|
|
64
|
+
let e = A.trim();
|
|
65
|
+
z(e !== "");
|
|
64
66
|
let t = !0, n = setTimeout(() => {
|
|
65
67
|
if (!t) return;
|
|
66
68
|
if (e === "") {
|
|
67
|
-
|
|
69
|
+
N([]), F(!1), W.current = null, J.current !== "" && Y.current("");
|
|
68
70
|
return;
|
|
69
71
|
}
|
|
70
|
-
if (!
|
|
71
|
-
let { AutocompleteSuggestion: n, AutocompleteSessionToken: r } =
|
|
72
|
+
if (!X) return;
|
|
73
|
+
let { AutocompleteSuggestion: n, AutocompleteSessionToken: r } = X;
|
|
72
74
|
if (!n || !r) {
|
|
73
|
-
console.error("AddressAutocompleteInput: missing AutocompleteSuggestion or AutocompleteSessionToken exports"),
|
|
75
|
+
console.error("AddressAutocompleteInput: missing AutocompleteSuggestion or AutocompleteSessionToken exports"), N([]), F(!1), z(!1);
|
|
74
76
|
return;
|
|
75
77
|
}
|
|
76
|
-
|
|
78
|
+
W.current ||= new r();
|
|
77
79
|
let i = {
|
|
78
|
-
input:
|
|
79
|
-
sessionToken:
|
|
80
|
+
input: A,
|
|
81
|
+
sessionToken: W.current ?? void 0,
|
|
80
82
|
includedRegionCodes: ["fr"]
|
|
81
83
|
};
|
|
82
|
-
|
|
84
|
+
D && (i.locationRestriction = D), n.fetchAutocompleteSuggestions(i).then(async (e) => {
|
|
83
85
|
if (!t) return;
|
|
84
|
-
let n = S(e.suggestions.map((e) => e.placePrediction).filter((e) => !!e),
|
|
86
|
+
let n = S(e.suggestions.map((e) => e.placePrediction).filter((e) => !!e), Z);
|
|
85
87
|
if (await Promise.all(n.map(async (e) => {
|
|
86
88
|
let t = e.placeId;
|
|
87
|
-
if (!t || !
|
|
88
|
-
let n =
|
|
89
|
+
if (!t || !ee(e)) return;
|
|
90
|
+
let n = G.current.get(t);
|
|
89
91
|
n || (n = (async () => {
|
|
90
92
|
try {
|
|
91
93
|
let t = (await e.toPlace().fetchFields({ fields: ["formattedAddress"] })).place.formattedAddress?.trim(), n = e.mainText?.text?.trim();
|
|
92
94
|
return !t || !n ? void 0 : `${n}, ${t}`;
|
|
93
95
|
} catch (e) {
|
|
94
|
-
|
|
96
|
+
G.current.delete(t), console.error("AddressAutocompleteInput: place details fetch failed", e);
|
|
95
97
|
return;
|
|
96
98
|
}
|
|
97
|
-
})(),
|
|
99
|
+
})(), G.current.set(t, n));
|
|
98
100
|
let r = await n;
|
|
99
|
-
r &&
|
|
101
|
+
r && m.set(e, r);
|
|
100
102
|
})), !t) return;
|
|
101
|
-
let r = n[0], i = r && n.length === 1 && C(r,
|
|
102
|
-
if (!
|
|
103
|
-
|
|
103
|
+
let r = n[0], i = r && n.length === 1 && C(r, A);
|
|
104
|
+
if (!U.current && i) {
|
|
105
|
+
N(n), F(!1), z(!1);
|
|
104
106
|
return;
|
|
105
107
|
}
|
|
106
|
-
n.length > 0 ? (
|
|
108
|
+
n.length > 0 ? (N(n), U.current && F(!0), L(-1)) : (N([]), F(!1)), z(!1);
|
|
107
109
|
}).catch((e) => {
|
|
108
|
-
t && (console.error("AddressAutocompleteInput: suggestion fetch failed", e),
|
|
110
|
+
t && (console.error("AddressAutocompleteInput: suggestion fetch failed", e), N([]), F(!1), z(!1));
|
|
109
111
|
});
|
|
110
112
|
}, 300);
|
|
111
113
|
return () => {
|
|
112
114
|
t = !1, clearTimeout(n);
|
|
113
115
|
};
|
|
114
116
|
}, [
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
O,
|
|
120
|
-
X
|
|
117
|
+
A,
|
|
118
|
+
X,
|
|
119
|
+
D,
|
|
120
|
+
Z
|
|
121
121
|
]), a(() => {
|
|
122
122
|
let e = (e) => {
|
|
123
|
-
|
|
123
|
+
B.current && !B.current.contains(e.target) && V.current && !V.current.contains(e.target) && F(!1);
|
|
124
124
|
};
|
|
125
125
|
return document.addEventListener("mousedown", e), () => {
|
|
126
126
|
document.removeEventListener("mousedown", e);
|
|
127
127
|
};
|
|
128
128
|
}, []);
|
|
129
|
-
let
|
|
130
|
-
|
|
131
|
-
let t =
|
|
132
|
-
|
|
133
|
-
},
|
|
134
|
-
|
|
135
|
-
},
|
|
136
|
-
if (!
|
|
137
|
-
e.key === "Enter" && (e.preventDefault(), b(
|
|
129
|
+
let Q = (e) => {
|
|
130
|
+
H.current = !0;
|
|
131
|
+
let t = h(e);
|
|
132
|
+
j(t), b(t), N([]), F(!1), z(!1), W.current = null;
|
|
133
|
+
}, ne = (e) => {
|
|
134
|
+
U.current = !0, j(e.target.value);
|
|
135
|
+
}, re = (e) => {
|
|
136
|
+
if (!P || M.length === 0) {
|
|
137
|
+
e.key === "Enter" && (e.preventDefault(), b(A), F(!1), W.current = null);
|
|
138
138
|
return;
|
|
139
139
|
}
|
|
140
|
-
e.key === "ArrowDown" ? (
|
|
141
|
-
},
|
|
142
|
-
|
|
143
|
-
}, $ =
|
|
140
|
+
e.key === "ArrowDown" ? (q.current = e.repeat ? "auto" : "smooth", e.preventDefault(), L((e) => M.length === 0 ? -1 : e < 0 ? 0 : (e + 1) % M.length)) : e.key === "ArrowUp" ? (q.current = e.repeat ? "auto" : "smooth", e.preventDefault(), L((e) => M.length === 0 ? -1 : e <= 0 ? M.length - 1 : (e - 1) % M.length)) : e.key === "Enter" ? (e.preventDefault(), I > -1 && M[I] ? Q(M[I]) : (b(A), F(!1), W.current = null)) : e.key === "Escape" && F(!1);
|
|
141
|
+
}, ie = () => {
|
|
142
|
+
F(!1), y !== A && b(A), W.current = null;
|
|
143
|
+
}, $ = te ?? (w ? `${w}_shim` : void 0);
|
|
144
144
|
return a(() => {
|
|
145
|
-
if (!
|
|
146
|
-
|
|
145
|
+
if (!P || I < 0) {
|
|
146
|
+
q.current = "smooth";
|
|
147
147
|
return;
|
|
148
148
|
}
|
|
149
|
-
let e =
|
|
149
|
+
let e = K.current[I], t = V.current;
|
|
150
150
|
if (!e || !t) {
|
|
151
|
-
|
|
151
|
+
q.current = "smooth";
|
|
152
152
|
return;
|
|
153
153
|
}
|
|
154
|
-
let n =
|
|
155
|
-
|
|
154
|
+
let n = q.current;
|
|
155
|
+
q.current = "smooth";
|
|
156
156
|
let r = e.offsetTop, i = r + e.offsetHeight, a = t.scrollTop, o = a + t.clientHeight;
|
|
157
157
|
r >= a && i <= o || e.scrollIntoView({
|
|
158
158
|
block: "nearest",
|
|
159
159
|
behavior: n
|
|
160
160
|
});
|
|
161
|
-
}, [
|
|
161
|
+
}, [I, P]), K.current.length = M.length, /* @__PURE__ */ f("div", {
|
|
162
162
|
className: "relative",
|
|
163
163
|
children: [
|
|
164
|
-
$ && /* @__PURE__ */
|
|
164
|
+
$ && /* @__PURE__ */ d("input", {
|
|
165
165
|
tabIndex: -1,
|
|
166
166
|
autoComplete: "street-address",
|
|
167
167
|
name: $,
|
|
@@ -174,50 +174,50 @@ var f = /* @__PURE__ */ new Set(/* @__PURE__ */ "street_address.route.premise.su
|
|
|
174
174
|
width: "1px"
|
|
175
175
|
}
|
|
176
176
|
}),
|
|
177
|
-
/* @__PURE__ */
|
|
177
|
+
/* @__PURE__ */ d("label", {
|
|
178
178
|
htmlFor: i,
|
|
179
179
|
className: "text-left block text-sm font-medium text-gray-700 mb-1 cursor-pointer",
|
|
180
|
-
children:
|
|
180
|
+
children: u
|
|
181
181
|
}),
|
|
182
|
-
/* @__PURE__ */
|
|
182
|
+
/* @__PURE__ */ f("div", {
|
|
183
183
|
className: "relative",
|
|
184
|
-
children: [/* @__PURE__ */
|
|
185
|
-
ref:
|
|
184
|
+
children: [/* @__PURE__ */ d(r, {
|
|
185
|
+
ref: B,
|
|
186
186
|
id: i,
|
|
187
187
|
type: "text",
|
|
188
|
-
placeholder:
|
|
188
|
+
placeholder: _,
|
|
189
189
|
name: w ?? `${i}_input`,
|
|
190
|
-
value:
|
|
191
|
-
onChange:
|
|
192
|
-
onKeyDown:
|
|
190
|
+
value: A,
|
|
191
|
+
onChange: ne,
|
|
192
|
+
onKeyDown: re,
|
|
193
193
|
onFocus: () => {
|
|
194
|
-
|
|
194
|
+
M.length > 0 && A && F(!0);
|
|
195
195
|
},
|
|
196
|
-
onBlur:
|
|
196
|
+
onBlur: ie,
|
|
197
197
|
disabled: x,
|
|
198
198
|
autoComplete: "new-password",
|
|
199
|
-
className: n("w-full",
|
|
200
|
-
}),
|
|
199
|
+
className: n("w-full", R && "pr-9", T)
|
|
200
|
+
}), R && /* @__PURE__ */ d("span", {
|
|
201
201
|
"aria-hidden": "true",
|
|
202
202
|
className: "pointer-events-none absolute right-3 top-1/2 flex size-4 -translate-y-1/2 items-center justify-center text-gray-400",
|
|
203
203
|
"data-slot": "address-autocomplete-loading-indicator",
|
|
204
|
-
children:
|
|
204
|
+
children: k === void 0 ? /* @__PURE__ */ d(l, { className: "size-full animate-spin" }) : k
|
|
205
205
|
})]
|
|
206
206
|
}),
|
|
207
|
-
|
|
208
|
-
ref:
|
|
207
|
+
P && M.length > 0 && /* @__PURE__ */ d("ul", {
|
|
208
|
+
ref: V,
|
|
209
209
|
className: "absolute z-10 mt-1 w-full max-h-60 overflow-y-auto rounded-md border border-gray-200 bg-white text-left shadow-lg",
|
|
210
210
|
role: "listbox",
|
|
211
|
-
children:
|
|
211
|
+
children: M.map((e, n) => /* @__PURE__ */ d("li", {
|
|
212
212
|
ref: (e) => {
|
|
213
|
-
|
|
213
|
+
K.current[n] = e;
|
|
214
214
|
},
|
|
215
|
-
className: t("cursor-pointer px-3 py-2 text-sm text-gray-700 hover:bg-gray-100", { "bg-gray-100":
|
|
215
|
+
className: t("cursor-pointer px-3 py-2 text-sm text-gray-700 hover:bg-gray-100", { "bg-gray-100": I === n }),
|
|
216
216
|
role: "option",
|
|
217
217
|
onMouseDown: (t) => {
|
|
218
|
-
t.preventDefault(),
|
|
218
|
+
t.preventDefault(), Q(e);
|
|
219
219
|
},
|
|
220
|
-
children: /* @__PURE__ */
|
|
220
|
+
children: /* @__PURE__ */ d(g, { prediction: e })
|
|
221
221
|
}, v(e, n)))
|
|
222
222
|
})
|
|
223
223
|
]
|
package/dist/index14.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index14.js","names":["ReactNode","ChangeEvent","KeyboardEvent","useState","useEffect","useRef","useMemo","clsx","Loader2","useMapsLibrary","Input","cn","DEFAULT_ALLOWED_TYPES","Set","detailedTextByPrediction","WeakMap","google","maps","places","PlacePrediction","getDisplayText","prediction","fullText","get","text","replace","trim","PredictionItem","t0","$","_c","displayText","parts","t1","Symbol","for","bb0","matches","wasCountryRemoved","length","lastIndex","forEach","substring","index","startOffset","endOffset","Math","min","push","matched","max","t2","isAllowedPrediction","allowedTypes","ReadonlySet","types","size","some","type","has","isNamedPlacePrediction","getPredictionId","placeId","getUniquePredictions","predictions","map","Map","key","set","Array","from","values","getFilteredPredictions","filter","sortPredictions","sort","a","b","aDistance","distanceMeters","Number","POSITIVE_INFINITY","bDistance","buildDisplayPredictions","isExactMatch","value","display","toLowerCase","AddressAutocompleteInput","id","label","placeholder","onValueChange","disabled","name","className","autofillShimName","googleMapsApiKey","locationRestriction","loadingIndicator","LatLngBoundsLiteral","LatLngBounds","Iterable","inputValue","setInputValue","setPredictions","isDropdownOpen","setIsDropdownOpen","highlightedIndex","setHighlightedIndex","isLoading","setIsLoading","inputRef","HTMLInputElement","dropdownRef","HTMLUListElement","isSelecting","hasUserTyped","sessionTokenRef","AutocompleteSessionToken","detailedTextRequestsRef","Promise","optionRefs","HTMLLIElement","scrollBehaviorRef","ScrollBehavior","placesLibrary","allowedTypesSet","newSet","add","current","trimmed","isActive","handler","setTimeout","AutocompleteSuggestion","console","error","request","AutocompleteRequest","input","sessionToken","undefined","includedRegionCodes","fetchAutocompleteSuggestions","then","response","suggestions","placePredictions","suggestion","placePrediction","Boolean","combinedPredictions","all","detailedTextRequest","place","toPlace","result","fetchFields","fields","formattedAddress","placeName","mainText","delete","detailedText","singlePrediction","hasExactMatch","catch","clearTimeout","handleClickOutside","event","MouseEvent","contains","target","Node","document","addEventListener","removeEventListener","handleSelectPrediction","newAddress","handleInputChange","e","handleKeyDown","preventDefault","repeat","prev","handleBlur","shimName","item","list","behavior","top","offsetTop","bottom","offsetHeight","viewTop","scrollTop","viewBottom","clientHeight","scrollIntoView","block","position","left","height","width","node"],"sources":["../src/components/AddressAutocompleteInput/index.tsx"],"sourcesContent":["/// <reference types=\"google.maps\" />\n\nimport { ReactNode, ChangeEvent, KeyboardEvent, useState, useEffect, useRef, useMemo } from \"react\"\nimport clsx from \"clsx\"\nimport { Loader2 } from \"lucide-react\"\n\nimport { useMapsLibrary } from \"@/helpers/useMapsLibrary\"\nimport { Input } from \"@/components/Input\"\nimport { cn } from \"@/lib/utils\"\n\n\nconst DEFAULT_ALLOWED_TYPES = new Set([\n \"street_address\",\n \"route\",\n \"premise\",\n \"subpremise\",\n \"intersection\",\n \"sublocality\",\n \"sublocality_level_1\",\n \"sublocality_level_2\",\n \"sublocality_level_3\",\n \"sublocality_level_4\",\n \"sublocality_level_5\",\n \"administrative_area_level_1\",\n \"administrative_area_level_2\",\n \"administrative_area_level_3\",\n \"administrative_area_level_4\",\n \"administrative_area_level_5\",\n \"administrative_area_level_6\",\n \"administrative_area_level_7\",\n \"postal_code\",\n \"locality\",\n \"country\",\n \"geocode\",\n \"plus_code\",\n \"political\",\n \"neighborhood\",\n \"colloquial_area\",\n \"lodging\",\n \"train_station\",\n \"transit_station\",\n])\n\nconst detailedTextByPrediction = new WeakMap<google.maps.places.PlacePrediction, string>()\n\nconst getDisplayText = (prediction: google.maps.places.PlacePrediction) => {\n const fullText = detailedTextByPrediction.get(prediction) ?? prediction.text?.text ?? \"\"\n return fullText.replace(/, France$/, \"\").trim()\n}\n\nconst PredictionItem = ({ prediction }: { prediction: google.maps.places.PlacePrediction }) => {\n const displayText = getDisplayText(prediction)\n const fullText = detailedTextByPrediction.get(prediction) ?? prediction.text?.text ?? \"\"\n const matches = prediction.text?.matches ?? []\n const wasCountryRemoved = displayText.length < fullText.length\n\n if (matches.length === 0) {\n return <>{displayText}</>\n }\n\n const parts: ReactNode[] = []\n let lastIndex = 0\n\n matches.forEach((substring, index) => {\n if (wasCountryRemoved && substring.startOffset >= displayText.length) {\n return\n }\n\n const startOffset = substring.startOffset\n const endOffset = Math.min(substring.endOffset, displayText.length)\n\n if (startOffset > lastIndex) {\n parts.push(displayText.substring(lastIndex, startOffset))\n }\n\n if (endOffset > startOffset) {\n const matched = displayText.substring(startOffset, endOffset)\n parts.push(<strong key={index}>{matched}</strong>)\n }\n\n lastIndex = Math.max(lastIndex, endOffset)\n })\n\n if (lastIndex < displayText.length) {\n parts.push(displayText.substring(lastIndex))\n }\n\n if (parts.length === 0) {\n return <>{displayText}</>\n }\n\n return <>{parts}</>\n}\n\nconst isAllowedPrediction = (\n prediction: google.maps.places.PlacePrediction,\n allowedTypes: ReadonlySet<string> | null,\n) => {\n if (!prediction.types || prediction.types.length === 0) {\n return true\n }\n\n if (!allowedTypes || allowedTypes.size === 0) {\n return true\n }\n\n return prediction.types.some(type => allowedTypes.has(type))\n}\n\nconst isNamedPlacePrediction = (prediction: google.maps.places.PlacePrediction) =>\n prediction.types?.some(type => type === \"establishment\" || type === \"point_of_interest\") ?? false\n\nconst getPredictionId = (prediction: google.maps.places.PlacePrediction, index: number) =>\n prediction.placeId || `${prediction.text?.text ?? \"prediction\"}-${index}`\n\nconst getUniquePredictions = (predictions: google.maps.places.PlacePrediction[]) => {\n const map = new Map<string, google.maps.places.PlacePrediction>()\n\n predictions.forEach(prediction => {\n const key = prediction.placeId\n\n if (!key) {\n return\n }\n\n if (!map.has(key)) {\n map.set(key, prediction)\n }\n })\n\n return Array.from(map.values())\n}\n\nconst getFilteredPredictions = (\n predictions: google.maps.places.PlacePrediction[],\n allowedTypes: ReadonlySet<string> | null,\n) => predictions.filter(prediction => isAllowedPrediction(prediction, allowedTypes))\n\nconst sortPredictions = (predictions: google.maps.places.PlacePrediction[]) =>\n predictions.sort((a, b) => {\n const aDistance = a.distanceMeters ?? Number.POSITIVE_INFINITY\n const bDistance = b.distanceMeters ?? Number.POSITIVE_INFINITY\n\n return aDistance - bDistance\n })\n\nconst buildDisplayPredictions = (\n predictions: google.maps.places.PlacePrediction[],\n allowedTypes: ReadonlySet<string> | null,\n) => sortPredictions(getFilteredPredictions(getUniquePredictions(predictions), allowedTypes))\n\nconst isExactMatch = (prediction: google.maps.places.PlacePrediction, value: string) => {\n const display = getDisplayText(prediction)\n return display.toLowerCase() === value.trim().toLowerCase()\n}\n\nexport const AddressAutocompleteInput = ({\n id,\n label,\n placeholder,\n value,\n onValueChange,\n disabled,\n name,\n className,\n autofillShimName,\n googleMapsApiKey,\n locationRestriction,\n allowedTypes,\n loadingIndicator,\n}: {\n id: string\n label: string\n placeholder: string\n value: string | undefined\n onValueChange: (value: string) => void\n disabled?: boolean\n name?: string\n className?: string\n autofillShimName?: string\n googleMapsApiKey?: string\n locationRestriction?: google.maps.LatLngBoundsLiteral | google.maps.LatLngBounds\n allowedTypes?: Iterable<string>\n loadingIndicator?: ReactNode\n}) => {\n const [inputValue, setInputValue] = useState(value ?? \"\")\n const [predictions, setPredictions] = useState<google.maps.places.PlacePrediction[]>([])\n const [isDropdownOpen, setIsDropdownOpen] = useState(false)\n const [highlightedIndex, setHighlightedIndex] = useState(-1)\n const [isLoading, setIsLoading] = useState(false)\n\n const inputRef = useRef<HTMLInputElement>(null)\n const dropdownRef = useRef<HTMLUListElement>(null)\n const isSelecting = useRef(false)\n const hasUserTyped = useRef(false)\n const sessionTokenRef = useRef<google.maps.places.AutocompleteSessionToken | null>(null)\n const detailedTextRequestsRef = useRef(new Map<string, Promise<string | undefined>>())\n const optionRefs = useRef<(HTMLLIElement | null)[]>([])\n const scrollBehaviorRef = useRef<ScrollBehavior>(\"smooth\")\n const placesLibrary = useMapsLibrary(\"places\", googleMapsApiKey)\n const allowedTypesSet = useMemo(() => {\n if (!allowedTypes) {\n return DEFAULT_ALLOWED_TYPES\n }\n\n const newSet = new Set<string>()\n for (const type of allowedTypes) {\n newSet.add(type)\n }\n return newSet\n }, [allowedTypes])\n\n useEffect(() => {\n setInputValue(value ?? \"\")\n hasUserTyped.current = false\n }, [value])\n\n useEffect(() => {\n if (isSelecting.current) {\n isSelecting.current = false\n return\n }\n\n const trimmed = inputValue.trim()\n\n if (trimmed === \"\") {\n setIsLoading(false)\n } else {\n setIsLoading(true)\n }\n\n let isActive = true\n\n const handler = setTimeout(() => {\n if (!isActive) {\n return\n }\n\n if (trimmed === \"\") {\n setPredictions([])\n setIsDropdownOpen(false)\n sessionTokenRef.current = null\n if (value !== \"\") {\n onValueChange(\"\")\n }\n return\n }\n\n if (!placesLibrary) return\n\n const { AutocompleteSuggestion, AutocompleteSessionToken } = placesLibrary\n\n if (!AutocompleteSuggestion || !AutocompleteSessionToken) {\n console.error(\"AddressAutocompleteInput: missing AutocompleteSuggestion or AutocompleteSessionToken exports\")\n setPredictions([])\n setIsDropdownOpen(false)\n setIsLoading(false)\n return\n }\n\n if (!sessionTokenRef.current) {\n sessionTokenRef.current = new AutocompleteSessionToken()\n }\n\n const request: google.maps.places.AutocompleteRequest = {\n input: inputValue,\n sessionToken: sessionTokenRef.current ?? undefined,\n includedRegionCodes: [\"fr\"],\n }\n if (locationRestriction) {\n request.locationRestriction = locationRestriction\n }\n\n AutocompleteSuggestion.fetchAutocompleteSuggestions(request)\n .then(async (response: { suggestions: google.maps.places.AutocompleteSuggestion[] }) => {\n if (!isActive) {\n return\n }\n\n const placePredictions = response.suggestions\n .map((suggestion: google.maps.places.AutocompleteSuggestion) => suggestion.placePrediction)\n .filter((prediction): prediction is google.maps.places.PlacePrediction => Boolean(prediction))\n\n const combinedPredictions = buildDisplayPredictions(placePredictions, allowedTypesSet)\n await Promise.all(combinedPredictions.map(async prediction => {\n const placeId = prediction.placeId\n if (!placeId || !isNamedPlacePrediction(prediction)) {\n return\n }\n\n let detailedTextRequest = detailedTextRequestsRef.current.get(placeId)\n if (!detailedTextRequest) {\n detailedTextRequest = (async () => {\n try {\n const place = prediction.toPlace()\n const result = await place.fetchFields({ fields: [\"formattedAddress\"] })\n const formattedAddress = result.place.formattedAddress?.trim()\n const placeName = prediction.mainText?.text?.trim()\n if (!formattedAddress || !placeName) return undefined\n return `${placeName}, ${formattedAddress}`\n } catch (error) {\n detailedTextRequestsRef.current.delete(placeId)\n console.error(\"AddressAutocompleteInput: place details fetch failed\", error)\n return undefined\n }\n })()\n detailedTextRequestsRef.current.set(placeId, detailedTextRequest)\n }\n\n const detailedText = await detailedTextRequest\n if (detailedText) {\n detailedTextByPrediction.set(prediction, detailedText)\n }\n }))\n\n if (!isActive) {\n return\n }\n\n const singlePrediction = combinedPredictions[0]\n const hasExactMatch =\n singlePrediction && combinedPredictions.length === 1 && isExactMatch(singlePrediction, inputValue)\n\n if (!hasUserTyped.current && hasExactMatch) {\n setPredictions(combinedPredictions)\n setIsDropdownOpen(false)\n setIsLoading(false)\n return\n }\n\n if (combinedPredictions.length > 0) {\n setPredictions(combinedPredictions)\n if (hasUserTyped.current) {\n setIsDropdownOpen(true)\n }\n setHighlightedIndex(-1)\n } else {\n setPredictions([])\n setIsDropdownOpen(false)\n }\n setIsLoading(false)\n })\n .catch((error: unknown) => {\n if (!isActive) {\n return\n }\n console.error(\"AddressAutocompleteInput: suggestion fetch failed\", error)\n setPredictions([])\n setIsDropdownOpen(false)\n setIsLoading(false)\n })\n }, 300)\n\n return () => {\n isActive = false\n clearTimeout(handler)\n }\n }, [inputValue, placesLibrary, onValueChange, value, locationRestriction, allowedTypesSet])\n\n useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n if (\n inputRef.current &&\n !inputRef.current.contains(event.target as Node) &&\n dropdownRef.current &&\n !dropdownRef.current.contains(event.target as Node)\n ) {\n setIsDropdownOpen(false)\n }\n }\n document.addEventListener(\"mousedown\", handleClickOutside)\n return () => {\n document.removeEventListener(\"mousedown\", handleClickOutside)\n }\n }, [])\n\n const handleSelectPrediction = (prediction: google.maps.places.PlacePrediction) => {\n isSelecting.current = true\n const newAddress = getDisplayText(prediction)\n setInputValue(newAddress)\n onValueChange(newAddress)\n setPredictions([])\n setIsDropdownOpen(false)\n setIsLoading(false)\n sessionTokenRef.current = null\n }\n\n const handleInputChange = (e: ChangeEvent<HTMLInputElement>) => {\n hasUserTyped.current = true\n setInputValue(e.target.value)\n }\n\n const handleKeyDown = (e: KeyboardEvent<HTMLInputElement>) => {\n if (!isDropdownOpen || predictions.length === 0) {\n if (e.key === \"Enter\") {\n e.preventDefault()\n onValueChange(inputValue)\n setIsDropdownOpen(false)\n sessionTokenRef.current = null\n }\n return\n }\n\n if (e.key === \"ArrowDown\") {\n scrollBehaviorRef.current = e.repeat ? \"auto\" : \"smooth\"\n e.preventDefault()\n setHighlightedIndex(prev => {\n if (predictions.length === 0) {\n return -1\n }\n return prev < 0 ? 0 : (prev + 1) % predictions.length\n })\n } else if (e.key === \"ArrowUp\") {\n scrollBehaviorRef.current = e.repeat ? \"auto\" : \"smooth\"\n e.preventDefault()\n setHighlightedIndex(prev => {\n if (predictions.length === 0) {\n return -1\n }\n if (prev <= 0) {\n return predictions.length - 1\n }\n return (prev - 1) % predictions.length\n })\n } else if (e.key === \"Enter\") {\n e.preventDefault()\n if (highlightedIndex > -1 && predictions[highlightedIndex]) {\n handleSelectPrediction(predictions[highlightedIndex])\n } else {\n onValueChange(inputValue)\n setIsDropdownOpen(false)\n sessionTokenRef.current = null\n }\n } else if (e.key === \"Escape\") {\n setIsDropdownOpen(false)\n }\n }\n\n const handleBlur = () => {\n setIsDropdownOpen(false)\n if (value !== inputValue) {\n onValueChange(inputValue)\n }\n sessionTokenRef.current = null\n }\n\n const shimName = autofillShimName ?? (name ? `${name}_shim` : undefined)\n\n useEffect(() => {\n if (!isDropdownOpen || highlightedIndex < 0) {\n scrollBehaviorRef.current = \"smooth\"\n return\n }\n\n const item = optionRefs.current[highlightedIndex]\n const list = dropdownRef.current\n\n if (!item || !list) {\n scrollBehaviorRef.current = \"smooth\"\n return\n }\n\n const behavior = scrollBehaviorRef.current\n scrollBehaviorRef.current = \"smooth\"\n\n const top = item.offsetTop\n const bottom = top + item.offsetHeight\n const viewTop = list.scrollTop\n const viewBottom = viewTop + list.clientHeight\n\n if (top >= viewTop && bottom <= viewBottom) {\n return\n }\n\n item.scrollIntoView({\n block: \"nearest\",\n behavior,\n })\n }, [highlightedIndex, isDropdownOpen])\n\n optionRefs.current.length = predictions.length\n\n return (\n <div className=\"relative\">\n {shimName && (\n <input\n tabIndex={-1}\n autoComplete=\"street-address\"\n name={shimName}\n aria-hidden=\"true\"\n style={{\n position: \"absolute\",\n left: \"-9999px\",\n top: \"-9999px\",\n height: \"1px\",\n width: \"1px\",\n }}\n />\n )}\n <label htmlFor={id} className=\"text-left block text-sm font-medium text-gray-700 mb-1 cursor-pointer\">\n {label}\n </label>\n <div className=\"relative\">\n <Input\n ref={inputRef}\n id={id}\n type=\"text\"\n placeholder={placeholder}\n name={name ?? `${id}_input`}\n value={inputValue}\n onChange={handleInputChange}\n onKeyDown={handleKeyDown}\n onFocus={() => {\n if (predictions.length > 0 && inputValue) {\n setIsDropdownOpen(true)\n }\n }}\n onBlur={handleBlur}\n disabled={disabled}\n autoComplete=\"new-password\"\n className={cn(\"w-full\", isLoading && \"pr-9\", className)}\n />\n {isLoading && (\n <span\n aria-hidden=\"true\"\n className=\"pointer-events-none absolute right-3 top-1/2 flex size-4 -translate-y-1/2 items-center justify-center text-gray-400\"\n data-slot=\"address-autocomplete-loading-indicator\"\n >\n {loadingIndicator === undefined ? <Loader2 className=\"size-full animate-spin\" /> : loadingIndicator}\n </span>\n )}\n </div>\n {isDropdownOpen && predictions.length > 0 && (\n <ul\n ref={dropdownRef}\n className=\"absolute z-10 mt-1 w-full max-h-60 overflow-y-auto rounded-md border border-gray-200 bg-white text-left shadow-lg\"\n role=\"listbox\"\n >\n {predictions.map((prediction, index) => (\n <li\n key={getPredictionId(prediction, index)}\n ref={node => {\n optionRefs.current[index] = node\n }}\n className={clsx(\n \"cursor-pointer px-3 py-2 text-sm text-gray-700 hover:bg-gray-100\",\n { \"bg-gray-100\": highlightedIndex === index },\n )}\n role=\"option\"\n onMouseDown={e => {\n e.preventDefault()\n handleSelectPrediction(prediction)\n }}\n >\n <PredictionItem prediction={prediction} />\n </li>\n ))}\n </ul>\n )}\n </div>\n )\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index14.js","names":["displayText","index","matched","lastIndex","parts","prediction","error","e","prev"],"sources":["../src/components/AddressAutocompleteInput/index.tsx"],"sourcesContent":["/// <reference types=\"google.maps\" />\n\nimport { ReactNode, ChangeEvent, KeyboardEvent, useState, useEffect, useRef, useMemo } from \"react\"\nimport clsx from \"clsx\"\nimport { Loader2 } from \"lucide-react\"\n\nimport { useMapsLibrary } from \"@/helpers/useMapsLibrary\"\nimport { Input } from \"@/components/Input\"\nimport { cn } from \"@/lib/utils\"\n\n\nconst DEFAULT_ALLOWED_TYPES = new Set([\n \"street_address\",\n \"route\",\n \"premise\",\n \"subpremise\",\n \"intersection\",\n \"sublocality\",\n \"sublocality_level_1\",\n \"sublocality_level_2\",\n \"sublocality_level_3\",\n \"sublocality_level_4\",\n \"sublocality_level_5\",\n \"administrative_area_level_1\",\n \"administrative_area_level_2\",\n \"administrative_area_level_3\",\n \"administrative_area_level_4\",\n \"administrative_area_level_5\",\n \"administrative_area_level_6\",\n \"administrative_area_level_7\",\n \"postal_code\",\n \"locality\",\n \"country\",\n \"geocode\",\n \"plus_code\",\n \"political\",\n \"neighborhood\",\n \"colloquial_area\",\n \"lodging\",\n \"train_station\",\n \"transit_station\",\n])\n\nconst detailedTextByPrediction = new WeakMap<google.maps.places.PlacePrediction, string>()\n\nconst getDisplayText = (prediction: google.maps.places.PlacePrediction) => {\n const fullText = detailedTextByPrediction.get(prediction) ?? prediction.text?.text ?? \"\"\n return fullText.replace(/, France$/, \"\").trim()\n}\n\nconst PredictionItem = ({ prediction }: { prediction: google.maps.places.PlacePrediction }) => {\n const displayText = getDisplayText(prediction)\n const fullText = detailedTextByPrediction.get(prediction) ?? prediction.text?.text ?? \"\"\n const matches = prediction.text?.matches ?? []\n const wasCountryRemoved = displayText.length < fullText.length\n\n if (matches.length === 0) {\n return <>{displayText}</>\n }\n\n const parts: ReactNode[] = []\n let lastIndex = 0\n\n matches.forEach((substring, index) => {\n if (wasCountryRemoved && substring.startOffset >= displayText.length) {\n return\n }\n\n const startOffset = substring.startOffset\n const endOffset = Math.min(substring.endOffset, displayText.length)\n\n if (startOffset > lastIndex) {\n parts.push(displayText.substring(lastIndex, startOffset))\n }\n\n if (endOffset > startOffset) {\n const matched = displayText.substring(startOffset, endOffset)\n parts.push(<strong key={index}>{matched}</strong>)\n }\n\n lastIndex = Math.max(lastIndex, endOffset)\n })\n\n if (lastIndex < displayText.length) {\n parts.push(displayText.substring(lastIndex))\n }\n\n if (parts.length === 0) {\n return <>{displayText}</>\n }\n\n return <>{parts}</>\n}\n\nconst isAllowedPrediction = (\n prediction: google.maps.places.PlacePrediction,\n allowedTypes: ReadonlySet<string> | null,\n) => {\n if (!prediction.types || prediction.types.length === 0) {\n return true\n }\n\n if (!allowedTypes || allowedTypes.size === 0) {\n return true\n }\n\n return prediction.types.some(type => allowedTypes.has(type))\n}\n\nconst isNamedPlacePrediction = (prediction: google.maps.places.PlacePrediction) =>\n prediction.types?.some(type => type === \"establishment\" || type === \"point_of_interest\") ?? false\n\nconst getPredictionId = (prediction: google.maps.places.PlacePrediction, index: number) =>\n prediction.placeId || `${prediction.text?.text ?? \"prediction\"}-${index}`\n\nconst getUniquePredictions = (predictions: google.maps.places.PlacePrediction[]) => {\n const map = new Map<string, google.maps.places.PlacePrediction>()\n\n predictions.forEach(prediction => {\n const key = prediction.placeId\n\n if (!key) {\n return\n }\n\n if (!map.has(key)) {\n map.set(key, prediction)\n }\n })\n\n return Array.from(map.values())\n}\n\nconst getFilteredPredictions = (\n predictions: google.maps.places.PlacePrediction[],\n allowedTypes: ReadonlySet<string> | null,\n) => predictions.filter(prediction => isAllowedPrediction(prediction, allowedTypes))\n\nconst sortPredictions = (predictions: google.maps.places.PlacePrediction[]) =>\n predictions.sort((a, b) => {\n const aDistance = a.distanceMeters ?? Number.POSITIVE_INFINITY\n const bDistance = b.distanceMeters ?? Number.POSITIVE_INFINITY\n\n return aDistance - bDistance\n })\n\nconst buildDisplayPredictions = (\n predictions: google.maps.places.PlacePrediction[],\n allowedTypes: ReadonlySet<string> | null,\n) => sortPredictions(getFilteredPredictions(getUniquePredictions(predictions), allowedTypes))\n\nconst isExactMatch = (prediction: google.maps.places.PlacePrediction, value: string) => {\n const display = getDisplayText(prediction)\n return display.toLowerCase() === value.trim().toLowerCase()\n}\n\nexport const AddressAutocompleteInput = ({\n id,\n label,\n placeholder,\n value,\n onValueChange,\n disabled,\n name,\n className,\n autofillShimName,\n googleMapsApiKey,\n locationRestriction,\n allowedTypes,\n loadingIndicator,\n}: {\n id: string\n label: string\n placeholder: string\n value: string | undefined\n onValueChange: (value: string) => void\n disabled?: boolean\n name?: string\n className?: string\n autofillShimName?: string\n googleMapsApiKey?: string\n locationRestriction?: google.maps.LatLngBoundsLiteral | google.maps.LatLngBounds\n allowedTypes?: Iterable<string>\n loadingIndicator?: ReactNode\n}) => {\n const [inputValue, setInputValue] = useState(value ?? \"\")\n const [predictions, setPredictions] = useState<google.maps.places.PlacePrediction[]>([])\n const [isDropdownOpen, setIsDropdownOpen] = useState(false)\n const [highlightedIndex, setHighlightedIndex] = useState(-1)\n const [isLoading, setIsLoading] = useState(false)\n\n const inputRef = useRef<HTMLInputElement>(null)\n const dropdownRef = useRef<HTMLUListElement>(null)\n const isSelecting = useRef(false)\n const hasUserTyped = useRef(false)\n const sessionTokenRef = useRef<google.maps.places.AutocompleteSessionToken | null>(null)\n const detailedTextRequestsRef = useRef(new Map<string, Promise<string | undefined>>())\n const optionRefs = useRef<(HTMLLIElement | null)[]>([])\n const scrollBehaviorRef = useRef<ScrollBehavior>(\"smooth\")\n const valueRef = useRef(value)\n const onValueChangeRef = useRef(onValueChange)\n const placesLibrary = useMapsLibrary(\"places\", googleMapsApiKey)\n const allowedTypesSet = useMemo(() => {\n if (!allowedTypes) {\n return DEFAULT_ALLOWED_TYPES\n }\n\n const newSet = new Set<string>()\n for (const type of allowedTypes) {\n newSet.add(type)\n }\n return newSet\n }, [allowedTypes])\n\n useEffect(() => {\n setInputValue(value ?? \"\")\n hasUserTyped.current = false\n }, [value])\n\n useEffect(() => {\n valueRef.current = value\n onValueChangeRef.current = onValueChange\n }, [onValueChange, value])\n\n useEffect(() => {\n if (isSelecting.current) {\n isSelecting.current = false\n return\n }\n\n const trimmed = inputValue.trim()\n\n if (trimmed === \"\") {\n setIsLoading(false)\n } else {\n setIsLoading(true)\n }\n\n let isActive = true\n\n const handler = setTimeout(() => {\n if (!isActive) {\n return\n }\n\n if (trimmed === \"\") {\n setPredictions([])\n setIsDropdownOpen(false)\n sessionTokenRef.current = null\n if (valueRef.current !== \"\") {\n onValueChangeRef.current(\"\")\n }\n return\n }\n\n if (!placesLibrary) return\n\n const { AutocompleteSuggestion, AutocompleteSessionToken } = placesLibrary\n\n if (!AutocompleteSuggestion || !AutocompleteSessionToken) {\n console.error(\"AddressAutocompleteInput: missing AutocompleteSuggestion or AutocompleteSessionToken exports\")\n setPredictions([])\n setIsDropdownOpen(false)\n setIsLoading(false)\n return\n }\n\n if (!sessionTokenRef.current) {\n sessionTokenRef.current = new AutocompleteSessionToken()\n }\n\n const request: google.maps.places.AutocompleteRequest = {\n input: inputValue,\n sessionToken: sessionTokenRef.current ?? undefined,\n includedRegionCodes: [\"fr\"],\n }\n if (locationRestriction) {\n request.locationRestriction = locationRestriction\n }\n\n AutocompleteSuggestion.fetchAutocompleteSuggestions(request)\n .then(async (response: { suggestions: google.maps.places.AutocompleteSuggestion[] }) => {\n if (!isActive) {\n return\n }\n\n const placePredictions = response.suggestions\n .map((suggestion: google.maps.places.AutocompleteSuggestion) => suggestion.placePrediction)\n .filter((prediction): prediction is google.maps.places.PlacePrediction => Boolean(prediction))\n\n const combinedPredictions = buildDisplayPredictions(placePredictions, allowedTypesSet)\n await Promise.all(combinedPredictions.map(async prediction => {\n const placeId = prediction.placeId\n if (!placeId || !isNamedPlacePrediction(prediction)) {\n return\n }\n\n let detailedTextRequest = detailedTextRequestsRef.current.get(placeId)\n if (!detailedTextRequest) {\n detailedTextRequest = (async () => {\n try {\n const place = prediction.toPlace()\n const result = await place.fetchFields({ fields: [\"formattedAddress\"] })\n const formattedAddress = result.place.formattedAddress?.trim()\n const placeName = prediction.mainText?.text?.trim()\n if (!formattedAddress || !placeName) return undefined\n return `${placeName}, ${formattedAddress}`\n } catch (error) {\n detailedTextRequestsRef.current.delete(placeId)\n console.error(\"AddressAutocompleteInput: place details fetch failed\", error)\n return undefined\n }\n })()\n detailedTextRequestsRef.current.set(placeId, detailedTextRequest)\n }\n\n const detailedText = await detailedTextRequest\n if (detailedText) {\n detailedTextByPrediction.set(prediction, detailedText)\n }\n }))\n\n if (!isActive) {\n return\n }\n\n const singlePrediction = combinedPredictions[0]\n const hasExactMatch =\n singlePrediction && combinedPredictions.length === 1 && isExactMatch(singlePrediction, inputValue)\n\n if (!hasUserTyped.current && hasExactMatch) {\n setPredictions(combinedPredictions)\n setIsDropdownOpen(false)\n setIsLoading(false)\n return\n }\n\n if (combinedPredictions.length > 0) {\n setPredictions(combinedPredictions)\n if (hasUserTyped.current) {\n setIsDropdownOpen(true)\n }\n setHighlightedIndex(-1)\n } else {\n setPredictions([])\n setIsDropdownOpen(false)\n }\n setIsLoading(false)\n })\n .catch((error: unknown) => {\n if (!isActive) {\n return\n }\n console.error(\"AddressAutocompleteInput: suggestion fetch failed\", error)\n setPredictions([])\n setIsDropdownOpen(false)\n setIsLoading(false)\n })\n }, 300)\n\n return () => {\n isActive = false\n clearTimeout(handler)\n }\n }, [inputValue, placesLibrary, locationRestriction, allowedTypesSet])\n\n useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n if (\n inputRef.current &&\n !inputRef.current.contains(event.target as Node) &&\n dropdownRef.current &&\n !dropdownRef.current.contains(event.target as Node)\n ) {\n setIsDropdownOpen(false)\n }\n }\n document.addEventListener(\"mousedown\", handleClickOutside)\n return () => {\n document.removeEventListener(\"mousedown\", handleClickOutside)\n }\n }, [])\n\n const handleSelectPrediction = (prediction: google.maps.places.PlacePrediction) => {\n isSelecting.current = true\n const newAddress = getDisplayText(prediction)\n setInputValue(newAddress)\n onValueChange(newAddress)\n setPredictions([])\n setIsDropdownOpen(false)\n setIsLoading(false)\n sessionTokenRef.current = null\n }\n\n const handleInputChange = (e: ChangeEvent<HTMLInputElement>) => {\n hasUserTyped.current = true\n setInputValue(e.target.value)\n }\n\n const handleKeyDown = (e: KeyboardEvent<HTMLInputElement>) => {\n if (!isDropdownOpen || predictions.length === 0) {\n if (e.key === \"Enter\") {\n e.preventDefault()\n onValueChange(inputValue)\n setIsDropdownOpen(false)\n sessionTokenRef.current = null\n }\n return\n }\n\n if (e.key === \"ArrowDown\") {\n scrollBehaviorRef.current = e.repeat ? \"auto\" : \"smooth\"\n e.preventDefault()\n setHighlightedIndex(prev => {\n if (predictions.length === 0) {\n return -1\n }\n return prev < 0 ? 0 : (prev + 1) % predictions.length\n })\n } else if (e.key === \"ArrowUp\") {\n scrollBehaviorRef.current = e.repeat ? \"auto\" : \"smooth\"\n e.preventDefault()\n setHighlightedIndex(prev => {\n if (predictions.length === 0) {\n return -1\n }\n if (prev <= 0) {\n return predictions.length - 1\n }\n return (prev - 1) % predictions.length\n })\n } else if (e.key === \"Enter\") {\n e.preventDefault()\n if (highlightedIndex > -1 && predictions[highlightedIndex]) {\n handleSelectPrediction(predictions[highlightedIndex])\n } else {\n onValueChange(inputValue)\n setIsDropdownOpen(false)\n sessionTokenRef.current = null\n }\n } else if (e.key === \"Escape\") {\n setIsDropdownOpen(false)\n }\n }\n\n const handleBlur = () => {\n setIsDropdownOpen(false)\n if (value !== inputValue) {\n onValueChange(inputValue)\n }\n sessionTokenRef.current = null\n }\n\n const shimName = autofillShimName ?? (name ? `${name}_shim` : undefined)\n\n useEffect(() => {\n if (!isDropdownOpen || highlightedIndex < 0) {\n scrollBehaviorRef.current = \"smooth\"\n return\n }\n\n const item = optionRefs.current[highlightedIndex]\n const list = dropdownRef.current\n\n if (!item || !list) {\n scrollBehaviorRef.current = \"smooth\"\n return\n }\n\n const behavior = scrollBehaviorRef.current\n scrollBehaviorRef.current = \"smooth\"\n\n const top = item.offsetTop\n const bottom = top + item.offsetHeight\n const viewTop = list.scrollTop\n const viewBottom = viewTop + list.clientHeight\n\n if (top >= viewTop && bottom <= viewBottom) {\n return\n }\n\n item.scrollIntoView({\n block: \"nearest\",\n behavior,\n })\n }, [highlightedIndex, isDropdownOpen])\n\n optionRefs.current.length = predictions.length\n\n return (\n <div className=\"relative\">\n {shimName && (\n <input\n tabIndex={-1}\n autoComplete=\"street-address\"\n name={shimName}\n aria-hidden=\"true\"\n style={{\n position: \"absolute\",\n left: \"-9999px\",\n top: \"-9999px\",\n height: \"1px\",\n width: \"1px\",\n }}\n />\n )}\n <label htmlFor={id} className=\"text-left block text-sm font-medium text-gray-700 mb-1 cursor-pointer\">\n {label}\n </label>\n <div className=\"relative\">\n <Input\n ref={inputRef}\n id={id}\n type=\"text\"\n placeholder={placeholder}\n name={name ?? `${id}_input`}\n value={inputValue}\n onChange={handleInputChange}\n onKeyDown={handleKeyDown}\n onFocus={() => {\n if (predictions.length > 0 && inputValue) {\n setIsDropdownOpen(true)\n }\n }}\n onBlur={handleBlur}\n disabled={disabled}\n autoComplete=\"new-password\"\n className={cn(\"w-full\", isLoading && \"pr-9\", className)}\n />\n {isLoading && (\n <span\n aria-hidden=\"true\"\n className=\"pointer-events-none absolute right-3 top-1/2 flex size-4 -translate-y-1/2 items-center justify-center text-gray-400\"\n data-slot=\"address-autocomplete-loading-indicator\"\n >\n {loadingIndicator === undefined ? <Loader2 className=\"size-full animate-spin\" /> : loadingIndicator}\n </span>\n )}\n </div>\n {isDropdownOpen && predictions.length > 0 && (\n <ul\n ref={dropdownRef}\n className=\"absolute z-10 mt-1 w-full max-h-60 overflow-y-auto rounded-md border border-gray-200 bg-white text-left shadow-lg\"\n role=\"listbox\"\n >\n {predictions.map((prediction, index) => (\n <li\n key={getPredictionId(prediction, index)}\n ref={node => {\n optionRefs.current[index] = node\n }}\n className={clsx(\n \"cursor-pointer px-3 py-2 text-sm text-gray-700 hover:bg-gray-100\",\n { \"bg-gray-100\": highlightedIndex === index },\n )}\n role=\"option\"\n onMouseDown={e => {\n e.preventDefault()\n handleSelectPrediction(prediction)\n }}\n >\n <PredictionItem prediction={prediction} />\n </li>\n ))}\n </ul>\n )}\n </div>\n )\n}\n"],"mappings":";;;;;;;;;AAWA,IAAM,oBAAwB,IAAI,IAAI,ggBA6BnB,CAClB,GAEK,oBAA2B,IAAI,QAAoD,GAEnF,KAAkB,OACL,EAAyB,IAAI,CAAU,KAAK,EAAW,MAAM,QAAQ,GAAA,CACtE,QAAQ,aAAa,EAAE,CAAC,CAAC,KAAK,GAG1C,KAAiB,MAAA;CAAA,IAAA,IAAA,EAAA,CAAA,GAAC,EAAA,kBAAA,GAAkE,GAAA,GAAA;CAAA,IAAA,EAAA,OAAA,GAAA;EAO/E,IAAA,OAAkB,IAAlB,6BAAiB;EAAC,KAAA;GAN3B,IAAoB,EAAe,CAAU;GAC7C,IAAA,IAAiB,EAAwB,IAAK,CAAmC,KAApB,EAAU,MAAW,QAAjE,IACjB,IAAgB,EAAU,MAAc,WAAxB,CAAA,GAChB,IAA0B,EAAW,SAAU,EAAQ;GAEvD,IAAI,EAAO,WAAY,GAAC;IACf,IAAA,kBAAA,GAAA,EAAA,UAAG,EAAW,CAAA;IAAd,MAAA;GAAkB;GAG3B,IAA2B,CAAA;GAC3B,IAAA,IAAgB;GAsBhB,AApBA,EAAO,SAAS,GAAA,MAAA;IACd,IAAI,KAAqB,EAAS,eAAgB,EAAW,QAAO;IAIpE,IAAA,IAAoB,EAAS,aAC7B,IAAkB,KAAI,IAAK,EAAS,WAAY,EAAW,MAAO;IAMlE,IAJI,IAAc,KAChB,EAAK,KAAM,EAAW,UAAW,GAAW,CAAW,CAAC,GAGtD,IAAY,GAAW;KACzB,IAAA,IAAgB,EAAW,UAAW,GAAa,CAAS;KAC5D,EAAK,KAAM,kBAAA,UAAA,EAAA,UAAqB,EAAiB,GAAzB,CAAyB,CAAA;IAAC;IAGpD,IAAY,KAAI,IAAK,GAAW,CAAS;GAAhC,CACV,GAEG,IAAY,EAAW,UACzB,EAAK,KAAM,EAAW,UAAW,CAAS,CAAC;EAC5C;EAAA,AAAA,EAAA,KAAA,GAAA,EAAA,KAAA,GAAA,EAAA,KAAA,GAAA,EAAA,KAAA;CAAA,OAAA,AAAA,IAAA,EAAA,IAAA,IAAA,EAAA,IAAA,IAAA,EAAA;CAAA,IAAA,MAAA,OAAA,IAAA,6BAAA,GAAA,OAAA;CAED,IAAI,EAAK,WAAY,GAAC;EAAA,IAAA;EACK,OADL,EAAA,OAAA,IACK,IAAA,EAAA,MAAlB,IAAA,kBAAA,GAAA,EAAA,UAAG,EAAW,CAAA,GAAI,EAAA,KAAA,GAAA,EAAA,KAAA,IAAlB;CAAkB;CAC1B,IAAA;CAEkB,OAFlB,EAAA,OAAA,IAEkB,IAAA,EAAA,MAAZ,IAAA,kBAAA,GAAA,EAAA,UAAG,EAAK,CAAA,GAAI,EAAA,KAAA,GAAA,EAAA,KAAA,IAAZ;AAAY,GAGf,KACJ,GACA,MAEI,CAAC,EAAW,SAAS,EAAW,MAAM,WAAW,KAIjD,CAAC,KAAgB,EAAa,SAAS,KAIpC,EAAW,MAAM,MAAK,MAAQ,EAAa,IAAI,CAAI,CAAC,GAGvD,MAA0B,MAC9B,EAAW,OAAO,MAAK,MAAQ,MAAS,mBAAmB,MAAS,mBAAmB,KAAK,IAExF,KAAmB,GAAgD,MACvE,EAAW,WAAW,GAAG,EAAW,MAAM,QAAQ,aAAY,GAAI,KAE9D,KAAwB,MAAsD;CAClF,IAAM,oBAAM,IAAI,IAAgD;CAchE,OAZA,EAAY,SAAQ,MAAc;EAChC,IAAM,IAAM,EAAW;EAElB,MAIA,EAAI,IAAI,CAAG,KACd,EAAI,IAAI,GAAK,CAAU;CAE3B,CAAC,GAEM,MAAM,KAAK,EAAI,OAAO,CAAC;AAChC,GAEM,KACJ,GACA,MACG,EAAY,QAAO,MAAc,EAAoB,GAAY,CAAY,CAAC,GAE7E,KAAmB,MACvB,EAAY,MAAM,GAAG,OACD,EAAE,kBAAkB,aACpB,EAAE,kBAAkB,SAGvC,GAEG,KACJ,GACA,MACG,EAAgB,EAAuB,EAAqB,CAAW,GAAG,CAAY,CAAC,GAEtF,KAAgB,GAAgD,MACpD,EAAe,CACxB,CAAA,CAAQ,YAAY,MAAM,EAAM,KAAK,CAAC,CAAC,YAAY,GAG/C,KAA4B,EACvC,OACA,UACA,gBACA,UACA,kBACA,aACA,SACA,cACA,sBACA,qBACA,wBACA,iBACA,0BAeI;CACJ,IAAM,CAAC,GAAY,KAAiB,EAAS,KAAS,EAAE,GAClD,CAAC,GAAa,KAAkB,EAA+C,CAAA,CAAE,GACjF,CAAC,GAAgB,KAAqB,EAAS,EAAK,GACpD,CAAC,GAAkB,KAAuB,EAAS,EAAE,GACrD,CAAC,GAAW,KAAgB,EAAS,EAAK,GAE1C,IAAW,EAAyB,IAAI,GACxC,IAAc,EAAyB,IAAI,GAC3C,IAAc,EAAO,EAAK,GAC1B,IAAe,EAAO,EAAK,GAC3B,IAAkB,EAA2D,IAAI,GACjF,IAA0B,kBAAO,IAAI,IAAyC,CAAC,GAC/E,IAAa,EAAiC,CAAA,CAAE,GAChD,IAAoB,EAAuB,QAAQ,GACnD,IAAW,EAAO,CAAK,GACvB,IAAmB,EAAO,CAAa,GACvC,IAAgB,EAAe,UAAU,CAAgB,GACzD,IAAkB,QAAc;EACpC,IAAI,CAAC,GACH,OAAO;EAGT,IAAM,oBAAS,IAAI,IAAY;EAC/B,KAAK,IAAM,KAAQ,GACjB,EAAO,IAAI,CAAI;EAEjB,OAAO;CACT,GAAG,CAAC,CAAY,CAAC;CA0JjB,AAxJA,QAAgB;EAEd,AADA,EAAc,KAAS,EAAE,GACzB,EAAa,UAAU;CACzB,GAAG,CAAC,CAAK,CAAC,GAEV,QAAgB;EAEd,AADA,EAAS,UAAU,GACnB,EAAiB,UAAU;CAC7B,GAAG,CAAC,GAAe,CAAK,CAAC,GAEzB,QAAgB;EACd,IAAI,EAAY,SAAS;GACvB,EAAY,UAAU;GACtB;EACF;EAEA,IAAM,IAAU,EAAW,KAAK;EAEhC,AACE,EADE,MAAY,EAGG;EAGnB,IAAI,IAAW,IAET,IAAU,iBAAiB;GAC/B,IAAI,CAAC,GACH;GAGF,IAAI,MAAY,IAAI;IAIlB,AAHA,EAAe,CAAA,CAAE,GACjB,EAAkB,EAAK,GACvB,EAAgB,UAAU,MACtB,EAAS,YAAY,MACvB,EAAiB,QAAQ,EAAE;IAE7B;GACF;GAEA,IAAI,CAAC,GAAe;GAEpB,IAAM,EAAE,2BAAwB,gCAA6B;GAE7D,IAAI,CAAC,KAA0B,CAAC,GAA0B;IAIxD,AAHA,QAAQ,MAAM,8FAA8F,GAC5G,EAAe,CAAA,CAAE,GACjB,EAAkB,EAAK,GACvB,EAAa,EAAK;IAClB;GACF;GAEA,AACE,EAAgB,YAAU,IAAI,EAAyB;GAGzD,IAAM,IAAkD;IACtD,OAAO;IACP,cAAc,EAAgB,WAAW,KAAA;IACzC,qBAAqB,CAAC,IAAI;GAC5B;GAKA,AAJI,MACF,EAAQ,sBAAsB,IAGhC,EAAuB,6BAA6B,CAAO,CAAC,CACzD,KAAK,OAAO,MAA2E;IACtF,IAAI,CAAC,GACH;IAOF,IAAM,IAAsB,EAJH,EAAS,YAC/B,KAAK,MAA0D,EAAW,eAAe,CAAC,CAC1F,QAAQ,MAAiE,EAAQ,CAEhC,GAAkB,CAAe;IAgCrF,IA/BA,MAAM,QAAQ,IAAI,EAAoB,IAAI,OAAMK,MAAc;KAC5D,IAAM,IAAUA,EAAW;KAC3B,IAAI,CAAC,KAAW,CAAC,GAAuBA,CAAU,GAChD;KAGF,IAAI,IAAsB,EAAwB,QAAQ,IAAI,CAAO;KACrE,AAAK,MACH,KAAuB,YAAY;MACjC,IAAI;OAGF,IAAM,KAAmB,MAFXA,EAAW,QACJ,CAAA,CAAM,YAAY,EAAE,QAAQ,CAAC,kBAAkB,EAAE,CAAC,EAAA,CACvC,MAAM,kBAAkB,KAAK,GACvD,IAAYA,EAAW,UAAU,MAAM,KAAK;OAElD,OADI,CAAC,KAAoB,CAAC,IAAW,SAC9B,GAAG,EAAS,IAAK;MAC1B,SAAS,GAAO;OAEd,AADA,EAAwB,QAAQ,OAAO,CAAO,GAC9C,QAAQ,MAAM,wDAAwD,CAAK;OAC3E;MACF;KACF,EAAA,CAAG,GACH,EAAwB,QAAQ,IAAI,GAAS,CAAmB;KAGlE,IAAM,IAAe,MAAM;KAC3B,AAAI,KACF,EAAyB,IAAIA,GAAY,CAAY;IAEzD,CAAC,CAAC,GAEE,CAAC,GACH;IAGF,IAAM,IAAmB,EAAoB,IACvC,IACJ,KAAoB,EAAoB,WAAW,KAAK,EAAa,GAAkB,CAAU;IAEnG,IAAI,CAAC,EAAa,WAAW,GAAe;KAG1C,AAFA,EAAe,CAAmB,GAClC,EAAkB,EAAK,GACvB,EAAa,EAAK;KAClB;IACF;IAYA,AAVI,EAAoB,SAAS,KAC/B,EAAe,CAAmB,GAC9B,EAAa,WACf,EAAkB,EAAI,GAExB,EAAoB,EAAE,MAEtB,EAAe,CAAA,CAAE,GACjB,EAAkB,EAAK,IAEzB,EAAa,EAAK;GACpB,CAAC,CAAC,CACD,OAAOC,MAAmB;IACpB,MAGL,QAAQ,MAAM,qDAAqDA,CAAK,GACxE,EAAe,CAAA,CAAE,GACjB,EAAkB,EAAK,GACvB,EAAa,EAAK;GACpB,CAAC;EACL,GAAG,GAAG;EAEN,aAAa;GAEX,AADA,IAAW,IACX,aAAa,CAAO;EACtB;CACF,GAAG;EAAC;EAAY;EAAe;EAAqB;CAAe,CAAC,GAEpE,QAAgB;EACd,IAAM,KAAsB,MAAsB;GAChD,AACE,EAAS,WACT,CAAC,EAAS,QAAQ,SAAS,EAAM,MAAc,KAC/C,EAAY,WACZ,CAAC,EAAY,QAAQ,SAAS,EAAM,MAAc,KAElD,EAAkB,EAAK;EAE3B;EAEA,OADA,SAAS,iBAAiB,aAAa,CAAkB,SAC5C;GACX,SAAS,oBAAoB,aAAa,CAAkB;EAC9D;CACF,GAAG,CAAA,CAAE;CAEL,IAAM,KAA0BD,MAAmD;EACjF,EAAY,UAAU;EACtB,IAAM,IAAa,EAAeA,CAAU;EAM5C,AALA,EAAc,CAAU,GACxB,EAAc,CAAU,GACxB,EAAe,CAAA,CAAE,GACjB,EAAkB,EAAK,GACvB,EAAa,EAAK,GAClB,EAAgB,UAAU;CAC5B,GAEM,MAAqB,MAAqC;EAE9D,AADA,EAAa,UAAU,IACvB,EAAc,EAAE,OAAO,KAAK;CAC9B,GAEM,MAAiBE,MAAuC;EAC5D,IAAI,CAAC,KAAkB,EAAY,WAAW,GAAG;GAC/C,AAAIA,EAAE,QAAQ,YACZA,EAAE,eAAe,GACjB,EAAc,CAAU,GACxB,EAAkB,EAAK,GACvB,EAAgB,UAAU;GAE5B;EACF;EAEA,AAAIA,EAAE,QAAQ,eACZ,EAAkB,UAAUA,EAAE,SAAS,SAAS,UAChDA,EAAE,eAAe,GACjB,GAAoB,MACd,EAAY,WAAW,IAClB,KAEF,IAAO,IAAI,KAAK,IAAO,KAAK,EAAY,MAChD,KACQA,EAAE,QAAQ,aACnB,EAAkB,UAAUA,EAAE,SAAS,SAAS,UAChDA,EAAE,eAAe,GACjB,GAAoBC,MACd,EAAY,WAAW,IAClB,KAELA,KAAQ,IACH,EAAY,SAAS,KAEtBA,IAAO,KAAK,EAAY,MACjC,KACQD,EAAE,QAAQ,WACnBA,EAAE,eAAe,GACb,IAAmB,MAAM,EAAY,KACvC,EAAuB,EAAY,EAAiB,KAEpD,EAAc,CAAU,GACxB,EAAkB,EAAK,GACvB,EAAgB,UAAU,SAEnBA,EAAE,QAAQ,YACnB,EAAkB,EAAK;CAE3B,GAEM,WAAmB;EAKvB,AAJA,EAAkB,EAAK,GACnB,MAAU,KACZ,EAAc,CAAU,GAE1B,EAAgB,UAAU;CAC5B,GAEM,IAAW,OAAqB,IAAO,GAAG,EAAI,SAAU,KAAA;CAoC9D,OAlCA,QAAgB;EACd,IAAI,CAAC,KAAkB,IAAmB,GAAG;GAC3C,EAAkB,UAAU;GAC5B;EACF;EAEA,IAAM,IAAO,EAAW,QAAQ,IAC1B,IAAO,EAAY;EAEzB,IAAI,CAAC,KAAQ,CAAC,GAAM;GAClB,EAAkB,UAAU;GAC5B;EACF;EAEA,IAAM,IAAW,EAAkB;EACnC,EAAkB,UAAU;EAE5B,IAAM,IAAM,EAAK,WACX,IAAS,IAAM,EAAK,cACpB,IAAU,EAAK,WACf,IAAa,IAAU,EAAK;EAE9B,KAAO,KAAW,KAAU,KAIhC,EAAK,eAAe;GAClB,OAAO;GACP;EACF,CAAC;CACH,GAAG,CAAC,GAAkB,CAAc,CAAC,GAErC,EAAW,QAAQ,SAAS,EAAY,QAGtC,kBAAC,OAAD;EAAK,WAAU;EAAf,UAAA;GACG,KACC,kBAAC,SAAD;IACE,UAAU;IACV,cAAa;IACb,MAAM;IACN,eAAY;IACZ,OAAO;KACL,UAAU;KACV,MAAM;KACN,KAAK;KACL,QAAQ;KACR,OAAO;IACT;GAAE,CAAA;GAGN,kBAAC,SAAD;IAAO,SAAS;IAAI,WAAU;IAC3B,UAAA;GACI,CAAA;GACP,kBAAC,OAAD;IAAK,WAAU;IAAf,UAAA,CACE,kBAAC,GAAD;KACE,KAAK;KACD;KACJ,MAAK;KACQ;KACb,MAAM,KAAQ,GAAG,EAAE;KACnB,OAAO;KACP,UAAU;KACV,WAAW;KACX,eAAe;MACb,AAAI,EAAY,SAAS,KAAK,KAC5B,EAAkB,EAAI;KAE1B;KACA,QAAQ;KACE;KACV,cAAa;KACb,WAAW,EAAG,UAAU,KAAa,QAAQ,CAAS;IAAE,CAAA,GAEzD,KACC,kBAAC,QAAD;KACE,eAAY;KACZ,WAAU;KACV,aAAU;KAET,UAAA,MAAqB,KAAA,IAAY,kBAAC,GAAD,EAAS,WAAU,yBAAwB,CAAA,IAAM;IAC/E,CAAA,CAEL;;GACJ,KAAkB,EAAY,SAAS,KACtC,kBAAC,MAAD;IACE,KAAK;IACL,WAAU;IACV,MAAK;IAEJ,UAAA,EAAY,KAAKF,GAAY,MAC5B,kBAAC,MAAD;KAEE,MAAK,MAAQ;MACX,EAAW,QAAQ,KAAS;KAC9B;KACA,WAAW,EACT,oEACA,EAAE,eAAe,MAAqB,EAAM,CAC9C;KACA,MAAK;KACL,cAAaE,MAAK;MAEhB,AADAA,EAAE,eAAe,GACjB,EAAuBF,CAAU;KACnC;KAEA,UAAA,kBAAC,GAAD,EAAgB,YAAYA,EAAW,CAAA;IACrC,GAfG,EAAgBA,GAAY,CAAK,CAepC,CACL;GACC,CAAA;EAEH;;AAET"}
|
package/dist/index15.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index15.js","names":["
|
|
1
|
+
{"version":3,"file":"index15.js","names":["onClick"],"sources":["../src/components/ApplePayButton/index.tsx"],"sourcesContent":["import type { ComponentPropsWithoutRef } from \"react\"\nimport clsx from \"clsx\"\n\n\ntype ApplePayButtonProps = ComponentPropsWithoutRef<\"button\">\n\n\nexport const ApplePayButton = ({\n className,\n onClick,\n children,\n ...buttonProps\n}: ApplePayButtonProps) => {\n return (\n <button\n type=\"button\"\n onClick={onClick}\n className={clsx(\n \"flex w-full items-center justify-center rounded-md border border-transparent bg-black py-2 text-white hover:bg-gray-800 focus:ring-2 focus:ring-gray-900 focus:ring-offset-2 focus:outline-hidden\",\n className,\n )}\n {...buttonProps}\n >\n {children ?? <span className=\"sr-only\">Pay with Apple Pay</span>}\n <svg fill=\"currentColor\" viewBox=\"0 0 50 20\" className=\"h-5 w-auto\">\n <path d=\"M9.536 2.579c-.571.675-1.485 1.208-2.4 1.132-.113-.914.334-1.884.858-2.484C8.565.533 9.564.038 10.374 0c.095.951-.276 1.884-.838 2.579zm.829 1.313c-1.324-.077-2.457.751-3.085.751-.638 0-1.6-.713-2.647-.694-1.362.019-2.628.79-3.323 2.017-1.429 2.455-.372 6.09 1.009 8.087.676.99 1.485 2.075 2.552 2.036 1.009-.038 1.409-.656 2.628-.656 1.228 0 1.58.656 2.647.637 1.104-.019 1.8-.99 2.475-1.979.771-1.122 1.086-2.217 1.105-2.274-.02-.019-2.133-.828-2.152-3.263-.02-2.036 1.666-3.007 1.742-3.064-.952-1.408-2.437-1.56-2.951-1.598zm7.645-2.76v14.834h2.305v-5.072h3.19c2.913 0 4.96-1.998 4.96-4.89 0-2.893-2.01-4.872-4.885-4.872h-5.57zm2.305 1.941h2.656c2 0 3.142 1.066 3.142 2.94 0 1.875-1.142 2.95-3.151 2.95h-2.647v-5.89zM32.673 16.08c1.448 0 2.79-.733 3.4-1.893h.047v1.779h2.133V8.582c0-2.14-1.714-3.52-4.351-3.52-2.447 0-4.256 1.399-4.323 3.32h2.076c.171-.913 1.018-1.512 2.18-1.512 1.41 0 2.2.656 2.2 1.865v.818l-2.876.171c-2.675.162-4.123 1.256-4.123 3.159 0 1.922 1.495 3.197 3.637 3.197zm.62-1.76c-1.229 0-2.01-.59-2.01-1.494 0-.933.752-1.475 2.19-1.56l2.562-.162v.837c0 1.39-1.181 2.379-2.743 2.379zM41.1 20c2.247 0 3.304-.856 4.227-3.454l4.047-11.341h-2.342l-2.714 8.763h-.047l-2.714-8.763h-2.409l3.904 10.799-.21.656c-.352 1.114-.923 1.542-1.942 1.542-.18 0-.533-.02-.676-.038v1.779c.133.038.705.057.876.057z\" />\n </svg>\n </button>\n )\n}\n"],"mappings":";;;;AAOA,IAAa,KAAiB,MAAA;CAAA,IAAA,IAAA,EAAA,EAAA,GAAA,GAAA,GAAA,GAAA;CAAA,AAAA,EAAA,OAAA,KAKR,IAAA,EAAA,IAAA,IAAA,EAAA,IAAA,IAAA,EAAA,IAAA,IAAA,EAAA,OALS,wCAAA,GAAA,KAAA,GAKT,EAAA,KAAA,GAAA,EAAA,KAAA,GAAA,EAAA,KAAA,GAAA,EAAA,KAAA,GAAA,EAAA,KAAA;CAAA,IAAA;CAAA,AAAA,EAAA,OAAA,IAQf,IAAA,EAAA,MAHU,IAAA,EACT,qMACA,CACF,GAAC,EAAA,KAAA,GAAA,EAAA,KAAA;CAAA,IAAA;CAAA,AAAA,EAAA,OAAA,IAG+D,IAAA,EAAA,MAA/D,IAAA,KAAY,kBAAA,QAAA;EAAgB,WAAA;EAAU,UAAA;CAAyB,CAAA,GAAA,EAAA,KAAA,GAAA,EAAA,KAAA;CAAA,IAAA;CAAA,AAAA,EAAA,OAAA,OAAA,IAAA,2BAAA,KAChE,IAAA,kBAAA,OAAA;EAAU,MAAA;EAAuB,SAAA;EAAsB,WAAA;EACrD,UAAA,kBAAA,QAAA,EAAQ,GAAA,syCAAqyC,CAAA;CACzyC,CAAA,GAAA,EAAA,KAAA,KAAA,IAAA,EAAA;CAAA,IAAA;CACC,OADD,EAAA,QAAA,KAAA,EAAA,QAAA,KAAA,EAAA,QAAA,KAAA,EAAA,QAAA,KAZR,IAAA,kBAAA,UAAA;EACO,MAAA;EACI;EACE,WAAA;EAGV,GACG;EAPN,UAAA,CASG,GACD,CAGO;KAAA,EAAA,MAAA,GAAA,EAAA,MAAA,GAAA,EAAA,MAAA,GAAA,EAAA,MAAA,GAAA,EAAA,MAAA,KAAA,IAAA,EAAA,KAbT;AAaS"}
|
package/dist/index154.js
CHANGED
|
@@ -75,13 +75,25 @@ function a(a, o = {}) {
|
|
|
75
75
|
for (; o.getFullYear() <= r.getFullYear();) i.push(new e(o, a)), o.setFullYear(o.getFullYear() + 1, 0, 1);
|
|
76
76
|
return i;
|
|
77
77
|
},
|
|
78
|
-
getWeek: (e, t) =>
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
78
|
+
getWeek: (e, t) => {
|
|
79
|
+
let n = d(e);
|
|
80
|
+
return i(n, {
|
|
81
|
+
weekStartsOn: t?.weekStartsOn ?? l,
|
|
82
|
+
firstWeekContainsDate: t?.firstWeekContainsDate ?? c?.options?.firstWeekContainsDate ?? 1
|
|
83
|
+
});
|
|
84
|
+
},
|
|
85
|
+
getISOWeek: (e) => {
|
|
86
|
+
let t = d(e);
|
|
87
|
+
return r(t);
|
|
88
|
+
},
|
|
89
|
+
differenceInCalendarDays: (e, n) => {
|
|
90
|
+
let r = d(e), i = d(n);
|
|
91
|
+
return t(r, i);
|
|
92
|
+
},
|
|
93
|
+
differenceInCalendarMonths: (e, t) => {
|
|
94
|
+
let r = d(e), i = d(t);
|
|
95
|
+
return n(r, i);
|
|
96
|
+
}
|
|
85
97
|
};
|
|
86
98
|
}
|
|
87
99
|
//#endregion
|
package/dist/index154.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index154.js","names":["getWeekFn","getISOWeekFn","differenceInCalendarDaysFn","differenceInCalendarMonthsFn"],"sources":["../../../node_modules/react-day-picker/dist/esm/noonDateLib.js"],"sourcesContent":["import { TZDate } from \"@date-fns/tz\";\nimport { differenceInCalendarDays as differenceInCalendarDaysFn, differenceInCalendarMonths as differenceInCalendarMonthsFn, getISOWeek as getISOWeekFn, getWeek as getWeekFn, } from \"date-fns\";\n/**\n * Creates `dateLib` overrides that keep all calendar math at noon in the target\n * time zone. This avoids second-level offset changes (e.g., historical zones\n * with +03:41:12) from pushing dates backward across midnight.\n */\nexport function createNoonOverrides(timeZone, options = {}) {\n const { weekStartsOn, locale } = options;\n const fallbackWeekStartsOn = (weekStartsOn ??\n locale?.options?.weekStartsOn ??\n 0);\n // Keep all internal math anchored at noon in the target zone to avoid\n // historical second-level offsets from crossing midnight.\n const toNoonTZDate = (date) => {\n const normalizedDate = typeof date === \"number\" || typeof date === \"string\"\n ? new Date(date)\n : date;\n return new TZDate(normalizedDate.getFullYear(), normalizedDate.getMonth(), normalizedDate.getDate(), 12, 0, 0, timeZone);\n };\n // Convert a value into a host `Date` that represents the same calendar day\n // as the target-zone noon. This is useful for helpers (e.g., date-fns week\n // utilities) that expect local `Date` instances rather than `TZDate`s.\n const toCalendarDate = (date) => {\n const zoned = toNoonTZDate(date);\n return new Date(zoned.getFullYear(), zoned.getMonth(), zoned.getDate(), 0, 0, 0, 0);\n };\n return {\n today: () => {\n return toNoonTZDate(TZDate.tz(timeZone));\n },\n newDate: (year, monthIndex, date) => {\n return new TZDate(year, monthIndex, date, 12, 0, 0, timeZone);\n },\n startOfDay: (date) => {\n return toNoonTZDate(date);\n },\n startOfWeek: (date, options) => {\n const base = toNoonTZDate(date);\n const weekStartsOnValue = (options?.weekStartsOn ??\n fallbackWeekStartsOn);\n const diff = (base.getDay() - weekStartsOnValue + 7) % 7;\n base.setDate(base.getDate() - diff);\n return base;\n },\n startOfISOWeek: (date) => {\n const base = toNoonTZDate(date);\n const diff = (base.getDay() - 1 + 7) % 7;\n base.setDate(base.getDate() - diff);\n return base;\n },\n startOfMonth: (date) => {\n const base = toNoonTZDate(date);\n base.setDate(1);\n return base;\n },\n startOfYear: (date) => {\n const base = toNoonTZDate(date);\n base.setMonth(0, 1);\n return base;\n },\n endOfWeek: (date, options) => {\n const base = toNoonTZDate(date);\n const weekStartsOnValue = (options?.weekStartsOn ??\n fallbackWeekStartsOn);\n const endDow = (weekStartsOnValue + 6) % 7;\n const diff = (endDow - base.getDay() + 7) % 7;\n base.setDate(base.getDate() + diff);\n return base;\n },\n endOfISOWeek: (date) => {\n const base = toNoonTZDate(date);\n const diff = (7 - base.getDay()) % 7;\n base.setDate(base.getDate() + diff);\n return base;\n },\n endOfMonth: (date) => {\n const base = toNoonTZDate(date);\n base.setMonth(base.getMonth() + 1, 0);\n return base;\n },\n endOfYear: (date) => {\n const base = toNoonTZDate(date);\n base.setMonth(11, 31);\n return base;\n },\n eachMonthOfInterval: (interval) => {\n const start = toNoonTZDate(interval.start);\n const end = toNoonTZDate(interval.end);\n const result = [];\n const cursor = new TZDate(start.getFullYear(), start.getMonth(), 1, 12, 0, 0, timeZone);\n const endKey = end.getFullYear() * 12 + end.getMonth();\n while (cursor.getFullYear() * 12 + cursor.getMonth() <= endKey) {\n result.push(new TZDate(cursor, timeZone));\n cursor.setMonth(cursor.getMonth() + 1, 1);\n }\n return result;\n },\n // Normalize to noon once before arithmetic (avoid DST/midnight edge cases),\n // mutate the same TZDate, and return it.\n addDays: (date, amount) => {\n const base = toNoonTZDate(date);\n base.setDate(base.getDate() + amount);\n return base;\n },\n addWeeks: (date, amount) => {\n const base = toNoonTZDate(date);\n base.setDate(base.getDate() + amount * 7);\n return base;\n },\n addMonths: (date, amount) => {\n const base = toNoonTZDate(date);\n base.setMonth(base.getMonth() + amount);\n return base;\n },\n addYears: (date, amount) => {\n const base = toNoonTZDate(date);\n base.setFullYear(base.getFullYear() + amount);\n return base;\n },\n eachYearOfInterval: (interval) => {\n const start = toNoonTZDate(interval.start);\n const end = toNoonTZDate(interval.end);\n const years = [];\n const cursor = new TZDate(start.getFullYear(), 0, 1, 12, 0, 0, timeZone);\n while (cursor.getFullYear() <= end.getFullYear()) {\n years.push(new TZDate(cursor, timeZone));\n cursor.setFullYear(cursor.getFullYear() + 1, 0, 1);\n }\n return years;\n },\n getWeek: (date, options) => {\n const base = toCalendarDate(date);\n return getWeekFn(base, {\n weekStartsOn: options?.weekStartsOn ?? fallbackWeekStartsOn,\n firstWeekContainsDate: options?.firstWeekContainsDate ??\n locale?.options?.firstWeekContainsDate ??\n 1,\n });\n },\n getISOWeek: (date) => {\n const base = toCalendarDate(date);\n return getISOWeekFn(base);\n },\n differenceInCalendarDays: (dateLeft, dateRight) => {\n const left = toCalendarDate(dateLeft);\n const right = toCalendarDate(dateRight);\n return differenceInCalendarDaysFn(left, right);\n },\n differenceInCalendarMonths: (dateLeft, dateRight) => {\n const left = toCalendarDate(dateLeft);\n const right = toCalendarDate(dateRight);\n return differenceInCalendarMonthsFn(left, right);\n },\n };\n}\n"],"x_google_ignoreList":[0],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index154.js","names":["getWeekFn","getISOWeekFn","differenceInCalendarDaysFn","differenceInCalendarMonthsFn"],"sources":["../../../node_modules/react-day-picker/dist/esm/noonDateLib.js"],"sourcesContent":["import { TZDate } from \"@date-fns/tz\";\nimport { differenceInCalendarDays as differenceInCalendarDaysFn, differenceInCalendarMonths as differenceInCalendarMonthsFn, getISOWeek as getISOWeekFn, getWeek as getWeekFn, } from \"date-fns\";\n/**\n * Creates `dateLib` overrides that keep all calendar math at noon in the target\n * time zone. This avoids second-level offset changes (e.g., historical zones\n * with +03:41:12) from pushing dates backward across midnight.\n */\nexport function createNoonOverrides(timeZone, options = {}) {\n const { weekStartsOn, locale } = options;\n const fallbackWeekStartsOn = (weekStartsOn ??\n locale?.options?.weekStartsOn ??\n 0);\n // Keep all internal math anchored at noon in the target zone to avoid\n // historical second-level offsets from crossing midnight.\n const toNoonTZDate = (date) => {\n const normalizedDate = typeof date === \"number\" || typeof date === \"string\"\n ? new Date(date)\n : date;\n return new TZDate(normalizedDate.getFullYear(), normalizedDate.getMonth(), normalizedDate.getDate(), 12, 0, 0, timeZone);\n };\n // Convert a value into a host `Date` that represents the same calendar day\n // as the target-zone noon. This is useful for helpers (e.g., date-fns week\n // utilities) that expect local `Date` instances rather than `TZDate`s.\n const toCalendarDate = (date) => {\n const zoned = toNoonTZDate(date);\n return new Date(zoned.getFullYear(), zoned.getMonth(), zoned.getDate(), 0, 0, 0, 0);\n };\n return {\n today: () => {\n return toNoonTZDate(TZDate.tz(timeZone));\n },\n newDate: (year, monthIndex, date) => {\n return new TZDate(year, monthIndex, date, 12, 0, 0, timeZone);\n },\n startOfDay: (date) => {\n return toNoonTZDate(date);\n },\n startOfWeek: (date, options) => {\n const base = toNoonTZDate(date);\n const weekStartsOnValue = (options?.weekStartsOn ??\n fallbackWeekStartsOn);\n const diff = (base.getDay() - weekStartsOnValue + 7) % 7;\n base.setDate(base.getDate() - diff);\n return base;\n },\n startOfISOWeek: (date) => {\n const base = toNoonTZDate(date);\n const diff = (base.getDay() - 1 + 7) % 7;\n base.setDate(base.getDate() - diff);\n return base;\n },\n startOfMonth: (date) => {\n const base = toNoonTZDate(date);\n base.setDate(1);\n return base;\n },\n startOfYear: (date) => {\n const base = toNoonTZDate(date);\n base.setMonth(0, 1);\n return base;\n },\n endOfWeek: (date, options) => {\n const base = toNoonTZDate(date);\n const weekStartsOnValue = (options?.weekStartsOn ??\n fallbackWeekStartsOn);\n const endDow = (weekStartsOnValue + 6) % 7;\n const diff = (endDow - base.getDay() + 7) % 7;\n base.setDate(base.getDate() + diff);\n return base;\n },\n endOfISOWeek: (date) => {\n const base = toNoonTZDate(date);\n const diff = (7 - base.getDay()) % 7;\n base.setDate(base.getDate() + diff);\n return base;\n },\n endOfMonth: (date) => {\n const base = toNoonTZDate(date);\n base.setMonth(base.getMonth() + 1, 0);\n return base;\n },\n endOfYear: (date) => {\n const base = toNoonTZDate(date);\n base.setMonth(11, 31);\n return base;\n },\n eachMonthOfInterval: (interval) => {\n const start = toNoonTZDate(interval.start);\n const end = toNoonTZDate(interval.end);\n const result = [];\n const cursor = new TZDate(start.getFullYear(), start.getMonth(), 1, 12, 0, 0, timeZone);\n const endKey = end.getFullYear() * 12 + end.getMonth();\n while (cursor.getFullYear() * 12 + cursor.getMonth() <= endKey) {\n result.push(new TZDate(cursor, timeZone));\n cursor.setMonth(cursor.getMonth() + 1, 1);\n }\n return result;\n },\n // Normalize to noon once before arithmetic (avoid DST/midnight edge cases),\n // mutate the same TZDate, and return it.\n addDays: (date, amount) => {\n const base = toNoonTZDate(date);\n base.setDate(base.getDate() + amount);\n return base;\n },\n addWeeks: (date, amount) => {\n const base = toNoonTZDate(date);\n base.setDate(base.getDate() + amount * 7);\n return base;\n },\n addMonths: (date, amount) => {\n const base = toNoonTZDate(date);\n base.setMonth(base.getMonth() + amount);\n return base;\n },\n addYears: (date, amount) => {\n const base = toNoonTZDate(date);\n base.setFullYear(base.getFullYear() + amount);\n return base;\n },\n eachYearOfInterval: (interval) => {\n const start = toNoonTZDate(interval.start);\n const end = toNoonTZDate(interval.end);\n const years = [];\n const cursor = new TZDate(start.getFullYear(), 0, 1, 12, 0, 0, timeZone);\n while (cursor.getFullYear() <= end.getFullYear()) {\n years.push(new TZDate(cursor, timeZone));\n cursor.setFullYear(cursor.getFullYear() + 1, 0, 1);\n }\n return years;\n },\n getWeek: (date, options) => {\n const base = toCalendarDate(date);\n return getWeekFn(base, {\n weekStartsOn: options?.weekStartsOn ?? fallbackWeekStartsOn,\n firstWeekContainsDate: options?.firstWeekContainsDate ??\n locale?.options?.firstWeekContainsDate ??\n 1,\n });\n },\n getISOWeek: (date) => {\n const base = toCalendarDate(date);\n return getISOWeekFn(base);\n },\n differenceInCalendarDays: (dateLeft, dateRight) => {\n const left = toCalendarDate(dateLeft);\n const right = toCalendarDate(dateRight);\n return differenceInCalendarDaysFn(left, right);\n },\n differenceInCalendarMonths: (dateLeft, dateRight) => {\n const left = toCalendarDate(dateLeft);\n const right = toCalendarDate(dateRight);\n return differenceInCalendarMonthsFn(left, right);\n },\n };\n}\n"],"x_google_ignoreList":[0],"mappings":"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"}
|