} element DOM node or array of nodes.\n * @param {String} classname Classe.\n */\nexport function toggleClass(element, classname) {\n if (Array.isArray(element)) {\n element.forEach((each) => toggleClass(each, classname));\n\n return;\n }\n\n // use native if available\n if (element.classList) {\n element.classList.toggle(classname);\n } else {\n hasClass(element, classname) ? _removeClass(element, classname) : _addClass(element, classname);\n }\n}\n\n/**\n * Abstraction to querySelectorAll for increased\n * performance and greater usability\n * @param {String} selector\n * @param {Element} context (optional)\n * @param {Boolean} findAll (optional)\n * @return (findAll) {Element} : {Array}\n */\nexport function $(id) {\n id = id[0] === '#' ? id.slice(1, 1 + id.length) : id;\n\n return document.getElementById(id);\n}\n\nexport function isElement(obj) {\n // DOM, Level2\n if ('HTMLElement' in window) {\n return !!obj && obj instanceof HTMLElement;\n }\n\n // Older browsers\n return !!obj && typeof obj === 'object' && obj.nodeType === 1 && !!obj.nodeName;\n}\n\nexport function getAllChildren(node, tag) {\n return [].slice.call(node.getElementsByTagName(tag));\n}\n\nexport function removeAllChildren(node) {\n while (node.firstChild) node.firstChild.remove();\n}\n\nexport function removeAll(collection) {\n let node;\n\n while ((node = collection[0])) node.remove();\n}\n\nexport function getChildren(node, tag) {\n return [].filter.call(node.childNodes, (el) =>\n tag ? el.nodeType === 1 && el.tagName.toLowerCase() === tag : el.nodeType === 1\n );\n}\n\nexport function template(html, row) {\n return html.replace(/\\{\\s*([\\w-]+)\\s*\\}/gu, (htm, key) => {\n const value = row[key] === undefined ? '' : row[key];\n\n return htmlEscape(value);\n });\n}\n\nexport function htmlEscape(str) {\n return String(str)\n .replaceAll('&', '&')\n .replaceAll('<', '<')\n .replaceAll('>', '>')\n .replaceAll('\"', '"')\n .replaceAll(\"'\", ''');\n}\n\nexport function createElement(node, html) {\n let elem;\n\n if (Array.isArray(node)) {\n elem = document.createElement(node[0]);\n\n if (node[1].id) elem.id = node[1].id;\n\n if (node[1].classname) elem.className = node[1].classname;\n\n if (node[1].attr) {\n const {\n attr\n } = node[1];\n\n if (Array.isArray(attr)) {\n let i = -1;\n\n while (++i < attr.length) {\n elem.setAttribute(attr[i].name, attr[i].value);\n }\n } else {\n elem.setAttribute(attr.name, attr.value);\n }\n }\n } else {\n elem = document.createElement(node);\n }\n\n elem.innerHTML = html;\n\n const frag = document.createDocumentFragment();\n\n while (elem.childNodes[0]) frag.append(elem.childNodes[0]);\n\n elem.append(frag);\n\n return elem;\n}\n\nfunction classRegex(classname) {\n return new RegExp(`(^|\\\\s+) ${classname} (\\\\s+|$)`, 'u');\n}\n\nfunction _addClass(el, klass, timeout) {\n // use native if available\n if (el.classList) {\n el.classList.add(klass);\n } else {\n el.className = `${el.className} ${klass}`.trim();\n }\n\n if (timeout && isNumeric(timeout)) {\n window.setTimeout(() => _removeClass(el, klass), timeout);\n }\n}\n\nfunction _removeClass(el, klass, timeout) {\n if (el.classList) {\n el.classList.remove(klass);\n } else {\n el.className = el.className.replace(classRegex(klass), ' ').trim();\n }\n\n if (timeout && isNumeric(timeout)) {\n window.setTimeout(() => _addClass(el, klass), timeout);\n }\n}","import {\n VARS,\n TARGET_TYPE\n} from '../konstants';\n\nimport {\n createElement\n} from './helpers/dom';\n\nconst klasses = VARS.cssClasses;\n\n/**\n * @class Html\n */\nexport default class Html {\n /**\n * @constructor\n * @param {object} options Options.\n */\n constructor(options) {\n this.options = options;\n this.els = this.createControl();\n }\n\n createControl() {\n let container;\n let containerClass;\n let elements;\n\n if (this.options.targetType === TARGET_TYPE.INPUT) {\n containerClass = `${klasses.namespace} ${klasses.inputText.container}`;\n container = createElement(\n ['div', {\n id: VARS.containerId,\n classname: containerClass\n }],\n Html.input\n );\n elements = {\n container,\n control: container.querySelector(`.${klasses.inputText.control}`),\n label: container.querySelector(`.${klasses.inputText.label}`),\n input: container.querySelector(`.${klasses.inputText.input}`),\n search: container.querySelector(`.${klasses.inputText.search}`),\n result: container.querySelector(`.${klasses.inputText.result}`),\n };\n elements.label.innerHTML = this.options.label;\n } else {\n containerClass = `${klasses.namespace} ${klasses.glass.container}`;\n container = createElement(\n ['div', {\n id: VARS.containerId,\n classname: containerClass\n }],\n Html.glass\n );\n elements = {\n container,\n control: container.querySelector(`.${klasses.glass.control}`),\n button: container.querySelector(`.${klasses.glass.button}`),\n input: container.querySelector(`.${klasses.glass.input}`),\n search: container.querySelector(`.${klasses.glass.search}`),\n result: container.querySelector(`.${klasses.glass.result}`),\n };\n }\n\n // set placeholder from options\n elements.input.placeholder = this.options.placeholder;\n\n return elements;\n }\n}\n\nHtml.glass = `\n \n \n`;\n\nHtml.input = `\n \n \n \n \n \n
\n \n`;","export function json(obj) {\n return new Promise((resolve, reject) => {\n const url = encodeUrlXhr(obj.url, obj.data);\n const config = {\n method: 'GET',\n mode: 'cors',\n credentials: 'same-origin',\n };\n\n if (obj.jsonp) {\n jsonp(url, obj.callbackName, resolve);\n } else {\n fetch(url, config)\n .then((r) => r.json())\n .then(resolve)\n .catch(reject);\n }\n });\n}\n\nfunction toQueryString(obj) {\n return Object.keys(obj)\n .reduce((acc, k) => {\n acc.push(\n typeof obj[k] === 'object' ?\n toQueryString(obj[k]) :\n `${encodeURIComponent(k)}=${encodeURIComponent(obj[k])}`\n );\n\n return acc;\n }, [])\n .join('&');\n}\n\nfunction encodeUrlXhr(url, data) {\n if (data && typeof data === 'object') {\n url += (/\\?/u.test(url) ? '&' : '?') + toQueryString(data);\n }\n\n return url;\n}\n\nfunction jsonp(url, key, callback) {\n // https://github.com/Fresheyeball/micro-jsonp/blob/master/src/jsonp.js\n const {\n head\n } = document;\n const script = document.createElement('script');\n // generate minimally unique name for callback function\n const callbackName = `f${Math.round(Math.random() * Date.now())}`;\n\n // set request url\n script.setAttribute(\n 'src',\n // add callback parameter to the url\n // where key is the parameter key supplied\n // and callbackName is the parameter value\n `${url + (url.indexOf('?') > 0 ? '&' : '?') + key}=${callbackName}`\n );\n\n // place jsonp callback on window,\n // the script sent by the server should call this\n // function as it was passed as a url parameter\n window[callbackName] = (data) => {\n window[callbackName] = undefined;\n\n // clean up script tag created for request\n setTimeout(() => head.removeChild(script), 0);\n\n // hand data back to the user\n callback(data);\n };\n\n // actually make the request\n head.append(script);\n}","/**\n * @class Photon\n */\nexport default class Photon {\n /**\n * @constructor\n */\n constructor() {\n this.settings = {\n url: 'https://photon.komoot.io/api/',\n\n params: {\n q: '',\n limit: 10,\n lang: 'en',\n },\n\n langs: ['de', 'it', 'fr', 'en'],\n };\n }\n\n getParameters(options) {\n options.lang = options.lang.toLowerCase();\n\n return {\n url: this.settings.url,\n\n params: {\n q: options.query,\n limit: options.limit || this.settings.params.limit,\n\n lang: this.settings.langs.includes(options.lang) ? options.lang : this.settings.params.lang,\n },\n };\n }\n\n handleResponse(results) {\n if (results.features.length === 0) return [];\n\n return results.features.map((result) => ({\n lon: result.geometry.coordinates[0],\n lat: result.geometry.coordinates[1],\n\n address: {\n name: result.properties.name,\n postcode: result.properties.postcode,\n city: result.properties.city,\n state: result.properties.state,\n country: result.properties.country,\n },\n\n original: {\n formatted: result.properties.name,\n details: result.properties,\n },\n }));\n }\n}","/**\n * @class OpenStreet\n */\nexport default class OpenStreet {\n /**\n * @constructor\n */\n constructor(options) {\n this.settings = {\n url: 'https://nominatim.openstreetmap.org/search',\n ...options, // Allow custom URL for osm provider https://github.com/Dominique92/ol-geocoder/issues/266\n\n params: {\n q: '',\n format: 'json',\n addressdetails: 1,\n limit: 10,\n countrycodes: '',\n viewbox: '',\n 'accept-language': 'en-US',\n },\n };\n }\n\n getParameters(opt) {\n return {\n url: this.settings.url,\n\n params: {\n q: opt.query,\n format: this.settings.params.format,\n addressdetails: this.settings.params.addressdetails,\n limit: opt.limit || this.settings.params.limit,\n countrycodes: opt.countrycodes || this.settings.params.countrycodes,\n viewbox: opt.viewbox || this.settings.params.viewbox,\n 'accept-language': opt.lang || this.settings.params['accept-language'],\n },\n };\n }\n\n handleResponse(results) {\n if (results.length === 0) return [];\n\n return results.map((result) => ({\n lon: result.lon,\n lat: result.lat,\n bbox: result.boundingbox,\n\n address: {\n name: result.display_name,\n road: result.address.road || '',\n houseNumber: result.address.house_number || '',\n postcode: result.address.postcode,\n city: result.address.city || result.address.town,\n state: result.address.state,\n country: result.address.country,\n },\n\n original: {\n formatted: result.display_name,\n details: result.address,\n },\n }));\n }\n}","/**\n * @class MapQuest\n */\nexport default class MapQuest {\n /**\n * @constructor\n */\n constructor() {\n this.settings = {\n url: 'https://open.mapquestapi.com/nominatim/v1/search.php',\n\n params: {\n q: '',\n key: '',\n format: 'json',\n addressdetails: 1,\n limit: 10,\n countrycodes: '',\n 'accept-language': 'en-US',\n },\n };\n }\n\n getParameters(options) {\n return {\n url: this.settings.url,\n\n params: {\n q: options.query,\n key: options.key,\n format: 'json',\n addressdetails: 1,\n limit: options.limit || this.settings.params.limit,\n countrycodes: options.countrycodes || this.settings.params.countrycodes,\n\n 'accept-language': options.lang || this.settings.params['accept-language'],\n },\n };\n }\n\n handleResponse(results) {\n if (results.length === 0) return [];\n\n return results.map((result) => ({\n lon: result.lon,\n lat: result.lat,\n\n address: {\n name: result.address.neighbourhood || '',\n road: result.address.road || '',\n postcode: result.address.postcode,\n city: result.address.city || result.address.town,\n state: result.address.state,\n country: result.address.country,\n },\n\n original: {\n formatted: result.display_name,\n details: result.address,\n },\n }));\n }\n}","/**\n * @class Bing\n */\nexport default class Bing {\n /**\n * @constructor\n */\n constructor() {\n this.settings = {\n url: 'https://dev.virtualearth.net/REST/v1/Locations',\n callbackName: 'jsonp',\n\n params: {\n query: '',\n key: '',\n includeNeighborhood: 0,\n maxResults: 10,\n },\n };\n }\n\n getParameters(options) {\n return {\n url: this.settings.url,\n callbackName: this.settings.callbackName,\n\n params: {\n query: options.query,\n key: options.key,\n\n includeNeighborhood: options.includeNeighborhood || this.settings.params.includeNeighborhood,\n\n maxResults: options.maxResults || this.settings.params.maxResults,\n },\n };\n }\n\n handleResponse(results) {\n const {\n resources\n } = results.resourceSets[0];\n\n if (resources.length === 0) return [];\n\n return resources.map((result) => ({\n lon: result.point.coordinates[1],\n lat: result.point.coordinates[0],\n\n address: {\n name: result.name,\n },\n\n original: {\n formatted: result.address.formattedAddress,\n details: result.address,\n },\n }));\n }\n}","/**\n * @class OpenCage\n */\nexport default class OpenCage {\n /**\n * @constructor\n */\n constructor() {\n this.settings = {\n url: 'https://api.opencagedata.com/geocode/v1/json?',\n\n params: {\n q: '',\n key: '',\n limit: 10,\n countrycode: '',\n pretty: 1,\n no_annotations: 1,\n },\n };\n }\n\n getParameters(options) {\n return {\n url: this.settings.url,\n\n params: {\n q: options.query,\n key: options.key,\n limit: options.limit || this.settings.params.limit,\n countrycode: options.countrycodes || this.settings.params.countrycodes,\n },\n };\n }\n\n handleResponse(results) {\n if (results.results.length === 0) return [];\n\n return results.results.map((result) => ({\n lon: result.geometry.lng,\n lat: result.geometry.lat,\n\n address: {\n name: result.components.house_number || '',\n road: result.components.road || '',\n postcode: result.components.postcode,\n city: result.components.city || result.components.town,\n state: result.components.state,\n country: result.components.country,\n },\n\n original: {\n formatted: result.formatted,\n details: result.components,\n },\n }));\n }\n}","import LayerVector from 'ol/layer/Vector';\nimport SourceVector from 'ol/source/Vector';\nimport Point from 'ol/geom/Point';\nimport Feature from 'ol/Feature';\nimport * as proj from 'ol/proj';\n\nimport {\n VARS,\n TARGET_TYPE,\n PROVIDERS,\n EVENT_TYPE\n} from '../konstants';\nimport {\n hasClass,\n addClass,\n removeClass,\n createElement,\n template,\n removeAllChildren,\n} from './helpers/dom';\nimport {\n randomId\n} from './helpers/mix';\nimport {\n json\n} from './helpers/ajax';\n\nimport Photon from './providers/photon';\nimport OpenStreet from './providers/osm';\nimport MapQuest from './providers/mapquest';\nimport Bing from './providers/bing';\nimport OpenCage from './providers/opencage';\n\nconst klasses = VARS.cssClasses;\n\n/**\n * @class Nominatim\n */\nexport default class Nominatim {\n /**\n * @constructor\n * @param {Function} base Base class.\n */\n constructor(base, els) {\n this.Base = base;\n\n this.layerName = randomId('geocoder-layer-');\n this.layer = new LayerVector({\n name: this.layerName,\n source: new SourceVector(),\n displayInLayerSwitcher: false, // Remove search layer from legend https://github.com/Dominique92/ol-geocoder/issues/256\n });\n\n this.options = base.options;\n // provider is either the name of a built-in provider as a string or an\n // object that implements the provider API\n this.options.provider =\n typeof this.options.provider === 'string' ?\n this.options.provider.toLowerCase() :\n this.options.provider;\n this.provider = this.newProvider();\n\n this.els = els;\n this.lastQuery = '';\n this.container = this.els.container;\n this.registeredListeners = {\n mapClick: false,\n };\n this.setListeners();\n }\n\n setListeners() {\n const openSearch = (evt) => {\n evt.stopPropagation();\n hasClass(this.els.control, klasses.glass.expanded) ? this.collapse() : this.expand();\n };\n const query = (evt) => {\n const value = evt.target.value.trim();\n const hit = evt.key ?\n evt.key === 'Enter' :\n evt.which ?\n evt.which === 13 :\n evt.keyCode ?\n evt.keyCode === 13 :\n false;\n\n if (hit) {\n evt.preventDefault();\n this.query(value);\n }\n };\n const stopBubbling = (evt) => evt.stopPropagation();\n const search = () => {\n this.els.input.focus();\n this.query(this.els.input.value);\n };\n const handleValue = (evt) => {\n const value = evt.target.value.trim();\n\n value.length !== 0 ?\n removeClass(this.els.search, klasses.hidden) :\n addClass(this.els.search, klasses.hidden);\n };\n\n this.els.input.addEventListener('keypress', query, false);\n this.els.input.addEventListener('click', stopBubbling, false);\n this.els.input.addEventListener('input', handleValue, false);\n this.els.search.addEventListener('click', search, false);\n\n if (this.options.targetType === TARGET_TYPE.GLASS) {\n this.els.button.addEventListener('click', openSearch, false);\n }\n }\n\n query(q) {\n // lazy provider\n if (!this.provider) {\n this.provider = this.newProvider();\n }\n\n const parameters = this.provider.getParameters({\n query: q,\n key: this.options.key,\n lang: this.options.lang,\n countrycodes: this.options.countrycodes,\n viewbox: this.options.viewbox,\n limit: this.options.limit,\n });\n\n if (this.lastQuery === q && this.els.result.firstChild) return;\n\n this.lastQuery = q;\n this.clearResults();\n addClass(this.els.search, klasses.spin);\n\n const ajax = {\n url: parameters.url,\n data: parameters.params,\n };\n\n if (parameters.callbackName) {\n ajax.jsonp = true;\n ajax.callbackName = parameters.callbackName;\n }\n\n json(ajax)\n .then((res) => {\n // eslint-disable-next-line no-console\n this.options.debug && console.info(res);\n\n removeClass(this.els.search, klasses.spin);\n\n // will be fullfiled according to provider\n const res_ = this.provider.handleResponse(res);\n\n if (res_) {\n this.createList(res_);\n this.listenMapClick();\n }\n })\n .catch(() => {\n removeClass(this.els.search, klasses.spin);\n\n const li = createElement('li', 'Error! No internet connection?
');\n\n this.els.result.append(li);\n });\n }\n\n createList(response) {\n const ul = this.els.result;\n\n response.forEach((row) => {\n let addressHtml;\n\n switch (this.options.provider) {\n case PROVIDERS.OSM:\n addressHtml = `${row.address.name}`;\n break;\n\n default:\n addressHtml = this.addressTemplate(row.address);\n }\n\n if (response.length == 1) {\n this.chosen(row, addressHtml, row.address, row.original);\n } else {\n const li = createElement('li', `${addressHtml}`);\n\n li.addEventListener(\n 'click',\n (evt) => {\n evt.preventDefault();\n this.chosen(row, addressHtml, row.address, row.original);\n },\n false\n );\n\n ul.append(li);\n }\n });\n }\n\n chosen(place, addressHtml, addressObj, addressOriginal) {\n const map = this.Base.getMap();\n const coord_ = [Number.parseFloat(place.lon), Number.parseFloat(place.lat)];\n const projection = map.getView().getProjection();\n const coord = proj.transform(coord_, 'EPSG:4326', projection);\n\n let {\n bbox\n } = place;\n\n if (bbox) {\n bbox = proj.transformExtent(\n // https://nominatim.org/release-docs/latest/api/Output/#boundingbox\n // Requires parseFloat on negative bbox entries\n [parseFloat(bbox[2]), parseFloat(bbox[0]), parseFloat(bbox[3]), parseFloat(bbox[1])], // SNWE -> WSEN\n 'EPSG:4326',\n projection\n );\n }\n\n const address = {\n formatted: addressHtml,\n details: addressObj,\n original: addressOriginal,\n };\n\n this.options.keepOpen === false && this.clearResults(true);\n\n if (this.options.preventDefault === true || this.options.preventMarker === true) {\n // No display change\n this.Base.dispatchEvent({\n type: EVENT_TYPE.ADDRESSCHOSEN,\n address,\n coordinate: coord,\n bbox,\n place,\n });\n } else {\n // Display a marker\n const feature = this.createFeature(coord, address);\n\n this.Base.dispatchEvent({\n type: EVENT_TYPE.ADDRESSCHOSEN,\n address,\n feature,\n coordinate: coord,\n bbox,\n place,\n });\n }\n\n if (this.options.preventDefault !== true && this.options.preventPanning !== true) {\n // Move & zoom to the position\n if (bbox) {\n map.getView().fit(bbox, {\n duration: 500,\n });\n } else {\n map.getView().animate({\n center: coord,\n // ol-geocoder results are too much zoomed -in Dominique92/ol-geocoder#235\n resolution: this.options.defaultFlyResolution,\n duration: 500,\n });\n }\n }\n }\n\n createFeature(coord) {\n const feature = new Feature(new Point(coord));\n\n this.addLayer();\n feature.setStyle(this.options.featureStyle);\n feature.setId(randomId('geocoder-ft-'));\n this.getSource().addFeature(feature);\n\n return feature;\n }\n\n addressTemplate(address) {\n const html = [];\n\n if (address.name) {\n html.push(['{name}'].join(''));\n }\n\n if (address.road || address.building || address.house_number) {\n html.push(\n ['{building} {road} {house_number}'].join('')\n );\n }\n\n if (address.city || address.town || address.village) {\n html.push(\n ['{postcode} {city} {town} {village}'].join('')\n );\n }\n\n if (address.state || address.country) {\n html.push(['{state} {country}'].join(''));\n }\n\n return template(html.join('
'), address);\n }\n\n newProvider() {\n switch (this.options.provider) {\n case PROVIDERS.OSM:\n return new OpenStreet(this.options);\n case PROVIDERS.MAPQUEST:\n return new MapQuest();\n case PROVIDERS.PHOTON:\n return new Photon();\n case PROVIDERS.BING:\n return new Bing();\n case PROVIDERS.OPENCAGE:\n return new OpenCage();\n\n default:\n return this.options.provider;\n }\n }\n\n expand() {\n removeClass(this.els.input, klasses.spin);\n addClass(this.els.control, klasses.glass.expanded);\n window.setTimeout(() => this.els.input.focus(), 100);\n this.listenMapClick();\n }\n\n collapse() {\n this.els.input.value = '';\n this.els.input.blur();\n addClass(this.els.search, klasses.hidden);\n removeClass(this.els.control, klasses.glass.expanded);\n this.clearResults();\n }\n\n listenMapClick() {\n // already registered\n if (this.registeredListeners.mapClick) return;\n\n const that = this;\n const mapElement = this.Base.getMap().getTargetElement();\n\n this.registeredListeners.mapClick = true;\n\n // one-time fire click\n mapElement.addEventListener(\n 'click', {\n handleEvent(evt) {\n that.clearResults(true);\n mapElement.removeEventListener(evt.type, this, false);\n that.registeredListeners.mapClick = false;\n },\n },\n false\n );\n }\n\n clearResults(collapse) {\n collapse && this.options.targetType === TARGET_TYPE.GLASS ?\n this.collapse() :\n removeAllChildren(this.els.result);\n }\n\n getSource() {\n return this.layer.getSource();\n }\n\n addLayer() {\n let found = false;\n\n const map = this.Base.getMap();\n\n map.getLayers().forEach((layer) => {\n if (layer === this.layer) found = true;\n });\n\n if (!found) map.addLayer(this.layer);\n }\n}","import Control from 'ol/control/Control';\nimport Style from 'ol/style/Style';\nimport Icon from 'ol/style/Icon';\n\nimport {\n CONTROL_TYPE,\n DEFAULT_OPTIONS,\n FEATURE_SRC\n} from '../konstants';\n\nimport Html from './html';\nimport Nominatim from './nominatim';\nimport {\n assert,\n} from './helpers/mix';\n\n/**\n * @class Base\n * @extends {ol.control.Control}\n */\nexport default class Base extends Control {\n /**\n * @constructor\n * @param {string} type nominatim|reverse.\n * @param {object} options Options.\n */\n constructor(type = CONTROL_TYPE.NOMINATIM, opt) {\n assert(typeof type === 'string', '@param `type` should be string!');\n assert(\n type === CONTROL_TYPE.NOMINATIM || type === CONTROL_TYPE.REVERSE,\n `@param 'type' should be '${CONTROL_TYPE.NOMINATIM}'\n or '${CONTROL_TYPE.REVERSE}'!`\n );\n const options = {\n ...DEFAULT_OPTIONS,\n featureStyle: [\n new Style({\n image: new Icon({\n scale: 0.7,\n src: FEATURE_SRC\n })\n }),\n ],\n ...opt,\n };\n\n let container;\n let $nominatim;\n const $html = new Html(options);\n\n if (type === CONTROL_TYPE.NOMINATIM) {\n container = $html.els.container;\n }\n\n super({\n element: container,\n ...options, // Allows to add ol.control.Control options (as target:)\n });\n\n if (!(this instanceof Base)) return new Base();\n\n this.options = options;\n this.container = container;\n\n if (type === CONTROL_TYPE.NOMINATIM) {\n $nominatim = new Nominatim(this, $html.els);\n this.layer = $nominatim.layer;\n }\n }\n\n /**\n * @return {ol.layer.Vector} Returns the layer created by this control\n */\n getLayer() {\n return this.layer;\n }\n\n /**\n * @return {ol.source.Vector} Returns the source created by this control\n */\n getSource() {\n return this.getLayer().getSource();\n }\n\n /**\n * Set a new provider\n * @param {String} provider\n */\n setProvider(provider) {\n this.options.provider = provider;\n }\n\n /**\n * Set provider key\n * @param {String} key\n */\n setProviderKey(key) {\n this.options.key = key;\n }\n}"],"names":["VARS","EVENT_TYPE","CONTROL_TYPE","TARGET_TYPE","PROVIDERS","DEFAULT_OPTIONS","provider","label","placeholder","featureStyle","targetType","lang","limit","keepOpen","preventDefault","preventPanning","preventMarker","defaultFlyResolution","debug","assert","condition","message","Error","randomId","prefix","id","window","performance","nowOffset","Date","now","timing","navigationStart","toString","isNumeric","str","test","addClass","element","classname","timeout","Array","isArray","forEach","each","array","split","i","length","hasClass","_addClass","removeClass","_removeClass","c","classList","contains","classRegex","className","template","html","row","replace","htm","key","value","undefined","String","replaceAll","createElement","node","elem","document","attr","setAttribute","name","innerHTML","frag","createDocumentFragment","childNodes","append","RegExp","el","klass","add","trim","setTimeout","remove","klasses","cssClasses","Html","constructor","options","this","els","createControl","container","containerClass","elements","namespace","inputText","containerId","input","control","querySelector","search","result","glass","button","json","obj","Promise","resolve","reject","url","data","toQueryString","encodeUrlXhr","config","method","mode","credentials","jsonp","callback","head","script","callbackName","Math","round","random","indexOf","removeChild","fetch","then","r","catch","Object","keys","reduce","acc","k","push","encodeURIComponent","join","olControl","buttonControlId","inputQueryId","inputSearchId","hidden","icon","Photon","settings","params","q","langs","getParameters","toLowerCase","query","includes","handleResponse","results","features","map","lon","geometry","coordinates","lat","address","properties","postcode","city","state","country","original","formatted","details","OpenStreet","format","addressdetails","countrycodes","viewbox","opt","bbox","boundingbox","display_name","road","houseNumber","house_number","town","MapQuest","neighbourhood","Bing","includeNeighborhood","maxResults","resources","resourceSets","point","formattedAddress","OpenCage","countrycode","pretty","no_annotations","lng","components","Nominatim","base","Base","layerName","layer","LayerVector","source","SourceVector","displayInLayerSwitcher","newProvider","lastQuery","registeredListeners","mapClick","setListeners","openSearch","evt","stopPropagation","expanded","collapse","expand","addEventListener","target","which","keyCode","focus","parameters","firstChild","clearResults","spin","ajax","res","console","info","res_","createList","listenMapClick","li","response","ul","addressHtml","addressTemplate","chosen","place","addressObj","addressOriginal","getMap","coord_","Number","parseFloat","projection","getView","getProjection","coord","proj","transform","transformExtent","dispatchEvent","type","coordinate","feature","createFeature","fit","duration","animate","center","resolution","Feature","Point","addLayer","setStyle","setId","getSource","addFeature","building","village","blur","that","mapElement","getTargetElement","handleEvent","removeEventListener","removeAllChildren","found","getLayers","Control","Style","image","Icon","scale","src","$nominatim","$html","super","getLayer","setProvider","setProviderKey"],"mappings":";;;;;;+zDAEO,MAAMA,uIAEAC,EACI,gBAGJC,EACA,YADAA,EAEF,UAGEC,EACJ,eADIA,EAEJ,aAKIC,EACN,MADMA,EAED,WAFCA,EAGH,SAHGA,EAIL,OAJKA,EAKD,WAGCC,EAAkB,CAC7BC,SAAUF,EACVG,MAAO,GACPC,YAAa,wBACbC,aAAc,KACdC,WAAYP,EACZQ,KAAM,QACNC,MAAO,EACPC,UAAU,EACVC,gBAAgB,EAChBC,gBAAgB,EAChBC,eAAe,EACfC,qBAAsB,GACtBC,OAAO,GCzCF,SAASC,EAAOC,EAAWC,EAAU,oBAC1C,IAAKD,EAAW,CACd,GAAqB,oBAAVE,MAAuB,MAAM,IAAIA,MAAMD,GAElD,MAAMA,CACP,CACH,CAwBO,SAASE,EAASC,GACvB,MAAMC,EAvBD,WASL,GAJI,gBAAiBC,QAAW,IAC9BA,OAAOC,YAAc,IAGnB,QAASD,OAAOC,aAAgB,EAAO,CACzC,IAAIC,EAAYC,KAAKC,MAEjBH,YAAYI,QAAUJ,YAAYI,OAAOC,kBAC3CJ,EAAYD,YAAYI,OAAOC,iBAGjCN,OAAOC,YAAYG,IAAM,IAAMD,KAAKC,MAAQF,CAC7C,CAED,OAAOF,OAAOC,YAAYG,KAC5B,CAGaA,GAAMG,SAAS,IAE1B,OAAOT,EAASA,EAASC,EAAKA,CAChC,CAEO,SAASS,EAAUC,GACxB,MAAO,SAASC,KAAKD,EACvB,CC3BO,SAASE,EAASC,EAASC,EAAWC,GAC3C,GAAIC,MAAMC,QAAQJ,GAGhB,YAFAA,EAAQK,SAASC,GAASP,EAASO,EAAML,KAK3C,MAAMM,EAAQJ,MAAMC,QAAQH,GAAaA,EAAYA,EAAUO,MAAM,QAErE,IAAIC,EAAIF,EAAMG,OAEd,KAAOD,KACAE,EAASX,EAASO,EAAME,KAC3BG,EAAUZ,EAASO,EAAME,GAAIP,EAGnC,CAQO,SAASW,EAAYb,EAASC,EAAWC,GAC9C,GAAIC,MAAMC,QAAQJ,GAGhB,YAFAA,EAAQK,SAASC,GAASO,EAAYP,EAAML,EAAWC,KAKzD,MAAMK,EAAQJ,MAAMC,QAAQH,GAAaA,EAAYA,EAAUO,MAAM,QAErE,IAAIC,EAAIF,EAAMG,OAEd,KAAOD,KACDE,EAASX,EAASO,EAAME,KAC1BK,EAAad,EAASO,EAAME,GAAIP,EAGtC,CAOO,SAASS,EAASX,EAASe,GAEhC,OAAOf,EAAQgB,UAAYhB,EAAQgB,UAAUC,SAASF,GAAKG,EAAWH,GAAGjB,KAAKE,EAAQmB,UACxF,CAiEO,SAASC,EAASC,EAAMC,GAC7B,OAAOD,EAAKE,QAAQ,wBAAwB,CAACC,EAAKC,KAChD,MAAMC,OAAqBC,IAAbL,EAAIG,GAAqB,GAAKH,EAAIG,GAEhD,OAKKG,OALaF,GAMjBG,WAAW,IAAK,SAChBA,WAAW,IAAK,QAChBA,WAAW,IAAK,QAChBA,WAAW,IAAK,UAChBA,WAAW,IAAK,SAVO,GAE5B,CAWO,SAASC,EAAcC,EAAMV,GAClC,IAAIW,EAEJ,GAAI7B,MAAMC,QAAQ2B,IAOhB,GANAC,EAAOC,SAASH,cAAcC,EAAK,IAE/BA,EAAK,GAAG5C,KAAI6C,EAAK7C,GAAK4C,EAAK,GAAG5C,IAE9B4C,EAAK,GAAG9B,YAAW+B,EAAKb,UAAYY,EAAK,GAAG9B,WAE5C8B,EAAK,GAAGG,KAAM,CAChB,MAAMA,KACJA,GACEH,EAAK,GAET,GAAI5B,MAAMC,QAAQ8B,GAAO,CACvB,IAAIzB,GAAK,EAET,OAASA,EAAIyB,EAAKxB,QAChBsB,EAAKG,aAAaD,EAAKzB,GAAG2B,KAAMF,EAAKzB,GAAGiB,MAElD,MACQM,EAAKG,aAAaD,EAAKE,KAAMF,EAAKR,MAErC,OAEDM,EAAOC,SAASH,cAAcC,GAGhCC,EAAKK,UAAYhB,EAEjB,MAAMiB,EAAOL,SAASM,yBAEtB,KAAOP,EAAKQ,WAAW,IAAIF,EAAKG,OAAOT,EAAKQ,WAAW,IAIvD,OAFAR,EAAKS,OAAOH,GAELN,CACT,CAEA,SAASd,EAAWjB,GAClB,OAAO,IAAIyC,OAAO,YAAYzC,aAAsB,IACtD,CAEA,SAASW,EAAU+B,EAAIC,EAAO1C,GAExByC,EAAG3B,UACL2B,EAAG3B,UAAU6B,IAAID,GAEjBD,EAAGxB,UAAY,GAAGwB,EAAGxB,aAAayB,IAAQE,OAGxC5C,GAAWN,EAAUM,IACvBd,OAAO2D,YAAW,IAAMjC,EAAa6B,EAAIC,IAAQ1C,EAErD,CAEA,SAASY,EAAa6B,EAAIC,EAAO1C,GAC3ByC,EAAG3B,UACL2B,EAAG3B,UAAUgC,OAAOJ,GAEpBD,EAAGxB,UAAYwB,EAAGxB,UAAUI,QAAQL,EAAW0B,GAAQ,KAAKE,OAG1D5C,GAAWN,EAAUM,IACvBd,OAAO2D,YAAW,IAAMnC,EAAU+B,EAAIC,IAAQ1C,EAElD,CCzMA,MAAM+C,EAAUvF,EAAKwF,WAKN,MAAMC,EAKnB,WAAAC,CAAYC,GACVC,KAAKD,QAAUA,EACfC,KAAKC,IAAMD,KAAKE,eACjB,CAED,aAAAA,GACE,IAAIC,EACAC,EACAC,EA0CJ,OAxCIL,KAAKD,QAAQjF,aAAeP,GAC9B6F,EAAiB,GAAGT,EAAQW,aAAaX,EAAQY,UAAUJ,YAC3DA,EAAY3B,EACV,CAAC,MAAO,CACN3C,GAAIzB,EAAKoG,YACT7D,UAAWyD,IAEbP,EAAKY,OAEPJ,EAAW,CACTF,YACAO,QAASP,EAAUQ,cAAc,IAAIhB,EAAQY,UAAUG,WACvD/F,MAAOwF,EAAUQ,cAAc,IAAIhB,EAAQY,UAAU5F,SACrD8F,MAAON,EAAUQ,cAAc,IAAIhB,EAAQY,UAAUE,SACrDG,OAAQT,EAAUQ,cAAc,IAAIhB,EAAQY,UAAUK,UACtDC,OAAQV,EAAUQ,cAAc,IAAIhB,EAAQY,UAAUM,WAExDR,EAAS1F,MAAMoE,UAAYiB,KAAKD,QAAQpF,QAExCyF,EAAiB,GAAGT,EAAQW,aAAaX,EAAQmB,MAAMX,YACvDA,EAAY3B,EACV,CAAC,MAAO,CACN3C,GAAIzB,EAAKoG,YACT7D,UAAWyD,IAEbP,EAAKiB,OAEPT,EAAW,CACTF,YACAO,QAASP,EAAUQ,cAAc,IAAIhB,EAAQmB,MAAMJ,WACnDK,OAAQZ,EAAUQ,cAAc,IAAIhB,EAAQmB,MAAMC,UAClDN,MAAON,EAAUQ,cAAc,IAAIhB,EAAQmB,MAAML,SACjDG,OAAQT,EAAUQ,cAAc,IAAIhB,EAAQmB,MAAMF,UAClDC,OAAQV,EAAUQ,cAAc,IAAIhB,EAAQmB,MAAMD,YAKtDR,EAASI,MAAM7F,YAAcoF,KAAKD,QAAQnF,YAEnCyF,CACR,ECtEI,SAASW,EAAKC,GACnB,OAAO,IAAIC,SAAQ,CAACC,EAASC,KAC3B,MAAMC,EAgCV,SAAsBA,EAAKC,GACrBA,GAAwB,iBAATA,IACjBD,IAAQ,MAAM7E,KAAK6E,GAAO,IAAM,KAAOE,EAAcD,IAGvD,OAAOD,CACT,CAtCgBG,CAAaP,EAAII,IAAKJ,EAAIK,MAChCG,EAAS,CACbC,OAAQ,MACRC,KAAM,OACNC,YAAa,eAGXX,EAAIY,MAiCZ,SAAeR,EAAKlD,EAAK2D,GAEvB,MAAMC,KACJA,GACEpD,SACEqD,EAASrD,SAASH,cAAc,UAEhCyD,EAAe,IAAIC,KAAKC,MAAMD,KAAKE,SAAWnG,KAAKC,SAGzD8F,EAAOnD,aACL,MAIA,GAAGwC,GAAOA,EAAIgB,QAAQ,KAAO,EAAI,IAAM,KAAOlE,KAAO8D,KAMvDnG,OAAOmG,GAAiBX,IACtBxF,OAAOmG,QAAgB5D,EAGvBoB,YAAW,IAAMsC,EAAKO,YAAYN,IAAS,GAG3CF,EAASR,EAAK,EAIhBS,EAAK5C,OAAO6C,EACd,CAjEMH,CAAMR,EAAKJ,EAAIgB,aAAcd,GAE7BoB,MAAMlB,EAAKI,GACRe,MAAMC,GAAMA,EAAEzB,SACdwB,KAAKrB,GACLuB,MAAMtB,EACV,GAEL,CAEA,SAASG,EAAcN,GACrB,OAAO0B,OAAOC,KAAK3B,GAChB4B,QAAO,CAACC,EAAKC,KACZD,EAAIE,KACgB,iBAAX/B,EAAI8B,GACXxB,EAAcN,EAAI8B,IAClB,GAAGE,mBAAmBF,MAAME,mBAAmBhC,EAAI8B,OAG9CD,IACN,IACFI,KAAK,IACV,CDyCArD,EAAKiB,MAAQ,mBACGnB,EAAQmB,MAAMJ,WAAWf,EAAQwD,8CACjB/I,EAAKgJ,2BAA2BzD,EAAQmB,MAAMC,iDACjD3G,EAAKiJ,wBAAwB1D,EAAQmB,MAAML,mEAC3DrG,EAAKkJ,yBAAyB3D,EAAQmB,MAAMF,UAAUjB,EAAQ4D,wCAE5D5D,EAAQmB,MAAMD,kBAG7BhB,EAAKY,MAAQ,mBACGd,EAAQY,UAAUG,2CACHtG,EAAKkJ,yBAAyB3D,EAAQY,UAAU5F,+CAClDP,EAAKiJ,wBAAwB1D,EAAQY,UAAUE,yEACzDd,EAAQY,UAAUiD,gDACLpJ,EAAKkJ,yBAAyB3D,EAAQY,UAAUK,UAAUjB,EAAQ4D,6CAEnF5D,EAAQY,UAAUM,kBEtFlB,MAAM4C,EAInB,WAAA3D,GACEE,KAAK0D,SAAW,CACdrC,IAAK,gCAELsC,OAAQ,CACNC,EAAG,GACH5I,MAAO,GACPD,KAAM,MAGR8I,MAAO,CAAC,KAAM,KAAM,KAAM,MAE7B,CAED,aAAAC,CAAc/D,GAGZ,OAFAA,EAAQhF,KAAOgF,EAAQhF,KAAKgJ,cAErB,CACL1C,IAAKrB,KAAK0D,SAASrC,IAEnBsC,OAAQ,CACNC,EAAG7D,EAAQiE,MACXhJ,MAAO+E,EAAQ/E,OAASgF,KAAK0D,SAASC,OAAO3I,MAE7CD,KAAMiF,KAAK0D,SAASG,MAAMI,SAASlE,EAAQhF,MAAQgF,EAAQhF,KAAOiF,KAAK0D,SAASC,OAAO5I,MAG5F,CAED,cAAAmJ,CAAeC,GACb,OAAgC,IAA5BA,EAAQC,SAAShH,OAAqB,GAEnC+G,EAAQC,SAASC,KAAKxD,IAAY,CACvCyD,IAAKzD,EAAO0D,SAASC,YAAY,GACjCC,IAAK5D,EAAO0D,SAASC,YAAY,GAEjCE,QAAS,CACP5F,KAAM+B,EAAO8D,WAAW7F,KACxB8F,SAAU/D,EAAO8D,WAAWC,SAC5BC,KAAMhE,EAAO8D,WAAWE,KACxBC,MAAOjE,EAAO8D,WAAWG,MACzBC,QAASlE,EAAO8D,WAAWI,SAG7BC,SAAU,CACRC,UAAWpE,EAAO8D,WAAW7F,KAC7BoG,QAASrE,EAAO8D,eAGrB,ECrDY,MAAMQ,EAInB,WAAArF,CAAYC,GACVC,KAAK0D,SAAW,CACdrC,IAAK,gDACFtB,EAEH4D,OAAQ,CACNC,EAAG,GACHwB,OAAQ,OACRC,eAAgB,EAChBrK,MAAO,GACPsK,aAAc,GACdC,QAAS,GACT,kBAAmB,SAGxB,CAED,aAAAzB,CAAc0B,GACZ,MAAO,CACLnE,IAAKrB,KAAK0D,SAASrC,IAEnBsC,OAAQ,CACNC,EAAG4B,EAAIxB,MACPoB,OAAQpF,KAAK0D,SAASC,OAAOyB,OAC7BC,eAAgBrF,KAAK0D,SAASC,OAAO0B,eACrCrK,MAAOwK,EAAIxK,OAASgF,KAAK0D,SAASC,OAAO3I,MACzCsK,aAAcE,EAAIF,cAAgBtF,KAAK0D,SAASC,OAAO2B,aACvDC,QAASC,EAAID,SAAWvF,KAAK0D,SAASC,OAAO4B,QAC7C,kBAAmBC,EAAIzK,MAAQiF,KAAK0D,SAASC,OAAO,oBAGzD,CAED,cAAAO,CAAeC,GACb,OAAuB,IAAnBA,EAAQ/G,OAAqB,GAE1B+G,EAAQE,KAAKxD,IAAY,CAC9ByD,IAAKzD,EAAOyD,IACZG,IAAK5D,EAAO4D,IACZgB,KAAM5E,EAAO6E,YAEbhB,QAAS,CACP5F,KAAM+B,EAAO8E,aACbC,KAAM/E,EAAO6D,QAAQkB,MAAQ,GAC7BC,YAAahF,EAAO6D,QAAQoB,cAAgB,GAC5ClB,SAAU/D,EAAO6D,QAAQE,SACzBC,KAAMhE,EAAO6D,QAAQG,MAAQhE,EAAO6D,QAAQqB,KAC5CjB,MAAOjE,EAAO6D,QAAQI,MACtBC,QAASlE,EAAO6D,QAAQK,SAG1BC,SAAU,CACRC,UAAWpE,EAAO8E,aAClBT,QAASrE,EAAO6D,YAGrB,EC5DY,MAAMsB,GAInB,WAAAlG,GACEE,KAAK0D,SAAW,CACdrC,IAAK,uDAELsC,OAAQ,CACNC,EAAG,GACHzF,IAAK,GACLiH,OAAQ,OACRC,eAAgB,EAChBrK,MAAO,GACPsK,aAAc,GACd,kBAAmB,SAGxB,CAED,aAAAxB,CAAc/D,GACZ,MAAO,CACLsB,IAAKrB,KAAK0D,SAASrC,IAEnBsC,OAAQ,CACNC,EAAG7D,EAAQiE,MACX7F,IAAK4B,EAAQ5B,IACbiH,OAAQ,OACRC,eAAgB,EAChBrK,MAAO+E,EAAQ/E,OAASgF,KAAK0D,SAASC,OAAO3I,MAC7CsK,aAAcvF,EAAQuF,cAAgBtF,KAAK0D,SAASC,OAAO2B,aAE3D,kBAAmBvF,EAAQhF,MAAQiF,KAAK0D,SAASC,OAAO,oBAG7D,CAED,cAAAO,CAAeC,GACb,OAAuB,IAAnBA,EAAQ/G,OAAqB,GAE1B+G,EAAQE,KAAKxD,IAAY,CAC9ByD,IAAKzD,EAAOyD,IACZG,IAAK5D,EAAO4D,IAEZC,QAAS,CACP5F,KAAM+B,EAAO6D,QAAQuB,eAAiB,GACtCL,KAAM/E,EAAO6D,QAAQkB,MAAQ,GAC7BhB,SAAU/D,EAAO6D,QAAQE,SACzBC,KAAMhE,EAAO6D,QAAQG,MAAQhE,EAAO6D,QAAQqB,KAC5CjB,MAAOjE,EAAO6D,QAAQI,MACtBC,QAASlE,EAAO6D,QAAQK,SAG1BC,SAAU,CACRC,UAAWpE,EAAO8E,aAClBT,QAASrE,EAAO6D,YAGrB,EC1DY,MAAMwB,GAInB,WAAApG,GACEE,KAAK0D,SAAW,CACdrC,IAAK,iDACLY,aAAc,QAEd0B,OAAQ,CACNK,MAAO,GACP7F,IAAK,GACLgI,oBAAqB,EACrBC,WAAY,IAGjB,CAED,aAAAtC,CAAc/D,GACZ,MAAO,CACLsB,IAAKrB,KAAK0D,SAASrC,IACnBY,aAAcjC,KAAK0D,SAASzB,aAE5B0B,OAAQ,CACNK,MAAOjE,EAAQiE,MACf7F,IAAK4B,EAAQ5B,IAEbgI,oBAAqBpG,EAAQoG,qBAAuBnG,KAAK0D,SAASC,OAAOwC,oBAEzEC,WAAYrG,EAAQqG,YAAcpG,KAAK0D,SAASC,OAAOyC,YAG5D,CAED,cAAAlC,CAAeC,GACb,MAAMkC,UACJA,GACElC,EAAQmC,aAAa,GAEzB,OAAyB,IAArBD,EAAUjJ,OAAqB,GAE5BiJ,EAAUhC,KAAKxD,IAAY,CAChCyD,IAAKzD,EAAO0F,MAAM/B,YAAY,GAC9BC,IAAK5D,EAAO0F,MAAM/B,YAAY,GAE9BE,QAAS,CACP5F,KAAM+B,EAAO/B,MAGfkG,SAAU,CACRC,UAAWpE,EAAO6D,QAAQ8B,iBAC1BtB,QAASrE,EAAO6D,YAGrB,ECtDY,MAAM+B,GAInB,WAAA3G,GACEE,KAAK0D,SAAW,CACdrC,IAAK,gDAELsC,OAAQ,CACNC,EAAG,GACHzF,IAAK,GACLnD,MAAO,GACP0L,YAAa,GACbC,OAAQ,EACRC,eAAgB,GAGrB,CAED,aAAA9C,CAAc/D,GACZ,MAAO,CACLsB,IAAKrB,KAAK0D,SAASrC,IAEnBsC,OAAQ,CACNC,EAAG7D,EAAQiE,MACX7F,IAAK4B,EAAQ5B,IACbnD,MAAO+E,EAAQ/E,OAASgF,KAAK0D,SAASC,OAAO3I,MAC7C0L,YAAa3G,EAAQuF,cAAgBtF,KAAK0D,SAASC,OAAO2B,cAG/D,CAED,cAAApB,CAAeC,GACb,OAA+B,IAA3BA,EAAQA,QAAQ/G,OAAqB,GAElC+G,EAAQA,QAAQE,KAAKxD,IAAY,CACtCyD,IAAKzD,EAAO0D,SAASsC,IACrBpC,IAAK5D,EAAO0D,SAASE,IAErBC,QAAS,CACP5F,KAAM+B,EAAOiG,WAAWhB,cAAgB,GACxCF,KAAM/E,EAAOiG,WAAWlB,MAAQ,GAChChB,SAAU/D,EAAOiG,WAAWlC,SAC5BC,KAAMhE,EAAOiG,WAAWjC,MAAQhE,EAAOiG,WAAWf,KAClDjB,MAAOjE,EAAOiG,WAAWhC,MACzBC,QAASlE,EAAOiG,WAAW/B,SAG7BC,SAAU,CACRC,UAAWpE,EAAOoE,UAClBC,QAASrE,EAAOiG,eAGrB,ECvBH,MAAMnH,GAAUvF,EAAKwF,WAKN,MAAMmH,GAKnB,WAAAjH,CAAYkH,EAAM/G,GAChBD,KAAKiH,KAAOD,EAEZhH,KAAKkH,UAAYvL,EAAS,mBAC1BqE,KAAKmH,MAAQ,IAAIC,UAAY,CAC3BtI,KAAMkB,KAAKkH,UACXG,OAAQ,IAAIC,EAAAA,QACZC,wBAAwB,IAG1BvH,KAAKD,QAAUiH,EAAKjH,QAGpBC,KAAKD,QAAQrF,SACsB,iBAA1BsF,KAAKD,QAAQrF,SACpBsF,KAAKD,QAAQrF,SAASqJ,cACtB/D,KAAKD,QAAQrF,SACfsF,KAAKtF,SAAWsF,KAAKwH,cAErBxH,KAAKC,IAAMA,EACXD,KAAKyH,UAAY,GACjBzH,KAAKG,UAAYH,KAAKC,IAAIE,UAC1BH,KAAK0H,oBAAsB,CACzBC,UAAU,GAEZ3H,KAAK4H,cACN,CAED,YAAAA,GACE,MAAMC,EAAcC,IAClBA,EAAIC,kBACJ1K,EAAS2C,KAAKC,IAAIS,QAASf,GAAQmB,MAAMkH,UAAYhI,KAAKiI,WAAajI,KAAKkI,QAAQ,EA8BtFlI,KAAKC,IAAIQ,MAAM0H,iBAAiB,YA5BjBL,IACb,MAAM1J,EAAQ0J,EAAIM,OAAOhK,MAAMoB,QACnBsI,EAAI3J,IACF,UAAZ2J,EAAI3J,IACJ2J,EAAIO,MACU,KAAdP,EAAIO,QACJP,EAAIQ,SACY,KAAhBR,EAAIQ,WAIJR,EAAI5M,iBACJ8E,KAAKgE,MAAM5F,GACZ,IAegD,GACnD4B,KAAKC,IAAIQ,MAAM0H,iBAAiB,SAdVL,GAAQA,EAAIC,oBAcqB,GACvD/H,KAAKC,IAAIQ,MAAM0H,iBAAiB,SAVXL,IAGF,IAFHA,EAAIM,OAAOhK,MAAMoB,OAEzBpC,OACJG,EAAYyC,KAAKC,IAAIW,OAAQjB,GAAQ4D,QACrC9G,EAASuD,KAAKC,IAAIW,OAAQjB,GAAQ4D,OAAO,IAKS,GACtDvD,KAAKC,IAAIW,OAAOuH,iBAAiB,SAflB,KACbnI,KAAKC,IAAIQ,MAAM8H,QACfvI,KAAKgE,MAAMhE,KAAKC,IAAIQ,MAAMrC,MAAM,IAagB,GAE9C4B,KAAKD,QAAQjF,aAAeP,GAC9ByF,KAAKC,IAAIc,OAAOoH,iBAAiB,QAASN,GAAY,EAEzD,CAED,KAAA7D,CAAMJ,GAEC5D,KAAKtF,WACRsF,KAAKtF,SAAWsF,KAAKwH,eAGvB,MAAMgB,EAAaxI,KAAKtF,SAASoJ,cAAc,CAC7CE,MAAOJ,EACPzF,IAAK6B,KAAKD,QAAQ5B,IAClBpD,KAAMiF,KAAKD,QAAQhF,KACnBuK,aAActF,KAAKD,QAAQuF,aAC3BC,QAASvF,KAAKD,QAAQwF,QACtBvK,MAAOgF,KAAKD,QAAQ/E,QAGtB,GAAIgF,KAAKyH,YAAc7D,GAAK5D,KAAKC,IAAIY,OAAO4H,WAAY,OAExDzI,KAAKyH,UAAY7D,EACjB5D,KAAK0I,eACLjM,EAASuD,KAAKC,IAAIW,OAAQjB,GAAQgJ,MAElC,MAAMC,EAAO,CACXvH,IAAKmH,EAAWnH,IAChBC,KAAMkH,EAAW7E,QAGf6E,EAAWvG,eACb2G,EAAK/G,OAAQ,EACb+G,EAAK3G,aAAeuG,EAAWvG,cAGjCjB,EAAK4H,GACFpG,MAAMqG,IAEL7I,KAAKD,QAAQzE,OAASwN,QAAQC,KAAKF,GAEnCtL,EAAYyC,KAAKC,IAAIW,OAAQjB,GAAQgJ,MAGrC,MAAMK,EAAOhJ,KAAKtF,SAASwJ,eAAe2E,GAEtCG,IACFhJ,KAAKiJ,WAAWD,GAChBhJ,KAAKkJ,iBACN,IAEFxG,OAAM,KACLnF,EAAYyC,KAAKC,IAAIW,OAAQjB,GAAQgJ,MAErC,MAAMQ,EAAK3K,EAAc,KAAM,2CAE/BwB,KAAKC,IAAIY,OAAO1B,OAAOgK,EAAG,GAE/B,CAED,UAAAF,CAAWG,GACT,MAAMC,EAAKrJ,KAAKC,IAAIY,OAEpBuI,EAASrM,SAASiB,IAChB,IAAIsL,EAEJ,GAAQtJ,KAAKD,QAAQrF,WACdF,EACH8O,EAAc,gBAAgB3J,GAAQiG,SAAS5H,EAAI0G,QAAQ5F,mBAI3DwK,EAActJ,KAAKuJ,gBAAgBvL,EAAI0G,SAG3C,GAAuB,GAAnB0E,EAAShM,OACX4C,KAAKwJ,OAAOxL,EAAKsL,EAAatL,EAAI0G,QAAS1G,EAAIgH,cAC1C,CACL,MAAMmE,EAAK3K,EAAc,KAAM,eAAe8K,SAE9CH,EAAGhB,iBACD,SACCL,IACCA,EAAI5M,iBACJ8E,KAAKwJ,OAAOxL,EAAKsL,EAAatL,EAAI0G,QAAS1G,EAAIgH,SAAS,IAE1D,GAGFqE,EAAGlK,OAAOgK,EACX,IAEJ,CAED,MAAAK,CAAOC,EAAOH,EAAaI,EAAYC,GACrC,MAAMtF,EAAMrE,KAAKiH,KAAK2C,SAChBC,EAAS,CAACC,OAAOC,WAAWN,EAAMnF,KAAMwF,OAAOC,WAAWN,EAAMhF,MAChEuF,EAAa3F,EAAI4F,UAAUC,gBAC3BC,EAAQC,EAAKC,UAAUR,EAAQ,YAAaG,GAElD,IAAIvE,KACFA,GACEgE,EAEAhE,IACFA,EAAO2E,EAAKE,gBAGV,CAACP,WAAWtE,EAAK,IAAKsE,WAAWtE,EAAK,IAAKsE,WAAWtE,EAAK,IAAKsE,WAAWtE,EAAK,KAChF,YACAuE,IAIJ,MAAMtF,EAAU,CACdO,UAAWqE,EACXpE,QAASwE,EACT1E,SAAU2E,GAKZ,IAF0B,IAA1B3J,KAAKD,QAAQ9E,UAAsB+E,KAAK0I,cAAa,IAEjB,IAAhC1I,KAAKD,QAAQ7E,iBAA0D,IAA/B8E,KAAKD,QAAQ3E,cAEvD4E,KAAKiH,KAAKsD,cAAc,CACtBC,KAAMnQ,EACNqK,UACA+F,WAAYN,EACZ1E,OACAgE,cAEG,CAEL,MAAMiB,EAAU1K,KAAK2K,cAAcR,EAAOzF,GAE1C1E,KAAKiH,KAAKsD,cAAc,CACtBC,KAAMnQ,EACNqK,UACAgG,UACAD,WAAYN,EACZ1E,OACAgE,SAEH,EAEmC,IAAhCzJ,KAAKD,QAAQ7E,iBAA2D,IAAhC8E,KAAKD,QAAQ5E,iBAEnDsK,EACFpB,EAAI4F,UAAUW,IAAInF,EAAM,CACtBoF,SAAU,MAGZxG,EAAI4F,UAAUa,QAAQ,CACpBC,OAAQZ,EAERa,WAAYhL,KAAKD,QAAQ1E,qBACzBwP,SAAU,MAIjB,CAED,aAAAF,CAAcR,GACZ,MAAMO,EAAU,IAAIO,EAAO,QAAC,IAAIC,EAAAA,QAAMf,IAOtC,OALAnK,KAAKmL,WACLT,EAAQU,SAASpL,KAAKD,QAAQlF,cAC9B6P,EAAQW,MAAM1P,EAAS,iBACvBqE,KAAKsL,YAAYC,WAAWb,GAErBA,CACR,CAED,eAAAnB,CAAgB7E,GACd,MAAM3G,EAAO,GAsBb,OApBI2G,EAAQ5F,MACVf,EAAKiF,KAAK,CAAC,gBAAiBrD,GAAQiG,KAAM,mBAAmB1C,KAAK,MAGhEwB,EAAQkB,MAAQlB,EAAQ8G,UAAY9G,EAAQoB,eAC9C/H,EAAKiF,KACH,CAAC,gBAAiBrD,GAAQiG,KAAM,6CAA6C1C,KAAK,MAIlFwB,EAAQG,MAAQH,EAAQqB,MAAQrB,EAAQ+G,UAC1C1N,EAAKiF,KACH,CAAC,gBAAiBrD,GAAQkF,KAAM,+CAA+C3B,KAAK,MAIpFwB,EAAQI,OAASJ,EAAQK,UAC3BhH,EAAKiF,KAAK,CAAC,gBAAiBrD,GAAQoF,QAAS,8BAA8B7B,KAAK,KAG3EpF,EAASC,EAAKmF,KAAK,QAASwB,EACpC,CAED,WAAA8C,GACE,OAAQxH,KAAKD,QAAQrF,UACnB,KAAKF,EACH,OAAO,IAAI2K,EAAWnF,KAAKD,SAC7B,KAAKvF,EACH,OAAO,IAAIwL,GACb,KAAKxL,EACH,OAAO,IAAIiJ,EACb,KAAKjJ,EACH,OAAO,IAAI0L,GACb,KAAK1L,EACH,OAAO,IAAIiM,GAEb,QACE,OAAOzG,KAAKD,QAAQrF,SAEzB,CAED,MAAAwN,GACE3K,EAAYyC,KAAKC,IAAIQ,MAAOd,GAAQgJ,MACpClM,EAASuD,KAAKC,IAAIS,QAASf,GAAQmB,MAAMkH,UACzClM,OAAO2D,YAAW,IAAMO,KAAKC,IAAIQ,MAAM8H,SAAS,KAChDvI,KAAKkJ,gBACN,CAED,QAAAjB,GACEjI,KAAKC,IAAIQ,MAAMrC,MAAQ,GACvB4B,KAAKC,IAAIQ,MAAMiL,OACfjP,EAASuD,KAAKC,IAAIW,OAAQjB,GAAQ4D,QAClChG,EAAYyC,KAAKC,IAAIS,QAASf,GAAQmB,MAAMkH,UAC5ChI,KAAK0I,cACN,CAED,cAAAQ,GAEE,GAAIlJ,KAAK0H,oBAAoBC,SAAU,OAEvC,MAAMgE,EAAO3L,KACP4L,EAAa5L,KAAKiH,KAAK2C,SAASiC,mBAEtC7L,KAAK0H,oBAAoBC,UAAW,EAGpCiE,EAAWzD,iBACT,QAAS,CACP,WAAA2D,CAAYhE,GACV6D,EAAKjD,cAAa,GAClBkD,EAAWG,oBAAoBjE,EAAI0C,KAAMxK,MAAM,GAC/C2L,EAAKjE,oBAAoBC,UAAW,CACrC,IAEH,EAEH,CAED,YAAAe,CAAaT,GACXA,GAAYjI,KAAKD,QAAQjF,aAAeP,EACtCyF,KAAKiI,WR/PJ,SAA2BxJ,GAChC,KAAOA,EAAKgK,YAAYhK,EAAKgK,WAAW/I,QAC1C,CQ8PMsM,CAAkBhM,KAAKC,IAAIY,OAC9B,CAED,SAAAyK,GACE,OAAOtL,KAAKmH,MAAMmE,WACnB,CAED,QAAAH,GACE,IAAIc,GAAQ,EAEZ,MAAM5H,EAAMrE,KAAKiH,KAAK2C,SAEtBvF,EAAI6H,YAAYnP,SAASoK,IACnBA,IAAUnH,KAAKmH,QAAO8E,GAAQ,EAAI,IAGnCA,GAAO5H,EAAI8G,SAASnL,KAAKmH,MAC/B,EC3WY,MAAMF,WAAakF,EAAAA,QAMhC,WAAArM,CAAY0K,EAAOlQ,EAAwBkL,GACzCjK,EAAuB,iBAATiP,EAAmB,mCACjCjP,EACEiP,IAASlQ,GAA0BkQ,IAASlQ,EAC5C,4BAA4BA,iBACtBA,OAER,MAAMyF,EAAU,IACXtF,EACHI,aAAc,CACZ,IAAIuR,UAAM,CACRC,MAAO,IAAIC,EAAAA,QAAK,CACdC,MAAO,GACPC,IXrBe,4EWyBlBhH,GAGL,IAAIrF,EACAsM,EACJ,MAAMC,EAAQ,IAAI7M,EAAKE,GAWvB,GATIyK,IAASlQ,IACX6F,EAAYuM,EAAMzM,IAAIE,WAGxBwM,MAAM,CACJjQ,QAASyD,KACNJ,MAGCC,gBAAgBiH,IAAO,OAAO,IAAIA,GAExCjH,KAAKD,QAAUA,EACfC,KAAKG,UAAYA,EAEbqK,IAASlQ,IACXmS,EAAa,IAAI1F,GAAU/G,KAAM0M,EAAMzM,KACvCD,KAAKmH,MAAQsF,EAAWtF,MAE3B,CAKD,QAAAyF,GACE,OAAO5M,KAAKmH,KACb,CAKD,SAAAmE,GACE,OAAOtL,KAAK4M,WAAWtB,WACxB,CAMD,WAAAuB,CAAYnS,GACVsF,KAAKD,QAAQrF,SAAWA,CACzB,CAMD,cAAAoS,CAAe3O,GACb6B,KAAKD,QAAQ5B,IAAMA,CACpB"}
\ No newline at end of file
diff --git a/dist/ol-geocoder.min.css b/dist/ol-geocoder.min.css
index a43a5d0..9c31317 100644
--- a/dist/ol-geocoder.min.css
+++ b/dist/ol-geocoder.min.css
@@ -1,8 +1,8 @@
/*!
- * ol-geocoder - v4.3.1-dev
- * A geocoder extension compatible with OpenLayers v7+ & v8+
+ * ol-geocoder - v4.3.1
+ * A geocoder extension compatible with OpenLayers v6.x, v7.x & v8.x
* https://github.com/Dominique92/ol-geocoder
- * Built: Wed Sep 13 2023 20:58:28 GMT+0200 (heure d’été d’Europe centrale)
+ * Built: 15/09/2023 16:57:43
*/
- .ol-touch .ol-control.gcd-gl-control button{font-size:1.14em}.ol-touch .ol-geocoder.gcd-gl-container{font-size:1.1em}.ol-geocoder.gcd-gl-container{box-sizing:border-box;font-size:.9em;left:.5em;position:absolute;top:4.875em}.ol-geocoder.gcd-gl-container *,.ol-geocoder.gcd-gl-container :after,.ol-geocoder.gcd-gl-container :before{box-sizing:inherit}.ol-geocoder .gcd-gl-control{height:2.1875em;overflow:hidden;transition:width .2s,height .2s;width:2.1875em}.ol-geocoder .gcd-gl-expanded{height:2.1875em;width:15.625em}.ol-geocoder .gcd-gl-input{background-color:#fff;border:1px solid #ccc;color:#222;font-family:inherit;font-size:.875em;left:2.5em;padding:5px;position:absolute;top:.25em;width:14.84375em;z-index:99}.ol-geocoder .gcd-gl-input:focus{border:none;box-shadow:inset 0 0 0 1px #4d90fe,inset 0 0 5px #4d90fe;outline:none}.ol-geocoder .gcd-gl-search{background-color:transparent;border:none;cursor:pointer;display:inline-block;height:100%;line-height:1.4;outline:0;position:absolute;right:0;top:0;width:1.5625em;z-index:100}.ol-geocoder .gcd-gl-search:after{color:#333;content:"\2386";cursor:pointer;display:inline-block;font-size:1.5em}.ol-geocoder .gcd-gl-btn{height:1.5625em;left:.125em;position:absolute;top:.125em;width:1.5625em}.ol-geocoder .gcd-gl-btn:after{content:"\1F50D"}.ol-geocoder ul.gcd-gl-result{background-color:#fff;border-radius:4px;border-top:none;border-top-left-radius:0;border-top-right-radius:0;box-shadow:0 1px 7px rgba(0,0,0,.8);left:2em;list-style:none;margin:0;max-height:18.75em;overflow-x:hidden;overflow-y:auto;padding:0;position:absolute;top:2.1875em;transition:max-height .3s ease-in;white-space:normal;width:16.25em}.ol-geocoder ul.gcd-gl-result>li{border-bottom:1px solid #eee;line-height:.875rem;overflow:hidden;padding:0;width:100%}.ol-geocoder ul.gcd-gl-result>li>a{display:block;padding:3px 5px;text-decoration:none}.ol-geocoder ul.gcd-gl-result>li>a:hover{background-color:#d4d4d4}.ol-geocoder ul.gcd-gl-result>li:nth-child(odd){background-color:#e0ffe0}.ol-geocoder ul.gcd-gl-result:empty{display:none}.ol-geocoder.gcd-txt-container{box-sizing:border-box;height:4.375em;left:calc(50% - 12.5em);position:absolute;top:.5em;width:25em}.ol-geocoder.gcd-txt-container *,.ol-geocoder.gcd-txt-container :after,.ol-geocoder.gcd-txt-container :before{box-sizing:inherit}.ol-geocoder .gcd-txt-control{background-color:#fff;border:1px solid #ccc;height:4.375em;overflow:hidden;position:relative;width:100%}.ol-geocoder .gcd-txt-label{display:inline-block;text-align:center;width:100%}.ol-geocoder .gcd-txt-input{background-color:transparent;border:none;font-family:inherit;font-size:.875em;height:100%;left:0;padding:5px 30px 5px 40px;position:absolute;text-indent:6px;top:0;width:100%;z-index:99}.ol-geocoder .gcd-txt-input:focus{box-shadow:inset 0 0 0 1px #4d90fe,inset 0 0 6px #4d90fe;outline:none}.ol-geocoder .gcd-txt-search{background-color:transparent;border:none;cursor:pointer;display:inline-block;height:100%;line-height:100%;outline:0;position:absolute;right:0;top:0;vertical-align:middle;width:2.5em;z-index:100}.ol-geocoder .gcd-txt-search:after{color:#333;content:"\2386";cursor:pointer;display:inline-block;font-size:2em}.ol-geocoder .gcd-txt-glass{display:inline-block;height:100%;left:9px;position:absolute;top:26px;width:2.5em;z-index:100}.ol-geocoder .gcd-txt-glass:after{content:"\1F50D"}.ol-geocoder ul.gcd-txt-result{background-color:#fff;border-radius:4px;border-top:none;border-top-left-radius:0;border-top-right-radius:0;box-shadow:0 1px 7px rgba(0,0,0,.8);left:0;list-style:none;margin:0;max-height:18.75em;overflow-x:hidden;overflow-y:auto;padding:0;position:absolute;top:4.575em;transition:max-height .3s ease-in;white-space:normal;width:25em}.ol-geocoder ul.gcd-txt-result>li{border-bottom:1px solid #eee;line-height:.875rem;overflow:hidden;padding:0;width:100%}.ol-geocoder ul.gcd-txt-result>li>a{display:block;padding:3px 5px;text-decoration:none}.ol-geocoder ul.gcd-txt-result>li>a:hover{background-color:#d4d4d4}.ol-geocoder ul.gcd-txt-result>li:nth-child(odd){background-color:#e0ffe0}.ol-geocoder ul.gcd-txt-result:empty{display:none}.ol-geocoder .gcd-hidden{opacity:0;visibility:hidden}.ol-geocoder .gcd-pseudo-rotate:after{animation:spin .7s linear infinite}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.gcd-address,.gcd-road{color:#333;font-size:.875em;font-weight:500}.gcd-city{font-weight:400}.gcd-city,.gcd-country{color:#333;font-size:.75em}.gcd-country{font-weight:lighter}
\ No newline at end of file
+ .ol-touch .ol-control.gcd-gl-control button{font-size:1.14em}.ol-touch .ol-geocoder.gcd-gl-container{font-size:1.1em}.ol-geocoder.gcd-gl-container{box-sizing:border-box;font-size:.9em;left:.5em;position:absolute;top:4.875em}.ol-geocoder.gcd-gl-container *,.ol-geocoder.gcd-gl-container :after,.ol-geocoder.gcd-gl-container :before{box-sizing:inherit}.ol-geocoder .gcd-gl-control{height:2.1875em;overflow:hidden;transition:width .2s,height .2s;width:2.1875em}.ol-geocoder .gcd-gl-expanded{height:2.1875em;width:15.625em}.ol-geocoder .gcd-gl-input{background-color:#fff;border:1px solid #ccc;color:#222;font-family:inherit;font-size:.875em;left:2.5em;padding:5px;position:absolute;top:.25em;width:14.84375em;z-index:99}.ol-geocoder .gcd-gl-input:focus{border:none;box-shadow:inset 0 0 0 1px #4d90fe,inset 0 0 5px #4d90fe;outline:none}.ol-geocoder .gcd-gl-search{background-color:transparent;border:none;cursor:pointer;display:inline-block;height:100%;line-height:1.4;outline:0;position:absolute;right:0;top:0;width:1.5625em;z-index:100}.ol-geocoder .gcd-gl-search:after{color:#333;content:"\2386";cursor:pointer;display:inline-block;font-size:1.5em}.ol-geocoder .gcd-gl-btn{cursor:pointer;height:1.5625em;left:.125em;position:absolute;top:.125em;width:1.5625em}.ol-geocoder .gcd-gl-btn:after{content:"\1F50D"}.ol-geocoder ul.gcd-gl-result{background-color:#fff;border-radius:4px;border-top:none;border-top-left-radius:0;border-top-right-radius:0;box-shadow:0 1px 7px rgba(0,0,0,.8);left:2em;list-style:none;margin:0;max-height:18.75em;overflow-x:hidden;overflow-y:auto;padding:0;position:absolute;top:2.1875em;transition:max-height .3s ease-in;white-space:normal;width:16.25em}.ol-geocoder ul.gcd-gl-result>li{border-bottom:1px solid #eee;line-height:.875rem;overflow:hidden;padding:0;width:100%}.ol-geocoder ul.gcd-gl-result>li>a{display:block;padding:3px 5px;text-decoration:none}.ol-geocoder ul.gcd-gl-result>li>a:hover{background-color:#d4d4d4}.ol-geocoder ul.gcd-gl-result>li:nth-child(odd){background-color:#e0ffe0}.ol-geocoder ul.gcd-gl-result:empty{display:none}.ol-geocoder.gcd-txt-container{box-sizing:border-box;height:4.375em;left:calc(50% - 12.5em);position:absolute;top:.5em;width:25em}.ol-geocoder.gcd-txt-container *,.ol-geocoder.gcd-txt-container :after,.ol-geocoder.gcd-txt-container :before{box-sizing:inherit}.ol-geocoder .gcd-txt-control{background-color:#fff;border:1px solid #ccc;height:4.375em;overflow:hidden;position:relative;width:100%}.ol-geocoder .gcd-txt-label{display:inline-block;text-align:center;width:100%}.ol-geocoder .gcd-txt-input{background-color:transparent;border:none;font-family:inherit;font-size:.875em;height:100%;left:0;padding:5px 30px 5px 40px;position:absolute;text-indent:6px;top:0;width:100%;z-index:99}.ol-geocoder .gcd-txt-input:focus{box-shadow:inset 0 0 0 1px #4d90fe,inset 0 0 6px #4d90fe;outline:none}.ol-geocoder .gcd-txt-search{background-color:transparent;border:none;cursor:pointer;display:inline-block;height:100%;line-height:100%;outline:0;position:absolute;right:0;top:0;vertical-align:middle;width:2.5em;z-index:100}.ol-geocoder .gcd-txt-search:after{color:#333;content:"\2386";cursor:pointer;display:inline-block;font-size:2em}.ol-geocoder .gcd-txt-glass{display:inline-block;height:100%;left:9px;position:absolute;top:26px;width:2.5em;z-index:100}.ol-geocoder .gcd-txt-glass:after{content:"\1F50D"}.ol-geocoder ul.gcd-txt-result{background-color:#fff;border-radius:4px;border-top:none;border-top-left-radius:0;border-top-right-radius:0;box-shadow:0 1px 7px rgba(0,0,0,.8);left:0;list-style:none;margin:0;max-height:18.75em;overflow-x:hidden;overflow-y:auto;padding:0;position:absolute;top:4.575em;transition:max-height .3s ease-in;white-space:normal;width:25em}.ol-geocoder ul.gcd-txt-result>li{border-bottom:1px solid #eee;line-height:.875rem;overflow:hidden;padding:0;width:100%}.ol-geocoder ul.gcd-txt-result>li>a{display:block;padding:3px 5px;text-decoration:none}.ol-geocoder ul.gcd-txt-result>li>a:hover{background-color:#d4d4d4}.ol-geocoder ul.gcd-txt-result>li:nth-child(odd){background-color:#e0ffe0}.ol-geocoder ul.gcd-txt-result:empty{display:none}.ol-geocoder .gcd-hidden{opacity:0;visibility:hidden}.ol-geocoder .gcd-pseudo-rotate:after{animation:spin .7s linear infinite}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.gcd-address,.gcd-road{color:#333;font-size:.875em;font-weight:500}.gcd-city{font-weight:400}.gcd-city,.gcd-country{color:#333;font-size:.75em}.gcd-country{font-weight:lighter}
\ No newline at end of file
diff --git a/examples/index.html b/examples/index.html
index 572c0ab..fa74996 100644
--- a/examples/index.html
+++ b/examples/index.html
@@ -4,21 +4,25 @@
-
-
-
-
+
+
+
+
+
+
+
+
- The control above uses the 'proton' provider & 'glass-button' style &
-
- The control below uses the 'nominatim/osm' provider, 'text-input' style & and is attached outside of the map
+ The control above uses the 'proton' provider & 'glass-button' style.
+
+ The control below uses the 'nominatim/osm' provider, 'text-input' style & and is attached outside of the map.