diff --git a/dist/index.html b/dist/index.html index 1b6215728..2fcc32406 100644 --- a/dist/index.html +++ b/dist/index.html @@ -138,6 +138,7 @@

Maps JSAPI Samples

  • react-ui-kit-search-nearby
  • react-ui-kit-search-text
  • rectangle-event
  • +
  • rgm-autocomplete
  • rgm-basic-map
  • routes-compute-routes
  • routes-get-alternatives
  • diff --git a/dist/samples/rgm-autocomplete/app/.eslintsrc.json b/dist/samples/rgm-autocomplete/app/.eslintsrc.json new file mode 100644 index 000000000..4c44dab04 --- /dev/null +++ b/dist/samples/rgm-autocomplete/app/.eslintsrc.json @@ -0,0 +1,13 @@ +{ + "extends": [ + "plugin:@typescript-eslint/recommended" + ], + "parser": "@typescript-eslint/parser", + "rules": { + "@typescript-eslint/ban-ts-comment": 0, + "@typescript-eslint/no-this-alias": 1, + "@typescript-eslint/no-empty-function": 1, + "@typescript-eslint/explicit-module-boundary-types": 1, + "@typescript-eslint/no-unused-vars": 1 + } +} diff --git a/dist/samples/rgm-autocomplete/app/README.md b/dist/samples/rgm-autocomplete/app/README.md new file mode 100644 index 000000000..14648200c --- /dev/null +++ b/dist/samples/rgm-autocomplete/app/README.md @@ -0,0 +1,70 @@ +# Google Maps JavaScript Sample + +## rgm-autocomplete + +React Google Maps Library - Place Autocomplete + +This sample demonstrates using the Place Autocomplete Element within a React application using the open source vis.gl/react-google-maps library. + +## Setup + +### Before starting run: + +`npm i` + +### Run an example on a local web server + +`cd samples/rgm-autocomplete` +`npm start` + +### Build an individual example + +`cd samples/rgm-autocomplete` +`npm run build` + +From 'samples': + +`npm run build --workspace=rgm-autocomplete/` + +### Build all of the examples. + +From 'samples': + +`npm run build-all` + +### Run lint to check for problems + +`cd samples/rgm-autocomplete` +`npx eslint index.ts` + +## Feedback + +For feedback related to this sample, please open a new issue on +[GitHub](https://github.com/googlemaps-samples/js-api-samples/issues). + +## Integrating Place Autocomplete & The New Place Class + +When integrating Google Maps Place Autocomplete within a React application, this sample implements several key best practices and addresses common issues developers encounter with the new Places API. + +### 1. Programmatic Instantiation + +Instead of rendering the `` Web Component directly in JSX, this sample programmatically instantiates it using `new placesLibrary.PlaceAutocompleteElement()` and appends it to a React `ref`. + +- **Issue:** React's synthetic event system doesn't always seamlessly handle custom Web Component events (like `gmp-select`). Instantiating the element programmatically and attaching standard DOM event listeners ensures events are captured reliably. + +### 2. Location Restriction & Cross-Context Objects + +When placing the autocomplete Web Component outside the main DOM tree of the map, it may lose automatic context of the map's viewport. To guarantee that search predictions are strictly biased or restricted to the map's current bounds, this sample manually syncs the map's bounds to the autocomplete's `locationRestriction` property. + +- **Issue:** Passing complex Google Maps objects (like `LatLngBounds`) directly across the React boundary can sometimes fail due to cross-context `instanceof` checks. Always use `.toJSON()` (e.g., `map.getBounds().toJSON()`) when assigning bounds to bypass these issues. This ensures users see search predictions relevant to their map view. + +### 3. Handling Selections: `toPlace()` and `fetchFields()` + +When a user selects an item from the autocomplete dropdown, the component fires a `gmp-select` event containing a `placePrediction`. + +- **Issue:** The prediction is _not_ a fully populated Place object. You must convert it using `placePrediction.toPlace()` and then explicitly request the data you need by calling `place.fetchFields({ fields: ['location', 'displayName', 'formattedAddress'] })`. +- If you attempt to access a property on the `Place` object that hasn't been fetched, it will be undefined or throw an error. This is a core design principle of the new Places API to ensure you only request (and pay for) the data you use. + +### 4. Event Cleanup + +Always remove standard DOM event listeners (e.g., `autocomplete.removeEventListener`) and Maps event listeners (`google.maps.event.removeListener`) in your `useEffect` cleanup function to prevent memory leaks when the React component unmounts. diff --git a/dist/samples/rgm-autocomplete/app/index.html b/dist/samples/rgm-autocomplete/app/index.html new file mode 100644 index 000000000..577474987 --- /dev/null +++ b/dist/samples/rgm-autocomplete/app/index.html @@ -0,0 +1,35 @@ + + + + + + + + React - react place autocomplete map + + + + +
    + + + diff --git a/dist/samples/rgm-autocomplete/app/package.json b/dist/samples/rgm-autocomplete/app/package.json new file mode 100644 index 000000000..e79e02971 --- /dev/null +++ b/dist/samples/rgm-autocomplete/app/package.json @@ -0,0 +1,13 @@ +{ + "name": "@js-api-samples/rgm-autocomplete", + "version": "1.0.0", + "type": "module", + "scripts": { + "build": "bash ../build-single.sh", + "test": "tsc && npm run build:vite --workspace=.", + "start": "tsc && vite build --config ../../vite.config.js --base './' && vite --config ../../vite.config.js", + "build:vite": "vite build --config ../../vite.config.js --base './'", + "preview": "vite preview --config ../../vite.config.js" + }, + "author": "Google LLC" +} diff --git a/dist/samples/rgm-autocomplete/app/style.css b/dist/samples/rgm-autocomplete/app/style.css new file mode 100644 index 000000000..cbf89fd6d --- /dev/null +++ b/dist/samples/rgm-autocomplete/app/style.css @@ -0,0 +1,54 @@ +/** + * @license + * Copyright 2024 Google LLC. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0 + */ +/* [START maps_rgm_autocomplete] */ +body { + margin: 0; + font-family: sans-serif; +} + +#app { + width: 100vw; + height: 100vh; +} + +.autocomplete-container input, +.autocomplete-control { + box-sizing: border-box; +} + +.autocomplete-control { + margin: 24px; + background: #fff; +} + +.autocomplete-container { + width: 300px; +} + +.autocomplete-container input { + width: 100%; + height: 40px; + padding: 0 12px; + font-size: 18px; +} + +.autocomplete-container .custom-list { + width: 100%; + list-style: none; + padding: 0; + margin: 0; +} + +.autocomplete-container .custom-list-item { + padding: 8px; +} + +.autocomplete-container .custom-list-item:hover { + background: lightgrey; + cursor: pointer; +} + +/* [END maps_rgm_autocomplete] */ diff --git a/dist/samples/rgm-autocomplete/app/tsconfig.json b/dist/samples/rgm-autocomplete/app/tsconfig.json new file mode 100644 index 000000000..b7054a4ed --- /dev/null +++ b/dist/samples/rgm-autocomplete/app/tsconfig.json @@ -0,0 +1,8 @@ +{ + "extends": "../../tsconfig.react-base.json", + "compilerOptions": { + "outDir": "./dist", + "rootDir": "./src" + }, + "include": ["./src/**/*.ts*"] +} diff --git a/dist/samples/rgm-autocomplete/dist/app.js b/dist/samples/rgm-autocomplete/dist/app.js new file mode 100644 index 000000000..fc6563b66 --- /dev/null +++ b/dist/samples/rgm-autocomplete/dist/app.js @@ -0,0 +1,101 @@ +/** + * @license + * Copyright 2026 Google LLC. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0 + */ +// [START maps_rgm_autocomplete] +import React, { useState, useEffect, useRef } from 'react'; +import { createRoot } from 'react-dom/client'; +import { APIProvider, Map, MapControl, ControlPosition, AdvancedMarker, InfoWindow, useMap, useMapsLibrary, useAdvancedMarkerRef, } from '@vis.gl/react-google-maps'; +const API_KEY = 'GOOGLE_MAPS_API_KEY'; +const PlaceAutocomplete = ({ onPlaceSelect, }) => { + const map = useMap(); + const placesLibrary = useMapsLibrary('places'); + const containerRef = useRef(null); + useEffect(() => { + if (!map || !placesLibrary || !containerRef.current) + return; + // 1. Programmatically instantiate the modern PlaceAutocompleteElement + const autocomplete = new placesLibrary.PlaceAutocompleteElement(); + containerRef.current.appendChild(autocomplete); + // 2. Manually sync the map's bounds to the autocomplete's locationRestriction. + // We use map.getBounds().toJSON() to pass a plain object literal, which safely + // bypasses any cross-context 'instanceof' wipeout issues in React. + const syncBounds = () => { + const bounds = map.getBounds(); + if (bounds) { + autocomplete.locationRestriction = bounds.toJSON(); + } + }; + // Sync initially and whenever the map moves. + syncBounds(); + const boundsListener = map.addListener('bounds_changed', syncBounds); + // 3. Listen for the gmp-select event. + const placeSelectListener = (e) => { + const event = e; + const place = event.placePrediction.toPlace(); + void place + .fetchFields({ + fields: [ + 'location', + 'viewport', + 'displayName', + 'formattedAddress', + ], + }) + .then(() => { + if (place.viewport) { + map.fitBounds(place.viewport); + } + else if (place.location) { + map.setCenter(place.location); + map.setZoom(13); + } + onPlaceSelect(place); + }) + .catch((err) => { + console.error(err); + }); + }; + autocomplete.addEventListener('gmp-select', placeSelectListener); + return () => { + google.maps.event.removeListener(boundsListener); + autocomplete.removeEventListener('gmp-select', placeSelectListener); + // Clean up the DOM element when unmounting. + if (containerRef.current) { + containerRef.current.innerHTML = ''; + } + }; + }, [map, placesLibrary, onPlaceSelect]); + return (React.createElement("div", { className: "place-autocomplete-card", style: { + backgroundColor: '#fff', + borderRadius: '5px', + boxShadow: 'rgba(0, 0, 0, 0.35) 0px 5px 15px', + margin: '10px', + padding: '5px', + fontFamily: 'Roboto, sans-serif', + fontSize: 'small', + width: '300px', + } }, + React.createElement("div", { ref: containerRef, style: { width: '100%' } }))); +}; +export default function App() { + const [selectedPlace, setSelectedPlace] = useState(null); + const [markerRef, marker] = useAdvancedMarkerRef(); + return (React.createElement(APIProvider, { apiKey: API_KEY }, + React.createElement(Map, { defaultCenter: { lat: 40.749933, lng: -73.98633 }, defaultZoom: 13, gestureHandling: 'greedy', mapId: "DEMO_MAP_ID", disableDefaultUI: true }, + React.createElement(MapControl, { position: ControlPosition.BLOCK_START_INLINE_START }, + React.createElement(PlaceAutocomplete, { onPlaceSelect: setSelectedPlace })), + selectedPlace?.location && (React.createElement(AdvancedMarker, { ref: markerRef, position: selectedPlace.location })), + selectedPlace?.location && marker && (React.createElement(InfoWindow, { anchor: marker }, + React.createElement("div", null, + React.createElement("span", { style: { fontWeight: 'bold' } }, selectedPlace.displayName ?? 'No name'), + React.createElement("br", null), + React.createElement("span", null, selectedPlace.formattedAddress ?? 'No address'))))))); +} +export function renderToDom(container) { + const root = createRoot(container); + root.render(React.createElement(React.StrictMode, null, + React.createElement(App, null))); +} +// [END maps_rgm_autocomplete] diff --git a/dist/samples/rgm-autocomplete/dist/assets/index-CoTzf8m8.js b/dist/samples/rgm-autocomplete/dist/assets/index-CoTzf8m8.js new file mode 100644 index 000000000..f84bf9107 --- /dev/null +++ b/dist/samples/rgm-autocomplete/dist/assets/index-CoTzf8m8.js @@ -0,0 +1,13 @@ +var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,t)=>()=>(t||(e((t={exports:{}}).exports,t),e=null),t.exports),s=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;li[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},c=(n,r,o)=>(o=n==null?{}:e(i(n)),s(r||!n||!n.__esModule||!a.call(n,`default`)?t(o,`default`,{value:n,enumerable:!0}):o,n));(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),t.credentials=e.crossOrigin===`use-credentials`?`include`:e.crossOrigin===`anonymous`?`omit`:`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();var l=o((e=>{var t=Symbol.for(`react.transitional.element`),n=Symbol.for(`react.portal`),r=Symbol.for(`react.fragment`),i=Symbol.for(`react.strict_mode`),a=Symbol.for(`react.profiler`),o=Symbol.for(`react.consumer`),s=Symbol.for(`react.context`),c=Symbol.for(`react.forward_ref`),l=Symbol.for(`react.suspense`),u=Symbol.for(`react.memo`),d=Symbol.for(`react.lazy`),f=Symbol.for(`react.activity`),p=Symbol.iterator;function m(e){return typeof e!=`object`||!e?null:(e=p&&e[p]||e[`@@iterator`],typeof e==`function`?e:null)}var h={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},g=Object.assign,_={};function v(e,t,n){this.props=e,this.context=t,this.refs=_,this.updater=n||h}v.prototype.isReactComponent={},v.prototype.setState=function(e,t){if(typeof e!=`object`&&typeof e!=`function`&&e!=null)throw Error(`takes an object of state variables to update or a function which returns an object of state variables.`);this.updater.enqueueSetState(this,e,t,`setState`)},v.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,`forceUpdate`)};function y(){}y.prototype=v.prototype;function b(e,t,n){this.props=e,this.context=t,this.refs=_,this.updater=n||h}var x=b.prototype=new y;x.constructor=b,g(x,v.prototype),x.isPureReactComponent=!0;var ee=Array.isArray;function S(){}var C={H:null,A:null,T:null,S:null},te=Object.prototype.hasOwnProperty;function ne(e,n,r){var i=r.ref;return{$$typeof:t,type:e,key:n,ref:i===void 0?null:i,props:r}}function re(e,t){return ne(e.type,t,e.props)}function ie(e){return typeof e==`object`&&!!e&&e.$$typeof===t}function ae(e){var t={"=":`=0`,":":`=2`};return`$`+e.replace(/[=:]/g,function(e){return t[e]})}var oe=/\/+/g;function se(e,t){return typeof e==`object`&&e&&e.key!=null?ae(``+e.key):t.toString(36)}function ce(e){switch(e.status){case`fulfilled`:return e.value;case`rejected`:throw e.reason;default:switch(typeof e.status==`string`?e.then(S,S):(e.status=`pending`,e.then(function(t){e.status===`pending`&&(e.status=`fulfilled`,e.value=t)},function(t){e.status===`pending`&&(e.status=`rejected`,e.reason=t)})),e.status){case`fulfilled`:return e.value;case`rejected`:throw e.reason}}throw e}function w(e,r,i,a,o){var s=typeof e;(s===`undefined`||s===`boolean`)&&(e=null);var c=!1;if(e===null)c=!0;else switch(s){case`bigint`:case`string`:case`number`:c=!0;break;case`object`:switch(e.$$typeof){case t:case n:c=!0;break;case d:return c=e._init,w(c(e._payload),r,i,a,o)}}if(c)return o=o(e),c=a===``?`.`+se(e,0):a,ee(o)?(i=``,c!=null&&(i=c.replace(oe,`$&/`)+`/`),w(o,r,i,``,function(e){return e})):o!=null&&(ie(o)&&(o=re(o,i+(o.key==null||e&&e.key===o.key?``:(``+o.key).replace(oe,`$&/`)+`/`)+c)),r.push(o)),1;c=0;var l=a===``?`.`:a+`:`;if(ee(e))for(var u=0;u{t.exports=l()})),d=o((e=>{function t(e,t){var n=e.length;e.push(t);a:for(;0>>1,a=e[r];if(0>>1;ri(c,n))li(u,c)?(e[r]=u,e[l]=n,r=l):(e[r]=c,e[s]=n,r=s);else if(li(u,n))e[r]=u,e[l]=n,r=l;else break a}}return t}function i(e,t){var n=e.sortIndex-t.sortIndex;return n===0?e.id-t.id:n}if(e.unstable_now=void 0,typeof performance==`object`&&typeof performance.now==`function`){var a=performance;e.unstable_now=function(){return a.now()}}else{var o=Date,s=o.now();e.unstable_now=function(){return o.now()-s}}var c=[],l=[],u=1,d=null,f=3,p=!1,m=!1,h=!1,g=!1,_=typeof setTimeout==`function`?setTimeout:null,v=typeof clearTimeout==`function`?clearTimeout:null,y=typeof setImmediate<`u`?setImmediate:null;function b(e){for(var i=n(l);i!==null;){if(i.callback===null)r(l);else if(i.startTime<=e)r(l),i.sortIndex=i.expirationTime,t(c,i);else break;i=n(l)}}function x(e){if(h=!1,b(e),!m){if(n(c)!==null)m=!0,ee||(ee=!0,ie());else{var t=n(l);t!==null&&se(x,t.startTime-e)}}}var ee=!1,S=-1,C=5,te=-1;function ne(){return g?!0:!(e.unstable_now()-tet&&ne());){var o=d.callback;if(typeof o==`function`){d.callback=null,f=d.priorityLevel;var s=o(d.expirationTime<=t);if(t=e.unstable_now(),typeof s==`function`){d.callback=s,b(t),i=!0;break b}d===n(c)&&r(c),b(t)}else r(c);d=n(c)}if(d!==null)i=!0;else{var u=n(l);u!==null&&se(x,u.startTime-t),i=!1}}break a}finally{d=null,f=a,p=!1}}}finally{i?ie():ee=!1}}}var ie;if(typeof y==`function`)ie=function(){y(re)};else if(typeof MessageChannel<`u`){var ae=new MessageChannel,oe=ae.port2;ae.port1.onmessage=re,ie=function(){oe.postMessage(null)}}else ie=function(){_(re,0)};function se(t,n){S=_(function(){t(e.unstable_now())},n)}e.unstable_IdlePriority=5,e.unstable_ImmediatePriority=1,e.unstable_LowPriority=4,e.unstable_NormalPriority=3,e.unstable_Profiling=null,e.unstable_UserBlockingPriority=2,e.unstable_cancelCallback=function(e){e.callback=null},e.unstable_forceFrameRate=function(e){0>e||125o?(r.sortIndex=a,t(l,r),n(c)===null&&r===n(l)&&(h?(v(S),S=-1):h=!0,se(x,a-o))):(r.sortIndex=s,t(c,r),m||p||(m=!0,ee||(ee=!0,ie()))),r},e.unstable_shouldYield=ne,e.unstable_wrapCallback=function(e){var t=f;return function(){var n=f;f=t;try{return e.apply(this,arguments)}finally{f=n}}}})),f=o(((e,t)=>{t.exports=d()})),p=o((e=>{var t=u();function n(e){var t=`https://react.dev/errors/`+e;if(1{function n(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>`u`||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!=`function`))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(n)}catch(e){console.error(e)}}n(),t.exports=p()})),h=o((e=>{var t=f(),n=u(),r=m();function i(e){var t=`https://react.dev/errors/`+e;if(1pe||(e.current=fe[pe],fe[pe]=null,pe--)}function D(e,t){pe++,fe[pe]=e.current,e.current=t}var ge=me(null),_e=me(null),ve=me(null),ye=me(null);function be(e,t){switch(D(ve,t),D(_e,e),D(ge,null),t.nodeType){case 9:case 11:e=(e=t.documentElement)&&(e=e.namespaceURI)?Vd(e):0;break;default:if(e=t.tagName,t=t.namespaceURI)t=Vd(t),e=Hd(t,e);else switch(e){case`svg`:e=1;break;case`math`:e=2;break;default:e=0}}he(ge),D(ge,e)}function xe(){he(ge),he(_e),he(ve)}function Se(e){e.memoizedState!==null&&D(ye,e);var t=ge.current,n=Hd(t,e.type);t!==n&&(D(_e,e),D(ge,n))}function Ce(e){_e.current===e&&(he(ge),he(_e)),ye.current===e&&(he(ye),Qf._currentValue=de)}var we,Te;function Ee(e){if(we===void 0)try{throw Error()}catch(e){var t=e.stack.trim().match(/\n( *(at )?)/);we=t&&t[1]||``,Te=-1)`:-1i||c[r]!==l[i]){var u=` +`+c[r].replace(` at new `,` at `);return e.displayName&&u.includes(``)&&(u=u.replace(``,e.displayName)),u}while(1<=r&&0<=i);break}}}finally{De=!1,Error.prepareStackTrace=n}return(n=e?e.displayName||e.name:``)?Ee(n):``}function ke(e,t){switch(e.tag){case 26:case 27:case 5:return Ee(e.type);case 16:return Ee(`Lazy`);case 13:return e.child!==t&&t!==null?Ee(`Suspense Fallback`):Ee(`Suspense`);case 19:return Ee(`SuspenseList`);case 0:case 15:return Oe(e.type,!1);case 11:return Oe(e.type.render,!1);case 1:return Oe(e.type,!0);case 31:return Ee(`Activity`);default:return``}}function Ae(e){try{var t=``,n=null;do t+=ke(e,n),n=e,e=e.return;while(e);return t}catch(e){return` +Error generating stack: `+e.message+` +`+e.stack}}var je=Object.prototype.hasOwnProperty,Me=t.unstable_scheduleCallback,Ne=t.unstable_cancelCallback,Pe=t.unstable_shouldYield,Fe=t.unstable_requestPaint,Ie=t.unstable_now,Le=t.unstable_getCurrentPriorityLevel,Re=t.unstable_ImmediatePriority,ze=t.unstable_UserBlockingPriority,Be=t.unstable_NormalPriority,Ve=t.unstable_LowPriority,He=t.unstable_IdlePriority,Ue=t.log,We=t.unstable_setDisableYieldValue,Ge=null,Ke=null;function qe(e){if(typeof Ue==`function`&&We(e),Ke&&typeof Ke.setStrictMode==`function`)try{Ke.setStrictMode(Ge,e)}catch{}}var Je=Math.clz32?Math.clz32:Ze,Ye=Math.log,Xe=Math.LN2;function Ze(e){return e>>>=0,e===0?32:31-(Ye(e)/Xe|0)|0}var Qe=256,$e=262144,et=4194304;function tt(e){var t=e&42;if(t!==0)return t;switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return e&261888;case 262144:case 524288:case 1048576:case 2097152:return e&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return e&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return e}}function nt(e,t,n){var r=e.pendingLanes;if(r===0)return 0;var i=0,a=e.suspendedLanes,o=e.pingedLanes;e=e.warmLanes;var s=r&134217727;return s===0?(s=r&~a,s===0?o===0?n||(n=r&~e,n!==0&&(i=tt(n))):i=tt(o):i=tt(s)):(r=s&~a,r===0?(o&=s,o===0?n||(n=s&~e,n!==0&&(i=tt(n))):i=tt(o)):i=tt(r)),i===0?0:t!==0&&t!==i&&(t&a)===0&&(a=i&-i,n=t&-t,a>=n||a===32&&n&4194048)?t:i}function rt(e,t){return(e.pendingLanes&~(e.suspendedLanes&~e.pingedLanes)&t)===0}function it(e,t){switch(e){case 1:case 2:case 4:case 8:case 64:return t+250;case 16:case 32:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return t+5e3;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function at(){var e=et;return et<<=1,!(et&62914560)&&(et=4194304),e}function O(e){for(var t=[],n=0;31>n;n++)t.push(e);return t}function k(e,t){e.pendingLanes|=t,t!==268435456&&(e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0)}function ot(e,t,n,r,i,a){var o=e.pendingLanes;e.pendingLanes=n,e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0,e.expiredLanes&=n,e.entangledLanes&=n,e.errorRecoveryDisabledLanes&=n,e.shellSuspendCounter=0;var s=e.entanglements,c=e.expirationTimes,l=e.hiddenUpdates;for(n=o&~n;0`u`||window.document===void 0||window.document.createElement===void 0),_n=!1;if(gn)try{var vn={};Object.defineProperty(vn,"passive",{get:function(){_n=!0}}),window.addEventListener(`test`,vn,vn),window.removeEventListener(`test`,vn,vn)}catch{_n=!1}var yn=null,bn=null,xn=null;function Sn(){if(xn)return xn;var e,t=bn,n=t.length,r,i=`value`in yn?yn.value:yn.textContent,a=i.length;for(e=0;e=er),rr=` `,ir=!1;function ar(e,t){switch(e){case`keyup`:return Qn.indexOf(t.keyCode)!==-1;case`keydown`:return t.keyCode!==229;case`keypress`:case`mousedown`:case`focusout`:return!0;default:return!1}}function or(e){return e=e.detail,typeof e==`object`&&`data`in e?e.data:null}var sr=!1;function cr(e,t){switch(e){case`compositionend`:return or(t);case`keypress`:return t.which===32?(ir=!0,rr):null;case`textInput`:return e=t.data,e===rr&&ir?null:e;default:return null}}function lr(e,t){if(sr)return e===`compositionend`||!$n&&ar(e,t)?(e=Sn(),xn=bn=yn=null,sr=!1,e):null;switch(e){case`paste`:return null;case`keypress`:if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1=t)return{node:n,offset:t-e};e=r}a:{for(;n;){if(n.nextSibling){n=n.nextSibling;break a}n=n.parentNode}n=void 0}n=jr(n)}}function Nr(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?Nr(e,t.parentNode):`contains`in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function Pr(e){e=e!=null&&e.ownerDocument!=null&&e.ownerDocument.defaultView!=null?e.ownerDocument.defaultView:window;for(var t=Ut(e.document);t instanceof e.HTMLIFrameElement;){try{var n=typeof t.contentWindow.location.href==`string`}catch{n=!1}if(n)e=t.contentWindow;else break;t=Ut(e.document)}return t}function Fr(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t===`input`&&(e.type===`text`||e.type===`search`||e.type===`tel`||e.type===`url`||e.type===`password`)||t===`textarea`||e.contentEditable===`true`)}var Ir=gn&&`documentMode`in document&&11>=document.documentMode,Lr=null,Rr=null,zr=null,Br=!1;function Vr(e,t,n){var r=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;Br||Lr==null||Lr!==Ut(r)||(r=Lr,`selectionStart`in r&&Fr(r)?r={start:r.selectionStart,end:r.selectionEnd}:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection(),r={anchorNode:r.anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset}),zr&&Ar(zr,r)||(zr=r,r=Ed(Rr,`onSelect`),0>=o,i-=o,Ni=1<<32-Je(t)+i|n<h?(g=d,d=null):g=d.sibling;var _=p(i,d,s[h],c);if(_===null){d===null&&(d=g);break}e&&d&&_.alternate===null&&t(i,d),a=o(_,a,h),u===null?l=_:u.sibling=_,u=_,d=g}if(h===s.length)return n(i,d),N&&Fi(i,h),l;if(d===null){for(;hg?(_=h,h=null):_=h.sibling;var y=p(a,h,v.value,l);if(y===null){h===null&&(h=_);break}e&&h&&y.alternate===null&&t(a,h),s=o(y,s,g),d===null?u=y:d.sibling=y,d=y,h=_}if(v.done)return n(a,h),N&&Fi(a,g),u;if(h===null){for(;!v.done;g++,v=c.next())v=f(a,v.value,l),v!==null&&(s=o(v,s,g),d===null?u=v:d.sibling=v,d=v);return N&&Fi(a,g),u}for(h=r(h);!v.done;g++,v=c.next())v=m(h,a,g,v.value,l),v!==null&&(e&&v.alternate!==null&&h.delete(v.key===null?g:v.key),s=o(v,s,g),d===null?u=v:d.sibling=v,d=v);return e&&h.forEach(function(e){return t(a,e)}),N&&Fi(a,g),u}function b(e,r,o,c){if(typeof o==`object`&&o&&o.type===y&&o.key===null&&(o=o.props.children),typeof o==`object`&&o){switch(o.$$typeof){case _:a:{for(var l=o.key;r!==null;){if(r.key===l){if(l=o.type,l===y){if(r.tag===7){n(e,r.sibling),c=a(r,o.props.children),c.return=e,e=c;break a}}else if(r.elementType===l||typeof l==`object`&&l&&l.$$typeof===ie&&Na(l)===r.type){n(e,r.sibling),c=a(r,o.props),Ba(c,o),c.return=e,e=c;break a}n(e,r);break}t(e,r),r=r.sibling}o.type===y?(c=bi(o.props.children,e.mode,c,o.key),c.return=e,e=c):(c=yi(o.type,o.key,o.props,null,e.mode,c),Ba(c,o),c.return=e,e=c)}return s(e);case v:a:{for(l=o.key;r!==null;){if(r.key===l){if(r.tag===4&&r.stateNode.containerInfo===o.containerInfo&&r.stateNode.implementation===o.implementation){n(e,r.sibling),c=a(r,o.children||[]),c.return=e,e=c;break a}n(e,r);break}t(e,r),r=r.sibling}c=Ci(o,e.mode,c),c.return=e,e=c}return s(e);case ie:return o=Na(o),b(e,r,o,c)}if(ue(o))return h(e,r,o,c);if(ce(o)){if(l=ce(o),typeof l!=`function`)throw Error(i(150));return o=l.call(o),g(e,r,o,c)}if(typeof o.then==`function`)return b(e,r,za(o),c);if(o.$$typeof===S)return b(e,r,ca(e,o),c);Va(e,o)}return typeof o==`string`&&o!==``||typeof o==`number`||typeof o==`bigint`?(o=``+o,r!==null&&r.tag===6?(n(e,r.sibling),c=a(r,o),c.return=e,e=c):(n(e,r),c=xi(o,e.mode,c),c.return=e,e=c),s(e)):n(e,r)}return function(e,t,n,r){try{Ra=0;var i=b(e,t,n,r);return La=null,i}catch(t){if(t===Da||t===ka)throw t;var a=hi(29,t,null,e.mode);return a.lanes=r,a.return=e,a}}}var Ua=Ha(!0),Wa=Ha(!1),Ga=!1;function Ka(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function qa(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,callbacks:null})}function Ja(e){return{lane:e,tag:0,payload:null,callback:null,next:null}}function Ya(e,t,n){var r=e.updateQueue;if(r===null)return null;if(r=r.shared,G&2){var i=r.pending;return i===null?t.next=t:(t.next=i.next,i.next=t),r.pending=t,t=fi(e),di(e,null,n),t}return ci(e,r,t,n),fi(e)}function Xa(e,t,n){if(t=t.updateQueue,t!==null&&(t=t.shared,n&4194048)){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,ct(e,n)}}function Za(e,t){var n=e.updateQueue,r=e.alternate;if(r!==null&&(r=r.updateQueue,n===r)){var i=null,a=null;if(n=n.firstBaseUpdate,n!==null){do{var o={lane:n.lane,tag:n.tag,payload:n.payload,callback:null,next:null};a===null?i=a=o:a=a.next=o,n=n.next}while(n!==null);a===null?i=a=t:a=a.next=t}else i=a=t;n={baseState:r.baseState,firstBaseUpdate:i,lastBaseUpdate:a,shared:r.shared,callbacks:r.callbacks},e.updateQueue=n;return}e=n.lastBaseUpdate,e===null?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}var Qa=!1;function $a(){if(Qa){var e=va;if(e!==null)throw e}}function eo(e,t,n,r){Qa=!1;var i=e.updateQueue;Ga=!1;var a=i.firstBaseUpdate,o=i.lastBaseUpdate,s=i.shared.pending;if(s!==null){i.shared.pending=null;var c=s,l=c.next;c.next=null,o===null?a=l:o.next=l,o=c;var u=e.alternate;u!==null&&(u=u.updateQueue,s=u.lastBaseUpdate,s!==o&&(s===null?u.firstBaseUpdate=l:s.next=l,u.lastBaseUpdate=c))}if(a!==null){var d=i.baseState;o=0,u=l=c=null,s=a;do{var f=s.lane&-536870913,p=f!==s.lane;if(p?(J&f)===f:(r&f)===f){f!==0&&f===_a&&(Qa=!0),u!==null&&(u=u.next={lane:0,tag:s.tag,payload:s.payload,callback:null,next:null});a:{var m=e,g=s;f=t;var _=n;switch(g.tag){case 1:if(m=g.payload,typeof m==`function`){d=m.call(_,d,f);break a}d=m;break a;case 3:m.flags=m.flags&-65537|128;case 0:if(m=g.payload,f=typeof m==`function`?m.call(_,d,f):m,f==null)break a;d=h({},d,f);break a;case 2:Ga=!0}}f=s.callback,f!==null&&(e.flags|=64,p&&(e.flags|=8192),p=i.callbacks,p===null?i.callbacks=[f]:p.push(f))}else p={lane:f,tag:s.tag,payload:s.payload,callback:s.callback,next:null},u===null?(l=u=p,c=d):u=u.next=p,o|=f;if(s=s.next,s===null){if(s=i.shared.pending,s===null)break;p=s,s=p.next,p.next=null,i.lastBaseUpdate=p,i.shared.pending=null}}while(1);u===null&&(c=d),i.baseState=c,i.firstBaseUpdate=l,i.lastBaseUpdate=u,a===null&&(i.shared.lanes=0),Gl|=o,e.lanes=o,e.memoizedState=d}}function to(e,t){if(typeof e!=`function`)throw Error(i(191,e));e.call(t)}function no(e,t){var n=e.callbacks;if(n!==null)for(e.callbacks=null,e=0;ea?a:8;var o=T.T,s={};T.T=s,Ls(e,!1,t,n);try{var c=i(),l=T.S;l!==null&&l(s,c),typeof c==`object`&&c&&typeof c.then==`function`?Is(e,t,xa(c,r),pu(e)):Is(e,t,r,pu(e))}catch(n){Is(e,t,{then:function(){},status:`rejected`,reason:n},pu())}finally{E.p=a,o!==null&&s.types!==null&&(o.types=s.types),T.T=o}}function Es(){}function Ds(e,t,n,r){if(e.tag!==5)throw Error(i(476));var a=Os(e).queue;Ts(e,a,t,de,n===null?Es:function(){return ks(e),n(r)})}function Os(e){var t=e.memoizedState;if(t!==null)return t;t={memoizedState:de,baseState:de,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Ro,lastRenderedState:de},next:null};var n={};return t.next={memoizedState:n,baseState:n,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Ro,lastRenderedState:n},next:null},e.memoizedState=t,e=e.alternate,e!==null&&(e.memoizedState=t),t}function ks(e){var t=Os(e);t.next===null&&(t=e.alternate.memoizedState),Is(e,t.next.queue,{},pu())}function As(){return sa(Qf)}function js(){return B().memoizedState}function Ms(){return B().memoizedState}function Ns(e){for(var t=e.return;t!==null;){switch(t.tag){case 24:case 3:var n=pu();e=Ja(n);var r=Ya(t,e,n);r!==null&&(hu(r,t,n),Xa(r,t,n)),t={cache:pa()},e.payload=t;return}t=t.return}}function Ps(e,t,n){var r=pu();n={lane:r,revertLane:0,gesture:null,action:n,hasEagerState:!1,eagerState:null,next:null},Rs(e)?zs(t,n):(n=li(e,t,n,r),n!==null&&(hu(n,e,r),Bs(n,t,r)))}function Fs(e,t,n){Is(e,t,n,pu())}function Is(e,t,n,r){var i={lane:r,revertLane:0,gesture:null,action:n,hasEagerState:!1,eagerState:null,next:null};if(Rs(e))zs(t,i);else{var a=e.alternate;if(e.lanes===0&&(a===null||a.lanes===0)&&(a=t.lastRenderedReducer,a!==null))try{var o=t.lastRenderedState,s=a(o,n);if(i.hasEagerState=!0,i.eagerState=s,kr(s,o))return ci(e,t,i,0),K===null&&si(),!1}catch{}if(n=li(e,t,i,r),n!==null)return hu(n,e,r),Bs(n,t,r),!0}return!1}function Ls(e,t,n,r){if(r={lane:2,revertLane:dd(),gesture:null,action:r,hasEagerState:!1,eagerState:null,next:null},Rs(e)){if(t)throw Error(i(479))}else t=li(e,n,r,2),t!==null&&hu(t,e,2)}function Rs(e){var t=e.alternate;return e===I||t!==null&&t===I}function zs(e,t){yo=vo=!0;var n=e.pending;n===null?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function Bs(e,t,n){if(n&4194048){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,ct(e,n)}}var Vs={readContext:sa,use:Io,useCallback:z,useContext:z,useEffect:z,useImperativeHandle:z,useLayoutEffect:z,useInsertionEffect:z,useMemo:z,useReducer:z,useRef:z,useState:z,useDebugValue:z,useDeferredValue:z,useTransition:z,useSyncExternalStore:z,useId:z,useHostTransitionStatus:z,useFormState:z,useActionState:z,useOptimistic:z,useMemoCache:z,useCacheRefresh:z};Vs.useEffectEvent=z;var Hs={readContext:sa,use:Io,useCallback:function(e,t){return No().memoizedState=[e,t===void 0?null:t],e},useContext:sa,useEffect:fs,useImperativeHandle:function(e,t,n){n=n==null?null:n.concat([e]),us(4194308,4,vs.bind(null,t,e),n)},useLayoutEffect:function(e,t){return us(4194308,4,e,t)},useInsertionEffect:function(e,t){us(4,2,e,t)},useMemo:function(e,t){var n=No();t=t===void 0?null:t;var r=e();if(bo){qe(!0);try{e()}finally{qe(!1)}}return n.memoizedState=[r,t],r},useReducer:function(e,t,n){var r=No();if(n!==void 0){var i=n(t);if(bo){qe(!0);try{n(t)}finally{qe(!1)}}}else i=t;return r.memoizedState=r.baseState=i,e={pending:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:i},r.queue=e,e=e.dispatch=Ps.bind(null,I,e),[r.memoizedState,e]},useRef:function(e){var t=No();return e={current:e},t.memoizedState=e},useState:function(e){e=Jo(e);var t=e.queue,n=Fs.bind(null,I,t);return t.dispatch=n,[e.memoizedState,n]},useDebugValue:bs,useDeferredValue:function(e,t){return Cs(No(),e,t)},useTransition:function(){var e=Jo(!1);return e=Ts.bind(null,I,e.queue,!0,!1),No().memoizedState=e,[!1,e]},useSyncExternalStore:function(e,t,n){var r=I,a=No();if(N){if(n===void 0)throw Error(i(407));n=n()}else{if(n=t(),K===null)throw Error(i(349));J&127||Uo(r,t,n)}a.memoizedState=n;var o={value:n,getSnapshot:t};return a.queue=o,fs(Go.bind(null,r,o,e),[e]),r.flags|=2048,cs(9,{destroy:void 0},Wo.bind(null,r,o,n,t),null),n},useId:function(){var e=No(),t=K.identifierPrefix;if(N){var n=Pi,r=Ni;n=(r&~(1<<32-Je(r)-1)).toString(32)+n,t=`_`+t+`R_`+n,n=xo++,0<\/script>`,o=o.removeChild(o.firstChild);break;case`select`:o=typeof r.is==`string`?s.createElement(`select`,{is:r.is}):s.createElement(`select`),r.multiple?o.multiple=!0:r.size&&(o.size=r.size);break;default:o=typeof r.is==`string`?s.createElement(a,{is:r.is}):s.createElement(a)}}o[A]=t,o[ht]=r;a:for(s=t.child;s!==null;){if(s.tag===5||s.tag===6)o.appendChild(s.stateNode);else if(s.tag!==4&&s.tag!==27&&s.child!==null){s.child.return=s,s=s.child;continue}if(s===t)break a;for(;s.sibling===null;){if(s.return===null||s.return===t)break a;s=s.return}s.sibling.return=s.return,s=s.sibling}t.stateNode=o;a:switch(Pd(o,a,r),a){case`button`:case`input`:case`select`:case`textarea`:r=!!r.autoFocus;break a;case`img`:r=!0;break a;default:r=!1}r&&Fc(t)}}return H(t),Ic(t,t.type,e===null?null:e.memoizedProps,t.pendingProps,n),null;case 6:if(e&&t.stateNode!=null)e.memoizedProps!==r&&Fc(t);else{if(typeof r!=`string`&&t.stateNode===null)throw Error(i(166));if(e=ve.current,qi(t)){if(e=t.stateNode,n=t.memoizedProps,r=null,a=Bi,a!==null)switch(a.tag){case 27:case 5:r=a.memoizedProps}e[A]=t,e=!!(e.nodeValue===n||r!==null&&!0===r.suppressHydrationWarning||Md(e.nodeValue,n)),e||Wi(t,!0)}else e=Bd(e).createTextNode(r),e[A]=t,t.stateNode=e}return H(t),null;case 31:if(n=t.memoizedState,e===null||e.memoizedState!==null){if(r=qi(t),n!==null){if(e===null){if(!r)throw Error(i(318));if(e=t.memoizedState,e=e===null?null:e.dehydrated,!e)throw Error(i(557));e[A]=t}else Ji(),!(t.flags&128)&&(t.memoizedState=null),t.flags|=4;H(t),e=!1}else n=Yi(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=n),e=!0;if(!e)return t.flags&256?(ho(t),t):(ho(t),null);if(t.flags&128)throw Error(i(558))}return H(t),null;case 13:if(r=t.memoizedState,e===null||e.memoizedState!==null&&e.memoizedState.dehydrated!==null){if(a=qi(t),r!==null&&r.dehydrated!==null){if(e===null){if(!a)throw Error(i(318));if(a=t.memoizedState,a=a===null?null:a.dehydrated,!a)throw Error(i(317));a[A]=t}else Ji(),!(t.flags&128)&&(t.memoizedState=null),t.flags|=4;H(t),a=!1}else a=Yi(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=a),a=!0;if(!a)return t.flags&256?(ho(t),t):(ho(t),null)}return ho(t),t.flags&128?(t.lanes=n,t):(n=r!==null,e=e!==null&&e.memoizedState!==null,n&&(r=t.child,a=null,r.alternate!==null&&r.alternate.memoizedState!==null&&r.alternate.memoizedState.cachePool!==null&&(a=r.alternate.memoizedState.cachePool.pool),o=null,r.memoizedState!==null&&r.memoizedState.cachePool!==null&&(o=r.memoizedState.cachePool.pool),o!==a&&(r.flags|=2048)),n!==e&&n&&(t.child.flags|=8192),Rc(t,t.updateQueue),H(t),null);case 4:return xe(),e===null&&Sd(t.stateNode.containerInfo),H(t),null;case 10:return ta(t.type),H(t),null;case 19:if(he(F),r=t.memoizedState,r===null)return H(t),null;if(a=!!(t.flags&128),o=r.rendering,o===null){if(a)zc(r,!1);else{if(X!==0||e!==null&&e.flags&128)for(e=t.child;e!==null;){if(o=go(e),o!==null){for(t.flags|=128,zc(r,!1),e=o.updateQueue,t.updateQueue=e,Rc(t,e),t.subtreeFlags=0,e=n,n=t.child;n!==null;)vi(n,e),n=n.sibling;return D(F,F.current&1|2),N&&Fi(t,r.treeForkCount),t.child}e=e.sibling}r.tail!==null&&Ie()>tu&&(t.flags|=128,a=!0,zc(r,!1),t.lanes=4194304)}}else{if(!a){if(e=go(o),e!==null){if(t.flags|=128,a=!0,e=e.updateQueue,t.updateQueue=e,Rc(t,e),zc(r,!0),r.tail===null&&r.tailMode===`hidden`&&!o.alternate&&!N)return H(t),null}else 2*Ie()-r.renderingStartTime>tu&&n!==536870912&&(t.flags|=128,a=!0,zc(r,!1),t.lanes=4194304)}r.isBackwards?(o.sibling=t.child,t.child=o):(e=r.last,e===null?t.child=o:e.sibling=o,r.last=o)}return r.tail===null?(H(t),null):(e=r.tail,r.rendering=e,r.tail=e.sibling,r.renderingStartTime=Ie(),e.sibling=null,n=F.current,D(F,a?n&1|2:n&1),N&&Fi(t,r.treeForkCount),e);case 22:case 23:return ho(t),so(),r=t.memoizedState!==null,e===null?r&&(t.flags|=8192):e.memoizedState!==null!==r&&(t.flags|=8192),r?n&536870912&&!(t.flags&128)&&(H(t),t.subtreeFlags&6&&(t.flags|=8192)):H(t),n=t.updateQueue,n!==null&&Rc(t,n.retryQueue),n=null,e!==null&&e.memoizedState!==null&&e.memoizedState.cachePool!==null&&(n=e.memoizedState.cachePool.pool),r=null,t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(r=t.memoizedState.cachePool.pool),r!==n&&(t.flags|=2048),e!==null&&he(Ca),null;case 24:return n=null,e!==null&&(n=e.memoizedState.cache),t.memoizedState.cache!==n&&(t.flags|=2048),ta(P),H(t),null;case 25:return null;case 30:return null}throw Error(i(156,t.tag))}function Vc(e,t){switch(Ri(t),t.tag){case 1:return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return ta(P),xe(),e=t.flags,e&65536&&!(e&128)?(t.flags=e&-65537|128,t):null;case 26:case 27:case 5:return Ce(t),null;case 31:if(t.memoizedState!==null){if(ho(t),t.alternate===null)throw Error(i(340));Ji()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 13:if(ho(t),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(i(340));Ji()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return he(F),null;case 4:return xe(),null;case 10:return ta(t.type),null;case 22:case 23:return ho(t),so(),e!==null&&he(Ca),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 24:return ta(P),null;case 25:return null;default:return null}}function Hc(e,t){switch(Ri(t),t.tag){case 3:ta(P),xe();break;case 26:case 27:case 5:Ce(t);break;case 4:xe();break;case 31:t.memoizedState!==null&&ho(t);break;case 13:ho(t);break;case 19:he(F);break;case 10:ta(t.type);break;case 22:case 23:ho(t),so(),e!==null&&he(Ca);break;case 24:ta(P)}}function Uc(e,t){try{var n=t.updateQueue,r=n===null?null:n.lastEffect;if(r!==null){var i=r.next;n=i;do{if((n.tag&e)===e){r=void 0;var a=n.create,o=n.inst;r=a(),o.destroy=r}n=n.next}while(n!==i)}}catch(e){Z(t,t.return,e)}}function Wc(e,t,n){try{var r=t.updateQueue,i=r===null?null:r.lastEffect;if(i!==null){var a=i.next;r=a;do{if((r.tag&e)===e){var o=r.inst,s=o.destroy;if(s!==void 0){o.destroy=void 0,i=t;var c=n,l=s;try{l()}catch(e){Z(i,c,e)}}}r=r.next}while(r!==a)}}catch(e){Z(t,t.return,e)}}function Gc(e){var t=e.updateQueue;if(t!==null){var n=e.stateNode;try{no(t,n)}catch(t){Z(e,e.return,t)}}}function Kc(e,t,n){n.props=Ys(e.type,e.memoizedProps),n.state=e.memoizedState;try{n.componentWillUnmount()}catch(n){Z(e,t,n)}}function qc(e,t){try{var n=e.ref;if(n!==null){switch(e.tag){case 26:case 27:case 5:var r=e.stateNode;break;case 30:r=e.stateNode;break;default:r=e.stateNode}typeof n==`function`?e.refCleanup=n(r):n.current=r}}catch(n){Z(e,t,n)}}function Jc(e,t){var n=e.ref,r=e.refCleanup;if(n!==null){if(typeof r==`function`)try{r()}catch(n){Z(e,t,n)}finally{e.refCleanup=null,e=e.alternate,e!=null&&(e.refCleanup=null)}else if(typeof n==`function`)try{n(null)}catch(n){Z(e,t,n)}else n.current=null}}function Yc(e){var t=e.type,n=e.memoizedProps,r=e.stateNode;try{a:switch(t){case`button`:case`input`:case`select`:case`textarea`:n.autoFocus&&r.focus();break a;case`img`:n.src?r.src=n.src:n.srcSet&&(r.srcset=n.srcSet)}}catch(t){Z(e,e.return,t)}}function Xc(e,t,n){try{var r=e.stateNode;Fd(r,e.type,n,t),r[ht]=t}catch(t){Z(e,e.return,t)}}function Zc(e){return e.tag===5||e.tag===3||e.tag===26||e.tag===27&&Zd(e.type)||e.tag===4}function Qc(e){a:for(;;){for(;e.sibling===null;){if(e.return===null||Zc(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.tag===27&&Zd(e.type)||e.flags&2||e.child===null||e.tag===4)continue a;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function $c(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?(n.nodeType===9?n.body:n.nodeName===`HTML`?n.ownerDocument.body:n).insertBefore(e,t):(t=n.nodeType===9?n.body:n.nodeName===`HTML`?n.ownerDocument.body:n,t.appendChild(e),n=n._reactRootContainer,n!=null||t.onclick!==null||(t.onclick=sn));else if(r!==4&&(r===27&&Zd(e.type)&&(n=e.stateNode,t=null),e=e.child,e!==null))for($c(e,t,n),e=e.sibling;e!==null;)$c(e,t,n),e=e.sibling}function el(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?n.insertBefore(e,t):n.appendChild(e);else if(r!==4&&(r===27&&Zd(e.type)&&(n=e.stateNode),e=e.child,e!==null))for(el(e,t,n),e=e.sibling;e!==null;)el(e,t,n),e=e.sibling}function tl(e){var t=e.stateNode,n=e.memoizedProps;try{for(var r=e.type,i=t.attributes;i.length;)t.removeAttributeNode(i[0]);Pd(t,r,n),t[A]=e,t[ht]=n}catch(t){Z(e,e.return,t)}}var nl=!1,U=!1,rl=!1,il=typeof WeakSet==`function`?WeakSet:Set,al=null;function ol(e,t){if(e=e.containerInfo,Rd=sp,e=Pr(e),Fr(e)){if(`selectionStart`in e)var n={start:e.selectionStart,end:e.selectionEnd};else a:{n=(n=e.ownerDocument)&&n.defaultView||window;var r=n.getSelection&&n.getSelection();if(r&&r.rangeCount!==0){n=r.anchorNode;var a=r.anchorOffset,o=r.focusNode;r=r.focusOffset;try{n.nodeType,o.nodeType}catch{n=null;break a}var s=0,c=-1,l=-1,u=0,d=0,f=e,p=null;b:for(;;){for(var m;f!==n||a!==0&&f.nodeType!==3||(c=s+a),f!==o||r!==0&&f.nodeType!==3||(l=s+r),f.nodeType===3&&(s+=f.nodeValue.length),(m=f.firstChild)!==null;)p=f,f=m;for(;;){if(f===e)break b;if(p===n&&++u===a&&(c=s),p===o&&++d===r&&(l=s),(m=f.nextSibling)!==null)break;f=p,p=f.parentNode}f=m}n=c===-1||l===-1?null:{start:c,end:l}}else n=null}n||={start:0,end:0}}else n=null;for(zd={focusedElem:e,selectionRange:n},sp=!1,al=t;al!==null;)if(t=al,e=t.child,t.subtreeFlags&1028&&e!==null)e.return=t,al=e;else for(;al!==null;){switch(t=al,o=t.alternate,e=t.flags,t.tag){case 0:if(e&4&&(e=t.updateQueue,e=e===null?null:e.events,e!==null))for(n=0;n title`))),Pd(o,r,n),o[A]=e,j(o),r=o;break a;case`link`:var s=Vf(`link`,`href`,a).get(r+(n.href||``));if(s){for(var c=0;cg&&(o=g,g=h,h=o);var _=Mr(s,h),v=Mr(s,g);if(_&&v&&(p.rangeCount!==1||p.anchorNode!==_.node||p.anchorOffset!==_.offset||p.focusNode!==v.node||p.focusOffset!==v.offset)){var y=d.createRange();y.setStart(_.node,_.offset),p.removeAllRanges(),h>g?(p.addRange(y),p.extend(v.node,v.offset)):(y.setEnd(v.node,v.offset),p.addRange(y))}}}}for(d=[],p=s;p=p.parentNode;)p.nodeType===1&&d.push({element:p,left:p.scrollLeft,top:p.scrollTop});for(typeof s.focus==`function`&&s.focus(),s=0;sn?32:n,T.T=null,n=lu,lu=null;var o=au,s=su;if(iu=0,ou=au=null,su=0,G&6)throw Error(i(331));var c=G;if(G|=4,Fl(o.current),Dl(o,o.current,s,n),G=c,id(0,!1),Ke&&typeof Ke.onPostCommitFiberRoot==`function`)try{Ke.onPostCommitFiberRoot(Ge,o)}catch{}return!0}finally{E.p=a,T.T=r,Vu(e,t)}}function Wu(e,t,n){t=Ti(n,t),t=tc(e.stateNode,t,2),e=Ya(e,t,2),e!==null&&(k(e,2),rd(e))}function Z(e,t,n){if(e.tag===3)Wu(e,e,n);else for(;t!==null;){if(t.tag===3){Wu(t,e,n);break}if(t.tag===1){var r=t.stateNode;if(typeof t.type.getDerivedStateFromError==`function`||typeof r.componentDidCatch==`function`&&(ru===null||!ru.has(r))){e=Ti(n,e),n=nc(2),r=Ya(t,n,2),r!==null&&(rc(n,r,t,e),k(r,2),rd(r));break}}t=t.return}}function Gu(e,t,n){var r=e.pingCache;if(r===null){r=e.pingCache=new zl;var i=new Set;r.set(t,i)}else i=r.get(t),i===void 0&&(i=new Set,r.set(t,i));i.has(n)||(Ul=!0,i.add(n),e=Ku.bind(null,e,t,n),t.then(e,e))}function Ku(e,t,n){var r=e.pingCache;r!==null&&r.delete(t),e.pingedLanes|=e.suspendedLanes&n,e.warmLanes&=~n,K===e&&(J&n)===n&&(X===4||X===3&&(J&62914560)===J&&300>Ie()-$l?!(G&2)&&Su(e,0):ql|=n,Yl===J&&(Yl=0)),rd(e)}function qu(e,t){t===0&&(t=at()),e=ui(e,t),e!==null&&(k(e,t),rd(e))}function Ju(e){var t=e.memoizedState,n=0;t!==null&&(n=t.retryLane),qu(e,n)}function Yu(e,t){var n=0;switch(e.tag){case 31:case 13:var r=e.stateNode,a=e.memoizedState;a!==null&&(n=a.retryLane);break;case 19:r=e.stateNode;break;case 22:r=e.stateNode._retryCache;break;default:throw Error(i(314))}r!==null&&r.delete(t),qu(e,n)}function Xu(e,t){return Me(e,t)}var Zu=null,Qu=null,$u=!1,ed=!1,td=!1,nd=0;function rd(e){e!==Qu&&e.next===null&&(Qu===null?Zu=Qu=e:Qu=Qu.next=e),ed=!0,$u||($u=!0,ud())}function id(e,t){if(!td&&ed){td=!0;do for(var n=!1,r=Zu;r!==null;){if(!t){if(e!==0){var i=r.pendingLanes;if(i===0)var a=0;else{var o=r.suspendedLanes,s=r.pingedLanes;a=(1<<31-Je(42|e)+1)-1,a&=i&~(o&~s),a=a&201326741?a&201326741|1:a?a|2:0}a!==0&&(n=!0,ld(r,a))}else a=J,a=nt(r,r===K?a:0,r.cancelPendingCommit!==null||r.timeoutHandle!==-1),!(a&3)||rt(r,a)||(n=!0,ld(r,a))}r=r.next}while(n);td=!1}}function ad(){od()}function od(){ed=$u=!1;var e=0;nd!==0&&Gd()&&(e=nd);for(var t=Ie(),n=null,r=Zu;r!==null;){var i=r.next,a=sd(r,t);a===0?(r.next=null,n===null?Zu=i:n.next=i,i===null&&(Qu=n)):(n=r,(e!==0||a&3)&&(ed=!0)),r=i}iu!==0&&iu!==5||id(e,!1),nd!==0&&(nd=0)}function sd(e,t){for(var n=e.suspendedLanes,r=e.pingedLanes,i=e.expirationTimes,a=e.pendingLanes&-62914561;0s)break;var u=c.transferSize,d=c.initiatorType;u&&Id(d)&&(c=c.responseEnd,o+=u*(c`u`?null:document;function xf(e,t,n){var r=bf;if(r&&typeof t==`string`&&t){var i=Gt(t);i=`link[rel="`+e+`"][href="`+i+`"]`,typeof n==`string`&&(i+=`[crossorigin="`+n+`"]`),hf.has(i)||(hf.add(i),e={rel:e,crossOrigin:n,href:t},r.querySelector(i)===null&&(t=r.createElement(`link`),Pd(t,`link`,e),j(t),r.head.appendChild(t)))}}function Sf(e){_f.D(e),xf(`dns-prefetch`,e,null)}function Cf(e,t){_f.C(e,t),xf(`preconnect`,e,t)}function wf(e,t,n){_f.L(e,t,n);var r=bf;if(r&&e&&t){var i=`link[rel="preload"][as="`+Gt(t)+`"]`;t===`image`&&n&&n.imageSrcSet?(i+=`[imagesrcset="`+Gt(n.imageSrcSet)+`"]`,typeof n.imageSizes==`string`&&(i+=`[imagesizes="`+Gt(n.imageSizes)+`"]`)):i+=`[href="`+Gt(e)+`"]`;var a=i;switch(t){case`style`:a=Af(e);break;case`script`:a=Pf(e)}mf.has(a)||(e=h({rel:`preload`,href:t===`image`&&n&&n.imageSrcSet?void 0:e,as:t},n),mf.set(a,e),r.querySelector(i)!==null||t===`style`&&r.querySelector(jf(a))||t===`script`&&r.querySelector(Ff(a))||(t=r.createElement(`link`),Pd(t,`link`,e),j(t),r.head.appendChild(t)))}}function Tf(e,t){_f.m(e,t);var n=bf;if(n&&e){var r=t&&typeof t.as==`string`?t.as:`script`,i=`link[rel="modulepreload"][as="`+Gt(r)+`"][href="`+Gt(e)+`"]`,a=i;switch(r){case`audioworklet`:case`paintworklet`:case`serviceworker`:case`sharedworker`:case`worker`:case`script`:a=Pf(e)}if(!mf.has(a)&&(e=h({rel:`modulepreload`,href:e},t),mf.set(a,e),n.querySelector(i)===null)){switch(r){case`audioworklet`:case`paintworklet`:case`serviceworker`:case`sharedworker`:case`worker`:case`script`:if(n.querySelector(Ff(a)))return}r=n.createElement(`link`),Pd(r,`link`,e),j(r),n.head.appendChild(r)}}}function Ef(e,t,n){_f.S(e,t,n);var r=bf;if(r&&e){var i=Et(r).hoistableStyles,a=Af(e);t||=`default`;var o=i.get(a);if(!o){var s={loading:0,preload:null};if(o=r.querySelector(jf(a)))s.loading=5;else{e=h({rel:`stylesheet`,href:e,"data-precedence":t},n),(n=mf.get(a))&&Rf(e,n);var c=o=r.createElement(`link`);j(c),Pd(c,`link`,e),c._p=new Promise(function(e,t){c.onload=e,c.onerror=t}),c.addEventListener(`load`,function(){s.loading|=1}),c.addEventListener(`error`,function(){s.loading|=2}),s.loading|=4,Lf(o,t,r)}o={type:`stylesheet`,instance:o,count:1,state:s},i.set(a,o)}}}function Df(e,t){_f.X(e,t);var n=bf;if(n&&e){var r=Et(n).hoistableScripts,i=Pf(e),a=r.get(i);a||(a=n.querySelector(Ff(i)),a||(e=h({src:e,async:!0},t),(t=mf.get(i))&&zf(e,t),a=n.createElement(`script`),j(a),Pd(a,`link`,e),n.head.appendChild(a)),a={type:`script`,instance:a,count:1,state:null},r.set(i,a))}}function Of(e,t){_f.M(e,t);var n=bf;if(n&&e){var r=Et(n).hoistableScripts,i=Pf(e),a=r.get(i);a||(a=n.querySelector(Ff(i)),a||(e=h({src:e,async:!0,type:`module`},t),(t=mf.get(i))&&zf(e,t),a=n.createElement(`script`),j(a),Pd(a,`link`,e),n.head.appendChild(a)),a={type:`script`,instance:a,count:1,state:null},r.set(i,a))}}function kf(e,t,n,r){var a=(a=ve.current)?gf(a):null;if(!a)throw Error(i(446));switch(e){case`meta`:case`title`:return null;case`style`:return typeof n.precedence==`string`&&typeof n.href==`string`?(t=Af(n.href),n=Et(a).hoistableStyles,r=n.get(t),r||(r={type:`style`,instance:null,count:0,state:null},n.set(t,r)),r):{type:`void`,instance:null,count:0,state:null};case`link`:if(n.rel===`stylesheet`&&typeof n.href==`string`&&typeof n.precedence==`string`){e=Af(n.href);var o=Et(a).hoistableStyles,s=o.get(e);if(s||(a=a.ownerDocument||a,s={type:`stylesheet`,instance:null,count:0,state:{loading:0,preload:null}},o.set(e,s),(o=a.querySelector(jf(e)))&&!o._p&&(s.instance=o,s.state.loading=5),mf.has(e)||(n={rel:`preload`,as:`style`,href:n.href,crossOrigin:n.crossOrigin,integrity:n.integrity,media:n.media,hrefLang:n.hrefLang,referrerPolicy:n.referrerPolicy},mf.set(e,n),o||Nf(a,e,n,s.state))),t&&r===null)throw Error(i(528,``));return s}if(t&&r!==null)throw Error(i(529,``));return null;case`script`:return t=n.async,n=n.src,typeof n==`string`&&t&&typeof t!=`function`&&typeof t!=`symbol`?(t=Pf(n),n=Et(a).hoistableScripts,r=n.get(t),r||(r={type:`script`,instance:null,count:0,state:null},n.set(t,r)),r):{type:`void`,instance:null,count:0,state:null};default:throw Error(i(444,e))}}function Af(e){return`href="`+Gt(e)+`"`}function jf(e){return`link[rel="stylesheet"][`+e+`]`}function Mf(e){return h({},e,{"data-precedence":e.precedence,precedence:null})}function Nf(e,t,n,r){e.querySelector(`link[rel="preload"][as="style"][`+t+`]`)?r.loading=1:(t=e.createElement(`link`),r.preload=t,t.addEventListener(`load`,function(){return r.loading|=1}),t.addEventListener(`error`,function(){return r.loading|=2}),Pd(t,`link`,n),j(t),e.head.appendChild(t))}function Pf(e){return`[src="`+Gt(e)+`"]`}function Ff(e){return`script[async]`+e}function If(e,t,n){if(t.count++,t.instance===null)switch(t.type){case`style`:var r=e.querySelector(`style[data-href~="`+Gt(n.href)+`"]`);if(r)return t.instance=r,j(r),r;var a=h({},n,{"data-href":n.href,"data-precedence":n.precedence,href:null,precedence:null});return r=(e.ownerDocument||e).createElement(`style`),j(r),Pd(r,`style`,a),Lf(r,n.precedence,e),t.instance=r;case`stylesheet`:a=Af(n.href);var o=e.querySelector(jf(a));if(o)return t.state.loading|=4,t.instance=o,j(o),o;r=Mf(n),(a=mf.get(a))&&Rf(r,a),o=(e.ownerDocument||e).createElement(`link`),j(o);var s=o;return s._p=new Promise(function(e,t){s.onload=e,s.onerror=t}),Pd(o,`link`,r),t.state.loading|=4,Lf(o,n.precedence,e),t.instance=o;case`script`:return o=Pf(n.src),(a=e.querySelector(Ff(o)))?(t.instance=a,j(a),a):(r=n,(a=mf.get(o))&&(r=h({},n),zf(r,a)),e=e.ownerDocument||e,a=e.createElement(`script`),j(a),Pd(a,`link`,r),e.head.appendChild(a),t.instance=a);case`void`:return null;default:throw Error(i(443,t.type))}else t.type===`stylesheet`&&!(t.state.loading&4)&&(r=t.instance,t.state.loading|=4,Lf(r,n.precedence,e));return t.instance}function Lf(e,t,n){for(var r=n.querySelectorAll(`link[rel="stylesheet"][data-precedence],style[data-precedence]`),i=r.length?r[r.length-1]:null,a=i,o=0;o title`):null)}function Uf(e,t,n){if(n===1||t.itemProp!=null)return!1;switch(e){case`meta`:case`title`:return!0;case`style`:if(typeof t.precedence!=`string`||typeof t.href!=`string`||t.href===``)break;return!0;case`link`:if(typeof t.rel!=`string`||typeof t.href!=`string`||t.href===``||t.onLoad||t.onError)break;switch(t.rel){case`stylesheet`:return e=t.disabled,typeof t.precedence==`string`&&e==null;default:return!0}case`script`:if(t.async&&typeof t.async!=`function`&&typeof t.async!=`symbol`&&!t.onLoad&&!t.onError&&t.src&&typeof t.src==`string`)return!0}return!1}function Wf(e){return!(e.type===`stylesheet`&&!(e.state.loading&3))}function Gf(e,t,n,r){if(n.type===`stylesheet`&&(typeof r.media!=`string`||!1!==matchMedia(r.media).matches)&&!(n.state.loading&4)){if(n.instance===null){var i=Af(r.href),a=t.querySelector(jf(i));if(a){t=a._p,typeof t==`object`&&t&&typeof t.then==`function`&&(e.count++,e=Jf.bind(e),t.then(e,e)),n.state.loading|=4,n.instance=a,j(a);return}a=t.ownerDocument||t,r=Mf(r),(i=mf.get(i))&&Rf(r,i),a=a.createElement(`link`),j(a);var o=a;o._p=new Promise(function(e,t){o.onload=e,o.onerror=t}),Pd(a,`link`,r),n.instance=a}e.stylesheets===null&&(e.stylesheets=new Map),e.stylesheets.set(n,t),(t=n.state.preload)&&!(n.state.loading&3)&&(e.count++,n=Jf.bind(e),t.addEventListener(`load`,n),t.addEventListener(`error`,n))}}var Kf=0;function qf(e,t){return e.stylesheets&&e.count===0&&Xf(e,e.stylesheets),0Kf?50:800)+t);return e.unsuspend=n,function(){e.unsuspend=null,clearTimeout(r),clearTimeout(i)}}:null}function Jf(){if(this.count--,this.count===0&&(this.imgCount===0||!this.waitingForImages)){if(this.stylesheets)Xf(this,this.stylesheets);else if(this.unsuspend){var e=this.unsuspend;this.unsuspend=null,e()}}}var Yf=null;function Xf(e,t){e.stylesheets=null,e.unsuspend!==null&&(e.count++,Yf=new Map,t.forEach(Zf,e),Yf=null,Jf.call(e))}function Zf(e,t){if(!(t.state.loading&4)){var n=Yf.get(e);if(n)var r=n.get(null);else{n=new Map,Yf.set(e,n);for(var i=e.querySelectorAll(`link[data-precedence],style[data-precedence]`),a=0;a{function n(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>`u`||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!=`function`))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(n)}catch(e){console.error(e)}}n(),t.exports=h()})),_=o(((e,t)=>{t.exports=function e(t,n){if(t===n)return!0;if(t&&n&&typeof t==`object`&&typeof n==`object`){if(t.constructor!==n.constructor)return!1;var r,i,a;if(Array.isArray(t)){if(r=t.length,r!=n.length)return!1;for(i=r;i--!==0;)if(!e(t[i],n[i]))return!1;return!0}if(t.constructor===RegExp)return t.source===n.source&&t.flags===n.flags;if(t.valueOf!==Object.prototype.valueOf)return t.valueOf()===n.valueOf();if(t.toString!==Object.prototype.toString)return t.toString()===n.toString();if(a=Object.keys(t),r=a.length,r!==Object.keys(n).length)return!1;for(i=r;i--!==0;)if(!Object.prototype.hasOwnProperty.call(n,a[i]))return!1;for(i=r;i--!==0;){var o=a[i];if(!e(t[o],n[o]))return!1}return!0}return t!==t&&n!==n}})),v=g(),y=c(u(),1),b=m(),x=c(_(),1),ee=`1.8.3`;function S(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&typeof Object.getOwnPropertySymbols==`function`)for(var i=0,r=Object.getOwnPropertySymbols(e);i{var t,n,r,i=`The Google Maps JavaScript API`,a=`google`,o=`importLibrary`,s=document,c=window,l=c[a]||(c[a]={}),u=l.maps||={},d=new Set,f=new URLSearchParams,p=()=>t||=new Promise(async(o,c)=>{for(r in await(n=s.createElement(`script`)),f.set(`libraries`,[...d]+``),e)f.set(r.replace(/[A-Z]/g,e=>`_`+e[0].toLowerCase()),e[r]);f.set(`callback`,a+`.maps.__ib__`),te(n,`https://maps.googleapis.com/maps/api/js?`+f),u.__ib__=o,n.onerror=()=>t=c(Error(i+` could not load.`)),n.nonce=s.querySelector(`script[nonce]`)?.nonce||``,s.head.append(n)});u[o]?console.warn(i+` only loads once. Ignoring:`,e):u[o]=(e,...t)=>d.add(e)&&p().then(()=>u[o](e,...t))},re=e=>`The setOptions() function should only be called once. The options passed to the additional call (${JSON.stringify(e)}) will be ignored.`,ie=e=>`The google.maps.importLibrary() function is already defined, and @googlemaps/js-api-loader will use the existing function instead of overwriting it. The options passed to setOptions (${JSON.stringify(e)}) will be ignored.`,ae=!1;function oe(e){if(ae){re(e);return}ce(e),ae=!0}async function se(e){if(!window?.google?.maps?.importLibrary)throw Error(`google.maps.importLibrary is not installed.`);return await google.maps.importLibrary(e)}function ce(e){let t=!!window.google?.maps?.importLibrary;t&&ie(e),t||ne(e)}var w={NOT_LOADED:`NOT_LOADED`,LOADING:`LOADING`,LOADED:`LOADED`,FAILED:`FAILED`,AUTH_FAILURE:`AUTH_FAILURE`},le=`GMP_visgl_rgmlibrary_v1_default`,ue=[`gmp_visgl_reactgooglemaps_v${ee}`],T=y.createContext(null),E=w.NOT_LOADED,de,fe=new Set;function pe(e){e!==E&&(E=e,fe.forEach(e=>e(E)))}function me(){let[e,t]=(0,y.useState)({});return{mapInstances:e,addMapInstance:(e,n=`default`)=>{t(t=>Object.assign(Object.assign({},t),{[n]:e}))},removeMapInstance:(e=`default`)=>{t(t=>{var n=e;return t[n],S(t,[typeof n==`symbol`?n:n+``])})},clearMapInstances:()=>{t({})}}}function he(){let[e,t]=(0,y.useState)({});return{map3dInstances:e,addMap3DInstance:(e,n=`default`)=>{t(t=>Object.assign(Object.assign({},t),{[n]:e}))},removeMap3DInstance:(e=`default`)=>{t(t=>{var n=e;return t[n],S(t,[typeof n==`symbol`?n:n+``])})},clearMap3DInstances:()=>{t({})}}}function D(e){let{onLoad:t,onError:n,apiKey:r,version:i,libraries:a=[],region:o,language:s,authReferrerPolicy:c,channel:l,solutionChannel:u,fetchAppCheckToken:d}=e,[f,p]=(0,y.useState)(E),[m,h]=(0,y.useReducer)((e,t)=>e[t.name]?e:Object.assign(Object.assign({},e),{[t.name]:t.value}),{}),g=(0,y.useMemo)(()=>{let e={apiKey:r,version:i,libraries:a.join(`,`),region:o,language:s,authReferrerPolicy:c,channel:l,solutionChannel:u};return JSON.stringify(e)},[r,i,a,o,s,c,l,u]),_=(0,y.useCallback)(e=>C(this,void 0,void 0,function*(){if(m[e])return m[e];let t=yield se(e);return h({name:e,value:t}),t}),[m]);return(0,y.useEffect)(()=>(fe.add(p),p(E),()=>{fe.delete(p)}),[]),(0,y.useEffect)(()=>{C(this,void 0,void 0,function*(){try{de&&de!==g&&console.warn(`The Google Maps JavaScript API has already been loaded with different parameters. The new parameters will be ignored. If you need to use different parameters, please refresh the page.`);let e=[`core`,`maps`,...a];if(window.google?.maps?.importLibrary){de||pe(w.LOADED),yield Promise.all(e.map(e=>_(e))),t&&t();return}if(E===w.LOADING||E===w.LOADED){E===w.LOADED&&t&&t();return}de=g,pe(w.LOADING);let n=Object.fromEntries(Object.entries({key:r,v:i,libraries:a,region:o,language:s,authReferrerPolicy:c}).filter(([,e])=>e!==void 0));l!==void 0&&l>=0&&l<=999&&(n.channel=String(l)),u===void 0?n.solutionChannel=le:u!==``&&(n.solutionChannel=u),oe(n),yield Promise.all(e.map(e=>_(e))),pe(w.LOADED),t&&t()}catch(e){pe(w.FAILED),n?n(e):console.error(`The Google Maps JavaScript API failed to load.`,e)}})},[g,t,n,_,a]),(0,y.useEffect)(()=>{if(f!==w.LOADED)return;let e=google.maps.Settings.getInstance();d?e.fetchAppCheckToken=d:e.fetchAppCheckToken&&=null},[f,d]),{status:f,loadedLibraries:m,importLibrary:_}}function ge(e){return(0,y.useMemo)(()=>e.disableUsageAttribution?null:ue,[e.disableUsageAttribution])}var _e=e=>{let{children:t}=e,n=S(e,[`children`]),{mapInstances:r,addMapInstance:i,removeMapInstance:a,clearMapInstances:o}=me(),{map3dInstances:s,addMap3DInstance:c,removeMap3DInstance:l,clearMap3DInstances:u}=he(),{status:d,loadedLibraries:f,importLibrary:p}=D(n),m=ge(n),h=(0,y.useMemo)(()=>({mapInstances:r,addMapInstance:i,removeMapInstance:a,clearMapInstances:o,map3dInstances:s,addMap3DInstance:c,removeMap3DInstance:l,clearMap3DInstances:u,status:d,loadedLibraries:f,importLibrary:p,internalUsageAttributionIds:m}),[r,i,a,o,s,c,l,u,d,f,p,m]);return y.createElement(T.Provider,{value:h},t)};function ve(e,t){for(let n of Ce){let r=t[n],i=be[n];(0,y.useEffect)(()=>{if(!e||!r)return;let t=google.maps.event.addListener(e,i,t=>{r(ye(i,e,t))});return()=>t.remove()},[e,i,r])}}function ye(e,t,n){let r={type:e,map:t,detail:{},stoppable:!1,stop:()=>{}};if(xe.includes(e)){let e=r,n=t.getCenter(),i=t.getZoom(),a=t.getHeading()||0,o=t.getTilt()||0,s=t.getBounds();return(!n||!s||!Number.isFinite(i))&&console.warn(`[createEvent] at least one of the values from the map returned undefined. This is not expected to happen. Please report an issue at https://github.com/visgl/react-google-maps/issues/new`),e.detail={center:n?.toJSON()||{lat:0,lng:0},zoom:i||0,heading:a,tilt:o,bounds:s?.toJSON()||{north:90,east:180,south:-90,west:-180}},e}if(Se.includes(e)){if(!n)throw Error(`[createEvent] mouse events must provide a srcEvent`);let e=r;return e.domEvent=n.domEvent,e.stoppable=!0,e.stop=()=>n.stop(),e.detail={latLng:n.latLng?.toJSON()||null,placeId:n.placeId},e}return r}var be={onBoundsChanged:`bounds_changed`,onCenterChanged:`center_changed`,onClick:`click`,onContextmenu:`contextmenu`,onDblclick:`dblclick`,onDrag:`drag`,onDragend:`dragend`,onDragstart:`dragstart`,onHeadingChanged:`heading_changed`,onIdle:`idle`,onIsFractionalZoomEnabledChanged:`isfractionalzoomenabled_changed`,onMapCapabilitiesChanged:`mapcapabilities_changed`,onMapTypeIdChanged:`maptypeid_changed`,onMousemove:`mousemove`,onMouseout:`mouseout`,onMouseover:`mouseover`,onProjectionChanged:`projection_changed`,onRenderingTypeChanged:`renderingtype_changed`,onTilesLoaded:`tilesloaded`,onTiltChanged:`tilt_changed`,onZoomChanged:`zoom_changed`,onCameraChanged:`bounds_changed`},xe=[`bounds_changed`,`center_changed`,`heading_changed`,`tilt_changed`,`zoom_changed`],Se=[`click`,`contextmenu`,`dblclick`,`mousemove`,`mouseout`,`mouseover`],Ce=Object.keys(be);function we(e,t){let n=(0,y.useRef)(e);return t(e,n.current)||(n.current=e),n.current}function Te(e,t,n){(0,y.useEffect)(e,[we(t,n)])}function Ee(e,t){Te(e,t,x.default)}var De=new Set(`backgroundColor.clickableIcons.controlSize.disableDefaultUI.disableDoubleClickZoom.draggable.draggableCursor.draggingCursor.fullscreenControl.fullscreenControlOptions.gestureHandling.headingInteractionEnabled.isFractionalZoomEnabled.keyboardShortcuts.mapTypeControl.mapTypeControlOptions.mapTypeId.maxZoom.minZoom.noClear.panControl.panControlOptions.restriction.rotateControl.rotateControlOptions.scaleControl.scaleControlOptions.scrollwheel.streetView.streetViewControl.streetViewControlOptions.styles.tiltInteractionEnabled.zoomControl.zoomControlOptions`.split(`.`));function Oe(e,t){let n={},r=Object.keys(t);for(let e of r)De.has(e)&&(n[e]=t[e]);Ee(()=>{e&&e.setOptions(n)},[n])}function ke(){return(0,y.useContext)(T)?.status||w.NOT_LOADED}function Ae(e,t){let{viewport:n,viewState:r}=t,i=!!n;return(0,y.useLayoutEffect)(()=>{if(!e||!r)return;let{latitude:t,longitude:n,bearing:i,pitch:a,zoom:o}=r;e.moveCamera({center:{lat:t,lng:n},heading:i,tilt:a,zoom:o+1})},[e,r]),i}function je(e){return!e||typeof e!=`object`||!(`lat`in e&&`lng`in e)?!1:Number.isFinite(e.lat)&&Number.isFinite(e.lng)}function Me(e,t){if(!e||!t)return!1;let n=Ne(e),r=Ne(t);return n.lat===r.lat&&n.lng===r.lng}function Ne(e){return je(e)?e:e.toJSON()}function Pe(e){if(`north`in e&&`south`in e&&`east`in e&&`west`in e)return e;let t=e.getNorthEast().toJSON(),n=e.getSouthWest().toJSON();return{north:t.lat,east:t.lng,south:n.lat,west:n.lng}}function Fe(e,t){if(!e||!t)return!1;let n=Pe(e),r=Pe(t);return n.north===r.north&&n.south===r.south&&n.east===r.east&&n.west===r.west}function Ie(e,t){if(!e||!t)return e===t;let n=`getArray`in t?t.getArray():t;if(e.length!==n.length)return!1;for(let t=0;te.getArray()):t;if(e.length!==n.length)return!1;for(let t=0;t{if(!e)return;let n={},r=!1;i!==null&&a!==null&&(t.current.center.lat!==i||t.current.center.lng!==a)&&(n.center={lat:i,lng:a},r=!0),o!==null&&t.current.zoom!==o&&(n.zoom=o,r=!0),s!==null&&t.current.heading!==s&&(n.heading=s,r=!0),c!==null&&t.current.tilt!==c&&(n.tilt=c,r=!0),r&&e.moveCamera(n)})}var ze=()=>y.createElement(`div`,{style:{position:`absolute`,top:0,left:0,bottom:0,right:0,zIndex:999,display:`flex`,flexFlow:`column nowrap`,textAlign:`center`,justifyContent:`center`,fontSize:`.8rem`,color:`rgba(0,0,0,0.6)`,background:`#dddddd`,padding:`1rem 1.5rem`}},y.createElement(`h2`,null,`Error: AuthFailure`),y.createElement(`p`,null,`A problem with your API key prevents the map from rendering correctly. Please make sure the value of the `,y.createElement(`code`,null,`APIProvider.apiKey`),` prop is correct. Check the error-message in the console for further details.`));function Be(){let[e,t]=(0,y.useState)(null);return[e,(0,y.useCallback)(e=>t(e),[t])]}function Ve(){return ke()===w.LOADED}function He(){let[,e]=(0,y.useReducer)(e=>e+1,0);return e}function Ue(e,t){let n=e.getCenter(),r=e.getZoom(),i=e.getHeading()||0,a=e.getTilt()||0,o=e.getBounds();(!n||!o||!Number.isFinite(r))&&console.warn(`[useTrackedCameraState] at least one of the values from the map returned undefined. This is not expected to happen. Please report an issue at https://github.com/visgl/react-google-maps/issues/new`),Object.assign(t.current,{center:n?.toJSON()||{lat:0,lng:0},zoom:r||0,heading:i,tilt:a})}function We(e){let t=He(),n=(0,y.useRef)({center:{lat:0,lng:0},heading:0,tilt:0,zoom:0});return(0,y.useEffect)(()=>{if(!e)return;let r=google.maps.event.addListener(e,`bounds_changed`,()=>{Ue(e,n),t()});return()=>r.remove()},[e,t]),n}var Ge=class{static has(e){return this.entries[e]&&this.entries[e].length>0}static pop(e){return this.entries[e]&&this.entries[e].pop()||null}static push(e,t){this.entries[e]||(this.entries[e]=[]),this.entries[e].push(t)}};Ge.entries={};function Ke(e,t){let n=Ve(),[r,i]=(0,y.useState)(null),[a,o]=Be(),s=We(r),{id:c,defaultBounds:l,defaultCenter:u,defaultZoom:d,defaultHeading:f,defaultTilt:p,reuseMaps:m,renderingType:h,colorScheme:g}=e,_=S(e,[`id`,`defaultBounds`,`defaultCenter`,`defaultZoom`,`defaultHeading`,`defaultTilt`,`reuseMaps`,`renderingType`,`colorScheme`]),v=e.zoom!==void 0||e.defaultZoom!==void 0,b=e.center!==void 0||e.defaultCenter!==void 0;!l&&(!v||!b)&&console.warn(" component is missing configuration. You have to provide zoom and center (via the `zoom`/`defaultZoom` and `center`/`defaultCenter` props) or specify the region to show using `defaultBounds`. See https://visgl.github.io/react-google-maps/docs/api-reference/components/map#required"),!_.center&&u&&(_.center=u),!_.zoom&&Number.isFinite(d)&&(_.zoom=d),!_.heading&&Number.isFinite(f)&&(_.heading=f),!_.tilt&&Number.isFinite(p)&&(_.tilt=p);let x=_.internalUsageAttributionIds;_.internalUsageAttributionIds=x==null?t.internalUsageAttributionIds:[...t.internalUsageAttributionIds||[],...x];for(let e of Object.keys(_))_[e]===void 0&&delete _[e];let ee=(0,y.useRef)(void 0);return(0,y.useEffect)(()=>{if(!a||!n)return;let{addMapInstance:r,removeMapInstance:o}=t,{mapId:u}=e,d=`${u||`default`}:${h||`default`}:${g||`LIGHT`}`,f,p;if(m&&Ge.has(d)?(p=Ge.pop(d),f=p.getDiv(),a.appendChild(f),p.setOptions(_),setTimeout(()=>p.moveCamera({}),0)):(f=document.createElement(`div`),f.style.height=`100%`,a.appendChild(f),p=new google.maps.Map(f,Object.assign(Object.assign(Object.assign({},_),h?{renderingType:h}:{}),g?{colorScheme:g}:{}))),i(p),r(p,c),l){let{padding:e}=l,t=S(l,[`padding`]);p.fitBounds(t,e)}else(!v||!b)&&p.fitBounds({east:180,west:-180,south:-90,north:90});if(ee.current){let{mapId:e,cameraState:t}=ee.current;e!==u&&p.moveCamera(t)}return()=>{ee.current={mapId:u,cameraState:s.current},f.remove(),m?Ge.push(d,p):google.maps.event.clearInstanceListeners(p),i(null),o(c)}},[a,n,c,e.mapId,e.renderingType,e.colorScheme]),[r,o,s]}var qe=y.createContext(null),Je=e=>{let{children:t,id:n,className:r,style:i}=e,a=(0,y.useContext)(T),o=ke();if(!a)throw Error(` can only be used inside an component.`);let[s,c,l]=Ke(e,a);Re(s,l,e),ve(s,e),Oe(s,e);let u=Ae(s,e),d=!!e.controlled;(0,y.useEffect)(()=>{if(s)return u&&s.setOptions({disableDefaultUI:!0}),(u||d)&&s.setOptions({gestureHandling:`none`,keyboardShortcuts:!1}),()=>{s.setOptions({gestureHandling:e.gestureHandling,keyboardShortcuts:e.keyboardShortcuts})}},[s,u,d,e.gestureHandling,e.keyboardShortcuts]);let f=e.center?Ne(e.center):null,p=null,m=null;f&&Number.isFinite(f.lat)&&Number.isFinite(f.lng)&&(p=f.lat,m=f.lng);let h=(0,y.useMemo)(()=>({center:{lat:p??0,lng:m??0},zoom:e.zoom??0,heading:e.heading??0,tilt:e.tilt??0}),[p,m,e.zoom,e.heading,e.tilt]);(0,y.useLayoutEffect)(()=>{if(!s||!d)return;s.moveCamera(h);let e=s.addListener(`bounds_changed`,()=>{s.moveCamera(h)});return()=>e.remove()},[s,d,h]);let g=(0,y.useMemo)(()=>Object.assign({width:`100%`,height:`100%`,position:`relative`,zIndex:u?-1:0},i),[i,u]),_=(0,y.useMemo)(()=>({map:s}),[s]);return o===w.AUTH_FAILURE?y.createElement(`div`,{style:Object.assign({position:`relative`},r?{}:g),className:r},y.createElement(ze,null)):y.createElement(`div`,Object.assign({ref:c,"data-testid":`map`,style:r?void 0:g,className:r},n?{id:n}:{}),s?y.createElement(qe.Provider,{value:_},t):null)};Je.deckGLViewProps=!0;var Ye=new Set;function Xe(...e){let t=JSON.stringify(e);Ye.has(t)||(Ye.add(t),console.error(...e))}var Ze=(e=null)=>{let t=(0,y.useContext)(T),{map:n}=(0,y.useContext)(qe)||{};if(t===null)return Xe("useMap(): failed to retrieve APIProviderContext. Make sure that the component exists and that the component you are calling `useMap()` from is a sibling of the ."),null;let{mapInstances:r}=t;return e===null?n||r.default||null:r[e]||null};function Qe(e){let t=Ve(),n=(0,y.useContext)(T);return(0,y.useEffect)(()=>{!t||!n||n.importLibrary(e)},[t,n,e]),n?.loadedLibraries[e]||null}var{useLayoutEffect:$e,useRef:et}=y,tt=y.useInsertionEffect??$e;function nt(){throw Error(`useEffectEvent: invalid call during rendering.`)}function rt(e){let t=et(nt);return tt(()=>{t.current=e},[e]),((...e)=>t.current(...e))}var it=rt,at=()=>{};function O(e,t,n){let r=it(n??at),i=!!n;(0,y.useEffect)(()=>{if(!e||!t||!i)return;let n=google.maps.event.addListener(e,t,r);return()=>n.remove()},[e,t,i])}function k(e,t,n){(0,y.useEffect)(()=>{e&&(e[t]=n)},[e,t,n])}var ot=()=>{};function st(e,t,n){let r=it(n??ot),i=!!n;(0,y.useEffect)(()=>{if(!e||!t||!i)return;let n=r;return e.addEventListener(t,n),()=>e.removeEventListener(t,n)},[e,t,i])}var ct=new class{constructor(){this.renderedStyles=new Set,this.styleElement=null}getStyleElement(){return this.styleElement||(this.styleElement=document.createElement(`style`),this.styleElement.setAttribute(`data-rgm-anchor-styles`,``),document.head.appendChild(this.styleElement)),this.styleElement}addAdvancedMarkerPointerEventsOverwrite(){if(this.renderedStyles.has(`marker-pointer-events`))return;let e=this.getStyleElement();e.textContent+=` + gmp-advanced-marker[data-origin='rgm'] { + pointer-events: none !important; + } + `,this.renderedStyles.add(`marker-pointer-events`)}cleanup(){this.styleElement&&(this.styleElement.remove(),this.styleElement=null,this.renderedStyles.clear())}};function lt(e,t){if(!(google==null?void 0:google.maps)?.version)return;let n=google.maps.version.split(`.`),r=parseInt(n[0],10),i=parseInt(n[1],10);return r>e||r===e&&i>=t}var ut=y.createContext(null),dt={TOP_LEFT:[`0%`,`0%`],TOP_CENTER:[`50%`,`0%`],TOP:[`50%`,`0%`],TOP_RIGHT:[`100%`,`0%`],LEFT_CENTER:[`0%`,`50%`],LEFT_TOP:[`0%`,`0%`],LEFT:[`0%`,`50%`],LEFT_BOTTOM:[`0%`,`100%`],RIGHT_TOP:[`100%`,`0%`],RIGHT:[`100%`,`50%`],RIGHT_CENTER:[`100%`,`50%`],RIGHT_BOTTOM:[`100%`,`100%`],BOTTOM_LEFT:[`0%`,`100%`],BOTTOM_CENTER:[`50%`,`100%`],BOTTOM:[`50%`,`100%`],BOTTOM_RIGHT:[`100%`,`100%`],CENTER:[`50%`,`50%`]},ft=(0,y.forwardRef)((e,t)=>{let{children:n,style:r,className:i,anchorPoint:a}=e,[o,s]=gt(e),c=(0,y.useMemo)(()=>o?{marker:o}:null,[o]);return(0,y.useImperativeHandle)(t,()=>o,[o]),s?y.createElement(ut.Provider,{value:c},(0,b.createPortal)(y.createElement(ht,{anchorPoint:a,styles:r,className:i},n),s)):null});ft.displayName=`AdvancedMarker`;function pt(){let[e,t]=(0,y.useState)(null);return[(0,y.useCallback)(e=>{t(e)},[]),e]}function mt(e){return e.content!==void 0}function A(e){return e.nodeType===Node.ELEMENT_NODE}var ht=({children:e,styles:t,className:n})=>y.createElement(`div`,{className:n,style:t},e);function gt(e){let[t,n]=(0,y.useState)(null),[r,i]=(0,y.useState)(null),a=Ze(),o=Qe(`marker`),{children:s,onClick:c,className:l,onMouseEnter:u,onMouseLeave:d,onDrag:f,onDragStart:p,onDragEnd:m,collisionBehavior:h,clickable:g,draggable:_,position:v,title:b,zIndex:x,anchorPoint:ee,anchorLeft:S,anchorTop:C}=e,te=y.Children.count(s);return(0,y.useEffect)(()=>{if(!a||!o)return;let e=new o.AdvancedMarkerElement;e.map=a,n(e);let t=null;return te>0&&(t=document.createElement(`div`),e.content=t,i(t)),()=>{e.map=null,t?.remove(),n(null),i(null)}},[a,o,te]),(0,y.useEffect)(()=>{!t?.content||!A(t.content)||te>0||(t.content.className=l??``)},[t,l,te]),_t(t,ee,S,C,te>0),k(t,`position`,v),k(t,`title`,b??``),k(t,`zIndex`,x),k(t,`collisionBehavior`,h),(0,y.useEffect)(()=>{t&&(_===void 0?f||p||m?t.gmpDraggable=!0:t.gmpDraggable=!1:t.gmpDraggable=_)},[t,_,f,m,p]),(0,y.useEffect)(()=>{if(!t)return;let e=g===void 0?!!c||!!u||!!d:g;t.gmpClickable=e,e&&t?.content&&A(t.content)&&(t.content.style.pointerEvents=`all`,c&&(t.content.style.cursor=`pointer`))},[t,g,c,u,d]),O(t,`click`,c),O(t,`drag`,f),O(t,`dragstart`,p),O(t,`dragend`,m),st(t?.element,`mouseenter`,u),st(t?.element,`mouseleave`,d),[t,r]}function _t(e,t,n,r,i){(0,y.useEffect)(()=>{if(!e||!i)return;let a=lt(3,62),o=e.content;if(!(!o||!A(o))){if(n!==void 0||r!==void 0){a||console.warn(`AdvancedMarker: The anchorLeft and anchorTop props are only supported in Google Maps API version 3.62 and above. The current version is ${google.maps.version}.`),e.anchorLeft=n,e.anchorTop=r,t!==void 0&&console.warn(`AdvancedMarker: the anchorPoint prop is ignored when anchorLeft and/or anchorTop are set.`);return}if(t!==void 0){let[n,r]=t??dt.BOTTOM,i=`calc(-1 * ${n})`,s=`calc(-1 * ${r})`;a?(e.anchorLeft=i,e.anchorTop=s,o.style.transform=``):(o.style.transform=`translate(50%, 100%) translate(${i}, ${s})`,e.dataset.origin=`rgm`,ct.addAdvancedMarkerPointerEventsOverwrite())}}},[e,t,n,r,i])}function vt(e){let{onClick:t,onDrag:n,onDragStart:r,onDragEnd:i,onMouseOver:a,onMouseOut:o,onRadiusChanged:s,onCenterChanged:c,center:l,defaultCenter:u,radius:d,defaultRadius:f}=e,p=S(e,[`onClick`,`onDrag`,`onDragStart`,`onDragEnd`,`onMouseOver`,`onMouseOut`,`onRadiusChanged`,`onCenterChanged`,`center`,`defaultCenter`,`radius`,`defaultRadius`]),[m,h]=(0,y.useState)(null),g=Ze(),_=we(Object.assign(Object.assign({},p),{clickable:p.clickable??!!t,draggable:p.draggable??!!(n||r||i||c),editable:p.editable??!!s}),x.default);return(0,y.useEffect)(()=>{if(!g){g===void 0&&console.error(` has to be inside a Map component.`);return}let e=new google.maps.Circle(Object.assign(Object.assign({},_),{center:l??u,radius:d??f}));return e.setMap(g),h(e),()=>{e.setMap(null),h(null)}},[g]),O(m,`click`,t),O(m,`drag`,n),O(m,`dragstart`,r),O(m,`dragend`,i),O(m,`mouseover`,a),O(m,`mouseout`,o),O(m,`radius_changed`,s?()=>{let e=m?.getRadius();e!==void 0&&s(e)}:null),O(m,`center_changed`,c?()=>{c(m?.getCenter())}:null),(0,y.useEffect)(()=>{m&&m.setOptions(_)},[m,_]),(0,y.useEffect)(()=>{!m||!l||Me(l,m.getCenter())||m.setCenter(l)},[m,l]),(0,y.useEffect)(()=>{!m||d===void 0||d!==m.getRadius()&&m.setRadius(d)},[m,d]),m}var yt=(0,y.forwardRef)((e,t)=>{let n=vt(e);return(0,y.useImperativeHandle)(t,()=>n,[n]),y.createElement(y.Fragment,null)});yt.displayName=`Circle`;function bt(e,t,n){if(t!=null&&typeof t!=`object`)throw Error("The `style` prop expects a mapping from style properties to values, not a string. For example, style={{marginRight: spacing + 'em'}} when using JSX.");let r=e.style;if(n==null){if(t==null)return;for(let e in t)t.hasOwnProperty(e)&&xt(r,e,t[e]);return}for(let e in n)n.hasOwnProperty(e)&&(t==null||!t.hasOwnProperty(e))&&(e.indexOf(`--`)===0?r.setProperty(e,``):e===`float`?r.cssFloat=``:r[e]=``);if(t!=null)for(let e in t){let i=t[e];t.hasOwnProperty(e)&&n[e]!==i&&xt(r,e,i)}}function xt(e,t,n){let r=t.indexOf(`--`)===0;n==null||typeof n==`boolean`||n===``?r?e.setProperty(t,``):t===`float`?e.cssFloat=``:e[t]=``:r?e.setProperty(t,n):typeof n==`number`&&n!==0&&!Ct(t)?e[t]=n+`px`:t===`float`?e.cssFloat=n:e[t]=(``+n).trim()}var St=new Set(`animationIterationCount.aspectRatio.borderImageOutset.borderImageSlice.borderImageWidth.boxFlex.boxFlexGroup.boxOrdinalGroup.columnCount.columns.flex.flexGrow.flexPositive.flexShrink.flexNegative.flexOrder.gridArea.gridRow.gridRowEnd.gridRowSpan.gridRowStart.gridColumn.gridColumnEnd.gridColumnSpan.gridColumnStart.fontWeight.lineClamp.lineHeight.opacity.order.orphans.scale.tabSize.widows.zIndex.zoom.fillOpacity.floodOpacity.stopOpacity.strokeDasharray.strokeDashoffset.strokeMiterlimit.strokeOpacity.strokeWidth`.split(`.`));function Ct(e){return St.has(e)}var wt=e=>{let{children:t,headerContent:n,style:r,className:i,pixelOffset:a,anchor:o,shouldFocus:s,onClose:c,onCloseClick:l}=e,u=S(e,[`children`,`headerContent`,`style`,`className`,`pixelOffset`,`anchor`,`shouldFocus`,`onClose`,`onCloseClick`]),d=Qe(`maps`),[f,p]=(0,y.useState)(null),m=(0,y.useRef)(null),h=(0,y.useRef)(null),g=we(u,x.default);(0,y.useEffect)(()=>{if(!d)return;m.current=document.createElement(`div`),h.current=document.createElement(`div`);let e=Object.assign({},g);a&&(e.pixelOffset=new google.maps.Size(a[0],a[1])),n&&(e.headerContent=typeof n==`string`?n:h.current);let t=new google.maps.InfoWindow(e);return t.setContent(m.current),p(t),()=>{var e,n;t.setContent(null),(e=m.current)==null||e.remove(),(n=h.current)==null||n.remove(),m.current=null,h.current=null,p(null)}},[d]);let _=(0,y.useRef)(null);(0,y.useLayoutEffect)(()=>{!f||!m.current||(bt(m.current,r||null,_.current),_.current=r||null,i!==m.current.className&&(m.current.className=i||``))},[f,i,r]),(0,y.useEffect)(()=>{if(!f)return;let e=Object.assign({},g);e.pixelOffset=a?new google.maps.Size(a[0],a[1]):null,e.headerContent=n?typeof n==`string`?n:h.current:null,f.setOptions(e)},[g,a,n]),O(f,`close`,c),O(f,`closeclick`,l);let v=Ze();return(0,y.useEffect)(()=>{if(!v||!f||o===null)return;let e=!!o,t={map:v};if(o&&(t.anchor=o,mt(o)&&o.content instanceof Element)){let e=o?.getBoundingClientRect();if(e&&o.dataset.origin===`rgm`){let t=(o.content.firstElementChild?.firstElementChild)?.getBoundingClientRect(),n=t.x-e.x+(t.width-e.width)/2,r=t.y-e.y,i=Object.assign({},g);i.pixelOffset=new google.maps.Size(a?a[0]+n:n,a?a[1]+r:r),f.setOptions(i)}}return s!==void 0&&(t.shouldFocus=s),f.open(t),()=>{e&&f.set(`anchor`,null),f.close()}},[f,o,v,s,g,a]),y.createElement(y.Fragment,null,m.current&&(0,b.createPortal)(t,m.current),h.current!==null&&(0,b.createPortal)(n,h.current))};function Tt(e){let t=e.getPaths(),n=[];for(let e=0;e{if(!h){h===void 0&&console.error(` has to be inside a Map component.`);return}let e;if(c){e=c;let t=u??d;t&&Array.isArray(t)&&e.setPaths(t),e.setOptions(v)}else{let t=u??d,n=Object.assign({},v);t&&Array.isArray(t)&&(n.paths=t),e=new google.maps.Polygon(n)}return e.setMap(h),m(e),()=>{e.setMap(null),m(null)}},[h,c]),O(p,`click`,t),O(p,`drag`,n),O(p,`dragstart`,r),O(p,`mouseover`,a),O(p,`mouseout`,o),O(p,`dragend`,e=>{i?.(e),s&&p&&!_.current&&s(Tt(p))}),(0,y.useEffect)(()=>{if(!p||!s)return;let e=[],t=p.getPaths();if(typeof t.getLength!=`function`||typeof t.getAt!=`function`)return;let n=()=>{_.current||s(Tt(p))},r=t=>{e.push(google.maps.event.addListener(t,`insert_at`,n)),e.push(google.maps.event.addListener(t,`remove_at`,n)),e.push(google.maps.event.addListener(t,`set_at`,n))};for(let e=0;e{r(t.getAt(e)),n()})),e.push(google.maps.event.addListener(t,`set_at`,e=>{r(t.getAt(e)),n()})),e.push(google.maps.event.addListener(t,`remove_at`,n)),()=>{e.forEach(e=>e.remove())}},[p,s,u,l,v.editable,v.draggable]),(0,y.useEffect)(()=>{p&&p.setOptions(v)},[p,v]),(0,y.useEffect)(()=>{if(!p||!u||!Array.isArray(u))return;let e=u[0];Le(Array.isArray(e)?u:[u],p.getPaths())||(_.current=!0,p.setPaths(u),_.current=!1)},[p,u]),(0,y.useEffect)(()=>{if(!p||!l||!g)return;_.current=!0;let e=l.map(e=>g.encoding.decodePath(e));p.setPaths(e),_.current=!1},[p,l,g]),p}var j=(0,y.forwardRef)((e,t)=>{let n=Et(e);return(0,y.useImperativeHandle)(t,()=>n,[n]),y.createElement(y.Fragment,null)});j.displayName=`Polygon`;function Dt(e){let{onClick:t,onDrag:n,onDragStart:r,onDragEnd:i,onMouseOver:a,onMouseOut:o,onPathChanged:s,polyline:c,encodedPath:l,path:u,defaultPath:d}=e,f=S(e,[`onClick`,`onDrag`,`onDragStart`,`onDragEnd`,`onMouseOver`,`onMouseOut`,`onPathChanged`,`polyline`,`encodedPath`,`path`,`defaultPath`]),[p,m]=(0,y.useState)(null),h=Ze(),g=Qe(`geometry`),_=(0,y.useRef)(!1),v=we(Object.assign(Object.assign({},f),{clickable:f.clickable??!!t,draggable:f.draggable??!!(n||r||i||s),editable:f.editable??!!s}),x.default);return(0,y.useEffect)(()=>{if(!h){h===void 0&&console.error(` has to be inside a Map component.`);return}let e;if(c){e=c;let t=u??d;t&&Array.isArray(t)&&e.setPath(t),e.setOptions(v)}else{let t=u??d,n=Object.assign({},v);t&&Array.isArray(t)&&(n.path=t),e=new google.maps.Polyline(n)}return e.setMap(h),m(e),()=>{e.setMap(null),m(null)}},[h,c]),O(p,`click`,t),O(p,`drag`,n),O(p,`dragstart`,r),O(p,`mouseover`,a),O(p,`mouseout`,o),O(p,`dragend`,e=>{i?.(e),s&&p&&!_.current&&s(p.getPath().getArray())}),(0,y.useEffect)(()=>{if(!p||!s)return;let e=p.getPath();if(!e)return;let t=()=>{_.current||s(e.getArray())},n=[google.maps.event.addListener(e,`insert_at`,t),google.maps.event.addListener(e,`remove_at`,t),google.maps.event.addListener(e,`set_at`,t)];return()=>{n.forEach(e=>e.remove())}},[p,s,u,l,v.editable,v.draggable]),(0,y.useEffect)(()=>{p&&p.setOptions(v)},[p,v]),(0,y.useEffect)(()=>{if(!p||!u)return;let e=p.getPath();Ie(u,e)||(_.current=!0,p.setPath(u),_.current=!1)},[p,u]),(0,y.useEffect)(()=>{if(!p||!l||!g)return;_.current=!0;let e=g.encoding.decodePath(l);p.setPath(e),_.current=!1},[p,l,g]),p}var Ot=(0,y.forwardRef)((e,t)=>{let n=Dt(e);return(0,y.useImperativeHandle)(t,()=>n,[n]),y.createElement(y.Fragment,null)});Ot.displayName=`Polyline`;var kt={center:{lat:0,lng:0,altitude:0},range:0,heading:0,tilt:0,roll:0},At=[`center`,`range`,`heading`,`tilt`,`roll`];function jt(e,t,n){let r=e[n];if(r!=null){if(n===`center`){let e=r;t.current.center=e.toJSON?e.toJSON():e}else t.current[n]=r}}function Mt(e){let t=He(),n=(0,y.useRef)(Object.assign({},kt));return(0,y.useEffect)(()=>{if(!e)return;let r=[];for(let i of At){let a=`gmp-${i}change`,o=()=>{jt(e,n,i),t()};e.addEventListener(a,o),r.push(()=>e.removeEventListener(a,o))}return()=>{for(let e of r)e()}},[e,t]),n}function Nt(e){let t=Qe(`maps3d`),[n,r]=(0,y.useState)(!1),[,i]=Be(),[a,o]=Be(),s=Mt(a);return(0,y.useEffect)(()=>{customElements.whenDefined(`gmp-map-3d`).then(()=>{r(!0)})},[]),(0,y.useEffect)(()=>{if(!a)return;let{center:t,heading:n,tilt:r,range:i,roll:o,defaultCenter:s,defaultHeading:c,defaultTilt:l,defaultRange:u,defaultRoll:d,id:f,style:p,className:m,children:h,onCenterChanged:g,onHeadingChanged:_,onTiltChanged:v,onRangeChanged:y,onRollChanged:b,onCameraChanged:x,onClick:ee,onSteadyChange:C,onAnimationEnd:te,onError:ne,mode:re,gestureHandling:ie}=e,ae=S(e,`center.heading.tilt.range.roll.defaultCenter.defaultHeading.defaultTilt.defaultRange.defaultRoll.id.style.className.children.onCenterChanged.onHeadingChanged.onTiltChanged.onRangeChanged.onRollChanged.onCameraChanged.onClick.onSteadyChange.onAnimationEnd.onError.mode.gestureHandling`.split(`.`)),oe=t??s,se=n??c,ce=r??l,w=i??u,le=o??d,ue=Object.assign({},ae);oe&&(ue.center=oe),se!==void 0&&(ue.heading=se),ce!==void 0&&(ue.tilt=ce),w!==void 0&&(ue.range=w),le!==void 0&&(ue.roll=le),Object.assign(a,ue)},[a]),[a,i,o,s,!!t&&n]}function Pt(e){return e?`toJSON`in e&&typeof e.toJSON==`function`?e.toJSON():e:null}function Ft(e,t,n){let r=Pt(n.center),i=r?.lat??null,a=r?.lng??null,o=r?.altitude??null,s=n.range??null,c=n.heading??null,l=n.tilt??null,u=n.roll??null;(0,y.useLayoutEffect)(()=>{if(!e)return;let n=t.current;i!==null&&a!==null&&(n.center.lat!==i||n.center.lng!==a||o!==null&&n.center.altitude!==o)&&(e.center={lat:i,lng:a,altitude:o??n.center.altitude??0}),s!==null&&n.range!==s&&(e.range=s),c!==null&&n.heading!==c&&(e.heading=c),l!==null&&n.tilt!==l&&(e.tilt=l),u!==null&&n.roll!==u&&(e.roll=u)})}var It=[`gmp-centerchange`,`gmp-headingchange`,`gmp-tiltchange`,`gmp-rangechange`,`gmp-rollchange`];function Lt(e,t){let n=e.center,r;return r=n&&`toJSON`in n&&typeof n.toJSON==`function`?n.toJSON():n||{lat:0,lng:0,altitude:0},{type:t,map3d:e,detail:{center:r,range:e.range||0,heading:e.heading||0,tilt:e.tilt||0,roll:e.roll||0}}}function Rt(e,t){let n=t;return{type:`gmp-click`,map3d:e,detail:{position:t.position||null,placeId:n.placeId}}}function zt(e,t){return{type:`gmp-steadychange`,map3d:e,detail:{isSteady:t.isSteady}}}function Bt(e,t){let{onCenterChanged:n,onHeadingChanged:r,onTiltChanged:i,onRangeChanged:a,onRollChanged:o,onCameraChanged:s,onClick:c,onSteadyChange:l,onAnimationEnd:u,onError:d}=t;Vt(e,`gmp-centerchange`,n,Lt),Vt(e,`gmp-headingchange`,r,Lt),Vt(e,`gmp-tiltchange`,i,Lt),Vt(e,`gmp-rangechange`,a,Lt),Vt(e,`gmp-rollchange`,o,Lt),(0,y.useEffect)(()=>{if(!e||!s)return;let t=()=>{s(Lt(e,`camerachange`))};for(let n of It)e.addEventListener(n,t);return()=>{for(let n of It)e.removeEventListener(n,t)}},[e,s]),(0,y.useEffect)(()=>{if(!e||!c)return;let t=t=>{c(Rt(e,t))};return e.addEventListener(`gmp-click`,t),()=>e.removeEventListener(`gmp-click`,t)},[e,c]),(0,y.useEffect)(()=>{if(!e||!l)return;let t=t=>{l(zt(e,t))};return e.addEventListener(`gmp-steadychange`,t),()=>e.removeEventListener(`gmp-steadychange`,t)},[e,l]),Vt(e,`gmp-animationend`,u,(e,t)=>({type:t,map3d:e})),Vt(e,`gmp-error`,d,(e,t)=>({type:t,map3d:e}))}function Vt(e,t,n,r){(0,y.useEffect)(()=>{if(!e||!n)return;let i=()=>{n(r(e,t))};return e.addEventListener(t,i),()=>e.removeEventListener(t,i)},[e,t,n,r])}var Ht=new Set([`bounds`,`defaultUIHidden`,`gestureHandling`,`internalUsageAttributionIds`,`maxAltitude`,`maxHeading`,`maxTilt`,`minAltitude`,`minHeading`,`minTilt`,`mode`]);function Ut(e,t){let n=(0,y.useMemo)(()=>{let e={},n=Object.keys(t);for(let r of n){if(!Ht.has(r))continue;let n=t[r];n!==void 0&&(e[r]=n)}return e},[t]);Ee(()=>{e&&Object.assign(e,n)},[e,n])}var Wt=y.createContext(null),Gt={width:`100%`,height:`100%`,position:`relative`},Kt=(0,y.forwardRef)((e,t)=>{let{children:n,id:r,className:i,style:a}=e,o=(0,y.useContext)(T);if(!o)throw Error(` can only be used inside an component.`);let{addMap3DInstance:s,removeMap3DInstance:c}=o,[l,u,d,f,p]=Nt(e);Ft(l,f,e),Bt(l,e),Ut(l,e),(0,y.useEffect)(()=>{if(!l)return;let e=r??`default`;return s(l,e),()=>{c(e)}},[l,r]),(0,y.useImperativeHandle)(t,()=>({map3d:l,flyCameraAround:e=>{l?.flyCameraAround(e)},flyCameraTo:e=>{l?.flyCameraTo(e)},stopCameraAnimation:()=>{l?.stopCameraAnimation()}}),[l]);let m=(0,y.useMemo)(()=>Object.assign(Object.assign({},Gt),a),[a]),h=(0,y.useMemo)(()=>({map3d:l}),[l]);return p?y.createElement(`div`,Object.assign({ref:u,"data-testid":`map-3d`,style:i?void 0:m,className:i},r?{id:r}:{}),y.createElement(`gmp-map-3d`,{ref:d,style:{width:`100%`,height:`100%`}},l&&y.createElement(Wt.Provider,{value:h},n))):y.createElement(`div`,Object.assign({ref:u,"data-testid":`map-3d`,style:i?void 0:m,className:i},r?{id:r}:{}))});Kt.displayName=`Map3D`;var qt=(0,y.createContext)(null),Jt=(0,y.forwardRef)(function(e,t){let{children:n,onClick:r,position:i,altitudeMode:a,collisionBehavior:o,drawsWhenOccluded:s,extruded:c,label:l,sizePreserved:u,zIndex:d,title:f}=e,p=!!r,[m,h]=(0,y.useState)(null),[g,_]=(0,y.useState)(!1),v=(0,y.useMemo)(()=>{let e=document.createElement(`div`);return e.style.display=`none`,document.body.appendChild(e),e},[]);(0,y.useEffect)(()=>()=>v.remove(),[v]);let x=(0,y.useCallback)(e=>{h(e),typeof t==`function`?t(e):t&&(t.current=e)},[t]);st(m,`gmp-click`,r),(0,y.useLayoutEffect)(()=>{if(g||!m||!v)return;for(;m.firstChild;)m.removeChild(m.firstChild);let e=Array.from(v.childNodes);for(let t of e){if(t.nodeType!==Node.ELEMENT_NODE)continue;let e=t,n=e.tagName.toLowerCase();if(n===`img`||n===`svg`){let t=document.createElement(`template`);t.content.appendChild(e.cloneNode(!0)),m.appendChild(t)}else m.appendChild(e.cloneNode(!0))}},[m,v,n,g]);let ee=(0,y.useMemo)(()=>({marker:m,setContentHandledExternally:_}),[m]);return k(m,`position`,i),k(m,`altitudeMode`,a),k(m,`collisionBehavior`,o),k(m,`drawsWhenOccluded`,s),k(m,`extruded`,c),k(m,`label`,l),k(m,`sizePreserved`,u),k(m,`zIndex`,d),k(m,`title`,f??``),y.createElement(qt.Provider,{value:ee},p?y.createElement(`gmp-marker-3d-interactive`,{ref:x}):y.createElement(`gmp-marker-3d`,{ref:x}),(0,b.createPortal)(n,v))});Jt.displayName=`Marker3D`;var Yt=(0,y.forwardRef)(function(e,t){let{children:n,headerContent:r,style:i,className:a,open:o=!0,position:s,anchor:c,anchorId:l,altitudeMode:u,lightDismissDisabled:d,autoPanDisabled:f,onClose:p}=e,[m,h]=(0,y.useState)(null),g=(0,y.useRef)(null);return(0,y.useImperativeHandle)(t,()=>m,[m]),Xt(m,o,p),k(m,`open`,o??!1),k(m,`altitudeMode`,u),k(m,`lightDismissDisabled`,d),k(m,`autoPanDisabled`,f),k(m,`positionAnchor`,c??l??s),(0,y.useLayoutEffect)(()=>{m&&(bt(m,i||null,g.current),g.current=i||null)},[m,i]),y.createElement(`gmp-popover`,{ref:h,className:a},r&&y.createElement(`div`,{slot:`header`},r),n)});Yt.displayName=`Popover`;function Xt(e,t,n){let r=(0,y.useRef)(void 0),i=(0,y.useRef)(t);(0,y.useEffect)(()=>{i.current=t},[t]),(0,y.useEffect)(()=>{if(!e||!n)return;let t=new MutationObserver(t=>{for(let a of t)if(a.type===`attributes`&&a.attributeName===`open`){let t=e.hasAttribute(`open`);r.current===!0&&!t&&i.current!==!1&&n(),r.current=t}});return t.observe(e,{attributes:!0,attributeFilter:[`open`]}),r.current=e.hasAttribute(`open`),()=>{t.disconnect()}},[e,n])}var Zt={TOP_LEFT:1,TOP_CENTER:2,TOP:2,TOP_RIGHT:3,LEFT_CENTER:4,LEFT_TOP:5,LEFT:5,LEFT_BOTTOM:6,RIGHT_TOP:7,RIGHT:7,RIGHT_CENTER:8,RIGHT_BOTTOM:9,BOTTOM_LEFT:10,BOTTOM_CENTER:11,BOTTOM:11,BOTTOM_RIGHT:12,CENTER:13,BLOCK_START_INLINE_START:14,BLOCK_START_INLINE_CENTER:15,BLOCK_START_INLINE_END:16,INLINE_START_BLOCK_CENTER:17,INLINE_START_BLOCK_START:18,INLINE_START_BLOCK_END:19,INLINE_END_BLOCK_START:20,INLINE_END_BLOCK_CENTER:21,INLINE_END_BLOCK_END:22,BLOCK_END_INLINE_START:23,BLOCK_END_INLINE_CENTER:24,BLOCK_END_INLINE_END:25},Qt=({children:e,position:t})=>{let n=(0,y.useMemo)(()=>document.createElement(`div`),[]),r=Ze();return(0,y.useEffect)(()=>{if(!r)return;let e=r.controls[t];return e.push(n),()=>{let t=e.getArray();if(!t)return;let r=t.indexOf(n);e.removeAt(r)}},[n,r,t]),(0,b.createPortal)(e,n)};function $t(e){let[t,n]=(0,y.useState)(null),r=Ze(),{onClick:i,onDrag:a,onDragStart:o,onDragEnd:s,onMouseOver:c,onMouseOut:l}=e,u=S(e,[`onClick`,`onDrag`,`onDragStart`,`onDragEnd`,`onMouseOver`,`onMouseOut`]),{position:d,draggable:f}=u;return(0,y.useEffect)(()=>{if(!r){r===void 0&&console.error(` has to be inside a Map component.`);return}let e=new google.maps.Marker(u);return e.setMap(r),n(e),()=>{e.setMap(null),n(null)}},[r]),(0,y.useEffect)(()=>{if(!t)return;let e=t,n=google.maps.event;return i&&n.addListener(e,`click`,i),a&&n.addListener(e,`drag`,a),o&&n.addListener(e,`dragstart`,o),s&&n.addListener(e,`dragend`,s),c&&n.addListener(e,`mouseover`,c),l&&n.addListener(e,`mouseout`,l),t.setDraggable(!!f),()=>{n.clearInstanceListeners(e)}},[t,f,i,a,o,s,c,l]),(0,y.useEffect)(()=>{t&&u&&t.setOptions(u)},[t,u]),(0,y.useEffect)(()=>{f||!d||!t||t.setPosition(d)},[f,d,t]),t}var en=(0,y.forwardRef)((e,t)=>{let n=$t(e);return(0,y.useImperativeHandle)(t,()=>n,[n]),y.createElement(y.Fragment,null)});en.displayName=`Marker`;function tn(e){let{onClick:t,onDrag:n,onDragStart:r,onDragEnd:i,onMouseOver:a,onMouseOut:o,onBoundsChanged:s,bounds:c,defaultBounds:l}=e,u=S(e,[`onClick`,`onDrag`,`onDragStart`,`onDragEnd`,`onMouseOver`,`onMouseOut`,`onBoundsChanged`,`bounds`,`defaultBounds`]),[d,f]=(0,y.useState)(null),p=Ze(),m=we(Object.assign(Object.assign({},u),{clickable:u.clickable??!!t,draggable:u.draggable??!!(n||r||i||s),editable:u.editable??!!s}),x.default);return(0,y.useEffect)(()=>{if(!p){p===void 0&&console.error(` has to be inside a Map component.`);return}let e=new google.maps.Rectangle(Object.assign(Object.assign({},m),{bounds:c??l}));return e.setMap(p),f(e),()=>{e.setMap(null),f(null)}},[p]),O(d,`click`,t),O(d,`drag`,n),O(d,`dragstart`,r),O(d,`dragend`,i),O(d,`mouseover`,a),O(d,`mouseout`,o),O(d,`bounds_changed`,s?()=>{s(d?.getBounds())}:null),(0,y.useEffect)(()=>{d&&d.setOptions(m)},[d,m]),(0,y.useEffect)(()=>{!d||!c||Fe(c,d.getBounds())||d.setBounds(c)},[d,c]),d}var nn=(0,y.forwardRef)((e,t)=>{let n=tn(e);return(0,y.useImperativeHandle)(t,()=>n,[n]),y.createElement(y.Fragment,null)});nn.displayName=`Rectangle`;var rn=`AIzaSyA6myHzS10YXdcazAFalmXvDkrYCp5cLc8`,an=({onPlaceSelect:e})=>{let t=Ze(),n=Qe(`places`),r=(0,y.useRef)(null);return(0,y.useEffect)(()=>{if(!t||!n||!r.current)return;let i=new n.PlaceAutocompleteElement;r.current.appendChild(i);let a=()=>{let e=t.getBounds();e&&(i.locationRestriction=e.toJSON())};a();let o=t.addListener(`bounds_changed`,a),s=n=>{let r=n.placePrediction.toPlace();r.fetchFields({fields:[`location`,`viewport`,`displayName`,`formattedAddress`]}).then(()=>{r.viewport?t.fitBounds(r.viewport):r.location&&(t.setCenter(r.location),t.setZoom(13)),e(r)}).catch(e=>{console.error(e)})};return i.addEventListener(`gmp-select`,s),()=>{google.maps.event.removeListener(o),i.removeEventListener(`gmp-select`,s),r.current&&(r.current.innerHTML=``)}},[t,n,e]),y.createElement(`div`,{className:`place-autocomplete-card`,style:{backgroundColor:`#fff`,borderRadius:`5px`,boxShadow:`rgba(0, 0, 0, 0.35) 0px 5px 15px`,margin:`10px`,padding:`5px`,fontFamily:`Roboto, sans-serif`,fontSize:`small`,width:`300px`}},y.createElement(`div`,{ref:r,style:{width:`100%`}}))};function on(){let[e,t]=(0,y.useState)(null),[n,r]=pt();return y.createElement(_e,{apiKey:rn},y.createElement(Je,{defaultCenter:{lat:40.749933,lng:-73.98633},defaultZoom:13,gestureHandling:`greedy`,mapId:`DEMO_MAP_ID`,disableDefaultUI:!0},y.createElement(Qt,{position:Zt.BLOCK_START_INLINE_START},y.createElement(an,{onPlaceSelect:t})),e?.location&&y.createElement(ft,{ref:n,position:e.location}),e?.location&&r&&y.createElement(wt,{anchor:r},y.createElement(`div`,null,y.createElement(`span`,{style:{fontWeight:`bold`}},e.displayName??`No name`),y.createElement(`br`,null),y.createElement(`span`,null,e.formattedAddress??`No address`)))))}function sn(e){(0,v.createRoot)(e).render(y.createElement(y.StrictMode,null,y.createElement(on,null)))}sn(document.querySelector(`#app`)); \ No newline at end of file diff --git a/dist/samples/rgm-autocomplete/dist/index.html b/dist/samples/rgm-autocomplete/dist/index.html new file mode 100644 index 000000000..1558b0a52 --- /dev/null +++ b/dist/samples/rgm-autocomplete/dist/index.html @@ -0,0 +1,31 @@ + + + + + + + + React - react place autocomplete map + + + + +
    + + + diff --git a/dist/samples/rgm-autocomplete/docs/app.tsx b/dist/samples/rgm-autocomplete/docs/app.tsx new file mode 100644 index 000000000..a681fd00b --- /dev/null +++ b/dist/samples/rgm-autocomplete/docs/app.tsx @@ -0,0 +1,173 @@ +/** + * @license + * Copyright 2026 Google LLC. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0 + */ +// [START maps_rgm_autocomplete] +import React, { useState, useEffect, useRef } from 'react'; +import { createRoot } from 'react-dom/client'; +import { + APIProvider, + Map, + MapControl, + ControlPosition, + AdvancedMarker, + InfoWindow, + useMap, + useMapsLibrary, + useAdvancedMarkerRef, +} from '@vis.gl/react-google-maps'; + +const API_KEY = 'GOOGLE_MAPS_API_KEY'; + +declare global { + namespace JSX { + interface IntrinsicElements { + 'gmp-place-autocomplete': React.DetailedHTMLProps< + React.HTMLAttributes, + HTMLElement + >; + } + } +} + +const PlaceAutocomplete = ({ + onPlaceSelect, +}: { + onPlaceSelect: (place: google.maps.places.Place | null) => void; +}) => { + const map = useMap(); + const placesLibrary = useMapsLibrary('places'); + const containerRef = useRef(null); + + useEffect(() => { + if (!map || !placesLibrary || !containerRef.current) return; + + // 1. Programmatically instantiate the modern PlaceAutocompleteElement + const autocomplete = new placesLibrary.PlaceAutocompleteElement(); + containerRef.current.appendChild(autocomplete); + + // 2. Manually sync the map's bounds to the autocomplete's locationRestriction. + // We use map.getBounds().toJSON() to pass a plain object literal, which safely + // bypasses any cross-context 'instanceof' wipeout issues in React. + const syncBounds = () => { + const bounds = map.getBounds(); + if (bounds) { + autocomplete.locationRestriction = bounds.toJSON(); + } + }; + + // Sync initially and whenever the map moves. + syncBounds(); + const boundsListener = map.addListener('bounds_changed', syncBounds); + + // 3. Listen for the gmp-select event. + const placeSelectListener = (e: Event) => { + const event = e as google.maps.places.PlacePredictionSelectEvent; + const place = event.placePrediction.toPlace(); + + void place + .fetchFields({ + fields: [ + 'location', + 'viewport', + 'displayName', + 'formattedAddress', + ], + }) + .then(() => { + if (place.viewport) { + map.fitBounds(place.viewport); + } else if (place.location) { + map.setCenter(place.location); + map.setZoom(13); + } + onPlaceSelect(place); + }) + .catch((err: unknown) => { + console.error(err); + }); + }; + + autocomplete.addEventListener('gmp-select', placeSelectListener); + + return () => { + google.maps.event.removeListener(boundsListener); + autocomplete.removeEventListener('gmp-select', placeSelectListener); + + // Clean up the DOM element when unmounting. + if (containerRef.current) { + containerRef.current.innerHTML = ''; + } + }; + }, [map, placesLibrary, onPlaceSelect]); + + return ( +
    +
    +
    + ); +}; + +export default function App() { + const [selectedPlace, setSelectedPlace] = + useState(null); + const [markerRef, marker] = useAdvancedMarkerRef(); + + return ( + + + + + + + {selectedPlace?.location && ( + + )} + + {selectedPlace?.location && marker && ( + +
    + + {selectedPlace.displayName ?? 'No name'} + +
    + + {selectedPlace.formattedAddress ?? 'No address'} + +
    +
    + )} +
    +
    + ); +} + +export function renderToDom(container: HTMLElement) { + const root = createRoot(container); + root.render( + + + + ); +} +// [END maps_rgm_autocomplete] diff --git a/dist/samples/rgm-autocomplete/docs/index.html b/dist/samples/rgm-autocomplete/docs/index.html new file mode 100644 index 000000000..577474987 --- /dev/null +++ b/dist/samples/rgm-autocomplete/docs/index.html @@ -0,0 +1,35 @@ + + + + + + + + React - react place autocomplete map + + + + +
    + + + diff --git a/dist/samples/rgm-autocomplete/docs/style.css b/dist/samples/rgm-autocomplete/docs/style.css new file mode 100644 index 000000000..cbf89fd6d --- /dev/null +++ b/dist/samples/rgm-autocomplete/docs/style.css @@ -0,0 +1,54 @@ +/** + * @license + * Copyright 2024 Google LLC. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0 + */ +/* [START maps_rgm_autocomplete] */ +body { + margin: 0; + font-family: sans-serif; +} + +#app { + width: 100vw; + height: 100vh; +} + +.autocomplete-container input, +.autocomplete-control { + box-sizing: border-box; +} + +.autocomplete-control { + margin: 24px; + background: #fff; +} + +.autocomplete-container { + width: 300px; +} + +.autocomplete-container input { + width: 100%; + height: 40px; + padding: 0 12px; + font-size: 18px; +} + +.autocomplete-container .custom-list { + width: 100%; + list-style: none; + padding: 0; + margin: 0; +} + +.autocomplete-container .custom-list-item { + padding: 8px; +} + +.autocomplete-container .custom-list-item:hover { + background: lightgrey; + cursor: pointer; +} + +/* [END maps_rgm_autocomplete] */ diff --git a/dist/samples/rgm-autocomplete/jsfiddle/demo.css b/dist/samples/rgm-autocomplete/jsfiddle/demo.css new file mode 100644 index 000000000..6291e27cc --- /dev/null +++ b/dist/samples/rgm-autocomplete/jsfiddle/demo.css @@ -0,0 +1,52 @@ +/** + * @license + * Copyright 2024 Google LLC. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0 + */ + +body { + margin: 0; + font-family: sans-serif; +} + +#app { + width: 100vw; + height: 100vh; +} + +.autocomplete-container input, +.autocomplete-control { + box-sizing: border-box; +} + +.autocomplete-control { + margin: 24px; + background: #fff; +} + +.autocomplete-container { + width: 300px; +} + +.autocomplete-container input { + width: 100%; + height: 40px; + padding: 0 12px; + font-size: 18px; +} + +.autocomplete-container .custom-list { + width: 100%; + list-style: none; + padding: 0; + margin: 0; +} + +.autocomplete-container .custom-list-item { + padding: 8px; +} + +.autocomplete-container .custom-list-item:hover { + background: lightgrey; + cursor: pointer; +} diff --git a/dist/samples/rgm-autocomplete/jsfiddle/demo.details b/dist/samples/rgm-autocomplete/jsfiddle/demo.details new file mode 100644 index 000000000..5faf2fdb0 --- /dev/null +++ b/dist/samples/rgm-autocomplete/jsfiddle/demo.details @@ -0,0 +1,7 @@ +name: rgm-autocomplete +authors: + - Geo Developer IX Documentation Team +tags: + - google maps +load_type: h +description: Sample code supporting Google Maps Platform JavaScript API documentation. diff --git a/dist/samples/rgm-autocomplete/jsfiddle/demo.html b/dist/samples/rgm-autocomplete/jsfiddle/demo.html new file mode 100644 index 000000000..018e387e3 --- /dev/null +++ b/dist/samples/rgm-autocomplete/jsfiddle/demo.html @@ -0,0 +1,34 @@ + + + + + + + + React - react place autocomplete map + + + + +
    + + diff --git a/index.html b/index.html index 1b6215728..2fcc32406 100644 --- a/index.html +++ b/index.html @@ -138,6 +138,7 @@

    Maps JSAPI Samples

  • react-ui-kit-search-nearby
  • react-ui-kit-search-text
  • rectangle-event
  • +
  • rgm-autocomplete
  • rgm-basic-map
  • routes-compute-routes
  • routes-get-alternatives