react-google-geocoding
Version:
A lightweight wrapper around Google Places Autocomplete and Directions APIs.
2 lines (1 loc) • 6.21 kB
JavaScript
import n,{useRef as t,useEffect as e,useMemo as o,useState as i}from"react";var r,u,a="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function c(n){return n&&n.__esModule&&Object.prototype.hasOwnProperty.call(n,"default")?n.default:n}var f=c(function(){if(u)return r;u=1;var n=/^\s+|\s+$/g,t=/^[-+]0x[0-9a-f]+$/i,e=/^0b[01]+$/i,o=/^0o[0-7]+$/i,i=parseInt,c="object"==typeof a&&a&&a.Object===Object&&a,f="object"==typeof self&&self&&self.Object===Object&&self,s=c||f||Function("return this")(),l=Object.prototype.toString,d=Math.max,p=Math.min,v=function(){return s.Date.now()};function y(n){var t=typeof n;return!!n&&("object"==t||"function"==t)}function g(r){if("number"==typeof r)return r;if(function(n){return"symbol"==typeof n||function(n){return!!n&&"object"==typeof n}(n)&&"[object Symbol]"==l.call(n)}(r))return NaN;if(y(r)){var u="function"==typeof r.valueOf?r.valueOf():r;r=y(u)?u+"":u}if("string"!=typeof r)return 0===r?r:+r;r=r.replace(n,"");var a=e.test(r);return a||o.test(r)?i(r.slice(2),a?2:8):t.test(r)?NaN:+r}return r=function(n,t,e){var o,i,r,u,a,c,f=0,s=!1,l=!1,w=!0;if("function"!=typeof n)throw new TypeError("Expected a function");function b(t){var e=o,r=i;return o=i=void 0,f=t,u=n.apply(r,e)}function h(n){var e=n-c;return void 0===c||e>=t||e<0||l&&n-f>=r}function m(){var n=v();if(h(n))return S(n);a=setTimeout(m,function(n){var e=t-(n-c);return l?p(e,r-(n-f)):e}(n))}function S(n){return a=void 0,w&&o?b(n):(o=i=void 0,u)}function O(){var n=v(),e=h(n);if(o=arguments,i=this,c=n,e){if(void 0===a)return function(n){return f=n,a=setTimeout(m,t),s?b(n):u}(c);if(l)return a=setTimeout(m,t),b(c)}return void 0===a&&(a=setTimeout(m,t)),u}return t=g(t)||0,y(e)&&(s=!!e.leading,r=(l="maxWait"in e)?d(g(e.maxWait)||0,t):r,w="trailing"in e?!!e.trailing:w),O.cancel=function(){void 0!==a&&clearTimeout(a),f=0,o=c=i=a=void 0},O.flush=function(){return void 0===a?u:S(v())},O}}());function s(n,i,r){void 0===i&&(i=500);var u=t();!function(n){var o=t(n);o.current=n,e((function(){return function(){o.current()}}),[])}((function(){u.current&&u.current.cancel()}));var a=o((function(){var t=f(n,i,r),e=function(){for(var n=[],e=0;e<arguments.length;e++)n[e]=arguments[e];return t.apply(void 0,n)};return e.cancel=function(){t.cancel()},e.isPending=function(){return!!u.current},e.flush=function(){return t.flush()},e}),[n,i,r]);return e((function(){u.current=f(n,i,r)}),[n,i,r]),a}var l=function(e){var o=e.input,r=e.debounceMs,u=void 0===r?300:r,a=e.sessionToken,c=e.locationBias,f=e.locationRestriction,l=e.language,d=e.types,p=e.componentRestrictions,v=e.offset,y=e.origin,g=e.region,w=e.location,b=e.radius,h=e.bounds,m=n.useRef(null),S=n.useState([]),O=S[0],j=S[1],T=n.useState(!1),x=T[0],E=T[1],R=n.useState(null),k=R[0],M=R[1],F=function(n,e,o){var r,u=null!==(r=null==o?void 0:o.equalityFn)&&void 0!==r?r:function(n,t){return n===t},a=n instanceof Function?n():n,c=i(a),f=c[0],l=c[1],d=t(a),p=s(l,e,o);return u(d.current,a)||(p(a),d.current=a),[f,p]}(o,u)[0];return n.useEffect((function(){void 0!==window&&window.google&&(m.current=new window.google.maps.places.AutocompleteService)}),[]),n.useEffect((function(){if(o){if(!m.current)throw new Error("Autocomplete Service not initialized");E(!0),m.current.getPlacePredictions({input:F,language:l,locationBias:c,region:g,offset:v,origin:y,locationRestriction:f,sessionToken:a,types:d,componentRestrictions:p,location:w,radius:b,bounds:h},(function(n,t){j(n||[]),M(t),E(!1)}))}}),[F]),{predictions:O,isLoading:x,status:k}};function d(n,t,e,o){return new(e||(e=Promise))((function(i,r){function u(n){try{c(o.next(n))}catch(n){r(n)}}function a(n){try{c(o.throw(n))}catch(n){r(n)}}function c(n){var t;n.done?i(n.value):(t=n.value,t instanceof e?t:new e((function(n){n(t)}))).then(u,a)}c((o=o.apply(n,t||[])).next())}))}function p(n,t){var e,o,i,r={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]},u=Object.create(("function"==typeof Iterator?Iterator:Object).prototype);return u.next=a(0),u.throw=a(1),u.return=a(2),"function"==typeof Symbol&&(u[Symbol.iterator]=function(){return this}),u;function a(a){return function(c){return function(a){if(e)throw new TypeError("Generator is already executing.");for(;u&&(u=0,a[0]&&(r=0)),r;)try{if(e=1,o&&(i=2&a[0]?o.return:a[0]?o.throw||((i=o.return)&&i.call(o),0):o.next)&&!(i=i.call(o,a[1])).done)return i;switch(o=0,i&&(a=[2&a[0],i.value]),a[0]){case 0:case 1:i=a;break;case 4:return r.label++,{value:a[1],done:!1};case 5:r.label++,o=a[1],a=[0];continue;case 7:a=r.ops.pop(),r.trys.pop();continue;default:if(!(i=r.trys,(i=i.length>0&&i[i.length-1])||6!==a[0]&&2!==a[0])){r=0;continue}if(3===a[0]&&(!i||a[1]>i[0]&&a[1]<i[3])){r.label=a[1];break}if(6===a[0]&&r.label<i[1]){r.label=i[1],i=a;break}if(i&&r.label<i[2]){r.label=i[2],r.ops.push(a);break}i[2]&&r.ops.pop(),r.trys.pop();continue}a=t.call(n,r)}catch(n){a=[6,n],o=0}finally{e=i=0}if(5&a[0])throw a[1];return{value:a[0]?a[1]:void 0,done:!0}}([a,c])}}}"function"==typeof SuppressedError&&SuppressedError;var v=function(t){var e=t.origin,o=t.destination,i=t.language,r=t.region,u=t.avoidFerries,a=t.avoidHighways,c=t.avoidTolls,f=t.drivingOptions,s=t.optimizeWaypoints,l=t.provideRouteAlternatives,v=t.transitOptions,y=t.unitSystem,g=t.waypoints,w=t.travelMode,b=n.useRef(null),h=n.useState(null),m=h[0],S=h[1],O=n.useState(!1),j=O[0],T=O[1],x=n.useState(null),E=x[0],R=x[1];n.useEffect((function(){void 0!==window&&window.google&&(b.current=new window.google.maps.DirectionsService)}),[]);return n.useEffect((function(){if(e||o){if(!b.current)throw new Error("Directions Service not initialized");T(!0),d(void 0,void 0,void 0,(function(){var n;return p(this,(function(t){switch(t.label){case 0:return[4,null===(n=b.current)||void 0===n?void 0:n.route({origin:e,destination:o,language:i,region:r,avoidFerries:u,avoidHighways:a,avoidTolls:c,drivingOptions:f,optimizeWaypoints:s,provideRouteAlternatives:l,transitOptions:v,unitSystem:y,waypoints:g,travelMode:w},(function(n,t){S(n),R(t),T(!1)}))];case 1:return t.sent(),[2]}}))}))}}),[e,o]),{directions:m,isLoading:j,status:E}};export{v as useDirections,l as usePlacePredictions};