@maptiler/geocoding-control 1.4.2-dev.3 → 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 +1375 -1344
  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 +1596 -1447
  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 +1604 -1452
  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 +1352 -1366
  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 +805 -788
  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 +61 -32
  44. package/svelte/GeocodingControl.svelte.d.ts +24 -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 +32 -12
  61. package/svelte/vanilla.d.ts +14 -1
  62. package/svelte/vanilla.js +31 -8
  63. package/types.d.ts +32 -12
  64. package/vanilla.d.ts +14 -1
  65. package/vanilla.js +849 -804
  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,8 +61,9 @@ 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;
@@ -74,7 +75,7 @@ export let maxZoom = undefined;
74
75
  export let apiUrl = "https://api.maptiler.com/geocoding";
75
76
  export let fetchParameters = {};
76
77
  export let iconsBaseUrl = "https://cdn.maptiler.com/maptiler-geocoding-control/v" +
77
- "1.4.2-dev.3" +
78
+ "2.0.0-rc.1" +
78
79
  "/icons/";
79
80
  export let adjustUrlQuery = () => { };
80
81
  export function focus() {
@@ -87,7 +88,7 @@ export function setQuery(value, submit = true, reverse = false) {
87
88
  searchValue = value;
88
89
  if (submit) {
89
90
  selectedItemIndex = -1;
90
- handleOnSubmit();
91
+ handleSubmit();
91
92
  }
92
93
  else {
93
94
  handleInput(!reverse, reverse);
@@ -117,6 +118,7 @@ let error;
117
118
  let cachedFeatures = [];
118
119
  let abortController;
119
120
  let searchTimeoutRef;
121
+ let autocompleteTimeoutRef;
120
122
  let focusedDelayed;
121
123
  let prevIdToFly;
122
124
  const missingIconsCache = new Set();
@@ -180,8 +182,13 @@ $: setTimeout(() => {
180
182
  searchValue = "";
181
183
  }
182
184
  });
185
+ function isInAutocompleteTimeout() {
186
+ return !!autocompleteTimeoutRef;
187
+ }
183
188
  $: if (selectFirst && listFeatures?.length) {
184
- selectedItemIndex = 0;
189
+ if (!isInAutocompleteTimeout()) {
190
+ selectedItemIndex = 0;
191
+ }
185
192
  }
186
193
  // clear selection on edit
187
194
  $: {
@@ -190,17 +197,23 @@ $: {
190
197
  selectedItemIndex = -1;
191
198
  }
192
199
  $: selected = listFeatures?.[selectedItemIndex];
200
+ $: if (selected) {
201
+ window.clearTimeout(autocompleteTimeoutRef);
202
+ autocompleteTimeoutRef = undefined;
203
+ }
193
204
  $: if (mapController) {
194
205
  const coords = isQueryReverse(searchValue);
195
206
  mapController.setReverseMarker(coords ? [coords.decimalLongitude, coords.decimalLatitude] : undefined);
196
207
  }
197
- $: dispatch("select", selected);
198
- $: dispatch("pick", picked);
199
- $: dispatch("optionsVisibilityChange", focusedDelayed && !!listFeatures);
200
- $: dispatch("featuresListed", listFeatures);
201
- $: dispatch("featuresMarked", markedFeatures);
202
- $: dispatch("reverseToggle", reverseActive);
203
- $: 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 });
204
217
  $: if (mapController) {
205
218
  mapController.indicateReverse(reverseActive);
206
219
  }
@@ -244,11 +257,17 @@ onDestroy(() => {
244
257
  mapController.setMarkers(undefined, undefined);
245
258
  }
246
259
  });
247
- function handleOnSubmit(event) {
260
+ function handleSubmit(event) {
248
261
  if (searchTimeoutRef) {
249
- clearTimeout(searchTimeoutRef);
262
+ window.clearTimeout(searchTimeoutRef);
250
263
  searchTimeoutRef = undefined;
251
264
  }
265
+ if (autocompleteTimeoutRef) {
266
+ window.clearTimeout(autocompleteTimeoutRef);
267
+ autocompleteTimeoutRef = undefined;
268
+ search(searchValue, { exact: true });
269
+ return;
270
+ }
252
271
  if (selectedItemIndex > -1 && listFeatures) {
253
272
  picked = listFeatures[selectedItemIndex];
254
273
  searchValue =
@@ -280,7 +299,7 @@ function isQueryReverse(searchValue) {
280
299
  return false;
281
300
  }
282
301
  }
283
- async function search(searchValue, { byId = false, exact = false, } = {}) {
302
+ async function search(searchValue, { byId = false, exact = false, appendSpace = false, } = {}) {
284
303
  error = undefined;
285
304
  abortController?.abort();
286
305
  const ac = new AbortController();
@@ -323,7 +342,7 @@ async function search(searchValue, { byId = false, exact = false, } = {}) {
323
342
  "/" +
324
343
  encodeURIComponent(isReverse
325
344
  ? isReverse.decimalLongitude + "," + isReverse.decimalLatitude
326
- : searchValue) +
345
+ : searchValue + (appendSpace ? " " : "")) +
327
346
  ".json?" +
328
347
  sp.toString();
329
348
  if (url === lastSearchUrl) {
@@ -481,21 +500,29 @@ function handleKeyDown(e) {
481
500
  }
482
501
  function handleInput(debounce = true, reverse = false) {
483
502
  error = undefined;
484
- if (showResultsWhileTyping || reverse) {
485
- if (searchTimeoutRef) {
486
- clearTimeout(searchTimeoutRef);
487
- }
488
- if (searchValue.length < minLength) {
489
- return;
490
- }
491
- const sv = searchValue;
492
- searchTimeoutRef = window.setTimeout(() => {
493
- search(sv).catch((err) => (error = err));
494
- }, debounce ? debounceSearch : 0);
503
+ if (searchTimeoutRef) {
504
+ window.clearTimeout(searchTimeoutRef);
505
+ searchTimeoutRef = undefined;
495
506
  }
496
- else {
507
+ if (autocompleteTimeoutRef) {
508
+ window.clearTimeout(autocompleteTimeoutRef);
509
+ autocompleteTimeoutRef = undefined;
510
+ }
511
+ if ((!showResultsWhileTyping && !reverse) ||
512
+ searchValue.length < minLength) {
497
513
  listFeatures = undefined;
498
- 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);
499
526
  }
500
527
  }
501
528
  function pick(feature) {
@@ -513,7 +540,7 @@ function pick(feature) {
513
540
  <!-- svelte-ignore a11y-no-noninteractive-tabindex -->
514
541
  <form
515
542
  tabindex="0"
516
- on:submit|preventDefault={handleOnSubmit}
543
+ on:submit|preventDefault={handleSubmit}
517
544
  class:can-collapse={collapsed && searchValue === ""}
518
545
  class={className}
519
546
  >
@@ -584,6 +611,7 @@ function pick(feature) {
584
611
  </div>
585
612
  {:else if focusedDelayed && listFeatures?.length}
586
613
  <ul
614
+ class="options"
587
615
  on:mouseleave={() => {
588
616
  if (!selectFirst) {
589
617
  selectedItemIndex = -1;
@@ -726,10 +754,11 @@ div.no-results :global(svg) {
726
754
  height: 30px;
727
755
  }
728
756
 
729
- :global(.maplibregl-ctrl-bottom-left) ul,
730
- :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 {
731
760
  top: auto;
732
- bottom: 100%;
761
+ bottom: calc(100% + 6px);
733
762
  }
734
763
 
735
764
  button {
@@ -26,9 +26,10 @@ 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;
@@ -48,17 +49,31 @@ declare const __propDef: {
48
49
  clearMap?: () => void;
49
50
  };
50
51
  events: {
51
- featuresListed: CustomEvent<Feature<import("geojson").Geometry>[] | undefined>;
52
- featuresMarked: CustomEvent<Feature<import("geojson").Geometry>[] | undefined>;
53
- optionsVisibilityChange: CustomEvent<boolean>;
54
- pick: CustomEvent<Feature<import("geojson").Geometry> | undefined>;
55
- 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
+ }>;
56
67
  response: CustomEvent<{
57
68
  url: string;
58
69
  featureCollection: FeatureCollection;
59
70
  }>;
60
- reverseToggle: CustomEvent<boolean>;
61
- select: CustomEvent<Feature<import("geojson").Geometry> | undefined>;
71
+ reversetoggle: CustomEvent<{
72
+ reverse: boolean;
73
+ }>;
74
+ select: CustomEvent<{
75
+ feature: Feature | undefined;
76
+ }>;
62
77
  } & {
63
78
  [evt: string]: CustomEvent<any>;
64
79
  };