@maptiler/geocoding-control 1.4.2-dev.2 → 2.0.0-rc.1

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 (72) hide show
  1. package/MapLibreBasedGeocodingControl.d.ts +2971 -35
  2. package/leaflet-controller.d.ts +1 -1
  3. package/leaflet-controller.js +580 -569
  4. package/leaflet-controller.js.map +1 -1
  5. package/leaflet-controller.umd.js +3 -3
  6. package/leaflet-controller.umd.js.map +1 -1
  7. package/leaflet.d.ts +74 -16
  8. package/leaflet.js +1344 -1311
  9. package/leaflet.js.map +1 -1
  10. package/leaflet.umd.js +3 -3
  11. package/leaflet.umd.js.map +1 -1
  12. package/maplibregl-controller.d.ts +7 -7
  13. package/maplibregl-controller.js +683 -661
  14. package/maplibregl-controller.js.map +1 -1
  15. package/maplibregl-controller.umd.js +3 -3
  16. package/maplibregl-controller.umd.js.map +1 -1
  17. package/maplibregl.js +1632 -1481
  18. package/maplibregl.js.map +1 -1
  19. package/maplibregl.umd.js +3 -3
  20. package/maplibregl.umd.js.map +1 -1
  21. package/maptilersdk.js +1642 -1488
  22. package/maptilersdk.js.map +1 -1
  23. package/maptilersdk.umd.js +3 -3
  24. package/maptilersdk.umd.js.map +1 -1
  25. package/openlayers-controller.d.ts +1 -1
  26. package/openlayers-controller.js +308 -306
  27. package/openlayers-controller.js.map +1 -1
  28. package/openlayers-controller.umd.js +3 -3
  29. package/openlayers-controller.umd.js.map +1 -1
  30. package/openlayers.d.ts +21 -0
  31. package/openlayers.js +1301 -1313
  32. package/openlayers.js.map +1 -1
  33. package/openlayers.umd.js +3 -3
  34. package/openlayers.umd.js.map +1 -1
  35. package/package.json +18 -18
  36. package/react.d.ts +4 -4
  37. package/react.js +663 -644
  38. package/react.js.map +1 -1
  39. package/react.umd.js +1 -1
  40. package/react.umd.js.map +1 -1
  41. package/style.css +1 -1
  42. package/svelte/FeatureItem.svelte.d.ts +1 -1
  43. package/svelte/GeocodingControl.svelte +64 -33
  44. package/svelte/GeocodingControl.svelte.d.ts +25 -9
  45. package/svelte/MapLibreBasedGeocodingControl.d.ts +2971 -35
  46. package/svelte/MapLibreBasedGeocodingControl.js +166 -58
  47. package/svelte/leaflet-controller.d.ts +1 -1
  48. package/svelte/leaflet-controller.js +50 -24
  49. package/svelte/leaflet.d.ts +74 -16
  50. package/svelte/leaflet.js +25 -15
  51. package/svelte/maplibregl-controller.d.ts +7 -7
  52. package/svelte/maplibregl-controller.js +96 -66
  53. package/svelte/maplibregl.js +10 -7
  54. package/svelte/maptilersdk.js +23 -18
  55. package/svelte/openlayers-controller.d.ts +1 -1
  56. package/svelte/openlayers-controller.js +4 -1
  57. package/svelte/openlayers.d.ts +21 -0
  58. package/svelte/openlayers.js +30 -45
  59. package/svelte/react.d.ts +4 -4
  60. package/svelte/types.d.ts +38 -12
  61. package/svelte/vanilla.d.ts +14 -1
  62. package/svelte/vanilla.js +31 -8
  63. package/types.d.ts +38 -12
  64. package/vanilla.d.ts +14 -1
  65. package/vanilla.js +838 -791
  66. package/vanilla.js.map +1 -1
  67. package/vanilla.umd.js +1 -1
  68. package/vanilla.umd.js.map +1 -1
  69. package/maplibregl.d.ts +0 -16
  70. package/maptilersdk.d.ts +0 -11
  71. package/svelte/maplibregl.d.ts +0 -16
  72. package/svelte/maptilersdk.d.ts +0 -11
package/style.css CHANGED
@@ -1 +1 @@
1
- svg.svelte-d2loi5{display:block;fill:#e15042}li.svelte-ltkwvy.svelte-ltkwvy{text-align:left;cursor:default;display:grid;grid-template-columns:40px 1fr;color:var(--color-text);padding:8px 0;font-size:14px;line-height:18px;min-width:fit-content}li.svelte-ltkwvy.svelte-ltkwvy:first-child{padding-top:10px}li.svelte-ltkwvy.svelte-ltkwvy:last-child{padding-bottom:10px}li.selected.svelte-ltkwvy.svelte-ltkwvy{background-color:#f3f6ff}li.selected.svelte-ltkwvy.svelte-ltkwvy{animation:svelte-ltkwvy-backAndForth 5s linear infinite}li.selected.svelte-ltkwvy .primary.svelte-ltkwvy{color:#2b8bfb}li.svelte-ltkwvy>img.svelte-ltkwvy{align-self:center;justify-self:center;opacity:.75}.texts.svelte-ltkwvy.svelte-ltkwvy{padding:0 17px 0 0}.texts.svelte-ltkwvy>.svelte-ltkwvy{white-space:nowrap;display:block;min-width:fit-content}.primary.svelte-ltkwvy.svelte-ltkwvy{font-weight:600}.secondary.svelte-ltkwvy.svelte-ltkwvy{color:#aeb6c7;padding-left:4px}.line2.svelte-ltkwvy.svelte-ltkwvy{color:#aeb6c7}@keyframes svelte-ltkwvy-backAndForth{0%{transform:translate(0)}10%{transform:translate(0)}45%{transform:translate(calc(-100% + 270px))}55%{transform:translate(calc(-100% + 270px))}90%{transform:translate(0)}to{transform:translate(0)}}div.svelte-7cmwmc{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);pointer-events:none;display:flex;align-items:center}svg.svelte-7cmwmc{animation:svelte-7cmwmc-rotate .8s infinite cubic-bezier(.45,.05,.55,.95)}@keyframes svelte-7cmwmc-rotate{0%{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}svg.svelte-gzo3ar.svelte-gzo3ar{display:block;fill:#6b7c93;stroke:#6b7c93}.list-icon.svelte-gzo3ar.svelte-gzo3ar{grid-row:1/3;align-self:center;margin:8px}.in-map.svelte-gzo3ar.svelte-gzo3ar{height:30px}.maplibregl-canvas-container .marker-selected{z-index:1}.maplibregl-canvas-container svg.svelte-gzo3ar path.svelte-gzo3ar,.leaflet-map-pane svg.svelte-gzo3ar path.svelte-gzo3ar{fill:#3170fe;stroke:#3170fe}.marker-selected svg.svelte-gzo3ar path.svelte-gzo3ar{fill:#98b7ff;stroke:#3170fe}.marker-reverse svg.svelte-gzo3ar path.svelte-gzo3ar{fill:silver;stroke:gray}.marker-interactive{cursor:pointer!important}.maptiler-gc-popup>.maplibregl-popup-content{padding:2px 8px}svg.svelte-en2qvf{display:block;fill:var(--color-icon-button)}circle.svelte-1aq105l{stroke-width:1.875;fill:none}path.svelte-1aq105l{stroke-width:1.875;stroke-linecap:round}svg.svelte-1aq105l{display:block;stroke:var(--color-icon-button)}form.svelte-1uvos7g.svelte-1uvos7g{font-family:Open Sans,Ubuntu,Helvetica Neue,Arial,Helvetica,sans-serif;position:relative;background-color:#fff;z-index:10;border-radius:4px;margin:0;transition:max-width .25s;box-shadow:0 2px 5px #33335926;--color-text:#444952;--color-icon-button:#444952}form.svelte-1uvos7g.svelte-1uvos7g,form.svelte-1uvos7g .svelte-1uvos7g,form.svelte-1uvos7g .svelte-1uvos7g:after,form.svelte-1uvos7g .svelte-1uvos7g:before{box-sizing:border-box}form.can-collapse.svelte-1uvos7g.svelte-1uvos7g{max-width:29px}form.can-collapse.svelte-1uvos7g input.svelte-1uvos7g::placeholder{transition:opacity .25s;opacity:0}form.svelte-1uvos7g.svelte-1uvos7g,form.svelte-1uvos7g.svelte-1uvos7g:focus-within,form.svelte-1uvos7g.svelte-1uvos7g:hover{width:270px;max-width:270px}form.svelte-1uvos7g input.svelte-1uvos7g::placeholder,form.svelte-1uvos7g:focus-within input.svelte-1uvos7g::placeholder,form.svelte-1uvos7g:hover input.svelte-1uvos7g::placeholder{opacity:1}input.svelte-1uvos7g.svelte-1uvos7g{font:inherit;font-size:14px;flex-grow:1;min-height:29px;background-color:transparent;color:#444952;white-space:nowrap;overflow:hidden;border:0;margin:0;padding:0}input.svelte-1uvos7g.svelte-1uvos7g:focus{color:#444952;outline:0;outline:none;box-shadow:none}ul.svelte-1uvos7g.svelte-1uvos7g,div.error.svelte-1uvos7g.svelte-1uvos7g,div.no-results.svelte-1uvos7g.svelte-1uvos7g{background-color:#fff;border-radius:4px;left:0;list-style:none;margin:0;padding:0;position:absolute;width:100%;top:calc(100% + 6px);overflow:hidden}ul.svelte-1uvos7g.svelte-1uvos7g{font-size:14px;line-height:16px;box-shadow:0 5px 10px #33335926}div.error.svelte-1uvos7g.svelte-1uvos7g,div.no-results.svelte-1uvos7g.svelte-1uvos7g{font:inherit;line-height:18px;font-size:12px;display:flex;gap:16px}div.error.svelte-1uvos7g.svelte-1uvos7g{padding:16px;font-weight:600;color:#e25041;background-color:#fbeae8}div.error.svelte-1uvos7g div.svelte-1uvos7g{flex-grow:1}div.error.svelte-1uvos7g svg{flex-shrink:0;width:20px;height:20px}div.error.svelte-1uvos7g button.svelte-1uvos7g{flex-shrink:0}div.error.svelte-1uvos7g button.svelte-1uvos7g>svg{width:13px;fill:#e25041}div.error.svelte-1uvos7g button.svelte-1uvos7g:hover svg,div.error.svelte-1uvos7g button.svelte-1uvos7g:active svg{fill:#444952}div.no-results.svelte-1uvos7g.svelte-1uvos7g{padding:14px 24px 14px 16px;font-weight:400;color:#6b7c93;box-shadow:0 5px 10px #33335926}div.no-results.svelte-1uvos7g svg{margin-top:4px;flex-shrink:0;width:20px;height:20px;width:30px;height:30px}.maplibregl-ctrl-bottom-left ul.svelte-1uvos7g.svelte-1uvos7g,.maplibregl-ctrl-bottom-right ul.svelte-1uvos7g.svelte-1uvos7g{top:auto;bottom:100%}button.svelte-1uvos7g.svelte-1uvos7g{padding:0;margin:0;border:0;background-color:transparent;height:auto;width:auto}button.svelte-1uvos7g.svelte-1uvos7g:hover{background-color:transparent}button.svelte-1uvos7g:hover svg,button.svelte-1uvos7g:active svg{fill:#2b8bfb}.input-group.svelte-1uvos7g.svelte-1uvos7g{display:flex;align-items:stretch;gap:7px;padding-inline:8px;border-radius:4px;overflow:hidden}.input-group.svelte-1uvos7g.svelte-1uvos7g:focus-within{outline:#2b8bfb solid 2px}.search-button.svelte-1uvos7g.svelte-1uvos7g{flex-shrink:0}.maplibregl-ctrl-geocoder:not(.maptiler-ctrl) .search-button svg{width:12px!important;transform:translate(.5px)}.clear-button-container.svelte-1uvos7g.svelte-1uvos7g{display:flex;display:none;position:relative;align-items:stretch}.clear-button-container.displayable.svelte-1uvos7g.svelte-1uvos7g{display:flex;flex-shrink:0}.maplibregl-ctrl-geocoder{position:relative;z-index:3}.maptiler-ctrl:not(:empty){box-shadow:none}.maptiler-ctrl .input-group.svelte-1uvos7g.svelte-1uvos7g{padding-inline:8px;border:white solid 2px}.maptiler-ctrl .input-group.svelte-1uvos7g.svelte-1uvos7g:focus-within{border:#2b8bfb solid 2px;outline:0;outline:none}.maptiler-ctrl form.can-collapse.svelte-1uvos7g.svelte-1uvos7g{max-width:33px}.maptiler-ctrl form.svelte-1uvos7g.svelte-1uvos7g,.maptiler-ctrl form.svelte-1uvos7g.svelte-1uvos7g:focus-within,.maptiler-ctrl form.svelte-1uvos7g.svelte-1uvos7g:hover{width:270px;max-width:270px}
1
+ svg.svelte-d2loi5{display:block;fill:#e15042}li.svelte-ltkwvy.svelte-ltkwvy{text-align:left;cursor:default;display:grid;grid-template-columns:40px 1fr;color:var(--color-text);padding:8px 0;font-size:14px;line-height:18px;min-width:fit-content}li.svelte-ltkwvy.svelte-ltkwvy:first-child{padding-top:10px}li.svelte-ltkwvy.svelte-ltkwvy:last-child{padding-bottom:10px}li.selected.svelte-ltkwvy.svelte-ltkwvy{background-color:#f3f6ff}li.selected.svelte-ltkwvy.svelte-ltkwvy{animation:svelte-ltkwvy-backAndForth 5s linear infinite}li.selected.svelte-ltkwvy .primary.svelte-ltkwvy{color:#2b8bfb}li.svelte-ltkwvy>img.svelte-ltkwvy{align-self:center;justify-self:center;opacity:.75}.texts.svelte-ltkwvy.svelte-ltkwvy{padding:0 17px 0 0}.texts.svelte-ltkwvy>.svelte-ltkwvy{white-space:nowrap;display:block;min-width:fit-content}.primary.svelte-ltkwvy.svelte-ltkwvy{font-weight:600}.secondary.svelte-ltkwvy.svelte-ltkwvy{color:#aeb6c7;padding-left:4px}.line2.svelte-ltkwvy.svelte-ltkwvy{color:#aeb6c7}@keyframes svelte-ltkwvy-backAndForth{0%{transform:translate(0)}10%{transform:translate(0)}45%{transform:translate(calc(-100% + 270px))}55%{transform:translate(calc(-100% + 270px))}90%{transform:translate(0)}to{transform:translate(0)}}div.svelte-7cmwmc{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);pointer-events:none;display:flex;align-items:center}svg.svelte-7cmwmc{animation:svelte-7cmwmc-rotate .8s infinite cubic-bezier(.45,.05,.55,.95)}@keyframes svelte-7cmwmc-rotate{0%{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}svg.svelte-gzo3ar.svelte-gzo3ar{display:block;fill:#6b7c93;stroke:#6b7c93}.list-icon.svelte-gzo3ar.svelte-gzo3ar{grid-row:1/3;align-self:center;margin:8px}.in-map.svelte-gzo3ar.svelte-gzo3ar{height:30px}.maplibregl-canvas-container .marker-selected{z-index:1}.maplibregl-canvas-container svg.svelte-gzo3ar path.svelte-gzo3ar,.leaflet-map-pane svg.svelte-gzo3ar path.svelte-gzo3ar{fill:#3170fe;stroke:#3170fe}.marker-selected svg.svelte-gzo3ar path.svelte-gzo3ar{fill:#98b7ff;stroke:#3170fe}.marker-reverse svg.svelte-gzo3ar path.svelte-gzo3ar{fill:silver;stroke:gray}.marker-interactive{cursor:pointer!important}.maptiler-gc-popup>.maplibregl-popup-content{padding:2px 8px}svg.svelte-en2qvf{display:block;fill:var(--color-icon-button)}circle.svelte-1aq105l{stroke-width:1.875;fill:none}path.svelte-1aq105l{stroke-width:1.875;stroke-linecap:round}svg.svelte-1aq105l{display:block;stroke:var(--color-icon-button)}form.svelte-bz0zu3.svelte-bz0zu3{font-family:Open Sans,Ubuntu,Helvetica Neue,Arial,Helvetica,sans-serif;position:relative;background-color:#fff;z-index:10;border-radius:4px;margin:0;transition:max-width .25s;box-shadow:0 2px 5px #33335926;--color-text:#444952;--color-icon-button:#444952}form.svelte-bz0zu3.svelte-bz0zu3,form.svelte-bz0zu3 .svelte-bz0zu3,form.svelte-bz0zu3 .svelte-bz0zu3:after,form.svelte-bz0zu3 .svelte-bz0zu3:before{box-sizing:border-box}form.can-collapse.svelte-bz0zu3.svelte-bz0zu3{max-width:29px}form.can-collapse.svelte-bz0zu3 input.svelte-bz0zu3::placeholder{transition:opacity .25s;opacity:0}form.svelte-bz0zu3.svelte-bz0zu3,form.svelte-bz0zu3.svelte-bz0zu3:focus-within,form.svelte-bz0zu3.svelte-bz0zu3:hover{width:270px;max-width:270px}form.svelte-bz0zu3 input.svelte-bz0zu3::placeholder,form.svelte-bz0zu3:focus-within input.svelte-bz0zu3::placeholder,form.svelte-bz0zu3:hover input.svelte-bz0zu3::placeholder{opacity:1}input.svelte-bz0zu3.svelte-bz0zu3{font:inherit;font-size:14px;flex-grow:1;min-height:29px;background-color:transparent;color:#444952;white-space:nowrap;overflow:hidden;border:0;margin:0;padding:0}input.svelte-bz0zu3.svelte-bz0zu3:focus{color:#444952;outline:0;outline:none;box-shadow:none}ul.svelte-bz0zu3.svelte-bz0zu3,div.error.svelte-bz0zu3.svelte-bz0zu3,div.no-results.svelte-bz0zu3.svelte-bz0zu3{background-color:#fff;border-radius:4px;left:0;list-style:none;margin:0;padding:0;position:absolute;width:100%;top:calc(100% + 6px);overflow:hidden}ul.svelte-bz0zu3.svelte-bz0zu3{font-size:14px;line-height:16px;box-shadow:0 5px 10px #33335926}div.error.svelte-bz0zu3.svelte-bz0zu3,div.no-results.svelte-bz0zu3.svelte-bz0zu3{font:inherit;line-height:18px;font-size:12px;display:flex;gap:16px}div.error.svelte-bz0zu3.svelte-bz0zu3{padding:16px;font-weight:600;color:#e25041;background-color:#fbeae8}div.error.svelte-bz0zu3 div.svelte-bz0zu3{flex-grow:1}div.error.svelte-bz0zu3 svg{flex-shrink:0;width:20px;height:20px}div.error.svelte-bz0zu3 button.svelte-bz0zu3{flex-shrink:0}div.error.svelte-bz0zu3 button.svelte-bz0zu3>svg{width:13px;fill:#e25041}div.error.svelte-bz0zu3 button.svelte-bz0zu3:hover svg,div.error.svelte-bz0zu3 button.svelte-bz0zu3:active svg{fill:#444952}div.no-results.svelte-bz0zu3.svelte-bz0zu3{padding:14px 24px 14px 16px;font-weight:400;color:#6b7c93;box-shadow:0 5px 10px #33335926}div.no-results.svelte-bz0zu3 svg{margin-top:4px;flex-shrink:0;width:20px;height:20px;width:30px;height:30px}.leaflet-bottom ul.options.svelte-bz0zu3.svelte-bz0zu3,.maplibregl-ctrl-bottom-left ul.options.svelte-bz0zu3.svelte-bz0zu3,.maplibregl-ctrl-bottom-right ul.options.svelte-bz0zu3.svelte-bz0zu3{top:auto;bottom:calc(100% + 6px)}button.svelte-bz0zu3.svelte-bz0zu3{padding:0;margin:0;border:0;background-color:transparent;height:auto;width:auto}button.svelte-bz0zu3.svelte-bz0zu3:hover{background-color:transparent}button.svelte-bz0zu3:hover svg,button.svelte-bz0zu3:active svg{fill:#2b8bfb}.input-group.svelte-bz0zu3.svelte-bz0zu3{display:flex;align-items:stretch;gap:7px;padding-inline:8px;border-radius:4px;overflow:hidden}.input-group.svelte-bz0zu3.svelte-bz0zu3:focus-within{outline:#2b8bfb solid 2px}.search-button.svelte-bz0zu3.svelte-bz0zu3{flex-shrink:0}.maplibregl-ctrl-geocoder:not(.maptiler-ctrl) .search-button svg{width:12px!important;transform:translate(.5px)}.clear-button-container.svelte-bz0zu3.svelte-bz0zu3{display:flex;display:none;position:relative;align-items:stretch}.clear-button-container.displayable.svelte-bz0zu3.svelte-bz0zu3{display:flex;flex-shrink:0}.maplibregl-ctrl-geocoder{position:relative;z-index:3}.maptiler-ctrl:not(:empty){box-shadow:none}.maptiler-ctrl .input-group.svelte-bz0zu3.svelte-bz0zu3{padding-inline:8px;border:white solid 2px}.maptiler-ctrl .input-group.svelte-bz0zu3.svelte-bz0zu3:focus-within{border:#2b8bfb solid 2px;outline:0;outline:none}.maptiler-ctrl form.can-collapse.svelte-bz0zu3.svelte-bz0zu3{max-width:33px}.maptiler-ctrl form.svelte-bz0zu3.svelte-bz0zu3,.maptiler-ctrl form.svelte-bz0zu3.svelte-bz0zu3:focus-within,.maptiler-ctrl form.svelte-bz0zu3.svelte-bz0zu3:hover{width:270px;max-width:270px}
@@ -4,7 +4,7 @@ declare const __propDef: {
4
4
  props: {
5
5
  feature: Feature;
6
6
  selected?: boolean;
7
- showPlaceType: false | "always" | "ifNeeded";
7
+ showPlaceType: false | "always" | "ifNeeded" | "if-needed";
8
8
  missingIconsCache: Set<string>;
9
9
  iconsBaseUrl: string;
10
10
  };
@@ -61,19 +61,21 @@ export let reverseActive = enableReverse === "always";
61
61
  export let reverseButtonTitle = "toggle reverse geocoding";
62
62
  export let searchValue = "";
63
63
  export let showFullGeometry = true;
64
- export let showPlaceType = "ifNeeded";
64
+ export let showPlaceType = "if-needed";
65
65
  export let showResultsWhileTyping = true;
66
+ export let autocompleteTimeout = undefined;
66
67
  export let selectFirst = true;
67
68
  export let flyToSelected = false;
68
69
  export let markerOnSelected = true;
69
70
  export let types = undefined;
71
+ export let exhaustiveReverseGeocoding = false;
70
72
  export let excludeTypes = false;
71
73
  export let zoom = ZOOM_DEFAULTS;
72
74
  export let maxZoom = undefined;
73
75
  export let apiUrl = "https://api.maptiler.com/geocoding";
74
76
  export let fetchParameters = {};
75
77
  export let iconsBaseUrl = "https://cdn.maptiler.com/maptiler-geocoding-control/v" +
76
- "1.4.2-dev.2" +
78
+ "2.0.0-rc.1" +
77
79
  "/icons/";
78
80
  export let adjustUrlQuery = () => { };
79
81
  export function focus() {
@@ -86,7 +88,7 @@ export function setQuery(value, submit = true, reverse = false) {
86
88
  searchValue = value;
87
89
  if (submit) {
88
90
  selectedItemIndex = -1;
89
- handleOnSubmit();
91
+ handleSubmit();
90
92
  }
91
93
  else {
92
94
  handleInput(!reverse, reverse);
@@ -116,6 +118,7 @@ let error;
116
118
  let cachedFeatures = [];
117
119
  let abortController;
118
120
  let searchTimeoutRef;
121
+ let autocompleteTimeoutRef;
119
122
  let focusedDelayed;
120
123
  let prevIdToFly;
121
124
  const missingIconsCache = new Set();
@@ -179,8 +182,13 @@ $: setTimeout(() => {
179
182
  searchValue = "";
180
183
  }
181
184
  });
185
+ function isInAutocompleteTimeout() {
186
+ return !!autocompleteTimeoutRef;
187
+ }
182
188
  $: if (selectFirst && listFeatures?.length) {
183
- selectedItemIndex = 0;
189
+ if (!isInAutocompleteTimeout()) {
190
+ selectedItemIndex = 0;
191
+ }
184
192
  }
185
193
  // clear selection on edit
186
194
  $: {
@@ -189,17 +197,23 @@ $: {
189
197
  selectedItemIndex = -1;
190
198
  }
191
199
  $: selected = listFeatures?.[selectedItemIndex];
200
+ $: if (selected) {
201
+ window.clearTimeout(autocompleteTimeoutRef);
202
+ autocompleteTimeoutRef = undefined;
203
+ }
192
204
  $: if (mapController) {
193
205
  const coords = isQueryReverse(searchValue);
194
206
  mapController.setReverseMarker(coords ? [coords.decimalLongitude, coords.decimalLatitude] : undefined);
195
207
  }
196
- $: dispatch("select", selected);
197
- $: dispatch("pick", picked);
198
- $: dispatch("optionsVisibilityChange", focusedDelayed && !!listFeatures);
199
- $: dispatch("featuresListed", listFeatures);
200
- $: dispatch("featuresMarked", markedFeatures);
201
- $: dispatch("reverseToggle", reverseActive);
202
- $: dispatch("queryChange", searchValue);
208
+ $: dispatch("select", { feature: selected });
209
+ $: dispatch("pick", { feature: picked });
210
+ $: dispatch("optionsvisibilitychange", {
211
+ optionsVisible: focusedDelayed && !!listFeatures,
212
+ });
213
+ $: dispatch("featureslisted", { features: listFeatures });
214
+ $: dispatch("featuresmarked", { features: markedFeatures });
215
+ $: dispatch("reversetoggle", { reverse: reverseActive });
216
+ $: dispatch("querychange", { query: searchValue });
203
217
  $: if (mapController) {
204
218
  mapController.indicateReverse(reverseActive);
205
219
  }
@@ -243,11 +257,17 @@ onDestroy(() => {
243
257
  mapController.setMarkers(undefined, undefined);
244
258
  }
245
259
  });
246
- function handleOnSubmit(event) {
260
+ function handleSubmit(event) {
247
261
  if (searchTimeoutRef) {
248
- clearTimeout(searchTimeoutRef);
262
+ window.clearTimeout(searchTimeoutRef);
249
263
  searchTimeoutRef = undefined;
250
264
  }
265
+ if (autocompleteTimeoutRef) {
266
+ window.clearTimeout(autocompleteTimeoutRef);
267
+ autocompleteTimeoutRef = undefined;
268
+ search(searchValue, { exact: true });
269
+ return;
270
+ }
251
271
  if (selectedItemIndex > -1 && listFeatures) {
252
272
  picked = listFeatures[selectedItemIndex];
253
273
  searchValue =
@@ -279,7 +299,7 @@ function isQueryReverse(searchValue) {
279
299
  return false;
280
300
  }
281
301
  }
282
- async function search(searchValue, { byId = false, exact = false, } = {}) {
302
+ async function search(searchValue, { byId = false, exact = false, appendSpace = false, } = {}) {
283
303
  error = undefined;
284
304
  abortController?.abort();
285
305
  const ac = new AbortController();
@@ -312,7 +332,8 @@ async function search(searchValue, { byId = false, exact = false, } = {}) {
312
332
  }
313
333
  sp.set("fuzzyMatch", String(fuzzyMatch));
314
334
  }
315
- if (limit !== undefined) {
335
+ if (limit !== undefined &&
336
+ (exhaustiveReverseGeocoding || !isReverse || types?.length === 1)) {
316
337
  sp.set("limit", String(limit));
317
338
  }
318
339
  sp.set("key", apiKey);
@@ -321,7 +342,7 @@ async function search(searchValue, { byId = false, exact = false, } = {}) {
321
342
  "/" +
322
343
  encodeURIComponent(isReverse
323
344
  ? isReverse.decimalLongitude + "," + isReverse.decimalLatitude
324
- : searchValue) +
345
+ : searchValue + (appendSpace ? " " : "")) +
325
346
  ".json?" +
326
347
  sp.toString();
327
348
  if (url === lastSearchUrl) {
@@ -479,21 +500,29 @@ function handleKeyDown(e) {
479
500
  }
480
501
  function handleInput(debounce = true, reverse = false) {
481
502
  error = undefined;
482
- if (showResultsWhileTyping || reverse) {
483
- if (searchTimeoutRef) {
484
- clearTimeout(searchTimeoutRef);
485
- }
486
- if (searchValue.length < minLength) {
487
- return;
488
- }
489
- const sv = searchValue;
490
- searchTimeoutRef = window.setTimeout(() => {
491
- search(sv).catch((err) => (error = err));
492
- }, debounce ? debounceSearch : 0);
503
+ if (searchTimeoutRef) {
504
+ window.clearTimeout(searchTimeoutRef);
505
+ searchTimeoutRef = undefined;
493
506
  }
494
- else {
507
+ if (autocompleteTimeoutRef) {
508
+ window.clearTimeout(autocompleteTimeoutRef);
509
+ autocompleteTimeoutRef = undefined;
510
+ }
511
+ if ((!showResultsWhileTyping && !reverse) ||
512
+ searchValue.length < minLength) {
495
513
  listFeatures = undefined;
496
- error = undefined;
514
+ return;
515
+ }
516
+ const sv = searchValue;
517
+ searchTimeoutRef = window.setTimeout(() => {
518
+ searchTimeoutRef = undefined;
519
+ search(sv).catch((err) => (error = err));
520
+ }, debounce ? debounceSearch : 0);
521
+ if (!searchValue.endsWith(" ")) {
522
+ autocompleteTimeoutRef = window.setTimeout(() => {
523
+ autocompleteTimeoutRef = undefined;
524
+ search(sv, { appendSpace: true }).catch((err) => (error = err));
525
+ }, autocompleteTimeout);
497
526
  }
498
527
  }
499
528
  function pick(feature) {
@@ -511,7 +540,7 @@ function pick(feature) {
511
540
  <!-- svelte-ignore a11y-no-noninteractive-tabindex -->
512
541
  <form
513
542
  tabindex="0"
514
- on:submit|preventDefault={handleOnSubmit}
543
+ on:submit|preventDefault={handleSubmit}
515
544
  class:can-collapse={collapsed && searchValue === ""}
516
545
  class={className}
517
546
  >
@@ -582,6 +611,7 @@ function pick(feature) {
582
611
  </div>
583
612
  {:else if focusedDelayed && listFeatures?.length}
584
613
  <ul
614
+ class="options"
585
615
  on:mouseleave={() => {
586
616
  if (!selectFirst) {
587
617
  selectedItemIndex = -1;
@@ -724,10 +754,11 @@ div.no-results :global(svg) {
724
754
  height: 30px;
725
755
  }
726
756
 
727
- :global(.maplibregl-ctrl-bottom-left) ul,
728
- :global(.maplibregl-ctrl-bottom-right) ul {
757
+ :global(.leaflet-bottom) ul.options,
758
+ :global(.maplibregl-ctrl-bottom-left) ul.options,
759
+ :global(.maplibregl-ctrl-bottom-right) ul.options {
729
760
  top: auto;
730
- bottom: 100%;
761
+ bottom: calc(100% + 6px);
731
762
  }
732
763
 
733
764
  button {
@@ -26,13 +26,15 @@ declare const __propDef: {
26
26
  reverseActive?: boolean;
27
27
  reverseButtonTitle?: string;
28
28
  searchValue?: string;
29
- showFullGeometry?: boolean;
30
- showPlaceType?: false | "always" | "ifNeeded";
29
+ showFullGeometry?: boolean | "polygon-with-marker";
30
+ showPlaceType?: false | "always" | "ifNeeded" | "if-needed";
31
31
  showResultsWhileTyping?: boolean;
32
+ autocompleteTimeout?: number | undefined;
32
33
  selectFirst?: boolean;
33
34
  flyToSelected?: boolean;
34
35
  markerOnSelected?: boolean;
35
36
  types?: string[] | undefined;
37
+ exhaustiveReverseGeocoding?: boolean;
36
38
  excludeTypes?: boolean;
37
39
  zoom?: number | Record<string, number>;
38
40
  maxZoom?: number | undefined;
@@ -47,17 +49,31 @@ declare const __propDef: {
47
49
  clearMap?: () => void;
48
50
  };
49
51
  events: {
50
- featuresListed: CustomEvent<Feature<import("geojson").Geometry>[] | undefined>;
51
- featuresMarked: CustomEvent<Feature<import("geojson").Geometry>[] | undefined>;
52
- optionsVisibilityChange: CustomEvent<boolean>;
53
- pick: CustomEvent<Feature<import("geojson").Geometry> | undefined>;
54
- queryChange: CustomEvent<string>;
52
+ featureslisted: CustomEvent<{
53
+ features: Feature[] | undefined;
54
+ }>;
55
+ featuresmarked: CustomEvent<{
56
+ features: Feature[] | undefined;
57
+ }>;
58
+ optionsvisibilitychange: CustomEvent<{
59
+ optionsVisible: boolean;
60
+ }>;
61
+ pick: CustomEvent<{
62
+ feature: Feature | undefined;
63
+ }>;
64
+ querychange: CustomEvent<{
65
+ query: string;
66
+ }>;
55
67
  response: CustomEvent<{
56
68
  url: string;
57
69
  featureCollection: FeatureCollection;
58
70
  }>;
59
- reverseToggle: CustomEvent<boolean>;
60
- select: CustomEvent<Feature<import("geojson").Geometry> | undefined>;
71
+ reversetoggle: CustomEvent<{
72
+ reverse: boolean;
73
+ }>;
74
+ select: CustomEvent<{
75
+ feature: Feature | undefined;
76
+ }>;
61
77
  } & {
62
78
  [evt: string]: CustomEvent<any>;
63
79
  };