@maptiler/geocoding-control 2.1.7 → 3.0.0-rc.2

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.
Files changed (338) hide show
  1. package/CODE_OF_CONDUCT.md +46 -0
  2. package/CONTRIBUTING.md +72 -0
  3. package/README.md +115 -43
  4. package/SECURITY.md +16 -0
  5. package/dist/index.js +860 -0
  6. package/dist/index.js.map +1 -0
  7. package/dist/index.umd.js +263 -0
  8. package/dist/index.umd.js.map +1 -0
  9. package/dist/leaflet.public.js +1251 -0
  10. package/dist/leaflet.public.js.map +1 -0
  11. package/dist/leaflet.public.umd.js +276 -0
  12. package/dist/leaflet.public.umd.js.map +1 -0
  13. package/dist/maplibregl.js +1275 -0
  14. package/dist/maplibregl.js.map +1 -0
  15. package/dist/maplibregl.umd.js +276 -0
  16. package/dist/maplibregl.umd.js.map +1 -0
  17. package/dist/maptilersdk.js +1283 -0
  18. package/dist/maptilersdk.js.map +1 -0
  19. package/dist/maptilersdk.umd.js +276 -0
  20. package/dist/maptilersdk.umd.js.map +1 -0
  21. package/dist/src/components/clear-icon.d.ts +10 -0
  22. package/dist/src/components/fail-icon.d.ts +10 -0
  23. package/dist/src/components/loading-icon.d.ts +10 -0
  24. package/dist/src/components/marker.d.ts +10 -0
  25. package/dist/src/components/reverse-geocoding-icon.d.ts +10 -0
  26. package/dist/src/components/search-icon.d.ts +10 -0
  27. package/dist/src/controls/base-control.d.ts +44 -0
  28. package/dist/src/controls/leaflet-control.d.ts +27 -0
  29. package/dist/src/controls/leaflet-events.d.ts +42 -0
  30. package/dist/src/controls/leaflet-options.d.ts +84 -0
  31. package/dist/src/controls/maplibregl-control.d.ts +34 -0
  32. package/dist/src/controls/maplibregl-events.d.ts +44 -0
  33. package/dist/src/controls/maplibregl-options.d.ts +104 -0
  34. package/dist/src/controls/maptilersdk-control.d.ts +7 -0
  35. package/dist/src/controls/maptilersdk-events.d.ts +2 -0
  36. package/dist/src/controls/maptilersdk-options.d.ts +10 -0
  37. package/dist/src/controls/openlayers-control.d.ts +35 -0
  38. package/dist/src/controls/openlayers-events.d.ts +43 -0
  39. package/dist/src/controls/openlayers-options.d.ts +83 -0
  40. package/dist/src/geocoder/geocoder-events.d.ts +46 -0
  41. package/dist/src/geocoder/geocoder-feature-item.d.ts +22 -0
  42. package/{svelte/types.d.ts → dist/src/geocoder/geocoder-options.d.ts} +23 -143
  43. package/dist/src/geocoder/geocoder.d.ts +113 -0
  44. package/dist/src/index.d.ts +9 -0
  45. package/dist/src/leaflet.public.d.ts +7 -0
  46. package/dist/src/maplibregl.d.ts +7 -0
  47. package/dist/src/maptilersdk.d.ts +7 -0
  48. package/dist/src/openlayers.public.d.ts +7 -0
  49. package/dist/src/types.d.ts +46 -0
  50. package/dist/src/utils/geo-utils.d.ts +6 -0
  51. package/dist/src/utils/mask.d.ts +2 -0
  52. package/dist/src/utils/proximity.d.ts +2 -0
  53. package/package.json +84 -112
  54. package/MapLibreBasedGeocodingControl.d.ts +0 -3072
  55. package/geo-coordinates-parser.t.d.ts +0 -8
  56. package/geoUtils.d.ts +0 -3
  57. package/leaflet-controller.d.ts +0 -12
  58. package/leaflet-controller.js +0 -2475
  59. package/leaflet-controller.js.map +0 -1
  60. package/leaflet-controller.umd.js +0 -2
  61. package/leaflet-controller.umd.js.map +0 -1
  62. package/leaflet.d.ts +0 -131
  63. package/leaflet.js +0 -5082
  64. package/leaflet.js.map +0 -1
  65. package/leaflet.umd.js +0 -14
  66. package/leaflet.umd.js.map +0 -1
  67. package/maplibregl-controller.d.ts +0 -19
  68. package/maplibregl-controller.js +0 -2418
  69. package/maplibregl-controller.js.map +0 -1
  70. package/maplibregl-controller.umd.js +0 -2
  71. package/maplibregl-controller.umd.js.map +0 -1
  72. package/maplibregl.d.ts +0 -2509
  73. package/maplibregl.js +0 -5142
  74. package/maplibregl.js.map +0 -1
  75. package/maplibregl.umd.js +0 -14
  76. package/maplibregl.umd.js.map +0 -1
  77. package/maptilersdk.d.ts +0 -2504
  78. package/maptilersdk.js +0 -5152
  79. package/maptilersdk.js.map +0 -1
  80. package/maptilersdk.umd.js +0 -14
  81. package/maptilersdk.umd.js.map +0 -1
  82. package/mask.d.ts +0 -2
  83. package/openlayers-controller.d.ts +0 -15
  84. package/openlayers-controller.js +0 -2174
  85. package/openlayers-controller.js.map +0 -1
  86. package/openlayers-controller.umd.js +0 -2
  87. package/openlayers-controller.umd.js.map +0 -1
  88. package/openlayers.d.ts +0 -109
  89. package/openlayers.js +0 -5045
  90. package/openlayers.js.map +0 -1
  91. package/openlayers.umd.js +0 -14
  92. package/openlayers.umd.js.map +0 -1
  93. package/proximity.d.ts +0 -2
  94. package/react.d.ts +0 -45
  95. package/react.js +0 -2795
  96. package/react.js.map +0 -1
  97. package/react.umd.js +0 -14
  98. package/react.umd.js.map +0 -1
  99. package/style.css +0 -1
  100. package/svelte/ClearIcon.svelte +0 -12
  101. package/svelte/ClearIcon.svelte.d.ts +0 -25
  102. package/svelte/FailIcon.svelte +0 -12
  103. package/svelte/FailIcon.svelte.d.ts +0 -25
  104. package/svelte/FeatureItem.svelte +0 -246
  105. package/svelte/FeatureItem.svelte.d.ts +0 -26
  106. package/svelte/GeocodingControl.svelte +0 -921
  107. package/svelte/GeocodingControl.svelte.d.ts +0 -105
  108. package/svelte/LoadingIcon.svelte +0 -40
  109. package/svelte/LoadingIcon.svelte.d.ts +0 -25
  110. package/svelte/MapLibreBasedGeocodingControl.d.ts +0 -3072
  111. package/svelte/MapLibreBasedGeocodingControl.js +0 -210
  112. package/svelte/MarkerIcon.svelte +0 -71
  113. package/svelte/MarkerIcon.svelte.d.ts +0 -18
  114. package/svelte/ReverseGeocodingIcon.svelte +0 -12
  115. package/svelte/ReverseGeocodingIcon.svelte.d.ts +0 -25
  116. package/svelte/SearchIcon.svelte +0 -26
  117. package/svelte/SearchIcon.svelte.d.ts +0 -25
  118. package/svelte/geo-coordinates-parser.t.d.ts +0 -8
  119. package/svelte/geo-coordinates-parser.t.js +0 -1
  120. package/svelte/geoUtils.d.ts +0 -3
  121. package/svelte/geoUtils.js +0 -18
  122. package/svelte/info.json +0 -1
  123. package/svelte/leaflet-controller.d.ts +0 -12
  124. package/svelte/leaflet-controller.js +0 -274
  125. package/svelte/leaflet.d.ts +0 -131
  126. package/svelte/leaflet.js +0 -116
  127. package/svelte/maplibregl-controller.d.ts +0 -19
  128. package/svelte/maplibregl-controller.js +0 -279
  129. package/svelte/maplibregl.d.ts +0 -2509
  130. package/svelte/maplibregl.js +0 -17
  131. package/svelte/maptilersdk.d.ts +0 -2504
  132. package/svelte/maptilersdk.js +0 -32
  133. package/svelte/mask.d.ts +0 -2
  134. package/svelte/mask.js +0 -54
  135. package/svelte/openlayers-controller.d.ts +0 -15
  136. package/svelte/openlayers-controller.js +0 -283
  137. package/svelte/openlayers.d.ts +0 -109
  138. package/svelte/openlayers.js +0 -178
  139. package/svelte/proximity.d.ts +0 -2
  140. package/svelte/proximity.js +0 -60
  141. package/svelte/react.d.ts +0 -45
  142. package/svelte/react.js +0 -106
  143. package/svelte/types.js +0 -1
  144. package/svelte/vanilla.d.ts +0 -61
  145. package/svelte/vanilla.js +0 -101
  146. package/svelte/vite-env.d.ts +0 -2
  147. package/types.d.ts +0 -391
  148. package/vanilla.d.ts +0 -61
  149. package/vanilla.js +0 -2799
  150. package/vanilla.js.map +0 -1
  151. package/vanilla.umd.js +0 -14
  152. package/vanilla.umd.js.map +0 -1
  153. /package/{icons → dist/icons}/10pin.svg +0 -0
  154. /package/{icons → dist/icons}/9pin.svg +0 -0
  155. /package/{icons → dist/icons}/advertising_column.svg +0 -0
  156. /package/{icons → dist/icons}/aerodrome.svg +0 -0
  157. /package/{icons → dist/icons}/alcohol.svg +0 -0
  158. /package/{icons → dist/icons}/alpine_hut.svg +0 -0
  159. /package/{icons → dist/icons}/amusement_arcade.svg +0 -0
  160. /package/{icons → dist/icons}/amusement_park.svg +0 -0
  161. /package/{icons → dist/icons}/apartment.svg +0 -0
  162. /package/{icons → dist/icons}/archaeological_site.svg +0 -0
  163. /package/{icons → dist/icons}/area.svg +0 -0
  164. /package/{icons → dist/icons}/art.svg +0 -0
  165. /package/{icons → dist/icons}/arts_centre.svg +0 -0
  166. /package/{icons → dist/icons}/artwork.svg +0 -0
  167. /package/{icons → dist/icons}/audioguide.svg +0 -0
  168. /package/{icons → dist/icons}/bag.svg +0 -0
  169. /package/{icons → dist/icons}/beauty.svg +0 -0
  170. /package/{icons → dist/icons}/bed.svg +0 -0
  171. /package/{icons → dist/icons}/bell_tower.svg +0 -0
  172. /package/{icons → dist/icons}/beverages.svg +0 -0
  173. /package/{icons → dist/icons}/bicycle_repair_station.svg +0 -0
  174. /package/{icons → dist/icons}/biergarten.svg +0 -0
  175. /package/{icons → dist/icons}/bird_hide.svg +0 -0
  176. /package/{icons → dist/icons}/boat_rental.svg +0 -0
  177. /package/{icons → dist/icons}/bookmaker.svg +0 -0
  178. /package/{icons → dist/icons}/books.svg +0 -0
  179. /package/{icons → dist/icons}/bowl.svg +0 -0
  180. /package/{icons → dist/icons}/bowling_alley.svg +0 -0
  181. /package/{icons → dist/icons}/bunker.svg +0 -0
  182. /package/{icons → dist/icons}/bureau_de_change.svg +0 -0
  183. /package/{icons → dist/icons}/bus_station.svg +0 -0
  184. /package/{icons → dist/icons}/bust.svg +0 -0
  185. /package/{icons → dist/icons}/camping.svg +0 -0
  186. /package/{icons → dist/icons}/car_parts.svg +0 -0
  187. /package/{icons → dist/icons}/car_wash.svg +0 -0
  188. /package/{icons → dist/icons}/caravan_park.svg +0 -0
  189. /package/{icons → dist/icons}/carpet.svg +0 -0
  190. /package/{icons → dist/icons}/cattle_grid.svg +0 -0
  191. /package/{icons → dist/icons}/cave_entrance.svg +0 -0
  192. /package/{icons → dist/icons}/chalet.svg +0 -0
  193. /package/{icons → dist/icons}/charity.svg +0 -0
  194. /package/{icons → dist/icons}/chemist.svg +0 -0
  195. /package/{icons → dist/icons}/chimney.svg +0 -0
  196. /package/{icons → dist/icons}/church.svg +0 -0
  197. /package/{icons → dist/icons}/city_gate.svg +0 -0
  198. /package/{icons → dist/icons}/clinic.svg +0 -0
  199. /package/{icons → dist/icons}/clothes.svg +0 -0
  200. /package/{icons → dist/icons}/coffee.svg +0 -0
  201. /package/{icons → dist/icons}/community_centre.svg +0 -0
  202. /package/{icons → dist/icons}/computer.svg +0 -0
  203. /package/{icons → dist/icons}/consulate.svg +0 -0
  204. /package/{icons → dist/icons}/copyshop.svg +0 -0
  205. /package/{icons → dist/icons}/cosmetics.svg +0 -0
  206. /package/{icons → dist/icons}/courthouse.svg +0 -0
  207. /package/{icons → dist/icons}/crane.svg +0 -0
  208. /package/{icons → dist/icons}/dairy.svg +0 -0
  209. /package/{icons → dist/icons}/deli.svg +0 -0
  210. /package/{icons → dist/icons}/department_store.svg +0 -0
  211. /package/{icons → dist/icons}/diy.svg +0 -0
  212. /package/{icons → dist/icons}/electronics.svg +0 -0
  213. /package/{icons → dist/icons}/embankment.svg +0 -0
  214. /package/{icons → dist/icons}/embassy.svg +0 -0
  215. /package/{icons → dist/icons}/excrement_bags.svg +0 -0
  216. /package/{icons → dist/icons}/fabric.svg +0 -0
  217. /package/{icons → dist/icons}/farmyard.svg +0 -0
  218. /package/{icons → dist/icons}/ferry.svg +0 -0
  219. /package/{icons → dist/icons}/firepit.svg +0 -0
  220. /package/{icons → dist/icons}/firestation.svg +0 -0
  221. /package/{icons → dist/icons}/fishing.svg +0 -0
  222. /package/{icons → dist/icons}/fitness.svg +0 -0
  223. /package/{icons → dist/icons}/ford.svg +0 -0
  224. /package/{icons → dist/icons}/fort.svg +0 -0
  225. /package/{icons → dist/icons}/fortress.svg +0 -0
  226. /package/{icons → dist/icons}/full-height_turnstile.svg +0 -0
  227. /package/{icons → dist/icons}/generator_wind.svg +0 -0
  228. /package/{icons → dist/icons}/golf_pin.svg +0 -0
  229. /package/{icons → dist/icons}/greengrocer.svg +0 -0
  230. /package/{icons → dist/icons}/guest_house.svg +0 -0
  231. /package/{icons → dist/icons}/helipad.svg +0 -0
  232. /package/{icons → dist/icons}/hifi.svg +0 -0
  233. /package/{icons → dist/icons}/hostel.svg +0 -0
  234. /package/{icons → dist/icons}/hotel.svg +0 -0
  235. /package/{icons → dist/icons}/housenumber.svg +0 -0
  236. /package/{icons → dist/icons}/houseware.svg +0 -0
  237. /package/{icons → dist/icons}/hunting_stand.svg +0 -0
  238. /package/{icons → dist/icons}/interior_decoration.svg +0 -0
  239. /package/{icons → dist/icons}/internet_cafe.svg +0 -0
  240. /package/{icons → dist/icons}/kindergarten.svg +0 -0
  241. /package/{icons → dist/icons}/kissing_gate.svg +0 -0
  242. /package/{icons → dist/icons}/manor.svg +0 -0
  243. /package/{icons → dist/icons}/map.svg +0 -0
  244. /package/{icons → dist/icons}/marker_reverse.svg +0 -0
  245. /package/{icons → dist/icons}/marker_selected.svg +0 -0
  246. /package/{icons → dist/icons}/marker_unselected.svg +0 -0
  247. /package/{icons → dist/icons}/marketplace.svg +0 -0
  248. /package/{icons → dist/icons}/massage.svg +0 -0
  249. /package/{icons → dist/icons}/mast.svg +0 -0
  250. /package/{icons → dist/icons}/mast_communications.svg +0 -0
  251. /package/{icons → dist/icons}/mast_lighting.svg +0 -0
  252. /package/{icons → dist/icons}/medical_supply.svg +0 -0
  253. /package/{icons → dist/icons}/memorial.svg +0 -0
  254. /package/{icons → dist/icons}/miniature_golf.svg +0 -0
  255. /package/{icons → dist/icons}/motel.svg +0 -0
  256. /package/{icons → dist/icons}/mountain_range.svg +0 -0
  257. /package/{icons → dist/icons}/multifaith.svg +0 -0
  258. /package/{icons → dist/icons}/musical_instrument.svg +0 -0
  259. /package/{icons → dist/icons}/newsagent.svg +0 -0
  260. /package/{icons → dist/icons}/nightclub.svg +0 -0
  261. /package/{icons → dist/icons}/ocean.svg +0 -0
  262. /package/{icons → dist/icons}/office.svg +0 -0
  263. /package/{icons → dist/icons}/outdoor_seating.svg +0 -0
  264. /package/{icons → dist/icons}/palace.svg +0 -0
  265. /package/{icons → dist/icons}/parcel_locker.svg +0 -0
  266. /package/{icons → dist/icons}/parking_space.svg +0 -0
  267. /package/{icons → dist/icons}/parking_tickets.svg +0 -0
  268. /package/{icons → dist/icons}/pet.svg +0 -0
  269. /package/{icons → dist/icons}/photo.svg +0 -0
  270. /package/{icons → dist/icons}/picnic.svg +0 -0
  271. /package/{icons → dist/icons}/plaque.svg +0 -0
  272. /package/{icons → dist/icons}/poi.svg +0 -0
  273. /package/{icons → dist/icons}/post_box.svg +0 -0
  274. /package/{icons → dist/icons}/post_office.svg +0 -0
  275. /package/{icons → dist/icons}/postal_code.svg +0 -0
  276. /package/{icons → dist/icons}/pub.svg +0 -0
  277. /package/{icons → dist/icons}/public_bath.svg +0 -0
  278. /package/{icons → dist/icons}/public_bookcase.svg +0 -0
  279. /package/{icons → dist/icons}/public_building.svg +0 -0
  280. /package/{icons → dist/icons}/public_transport_tickets.svg +0 -0
  281. /package/{icons → dist/icons}/reverse.svg +0 -0
  282. /package/{icons → dist/icons}/river.svg +0 -0
  283. /package/{icons → dist/icons}/road.svg +0 -0
  284. /package/{icons → dist/icons}/saddle.svg +0 -0
  285. /package/{icons → dist/icons}/sauna.svg +0 -0
  286. /package/{icons → dist/icons}/sea.svg +0 -0
  287. /package/{icons → dist/icons}/second_hand.svg +0 -0
  288. /package/{icons → dist/icons}/shintoist.svg +0 -0
  289. /package/{icons → dist/icons}/shoe.svg +0 -0
  290. /package/{icons → dist/icons}/shower.svg +0 -0
  291. /package/{icons → dist/icons}/shrine.svg +0 -0
  292. /package/{icons → dist/icons}/sikhist.svg +0 -0
  293. /package/{icons → dist/icons}/slipway.svg +0 -0
  294. /package/{icons → dist/icons}/snowmobile.svg +0 -0
  295. /package/{icons → dist/icons}/social_facility.svg +0 -0
  296. /package/{icons → dist/icons}/sports.svg +0 -0
  297. /package/{icons → dist/icons}/sprite.json +0 -0
  298. /package/{icons → dist/icons}/sprite.png +0 -0
  299. /package/{icons → dist/icons}/sprite@2x.json +0 -0
  300. /package/{icons → dist/icons}/sprite@2x.png +0 -0
  301. /package/{icons → dist/icons}/stationery.svg +0 -0
  302. /package/{icons → dist/icons}/stile.svg +0 -0
  303. /package/{icons → dist/icons}/stone.svg +0 -0
  304. /package/{icons → dist/icons}/storage_tank.svg +0 -0
  305. /package/{icons → dist/icons}/stream.svg +0 -0
  306. /package/{icons → dist/icons}/street.svg +0 -0
  307. /package/{icons → dist/icons}/supermarket.svg +0 -0
  308. /package/{icons → dist/icons}/tea.svg +0 -0
  309. /package/{icons → dist/icons}/telescope_dish.svg +0 -0
  310. /package/{icons → dist/icons}/telescope_dome.svg +0 -0
  311. /package/{icons → dist/icons}/ticket.svg +0 -0
  312. /package/{icons → dist/icons}/tobacco.svg +0 -0
  313. /package/{icons → dist/icons}/tower_cantilever_communication.svg +0 -0
  314. /package/{icons → dist/icons}/tower_cooling.svg +0 -0
  315. /package/{icons → dist/icons}/tower_dish.svg +0 -0
  316. /package/{icons → dist/icons}/tower_dome.svg +0 -0
  317. /package/{icons → dist/icons}/tower_generic.svg +0 -0
  318. /package/{icons → dist/icons}/tower_lattice.svg +0 -0
  319. /package/{icons → dist/icons}/tower_lattice_communication.svg +0 -0
  320. /package/{icons → dist/icons}/tower_lattice_lighting.svg +0 -0
  321. /package/{icons → dist/icons}/tower_lighting.svg +0 -0
  322. /package/{icons → dist/icons}/townhall.svg +0 -0
  323. /package/{icons → dist/icons}/toys.svg +0 -0
  324. /package/{icons → dist/icons}/trade.svg +0 -0
  325. /package/{icons → dist/icons}/traffic_light.svg +0 -0
  326. /package/{icons → dist/icons}/train_station.svg +0 -0
  327. /package/{icons → dist/icons}/travel_agency.svg +0 -0
  328. /package/{icons → dist/icons}/tyres.svg +0 -0
  329. /package/{icons → dist/icons}/university.svg +0 -0
  330. /package/{icons → dist/icons}/variety_store.svg +0 -0
  331. /package/{icons → dist/icons}/vehicle_inspection.svg +0 -0
  332. /package/{icons → dist/icons}/vending_machine.svg +0 -0
  333. /package/{icons → dist/icons}/video.svg +0 -0
  334. /package/{icons → dist/icons}/video_games.svg +0 -0
  335. /package/{icons → dist/icons}/waste_disposal.svg +0 -0
  336. /package/{icons → dist/icons}/water_well.svg +0 -0
  337. /package/{icons → dist/icons}/waterfall.svg +0 -0
  338. /package/{icons → dist/icons}/wilderness_hut.svg +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"leaflet.public.js","sources":["../src/components/clear-icon.ts","../src/components/fail-icon.ts","../src/components/loading-icon.ts","../src/components/reverse-geocoding-icon.ts","../src/components/search-icon.ts","../src/utils/geo-utils.ts","../src/utils/proximity.ts","../src/geocoder/geocoder-feature-item.ts","../src/geocoder/geocoder.ts","../src/components/marker.ts","../src/utils/mask.ts","../src/controls/leaflet-options.ts","../src/controls/leaflet-control.ts"],"sourcesContent":["import { LitElement, css, svg } from \"lit\";\nimport { customElement } from \"lit/decorators.js\";\n\n@customElement(\"maptiler-geocode-clear-icon\")\nexport class MaptilerGeocodeClearIconElement extends LitElement {\n static styles = css`\n svg {\n display: block;\n fill: var(--color-icon-button);\n }\n `;\n\n render() {\n return svg`\n <svg viewBox=\"0 0 14 14\" width=\"13\" height=\"13\">\n <path\n d=\"M13.12.706a.982.982 0 0 0-1.391 0L6.907 5.517 2.087.696a.982.982 0 1 0-1.391 1.39l4.821 4.821L.696 11.73a.982.982 0 1 0 1.39 1.39l4.821-4.821 4.822 4.821a.982.982 0 1 0 1.39-1.39L8.298 6.908l4.821-4.822a.988.988 0 0 0 0-1.38Z\"\n />\n </svg>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"maptiler-geocode-clear-icon\": MaptilerGeocodeClearIconElement;\n }\n}\n","import { LitElement, css, svg } from \"lit\";\nimport { customElement } from \"lit/decorators.js\";\n\n@customElement(\"maptiler-geocode-fail-icon\")\nexport class MaptilerGeocodeFailIconElement extends LitElement {\n static styles = css`\n svg {\n display: block;\n fill: #e15042;\n }\n `;\n\n render() {\n return svg`\n <svg viewBox=\"0 0 30 30\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M15 0C6.705 0 0 6.705 0 15C0 23.295 6.705 30 15 30C23.295 30 30 23.295 30 15C30 6.705 23.295 0 15 0ZM22.5 20.385L20.385 22.5L15 17.115L9.615 22.5L7.5 20.385L12.885 15L7.5 9.615L9.615 7.5L15 12.885L20.385 7.5L22.5 9.615L17.115 15L22.5 20.385Z\"\n />\n </svg>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"maptiler-geocode-fail-icon\": MaptilerGeocodeFailIconElement;\n }\n}\n","import { LitElement, css, html } from \"lit\";\nimport { customElement } from \"lit/decorators.js\";\n\n@customElement(\"maptiler-geocode-loading-icon\")\nexport class MaptilerGeocodeLoadingIconElement extends LitElement {\n static styles = css`\n div {\n position: absolute;\n left: 50%;\n top: 50%;\n transform: translate(-50%, -50%);\n pointer-events: none;\n\n display: flex;\n align-items: center;\n }\n\n .loading-icon {\n animation: rotate 0.8s infinite cubic-bezier(0.45, 0.05, 0.55, 0.95);\n }\n\n @keyframes rotate {\n from {\n -webkit-transform: rotate(0);\n transform: rotate(0);\n }\n to {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg);\n }\n }\n `;\n\n render() {\n return html`\n <div>\n <svg viewBox=\"0 0 18 18\" width=\"24\" height=\"24\" class=\"loading-icon\">\n <path fill=\"#333\" d=\"M4.4 4.4l.8.8c2.1-2.1 5.5-2.1 7.6 0l.8-.8c-2.5-2.5-6.7-2.5-9.2 0z\" />\n <path opacity=\".1\" d=\"M12.8 12.9c-2.1 2.1-5.5 2.1-7.6 0-2.1-2.1-2.1-5.5 0-7.7l-.8-.8c-2.5 2.5-2.5 6.7 0 9.2s6.6 2.5 9.2 0 2.5-6.6 0-9.2l-.8.8c2.2 2.1 2.2 5.6 0 7.7z\" />\n </svg>\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"maptiler-geocode-loading-icon\": MaptilerGeocodeLoadingIconElement;\n }\n}\n","import { LitElement, css, svg } from \"lit\";\nimport { customElement } from \"lit/decorators.js\";\n\n@customElement(\"maptiler-geocode-reverse-geocoding-icon\")\nexport class MaptilerGeocodeReverseGeocodingIconElement extends LitElement {\n static styles = css`\n svg {\n display: block;\n fill: var(--color-icon-button);\n }\n `;\n\n render() {\n return svg`\n <svg viewBox=\"0 0 60.006 21.412\" width=\"14\" height=\"20\">\n <path\n d=\"M30.003-26.765C13.46-26.765 0-14.158 0 1.337c0 23.286 24.535 42.952 28.39 46.04.24.192.402.316.471.376.323.282.732.424 1.142.424.41 0 .82-.142 1.142-.424.068-.06.231-.183.471-.376 3.856-3.09 28.39-22.754 28.39-46.04 0-15.495-13.46-28.102-30.003-28.102Zm1.757 12.469c4.38 0 7.858 1.052 10.431 3.158 2.595 2.105 3.89 4.913 3.89 8.422 0 2.34-.53 4.362-1.593 6.063-1.063 1.702-3.086 3.616-6.063 5.742-2.042 1.51-3.337 2.659-3.89 3.446-.532.787-.8 1.82-.8 3.096v1.914h-8.449V15.18c0-2.041.434-3.815 1.306-5.325.872-1.51 2.467-3.118 4.785-4.82 2.233-1.594 3.7-2.89 4.402-3.889a5.582 5.582 0 0 0 1.087-3.35c0-1.382-.51-2.435-1.531-3.158-1.02-.723-2.45-1.087-4.28-1.087-3.19 0-6.826 1.047-10.91 3.131l-3.472-6.986c4.742-2.659 9.77-3.992 15.087-3.992Zm-1.88 37.324c1.765 0 3.124.472 4.08 1.408.98.936 1.47 2.276 1.47 4.02 0 1.68-.49 3.007-1.47 3.985-.977.957-2.336 1.435-4.08 1.435-1.787 0-3.171-.465-4.15-1.4-.978-.958-1.47-2.298-1.47-4.02 0-1.787.48-3.14 1.436-4.054.957-.915 2.355-1.374 4.184-1.374Z\"\n />\n </svg>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"maptiler-geocode-reverse-geocoding-icon\": MaptilerGeocodeReverseGeocodingIconElement;\n }\n}\n","import { LitElement, css, svg } from \"lit\";\nimport { customElement } from \"lit/decorators.js\";\n\n@customElement(\"maptiler-geocode-search-icon\")\nexport class MaptilerGeocodeSearchIconElement extends LitElement {\n static styles = css`\n circle {\n stroke-width: 1.875;\n fill: none;\n }\n\n path {\n stroke-width: 1.875;\n stroke-linecap: round;\n }\n\n svg {\n display: block;\n stroke: var(--color-icon-button);\n }\n `;\n\n render() {\n return svg`\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"13\"\n height=\"13\"\n viewBox=\"0 0 13 13\"\n >\n <circle cx=\"4.789\" cy=\"4.787\" r=\"3.85\" />\n <path d=\"M12.063 12.063 7.635 7.635\" />\n </svg>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"maptiler-geocode-search-icon\": MaptilerGeocodeSearchIconElement;\n }\n}\n","import clone from \"@turf/clone\";\nimport type { FeatureCollection, MultiPolygon, Polygon, Position } from \"geojson\";\n\nimport type { BBox } from \"../types\";\n\n// taken from Leaflet\nexport function wrapNum(x: number, range: [number, number], includeMax: boolean) {\n const max = range[1],\n min = range[0],\n d = max - min;\n\n return x === max && includeMax ? x : ((((x - min) % d) + d) % d) + min;\n}\n\nexport function unwrapBbox(bbox0: BBox): BBox {\n const bbox = [...bbox0] satisfies BBox;\n\n if (bbox[2] < bbox[0]) {\n if (Math.abs((bbox[0] + bbox[2] + 360) / 2) > Math.abs((bbox[0] - 360 + bbox[2]) / 2)) {\n bbox[0] -= 360;\n } else {\n bbox[2] += 360;\n }\n }\n\n return bbox;\n}\n\nexport function shiftPolyCollection(featureCollection: FeatureCollection<Polygon | MultiPolygon>, distance: number): FeatureCollection<Polygon | MultiPolygon> {\n const cloned = clone(featureCollection);\n\n for (const feature of cloned.features) {\n if (feature.geometry.type == \"MultiPolygon\") {\n for (const poly of feature.geometry.coordinates) {\n shiftPolyCoords(poly, distance);\n }\n } else {\n shiftPolyCoords(feature.geometry.coordinates, distance);\n }\n }\n\n return cloned;\n}\n\nexport function shiftPolyCoords(coordinates: Position[][], distance: number) {\n for (const ring of coordinates) {\n for (const position of ring) {\n position[0] += distance;\n }\n }\n}\n","import type { ProximityRule } from \"../types\";\n\nlet cachedLocation: { time: number; coords: undefined | string } | undefined;\n\nexport async function getProximity(centerAndZoom: [zoom: number, lon: number, lat: number] | undefined, proximity: ProximityRule[] | null | undefined, ac: AbortController) {\n for (const rule of proximity ?? []) {\n if (centerAndZoom && ((rule.minZoom != undefined && rule.minZoom > centerAndZoom[0]) || (rule.maxZoom != undefined && rule.maxZoom < centerAndZoom[0]))) {\n continue;\n }\n\n if (rule.type === \"fixed\") {\n return rule.coordinates.join(\",\");\n }\n\n if (rule.type === \"client-geolocation\") {\n if (cachedLocation && rule.cachedLocationExpiry && cachedLocation.time + rule.cachedLocationExpiry > Date.now()) {\n if (cachedLocation.coords) {\n return cachedLocation.coords;\n }\n } else {\n let coords: string | undefined;\n\n try {\n coords = await new Promise<string>((resolve, reject) => {\n ac.signal.addEventListener(\"abort\", () => {\n reject(Error(\"aborted\"));\n });\n\n navigator.geolocation.getCurrentPosition(\n (pos) => {\n resolve([pos.coords.longitude, pos.coords.latitude].map((c) => c.toFixed(6)).join(\",\"));\n },\n (err) => {\n // eslint-disable-next-line @typescript-eslint/prefer-promise-reject-errors\n reject(err);\n },\n rule,\n );\n });\n\n return coords;\n } catch {\n // ignore\n } finally {\n if (rule.cachedLocationExpiry) {\n cachedLocation = {\n time: Date.now(),\n coords,\n };\n }\n }\n\n if (ac.signal.aborted) {\n return;\n }\n }\n }\n\n if (rule.type === \"server-geolocation\") {\n return \"ip\";\n }\n\n if (centerAndZoom && rule.type === \"map-center\") {\n return centerAndZoom[1].toFixed(6) + \",\" + centerAndZoom[2].toFixed(6);\n }\n }\n}\n","/* eslint-disable\n@typescript-eslint/no-unnecessary-condition,\n @typescript-eslint/no-unsafe-assignment,\n @typescript-eslint/no-unsafe-call,\n @typescript-eslint/no-unsafe-member-access,\n @typescript-eslint/no-unsafe-return,\n @typescript-eslint/restrict-template-expressions,\n @typescript-eslint/unbound-method,\n*/\nimport { LitElement, css, html, nothing, unsafeCSS } from \"lit\";\nimport { customElement, property, state } from \"lit/decorators.js\";\nimport { styleMap } from \"lit/directives/style-map.js\";\n\nimport type { Feature, ShowPlaceType } from \"../types\";\nimport styles from \"./geocoder-feature-item.css?inline\";\n\ntype SpriteIcon = { width: number; height: number; x: number; y: number };\n\nconst hidpi = typeof devicePixelRatio === \"undefined\" || devicePixelRatio > 1.25;\n\nconst scaleUrl = hidpi ? \"@2x\" : \"\";\n\nconst scaleFactor = hidpi ? 2 : 1;\n\nlet sprites: undefined | null | { width: number; height: number; icons: Record<string, SpriteIcon> };\n\nlet spritePromise: Promise<void> | undefined;\n\n@customElement(\"maptiler-geocoder-feature-item\")\nexport class MaptilerGeocoderFeatureItemElement extends LitElement {\n static styles = css`\n ${unsafeCSS(styles)}\n `;\n\n @property({ type: Object }) feature?: Feature;\n @property({ type: String }) itemStyle: \"selected\" | \"picked\" | \"default\" = \"default\";\n @property({ type: String }) showPlaceType: ShowPlaceType = \"if-needed\";\n @property({ attribute: false }) missingIconsCache: Set<string> = new Set<string>();\n @property({ type: String }) iconsBaseUrl: string = \"\";\n\n get #categories() {\n return this.feature?.properties?.categories;\n }\n get #isReverse() {\n return this.feature?.place_type[0] === \"reverse\";\n }\n get #placeType() {\n return this.feature?.properties?.categories?.join(\", \") ?? this.feature?.place_type_name?.[0] ?? this.feature?.place_type[0];\n }\n\n @state() private category: string | undefined;\n @state() private imageUrl: string | undefined;\n @state() private spriteIcon: SpriteIcon | undefined;\n @state() private index: number = 0;\n\n #loadSprites() {\n spritePromise ??= fetch(`${this.iconsBaseUrl}sprite${scaleUrl}.json`)\n .then((response) => response.json())\n .then((data) => {\n sprites = data;\n })\n .catch(() => {\n sprites = null;\n });\n }\n\n #handleImgError() {\n if (this.imageUrl) {\n this.missingIconsCache.add(this.imageUrl);\n }\n\n this.#loadIcon();\n }\n\n #loadIcon() {\n if (sprites !== undefined) {\n this.#loadIcon2();\n } else {\n this.#loadSprites();\n\n void spritePromise?.then(() => {\n this.#loadIcon2();\n });\n }\n }\n\n #loadIcon2() {\n do {\n this.index--;\n\n this.category = this.#categories?.[this.index];\n\n this.spriteIcon = this.category ? sprites?.icons[this.category] : undefined;\n\n if (this.spriteIcon) {\n break;\n }\n\n this.imageUrl = this.category ? this.iconsBaseUrl + this.category.replace(/ /g, \"_\") + \".svg\" : undefined;\n } while (this.index > -1 && (!this.imageUrl || this.missingIconsCache.has(this.imageUrl)));\n }\n\n willUpdate(changedProperties: Map<string, unknown>) {\n if (changedProperties.has(\"feature\") && this.#categories) {\n this.index = this.#categories.length;\n this.#loadIcon();\n }\n }\n\n render() {\n return html`\n <li\n tabindex=\"-1\"\n role=\"option\"\n aria-selected=${this.itemStyle === \"selected\"}\n aria-checked=${this.itemStyle === \"picked\"}\n class=${this.itemStyle}\n @click=${() => this.dispatchEvent(new CustomEvent(\"select\"))}\n >\n ${sprites && this.spriteIcon\n ? html`\n <div\n class=\"sprite-icon\"\n style=${styleMap({\n width: `${this.spriteIcon.width / scaleFactor}px`,\n height: `${this.spriteIcon.height / scaleFactor}px`,\n backgroundImage: `url(${this.iconsBaseUrl}sprite${scaleUrl}.png)`,\n backgroundPosition: `-${this.spriteIcon.x / scaleFactor}px -${this.spriteIcon.y / scaleFactor}px`,\n backgroundSize: `${sprites.width / scaleFactor}px ${sprites.height / scaleFactor}px`,\n })}\n title=${this.#placeType}\n />\n `\n : this.imageUrl\n ? html` <img src=${this.imageUrl} alt=${this.category} title=${this.#placeType} @error=${this.#handleImgError} />`\n : this.feature?.address\n ? html` <img src=${this.iconsBaseUrl + \"housenumber.svg\"} alt=${this.#placeType} title=${this.#placeType} /> `\n : this.feature?.id.startsWith(\"road.\")\n ? html` <img src=${this.iconsBaseUrl + \"road.svg\"} alt=${this.#placeType} title=${this.#placeType} /> `\n : this.feature?.id.startsWith(\"address.\")\n ? html` <img src=${this.iconsBaseUrl + \"street.svg\"} alt=${this.#placeType} title=${this.#placeType} /> `\n : this.feature?.id.startsWith(\"postal_code.\")\n ? html` <img src=${this.iconsBaseUrl + \"postal_code.svg\"} alt=${this.#placeType} title=${this.#placeType} /> `\n : this.feature?.id.startsWith(\"poi.\")\n ? html` <img src=${this.iconsBaseUrl + \"poi.svg\"} alt=${this.#placeType} title=${this.#placeType} /> `\n : this.#isReverse\n ? html` <img src=${this.iconsBaseUrl + \"reverse.svg\"} alt=${this.#placeType} title=${this.#placeType} /> `\n : html` <img src=${this.iconsBaseUrl + \"area.svg\"} alt=${this.#placeType} title=${this.#placeType} /> `}\n\n <span class=\"texts\">\n <span>\n <span class=\"primary\"> ${this.#isReverse ? this.feature?.place_name : this.feature?.place_name.replace(/,.*/, \"\")} </span>\n\n ${this.showPlaceType === \"always\" ||\n (this.showPlaceType !== \"never\" &&\n !this.feature?.address &&\n !this.feature?.id.startsWith(\"road.\") &&\n !this.feature?.id.startsWith(\"address.\") &&\n !this.feature?.id.startsWith(\"postal_code.\") &&\n (!this.feature?.id.startsWith(\"poi.\") || !this.imageUrl) &&\n !this.#isReverse)\n ? html` <span class=\"secondary\"> ${this.#placeType} </span> `\n : nothing}\n </span>\n\n <span class=\"line2\"> ${this.#isReverse ? this.feature?.text : this.feature?.place_name.replace(/[^,]*,?s*/, \"\")} </span>\n </span>\n </li>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"maptiler-geocoder-feature-item\": MaptilerGeocoderFeatureItemElement;\n }\n}\n","import { convert } from \"geo-coordinates-parser\";\nimport { LitElement, css, html, nothing, unsafeCSS } from \"lit\";\nimport { customElement, property, query, state } from \"lit/decorators.js\";\nimport { classMap } from \"lit/directives/class-map.js\";\nimport { repeat } from \"lit/directives/repeat.js\";\n\nimport type { BBox, EnableReverse, Feature, FeatureCollection, ProximityRule, ShowPlaceType, TypeRule, Worldview } from \"../types\";\nimport { wrapNum } from \"../utils/geo-utils\";\nimport { getProximity } from \"../utils/proximity\";\n\nimport \"../components/clear-icon\";\nimport \"../components/fail-icon\";\nimport \"../components/loading-icon\";\nimport \"../components/reverse-geocoding-icon\";\nimport \"../components/search-icon\";\nimport \"./geocoder-feature-item\";\n\nimport type { MaptilerGeocoderEventName, MaptilerGeocoderEventNameMap } from \"./geocoder-events\";\nimport type { MaptilerGeocoderOptions } from \"./geocoder-options\";\nimport styles from \"./geocoder.css?inline\";\n\n@customElement(\"maptiler-geocoder\")\nexport class MaptilerGeocoderElement extends LitElement implements MaptilerGeocoderOptions {\n static styles = css`\n ${unsafeCSS(styles)}\n `;\n\n @property({ attribute: false }) adjustUrl?: (url: URL) => void;\n @property({ type: String }) apiKey?: string;\n @property({ type: String }) apiUrl?: string;\n @property({ type: Array }) bbox?: BBox;\n @property({ type: String }) clearButtonTitle?: string;\n @property({ type: Boolean }) clearListOnPick: boolean = false;\n @property({ type: Boolean }) clearOnBlur: boolean = false;\n @property({ type: Boolean }) collapsed: boolean = false;\n @property({ attribute: false }) country?: string | string[];\n @property({ type: Number }) debounceSearch?: number;\n @property({ type: String }) enableReverse?: EnableReverse;\n @property({ type: String }) errorMessage?: string;\n @property({ type: Boolean }) excludeTypes: boolean = false;\n @property({ type: Boolean }) exhaustiveReverseGeocoding: boolean = false;\n @property({ type: Boolean }) fetchFullGeometryOnPick: boolean = false;\n @property({ type: Object }) fetchParameters?: RequestInit;\n @property({ attribute: false }) filter?: (feature: Feature) => boolean;\n @property({ type: Object }) fuzzyMatch?: boolean | undefined; // type object because undefined is valid value\n @property({ type: String }) iconsBaseUrl?: string;\n @property({ type: Boolean }) keepListOpen: boolean = false;\n @property({ attribute: false }) language?: string | string[] | null;\n @property({ type: Number }) limit?: number;\n @property({ type: Number }) minLength?: number;\n @property({ type: String }) noResultsMessage?: string;\n @property({ type: Boolean }) openListOnTop: boolean = false;\n @property({ type: String }) placeholder?: string;\n @property({ type: Array }) proximity?: ProximityRule[] | null;\n @property({ type: Boolean }) reverseActive: boolean = false;\n @property({ type: String }) reverseButtonTitle?: string;\n @property({ type: Object }) reverseGeocodingExcludeTypes?: boolean | undefined; // type object because undefined is valid value\n @property({ type: Number }) reverseGeocodingLimit?: number;\n @property({ type: Array }) reverseGeocodingTypes?: TypeRule[];\n @property({ type: Object }) selectFirst?: boolean | undefined; // type object because undefined is valid value\n @property({ type: String }) showPlaceType?: ShowPlaceType;\n @property({ type: Object }) showResultsWhileTyping?: boolean | undefined; // type object because undefined is valid value\n @property({ type: Array }) types?: TypeRule[];\n @property({ type: String }) worldview?: Worldview;\n\n /** Reference to the input element the user can type a query into */\n @query(\"input\") private input!: HTMLInputElement;\n\n /** Value to search via geocoding */\n @state() private searchValue: string = \"\";\n /** Features found via geocoding */\n @state() private listFeatures?: Feature[];\n /** Index of item currently selected from the list of found features */\n @state() private selectedItemIndex: number = -1;\n /** Feature that has been picked by the user */\n @state() private picked?: Feature;\n /** Cached found features to be used to restore the features when loading more data for picked feature */\n @state() private cachedFeatures: Feature[] = [];\n /** Effectively a cache key for cached features */\n @state() private lastSearchUrl: string = \"\";\n /** Last error that happened in geocoding, to be shown to user */\n @state() private error: unknown;\n /** AbortController instance used to potentially cancel the current geocoding request*/\n @state() private abortController?: AbortController;\n /** Focus state of input element */\n @state() private focused: boolean = false;\n /** Focus state of input element, delayed for a moment to not close feature list immediately after losing focus */\n @state() private focusedDelayed: boolean = false;\n\n /** Helps to trigger logic only after this instance gets fully initialized */\n #isInitialized = false;\n /** Helps to trigger logic running when feature list hides only after it gets opened for the first time */\n #wasFeatureListVisible = false;\n /** Timeout ref for debouncing logic */\n #searchTimeoutRef?: number;\n /** Cache for URLs of icons that couldn't be loaded for any reason, as to not try them again unnecessarily */\n #missingIconsCache = new Set<string>();\n /** Center and zoom of a map potentially connected to this instance */\n #centerAndZoom: [zoom: number, lon: number, lat: number] | undefined;\n\n get #selected(): Feature | undefined {\n return this.listFeatures?.[this.selectedItemIndex];\n }\n get #isFeatureListVisible(): boolean {\n return !!this.listFeatures?.length && (this.focusedDelayed || this.keepListOpen);\n }\n get #isLoading(): boolean {\n return this.abortController !== undefined;\n }\n get #isSearchValueTooShort(): boolean {\n return this.searchValue.length < (this.minLength ?? 2);\n }\n\n protected firstUpdated() {\n this.#isInitialized = true;\n }\n\n /**\n * Set the options of this instance.\n *\n * @param options options to set\n */\n setOptions(options: Partial<MaptilerGeocoderOptions>) {\n const elementOptions = { ...options };\n for (const prop of Object.keys(elementOptions) as Array<keyof MaptilerGeocoderOptions>) {\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n if (!propertyNames.includes(prop)) delete elementOptions[prop];\n }\n Object.assign(this, elementOptions);\n }\n\n /**\n * Set the content of search input box.\n *\n * @param value text to set\n */\n setQuery(value: string) {\n this.#changeSearchValue(value);\n this.#focusInputAndSelectText();\n }\n\n /**\n * Set the content of search input box and immediately submit it.\n *\n * @param value text to set and submit\n */\n submitQuery(value: string) {\n this.#submitSearchValue(value);\n }\n\n /**\n * Clear search result list.\n */\n clearList() {\n this.#clearFeatures();\n this.picked = undefined;\n this.selectedItemIndex = -1;\n }\n\n /**\n * Focus the search input box.\n *\n * @param options [FocusOptions](https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/focus#options)\n */\n override focus(options?: FocusOptions) {\n this.input.focus(options);\n }\n\n /**\n * Blur the search input box.\n */\n override blur() {\n this.input.blur();\n }\n\n override addEventListener<E extends MaptilerGeocoderEventName>(\n type: E,\n listener: (this: HTMLElement, e: MaptilerGeocoderEventNameMap[E]) => unknown,\n options?: boolean | AddEventListenerOptions,\n ): void;\n override addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void {\n super.addEventListener(type, listener, options);\n }\n\n override removeEventListener<E extends MaptilerGeocoderEventName>(\n type: E,\n listener: (this: HTMLElement, e: MaptilerGeocoderEventNameMap[E]) => unknown,\n options?: boolean | EventListenerOptions,\n ): void;\n override removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void {\n super.removeEventListener(type, listener, options);\n }\n\n /** @internal */\n handleMapChange(centerAndZoom: [zoom: number, lon: number, lat: number] | undefined): void {\n this.#centerAndZoom = centerAndZoom;\n }\n\n /** @internal */\n handleMapClick(coordinates: [lng: number, lat: number]) {\n if (this.reverseActive) {\n this.#handleReverse(coordinates);\n }\n }\n\n #dispatch<T extends keyof MaptilerGeocoderEventNameMap>(\n type: T,\n ...[detail]: undefined extends MaptilerGeocoderEventNameMap[T][\"detail\"] ? [] : [detail: MaptilerGeocoderEventNameMap[T][\"detail\"]]\n ): void {\n if (!this.#isInitialized) return;\n\n this.dispatchEvent(\n new CustomEvent(type, {\n bubbles: true,\n composed: true,\n detail,\n }),\n );\n }\n\n #handleSubmit(event?: Event) {\n event?.preventDefault();\n\n this.focused = false;\n\n clearTimeout(this.#searchTimeoutRef);\n\n if (this.selectedItemIndex > -1 && this.listFeatures) {\n this.picked = this.listFeatures[this.selectedItemIndex];\n\n this.searchValue = this.picked.place_type[0] === \"reverse\" ? this.picked.place_name : this.picked.place_name.replace(/,.*/, \"\");\n\n this.error = undefined;\n\n this.selectedItemIndex = -1;\n } else if (this.searchValue) {\n this.#search(this.searchValue, { exact: true })\n .then(() => {\n this.picked = undefined;\n })\n .catch((err: unknown) => (this.error = err));\n }\n }\n\n #isQueryReverse(searchValue: string) {\n try {\n return convert(searchValue, 6);\n } catch {\n return false;\n }\n }\n\n #focusInputAndSelectText() {\n setTimeout(() => {\n this.input.focus();\n this.focused = true;\n this.input.select();\n });\n }\n\n #changeSearchValue(searchValue: string) {\n this.searchValue = searchValue;\n this.#dispatch(\"querychange\", { query: this.searchValue, reverseCoords: this.#isQueryReverse(searchValue) });\n\n this.error = undefined;\n this.picked = undefined;\n\n if (this.showResultsWhileTyping !== false) {\n clearTimeout(this.#searchTimeoutRef);\n\n if (this.#isSearchValueTooShort) {\n return;\n }\n\n const sv = this.searchValue;\n\n this.#searchTimeoutRef = window.setTimeout(() => {\n this.#search(sv).catch((err: unknown) => (this.error = err));\n }, this.debounceSearch ?? 200);\n } else {\n this.#clearFeatures();\n }\n }\n\n #clearFeatures() {\n if (this.listFeatures !== undefined) {\n this.listFeatures = undefined;\n this.#dispatch(\"featuresclear\");\n }\n }\n\n #submitSearchValue(searchValue: string) {\n this.searchValue = searchValue;\n this.#dispatch(\"querychange\", { query: this.searchValue, reverseCoords: this.#isQueryReverse(searchValue) });\n\n this.selectedItemIndex = -1;\n this.#handleSubmit();\n }\n\n async #search(searchValue: string, { byId = false, exact = false }: undefined | { byId?: boolean; exact?: boolean } = {}) {\n this.error = undefined;\n\n this.abortController?.abort();\n const ac = new AbortController();\n this.abortController = ac;\n\n try {\n const apiUrl = this.apiUrl ?? import.meta.env.VITE_API_URL;\n const isReverse = this.#isQueryReverse(searchValue);\n\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n const urlObj = new URL(apiUrl + \"/\" + encodeURIComponent(isReverse ? `${isReverse.decimalLongitude},${isReverse.decimalLatitude}` : searchValue) + \".json\");\n\n const sp = urlObj.searchParams;\n\n if (this.language !== undefined) {\n sp.set(\"language\", Array.isArray(this.language) ? this.language.join(\",\") : (this.language ?? \"\"));\n }\n\n const [zoom] = this.#centerAndZoom ?? [undefined];\n\n let effTypes = (!isReverse || this.reverseGeocodingTypes === undefined ? this.types : this.reverseGeocodingTypes)\n ?.map((typeRule) =>\n typeof typeRule === \"string\" ? typeRule : zoom === undefined || ((typeRule[0] ?? 0) <= zoom && zoom < (typeRule[1] ?? Infinity)) ? typeRule[2] : undefined,\n )\n .filter((type) => type !== undefined);\n\n if (effTypes) {\n effTypes = [...new Set(effTypes)];\n\n sp.set(\"types\", effTypes.join(\",\"));\n }\n\n const effExcludeTypes = !isReverse || this.reverseGeocodingExcludeTypes === undefined ? this.excludeTypes : this.reverseGeocodingExcludeTypes;\n\n if (effExcludeTypes) {\n sp.set(\"excludeTypes\", String(effExcludeTypes));\n }\n\n if (this.bbox) {\n sp.set(\"bbox\", this.bbox.map((c) => c.toFixed(6)).join(\",\"));\n }\n\n if (this.country) {\n sp.set(\"country\", Array.isArray(this.country) ? this.country.join(\",\") : this.country);\n }\n\n if (this.worldview) {\n sp.set(\"worldview\", this.worldview);\n }\n\n if (!byId && !isReverse) {\n const proximity = this.proximity ?? [{ type: \"server-geolocation\" }];\n const coords = await getProximity(this.#centerAndZoom, proximity, ac);\n\n if (coords) {\n sp.set(\"proximity\", coords);\n }\n\n if (exact || this.showResultsWhileTyping === false) {\n sp.set(\"autocomplete\", \"false\");\n }\n\n sp.set(\"fuzzyMatch\", String(this.fuzzyMatch !== false));\n }\n\n const limit = this.limit ?? 5;\n const effReverseGeocodingLimit = this.reverseGeocodingLimit ?? limit;\n\n if (effReverseGeocodingLimit > 1 && effTypes?.length !== 1) {\n console.warn(\"[MapTilerGeocodingControl] Warning: For reverse geocoding when limit > 1 then types must contain single value.\");\n }\n\n if (isReverse) {\n if (effReverseGeocodingLimit === 1 || this.exhaustiveReverseGeocoding || effTypes?.length === 1) {\n sp.set(\"limit\", String(effReverseGeocodingLimit));\n }\n } else {\n sp.set(\"limit\", String(limit));\n }\n\n if (this.apiKey) {\n sp.set(\"key\", this.apiKey);\n }\n\n this.adjustUrl?.(urlObj);\n\n const noTypes = urlObj.searchParams.get(\"types\") === \"\" && urlObj.searchParams.get(\"excludeTypes\") !== \"true\";\n\n const url = urlObj.toString();\n\n if (url === this.lastSearchUrl) {\n if (byId) {\n if (this.clearListOnPick) {\n this.#clearFeatures();\n }\n\n this.picked = this.cachedFeatures[0];\n } else {\n this.listFeatures = this.cachedFeatures;\n this.#dispatch(\"featureslisted\", { features: this.listFeatures });\n\n if (this.listFeatures[this.selectedItemIndex]?.id !== this.#selected?.id) {\n this.selectedItemIndex = -1;\n }\n }\n\n return;\n }\n\n this.#dispatch(\"request\", { urlObj });\n\n this.lastSearchUrl = url;\n\n let featureCollection: FeatureCollection;\n\n if (noTypes) {\n featureCollection = { type: \"FeatureCollection\", features: [] };\n } else {\n const res = await fetch(url, {\n signal: ac.signal,\n ...this.fetchParameters,\n });\n\n if (!res.ok) {\n throw new Error(await res.text());\n }\n\n featureCollection = (await res.json()) as FeatureCollection;\n }\n\n this.#dispatch(\"response\", { url, featureCollection });\n\n if (byId) {\n if (this.clearListOnPick) {\n this.#clearFeatures();\n }\n\n this.picked = featureCollection.features[0];\n\n this.cachedFeatures = [this.picked];\n } else {\n this.listFeatures = featureCollection.features.filter(this.filter ?? (() => true));\n\n if (isReverse) {\n this.listFeatures.unshift({\n type: \"Feature\",\n properties: {},\n /* eslint-disable @typescript-eslint/restrict-template-expressions */\n id: `reverse_${isReverse.decimalLongitude}_${isReverse.decimalLatitude}`,\n text: `${isReverse.decimalLatitude}, ${isReverse.decimalLongitude}`,\n place_name: isReverse.toCoordinateFormat(\"DMS\"),\n /* eslint-enable @typescript-eslint/restrict-template-expressions */\n place_type: [\"reverse\"],\n place_type_name: [\"reverse\"],\n center: [isReverse.decimalLongitude, isReverse.decimalLatitude],\n bbox: [isReverse.decimalLongitude, isReverse.decimalLatitude, isReverse.decimalLongitude, isReverse.decimalLatitude],\n geometry: {\n type: \"Point\",\n coordinates: [isReverse.decimalLongitude, isReverse.decimalLatitude],\n },\n });\n }\n\n this.#dispatch(\"featureslisted\", { features: this.listFeatures });\n\n this.cachedFeatures = this.listFeatures;\n\n if (this.listFeatures[this.selectedItemIndex]?.id !== this.#selected?.id) {\n this.selectedItemIndex = -1;\n }\n\n if (isReverse) {\n this.input.focus();\n }\n }\n } catch (e: unknown) {\n if (e && typeof e === \"object\" && \"name\" in e && e.name === \"AbortError\") {\n return;\n }\n\n throw e;\n } finally {\n if (ac === this.abortController) {\n this.abortController = undefined;\n }\n }\n }\n\n #handleReverse(coordinates: [lng: number, lat: number]) {\n this.reverseActive = this.enableReverse === \"always\";\n\n this.#clearFeatures();\n this.picked = undefined;\n\n this.#submitSearchValue(`${coordinates[1].toFixed(6)}, ${wrapNum(coordinates[0], [-180, 180], true).toFixed(6)}`);\n this.#focusInputAndSelectText();\n }\n\n #handleKeyDown(e: KeyboardEvent) {\n if (!this.listFeatures) {\n return;\n }\n\n const dir = e.key === \"ArrowDown\" ? 1 : e.key === \"ArrowUp\" ? -1 : 0;\n\n if (!dir) {\n return;\n }\n\n this.input.focus();\n\n this.focused = true;\n\n e.preventDefault();\n\n if (this.picked && this.selectedItemIndex === -1) {\n this.selectedItemIndex = this.listFeatures.findIndex((listFeature) => listFeature.id === this.picked?.id);\n }\n\n if (this.selectedItemIndex === (this.picked || this.selectFirst !== false ? 0 : -1) && dir === -1) {\n this.selectedItemIndex = this.listFeatures.length;\n }\n\n this.selectedItemIndex += dir;\n\n if (this.selectedItemIndex >= this.listFeatures.length) {\n this.selectedItemIndex = -1;\n }\n\n if (this.selectedItemIndex < 0 && (this.picked || this.selectFirst !== false)) {\n this.selectedItemIndex = 0;\n }\n }\n\n #handleInput(event: InputEvent & { target: HTMLInputElement }) {\n this.#changeSearchValue(event.target.value);\n }\n\n #pick(feature: Feature) {\n if (!this.picked || this.picked.id !== feature.id) {\n this.picked = feature;\n this.searchValue = feature.place_name;\n }\n }\n\n #handleMouseEnter(index: number) {\n this.selectedItemIndex = index;\n }\n\n #handleMouseLeave() {\n if (!this.selectFirst !== false || this.picked) {\n this.selectedItemIndex = -1;\n }\n }\n\n #handleClear() {\n this.searchValue = \"\";\n this.#dispatch(\"queryclear\");\n\n this.picked = undefined;\n this.input.focus();\n }\n\n willUpdate(changedProperties: Map<string, unknown>) {\n if (changedProperties.has(\"error\") && this.error) {\n console.error(\"[MapTilerGeocodingControl] Error:\", this.error);\n }\n\n if (changedProperties.has(\"enableReverse\")) {\n this.reverseActive = this.enableReverse === \"always\";\n }\n\n if ([\"picked\"].some((prop) => changedProperties.has(prop))) {\n if (this.picked) {\n if (this.clearListOnPick) {\n this.#clearFeatures();\n }\n\n this.selectedItemIndex = -1;\n }\n }\n\n if ([\"searchValue\", \"minLength\"].some((prop) => changedProperties.has(prop)) && this.#isSearchValueTooShort) {\n this.#clearFeatures();\n this.error = undefined;\n }\n\n if ([\"focused\"].some((prop) => changedProperties.has(prop))) {\n setTimeout(() => {\n this.focusedDelayed = this.focused;\n\n // close dropdown in the next cycle so that the selected item event has the chance to fire\n if (this.clearOnBlur && !this.focused) {\n this.searchValue = \"\";\n }\n }, 100);\n }\n\n if (\n [\"selectFirst\", \"listFeatures\", \"selectedItemIndex\", \"picked\"].some((prop) => changedProperties.has(prop)) &&\n this.selectFirst !== false &&\n this.listFeatures?.length &&\n this.selectedItemIndex == -1 &&\n !this.picked\n ) {\n this.selectedItemIndex = 0;\n }\n\n if ([\"listFeatures\", \"selectedItemIndex\"].some((prop) => changedProperties.has(prop))) {\n this.#dispatch(\"select\", { feature: this.#selected });\n }\n\n if ([\"picked\"].some((prop) => changedProperties.has(prop))) {\n if (this.picked && this.picked.id !== (changedProperties.get(\"picked\") as Feature | undefined)?.id) {\n (this.fetchFullGeometryOnPick && !this.picked.address && this.picked.geometry.type === \"Point\" && this.picked.place_type[0] !== \"reverse\"\n ? this.#search(this.picked.id, { byId: true })\n : Promise.resolve()\n ).then(\n () => {\n this.#dispatch(\"pick\", { feature: this.picked });\n },\n (e: unknown) => {\n if (e && typeof e === \"object\" && \"name\" in e && e.name === \"AbortError\") return;\n this.error = e;\n this.#dispatch(\"pick\", { feature: this.picked });\n },\n );\n }\n }\n\n if ([\"listFeatures\", \"focusedDelayed\"].some((prop) => changedProperties.has(prop))) {\n if (this.#isFeatureListVisible) {\n this.#dispatch(\"featuresshow\");\n this.#wasFeatureListVisible = true;\n } else if (this.#wasFeatureListVisible) {\n this.#dispatch(\"featureshide\");\n }\n }\n\n if ([\"reverseActive\"].some((prop) => changedProperties.has(prop))) {\n this.#dispatch(\"reversetoggle\", { reverse: this.reverseActive });\n }\n }\n\n render() {\n /* eslint-disable @typescript-eslint/unbound-method */\n return html`\n <form @submit=${this.#handleSubmit} class=${classMap({ \"can-collapse\": this.collapsed && this.searchValue === \"\" })}>\n <div class=\"input-group\">\n <button\n class=\"search-button\"\n type=\"button\"\n @click=${() => {\n this.input.focus();\n }}\n >\n <maptiler-geocode-search-icon></maptiler-geocode-search-icon>\n </button>\n\n <input\n .value=${this.searchValue}\n @focus=${() => (this.focused = true)}\n @blur=${() => (this.focused = false)}\n @click=${() => (this.focused = true)}\n @keydown=${this.#handleKeyDown}\n @input=${this.#handleInput}\n @change=${() => (this.picked = undefined)}\n placeholder=${this.placeholder ?? \"Search\"}\n aria-label=${this.placeholder ?? \"Search\"}\n />\n\n <div class=\"clear-button-container ${classMap({ displayable: this.searchValue !== \"\" })}\">\n ${!this.#isLoading\n ? html`\n <button type=\"button\" @click=${this.#handleClear} title=${this.clearButtonTitle ?? \"clear\"}>\n <maptiler-geocode-clear-icon></maptiler-geocode-clear-icon>\n </button>\n `\n : html`<maptiler-geocode-loading-icon></maptiler-geocode-loading-icon>`}\n </div>\n\n ${this.enableReverse === \"button\"\n ? html`\n <button\n type=\"button\"\n class=${classMap({ active: this.reverseActive })}\n title=${this.reverseButtonTitle ?? \"toggle reverse geocoding\"}\n @click=${() => (this.reverseActive = !this.reverseActive)}\n >\n <maptiler-geocode-reverse-geocoding-icon></maptiler-geocode-reverse-geocoding-icon>\n </button>\n `\n : nothing}\n\n <!-- <slot /> -->\n </div>\n\n ${this.error\n ? html`\n <div class=\"error\">\n <maptiler-geocode-fail-icon></maptiler-geocode-fail-icon>\n\n <div>${this.errorMessage ?? \"Something went wrong…\"}</div>\n\n <button @click=${() => (this.error = undefined)}>\n <maptiler-geocode-clear-icon></maptiler-geocode-clear-icon>\n </button>\n </div>\n `\n : (!this.focusedDelayed && !this.keepListOpen) || this.listFeatures === undefined\n ? nothing\n : this.listFeatures.length === 0\n ? html`\n <div class=\"no-results\">\n <maptiler-geocode-fail-icon></maptiler-geocode-fail-icon>\n\n <div>\n ${this.noResultsMessage ??\n \"Oops! Looks like you're trying to predict something that's not quite right. We can't seem to find what you're looking for. Maybe try double-checking your spelling or try a different search term. Keep on typing - we'll do our best to get you where you need to go!\"}\n </div>\n </div>\n `\n : html`\n <ul class=\"options ${classMap({ \"open-on-top\": this.openListOnTop })}\" @mouseleave=${this.#handleMouseLeave} @keydown=${this.#handleKeyDown} role=\"listbox\">\n ${repeat(\n this.listFeatures,\n (feature) => feature.id + (feature.address ? \",\" + feature.address : \"\"),\n (feature, i) => html`\n <maptiler-geocoder-feature-item\n .feature=${feature}\n .showPlaceType=${this.showPlaceType ?? \"if-needed\"}\n itemStyle=${this.selectedItemIndex === i ? \"selected\" : this.picked?.id === feature.id ? \"picked\" : \"default\"}\n @mouseenter=${() => {\n this.#handleMouseEnter(i);\n }}\n @select=${() => {\n this.#pick(feature);\n }}\n .missingIconsCache=${this.#missingIconsCache}\n .iconsBaseUrl=${this.iconsBaseUrl ?? `https://cdn.maptiler.com/maptiler-geocoding-control/v${import.meta.env.VITE_LIB_VERSION}/icons/`}\n >\n ${feature.place_name}\n </maptiler-geocoder-feature-item>\n `,\n )}\n </ul>\n `}\n </form>\n `;\n /* eslint-enable @typescript-eslint/unbound-method */\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"maptiler-geocoder\": MaptilerGeocoderElement;\n }\n}\n\nconst propertyNames = [\n \"adjustUrl\",\n \"apiKey\",\n \"apiUrl\",\n \"bbox\",\n \"clearButtonTitle\",\n \"clearListOnPick\",\n \"clearOnBlur\",\n \"collapsed\",\n \"country\",\n \"debounceSearch\",\n \"enableReverse\",\n \"errorMessage\",\n \"excludeTypes\",\n \"reverseGeocodingExcludeTypes\",\n \"exhaustiveReverseGeocoding\",\n \"fetchParameters\",\n \"fetchFullGeometryOnPick\",\n \"filter\",\n \"fuzzyMatch\",\n \"iconsBaseUrl\",\n \"keepListOpen\",\n \"language\",\n \"limit\",\n \"reverseGeocodingLimit\",\n \"minLength\",\n \"noResultsMessage\",\n \"openListOnTop\",\n \"placeholder\",\n \"proximity\",\n \"reverseActive\",\n \"reverseButtonTitle\",\n \"selectFirst\",\n \"showPlaceType\",\n \"showResultsWhileTyping\",\n \"types\",\n \"reverseGeocodingTypes\",\n \"worldview\",\n] as const satisfies readonly (keyof MaptilerGeocoderOptions)[];\n","import { LitElement, css, svg, unsafeCSS } from \"lit\";\nimport { customElement } from \"lit/decorators.js\";\n\nimport styles from \"./marker.css?inline\";\n\n@customElement(\"maptiler-geocode-marker\")\nexport class MaptilerGeocodeMarkerElement extends LitElement {\n static styles = css`\n ${unsafeCSS(styles)}\n `;\n\n render() {\n return svg`\n <svg\n viewBox=\"0 0 70 85\"\n fill=\"none\"\n class:in-map={displayIn !== \"list\"}\n >\n <path\n stroke-width=\"4\"\n d=\"M 5,33.103579 C 5,17.607779 18.457,5 35,5 C 51.543,5 65,17.607779 65,33.103579 C 65,56.388679 40.4668,76.048179 36.6112,79.137779 C 36.3714,79.329879 36.2116,79.457979 36.1427,79.518879 C 35.8203,79.800879 35.4102,79.942779 35,79.942779 C 34.5899,79.942779 34.1797,79.800879 33.8575,79.518879 C 33.7886,79.457979 33.6289,79.330079 33.3893,79.138079 C 29.5346,76.049279 5,56.389379 5,33.103579 Z M 35.0001,49.386379 C 43.1917,49.386379 49.8323,42.646079 49.8323,34.331379 C 49.8323,26.016779 43.1917,19.276479 35.0001,19.276479 C 26.8085,19.276479 20.1679,26.016779 20.1679,34.331379 C 20.1679,42.646079 26.8085,49.386379 35.0001,49.386379 Z\"\n />\n </svg>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"maptiler-geocode-marker\": MaptilerGeocodeMarkerElement;\n }\n}\n","import bbox from \"@turf/bbox\";\nimport difference from \"@turf/difference\";\nimport flatten from \"@turf/flatten\";\nimport { featureCollection, polygon } from \"@turf/helpers\";\nimport union from \"@turf/union\";\nimport type { Feature, FeatureCollection, MultiPolygon, Polygon } from \"geojson\";\nimport type { BBox } from \"../types\";\nimport { unwrapBbox } from \"./geo-utils\";\n\nexport function getMask(picked: Feature<Polygon | MultiPolygon>): FeatureCollection<Polygon | MultiPolygon> | undefined {\n const diff = difference(\n featureCollection([\n polygon([\n [\n [180, 90],\n [-180, 90],\n [-180, -90],\n [180, -90],\n [180, 90],\n ],\n ]),\n picked,\n ]),\n );\n\n if (!diff) {\n return;\n }\n\n diff.properties = { isMask: true };\n\n const bb = unwrapBbox(bbox(picked) as BBox);\n\n // bigger features (continents, oceans) have bigger tolerance\n // because of the used source data simplification\n const tolerance = (bb[2] - bb[0]) / 360 / 1_000;\n\n const leaksLeft = bb[0] < -180;\n const leaksRight = bb[2] > 180;\n\n const flattened = flatten(picked);\n\n if (flattened.features.length > 1 && (leaksLeft || leaksRight)) {\n for (const poly of flattened.features) {\n const bb = unwrapBbox(bbox(poly) as BBox);\n\n if (leaksRight && bb[0] < -180 + tolerance) {\n for (const ring of poly.geometry.coordinates) {\n for (const position of ring) {\n position[0] += 360 - tolerance;\n }\n }\n }\n\n if (leaksLeft && bb[2] > 180 - tolerance) {\n for (const ring of poly.geometry.coordinates) {\n for (const position of ring) {\n position[0] -= 360 - tolerance;\n }\n }\n }\n }\n }\n\n return featureCollection([flattened.features.length < 2 ? picked : (union(flattened) ?? picked), diff]);\n}\n","import type { ControlOptions, Map as LMap, Marker, MarkerOptions, PathOptions, StyleFunction, ZoomPanOptions } from \"leaflet\";\n\nimport type { MaptilerGeocoderOptions } from \"../geocoder/geocoder-options\";\nimport type { Feature, PickedResultStyle } from \"../types\";\n\nexport type LeafletGeocodingControlOptions = Omit<MaptilerGeocoderOptions, \"fetchFullGeometryOnPick\"> & {\n /**\n * Marker to be added to the map at the location of the user-selected result using a default set of Marker options.\n *\n * - If `true` or `undefined` then a default marker will be used.\n * - If the value is a [MarkerOptions](https://leafletjs.com/reference.html#marker-option) then the marker will be constructed using these options.\n * - If the value is a function then it can return instance of the [Marker](https://leafletjs.com/reference.html#marker).\n * Function can accept `Feature` as a parameter which is `undefined` for the reverse location marker.\n * - If `false` or `null` then no marker will be added to the map.\n *\n * Default value is `true`.\n */\n marker?: null | boolean | MarkerOptions | ((map: LMap, feature?: Feature) => undefined | null | Marker);\n\n /**\n * Displays a marker on the selected feature from the result list. `marker` must be enabled in any way for this to display.\n *\n * Default: `true`.\n */\n markerOnSelected?: boolean;\n\n /**\n * Marker be added to the map at the location the geocoding results.\n *\n * - If `true` or `undefined` then a default marker will be used.\n * - If the value is a [MarkerOptions](https://leafletjs.com/reference.html#marker-option) then the marker will be constructed using these options.\n * - If the value is a function then it can return instance of the [Marker](https://leafletjs.com/reference.html#marker).\n * In this case the default pop-up won't be added to the marker.\n * Function can accept `Feature` as a parameter.\n * - If `false` or `null` then no marker will be added to the map.\n *\n * Default value is `true`.\n */\n showResultMarkers?: null | boolean | MarkerOptions | ((map: LMap, feature: Feature) => undefined | null | Marker);\n\n /**\n * Animation to picked feature on the map.\n *\n * - If `false` or `null` then animating the map to a selected result is disabled.\n * - If `true` or `undefined` then animating the map will use the default animation parameters.\n * - If the value is [ZoomPanOptions](https://leafletjs.com/reference.html#zoom/pan-options)\n * then it will be passed as options to the map [flyTo](https://leafletjs.com/reference.html#map-flyto)\n * or [fitBounds](https://leafletjs.com/reference.html#map-fitbounds) method providing control over the animation of the transition.\n *\n * Default value is `true`.\n */\n flyTo?: null | boolean | ZoomPanOptions;\n\n /**\n * Specifies if selected (not picked) feature should be also animated to on the map.\n *\n * Default: `false`.\n */\n flyToSelected?: boolean;\n\n /**\n * Style for full feature geometry GeoJSON.\n *\n * - If `false` or `null` then no full geometry is drawn.\n * - If `true` or `undefined` then default-styled full geometry is drawn.\n * - If an T then it must represent the style and will be used to style the full geometry.\n *\n * Default is the default style.\n */\n fullGeometryStyle?: null | boolean | PathOptions | StyleFunction;\n\n /**\n * Style of the picked result on the map:\n * - `\"marker-only\"`: Show only a marker at the center of the feature.\n * - `\"full-geometry\"`: Display the full feature geometry.\n * - `\"full-geometry-including-polygon-center-marker\"`: Display full geometry with a marker at the polygon center.\n *\n * Default: `\"full-geometry\"`.\n */\n pickedResultStyle?: PickedResultStyle;\n\n /**\n * Specifies the zoom level to animate the map to for a geocoded result when no bounding box is present or when the result is a point.\n * If a bounding box is present and not a point, the map will fit to the bounding box.\n *\n * Values are key-value pairs where the key is a `<type>` or `<type>.<category>` and the value is the zoom level.\n *\n * Default: `ZOOM_DEFAULTS`.\n */\n zoom?: Record<string, number>;\n} & ControlOptions;\n\nexport const ZOOM_DEFAULTS: Record<string, number> = {\n continental_marine: 4,\n country: 4,\n major_landform: 8,\n region: 5,\n subregion: 6,\n county: 7,\n joint_municipality: 8,\n joint_submunicipality: 9,\n municipality: 10,\n municipal_district: 11,\n locality: 12,\n neighbourhood: 13,\n place: 14,\n postal_code: 14,\n road: 16,\n poi: 17,\n address: 18,\n \"poi.peak\": 15,\n \"poi.shop\": 18,\n \"poi.cafe\": 18,\n \"poi.restaurant\": 18,\n \"poi.aerodrome\": 13,\n // TODO add many more\n};\n\nexport const DEFAULT_GEOMETRY_STYLE: StyleFunction = (feature) => {\n const type = feature?.geometry.type;\n const isMask = (feature?.properties as { isMask?: boolean } | undefined)?.isMask;\n const weight = isMask ? 0 : type === \"LineString\" || type === \"MultiLineString\" ? 3 : 2;\n\n return {\n color: \"#3170fe\",\n fillColor: \"#000\",\n fillOpacity: isMask ? 0.1 : 0,\n weight,\n dashArray: [weight, weight],\n lineCap: \"butt\",\n };\n};\n","import bbox from \"@turf/bbox\";\nimport { feature, featureCollection } from \"@turf/helpers\";\nimport union from \"@turf/union\";\nimport type { GeometryCollection, LineString, MultiLineString, MultiPolygon, Polygon } from \"geojson\";\nimport {\n Control,\n type ControlOptions,\n DivIcon,\n DomEvent,\n Evented,\n GeoJSON,\n type LatLng,\n type LatLngLiteral,\n type LeafletMouseEvent,\n type Map as LMap,\n Marker,\n type MarkerOptions,\n Popup,\n type PopupOptions,\n} from \"leaflet\";\n\nimport type { BBox, Feature } from \"../types\";\nimport { shiftPolyCollection, unwrapBbox } from \"../utils/geo-utils\";\nimport { getMask } from \"../utils/mask\";\n\nimport \"../geocoder/geocoder\";\nimport type { MaptilerGeocoderElement } from \"../geocoder/geocoder\";\nimport type {\n FeaturesListedEvent,\n MaptilerGeocoderEventName,\n MaptilerGeocoderEventNameMap,\n PickEvent,\n QueryChangeEvent,\n RequestEvent,\n ResponseEvent,\n ReverseToggleEvent,\n SelectEvent,\n} from \"../geocoder/geocoder-events\";\nimport type { GeocodingControlBase } from \"./base-control\";\n\nimport \"../components/marker\";\n\nimport type { LeafletGeocodingControlEventName, LeafletGeocodingControlEventNameMap } from \"./leaflet-events\";\nimport { DEFAULT_GEOMETRY_STYLE, type LeafletGeocodingControlOptions, ZOOM_DEFAULTS } from \"./leaflet-options\";\n\n/* eslint-disable @typescript-eslint/no-unsafe-declaration-merging */\n/** Base class for Control needs to extend both Control and Evented */\nabstract class EventedControl<Options extends ControlOptions> extends Control {\n override options!: Options;\n}\nObject.assign(EventedControl.prototype, Evented.prototype);\ninterface EventedControl<Options extends ControlOptions> extends Control, Evented {\n options: Options;\n}\n/* eslint-enable @typescript-eslint/no-unsafe-declaration-merging */\n\nexport class LeafletGeocodingControl extends EventedControl<LeafletGeocodingControlOptions> implements GeocodingControlBase<LeafletGeocodingControlOptions> {\n #map?: LMap;\n #element?: MaptilerGeocoderElement;\n\n constructor(options: LeafletGeocodingControlOptions = {}) {\n super(options);\n }\n\n /** @internal Not to be called directly */\n onAdd(map: LMap): HTMLElement {\n this.#map = map;\n this.#element = map.getContainer().ownerDocument.createElement(\"maptiler-geocoder\");\n this.#element.classList.add(\"leaflet-geocoder\");\n\n this.#setElementOptions();\n this.#addEventListeners();\n this.#addResultLayer();\n\n const div = map.getContainer().ownerDocument.createElement(\"div\");\n div.classList.add(\"leaflet-ctrl-geocoder\", \"leaflet-bar\");\n div.style.zIndex = \"850\"; // Position the geocoder dropdown list above the default Leaflet control z-index of 800\n div.appendChild(this.#element as Node);\n\n DomEvent.disableClickPropagation(div);\n DomEvent.disableScrollPropagation(div);\n\n return div;\n }\n\n /** @internal Not to be called directly */\n onRemove(): void {\n this.#removeEventListeners();\n this.#removeResultLayer();\n this.#map = undefined;\n this.#element = undefined;\n }\n\n setOptions(options: LeafletGeocodingControlOptions) {\n Object.assign(this.options, options);\n this.#setElementOptions();\n }\n\n setQuery(value: string) {\n this.#element?.setQuery(value);\n }\n\n submitQuery(value: string) {\n this.#element?.submitQuery(value);\n }\n\n clearMap() {\n this.#markedFeatures = [];\n this.#setFeatures(undefined, undefined);\n }\n\n clearList() {\n this.#element?.clearList();\n }\n\n setReverseMode(reverseActive: boolean) {\n this.setOptions({ reverseActive });\n }\n\n focus(options?: FocusOptions) {\n this.#element?.focus(options);\n }\n\n blur() {\n this.#element?.blur();\n }\n\n /** Markers currently displayed on the map */\n #markers = new Map<Feature, Marker>();\n /** Marker representing the selected feature */\n #selectedMarker: Marker | undefined;\n /** Marker representing the picked feature */\n #reverseMarker: Marker | undefined;\n /** Features currently marked on the map */\n #markedFeatures?: Feature[];\n /** Remember last feature that the map flew to as to not do it again */\n #prevIdToFly?: string;\n /** Layer used for showing geometry results */\n #resultLayer?: GeoJSON;\n\n #elementEventListeners: { [EventName in MaptilerGeocoderEventName]: (e: MaptilerGeocoderEventNameMap[EventName]) => void } = {\n reversetoggle: (event: ReverseToggleEvent) => {\n const container = this.#map?.getContainer();\n if (container) {\n container.style.cursor = event.detail.reverse ? \"crosshair\" : \"\";\n }\n this.#dispatch(\"reversetoggle\", event.detail);\n },\n querychange: (event: QueryChangeEvent) => {\n const coords = event.detail.reverseCoords;\n\n this.#setReverseMarker(coords ? { lng: coords.decimalLongitude, lat: coords.decimalLatitude } : undefined);\n this.#dispatch(\"querychange\", event.detail);\n },\n queryclear: () => {\n this.#setReverseMarker(undefined);\n this.#dispatch(\"queryclear\");\n },\n request: (event: RequestEvent) => {\n this.#dispatch(\"request\", event.detail);\n },\n response: (event: ResponseEvent) => {\n this.#dispatch(\"response\", event.detail);\n },\n select: (event: SelectEvent) => {\n const selected = event.detail.feature;\n if (selected && this.#flyToEnabled && this.options.flyToSelected) {\n this.#flyTo({ lng: selected.center[0], lat: selected.center[1] }, this.#computeZoom(selected));\n }\n if (this.#markedFeatures && selected) {\n this.#setSelectedMarker(selected);\n }\n this.#dispatch(\"select\", event.detail);\n },\n pick: (event: PickEvent) => {\n const picked = event.detail.feature;\n if (picked && picked.id !== this.#prevIdToFly && this.#flyToEnabled) {\n this.#goToPicked(picked);\n this.#setFeatures(this.#markedFeatures, picked);\n }\n\n this.#prevIdToFly = picked?.id;\n\n this.#dispatch(\"pick\", event.detail);\n },\n featuresshow: () => {\n this.#dispatch(\"featuresshow\");\n },\n featureshide: () => {\n this.#dispatch(\"featureshide\");\n },\n featureslisted: (event: FeaturesListedEvent) => {\n const features = event.detail.features;\n this.#markedFeatures = features;\n this.#setFeatures(this.#markedFeatures, undefined);\n this.#zoomToResults(features);\n this.#dispatch(\"featureslisted\", event.detail);\n },\n featuresclear: () => {\n this.#markedFeatures = undefined;\n this.#setFeatures(undefined, undefined);\n this.#dispatch(\"featuresclear\");\n },\n focusin: () => {\n this.#dispatch(\"focusin\");\n },\n focusout: () => {\n this.#dispatch(\"focusout\");\n },\n };\n #mapEventListeners = {\n render: () => {\n const zoom = this.#map?.getZoom();\n const center = this.#map?.getCenter();\n this.#element?.handleMapChange(zoom && center ? [zoom, center.lng, center.lat] : undefined);\n },\n click: (e: LeafletMouseEvent) => {\n this.#element?.handleMapClick([e.latlng.lng, e.latlng.lat]);\n },\n };\n\n #setElementOptions() {\n if (!this.#element) return;\n\n this.#element.setOptions(this.options);\n this.#element.fetchFullGeometryOnPick = this.options.pickedResultStyle !== \"marker-only\";\n this.#element.openListOnTop = this.options.position === \"bottomleft\" || this.options.position === \"bottomright\";\n }\n\n #addEventListeners() {\n if (!this.#element || !this.#map) return;\n\n for (const [type, listener] of Object.entries(this.#elementEventListeners)) {\n this.#element.addEventListener(type as MaptilerGeocoderEventName, listener as EventListener);\n }\n\n this.#map.on(this.#mapEventListeners);\n }\n\n #removeEventListeners() {\n if (!this.#element || !this.#map) return;\n\n for (const [type, listener] of Object.entries(this.#elementEventListeners)) {\n this.#element.removeEventListener(type as MaptilerGeocoderEventName, listener as EventListener);\n }\n\n this.#map.off(this.#mapEventListeners);\n }\n\n #dispatch<E extends LeafletGeocodingControlEventName>(type: E, detail?: LeafletGeocodingControlEventNameMap[E]): this {\n return super.fire(type, detail);\n }\n\n #goToPicked(picked: Feature) {\n if (picked.bbox[0] === picked.bbox[2] && picked.bbox[1] === picked.bbox[3]) {\n this.#flyTo({ lng: picked.center[0], lat: picked.center[1] }, this.#computeZoom(picked));\n } else {\n this.#fitBounds(unwrapBbox(picked.bbox), 50, this.#computeZoom(picked));\n }\n }\n\n #zoomToResults(features: Feature[] | undefined) {\n if (!features || features.length === 0 || !this.#flyToEnabled) return;\n\n const fuzzyOnly = features.every((feature) => feature.matching_text);\n const bbox = features.reduce<BBox>(\n (bbox, feature) =>\n fuzzyOnly || !feature.matching_text\n ? [Math.min(bbox[0], feature.bbox[0]), Math.min(bbox[1], feature.bbox[1]), Math.max(bbox[2], feature.bbox[2]), Math.max(bbox[3], feature.bbox[3])]\n : bbox,\n [180, 90, -180, -90],\n );\n\n const allZoom = features\n .map((feature) => this.#computeZoom(feature))\n .filter((zoom) => zoom !== undefined)\n .reduce<number | undefined>((allZoom, featZoom) => (allZoom === undefined ? featZoom : Math.max(allZoom, featZoom)), undefined);\n\n this.#fitBounds(unwrapBbox(bbox), 50, allZoom);\n }\n\n #computeZoom(feature: Feature): number | undefined {\n if (feature.bbox[0] !== feature.bbox[2] || feature.bbox[1] !== feature.bbox[3]) {\n return undefined;\n }\n\n const index = feature.id.replace(/\\..*/, \"\");\n const zoomMap = this.options.zoom ?? ZOOM_DEFAULTS;\n\n return (\n (Array.isArray(feature.properties?.categories)\n ? (feature.properties.categories as string[]).reduce<number | undefined>((a, category) => {\n const b = zoomMap[index + \".\" + category] as number | undefined;\n\n return a === undefined ? b : b === undefined ? a : Math.max(a, b);\n }, undefined)\n : undefined) ?? zoomMap[index]\n );\n }\n\n get #flyToEnabled() {\n return Boolean(this.options.flyTo) || this.options.flyTo === undefined;\n }\n get #flyToOptions() {\n return typeof this.options.flyTo === \"boolean\" ? {} : this.options.flyTo;\n }\n get #fitBoundsOptions() {\n return typeof this.options.flyTo === \"boolean\" ? {} : this.options.flyTo;\n }\n\n #flyTo(center: LatLng | LatLngLiteral, zoom?: number): void {\n this.#map?.flyTo(center, zoom, this.#flyToOptions ?? undefined);\n }\n\n #fitBounds(bbox: BBox, padding: number, maxZoom?: number): void {\n this.#map?.fitBounds(\n [\n [bbox[1], bbox[0]],\n [bbox[3], bbox[2]],\n ],\n { padding: [padding, padding], ...(maxZoom ? { maxZoom } : {}), ...this.#fitBoundsOptions },\n );\n }\n\n #setReverseMarker(coordinates?: LatLng | LatLngLiteral) {\n if (this.options.marker === false || this.options.marker === null || !this.#map) {\n return;\n }\n\n if (!coordinates) {\n this.#reverseMarker?.remove();\n this.#reverseMarker = undefined;\n return;\n }\n\n if (!this.#reverseMarker) {\n if (this.options.marker instanceof Function) {\n this.#reverseMarker = this.options.marker(this.#map) ?? undefined;\n } else {\n this.#reverseMarker = this.#createMarker(coordinates, this.options.marker).addTo(this.#map);\n this.#reverseMarker.getElement()?.classList.add(\"marker-reverse\");\n }\n }\n\n this.#reverseMarker?.setLatLng(coordinates);\n }\n\n #setFeatures(markedFeatures: Feature[] | undefined, picked: Feature | undefined): void {\n if (!this.#map) {\n return;\n }\n\n for (const marker of this.#markers.values()) {\n marker.remove();\n }\n\n this.#markers = new Map();\n\n this.#resultLayer?.clearLayers();\n\n const addMarker = () => {\n if (!picked || !this.#map || this.options.marker === false || this.options.marker === null) return;\n\n const marker =\n this.options.marker instanceof Function\n ? this.options.marker(this.#map, picked)\n : this.#createMarker({ lng: picked.center[0], lat: picked.center[1] }, this.options.marker).addTo(this.#map);\n if (marker) {\n this.#markers.set(picked, marker);\n }\n };\n\n if (picked?.geometry.type === \"GeometryCollection\") {\n const polygonGeometries = picked.geometry.geometries.filter(\n (geometry): geometry is Polygon | MultiPolygon => geometry.type === \"Polygon\" || geometry.type === \"MultiPolygon\",\n );\n\n if (polygonGeometries.length > 0) {\n const unioned = union(featureCollection(polygonGeometries.map((geom) => feature(geom))));\n\n if (unioned) {\n const mask = getMask({ ...picked, geometry: unioned.geometry });\n if (mask) {\n // leaflet doesn't repeat features every 360 degrees along longitude so we clone it manually to the direction(s) which could be displayed when auto-zoomed on the feature\n const features = [...mask.features];\n const bb = unwrapBbox(bbox(picked) as BBox);\n const span = bb[2] - bb[0];\n\n if (bb[0] - span / 4 < -180) {\n features.push(...shiftPolyCollection(mask, -360).features);\n }\n\n if (bb[2] + span / 4 > 180) {\n features.push(...shiftPolyCollection(mask, 360).features);\n }\n\n this.#resultLayer?.addData(featureCollection(features));\n }\n }\n } else {\n const lineGeometries = picked.geometry.geometries.filter(\n (geometry): geometry is LineString | MultiLineString => geometry.type === \"LineString\" || geometry.type === \"MultiLineString\",\n );\n\n if (lineGeometries.length > 0) {\n this.#resultLayer?.addData({\n ...picked,\n geometry: { type: \"GeometryCollection\", geometries: lineGeometries },\n } as Feature<GeometryCollection>);\n }\n }\n } else if (picked?.geometry.type.endsWith(\"Polygon\")) {\n const mask = getMask(picked as Feature<Polygon | MultiPolygon>);\n if (mask) {\n this.#resultLayer?.addData(mask);\n }\n if (this.options.pickedResultStyle === \"full-geometry-including-polygon-center-marker\") {\n addMarker();\n }\n } else if (picked?.geometry.type.endsWith(\"LineString\")) {\n this.#resultLayer?.addData(picked);\n } else if (picked?.geometry.type.endsWith(\"Point\")) {\n addMarker();\n }\n\n if (this.options.showResultMarkers !== false && this.options.showResultMarkers !== null) {\n for (const feature of markedFeatures ?? []) {\n if (feature.id === picked?.id || feature.place_type.includes(\"reverse\")) {\n continue;\n }\n\n let marker;\n\n if (this.options.showResultMarkers instanceof Function) {\n marker = this.options.showResultMarkers(this.#map, feature);\n\n if (!marker) {\n continue;\n }\n } else {\n marker = this.#createMarker({ lng: feature.center[0], lat: feature.center[1] }, this.options.showResultMarkers)\n .bindPopup(\n new Popup({\n offset: [0.3, -21],\n closeButton: false,\n closeOnMove: true,\n className: \"maptiler-gc-popup\",\n } as PopupOptions).setContent(feature.place_type[0] === \"reverse\" ? feature.place_name : feature.place_name.replace(/,.*/, \"\")),\n )\n .addTo(this.#map);\n\n marker.getElement()?.classList.add(\"marker-interactive\");\n }\n\n const element = marker.getElement();\n\n element?.addEventListener(\"click\", (e) => {\n e.stopPropagation();\n this.#dispatch(\"markerclick\", { feature, marker });\n });\n\n element?.addEventListener(\"mouseenter\", () => {\n this.#dispatch(\"markermouseenter\", { feature, marker });\n marker.togglePopup();\n });\n\n element?.addEventListener(\"mouseleave\", () => {\n this.#dispatch(\"markermouseleave\", { feature, marker });\n marker.togglePopup();\n });\n\n element?.classList.toggle(\"marker-fuzzy\", !!feature.matching_text);\n\n this.#markers.set(feature, marker);\n }\n }\n }\n\n #setSelectedMarker(feature: Feature): void {\n this.#selectedMarker?.getElement()?.classList.toggle(\"marker-selected\", false);\n this.#selectedMarker = undefined;\n\n if (this.options.markerOnSelected !== false) {\n this.#selectedMarker = this.#markers.get(feature);\n this.#selectedMarker?.getElement()?.classList.toggle(\"marker-selected\", true);\n }\n }\n\n #addResultLayer() {\n if (!this.#map) {\n return;\n }\n\n this.#resultLayer = new GeoJSON(undefined, {\n style: this.#getFullGeometryStyle(),\n interactive: false,\n }).addTo(this.#map);\n }\n\n #removeResultLayer() {\n if (!this.#map) {\n return;\n }\n\n this.#resultLayer?.removeFrom(this.#map);\n this.#resultLayer = undefined;\n }\n\n #createMarker(center: LatLng | LatLngLiteral, options: MarkerOptions | true | undefined) {\n if (typeof options !== \"object\") {\n options = { icon: new DivIcon({ html: this.#map?.getContainer().ownerDocument.createElement(\"maptiler-geocode-marker\"), iconAnchor: [12.3, 30], className: \"\" }) };\n }\n return new Marker(center, options);\n }\n\n #getFullGeometryStyle() {\n const { fullGeometryStyle } = this.options;\n if (fullGeometryStyle === true || fullGeometryStyle === undefined) return DEFAULT_GEOMETRY_STYLE;\n if (fullGeometryStyle === false || fullGeometryStyle === null) return undefined;\n return fullGeometryStyle;\n }\n}\n"],"names":["MaptilerGeocodeClearIconElement","LitElement","svg","css","__decorateClass","customElement","MaptilerGeocodeFailIconElement","MaptilerGeocodeLoadingIconElement","html","MaptilerGeocodeReverseGeocodingIconElement","MaptilerGeocodeSearchIconElement","wrapNum","x","range","includeMax","max","min","d","unwrapBbox","bbox0","bbox","shiftPolyCollection","featureCollection","distance","cloned","clone","feature","poly","shiftPolyCoords","coordinates","ring","position","cachedLocation","getProximity","centerAndZoom","proximity","ac","rule","coords","resolve","reject","pos","c","err","_MaptilerGeocoderFeatureItemElement_instances","categories_get","isReverse_get","placeType_get","loadSprites_fn","handleImgError_fn","loadIcon_fn","loadIcon2_fn","hidpi","scaleUrl","scaleFactor","sprites","spritePromise","MaptilerGeocoderFeatureItemElement","__privateAdd","changedProperties","__privateGet","__privateMethod","styleMap","nothing","response","data","unsafeCSS","styles","property","state","_isInitialized","_wasFeatureListVisible","_searchTimeoutRef","_missingIconsCache","_centerAndZoom","_MaptilerGeocoderElement_instances","selected_get","isFeatureListVisible_get","isLoading_get","isSearchValueTooShort_get","dispatch_fn","handleSubmit_fn","isQueryReverse_fn","focusInputAndSelectText_fn","changeSearchValue_fn","clearFeatures_fn","submitSearchValue_fn","search_fn","handleReverse_fn","handleKeyDown_fn","handleInput_fn","pick_fn","handleMouseEnter_fn","handleMouseLeave_fn","handleClear_fn","MaptilerGeocoderElement","__privateSet","options","elementOptions","prop","propertyNames","value","type","listener","classMap","repeat","i","detail","event","searchValue","convert","sv","byId","exact","apiUrl","isReverse","urlObj","sp","zoom","effTypes","typeRule","effExcludeTypes","limit","effReverseGeocodingLimit","noTypes","url","res","e","dir","listFeature","index","query","MaptilerGeocodeMarkerElement","getMask","picked","diff","difference","polygon","bb","tolerance","leaksLeft","leaksRight","flattened","flatten","union","ZOOM_DEFAULTS","DEFAULT_GEOMETRY_STYLE","isMask","weight","EventedControl","Control","Evented","LeafletGeocodingControl","#map","#element","map","#setElementOptions","#addEventListeners","#addResultLayer","div","DomEvent","#removeEventListeners","#removeResultLayer","#markedFeatures","#setFeatures","reverseActive","#markers","#selectedMarker","#reverseMarker","#prevIdToFly","#resultLayer","#elementEventListeners","container","#dispatch","#setReverseMarker","selected","#flyToEnabled","#flyTo","#computeZoom","#setSelectedMarker","#goToPicked","features","#zoomToResults","#mapEventListeners","center","#fitBounds","fuzzyOnly","allZoom","featZoom","zoomMap","a","category","b","#flyToOptions","#fitBoundsOptions","padding","maxZoom","#createMarker","markedFeatures","marker","addMarker","polygonGeometries","geometry","unioned","geom","mask","span","lineGeometries","Popup","element","GeoJSON","#getFullGeometryStyle","DivIcon","Marker","fullGeometryStyle"],"mappings":"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"}