{"version":3,"file":"ol-geocoder-debug.js","sources":["../konstants/index.js","../src/helpers/mix.js","../src/helpers/dom.js","../src/html.js","../src/helpers/ajax.js","../src/providers/photon.js","../src/providers/osm.js","../src/providers/mapquest.js","../src/providers/bing.js","../src/providers/opencage.js","../src/nominatim.js","../src/base.js"],"sourcesContent":["import * as _VARS_ from './vars.json';\r\n\r\nexport const VARS = _VARS_;\r\n\r\nexport const EVENT_TYPE = {\r\n ADDRESSCHOSEN: 'addresschosen',\r\n};\r\n\r\nexport const CONTROL_TYPE = {\r\n NOMINATIM: 'nominatim',\r\n REVERSE: 'reverse',\r\n};\r\n\r\nexport const TARGET_TYPE = {\r\n GLASS: 'glass-button',\r\n INPUT: 'text-input',\r\n};\r\n\r\nexport const FEATURE_SRC = 'data:image/svg+xml;charset=utf-8,' +\r\n ''; // #285\r\n\r\nexport const PROVIDERS = {\r\n BING: 'bing',\r\n MAPQUEST: 'mapquest',\r\n OPENCAGE: 'opencage',\r\n OSM: 'osm',\r\n PHOTON: 'photon',\r\n};\r\n\r\nexport const APIS = {\r\n BING: 'https://dev.virtualearth.net/REST/v1/Locations',\r\n MAPQUEST: 'https://nominatim.openstreetmap.org/search', // #286\r\n OPENCAGE: 'https://api.opencagedata.com/geocode/v1/json?',\r\n OSM: 'https://nominatim.openstreetmap.org/search',\r\n PHOTON: 'https://photon.komoot.io/api/',\r\n};\r\n\r\nexport const DEFAULT_OPTIONS = {\r\n provider: PROVIDERS.OSM,\r\n label: '',\r\n placeholder: 'Search for an address',\r\n featureStyle: null,\r\n targetType: TARGET_TYPE.GLASS,\r\n lang: 'en-US',\r\n limit: 5,\r\n keepOpen: false,\r\n preventDefault: false,\r\n preventPanning: false,\r\n preventMarker: false,\r\n defaultFlyResolution: 10, // Meters per pixel\r\n debug: false,\r\n};","export function assert(condition, message = 'Assertion failed') {\r\n if (!condition) {\r\n if (typeof Error !== 'undefined') throw new Error(message);\r\n\r\n throw message; // Fallback\r\n }\r\n}\r\n\r\nexport function now() {\r\n // Polyfill for window.performance.now()\r\n // @license http://opensource.org/licenses/MIT\r\n // copyright Paul Irish 2015\r\n // https://gist.github.com/paulirish/5438650\r\n if ('performance' in window === false) {\r\n window.performance = {};\r\n }\r\n\r\n if ('now' in window.performance === false) {\r\n let nowOffset = Date.now();\r\n\r\n if (performance.timing && performance.timing.navigationStart) {\r\n nowOffset = performance.timing.navigationStart;\r\n }\r\n\r\n window.performance.now = () => Date.now() - nowOffset;\r\n }\r\n\r\n return window.performance.now();\r\n}\r\n\r\nexport function randomId(prefix) {\r\n const id = now().toString(36);\r\n\r\n return prefix ? prefix + id : id;\r\n}\r\n\r\nexport function isNumeric(str) {\r\n return /^\\d+$/u.test(str);\r\n}\r\n\r\nexport function isEmpty(str) {\r\n return !str || str.length === 0;\r\n}\r\n\r\nexport function emptyArray(array) {\r\n while (array.length) array.pop();\r\n}\r\n\r\nexport function anyMatchInArray(source, target) {\r\n return source.some((each) => target.includes(each));\r\n}\r\n\r\nexport function everyMatchInArray(arr1, arr2) {\r\n return arr2.every((each) => arr1.includes(each));\r\n}\r\n\r\nexport function anyItemHasValue(obj, has = false) {\r\n const keys = Object.keys(obj);\r\n\r\n keys.forEach((key) => {\r\n if (!isEmpty(obj[key])) has = true;\r\n });\r\n\r\n return has;\r\n}","/* eslint-disable prefer-named-capture-group */\r\nimport {\r\n isNumeric\r\n} from './mix';\r\n\r\n/**\r\n * @param {Element|Array} element DOM node or array of nodes.\r\n * @param {String|Array} classname Class or array of classes.\r\n * For example: 'class1 class2' or ['class1', 'class2']\r\n * @param {Number|undefined} timeout Timeout to remove a class.\r\n */\r\nexport function addClass(element, classname, timeout) {\r\n if (Array.isArray(element)) {\r\n element.forEach((each) => addClass(each, classname));\r\n\r\n return;\r\n }\r\n\r\n const array = Array.isArray(classname) ? classname : classname.split(/\\s+/u);\r\n\r\n let i = array.length;\r\n\r\n while (i--) {\r\n if (!hasClass(element, array[i])) {\r\n _addClass(element, array[i], timeout);\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * @param {Element|Array} element DOM node or array of nodes.\r\n * @param {String|Array} classname Class or array of classes.\r\n * For example: 'class1 class2' or ['class1', 'class2']\r\n * @param {Number|undefined} timeout Timeout to add a class.\r\n */\r\nexport function removeClass(element, classname, timeout) {\r\n if (Array.isArray(element)) {\r\n element.forEach((each) => removeClass(each, classname, timeout));\r\n\r\n return;\r\n }\r\n\r\n const array = Array.isArray(classname) ? classname : classname.split(/\\s+/u);\r\n\r\n let i = array.length;\r\n\r\n while (i--) {\r\n if (hasClass(element, array[i])) {\r\n _removeClass(element, array[i], timeout);\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * @param {Element} element DOM node.\r\n * @param {String} classname Classname.\r\n * @return {Boolean}\r\n */\r\nexport function hasClass(element, c) {\r\n // use native if available\r\n return element.classList ? element.classList.contains(c) : classRegex(c).test(element.className);\r\n}\r\n\r\n/**\r\n * @param {Element|Array} element DOM node or array of nodes.\r\n * @param {String} classname Classe.\r\n */\r\nexport function toggleClass(element, classname) {\r\n if (Array.isArray(element)) {\r\n element.forEach((each) => toggleClass(each, classname));\r\n\r\n return;\r\n }\r\n\r\n // use native if available\r\n if (element.classList) {\r\n element.classList.toggle(classname);\r\n } else {\r\n hasClass(element, classname) ? _removeClass(element, classname) : _addClass(element, classname);\r\n }\r\n}\r\n\r\n/**\r\n * Abstraction to querySelectorAll for increased\r\n * performance and greater usability\r\n * @param {String} selector\r\n * @param {Element} context (optional)\r\n * @param {Boolean} findAll (optional)\r\n * @return (findAll) {Element} : {Array}\r\n */\r\nexport function $(id) {\r\n id = id[0] === '#' ? id.slice(1, 1 + id.length) : id;\r\n\r\n return document.getElementById(id);\r\n}\r\n\r\nexport function isElement(obj) {\r\n // DOM, Level2\r\n if ('HTMLElement' in window) {\r\n return !!obj && obj instanceof HTMLElement;\r\n }\r\n\r\n // Older browsers\r\n return !!obj && typeof obj === 'object' && obj.nodeType === 1 && !!obj.nodeName;\r\n}\r\n\r\nexport function getAllChildren(node, tag) {\r\n return [].slice.call(node.getElementsByTagName(tag));\r\n}\r\n\r\nexport function removeAllChildren(node) {\r\n while (node.firstChild) node.firstChild.remove();\r\n}\r\n\r\nexport function removeAll(collection) {\r\n let node;\r\n\r\n while ((node = collection[0])) node.remove();\r\n}\r\n\r\nexport function getChildren(node, tag) {\r\n return [].filter.call(node.childNodes, (el) =>\r\n tag ? el.nodeType === 1 && el.tagName.toLowerCase() === tag : el.nodeType === 1\r\n );\r\n}\r\n\r\nexport function template(html, row) {\r\n return html.replace(/\\{\\s*([\\w-]+)\\s*\\}/gu, (htm, key) => {\r\n const value = row[key] === undefined ? '' : row[key];\r\n\r\n return htmlEscape(value);\r\n });\r\n}\r\n\r\nexport function htmlEscape(str) {\r\n return String(str)\r\n .replaceAll('&', '&')\r\n .replaceAll('<', '<')\r\n .replaceAll('>', '>')\r\n .replaceAll('\"', '"')\r\n .replaceAll(\"'\", ''');\r\n}\r\n\r\nexport function createElement(node, html) {\r\n let elem;\r\n\r\n if (Array.isArray(node)) {\r\n elem = document.createElement(node[0]);\r\n\r\n if (node[1].id) elem.id = node[1].id;\r\n\r\n if (node[1].classname) elem.className = node[1].classname;\r\n\r\n if (node[1].attr) {\r\n const {\r\n attr\r\n } = node[1];\r\n\r\n if (Array.isArray(attr)) {\r\n let i = -1;\r\n\r\n while (++i < attr.length) {\r\n elem.setAttribute(attr[i].name, attr[i].value);\r\n }\r\n } else {\r\n elem.setAttribute(attr.name, attr.value);\r\n }\r\n }\r\n } else {\r\n elem = document.createElement(node);\r\n }\r\n\r\n elem.innerHTML = html;\r\n\r\n const frag = document.createDocumentFragment();\r\n\r\n while (elem.childNodes[0]) frag.append(elem.childNodes[0]);\r\n\r\n elem.append(frag);\r\n\r\n return elem;\r\n}\r\n\r\nfunction classRegex(classname) {\r\n return new RegExp(`(^|\\\\s+) ${classname} (\\\\s+|$)`, 'u');\r\n}\r\n\r\nfunction _addClass(el, klass, timeout) {\r\n // use native if available\r\n if (el.classList) {\r\n el.classList.add(klass);\r\n } else {\r\n el.className = `${el.className} ${klass}`.trim();\r\n }\r\n\r\n if (timeout && isNumeric(timeout)) {\r\n window.setTimeout(() => _removeClass(el, klass), timeout);\r\n }\r\n}\r\n\r\nfunction _removeClass(el, klass, timeout) {\r\n if (el.classList) {\r\n el.classList.remove(klass);\r\n } else {\r\n el.className = el.className.replace(classRegex(klass), ' ').trim();\r\n }\r\n\r\n if (timeout && isNumeric(timeout)) {\r\n window.setTimeout(() => _addClass(el, klass), timeout);\r\n }\r\n}","import {\r\n VARS,\r\n TARGET_TYPE\r\n} from '../konstants';\r\n\r\nimport {\r\n createElement\r\n} from './helpers/dom';\r\n\r\nconst klasses = VARS.cssClasses;\r\n\r\n/**\r\n * @class Html\r\n */\r\nexport default class Html {\r\n /**\r\n * @constructor\r\n * @param {object} options Options.\r\n */\r\n constructor(options) {\r\n this.options = options;\r\n this.els = this.createControl();\r\n }\r\n\r\n createControl() {\r\n let container;\r\n let containerClass;\r\n let elements;\r\n\r\n if (this.options.targetType === TARGET_TYPE.INPUT) {\r\n containerClass = `${klasses.namespace} ${klasses.inputText.container}`;\r\n container = createElement(\r\n ['div', {\r\n id: VARS.containerId,\r\n classname: containerClass\r\n }],\r\n Html.input\r\n );\r\n elements = {\r\n container,\r\n control: container.querySelector(`.${klasses.inputText.control}`),\r\n label: container.querySelector(`.${klasses.inputText.label}`), // #198\r\n input: container.querySelector(`.${klasses.inputText.input}`),\r\n search: container.querySelector(`.${klasses.inputText.search}`),\r\n result: container.querySelector(`.${klasses.inputText.result}`),\r\n };\r\n elements.label.innerHTML = this.options.label;\r\n } else {\r\n containerClass = `${klasses.namespace} ${klasses.glass.container}`;\r\n container = createElement(\r\n ['div', {\r\n id: VARS.containerId,\r\n classname: containerClass\r\n }],\r\n Html.glass\r\n );\r\n elements = {\r\n container,\r\n control: container.querySelector(`.${klasses.glass.control}`),\r\n button: container.querySelector(`.${klasses.glass.button}`),\r\n input: container.querySelector(`.${klasses.glass.input}`),\r\n search: container.querySelector(`.${klasses.glass.search}`),\r\n result: container.querySelector(`.${klasses.glass.result}`),\r\n };\r\n }\r\n\r\n // set placeholder from options\r\n elements.input.placeholder = this.options.placeholder;\r\n\r\n return elements;\r\n }\r\n}\r\n\r\nHtml.glass = `\r\n \r\n \r\n`;\r\n\r\nHtml.input = `\r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n`;","export function json(obj) {\r\n return new Promise((resolve, reject) => {\r\n const url = encodeUrlXhr(obj.url, obj.data);\r\n const config = {\r\n method: 'GET',\r\n mode: 'cors',\r\n credentials: 'same-origin',\r\n };\r\n\r\n if (obj.jsonp) {\r\n jsonp(url, obj.callbackName, resolve);\r\n } else {\r\n fetch(url, config)\r\n .then((r) => r.json())\r\n .then(resolve)\r\n .catch(reject);\r\n }\r\n });\r\n}\r\n\r\nfunction toQueryString(obj) {\r\n return Object.keys(obj)\r\n .reduce((acc, k) => {\r\n acc.push(\r\n typeof obj[k] === 'object' ?\r\n toQueryString(obj[k]) :\r\n `${encodeURIComponent(k)}=${encodeURIComponent(obj[k])}`\r\n );\r\n\r\n return acc;\r\n }, [])\r\n .join('&');\r\n}\r\n\r\nfunction encodeUrlXhr(url, data) {\r\n if (data && typeof data === 'object') {\r\n url += (/\\?/u.test(url) ? '&' : '?') + toQueryString(data);\r\n }\r\n\r\n return url;\r\n}\r\n\r\nfunction jsonp(url, key, callback) {\r\n // https://github.com/Fresheyeball/micro-jsonp/blob/master/src/jsonp.js\r\n const {\r\n head\r\n } = document;\r\n const script = document.createElement('script');\r\n // generate minimally unique name for callback function\r\n const callbackName = `f${Math.round(Math.random() * Date.now())}`;\r\n\r\n // set request url\r\n script.setAttribute(\r\n 'src',\r\n // add callback parameter to the url\r\n // where key is the parameter key supplied\r\n // and callbackName is the parameter value\r\n `${url + (url.indexOf('?') > 0 ? '&' : '?') + key}=${callbackName}`\r\n );\r\n\r\n // place jsonp callback on window,\r\n // the script sent by the server should call this\r\n // function as it was passed as a url parameter\r\n window[callbackName] = (data) => {\r\n window[callbackName] = undefined;\r\n\r\n // clean up script tag created for request\r\n setTimeout(() => head.removeChild(script), 0);\r\n\r\n // hand data back to the user\r\n callback(data);\r\n };\r\n\r\n // actually make the request\r\n head.append(script);\r\n}","import {\r\n APIS,\r\n} from '../../konstants';\r\n\r\n/**\r\n * @class Photon\r\n */\r\nexport default class Photon {\r\n /**\r\n * @constructor\r\n */\r\n constructor() {\r\n this.settings = {\r\n url: APIS.PHOTON,\r\n\r\n params: {\r\n q: '',\r\n limit: 10,\r\n lang: 'en',\r\n },\r\n\r\n langs: ['de', 'it', 'fr', 'en'],\r\n };\r\n }\r\n\r\n getParameters(options) {\r\n options.lang = options.lang.toLowerCase();\r\n\r\n return {\r\n url: this.settings.url,\r\n\r\n params: {\r\n q: options.query,\r\n limit: options.limit || this.settings.params.limit,\r\n\r\n lang: this.settings.langs.includes(options.lang) ? options.lang : this.settings.params.lang,\r\n },\r\n };\r\n }\r\n\r\n handleResponse(results) {\r\n if (results.features.length === 0) return [];\r\n\r\n return results.features.map((result) => ({\r\n lon: result.geometry.coordinates[0],\r\n lat: result.geometry.coordinates[1],\r\n\r\n address: {\r\n name: result.properties.name,\r\n postcode: result.properties.postcode,\r\n city: result.properties.city,\r\n state: result.properties.state,\r\n country: result.properties.country,\r\n },\r\n\r\n original: {\r\n formatted: result.properties.name,\r\n details: result.properties,\r\n },\r\n }));\r\n }\r\n}","import {\r\n APIS,\r\n} from '../../konstants';\r\n\r\n/**\r\n * @class OpenStreet\r\n */\r\nexport default class OpenStreet {\r\n /**\r\n * @constructor\r\n */\r\n constructor(options) {\r\n this.settings = {\r\n url: APIS.OSM,\r\n ...options, // #266 Allow custom URL for osm provider\r\n params: {\r\n q: '',\r\n format: 'json',\r\n addressdetails: 1,\r\n limit: 10,\r\n countrycodes: '',\r\n viewbox: '',\r\n 'accept-language': 'en-US',\r\n },\r\n };\r\n }\r\n\r\n getParameters(opt) {\r\n return {\r\n url: this.settings.url,\r\n\r\n params: {\r\n q: opt.query,\r\n format: this.settings.params.format,\r\n addressdetails: this.settings.params.addressdetails,\r\n limit: opt.limit || this.settings.params.limit,\r\n countrycodes: opt.countrycodes || this.settings.params.countrycodes,\r\n viewbox: opt.viewbox || this.settings.params.viewbox, // #260\r\n 'accept-language': opt.lang || this.settings.params['accept-language'],\r\n },\r\n };\r\n }\r\n\r\n handleResponse(results) {\r\n if (results.length === 0) return [];\r\n\r\n return results.map((result) => ({\r\n lon: result.lon,\r\n lat: result.lat,\r\n bbox: result.boundingbox,\r\n\r\n address: {\r\n name: result.display_name,\r\n road: result.address.road || '',\r\n houseNumber: result.address.house_number || '',\r\n postcode: result.address.postcode,\r\n city: result.address.city || result.address.town,\r\n state: result.address.state,\r\n country: result.address.country,\r\n },\r\n\r\n original: {\r\n formatted: result.display_name,\r\n details: result.address,\r\n },\r\n }));\r\n }\r\n}","import {\r\n APIS,\r\n} from '../../konstants';\r\n\r\n/**\r\n * @class MapQuest\r\n */\r\nexport default class MapQuest {\r\n /**\r\n * @constructor\r\n */\r\n constructor() {\r\n this.settings = {\r\n url: APIS.MAPQUEST,\r\n\r\n params: {\r\n q: '',\r\n key: '',\r\n format: 'json',\r\n addressdetails: 1,\r\n limit: 10,\r\n countrycodes: '',\r\n 'accept-language': 'en-US',\r\n },\r\n };\r\n }\r\n\r\n getParameters(options) {\r\n return {\r\n url: this.settings.url,\r\n\r\n params: {\r\n q: options.query,\r\n key: options.key,\r\n format: 'json',\r\n addressdetails: 1,\r\n limit: options.limit || this.settings.params.limit,\r\n countrycodes: options.countrycodes || this.settings.params.countrycodes,\r\n\r\n 'accept-language': options.lang || this.settings.params['accept-language'],\r\n },\r\n };\r\n }\r\n\r\n handleResponse(results) {\r\n if (results.length === 0) return [];\r\n\r\n return results.map((result) => ({\r\n lon: result.lon,\r\n lat: result.lat,\r\n\r\n address: {\r\n name: result.address.neighbourhood || '',\r\n road: result.address.road || '',\r\n postcode: result.address.postcode,\r\n city: result.address.city || result.address.town,\r\n state: result.address.state,\r\n country: result.address.country,\r\n },\r\n\r\n original: {\r\n formatted: result.display_name,\r\n details: result.address,\r\n },\r\n }));\r\n }\r\n}","import {\r\n APIS,\r\n} from '../../konstants';\r\n\r\n/**\r\n * @class Bing\r\n */\r\nexport default class Bing {\r\n /**\r\n * @constructor\r\n */\r\n constructor() {\r\n this.settings = {\r\n url: APIS.BING,\r\n callbackName: 'jsonp',\r\n\r\n params: {\r\n query: '',\r\n key: '',\r\n includeNeighborhood: 0,\r\n maxResults: 10,\r\n },\r\n };\r\n }\r\n\r\n getParameters(options) {\r\n return {\r\n url: this.settings.url,\r\n callbackName: this.settings.callbackName,\r\n\r\n params: {\r\n query: options.query,\r\n key: options.key,\r\n\r\n includeNeighborhood: options.includeNeighborhood || this.settings.params.includeNeighborhood,\r\n\r\n maxResults: options.maxResults || this.settings.params.maxResults,\r\n },\r\n };\r\n }\r\n\r\n handleResponse(results) {\r\n const {\r\n resources\r\n } = results.resourceSets[0];\r\n\r\n if (resources.length === 0) return [];\r\n\r\n return resources.map((result) => ({\r\n lon: result.point.coordinates[1],\r\n lat: result.point.coordinates[0],\r\n\r\n address: {\r\n name: result.name,\r\n },\r\n\r\n original: {\r\n formatted: result.address.formattedAddress,\r\n details: result.address,\r\n },\r\n }));\r\n }\r\n}","import {\r\n APIS,\r\n} from '../../konstants';\r\n\r\n/**\r\n * @class OpenCage\r\n */\r\nexport default class OpenCage {\r\n /**\r\n * @constructor\r\n */\r\n constructor() {\r\n this.settings = {\r\n url: APIS.OPENCAGE,\r\n\r\n params: {\r\n q: '',\r\n key: '',\r\n limit: 10,\r\n countrycode: '',\r\n pretty: 1,\r\n no_annotations: 1,\r\n },\r\n };\r\n }\r\n\r\n getParameters(options) {\r\n return {\r\n url: this.settings.url,\r\n\r\n params: {\r\n q: options.query,\r\n key: options.key,\r\n limit: options.limit || this.settings.params.limit,\r\n countrycode: options.countrycodes || this.settings.params.countrycodes,\r\n },\r\n };\r\n }\r\n\r\n handleResponse(results) {\r\n if (results.results.length === 0) return [];\r\n\r\n return results.results.map((result) => ({\r\n lon: result.geometry.lng,\r\n lat: result.geometry.lat,\r\n\r\n address: {\r\n name: result.components.house_number || '',\r\n road: result.components.road || '',\r\n postcode: result.components.postcode,\r\n city: result.components.city || result.components.town,\r\n state: result.components.state,\r\n country: result.components.country,\r\n },\r\n\r\n original: {\r\n formatted: result.formatted,\r\n details: result.components,\r\n },\r\n }));\r\n }\r\n}","import LayerVector from 'ol/layer/Vector';\r\nimport SourceVector from 'ol/source/Vector';\r\nimport Point from 'ol/geom/Point';\r\nimport Feature from 'ol/Feature';\r\nimport * as proj from 'ol/proj';\r\n\r\nimport {\r\n VARS,\r\n TARGET_TYPE,\r\n PROVIDERS,\r\n EVENT_TYPE\r\n} from '../konstants';\r\nimport {\r\n hasClass,\r\n addClass,\r\n removeClass,\r\n createElement,\r\n template,\r\n removeAllChildren,\r\n} from './helpers/dom';\r\nimport {\r\n randomId\r\n} from './helpers/mix';\r\nimport {\r\n json\r\n} from './helpers/ajax';\r\n\r\nimport Photon from './providers/photon';\r\nimport OpenStreet from './providers/osm';\r\nimport MapQuest from './providers/mapquest';\r\nimport Bing from './providers/bing';\r\nimport OpenCage from './providers/opencage';\r\n\r\nconst klasses = VARS.cssClasses;\r\n\r\n/**\r\n * @class Nominatim\r\n */\r\nexport default class Nominatim {\r\n /**\r\n * @constructor\r\n * @param {Function} base Base class.\r\n */\r\n constructor(base, els) {\r\n this.Base = base;\r\n\r\n this.layerName = randomId('geocoder-layer-');\r\n this.layer = new LayerVector({\r\n background: 'transparent', // #282\r\n name: this.layerName,\r\n source: new SourceVector(),\r\n displayInLayerSwitcher: false, // #256 Remove search layer from legend\r\n });\r\n\r\n this.options = base.options;\r\n // provider is either the name of a built-in provider as a string or an\r\n // object that implements the provider API\r\n this.options.provider =\r\n typeof this.options.provider === 'string' ?\r\n this.options.provider.toLowerCase() :\r\n this.options.provider;\r\n this.provider = this.newProvider();\r\n\r\n this.els = els;\r\n this.container = this.els.container;\r\n this.registeredListeners = {\r\n mapClick: false,\r\n };\r\n this.setListeners();\r\n }\r\n\r\n setListeners() {\r\n const openSearch = (evt) => {\r\n evt.stopPropagation();\r\n hasClass(this.els.control, klasses.glass.expanded) ? this.collapse() : this.expand();\r\n };\r\n const query = (evt) => {\r\n const value = evt.target.value.trim();\r\n const hit = evt.key ?\r\n evt.key === 'Enter' :\r\n evt.which ?\r\n evt.which === 13 :\r\n evt.keyCode ?\r\n evt.keyCode === 13 :\r\n false;\r\n\r\n if (hit) {\r\n evt.preventDefault();\r\n this.query(value);\r\n }\r\n };\r\n const stopBubbling = (evt) => evt.stopPropagation();\r\n const search = () => { // #255\r\n this.els.input.focus();\r\n this.query(this.els.input.value);\r\n };\r\n const handleValue = (evt) => {\r\n const value = evt.target.value.trim();\r\n\r\n value.length !== 0 ?\r\n removeClass(this.els.search, klasses.hidden) :\r\n addClass(this.els.search, klasses.hidden);\r\n };\r\n\r\n this.els.input.addEventListener('keypress', query, false);\r\n this.els.input.addEventListener('click', stopBubbling, false);\r\n this.els.input.addEventListener('input', handleValue, false);\r\n this.els.search.addEventListener('click', search, false);\r\n\r\n if (this.options.targetType === TARGET_TYPE.GLASS) {\r\n this.els.button.addEventListener('click', openSearch, false);\r\n }\r\n }\r\n\r\n query(q) {\r\n // lazy provider\r\n if (!this.provider) {\r\n this.provider = this.newProvider();\r\n }\r\n\r\n const parameters = this.provider.getParameters({\r\n query: q,\r\n key: this.options.key,\r\n lang: this.options.lang,\r\n countrycodes: this.options.countrycodes,\r\n viewbox: this.options.viewbox,\r\n limit: this.options.limit,\r\n });\r\n\r\n this.clearResults(this.options.keepOpen === false); // #284\r\n addClass(this.els.search, klasses.spin);\r\n\r\n const ajax = {\r\n url: parameters.url,\r\n data: parameters.params,\r\n };\r\n\r\n if (parameters.callbackName) {\r\n ajax.jsonp = true;\r\n ajax.callbackName = parameters.callbackName;\r\n }\r\n\r\n json(ajax)\r\n .then((res) => {\r\n // eslint-disable-next-line no-console\r\n this.options.debug && console.info(res);\r\n\r\n removeClass(this.els.search, klasses.spin);\r\n\r\n // will be fullfiled according to provider\r\n const res_ = this.provider.handleResponse(res);\r\n\r\n if (res_) {\r\n this.createList(res_);\r\n this.listenMapClick();\r\n }\r\n })\r\n .catch(() => {\r\n removeClass(this.els.search, klasses.spin);\r\n\r\n const li = createElement('li', 'Error! No internet connection?
');\r\n\r\n this.els.result.append(li);\r\n });\r\n }\r\n\r\n createList(response) {\r\n const ul = this.els.result;\r\n\r\n response.forEach((row) => {\r\n let addressHtml;\r\n\r\n switch (this.options.provider) {\r\n case PROVIDERS.OSM:\r\n addressHtml = `${row.address.name}`;\r\n break;\r\n\r\n default:\r\n addressHtml = this.addressTemplate(row.address);\r\n }\r\n\r\n if (response.length == 1) {\r\n // #206 Direct access if options.limit: 1\r\n this.chosen(row, addressHtml, row.address, row.original);\r\n } else {\r\n const li = createElement('li', `${addressHtml}`);\r\n\r\n li.addEventListener(\r\n 'click',\r\n (evt) => {\r\n evt.preventDefault();\r\n this.chosen(row, addressHtml, row.address, row.original);\r\n },\r\n false\r\n );\r\n\r\n ul.append(li);\r\n }\r\n });\r\n }\r\n\r\n chosen(place, addressHtml, addressObj, addressOriginal) {\r\n const map = this.Base.getMap();\r\n const coord_ = [Number.parseFloat(place.lon), Number.parseFloat(place.lat)];\r\n const projection = map.getView().getProjection();\r\n const coord = proj.transform(coord_, 'EPSG:4326', projection);\r\n\r\n let {\r\n bbox\r\n } = place;\r\n\r\n if (bbox) {\r\n bbox = proj.transformExtent(\r\n // #274 https://nominatim.org/release-docs/latest/api/Output/#boundingbox\r\n // Requires parseFloat on negative bbox entries\r\n [parseFloat(bbox[2]), parseFloat(bbox[0]), parseFloat(bbox[3]), parseFloat(bbox[1])], // SNWE -> WSEN\r\n 'EPSG:4326',\r\n projection\r\n );\r\n }\r\n\r\n const address = {\r\n formatted: addressHtml,\r\n details: addressObj,\r\n original: addressOriginal,\r\n };\r\n\r\n this.clearResults(true); // #284\r\n\r\n // #239\r\n if (this.options.preventDefault === true || this.options.preventMarker === true) {\r\n // No display change\r\n this.Base.dispatchEvent({\r\n type: EVENT_TYPE.ADDRESSCHOSEN,\r\n address,\r\n coordinate: coord,\r\n bbox,\r\n place,\r\n });\r\n } else {\r\n // Display a marker\r\n const feature = this.createFeature(coord, address);\r\n\r\n this.Base.dispatchEvent({\r\n type: EVENT_TYPE.ADDRESSCHOSEN,\r\n address,\r\n feature,\r\n coordinate: coord,\r\n bbox,\r\n place,\r\n });\r\n }\r\n\r\n // #239\r\n if (this.options.preventDefault !== true && this.options.preventPanning !== true) {\r\n // Move & zoom to the position\r\n if (bbox) {\r\n map.getView().fit(bbox, {\r\n duration: 500,\r\n });\r\n } else {\r\n map.getView().animate({\r\n center: coord,\r\n // #235 ol-geocoder results are too much zoomed -in\r\n resolution: this.options.defaultFlyResolution,\r\n duration: 500,\r\n });\r\n }\r\n }\r\n }\r\n\r\n createFeature(coord) {\r\n const feature = new Feature(new Point(coord));\r\n\r\n this.addLayer();\r\n feature.setStyle(this.options.featureStyle);\r\n feature.setId(randomId('geocoder-ft-'));\r\n this.getSource().addFeature(feature);\r\n\r\n return feature;\r\n }\r\n\r\n addressTemplate(address) {\r\n const html = [];\r\n\r\n if (address.name) {\r\n html.push(['{name}'].join(''));\r\n }\r\n\r\n if (address.road || address.building || address.house_number) {\r\n html.push(\r\n ['{building} {road} {house_number}'].join('')\r\n );\r\n }\r\n\r\n if (address.city || address.town || address.village) {\r\n html.push(\r\n ['{postcode} {city} {town} {village}'].join('')\r\n );\r\n }\r\n\r\n if (address.state || address.country) {\r\n html.push(['{state} {country}'].join(''));\r\n }\r\n\r\n return template(html.join('
'), address);\r\n }\r\n\r\n newProvider() {\r\n switch (this.options.provider) {\r\n case PROVIDERS.OSM:\r\n return new OpenStreet(this.options);\r\n case PROVIDERS.MAPQUEST:\r\n return new MapQuest();\r\n case PROVIDERS.PHOTON:\r\n return new Photon();\r\n case PROVIDERS.BING:\r\n return new Bing();\r\n case PROVIDERS.OPENCAGE:\r\n return new OpenCage();\r\n\r\n default:\r\n return this.options.provider;\r\n }\r\n }\r\n\r\n expand() {\r\n removeClass(this.els.input, klasses.spin);\r\n addClass(this.els.control, klasses.glass.expanded);\r\n window.setTimeout(() => this.els.input.focus(), 100);\r\n this.listenMapClick();\r\n }\r\n\r\n collapse() {\r\n this.els.input.value = '';\r\n this.els.input.blur();\r\n addClass(this.els.search, klasses.hidden);\r\n removeClass(this.els.control, klasses.glass.expanded);\r\n removeAllChildren(this.els.result); // #284\r\n }\r\n\r\n listenMapClick() {\r\n // already registered\r\n if (this.registeredListeners.mapClick) return;\r\n\r\n const that = this;\r\n const mapElement = this.Base.getMap().getTargetElement();\r\n\r\n this.registeredListeners.mapClick = true;\r\n\r\n // one-time fire click\r\n mapElement.addEventListener(\r\n 'click', {\r\n handleEvent(evt) {\r\n mapElement.removeEventListener(evt.type, this, false);\r\n that.registeredListeners.mapClick = false;\r\n },\r\n },\r\n false\r\n );\r\n }\r\n\r\n clearResults(collapse) {\r\n collapse && this.options.targetType === TARGET_TYPE.GLASS ?\r\n this.collapse() :\r\n removeAllChildren(this.els.result);\r\n }\r\n\r\n getSource() {\r\n return this.layer.getSource();\r\n }\r\n\r\n addLayer() {\r\n let found = false;\r\n\r\n const map = this.Base.getMap();\r\n\r\n map.getLayers().forEach((layer) => {\r\n if (layer === this.layer) found = true;\r\n });\r\n\r\n if (!found) map.addLayer(this.layer);\r\n }\r\n}","import Control from 'ol/control/Control';\r\nimport Style from 'ol/style/Style';\r\nimport Icon from 'ol/style/Icon';\r\n\r\nimport {\r\n CONTROL_TYPE,\r\n DEFAULT_OPTIONS,\r\n FEATURE_SRC\r\n} from '../konstants';\r\n\r\nimport Html from './html';\r\nimport Nominatim from './nominatim';\r\nimport {\r\n assert,\r\n} from './helpers/mix';\r\n\r\n/**\r\n * @class Base\r\n * @extends {ol.control.Control}\r\n */\r\nexport default class Base extends Control {\r\n /**\r\n * @constructor\r\n * @param {string} type nominatim|reverse.\r\n * @param {object} options Options.\r\n */\r\n constructor(type = CONTROL_TYPE.NOMINATIM, opt) {\r\n assert(typeof type === 'string', '@param `type` should be string!');\r\n assert(\r\n type === CONTROL_TYPE.NOMINATIM || type === CONTROL_TYPE.REVERSE,\r\n `@param 'type' should be '${CONTROL_TYPE.NOMINATIM}'\r\n or '${CONTROL_TYPE.REVERSE}'!`\r\n );\r\n const options = {\r\n ...DEFAULT_OPTIONS,\r\n featureStyle: [\r\n new Style({\r\n image: new Icon({\r\n anchor: [0.5, 1], // #285\r\n src: FEATURE_SRC\r\n })\r\n }),\r\n ],\r\n ...opt,\r\n };\r\n\r\n let container;\r\n let $nominatim;\r\n const $html = new Html(options);\r\n\r\n if (type === CONTROL_TYPE.NOMINATIM) {\r\n container = $html.els.container;\r\n }\r\n\r\n super({\r\n element: container,\r\n ...options, // Allows to add ol.control.Control options (as target:)\r\n });\r\n\r\n if (!(this instanceof Base)) return new Base();\r\n\r\n this.options = options;\r\n this.container = container;\r\n\r\n if (type === CONTROL_TYPE.NOMINATIM) {\r\n $nominatim = new Nominatim(this, $html.els);\r\n this.layer = $nominatim.layer;\r\n }\r\n }\r\n\r\n /**\r\n * @return {ol.layer.Vector} Returns the layer created by this control\r\n */\r\n getLayer() {\r\n return this.layer;\r\n }\r\n\r\n /**\r\n * @return {ol.source.Vector} Returns the source created by this control\r\n */\r\n getSource() {\r\n return this.getLayer().getSource();\r\n }\r\n\r\n /**\r\n * Set a new provider\r\n * @param {String} provider\r\n */\r\n setProvider(provider) {\r\n this.options.provider = provider;\r\n }\r\n\r\n /**\r\n * Set provider key\r\n * @param {String} key\r\n */\r\n setProviderKey(key) {\r\n this.options.key = key;\r\n }\r\n}"],"names":["klasses","LayerVector","SourceVector","proj","Feature","Point","Control","Style","Icon"],"mappings":"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"}