Infer JavaScript SDK

Autocomplétion d'adresses dans un champ HTML, sans framework.

@pro6pp/infer-js0.1.0-beta.32Licence MIT

attach

TypeScript
function attach(target: string | HTMLElement, config: InferJSConfig): InferJS

A helper to initialize the Pro6PP Infer SDK on a target element.

target string | HTMLElementA CSS selector string or HTMLElement.
config InferJSConfigConfiguration for the SDK.
RenvoieAn instance of InferJS.

ConfigurationInferJSConfig

Depuis InferConfig dans @pro6pp/infer-core

The country to perform address lookups in.

authKeystringParamètre API

Your Pro6PP Authorization Key. Optional if using a proxy.

limitnumberParamètre API

Number of suggestions to request per batch, at most 1000. 0 uses the default.

Par défaut
20

Language code for response labels. Affects the language of returned address labels. Only applicable for BE country code.

Sort mixed address and place suggestions by relevance or distance. Distance sorting requires the Infer Extended (infer::location) capability. It measures from lat and lng when provided, otherwise from the approximate location of the request IP, and sorts by relevance when neither is available.

Par défaut
'relevance'

Latitude of the origin used for distance sorting, sent only when sort is 'distance'. When provided, lng must also be provided.

Longitude of the origin used for distance sorting, sent only when sort is 'distance'. When provided, lat must also be provided.

Suggestion types to request. Omit this to preserve the address-only default.

apiUrlstring

If provided, this URL is used as the API endpoint. The query params are appended, including country in lowercase.

  • If not provided, the SDK defaults to 'https://api.pro6pp.nl/v2/infer/{country}'.
fetcherFetcher

Custom fetch implementation for network requests.

Par défaut
globalThis.fetch
debounceMsnumber

The delay in milliseconds before performing the API search. Note: A lower bound of 50ms is enforced to protect API stability.

Par défaut
150
maxRetriesnumber

Maximum number of retry attempts after a network error or a 5xx or 429 response. Valid range: 0 to 10.

Par défaut
0
onStateChange(state: InferState) => void

Callback triggered whenever the internal state (suggestions, loading status, etc.) updates.

onSelect(selection: AddressValue | string | null) => void

Callback triggered when an address selection completes or is cleared. Receives the AddressValue of the selected address, or its label as a string when the selection has no structured value. Receives null when the user edits a completed selection or selects a place after a structured address. Partial selections, such as a city or street, do not trigger it.

onPlaceSelect(selection: PlaceValue | null) => void

Callback triggered when a point of interest is selected, or with null when the user edits the selected place or selects an address instead.

Depuis InferJSConfig dans @pro6pp/infer-js
style'default' | 'none'

The styling theme to apply.

  • default: Injects the standard Pro6PP CSS theme.
  • none: Does not inject the default theme, allowing for custom CSS. The SDK still shows and hides elements with inline display styles, and a theme injected by an instance with default stays in the document.
Par défaut
'default'
placeholderstring

Custom placeholder text for the input field.

inputClassstring

Additional CSS classes to add to the input element.

noResultsTextstring

The text to display when no suggestions are found.

Par défaut
'No results found'
loadingTextstring

The text to show on the bottom loading indicator.

Par défaut
'Loading more...'
searchingTextstring

Text displayed while the initial search is pending. Defaults to Searching....

clearInputLabelstring

Accessible name for the clear button. Defaults to Clear input.

showClearButtonboolean

If true, shows a clear button when the input is not empty.

Par défaut
true

InstanceInferJS, renvoyée par attach

new InferJS(target, config)

Initializes the Infer logic on a target element.

target string | HTMLElementEither a CSS selector string or a direct HTMLElement.
config InferJSConfigConfiguration options for the API and UI.
valueAddressValue | nullget, set

Retrieves the current selected address value if available.

Programmatically sets the address value.

placePlaceValue | nulllecture seule

Retrieves the current selected place value if available.

setPlace(place)→ void

Programmatically selects a place value.

destroy()→ void

Destroys the InferJS instance, removing its event listeners and added elements and clearing the input value. An input created by the SDK is removed. An existing input keeps the attributes and inputClass classes the SDK added, and the injected theme stays in the document. Attaching to the same element again destroys the previous instance automatically.

Classes CSS

18 classes
ClasseDescription
.pro6pp-wrapperThe container element wrapping the input and dropdown.
.pro6pp-inputThe input element itself.
.pro6pp-input-addonsThe container for the controls inside the input, such as the clear button.
.pro6pp-clear-buttonThe button that clears the input.
.pro6pp-dropdownThe panel containing the suggestion list and the loader.
.pro6pp-listThe <ul> list containing the suggestions.
.pro6pp-itemA single suggestion item (<li>).
.pro6pp-item--activeThe currently highlighted item (for keyboard navigation).
.pro6pp-item__labelThe main text/label of a suggestion.
.pro6pp-item--placeAn item for a point of interest rather than an address.
.pro6pp-item__label--matchThe part of a label that matches the query.
.pro6pp-item--fuzzyAn item for a close match rather than an exact one.
.pro6pp-item__label--unmatchedThe rest of the label.
.pro6pp-item__subtitleThe secondary text (e.g., city or result count).
.pro6pp-item__chevronThe icon indicating a folder/expandable result.
.pro6pp-no-resultsThe message shown while searching or when no suggestions are found.
.pro6pp-loader-itemThe element containing the loading spinner and text.
.pro6pp-mini-spinnerThe spinner icon inside the loader item.

Également exporté

Réexporté depuis @pro6pp/infer-core.

INFER_PLACES_COUNTRIESreadonly ["NL", "BE", "DE", "FR", "AT", "ES", "DK", "LU", "IT"]

Countries currently supported by the Infer API for place suggestions.

supportsInferPlaces(country)→ boolean

Returns whether the Infer API supports place suggestions for a country. Country codes are compared case-insensitively after trimming whitespace.

country string

Types

InferJSConfiginterface

Configuration options for the JS Infer SDK.

authKeystring

Your Pro6PP Authorization Key. Optional if using a proxy.

countryCountryCodeObligatoire

The country to perform address lookups in.

apiUrlstring

If provided, this URL is used as the API endpoint. The query params are appended, including country in lowercase.

  • If not provided, the SDK defaults to 'https://api.pro6pp.nl/v2/infer/{country}'.
fetcherFetcher

Custom fetch implementation for network requests.

Par défaut
globalThis.fetch
limitnumber

Number of suggestions to request per batch, at most 1000. 0 uses the default.

Par défaut
20
debounceMsnumber

The delay in milliseconds before performing the API search. Note: A lower bound of 50ms is enforced to protect API stability.

Par défaut
150
maxRetriesnumber

Maximum number of retry attempts after a network error or a 5xx or 429 response. Valid range: 0 to 10.

Par défaut
0
languageLanguageCode

Language code for response labels. Affects the language of returned address labels. Only applicable for BE country code.

Sort mixed address and place suggestions by relevance or distance. Distance sorting requires the Infer Extended (infer::location) capability. It measures from lat and lng when provided, otherwise from the approximate location of the request IP, and sorts by relevance when neither is available.

Par défaut
'relevance'
latnumber

Latitude of the origin used for distance sorting, sent only when sort is 'distance'. When provided, lng must also be provided.

lngnumber

Longitude of the origin used for distance sorting, sent only when sort is 'distance'. When provided, lat must also be provided.

Suggestion types to request. Omit this to preserve the address-only default.

onStateChange(state: InferState) => void

Callback triggered whenever the internal state (suggestions, loading status, etc.) updates.

onSelect(selection: AddressValue | string | null) => void

Callback triggered when an address selection completes or is cleared. Receives the AddressValue of the selected address, or its label as a string when the selection has no structured value. Receives null when the user edits a completed selection or selects a place after a structured address. Partial selections, such as a city or street, do not trigger it.

onPlaceSelect(selection: PlaceValue | null) => void

Callback triggered when a point of interest is selected, or with null when the user edits the selected place or selects an address instead.

style'default' | 'none'

The styling theme to apply.

  • default: Injects the standard Pro6PP CSS theme.
  • none: Does not inject the default theme, allowing for custom CSS. The SDK still shows and hides elements with inline display styles, and a theme injected by an instance with default stays in the document.
Par défaut
'default'
placeholderstring

Custom placeholder text for the input field.

inputClassstring

Additional CSS classes to add to the input element.

noResultsTextstring

The text to display when no suggestions are found.

Par défaut
'No results found'
loadingTextstring

The text to show on the bottom loading indicator.

Par défaut
'Loading more...'
searchingTextstring

Text displayed while the initial search is pending. Defaults to Searching....

clearInputLabelstring

Accessible name for the clear button. Defaults to Clear input.

showClearButtonboolean

If true, shows a clear button when the input is not empty.

Par défaut
true
AddressSuggestioninterface

A regular address or partial-address suggestion.

labelstringObligatoire

The text to display in the UI (e.g. "Main Street").

subtitlestring | null

Secondary information (e.g. city name when suggesting a street).

countnumber | string

Number of underlying results found for this suggestion.

exactboolean

False for close (fuzzy) matches that top up the exact matches.

matched_valuestring | null

The lowercase name the fuzzy pass matched, for close matches.

diff_positionsnumber[] | null

0-based query positions that differ from the match, for close matches.

valueAddressValue | string

The actual address data, when this result completes an address.

type'address'

Address suggestions may omit this field, as in existing API responses.

AddressValueinterface

The standardized address object returned upon a successful final selection.

streetstringObligatoire

The name of the street.

citystringObligatoire

The name of the city/locality.

latnumber | null

Latitude of the address location.

lngnumber | null

Longitude of the address location.

street_numberstring | number

The street number.

postcodestring

The postal code.

additionstring | null

The street number addition or suffix.

[key: string]unknown

Allow for extra fields if API expands.

CountryCodetype

Supported ISO 3166-1 alpha-2 country codes.

TypeScript
type CountryCode = 'NL'
  | 'DE'
  | 'BE'
  | 'AT'
  | 'DK'
  | 'CH'
  | 'LU'
  | 'FR'
  | 'ES'
  | 'GB'
  | 'IT'
  | (string & {});
Fetchertype

Custom fetch implementation, compatible with the Web Fetch API.

Custom fetch implementation, compatible with the Web Fetch API. Useful for Node.js environments or proxying requests.

TypeScript
type Fetcher = (input: RequestInfo
  | URL, init?: RequestInit) => Promise<Response>;
InferConfiginterface

Configuration options for the Infer engine.

authKeystring

Your Pro6PP Authorization Key. Optional if using a proxy.

countryCountryCodeObligatoire

The country to perform address lookups in.

apiUrlstring

If provided, this URL is used as the API endpoint. The query params are appended, including country in lowercase.

  • If not provided, the SDK defaults to 'https://api.pro6pp.nl/v2/infer/{country}'.
fetcherFetcher

Custom fetch implementation for network requests.

Par défaut
globalThis.fetch
limitnumber

Number of suggestions to request per batch, at most 1000. 0 uses the default.

Par défaut
20
debounceMsnumber

The delay in milliseconds before performing the API search. Note: A lower bound of 50ms is enforced to protect API stability.

Par défaut
150
maxRetriesnumber

Maximum number of retry attempts after a network error or a 5xx or 429 response. Valid range: 0 to 10.

Par défaut
0
languageLanguageCode

Language code for response labels. Affects the language of returned address labels. Only applicable for BE country code.

Sort mixed address and place suggestions by relevance or distance. Distance sorting requires the Infer Extended (infer::location) capability. It measures from lat and lng when provided, otherwise from the approximate location of the request IP, and sorts by relevance when neither is available.

Par défaut
'relevance'
latnumber

Latitude of the origin used for distance sorting, sent only when sort is 'distance'. When provided, lng must also be provided.

lngnumber

Longitude of the origin used for distance sorting, sent only when sort is 'distance'. When provided, lat must also be provided.

Suggestion types to request. Omit this to preserve the address-only default.

onStateChange(state: InferState) => void

Callback triggered whenever the internal state (suggestions, loading status, etc.) updates.

onSelect(selection: AddressValue | string | null) => void

Callback triggered when an address selection completes or is cleared. Receives the AddressValue of the selected address, or its label as a string when the selection has no structured value. Receives null when the user edits a completed selection or selects a place after a structured address. Partial selections, such as a city or street, do not trigger it.

onPlaceSelect(selection: PlaceValue | null) => void

Callback triggered when a point of interest is selected, or with null when the user edits the selected place or selects an address instead.

InferPlacesCountryCodetype
TypeScript
type InferPlacesCountryCode = (typeof INFER_PLACES_COUNTRIES)[number];
InferResulttype

A single item in the suggestion list.

TypeScript
type InferResult = AddressSuggestion
  | PlaceSuggestion;
InferStateinterface

The complete UI state managed by InferCore.

querystringObligatoire

The current text value of the search input.

stageStage | nullObligatoire

The current logical stage of the address lookup.

citiesInferResult[]Obligatoire

List of city suggestions (used in mixed stage).

streetsInferResult[]Obligatoire

List of street suggestions (used in mixed stage).

suggestionsInferResult[]Obligatoire

General list of suggestions for the current stage.

placesPlaceSuggestion[]Obligatoire

Place suggestions: the separate places list of the API response, or otherwise the place suggestions in suggestions.

isValidbooleanObligatoire

Flag indicating if the current selection is complete and valid.

valueAddressValue | nullObligatoire

The selected address value, otherwise null (places use selectedPlace).

selectedPlacePlaceValue | nullObligatoire

The selected place object, otherwise null.

isErrorbooleanObligatoire

Flag indicating if the last API request failed.

isLoadingbooleanObligatoire

Flag indicating if a network request is currently in progress.

hasMorebooleanObligatoire

Flag indicating if more results are available to load.

selectedSuggestionIndexnumberObligatoire

The index of the currently highlighted suggestion.

  • 0 to n: An item is highlighted via keyboard navigation.
  • -1: No item is highlighted.
InferTypestype

The kinds of suggestions requested from the Infer API.

The kinds of suggestions requested from the Infer API.

When omitted, the API keeps its address-only default.

TypeScript
type InferTypes = 'address'
  | 'place'
  | 'address,place';
LanguageCodetype

Supported language codes for address labels.

TypeScript
type LanguageCode = 'nl'
  | 'fr'
  | 'de'
  | (string & {});
PlaceSuggestioninterface

A suggestion that represents a point of interest rather than an address.

labelstringObligatoire

The text to display in the UI (e.g. "Main Street").

subtitlestring | null

Secondary information (e.g. city name when suggesting a street).

countnumber | string

Number of underlying results found for this suggestion.

exactboolean

False for close (fuzzy) matches that top up the exact matches.

matched_valuestring | null

The lowercase name the fuzzy pass matched, for close matches.

diff_positionsnumber[] | null

0-based query positions that differ from the match, for close matches.

type'place'Obligatoire

Marks the suggestion as a point of interest.

valuePlaceValueObligatoire

The place data.

PlaceValueinterface

A point of interest returned by the Infer API.

place_idstringObligatoire

Stable identifier of the place in the source dataset.

namestringObligatoire

Display name of the place.

categorystringObligatoire

Primary place category.

formatted_addressstring | nullObligatoire

Human-readable address, when available.

streetstring | nullObligatoire

Street name, when available.

street_numbernumber | nullObligatoire

Street number, when available.

additionstring | nullObligatoire

Street number addition, when available.

postcodestring | nullObligatoire

Postal code, when available.

citystring | nullObligatoire

City name, when available.

latnumberObligatoire

Latitude of the place.

lngnumberObligatoire

Longitude of the place.

SortOrdertype

The ordering applied to mixed address and place suggestions.

TypeScript
type SortOrder = 'relevance'
  | 'distance';
Stagetype

The current step in the address inference process.

The current step in the address inference process.

  • empty: No input yet.
  • mixed: User is prompted to choose between cities and streets.
  • place: User is selecting a point of interest.
  • street: User is selecting a street.
  • city: User is selecting a city.
  • postcode: User is entering a postcode.
  • street_number: User is entering a street number.
  • street_number_first: Specialized mode where number is entered before street.
  • addition: Selecting a street number addition (e.g., 'A', 'III').
  • direct: Direct address hit (often via postcode).
  • final: A complete, valid address has been identified.
TypeScript
type Stage = 'empty'
  | 'mixed'
  | 'place'
  | 'street'
  | 'city'
  | 'postcode'
  | 'street_number'
  | 'street_number_first'
  | 'addition'
  | 'direct'
  | 'final';