UNPKG

@opencage/geosearch-core

Version:
3 lines (2 loc) 3.26 kB
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const m=n=>typeof n==="string",p=n=>{if(n.ok)return n;const e=new Error(`The HTTP status of the reponse: ${n.status} (${n.statusText})`);throw e.status=n.status,e.statusText=n.statusText,e},y=(n,e)=>{let t;return(...r)=>(t&&clearTimeout(t),new Promise(s=>{t=setTimeout(()=>s(n(...r)),e)}))},b=(n,e)=>{const t=new Set;return n.filter(r=>{const s=e(r);return t.has(s)?!1:t.add(s)})},R="opencage",S=". . .",x={results:[{formatted:S}]},i=()=>{},c=({results:n},{onActive:e=i,onSelect:t=i,noResults:r="No results."}={})=>{const s=b(n,o=>o.formatted);return[{sourceId:R,getItems(){return s},getItemInputValue({item:o}){return o.formatted},onSelect:t,onActive:e,templates:{item({item:o}){return`${o.formatted}`},noResults(){return r},footer({createElement:o}){const a="text-decoration:none;color:#009966;";return o("div",{style:"display:flex;flex-direction:column;align-items:flex-end;"},o("div",{style:"display:flex;align-items:center;justify-content:center;font-family:sans-serif;font-size:0.7em;color:#009966;"},o("span",null,o("a",{href:"https://opencagedata.com/geosearch",target:"_blank",rel:"noreferrer"},o("img",{src:"https://assets.opencagedata.com/opencage-20x21.png",height:"21",width:"20",border:"0",alt:"OpenCage",style:"display:inline;"}))),o("span",null,"  Made by ",o("a",{href:"https://opencagedata.com/geosearch",target:"_blank",rel:"noreferrer",style:a},"OpenCage"),"."),o("span",null," © ",o("a",{href:"https://www.openstreetmap.org/copyright",target:"_blank",rel:"noreferrer",style:a},"OpenStreetMap"),","),o("span",null," ",o("a",{href:"https://opencagedata.com/credits",target:"_blank",rel:"noreferrer",style:a},"others"),".")))}}}]},$=(n,e)=>{let t=n;return e&&(e.limit&&(t=`${t}&limit=${encodeURIComponent(e.limit)}`),e.countrycode&&(t=`${t}&countrycode=${encodeURIComponent(e.countrycode)}`),e.language&&(t=`${t}&language=${encodeURIComponent(e.language)}`),e.bounds&&(t=`${t}&bounds=${encodeURIComponent(e.bounds)}`),e.proximity&&(t=`${t}&proximity=${encodeURIComponent(e.proximity)}`)),t},d=(n={debounce:300,noResults:"No results."},e={})=>{const t=()=>{};let r=null;const s=l=>{r=l.item,e.onSelect&&e.onSelect(l)},o=e.onActive||t,a=e.onSubmit||t,g=y(fetch,n.debounce);return{async getSources({query:l}){if(l==="")return r=null,[];if(!m(l))return console.debug("Not a string"),r=null,[];if(l.length<3)return console.debug("Query is too short"),r=null,c(x,{noResults:n.noResults,onActive:o,onSelect:s});if(r)return c({results:[r]},{noResults:n.noResults,onActive:o,onSelect:s});const f=$(`https://api.opencagedata.com/geosearch?q=${encodeURIComponent(l)}`,n),h={"OpenCage-Geosearch-Key":n.key};return g(f,{headers:h,mode:"cors"}).then(p).then(u=>{if(u.ok)return u.json();throw console.log(u.statusText),u.statusText}).then(u=>c(u,{noResults:n.noResults,onActive:o,onSelect:s})).catch(u=>(console.error(`[Opencage GeoSearch error]: ${u.message}`),console.error(`[error] status: ${u.status}`),console.error(`[error] statusText: ${u.statusText}`),[]))},onSubmit:a,onReset:()=>{r=null}}},I={OpenCageGeoSearchPlugin:d};exports.OpenCageGeoSearchPlugin=d;exports.default=I; //# sourceMappingURL=opencage-geosearch-core.cjs.js.map