diff --git a/dist/index.modern.js b/dist/index.modern.js index fe3cafb..5ab47ec 100644 --- a/dist/index.modern.js +++ b/dist/index.modern.js @@ -2,41 +2,89 @@ import { element, string, shape, number, object, node, oneOfType, arrayOf, func import React, { useState, useEffect, useRef, useMemo, Children, isValidElement, useCallback, forwardRef } from 'react'; import { createPortal } from 'react-dom'; -const useScript = (script = { - src: '', - attributes: {}, - callbacks: { - onLoadCallback: null, - onErrorCallback: null - }, - elementIdToAppend: null -}) => { - const [status, setStatus] = useState(script.src ? 'loading' : 'idle'); - useEffect(() => { +function _extends() { + _extends = Object.assign ? Object.assign.bind() : function (target) { + for (var i = 1; i < arguments.length; i++) { + var source = arguments[i]; + for (var key in source) { + if (Object.prototype.hasOwnProperty.call(source, key)) { + target[key] = source[key]; + } + } + } + return target; + }; + return _extends.apply(this, arguments); +} +function _inheritsLoose(subClass, superClass) { + subClass.prototype = Object.create(superClass.prototype); + subClass.prototype.constructor = subClass; + _setPrototypeOf(subClass, superClass); +} +function _setPrototypeOf(o, p) { + _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { + o.__proto__ = p; + return o; + }; + return _setPrototypeOf(o, p); +} +function _objectWithoutPropertiesLoose(source, excluded) { + if (source == null) return {}; + var target = {}; + var sourceKeys = Object.keys(source); + var key, i; + for (i = 0; i < sourceKeys.length; i++) { + key = sourceKeys[i]; + if (excluded.indexOf(key) >= 0) continue; + target[key] = source[key]; + } + return target; +} + +var useScript = function useScript(script) { + if (script === void 0) { + script = { + src: '', + attributes: {}, + callbacks: { + onLoadCallback: null, + onErrorCallback: null + }, + elementIdToAppend: null + }; + } + var _useState = useState(script.src ? 'loading' : 'idle'), + status = _useState[0], + setStatus = _useState[1]; + useEffect(function () { var _script$callbacks, _script$callbacks2; if (!script.src) { setStatus('idle'); return; } - let scriptToAdd = document.querySelector(`script[src="${script.src}"]`); + var scriptToAdd = document.querySelector("script[src=\"" + script.src + "\"]"); if (!scriptToAdd) { scriptToAdd = document.createElement('script'); scriptToAdd.src = script.src; scriptToAdd.async = true; scriptToAdd.setAttribute('data-status', 'loading'); - script.attributes && Object.entries(script.attributes).length > 0 ? Object.entries(script.attributes).map(([key, value]) => scriptToAdd.setAttribute(key, value)) : null; + script.attributes && Object.entries(script.attributes).length > 0 ? Object.entries(script.attributes).map(function (_ref) { + var key = _ref[0], + value = _ref[1]; + return scriptToAdd.setAttribute(key, value); + }) : null; if (script.elementIdToAppend && document.getElementById(script.elementIdToAppend)) { document.getElementById(script.elementIdToAppend).appendChild(scriptToAdd); } else { document.body.appendChild(scriptToAdd); } - const setAttributeFromEvent = event => { + var setAttributeFromEvent = function setAttributeFromEvent(event) { scriptToAdd.setAttribute('data-status', event.type === 'load' ? 'ready' : 'error'); }; scriptToAdd.addEventListener('load', setAttributeFromEvent); scriptToAdd.addEventListener('error', setAttributeFromEvent); } else { - const currentScriptStatus = scriptToAdd.getAttribute('data-status'); + var currentScriptStatus = scriptToAdd.getAttribute('data-status'); switch (currentScriptStatus) { case 'load': case 'ready': @@ -48,14 +96,14 @@ const useScript = (script = { } setStatus(currentScriptStatus); } - const setStateFromEvent = event => { + var setStateFromEvent = function setStateFromEvent(event) { var _script$callbacks3, _script$callbacks4; event.type === 'load' ? (_script$callbacks3 = script.callbacks) !== null && _script$callbacks3 !== void 0 && _script$callbacks3.onLoadCallback ? script.callbacks.onLoadCallback() : null : (_script$callbacks4 = script.callbacks) !== null && _script$callbacks4 !== void 0 && _script$callbacks4.onErrorCallback ? script.callbacks.onErrorCallback() : null; setStatus(event.type === 'load' ? 'ready' : 'error'); }; scriptToAdd.addEventListener('load', setStateFromEvent); scriptToAdd.addEventListener('error', setStateFromEvent); - return () => { + return function () { if (scriptToAdd) { scriptToAdd.removeEventListener('load', setStateFromEvent); scriptToAdd.removeEventListener('error', setStateFromEvent); @@ -66,17 +114,17 @@ const useScript = (script = { return status; }; -const useGoogleMaps = ({ - apiKey, - libraries: _libraries = [] -}) => { - const script = apiKey ? { - src: `https://maps.googleapis.com/maps/api/js?key=${apiKey}&libraries=${_libraries === null || _libraries === void 0 ? void 0 : _libraries.join(",")}`, +var useGoogleMaps = function useGoogleMaps(_ref) { + var apiKey = _ref.apiKey, + _ref$libraries = _ref.libraries, + libraries = _ref$libraries === void 0 ? [] : _ref$libraries; + var script = apiKey ? { + src: "https://maps.googleapis.com/maps/api/js?key=" + apiKey + "&libraries=" + (libraries === null || libraries === void 0 ? void 0 : libraries.join(",")), attributes: { id: "googleMapsApi" } } : { - src: `https://maps.googleapis.com/maps/api/js?libraries=${_libraries === null || _libraries === void 0 ? void 0 : _libraries.join(",")}`, + src: "https://maps.googleapis.com/maps/api/js?libraries=" + (libraries === null || libraries === void 0 ? void 0 : libraries.join(",")), attributes: { id: "googleMapsApi" } @@ -84,9 +132,9 @@ const useGoogleMaps = ({ return useScript(script); }; -const isArraysEqualEps = (arrayA, arrayB, eps) => { +var isArraysEqualEps = function isArraysEqualEps(arrayA, arrayB, eps) { if (arrayA && arrayB) { - for (let i = 0; i !== arrayA.length; ++i) { + for (var i = 0; i !== arrayA.length; ++i) { if (Math.abs(arrayA[i] - arrayB[i]) > eps) { return false; } @@ -96,11 +144,11 @@ const isArraysEqualEps = (arrayA, arrayB, eps) => { return false; }; -const useMemoCompare = (next, compare) => { - const previousRef = useRef(); - const previous = previousRef.current; - const isEqual = compare(previous, next); - useEffect(() => { +var useMemoCompare = function useMemoCompare(next, compare) { + var previousRef = useRef(); + var previous = previousRef.current; + var isEqual = compare(previous, next); + useEffect(function () { if (!isEqual) { previousRef.current = next; } @@ -108,38 +156,40 @@ const useMemoCompare = (next, compare) => { return isEqual ? previous : next; }; -const createOverlay = ({ - container, - pane, - position, - maps -}) => { - class Overlay extends maps.OverlayView { - constructor(container, _pane, position) { - super(); - this.onAdd = () => { - const pane = this.getPanes()[this.pane]; +var createOverlay = function createOverlay(_ref) { + var container = _ref.container, + pane = _ref.pane, + position = _ref.position, + maps = _ref.maps; + var Overlay = /*#__PURE__*/function (_maps$OverlayView) { + _inheritsLoose(Overlay, _maps$OverlayView); + function Overlay(container, _pane, position) { + var _this; + _this = _maps$OverlayView.call(this) || this; + _this.onAdd = function () { + var pane = _this.getPanes()[_this.pane]; pane === null || pane === void 0 ? void 0 : pane.classList.add('google-map-markers-overlay'); - pane === null || pane === void 0 ? void 0 : pane.appendChild(this.container); + pane === null || pane === void 0 ? void 0 : pane.appendChild(_this.container); }; - this.draw = () => { - const projection = this.getProjection(); - const point = projection.fromLatLngToDivPixel(this.position); + _this.draw = function () { + var projection = _this.getProjection(); + var point = projection.fromLatLngToDivPixel(_this.position); if (point === null) return; - this.container.style.transform = `translate(${point.x}px, ${point.y}px)`; + _this.container.style.transform = "translate(" + point.x + "px, " + point.y + "px)"; }; - this.onRemove = () => { - if (this.container.parentNode !== null) { - this.container.parentNode.removeChild(this.container); + _this.onRemove = function () { + if (_this.container.parentNode !== null) { + _this.container.parentNode.removeChild(_this.container); } }; - this.container = container; - this.pane = _pane; - this.position = position; + _this.container = container; + _this.pane = _pane; + _this.position = position; + return _this; } - } - + return Overlay; + }(maps.OverlayView); return new Overlay(container, pane, position); }; createOverlay.propTypes = { @@ -152,42 +202,42 @@ createOverlay.propTypes = { maps: object.isRequired }; -const OverlayView = ({ - position, - pane: _pane = 'floatPane', - map, - maps, - zIndex, - children -}) => { - const container = useMemo(() => { - const div = document.createElement('div'); +var OverlayView = function OverlayView(_ref) { + var position = _ref.position, + _ref$pane = _ref.pane, + pane = _ref$pane === void 0 ? 'floatPane' : _ref$pane, + map = _ref.map, + maps = _ref.maps, + zIndex = _ref.zIndex, + children = _ref.children; + var container = useMemo(function () { + var div = document.createElement('div'); div.style.position = 'absolute'; return div; }, []); - const overlay = useMemo(() => { + var overlay = useMemo(function () { return createOverlay({ - container, - pane: _pane, - position, - maps + container: container, + pane: pane, + position: position, + maps: maps }); - }, [container, maps, _pane, position]); + }, [container, maps, pane, position]); - const childrenProps = useMemoCompare(children === null || children === void 0 ? void 0 : children.props, (prev, next) => { + var childrenProps = useMemoCompare(children === null || children === void 0 ? void 0 : children.props, function (prev, next) { return prev && prev.lat === next.lat && prev.lng === next.lng; }); - useEffect(() => { + useEffect(function () { if (!overlay.map) { overlay === null || overlay === void 0 ? void 0 : overlay.setMap(map); - return () => { + return function () { overlay === null || overlay === void 0 ? void 0 : overlay.setMap(null); }; } }, [map, childrenProps]); - useEffect(() => { - container.style.zIndex = `${zIndex}`; + useEffect(function () { + container.style.zIndex = "" + zIndex; }, [zIndex, container]); return /*#__PURE__*/createPortal(children, container); }; @@ -206,16 +256,15 @@ OverlayView.propTypes = { children: node.isRequired }; -const MapMarkers = ({ - children, - map, - maps -}) => { - const markers = useMemo(() => { +var MapMarkers = function MapMarkers(_ref) { + var children = _ref.children, + map = _ref.map, + maps = _ref.maps; + var markers = useMemo(function () { if (!map || !maps) return []; - return Children.map(children, child => { + return Children.map(children, function (child) { if ( /*#__PURE__*/isValidElement(child)) { - const latLng = { + var latLng = { lat: child.props.lat, lng: child.props.lng }; @@ -235,55 +284,59 @@ MapMarkers.propTypes = { maps: object.isRequired }; -const EPS = 0.00001; -const MapComponent = ({ - children, - style, - defaultCenter, - defaultZoom, - onGoogleApiLoaded, - onChange, - options -}) => { - const mapRef = useRef(null); - const prevBoundsRef = useRef(null); - const [map, setMap] = useState(null); - const [maps, setMaps] = useState(null); - const [googleApiCalled, setGoogleApiCalled] = useState(false); - const onIdle = useCallback(() => { - const zoom = map.getZoom(); - const bounds = map.getBounds(); - const centerLatLng = map.getCenter(); - const ne = bounds.getNorthEast(); - const sw = bounds.getSouthWest(); - const boundsArray = [sw.lng(), sw.lat(), ne.lng(), ne.lat()]; +var EPS = 0.00001; +var MapComponent = function MapComponent(_ref) { + var children = _ref.children, + style = _ref.style, + defaultCenter = _ref.defaultCenter, + defaultZoom = _ref.defaultZoom, + onGoogleApiLoaded = _ref.onGoogleApiLoaded, + onChange = _ref.onChange, + options = _ref.options; + var mapRef = useRef(null); + var prevBoundsRef = useRef(null); + var _useState = useState(null), + map = _useState[0], + setMap = _useState[1]; + var _useState2 = useState(null), + maps = _useState2[0], + setMaps = _useState2[1]; + var _useState3 = useState(false), + googleApiCalled = _useState3[0], + setGoogleApiCalled = _useState3[1]; + var onIdle = useCallback(function () { + var zoom = map.getZoom(); + var bounds = map.getBounds(); + var centerLatLng = map.getCenter(); + var ne = bounds.getNorthEast(); + var sw = bounds.getSouthWest(); + var boundsArray = [sw.lng(), sw.lat(), ne.lng(), ne.lat()]; if (!isArraysEqualEps(boundsArray, prevBoundsRef.current, EPS)) { if (onChange) { onChange({ - zoom, + zoom: zoom, center: [centerLatLng.lng(), centerLatLng.lat()], - bounds + bounds: bounds }); } prevBoundsRef.current = boundsArray; } }, [map, onChange]); - useEffect(() => { + useEffect(function () { if (mapRef.current && !map) { - setMap(new window.google.maps.Map(mapRef.current, { + setMap(new window.google.maps.Map(mapRef.current, _extends({ center: defaultCenter, - zoom: defaultZoom, - ...options - })); + zoom: defaultZoom + }, options))); setMaps(window.google.maps); } }, [defaultCenter, defaultZoom, map, mapRef, options]); - useEffect(() => { + useEffect(function () { if (map) { if (!googleApiCalled) { onGoogleApiLoaded({ - map, - maps, + map: map, + maps: maps, ref: mapRef.current }); setGoogleApiCalled(true); @@ -292,8 +345,8 @@ const MapComponent = ({ window.google.maps.event.addListener(map, 'idle', onIdle); } }, [googleApiCalled, map, maps, onChange, onGoogleApiLoaded, onIdle]); - useEffect(() => { - return () => { + useEffect(function () { + return function () { if (map) { window.google.maps.event.clearListeners(map, 'idle'); } @@ -318,8 +371,8 @@ MapComponent.defaultProps = { padding: 0, position: 'absolute' }, - onGoogleApiLoaded: () => {}, - onChange: () => {}, + onGoogleApiLoaded: function onGoogleApiLoaded() {}, + onChange: function onChange() {}, options: {} }; MapComponent.propTypes = { @@ -332,22 +385,22 @@ MapComponent.propTypes = { options: object }; -const GoogleMap = /*#__PURE__*/forwardRef(function GoogleMap({ - apiKey, - libraries, - children, - loadingContent, - idleContent, - errorContent, - mapMinHeight, - containerProps, - ...props -}, ref) { - const status = useGoogleMaps({ - apiKey, - libraries +var _excluded = ["apiKey", "libraries", "children", "loadingContent", "idleContent", "errorContent", "mapMinHeight", "containerProps"]; +var GoogleMap = /*#__PURE__*/forwardRef(function GoogleMap(_ref, ref) { + var apiKey = _ref.apiKey, + libraries = _ref.libraries, + children = _ref.children, + loadingContent = _ref.loadingContent, + idleContent = _ref.idleContent, + errorContent = _ref.errorContent, + mapMinHeight = _ref.mapMinHeight, + containerProps = _ref.containerProps, + props = _objectWithoutPropertiesLoose(_ref, _excluded); + var status = useGoogleMaps({ + apiKey: apiKey, + libraries: libraries }); - return /*#__PURE__*/React.createElement("div", Object.assign({ + return /*#__PURE__*/React.createElement("div", _extends({ style: { height: '100%', width: '100%', @@ -358,24 +411,22 @@ const GoogleMap = /*#__PURE__*/forwardRef(function GoogleMap({ ref: ref }, containerProps), status === 'ready' ? /*#__PURE__*/React.createElement(MapComponent, props, children) : status === 'loading' ? loadingContent : status === 'idle' ? idleContent : status === 'error' ? errorContent : null); }); -GoogleMap.defaultProps = { - ...MapComponent.defaultProps, +GoogleMap.defaultProps = _extends({}, MapComponent.defaultProps, { loadingContent: 'Google Maps is loading', idleContent: 'Google Maps is on idle', errorContent: 'Google Maps is on error', mapMinHeight: 'unset', apiKey: '', libraries: ['places', 'geometry'] -}; -GoogleMap.propTypes = { - ...MapComponent.propTypes, +}); +GoogleMap.propTypes = _extends({}, MapComponent.propTypes, { children: oneOfType([node, arrayOf(node)]), loadingContent: node, idleContent: node, errorContent: node, mapMinHeight: oneOfType([number, string]), containerProps: object -}; +}); export default GoogleMap; //# sourceMappingURL=index.modern.js.map diff --git a/dist/index.modern.js.map b/dist/index.modern.js.map index 562cfba..6a1d3a8 100644 --- a/dist/index.modern.js.map +++ b/dist/index.modern.js.map @@ -1 +1 @@ -{"version":3,"file":"index.modern.js","sources":["../src/hooks/useScript.js","../src/hooks/useGoogleMaps.js","../src/utils/utils.js","../src/hooks/useMemoCompare.js","../src/map/overlay.js","../src/map/overlay-view.js","../src/map/markers.js","../src/map/map.js","../src/google-map.js"],"sourcesContent":["/* eslint-disable no-unused-expressions */\nimport { useState, useEffect } from 'react'\n\n/**\n * @description Hook to load external script.\n * @param {Object} script - Script to load.\n * @param {string} script.src - Script source.\n * @param {Object} [script.attributes] - Attributes to add to the script tag.\n * @param {Object} [script.callbacks] - Callbacks executed on completion.\n * @param {Function} [script.callbacks.onLoadCallback] - Callback executed on completion in case of success.\n * @param {Function} [script.callbacks.onErrorCallback] - Callbacks executed on completion in case of error.\n * @param {string} [script.elementIdToAppend] - HTML element id to append the script to. Default is HTML HEAD.\n * @returns {\"idle\" | \"loading\" | \"ready\" | \"error\"} status\n *\n * @example\n * const status = useScript({\n * \t\tsrc: \"https://script-to-load.js\",\n * \t\tattributes: { id: \"scriptId\", class: \"script-class\" },\n * \t\tcallbacks: {\n * \t\t\tonLoadCallback: onLoadFunc,\n * \t\t\tonErrorCallback: onErrorFunc,\n * \t\t},\n * \t\telementIdToAppend: \"script-container\"\n * })\n */\n\nexport const useScript = (\n\tscript = {\n\t\tsrc: '',\n\t\tattributes: {},\n\t\tcallbacks: { onLoadCallback: null, onErrorCallback: null },\n\t\telementIdToAppend: null,\n\t}\n) => {\n\t// Keep track of script status (\"idle\", \"loading\", \"ready\", \"error\")\n\tconst [status, setStatus] = useState(script.src ? 'loading' : 'idle')\n\n\tuseEffect(\n\t\t() => {\n\t\t\t// Allow falsy src value if waiting on other data needed for\n\t\t\t// constructing the script URL passed to this hook.\n\t\t\tif (!script.src) {\n\t\t\t\tsetStatus('idle')\n\t\t\t\treturn\n\t\t\t}\n\t\t\t// Fetch existing script element by src\n\t\t\t// It may have been added by another instance of this hook\n\t\t\tlet scriptToAdd = document.querySelector(`script[src=\"${script.src}\"]`)\n\t\t\tif (!scriptToAdd) {\n\t\t\t\t// Create script\n\t\t\t\tscriptToAdd = document.createElement('script')\n\t\t\t\tscriptToAdd.src = script.src\n\t\t\t\tscriptToAdd.async = true\n\t\t\t\tscriptToAdd.setAttribute('data-status', 'loading')\n\t\t\t\t// Add other script attributes, if they exist\n\t\t\t\tscript.attributes && Object.entries(script.attributes).length > 0\n\t\t\t\t\t? Object.entries(script.attributes).map(([key, value]) => scriptToAdd.setAttribute(key, value))\n\t\t\t\t\t: null\n\t\t\t\t// Add script to document body\n\t\t\t\tif (script.elementIdToAppend && document.getElementById(script.elementIdToAppend)) {\n\t\t\t\t\tdocument.getElementById(script.elementIdToAppend).appendChild(scriptToAdd)\n\t\t\t\t} else {\n\t\t\t\t\tdocument.body.appendChild(scriptToAdd)\n\t\t\t\t}\n\t\t\t\t// Store status in attribute on script\n\t\t\t\t// This can be read by other instances of this hook\n\t\t\t\tconst setAttributeFromEvent = (event) => {\n\t\t\t\t\tscriptToAdd.setAttribute('data-status', event.type === 'load' ? 'ready' : 'error')\n\t\t\t\t}\n\t\t\t\tscriptToAdd.addEventListener('load', setAttributeFromEvent)\n\t\t\t\tscriptToAdd.addEventListener('error', setAttributeFromEvent)\n\t\t\t} else {\n\t\t\t\t// Grab existing script status from attribute and set to state.\n\t\t\t\tconst currentScriptStatus = scriptToAdd.getAttribute('data-status')\n\t\t\t\tswitch (currentScriptStatus) {\n\t\t\t\t\tcase 'load':\n\t\t\t\t\tcase 'ready':\n\t\t\t\t\t\tscript.callbacks?.onLoadCallback ? script.callbacks.onLoadCallback() : null\n\t\t\t\t\t\tbreak\n\t\t\t\t\tcase 'error':\n\t\t\t\t\t\tscript.callbacks?.onErrorCallback ? script.callbacks.onErrorCallback() : null\n\t\t\t\t\t\tbreak\n\t\t\t\t\tdefault:\n\t\t\t\t\t\t// loading: do nothing\n\t\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\tsetStatus(currentScriptStatus)\n\t\t\t}\n\t\t\t// Script event handler to update status in state\n\t\t\t// Note: Even if the script already exists we still need to add\n\t\t\t// event handlers to update the state for this hook instance.\n\t\t\tconst setStateFromEvent = (event) => {\n\t\t\t\tevent.type === 'load'\n\t\t\t\t\t? script.callbacks?.onLoadCallback\n\t\t\t\t\t\t? script.callbacks.onLoadCallback()\n\t\t\t\t\t\t: null\n\t\t\t\t\t: script.callbacks?.onErrorCallback\n\t\t\t\t\t? script.callbacks.onErrorCallback()\n\t\t\t\t\t: null\n\t\t\t\tsetStatus(event.type === 'load' ? 'ready' : 'error')\n\t\t\t}\n\t\t\t// Add event listeners\n\t\t\tscriptToAdd.addEventListener('load', setStateFromEvent)\n\t\t\tscriptToAdd.addEventListener('error', setStateFromEvent)\n\t\t\t// Remove event listeners on cleanup\n\t\t\treturn () => {\n\t\t\t\tif (scriptToAdd) {\n\t\t\t\t\tscriptToAdd.removeEventListener('load', setStateFromEvent)\n\t\t\t\t\tscriptToAdd.removeEventListener('error', setStateFromEvent)\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t// Re-run useEffect if script changes\n\t\t[script]\n\t)\n\treturn status\n}\n","import { useScript } from \"./useScript\";\n\n/**\n * @returns {\"idle\" | \"loading\" | \"ready\" | \"error\"} status\n */\nexport const useGoogleMaps = ({ apiKey, libraries = [] }) => {\n\tconst script = apiKey\n\t\t? {\n\t\t\t\tsrc: `https://maps.googleapis.com/maps/api/js?key=${apiKey}&libraries=${libraries?.join(\",\")}`,\n\t\t\t\tattributes: { id: \"googleMapsApi\" },\n\t\t }\n\t\t: {\n\t\t\t\tsrc: `https://maps.googleapis.com/maps/api/js?libraries=${libraries?.join(\",\")}`,\n\t\t\t\tattributes: { id: \"googleMapsApi\" },\n\t\t};\n\n\treturn useScript(script);\n};\n","export const isArraysEqualEps = (arrayA, arrayB, eps) => {\n\tif (arrayA && arrayB) {\n\t\tfor (let i = 0; i !== arrayA.length; ++i) {\n\t\t\tif (Math.abs(arrayA[i] - arrayB[i]) > eps) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t\treturn true\n\t}\n\treturn false\n}\n","import { useEffect, useRef } from 'react'\n\n/**\n * A hook that compares the previous and current values of a reference.\n * @param {any} value - the current value of the reference\n * @param {function} compare - a function that compares the previous and current values\n * @returns {any} the previous value of the reference\n * @ref https://usehooks.com/useMemoCompare/\n */\nconst useMemoCompare = (next, compare) => {\n\t// Ref for storing previous value\n\tconst previousRef = useRef()\n\tconst previous = previousRef.current\n\t// Pass previous and next value to compare function\n\t// to determine whether to consider them equal.\n\tconst isEqual = compare(previous, next)\n\t// If not equal update previousRef to next value.\n\t// We only update if not equal so that this hook continues to return\n\t// the same old value if compare keeps returning true.\n\tuseEffect(() => {\n\t\tif (!isEqual) {\n\t\t\tpreviousRef.current = next\n\t\t}\n\t})\n\t// Finally, if equal then return the previous value\n\treturn isEqual ? previous : next\n}\n\nexport default useMemoCompare\n","import { element, number, object, shape, string } from 'prop-types'\n\n/**\n * @param {HTMLElement} container\n * @param {google.maps.MapPanes} pane\n * @param {google.maps.LatLng | google.maps.LatLngLiteral} position\n * @param {google.maps} maps\n * @returns {void}\n */\nconst createOverlay = ({ container, pane, position, maps }) => {\n\tclass Overlay extends maps.OverlayView {\n\t\tconstructor(container, pane, position) {\n\t\t\tsuper()\n\t\t\tthis.container = container\n\t\t\tthis.pane = pane\n\t\t\tthis.position = position\n\t\t}\n\n\t\t/**\n\t\t * onAdd is called when the map's panes are ready and the overlay has been\n\t\t * added to the map.\n\t\t */\n\t\tonAdd = () => {\n\t\t\t// Add the element to the pane.\n\t\t\tconst pane = this.getPanes()[this.pane]\n\t\t\tpane?.classList.add('google-map-markers-overlay')\n\t\t\tpane?.appendChild(this.container)\n\t\t}\n\n\t\tdraw = () => {\n\t\t\tconst projection = this.getProjection()\n\t\t\t// Computes the pixel coordinates of the given geographical location in the DOM element that holds the draggable map.\n\t\t\tconst point = projection.fromLatLngToDivPixel(this.position)\n\t\t\tif (point === null) return\n\t\t\tthis.container.style.transform = `translate(${point.x}px, ${point.y}px)`\n\t\t}\n\n\t\t/**\n\t\t * The onRemove() method will be called automatically from the API if\n\t\t * we ever set the overlay's map property to 'null'.\n\t\t */\n\t\tonRemove = () => {\n\t\t\tif (this.container.parentNode !== null) {\n\t\t\t\tthis.container.parentNode.removeChild(this.container)\n\t\t\t}\n\t\t}\n\t}\n\n\treturn new Overlay(container, pane, position)\n}\n\ncreateOverlay.propTypes = {\n\t/**\n\t * The HTML container element for the overlay.\n\t */\n\tcontainer: element.isRequired,\n\t/**\n\t * The HTML container element for the overlay.\n\t * @ref [MapPanes](https://developers.google.com/maps/documentation/javascript/reference/overlay-view#MapPanes)\n\t * @default 'floatPane'\n\t * @type {google.maps.MapPanes}\n\t * @required\n\t */\n\tpane: string.isRequired,\n\t/**\n\t * The geographical location of the overlay.\n\t * @type {google.maps.LatLng | google.maps.LatLngLiteral}\n\t * @required\n\t * @ref [LatLng](https://developers.google.com/maps/documentation/javascript/reference/coordinates#LatLng)\n\t */\n\tposition: shape({\n\t\tlat: number.isRequired,\n\t\tlng: number.isRequired,\n\t}).isRequired,\n\t/**\n\t * The Google Maps API.\n\t */\n\tmaps: object.isRequired,\n}\n\nexport default createOverlay\n","import { node, number, object, shape, string } from 'prop-types'\nimport { useEffect, useMemo } from 'react'\nimport { createPortal } from 'react-dom'\nimport useMemoCompare from '../hooks/useMemoCompare'\nimport createOverlay from './overlay'\n\n/**\n * @param {HTMLElement} container\n * @param {google.maps.MapPanes} pane - The pane on which to display the overlay. This is the Pane name, not the Pane itself. Defaults to floatPane.\n * @param {google.maps.LatLng | google.maps.LatLngLiteral} position\n * @returns {void}\n * @ref [MapPanes](https://developers.google.com/maps/documentation/javascript/reference/overlay-view#MapPanes)\n */\nconst OverlayView = ({ position, pane = 'floatPane', map, maps, zIndex, children }) => {\n\tconst container = useMemo(() => {\n\t\t// eslint-disable-next-line no-undef\n\t\tconst div = document.createElement('div')\n\t\tdiv.style.position = 'absolute'\n\t\treturn div\n\t}, [])\n\n\tconst overlay = useMemo(() => {\n\t\treturn createOverlay({ container, pane, position, maps })\n\t}, [container, maps, pane, position])\n\n\t// Because React does not do deep comparisons, a custom hook is used.\n\t// This fixes the issue where the overlay is not updated when the position changes.\n\tconst childrenProps = useMemoCompare(children?.props, (prev, next) => {\n\t\treturn prev && prev.lat === next.lat && prev.lng === next.lng\n\t})\n\n\tuseEffect(() => {\n\t\tif (!overlay.map) {\n\t\t\toverlay?.setMap(map)\n\t\t\treturn () => {\n\t\t\t\toverlay?.setMap(null)\n\t\t\t}\n\t\t}\n\t\t// overlay depends on map, so we don't need to add it to the dependency array\n\t\t// otherwise, it will re-render the overlay every time the map changes\n\t\t//? added childrenProps to the dependency array to re-render the overlay when the children props change.\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [map, childrenProps])\n\n\t// to move the container to the foreground and background\n\tuseEffect(() => {\n\t\tcontainer.style.zIndex = `${zIndex}`\n\t}, [zIndex, container])\n\n\treturn createPortal(children, container)\n}\n\nOverlayView.defaultProps = {\n\tzIndex: 0,\n}\n\nOverlayView.propTypes = {\n\t/**\n\t * The HTML container element for the overlay.\n\t * @ref [MapPanes](https://developers.google.com/maps/documentation/javascript/reference/overlay-view#MapPanes)\n\t * @default 'floatPane'\n\t * @type {google.maps.MapPanes}\n\t */\n\tpane: string,\n\t/**\n\t * The geographical location of the overlay.\n\t * @type {google.maps.LatLng | google.maps.LatLngLiteral}\n\t * @required\n\t * @ref [LatLng](https://developers.google.com/maps/documentation/javascript/reference/coordinates#LatLng)\n\t */\n\tposition: shape({\n\t\tlat: number.isRequired,\n\t\tlng: number.isRequired,\n\t}).isRequired,\n\t/**\n\t * The map on which to display the overlay.\n\t * @type {google.maps.Map}\n\t * @required\n\t * @ref [Map](https://developers.google.com/maps/documentation/javascript/reference/map#Map)\n\t */\n\tmap: object.isRequired,\n\t/**\n\t * The Google Maps API.\n\t * @type {object}\n\t * @required\n\t * @ref [Google Maps API](https://developers.google.com/maps/documentation/javascript/reference)\n\t */\n\tmaps: object.isRequired,\n\t/**\n\t * The z-index of the overlay.\n\t * @type {number}\n\t * @default 0\n\t */\n\tzIndex: number,\n\t/**\n\t * The children of the OverlayView.\n\t * @type {ReactNode}\n\t * @required\n\t * @ref [ReactNode](https://reactjs.org/docs/react-api.html#reactnode)\n\t */\n\tchildren: node.isRequired,\n}\n\nexport default OverlayView\n","import { node, object } from 'prop-types'\nimport React, { Children, isValidElement, useMemo } from 'react'\nimport OverlayView from './overlay-view'\n\nconst MapMarkers = ({ children, map, maps }) => {\n\tconst markers = useMemo(() => {\n\t\tif (!map || !maps) return []\n\n\t\treturn Children.map(children, (child) => {\n\t\t\tif (isValidElement(child)) {\n\t\t\t\tconst latLng = { lat: child.props.lat, lng: child.props.lng }\n\t\t\t\t// set the map prop on the child component\n\t\t\t\treturn (\n\t\t\t\t\t\n\t\t\t\t\t\t{child}\n\t\t\t\t\t\n\t\t\t\t)\n\t\t\t}\n\t\t})\n\t}, [children, map, maps])\n\n\treturn
{markers}
\n}\n\nMapMarkers.propTypes = {\n\t/**\n\t * The Markers on the Map.\n\t * @type {ReactNode}\n\t * @required\n\t */\n\tchildren: node.isRequired,\n\t/**\n\t * The Google Maps instance.\n\t * @type {object}\n\t * @required\n\t */\n\tmap: object,\n\t/**\n\t * The Google Maps API.\n\t * @type {object}\n\t * @required\n\t */\n\tmaps: object.isRequired,\n}\n\nexport default MapMarkers\n","import { arrayOf, func, node, number, object, oneOfType } from 'prop-types'\nimport React, { useCallback, useEffect, useRef, useState } from 'react'\nimport { isArraysEqualEps } from '../utils/utils'\nimport MapMarkers from './markers'\n\nconst EPS = 0.00001\n\nconst MapComponent = ({ children, style, defaultCenter, defaultZoom, onGoogleApiLoaded, onChange, options }) => {\n\tconst mapRef = useRef(null)\n\tconst prevBoundsRef = useRef(null)\n\tconst [map, setMap] = useState(null)\n\tconst [maps, setMaps] = useState(null)\n\tconst [googleApiCalled, setGoogleApiCalled] = useState(false)\n\n\tconst onIdle = useCallback(() => {\n\t\tconst zoom = map.getZoom()\n\t\tconst bounds = map.getBounds()\n\t\tconst centerLatLng = map.getCenter()\n\n\t\tconst ne = bounds.getNorthEast()\n\t\tconst sw = bounds.getSouthWest()\n\t\tconst boundsArray = [sw.lng(), sw.lat(), ne.lng(), ne.lat()]\n\n\t\tif (!isArraysEqualEps(boundsArray, prevBoundsRef.current, EPS)) {\n\t\t\tif (onChange) {\n\t\t\t\tonChange({\n\t\t\t\t\tzoom,\n\t\t\t\t\tcenter: [centerLatLng.lng(), centerLatLng.lat()],\n\t\t\t\t\tbounds,\n\t\t\t\t})\n\t\t\t}\n\t\t\tprevBoundsRef.current = boundsArray\n\t\t}\n\t}, [map, onChange])\n\n\tuseEffect(() => {\n\t\tif (mapRef.current && !map) {\n\t\t\tsetMap(\n\t\t\t\tnew window.google.maps.Map(mapRef.current, {\n\t\t\t\t\tcenter: defaultCenter,\n\t\t\t\t\tzoom: defaultZoom,\n\t\t\t\t\t...options,\n\t\t\t\t})\n\t\t\t)\n\t\t\tsetMaps(window.google.maps)\n\t\t}\n\t}, [defaultCenter, defaultZoom, map, mapRef, options])\n\n\tuseEffect(() => {\n\t\tif (map) {\n\t\t\tif (!googleApiCalled) {\n\t\t\t\tonGoogleApiLoaded({ map, maps, ref: mapRef.current })\n\t\t\t\tsetGoogleApiCalled(true)\n\t\t\t}\n\n\t\t\twindow.google.maps.event.clearListeners(map, 'idle')\n\t\t\t// Idle event is fired when the map becomes idle after panning or zooming.\n\t\t\twindow.google.maps.event.addListener(map, 'idle', onIdle)\n\t\t}\n\t}, [googleApiCalled, map, maps, onChange, onGoogleApiLoaded, onIdle])\n\n\tuseEffect(() => {\n\t\t// clear listeners on unmount\n\t\treturn () => {\n\t\t\tif (map) {\n\t\t\t\twindow.google.maps.event.clearListeners(map, 'idle')\n\t\t\t}\n\t\t}\n\t}, [map])\n\n\treturn (\n\t\t\n\t\t\t
\n\t\t\t{children && map && maps && (\n\t\t\t\t\n\t\t\t\t\t{children}\n\t\t\t\t\n\t\t\t)}\n\t\t\n\t)\n}\n\nMapComponent.defaultProps = {\n\tstyle: {\n\t\twidth: '100%',\n\t\theight: '100%',\n\t\tleft: 0,\n\t\ttop: 0,\n\t\tmargin: 0,\n\t\tpadding: 0,\n\t\tposition: 'absolute',\n\t},\n\tonGoogleApiLoaded: () => {},\n\tonChange: () => {},\n\toptions: {},\n}\n\nMapComponent.propTypes = {\n\t/**\n\t * The Markers on the Map.\n\t */\n\tchildren: oneOfType([arrayOf(node), node]),\n\tstyle: object,\n\tdefaultCenter: object.isRequired,\n\tdefaultZoom: number.isRequired,\n\tonGoogleApiLoaded: func,\n\tonChange: func,\n\toptions: object,\n}\n\nexport default MapComponent\n","import { arrayOf, node, number, object, oneOfType, string } from 'prop-types'\nimport React, { forwardRef } from 'react'\nimport { useGoogleMaps } from './hooks/useGoogleMaps'\nimport MapComponent from './map/map'\n\nconst GoogleMap = forwardRef(function GoogleMap(\n\t{ apiKey, libraries, children, loadingContent, idleContent, errorContent, mapMinHeight, containerProps, ...props },\n\tref\n) {\n\tconst status = useGoogleMaps({ apiKey, libraries })\n\treturn (\n\t\t\n\t\t\t{status === 'ready' ? (\n\t\t\t\t{children}\n\t\t\t) : status === 'loading' ? (\n\t\t\t\tloadingContent\n\t\t\t) : status === 'idle' ? (\n\t\t\t\tidleContent\n\t\t\t) : status === 'error' ? (\n\t\t\t\terrorContent\n\t\t\t) : null}\n\t\t
\n\t)\n})\n\nGoogleMap.defaultProps = {\n\t...MapComponent.defaultProps,\n\tloadingContent: 'Google Maps is loading',\n\tidleContent: 'Google Maps is on idle',\n\terrorContent: 'Google Maps is on error',\n\tmapMinHeight: 'unset',\n\tapiKey: '',\n\tlibraries: ['places', 'geometry'],\n}\n\nGoogleMap.propTypes = {\n\t...MapComponent.propTypes,\n\t/**\n\t * The Markers on the Map.\n\t */\n\tchildren: oneOfType([node, arrayOf(node)]),\n\t/**\n\t * Content to be displayed while the map is loading.\n\t */\n\tloadingContent: node,\n\t/**\n\t * Content to be displayed while the map is idle.\n\t */\n\tidleContent: node,\n\t/**\n\t * Content to be displayed when there is an error loading the map.\n\t */\n\terrorContent: node,\n\t/**\n\t * The minimum height of the map.\n\t */\n\tmapMinHeight: oneOfType([number, string]),\n\t/**\n\t * Props to be passed to the container div.\n\t */\n\tcontainerProps: object,\n}\n\nexport default GoogleMap\n"],"names":["useScript","script","src","attributes","callbacks","onLoadCallback","onErrorCallback","elementIdToAppend","status","setStatus","useState","useEffect","scriptToAdd","document","querySelector","createElement","async","setAttribute","Object","entries","length","map","key","value","getElementById","appendChild","body","setAttributeFromEvent","event","type","addEventListener","currentScriptStatus","getAttribute","setStateFromEvent","removeEventListener","useGoogleMaps","apiKey","libraries","join","id","isArraysEqualEps","arrayA","arrayB","eps","i","Math","abs","useMemoCompare","next","compare","previousRef","useRef","previous","current","isEqual","createOverlay","container","pane","position","maps","Overlay","OverlayView","constructor","onAdd","getPanes","classList","add","draw","projection","getProjection","point","fromLatLngToDivPixel","style","transform","x","y","onRemove","parentNode","removeChild","propTypes","element","isRequired","string","shape","lat","number","lng","object","zIndex","children","useMemo","div","overlay","childrenProps","props","prev","setMap","createPortal","defaultProps","node","MapMarkers","markers","Children","child","isValidElement","latLng","EPS","MapComponent","defaultCenter","defaultZoom","onGoogleApiLoaded","onChange","options","mapRef","prevBoundsRef","setMaps","googleApiCalled","setGoogleApiCalled","onIdle","useCallback","zoom","getZoom","bounds","getBounds","centerLatLng","getCenter","ne","getNorthEast","sw","getSouthWest","boundsArray","center","window","google","Map","ref","clearListeners","addListener","width","height","left","top","margin","padding","oneOfType","arrayOf","func","GoogleMap","forwardRef","loadingContent","idleContent","errorContent","mapMinHeight","containerProps","overflow","minHeight"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"index.modern.js","sources":["../src/hooks/useScript.js","../src/hooks/useGoogleMaps.js","../src/utils/utils.js","../src/hooks/useMemoCompare.js","../src/map/overlay.js","../src/map/overlay-view.js","../src/map/markers.js","../src/map/map.js","../src/google-map.js"],"sourcesContent":["/* eslint-disable no-unused-expressions */\nimport { useState, useEffect } from 'react'\n\n/**\n * @description Hook to load external script.\n * @param {Object} script - Script to load.\n * @param {string} script.src - Script source.\n * @param {Object} [script.attributes] - Attributes to add to the script tag.\n * @param {Object} [script.callbacks] - Callbacks executed on completion.\n * @param {Function} [script.callbacks.onLoadCallback] - Callback executed on completion in case of success.\n * @param {Function} [script.callbacks.onErrorCallback] - Callbacks executed on completion in case of error.\n * @param {string} [script.elementIdToAppend] - HTML element id to append the script to. Default is HTML HEAD.\n * @returns {\"idle\" | \"loading\" | \"ready\" | \"error\"} status\n *\n * @example\n * const status = useScript({\n * \t\tsrc: \"https://script-to-load.js\",\n * \t\tattributes: { id: \"scriptId\", class: \"script-class\" },\n * \t\tcallbacks: {\n * \t\t\tonLoadCallback: onLoadFunc,\n * \t\t\tonErrorCallback: onErrorFunc,\n * \t\t},\n * \t\telementIdToAppend: \"script-container\"\n * })\n */\n\nexport const useScript = (\n\tscript = {\n\t\tsrc: '',\n\t\tattributes: {},\n\t\tcallbacks: { onLoadCallback: null, onErrorCallback: null },\n\t\telementIdToAppend: null,\n\t}\n) => {\n\t// Keep track of script status (\"idle\", \"loading\", \"ready\", \"error\")\n\tconst [status, setStatus] = useState(script.src ? 'loading' : 'idle')\n\n\tuseEffect(\n\t\t() => {\n\t\t\t// Allow falsy src value if waiting on other data needed for\n\t\t\t// constructing the script URL passed to this hook.\n\t\t\tif (!script.src) {\n\t\t\t\tsetStatus('idle')\n\t\t\t\treturn\n\t\t\t}\n\t\t\t// Fetch existing script element by src\n\t\t\t// It may have been added by another instance of this hook\n\t\t\tlet scriptToAdd = document.querySelector(`script[src=\"${script.src}\"]`)\n\t\t\tif (!scriptToAdd) {\n\t\t\t\t// Create script\n\t\t\t\tscriptToAdd = document.createElement('script')\n\t\t\t\tscriptToAdd.src = script.src\n\t\t\t\tscriptToAdd.async = true\n\t\t\t\tscriptToAdd.setAttribute('data-status', 'loading')\n\t\t\t\t// Add other script attributes, if they exist\n\t\t\t\tscript.attributes && Object.entries(script.attributes).length > 0\n\t\t\t\t\t? Object.entries(script.attributes).map(([key, value]) => scriptToAdd.setAttribute(key, value))\n\t\t\t\t\t: null\n\t\t\t\t// Add script to document body\n\t\t\t\tif (script.elementIdToAppend && document.getElementById(script.elementIdToAppend)) {\n\t\t\t\t\tdocument.getElementById(script.elementIdToAppend).appendChild(scriptToAdd)\n\t\t\t\t} else {\n\t\t\t\t\tdocument.body.appendChild(scriptToAdd)\n\t\t\t\t}\n\t\t\t\t// Store status in attribute on script\n\t\t\t\t// This can be read by other instances of this hook\n\t\t\t\tconst setAttributeFromEvent = (event) => {\n\t\t\t\t\tscriptToAdd.setAttribute('data-status', event.type === 'load' ? 'ready' : 'error')\n\t\t\t\t}\n\t\t\t\tscriptToAdd.addEventListener('load', setAttributeFromEvent)\n\t\t\t\tscriptToAdd.addEventListener('error', setAttributeFromEvent)\n\t\t\t} else {\n\t\t\t\t// Grab existing script status from attribute and set to state.\n\t\t\t\tconst currentScriptStatus = scriptToAdd.getAttribute('data-status')\n\t\t\t\tswitch (currentScriptStatus) {\n\t\t\t\t\tcase 'load':\n\t\t\t\t\tcase 'ready':\n\t\t\t\t\t\tscript.callbacks?.onLoadCallback ? script.callbacks.onLoadCallback() : null\n\t\t\t\t\t\tbreak\n\t\t\t\t\tcase 'error':\n\t\t\t\t\t\tscript.callbacks?.onErrorCallback ? script.callbacks.onErrorCallback() : null\n\t\t\t\t\t\tbreak\n\t\t\t\t\tdefault:\n\t\t\t\t\t\t// loading: do nothing\n\t\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\tsetStatus(currentScriptStatus)\n\t\t\t}\n\t\t\t// Script event handler to update status in state\n\t\t\t// Note: Even if the script already exists we still need to add\n\t\t\t// event handlers to update the state for this hook instance.\n\t\t\tconst setStateFromEvent = (event) => {\n\t\t\t\tevent.type === 'load'\n\t\t\t\t\t? script.callbacks?.onLoadCallback\n\t\t\t\t\t\t? script.callbacks.onLoadCallback()\n\t\t\t\t\t\t: null\n\t\t\t\t\t: script.callbacks?.onErrorCallback\n\t\t\t\t\t? script.callbacks.onErrorCallback()\n\t\t\t\t\t: null\n\t\t\t\tsetStatus(event.type === 'load' ? 'ready' : 'error')\n\t\t\t}\n\t\t\t// Add event listeners\n\t\t\tscriptToAdd.addEventListener('load', setStateFromEvent)\n\t\t\tscriptToAdd.addEventListener('error', setStateFromEvent)\n\t\t\t// Remove event listeners on cleanup\n\t\t\treturn () => {\n\t\t\t\tif (scriptToAdd) {\n\t\t\t\t\tscriptToAdd.removeEventListener('load', setStateFromEvent)\n\t\t\t\t\tscriptToAdd.removeEventListener('error', setStateFromEvent)\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t// Re-run useEffect if script changes\n\t\t[script]\n\t)\n\treturn status\n}\n","import { useScript } from \"./useScript\";\n\n/**\n * @returns {\"idle\" | \"loading\" | \"ready\" | \"error\"} status\n */\nexport const useGoogleMaps = ({ apiKey, libraries = [] }) => {\n\tconst script = apiKey\n\t\t? {\n\t\t\t\tsrc: `https://maps.googleapis.com/maps/api/js?key=${apiKey}&libraries=${libraries?.join(\",\")}`,\n\t\t\t\tattributes: { id: \"googleMapsApi\" },\n\t\t }\n\t\t: {\n\t\t\t\tsrc: `https://maps.googleapis.com/maps/api/js?libraries=${libraries?.join(\",\")}`,\n\t\t\t\tattributes: { id: \"googleMapsApi\" },\n\t\t};\n\n\treturn useScript(script);\n};\n","export const isArraysEqualEps = (arrayA, arrayB, eps) => {\n\tif (arrayA && arrayB) {\n\t\tfor (let i = 0; i !== arrayA.length; ++i) {\n\t\t\tif (Math.abs(arrayA[i] - arrayB[i]) > eps) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t\treturn true\n\t}\n\treturn false\n}\n","import { useEffect, useRef } from 'react'\n\n/**\n * A hook that compares the previous and current values of a reference.\n * @param {any} value - the current value of the reference\n * @param {function} compare - a function that compares the previous and current values\n * @returns {any} the previous value of the reference\n * @ref https://usehooks.com/useMemoCompare/\n */\nconst useMemoCompare = (next, compare) => {\n\t// Ref for storing previous value\n\tconst previousRef = useRef()\n\tconst previous = previousRef.current\n\t// Pass previous and next value to compare function\n\t// to determine whether to consider them equal.\n\tconst isEqual = compare(previous, next)\n\t// If not equal update previousRef to next value.\n\t// We only update if not equal so that this hook continues to return\n\t// the same old value if compare keeps returning true.\n\tuseEffect(() => {\n\t\tif (!isEqual) {\n\t\t\tpreviousRef.current = next\n\t\t}\n\t})\n\t// Finally, if equal then return the previous value\n\treturn isEqual ? previous : next\n}\n\nexport default useMemoCompare\n","import { element, number, object, shape, string } from 'prop-types'\n\n/**\n * @param {HTMLElement} container\n * @param {google.maps.MapPanes} pane\n * @param {google.maps.LatLng | google.maps.LatLngLiteral} position\n * @param {google.maps} maps\n * @returns {void}\n */\nconst createOverlay = ({ container, pane, position, maps }) => {\n\tclass Overlay extends maps.OverlayView {\n\t\tconstructor(container, pane, position) {\n\t\t\tsuper()\n\t\t\tthis.container = container\n\t\t\tthis.pane = pane\n\t\t\tthis.position = position\n\t\t}\n\n\t\t/**\n\t\t * onAdd is called when the map's panes are ready and the overlay has been\n\t\t * added to the map.\n\t\t */\n\t\tonAdd = () => {\n\t\t\t// Add the element to the pane.\n\t\t\tconst pane = this.getPanes()[this.pane]\n\t\t\tpane?.classList.add('google-map-markers-overlay')\n\t\t\tpane?.appendChild(this.container)\n\t\t}\n\n\t\tdraw = () => {\n\t\t\tconst projection = this.getProjection()\n\t\t\t// Computes the pixel coordinates of the given geographical location in the DOM element that holds the draggable map.\n\t\t\tconst point = projection.fromLatLngToDivPixel(this.position)\n\t\t\tif (point === null) return\n\t\t\tthis.container.style.transform = `translate(${point.x}px, ${point.y}px)`\n\t\t}\n\n\t\t/**\n\t\t * The onRemove() method will be called automatically from the API if\n\t\t * we ever set the overlay's map property to 'null'.\n\t\t */\n\t\tonRemove = () => {\n\t\t\tif (this.container.parentNode !== null) {\n\t\t\t\tthis.container.parentNode.removeChild(this.container)\n\t\t\t}\n\t\t}\n\t}\n\n\treturn new Overlay(container, pane, position)\n}\n\ncreateOverlay.propTypes = {\n\t/**\n\t * The HTML container element for the overlay.\n\t */\n\tcontainer: element.isRequired,\n\t/**\n\t * The HTML container element for the overlay.\n\t * @ref [MapPanes](https://developers.google.com/maps/documentation/javascript/reference/overlay-view#MapPanes)\n\t * @default 'floatPane'\n\t * @type {google.maps.MapPanes}\n\t * @required\n\t */\n\tpane: string.isRequired,\n\t/**\n\t * The geographical location of the overlay.\n\t * @type {google.maps.LatLng | google.maps.LatLngLiteral}\n\t * @required\n\t * @ref [LatLng](https://developers.google.com/maps/documentation/javascript/reference/coordinates#LatLng)\n\t */\n\tposition: shape({\n\t\tlat: number.isRequired,\n\t\tlng: number.isRequired,\n\t}).isRequired,\n\t/**\n\t * The Google Maps API.\n\t */\n\tmaps: object.isRequired,\n}\n\nexport default createOverlay\n","import { node, number, object, shape, string } from 'prop-types'\nimport { useEffect, useMemo } from 'react'\nimport { createPortal } from 'react-dom'\nimport useMemoCompare from '../hooks/useMemoCompare'\nimport createOverlay from './overlay'\n\n/**\n * @param {HTMLElement} container\n * @param {google.maps.MapPanes} pane - The pane on which to display the overlay. This is the Pane name, not the Pane itself. Defaults to floatPane.\n * @param {google.maps.LatLng | google.maps.LatLngLiteral} position\n * @returns {void}\n * @ref [MapPanes](https://developers.google.com/maps/documentation/javascript/reference/overlay-view#MapPanes)\n */\nconst OverlayView = ({ position, pane = 'floatPane', map, maps, zIndex, children }) => {\n\tconst container = useMemo(() => {\n\t\t// eslint-disable-next-line no-undef\n\t\tconst div = document.createElement('div')\n\t\tdiv.style.position = 'absolute'\n\t\treturn div\n\t}, [])\n\n\tconst overlay = useMemo(() => {\n\t\treturn createOverlay({ container, pane, position, maps })\n\t}, [container, maps, pane, position])\n\n\t// Because React does not do deep comparisons, a custom hook is used.\n\t// This fixes the issue where the overlay is not updated when the position changes.\n\tconst childrenProps = useMemoCompare(children?.props, (prev, next) => {\n\t\treturn prev && prev.lat === next.lat && prev.lng === next.lng\n\t})\n\n\tuseEffect(() => {\n\t\tif (!overlay.map) {\n\t\t\toverlay?.setMap(map)\n\t\t\treturn () => {\n\t\t\t\toverlay?.setMap(null)\n\t\t\t}\n\t\t}\n\t\t// overlay depends on map, so we don't need to add it to the dependency array\n\t\t// otherwise, it will re-render the overlay every time the map changes\n\t\t//? added childrenProps to the dependency array to re-render the overlay when the children props change.\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [map, childrenProps])\n\n\t// to move the container to the foreground and background\n\tuseEffect(() => {\n\t\tcontainer.style.zIndex = `${zIndex}`\n\t}, [zIndex, container])\n\n\treturn createPortal(children, container)\n}\n\nOverlayView.defaultProps = {\n\tzIndex: 0,\n}\n\nOverlayView.propTypes = {\n\t/**\n\t * The HTML container element for the overlay.\n\t * @ref [MapPanes](https://developers.google.com/maps/documentation/javascript/reference/overlay-view#MapPanes)\n\t * @default 'floatPane'\n\t * @type {google.maps.MapPanes}\n\t */\n\tpane: string,\n\t/**\n\t * The geographical location of the overlay.\n\t * @type {google.maps.LatLng | google.maps.LatLngLiteral}\n\t * @required\n\t * @ref [LatLng](https://developers.google.com/maps/documentation/javascript/reference/coordinates#LatLng)\n\t */\n\tposition: shape({\n\t\tlat: number.isRequired,\n\t\tlng: number.isRequired,\n\t}).isRequired,\n\t/**\n\t * The map on which to display the overlay.\n\t * @type {google.maps.Map}\n\t * @required\n\t * @ref [Map](https://developers.google.com/maps/documentation/javascript/reference/map#Map)\n\t */\n\tmap: object.isRequired,\n\t/**\n\t * The Google Maps API.\n\t * @type {object}\n\t * @required\n\t * @ref [Google Maps API](https://developers.google.com/maps/documentation/javascript/reference)\n\t */\n\tmaps: object.isRequired,\n\t/**\n\t * The z-index of the overlay.\n\t * @type {number}\n\t * @default 0\n\t */\n\tzIndex: number,\n\t/**\n\t * The children of the OverlayView.\n\t * @type {ReactNode}\n\t * @required\n\t * @ref [ReactNode](https://reactjs.org/docs/react-api.html#reactnode)\n\t */\n\tchildren: node.isRequired,\n}\n\nexport default OverlayView\n","import { node, object } from 'prop-types'\nimport React, { Children, isValidElement, useMemo } from 'react'\nimport OverlayView from './overlay-view'\n\nconst MapMarkers = ({ children, map, maps }) => {\n\tconst markers = useMemo(() => {\n\t\tif (!map || !maps) return []\n\n\t\treturn Children.map(children, (child) => {\n\t\t\tif (isValidElement(child)) {\n\t\t\t\tconst latLng = { lat: child.props.lat, lng: child.props.lng }\n\t\t\t\t// set the map prop on the child component\n\t\t\t\treturn (\n\t\t\t\t\t\n\t\t\t\t\t\t{child}\n\t\t\t\t\t\n\t\t\t\t)\n\t\t\t}\n\t\t})\n\t}, [children, map, maps])\n\n\treturn
{markers}
\n}\n\nMapMarkers.propTypes = {\n\t/**\n\t * The Markers on the Map.\n\t * @type {ReactNode}\n\t * @required\n\t */\n\tchildren: node.isRequired,\n\t/**\n\t * The Google Maps instance.\n\t * @type {object}\n\t * @required\n\t */\n\tmap: object,\n\t/**\n\t * The Google Maps API.\n\t * @type {object}\n\t * @required\n\t */\n\tmaps: object.isRequired,\n}\n\nexport default MapMarkers\n","import { arrayOf, func, node, number, object, oneOfType } from 'prop-types'\nimport React, { useCallback, useEffect, useRef, useState } from 'react'\nimport { isArraysEqualEps } from '../utils/utils'\nimport MapMarkers from './markers'\n\nconst EPS = 0.00001\n\nconst MapComponent = ({ children, style, defaultCenter, defaultZoom, onGoogleApiLoaded, onChange, options }) => {\n\tconst mapRef = useRef(null)\n\tconst prevBoundsRef = useRef(null)\n\tconst [map, setMap] = useState(null)\n\tconst [maps, setMaps] = useState(null)\n\tconst [googleApiCalled, setGoogleApiCalled] = useState(false)\n\n\tconst onIdle = useCallback(() => {\n\t\tconst zoom = map.getZoom()\n\t\tconst bounds = map.getBounds()\n\t\tconst centerLatLng = map.getCenter()\n\n\t\tconst ne = bounds.getNorthEast()\n\t\tconst sw = bounds.getSouthWest()\n\t\tconst boundsArray = [sw.lng(), sw.lat(), ne.lng(), ne.lat()]\n\n\t\tif (!isArraysEqualEps(boundsArray, prevBoundsRef.current, EPS)) {\n\t\t\tif (onChange) {\n\t\t\t\tonChange({\n\t\t\t\t\tzoom,\n\t\t\t\t\tcenter: [centerLatLng.lng(), centerLatLng.lat()],\n\t\t\t\t\tbounds,\n\t\t\t\t})\n\t\t\t}\n\t\t\tprevBoundsRef.current = boundsArray\n\t\t}\n\t}, [map, onChange])\n\n\tuseEffect(() => {\n\t\tif (mapRef.current && !map) {\n\t\t\tsetMap(\n\t\t\t\tnew window.google.maps.Map(mapRef.current, {\n\t\t\t\t\tcenter: defaultCenter,\n\t\t\t\t\tzoom: defaultZoom,\n\t\t\t\t\t...options,\n\t\t\t\t})\n\t\t\t)\n\t\t\tsetMaps(window.google.maps)\n\t\t}\n\t}, [defaultCenter, defaultZoom, map, mapRef, options])\n\n\tuseEffect(() => {\n\t\tif (map) {\n\t\t\tif (!googleApiCalled) {\n\t\t\t\tonGoogleApiLoaded({ map, maps, ref: mapRef.current })\n\t\t\t\tsetGoogleApiCalled(true)\n\t\t\t}\n\n\t\t\twindow.google.maps.event.clearListeners(map, 'idle')\n\t\t\t// Idle event is fired when the map becomes idle after panning or zooming.\n\t\t\twindow.google.maps.event.addListener(map, 'idle', onIdle)\n\t\t}\n\t}, [googleApiCalled, map, maps, onChange, onGoogleApiLoaded, onIdle])\n\n\tuseEffect(() => {\n\t\t// clear listeners on unmount\n\t\treturn () => {\n\t\t\tif (map) {\n\t\t\t\twindow.google.maps.event.clearListeners(map, 'idle')\n\t\t\t}\n\t\t}\n\t}, [map])\n\n\treturn (\n\t\t\n\t\t\t
\n\t\t\t{children && map && maps && (\n\t\t\t\t\n\t\t\t\t\t{children}\n\t\t\t\t\n\t\t\t)}\n\t\t\n\t)\n}\n\nMapComponent.defaultProps = {\n\tstyle: {\n\t\twidth: '100%',\n\t\theight: '100%',\n\t\tleft: 0,\n\t\ttop: 0,\n\t\tmargin: 0,\n\t\tpadding: 0,\n\t\tposition: 'absolute',\n\t},\n\tonGoogleApiLoaded: () => {},\n\tonChange: () => {},\n\toptions: {},\n}\n\nMapComponent.propTypes = {\n\t/**\n\t * The Markers on the Map.\n\t */\n\tchildren: oneOfType([arrayOf(node), node]),\n\tstyle: object,\n\tdefaultCenter: object.isRequired,\n\tdefaultZoom: number.isRequired,\n\tonGoogleApiLoaded: func,\n\tonChange: func,\n\toptions: object,\n}\n\nexport default MapComponent\n","import { arrayOf, node, number, object, oneOfType, string } from 'prop-types'\nimport React, { forwardRef } from 'react'\nimport { useGoogleMaps } from './hooks/useGoogleMaps'\nimport MapComponent from './map/map'\n\nconst GoogleMap = forwardRef(function GoogleMap(\n\t{ apiKey, libraries, children, loadingContent, idleContent, errorContent, mapMinHeight, containerProps, ...props },\n\tref\n) {\n\tconst status = useGoogleMaps({ apiKey, libraries })\n\treturn (\n\t\t\n\t\t\t{status === 'ready' ? (\n\t\t\t\t{children}\n\t\t\t) : status === 'loading' ? (\n\t\t\t\tloadingContent\n\t\t\t) : status === 'idle' ? (\n\t\t\t\tidleContent\n\t\t\t) : status === 'error' ? (\n\t\t\t\terrorContent\n\t\t\t) : null}\n\t\t
\n\t)\n})\n\nGoogleMap.defaultProps = {\n\t...MapComponent.defaultProps,\n\tloadingContent: 'Google Maps is loading',\n\tidleContent: 'Google Maps is on idle',\n\terrorContent: 'Google Maps is on error',\n\tmapMinHeight: 'unset',\n\tapiKey: '',\n\tlibraries: ['places', 'geometry'],\n}\n\nGoogleMap.propTypes = {\n\t...MapComponent.propTypes,\n\t/**\n\t * The Markers on the Map.\n\t */\n\tchildren: oneOfType([node, arrayOf(node)]),\n\t/**\n\t * Content to be displayed while the map is loading.\n\t */\n\tloadingContent: node,\n\t/**\n\t * Content to be displayed while the map is idle.\n\t */\n\tidleContent: node,\n\t/**\n\t * Content to be displayed when there is an error loading the map.\n\t */\n\terrorContent: node,\n\t/**\n\t * The minimum height of the map.\n\t */\n\tmapMinHeight: oneOfType([number, string]),\n\t/**\n\t * Props to be passed to the container div.\n\t */\n\tcontainerProps: object,\n}\n\nexport default GoogleMap\n"],"names":["useScript","script","src","attributes","callbacks","onLoadCallback","onErrorCallback","elementIdToAppend","useState","status","setStatus","useEffect","scriptToAdd","document","querySelector","createElement","async","setAttribute","Object","entries","length","map","key","value","getElementById","appendChild","body","setAttributeFromEvent","event","type","addEventListener","currentScriptStatus","getAttribute","setStateFromEvent","removeEventListener","useGoogleMaps","apiKey","libraries","join","id","isArraysEqualEps","arrayA","arrayB","eps","i","Math","abs","useMemoCompare","next","compare","previousRef","useRef","previous","current","isEqual","createOverlay","container","pane","position","maps","Overlay","onAdd","getPanes","classList","add","draw","projection","getProjection","point","fromLatLngToDivPixel","style","transform","x","y","onRemove","parentNode","removeChild","OverlayView","propTypes","element","isRequired","string","shape","lat","number","lng","object","zIndex","children","useMemo","div","overlay","childrenProps","props","prev","setMap","createPortal","defaultProps","node","MapMarkers","markers","Children","child","isValidElement","latLng","EPS","MapComponent","defaultCenter","defaultZoom","onGoogleApiLoaded","onChange","options","mapRef","prevBoundsRef","setMaps","googleApiCalled","setGoogleApiCalled","onIdle","useCallback","zoom","getZoom","bounds","getBounds","centerLatLng","getCenter","ne","getNorthEast","sw","getSouthWest","boundsArray","center","window","google","Map","ref","clearListeners","addListener","width","height","left","top","margin","padding","oneOfType","arrayOf","func","GoogleMap","forwardRef","loadingContent","idleContent","errorContent","mapMinHeight","containerProps","overflow","minHeight"],"mappings":"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"} \ No newline at end of file diff --git a/docs/build/asset-manifest.json b/docs/build/asset-manifest.json index 8f62adc..4176066 100644 --- a/docs/build/asset-manifest.json +++ b/docs/build/asset-manifest.json @@ -1,13 +1,13 @@ { "files": { "main.css": "./static/css/main.d964f5a5.css", - "main.js": "./static/js/main.2feec936.js", + "main.js": "./static/js/main.8113c4b3.js", "index.html": "./index.html", "main.d964f5a5.css.map": "./static/css/main.d964f5a5.css.map", - "main.2feec936.js.map": "./static/js/main.2feec936.js.map" + "main.8113c4b3.js.map": "./static/js/main.8113c4b3.js.map" }, "entrypoints": [ "static/css/main.d964f5a5.css", - "static/js/main.2feec936.js" + "static/js/main.8113c4b3.js" ] } \ No newline at end of file diff --git a/docs/build/index.html b/docs/build/index.html index 644dfa9..a9787be 100644 --- a/docs/build/index.html +++ b/docs/build/index.html @@ -1 +1 @@ -google-maps-react-markers
\ No newline at end of file +google-maps-react-markers
\ No newline at end of file diff --git a/docs/build/static/js/main.2feec936.js b/docs/build/static/js/main.2feec936.js deleted file mode 100644 index 3d28846..0000000 --- a/docs/build/static/js/main.2feec936.js +++ /dev/null @@ -1,3 +0,0 @@ -/*! For license information please see main.2feec936.js.LICENSE.txt */ -!function(){var e={241:function(e,n,t){"use strict";var r=t(71);function l(){}function a(){}a.resetWarningCache=l,e.exports=function(){function e(e,n,t,l,a,o){if(o!==r){var i=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 i.name="Invariant Violation",i}}function n(){return e}e.isRequired=e;var t={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:n,element:e,elementType:e,instanceOf:n,node:e,objectOf:n,oneOf:n,oneOfType:n,shape:n,exact:n,checkPropTypes:a,resetWarningCache:l};return t.PropTypes=t,t}},630:function(e,n,t){e.exports=t(241)()},71:function(e){"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},839:function(e,n,t){"use strict";var r=t(167),l=t(704);function a(e){for(var n="https://reactjs.org/docs/error-decoder.html?invariant="+e,t=1;t