primereact
Version:
PrimeReact is an open source UI library for React featuring a rich set of 80+ components, a theme designer, various theme alternatives such as Material, Bootstrap, Tailwind, premium templates and professional support. In addition, it integrates with Prime
2 lines (1 loc) • 3.24 kB
JavaScript
import*as n from"react";import{useMountEffect as r,useUpdateEffect as e}from"primereact/hooks";import{ObjectUtils as t}from"primereact/utils";function a(){return a=Object.assign?Object.assign.bind():function(n){for(var r=1;r<arguments.length;r++){var e=arguments[r];for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&(n[t]=e[t])}return n},a.apply(this,arguments)}function o(n,r){var e="undefined"!=typeof Symbol&&n[Symbol.iterator]||n["@@iterator"];if(!e){if(Array.isArray(n)||(e=l(n))||r&&n&&"number"==typeof n.length){e&&(n=e);var t=0,a=function(){};return{s:a,n:function(){return t>=n.length?{done:!0}:{done:!1,value:n[t++]}},e:function(n){throw n},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,i=!0,u=!1;return{s:function(){e=e.call(n)},n:function(){var n=e.next();return i=n.done,n},e:function(n){u=!0,o=n},f:function(){try{i||null==e.return||e.return()}finally{if(u)throw o}}}}function l(n,r){if(n){if("string"==typeof n)return i(n,r);var e=Object.prototype.toString.call(n).slice(8,-1);return"Object"===e&&n.constructor&&(e=n.constructor.name),"Map"===e||"Set"===e?Array.from(n):"Arguments"===e||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(e)?i(n,r):void 0}}function i(n,r){(null==r||r>n.length)&&(r=n.length);for(var e=0,t=new Array(r);e<r;e++)t[e]=n[e];return t}var u=n.memo(n.forwardRef((function(l,i){var c=n.useRef(null),f=n.useRef(null),s=n.useRef(null),p=function(n){if(n){var r,e=o(n);try{for(e.s();!(r=e.n()).done;){var t=r.value;t.setMap(f.current),g(t)}}catch(n){e.e(n)}finally{e.f()}s.current=n}},g=function(n){n.addListener("click",(function(r){l.onOverlayClick&&l.onOverlayClick({originalEvent:r,overlay:n,map:f.current})})),n.getDraggable()&&d(n)},d=function(n){v(n,"dragstart",l.onOverlayDragStart),v(n,"drag",l.onOverlayDrag),v(n,"dragend",l.onOverlayDragEnd)},y=function(n,r){f.current.addListener(n,(function(n){r&&r(n)}))},v=function(n,r,e){n.addListener(r,(function(r){e&&e({originalEvent:r,overlay:n,map:f.current})}))},m=function(n){if(n){var r,e=o(n);try{for(e.s();!(r=e.n()).done;){var t=r.value;t.setMap(null),h(t)}}catch(n){e.e(n)}finally{e.f()}}},h=function(n){google.maps.event.clearListeners(n,"click"),n.getDraggable()&&(google.maps.event.clearListeners(n,"dragstart"),google.maps.event.clearListeners(n,"drag"),google.maps.event.clearListeners(n,"dragend"))},b=function(){return f.current};r((function(){f.current=new google.maps.Map(c.current,l.options),l.onMapReady&&l.onMapReady({map:f.current}),p(l.overlays),y("click",l.onMapClick),y("dragend",l.onMapDragEnd),y("zoom_changed",l.onZoomChanged)})),e((function(){return p(l.overlays),function(){m(s.current)}})),n.useImperativeHandle(i,(function(){return{props:l,getMap:b,getElement:function(){return c.current}}}));var O=t.findDiffKeys(l,u.defaultProps);return n.createElement("div",a({ref:c,style:l.style,className:l.className},O))})));u.displayName="GMap",u.defaultProps={__TYPE:"GMap",options:null,overlays:null,style:null,className:null,onMapReady:null,onMapClick:null,onMapDragEnd:null,onZoomChanged:null,onOverlayDragStart:null,onOverlayDrag:null,onOverlayDragEnd:null,onOverlayClick:null};export{u as GMap};