@rpcbase/ui 0.257.0 → 0.259.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 +3 -1
- package/dist/components/AddressAutocompleteInput/index.d.ts.map +1 -1
- package/dist/components/ApplePayButton/index.d.ts.map +1 -1
- package/dist/components/Checkbox/index.d.ts.map +1 -1
- package/dist/components/Dialog/index.d.ts +1 -1
- package/dist/components/I18nField/index.d.ts +1 -1
- package/dist/components/Image/index.d.ts.map +1 -1
- package/dist/components/PhoneNumberInput/index.d.ts +1 -1
- package/dist/components/PhoneNumberInput/suggestions.d.ts.map +1 -1
- package/dist/components/Select/index.d.ts +4 -4
- package/dist/components/Select/index.d.ts.map +1 -1
- package/dist/components/header/MenuPopover/index.d.ts.map +1 -1
- package/dist/components/header/index.d.ts +2 -10
- package/dist/components/header/index.d.ts.map +1 -1
- package/dist/helpers/useMapsLibrary.d.ts.map +1 -1
- package/dist/index14.js +61 -59
- package/dist/index14.js.map +1 -1
- package/dist/lib/render-as-child.d.ts +1 -1
- package/dist/lib/render-as-child.d.ts.map +1 -1
- package/package.json +2 -1
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
|
|
1
|
+
import { ReactNode } from "react";
|
|
2
|
+
export declare const AddressAutocompleteInput: ({ id, label, placeholder, value, onValueChange, disabled, name, className, autofillShimName, googleMapsApiKey, locationRestriction, allowedTypes, loadingIndicator, }: {
|
|
2
3
|
id: string;
|
|
3
4
|
label: string;
|
|
4
5
|
placeholder: string;
|
|
@@ -11,5 +12,6 @@ export declare const AddressAutocompleteInput: ({ id, label, placeholder, value,
|
|
|
11
12
|
googleMapsApiKey?: string;
|
|
12
13
|
locationRestriction?: google.maps.LatLngBoundsLiteral | google.maps.LatLngBounds;
|
|
13
14
|
allowedTypes?: Iterable<string>;
|
|
15
|
+
loadingIndicator?: ReactNode;
|
|
14
16
|
}) => import("react/jsx-runtime").JSX.Element;
|
|
15
17
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/AddressAutocompleteInput/index.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/AddressAutocompleteInput/index.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAoE,MAAM,OAAO,CAAA;AAqJnG,eAAO,MAAM,wBAAwB,0KAclC;IACD,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,EAAE,MAAM,CAAA;IACnB,KAAK,EAAE,MAAM,GAAG,SAAS,CAAA;IACzB,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACtC,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,mBAAmB,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,mBAAmB,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,CAAA;IAChF,YAAY,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAA;IAC/B,gBAAgB,CAAC,EAAE,SAAS,CAAA;CAC7B,4CAsVA,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/ApplePayButton/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,OAAO,CAAA;AAIrD,KAAK,mBAAmB,GAAG,wBAAwB,CAAC,QAAQ,CAAC,CAAA;AAG7D,eAAO,MAAM,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/ApplePayButton/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,OAAO,CAAA;AAIrD,KAAK,mBAAmB,GAAG,wBAAwB,CAAC,QAAQ,CAAC,CAAA;AAG7D,eAAO,MAAM,cAAc,qDAKxB,mBAAmB,4CAiBrB,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Checkbox/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAKzB,QAAA,MAAM,aAAa
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Checkbox/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAKzB,QAAA,MAAM,aAAa;IACjB,GAAG;IACH,GAAG;IACH,OAAO;CAER,CAAA;AAED,UAAU,aACR,SAAQ,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC,CAAC;IAC1E,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,WAAW,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAAC;IAC/D,KAAK,CAAC,EAAE,MAAM,OAAO,aAAa,CAAC;CACpC;AAED,eAAO,MAAM,QAAQ,8FAUlB,aAAa,4CA6Cf,CAAA"}
|
|
@@ -9,7 +9,7 @@ declare function DialogClose({ asChild, render, children, ...props }: DialogPrim
|
|
|
9
9
|
asChild?: boolean;
|
|
10
10
|
}): import("react/jsx-runtime").JSX.Element;
|
|
11
11
|
declare function DialogOverlay({ className, ...props }: DialogPrimitive.Backdrop.Props): import("react/jsx-runtime").JSX.Element;
|
|
12
|
-
declare const DialogContent: React.ForwardRefExoticComponent<Omit<import("@base-ui/react").
|
|
12
|
+
declare const DialogContent: React.ForwardRefExoticComponent<Omit<import("@base-ui/react").DialogPopupProps & {
|
|
13
13
|
showCloseButton?: boolean;
|
|
14
14
|
showCloseButtonOutside?: boolean;
|
|
15
15
|
}, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
@@ -22,7 +22,7 @@ type LanguageOption = {
|
|
|
22
22
|
code: string;
|
|
23
23
|
searchable: string[];
|
|
24
24
|
};
|
|
25
|
-
export declare const I18nField: React.ForwardRefExoticComponent<Omit<React.InputHTMLAttributes<HTMLInputElement>, "
|
|
25
|
+
export declare const I18nField: React.ForwardRefExoticComponent<Omit<React.InputHTMLAttributes<HTMLInputElement>, "defaultValue" | "onChange" | "value"> & Omit<React.TextareaHTMLAttributes<HTMLTextAreaElement>, "defaultValue" | "onChange" | "value"> & {
|
|
26
26
|
value?: I18nValue;
|
|
27
27
|
defaultValue?: I18nValue;
|
|
28
28
|
locale?: LanguageCode;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Image/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA+B,KAAK,iBAAiB,EAAE,MAAM,OAAO,CAAA;AAI3E,eAAO,MAAM,kBAAkB,UAAwB,CAAA;AAEvD,MAAM,MAAM,aAAa,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;AAEpD,MAAM,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,EAAE,KAAK,CAAC,GAAG;IAC1E,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,CAAC,EAAE,aAAa,CAAA;IACpB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;IACjB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB,CAAA;AAUD,eAAO,MAAM,qBAAqB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Image/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA+B,KAAK,iBAAiB,EAAE,MAAM,OAAO,CAAA;AAI3E,eAAO,MAAM,kBAAkB,UAAwB,CAAA;AAEvD,MAAM,MAAM,aAAa,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;AAEpD,MAAM,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,EAAE,KAAK,CAAC,GAAG;IAC1E,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,CAAC,EAAE,aAAa,CAAA;IACpB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;IACjB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB,CAAA;AAUD,eAAO,MAAM,qBAAqB,QAAS,MAAM,KAAG,OASnD,CAAA;AAED,eAAO,MAAM,cAAc,QAAS,MAAM,SAAS,MAAM,KAAG,MAc3D,CAAA;AAED,eAAO,MAAM,cAAc,QAAS,MAAM,wBAAgC,MAAM,GAAG,SAKlF,CAAA;AAED,wBAAgB,KAAK,CAAC,EACpB,GAAG,EACH,IAAI,EACJ,GAAQ,EACR,SAAS,EACT,kBAAkB,EAClB,YAAY,EACZ,MAA2B,EAC3B,UAAU,EACV,KAAK,EACL,MAAM,EACN,OAAgB,EAChB,QAAkB,EAClB,KAAK,EACL,MAAM,EACN,OAAO,EACP,GAAG,KAAK,EACT,EAAE,UAAU,2CAyFZ"}
|
|
@@ -3,7 +3,7 @@ import type { CountryCode } from "libphonenumber-js";
|
|
|
3
3
|
import { type Props as SelectProps } from "react-select";
|
|
4
4
|
import type { CountryOption, PhoneNumberChangeDetails, PhoneNumberSelectedCountry } from "./types";
|
|
5
5
|
export type { CountryOption, PhoneNumberChangeDetails, PhoneNumberInputMessages, PhoneNumberInputProps, PhoneNumberInputValidationCode, PhoneNumberSelectedCountry, } from "./types";
|
|
6
|
-
export declare const PhoneNumberInput: React.ForwardRefExoticComponent<Omit<React.InputHTMLAttributes<HTMLInputElement>, "
|
|
6
|
+
export declare const PhoneNumberInput: React.ForwardRefExoticComponent<Omit<React.InputHTMLAttributes<HTMLInputElement>, "defaultValue" | "onChange" | "value"> & {
|
|
7
7
|
value?: string;
|
|
8
8
|
defaultCountry?: CountryCode;
|
|
9
9
|
country?: CountryCode;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"suggestions.d.ts","sourceRoot":"","sources":["../../../src/components/PhoneNumberInput/suggestions.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AACpD,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAI3E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAG5C,MAAM,MAAM,sBAAsB,GAAG;IACnC,gBAAgB,EAAE,WAAW,GAAG,IAAI,CAAA;IACpC,oBAAoB,EAAE,CAAC,MAAM,EAAE,aAAa,KAAK,IAAI,CAAA;IACrD,iBAAiB,EAAE,CAAC,MAAM,EAAE,aAAa,KAAK,KAAK,CAAC,SAAS,CAAA;IAC7D,qBAAqB,EAAE,MAAM,cAAc,CAAA;CAC5C,CAAA;AAED,eAAO,MAAM,iBAAiB,8CAA2D,CAAA;AAYzF,eAAO,MAAM,gBAAgB,
|
|
1
|
+
{"version":3,"file":"suggestions.d.ts","sourceRoot":"","sources":["../../../src/components/PhoneNumberInput/suggestions.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AACpD,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAI3E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAG5C,MAAM,MAAM,sBAAsB,GAAG;IACnC,gBAAgB,EAAE,WAAW,GAAG,IAAI,CAAA;IACpC,oBAAoB,EAAE,CAAC,MAAM,EAAE,aAAa,KAAK,IAAI,CAAA;IACrD,iBAAiB,EAAE,CAAC,MAAM,EAAE,aAAa,KAAK,KAAK,CAAC,SAAS,CAAA;IAC7D,qBAAqB,EAAE,MAAM,cAAc,CAAA;CAC5C,CAAA;AAED,eAAO,MAAM,iBAAiB,8CAA2D,CAAA;AAYzF,eAAO,MAAM,gBAAgB,UAAW,WAAW,CAAC,aAAa,EAAE,KAAK,CAAC,4CAqExE,CAAA;AAED,eAAO,MAAM,sBAAsB,EAAE,YAAY,CAAC,aAAa,EAAE,KAAK,CAoCrE,CAAA;AAED,eAAO,MAAM,aAAa,UAAW,YAAY,CAAC,aAAa,EAAE,KAAK,CAAC,4CAkBtE,CAAA;AAED,eAAO,MAAM,aAAa,YAAa,CAAA;AAEvC,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,aAAa,2CAcxD"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
2
|
import { Select as SelectPrimitive } from "@base-ui/react/select";
|
|
3
3
|
type SelectProps = React.ComponentProps<typeof SelectPrimitive.Root>;
|
|
4
|
-
declare
|
|
5
|
-
|
|
6
|
-
displayName: string;
|
|
7
|
-
}
|
|
4
|
+
declare function Select({ children, items, ...props }: SelectProps): import("react/jsx-runtime").JSX.Element;
|
|
5
|
+
declare namespace Select {
|
|
6
|
+
var displayName: string;
|
|
7
|
+
}
|
|
8
8
|
declare const SelectGroup: React.ForwardRefExoticComponent<Omit<import("@base-ui/react").SelectGroupProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
9
9
|
declare const SelectValue: React.ForwardRefExoticComponent<Omit<import("@base-ui/react").SelectValueProps, "ref"> & React.RefAttributes<HTMLSpanElement>>;
|
|
10
10
|
declare const SelectTrigger: React.ForwardRefExoticComponent<Omit<import("@base-ui/react").SelectTriggerProps, "ref"> & React.RefAttributes<HTMLButtonElement>>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Select/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,EAAE,MAAM,IAAI,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAKjE,KAAK,WAAW,GAAG,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,IAAI,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Select/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,EAAE,MAAM,IAAI,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAKjE,KAAK,WAAW,GAAG,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,IAAI,CAAC,CAAA;wBAyBpD,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,KAAK,EAAE,EAAE,WAAW;;;;AAgB1D,QAAA,MAAM,WAAW,+HAKf,CAAA;AAGF,QAAA,MAAM,WAAW,gIAKf,CAAA;AAIF,QAAA,MAAM,aAAa,oIAejB,CAAA;AAuKF,QAAA,MAAM,oBAAoB,6GAOxB,CAAA;AAGF,QAAA,MAAM,sBAAsB,6GAO1B,CAAA;AAGF,KAAK,kBAAkB,GAAG,eAAe,CAAC,KAAK,CAAC,KAAK,GACnD,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,aAAa,GAAG,MAAM,GAAG,YAAY,GAAG,sBAAsB,CAAC,GAAG;IACjH,QAAQ,CAAC,EAAE,cAAc,GAAG,QAAQ,CAAA;IACpC,UAAU,CAAC,EAAE,cAAc,GAAG,yBAAyB,CAAA;CACxD,CAAA;AAEH,QAAA,MAAM,aAAa,wGAoGjB,CAAA;AAGF,QAAA,MAAM,WAAW,oIASf,CAAA;AAGF,QAAA,MAAM,UAAU,2HAmBd,CAAA;AAGF,QAAA,MAAM,eAAe,6HASnB,CAAA;AAGF,OAAO,EACL,MAAM,EACN,WAAW,EACX,WAAW,EACX,aAAa,EACb,aAAa,EACb,WAAW,EACX,UAAU,EACV,eAAe,EACf,oBAAoB,EACpB,sBAAsB,GACvB,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/header/MenuPopover/index.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAA+B,MAAM,OAAO,CAAA;AAI9D,eAAO,MAAM,WAAW,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/header/MenuPopover/index.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAA+B,MAAM,OAAO,CAAA;AAI9D,eAAO,MAAM,WAAW,sFAOrB;IACD,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,MAAM,CAAC;IACvB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,YAAY,EAAE,SAAS,CAAC;IACxB,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,CAAC,KAAK,EAAE;QAAE,SAAS,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAA;KAAE,KAAK,SAAS,CAAA;CACzE,4CAkEA,CAAA"}
|
|
@@ -1,13 +1,5 @@
|
|
|
1
|
+
import { MenuPopover } from "./MenuPopover";
|
|
1
2
|
export declare const Header: {
|
|
2
|
-
MenuPopover:
|
|
3
|
-
href: string;
|
|
4
|
-
labelClassName: string;
|
|
5
|
-
labelActiveClassName: string;
|
|
6
|
-
labelElement: import("react").ReactNode;
|
|
7
|
-
isActive: boolean;
|
|
8
|
-
children: (props: {
|
|
9
|
-
setIsOpen: (isOpen: boolean) => void;
|
|
10
|
-
}) => import("react").ReactNode;
|
|
11
|
-
}) => import("react/jsx-runtime").JSX.Element;
|
|
3
|
+
MenuPopover: typeof MenuPopover;
|
|
12
4
|
};
|
|
13
5
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/header/index.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/header/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAG3C,eAAO,MAAM,MAAM;;CAElB,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useMapsLibrary.d.ts","sourceRoot":"","sources":["../../src/helpers/useMapsLibrary.ts"],"names":[],"mappings":"AAMA,KAAK,qBAAqB,GACtB,MAAM,GACN,MAAM,GACN,QAAQ,GACR,QAAQ,GACR,UAAU,GACV,WAAW,GACX,YAAY,GACZ,gBAAgB,GAChB,SAAS,GACT,eAAe,GACf,QAAQ,GACR,QAAQ,GACR,WAAW,GACX,CAAC,MAAM,GAAG,EAAE,CAAC,CAAA;AAEjB,KAAK,uBAAuB,CAAC,CAAC,SAAS,qBAAqB,IAC1D,CAAC,SAAS,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,GACtC,CAAC,SAAS,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,GACxC,CAAC,SAAS,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,aAAa,GAC5C,CAAC,SAAS,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,aAAa,GAC5C,CAAC,SAAS,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,eAAe,GAChD,CAAC,SAAS,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,gBAAgB,GAClD,CAAC,SAAS,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,iBAAiB,GACpD,CAAC,SAAS,gBAAgB,GAAG,MAAM,CAAC,IAAI,CAAC,qBAAqB,GAC5D,CAAC,SAAS,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,cAAc,GAC9C,CAAC,SAAS,eAAe,GAAG,MAAM,CAAC,IAAI,CAAC,oBAAoB,GAC1D,CAAC,SAAS,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,aAAa,GAC5C,CAAC,SAAS,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,aAAa,GAC5C,CAAC,SAAS,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,gBAAgB,GAClD,OAAO,CAAA;AA+DrC,eAAO,MAAM,cAAc,GAAI,CAAC,SAAS,qBAAqB,
|
|
1
|
+
{"version":3,"file":"useMapsLibrary.d.ts","sourceRoot":"","sources":["../../src/helpers/useMapsLibrary.ts"],"names":[],"mappings":"AAMA,KAAK,qBAAqB,GACtB,MAAM,GACN,MAAM,GACN,QAAQ,GACR,QAAQ,GACR,UAAU,GACV,WAAW,GACX,YAAY,GACZ,gBAAgB,GAChB,SAAS,GACT,eAAe,GACf,QAAQ,GACR,QAAQ,GACR,WAAW,GACX,CAAC,MAAM,GAAG,EAAE,CAAC,CAAA;AAEjB,KAAK,uBAAuB,CAAC,CAAC,SAAS,qBAAqB,IAC1D,CAAC,SAAS,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,GACtC,CAAC,SAAS,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,GACxC,CAAC,SAAS,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,aAAa,GAC5C,CAAC,SAAS,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,aAAa,GAC5C,CAAC,SAAS,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,eAAe,GAChD,CAAC,SAAS,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,gBAAgB,GAClD,CAAC,SAAS,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,iBAAiB,GACpD,CAAC,SAAS,gBAAgB,GAAG,MAAM,CAAC,IAAI,CAAC,qBAAqB,GAC5D,CAAC,SAAS,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,cAAc,GAC9C,CAAC,SAAS,eAAe,GAAG,MAAM,CAAC,IAAI,CAAC,oBAAoB,GAC1D,CAAC,SAAS,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,aAAa,GAC5C,CAAC,SAAS,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,aAAa,GAC5C,CAAC,SAAS,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,gBAAgB,GAClD,OAAO,CAAA;AA+DrC,eAAO,MAAM,cAAc,GAAI,CAAC,SAAS,qBAAqB,WACnD,CAAC,WACD,MAAM,sCA+BhB,CAAA;AAED,YAAY,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,CAAA"}
|
package/dist/index14.js
CHANGED
|
@@ -45,109 +45,109 @@ var p = /* @__PURE__ */ new Set(/* @__PURE__ */ "street_address.route.premise.su
|
|
|
45
45
|
let n = e.placeId;
|
|
46
46
|
n && (t.has(n) || t.set(n, e));
|
|
47
47
|
}), Array.from(t.values());
|
|
48
|
-
}, y = (e, t) => e.filter((e) => g(e, t)), b = (e) => e.sort((e, t) => (e.distanceMeters ?? Infinity) - (t.distanceMeters ?? Infinity)), x = (e, t) => b(y(v(e), t)), S = (e, t) => m(e).toLowerCase() === t.trim().toLowerCase(), C = ({ id: i, label: u, placeholder: g, value: v, onValueChange: y, disabled: b, name: C, className: w, autofillShimName: T, googleMapsApiKey: E, locationRestriction: D, allowedTypes: O }) => {
|
|
49
|
-
let [
|
|
48
|
+
}, y = (e, t) => e.filter((e) => g(e, t)), b = (e) => e.sort((e, t) => (e.distanceMeters ?? Infinity) - (t.distanceMeters ?? Infinity)), x = (e, t) => b(y(v(e), t)), S = (e, t) => m(e).toLowerCase() === t.trim().toLowerCase(), C = ({ id: i, label: u, placeholder: g, value: v, onValueChange: y, disabled: b, name: C, className: w, autofillShimName: T, googleMapsApiKey: E, locationRestriction: D, allowedTypes: O, loadingIndicator: k }) => {
|
|
49
|
+
let [A, j] = c(v ?? ""), [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([]), K = s("smooth"), q = e("places", E), J = o(() => {
|
|
50
50
|
if (!O) return p;
|
|
51
51
|
let e = /* @__PURE__ */ new Set();
|
|
52
52
|
for (let t of O) e.add(t);
|
|
53
53
|
return e;
|
|
54
54
|
}, [O]);
|
|
55
55
|
a(() => {
|
|
56
|
-
|
|
56
|
+
j(v ?? ""), U.current = !1;
|
|
57
57
|
}, [v]), a(() => {
|
|
58
|
-
if (
|
|
59
|
-
|
|
58
|
+
if (H.current) {
|
|
59
|
+
H.current = !1;
|
|
60
60
|
return;
|
|
61
61
|
}
|
|
62
|
-
let e =
|
|
63
|
-
|
|
62
|
+
let e = A.trim();
|
|
63
|
+
z(e !== "");
|
|
64
64
|
let t = !0, n = setTimeout(() => {
|
|
65
65
|
if (!t) return;
|
|
66
66
|
if (e === "") {
|
|
67
|
-
|
|
67
|
+
N([]), F(!1), W.current = null, v !== "" && y("");
|
|
68
68
|
return;
|
|
69
69
|
}
|
|
70
|
-
if (!
|
|
71
|
-
let { AutocompleteSuggestion: n, AutocompleteSessionToken: r } =
|
|
70
|
+
if (!q) return;
|
|
71
|
+
let { AutocompleteSuggestion: n, AutocompleteSessionToken: r } = q;
|
|
72
72
|
if (!n || !r) {
|
|
73
|
-
console.error("AddressAutocompleteInput: missing AutocompleteSuggestion or AutocompleteSessionToken exports"),
|
|
73
|
+
console.error("AddressAutocompleteInput: missing AutocompleteSuggestion or AutocompleteSessionToken exports"), N([]), F(!1), z(!1);
|
|
74
74
|
return;
|
|
75
75
|
}
|
|
76
|
-
|
|
76
|
+
W.current ||= new r();
|
|
77
77
|
let i = {
|
|
78
|
-
input:
|
|
79
|
-
sessionToken:
|
|
78
|
+
input: A,
|
|
79
|
+
sessionToken: W.current ?? void 0,
|
|
80
80
|
includedRegionCodes: ["fr"]
|
|
81
81
|
};
|
|
82
82
|
D && (i.locationRestriction = D), n.fetchAutocompleteSuggestions(i).then((e) => {
|
|
83
83
|
if (!t) return;
|
|
84
|
-
let n = x(e.suggestions.map((e) => e.placePrediction).filter((e) => !!e),
|
|
85
|
-
if (!
|
|
86
|
-
|
|
84
|
+
let n = x(e.suggestions.map((e) => e.placePrediction).filter((e) => !!e), J), r = n[0], i = r && n.length === 1 && S(r, A);
|
|
85
|
+
if (!U.current && i) {
|
|
86
|
+
N(n), F(!1), z(!1);
|
|
87
87
|
return;
|
|
88
88
|
}
|
|
89
|
-
n.length > 0 ? (
|
|
89
|
+
n.length > 0 ? (N(n), U.current && F(!0), L(-1)) : (N([]), F(!1)), z(!1);
|
|
90
90
|
}).catch((e) => {
|
|
91
|
-
t && (console.error("AddressAutocompleteInput: suggestion fetch failed", e),
|
|
91
|
+
t && (console.error("AddressAutocompleteInput: suggestion fetch failed", e), N([]), F(!1), z(!1));
|
|
92
92
|
});
|
|
93
93
|
}, 300);
|
|
94
94
|
return () => {
|
|
95
95
|
t = !1, clearTimeout(n);
|
|
96
96
|
};
|
|
97
97
|
}, [
|
|
98
|
-
|
|
99
|
-
|
|
98
|
+
A,
|
|
99
|
+
q,
|
|
100
100
|
y,
|
|
101
101
|
v,
|
|
102
102
|
D,
|
|
103
|
-
|
|
103
|
+
J
|
|
104
104
|
]), a(() => {
|
|
105
105
|
let e = (e) => {
|
|
106
|
-
|
|
106
|
+
B.current && !B.current.contains(e.target) && V.current && !V.current.contains(e.target) && F(!1);
|
|
107
107
|
};
|
|
108
108
|
return document.addEventListener("mousedown", e), () => {
|
|
109
109
|
document.removeEventListener("mousedown", e);
|
|
110
110
|
};
|
|
111
111
|
}, []);
|
|
112
|
-
let
|
|
113
|
-
|
|
112
|
+
let Y = (e) => {
|
|
113
|
+
H.current = !0;
|
|
114
114
|
let t = m(e);
|
|
115
|
-
|
|
116
|
-
}, Y = (e) => {
|
|
117
|
-
H.current = !0, A(e.target.value);
|
|
115
|
+
j(t), y(t), N([]), F(!1), z(!1), W.current = null;
|
|
118
116
|
}, X = (e) => {
|
|
119
|
-
|
|
120
|
-
|
|
117
|
+
U.current = !0, j(e.target.value);
|
|
118
|
+
}, Z = (e) => {
|
|
119
|
+
if (!P || M.length === 0) {
|
|
120
|
+
e.key === "Enter" && (e.preventDefault(), y(A), F(!1), W.current = null);
|
|
121
121
|
return;
|
|
122
122
|
}
|
|
123
|
-
e.key === "ArrowDown" ? (
|
|
124
|
-
},
|
|
125
|
-
|
|
126
|
-
},
|
|
123
|
+
e.key === "ArrowDown" ? (K.current = e.repeat ? "auto" : "smooth", e.preventDefault(), L((e) => M.length === 0 ? -1 : e < 0 ? 0 : (e + 1) % M.length)) : e.key === "ArrowUp" ? (K.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] ? Y(M[I]) : (y(A), F(!1), W.current = null)) : e.key === "Escape" && F(!1);
|
|
124
|
+
}, Q = () => {
|
|
125
|
+
F(!1), v !== A && y(A), W.current = null;
|
|
126
|
+
}, $ = T ?? (C ? `${C}_shim` : void 0);
|
|
127
127
|
return a(() => {
|
|
128
|
-
if (!
|
|
129
|
-
|
|
128
|
+
if (!P || I < 0) {
|
|
129
|
+
K.current = "smooth";
|
|
130
130
|
return;
|
|
131
131
|
}
|
|
132
|
-
let e =
|
|
132
|
+
let e = G.current[I], t = V.current;
|
|
133
133
|
if (!e || !t) {
|
|
134
|
-
|
|
134
|
+
K.current = "smooth";
|
|
135
135
|
return;
|
|
136
136
|
}
|
|
137
|
-
let n =
|
|
138
|
-
|
|
137
|
+
let n = K.current;
|
|
138
|
+
K.current = "smooth";
|
|
139
139
|
let r = e.offsetTop, i = r + e.offsetHeight, a = t.scrollTop, o = a + t.clientHeight;
|
|
140
140
|
r >= a && i <= o || e.scrollIntoView({
|
|
141
141
|
block: "nearest",
|
|
142
142
|
behavior: n
|
|
143
143
|
});
|
|
144
|
-
}, [
|
|
144
|
+
}, [I, P]), G.current.length = M.length, /* @__PURE__ */ f("div", {
|
|
145
145
|
className: "relative",
|
|
146
146
|
children: [
|
|
147
|
-
|
|
147
|
+
$ && /* @__PURE__ */ d("input", {
|
|
148
148
|
tabIndex: -1,
|
|
149
149
|
autoComplete: "street-address",
|
|
150
|
-
name:
|
|
150
|
+
name: $,
|
|
151
151
|
"aria-hidden": "true",
|
|
152
152
|
style: {
|
|
153
153
|
position: "absolute",
|
|
@@ -165,38 +165,40 @@ var p = /* @__PURE__ */ new Set(/* @__PURE__ */ "street_address.route.premise.su
|
|
|
165
165
|
/* @__PURE__ */ f("div", {
|
|
166
166
|
className: "relative",
|
|
167
167
|
children: [/* @__PURE__ */ d(r, {
|
|
168
|
-
ref:
|
|
168
|
+
ref: B,
|
|
169
169
|
id: i,
|
|
170
170
|
type: "text",
|
|
171
171
|
placeholder: g,
|
|
172
172
|
name: C ?? `${i}_input`,
|
|
173
|
-
value:
|
|
174
|
-
onChange:
|
|
175
|
-
onKeyDown:
|
|
173
|
+
value: A,
|
|
174
|
+
onChange: X,
|
|
175
|
+
onKeyDown: Z,
|
|
176
176
|
onFocus: () => {
|
|
177
|
-
|
|
177
|
+
M.length > 0 && A && F(!0);
|
|
178
178
|
},
|
|
179
|
-
onBlur:
|
|
179
|
+
onBlur: Q,
|
|
180
180
|
disabled: b,
|
|
181
181
|
autoComplete: "new-password",
|
|
182
|
-
className: n("w-full",
|
|
183
|
-
}),
|
|
184
|
-
|
|
185
|
-
"
|
|
182
|
+
className: n("w-full", R && "pr-9", w)
|
|
183
|
+
}), R && /* @__PURE__ */ d("span", {
|
|
184
|
+
"aria-hidden": "true",
|
|
185
|
+
className: "pointer-events-none absolute right-3 top-1/2 flex size-4 -translate-y-1/2 items-center justify-center text-gray-400",
|
|
186
|
+
"data-slot": "address-autocomplete-loading-indicator",
|
|
187
|
+
children: k === void 0 ? /* @__PURE__ */ d(l, { className: "size-full animate-spin" }) : k
|
|
186
188
|
})]
|
|
187
189
|
}),
|
|
188
|
-
|
|
189
|
-
ref:
|
|
190
|
+
P && M.length > 0 && /* @__PURE__ */ d("ul", {
|
|
191
|
+
ref: V,
|
|
190
192
|
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",
|
|
191
193
|
role: "listbox",
|
|
192
|
-
children:
|
|
194
|
+
children: M.map((e, n) => /* @__PURE__ */ d("li", {
|
|
193
195
|
ref: (e) => {
|
|
194
|
-
|
|
196
|
+
G.current[n] = e;
|
|
195
197
|
},
|
|
196
|
-
className: t("cursor-pointer px-3 py-2 text-sm text-gray-700 hover:bg-gray-100", { "bg-gray-100":
|
|
198
|
+
className: t("cursor-pointer px-3 py-2 text-sm text-gray-700 hover:bg-gray-100", { "bg-gray-100": I === n }),
|
|
197
199
|
role: "option",
|
|
198
200
|
onMouseDown: (t) => {
|
|
199
|
-
t.preventDefault(),
|
|
201
|
+
t.preventDefault(), Y(e);
|
|
200
202
|
},
|
|
201
203
|
children: /* @__PURE__ */ d(h, { prediction: e })
|
|
202
204
|
}, _(e, n)))
|
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","getDisplayText","prediction","google","maps","places","PlacePrediction","fullText","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","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","LatLngBoundsLiteral","LatLngBounds","Iterable","inputValue","setInputValue","setPredictions","isDropdownOpen","setIsDropdownOpen","highlightedIndex","setHighlightedIndex","isLoading","setIsLoading","inputRef","HTMLInputElement","dropdownRef","HTMLUListElement","isSelecting","hasUserTyped","sessionTokenRef","AutocompleteSessionToken","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","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 getDisplayText = (prediction: google.maps.places.PlacePrediction) => {\n const fullText = 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 = 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 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}: {\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}) => {\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 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((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\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 <Loader2\n className=\"pointer-events-none absolute right-3 top-1/2 h-4 w-4 -translate-y-1/2 animate-spin text-gray-400\"\n aria-hidden=\"true\"\n />\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,IAAMY,oBAAwB,IAAIC,IAAI,ggBA6BnB,CAClB,GAEKC,KAAkBC,OACLA,EAAWM,MAAMA,QAAQ,GAAA,CAC1BC,QAAQ,aAAa,EAAE,CAAC,CAACC,KAAK,GAG1CC,KAAiBC,MAAA;CAAA,IAAAC,IAAAC,EAAA,CAAA,GAAC,EAAAZ,kBAAAU,GAAkEG,GAAAC,GAAAC;CAAA,IAAAJ,EAAA,OAAAX,GAAA;EAO/Ee,IAAAC,OAAkBC,IAAlB,6BAAiB;EAACC,KAAA;GAN3BL,IAAoBd,EAAeC,CAAU;GAC7C,IAAAK,IAAiBL,EAAUM,MAAWA,QAArB,IACjBa,IAAgBnB,EAAUM,MAAca,WAAxB,CAAA,GAChBC,IAA0BP,EAAWQ,SAAUhB,EAAQgB;GAEvD,IAAIF,EAAOE,WAAY,GAAC;IACfN,IAAA,kBAAA,GAAA,EAAA,UAAGF,EAAW,CAAA;IAAd,MAAAK;GAAkB;GAG3BJ,IAA2B,CAAA;GAC3B,IAAAQ,IAAgB;GAsBhB,AApBAH,EAAOI,SAASC,GAAAC,MAAA;IACd,IAAIL,KAAqBI,EAASE,eAAgBb,EAAWQ,QAAO;IAIpE,IAAAK,IAAoBF,EAASE,aAC7BC,IAAkBC,KAAIC,IAAKL,EAASG,WAAYd,EAAWQ,MAAO;IAMlE,IAJIK,IAAcJ,KAChBR,EAAKgB,KAAMjB,EAAWW,UAAWF,GAAWI,CAAW,CAAC,GAGtDC,IAAYD,GAAW;KACzB,IAAAK,IAAgBlB,EAAWW,UAAWE,GAAaC,CAAS;KAC5Db,EAAKgB,KAAM,kBAAA,UAAA,EAAA,UAAqBC,EAAiB,GAAzBN,CAAyB,CAAA;IAAC;IAGpDH,IAAYM,KAAII,IAAKV,GAAWK,CAAS;GAAhC,CACV,GAEGL,IAAYT,EAAWQ,UACzBP,EAAKgB,KAAMjB,EAAWW,UAAWF,CAAS,CAAC;EAC5C;EAAAX,AAAAA,EAAA,KAAAX,GAAAW,EAAA,KAAAE,GAAAF,EAAA,KAAAG,GAAAH,EAAA,KAAAI;CAAA,OAAAA,AAAAF,IAAAF,EAAA,IAAAG,IAAAH,EAAA,IAAAI,IAAAJ,EAAA;CAAA,IAAAI,MAAAC,OAAAC,IAAA,6BAAA,GAAA,OAAAF;CAED,IAAID,EAAKO,WAAY,GAAC;EAAA,IAAAY;EACK,OADLtB,EAAA,OAAAE,IACKoB,IAAAtB,EAAA,MAAlBsB,IAAA,kBAAA,GAAA,EAAA,UAAGpB,EAAW,CAAA,GAAIF,EAAA,KAAAE,GAAAF,EAAA,KAAAsB,IAAlBA;CAAkB;CAC1B,IAAAA;CAEkB,OAFlBtB,EAAA,OAAAG,IAEkBmB,IAAAtB,EAAA,MAAZsB,IAAA,kBAAA,GAAA,EAAA,UAAGnB,EAAK,CAAA,GAAIH,EAAA,KAAAG,GAAAH,EAAA,KAAAsB,IAAZA;AAAY,GAGfC,KACJlC,GACAmC,MAEI,CAACnC,EAAWqC,SAASrC,EAAWqC,MAAMhB,WAAW,KAIjD,CAACc,KAAgBA,EAAaG,SAAS,KAIpCtC,EAAWqC,MAAME,MAAKC,MAAQL,EAAaM,IAAID,CAAI,CAAC,GAGvDE,KAAmB1C,GAAgDyB,MACvEzB,EAAW2C,WAAW,GAAG3C,EAAWM,MAAMA,QAAQ,aAAY,GAAImB,KAE9DmB,KAAwBC,MAAsD;CAClF,IAAMC,oBAAM,IAAIC,IAAgD;CAchE,OAZAF,EAAYtB,SAAQvB,MAAc;EAChC,IAAMgD,IAAMhD,EAAW2C;EAElBK,MAIAF,EAAIL,IAAIO,CAAG,KACdF,EAAIG,IAAID,GAAKhD,CAAU;CAE3B,CAAC,GAEMkD,MAAMC,KAAKL,EAAIM,OAAO,CAAC;AAChC,GAEMC,KACJR,GACAV,MACGU,EAAYS,QAAOtD,MAAckC,EAAoBlC,GAAYmC,CAAY,CAAC,GAE7EoB,KAAmBV,MACvBA,EAAYW,MAAMC,GAAGC,OACDD,EAAEG,kBAAkBC,aACpBH,EAAEE,kBAAkBC,SAGvC,GAEGG,KACJnB,GACAV,MACGoB,EAAgBF,EAAuBT,EAAqBC,CAAW,GAAGV,CAAY,CAAC,GAEtF8B,KAAgBjE,GAAgDkE,MACpDnE,EAAeC,CACxBmE,CAAAA,CAAQC,YAAY,MAAMF,EAAM1D,KAAK,CAAC,CAAC4D,YAAY,GAG/CC,KAA4B,EACvCC,OACAC,UACAC,gBACAN,UACAO,kBACAC,aACAC,SACAC,cACAC,qBACAC,qBACAC,wBACA5C,sBAcI;CACJ,IAAM,CAACgD,GAAYC,KAAiBhG,EAAS8E,KAAS,EAAE,GAClD,CAACrB,GAAawC,KAAkBjG,EAA+C,CAAA,CAAE,GACjF,CAACkG,GAAgBC,KAAqBnG,EAAS,EAAK,GACpD,CAACoG,GAAkBC,KAAuBrG,EAAS,EAAE,GACrD,CAACsG,GAAWC,KAAgBvG,EAAS,EAAK,GAE1CwG,IAAWtG,EAAyB,IAAI,GACxCwG,IAAcxG,EAAyB,IAAI,GAC3C0G,IAAc1G,EAAO,EAAK,GAC1B2G,IAAe3G,EAAO,EAAK,GAC3B4G,IAAkB5G,EAA2D,IAAI,GACjF8G,IAAa9G,EAAiC,CAAA,CAAE,GAChDgH,IAAoBhH,EAAuB,QAAQ,GACnDkH,IAAgB9G,EAAe,UAAUoF,CAAgB,GACzD2B,IAAkBlH,QAAc;EACpC,IAAI,CAAC4C,GACH,OAAOtC;EAGT,IAAM6G,oBAAS,IAAI5G,IAAY;EAC/B,KAAK,IAAM0C,KAAQL,GACjBuE,EAAOC,IAAInE,CAAI;EAEjB,OAAOkE;CACT,GAAG,CAACvE,CAAY,CAAC;CAmHjB9C,AAjHAA,QAAgB;EAEd4G,AADAb,EAAclB,KAAS,EAAE,GACzB+B,EAAaW,UAAU;CACzB,GAAG,CAAC1C,CAAK,CAAC,GAEV7E,QAAgB;EACd,IAAI2G,EAAYY,SAAS;GACvBZ,EAAYY,UAAU;GACtB;EACF;EAEA,IAAMC,IAAU1B,EAAW3E,KAAK;EAEhC,AACEmF,EADEkB,MAAY,EAGG;EAGnB,IAAIC,IAAW,IAETC,IAAUC,iBAAiB;GAC/B,IAAI,CAACF,GACH;GAGF,IAAID,MAAY,IAAI;IAIlB,AAHAxB,EAAe,CAAA,CAAE,GACjBE,EAAkB,EAAK,GACvBW,EAAgBU,UAAU,MACtB1C,MAAU,MACZO,EAAc,EAAE;IAElB;GACF;GAEA,IAAI,CAAC+B,GAAe;GAEpB,IAAM,EAAES,2BAAwBd,gCAA6BK;GAE7D,IAAI,CAACS,KAA0B,CAACd,GAA0B;IAIxDR,AAHAuB,QAAQC,MAAM,8FAA8F,GAC5G9B,EAAe,CAAA,CAAE,GACjBE,EAAkB,EAAK,GACvBI,EAAa,EAAK;IAClB;GACF;GAEA,AACEO,EAAgBU,YAAU,IAAIT,EAAyB;GAGzD,IAAMiB,IAAkD;IACtDE,OAAOnC;IACPoC,cAAcrB,EAAgBU,WAAWY,KAAAA;IACzCC,qBAAqB,CAAC,IAAI;GAC5B;GAKAR,AAJIlC,MACFqC,EAAQrC,sBAAsBA,IAGhCkC,EAAuBS,6BAA6BN,CAAO,CAAC,CACzDO,MAAMC,MAA2E;IAChF,IAAI,CAACd,GACH;IAOF,IAAMoB,IAAsBlE,EAJH4D,EAASC,YAC/B/E,KAAKiF,MAA0DA,EAAWC,eAAe,CAAC,CAC1F1E,QAAQtD,MAAiEiI,EAAQjI,CAEhC8H,GAAkBrB,CAAe,GAE/E0B,IAAmBD,EAAoB,IACvCE,IACJD,KAAoBD,EAAoB7G,WAAW,KAAK4C,EAAakE,GAAkBhD,CAAU;IAEnG,IAAI,CAACc,EAAaW,WAAWwB,GAAe;KAG1CzC,AAFAN,EAAe6C,CAAmB,GAClC3C,EAAkB,EAAK,GACvBI,EAAa,EAAK;KAClB;IACF;IAYAA,AAVIuC,EAAoB7G,SAAS,KAC/BgE,EAAe6C,CAAmB,GAC9BjC,EAAaW,WACfrB,EAAkB,EAAI,GAExBE,EAAoB,EAAE,MAEtBJ,EAAe,CAAA,CAAE,GACjBE,EAAkB,EAAK,IAEzBI,EAAa,EAAK;GACpB,CAAC,CAAC,CACD0C,OAAOlB,MAAmB;IACpBL,MAGLI,QAAQC,MAAM,qDAAqDA,CAAK,GACxE9B,EAAe,CAAA,CAAE,GACjBE,EAAkB,EAAK,GACvBI,EAAa,EAAK;GACpB,CAAC;EACL,GAAG,GAAG;EAEN,aAAa;GAEX2C,AADAxB,IAAW,IACXwB,aAAavB,CAAO;EACtB;CACF,GAAG;EAAC5B;EAAYqB;EAAe/B;EAAeP;EAAOa;EAAqB0B;CAAe,CAAC,GAE1FpH,QAAgB;EACd,IAAMkJ,KAAsBC,MAAsB;GAChD,AACE5C,EAASgB,WACT,CAAChB,EAASgB,QAAQ8B,SAASF,EAAMG,MAAc,KAC/C7C,EAAYc,WACZ,CAACd,EAAYc,QAAQ8B,SAASF,EAAMG,MAAc,KAElDpD,EAAkB,EAAK;EAE3B;EAEA,OADAsD,SAASC,iBAAiB,aAAaP,CAAkB,SAC5C;GACXM,SAASE,oBAAoB,aAAaR,CAAkB;EAC9D;CACF,GAAG,CAAA,CAAE;CAEL,IAAMS,KAA0BhJ,MAAmD;EACjFgG,EAAYY,UAAU;EACtB,IAAMqC,IAAalJ,EAAeC,CAAU;EAM5CkG,AALAd,EAAc6D,CAAU,GACxBxE,EAAcwE,CAAU,GACxB5D,EAAe,CAAA,CAAE,GACjBE,EAAkB,EAAK,GACvBI,EAAa,EAAK,GAClBO,EAAgBU,UAAU;CAC5B,GAEMsC,KAAqBC,MAAqC;EAE9D/D,AADAa,EAAaW,UAAU,IACvBxB,EAAc+D,EAAER,OAAOzE,KAAK;CAC9B,GAEMkF,KAAiBD,MAAuC;EAC5D,IAAI,CAAC7D,KAAkBzC,EAAYxB,WAAW,GAAG;GAC/C,AAAI8H,EAAEnG,QAAQ,YACZmG,EAAEE,eAAe,GACjB5E,EAAcU,CAAU,GACxBI,EAAkB,EAAK,GACvBW,EAAgBU,UAAU;GAE5B;EACF;EAEA,AAAIuC,EAAEnG,QAAQ,eACZsD,EAAkBM,UAAUuC,EAAEG,SAAS,SAAS,UAChDH,EAAEE,eAAe,GACjB5D,GAAoB8D,MACd1G,EAAYxB,WAAW,IAClB,KAEFkI,IAAO,IAAI,KAAKA,IAAO,KAAK1G,EAAYxB,MAChD,KACQ8H,EAAEnG,QAAQ,aACnBsD,EAAkBM,UAAUuC,EAAEG,SAAS,SAAS,UAChDH,EAAEE,eAAe,GACjB5D,GAAoB8D,MACd1G,EAAYxB,WAAW,IAClB,KAELkI,KAAQ,IACH1G,EAAYxB,SAAS,KAEtBkI,IAAO,KAAK1G,EAAYxB,MACjC,KACQ8H,EAAEnG,QAAQ,WACnBmG,EAAEE,eAAe,GACb7D,IAAmB,MAAM3C,EAAY2C,KACvCwD,EAAuBnG,EAAY2C,EAAiB,KAEpDf,EAAcU,CAAU,GACxBI,EAAkB,EAAK,GACvBW,EAAgBU,UAAU,SAEnBuC,EAAEnG,QAAQ,YACnBuC,EAAkB,EAAK;CAE3B,GAEMiE,UAAmB;EAKvBtD,AAJAX,EAAkB,EAAK,GACnBrB,MAAUiB,KACZV,EAAcU,CAAU,GAE1Be,EAAgBU,UAAU;CAC5B,GAEM6C,IAAW5E,MAAqBF,IAAO,GAAGA,EAAI,SAAU6C,KAAAA;CAoC9D,OAlCAnI,QAAgB;EACd,IAAI,CAACiG,KAAkBE,IAAmB,GAAG;GAC3Cc,EAAkBM,UAAU;GAC5B;EACF;EAEA,IAAM8C,IAAOtD,EAAWQ,QAAQpB,IAC1BmE,IAAO7D,EAAYc;EAEzB,IAAI,CAAC8C,KAAQ,CAACC,GAAM;GAClBrD,EAAkBM,UAAU;GAC5B;EACF;EAEA,IAAMgD,IAAWtD,EAAkBM;EACnCN,EAAkBM,UAAU;EAE5B,IAAMiD,IAAMH,EAAKI,WACXC,IAASF,IAAMH,EAAKM,cACpBC,IAAUN,EAAKO,WACfC,IAAaF,IAAUN,EAAKS;EAE9BP,KAAOI,KAAWF,KAAUI,KAIhCT,EAAKW,eAAe;GAClBC,OAAO;GACPV;EACF,CAAC;CACH,GAAG,CAACpE,GAAkBF,CAAc,CAAC,GAErCc,EAAWQ,QAAQvF,SAASwB,EAAYxB,QAGtC,kBAAC,OAAD;EAAK,WAAU;YAAf;GACGoI,KACC,kBAAC,SAAD;IACE,UAAU;IACV,cAAa;IACb,MAAMA;IACN,eAAY;IACZ,OAAO;KACLc,UAAU;KACVC,MAAM;KACNX,KAAK;KACLY,QAAQ;KACRC,OAAO;IACT;GAAE,CAAA;GAGN,kBAAC,SAAD;IAAO,SAASpG;IAAI,WAAU;cAC3BC;GACI,CAAA;GACP,kBAAC,OAAD;IAAK,WAAU;cAAf,CACE,kBAAC,GAAD;KACE,KAAKqB;KACDtB;KACJ,MAAK;KACQE;KACb,MAAMG,KAAQ,GAAGL,EAAE;KACnB,OAAOa;KACP,UAAU+D;KACV,WAAWE;KACX,eAAe;MACb,AAAIvG,EAAYxB,SAAS,KAAK8D,KAC5BI,EAAkB,EAAI;KAE1B;KACA,QAAQiE;KACE9E;KACV,cAAa;KACb,WAAW9E,EAAG,UAAU8F,KAAa,QAAQd,CAAS;IAAE,CAAA,GAEzDc,KACC,kBAAC,GAAD;KACE,WAAU;KACV,eAAY;IAAM,CAAA,CAGnB;;GACJJ,KAAkBzC,EAAYxB,SAAS,KACtC,kBAAC,MAAD;IACE,KAAKyE;IACL,WAAU;IACV,MAAK;cAEJjD,EAAYC,KAAK9C,GAAYyB,MAC5B,kBAAC,MAAD;KAEE,MAAKkJ,MAAQ;MACXvE,EAAWQ,QAAQnF,KAASkJ;KAC9B;KACA,WAAWnL,EACT,oEACA,EAAE,eAAegG,MAAqB/D,EAAM,CAC9C;KACA,MAAK;KACL,cAAa0H,MAAK;MAEhBH,AADAG,EAAEE,eAAe,GACjBL,EAAuBhJ,CAAU;KACnC;eAEA,kBAAC,GAAD,EAAgB,YAAYA,EAAW,CAAA;IACrC,GAfG0C,EAAgB1C,GAAYyB,CAAK,CAepC,CACL;GACC,CAAA;EAEH;;AAET"}
|
|
1
|
+
{"version":3,"file":"index14.js","names":["ReactNode","ChangeEvent","KeyboardEvent","useState","useEffect","useRef","useMemo","clsx","Loader2","useMapsLibrary","Input","cn","DEFAULT_ALLOWED_TYPES","Set","getDisplayText","prediction","google","maps","places","PlacePrediction","fullText","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","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","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","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 getDisplayText = (prediction: google.maps.places.PlacePrediction) => {\n const fullText = 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 = 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 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 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((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\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,5 +1,5 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
2
|
type RenderProp = React.ReactElement | ((props: any, state: any) => React.ReactElement);
|
|
3
|
-
export declare function renderAsChild(asChild: boolean | undefined, render: RenderProp | undefined, children: React.ReactNode):
|
|
3
|
+
export declare function renderAsChild(asChild: boolean | undefined, render: RenderProp | undefined, children: React.ReactNode): RenderProp | undefined;
|
|
4
4
|
export {};
|
|
5
5
|
//# sourceMappingURL=render-as-child.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render-as-child.d.ts","sourceRoot":"","sources":["../../src/lib/render-as-child.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAG9B,KAAK,UAAU,GAAG,KAAK,CAAC,YAAY,GAAG,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,KAAK,KAAK,CAAC,YAAY,CAAC,CAAA;AAEvF,wBAAgB,aAAa,CAC3B,OAAO,EAAE,OAAO,GAAG,SAAS,EAC5B,MAAM,EAAE,UAAU,GAAG,SAAS,EAC9B,QAAQ,EAAE,KAAK,CAAC,SAAS,
|
|
1
|
+
{"version":3,"file":"render-as-child.d.ts","sourceRoot":"","sources":["../../src/lib/render-as-child.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAG9B,KAAK,UAAU,GAAG,KAAK,CAAC,YAAY,GAAG,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,KAAK,KAAK,CAAC,YAAY,CAAC,CAAA;AAEvF,wBAAgB,aAAa,CAC3B,OAAO,EAAE,OAAO,GAAG,SAAS,EAC5B,MAAM,EAAE,UAAU,GAAG,SAAS,EAC9B,QAAQ,EAAE,KAAK,CAAC,SAAS,0BAI1B"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rpcbase/ui",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.259.0",
|
|
4
4
|
"license": "SEE LICENSE IN LICENSE",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"sideEffects": [
|
|
@@ -125,6 +125,7 @@
|
|
|
125
125
|
"tailwind-merge": "3.6.0",
|
|
126
126
|
"tailwindcss": "4.3.3",
|
|
127
127
|
"tw-animate-css": "1.4.0",
|
|
128
|
+
"typescript": "7.0.2",
|
|
128
129
|
"vite": "8.1.5",
|
|
129
130
|
"vite-bundle-analyzer": "1.3.8",
|
|
130
131
|
"vitest": "4.1.9"
|