/
ol-geocoder-debug.js.map
1 lines (1 loc) · 64.2 KB
/
ol-geocoder-debug.js.map
1
{"version":3,"file":"ol-geocoder-debug.js","sources":["../konstants/index.js","../src/helpers/mix.js","../src/helpers/dom.js","../src/html.js","../src/providers/photon.js","../src/providers/osm.js","../src/providers/mapquest.js","../src/providers/bing.js","../src/providers/opencage.js","../src/helpers/ajax.js","../src/nominatim.js","../src/base.js"],"sourcesContent":["import * as _VARS_ from './vars.json';\n\nexport const VARS = _VARS_;\n\nexport const EVENT_TYPE = {\n ADDRESSCHOSEN: 'addresschosen',\n};\n\nexport const CONTROL_TYPE = {\n NOMINATIM: 'nominatim',\n REVERSE: 'reverse',\n};\n\nexport const TARGET_TYPE = {\n GLASS: 'glass-button',\n INPUT: 'text-input',\n};\n\nexport const FEATURE_SRC = '//cdn.rawgit.com/jonataswalker/map-utils/master/images/marker.png';\n\nexport const PROVIDERS = {\n OSM: 'osm',\n MAPQUEST: 'mapquest',\n PHOTON: 'photon',\n BING: 'bing',\n OPENCAGE: 'opencage',\n};\n\nexport const DEFAULT_OPTIONS = {\n provider: PROVIDERS.OSM,\n placeholder: 'Search for an address',\n featureStyle: null,\n targetType: TARGET_TYPE.GLASS,\n lang: 'en-US',\n limit: 5,\n keepOpen: false,\n preventDefault: false,\n autoComplete: false,\n autoCompleteMinLength: 2,\n autoCompleteTimeout: 200,\n debug: false,\n};\n","/**\n * Overwrites obj1's values with obj2's and adds\n * obj2's if non existent in obj1\n * @returns obj3 a new object based on obj1 and obj2\n */\nexport function mergeOptions(obj1, obj2) {\n const obj3 = {};\n\n for (const key in obj1) {\n if (Object.prototype.hasOwnProperty.call(obj1, key)) {\n obj3[key] = obj1[key];\n }\n }\n\n for (const key in obj2) {\n if (Object.prototype.hasOwnProperty.call(obj2, key)) {\n obj3[key] = obj2[key];\n }\n }\n\n return obj3;\n}\n\nexport function assert(condition, message = 'Assertion failed') {\n if (!condition) {\n if (typeof Error !== 'undefined') throw new Error(message);\n\n throw message; // Fallback\n }\n}\n\nexport function now() {\n // Polyfill for window.performance.now()\n // @license http://opensource.org/licenses/MIT\n // copyright Paul Irish 2015\n // https://gist.github.com/paulirish/5438650\n if ('performance' in window === false) {\n window.performance = {};\n }\n\n if ('now' in window.performance === false) {\n let nowOffset = Date.now();\n\n if (performance.timing && performance.timing.navigationStart) {\n nowOffset = performance.timing.navigationStart;\n }\n\n window.performance.now = () => Date.now() - nowOffset;\n }\n\n return window.performance.now();\n}\n\nexport function flyTo(map, coord, duration = 500, resolution = 2.388657133911758) {\n map.getView().animate({ duration, resolution }, { duration, center: coord });\n}\n\nexport function randomId(prefix) {\n const id = now().toString(36);\n\n return prefix ? prefix + id : id;\n}\n\nexport function isNumeric(str) {\n return /^\\d+$/u.test(str);\n}\n\nexport function isEmpty(str) {\n return !str || str.length === 0;\n}\n\nexport function emptyArray(array) {\n while (array.length) array.pop();\n}\n\nexport function anyMatchInArray(source, target) {\n return source.some((each) => target.includes(each));\n}\n\nexport function everyMatchInArray(arr1, arr2) {\n return arr2.every((each) => arr1.includes(each));\n}\n\nexport function anyItemHasValue(obj, has = false) {\n const keys = Object.keys(obj);\n\n keys.forEach((key) => {\n if (!isEmpty(obj[key])) has = true;\n });\n\n return has;\n}\n","/* eslint-disable optimize-regex/optimize-regex */\n/* eslint-disable prefer-named-capture-group */\nimport { isNumeric } from './mix';\n\n/**\n * @param {Element|Array<Element>} element DOM node or array of nodes.\n * @param {String|Array<String>} classname Class or array of classes.\n * For example: 'class1 class2' or ['class1', 'class2']\n * @param {Number|undefined} timeout Timeout to remove a class.\n */\nexport function addClass(element, classname, timeout) {\n if (Array.isArray(element)) {\n element.forEach((each) => addClass(each, classname));\n\n return;\n }\n\n const array = Array.isArray(classname) ? classname : classname.split(/\\s+/u);\n\n let i = array.length;\n\n while (i--) {\n if (!hasClass(element, array[i])) {\n _addClass(element, array[i], timeout);\n }\n }\n}\n\n/**\n * @param {Element|Array<Element>} element DOM node or array of nodes.\n * @param {String|Array<String>} classname Class or array of classes.\n * For example: 'class1 class2' or ['class1', 'class2']\n * @param {Number|undefined} timeout Timeout to add a class.\n */\nexport function removeClass(element, classname, timeout) {\n if (Array.isArray(element)) {\n element.forEach((each) => removeClass(each, classname, timeout));\n\n return;\n }\n\n const array = Array.isArray(classname) ? classname : classname.split(/\\s+/u);\n\n let i = array.length;\n\n while (i--) {\n if (hasClass(element, array[i])) {\n _removeClass(element, array[i], timeout);\n }\n }\n}\n\n/**\n * @param {Element} element DOM node.\n * @param {String} classname Classname.\n * @return {Boolean}\n */\nexport function hasClass(element, c) {\n // use native if available\n return element.classList ? element.classList.contains(c) : classRegex(c).test(element.className);\n}\n\n/**\n * @param {Element|Array<Element>} 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 { attr } = 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 // eslint-disable-next-line security/detect-non-literal-regexp\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}\n","import { VARS, TARGET_TYPE } from '../konstants';\n\nimport { createElement } from './helpers/dom';\n\nconst klasses = VARS.cssClasses;\n\n/**\n * @class Html\n */\nexport 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', { id: VARS.containerId, classname: containerClass }],\n Html.input\n );\n elements = {\n container,\n control: container.querySelector(`.${klasses.inputText.control}`),\n input: container.querySelector(`.${klasses.inputText.input}`),\n reset: container.querySelector(`.${klasses.inputText.reset}`),\n result: container.querySelector(`.${klasses.inputText.result}`),\n };\n } else {\n containerClass = `${klasses.namespace} ${klasses.glass.container}`;\n container = createElement(\n ['div', { id: VARS.containerId, classname: containerClass }],\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 reset: container.querySelector(`.${klasses.glass.reset}`),\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 <div class=\"${klasses.glass.control} ${klasses.olControl}\">\n <button type=\"button\" id=\"${VARS.buttonControlId}\" class=\"${klasses.glass.button}\"></button>\n <input type=\"text\" id=\"${VARS.inputQueryId}\" class=\"${klasses.glass.input}\" autocomplete=\"off\" placeholder=\"Search ...\">\n <a id=\"${VARS.inputResetId}\" class=\"${klasses.glass.reset} ${klasses.hidden}\"></a>\n </div>\n <ul class=\"${klasses.glass.result}\"></ul>\n`;\n\nHtml.input = `\n <div class=\"${klasses.inputText.control}\">\n <input type=\"text\" id=\"${VARS.inputQueryId}\" class=\"${klasses.inputText.input}\" autocomplete=\"off\" placeholder=\"Search ...\">\n <span class=\"${klasses.inputText.icon}\"></span>\n <button type=\"button\" id=\"${VARS.inputResetId}\" class=\"${klasses.inputText.reset} ${klasses.hidden}\"></button>\n </div>\n <ul class=\"${klasses.inputText.result}\"></ul>\n`;\n","/**\n * @class Photon\n */\nexport 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","/**\n * @class OpenStreet\n */\nexport class OpenStreet {\n /**\n * @constructor\n */\n constructor() {\n this.settings = {\n url: 'https://nominatim.openstreetmap.org/search/',\n\n params: {\n q: '',\n format: 'json',\n addressdetails: 1,\n limit: 10,\n countrycodes: '',\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 '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","/**\n * @class MapQuest\n */\nexport 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","/**\n * @class Bing\n */\nexport 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:\n options.includeNeighborhood || this.settings.params.includeNeighborhood,\n\n maxResults: options.maxResults || this.settings.params.maxResults,\n },\n };\n }\n\n handleResponse(results) {\n const { resources } = 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","/**\n * @class OpenCage\n */\nexport 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}\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 { head } = 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","import LayerVector from 'ol/layer/Vector';\nimport SourceVector from 'ol/source/Vector';\nimport Point from 'ol/geom/Point';\nimport Feature from 'ol/Feature';\nimport proj from 'ol/proj';\n\nimport { VARS, TARGET_TYPE, PROVIDERS, EVENT_TYPE } from '../konstants';\n\nimport {\n hasClass,\n addClass,\n removeClass,\n createElement,\n template,\n removeAllChildren,\n} from './helpers/dom';\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';\nimport { randomId, flyTo } from './helpers/mix';\nimport { json } from './helpers/ajax';\n\nconst klasses = VARS.cssClasses;\n\n/**\n * @class Nominatim\n */\nexport 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 });\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 = { mapClick: false };\n this.setListeners();\n }\n\n setListeners() {\n let timeout;\n let lastQuery;\n\n const openSearch = (evt) => {\n evt.stopPropagation();\n\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 // eslint-disable-next-line unicorn/consistent-function-scoping\n const stopBubbling = (evt) => evt.stopPropagation();\n const reset = (evt) => {\n this.els.input.focus();\n this.els.input.value = '';\n this.lastQuery = '';\n addClass(this.els.reset, klasses.hidden);\n this.clearResults();\n };\n const handleValue = (evt) => {\n const value = evt.target.value.trim();\n\n value.length !== 0\n ? removeClass(this.els.reset, klasses.hidden)\n : addClass(this.els.reset, klasses.hidden);\n\n if (this.options.autoComplete && value !== lastQuery) {\n lastQuery = value;\n timeout && clearTimeout(timeout);\n timeout = setTimeout(() => {\n if (value.length >= this.options.autoCompleteMinLength) {\n this.query(value);\n }\n }, this.options.autoCompleteTimeout);\n }\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.reset.addEventListener('click', reset, 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 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.reset, 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.reset, 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((err) => {\n removeClass(this.els.reset, klasses.spin);\n\n const li = createElement('li', '<h5>Error! No internet connection?</h5>');\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 = `<span class=\"${klasses.road}\">${row.address.name}</span>`;\n\n break;\n\n default:\n addressHtml = this.addressTemplate(row.address);\n }\n\n const html = `<a href=\"#\">${addressHtml}</a>`;\n const li = createElement('li', html);\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 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 { bbox } = place;\n\n if (bbox) {\n bbox = proj.transformExtent(\n [bbox[2], bbox[1], bbox[3], bbox[0]], // NSWE -> 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) {\n this.Base.dispatchEvent({\n type: EVENT_TYPE.ADDRESSCHOSEN,\n address,\n coordinate: coord,\n bbox,\n place,\n });\n } else {\n if (bbox) {\n map.getView().fit(bbox, { duration: 500 });\n } else {\n flyTo(map, coord);\n }\n\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\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(['<span class=\"', klasses.road, '\">{name}</span>'].join(''));\n }\n\n if (address.road || address.building || address.house_number) {\n html.push(\n ['<span class=\"', klasses.road, '\">{building} {road} {house_number}</span>'].join('')\n );\n }\n\n if (address.city || address.town || address.village) {\n html.push(\n ['<span class=\"', klasses.city, '\">{postcode} {city} {town} {village}</span>'].join('')\n );\n }\n\n if (address.state || address.country) {\n html.push(['<span class=\"', klasses.country, '\">{state} {country}</span>'].join(''));\n }\n\n return template(html.join('<br>'), address);\n }\n\n newProvider() {\n switch (this.options.provider) {\n case PROVIDERS.OSM:\n return new OpenStreet();\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.reset, 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 {\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}\n","import Control from 'ol/control/Control';\nimport Style from 'ol/style/Style';\nimport Icon from 'ol/style/Icon';\n\nimport { CONTROL_TYPE, DEFAULT_OPTIONS, FEATURE_SRC } from '../konstants';\n\nimport { Html } from './html';\nimport { Nominatim } from './nominatim';\nimport { assert, mergeOptions } 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, options = {}) {\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 assert(typeof options === 'object', '@param `options` should be object!');\n\n DEFAULT_OPTIONS.featureStyle = [\n new Style({ image: new Icon({ scale: 0.7, src: FEATURE_SRC }) }),\n ];\n\n let container;\n\n let $nominatim;\n\n const $html = new Html(options);\n\n if (type === CONTROL_TYPE.NOMINATIM) {\n container = $html.els.container;\n }\n\n super({ element: container });\n\n if (!(this instanceof Base)) return new Base();\n\n this.options = mergeOptions(DEFAULT_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}\n"],"names":["klasses","LayerVector","SourceVector","proj","Feature","Point","Control","Style","Icon"],"mappings":"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"}