react-gmap-plugin
Version:
React Plugin for Google map
1 lines • 11.5 kB
JavaScript
(()=>{var e={703:(e,t,n)=>{"use strict";var r=n(414);function o(){}function a(){}a.resetWarningCache=o,e.exports=function(){function e(e,t,n,o,a,i){if(i!==r){var l=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw l.name="Invariant Violation",l}}function t(){return e}e.isRequired=e;var n={array:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:a,resetWarningCache:o};return n.PropTypes=n,n}},697:(e,t,n)=>{e.exports=n(703)()},414:e=>{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"}},t={};function n(r){var o=t[r];if(void 0!==o)return o.exports;var a=t[r]={exports:{}};return e[r](a,a.exports,n),a.exports}n.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return n.d(t,{a:t}),t},n.d=(e,t)=>{for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var r={};(()=>{"use strict";n.r(r),n.d(r,{MapComponent:()=>P,MapServices:()=>v});const e=require("react");var t=n.n(e),o=n(697),a=n.n(o);function i(e,t,n,r,o,a,i){try{var l=e[a](i),c=l.value}catch(e){return void n(e)}l.done?t(c):Promise.resolve(c).then(r,o)}function l(e){return function(){var t=this,n=arguments;return new Promise((function(r,o){var a=e.apply(t,n);function l(e){i(a,r,o,l,c,"next",e)}function c(e){i(a,r,o,l,c,"throw",e)}l(void 0)}))}}function c(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function s(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?c(Object(n),!0).forEach((function(t){u(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):c(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function u(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var p=function(e,t,n,r){var o=new google.maps.Marker({position:t.geometry.location,map:e,address:t.formatted_address});e.panTo(t.geometry.location),e.setZoom(17),google.maps.event.addListener(o,"click",(function(a){r.infowindowList.forEach((function(e){e.close()}));var i=a.latLng,l=new google.maps.InfoWindow({content:"<div><strong>"+t.formatted_address+"</strong><br>Latitude: "+i.lat()+"<br>Longitude: "+i.lng(),address:t.formatted_address});r.infowindowList.push(l),l.open(e,o),n&&n(s(s({},t),{},{geometry:{location:{lat:a.latLng.lat(),lng:a.latLng.lng()}}}))})),google.maps.event.addListener(o,"dblclick",(function(e){n&&n(s(s({},t),{},{geometry:{location:{lat:e.latLng.lat(),lng:e.latLng.lng()}}}))})),google.maps.event.addListener(o,"rightclick",(function(){n&&n({geometry:{location:{lat:"",lng:""}},formatted_address:""}),o.setMap(null),o=null}))},f=function(){var e=l(regeneratorRuntime.mark((function e(t,n){var r,o,a,i,c,s,u,p,f,d;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r=0,!(t.length>0)){e.next=17;break}for(o=new google.maps.DirectionsService,a=t.map((function(e){return{lat:parseFloat(e.lat),lng:parseFloat(e.lng),name:e.name}})),i=[],c=0;c<a.length;c+=24)i.push(a.slice(c,c+24+1));s=function(){var e=l(regeneratorRuntime.mark((function e(t,o){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if("OK"===o){e.next=2;break}return e.abrupt("return","bb");case 2:return r+=g(t.routes[0].legs),n(r),n(1e3),e.abrupt("return","aa");case 6:case"end":return e.stop()}}),e)})));return function(t,n){return e.apply(this,arguments)}}(),u=0;case 8:if(!(u<i.length)){e.next=17;break}for(p=[],f=1;f<i[u].length-1;f++)p.push({location:i[u][f],stopover:!0});return d={origin:i[u][0],destination:i[u][i[u].length-1],waypoints:p,travelMode:"DRIVING"},e.next=14,o.route(d,s);case 14:u++,e.next=8;break;case 17:return e.abrupt("return",r);case 18:case"end":return e.stop()}}),e)})));return function(t,n){return e.apply(this,arguments)}}(),g=function(e){return e.map((function(e){return e.distance.value})).reduce((function(e,t){return e+t}))/1e3},d=function(e,t){var n=t.filter((function(e){return(null==e?void 0:e.lat)&&"number"==typeof parseFloat(null==e?void 0:e.lat)&&"number"==typeof parseFloat(null==e?void 0:e.lng)})),r=n.map((function(e){return parseFloat(e.lng)})),o=n.map((function(e){return parseFloat(e.lat)}));r.length>0&&o.length>0&&e.fitBounds({west:Math.min.apply(null,r),east:Math.max.apply(null,r),north:Math.min.apply(null,o),south:Math.max.apply(null,o)})},m=function(e,t){var n=document.getElementById("googleMaps");if(!n){var r=document.createElement("script");r.src="https://maps.googleapis.com/maps/api/js?key=".concat(e),r.id="googleMaps",document.body.appendChild(r),r.onload=function(){t&&t()}}n&&t&&t()};const v={loadGMaps:m,advancedDirections:function(e,t,n){if(t.length>0){var r=new google.maps.DirectionsService,o=t.map((function(e){return{lat:parseFloat(e.lat),lng:parseFloat(e.lng),name:e.name}}));d(e,o);for(var a=[],i=0;i<o.length;i+=24)a.push(o.slice(i,i+24+1));var l=function(t,r){if("OK"===r){var o=new google.maps.DirectionsRenderer,a=document.getElementById("directionsPanel");o.setMap(e),a&&o.setPanel(document.getElementById("directionsPanel")),o.setOptions({suppressMarkers:!0,preserveViewport:!0}),o.setDirections(t),n&&n(o)}};a.forEach((function(e,t){for(var n=[],o=1;o<a[t].length-1;o++)n.push({location:a[t][o],stopover:!0});var i={origin:a[t][0],destination:a[t][a[t].length-1],waypoints:n,travelMode:"DRIVING"};r.route(i,l)}))}},mapFitBounds:d,showInfoWindow:function(e,t,n,r,o,a){var i=n.latLng,l=o||"<div><strong>"+r.name+"</strong><br> Latitude: "+i.lat()+"<br>Longitude: "+i.lng(),c=new google.maps.InfoWindow({content:l});c.open(e,t),a.infowindowList.push(c)},showDirection:f,geocode:function(e,t,n,r){(new google.maps.Geocoder).geocode({address:t},(function(t,o){if("OK"!==o)throw o;e.panTo(t[0].geometry.location),e.setZoom(17),p(e,t[0],n,r),n&&n(s(s({},t[0]),{},{geometry:{location:{lat:t[0].geometry.location.lat(),lng:t[0].geometry.location.lng()}}}))}))},reverseGeocodeService:function(e,t,n,r){var o=new google.maps.Geocoder,a=new google.maps.LatLng(t.lat(),t.lng());o.geocode({location:a},(function(t,o){"OK"===o&&(p(e,t[0],n,r),n(t[0]))})).catch((function(e){return e}))},placeMarkerAfterGeoCode:p,placeMarkerOnClick:function(e,t){var n=new google.maps.Marker({position:t,map:e});google.maps.event.addListener(n,"click",(function(t){var r=t.latLng;new google.maps.InfoWindow({content:"Latitude: "+r.lat()+"<br>Longitude: "+r.lng()}).open(e,n)})),google.maps.event.addListener(e,"rightclick",(function(){n.setMap(null),n=null}))}};function y(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function h(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?y(Object(n),!0).forEach((function(t){b(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):y(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function b(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function w(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}var O=function(e){var n,r,o=e.options,a=e.onMarkerClick,i=e.onMapClick,l=e.markerList,c=void 0===l?[]:l,s=e.mapRef,u=e.disable,p=e.enableLocationSearch,f=e.onSearch,g=e.onClearSearch,d=e.showDirectionPanel,v=e.directionsPanelContainer,y=e.API,b=e.defaultLocation,O=e.defaultZoom,P=t().useRef(),j=(n=t().useState(),r=2,function(e){if(Array.isArray(e))return e}(n)||function(e,t){var n=e&&("undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"]);if(null!=n){var r,o,a=[],i=!0,l=!1;try{for(n=n.call(e);!(i=(r=n.next()).done)&&(a.push(r.value),!t||a.length!==t);i=!0);}catch(e){l=!0,o=e}finally{try{i||null==n.return||n.return()}finally{if(l)throw o}}return a}}(n,r)||function(e,t){if(e){if("string"==typeof e)return w(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?w(e,t):void 0}}(n,r)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),k=j[0],E=j[1];return t().useEffect((function(){u||m(y||process.env.REACT_APP_GMAPAPI,(function(){var e={center:b||{lat:41.2033,lng:-77.1945},zoom:O||6,streetViewControl:!1,mapTypeControl:!1},t=new google.maps.Map(P.current,h(h({},e),o));s.current=t,E(t),google.maps.event.addListener(t,"click",(function(e){i&&i(e)}))}))}),[u]),t().useEffect((function(){var e=[];if(s.current){var t,n,r,o,i=s.current;c.forEach((function(t){if(null!=t&&t.lat){var n=new google.maps.Marker({position:{lat:parseFloat(t.lat),lng:parseFloat(t.lng)},name:t.name,icon:"S"===t.Type?"https://developers.google.com/maps/documentation/javascript/examples/full/images/library_maps.png":"",map:i});google.maps.event.addListener(n,"click",(function(e){a&&a(n,e,t)})),e.push(n)}})),1===c.length&&null!==(t=c[0])&&void 0!==t&&t.lat&&null!==(n=c[0])&&void 0!==n&&n.lng&&(i.setCenter({lat:parseFloat(null===(r=c[0])||void 0===r?void 0:r.lat),lng:parseFloat(null===(o=c[0])||void 0===o?void 0:o.lng)}),i.setZoom(17))}return function(){e.forEach((function(e){e.setMap(null)}))}}),[c,s.current,k]),t().createElement(t().Fragment,null," ",u?t().createElement("div",{className:"map-optional-container"}):t().createElement(t().Fragment,null,p&&t().createElement(S,{mapRef:k,onSearch:f,onClearSearch:g}),t().createElement("div",{style:{width:"100%",height:"100%"}},d&&v(t().createElement("div",{id:"directionsPanel",className:"directionsPanel"})),t().createElement("div",{id:"map",style:{height:"100%"},ref:P}," "))))};const P=t().memo(O);var S=function(e){var n,r=e.onSearch,o=e.onClearSearch,a=t().useRef();return t().createElement("div",{className:"mapWrap",id:"mapWrap"},t().createElement("div",{className:"mapSearch"},t().createElement("div",{className:"mapSearchwrap"},t().createElement("label",{htmlFor:"street"},"Search on Map"),t().createElement("span",{className:"clearSearch"},t().createElement("input",{type:"text",placeholder:"Enter a location",ref:a,onKeyDown:r}),(null===(n=a.current)||void 0===n?void 0:n.value)&&t().createElement("div",{className:"clearbutton",onClick:function(){a.current.value="",o()}})))))};S.propTypes={onClearSearch:a().func,onSearch:a().func},O.propTypes={options:a().object,onMarkerClick:a().func,onMapClick:a().func,markerList:a().array,mapRef:a().object,disable:a().bool,enableLocationSearch:a().bool,onSearch:a().func,onClearSearch:a().func,showDirectionPanel:a().bool,directionsPanelContainer:a().func,defaultLocation:a().object,defaultZoom:a().number},a().object})(),module.exports=r})();