@tomtom-org/maps-sdk 0.56.0 → 0.58.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/CHANGELOG.md CHANGED
@@ -1,5 +1,148 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.58.0
4
+
5
+ ### Minor Changes
6
+
7
+ - 29a6a55: Breaking changes:
8
+ - map: `culori` v4 is a new peer dependency. npm 7+ and Yarn install it for you; pnpm needs `auto-install-peers=true` or `pnpm add culori` (#2227)
9
+
10
+ Changes:
11
+ - map: colour parsing, conversion, luminance and mixing run on culori's tree-shakeable `culori/fn` instead of the SDK's own parser and named-colour table, so an app that also uses culori ships it once (#2227)
12
+ - 115f8a4: Breaking changes:
13
+ - services: `GuidanceParams.phonetics` and the `Phonetics` type are removed; `guidance` takes `{ type: 'coded' }` only (#2213)
14
+ - core: `TextWithPhonetics` is renamed `InstructionText` and drops `phonetic` and `phoneticLanguageCode`; instruction name fields carry `text` only (#2213)
15
+ - 93b72d7: Breaking changes:
16
+ - services: `calculateReachableRange` calls reachable-range API version 3, so the request `onAPIRequest` sees is a `POST` with `data` and `headers` — the API key travels as a `TomTom-Api-Key` header — instead of a `GET` URL (#2137)
17
+ - services: `calculateReachableRange` rejects `costModel.avoidAreas`, `when.arriveBy`, and a charge budget it cannot convert (no `model.engine.charging.maxChargeKWH`, or no `vehicle.state` for `remainingChargePCT`) instead of dropping them (#2137)
18
+
19
+ Fixes:
20
+ - services: `calculateRoute` sends a vehicle's `currentChargeInkWh` / `currentFuelInLiters` when it has no explicit engine model, and keeps a zero charge, charge percentage or heading on the wire (#2137)
21
+ - 5bfbe75: Breaking changes:
22
+ - services: the reachable-range budget type `remainingChargeCPT` is `remainingChargePCT`, matching `spentChargePCT` (#2216)
23
+ - services: `reverseGeocode` takes `geographyTypes`, as the other places services do; it was a singular name holding an array (#2216)
24
+ - services: `metricKeyToApiDataType` is no longer exported (#2216)
25
+ - services: generic and combustion vehicles take no `preferences`, and the `VehiclePreferences` type is removed; an electric vehicle's `preferences` is `ElectricVehiclePreferences` (#2216)
26
+ - map: the module config types follow `<Module>Config` — `TrafficFlowModuleConfig`, `TrafficIncidentsModuleConfig`, `TrafficIncidentOverlayModuleConfig`, `TrafficAreaAnalyticsModuleConfig` replace `FlowConfig`, `IncidentsConfig`, `TrafficIncidentOverlayConfig`, `TrafficAreaAnalyticsConfig` (#2216)
27
+ - map: the `FilterShowMode` value `'all_except'` is `'all-except'`, in the POI, traffic flow and traffic incident filters (#2216)
28
+
29
+ Features:
30
+ - map: `filterShowModes` lists the `FilterShowMode` values at runtime (#2216)
31
+ - services: `discoverOnePlace` and `geocodeOne` also take a params object (everything but `limit`), so a single-result lookup can carry `geoBias` or a `signal` (#2216)
32
+ - 0678a81: Breaking changes:
33
+ - map: `eventState` is typed `EventState`, which adds `recently-hovered`, so your own `['has', 'eventState']` expressions match a feature for its grace period; exclude that state or set `hoverGracePeriodMS: 0` (#2197)
34
+
35
+ Features:
36
+ - map: `PlacesModule` draws the entry points of shown places with `entryPoints` on its config — for all places or only hovered or clicked ones, from a minimum zoom — and `places.events.entryPoints` hands each back as a point feature with its place attached (#2197)
37
+ - map: a GeoJSON-backed feature the pointer leaves stays `recently-hovered` for `hoverGracePeriodMS` (default 400, on the map's or a module's `events`); the SDK's layers draw it as no state (#2197)
38
+ - 834257b: Breaking changes:
39
+ - core: 67 `POICategory` values take their Places Search v3 name, upper-cased — among them `GAS_STATION` → `FUEL_STATION`, `ELECTRIC_VEHICLE_STATION` → `CHARGING_LOCATION`, `HOTEL_MOTEL` → `HOTEL_OR_MOTEL`, `SHOPPING_CENTER` → `MALL`, `SUPERMARKETS_HYPERMARKETS` → `SUPERMARKET` (#2189)
40
+ - core: five `POICategory` values merge into the v3 type they share, keeping both V2 ids: `COLLEGE_UNIVERSITY` → `COLLEGE_OR_UNIVERSITY`, `LEISURE_SPORTS_CENTER` → `SPORTS_CENTER`, `OPEN_PARKING_AREA` → `OPEN_CAR_PARKING_AREA`, `PERFORMING_ARTS_THEATER` → `THEATER`, `ROAD_TRAFFIC_CONTROL_CENTER` → `TRAFFIC_CONTROL_DEPARTMENT` (#2189)
41
+ - services: `autocompleteSearch` and its `AutocompleteSearch*` types are no longer exported — `getSearchSuggestions()` returns its brand and category suggestions, alone with `filters: { kinds: ['brand', 'category'] }` or ranked with places (#2189)
42
+ - services: the places functions take intent-based names that line up with Places Search v3's `suggest` / `discover` / `details`: `search` → `discoverPlaces`, `searchOne` → `discoverOnePlace`, `placeById` → `getPlaceDetails` (#2189)
43
+ - services: the types follow — `SearchResponse` → `DiscoverPlacesResponse`, `PlaceByIdParams` / `PlaceByIdResponse` → `PlaceDetailsParams` / `PlaceDetailsResponse`; a place-details error reports its service as `PlaceDetails` (#2189)
44
+ - core: `POICategory` drops `PUB_FOOD`, `POLYNESIAN_RESTAURANT`, `OTHER_WINTER_SPORT` and `SNOOKER_POOL_BILLIARD`, which the category endpoint no longer returns. Filtering on one already matched nothing. The map's `poiCategoryGroups.FOOD_DRINKS_GROUP` no longer lists `PUB_FOOD` (#2189)
45
+
46
+ Features:
47
+ - services: `getSearchSuggestions()` returns one ranked list from the search and autocomplete arms, blended like Places Search v3: at most one brand or category leads, then places (#2189)
48
+ - core: `POICategory` gains the seven categories the endpoint returns that the vendored table was missing, so `getPOICategories()` and category filters now reach them, and `PlacesModule` draws an icon for each (#2189)
49
+
50
+ Fixes:
51
+ - services: `discoverPlaces`, `geocode` and `getSearchSuggestions` encode the query in the request path, so a query containing `/`, `?` or `#` is answered instead of failing with a 404 (#2189)
52
+ - 78c9a7e: Breaking changes:
53
+ - services: remove the `customizeService` export, and the optional second argument every service function took to override its request building, sending or response parsing. `calculateReachableRanges` keeps its second `options` argument
54
+ - e0417a9: Breaking changes:
55
+ - map: `StylingModule.describe()` is removed, together with the `StylingCatalogue`, `StylingKnobDescriptor`, `StylingPresetDescriptor` and shared `KnobDescriptor` types. The knob catalogue is static data now: `stylingKnobCatalogue` lists every knob's kind, description, range or options and `appliesTo`, `stylingPresetCatalogue` every preset with its settings, and `styling.get(id)` reads the value in force on a live map.
56
+ - 7a26791: Breaking changes:
57
+ - core: `GlobalConfig.trackingId` is removed, together with the `Tracking-ID` request header it set
58
+ - core, services: `apiVersion` is removed from `GlobalConfig` and `CommonRoutingParams`; each service picks the API version it calls
59
+ - d94e12b: Breaking changes:
60
+ - core: each `AreaAnalyticsTimedData` granularity has its own entry type, `AreaAnalyticsYearlyEntry` to `AreaAnalyticsHourlyEntry` and `AreaAnalyticsAverageEntry`, whose time identifiers are required, and `AreaAnalyticsTimedEntry` is their union, so code that builds entries by hand must set them (#2244)
61
+ - core: `AreaAnalyticsFeatureProperties.timezone` is optional: the API echoes it only from a request that names one, and the SDK's names none (#2244)
62
+
63
+ Fixes:
64
+ - services: `trafficAreaAnalytics` reads each `timedData.average` entry's `day` and `hour` from the label the API sends (`FRIDAY-10`) and orders the entries Monday first, instead of numbering them by position in an array the API sorts by label string (#2244)
65
+ - services: `trafficAreaAnalytics` reads the `year`, `month`, `week`, `date` and `hour` of each yearly to hourly `timedData` entry from the `time` label the API sends (`2024-08-06T07:00`), instead of numbering daily and hourly entries by position from a start date the Lite response never sends, which gave every one an Invalid Date and shifted the hours whenever an `hours` filter, a `days` list or a day without data left entries out, and leaving yearly, monthly and weekly entries with none (#2244)
66
+ - services: `trafficAreaAnalytics` defaults an omitted `endDate` to three days ago, the latest date that always has data, instead of two: the API publishes a day 24 to 48 hours after it ends, so the default window failed during part of each day (#2244)
67
+ - services: `trafficAreaAnalytics` documents that its `hours` filter and every `timedData` time identifier are in UTC, since the request names no region timezone (#2244)
68
+ - b09510c: Breaking changes:
69
+ - services: `trafficIncidentDetails` calls Orbis Traffic Incident Details v2, so the request `onAPIRequest` sees carries the API key, version, language and an `Attributes` projection as headers instead of query parameters (#2215)
70
+ - services: remove the `trafficModelId` parameter from `trafficIncidentDetails`; v2 always serves the latest traffic state (#2215)
71
+ - core: remove `TrafficIncidentTMC`, `TrafficIncidentTMCPoint` and `properties.tmc` from `TrafficIncidentProperties`; v2 carries no TMC data (#2215)
72
+
73
+ Fixes:
74
+ - services: `trafficAreaAnalytics` accepts a `startDate` without an `endDate` and measures the range to two days ago, the end date it sends, instead of rejecting every such request (#2215)
75
+ - services: `trafficAreaAnalytics` validates a range in the UTC calendar days it sends, and dates hourly and daily entries in UTC, so neither drifts a day with the time of day or a daylight-saving switch (#2215)
76
+
77
+ ### Patch Changes
78
+
79
+ - d70cae2: Changes:
80
+ - map: the API reference of `BaseMapModule`, `POIsModule`, `TerrainModule`, `TrafficFlowModule` and `TrafficIncidentsModule` states what each module owns and which `StylingModule` knobs own the look (#2098)
81
+ - f7e1c3e: map: a source comment in the place-pin category mapping no longer links to an internal repository (#2232)
82
+ - 8eff899: Dependencies:
83
+ - The `maplibre-gl` peer dependency requires `^6.11.2`, and the `zod` peer dependency `^4.6.5` (#2217)
84
+ - bb9161c: Fixes:
85
+ - map: `PlacesModule` pins for `ADVENTURE_SPORTS_FACILITY`, `COMMUNITY_CENTER`, `EMBASSY`, `EMERGENCY_MEDICAL_SERVICE` and `ENTERTAINMENT` draw the icon of the category they share a base-map icon with, instead of no icon at all (#2222)
86
+ - map: `TOLL_GATE` maps to the base-map `toll_plaza` category, so its `circle-icon` and `base-map` icons draw and `POIsModule` category filters match toll plazas (#2222)
87
+ - map: `THEATER`, `SPORTS_CENTER`, `SQUASH_COURT` and `SCHOOL_BUS_COMPANY` places draw the closest base-map icon under the `circle-icon`, `base-map` and `pin-clustered` themes, instead of the default place pin (#2222)
88
+ - 58761e4: Fixes:
89
+ - services: `calculateReachableRange` and `calculateReachableRanges` keep the API key, base URLs, `retry`, callbacks and `signal` out of each polygon's `properties`, now typed as the new `ReachableRangeProperties` — the request parameters without the `CommonServiceParams` fields (#2230)
90
+ - 8d48ac8: services: the TSDoc of reachable ranges, Long Distance EV Routing, EV charging stations availability and traffic area analytics says which API key access each needs; reachable ranges are marked as a private preview
91
+ - dec7dac: Features:
92
+ - map: `TomTomMap.updateEventsConfig` changes the map's user events configuration at runtime, such as the long-hover delays and `hoverGracePeriodMS`; what it leaves out keeps its value
93
+ - a0f6956: Features:
94
+ - map: on the mono styles, `setMapColors({ land })` re-derives the other nine colours from it with the formulas the styles' themes compile them with; colours given outright still win (#2237)
95
+
96
+ Fixes:
97
+ - map: `setMapColors` darkens or lightens the education, healthcare, leisure and shopping land-use and building tints with `artificial`, keeping their hue and scaling their saturation with its luminance as the styles' themes do, instead of leaving them at the style's pastel lightness under a dark built-up colour (#2237)
98
+ - map: a pure grey map colour or colour knob derives grey shades, instead of shades tinted towards red (#2237)
99
+ - map: `setMapColors` recolours railway outlines with `artificial` along with their dashes, instead of leaving them at the style's grey (#2237)
100
+ - map: `setMapColors` paints water, roads, built-up areas and labels in the colour given, on the mono styles too, instead of offsetting them from a glacier, restricted-access or city-label literal (#2237)
101
+ - map: `setMapColors` keeps the opacity of translucent label halos, instead of painting them opaque (#2237)
102
+ - map: `setMapColors` recolours motorway, trunk and primary link roads with `roadMajor`, instead of with `road` (#2237)
103
+ - map: `styling.get('colors.<name>')` reports a colour without the opacity of the layer it was read from, so setting it back changes nothing (#2237)
104
+ - map: `artificial` is read from the city-scale built-up colour, the one the style's theme sets, and `setMapColors` measures its shades from it, instead of from the more saturated small-scale stop (#2237)
105
+ - 3133622: Fixes:
106
+ - map: replacing the image of a `ferry` or `tollRoad` section icon through `sections.<type>.icon` keeps the zoom-ramped size its layer draws with, instead of flattening it to 1; `icon.size` still sets one when given (#2224)
107
+ - ddd6a97: Changes:
108
+ - map: `toHsl`, `formatStyleHsl` and `HslColor` are exported, the colour rules the map-theme plugin shares with the recolour (#2094)
109
+ - a3318ef: Fixes:
110
+ - services: `trafficAreaAnalytics` reads `properties.startDate` and `endDate` as the earliest and latest of the `days` the API lists, at midnight UTC, instead of fields the Lite response never sends, which left both an Invalid Date (#2247)
111
+ - services: `trafficAreaAnalytics` reads `anomalies` keyed by the abbreviated metric fields the API sends (`v`, `c`), instead of data type names, which dropped every anomaly; each anomaly's times are read as UTC, and its `labels` are the names of the public holidays it overlaps (#2247)
112
+ - services: `trafficAreaAnalytics` documents that `anomalies` is empty: the service detects anomalies only over 35 days or more, beyond a request's 31-day limit (#2247)
113
+
114
+ ## 0.57.0
115
+
116
+ ### Minor Changes
117
+
118
+ - 669dc17: Breaking changes:
119
+ - services: the places services send the API key and API version as `TomTom-Api-Key` / `TomTom-Api-Version` headers instead of `key=` in the URL, so a request builder now returns `{ url, headers }` and a proxy has to forward those headers (#2185)
120
+ - services: `SearchSummary.totalResults` and `SearchSummary.fuzzyLevel` are optional — guard them rather than assuming a number (#2185)
121
+
122
+ Features:
123
+ - services: `customizeService` builders document how to send the credential yourself, including `credentials: 'include'` under a credentials proxy via `isProxyCredentialsMode(config)` (#2185)
124
+ - 892139d: Breaking changes:
125
+ - map: `TerrainModule` replaces `HillshadeModule` — `TerrainModule.get(map, { hillshade: true })` for what `HillshadeModule.get(map, { visible: true })` did, `setHillshadeVisible` for `setVisible` (#2056)
126
+ - map: the `view.terrain` and `view.terrainExaggeration` styling knobs and the `terrain` preset are removed — `TerrainModule.get(map, { elevation: true, elevationExaggeration })` raises the terrain instead, and loads the elevation style part the knob could not (#2056)
127
+
128
+ Features:
129
+ - map: 3D terrain with `TerrainModule` — `elevation` and `elevationExaggeration` raise the map surface from the same elevation data the hillshade shades, restored after every style change (#2056)
130
+
131
+ ### Patch Changes
132
+
133
+ - a8d3fde: Features:
134
+ - map: `basemap.<group>` styling knobs toggle every base-map layer group `BaseMapModule` knows, bar the two building groups the `buildings.*` knobs already cover (#2092)
135
+ - map: `hillshade.*` styling knobs set the shading's method, light direction, strength, maximum zoom and colours (#2092)
136
+ - map: `styling.layers.query(…)` edits the paint, layout, filter or visibility of the style layers a query selects, re-applied after every style change and undone by `reset()` (#2092)
137
+ - 2f9aa90: Features:
138
+ - map: every module has `updateConfig(partial)`, which changes the given properties and keeps the rest of the configuration, whatever that module's `applyConfig` does with a whole one (#2100)
139
+
140
+ Fixes:
141
+ - map: `BaseMapModule.resetConfig()` empties the configuration instead of keeping the previous one (#2100)
142
+ - map: `TrafficAreaAnalyticsModule.resetConfig()` returns the display mode, metric, colours, filters, region and layer positions to their defaults, instead of only clearing `getConfig()` (#2100)
143
+ - map: `TrafficAreaAnalyticsModule.applyConfig` with a new `activeMetric` filters and scales the layers by that metric rather than the previous one (#2100)
144
+ - map: a clean style switch (`setStyle(style, { resetState: true })`) leaves every module on the configuration `resetConfig()` returns to, and `CustomGeoJSONModule` survives it instead of throwing (#2100)
145
+
3
146
  ## 0.56.0
4
147
 
5
148
  ### Minor Changes
package/README.md CHANGED
@@ -38,7 +38,7 @@ echo "auto-install-peers=true" >> .npmrc && pnpm add @tomtom-org/maps-sdk
38
38
 
39
39
  **Requirements**: a [TomTom API key](https://my.tomtom.com/) · Node.js 24+ at install time (the package's `engines` floor, browser target or not) · a WebGL-capable browser for the Map bundle.
40
40
 
41
- **Peer dependencies**, installed by the commands above: `maplibre-gl` v6 (rendering), `@turf/turf` v7 (geospatial analysis), `lodash-es` v4, `zod` v4.
41
+ **Peer dependencies**, installed by the commands above: `maplibre-gl` v6 (rendering), `@turf/turf` v7 (geospatial analysis), `culori` v4 (colour maths), `lodash-es` v4, `zod` v4.
42
42
 
43
43
  **TypeScript declarations ship with the package** — no `@types/…` to install, and the types are the primary API documentation.
44
44
  <br/><br/>
@@ -52,15 +52,15 @@ echo "auto-install-peers=true" >> .npmrc && pnpm add @tomtom-org/maps-sdk
52
52
  - **Polygons, administrative boundaries and reachable-range areas** — `GeometriesModule`
53
53
  - **Your own GeoJSON (BYOD)** — `CustomGeoJSONModule`
54
54
  - **Traffic** — flow (`TrafficFlowModule`), incidents (`TrafficIncidentsModule`, `TrafficIncidentOverlayModule`) and area analytics (`TrafficAreaAnalyticsModule`)
55
- - **Terrain shading** — `HillshadeModule`
55
+ - **Terrain** — hillshade shading and 3D elevation, `TerrainModule`
56
56
  - **Click, hover and context-menu events**, one typed surface per module — `module.events.on(…)`
57
57
 
58
58
  **Services** (`@tomtom-org/maps-sdk/services`, browser + Node.js + React Native) — typed [GeoJSON](https://geojson.org/) from TomTom APIs, usable with or without a map:
59
59
 
60
- - **Search** — `search`, `searchOne`, `autocompleteSearch`, `alongRouteSearch`, `placeById`, `getPOICategories`
60
+ - **Search** — `discoverPlaces`, `discoverOnePlace`, `getSearchSuggestions`, `alongRouteSearch`, `getPlaceDetails`, `getPOICategories`
61
61
  - **Geocoding and reverse geocoding** — `geocode`, `geocodeOne`, `reverseGeocode`
62
62
  - **Routing** — `calculateRoute`, with up to five alternatives, turn-by-turn guidance, toll/ferry/traffic sections and vehicle restrictions
63
- - **Isochrones (reachable range)** — `calculateReachableRange`, `calculateReachableRanges`, by time, distance, fuel or electric-energy budget
63
+ - **Isochrones (reachable range)** — `calculateReachableRange`, `calculateReachableRanges`, by time, distance, fuel or electric-energy budget (private preview: the API key needs Calculate Reachable Range access)
64
64
  - **EV charging** — `evChargingStationsAvailability`, `getPlaceWithEVAvailability`
65
65
  - **Traffic** — `trafficIncidentDetails`, `trafficAreaAnalytics`
66
66
  - **Geometry data** — `geometryData` for administrative boundaries
@@ -100,7 +100,7 @@ The SDK is split into three cooperating bundles — **Map**, **Services**, and *
100
100
  ```ts
101
101
  import { TomTomConfig } from '@tomtom-org/maps-sdk/core';
102
102
  import { TomTomMap, PlacesModule, RoutingModule } from '@tomtom-org/maps-sdk/map';
103
- import { search, calculateRoute } from '@tomtom-org/maps-sdk/services';
103
+ import { discoverPlaces, calculateRoute } from '@tomtom-org/maps-sdk/services';
104
104
 
105
105
  // Configure once — all services and the map use this key
106
106
  TomTomConfig.instance.put({ apiKey: 'YOUR_API_KEY' });
@@ -109,7 +109,7 @@ const map = new TomTomMap({ mapLibre: { container: 'map', center: [4.9, 52.4], z
109
109
 
110
110
  // Services return GeoJSON — map modules consume it directly
111
111
  const places = await PlacesModule.create(map);
112
- places.show(await search({ query: 'coffee' }));
112
+ places.show(await discoverPlaces({ query: 'coffee' }));
113
113
 
114
114
  const routing = await RoutingModule.create(map);
115
115
  routing.showRoutes(await calculateRoute({ locations: [[4.9, 52.4], [13.4, 52.5]] }));
package/THIRD_PARTY.txt CHANGED
@@ -47,6 +47,42 @@ IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
47
47
  CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
48
48
 
49
49
 
50
+ ---
51
+
52
+ Name: culori
53
+ Version: 4.0.2
54
+ License: MIT
55
+ Bundled: false (peer dependency)
56
+ Required by: map
57
+ Description: A general-purpose color library for JavaScript
58
+ Repository: git@github.com:Evercoder/culori.git
59
+ Author: Dan Burzo <dan@danburzo.ro>
60
+ License Text:
61
+ ===
62
+
63
+ MIT License
64
+
65
+ Copyright (c) 2018 Dan Burzo
66
+
67
+ Permission is hereby granted, free of charge, to any person obtaining a copy
68
+ of this software and associated documentation files (the "Software"), to deal
69
+ in the Software without restriction, including without limitation the rights
70
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
71
+ copies of the Software, and to permit persons to whom the Software is
72
+ furnished to do so, subject to the following conditions:
73
+
74
+ The above copyright notice and this permission notice shall be included in all
75
+ copies or substantial portions of the Software.
76
+
77
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
78
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
79
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
80
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
81
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
82
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
83
+ SOFTWARE.
84
+
85
+
50
86
  ---
51
87
 
52
88
  Name: lodash-es
@@ -116,7 +152,7 @@ terms above.
116
152
  ---
117
153
 
118
154
  Name: maplibre-gl
119
- Version: 6.9.0
155
+ Version: 6.11.2
120
156
  License: BSD-3-Clause
121
157
  Bundled: false (peer dependency)
122
158
  Required by: map
@@ -247,7 +283,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
247
283
  ---
248
284
 
249
285
  Name: zod
250
- Version: 4.4.3
286
+ Version: 4.6.5
251
287
  License: MIT
252
288
  Bundled: false (peer dependency)
253
289
  Required by: services
@@ -1,2 +1,2 @@
1
- import{nearestPointOnLine as A}from"@turf/turf";import{isNil as E}from"lodash-es";var R="https://api.tomtom.com",T={commonBaseURL:R,apiKey:"",apiVersion:1,retry:{initialWaitMs:.447,backoffFactor:1.618,timeoutMs:4e4}},_=class A{static{this.instance=new A}constructor(){this.config={...T}}put(A){this.config={...this.config,...A}}reset(){this.config={...T}}get(){return this.config}},I=(A={})=>({..._.instance.get(),...A}),N=(A=_.instance.get())=>!A.apiKey&&"https://api.tomtom.com"!==(A.commonBaseURL??"https://api.tomtom.com"),S=["Public","Authorized","Restricted","Private","Unknown"],O=["Available","Reserved","Occupied","OutOfService","Unknown"],C=["ChargingProfileCapable","ChargingPreferencesCapable","ChipCardSupport","ContactlessCardSupport","CreditCardPayable","DebitCardPayable","PedTerminal","RemoteStartStopCapable","Reservable","RfidReader","StartSessionConnectorRequired","TokenGroupCapable","UnlockCapable","PlugAndCharge","Unknown"],e=["EvOnly","Plugged","Disabled","Customers","Motorcycles"],L=["StandardHouseholdCountrySpecific","IEC62196Type1","IEC62196Type1CCS","IEC62196Type2CableAttached","IEC62196Type2Outlet","IEC62196Type2CCS","IEC62196Type3","Chademo","GBT20234Part2","GBT20234Part3","IEC60309AC3PhaseRed","IEC60309AC1PhaseBlue","IEC60309DCWhite","Tesla"],U=["AC1","AC3","DC"],t=["Country","CountrySubdivision","CountrySecondarySubdivision","CountryTertiarySubdivision","Municipality","MunicipalitySubdivision","MunicipalitySecondarySubdivision","Neighbourhood","PostalCodeArea"],r=["POI","Street","Geography","Point Address","Address Range","Cross Street"],n=["ACCESS_GATEWAY","ADVENTURE_SPORTS_FACILITY","ADVENTURE_VEHICLE_TRAIL","ADVERTISING_COMPANY","AFGHAN_RESTAURANT","AFRICAN_RESTAURANT","AGRICULTURAL_SUPPLIES","AGRICULTURAL_TECHNOLOGY","AGRICULTURE","AIRFIELD","AIRLINE_ACCESS","AIRLINE_COMPANY","AIRPORT","AMBULANCE_UNIT","AMERICAN_RESTAURANT","AMPHITHEATER","AMUSEMENT_PARK","AMUSEMENT_PLACE","ANIMAL_SERVICES","ANIMAL_SHELTER","ANTIQUE_ART_SHOP","APARTMENT_RENTAL","AQUATIC_ZOO","ARABIAN_RESTAURANT","ARBORETA_BOTANICAL_GARDENS","ARCH","ARMENIAN_RESTAURANT","ART_SCHOOL","ASIAN_RESTAURANT","ATHLETICS_TRACK","ATM","ATV_DEALER","AUSTRALIAN_RESTAURANT","AUSTRIAN_RESTAURANT","AUTOMOBILE_COMPANY","AUTOMOBILE_MANUFACTURING","AUTOMOTIVE_DEALER","BAGS_LEATHERWEAR","BAKERY","BANK","BANQUET_ROOMS","BAR","BARBECUE_RESTAURANT","BASEBALL_PARK","BASKETBALL_ARENA","BASQUE_RESTAURANT","BATTLEFIELD","BAY","BEACH","BEACH_CLUB","BEAUTY_SALON","BEAUTY_SUPPLIES","BELGIAN_RESTAURANT","BETTING_STATION","BISTRO","BLOOD_BANK","BOATING_EQUIPMENT_ACCESSORIES","BOAT_DEALER","BOAT_LAUNCHING_RAMP","BODYSHOP","BOLIVIAN_RESTAURANT","BOOK_SHOP","BOWLING_CENTER","BRAZILIAN_RESTAURANT","BRIDGE","BRITISH_RESTAURANT","BUFFET_RESTAURANT","BUILDING","BULGARIAN_RESTAURANT","BUNGALOW_RENTAL","BURMESE_RESTAURANT","BUSINESS_PARK","BUSINESS_SERVICES","BUS_CHARTER_COMPANY","BUS_DEALER","BUS_LINES","BUS_STOP","BUTCHER","B_B_GUEST_HOUSE","CABARET_THEATER","CABINS_LODGES","CABLE_TELEPHONE_COMPANY","CAFE","CAFETERIA","CAFE_PUB","CALIFORNIAN_RESTAURANT","CAMBODIAN_RESTAURANT","CAMERAS_PHOTOGRAPHY","CAMPING_GROUND","CANADIAN_RESTAURANT","CAPE","CARAVAN_SITE","CARIBBEAN_RESTAURANT","CARPET_FLOOR_COVERINGS","CAR_DEALER","CAR_GLASS_REPLACEMENT_SHOP","CAR_REPAIR_AND_SERVICE","CAR_WASH","CASINO","CATERING_SERVICES","CAVE","CEMETERY","CHALET_RENTAL","CHEMICAL_COMPANY","CHICKEN_RESTAURANT","CHILDRENS_CLOTHES","CHILD_CARE_FACILITY","CHINESE_RESTAURANT","CHRISTMAS_HOLIDAY_SHOP","CHURCH","CINEMA","CLEANING_SERVICES","CLOTHING_SHOP","CLUB_ASSOCIATION","COCKTAIL_BAR","COFFEE_SHOP","COLLEGE_OR_UNIVERSITY","COLLEGE_UNIVERSITY","COLOMBIAN_RESTAURANT","COMEDY_CLUB","COMMERCIAL_BUILDING","COMMUNITY_CENTER","COMPANY","COMPUTER_COMPUTER_SUPPLIES","COMPUTER_DATA_SERVICES","CONCERT_HALL","CONSTRUCTION_COMPANY","CONSTRUCTION_MATERIAL_EQUIPMENT","CONSUMER_ELECTRONICS","CONVENIENCE_STORE","CORSICAN_RESTAURANT","COTTAGE_RENTAL","COURIER_DROP_BOX","COURTHOUSE","COVE","CREOLE_RESTAURANT","CREPERIE","CRICKET_GROUND","CUBAN_RESTAURANT","CULTURAL_CENTER","CURRENCY_EXCHANGE","CURTAINS_TEXTILES","CZECH_RESTAURANT","C_DS_DVD_VIDEOS","DAM","DANCE_STUDIO_SCHOOL","DANISH_RESTAURANT","DELICATESSEN","DELIVERY_SERVICE","DENTIST","DEPARTMENT_STORE","DINNER_THEATER","DISCO_CLUB","DIVERSIFIED_FINANCIALS","DOCTOR","DONGBEI_RESTAURANT","DOUGHNUT_RESTAURANT","DO_IT_YOURSELF_CENTERS","DRIVE_IN_MOVIES","DRIVE_THROUGH_BOTTLE_SHOP","DRIVING_SCHOOL","DRUG_STORE","DRY_CLEANER","DUNE","DUTCH_RESTAURANT","EGYPTIAN_RESTAURANT","ELECTRICAL_APPLIANCES_SHOP","ELECTRIC_VEHICLE_STATION","ELECTRONICS_COMPANY","EMBASSY","EMERGENCY_MEDICAL_SERVICE","EMERGENCY_ROOM","ENGLISH_RESTAURANT","ENTERTAINMENT","EQUIPMENT_RENTAL","ETHIOPIAN_RESTAURANT","EXCHANGE","EXHIBITION_CONVENTION_CENTER","FACTORY_OUTLET","FAIRGROUND","FARM","FARMERS_MARKET","FAST_FOOD","FERRY_TERMINAL","FINNISH_RESTAURANT","FIRE_STATION_BRIGADE","FISHING_HUNTING_AREA","FISHMONGER","FITNESS_CLUB_CENTER","FLATS_APARTMENT_COMPLEX","FLORISTS","FONDUE_RESTAURANT","FOOD_MARKET","FOOTBALL_STADIUM","FOOTWEAR_SHOE_REPAIRS","FOREST_AREA","FRENCH_RESTAURANT","FRONTIER_CROSSING","FUNERAL_SERVICE_MORTUARIES","FURNITURE_HOME_FURNISHINGS","FUSION_RESTAURANT","GARDEN_CENTERS_SERVICES","GAS_STATION","GENERAL_HOSPITAL_AND_POLYCLINIC","GENERAL_PRACTITIONER","GEOGRAPHIC_FEATURE","GERMAN_RESTAURANT","GIFTS_CARDS_NOVELTIES_SOUVENIRS","GLASSWARE_CERAMIC_SHOP","GLASS_WINDOWS_STORE","GOLD_EXCHANGE","GOLF_COURSE","GOVERNMENT_OFFICE","GREEK_RESTAURANT","GREENGROCER","GRILL_RESTAURANT","GROCERY_STORE","GURUDWARA","HAIRDRESSER","HAMBURGER_RESTAURANT","HARBOR","HARDWARE_STORE","HAWAIIAN_RESTAURANT","HEALTH_CARE_SERVICE","HELIPAD_HELICOPTER_LANDING","HIGH_SCHOOL","HIKING_TRAIL","HILL","HISTORICAL_PARK","HISTORIC_SITE","HOBBY_SHOP","HOCKEY_CLUB","HOLIDAY_RENTAL","HOME_APPLIANCE_REPAIR","HORSE_RACING_TRACK","HORSE_RIDING_CENTER","HORSE_RIDING_TRAIL","HORTICULTURE","HOSPITAL","HOSPITAL_FOR_WOMEN_AND_CHILDREN","HOSPITAL_OF_CHINESE_MEDICINE","HOSTEL","HOTEL","HOTEL_MOTEL","HOT_POT_RESTAURANT","HOUSE_GARDEN_FURNITURE_FITTINGS","HUNAN_RESTAURANT","HUNGARIAN_RESTAURANT","ICE_CREAM_PARLOR","ICE_HOCKEY_ARENA","ICE_SKATING_RINK","IMPORT_EXPORT_AND_DISTRIBUTION","INDIAN_RESTAURANT","INDONESIAN_RESTAURANT","INDUSTRIAL_BUILDING","INFORMAL_MARKET","INSURANCE_COMPANY","INTERNATIONAL_RAILROAD_STATION","INTERNATIONAL_RESTAURANT","INTERNET_CAFE","INVESTMENT_ADVISOR","IRANIAN_RESTAURANT","IRISH_RESTAURANT","ISLAND","ISRAELI_RESTAURANT","ITALIAN_RESTAURANT","JAMAICAN_RESTAURANT","JAPANESE_RESTAURANT","JAZZ_CLUB","JEWELRY_CLOCKS_WATCHES","JEWISH_RESTAURANT","JUNIOR_COLLEGE_COMMUNITY_COLLEGE","KARAOKE_CLUB","KITCHENS_BATHROOMS","KOREAN_RESTAURANT","KOSHER_RESTAURANT","LANGUAGE_SCHOOL","LATIN_AMERICAN_RESTAURANT","LAUNDRY","LEBANESE_RESTAURANT","LEGAL_SERVICES","LEISURE_CENTER","LEISURE_SPORTS_CENTER","LIBRARY","LIGHTING_SHOPS","LOCALE","LOCAL_SPECIALITIES_SHOP","LOTTERY_SHOP","MANUFACTURING_COMPANY","MANUFACTURING_FACILITY","MARIJUANA_DISPENSARY","MARINA","MARKET","MARSH","MAUSOLEUM_GRAVE","MECHANICAL_ENGINEERING","MEDIA_FACILITY","MEDICAL_SUPPLIES_EQUIPMENT","MEDICINAL_MARIJUANA_DISPENSARY","MEDITERRANEAN_RESTAURANT","MEMORIAL","MENS_CLOTHING","MEXICAN_RESTAURANT","MICROBREWERY","MIDDLE_EASTERN_RESTAURANT","MIDDLE_SCHOOL","MILITARY_AIRPORT","MINERAL_HOT_SPRINGS","MINING_COMPANY","MOBILE_PHONE_SHOP","MONGOLIAN_RESTAURANT","MONUMENT","MOROCCAN_RESTAURANT","MOSQUE","MOTEL","MOTORCYCLE_DEALER","MOTORCYCLE_REPAIR","MOTORING_ORGANIZATION_OFFICE","MOTOR_RACING_STADIUM","MOUNTAIN_BIKE_TRAIL","MOUNTAIN_PASS","MOUNTAIN_PEAK","MOVIE_THEATER","MOVING_STORAGE_COMPANY","MULTI_PURPOSE_STADIUM","MUSEUM","MUSIC_CENTER","MUSIC_INSTRUMENTS_STORE","NAIL_SALON","NATIONAL_RAILROAD_STATION","NATIVE_RESERVATION","NATURAL_TOURIST_ATTRACTION","NEPALESE_RESTAURANT","NETBALL_STADIUM","NEWSAGENTS_TOBACCONISTS","NIGHTLIFE","NON_GOVERNMENTAL_ORGANIZATION","NORWEGIAN_RESTAURANT","OASIS","OBSERVATORY","OFFICE_EQUIPMENT","OIL_NATURAL_GAS","OPEN_CAR_PARKING_AREA","OPEN_PARKING_AREA","OPERA_HOUSE","OPTICIAN","ORGANIC_FOOD_RESTAURANT","ORIENTAL_RESTAURANT","OTHER_FOOD_SHOPS","OTHER_WINTER_SPORT","PAGODA","PAINTING_DECORATING","PAKISTANI_RESTAURANT","PARK","PARKING_GARAGE","PARKWAY","PARK_RECREATION_AREA","PASSENGER_TRANSPORT_TICKET_OFFICE","PAWN_SHOP","PERSONAL_CARE_FACILITY","PERSONAL_SERVICE","PERFORMING_ARTS_THEATER","PERUVIAN_RESTAURANT","PET_SUPPLIES","PHARMACEUTICAL_COMPANY","PHARMACY","PHILIPPINE_RESTAURANT","PHOTOCOPY_SHOP","PHOTO_LAB_DEVELOPMENT","PICNIC_AREA","PIZZERIA","PLACE_OF_WORSHIP","PLAIN_FLAT","PLANETARIUM","PLATEAU","POLICE_STATION","POLISH_RESTAURANT","POLYNESIAN_RESTAURANT","PORTUGUESE_RESTAURANT","PORT_WAREHOUSE_FACILITY","POST_OFFICE","PRE_SCHOOL","PRIMARY_PRODUCER","PRIMARY_RESOURCE_UTILITY","PRIMARY_SCHOOL","PRISON_CORRECTIONAL_FACILITY","PRIVATE_AIRPORT","PROTECTED_AREA","PUB","PUBLIC_AIRPORT","PUBLIC_AMENITY","PUBLIC_CALL_BOX","PUBLIC_MARKET","PUBLIC_TOILET","PUBLIC_TRANSPORT_STOP","PUBLISHING_TECHNOLOGIES","PUB_FOOD","QUARRY","RACE_TRACK","RAILWAY_STATION","RAPIDS","REAL_ESTATE_AGENT","REAL_ESTATE_COMPANY","RECREATIONAL_CAMPING_GROUND","RECREATIONAL_MARIJUANA_DISPENSARY","RECREATIONAL_VEHICLE_DEALER","RECREATION_AREA","RECYCLING_SHOP","REEF","RENT_A_CAR_FACILITY","RENT_A_CAR_PARKING","REPAIR_FACILITY","RESEARCH_FACILITY","RESERVOIR","RESIDENTIAL_ACCOMMODATION","RESORT","RESTAURANT","RESTAURANT_AREA","REST_AREA","REST_CAMP","RETAIL_OUTLET","RETIREMENT_COMMUNITY","RIDGE","RIVER_CROSSING","ROAD_RESCUE","ROAD_TRAFFIC_CONTROL_CENTER","ROCKS","ROCK_CLIMBING_TRAIL","RUGBY_GROUND","RUSSIAN_RESTAURANT","SALAD_BAR","SANDWICH_RESTAURANT","SAUNA_SOLARIUM_MASSAGE","SCANDINAVIAN_RESTAURANT","SCENIC_PANORAMIC_VIEW","SCHOOL","SCHOOL_BUS_COMPANY","SEAFOOD","SECURED_ENTRANCE","SECURITY_PRODUCTS","SENIOR_HIGH_SCHOOL","SERVICE_COMPANY","SHANDONG_RESTAURANT","SHOP","SHOPPING_CENTER","SHOPPING_SERVICE","SICHUAN_RESTAURANT","SKI_RESORT","SNACKS_RESTAURANT","SNOOKER_POOL_BILLIARD","SOCCER_STADIUM","SOFTWARE_COMPANY","SOUL_FOOD","SOUP_RESTAURANT","SPANISH_RESTAURANT","SPECIALIST","SPECIALTY_CLOTHING_SHOP","SPECIALTY_FOODS","SPECIAL_HOSPITAL","SPORTS_CENTER","SPORTS_EQUIPMENT_CLOTHING","SQUASH_COURT","STADIUM","STATION_ACCESS","STATUE","STEAK_HOUSE","STOCK_EXCHANGE","STREETCAR_STOP","SUBWAY_STATION","SUPERMARKETS_HYPERMARKETS","SUSHI_RESTAURANT","SWEDISH_RESTAURANT","SWIMMING_POOL","SWISS_RESTAURANT","SYNAGOG","SYRIAN_RESTAURANT","TAILOR_SHOP","TAIWANESE_RESTAURANT","TAKEOUT_FOOD","TAPAS_RESTAURANT","TAXI_LIMOUSINE_SHUTTLE_SERVICE","TAXI_STAND","TAX_SERVICES","TEA_HOUSE","TELECOMMUNICATIONS","TEMPLE","TENNIS_COURT","TEPPANYAKI_RESTAURANT","THAI_RESTAURANT","THEATER","THEMATIC_SPORT_CENTER","TIBETAN_RESTAURANT","TIRE_SERVICE","TOLL_GATE","TOURIST_ATTRACTION","TOURIST_INFORMATION_OFFICE","TOWER","TOYS_GAMES_SHOP","TRAFFIC_CONTROL_DEPARTMENT","TRAIL_SYSTEM","TRANSPORT_AUTHORITY_VEHICLE_REGISTRATION","TRANSPORT_COMPANY","TRAVEL_AGENT","TRUCK_DEALER","TRUCK_REPAIR_AND_SERVICE","TRUCK_STOP","TUNISIAN_RESTAURANT","TUNNEL","TURKISH_RESTAURANT","URBAN_STATION","VALLEY","VAN_DEALER","VARIETY_STORE","VEGETARIAN_RESTAURANT","VENEZUELAN_RESTAURANT","VETERINARIAN","VIDEO_RENTAL_SHOP","VIETNAMESE_RESTAURANT","VILLA_RENTAL","VOCATIONAL_SCHOOL","WATER_HOLE","WATER_SPORT","WEDDING_SERVICES","WEIGH_STATION","WELFARE_ORGANIZATION","WELL","WESTERN_RESTAURANT","WHOLESALE_CLUB","WILDERNESS_AREA","WILDLIFE_PARK","WINERY","WINE_SPIRITS","WOMENS_CLOTHING","YACHT_BASIN","YOGURT_JUICE_BAR","ZOO","ZOOS_ARBORETA_BOTANICAL_GARDEN"],P=["Small_Paddle_Inductive","Large_Paddle_Inductive","IEC_60309_1_Phase","IEC_60309_3_Phase","IEC_62196_Type_1_Outlet","IEC_62196_Type_2_Outlet","IEC_62196_Type_3_Outlet","IEC_62196_Type_1_Connector_Cable_Attached","IEC_62196_Type_2_Connector_Cable_Attached","IEC_62196_Type_3_Connector_Cable_Attached","Combo_to_IEC_62196_Type_1_Base","Combo_to_IEC_62196_Type_2_Base","Type_E_French_Standard_CEE_7_5","Type_F_Schuko_CEE_7_4","Type_G_British_Standard_BS_1363","Type_J_Swiss_Standard_SEV_1011","China_GB_Part_2","China_GB_Part_3","IEC_309_DC_Plug","AVCON_Connector","Tesla_Connector","NEMA_5_20","CHAdeMO","SAE_J1772","TEPCO","Better_Place_Socket","Marechal_Socket","Standard_Household_Country_Specific"],o=["No_Payment","Subscription","Direct"],M=["tollRoads","motorways","ferries","unpavedRoads","carpools","alreadyUsedRoads","borderCrossings","tunnels","carTrains","lowEmissionZones"],H=["carpool","carTrain","country","ferry","importantRoadStretch","lowEmissionZone","motorway","pedestrian","roadShields","speedLimit","toll","tollRoad","tollVignette","traffic","tunnel","unpaved","urban","vehicleRestricted"],i=[...H,"lanes"],a=[...i,"leg"],G=["speed","freeFlowSpeed","congestionLevel","travelTime","networkLength"],s=["accident","broken-down-vehicle","danger","flooding","fog","frost","jam","lane-closed","other","rain","road-closed","roadworks","wind"],D=[...s,"animals-on-road","narrow-lanes"],B=["Unified","AR","IN","PK","IL","MA","RU","TR","CN","TW","RS"],d=A=>!!A&&(A.length>=4&&A[3]!==A[1]&&A[2]!==A[0]),c=A=>d(A)?A:void 0,Y=(A,E)=>{if(A&&!(A.length<2))return E?[E[0]>A[0]?A[0]:E[0],E[1]>A[1]?A[1]:E[1],E[2]<A[0]?A[0]:E[2],E[3]<A[1]?A[1]:E[3]]:[A[0],A[1],A[0],A[1]]},F=(A,E)=>E&&A?[E[0]>A[0]?A[0]:E[0],E[1]>A[1]?A[1]:E[1],E[2]<A[2]?A[2]:E[2],E[3]<A[3]?A[3]:E[3]]:A||E,l=A=>A?.length?A.reduce((A,E)=>F(E,A)):void 0,u=A=>{const E=A?.length;if(!E)return;let R;const T=Math.ceil(E/1e3);for(let _=0;_<E;_+=T)R=Y(A[_],R);return 1===T?R:Y(A[E-1],R)},V=A=>{if(A){if(Array.isArray(A))return"number"==typeof A[0]?A.length>=4?A:void 0:l(A.map(A=>V(A)));if(A.bbox)return A.bbox;switch(A.type){case"Feature":return V(A.geometry);case"FeatureCollection":return l(A.features.map(V));case"GeometryCollection":return l(A.geometries.map(V));case"Point":return Y(A.coordinates);case"LineString":case"MultiPoint":return u(A.coordinates);case"MultiLineString":case"Polygon":return l(A.coordinates.map(u));case"MultiPolygon":return l(A.coordinates.flatMap(A=>A.map(u)));default:return}}},p=(A,E)=>F(V(A),E),m=A=>[(A[0]+A[2])/2,(A[1]+A[3])/2],K=A=>{const[E,R,T,_]=A;return{type:"Feature",geometry:{type:"Polygon",coordinates:[[[E,R],[T,R],[T,_],[E,_],[E,R]]]},properties:{}}},h=()=>Date.now().toString(36)+Math.random().toString(36).substring(2),g="MapsSDKJS",f=A=>{if(!/^[a-zA-Z0-9-]{1,100}$/.test(A))throw new TypeError(`a string matching regular expression ^[a-zA-Z0-9-]{1,100}$ is expected, but ${A} ['${typeof A}'] given`);return A},y=A=>({"tomtom-user-agent":A["tomtom-user-agent"]??"MapsSDKJS/0.56.0",...A.trackingId&&{"Tracking-ID":f(A.trackingId)}}),W=(A,E)=>{if(A){if(Array.isArray(A))return A;if(A.coordinates)return A.coordinates;if(A.geometry)return"main-when-available"===E?.useEntryPoint?(R=A,R?.properties?.entryPoints?.find(A=>"main"===A.type))?.position??A.geometry.coordinates:A.geometry.coordinates}var R;return null},v=(A,E)=>{const R=W(A,E);if(!R)throw new Error(`The received object does not have lng-lat coordinates: ${JSON.stringify(A)}`);return R},$=A=>({type:"Point",coordinates:A}),b=A=>({type:"Feature",geometry:$(A),properties:{}}),w={ROAD_TRAFFIC_CONTROL_CENTER:[7301],TRAFFIC_CONTROL_DEPARTMENT:[7301002],TRAIL_SYSTEM:[7302],MOUNTAIN_BIKE_TRAIL:[7302002],ADVENTURE_VEHICLE_TRAIL:[7302003],HIKING_TRAIL:[7302004],HORSE_RIDING_TRAIL:[7302005],ROCK_CLIMBING_TRAIL:[7302006],RESIDENTIAL_ACCOMMODATION:[7303],RETIREMENT_COMMUNITY:[7303002],FLATS_APARTMENT_COMPLEX:[7303003],HOLIDAY_RENTAL:[7304],COTTAGE_RENTAL:[7304002],VILLA_RENTAL:[7304003],BUNGALOW_RENTAL:[7304004],CHALET_RENTAL:[7304005],APARTMENT_RENTAL:[7304006],ADVENTURE_SPORTS_FACILITY:[7305],HELIPAD_HELICOPTER_LANDING:[7308],ELECTRIC_VEHICLE_STATION:[7309],REPAIR_FACILITY:[7310],BODYSHOP:[7310002],CAR_GLASS_REPLACEMENT_SHOP:[7310003],CAR_REPAIR_AND_SERVICE:[7310004],TIRE_SERVICE:[7310007],MOTORCYCLE_REPAIR:[7310008],TRUCK_REPAIR_AND_SERVICE:[7310009],GAS_STATION:[7311],RENT_A_CAR_FACILITY:[7312],PARKING_GARAGE:[7313],HOTEL_MOTEL:[7314],B_B_GUEST_HOUSE:[7314002],HOTEL:[7314003],HOSTEL:[7314004],RESORT:[7314005],MOTEL:[7314006],CABINS_LODGES:[7314007],REST_CAMP:[7314008],RESTAURANT:[7315],AFRICAN_RESTAURANT:[7315002],AMERICAN_RESTAURANT:[7315003],AUSTRIAN_RESTAURANT:[7315004],BARBECUE_RESTAURANT:[7315005],BELGIAN_RESTAURANT:[7315006],BISTRO:[7315007],BRITISH_RESTAURANT:[7315008],CALIFORNIAN_RESTAURANT:[7315009],CANADIAN_RESTAURANT:[7315010],CARIBBEAN_RESTAURANT:[7315011],CHINESE_RESTAURANT:[7315012],CREPERIE:[7315013],DUTCH_RESTAURANT:[7315014],FAST_FOOD:[7315015],PHILIPPINE_RESTAURANT:[7315016],FRENCH_RESTAURANT:[7315017],GERMAN_RESTAURANT:[7315018],GREEK_RESTAURANT:[7315019],GRILL_RESTAURANT:[7315020],HAWAIIAN_RESTAURANT:[7315021],HUNGARIAN_RESTAURANT:[7315022],INDIAN_RESTAURANT:[7315023],INDONESIAN_RESTAURANT:[7315024],ITALIAN_RESTAURANT:[7315025],JAPANESE_RESTAURANT:[7315026],JEWISH_RESTAURANT:[7315027],KOREAN_RESTAURANT:[7315028],LATIN_AMERICAN_RESTAURANT:[7315029],LEBANESE_RESTAURANT:[7315030],MEDITERRANEAN_RESTAURANT:[7315032],MEXICAN_RESTAURANT:[7315033],MIDDLE_EASTERN_RESTAURANT:[7315034],ORIENTAL_RESTAURANT:[7315035],PIZZERIA:[7315036],POLISH_RESTAURANT:[7315037],PORTUGUESE_RESTAURANT:[7315038],PUB_FOOD:[7315039],RUSSIAN_RESTAURANT:[7315040],SANDWICH_RESTAURANT:[7315042],SEAFOOD:[7315043],SPANISH_RESTAURANT:[7315044],STEAK_HOUSE:[7315045],SWISS_RESTAURANT:[7315047],THAI_RESTAURANT:[7315048],TURKISH_RESTAURANT:[7315049],VEGETARIAN_RESTAURANT:[7315050],VIETNAMESE_RESTAURANT:[7315051],HUNAN_RESTAURANT:[7315052],SHANDONG_RESTAURANT:[7315053],SICHUAN_RESTAURANT:[7315056],DONGBEI_RESTAURANT:[7315057],HOT_POT_RESTAURANT:[7315058],TAIWANESE_RESTAURANT:[7315059],WESTERN_RESTAURANT:[7315060],PERUVIAN_RESTAURANT:[7315061],ASIAN_RESTAURANT:[7315062],CREOLE_RESTAURANT:[7315063],SOUL_FOOD:[7315064],IRISH_RESTAURANT:[7315065],JAMAICAN_RESTAURANT:[7315066],KOSHER_RESTAURANT:[7315067],CZECH_RESTAURANT:[7315068],HAMBURGER_RESTAURANT:[7315069],CHICKEN_RESTAURANT:[7315070],FUSION_RESTAURANT:[7315071],BRAZILIAN_RESTAURANT:[7315072],INTERNATIONAL_RESTAURANT:[7315073],MOROCCAN_RESTAURANT:[7315074],ORGANIC_FOOD_RESTAURANT:[7315075],TAPAS_RESTAURANT:[7315076],ICE_CREAM_PARLOR:[7315078],DOUGHNUT_RESTAURANT:[7315079],AFGHAN_RESTAURANT:[7315081],ARABIAN_RESTAURANT:[7315083],ARMENIAN_RESTAURANT:[7315085],AUSTRALIAN_RESTAURANT:[7315086],BASQUE_RESTAURANT:[7315087],BOLIVIAN_RESTAURANT:[7315088],BULGARIAN_RESTAURANT:[7315090],BURMESE_RESTAURANT:[7315091],CAMBODIAN_RESTAURANT:[7315092],COLOMBIAN_RESTAURANT:[7315094],CORSICAN_RESTAURANT:[7315095],CUBAN_RESTAURANT:[7315096],DANISH_RESTAURANT:[7315098],EGYPTIAN_RESTAURANT:[7315100],ENGLISH_RESTAURANT:[7315101],ETHIOPIAN_RESTAURANT:[7315102],FINNISH_RESTAURANT:[7315104],IRANIAN_RESTAURANT:[7315105],ISRAELI_RESTAURANT:[7315106],MONGOLIAN_RESTAURANT:[7315110],NEPALESE_RESTAURANT:[7315111],NORWEGIAN_RESTAURANT:[7315112],SCANDINAVIAN_RESTAURANT:[7315114],SWEDISH_RESTAURANT:[7315119],SYRIAN_RESTAURANT:[7315120],TEPPANYAKI_RESTAURANT:[7315121],TIBETAN_RESTAURANT:[7315122],TUNISIAN_RESTAURANT:[7315123],VENEZUELAN_RESTAURANT:[7315125],PAKISTANI_RESTAURANT:[7315127],POLYNESIAN_RESTAURANT:[7315129],FONDUE_RESTAURANT:[7315134],SNACKS_RESTAURANT:[7315139],SOUP_RESTAURANT:[7315140],BUFFET_RESTAURANT:[7315142],SALAD_BAR:[7315143],TAKEOUT_FOOD:[7315145],BANQUET_ROOMS:[7315146],CAFETERIA:[7315147],SUSHI_RESTAURANT:[7315148],YOGURT_JUICE_BAR:[7315149],TOURIST_INFORMATION_OFFICE:[7316],MUSEUM:[7317],THEATER:[7318],CONCERT_HALL:[7318002],MUSIC_CENTER:[7318003],OPERA_HOUSE:[7318004],PERFORMING_ARTS_THEATER:[7318005],CABARET_THEATER:[7318006],AMPHITHEATER:[7318007],DINNER_THEATER:[7318008],CULTURAL_CENTER:[7319],SPORTS_CENTER:[7320],FITNESS_CLUB_CENTER:[7320002],HORSE_RIDING_CENTER:[7320003],LEISURE_SPORTS_CENTER:[7320004],THEMATIC_SPORT_CENTER:[7320005],SQUASH_COURT:[7320006],HOSPITAL:[7321],GENERAL_HOSPITAL_AND_POLYCLINIC:[7321002],SPECIAL_HOSPITAL:[7321003],HOSPITAL_OF_CHINESE_MEDICINE:[7321004],HOSPITAL_FOR_WOMEN_AND_CHILDREN:[7321005],POLICE_STATION:[7322],POST_OFFICE:[7324],PHARMACY:[7326],DEPARTMENT_STORE:[7327],BANK:[7328],MARKET:[7332],INFORMAL_MARKET:[7332002],PUBLIC_MARKET:[7332003],FARMERS_MARKET:[7332004],SUPERMARKETS_HYPERMARKETS:[7332005],AGRICULTURE:[7335],HORTICULTURE:[7335002],PRIMARY_PRODUCER:[7335003],FARM:[7335004],SCENIC_PANORAMIC_VIEW:[7337],SWIMMING_POOL:[7338],PLACE_OF_WORSHIP:[7339],CHURCH:[7339002],MOSQUE:[7339003],SYNAGOG:[7339004],TEMPLE:[7339005],GURUDWARA:[7339006],PAGODA:[7339008],CASINO:[7341],CINEMA:[7342],MOVIE_THEATER:[7342002],DRIVE_IN_MOVIES:[7342003],MARINA:[7347,7347002],YACHT_BASIN:[7347003],WINERY:[7349],FERRY_TERMINAL:[7352],TRUCK_STOP:[7358],WEIGH_STATION:[7359,7359002],CAMPING_GROUND:[7360],RECREATIONAL_CAMPING_GROUND:[7360002],CARAVAN_SITE:[7360003],COMMUNITY_CENTER:[7363],EMBASSY:[7365],FRONTIER_CROSSING:[7366],GOVERNMENT_OFFICE:[7367],MOTORING_ORGANIZATION_OFFICE:[7368],OPEN_PARKING_AREA:[7369],OPEN_CAR_PARKING_AREA:[7369002],SCHOOL:[7372,7372002],CHILD_CARE_FACILITY:[7372003],PRE_SCHOOL:[7372004],PRIMARY_SCHOOL:[7372005],HIGH_SCHOOL:[7372006],SENIOR_HIGH_SCHOOL:[7372007],VOCATIONAL_SCHOOL:[7372008],LANGUAGE_SCHOOL:[7372010],ART_SCHOOL:[7372012],MIDDLE_SCHOOL:[7372014],DRIVING_SCHOOL:[7372016],SHOPPING_CENTER:[7373],STADIUM:[7374],ATHLETICS_TRACK:[7374002],CRICKET_GROUND:[7374003],SOCCER_STADIUM:[7374004],HORSE_RACING_TRACK:[7374005],MULTI_PURPOSE_STADIUM:[7374006],RUGBY_GROUND:[7374007],ICE_HOCKEY_ARENA:[7374008],BASEBALL_PARK:[7374009],FOOTBALL_STADIUM:[7374010],MOTOR_RACING_STADIUM:[7374011],BASKETBALL_ARENA:[7374012],RACE_TRACK:[7374013],NETBALL_STADIUM:[7374014],TOLL_GATE:[7375],TOURIST_ATTRACTION:[7376],BUILDING:[7376002],MONUMENT:[7376003],NATURAL_TOURIST_ATTRACTION:[7376004],OBSERVATORY:[7376005],PLANETARIUM:[7376006],DAM:[7376007],TUNNEL:[7376008],TOWER:[7376009],BRIDGE:[7376010],MAUSOLEUM_GRAVE:[7376011],ARCH:[7376012],STATUE:[7376013],WATER_HOLE:[7376014],COLLEGE_UNIVERSITY:[7377],COLLEGE_OR_UNIVERSITY:[7377002],JUNIOR_COLLEGE_COMMUNITY_COLLEGE:[7377003],BUSINESS_PARK:[7378],RAILWAY_STATION:[7380],INTERNATIONAL_RAILROAD_STATION:[7380002],NATIONAL_RAILROAD_STATION:[7380003],URBAN_STATION:[7380004],SUBWAY_STATION:[7380005],AIRPORT:[7383],PUBLIC_AIRPORT:[7383002],PRIVATE_AIRPORT:[7383003],MILITARY_AIRPORT:[7383004],AIRFIELD:[7383005],COURIER_DROP_BOX:[7388],ACCESS_GATEWAY:[7389],AIRLINE_ACCESS:[7389002],STATION_ACCESS:[7389003],SECURED_ENTRANCE:[7389004],EMERGENCY_MEDICAL_SERVICE:[7391],FIRE_STATION_BRIGADE:[7392],REST_AREA:[7395],ATM:[7397],GEOGRAPHIC_FEATURE:[8099],MOUNTAIN_PEAK:[8099002],CAVE:[8099003],RIDGE:[8099004],DUNE:[8099005],VALLEY:[8099006],PLAIN_FLAT:[8099007],PLATEAU:[8099008],WELL:[8099010],OASIS:[8099011],ROCKS:[8099012],RESERVOIR:[8099013],REEF:[8099014],RAPIDS:[8099015],BAY:[8099016],COVE:[8099017],HARBOR:[8099018],CAPE:[8099020],MINERAL_HOT_SPRINGS:[8099021],ISLAND:[8099022],MARSH:[8099023],RIVER_CROSSING:[8099024],HILL:[8099025],QUARRY:[8099026],LOCALE:[8099027],PRIMARY_RESOURCE_UTILITY:[9150],TRANSPORT_AUTHORITY_VEHICLE_REGISTRATION:[9151],NON_GOVERNMENTAL_ORGANIZATION:[9152],WELFARE_ORGANIZATION:[9153],PRISON_CORRECTIONAL_FACILITY:[9154],CAR_WASH:[9155,9155002],MANUFACTURING_FACILITY:[9156],RESEARCH_FACILITY:[9157],MEDIA_FACILITY:[9158],PORT_WAREHOUSE_FACILITY:[9159],EXCHANGE:[9160],STOCK_EXCHANGE:[9160002],GOLD_EXCHANGE:[9160003],CURRENCY_EXCHANGE:[9160004],COMPANY:[9352],SERVICE_COMPANY:[9352002],ADVERTISING_COMPANY:[9352003],COMPUTER_DATA_SERVICES:[9352004],SOFTWARE_COMPANY:[9352005],DIVERSIFIED_FINANCIALS:[9352006],INSURANCE_COMPANY:[9352007],DELIVERY_SERVICE:[9352008],REAL_ESTATE_COMPANY:[9352009],MANUFACTURING_COMPANY:[9352011],AGRICULTURAL_TECHNOLOGY:[9352012],AUTOMOBILE_COMPANY:[9352013],CHEMICAL_COMPANY:[9352014],ELECTRONICS_COMPANY:[9352015],MECHANICAL_ENGINEERING:[9352016],PHARMACEUTICAL_COMPANY:[9352018],PUBLISHING_TECHNOLOGIES:[9352019],TELECOMMUNICATIONS:[9352020],TAX_SERVICES:[9352022],LEGAL_SERVICES:[9352023],TRANSPORT_COMPANY:[9352024],BUS_CHARTER_COMPANY:[9352025],TAXI_LIMOUSINE_SHUTTLE_SERVICE:[9352026],BUS_LINES:[9352027],SCHOOL_BUS_COMPANY:[9352028],CLEANING_SERVICES:[9352029],OIL_NATURAL_GAS:[9352030],MINING_COMPANY:[9352031],CONSTRUCTION_COMPANY:[9352032],MOVING_STORAGE_COMPANY:[9352033],AIRLINE_COMPANY:[9352034],FUNERAL_SERVICE_MORTUARIES:[9352036],INVESTMENT_ADVISOR:[9352037],EQUIPMENT_RENTAL:[9352038],BUSINESS_SERVICES:[9352039],CABLE_TELEPHONE_COMPANY:[9352040],AUTOMOBILE_MANUFACTURING:[9352041],IMPORT_EXPORT_AND_DISTRIBUTION:[9352042],CATERING_SERVICES:[9352043],HOME_APPLIANCE_REPAIR:[9352044],ANIMAL_SHELTER:[9352045],WEDDING_SERVICES:[9352046],BEACH:[9357],RESTAURANT_AREA:[9359],ICE_SKATING_RINK:[9360],SHOP:[9361],BOOK_SHOP:[9361002],C_DS_DVD_VIDEOS:[9361003],CHILDRENS_CLOTHES:[9361004],FOOTWEAR_SHOE_REPAIRS:[9361005],CLOTHING_SHOP:[9361006],MENS_CLOTHING:[9361007],WOMENS_CLOTHING:[9361008],CONVENIENCE_STORE:[9361009],DRY_CLEANER:[9361010],CAMERAS_PHOTOGRAPHY:[9361011],COMPUTER_COMPUTER_SUPPLIES:[9361012],CONSUMER_ELECTRONICS:[9361013],OFFICE_EQUIPMENT:[9361014],REAL_ESTATE_AGENT:[9361015],FACTORY_OUTLET:[9361016],FLORISTS:[9361017],BAKERY:[9361018],BUTCHER:[9361019],FISHMONGER:[9361020],FOOD_MARKET:[9361021],GREENGROCER:[9361022],GROCERY_STORE:[9361023],OTHER_FOOD_SHOPS:[9361024],WINE_SPIRITS:[9361025],GIFTS_CARDS_NOVELTIES_SOUVENIRS:[9361026],HAIRDRESSER:[9361027],CARPET_FLOOR_COVERINGS:[9361028],CURTAINS_TEXTILES:[9361029],DO_IT_YOURSELF_CENTERS:[9361030],HOUSE_GARDEN_FURNITURE_FITTINGS:[9361031],GARDEN_CENTERS_SERVICES:[9361032],KITCHENS_BATHROOMS:[9361033],LIGHTING_SHOPS:[9361034],PAINTING_DECORATING:[9361035],JEWELRY_CLOCKS_WATCHES:[9361036],NEWSAGENTS_TOBACCONISTS:[9361037],OPTICIAN:[9361038],SPORTS_EQUIPMENT_CLOTHING:[9361039],TOYS_GAMES_SHOP:[9361040],TRAVEL_AGENT:[9361041],CONSTRUCTION_MATERIAL_EQUIPMENT:[9361042],MEDICAL_SUPPLIES_EQUIPMENT:[9361043],VIDEO_RENTAL_SHOP:[9361044],LAUNDRY:[9361045],PHOTO_LAB_DEVELOPMENT:[9361046],PHOTOCOPY_SHOP:[9361047],ANIMAL_SERVICES:[9361048],ANTIQUE_ART_SHOP:[9361049],BEAUTY_SUPPLIES:[9361050],DRUG_STORE:[9361051],ELECTRICAL_APPLIANCES_SHOP:[9361052],HOBBY_SHOP:[9361053],FURNITURE_HOME_FURNISHINGS:[9361054],GLASSWARE_CERAMIC_SHOP:[9361055],LOCAL_SPECIALITIES_SHOP:[9361056],RECYCLING_SHOP:[9361057],BAGS_LEATHERWEAR:[9361058],MUSIC_INSTRUMENTS_STORE:[9361059],DELICATESSEN:[9361060],SPECIALTY_FOODS:[9361061],SHOPPING_SERVICE:[9361062],RETAIL_OUTLET:[9361063],PET_SUPPLIES:[9361064],WHOLESALE_CLUB:[9361066],BEAUTY_SALON:[9361067],NAIL_SALON:[9361068],HARDWARE_STORE:[9361069],PAWN_SHOP:[9361070],LOTTERY_SHOP:[9361071],BETTING_STATION:[9361072],AGRICULTURAL_SUPPLIES:[9361073],MOBILE_PHONE_SHOP:[9361075],DRIVE_THROUGH_BOTTLE_SHOP:[9361076],TAILOR_SHOP:[9361077],SECURITY_PRODUCTS:[9361078],SPECIALTY_CLOTHING_SHOP:[9361079],GLASS_WINDOWS_STORE:[9361080],VARIETY_STORE:[9361081],CHRISTMAS_HOLIDAY_SHOP:[9361082],BOATING_EQUIPMENT_ACCESSORIES:[9361083],PARK_RECREATION_AREA:[9362],BATTLEFIELD:[9362002],CEMETERY:[9362003],HISTORIC_SITE:[9362004],HISTORICAL_PARK:[9362005],MEMORIAL:[9362007],PARK:[9362008],PARKWAY:[9362009],RECREATION_AREA:[9362011],WILDERNESS_AREA:[9362014],FOREST_AREA:[9362015],FISHING_HUNTING_AREA:[9362016],FAIRGROUND:[9362017],OTHER_WINTER_SPORT:[9362025],SKI_RESORT:[9362026],BOAT_LAUNCHING_RAMP:[9362032],PICNIC_AREA:[9362033],PROTECTED_AREA:[9362037],COURTHOUSE:[9363],MARIJUANA_DISPENSARY:[9364],MEDICINAL_MARIJUANA_DISPENSARY:[9364002],RECREATIONAL_MARIJUANA_DISPENSARY:[9364003],TENNIS_COURT:[9369],WATER_SPORT:[9371],DOCTOR:[9373],GENERAL_PRACTITIONER:[9373002],SPECIALIST:[9373003],DENTIST:[9374],VETERINARIAN:[9375],CAFE_PUB:[9376],CAFE:[9376002],PUB:[9376003],INTERNET_CAFE:[9376004],TEA_HOUSE:[9376005],COFFEE_SHOP:[9376006],MICROBREWERY:[9376007],EXHIBITION_CONVENTION_CENTER:[9377],LEISURE_CENTER:[9378],BOWLING_CENTER:[9378002],DANCE_STUDIO_SCHOOL:[9378003],SAUNA_SOLARIUM_MASSAGE:[9378005],SNOOKER_POOL_BILLIARD:[9378006],NIGHTLIFE:[9379],DISCO_CLUB:[9379002],BAR:[9379004],COCKTAIL_BAR:[9379006],JAZZ_CLUB:[9379008],COMEDY_CLUB:[9379009],KARAOKE_CLUB:[9379010],COMMERCIAL_BUILDING:[9382],INDUSTRIAL_BUILDING:[9383],NATIVE_RESERVATION:[9389],HEALTH_CARE_SERVICE:[9663],PERSONAL_SERVICE:[9663002],PERSONAL_CARE_FACILITY:[9663003],BLOOD_BANK:[9663004],AMBULANCE_UNIT:[9663005],ENTERTAINMENT:[9900],AMUSEMENT_PARK:[9902,9902003],AMUSEMENT_PLACE:[9902004],AUTOMOTIVE_DEALER:[9910],CAR_DEALER:[9910002],MOTORCYCLE_DEALER:[9910003],BOAT_DEALER:[9910004],RECREATIONAL_VEHICLE_DEALER:[9910005],TRUCK_DEALER:[9910006],VAN_DEALER:[9910007],BUS_DEALER:[9910008],ATV_DEALER:[9910009],GOLF_COURSE:[9911],LIBRARY:[9913],ZOOS_ARBORETA_BOTANICAL_GARDEN:[9927],ARBORETA_BOTANICAL_GARDENS:[9927002],ZOO:[9927003],AQUATIC_ZOO:[9927004],WILDLIFE_PARK:[9927005],RENT_A_CAR_PARKING:[9930],PUBLIC_AMENITY:[9932],PASSENGER_TRANSPORT_TICKET_OFFICE:[9932002],PUBLIC_CALL_BOX:[9932004],PUBLIC_TOILET:[9932005],ROAD_RESCUE:[9932006],MOUNTAIN_PASS:[9935],CLUB_ASSOCIATION:[9937],BEACH_CLUB:[9937002],HOCKEY_CLUB:[9937003],PUBLIC_TRANSPORT_STOP:[9942],BUS_STOP:[9942002],TAXI_STAND:[9942003],STREETCAR_STOP:[9942004],EMERGENCY_ROOM:[9956]},x=Object.fromEntries(Object.entries(w).map(([A,E])=>[A,E[0]])),Z=Object.fromEntries(Object.entries(w).flatMap(([A,E])=>E.map(E=>[E,A]))),X=(E,R)=>A(E,v(R)).properties.location,Q=(A,E)=>{for(let R=0;R<A.length-1;R++)if(E>=A[R]&&E<=A[R+1])return R+1;return E<A[0]?0:A.length},J=(A,E,R)=>k(A,E,[R])[0],k=(A,E,R)=>{if(0===R.length)return[];if(0===A.geometry.coordinates.length||E.length<2)return R.map(()=>0);const T=E.map(E=>X(A,E)??0);return R.map(E=>{const R=X(A,E);return void 0===R?0:Q(T,R)})},j=(A,E,R)=>z(A,E,[R]),z=(A,E,R)=>{if(0===R.length)return E.slice();if(0===A.geometry.coordinates.length||E.length<2)return[...R,...E];const T=E.map(E=>X(A,E)??0),_=Array.from({length:E.length+1},()=>[]);for(let N=0;N<R.length;N++){const E=R[N],I=X(A,E);_[void 0===I?0:Q(T,I)].push({waypoint:E,location:I??0,inputIndex:N})}for(const N of _)N.sort((A,E)=>A.location-E.location||A.inputIndex-E.inputIndex);const I=[];for(let N=0;N<E.length;N++){for(const A of _[N])I.push(A.waypoint);I.push(E[N])}for(const N of _[E.length])I.push(N.waypoint);return I},q=(A,E)=>{const{progress:R}=A.properties;if(!R||0===R.length)return;const T=A.geometry.coordinates.length;if(E<0||E>=T)return;const _=TA(R,"pointIndex",E);if(!_)return;const{lower:I,lowerVal:N,upper:S,upperVal:O}=_,C=I.distanceInMeters,e=S.distanceInMeters,L=I.travelTimeInSeconds,U=S.travelTimeInSeconds;if(void 0===C||void 0===e||void 0===L||void 0===U)return;if(N===O)return{distanceInMeters:C,travelTimeInSeconds:L};const t=(E-N)/(O-N);return{distanceInMeters:C+t*(e-C),travelTimeInSeconds:L+t*(U-L)}},AA=(A,E,R)=>{const T=q(A,E),_=q(A,R);if(T&&_)return{start:T,end:_,delta:{distanceInMeters:_.distanceInMeters-T.distanceInMeters,travelTimeInSeconds:_.travelTimeInSeconds-T.travelTimeInSeconds}}},EA=(A,E)=>AA(A,E.startPointIndex,E.endPointIndex),RA=(A,E)=>{const R=A.geometry.coordinates;if(!R||0===R.length||E.startPointIndex<0||E.endPointIndex>=R.length||E.startPointIndex>E.endPointIndex)return;const T=R[E.startPointIndex],_=R[E.endPointIndex],I=R[Math.floor((E.startPointIndex+E.endPointIndex)/2)];let N=Y(T);return N=Y(I,N),N=Y(_,N),N},TA=(A,E,R)=>{let T,_,I,N;for(const S of A){const A=S[E];void 0!==A&&(A<=R&&(T=S,_=A),A>=R&&void 0===I&&(I=S,N=A))}return void 0!==T&&void 0!==_&&void 0!==I&&void 0!==N?{lower:T,lowerVal:_,upper:I,upperVal:N}:void 0},_A=(A,E,R)=>{const T=A.geometry.coordinates,_=Math.min(E+1,T.length-1),I=T[E],N=T[_],S=q(A,E),O=q(A,_);if(S&&O)return{position:[I[0]+R*(N[0]-I[0]),I[1]+R*(N[1]-I[1])],travelTimeInSeconds:S.travelTimeInSeconds+R*(O.travelTimeInSeconds-S.travelTimeInSeconds),distanceInMeters:S.distanceInMeters+R*(O.distanceInMeters-S.distanceInMeters)}},IA=(A,E,R)=>{const{progress:T}=A.properties;if(!T||0===T.length)return;const _=A.geometry.coordinates,I=T[0],N=T.at(-1),S=I[E],O=N[E];if(void 0===S||void 0===O)return;if(R<=S)return{position:_[I.pointIndex],travelTimeInSeconds:I.travelTimeInSeconds??0,distanceInMeters:I.distanceInMeters??0};if(R>=O)return{position:_[N.pointIndex],travelTimeInSeconds:N.travelTimeInSeconds??0,distanceInMeters:N.distanceInMeters??0};const C=((A,E,R)=>{const T=TA(A,E,R);if(!T)return;const{lower:_,lowerVal:I,upper:N,upperVal:S}=T,O=I===S?0:(R-I)/(S-I),C=_.pointIndex+O*(N.pointIndex-_.pointIndex),e=Math.floor(C);return{pathIndex:e,progressRatioTowardsNextPathPoint:C-e}})(T,E,R);return void 0!==C?_A(A,C.pathIndex,C.progressRatioTowardsNextPathPoint):void 0},NA=(A,E)=>{if("traveledTimeInSeconds"in E)return IA(A,"travelTimeInSeconds",E.traveledTimeInSeconds);if("traveledDistanceInMeters"in E)return IA(A,"distanceInMeters",E.traveledDistanceInMeters);const R=A.properties.summary.departureTime;if(!R)return;const T=(E.clockTime.getTime()-R.getTime())/1e3;return T<0?void 0:IA(A,"travelTimeInSeconds",T)},SA=(E,R)=>{const{progress:T}=E.properties;if(!T?.length)return;const _=E.geometry.coordinates,I=A(E,v(R)),N=I.properties.index??0,S=Math.min(N+1,_.length-1),O=_[N],C=_[S],e=((A,E,R)=>{const T=R[0]-A[0],_=R[1]-A[1],I=T*T+_*_;if(0===I)return 0;const N=((E[0]-A[0])*T+(E[1]-A[1])*_)/I;return Math.max(0,Math.min(1,N))})(O,I.geometry.coordinates,C);return _A(E,N,e)},OA=A=>Array.isArray(A)?Array.isArray(A[0])?"path":"waypoint":"Feature"===A.type&&"LineString"===A.geometry.type?"path":"waypoint",CA=["unknown","minor","moderate","major","indefinite"],eA={1:"accident",2:"fog",3:"danger",4:"rain",5:"frost",6:"jam",7:"lane-closed",8:"road-closed",9:"roadworks",10:"wind",11:"flooding",12:"animals-on-road",13:"narrow-lanes",14:"broken-down-vehicle"},LA=Object.fromEntries(Object.entries(eA).map(([A,E])=>[E,Number(A)])),UA=A=>eA[A]??"other",tA=A=>LA[A]??0,rA=A=>A?.minutes??"min",nA=(A,E)=>{if(A){const T=Math.abs(A)/3600;let I=Math.floor(T),N=Math.round(T%1*60);60===N&&(N=0,I++);const S={..._.instance.get().displayUnits?.time,...E};if(I)return`${I} ${R=S,R?.hours??"hr"} ${N.toString().padStart(2,"0")} ${rA(S)}`;if(N)return`${N.toString()} ${rA(S)}`}var R},PA=1609.344,oA=A=>A?.meters??"m",MA=A=>A?.kilometers??"km",HA=(A,E,R)=>E<3?((A,E,R)=>{const T=Number.parseInt(E.toString()),_=E-T,I=A<0?"-":"";if(_<.125)return`${I}${T} ${R}`;const N=T>0?T:"";return _<.375?`${I}${N}¼ ${R}`:_<.625?`${I}${N}½ ${R}`:_<.875?`${I}${N}¾ ${R}`:`${I}${T+1} ${R}`})(A,E,R):E<10?((A,E,R)=>{const T=Number.parseInt(E.toString()),_=E-T,I=A<0?"-":"";return _<.25?`${I}${T} ${R}`:_<.75?`${I}${T}½ ${R}`:`${I}${T+1} ${R}`})(A,E,R):`${Math.round(A)} ${R}`,iA=A=>A.miles??"mi",aA=(A,E)=>{const R=A/PA,T=Math.abs(R);return T<.125?((A,E)=>{const R=Math.round(A/.3048),T=Math.abs(R);return T<30?`${R} ${E}`:T<500?`${10*Math.round(R/10)} ${E}`:`${100*Math.round(R/100)} ${E}`})(A,E.feet??"ft"):HA(R,T,iA(E))},GA=(A,E)=>{const R=A/PA,T=Math.abs(R);return T<.125?((A,E)=>{const R=Math.round(A/.9144);return Math.abs(R)<10?`${Math.round(R)} ${E}`:`${10*Math.round(R/10)} ${E}`})(A,E.yards??"yd"):HA(R,T,iA(E))},sA=(A,R)=>{if(E(A))return"";const T={..._.instance.get().displayUnits?.distance,...R};switch(T?.type??"metric"){case"metric":return((A,E)=>{const R=Math.abs(A);if(R<10)return`${A} ${oA(E)}`;if(R<500)return`${10*Math.round(A/10)} ${oA(E)}`;if(R<1e3){const R=100*Math.round(A/100);return 1e3===R||-1e3===R?`${A<0?"-":""}1 ${MA(E)}`:`${R} ${oA(E)}`}return R<1e4?`${100*Math.round(A/100)/1e3} ${MA(E)}`:`${Math.round(A/1e3)} ${MA(E)}`})(A,T);case"imperial_us":return aA(A,T);case"imperial_uk":return GA(A,T)}};export{R as DEFAULT_COMMON_BASE_URL,PA as MILE_IN_METERS,g as TOMTOM_USER_AGENT_SDK_NAME,_ as TomTomConfig,G as areaAnalyticsMetricKeys,M as avoidableTypes,m as bboxCenter,F as bboxExpandedWithBBox,p as bboxExpandedWithGeoJSON,Y as bboxExpandedWithPosition,l as bboxFromBBoxes,u as bboxFromCoordsArray,V as bboxFromGeoJSON,c as bboxOnlyIfWithArea,q as calculateProgressAtRoutePoint,C as chargingPointCapabilities,e as chargingPointRestrictions,O as chargingPointStatus,S as chargingStationAccessTypes,L as connectorTypes,U as currentTypes,T as defaultConfig,J as findBestWaypointInsertionIndex,k as findBestWaypointInsertionIndices,sA as formatDistance,nA as formatDuration,D as fullTrafficIncidentCategories,h as generateId,y as generateTomTomHeaders,t as geographyTypes,NA as getCoordinateAtRouteProgress,W as getPosition,v as getPositionStrict,SA as getProgressAtNearestRoutePoint,OA as getRoutePlanningLocationType,AA as getRouteProgressBetween,EA as getRouteProgressForSection,RA as getSectionBBox,UA as iconToTrafficIncidentCategory,CA as indexedMagnitudes,H as inputSectionTypes,i as inputSectionTypesWithGuidance,d as isBBoxWithArea,N as isProxyCredentialsMode,I as mergeFromGlobal,o as paymentMethods,r as placeTypes,P as plugTypes,n as poiCategories,x as poiCategoriesToID,w as poiCategoriesToIDs,Z as poiIDsToCategories,K as polygonFromBBox,a as sectionTypes,b as toPointFeature,$ as toPointGeometry,s as trafficIncidentRequestCategories,tA as trafficIncidentToIconCategory,B as views,j as withInsertedWaypoint,z as withInsertedWaypoints};
1
+ import{nearestPointOnLine as A}from"@turf/turf";import{isNil as E}from"lodash-es";var R="https://api.tomtom.com",T={commonBaseURL:R,apiKey:"",retry:{initialWaitMs:.447,backoffFactor:1.618,timeoutMs:4e4}},_=class A{static{this.instance=new A}constructor(){this.config={...T}}put(A){this.config={...this.config,...A}}reset(){this.config={...T}}get(){return this.config}},N=(A={})=>({apiVersion:1,..._.instance.get(),...A}),I=(A=_.instance.get())=>!A.apiKey&&"https://api.tomtom.com"!==(A.commonBaseURL??"https://api.tomtom.com"),S=["Public","Authorized","Restricted","Private","Unknown"],O=["Available","Reserved","Occupied","OutOfService","Unknown"],C=["ChargingProfileCapable","ChargingPreferencesCapable","ChipCardSupport","ContactlessCardSupport","CreditCardPayable","DebitCardPayable","PedTerminal","RemoteStartStopCapable","Reservable","RfidReader","StartSessionConnectorRequired","TokenGroupCapable","UnlockCapable","PlugAndCharge","Unknown"],e=["EvOnly","Plugged","Disabled","Customers","Motorcycles"],L=["StandardHouseholdCountrySpecific","IEC62196Type1","IEC62196Type1CCS","IEC62196Type2CableAttached","IEC62196Type2Outlet","IEC62196Type2CCS","IEC62196Type3","Chademo","GBT20234Part2","GBT20234Part3","IEC60309AC3PhaseRed","IEC60309AC1PhaseBlue","IEC60309DCWhite","Tesla"],U=["AC1","AC3","DC"],t=["Country","CountrySubdivision","CountrySecondarySubdivision","CountryTertiarySubdivision","Municipality","MunicipalitySubdivision","MunicipalitySecondarySubdivision","Neighbourhood","PostalCodeArea"],n=["POI","Street","Geography","Point Address","Address Range","Cross Street"],r=["ABORIGINAL_LAND","ADVENTURE_SPORTS_FACILITY","ADVENTURE_VEHICLE_TRAIL","ADVERTISING_COMPANY","AFGHAN_RESTAURANT","AFRICAN_RESTAURANT","AGRICULTURAL_SUPPLIES","AGRICULTURAL_TECHNOLOGY","AGRICULTURE","AIRFIELD","AIRLINE_ACCESS","AIRLINE_COMPANY","AIRPORT","AMBULANCE_UNIT","AMERICAN_RESTAURANT","AMPHITHEATER","AMUSEMENT_PARK","AMUSEMENT_PLACE","ANIMAL_SERVICE","ANIMAL_SHELTER","ANTIQUE_ART_SHOP","APARTMENT_RENTAL","AQUATIC_ZOO","ARABIAN_RESTAURANT","ARBORETA_AND_BOTANICAL_GARDENS","ARCH","ARMENIAN_RESTAURANT","ART_SCHOOL","ASIAN_RESTAURANT","ATHLETICS_TRACK","ATM","ATV_DEALER","AUSTRALIAN_RESTAURANT","AUSTRIAN_RESTAURANT","AUTOMOBILE_COMPANY","AUTOMOBILE_MANUFACTURING","BAGS_LEATHERWEAR","BAKERY","BANDB_OR_GUEST_HOUSE","BANK","BANQUET_ROOMS","BAR","BARBECUE_RESTAURANT","BASEBALL_PARK","BASKETBALL_ARENA","BASQUE_RESTAURANT","BATTLEFIELD","BAY","BEACH","BEACH_CLUB","BEAUTY_SALON","BEAUTY_SUPPLIES","BELGIAN_RESTAURANT","BETTING_STATION","BISTRO","BLOOD_BANK","BOATING_EQUIPMENT_AND_ACCESSORIES","BOAT_DEALER","BOAT_LAUNCHING_RAMP","BODYSHOP","BOLIVIAN_RESTAURANT","BOOK_SHOP","BORDER_CONTROL","BOWLING_CENTER","BRAZILIAN_RESTAURANT","BRIDGE","BRITISH_RESTAURANT","BUFFET_RESTAURANT","BUILDING","BULGARIAN_RESTAURANT","BUNGALOW_RENTAL","BURMESE_RESTAURANT","BUSINESS_PARK","BUSINESS_SERVICES","BUS_CHARTER_COMPANY","BUS_DEALER","BUS_LINES","BUS_STOP","BUTCHER","CABARET_THEATER","CABINS_LODGES","CABLE_AND_TELEPHONE_COMPANY","CAFE","CAFETERIA","CAFE_PUB","CALIFORNIAN_RESTAURANT","CAMBODIAN_RESTAURANT","CAMERAS_AND_PHOTOGRAPHY","CAMPING_GROUND","CANADIAN_RESTAURANT","CANNABIS_SHOP","CAPE","CARAVAN_SITE","CARIBBEAN_RESTAURANT","CARPET_FLOOR_COVERINGS","CAR_DEALER","CAR_GLASS_REPLACEMENT_SHOP","CAR_RENTAL","CAR_REPAIR_AND_SERVICE","CAR_WASH","CASINO_AND_GAMBLING","CATERING_SERVICES","CAVE","CEMETERY","CHALET_RENTAL","CHARGING_LOCATION","CHEMICAL_COMPANY","CHICKEN_RESTAURANT","CHILDCARE","CHILDREN_S_CLOTHES","CHILEAN_RESTAURANT","CHINESE_RESTAURANT","CHRISTMAS_OR_HOLIDAY_SHOP","CHURCH","CINEMA","CLEANING_SERVICES","CLOTHING_SHOP","CLUB_AND_ASSOCIATION","COCKTAIL_BAR","COFFEE_SHOP","COLLEGE_OR_UNIVERSITY","COLOMBIAN_RESTAURANT","COMEDY_CLUB","COMMERCIAL_BUILDING","COMMUNITY_CENTER","COMPANY","COMPUTER_AND_COMPUTER_SUPPLIES","COMPUTER_AND_DATA_SERVICES","CONCERT_HALL","CONSTRUCTION_COMPANY","CONSTRUCTION_MATERIAL_AND_EQUIPMENT","CONSUMER_ELECTRONICS","CONVENIENCE_STORE","CORSICAN_RESTAURANT","COTTAGE_RENTAL","COURIER_DROP_BOX","COURTHOUSE","COVE","CREOLE_RESTAURANT","CREPERIE","CRICKET_GROUND","CUBAN_RESTAURANT","CULTURAL_CENTER","CURTAINS_TEXTILES","CZECH_RESTAURANT","C_DS_DVD_VIDEOS","DAM","DANCE_STUDIO_AND_SCHOOL","DANISH_RESTAURANT","DELICATESSEN","DELIVERY_SERVICE","DENTIST","DEPARTMENT_STORE","DINNER_THEATER","DISCO_CLUB","DIVERSIFIED_FINANCIALS","DOCTOR","DONGBEI_RESTAURANT","DOUGHNUT_RESTAURANT","DO_IT_YOURSELF_CENTERS","DRIVE_IN_MOVIES","DRIVE_THROUGH_BOTTLE_SHOP","DRIVING_SCHOOL","DRUG_STORE","DRY_CLEANER","DUNE","DUTCH_RESTAURANT","EGYPTIAN_RESTAURANT","ELECTRICAL_APPLIANCES_SHOP","ELECTRONICS_COMPANY","EMBASSY","EMERGENCY_MEDICAL_SERVICE","EMERGENCY_ROOM","ENGLISH_RESTAURANT","ENTERTAINMENT","EQUIPMENT_RENTAL","ETHIOPIAN_RESTAURANT","EXCHANGE","EXHIBITION_CONVENTION_CENTER","FACTORY_OUTLET","FAIRGROUND","FARM","FARMERS_MARKET","FAST_FOOD","FERRY_TERMINAL","FINNISH_RESTAURANT","FIRE_STATION","FISHING_AND_HUNTING_AREA","FISHMONGER","FITNESS_CLUB_AND_CENTER","FLATS_OR_APARTMENT_COMPLEX","FLORISTS","FLYING_CLUB","FONDUE_RESTAURANT","FOOD_AND_DRINKS_SHOP","FOOD_MARKET","FOOTBALL_STADIUM","FOOTWEAR_SHOE_REPAIRS","FOREIGN_EXCHANGE","FOREST_AREA","FRENCH_RESTAURANT","FUEL_STATION","FUNERAL_SERVICE_AND_MORTUARIES","FURNITURE_HOME_FURNISHINGS","FUSION_RESTAURANT","GARDEN_CENTERS_SERVICES","GENERAL_HOSPITAL_AND_POLYCLINIC","GENERAL_PRACTITIONER","GERMAN_RESTAURANT","GIFTS_CARDS_NOVELTIES_SOUVENIRS","GLASSWARE_CERAMIC_SHOP","GLASS_WINDOWS_STORE","GOLD_EXCHANGE","GOLF_COURSE","GOVERNMENT_OFFICE","GREEK_RESTAURANT","GREENGROCER","GRILL_RESTAURANT","GROCERY_STORE","GURUDWARA","HAIRDRESSER","HAMBURGER_RESTAURANT","HARBOR","HARDWARE_STORE","HAWAIIAN_RESTAURANT","HEALTHCARE_SERVICE","HELIPORT_OR_HELIPAD","HIGH_SCHOOL","HIKING_TRAIL","HILL","HISTORICAL_PARK","HISTORIC_SITE","HOBBY_SHOP","HOCKEY_CLUB","HOLIDAY_RENTAL","HOME_APPLIANCE_REPAIR","HORSE_RACING_TRACK","HORSE_RIDING","HORSE_RIDING_TRAIL","HORTICULTURE","HOSPITAL","HOSPITAL_FOR_WOMEN_AND_CHILDREN","HOSPITAL_OF_CHINESE_MEDICINE","HOSTEL","HOTEL","HOTEL_OR_MOTEL","HOT_POT_RESTAURANT","HOUSE_AND_GARDEN_FURNITURE_AND_FITTINGS","HUNAN_RESTAURANT","HUNGARIAN_RESTAURANT","ICE_CREAM_PARLOR","ICE_HOCKEY_ARENA","ICE_RINK","IMPORT_OR_EXPORT_AND_DISTRIBUTION","INDIAN_RESTAURANT","INDONESIAN_RESTAURANT","INDUSTRIAL_BUILDING","INFORMAL_MARKET","INSURANCE_COMPANY","INTERNATIONAL_RAILROAD_STATION","INTERNATIONAL_RESTAURANT","INTERNET_CAFE","INVESTMENT_ADVISOR","IRANIAN_RESTAURANT","IRISH_RESTAURANT","ISLAND","ISRAELI_RESTAURANT","ITALIAN_RESTAURANT","JAMAICAN_RESTAURANT","JAPANESE_RESTAURANT","JAZZ_CLUB","JEWELRY_CLOCKS_WATCHES","JEWISH_RESTAURANT","JUICE_BAR","JUNIOR_COLLEGE_OR_COMMUNITY_COLLEGE","KARAOKE_CLUB","KITCHENS_BATHROOMS","KOREAN_RESTAURANT","KOSHER_RESTAURANT","LANGUAGE_SCHOOL","LATIN_AMERICAN_RESTAURANT","LAUNDRY","LEBANESE_RESTAURANT","LEGAL_SERVICES","LEISURE_CENTER","LIGHTING_SHOPS","LOCALE","LOCAL_SPECIALITIES_SHOP","LOTTERY_SHOP","MALL","MANUFACTURING_COMPANY","MANUFACTURING_FACILITY","MARINA","MARKETPLACE","MARSH","MAUSOLEUM_OR_GRAVE","MECHANICAL_ENGINEERING","MEDIA_FACILITY","MEDICAL_SUPPLIES_EQUIPMENT","MEDICINAL_AND_RECREATIONAL_DISPENSARY","MEDICINAL_MARIJUANA_DISPENSARY","MEDITERRANEAN_RESTAURANT","MEMORIAL","MEN_S_CLOTHING","MEXICAN_RESTAURANT","MICROBREWERY","MIDDLE_EASTERN_RESTAURANT","MIDDLE_SCHOOL","MILITARY_AIRPORT","MINERAL_OR_HOT_SPRINGS","MINING_COMPANY","MOBILE_PHONE_SHOP","MONGOLIAN_RESTAURANT","MONUMENT","MOROCCAN_RESTAURANT","MOSQUE","MOTEL","MOTORCYCLE_DEALER","MOTORCYCLE_REPAIR","MOTORING_ORGANIZATION_OFFICE","MOTOR_RACING_STADIUM","MOUNTAIN_BIKE_TRAIL","MOUNTAIN_PASS","MOUNTAIN_PEAK","MOVIE_THEATER","MOVING_AND_STORAGE_COMPANY","MULTI_PURPOSE_STADIUM","MUSEUM","MUSIC_CENTER","MUSIC_INSTRUMENTS_STORE","NAIL_SALON","NATIONAL_RAILROAD_STATION","NATURAL_FEATURE","NATURAL_TOURIST_ATTRACTION","NEPALESE_RESTAURANT","NETBALL_STADIUM","NEWSAGENTS_TOBACCONISTS","NIGHTLIFE","NON_GOVERNMENTAL_ORGANIZATION","NORWEGIAN_RESTAURANT","OASIS","OBSERVATORY","OFFICE_EQUIPMENT","OIL_AND_NATURAL_GAS","OPEN_CAR_PARKING_AREA","OPERA_HOUSE","OPTICIAN","ORGANIC_FOOD_RESTAURANT","ORIENTAL_RESTAURANT","PAGODA","PAINTING_DECORATING","PAKISTANI_RESTAURANT","PAN","PARK","PARKING_GARAGE","PARKWAY","PARK_AND_RECREATION_AREA","PASSENGER_TRANSPORT_TICKET_OFFICE","PAWN_SHOP","PEDESTRIAN_SUBWAY","PERSONAL_CARE_FACILITY","PERSONAL_SERVICE","PERUVIAN_RESTAURANT","PET_SUPPLIES","PHARMACEUTICAL_COMPANY","PHARMACY","PHILIPPINE_RESTAURANT","PHOTOCOPY_SHOP","PHOTO_LAB_OR_DEVELOPMENT","PICNIC_AREA","PIZZERIA","PLAIN_OR_FLAT","PLANETARIUM","PLATEAU","POLICE_STATION","POLISH_RESTAURANT","PORTUGUESE_RESTAURANT","PORT_WAREHOUSE_FACILITY","POST_OFFICE","PRE_SCHOOL","PRIMARY_PRODUCER","PRIMARY_RESOURCE_UTILITY","PRIMARY_SCHOOL","PRISON","PRIVATE_AIRPORT","PROTECTED_LAND","PUB","PUBLIC_AIRPORT","PUBLIC_AMENITY","PUBLIC_BATHROOM","PUBLIC_CALL_BOX","PUBLIC_LIBRARY","PUBLIC_MARKET","PUBLIC_TRANSPORT_STOP","PUBLISHING_TECHNOLOGIES","QUARRY","RACE_TRACK","RAILWAY_STATION","RAPIDS","REAL_ESTATE_AGENT","REAL_ESTATE_COMPANY","RECREATIONAL_CAMPING_GROUND","RECREATIONAL_MARIJUANA_DISPENSARY","RECREATIONAL_VEHICLE_DEALER","RECREATION_AREA","RECYCLING_SHOP","REEF","RELIGIOUS_SITE","RENTAL_CAR_PARKING","RESCUE_SERVICE","RESEARCH_FACILITY","RESERVOIR","RESIDENTIAL_ACCOMMODATION","RESIDENTIAL_ENTRANCE","RESORT","RESTAURANT","RESTAURANT_AREA","REST_AREA","REST_CAMP","RETAIL_OUTLET","RETIREMENT_COMMUNITY","RIDGE","RIVER_CROSSING","ROCKS","ROCK_CLIMBING_TRAIL","RUGBY_GROUND","RUSSIAN_RESTAURANT","SALAD_BAR","SANDWICH_RESTAURANT","SAUNA_SOLARIUM_MASSAGE","SCANDINAVIAN_RESTAURANT","SCHOOL","SCHOOL_BUS_COMPANY","SEAFOOD","SECURED_ENTRANCE","SECURITY_PRODUCTS","SENIOR_HIGH_SCHOOL","SERVICE_COMPANY","SHANDONG_RESTAURANT","SHOPPING_SERVICE","SHOP_OR_STORE","SICHUAN_RESTAURANT","SKI_RESORT","SNACKS_RESTAURANT","SOCCER_STADIUM","SOFTWARE_COMPANY","SOUL_FOOD","SOUP_RESTAURANT","SPANISH_RESTAURANT","SPECIALIST","SPECIALTY_CLOTHING_SHOP","SPECIALTY_FOODS","SPECIAL_HOSPITAL","SPORTS_CENTER","SPORTS_EQUIPMENT_AND_CLOTHING","SQUASH_COURT","STADIUM","STATION_ACCESS","STATUE","STEAK_HOUSE","STOCK_EXCHANGE","STREETCAR_STOP","SUBWAY_ENTRANCE","SUBWAY_STATION","SUPERMARKET","SUSHI_RESTAURANT","SWEDISH_RESTAURANT","SWIMMING_POOL","SWISS_RESTAURANT","SYNAGOG","SYRIAN_RESTAURANT","TAILOR_SHOP","TAIWANESE_RESTAURANT","TAKEOUT_FOOD","TAPAS_RESTAURANT","TAXI_LIMOUSINE_AND_SHUTTLE_SERVICE","TAXI_STAND","TAX_SERVICES","TEA_HOUSE","TELECOMMUNICATIONS","TEMPLE","TENNIS_COURT","TEPPANYAKI_RESTAURANT","THAI_RESTAURANT","THEATER","THEMATIC_SPORT_CENTER","TIBETAN_RESTAURANT","TIRE_SERVICE","TOLL_GATE","TOURIST_ATTRACTION","TOURIST_INFORMATION","TOWER","TOYS_GAMES_SHOP","TRAFFIC_CONTROL_DEPARTMENT","TRAIL_SYSTEM","TRANSPORT_ACCESS","TRANSPORT_AUTHORITY_VEHICLE_REGISTRATION","TRANSPORT_COMPANY","TRAVEL_AGENT","TRUCK_DEALER","TRUCK_REPAIR_AND_SERVICE","TRUCK_STOP","TUNISIAN_RESTAURANT","TUNNEL","TURKISH_RESTAURANT","URBAN_STATION","VALLEY","VAN_DEALER","VARIETY_STORE","VEGETARIAN_RESTAURANT","VEHICLE_DEALER","VEHICLE_REPAIR","VENEZUELAN_RESTAURANT","VETERINARY","VIDEO_RENTAL_SHOP","VIETNAMESE_RESTAURANT","VIEWPOINT","VILLA_RENTAL","VOCATIONAL_SCHOOL","WATER_HOLE","WATER_SPORT","WEDDING_SERVICES","WEIGH_STATION","WELFARE_ORGANIZATION","WELL","WESTERN_RESTAURANT","WHOLESALE_CLUB","WILDERNESS_AREA","WILDLIFE_PARK","WINERY","WINE_SPIRITS","WOMEN_S_CLOTHING","YACHT_BASIN","ZOO","ZOOS_ARBORETA_BOTANICAL_GARDEN"],P=["Small_Paddle_Inductive","Large_Paddle_Inductive","IEC_60309_1_Phase","IEC_60309_3_Phase","IEC_62196_Type_1_Outlet","IEC_62196_Type_2_Outlet","IEC_62196_Type_3_Outlet","IEC_62196_Type_1_Connector_Cable_Attached","IEC_62196_Type_2_Connector_Cable_Attached","IEC_62196_Type_3_Connector_Cable_Attached","Combo_to_IEC_62196_Type_1_Base","Combo_to_IEC_62196_Type_2_Base","Type_E_French_Standard_CEE_7_5","Type_F_Schuko_CEE_7_4","Type_G_British_Standard_BS_1363","Type_J_Swiss_Standard_SEV_1011","China_GB_Part_2","China_GB_Part_3","IEC_309_DC_Plug","AVCON_Connector","Tesla_Connector","NEMA_5_20","CHAdeMO","SAE_J1772","TEPCO","Better_Place_Socket","Marechal_Socket","Standard_Household_Country_Specific"],M=["No_Payment","Subscription","Direct"],o=["tollRoads","motorways","ferries","unpavedRoads","carpools","alreadyUsedRoads","borderCrossings","tunnels","carTrains","lowEmissionZones"],H=["carpool","carTrain","country","ferry","importantRoadStretch","lowEmissionZone","motorway","pedestrian","roadShields","speedLimit","toll","tollRoad","tollVignette","traffic","tunnel","unpaved","urban","vehicleRestricted"],i=[...H,"lanes"],D=[...i,"leg"],a=["speed","freeFlowSpeed","congestionLevel","travelTime","networkLength"],s=["accident","broken-down-vehicle","danger","flooding","fog","frost","jam","lane-closed","other","rain","road-closed","roadworks","wind"],G=[...s,"animals-on-road","narrow-lanes"],B=["Unified","AR","IN","PK","IL","MA","RU","TR","CN","TW","RS"],d=A=>!!A&&(A.length>=4&&A[3]!==A[1]&&A[2]!==A[0]),c=A=>d(A)?A:void 0,Y=(A,E)=>{if(A&&!(A.length<2))return E?[E[0]>A[0]?A[0]:E[0],E[1]>A[1]?A[1]:E[1],E[2]<A[0]?A[0]:E[2],E[3]<A[1]?A[1]:E[3]]:[A[0],A[1],A[0],A[1]]},l=(A,E)=>E&&A?[E[0]>A[0]?A[0]:E[0],E[1]>A[1]?A[1]:E[1],E[2]<A[2]?A[2]:E[2],E[3]<A[3]?A[3]:E[3]]:A||E,F=A=>A?.length?A.reduce((A,E)=>l(E,A)):void 0,u=A=>{const E=A?.length;if(!E)return;let R;const T=Math.ceil(E/1e3);for(let _=0;_<E;_+=T)R=Y(A[_],R);return 1===T?R:Y(A[E-1],R)},V=A=>{if(A){if(Array.isArray(A))return"number"==typeof A[0]?A.length>=4?A:void 0:F(A.map(A=>V(A)));if(A.bbox)return A.bbox;switch(A.type){case"Feature":return V(A.geometry);case"FeatureCollection":return F(A.features.map(V));case"GeometryCollection":return F(A.geometries.map(V));case"Point":return Y(A.coordinates);case"LineString":case"MultiPoint":return u(A.coordinates);case"MultiLineString":case"Polygon":return F(A.coordinates.map(u));case"MultiPolygon":return F(A.coordinates.flatMap(A=>A.map(u)));default:return}}},p=(A,E)=>l(V(A),E),m=A=>[(A[0]+A[2])/2,(A[1]+A[3])/2],K=A=>{const[E,R,T,_]=A;return{type:"Feature",geometry:{type:"Polygon",coordinates:[[[E,R],[T,R],[T,_],[E,_],[E,R]]]},properties:{}}},h=()=>Date.now().toString(36)+Math.random().toString(36).substring(2),g="MapsSDKJS",f=A=>({"tomtom-user-agent":A["tomtom-user-agent"]??"MapsSDKJS/0.58.0"}),y=(A,E)=>{if(A){if(Array.isArray(A))return A;if(A.coordinates)return A.coordinates;if(A.geometry)return"main-when-available"===E?.useEntryPoint?(R=A,R?.properties?.entryPoints?.find(A=>"main"===A.type))?.position??A.geometry.coordinates:A.geometry.coordinates}var R;return null},W=(A,E)=>{const R=y(A,E);if(!R)throw new Error(`The received object does not have lng-lat coordinates: ${JSON.stringify(A)}`);return R},v=A=>({type:"Point",coordinates:A}),$=A=>({type:"Feature",geometry:v(A),properties:{}}),b={TRAFFIC_CONTROL_DEPARTMENT:[7301,7301002],TRAIL_SYSTEM:[7302],MOUNTAIN_BIKE_TRAIL:[7302002],ADVENTURE_VEHICLE_TRAIL:[7302003],HIKING_TRAIL:[7302004],HORSE_RIDING_TRAIL:[7302005],ROCK_CLIMBING_TRAIL:[7302006],RESIDENTIAL_ACCOMMODATION:[7303],RETIREMENT_COMMUNITY:[7303002],FLATS_OR_APARTMENT_COMPLEX:[7303003],HOLIDAY_RENTAL:[7304],COTTAGE_RENTAL:[7304002],VILLA_RENTAL:[7304003],BUNGALOW_RENTAL:[7304004],CHALET_RENTAL:[7304005],APARTMENT_RENTAL:[7304006],ADVENTURE_SPORTS_FACILITY:[7305],HELIPORT_OR_HELIPAD:[7308],CHARGING_LOCATION:[7309],VEHICLE_REPAIR:[7310],BODYSHOP:[7310002],CAR_GLASS_REPLACEMENT_SHOP:[7310003],CAR_REPAIR_AND_SERVICE:[7310004],TIRE_SERVICE:[7310007],MOTORCYCLE_REPAIR:[7310008],TRUCK_REPAIR_AND_SERVICE:[7310009],FUEL_STATION:[7311],CAR_RENTAL:[7312],PARKING_GARAGE:[7313],HOTEL_OR_MOTEL:[7314],BANDB_OR_GUEST_HOUSE:[7314002],HOTEL:[7314003],HOSTEL:[7314004],RESORT:[7314005],MOTEL:[7314006],CABINS_LODGES:[7314007],REST_CAMP:[7314008],RESTAURANT:[7315],AFRICAN_RESTAURANT:[7315002],AMERICAN_RESTAURANT:[7315003],AUSTRIAN_RESTAURANT:[7315004],BARBECUE_RESTAURANT:[7315005],BELGIAN_RESTAURANT:[7315006],BISTRO:[7315007],BRITISH_RESTAURANT:[7315008],CALIFORNIAN_RESTAURANT:[7315009],CANADIAN_RESTAURANT:[7315010],CARIBBEAN_RESTAURANT:[7315011],CHINESE_RESTAURANT:[7315012],CREPERIE:[7315013],DUTCH_RESTAURANT:[7315014],FAST_FOOD:[7315015],PHILIPPINE_RESTAURANT:[7315016],FRENCH_RESTAURANT:[7315017],GERMAN_RESTAURANT:[7315018],GREEK_RESTAURANT:[7315019],GRILL_RESTAURANT:[7315020],HAWAIIAN_RESTAURANT:[7315021],HUNGARIAN_RESTAURANT:[7315022],INDIAN_RESTAURANT:[7315023],INDONESIAN_RESTAURANT:[7315024],ITALIAN_RESTAURANT:[7315025],JAPANESE_RESTAURANT:[7315026],JEWISH_RESTAURANT:[7315027],KOREAN_RESTAURANT:[7315028],LATIN_AMERICAN_RESTAURANT:[7315029],LEBANESE_RESTAURANT:[7315030],MEDITERRANEAN_RESTAURANT:[7315032],MEXICAN_RESTAURANT:[7315033],MIDDLE_EASTERN_RESTAURANT:[7315034],ORIENTAL_RESTAURANT:[7315035],PIZZERIA:[7315036],POLISH_RESTAURANT:[7315037],PORTUGUESE_RESTAURANT:[7315038],RUSSIAN_RESTAURANT:[7315040],SANDWICH_RESTAURANT:[7315042],SEAFOOD:[7315043],SPANISH_RESTAURANT:[7315044],STEAK_HOUSE:[7315045],SWISS_RESTAURANT:[7315047],THAI_RESTAURANT:[7315048],TURKISH_RESTAURANT:[7315049],VEGETARIAN_RESTAURANT:[7315050],VIETNAMESE_RESTAURANT:[7315051],HUNAN_RESTAURANT:[7315052],SHANDONG_RESTAURANT:[7315053],SICHUAN_RESTAURANT:[7315056],DONGBEI_RESTAURANT:[7315057],HOT_POT_RESTAURANT:[7315058],TAIWANESE_RESTAURANT:[7315059],WESTERN_RESTAURANT:[7315060],PERUVIAN_RESTAURANT:[7315061],ASIAN_RESTAURANT:[7315062],CREOLE_RESTAURANT:[7315063],SOUL_FOOD:[7315064],IRISH_RESTAURANT:[7315065],JAMAICAN_RESTAURANT:[7315066],KOSHER_RESTAURANT:[7315067],CZECH_RESTAURANT:[7315068],HAMBURGER_RESTAURANT:[7315069],CHICKEN_RESTAURANT:[7315070],FUSION_RESTAURANT:[7315071],BRAZILIAN_RESTAURANT:[7315072],INTERNATIONAL_RESTAURANT:[7315073],MOROCCAN_RESTAURANT:[7315074],ORGANIC_FOOD_RESTAURANT:[7315075],TAPAS_RESTAURANT:[7315076],ICE_CREAM_PARLOR:[7315078],DOUGHNUT_RESTAURANT:[7315079],AFGHAN_RESTAURANT:[7315081],ARABIAN_RESTAURANT:[7315083],ARMENIAN_RESTAURANT:[7315085],AUSTRALIAN_RESTAURANT:[7315086],BASQUE_RESTAURANT:[7315087],BOLIVIAN_RESTAURANT:[7315088],BULGARIAN_RESTAURANT:[7315090],BURMESE_RESTAURANT:[7315091],CAMBODIAN_RESTAURANT:[7315092],CHILEAN_RESTAURANT:[7315093],COLOMBIAN_RESTAURANT:[7315094],CORSICAN_RESTAURANT:[7315095],CUBAN_RESTAURANT:[7315096],DANISH_RESTAURANT:[7315098],EGYPTIAN_RESTAURANT:[7315100],ENGLISH_RESTAURANT:[7315101],ETHIOPIAN_RESTAURANT:[7315102],FINNISH_RESTAURANT:[7315104],IRANIAN_RESTAURANT:[7315105],ISRAELI_RESTAURANT:[7315106],MONGOLIAN_RESTAURANT:[7315110],NEPALESE_RESTAURANT:[7315111],NORWEGIAN_RESTAURANT:[7315112],SCANDINAVIAN_RESTAURANT:[7315114],SWEDISH_RESTAURANT:[7315119],SYRIAN_RESTAURANT:[7315120],TEPPANYAKI_RESTAURANT:[7315121],TIBETAN_RESTAURANT:[7315122],TUNISIAN_RESTAURANT:[7315123],VENEZUELAN_RESTAURANT:[7315125],PAKISTANI_RESTAURANT:[7315127],FONDUE_RESTAURANT:[7315134],SNACKS_RESTAURANT:[7315139],SOUP_RESTAURANT:[7315140],BUFFET_RESTAURANT:[7315142],SALAD_BAR:[7315143],TAKEOUT_FOOD:[7315145],BANQUET_ROOMS:[7315146],CAFETERIA:[7315147],SUSHI_RESTAURANT:[7315148],JUICE_BAR:[7315149],TOURIST_INFORMATION:[7316],MUSEUM:[7317],THEATER:[7318,7318005],CONCERT_HALL:[7318002],MUSIC_CENTER:[7318003],OPERA_HOUSE:[7318004],CABARET_THEATER:[7318006],AMPHITHEATER:[7318007],DINNER_THEATER:[7318008],CULTURAL_CENTER:[7319],SPORTS_CENTER:[7320,7320004],FITNESS_CLUB_AND_CENTER:[7320002],HORSE_RIDING:[7320003],THEMATIC_SPORT_CENTER:[7320005],SQUASH_COURT:[7320006],HOSPITAL:[7321],GENERAL_HOSPITAL_AND_POLYCLINIC:[7321002],SPECIAL_HOSPITAL:[7321003],HOSPITAL_OF_CHINESE_MEDICINE:[7321004],HOSPITAL_FOR_WOMEN_AND_CHILDREN:[7321005],POLICE_STATION:[7322],POST_OFFICE:[7324],PHARMACY:[7326],DEPARTMENT_STORE:[7327],BANK:[7328],MARKETPLACE:[7332],INFORMAL_MARKET:[7332002],PUBLIC_MARKET:[7332003],FARMERS_MARKET:[7332004],SUPERMARKET:[7332005],AGRICULTURE:[7335],HORTICULTURE:[7335002],PRIMARY_PRODUCER:[7335003],FARM:[7335004],VIEWPOINT:[7337],SWIMMING_POOL:[7338],RELIGIOUS_SITE:[7339],CHURCH:[7339002],MOSQUE:[7339003],SYNAGOG:[7339004],TEMPLE:[7339005],GURUDWARA:[7339006],PAGODA:[7339008],CASINO_AND_GAMBLING:[7341],CINEMA:[7342],MOVIE_THEATER:[7342002],DRIVE_IN_MOVIES:[7342003],MARINA:[7347,7347002],YACHT_BASIN:[7347003],WINERY:[7349],FERRY_TERMINAL:[7352],TRUCK_STOP:[7358],WEIGH_STATION:[7359,7359002],CAMPING_GROUND:[7360],RECREATIONAL_CAMPING_GROUND:[7360002],CARAVAN_SITE:[7360003],COMMUNITY_CENTER:[7363],EMBASSY:[7365],BORDER_CONTROL:[7366],GOVERNMENT_OFFICE:[7367],MOTORING_ORGANIZATION_OFFICE:[7368],OPEN_CAR_PARKING_AREA:[7369,7369002],SCHOOL:[7372,7372002],CHILDCARE:[7372003],PRE_SCHOOL:[7372004],PRIMARY_SCHOOL:[7372005],HIGH_SCHOOL:[7372006],SENIOR_HIGH_SCHOOL:[7372007],VOCATIONAL_SCHOOL:[7372008],LANGUAGE_SCHOOL:[7372010],ART_SCHOOL:[7372012],MIDDLE_SCHOOL:[7372014],DRIVING_SCHOOL:[7372016],MALL:[7373],STADIUM:[7374],ATHLETICS_TRACK:[7374002],CRICKET_GROUND:[7374003],SOCCER_STADIUM:[7374004],HORSE_RACING_TRACK:[7374005],MULTI_PURPOSE_STADIUM:[7374006],RUGBY_GROUND:[7374007],ICE_HOCKEY_ARENA:[7374008],BASEBALL_PARK:[7374009],FOOTBALL_STADIUM:[7374010],MOTOR_RACING_STADIUM:[7374011],BASKETBALL_ARENA:[7374012],RACE_TRACK:[7374013],NETBALL_STADIUM:[7374014],TOLL_GATE:[7375],TOURIST_ATTRACTION:[7376],BUILDING:[7376002],MONUMENT:[7376003],NATURAL_TOURIST_ATTRACTION:[7376004],OBSERVATORY:[7376005],PLANETARIUM:[7376006],DAM:[7376007],TUNNEL:[7376008],TOWER:[7376009],BRIDGE:[7376010],MAUSOLEUM_OR_GRAVE:[7376011],ARCH:[7376012],STATUE:[7376013],WATER_HOLE:[7376014],COLLEGE_OR_UNIVERSITY:[7377,7377002],JUNIOR_COLLEGE_OR_COMMUNITY_COLLEGE:[7377003],BUSINESS_PARK:[7378],RAILWAY_STATION:[7380],INTERNATIONAL_RAILROAD_STATION:[7380002],NATIONAL_RAILROAD_STATION:[7380003],URBAN_STATION:[7380004],SUBWAY_STATION:[7380005],AIRPORT:[7383],PUBLIC_AIRPORT:[7383002],PRIVATE_AIRPORT:[7383003],MILITARY_AIRPORT:[7383004],AIRFIELD:[7383005],COURIER_DROP_BOX:[7388],TRANSPORT_ACCESS:[7389],AIRLINE_ACCESS:[7389002],STATION_ACCESS:[7389003],SECURED_ENTRANCE:[7389004],SUBWAY_ENTRANCE:[7389999],EMERGENCY_MEDICAL_SERVICE:[7391],FIRE_STATION:[7392],REST_AREA:[7395],ATM:[7397],NATURAL_FEATURE:[8099],MOUNTAIN_PEAK:[8099002],CAVE:[8099003],RIDGE:[8099004],DUNE:[8099005],VALLEY:[8099006],PLAIN_OR_FLAT:[8099007],PLATEAU:[8099008],PAN:[8099009],WELL:[8099010],OASIS:[8099011],ROCKS:[8099012],RESERVOIR:[8099013],REEF:[8099014],RAPIDS:[8099015],BAY:[8099016],COVE:[8099017],HARBOR:[8099018],CAPE:[8099020],MINERAL_OR_HOT_SPRINGS:[8099021],ISLAND:[8099022],MARSH:[8099023],RIVER_CROSSING:[8099024],HILL:[8099025],QUARRY:[8099026],LOCALE:[8099027],PRIMARY_RESOURCE_UTILITY:[9150],TRANSPORT_AUTHORITY_VEHICLE_REGISTRATION:[9151],NON_GOVERNMENTAL_ORGANIZATION:[9152],WELFARE_ORGANIZATION:[9153],PRISON:[9154],CAR_WASH:[9155,9155002],MANUFACTURING_FACILITY:[9156],RESEARCH_FACILITY:[9157],MEDIA_FACILITY:[9158],PORT_WAREHOUSE_FACILITY:[9159],EXCHANGE:[9160],STOCK_EXCHANGE:[9160002],GOLD_EXCHANGE:[9160003],FOREIGN_EXCHANGE:[9160004],COMPANY:[9352],SERVICE_COMPANY:[9352002],ADVERTISING_COMPANY:[9352003],COMPUTER_AND_DATA_SERVICES:[9352004],SOFTWARE_COMPANY:[9352005],DIVERSIFIED_FINANCIALS:[9352006],INSURANCE_COMPANY:[9352007],DELIVERY_SERVICE:[9352008],REAL_ESTATE_COMPANY:[9352009],MANUFACTURING_COMPANY:[9352011],AGRICULTURAL_TECHNOLOGY:[9352012],AUTOMOBILE_COMPANY:[9352013],CHEMICAL_COMPANY:[9352014],ELECTRONICS_COMPANY:[9352015],MECHANICAL_ENGINEERING:[9352016],PHARMACEUTICAL_COMPANY:[9352018],PUBLISHING_TECHNOLOGIES:[9352019],TELECOMMUNICATIONS:[9352020],TAX_SERVICES:[9352022],LEGAL_SERVICES:[9352023],TRANSPORT_COMPANY:[9352024],BUS_CHARTER_COMPANY:[9352025],TAXI_LIMOUSINE_AND_SHUTTLE_SERVICE:[9352026],BUS_LINES:[9352027],SCHOOL_BUS_COMPANY:[9352028],CLEANING_SERVICES:[9352029],OIL_AND_NATURAL_GAS:[9352030],MINING_COMPANY:[9352031],CONSTRUCTION_COMPANY:[9352032],MOVING_AND_STORAGE_COMPANY:[9352033],AIRLINE_COMPANY:[9352034],FUNERAL_SERVICE_AND_MORTUARIES:[9352036],INVESTMENT_ADVISOR:[9352037],EQUIPMENT_RENTAL:[9352038],BUSINESS_SERVICES:[9352039],CABLE_AND_TELEPHONE_COMPANY:[9352040],AUTOMOBILE_MANUFACTURING:[9352041],IMPORT_OR_EXPORT_AND_DISTRIBUTION:[9352042],CATERING_SERVICES:[9352043],HOME_APPLIANCE_REPAIR:[9352044],ANIMAL_SHELTER:[9352045],WEDDING_SERVICES:[9352046],BEACH:[9357],RESTAURANT_AREA:[9359],ICE_RINK:[9360],SHOP_OR_STORE:[9361],BOOK_SHOP:[9361002],C_DS_DVD_VIDEOS:[9361003],CHILDREN_S_CLOTHES:[9361004],FOOTWEAR_SHOE_REPAIRS:[9361005],CLOTHING_SHOP:[9361006],MEN_S_CLOTHING:[9361007],WOMEN_S_CLOTHING:[9361008],CONVENIENCE_STORE:[9361009],DRY_CLEANER:[9361010],CAMERAS_AND_PHOTOGRAPHY:[9361011],COMPUTER_AND_COMPUTER_SUPPLIES:[9361012],CONSUMER_ELECTRONICS:[9361013],OFFICE_EQUIPMENT:[9361014],REAL_ESTATE_AGENT:[9361015],FACTORY_OUTLET:[9361016],FLORISTS:[9361017],BAKERY:[9361018],BUTCHER:[9361019],FISHMONGER:[9361020],FOOD_MARKET:[9361021],GREENGROCER:[9361022],GROCERY_STORE:[9361023],FOOD_AND_DRINKS_SHOP:[9361024],WINE_SPIRITS:[9361025],GIFTS_CARDS_NOVELTIES_SOUVENIRS:[9361026],HAIRDRESSER:[9361027],CARPET_FLOOR_COVERINGS:[9361028],CURTAINS_TEXTILES:[9361029],DO_IT_YOURSELF_CENTERS:[9361030],HOUSE_AND_GARDEN_FURNITURE_AND_FITTINGS:[9361031],GARDEN_CENTERS_SERVICES:[9361032],KITCHENS_BATHROOMS:[9361033],LIGHTING_SHOPS:[9361034],PAINTING_DECORATING:[9361035],JEWELRY_CLOCKS_WATCHES:[9361036],NEWSAGENTS_TOBACCONISTS:[9361037],OPTICIAN:[9361038],SPORTS_EQUIPMENT_AND_CLOTHING:[9361039],TOYS_GAMES_SHOP:[9361040],TRAVEL_AGENT:[9361041],CONSTRUCTION_MATERIAL_AND_EQUIPMENT:[9361042],MEDICAL_SUPPLIES_EQUIPMENT:[9361043],VIDEO_RENTAL_SHOP:[9361044],LAUNDRY:[9361045],PHOTO_LAB_OR_DEVELOPMENT:[9361046],PHOTOCOPY_SHOP:[9361047],ANIMAL_SERVICE:[9361048],ANTIQUE_ART_SHOP:[9361049],BEAUTY_SUPPLIES:[9361050],DRUG_STORE:[9361051],ELECTRICAL_APPLIANCES_SHOP:[9361052],HOBBY_SHOP:[9361053],FURNITURE_HOME_FURNISHINGS:[9361054],GLASSWARE_CERAMIC_SHOP:[9361055],LOCAL_SPECIALITIES_SHOP:[9361056],RECYCLING_SHOP:[9361057],BAGS_LEATHERWEAR:[9361058],MUSIC_INSTRUMENTS_STORE:[9361059],DELICATESSEN:[9361060],SPECIALTY_FOODS:[9361061],SHOPPING_SERVICE:[9361062],RETAIL_OUTLET:[9361063],PET_SUPPLIES:[9361064],WHOLESALE_CLUB:[9361066],BEAUTY_SALON:[9361067],NAIL_SALON:[9361068],HARDWARE_STORE:[9361069],PAWN_SHOP:[9361070],LOTTERY_SHOP:[9361071],BETTING_STATION:[9361072],AGRICULTURAL_SUPPLIES:[9361073],MOBILE_PHONE_SHOP:[9361075],DRIVE_THROUGH_BOTTLE_SHOP:[9361076],TAILOR_SHOP:[9361077],SECURITY_PRODUCTS:[9361078],SPECIALTY_CLOTHING_SHOP:[9361079],GLASS_WINDOWS_STORE:[9361080],VARIETY_STORE:[9361081],CHRISTMAS_OR_HOLIDAY_SHOP:[9361082],BOATING_EQUIPMENT_AND_ACCESSORIES:[9361083],PARK_AND_RECREATION_AREA:[9362],BATTLEFIELD:[9362002],CEMETERY:[9362003],HISTORIC_SITE:[9362004],HISTORICAL_PARK:[9362005],MEMORIAL:[9362007],PARK:[9362008],PARKWAY:[9362009],RECREATION_AREA:[9362011],WILDERNESS_AREA:[9362014],FOREST_AREA:[9362015],FISHING_AND_HUNTING_AREA:[9362016],FAIRGROUND:[9362017],SKI_RESORT:[9362026],BOAT_LAUNCHING_RAMP:[9362032],PICNIC_AREA:[9362033],PROTECTED_LAND:[9362037],COURTHOUSE:[9363],CANNABIS_SHOP:[9364],MEDICINAL_MARIJUANA_DISPENSARY:[9364002],RECREATIONAL_MARIJUANA_DISPENSARY:[9364003],MEDICINAL_AND_RECREATIONAL_DISPENSARY:[9364004],TENNIS_COURT:[9369],WATER_SPORT:[9371],DOCTOR:[9373],GENERAL_PRACTITIONER:[9373002],SPECIALIST:[9373003],DENTIST:[9374],VETERINARY:[9375],CAFE_PUB:[9376],CAFE:[9376002],PUB:[9376003],INTERNET_CAFE:[9376004],TEA_HOUSE:[9376005],COFFEE_SHOP:[9376006],MICROBREWERY:[9376007],EXHIBITION_CONVENTION_CENTER:[9377],LEISURE_CENTER:[9378],BOWLING_CENTER:[9378002],DANCE_STUDIO_AND_SCHOOL:[9378003],FLYING_CLUB:[9378004],SAUNA_SOLARIUM_MASSAGE:[9378005],NIGHTLIFE:[9379],DISCO_CLUB:[9379002],BAR:[9379004],COCKTAIL_BAR:[9379006],JAZZ_CLUB:[9379008],COMEDY_CLUB:[9379009],KARAOKE_CLUB:[9379010],COMMERCIAL_BUILDING:[9382],INDUSTRIAL_BUILDING:[9383],ABORIGINAL_LAND:[9389],HEALTHCARE_SERVICE:[9663],PERSONAL_SERVICE:[9663002],PERSONAL_CARE_FACILITY:[9663003],BLOOD_BANK:[9663004],AMBULANCE_UNIT:[9663005],ENTERTAINMENT:[9900],AMUSEMENT_PARK:[9902,9902003],AMUSEMENT_PLACE:[9902004],VEHICLE_DEALER:[9910],CAR_DEALER:[9910002],MOTORCYCLE_DEALER:[9910003],BOAT_DEALER:[9910004],RECREATIONAL_VEHICLE_DEALER:[9910005],TRUCK_DEALER:[9910006],VAN_DEALER:[9910007],BUS_DEALER:[9910008],ATV_DEALER:[9910009],GOLF_COURSE:[9911],PUBLIC_LIBRARY:[9913],ZOOS_ARBORETA_BOTANICAL_GARDEN:[9927],ARBORETA_AND_BOTANICAL_GARDENS:[9927002],ZOO:[9927003],AQUATIC_ZOO:[9927004],WILDLIFE_PARK:[9927005],RENTAL_CAR_PARKING:[9930],PUBLIC_AMENITY:[9932],PASSENGER_TRANSPORT_TICKET_OFFICE:[9932002],PEDESTRIAN_SUBWAY:[9932003],PUBLIC_CALL_BOX:[9932004],PUBLIC_BATHROOM:[9932005],RESCUE_SERVICE:[9932006],MOUNTAIN_PASS:[9935],CLUB_AND_ASSOCIATION:[9937],BEACH_CLUB:[9937002],HOCKEY_CLUB:[9937003],PUBLIC_TRANSPORT_STOP:[9942],BUS_STOP:[9942002],TAXI_STAND:[9942003],STREETCAR_STOP:[9942004],EMERGENCY_ROOM:[9956],RESIDENTIAL_ENTRANCE:[9999]},w=Object.fromEntries(Object.entries(b).map(([A,E])=>[A,E[0]])),x=Object.fromEntries(Object.entries(b).flatMap(([A,E])=>E.map(E=>[E,A]))),X=(E,R)=>A(E,W(R)).properties.location,Z=(A,E)=>{for(let R=0;R<A.length-1;R++)if(E>=A[R]&&E<=A[R+1])return R+1;return E<A[0]?0:A.length},Q=(A,E,R)=>J(A,E,[R])[0],J=(A,E,R)=>{if(0===R.length)return[];if(0===A.geometry.coordinates.length||E.length<2)return R.map(()=>0);const T=E.map(E=>X(A,E)??0);return R.map(E=>{const R=X(A,E);return void 0===R?0:Z(T,R)})},k=(A,E,R)=>j(A,E,[R]),j=(A,E,R)=>{if(0===R.length)return E.slice();if(0===A.geometry.coordinates.length||E.length<2)return[...R,...E];const T=E.map(E=>X(A,E)??0),_=Array.from({length:E.length+1},()=>[]);for(let I=0;I<R.length;I++){const E=R[I],N=X(A,E);_[void 0===N?0:Z(T,N)].push({waypoint:E,location:N??0,inputIndex:I})}for(const I of _)I.sort((A,E)=>A.location-E.location||A.inputIndex-E.inputIndex);const N=[];for(let I=0;I<E.length;I++){for(const A of _[I])N.push(A.waypoint);N.push(E[I])}for(const I of _[E.length])N.push(I.waypoint);return N},q=(A,E)=>{const{progress:R}=A.properties;if(!R||0===R.length)return;const T=A.geometry.coordinates.length;if(E<0||E>=T)return;const _=RA(R,"pointIndex",E);if(!_)return;const{lower:N,lowerVal:I,upper:S,upperVal:O}=_,C=N.distanceInMeters,e=S.distanceInMeters,L=N.travelTimeInSeconds,U=S.travelTimeInSeconds;if(void 0===C||void 0===e||void 0===L||void 0===U)return;if(I===O)return{distanceInMeters:C,travelTimeInSeconds:L};const t=(E-I)/(O-I);return{distanceInMeters:C+t*(e-C),travelTimeInSeconds:L+t*(U-L)}},z=(A,E,R)=>{const T=q(A,E),_=q(A,R);if(T&&_)return{start:T,end:_,delta:{distanceInMeters:_.distanceInMeters-T.distanceInMeters,travelTimeInSeconds:_.travelTimeInSeconds-T.travelTimeInSeconds}}},AA=(A,E)=>z(A,E.startPointIndex,E.endPointIndex),EA=(A,E)=>{const R=A.geometry.coordinates;if(!R||0===R.length||E.startPointIndex<0||E.endPointIndex>=R.length||E.startPointIndex>E.endPointIndex)return;const T=R[E.startPointIndex],_=R[E.endPointIndex],N=R[Math.floor((E.startPointIndex+E.endPointIndex)/2)];let I=Y(T);return I=Y(N,I),I=Y(_,I),I},RA=(A,E,R)=>{let T,_,N,I;for(const S of A){const A=S[E];void 0!==A&&(A<=R&&(T=S,_=A),A>=R&&void 0===N&&(N=S,I=A))}return void 0!==T&&void 0!==_&&void 0!==N&&void 0!==I?{lower:T,lowerVal:_,upper:N,upperVal:I}:void 0},TA=(A,E,R)=>{const T=A.geometry.coordinates,_=Math.min(E+1,T.length-1),N=T[E],I=T[_],S=q(A,E),O=q(A,_);if(S&&O)return{position:[N[0]+R*(I[0]-N[0]),N[1]+R*(I[1]-N[1])],travelTimeInSeconds:S.travelTimeInSeconds+R*(O.travelTimeInSeconds-S.travelTimeInSeconds),distanceInMeters:S.distanceInMeters+R*(O.distanceInMeters-S.distanceInMeters)}},_A=(A,E,R)=>{const{progress:T}=A.properties;if(!T||0===T.length)return;const _=A.geometry.coordinates,N=T[0],I=T.at(-1),S=N[E],O=I[E];if(void 0===S||void 0===O)return;if(R<=S)return{position:_[N.pointIndex],travelTimeInSeconds:N.travelTimeInSeconds??0,distanceInMeters:N.distanceInMeters??0};if(R>=O)return{position:_[I.pointIndex],travelTimeInSeconds:I.travelTimeInSeconds??0,distanceInMeters:I.distanceInMeters??0};const C=((A,E,R)=>{const T=RA(A,E,R);if(!T)return;const{lower:_,lowerVal:N,upper:I,upperVal:S}=T,O=N===S?0:(R-N)/(S-N),C=_.pointIndex+O*(I.pointIndex-_.pointIndex),e=Math.floor(C);return{pathIndex:e,progressRatioTowardsNextPathPoint:C-e}})(T,E,R);return void 0!==C?TA(A,C.pathIndex,C.progressRatioTowardsNextPathPoint):void 0},NA=(A,E)=>{if("traveledTimeInSeconds"in E)return _A(A,"travelTimeInSeconds",E.traveledTimeInSeconds);if("traveledDistanceInMeters"in E)return _A(A,"distanceInMeters",E.traveledDistanceInMeters);const R=A.properties.summary.departureTime;if(!R)return;const T=(E.clockTime.getTime()-R.getTime())/1e3;return T<0?void 0:_A(A,"travelTimeInSeconds",T)},IA=(E,R)=>{const{progress:T}=E.properties;if(!T?.length)return;const _=E.geometry.coordinates,N=A(E,W(R)),I=N.properties.index??0,S=Math.min(I+1,_.length-1),O=_[I],C=_[S],e=((A,E,R)=>{const T=R[0]-A[0],_=R[1]-A[1],N=T*T+_*_;if(0===N)return 0;const I=((E[0]-A[0])*T+(E[1]-A[1])*_)/N;return Math.max(0,Math.min(1,I))})(O,N.geometry.coordinates,C);return TA(E,I,e)},SA=A=>Array.isArray(A)?Array.isArray(A[0])?"path":"waypoint":"Feature"===A.type&&"LineString"===A.geometry.type?"path":"waypoint",OA=["unknown","minor","moderate","major","indefinite"],CA={1:"accident",2:"fog",3:"danger",4:"rain",5:"frost",6:"jam",7:"lane-closed",8:"road-closed",9:"roadworks",10:"wind",11:"flooding",12:"animals-on-road",13:"narrow-lanes",14:"broken-down-vehicle"},eA=Object.fromEntries(Object.entries(CA).map(([A,E])=>[E,Number(A)])),LA=A=>CA[A]??"other",UA=A=>eA[A]??0,tA=A=>A?.minutes??"min",nA=(A,E)=>{if(A){const T=Math.abs(A)/3600;let N=Math.floor(T),I=Math.round(T%1*60);60===I&&(I=0,N++);const S={..._.instance.get().displayUnits?.time,...E};if(N)return`${N} ${R=S,R?.hours??"hr"} ${I.toString().padStart(2,"0")} ${tA(S)}`;if(I)return`${I.toString()} ${tA(S)}`}var R},rA=1609.344,PA=A=>A?.meters??"m",MA=A=>A?.kilometers??"km",oA=(A,E,R)=>E<3?((A,E,R)=>{const T=Number.parseInt(E.toString()),_=E-T,N=A<0?"-":"";if(_<.125)return`${N}${T} ${R}`;const I=T>0?T:"";return _<.375?`${N}${I}¼ ${R}`:_<.625?`${N}${I}½ ${R}`:_<.875?`${N}${I}¾ ${R}`:`${N}${T+1} ${R}`})(A,E,R):E<10?((A,E,R)=>{const T=Number.parseInt(E.toString()),_=E-T,N=A<0?"-":"";return _<.25?`${N}${T} ${R}`:_<.75?`${N}${T}½ ${R}`:`${N}${T+1} ${R}`})(A,E,R):`${Math.round(A)} ${R}`,HA=A=>A.miles??"mi",iA=(A,E)=>{const R=A/rA,T=Math.abs(R);return T<.125?((A,E)=>{const R=Math.round(A/.3048),T=Math.abs(R);return T<30?`${R} ${E}`:T<500?`${10*Math.round(R/10)} ${E}`:`${100*Math.round(R/100)} ${E}`})(A,E.feet??"ft"):oA(R,T,HA(E))},DA=(A,E)=>{const R=A/rA,T=Math.abs(R);return T<.125?((A,E)=>{const R=Math.round(A/.9144);return Math.abs(R)<10?`${Math.round(R)} ${E}`:`${10*Math.round(R/10)} ${E}`})(A,E.yards??"yd"):oA(R,T,HA(E))},aA=(A,R)=>{if(E(A))return"";const T={..._.instance.get().displayUnits?.distance,...R};switch(T?.type??"metric"){case"metric":return((A,E)=>{const R=Math.abs(A);if(R<10)return`${A} ${PA(E)}`;if(R<500)return`${10*Math.round(A/10)} ${PA(E)}`;if(R<1e3){const R=100*Math.round(A/100);return 1e3===R||-1e3===R?`${A<0?"-":""}1 ${MA(E)}`:`${R} ${PA(E)}`}return R<1e4?`${100*Math.round(A/100)/1e3} ${MA(E)}`:`${Math.round(A/1e3)} ${MA(E)}`})(A,T);case"imperial_us":return iA(A,T);case"imperial_uk":return DA(A,T)}};export{R as DEFAULT_COMMON_BASE_URL,rA as MILE_IN_METERS,g as TOMTOM_USER_AGENT_SDK_NAME,_ as TomTomConfig,a as areaAnalyticsMetricKeys,o as avoidableTypes,m as bboxCenter,l as bboxExpandedWithBBox,p as bboxExpandedWithGeoJSON,Y as bboxExpandedWithPosition,F as bboxFromBBoxes,u as bboxFromCoordsArray,V as bboxFromGeoJSON,c as bboxOnlyIfWithArea,q as calculateProgressAtRoutePoint,C as chargingPointCapabilities,e as chargingPointRestrictions,O as chargingPointStatus,S as chargingStationAccessTypes,L as connectorTypes,U as currentTypes,T as defaultConfig,Q as findBestWaypointInsertionIndex,J as findBestWaypointInsertionIndices,aA as formatDistance,nA as formatDuration,G as fullTrafficIncidentCategories,h as generateId,f as generateTomTomHeaders,t as geographyTypes,NA as getCoordinateAtRouteProgress,y as getPosition,W as getPositionStrict,IA as getProgressAtNearestRoutePoint,SA as getRoutePlanningLocationType,z as getRouteProgressBetween,AA as getRouteProgressForSection,EA as getSectionBBox,LA as iconToTrafficIncidentCategory,OA as indexedMagnitudes,H as inputSectionTypes,i as inputSectionTypesWithGuidance,d as isBBoxWithArea,I as isProxyCredentialsMode,N as mergeFromGlobal,M as paymentMethods,n as placeTypes,P as plugTypes,r as poiCategories,w as poiCategoriesToID,b as poiCategoriesToIDs,x as poiIDsToCategories,K as polygonFromBBox,D as sectionTypes,$ as toPointFeature,v as toPointGeometry,s as trafficIncidentRequestCategories,UA as trafficIncidentToIconCategory,B as views,k as withInsertedWaypoint,j as withInsertedWaypoints};
2
2
  //# sourceMappingURL=core.es.js.map