@omnic/widget-locations 1.0.38 → 1.0.39

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"widget.es.js","sources":["../../node_modules/invariant/browser.js","../../node_modules/@tolgee/web/dist/tolgee-web.production.esm.mjs","../../node_modules/@tolgee/react/dist/tolgee-react.esm.mjs","../../src/i18n.ts","../../node_modules/classnames/index.js","../../node_modules/zustand/esm/vanilla.mjs","../../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.js","../../node_modules/use-sync-external-store/shim/index.js","../../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.js","../../node_modules/use-sync-external-store/shim/with-selector.js","../../node_modules/zustand/esm/index.mjs","../../node_modules/uuid/dist/esm-browser/rng.js","../../node_modules/uuid/dist/esm-browser/stringify.js","../../node_modules/uuid/dist/esm-browser/native.js","../../node_modules/uuid/dist/esm-browser/v4.js","../../src/constants/map.ts","../../src/stores/map.ts","../../src/constants/config.ts","../../src/context/config.ts","../../src/stores/courierPoint.ts","../../src/components/Button/Button.tsx","../../src/assets/logo.svg","../../src/components/Header/LogoContainer.tsx","../../src/assets/pin.svg","../../src/stores/locationAside.ts","../../src/stores/selectedPlace.ts","../../src/components/CurrentLocation/CurrentLocation.tsx","../../src/components/Header/Header.tsx","../../src/stores/sidebar.ts","../../src/components/Layout/Layout.tsx","../../src/types/filters.ts","../../src/stores/filters.ts","../../src/components/Hr/Hr.tsx","../../src/assets/close.svg","../../src/components/Sidebar/HeaderContainer.tsx","../../src/components/TypeFilter/TypeFilter.tsx","../../src/components/Sidebar/TypeFilterContainer.tsx","../../src/components/Radio/Radio.tsx","../../src/components/Checkbox/Checkbox.tsx","../../src/components/CheckboxGroup/CheckboxGroup.tsx","../../src/components/Sidebar/SendFilterContainer.tsx","../../src/components/Sidebar/ReceiveFilterContainer.tsx","../../src/components/Sidebar/Sidebar.tsx","../../src/assets/filter.svg","../../src/components/MapContainer/FilterButton.tsx","../../node_modules/prop-types/lib/ReactPropTypesSecret.js","../../node_modules/prop-types/factoryWithThrowingShims.js","../../node_modules/prop-types/index.js","../../node_modules/react-google-autocomplete/lib/utils.js","../../node_modules/react-google-autocomplete/lib/constants.js","../../node_modules/react-google-autocomplete/lib/usePlacesWidget.js","../../node_modules/react-google-autocomplete/lib/ReactGoogleAutocomplete.js","../../node_modules/react-google-autocomplete/lib/index.js","../../node_modules/react-google-autocomplete/index.js","../../src/assets/search.svg","../../src/components/Input/Input.tsx","../../src/components/LocationSelector/CourierDeliverySelectorContainer.tsx","../../src/components/LocationSelector/LocationSelector.tsx","../../src/stores/selectedPoint.ts","../../src/assets/courier-balloon-logo.svg","../../src/components/Chip/Chip.tsx","../../src/components/TextArea/TextArea.tsx","../../src/components/CourierDetailsModal/CourierDetailsModal.utils.ts","../../src/components/CourierDetailsModal/CourierDetailsModal.tsx","../../src/assets/balloon-logo.svg","../../src/components/LocationDetailsModal/LocationDetailsModal.tsx","../../src/components/MapContainer/DetailsModalContainer.tsx","../../src/components/MapContainer/MapContainer.tsx","../../src/components/Aside/Aside.tsx","../../src/components/LocationAside/LocationAside.tsx","../../node_modules/axios/lib/helpers/bind.js","../../node_modules/axios/lib/utils.js","../../node_modules/axios/lib/core/AxiosError.js","../../node_modules/axios/lib/helpers/null.js","../../node_modules/axios/lib/helpers/toFormData.js","../../node_modules/axios/lib/helpers/AxiosURLSearchParams.js","../../node_modules/axios/lib/helpers/buildURL.js","../../node_modules/axios/lib/core/InterceptorManager.js","../../node_modules/axios/lib/defaults/transitional.js","../../node_modules/axios/lib/platform/browser/classes/URLSearchParams.js","../../node_modules/axios/lib/platform/browser/classes/FormData.js","../../node_modules/axios/lib/platform/browser/classes/Blob.js","../../node_modules/axios/lib/platform/browser/index.js","../../node_modules/axios/lib/helpers/toURLEncodedForm.js","../../node_modules/axios/lib/helpers/formDataToJSON.js","../../node_modules/axios/lib/defaults/index.js","../../node_modules/axios/lib/helpers/parseHeaders.js","../../node_modules/axios/lib/core/AxiosHeaders.js","../../node_modules/axios/lib/core/transformData.js","../../node_modules/axios/lib/cancel/isCancel.js","../../node_modules/axios/lib/cancel/CanceledError.js","../../node_modules/axios/lib/core/settle.js","../../node_modules/axios/lib/helpers/cookies.js","../../node_modules/axios/lib/helpers/isAbsoluteURL.js","../../node_modules/axios/lib/helpers/combineURLs.js","../../node_modules/axios/lib/core/buildFullPath.js","../../node_modules/axios/lib/helpers/isURLSameOrigin.js","../../node_modules/axios/lib/helpers/parseProtocol.js","../../node_modules/axios/lib/helpers/speedometer.js","../../node_modules/axios/lib/adapters/xhr.js","../../node_modules/axios/lib/adapters/adapters.js","../../node_modules/axios/lib/core/dispatchRequest.js","../../node_modules/axios/lib/core/mergeConfig.js","../../node_modules/axios/lib/env/data.js","../../node_modules/axios/lib/helpers/validator.js","../../node_modules/axios/lib/core/Axios.js","../../node_modules/axios/lib/cancel/CancelToken.js","../../node_modules/axios/lib/helpers/spread.js","../../node_modules/axios/lib/helpers/isAxiosError.js","../../node_modules/axios/lib/helpers/HttpStatusCode.js","../../node_modules/axios/lib/axios.js","../../src/api/client.ts","../../src/constants/limits.ts","../../src/services/points.ts","../../src/utils/createPointsIterator.ts","../../src/constants/global.ts","../../src/utils/setWidgetCSSProperty.ts","../../src/stores/points.ts","../../src/hooks/usePointsLoader.ts","../../node_modules/on-change/lib/constants.js","../../node_modules/on-change/lib/is-builtin.js","../../node_modules/on-change/lib/is-array.js","../../node_modules/on-change/lib/is-symbol.js","../../node_modules/on-change/lib/path.js","../../node_modules/on-change/lib/is-iterator.js","../../node_modules/on-change/lib/wrap-iterator.js","../../node_modules/on-change/lib/ignore-property.js","../../node_modules/on-change/lib/cache.js","../../node_modules/on-change/lib/is-object.js","../../node_modules/on-change/lib/smart-clone/diff/is-diff-certain.js","../../node_modules/on-change/lib/smart-clone/diff/is-diff-arrays.js","../../node_modules/on-change/lib/smart-clone/methods/object.js","../../node_modules/on-change/lib/smart-clone/methods/array.js","../../node_modules/on-change/lib/smart-clone/diff/is-diff-sets.js","../../node_modules/on-change/lib/smart-clone/methods/set.js","../../node_modules/on-change/lib/smart-clone/diff/is-diff-maps.js","../../node_modules/on-change/lib/smart-clone/methods/map.js","../../node_modules/on-change/lib/smart-clone/clone/clone-object.js","../../node_modules/on-change/lib/smart-clone/clone/clone-array.js","../../node_modules/on-change/lib/smart-clone/clone/clone-date.js","../../node_modules/on-change/lib/smart-clone/clone/clone-set.js","../../node_modules/on-change/lib/smart-clone/clone/clone-map.js","../../node_modules/on-change/lib/smart-clone/clone/clone-weakset.js","../../node_modules/on-change/lib/smart-clone/clone/clone-weakmap.js","../../node_modules/on-change/lib/smart-clone/smart-clone.js","../../node_modules/on-change/index.js","../../src/hooks/useWidgetConfig.ts","../../src/hooks/useInitializeAxios.ts","../../node_modules/@react-google-maps/api/dist/esm.js","../../src/components/Overlay/Overlay.tsx","../../src/components/Spinner/Spinner.tsx","../../node_modules/regenerator-runtime/runtime.js","../../node_modules/react-geocode/lib/index.js","../../src/components/MapGoogle/MapGoogle.constants.ts","../../src/components/MapGoogle/MapContainer.tsx","../../src/assets/markers/pin-user.png","../../src/components/CourierBalloon/CourierBalloon.tsx","../../src/components/MapGoogle/CourierPoint.tsx","../../src/assets/markers/pin-pvz.png","../../src/assets/markers/pin-postmat.png","../../src/assets/arrow-right.svg","../../src/components/LocationBalloon/LocationBalloon.tsx","../../src/components/MapGoogle/Point.tsx","../../src/components/MapGoogle/Clusters.tsx","../../src/components/MapGoogle/ClustersContainer.tsx","../../src/components/MapGoogle/MapGoogle.hooks.ts","../../src/components/MapGoogle/MapGoogle.tsx","../../node_modules/@pbe/react-yandex-maps/dist/react-yandex-maps.esm.js","../../src/components/MapYandex/MapYandex.utils.ts","../../src/components/MapYandex/MapYandex.constants.tsx","../../src/components/MapYandex/MapYandex.tsx","../../src/hooks/useMapRenderer.ts","../../src/views/Widget/Widget.hooks.ts","../../src/views/Widget/LocaleProvider.tsx","../../src/views/Widget/PreloaderOverlay.tsx","../../src/views/Widget/WidgetContainer.tsx","../../src/views/Widget/Widget.tsx"],"sourcesContent":["/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar invariant = function(condition, format, a, b, c, d, e, f) {\n if (process.env.NODE_ENV !== 'production') {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n }\n\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error(\n 'Minified exception occurred; use the non-minified dev environment ' +\n 'for the full error message and additional helpful warnings.'\n );\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(\n format.replace(/%s/g, function() { return args[argIndex++]; })\n );\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n};\n\nmodule.exports = invariant;\n","function isPromise(value) {\n return Boolean(value && typeof value.then === 'function');\n}\nfunction valueOrPromise(value, callback) {\n if (isPromise(value)) {\n return Promise.resolve(value).then(callback);\n }\n else {\n return callback(value);\n }\n}\nfunction missingOptionError(option) {\n const options = (Array.isArray(option) ? option : [option]).map((val) => `'${val}'`);\n const lastPart = options.slice(-2).join(' or ');\n const firstPart = options.slice(0, -2);\n const stringifiedOptions = [...firstPart, lastPart].join(', ');\n return `Tolgee: You need to specify ${stringifiedOptions} option`;\n}\nfunction isObject(item) {\n return typeof item === 'object' && !Array.isArray(item) && item !== null;\n}\nfunction getFallback(value) {\n if (typeof value === 'string') {\n return [value];\n }\n if (Array.isArray(value)) {\n return value;\n }\n return undefined;\n}\nfunction getFallbackArray(value) {\n return getFallback(value) || [];\n}\nfunction getFallbackFromStruct(language, fallbackLanguage) {\n if (isObject(fallbackLanguage)) {\n return getFallbackArray(fallbackLanguage === null || fallbackLanguage === void 0 ? void 0 : fallbackLanguage[language]);\n }\n else {\n return getFallbackArray(fallbackLanguage);\n }\n}\nfunction unique(arr) {\n return Array.from(new Set(arr));\n}\nfunction sanitizeUrl(url) {\n return url ? url.replace(/\\/+$/, '') : url;\n}\nfunction getErrorMessage(error) {\n if (typeof error === 'string') {\n return error;\n }\n else if (typeof (error === null || error === void 0 ? void 0 : error.message) === 'string') {\n return error.message;\n }\n}\n\nfunction EventEmitter(isActive) {\n let handlers = [];\n return Object.freeze({\n listen(handler) {\n const handlerWrapper = (e) => {\n handler(e);\n };\n handlers.push(handlerWrapper);\n return {\n unsubscribe() {\n handlers = handlers.filter((i) => handlerWrapper !== i);\n },\n };\n },\n emit(data) {\n if (isActive()) {\n handlers.forEach((handler) => handler({ value: data }));\n }\n },\n });\n}\n\nfunction EventEmitterSelective(isActive, getFallbackNs, getDefaultNs) {\n const listeners = new Set();\n const partialListeners = new Set();\n function callHandlers(ns) {\n // everything is implicitly subscribed to fallbacks\n // as it can always fall through to it\n const fallbackNamespaces = new Set(getFallbackNs());\n partialListeners.forEach((handler) => {\n const nsMatches = ns === undefined ||\n (ns === null || ns === void 0 ? void 0 : ns.findIndex((ns) => fallbackNamespaces.has(ns) || handler.namespaces.has(ns))) !== -1;\n if (nsMatches) {\n handler.fn({ value: undefined });\n }\n });\n }\n let queue = [];\n // merge events in queue into one event\n function solveQueue() {\n if (queue.length === 0) {\n return;\n }\n const queueCopy = queue;\n queue = [];\n listeners.forEach((handler) => {\n handler({ value: undefined });\n });\n let namespaces = new Set();\n queueCopy.forEach((ns) => {\n if (ns === undefined) {\n // when no ns specified, it affects all namespaces\n namespaces = undefined;\n }\n else if (namespaces !== undefined) {\n ns.forEach((ns) => namespaces.add(ns));\n }\n });\n const namespacesArray = namespaces\n ? Array.from(namespaces.keys())\n : undefined;\n callHandlers(namespacesArray);\n }\n return Object.freeze({\n emit(ns, delayed) {\n if (isActive()) {\n queue.push(ns);\n if (!delayed) {\n solveQueue();\n }\n else {\n setTimeout(solveQueue, 0);\n }\n }\n },\n listen(handler) {\n listeners.add(handler);\n const result = {\n unsubscribe: () => {\n listeners.delete(handler);\n },\n };\n return result;\n },\n listenSome(handler) {\n const handlerWrapper = {\n fn: (e) => {\n handler(e);\n },\n namespaces: new Set(),\n };\n partialListeners.add(handlerWrapper);\n const result = {\n unsubscribe: () => {\n partialListeners.delete(handlerWrapper);\n },\n subscribeNs: (ns) => {\n getFallbackArray(ns).forEach((val) => handlerWrapper.namespaces.add(val));\n if (ns === undefined) {\n // subscribing to default ns\n handlerWrapper.namespaces.add(getDefaultNs());\n }\n return result;\n },\n };\n return result;\n },\n });\n}\n\nfunction Events(getFallbackNs, getDefaultNs) {\n let emitterActive = true;\n function isActive() {\n return emitterActive;\n }\n const self = Object.freeze({\n onPendingLanguageChange: EventEmitter(isActive),\n onLanguageChange: EventEmitter(isActive),\n onLoadingChange: EventEmitter(isActive),\n onFetchingChange: EventEmitter(isActive),\n onInitialLoaded: EventEmitter(isActive),\n onRunningChange: EventEmitter(isActive),\n onCacheChange: EventEmitter(isActive),\n onUpdate: EventEmitterSelective(isActive, getFallbackNs, getDefaultNs),\n setEmitterActive(active) {\n emitterActive = active;\n },\n on: ((event, handler) => {\n switch (event) {\n case 'pendingLanguage':\n return self.onPendingLanguageChange.listen(handler);\n case 'language':\n return self.onLanguageChange.listen(handler);\n case 'loading':\n return self.onLoadingChange.listen(handler);\n case 'fetching':\n return self.onFetchingChange.listen(handler);\n case 'initialLoad':\n return self.onInitialLoaded.listen(handler);\n case 'running':\n return self.onRunningChange.listen(handler);\n case 'cache':\n return self.onCacheChange.listen(handler);\n case 'update':\n return self.onUpdate.listen(handler);\n }\n }),\n });\n self.onInitialLoaded.listen(() => self.onUpdate.emit());\n self.onLanguageChange.listen(() => self.onUpdate.emit());\n self.onCacheChange.listen(({ value }) => self.onUpdate.emit([value.namespace], true));\n return self;\n}\n\nconst flattenTranslations = (data) => {\n const result = new Map();\n Object.entries(data).forEach(([key, value]) => {\n // ignore empty values\n if (value === undefined || value === null) {\n return;\n }\n if (typeof value === 'object') {\n flattenTranslations(value).forEach((flatValue, flatKey) => {\n result.set(key + '.' + flatKey, flatValue);\n });\n return;\n }\n result.set(key, value);\n });\n return result;\n};\nconst decodeCacheKey = (key) => {\n const [firstPart, ...rest] = key.split(':');\n // if namespaces contains \":\" it won't get lost\n const secondPart = rest.join(':');\n return { language: firstPart, namespace: secondPart || '' };\n};\nconst encodeCacheKey = ({ language, namespace, }) => {\n if (namespace) {\n return `${language}:${namespace}`;\n }\n else {\n return language;\n }\n};\n\nfunction Cache(onCacheChange, backendGetRecord, backendGetDevRecord, withDefaultNs, isInitialLoading, fetchingObserver, loadingObserver) {\n const asyncRequests = new Map();\n const cache = new Map();\n let staticData = {};\n let version = 0;\n function addRecordInternal(descriptor, data, recordVersion) {\n const cacheKey = encodeCacheKey(descriptor);\n cache.set(cacheKey, {\n data: flattenTranslations(data),\n version: recordVersion,\n });\n onCacheChange.emit(descriptor);\n }\n /**\n * Fetches production data\n */\n function fetchProd(keyObject) {\n let dataPromise = undefined;\n if (!dataPromise) {\n const staticDataValue = staticData[encodeCacheKey(keyObject)];\n if (typeof staticDataValue === 'function') {\n dataPromise = staticDataValue();\n }\n }\n if (!dataPromise) {\n dataPromise = backendGetRecord(keyObject);\n }\n return dataPromise;\n }\n function fetchData(keyObject, isDev) {\n var _a;\n let dataPromise = undefined;\n if (isDev) {\n dataPromise = (_a = backendGetDevRecord(keyObject)) === null || _a === void 0 ? void 0 : _a.catch(() => {\n // eslint-disable-next-line no-console\n console.warn(`Tolgee: Failed to fetch data from dev backend`);\n // fallback to prod fetch if dev fails\n return fetchProd(keyObject);\n });\n }\n if (!dataPromise) {\n dataPromise = fetchProd(keyObject);\n }\n return dataPromise;\n }\n const self = Object.freeze({\n addStaticData(data) {\n if (data) {\n staticData = Object.assign(Object.assign({}, staticData), data);\n Object.entries(data).forEach(([key, value]) => {\n if (typeof value !== 'function') {\n const descriptor = decodeCacheKey(key);\n const existing = cache.get(key);\n if (!existing || existing.version === 0) {\n addRecordInternal(descriptor, value, 0);\n }\n }\n });\n }\n },\n invalidate() {\n asyncRequests.clear();\n version += 1;\n },\n addRecord(descriptor, data) {\n addRecordInternal(descriptor, data, version);\n },\n exists(descriptor, strict = false) {\n const record = cache.get(encodeCacheKey(descriptor));\n if (record && strict) {\n return record.version === version;\n }\n return Boolean(record);\n },\n getRecord(descriptor) {\n var _a;\n return (_a = cache.get(encodeCacheKey(withDefaultNs(descriptor)))) === null || _a === void 0 ? void 0 : _a.data;\n },\n getTranslation(descriptor, key) {\n var _a;\n return (_a = cache.get(encodeCacheKey(descriptor))) === null || _a === void 0 ? void 0 : _a.data.get(key);\n },\n getTranslationNs(namespaces, languages, key) {\n var _a;\n for (const namespace of namespaces) {\n for (const language of languages) {\n const value = (_a = cache\n .get(encodeCacheKey({ language, namespace }))) === null || _a === void 0 ? void 0 : _a.data.get(key);\n if (value !== undefined && value !== null) {\n return [namespace];\n }\n }\n }\n return unique(namespaces);\n },\n getTranslationFallback(namespaces, languages, key) {\n var _a;\n for (const namespace of namespaces) {\n for (const language of languages) {\n const value = (_a = cache\n .get(encodeCacheKey({ language, namespace }))) === null || _a === void 0 ? void 0 : _a.data.get(key);\n if (value !== undefined && value !== null) {\n return value;\n }\n }\n }\n return undefined;\n },\n changeTranslation(descriptor, key, value) {\n var _a;\n const record = (_a = cache.get(encodeCacheKey(descriptor))) === null || _a === void 0 ? void 0 : _a.data;\n record === null || record === void 0 ? void 0 : record.set(key, value);\n onCacheChange.emit(Object.assign(Object.assign({}, descriptor), { key }));\n },\n isFetching(ns) {\n if (isInitialLoading()) {\n return true;\n }\n if (ns === undefined) {\n return asyncRequests.size > 0;\n }\n const namespaces = getFallbackArray(ns);\n return Boolean(Array.from(asyncRequests.keys()).find((key) => namespaces.includes(decodeCacheKey(key).namespace)));\n },\n isLoading(language, ns) {\n const namespaces = getFallbackArray(ns);\n return Boolean(isInitialLoading() ||\n Array.from(asyncRequests.keys()).find((key) => {\n const descriptor = decodeCacheKey(key);\n return ((!namespaces.length ||\n namespaces.includes(descriptor.namespace)) &&\n !self.exists({\n namespace: descriptor.namespace,\n language: language,\n }));\n }));\n },\n async loadRecords(descriptors, isDev) {\n const withPromises = descriptors.map((descriptor) => {\n const keyObject = withDefaultNs(descriptor);\n const cacheKey = encodeCacheKey(keyObject);\n const existingPromise = asyncRequests.get(cacheKey);\n if (existingPromise) {\n return {\n new: false,\n promise: existingPromise,\n keyObject,\n cacheKey,\n };\n }\n const dataPromise = fetchData(keyObject, isDev) || Promise.resolve(undefined);\n asyncRequests.set(cacheKey, dataPromise);\n return {\n new: true,\n promise: dataPromise,\n keyObject,\n cacheKey,\n };\n });\n fetchingObserver.notify();\n loadingObserver.notify();\n const results = await Promise.all(withPromises.map((val) => val.promise));\n withPromises.forEach((value, i) => {\n const promiseChanged = asyncRequests.get(value.cacheKey) !== value.promise;\n // if promise has changed in between, it means cache been invalidated or\n // new data are being fetched\n if (value.new && !promiseChanged) {\n asyncRequests.delete(value.cacheKey);\n const data = results[i];\n if (data) {\n self.addRecord(value.keyObject, data);\n }\n else if (!self.getRecord(value.keyObject)) {\n // if no data exist, put empty object\n self.addRecord(value.keyObject, {});\n }\n }\n });\n fetchingObserver.notify();\n loadingObserver.notify();\n return withPromises.map((val) => self.getRecord(val.keyObject));\n },\n getAllRecords() {\n const entries = Array.from(cache.entries());\n return entries.map(([key, entry]) => {\n return Object.assign(Object.assign({}, decodeCacheKey(key)), { data: entry.data });\n });\n },\n });\n return self;\n}\n\n/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n\r\nfunction __rest$1(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\n\nconst defaultObserverOptions = {\n tagAttributes: {\n textarea: ['placeholder'],\n input: ['value', 'placeholder'],\n img: ['alt'],\n '*': ['aria-label', 'title'],\n },\n restrictedElements: ['script', 'style'],\n highlightKeys: ['Alt'],\n highlightColor: 'rgb(255, 0, 0)',\n highlightWidth: 5,\n inputPrefix: '%-%tolgee:',\n inputSuffix: '%-%',\n passToParent: ['option', 'optgroup'],\n};\n\nconst DEFAULT_FORMAT_ERROR = 'invalid';\nconst DEFAULT_API_URL = 'https://app.tolgee.io';\nconst defaultValues = {\n defaultNs: '',\n observerOptions: defaultObserverOptions,\n observerType: 'invisible',\n onFormatError: DEFAULT_FORMAT_ERROR,\n apiUrl: DEFAULT_API_URL,\n};\nconst combineOptions = (...states) => {\n let result = {};\n states.forEach((state) => {\n result = Object.assign(Object.assign(Object.assign({}, result), state), { observerOptions: Object.assign(Object.assign({}, result.observerOptions), state === null || state === void 0 ? void 0 : state.observerOptions) });\n });\n return result;\n};\nfunction initState(options, previousState) {\n const initialOptions = combineOptions(defaultValues, previousState === null || previousState === void 0 ? void 0 : previousState.initialOptions, options);\n // remove extra '/' from url end\n initialOptions.apiUrl = sanitizeUrl(initialOptions.apiUrl);\n return {\n initialOptions,\n activeNamespaces: (previousState === null || previousState === void 0 ? void 0 : previousState.activeNamespaces) || new Map(),\n language: previousState === null || previousState === void 0 ? void 0 : previousState.language,\n pendingLanguage: previousState === null || previousState === void 0 ? void 0 : previousState.language,\n isInitialLoading: false,\n isRunning: false,\n };\n}\n\nfunction Plugins(getLanguage, getInitialOptions, getAvailableLanguages, getTranslationNs, getTranslation, changeTranslation) {\n const plugins = {\n ui: undefined,\n };\n const instances = {\n formatters: [],\n finalFormatter: undefined,\n observer: undefined,\n devBackend: undefined,\n backends: [],\n ui: undefined,\n languageDetector: undefined,\n languageStorage: undefined,\n };\n const onClick = async ({ keysAndDefaults, event }) => {\n var _a;\n const withNs = keysAndDefaults.map(({ key, ns, defaultValue }) => {\n return {\n key,\n defaultValue,\n ns: getTranslationNs({ key, ns }),\n translation: getTranslation({\n key,\n ns,\n }),\n };\n });\n (_a = instances.ui) === null || _a === void 0 ? void 0 : _a.handleElementClick(withNs, event);\n };\n const findPositions = (key, ns) => {\n var _a;\n return ((_a = instances.observer) === null || _a === void 0 ? void 0 : _a.findPositions(key, ns)) || [];\n };\n function translate(props) {\n const translation = getTranslation({\n key: props.key,\n ns: props.ns,\n });\n return self.formatTranslation(Object.assign(Object.assign({}, props), { translation, formatEnabled: true }));\n }\n function setObserver(observer) {\n instances.observer = observer === null || observer === void 0 ? void 0 : observer();\n }\n function hasObserver() {\n return Boolean(instances.observer);\n }\n function addFormatter(formatter) {\n if (formatter) {\n instances.formatters.push(formatter);\n }\n }\n function setFinalFormatter(formatter) {\n instances.finalFormatter = formatter;\n }\n function setUi(ui) {\n plugins.ui = ui;\n }\n function hasUi() {\n return Boolean(plugins.ui);\n }\n function setLanguageStorage(storage) {\n instances.languageStorage = storage;\n }\n function setLanguageDetector(detector) {\n instances.languageDetector = detector;\n }\n function detectLanguage() {\n if (!instances.languageDetector) {\n return undefined;\n }\n const availableLanguages = getAvailableLanguages();\n return instances.languageDetector.getLanguage({\n availableLanguages,\n });\n }\n function addBackend(backend) {\n if (backend) {\n instances.backends.push(backend);\n }\n }\n function setDevBackend(backend) {\n instances.devBackend = backend;\n }\n function addPlugin(tolgeeInstance, plugin) {\n const pluginTools = Object.freeze({\n setFinalFormatter,\n addFormatter,\n setObserver,\n hasObserver,\n setUi,\n hasUi,\n setDevBackend,\n addBackend,\n setLanguageDetector,\n setLanguageStorage,\n });\n plugin(tolgeeInstance, pluginTools);\n }\n const self = Object.freeze({\n addPlugin,\n run() {\n var _a, _b;\n const { apiKey, apiUrl, projectId, observerOptions } = getInitialOptions();\n instances.ui = (_a = plugins.ui) === null || _a === void 0 ? void 0 : _a.call(plugins, {\n apiKey: apiKey,\n apiUrl: apiUrl,\n projectId,\n highlight: self.highlight,\n changeTranslation,\n findPositions,\n });\n (_b = instances.observer) === null || _b === void 0 ? void 0 : _b.run({\n mouseHighlight: true,\n options: observerOptions,\n translate,\n onClick,\n });\n },\n stop() {\n var _a;\n instances.ui = undefined;\n (_a = instances.observer) === null || _a === void 0 ? void 0 : _a.stop();\n },\n getLanguageStorage() {\n return instances.languageStorage;\n },\n getInitialLanguage() {\n var _a;\n const availableLanguages = getAvailableLanguages();\n const languageOrPromise = (_a = instances.languageStorage) === null || _a === void 0 ? void 0 : _a.getLanguage();\n return valueOrPromise(languageOrPromise, (language) => {\n if ((!availableLanguages || availableLanguages.includes(language)) &&\n language) {\n return language;\n }\n return detectLanguage();\n });\n },\n setStoredLanguage(language) {\n var _a;\n (_a = instances.languageStorage) === null || _a === void 0 ? void 0 : _a.setLanguage(language);\n },\n getDevBackend() {\n return instances.devBackend;\n },\n getBackendRecord: (({ language, namespace }) => {\n for (const backend of instances.backends) {\n const data = backend.getRecord({ language, namespace });\n if (isPromise(data)) {\n return data === null || data === void 0 ? void 0 : data.catch((e) => {\n // eslint-disable-next-line no-console\n console.error(e);\n return {};\n });\n }\n if (data !== undefined) {\n return data;\n }\n }\n return undefined;\n }),\n getBackendDevRecord: (({ language, namespace }) => {\n var _a;\n const { apiKey, apiUrl, projectId } = getInitialOptions();\n return (_a = instances.devBackend) === null || _a === void 0 ? void 0 : _a.getRecord({\n apiKey,\n apiUrl,\n projectId,\n language,\n namespace,\n });\n }),\n getLanguageDetector() {\n return instances.languageDetector;\n },\n retranslate() {\n var _a;\n (_a = instances.observer) === null || _a === void 0 ? void 0 : _a.retranslate();\n },\n highlight: ((key, ns) => {\n var _a, _b;\n return ((_b = (_a = instances.observer) === null || _a === void 0 ? void 0 : _a.highlight) === null || _b === void 0 ? void 0 : _b.call(_a, key, ns)) || { unhighlight() { } };\n }),\n unwrap(text) {\n var _a;\n if (instances.observer) {\n return (_a = instances.observer) === null || _a === void 0 ? void 0 : _a.unwrap(text);\n }\n return { text, keys: [] };\n },\n wrap(params) {\n var _a;\n if (instances.observer) {\n return (_a = instances.observer) === null || _a === void 0 ? void 0 : _a.wrap(params);\n }\n return params.translation;\n },\n hasDevBackend() {\n return Boolean(self.getDevBackend());\n },\n formatTranslation(_a) {\n var _b;\n var { formatEnabled } = _a, props = __rest$1(_a, [\"formatEnabled\"]);\n const { key, translation, defaultValue, noWrap, params, orEmpty, ns } = props;\n const formattableTranslation = translation || defaultValue;\n let result = formattableTranslation || (orEmpty ? '' : key);\n const language = getLanguage();\n const isFormatEnabled = formatEnabled || !((_b = instances.observer) === null || _b === void 0 ? void 0 : _b.outputNotFormattable);\n const wrap = (result) => {\n if (instances.observer && !noWrap) {\n return instances.observer.wrap({\n key,\n translation: result,\n defaultValue,\n params,\n ns,\n });\n }\n return result;\n };\n result = wrap(result);\n try {\n if (formattableTranslation && language && isFormatEnabled) {\n for (const formatter of instances.formatters) {\n result = formatter.format({\n translation: result,\n language,\n params,\n });\n }\n }\n if (instances.finalFormatter &&\n formattableTranslation &&\n language &&\n isFormatEnabled) {\n result = instances.finalFormatter.format({\n translation: result,\n language,\n params,\n });\n }\n }\n catch (e) {\n // eslint-disable-next-line no-console\n console.error(e);\n const errorMessage = getErrorMessage(e) || DEFAULT_FORMAT_ERROR;\n const onFormatError = getInitialOptions().onFormatError;\n const formatErrorType = typeof onFormatError;\n if (formatErrorType === 'string') {\n result = onFormatError;\n }\n else if (formatErrorType === 'function') {\n result = onFormatError(errorMessage, props);\n }\n else {\n result = DEFAULT_FORMAT_ERROR;\n }\n // wrap error message, so it's detectable\n result = wrap(result);\n }\n return result;\n },\n });\n return self;\n}\n\nconst ValueObserver = (initialValue, valueGetter, handler) => {\n let previousValue = initialValue;\n return Object.freeze({\n init(value) {\n previousValue = value;\n },\n notify() {\n const value = valueGetter();\n if (previousValue !== value) {\n handler(value);\n }\n previousValue = value;\n },\n });\n};\n\nfunction State(onLanguageChange, onPendingLanguageChange, onRunningChange) {\n let state = initState();\n let devCredentials = undefined;\n const self = Object.freeze({\n init(options) {\n state = initState(options, state);\n },\n isRunning() {\n return state.isRunning;\n },\n setRunning(value) {\n if (state.isRunning !== value) {\n state.isRunning = value;\n onRunningChange.emit(value);\n }\n },\n isInitialLoading() {\n return state.isInitialLoading;\n },\n setInitialLoading(value) {\n state.isInitialLoading = value;\n },\n getLanguage() {\n return state.language || state.initialOptions.language;\n },\n setLanguage(language) {\n if (state.language !== language) {\n state.language = language;\n onLanguageChange.emit(language);\n }\n },\n getPendingLanguage() {\n return state.pendingLanguage || self.getLanguage();\n },\n setPendingLanguage(language) {\n if (state.pendingLanguage !== language) {\n state.pendingLanguage = language;\n onPendingLanguageChange.emit(language);\n }\n },\n getInitialOptions() {\n return Object.assign(Object.assign({}, state.initialOptions), devCredentials);\n },\n addActiveNs(ns) {\n const namespaces = getFallbackArray(ns);\n namespaces.forEach((namespace) => {\n const value = state.activeNamespaces.get(namespace);\n if (value !== undefined) {\n state.activeNamespaces.set(namespace, value + 1);\n }\n else {\n state.activeNamespaces.set(namespace, 1);\n }\n });\n },\n removeActiveNs(ns) {\n const namespaces = getFallbackArray(ns);\n namespaces.forEach((namespace) => {\n const value = state.activeNamespaces.get(namespace);\n if (value !== undefined && value > 1) {\n state.activeNamespaces.set(namespace, value - 1);\n }\n else {\n state.activeNamespaces.delete(namespace);\n }\n });\n },\n getRequiredNamespaces() {\n return unique([\n ...(state.initialOptions.ns || [state.initialOptions.defaultNs]),\n ...getFallbackArray(state.initialOptions.fallbackNs),\n ...state.activeNamespaces.keys(),\n ]);\n },\n getFallbackLangs(lang) {\n const language = lang || self.getLanguage();\n if (!language) {\n return [];\n }\n return unique([\n language,\n ...getFallbackFromStruct(language, state.initialOptions.fallbackLanguage),\n ]);\n },\n getFallbackNs() {\n return getFallbackArray(state.initialOptions.fallbackNs);\n },\n getDefaultNs(ns) {\n return ns === undefined ? state.initialOptions.defaultNs : ns;\n },\n getAvailableLanguages() {\n if (state.initialOptions.availableLanguages) {\n return state.initialOptions.availableLanguages;\n }\n else if (state.initialOptions.staticData) {\n const languagesFromStaticData = Object.keys(state.initialOptions.staticData).map((key) => decodeCacheKey(key).language);\n return Array.from(new Set(languagesFromStaticData));\n }\n },\n withDefaultNs(descriptor) {\n return {\n namespace: descriptor.namespace === undefined\n ? self.getInitialOptions().defaultNs\n : descriptor.namespace,\n language: descriptor.language,\n };\n },\n overrideCredentials(credentials) {\n if (credentials) {\n devCredentials = Object.assign(Object.assign({}, credentials), { apiUrl: sanitizeUrl(credentials.apiUrl) });\n }\n else {\n devCredentials = undefined;\n }\n },\n });\n return self;\n}\n\nfunction parseCombinedOptions(_a) {\n var { ns, noWrap, orEmpty, params, language } = _a, rest = __rest$1(_a, [\"ns\", \"noWrap\", \"orEmpty\", \"params\", \"language\"]);\n const options = {\n ns: ns,\n noWrap: noWrap,\n orEmpty: orEmpty,\n language: language,\n };\n return Object.assign(Object.assign({}, options), { params: Object.assign({}, rest) });\n}\nconst getTranslateProps = (keyOrProps, ...params) => {\n let result = {};\n let options;\n if (typeof keyOrProps === 'object') {\n result = keyOrProps;\n }\n else {\n result.key = keyOrProps;\n if (typeof params[0] === 'string') {\n result.defaultValue = params[0];\n options = params[1];\n }\n else if (typeof params[0] === 'object') {\n options = params[0];\n }\n }\n if (options) {\n result = Object.assign(Object.assign({}, parseCombinedOptions(options)), result);\n }\n return result;\n};\n\nfunction Controller({ options }) {\n const events = Events(getFallbackNs, getDefaultNs);\n const fetchingObserver = ValueObserver(false, () => cache.isFetching(), events.onFetchingChange.emit);\n const loadingObserver = ValueObserver(false, () => self.isLoading(), events.onLoadingChange.emit);\n const state = State(events.onLanguageChange, events.onPendingLanguageChange, events.onRunningChange);\n const pluginService = Plugins(state.getLanguage, state.getInitialOptions, state.getAvailableLanguages, getTranslationNs, getTranslation, changeTranslation);\n const cache = Cache(events.onCacheChange, pluginService.getBackendRecord, pluginService.getBackendDevRecord, state.withDefaultNs, state.isInitialLoading, fetchingObserver, loadingObserver);\n if (options) {\n init(options);\n }\n events.onUpdate.listen(() => {\n if (state.isRunning()) {\n pluginService.retranslate();\n }\n });\n function getFallbackNs() {\n return state.getFallbackNs();\n }\n function getDefaultNs(ns) {\n return state.getDefaultNs(ns);\n }\n // gets all namespaces where translation could be located\n // takes (ns|default, fallback ns)\n function getDefaultAndFallbackNs(ns) {\n return [...getFallbackArray(getDefaultNs(ns)), ...getFallbackNs()];\n }\n // gets all namespaces which need to be loaded\n // takes (ns|default, initial ns, fallback ns, active ns)\n function getRequiredNamespaces(ns) {\n return [\n ...getFallbackArray(ns || getDefaultNs()),\n ...state.getRequiredNamespaces(),\n ];\n }\n function changeTranslation(descriptor, key, value) {\n const keyObject = state.withDefaultNs(descriptor);\n const previousValue = cache.getTranslation(keyObject, key);\n cache.changeTranslation(keyObject, key, value);\n return {\n revert() {\n cache.changeTranslation(keyObject, key, previousValue);\n },\n };\n }\n function init(options) {\n state.init(options);\n cache.addStaticData(state.getInitialOptions().staticData);\n }\n function getRequiredRecords(lang, ns) {\n const languages = state.getFallbackLangs(lang);\n const namespaces = getRequiredNamespaces(ns);\n const result = [];\n languages.forEach((language) => {\n namespaces.forEach((namespace) => {\n if (!cache.exists({ language, namespace }, true)) {\n result.push({ language, namespace });\n }\n });\n });\n return result;\n }\n function loadRequiredRecords(lang, ns) {\n const descriptors = getRequiredRecords(lang, ns);\n if (descriptors.length) {\n return valueOrPromise(self.loadRecords(descriptors), () => { });\n }\n }\n function getTranslationNs({ key, ns }) {\n const languages = state.getFallbackLangs();\n const namespaces = getDefaultAndFallbackNs(ns || undefined);\n return cache.getTranslationNs(namespaces, languages, key);\n }\n function getTranslation({ key, ns, language }) {\n const namespaces = getDefaultAndFallbackNs(ns || undefined);\n const languages = state.getFallbackLangs(language);\n return cache.getTranslationFallback(namespaces, languages, key);\n }\n function loadInitial() {\n const data = valueOrPromise(initializeLanguage(), () => {\n // fail if there is no language\n return loadRequiredRecords();\n });\n if (isPromise(data)) {\n state.setInitialLoading(true);\n fetchingObserver.notify();\n loadingObserver.notify();\n return Promise.resolve(data).then(() => {\n state.setInitialLoading(false);\n fetchingObserver.notify();\n loadingObserver.notify();\n events.onInitialLoaded.emit();\n });\n }\n else {\n events.onInitialLoaded.emit();\n }\n }\n function initializeLanguage() {\n const existingLanguage = state.getLanguage();\n if (existingLanguage) {\n return;\n }\n const languageOrPromise = pluginService.getInitialLanguage();\n return valueOrPromise(languageOrPromise, (lang) => {\n const language = lang ||\n state.getInitialOptions().defaultLanguage;\n language && state.setLanguage(language);\n });\n }\n function checkCorrectConfiguration() {\n const languageComputable = pluginService.getLanguageDetector() || pluginService.getLanguageStorage();\n if (languageComputable) {\n const availableLanguages = state.getAvailableLanguages();\n if (!availableLanguages) {\n throw new Error(missingOptionError('availableLanguages'));\n }\n }\n if (!state.getLanguage() && !state.getInitialOptions().defaultLanguage) {\n throw new Error(missingOptionError(['defaultLanguage', 'language']));\n }\n }\n const self = Object.freeze(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, events), state), pluginService), cache), { init: init, getTranslation: getTranslation, changeTranslation: changeTranslation, async changeLanguage(language) {\n if (state.getPendingLanguage() === language &&\n state.getLanguage() === language) {\n return;\n }\n state.setPendingLanguage(language);\n if (state.isRunning()) {\n await loadRequiredRecords(language);\n }\n if (language === state.getPendingLanguage()) {\n // there might be parallel language change\n // we only want to apply latest\n state.setLanguage(language);\n pluginService.setStoredLanguage(language);\n }\n },\n async addActiveNs(ns, forget) {\n if (!forget) {\n state.addActiveNs(ns);\n }\n if (state.isRunning()) {\n await loadRequiredRecords(undefined, ns);\n }\n },\n loadRecords(descriptors) {\n return cache.loadRecords(descriptors, self.isDev());\n },\n async loadRecord(descriptor) {\n return (await self.loadRecords([descriptor]))[0];\n },\n isLoading(ns) {\n return cache.isLoading(state.getLanguage(), ns);\n },\n isLoaded(ns) {\n const language = state.getLanguage();\n if (!language) {\n return false;\n }\n const languages = state.getFallbackLangs(language);\n const namespaces = getRequiredNamespaces(ns);\n const result = [];\n languages.forEach((language) => {\n namespaces.forEach((namespace) => {\n if (!cache.exists({ language, namespace })) {\n result.push({ language, namespace });\n }\n });\n });\n return result.length === 0;\n }, t: ((...args) => {\n // @ts-ignore\n const params = getTranslateProps(...args);\n const translation = getTranslation(params);\n return pluginService.formatTranslation(Object.assign(Object.assign({}, params), { translation }));\n }), isDev() {\n return Boolean(state.getInitialOptions().apiKey && state.getInitialOptions().apiUrl);\n },\n run() {\n let result = undefined;\n checkCorrectConfiguration();\n if (!state.isRunning()) {\n state.setRunning(true);\n pluginService.run();\n result = loadInitial();\n }\n return Promise.resolve(result);\n },\n stop() {\n if (state.isRunning()) {\n pluginService.stop();\n state.setRunning(false);\n }\n } }));\n return self;\n}\n\nfunction createTolgee(options) {\n const controller = Controller({\n options,\n });\n if (controller.isDev()) {\n // override existing data in DevMode\n controller.invalidate();\n }\n // restarts tolgee while applying callback\n function withRestart(callback) {\n const wasRunning = controller.isRunning();\n wasRunning && controller.stop();\n callback();\n // invalidate cache when tolgee configuration is updated/plugin added in DevMode\n controller.isDev() && controller.invalidate();\n wasRunning && controller.run();\n }\n const self = Object.freeze({\n /**\n * Listen to tolgee events.\n */\n on: controller.on,\n /**\n * Listen for specific namespaces changes.\n *\n * ```\n * const sub = tolgee.onUpdate(handler)\n *\n * // subscribe to selected namespace\n * sub.subscribeNs(['common'])\n *\n * // unsubscribe\n * sub.unsubscribe()\n * ```\n */\n onNsUpdate: controller.onUpdate.listenSome,\n /**\n * Turn off/on events emitting. Is on by default.\n */\n setEmitterActive: controller.setEmitterActive,\n /**\n * @return current language if set.\n */\n getLanguage: controller.getLanguage,\n /**\n * `pendingLanguage` represents language which is currently being loaded.\n * @return current `pendingLanguage` if set.\n */\n getPendingLanguage: controller.getPendingLanguage,\n /**\n * Change current language.\n * - if not running sets `pendingLanguage`, `language` to the new value\n * - if running sets `pendingLanguage` to the value, fetches necessary data and then changes `language`\n *\n * @return Promise which is resolved when `language` is changed.\n */\n changeLanguage: controller.changeLanguage,\n /**\n * Temporarily change translation in cache.\n * @return object with revert method.\n */\n changeTranslation: controller.changeTranslation,\n /**\n * Adds namespace(s) list of active namespaces. And if tolgee is running, loads required data.\n */\n addActiveNs: controller.addActiveNs,\n /**\n * Remove namespace(s) from active namespaces.\n *\n * Tolgee internally counts how many times was each active namespace added,\n * so this method will remove namespace only if the counter goes down to 0.\n */\n removeActiveNs: controller.removeActiveNs,\n /**\n * Manually load multiple records from `Backend` (or `DevBackend` when in dev mode)\n *\n * It loads data together and adds them to cache in one operation, to prevent partly loaded state.\n */\n loadRecords: controller.loadRecords,\n /**\n * Manually load record from `Backend` (or `DevBackend` when in dev mode)\n */\n loadRecord: controller.loadRecord,\n /**\n *\n */\n addStaticData: controller.addStaticData,\n /**\n * Get record from cache.\n */\n getRecord: controller.getRecord,\n /**\n * Get all records from cache.\n */\n getAllRecords: controller.getAllRecords,\n /**\n * @param ns optional list of namespaces that you are interested in\n * @return `true` if there are data that need to be fetched.\n */\n isLoaded: controller.isLoaded,\n /**\n * @return `true` if tolgee is loading initial data (triggered by `run`).\n */\n isInitialLoading: controller.isInitialLoading,\n /**\n * @param ns optional list of namespaces that you are interested in\n * @return `true` if tolgee is loading some translations for the first time.\n */\n isLoading: controller.isLoading,\n /**\n * @param ns optional list of namespaces that you are interested in\n * @return `true` if tolgee is fetching some translations.\n */\n isFetching: controller.isFetching,\n /**\n * @return `true` if tolgee is running.\n */\n isRunning: controller.isRunning,\n /**\n * Changes internal state to running: true and loads initial files.\n * Runs runnable plugins mainly Observer if present.\n */\n run: controller.run,\n /**\n * Changes internal state to running: false and stops runnable plugins.\n */\n stop: controller.stop,\n /**\n * Returns translated and formatted key.\n * If Observer is present and tolgee is running, wraps result to be identifiable in the DOM.\n */\n t: controller.t,\n /**\n * Highlight keys that match selection.\n */\n highlight: controller.highlight,\n /**\n * @return current Tolgee options.\n */\n getInitialOptions: controller.getInitialOptions,\n /**\n * Tolgee is in dev mode if `DevTools` plugin is used and `apiKey` + `apiUrl` are specified.\n * @return `true` if tolgee is in dev mode.\n */\n isDev: controller.isDev,\n /**\n * Wraps translation if there is `Observer` plugin\n */\n wrap: controller.wrap,\n /**\n * Unwrap translation\n */\n unwrap: controller.unwrap,\n /**\n * Override creadentials passed on initialization.\n *\n * When called in running state, tolgee stops and runs again.\n */\n overrideCredentials(credentials) {\n withRestart(() => controller.overrideCredentials(credentials));\n },\n /**\n * Add tolgee plugin after initialization.\n *\n * When called in running state, tolgee stops and runs again.\n */\n addPlugin(plugin) {\n if (plugin) {\n withRestart(() => controller.addPlugin(self, plugin));\n }\n },\n /**\n * Updates options after instance creation. Extends existing options,\n * so it only changes the fields, that are listed.\n *\n * When called in running state, tolgee stops and runs again.\n */\n updateOptions(options) {\n if (options) {\n withRestart(() => controller.init(options));\n }\n },\n });\n return self;\n}\n/**\n * Tolgee chainable constructor.\n *\n * Usage:\n * ```\n * const tolgee = Tolgee().use(...).init(...)\n * ```\n */\nconst TolgeeCore = () => {\n const state = {\n plugins: [],\n options: {},\n };\n const tolgeeChain = Object.freeze({\n use(plugin) {\n state.plugins.push(plugin);\n return tolgeeChain;\n },\n updateDefaults(options) {\n state.options = combineOptions(state.options, options);\n return tolgeeChain;\n },\n init(options) {\n const tolgee = createTolgee(combineOptions(state.options, options));\n state.plugins.forEach(tolgee.addPlugin);\n return tolgee;\n },\n });\n return tolgeeChain;\n};\n\nconst ERROR_PARAM_EMPTY = 0, ERROR_UNEXPECTED_CHAR = 1, ERROR_UNEXPECTED_END = 2;\nclass FormatError extends Error {\n constructor(code, index, text) {\n let error;\n if (code === ERROR_PARAM_EMPTY) {\n error = 'Empty parameter';\n }\n else if (code === ERROR_UNEXPECTED_CHAR) {\n error = 'Unexpected character';\n }\n else {\n error = 'Unexpected end';\n }\n super(`Tolgee parser: ${error} at ${index} in \"${text}\"`);\n this.code = code;\n this.index = index;\n }\n}\n\nfunction isWhitespace(ch) {\n return /\\s/.test(ch);\n}\nconst STATE_TEXT = 0, STATE_ESCAPE_MAYBE = 1, STATE_ESCAPE = 2, STATE_PARAM = 3, STATE_PARAM_AFTER = 4;\nconst END_STATES = new Set([\n STATE_ESCAPE,\n STATE_ESCAPE_MAYBE,\n STATE_TEXT,\n]);\nconst CHAR_ESCAPE = \"'\";\nconst ESCAPABLE = new Set(['{', '}', CHAR_ESCAPE]);\nconst isAllowedInParam = (char) => {\n return /[0-9a-zA-Z_]/.test(char);\n};\nfunction formatParser(translation) {\n let state = STATE_TEXT;\n let text = '';\n let param = '';\n let ch = '';\n const texts = [];\n const params = [];\n let i = 0;\n function parsingError(code) {\n throw new FormatError(code, i, translation);\n }\n const addText = () => {\n texts.push(text);\n text = '';\n };\n const addParamChar = () => {\n if (!isAllowedInParam(ch)) {\n parsingError(ERROR_UNEXPECTED_CHAR);\n }\n param += ch;\n };\n const addParam = () => {\n if (param === '') {\n parsingError(ERROR_PARAM_EMPTY);\n }\n params.push(param);\n param = '';\n };\n for (i = 0; i < translation.length; i++) {\n ch = translation[i];\n switch (state) {\n case STATE_TEXT:\n if (ch === CHAR_ESCAPE) {\n text += ch;\n state = STATE_ESCAPE_MAYBE;\n }\n else if (ch === '{') {\n addText();\n state = STATE_PARAM;\n }\n else {\n text += ch;\n state = STATE_TEXT;\n }\n break;\n case STATE_ESCAPE_MAYBE:\n if (ESCAPABLE.has(ch)) {\n text = text.slice(0, -1) + ch;\n state = STATE_ESCAPE;\n }\n else {\n text += ch;\n state = STATE_TEXT;\n }\n break;\n case STATE_ESCAPE:\n if (ch === CHAR_ESCAPE) {\n state = STATE_TEXT;\n }\n else {\n text += ch;\n state = STATE_ESCAPE;\n }\n break;\n case STATE_PARAM:\n if (ch === '}') {\n addParam();\n state = STATE_TEXT;\n }\n else if (!isWhitespace(ch)) {\n addParamChar();\n state = STATE_PARAM;\n }\n else if (param !== '') {\n addParam();\n state = STATE_PARAM_AFTER;\n }\n break;\n case STATE_PARAM_AFTER:\n if (ch == '}') {\n state = STATE_TEXT;\n }\n else if (isWhitespace(ch)) {\n state = STATE_PARAM_AFTER;\n }\n else {\n parsingError(ERROR_UNEXPECTED_CHAR);\n }\n }\n }\n if (!END_STATES.has(state)) {\n parsingError(ERROR_UNEXPECTED_END);\n }\n addText();\n return [texts, params];\n}\n\nfunction formatter(translation, params) {\n const [texts, pars] = formatParser(translation);\n const result = [texts[0]];\n for (let i = 1; i < texts.length; i++) {\n const parameter = params === null || params === void 0 ? void 0 : params[pars[i - 1]];\n if (parameter === undefined) {\n throw new Error(`Missing parameter \"${pars[i - 1]}\" in \"${translation}\"`);\n }\n result.push(String(parameter));\n result.push(texts[i]);\n }\n return result.join('');\n}\n\nfunction createFormatSimple() {\n return {\n format: ({ translation, params }) => formatter(translation, params),\n };\n}\nconst FormatSimple = () => (tolgee, tools) => {\n tools.setFinalFormatter(createFormatSimple());\n return tolgee;\n};\n\n// needs to be same as in @tolgee/core package\nconst DEVTOOLS_ID = '__tolgee_dev_tools';\nconst PREFERRED_LANGUAGES_LOCAL_STORAGE_KEY = '__tolgee_preferredLanguages';\n/**\n * Use this if you want to indicate to tolgee that element contains key\n */\nconst TOLGEE_WRAPPED_ONLY_DATA_ATTRIBUTE = 'data-tolgee-key-only';\n/**\n * Use this attribute if you want tolgee Observer to not touch part of the DOM\n */\nconst TOLGEE_RESTRICT_ATTRIBUTE = 'data-tolgee-restricted';\n/**\n * This attribute is present on elements that have been registred by tolgee and are clickable for in-context\n */\nconst TOLGEE_ATTRIBUTE_NAME = '_tolgee';\nconst TOLGEE_HIGHLIGHTER_CLASS = '_tolgee-highlighter';\n\nfunction isSSR() {\n var _a, _b;\n return typeof ((_b = (_a = globalThis.window) === null || _a === void 0 ? void 0 : _a.document) === null || _b === void 0 ? void 0 : _b.createElement) === 'undefined';\n}\nfunction throwIfSSR(origin) {\n if (isSSR()) {\n throw new Error(`${origin}: Can't run on the server`);\n }\n}\n\nfunction DomHelper(options) {\n function getParentElement(node) {\n if (node.parentElement) {\n return node.parentElement;\n }\n if (node.ownerElement) {\n return node.ownerElement || undefined;\n }\n }\n const self = Object.freeze({\n getSuitableParent(node) {\n const domParent = getParentElement(node);\n if (domParent === undefined) {\n // eslint-disable-next-line no-console\n console.error(node);\n throw new Error('No suitable parent found for node above.');\n }\n if (!options.passToParent) {\n return domParent;\n }\n if (Array.isArray(options.passToParent)) {\n const tagNameEquals = (elementTagName) => domParent.tagName.toLowerCase() === elementTagName.toLowerCase();\n if (options.passToParent.findIndex(tagNameEquals) === -1) {\n return domParent;\n }\n }\n if (typeof options.passToParent === 'function') {\n if (!options.passToParent(domParent)) {\n return domParent;\n }\n }\n return self.getSuitableParent(domParent);\n },\n });\n return self;\n}\n\nfunction initElementMeta(element) {\n return {\n element,\n nodes: new Map(),\n };\n}\nfunction initNodeMeta(oldTextContent, keys) {\n return {\n oldTextContent,\n keys,\n };\n}\n\nconst HIGHLIGHTER_BASE_STYLE = {\n pointerEvents: 'none',\n position: 'fixed',\n boxSizing: 'content-box',\n zIndex: String(Number.MAX_SAFE_INTEGER),\n contain: 'layout',\n display: 'block',\n borderStyle: 'solid',\n borderRadius: '4px',\n};\nfunction ElementHighlighter({ highlightColor, highlightWidth }) {\n function initHighlightFunction(element, elementMeta) {\n elementMeta.highlight = () => {\n if (!element.isConnected) {\n return;\n }\n let highlightEl = elementMeta.highlightEl;\n if (!highlightEl) {\n highlightEl = document.createElement('div');\n highlightEl.classList.add(TOLGEE_HIGHLIGHTER_CLASS);\n Object.entries(HIGHLIGHTER_BASE_STYLE).forEach(([key, value]) => {\n // @ts-ignore\n highlightEl.style[key] = value;\n });\n highlightEl.style.borderColor = highlightColor;\n elementMeta.highlightEl = highlightEl;\n document.body.appendChild(highlightEl);\n }\n const shape = element.getBoundingClientRect();\n highlightEl.style.borderWidth = highlightWidth + 'px';\n highlightEl.style.top = shape.top - highlightWidth + 'px';\n highlightEl.style.left = shape.left - highlightWidth + 'px';\n highlightEl.style.width = shape.width + 'px';\n highlightEl.style.height = shape.height + 'px';\n };\n }\n function initUnhighlightFunction(element, elementMeta) {\n elementMeta.unhighlight = () => {\n var _a;\n (_a = elementMeta.highlightEl) === null || _a === void 0 ? void 0 : _a.remove();\n elementMeta.highlightEl = undefined;\n };\n }\n return Object.freeze({\n initHighlighter(element, elementMeta) {\n initHighlightFunction(element, elementMeta);\n initUnhighlightFunction(element, elementMeta);\n },\n });\n}\n\nfunction xPathEvaluate(expression, targetNode) {\n var _a;\n const searchableElement = closestElement(targetNode);\n const result = [];\n if (!searchableElement) {\n return result;\n }\n const evaluated = document === null || document === void 0 ? void 0 : document.evaluate(expression, searchableElement, undefined, XPathResult.ANY_TYPE);\n let node;\n while ((node = (_a = evaluated === null || evaluated === void 0 ? void 0 : evaluated.iterateNext) === null || _a === void 0 ? void 0 : _a.call(evaluated))) {\n result.push(node);\n }\n return result;\n}\nfunction closestElement(node) {\n switch (node.nodeType) {\n case Node.ATTRIBUTE_NODE:\n return node.ownerElement || undefined;\n case Node.TEXT_NODE:\n return node.parentElement || undefined;\n case Node.DOCUMENT_NODE:\n case Node.ELEMENT_NODE:\n return node;\n default:\n // we are not interested in other nodes\n return undefined;\n }\n}\nfunction getNodeText(node) {\n return node.textContent;\n}\nfunction setNodeText(node, text) {\n node.textContent = text;\n}\nfunction nodeContains(descendant, node) {\n if (descendant.contains(node)) {\n return true;\n }\n if (node instanceof Attr) {\n const ownerContainsAttr = node.ownerElement &&\n Object.values(node.ownerElement.attributes).indexOf(node) > -1;\n if (descendant.contains(node.ownerElement) && ownerContainsAttr) {\n return true;\n }\n }\n return false;\n}\nfunction compareDescriptors(descriptor, criteria) {\n var _a;\n const keyMatches = descriptor.key === undefined ||\n criteria.key === undefined ||\n criteria.key === descriptor.key;\n const nsMatches = descriptor.ns === undefined ||\n criteria.ns === undefined ||\n ((_a = descriptor.ns) === null || _a === void 0 ? void 0 : _a.findIndex((ns) => { var _a; return (_a = criteria.ns) === null || _a === void 0 ? void 0 : _a.includes(ns); })) !== -1;\n return keyMatches && nsMatches;\n}\n\nconst eCapture = {\n capture: true,\n};\nconst ePassive = {\n capture: true,\n passive: true,\n};\nfunction MouseEventHandler({ highlightKeys, elementStore, onClick, options, }) {\n var _a, _b;\n let keysDown = new Set();\n let highlighted;\n let cursorPosition;\n const documentOrShadowRoot = (((_a = options.targetElement) === null || _a === void 0 ? void 0 : _a.getRootNode()) ||\n document);\n const targetDocument = ((_b = options.targetElement) === null || _b === void 0 ? void 0 : _b.ownerDocument) || document;\n function highlight(el) {\n var _a;\n if (highlighted !== el) {\n unhighlight();\n const meta = elementStore.get(el);\n if (meta) {\n meta.preventClean = true;\n (_a = meta.highlight) === null || _a === void 0 ? void 0 : _a.call(meta);\n highlighted = el;\n }\n }\n }\n function unhighlight() {\n var _a;\n const meta = elementStore.get(highlighted);\n if (meta) {\n meta.preventClean = false;\n (_a = meta.unhighlight) === null || _a === void 0 ? void 0 : _a.call(meta);\n highlighted = undefined;\n }\n }\n function updateHighlight() {\n const position = cursorPosition;\n let newHighlighted;\n if (position && areKeysDown()) {\n const element = documentOrShadowRoot.elementFromPoint(position.x, position.y);\n if (element) {\n newHighlighted = getClosestTolgeeElement(element);\n }\n }\n highlight(newHighlighted);\n }\n function updateCursorPosition(position) {\n cursorPosition = position;\n updateHighlight();\n }\n function blockEvents(e) {\n if (areKeysDown() && !isInUiDialog(e.target)) {\n e.stopPropagation();\n e.preventDefault();\n }\n }\n function onMouseMove(e) {\n updateCursorPosition({ x: e.clientX, y: e.clientY });\n }\n function onBlur() {\n keysDown = new Set();\n // keysChanged.emit(areKeysDown());\n updateHighlight();\n }\n function onKeyDown(e) {\n const modifierKey = e.key;\n if (modifierKey !== undefined) {\n keysDown.add(modifierKey);\n // keysChanged.emit(areKeysDown());\n }\n updateHighlight();\n }\n function onKeyUp(e) {\n keysDown.delete(e.key);\n // keysChanged.emit(areKeysDown());\n updateHighlight();\n }\n function onScroll() {\n var _a;\n const meta = elementStore.get(highlighted);\n (_a = meta === null || meta === void 0 ? void 0 : meta.highlight) === null || _a === void 0 ? void 0 : _a.call(meta);\n }\n function handleClick(e) {\n blockEvents(e);\n if (areKeysDown() && highlighted) {\n onClick(e, highlighted);\n unhighlight();\n }\n }\n function initEventListeners() {\n targetDocument.addEventListener('blur', onBlur, eCapture);\n targetDocument.addEventListener('keydown', onKeyDown, eCapture);\n targetDocument.addEventListener('keyup', onKeyUp, eCapture);\n targetDocument.addEventListener('mousemove', onMouseMove, ePassive);\n targetDocument.addEventListener('scroll', onScroll, ePassive);\n targetDocument.addEventListener('click', handleClick, eCapture);\n targetDocument.addEventListener('mouseenter', blockEvents, eCapture);\n targetDocument.addEventListener('mouseover', blockEvents, eCapture);\n targetDocument.addEventListener('mouseout', blockEvents, eCapture);\n targetDocument.addEventListener('mouseleave', blockEvents, eCapture);\n targetDocument.addEventListener('mousedown', blockEvents, eCapture);\n targetDocument.addEventListener('mouseup', blockEvents, eCapture);\n }\n function removeEventListeners() {\n targetDocument.removeEventListener('blur', onBlur, eCapture);\n targetDocument.removeEventListener('keydown', onKeyDown, eCapture);\n targetDocument.removeEventListener('keyup', onKeyUp, eCapture);\n targetDocument.removeEventListener('mousemove', onMouseMove, ePassive);\n targetDocument.removeEventListener('scroll', onScroll, ePassive);\n targetDocument.removeEventListener('click', handleClick, eCapture);\n targetDocument.removeEventListener('mouseenter', blockEvents, eCapture);\n targetDocument.removeEventListener('mouseover', blockEvents, eCapture);\n targetDocument.removeEventListener('mouseout', blockEvents, eCapture);\n targetDocument.removeEventListener('mouseleave', blockEvents, eCapture);\n targetDocument.removeEventListener('mousedown', blockEvents, eCapture);\n targetDocument.removeEventListener('mouseup', blockEvents, eCapture);\n }\n function isInUiDialog(element) {\n return Boolean(findAncestor(element, (el) => el.id === DEVTOOLS_ID));\n }\n function getClosestTolgeeElement(element) {\n return findAncestor(element, (el) => elementStore.get(el));\n }\n function findAncestor(element, func) {\n if (func(element)) {\n return element;\n }\n if (element === null || element === void 0 ? void 0 : element.parentElement) {\n return findAncestor(element.parentElement, func);\n }\n return undefined;\n }\n function areKeysDown() {\n for (const key of highlightKeys) {\n if (!keysDown.has(key)) {\n return false;\n }\n }\n return true;\n }\n return Object.freeze({\n stop() {\n removeEventListeners();\n },\n run() {\n initEventListeners();\n },\n });\n}\n\nfunction ElementRegistry(options, elementStore, onClick) {\n const elementHighlighter = ElementHighlighter({\n highlightColor: options.highlightColor,\n highlightWidth: options.highlightWidth,\n });\n const eventHandler = MouseEventHandler({\n highlightKeys: options.highlightKeys,\n elementStore,\n onClick(event, el) {\n const meta = elementStore.get(el);\n onClick({\n event,\n keysAndDefaults: getKeysAndDefaults(meta),\n });\n },\n options,\n });\n function isRestricted(element) {\n const restrictedElements = options.restrictedElements;\n return (restrictedElements.indexOf(element.tagName.toLowerCase()) !== -1 ||\n element.closest(`[${TOLGEE_RESTRICT_ATTRIBUTE}]`) !== null);\n }\n function cleanElementInactiveNodes(meta) {\n meta.nodes = new Map(getActiveNodes(meta));\n }\n function getTargetElement() {\n return options.targetElement || document.body;\n }\n function* getActiveNodes(meta) {\n for (const [node, nodeMeta] of meta.nodes.entries()) {\n if (nodeContains(getTargetElement(), node)) {\n yield [node, nodeMeta];\n }\n }\n }\n function cleanElement(element, meta) {\n var _a;\n if (meta.highlightEl) {\n (_a = meta.unhighlight) === null || _a === void 0 ? void 0 : _a.call(meta);\n }\n element.removeAttribute(TOLGEE_ATTRIBUTE_NAME);\n elementStore.remove(element);\n }\n function getKeyOptions(meta) {\n const nodes = Array.from(meta.nodes.values());\n return nodes.reduce((acc, curr) => [\n ...acc,\n ...curr.keys.map((k) => ({\n key: k.key,\n defaultValue: k.defaultValue,\n ns: k.ns,\n })),\n ], []);\n }\n function getKeysAndDefaults(meta) {\n return getKeyOptions(meta);\n }\n return Object.freeze({\n register(element, node, nodeMeta) {\n if (isRestricted(element)) {\n return;\n }\n const tolgeeElement = element;\n let elementMeta = elementStore.get(tolgeeElement);\n if (!elementMeta) {\n elementMeta = initElementMeta(tolgeeElement);\n elementStore.set(tolgeeElement, elementMeta);\n tolgeeElement.setAttribute(TOLGEE_ATTRIBUTE_NAME, 'true');\n }\n elementMeta.nodes.set(node, nodeMeta);\n elementHighlighter.initHighlighter(tolgeeElement, elementMeta);\n },\n forEachElement: elementStore.forEachElement,\n refreshAll() {\n elementStore.forEachElement((element, meta) => {\n if (meta.preventClean) {\n return;\n }\n cleanElementInactiveNodes(meta);\n if (meta.nodes.size === 0) {\n cleanElement(element, meta);\n }\n });\n },\n findAll(key, ns) {\n const result = [];\n elementStore.forEachElement((_, meta) => {\n for (const nodeMeta of meta.nodes.values()) {\n const fits = nodeMeta.keys.find((val) => compareDescriptors({ key, ns: getFallback(ns) }, { key: val.key, ns: getFallback(val.ns) }));\n if (fits) {\n result.push(meta);\n break;\n }\n }\n });\n return result;\n },\n run(mouseHighlight) {\n if (mouseHighlight) {\n eventHandler.run();\n }\n },\n stop() {\n eventHandler.stop();\n elementStore.forEachElement((_, meta) => {\n var _a;\n if (meta.highlightEl) {\n (_a = meta.unhighlight) === null || _a === void 0 ? void 0 : _a.call(meta);\n }\n });\n },\n });\n}\n\nfunction ElementStore() {\n const registredElements = new Map();\n return Object.freeze({\n set(el, meta) {\n registredElements.set(el, meta);\n },\n get(el) {\n return el && registredElements.get(el);\n },\n remove(el) {\n return registredElements.delete(el);\n },\n forEachElement(callback) {\n registredElements.forEach((value, key) => callback(key, value));\n },\n });\n}\n\nfunction NodeHandler(options, wrapper) {\n const self = Object.freeze({\n handleAttributes(node) {\n let result = [];\n for (const [tag, attributes] of Object.entries(options.tagAttributes)) {\n for (const attribute of attributes) {\n const expression = wrapper.getAttributeXPath({ tag, attribute });\n const nodes = xPathEvaluate(expression, node);\n result = [...result, ...nodes];\n }\n }\n return result;\n },\n handleChildList(node) {\n let result = [];\n result = result.concat(self.handleAttributes(node));\n result = result.concat(self.handleText(node));\n // wrappedHandler(node);\n return result;\n },\n handleText(node) {\n const xPath = wrapper.getTextXPath();\n const nodes = xPathEvaluate(xPath, node);\n return nodes;\n },\n });\n return self;\n}\n\nfunction GeneralObserver() {\n let isObserving = false;\n let instance;\n const elementStore = ElementStore();\n function createRunningInstance({ mouseHighlight, options, wrapper, onClick, }) {\n if (isSSR()) {\n return;\n }\n const domHelper = DomHelper(options);\n const nodeHandler = NodeHandler(options, wrapper);\n const elementRegistry = ElementRegistry(options, elementStore, onClick);\n function handleNodes(nodes) {\n for (const textNode of nodes) {\n const oldTextContent = getNodeText(textNode);\n const result = oldTextContent ? wrapper.unwrap(oldTextContent) : null;\n if (result) {\n const { text, keys } = result;\n setNodeText(textNode, text);\n const nodeMeta = initNodeMeta(oldTextContent, keys);\n const parentElement = domHelper.getSuitableParent(textNode);\n elementRegistry.register(parentElement, textNode, nodeMeta);\n }\n }\n }\n function handleKeyAttribute(node) {\n const xPath = `./descendant-or-self::*[@${TOLGEE_WRAPPED_ONLY_DATA_ATTRIBUTE}]`;\n const elements = xPathEvaluate(xPath, node);\n elements.forEach((element) => {\n const node = element.getAttributeNode(TOLGEE_WRAPPED_ONLY_DATA_ATTRIBUTE);\n const parentElement = domHelper.getSuitableParent(node);\n elementRegistry.register(parentElement, node, {\n oldTextContent: '',\n keys: [{ key: getNodeText(node) }],\n keyAttributeOnly: true,\n });\n });\n }\n const observer = new MutationObserver((mutationsList) => {\n if (!isObserving) {\n return;\n }\n for (const mutation of mutationsList) {\n let result = [];\n switch (mutation.type) {\n case 'characterData':\n result = nodeHandler.handleText(mutation.target);\n break;\n case 'childList':\n handleKeyAttribute(mutation.target);\n result = nodeHandler.handleChildList(mutation.target);\n break;\n case 'attributes':\n handleKeyAttribute(mutation.target);\n result = nodeHandler.handleAttributes(mutation.target);\n break;\n }\n handleNodes(result);\n }\n elementRegistry.refreshAll();\n });\n const targetElement = options.targetElement || document.body;\n isObserving = true;\n elementRegistry.run(mouseHighlight);\n // initially go through all elements\n handleKeyAttribute(targetElement);\n handleNodes(nodeHandler.handleChildList(targetElement));\n // then observe for changes\n observer.observe(targetElement, {\n attributes: true,\n childList: true,\n subtree: true,\n characterData: true,\n });\n return {\n stop() {\n isObserving = false;\n elementRegistry.stop();\n observer.disconnect();\n },\n elementRegistry,\n wrapper,\n };\n }\n const self = Object.freeze({\n run(props) {\n instance = createRunningInstance(props);\n },\n stop() {\n instance === null || instance === void 0 ? void 0 : instance.stop();\n },\n forEachElement(callback) {\n var _a, _b;\n (_b = instance === null || instance === void 0 ? void 0 : (_a = instance.elementRegistry).forEachElement) === null || _b === void 0 ? void 0 : _b.call(_a, callback);\n },\n highlight(key, ns) {\n const elements = (instance === null || instance === void 0 ? void 0 : instance.elementRegistry.findAll(key, ns)) || [];\n elements.forEach((el) => { var _a; return (_a = el.highlight) === null || _a === void 0 ? void 0 : _a.call(el); });\n return {\n unhighlight() {\n elements.forEach((el) => { var _a; return (_a = el.unhighlight) === null || _a === void 0 ? void 0 : _a.call(el); });\n },\n };\n },\n findPositions(key, ns) {\n const elements = (instance === null || instance === void 0 ? void 0 : instance.elementRegistry.findAll(key, ns)) || [];\n const result = [];\n // sort elements by their position in the dom\n elements.sort((a, b) => {\n if (a.element.compareDocumentPosition(b.element) &\n Node.DOCUMENT_POSITION_FOLLOWING) {\n return -1;\n }\n else {\n return 1;\n }\n });\n elements.forEach((meta) => {\n const shape = meta.element.getBoundingClientRect();\n meta.nodes.forEach((node) => {\n node.keys.forEach((val) => {\n if (compareDescriptors({ key, ns: getFallback(ns) }, { key: val.key, ns: getFallback(val.ns) }))\n result.push({\n position: {\n x: shape.x,\n y: shape.y,\n width: shape.width,\n height: shape.height,\n },\n keyName: val.key,\n keyNamespace: val.ns || '',\n });\n });\n });\n });\n return result;\n },\n unwrap(text) {\n if (instance) {\n return instance.wrapper.unwrap(text);\n }\n return {\n text,\n keys: [],\n };\n },\n wrap(props) {\n if (instance) {\n return instance.wrapper.wrap(props);\n }\n return props.translation || '';\n },\n });\n return self;\n}\n\nconst INVISIBLE_CHARACTERS = ['\\u200C', '\\u200D'];\nconst INVISIBLE_REGEX = RegExp(`([${INVISIBLE_CHARACTERS.join('')}]{9})+`, 'gu');\nfunction toBytes(text) {\n return Array.from(new TextEncoder().encode(text));\n}\nfunction fromBytes(bytes) {\n return new TextDecoder().decode(new Uint8Array(bytes));\n}\nfunction padToWholeBytes(binary) {\n const needsToAdd = 8 - binary.length;\n return '0'.repeat(needsToAdd) + binary;\n}\nfunction encodeMessage(text) {\n const bytes = toBytes(text).map(Number);\n const binary = bytes\n .map((byte) => padToWholeBytes(byte.toString(2)) + '0')\n .join('');\n const result = Array.from(binary)\n .map((b) => INVISIBLE_CHARACTERS[Number(b)])\n .join('');\n return result;\n}\nfunction decodeMessage(message) {\n const binary = Array.from(message)\n .map((character) => {\n return INVISIBLE_CHARACTERS.indexOf(character);\n })\n .map(String)\n .join('');\n const textBytes = binary.match(/(.{9})/g);\n const codes = Uint8Array.from((textBytes === null || textBytes === void 0 ? void 0 : textBytes.map((byte) => parseInt(byte.slice(0, 8), 2))) || []);\n return fromBytes(codes);\n}\nfunction decodeFromText(text) {\n var _a;\n const invisibleMessages = (_a = text\n .match(INVISIBLE_REGEX)) === null || _a === void 0 ? void 0 : _a.filter((m) => m.length > 8);\n return (invisibleMessages === null || invisibleMessages === void 0 ? void 0 : invisibleMessages.map(decodeMessage)) || [];\n}\nfunction removeSecrets(text) {\n return text.replace(INVISIBLE_REGEX, '');\n}\nfunction stringToCodePoints(text) {\n const result = [];\n for (const codePoint of text) {\n result.push(codePoint.codePointAt(0));\n }\n return result;\n}\n\nfunction ValueMemory() {\n const values = [];\n return Object.freeze({\n valueToNumber(key) {\n let index = values.indexOf(key);\n if (index === -1) {\n index = values.length;\n values.push(key);\n }\n return index;\n },\n numberToValue(num) {\n return values[num];\n },\n });\n}\n\nfunction InvisibleWrapper() {\n const keyMemory = ValueMemory();\n function encodeValue(data) {\n const value = {\n k: data.key,\n n: data.ns || undefined,\n d: data.defaultValue,\n };\n return JSON.stringify(value);\n }\n function decodeValue(value) {\n return JSON.parse(value || '{}');\n }\n return Object.freeze({\n unwrap(text) {\n const keysAndParams = [];\n const messages = decodeFromText(text);\n messages.forEach((msg) => {\n const [valueCode] = stringToCodePoints(msg);\n const encodedValue = keyMemory.numberToValue(valueCode);\n const { k: key, d: defaultValue, n: ns } = decodeValue(encodedValue);\n keysAndParams.push({\n key,\n defaultValue,\n ns,\n });\n });\n const result = removeSecrets(text);\n return { text: result, keys: keysAndParams };\n },\n wrap({ key, defaultValue, translation, ns }) {\n const encodedValue = encodeValue({ key, ns, defaultValue });\n const code = keyMemory.valueToNumber(encodedValue);\n const value = translation || '';\n const invisibleMark = encodeMessage(String.fromCodePoint(code));\n return typeof value === 'string' ? value + invisibleMark : value;\n },\n getTextXPath() {\n return `./descendant-or-self::text()[contains(., '${INVISIBLE_CHARACTERS[0]}${INVISIBLE_CHARACTERS[0]}') or contains(., '${INVISIBLE_CHARACTERS[1]}${INVISIBLE_CHARACTERS[0]}')]`;\n },\n getAttributeXPath({ tag, attribute }) {\n return `descendant-or-self::${tag}/@${attribute}[contains(., '${INVISIBLE_CHARACTERS[0]}${INVISIBLE_CHARACTERS[0]}') or contains(., '${INVISIBLE_CHARACTERS[1]}${INVISIBLE_CHARACTERS[0]}')]`;\n },\n });\n}\n\nconst InvisibleObserver = () => () => {\n const observer = GeneralObserver();\n const self = Object.freeze(Object.assign(Object.assign({}, observer), { run(props) {\n const wrapper = InvisibleWrapper();\n observer.run(Object.assign(Object.assign({}, props), { wrapper }));\n },\n retranslate() { }, outputNotFormattable: false }));\n return self;\n};\n\nfunction isCharEscaped(position, fullString) {\n let escapeCharsCount = 0;\n while (position > -1 && fullString[position - 1] === '\\\\') {\n escapeCharsCount++;\n position--;\n }\n return escapeCharsCount % 2 == 1;\n}\n\nfunction TextWrapper({ inputPrefix, inputSuffix, translate, }) {\n function getRawUnWrapRegex() {\n const escapedPrefix = escapeForRegExp(inputPrefix);\n const escapedSuffix = escapeForRegExp(inputSuffix);\n return `(\\\\\\\\?)(${escapedPrefix}(.*?)${escapedSuffix})`;\n }\n function parseUnwrapped(unwrappedString) {\n let escaped = false;\n let actual = '';\n let paramName = '';\n let readingState = 'KEY';\n const result = {\n key: '',\n ns: undefined,\n params: {},\n defaultValue: undefined,\n };\n const addNamespace = (ns) => {\n result.ns = ns;\n };\n for (const char of unwrappedString) {\n if (char === '\\\\' && !escaped) {\n escaped = true;\n continue;\n }\n if (escaped) {\n escaped = false;\n actual += char;\n continue;\n }\n if (readingState === 'KEY' && char === ',') {\n readingState = 'DEFAULT_VALUE';\n result.key = actual;\n actual = '';\n continue;\n }\n if (readingState === 'KEY' && char === '|') {\n readingState = 'NAMESPACE';\n result.key = actual;\n actual = '';\n continue;\n }\n if (readingState === 'NAMESPACE' && char === ',') {\n readingState = 'DEFAULT_VALUE';\n addNamespace(actual);\n actual = '';\n continue;\n }\n if (readingState === 'KEY' && char === ':') {\n readingState = 'PARAM_NAME';\n result.key = actual;\n actual = '';\n continue;\n }\n if (readingState === 'DEFAULT_VALUE' && char === ':') {\n readingState = 'PARAM_NAME';\n result.defaultValue = actual;\n actual = '';\n continue;\n }\n if (readingState === 'PARAM_NAME' && char === ':') {\n readingState = 'PARAM_VALUE';\n paramName = actual;\n actual = '';\n continue;\n }\n if (readingState === 'PARAM_VALUE' && char === ',') {\n readingState = 'PARAM_NAME';\n result.params[paramName] = actual;\n actual = '';\n continue;\n }\n actual += char;\n }\n if (readingState === 'KEY') {\n result.key = actual;\n }\n if (readingState === 'DEFAULT_VALUE') {\n result.defaultValue = actual;\n }\n if (readingState === 'PARAM_VALUE') {\n result.params[paramName] = actual;\n }\n if (readingState === 'NAMESPACE') {\n addNamespace(actual);\n }\n return result;\n }\n function getTranslatedWithMetadata(text) {\n const { key, params, defaultValue, ns } = parseUnwrapped(text);\n const translated = translate({\n key,\n params,\n defaultValue,\n ns,\n noWrap: true,\n });\n return { translated, key, params, defaultValue, ns };\n }\n function escapeForRegExp(string) {\n return string.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n }\n function escapeParam(param) {\n if (typeof param === 'string') {\n return param.replace(/[,:|\\\\]/gs, '\\\\$&');\n }\n if (typeof param === 'number' || typeof param === 'bigint') {\n return param.toString();\n }\n // eslint-disable-next-line no-console\n console.warn(`Parameters of type \"${typeof param}\" are not supported in \"text\" wrapper mode.`);\n return param;\n }\n return Object.freeze({\n wrap({ key, params, defaultValue, ns }) {\n let paramString = Object.entries(params || {})\n .map(([name, value]) => `${escapeParam(name)}:${escapeParam(value)}`)\n .join(',');\n paramString = paramString.length ? `:${paramString}` : '';\n const defaultString = defaultValue !== undefined ? `,${escapeParam(defaultValue)}` : '';\n const nsArray = typeof ns === 'string' ? [ns] : ns;\n const namespaces = (nsArray === null || nsArray === void 0 ? void 0 : nsArray.length)\n ? `|${nsArray.map((ns) => escapeParam(ns)).join('|')}`\n : '';\n return `${inputPrefix}${escapeParam(key)}${namespaces}${defaultString}${paramString}${inputSuffix}`;\n },\n unwrap(text) {\n const matchRegexp = new RegExp(getRawUnWrapRegex(), 'gs');\n const keysAndParams = [];\n let matched = false;\n let match;\n let start = 0;\n let result = '';\n while ((match = matchRegexp.exec(text)) !== null) {\n let pre = match[1];\n const [fullMatch, _, wrapped, unwrapped] = match;\n const { index, input } = match;\n result += input.substr(start, index - start);\n start = index + fullMatch.length;\n if (pre === '\\\\') {\n if (!isCharEscaped(index, text)) {\n result += wrapped;\n continue;\n }\n pre = '';\n }\n const translated = getTranslatedWithMetadata(unwrapped);\n keysAndParams.push({\n key: translated.key,\n params: translated.params,\n defaultValue: translated.defaultValue,\n ns: translated.ns,\n });\n matched = true;\n result += pre + translated.translated;\n }\n result += text.substring(start);\n if (matched) {\n return { text: result, keys: keysAndParams };\n }\n return { text: text, keys: [] };\n },\n getTextXPath() {\n return `./descendant-or-self::text()[contains(., '${inputPrefix}') and contains(., '${inputSuffix}')]`;\n },\n getAttributeXPath({ tag, attribute }) {\n return `descendant-or-self::${tag}/@${attribute}[contains(., '${inputPrefix}') and contains(., '${inputSuffix}')]`;\n },\n });\n}\n\nconst TextObserver = () => () => {\n const observer = GeneralObserver();\n const self = Object.freeze(Object.assign(Object.assign({}, observer), { run(props) {\n const wrapper = TextWrapper({\n inputPrefix: props.options.inputPrefix,\n inputSuffix: props.options.inputSuffix,\n translate: props.translate,\n });\n observer.run(Object.assign(Object.assign({}, props), { wrapper }));\n },\n retranslate() {\n observer.forEachElement((_, elMeta) => {\n for (const [node, nodeMeta] of elMeta.nodes.entries()) {\n if (nodeMeta.keyAttributeOnly) {\n return;\n }\n const result = observer.unwrap(nodeMeta.oldTextContent);\n if (result) {\n setNodeText(node, result.text);\n }\n }\n });\n }, outputNotFormattable: true }));\n return self;\n};\n\nconst ObserverPlugin = () => (tolgee, tools) => {\n if (tolgee.getInitialOptions().observerType === 'text') {\n tools.setObserver(TextObserver());\n }\n else {\n tools.setObserver(InvisibleObserver());\n }\n return tolgee;\n};\n\nconst alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567';\nfunction readChar(char) {\n const idx = alphabet.indexOf(char);\n if (idx === -1) {\n throw new Error('Invalid character found: ' + char);\n }\n return idx;\n}\nfunction arrayBufferToString(buffer) {\n const bufView = new Uint8Array(buffer);\n const length = bufView.length;\n let result = '';\n let addition = Math.pow(2, 16) - 1;\n for (let i = 0; i < length; i += addition) {\n if (i + addition > length) {\n addition = length - i;\n }\n result += String.fromCharCode.apply(null, \n // @ts-ignore\n bufView.subarray(i, i + addition));\n }\n return result;\n}\nfunction base32Decode(input) {\n input = input.toUpperCase();\n const length = input.length;\n let bits = 0;\n let value = 0;\n let index = 0;\n const output = new Uint8Array(((length * 5) / 8) | 0);\n for (let i = 0; i < length; i++) {\n value = (value << 5) | readChar(input[i]);\n bits += 5;\n if (bits >= 8) {\n output[index++] = (value >>> (bits - 8)) & 255;\n bits -= 8;\n }\n }\n return arrayBufferToString(output.buffer);\n}\nfunction getProjectIdFromApiKey(key) {\n if (!key) {\n return undefined;\n }\n try {\n const [prefix, rest] = key.split('_');\n if (prefix === 'tgpak') {\n const [projectId] = base32Decode(rest).split('_');\n return Number(projectId);\n }\n }\n catch (_a) {\n // eslint-disable-next-line no-console\n console.warn(\"Tolgee: Api key can't be parsed\");\n }\n return undefined;\n}\nfunction getApiKeyType(key) {\n if (!key) {\n return undefined;\n }\n const [prefix] = key.split('_');\n if (prefix === 'tgpak') {\n return 'tgpak';\n }\n else if (prefix === 'tgpat') {\n return 'tgpat';\n }\n return 'legacy';\n}\n\nfunction createDevBackend() {\n return {\n getRecord({ apiUrl, apiKey, language, namespace, projectId }) {\n var _a;\n const pId = (_a = getProjectIdFromApiKey(apiKey)) !== null && _a !== void 0 ? _a : projectId;\n let url = pId !== undefined\n ? `${apiUrl}/v2/projects/${pId}/translations/${language}`\n : `${apiUrl}/v2/projects/translations/${language}`;\n if (namespace) {\n url += `?ns=${namespace}`;\n }\n if (getApiKeyType(apiKey) === 'tgpat' && projectId === undefined) {\n throw new Error(\"You need to specify 'projectId' when using PAT key\");\n }\n return fetch(url, {\n headers: {\n 'X-API-Key': apiKey || '',\n 'Content-Type': 'application/json',\n },\n }).then((r) => {\n if (r.ok) {\n return r.json().then((data) => data[language]);\n }\n else {\n throw new Error(r.statusText);\n }\n });\n },\n };\n}\nconst DevBackend = () => (tolgee, tools) => {\n tools.setDevBackend(createDevBackend());\n return tolgee;\n};\n\nfunction listen(type, callback) {\n const handler = (e) => {\n var _a, _b;\n if (type.includes((_a = e.data) === null || _a === void 0 ? void 0 : _a.type)) {\n callback((_b = e.data) === null || _b === void 0 ? void 0 : _b.data);\n }\n };\n window.addEventListener('message', handler, false);\n return {\n unsubscribe() {\n window.removeEventListener('message', handler);\n },\n };\n}\nfunction sendAndRecieve({ message, recievingMessage, data, attempts = 1, }) {\n let cancelled = false;\n const makeAttempt = () => new Promise((resolve, reject) => {\n const listener = listen(recievingMessage, handler);\n window.postMessage({ type: message, data }, window.origin);\n const timer = setTimeout(timeout, 300);\n function handler(data) {\n clearTimeout(timer);\n removeEventListener();\n resolve(data);\n }\n function removeEventListener() {\n listener.unsubscribe();\n }\n function timeout() {\n removeEventListener();\n reject();\n }\n });\n const getData = async () => {\n for (let i = 0; i < attempts; i++) {\n if (cancelled) {\n return new Promise(() => { });\n }\n try {\n const result = await makeAttempt();\n return result;\n }\n catch (e) {\n continue;\n }\n }\n if (!cancelled) {\n throw `Didn't recieve ${recievingMessage.join(' or ')} in time.`;\n }\n return new Promise(() => { });\n };\n return {\n cancel() {\n cancelled = true;\n },\n promise: getData(),\n };\n}\nfunction Handshaker() {\n let cancelLast = undefined;\n async function update(data) {\n cancelLast === null || cancelLast === void 0 ? void 0 : cancelLast();\n const { cancel, promise } = sendAndRecieve({\n message: 'TOLGEE_READY',\n recievingMessage: ['TOLGEE_PLUGIN_READY', 'TOLGEE_PLUGIN_UPDATED'],\n data,\n attempts: 4,\n });\n cancelLast = cancel;\n return promise;\n }\n return {\n update,\n };\n}\n\nconst IN_CONTEXT_FILE = 'tolgee-in-context-tools.umd.min.js';\nconst IN_CONTEXT_UMD_NAME = '@tolgee/in-context-tools';\nconst IN_CONTEXT_EXPORT_NAME = 'InContextTools';\n\nconst CDN_URL = 'https://cdn.jsdelivr.net/npm';\nfunction injectScript(src) {\n return new Promise((resolve, reject) => {\n const script = document.createElement('script');\n script.src = src;\n script.addEventListener('load', () => resolve());\n script.addEventListener('error', (e) => reject(e.error));\n document.body.appendChild(script);\n });\n}\nlet injectPromise = null;\nfunction loadInContextLib(version) {\n if (!injectPromise) {\n injectPromise = injectScript(`${CDN_URL}/@tolgee/web@${version}/dist/${IN_CONTEXT_FILE}`).then(() => {\n // @ts-ignore\n return window[IN_CONTEXT_UMD_NAME][IN_CONTEXT_EXPORT_NAME];\n });\n }\n return injectPromise;\n}\n\nconst API_KEY_LOCAL_STORAGE = '__tolgee_apiKey';\nconst API_URL_LOCAL_STORAGE = '__tolgee_apiUrl';\nfunction getCredentials() {\n const apiKey = sessionStorage.getItem(API_KEY_LOCAL_STORAGE) || undefined;\n const apiUrl = sessionStorage.getItem(API_URL_LOCAL_STORAGE) || undefined;\n if (!apiKey || !apiUrl) {\n return undefined;\n }\n return {\n apiKey,\n apiUrl,\n };\n}\nfunction clearSessionStorage() {\n sessionStorage.removeItem(API_KEY_LOCAL_STORAGE);\n sessionStorage.removeItem(API_URL_LOCAL_STORAGE);\n}\nfunction onDocumentReady(callback) {\n // in case the document is already rendered\n if (document.readyState !== 'loading') {\n Promise.resolve().then(() => {\n callback();\n });\n }\n // modern browsers\n else if (document.addEventListener) {\n document.addEventListener('DOMContentLoaded', callback);\n }\n}\nlet BrowserExtensionPlugin = () => (tolgee) => tolgee;\nif (typeof window !== 'undefined' && typeof sessionStorage !== 'undefined') {\n BrowserExtensionPlugin = () => (tolgee) => {\n const handshaker = Handshaker();\n const getConfig = () => ({\n // prevent extension downloading ui library\n uiPresent: true,\n uiVersion: undefined,\n // tolgee mode\n mode: tolgee.isDev() ? 'development' : 'production',\n // pass credentials\n config: {\n apiUrl: tolgee.getInitialOptions().apiUrl || '',\n apiKey: tolgee.getInitialOptions().apiKey || '',\n },\n });\n const getTolgeePlugin = async () => {\n const InContextTools = await loadInContextLib(\"5.10.2\" );\n return (tolgee) => {\n const credentials = getCredentials();\n tolgee.addPlugin(InContextTools({ credentials }));\n return tolgee;\n };\n };\n tolgee.on('running', ({ value: isRunning }) => {\n if (isRunning) {\n onDocumentReady(() => {\n handshaker.update(getConfig()).catch(clearSessionStorage);\n });\n }\n });\n const credentials = getCredentials();\n if (credentials) {\n getTolgeePlugin()\n .then((plugin) => {\n tolgee.addPlugin(plugin);\n })\n .catch((e) => {\n // eslint-disable-next-line no-console\n console.error('Tolgee: Failed to load in-context tools');\n // eslint-disable-next-line no-console\n console.error(e);\n });\n }\n return tolgee;\n };\n}\n\nconst CURRENT_LANGUAGE_LOCAL_STORAGE_KEY = '__tolgee_currentLanguage';\nfunction createLanguageStorage() {\n return {\n getLanguage() {\n throwIfSSR('LanguageStorage');\n const storedLanguage = localStorage.getItem(CURRENT_LANGUAGE_LOCAL_STORAGE_KEY);\n return storedLanguage || undefined;\n },\n setLanguage(language) {\n throwIfSSR('LanguageStorage');\n localStorage.setItem(CURRENT_LANGUAGE_LOCAL_STORAGE_KEY, language);\n },\n };\n}\nconst LanguageStorage = () => (tolgee, tools) => {\n tools.setLanguageStorage(createLanguageStorage());\n return tolgee;\n};\n\nfunction createLanguageDetector() {\n return {\n getLanguage({ availableLanguages }) {\n throwIfSSR('LanguageDetector');\n const preferred = window.navigator.language;\n const exactMatch = availableLanguages.find((l) => l === preferred);\n if (exactMatch) {\n return exactMatch;\n }\n const getTwoLetters = (fullTag) => fullTag.replace(/^(.+?)(-.*)?$/, '$1');\n const preferredTwoLetter = getTwoLetters(window.navigator.language);\n const twoLetterMatch = availableLanguages.find((l) => getTwoLetters(l) === preferredTwoLetter);\n if (twoLetterMatch) {\n return twoLetterMatch;\n }\n return undefined;\n },\n };\n}\nconst LanguageDetector = () => (tolgee, tools) => {\n tools.setLanguageDetector(createLanguageDetector());\n return tolgee;\n};\n\n/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n\r\nfunction __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\n\nfunction trimSlashes(path) {\n if (path.endsWith('/')) {\n return path.slice(0, -1);\n }\n return path;\n}\nconst defaultGetPath = ({ namespace, language, prefix }) => {\n if (namespace) {\n return `${trimSlashes(prefix)}/${namespace}/${language}.json`;\n }\n else {\n return `${trimSlashes(prefix)}/${language}.json`;\n }\n};\nfunction defaultGetData(r) {\n return r.json();\n}\nconst DEFAULT_OPTIONS = {\n prefix: '/i18n',\n getPath: defaultGetPath,\n getData: defaultGetData,\n headers: {\n Accept: 'application/json',\n },\n};\nfunction createBackendFetch(options) {\n const _a = Object.assign(Object.assign(Object.assign({}, DEFAULT_OPTIONS), options), { headers: Object.assign(Object.assign({}, DEFAULT_OPTIONS.headers), options === null || options === void 0 ? void 0 : options.headers) }), { prefix, getPath, getData, headers } = _a, fetchOptions = __rest(_a, [\"prefix\", \"getPath\", \"getData\", \"headers\"]);\n return {\n getRecord({ namespace, language }) {\n const path = getPath({\n namespace,\n language,\n prefix,\n });\n return fetch(path, Object.assign({ headers }, fetchOptions)).then((r) => {\n if (!r.ok) {\n throw new Error(`${r.url} ${r.status}`);\n }\n return getData(r);\n });\n },\n };\n}\nconst BackendFetch = (options) => (tolgee, tools) => {\n tools.addBackend(createBackendFetch(options));\n return tolgee;\n};\n\nfunction Tolgee() {\n return TolgeeCore().use(BrowserExtensionPlugin());\n}\n\nconst DevTools = () => (tolgee) => tolgee;\n\nexport { BackendFetch, BrowserExtensionPlugin, DEVTOOLS_ID, DevBackend, DevTools, FormatSimple, LanguageDetector, LanguageStorage, ObserverPlugin, PREFERRED_LANGUAGES_LOCAL_STORAGE_KEY, TOLGEE_ATTRIBUTE_NAME, TOLGEE_RESTRICT_ATTRIBUTE, TOLGEE_WRAPPED_ONLY_DATA_ATTRIBUTE, Tolgee, TolgeeCore, getFallback, getFallbackArray, getProjectIdFromApiKey, getTranslateProps };\n//# sourceMappingURL=tolgee-web.production.esm.mjs.map\n","import React, { useState, useEffect, Suspense, useContext, useCallback, useRef, useMemo } from 'react';\nimport { getFallback, getFallbackArray, getTranslateProps } from '@tolgee/web';\nexport * from '@tolgee/web';\n\nconst DEFAULT_REACT_OPTIONS = {\n useSuspense: true,\n};\nconst TolgeeProviderContext = React.createContext(undefined);\nconst TolgeeProvider = ({ tolgee, options, children, fallback, }) => {\n const [loading, setLoading] = useState(!tolgee.isLoaded());\n useEffect(() => {\n tolgee\n .run()\n .catch((e) => {\n // eslint-disable-next-line no-console\n console.error(e);\n })\n .finally(() => {\n setLoading(false);\n });\n }, [tolgee]);\n const optionsWithDefault = Object.assign(Object.assign({}, DEFAULT_REACT_OPTIONS), options);\n if (optionsWithDefault.useSuspense) {\n return (React.createElement(TolgeeProviderContext.Provider, { value: { tolgee, options: optionsWithDefault } }, loading ? (fallback) : (React.createElement(Suspense, { fallback: fallback || null }, children))));\n }\n return (React.createElement(TolgeeProviderContext.Provider, { value: { tolgee, options: optionsWithDefault } }, loading ? fallback : children));\n};\n\nlet globalContext;\nconst GlobalContextPlugin = (options) => (tolgee) => {\n globalContext = {\n tolgee,\n options: Object.assign(Object.assign({}, DEFAULT_REACT_OPTIONS), options),\n };\n return tolgee;\n};\nfunction getGlobalContext() {\n return globalContext;\n}\n\nconst useTolgeeContext = () => {\n const context = useContext(TolgeeProviderContext) || getGlobalContext();\n if (!context) {\n throw new Error(\"Couldn't find tolgee instance, did you forgot to use `TolgeeProvider`?\");\n }\n return context;\n};\n\nconst useRerender = () => {\n const [instance, setCounter] = useState(0);\n const rerender = useCallback(() => {\n setCounter((num) => num + 1);\n }, [setCounter]);\n return { instance, rerender };\n};\n\nconst useTranslateInternal = (ns, options) => {\n const { tolgee, options: defaultOptions } = useTolgeeContext();\n const namespaces = getFallback(ns);\n const namespacesJoined = getFallbackArray(namespaces).join(':');\n const currentOptions = Object.assign(Object.assign({}, defaultOptions), options);\n // dummy state to enable re-rendering\n const { rerender, instance } = useRerender();\n const subscriptionRef = useRef();\n const subscriptionQueue = useRef([]);\n subscriptionQueue.current = [];\n const subscribeToNs = (ns) => {\n var _a;\n subscriptionQueue.current.push(ns);\n (_a = subscriptionRef.current) === null || _a === void 0 ? void 0 : _a.subscribeNs(ns);\n };\n const isLoaded = tolgee.isLoaded(namespaces);\n useEffect(() => {\n const subscription = tolgee.onNsUpdate(rerender);\n subscriptionRef.current = subscription;\n if (!isLoaded) {\n subscription.subscribeNs(namespaces);\n }\n subscriptionQueue.current.forEach((ns) => {\n subscription.subscribeNs(ns);\n });\n return () => {\n subscription.unsubscribe();\n };\n }, [isLoaded, namespacesJoined, tolgee]);\n useEffect(() => {\n tolgee.addActiveNs(namespaces);\n return () => tolgee.removeActiveNs(namespaces);\n }, [namespacesJoined, tolgee]);\n const t = useCallback((props) => {\n var _a;\n const fallbackNs = (_a = props.ns) !== null && _a !== void 0 ? _a : namespaces === null || namespaces === void 0 ? void 0 : namespaces[0];\n subscribeToNs(fallbackNs);\n return tolgee.t(Object.assign(Object.assign({}, props), { ns: fallbackNs }));\n }, [tolgee, instance]);\n if (currentOptions.useSuspense && !isLoaded) {\n throw tolgee.addActiveNs(namespaces, true);\n }\n return { t, isLoading: !isLoaded };\n};\n\nconst useTranslate = (ns, options) => {\n const { t: tInternal, isLoading } = useTranslateInternal(ns, options);\n const t = useCallback((...params) => {\n // @ts-ignore\n const props = getTranslateProps(...params);\n return tInternal(props);\n }, [tInternal]);\n return { t, isLoading };\n};\n\nconst wrapTagHandlers = (params) => {\n if (!params) {\n return undefined;\n }\n const result = {};\n Object.entries(params || {}).forEach(([key, value]) => {\n if (typeof value === 'function') {\n result[key] = (chunk) => {\n return value(addReactKeys(chunk));\n };\n }\n else if (React.isValidElement(value)) {\n const el = value;\n result[key] = (chunk) => {\n return el.props.children === undefined && (chunk === null || chunk === void 0 ? void 0 : chunk.length)\n ? React.cloneElement(el, {}, addReactKeys(chunk))\n : React.cloneElement(el);\n };\n }\n else {\n result[key] = value;\n }\n });\n return result;\n};\nconst addReactKeys = (val) => {\n if (Array.isArray(val)) {\n return React.Children.toArray(val);\n }\n else {\n return val;\n }\n};\n\nconst T = (props) => {\n const key = props.keyName || props.children;\n if (key === undefined) {\n // eslint-disable-next-line no-console\n console.error('T component: keyName not defined');\n }\n const defaultValue = props.defaultValue ||\n (props.keyName ? props.children : undefined);\n const { t } = useTranslateInternal();\n const translation = addReactKeys(t({\n key: key,\n params: wrapTagHandlers(props.params),\n defaultValue,\n noWrap: props.noWrap,\n ns: props.ns,\n language: props.language,\n }));\n return React.createElement(React.Fragment, null, translation);\n};\n\nconst useTolgee = (events) => {\n const { tolgee } = useTolgeeContext();\n const { rerender } = useRerender();\n useEffect(() => {\n const listeners = events === null || events === void 0 ? void 0 : events.map((e) => tolgee.on(e, rerender));\n return () => {\n listeners === null || listeners === void 0 ? void 0 : listeners.forEach((listener) => listener.unsubscribe());\n };\n }, [events === null || events === void 0 ? void 0 : events.join(':')]);\n return tolgee;\n};\n\nfunction getTolgeeWithDeactivatedWrapper(tolgee) {\n return Object.assign(Object.assign({}, tolgee), { t(...args) {\n // @ts-ignore\n const props = getTranslateProps(...args);\n return tolgee.t(Object.assign(Object.assign({}, props), { noWrap: true }));\n } });\n}\nfunction useTolgeeSSR(tolgeeInstance, locale, staticData) {\n const initialInstance = useMemo(() => getTolgeeWithDeactivatedWrapper(tolgeeInstance), []);\n const [tolgee, setTolgee] = useState(initialInstance);\n useEffect(() => {\n setTolgee(tolgeeInstance);\n }, []);\n useMemo(() => {\n // we have to prepare tolgee before rendering children\n // so translations are available right away\n // events emitting must be off, to not trigger re-render while rendering\n tolgee.setEmitterActive(false);\n tolgee.addStaticData(staticData);\n tolgee.changeLanguage(locale);\n tolgee.setEmitterActive(true);\n }, [locale, staticData, tolgee]);\n return tolgee;\n}\n\nexport { GlobalContextPlugin, T, TolgeeProvider, TolgeeProviderContext, useTolgee, useTolgeeSSR, useTranslate };\n//# sourceMappingURL=tolgee-react.esm.mjs.map\n","import { Tolgee, DevTools, FormatSimple } from \"@tolgee/web\";\n\nimport ruCommon from \"../i18n/common/en.json\";\nimport ruHeader from \"../i18n/header/ru.json\";\nimport enHeader from \"../i18n/header/en.json\";\nimport enCommon from \"../i18n/common/en.json\";\nimport enTypeFilter from \"../i18n/type_filter/en.json\";\nimport enSendFilter from \"../i18n/send_filter/en.json\";\nimport ruTypeFilter from \"../i18n/type_filter/ru.json\";\nimport ruSendFilter from \"../i18n/send_filter/ru.json\";\nimport ruDetailsModal from \"../i18n/details_modal/ru.json\";\nimport enDetailsModal from \"../i18n/details_modal/en.json\";\nimport ruReceiveFilter from \"../i18n/receive_filter/ru.json\";\nimport enLocationAside from \"../i18n/location_aside/en.json\";\nimport ruLocationAside from \"../i18n/location_aside/ru.json\";\nimport enReceiveFilter from \"../i18n/receive_filter/en.json\";\nimport enCourierBalloon from \"../i18n/courier_balloon/en.json\";\nimport ruCourierBalloon from \"../i18n/courier_balloon/ru.json\";\nimport ruCurrentLocation from \"../i18n/current_location/ru.json\";\nimport enCurrentLocation from \"../i18n/current_location/en.json\";\nimport enLocationSelector from \"../i18n/location_selector/en.json\";\nimport ruLocationSelector from \"../i18n/location_selector/ru.json\";\n\nexport const tolgee = Tolgee()\n .use(DevTools())\n .use(FormatSimple())\n .init({\n language: \"en\",\n defaultNs: \"common\",\n ns: [\n \"common\",\n \"courier_balloon\",\n \"current_location\",\n \"details_modal\",\n \"header\",\n \"location_aside\",\n \"location_selector\",\n \"receive_filter\",\n \"send_filter\",\n \"type_filter\",\n ],\n\n // for development mode\n apiUrl: import.meta.env.VITE_APP_TOLGEE_API_URL,\n apiKey: import.meta.env.VITE_APP_TOLGEE_API_KEY,\n\n // for production mode\n staticData: {\n \"en:common\": enCommon,\n \"ru:common\": ruCommon,\n\n \"en:courier_balloon\": enCourierBalloon,\n \"ru:courier_balloon\": ruCourierBalloon,\n\n \"en:current_location\": enCurrentLocation,\n \"ru:current_location\": ruCurrentLocation,\n\n \"en:details_modal\": enDetailsModal,\n \"ru:details_modal\": ruDetailsModal,\n\n \"en:header\": enHeader,\n \"ru:header\": ruHeader,\n\n \"en:location_aside\": enLocationAside,\n \"ru:location_aside\": ruLocationAside,\n\n \"en:location_selector\": enLocationSelector,\n \"ru:location_selector\": ruLocationSelector,\n\n \"en:receive_filter\": enReceiveFilter,\n \"ru:receive_filter\": ruReceiveFilter,\n\n \"en:send_filter\": enSendFilter,\n \"ru:send_filter\": ruSendFilter,\n\n \"en:type_filter\": enTypeFilter,\n \"ru:type_filter\": ruTypeFilter,\n },\n });\n","/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\tvar nativeCodeString = '[native code]';\n\n\tfunction classNames() {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg)) {\n\t\t\t\tif (arg.length) {\n\t\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\t\tif (inner) {\n\t\t\t\t\t\tclasses.push(inner);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tif (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {\n\t\t\t\t\tclasses.push(arg.toString());\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tfor (var key in arg) {\n\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","const createStoreImpl = (createState) => {\n let state;\n const listeners = /* @__PURE__ */ new Set();\n const setState = (partial, replace) => {\n const nextState = typeof partial === \"function\" ? partial(state) : partial;\n if (!Object.is(nextState, state)) {\n const previousState = state;\n state = (replace != null ? replace : typeof nextState !== \"object\") ? nextState : Object.assign({}, state, nextState);\n listeners.forEach((listener) => listener(state, previousState));\n }\n };\n const getState = () => state;\n const subscribe = (listener) => {\n listeners.add(listener);\n return () => listeners.delete(listener);\n };\n const destroy = () => {\n if ((import.meta.env ? import.meta.env.MODE : void 0) !== \"production\") {\n console.warn(\n \"[DEPRECATED] The `destroy` method will be unsupported in a future version. Instead use unsubscribe function returned by subscribe. Everything will be garbage-collected if store is garbage-collected.\"\n );\n }\n listeners.clear();\n };\n const api = { setState, getState, subscribe, destroy };\n state = createState(setState, getState, api);\n return api;\n};\nconst createStore = (createState) => createState ? createStoreImpl(createState) : createStoreImpl;\nvar vanilla = (createState) => {\n if ((import.meta.env ? import.meta.env.MODE : void 0) !== \"production\") {\n console.warn(\n \"[DEPRECATED] Default export is deprecated. Instead use import { createStore } from 'zustand/vanilla'.\"\n );\n }\n return createStore(createState);\n};\n\nexport { createStore, vanilla as default };\n","/**\n * @license React\n * use-sync-external-store-shim.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var e=require(\"react\");function h(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}var k=\"function\"===typeof Object.is?Object.is:h,l=e.useState,m=e.useEffect,n=e.useLayoutEffect,p=e.useDebugValue;function q(a,b){var d=b(),f=l({inst:{value:d,getSnapshot:b}}),c=f[0].inst,g=f[1];n(function(){c.value=d;c.getSnapshot=b;r(c)&&g({inst:c})},[a,d,b]);m(function(){r(c)&&g({inst:c});return a(function(){r(c)&&g({inst:c})})},[a]);p(d);return d}\nfunction r(a){var b=a.getSnapshot;a=a.value;try{var d=b();return!k(a,d)}catch(f){return!0}}function t(a,b){return b()}var u=\"undefined\"===typeof window||\"undefined\"===typeof window.document||\"undefined\"===typeof window.document.createElement?t:q;exports.useSyncExternalStore=void 0!==e.useSyncExternalStore?e.useSyncExternalStore:u;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('../cjs/use-sync-external-store-shim.production.min.js');\n} else {\n module.exports = require('../cjs/use-sync-external-store-shim.development.js');\n}\n","/**\n * @license React\n * use-sync-external-store-shim/with-selector.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var h=require(\"react\"),n=require(\"use-sync-external-store/shim\");function p(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}var q=\"function\"===typeof Object.is?Object.is:p,r=n.useSyncExternalStore,t=h.useRef,u=h.useEffect,v=h.useMemo,w=h.useDebugValue;\nexports.useSyncExternalStoreWithSelector=function(a,b,e,l,g){var c=t(null);if(null===c.current){var f={hasValue:!1,value:null};c.current=f}else f=c.current;c=v(function(){function a(a){if(!c){c=!0;d=a;a=l(a);if(void 0!==g&&f.hasValue){var b=f.value;if(g(b,a))return k=b}return k=a}b=k;if(q(d,a))return b;var e=l(a);if(void 0!==g&&g(b,e))return b;d=a;return k=e}var c=!1,d,k,m=void 0===e?null:e;return[function(){return a(b())},null===m?void 0:function(){return a(m())}]},[b,e,l,g]);var d=r(a,c[0],c[1]);\nu(function(){f.hasValue=!0;f.value=d},[d]);w(d);return d};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('../cjs/use-sync-external-store-shim/with-selector.production.min.js');\n} else {\n module.exports = require('../cjs/use-sync-external-store-shim/with-selector.development.js');\n}\n","import { createStore } from 'zustand/vanilla';\nexport * from 'zustand/vanilla';\nimport { useDebugValue } from 'react';\nimport useSyncExternalStoreExports from 'use-sync-external-store/shim/with-selector.js';\n\nconst { useSyncExternalStoreWithSelector } = useSyncExternalStoreExports;\nfunction useStore(api, selector = api.getState, equalityFn) {\n const slice = useSyncExternalStoreWithSelector(\n api.subscribe,\n api.getState,\n api.getServerState || api.getState,\n selector,\n equalityFn\n );\n useDebugValue(slice);\n return slice;\n}\nconst createImpl = (createState) => {\n if ((import.meta.env ? import.meta.env.MODE : void 0) !== \"production\" && typeof createState !== \"function\") {\n console.warn(\n \"[DEPRECATED] Passing a vanilla store will be unsupported in a future version. Instead use `import { useStore } from 'zustand'`.\"\n );\n }\n const api = typeof createState === \"function\" ? createStore(createState) : createState;\n const useBoundStore = (selector, equalityFn) => useStore(api, selector, equalityFn);\n Object.assign(useBoundStore, api);\n return useBoundStore;\n};\nconst create = (createState) => createState ? createImpl(createState) : createImpl;\nvar react = (createState) => {\n if ((import.meta.env ? import.meta.env.MODE : void 0) !== \"production\") {\n console.warn(\n \"[DEPRECATED] Default export is deprecated. Instead use `import { create } from 'zustand'`.\"\n );\n }\n return create(createState);\n};\n\nexport { create, react as default, useStore };\n","// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\nlet getRandomValues;\nconst rnds8 = new Uint8Array(16);\nexport default function rng() {\n // lazy load so that environments that need to polyfill have a chance to do so\n if (!getRandomValues) {\n // getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation.\n getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto);\n\n if (!getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n }\n\n return getRandomValues(rnds8);\n}","import validate from './validate.js';\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\n\nconst byteToHex = [];\n\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).slice(1));\n}\n\nexport function unsafeStringify(arr, offset = 0) {\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n return (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase();\n}\n\nfunction stringify(arr, offset = 0) {\n const uuid = unsafeStringify(arr, offset); // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n\n return uuid;\n}\n\nexport default stringify;","const randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);\nexport default {\n randomUUID\n};","import native from './native.js';\nimport rng from './rng.js';\nimport { unsafeStringify } from './stringify.js';\n\nfunction v4(options, buf, offset) {\n if (native.randomUUID && !buf && !options) {\n return native.randomUUID();\n }\n\n options = options || {};\n const rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n offset = offset || 0;\n\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n\n return buf;\n }\n\n return unsafeStringify(rnds);\n}\n\nexport default v4;","import { v4 as uuidV4 } from \"uuid\";\n\nexport const MAP_FALLBACK_CENTER: Coordinates = [55.75, 37.57];\nexport const MAP_FALLBACK_BOUNDS: Bounds = [\n [55.508110657344005, 55.99039875405023],\n [36.88404113769532, 38.255958862304695],\n];\n\nexport const BALLOON_SUBMIT_ID = uuidV4();\nexport const BALLOON_DETAILS_ID = uuidV4();\n\nexport const MARKER_SIZE: Size = [48, 66];\nexport const SCALED_MARKER_SIZE: Size = [58, 80];\n\nexport const MAP_INITIAL_ZOOM = 10;\nexport const MAP_SELECTED_POINT_ZOOM = 20;\nexport const MAP_SELECTED_PLACE_ZOOM = 10;\n","import { create } from \"zustand\";\n\nimport { MapMode } from \"src/types/map\";\nimport { MAP_SELECTED_POINT_ZOOM } from \"src/constants/map\";\n\ninterface State {\n mode: MapMode;\n zoom: number;\n loaded: boolean;\n bounds: Nullable<Bounds>;\n detailsOpen: boolean;\n}\n\ninterface Action {\n setLoaded(loaded: boolean): void;\n\n setMode(mode: MapMode): void;\n\n setZoom(zoom: number): void;\n\n setBounds(bounds: Nullable<Bounds>): void;\n\n setDetailsOpen(open: boolean): void;\n}\n\nconst initialState: State = {\n mode: \"self_pickup\",\n bounds: null,\n loaded: false,\n zoom: MAP_SELECTED_POINT_ZOOM,\n detailsOpen: false,\n};\n\nexport const useMapStore = create<State & Action>()((set) => ({\n ...initialState,\n\n setLoaded(loaded: boolean) {\n set({ loaded });\n },\n\n setMode(mode: MapMode) {\n set({ mode });\n },\n\n setBounds(bounds: Nullable<Bounds>) {\n set({ bounds });\n },\n\n setZoom(zoom: number) {\n set({ zoom });\n },\n\n setDetailsOpen(open: boolean) {\n set({ detailsOpen: open });\n },\n}));\n","import { WidgetConfig } from \"src\";\n\nexport const DEFAULT_CONFIG: Partial<WidgetConfig> = {\n locale: \"en\",\n map: { provider: \"google\" },\n};\n","import { useContext, createContext } from \"react\";\n\nimport { WidgetConfig } from \"src/types/config\";\nimport { DEFAULT_CONFIG } from \"src/constants/config\";\n\nexport const ConfigContext = createContext(DEFAULT_CONFIG as WidgetConfig);\n\nexport const useConfigContext = () => useContext(ConfigContext);\n","import { create } from \"zustand\";\n\nimport { CourierPoint } from \"src/types/points\";\n\ninterface State {\n courierPoint: Nullable<CourierPoint>;\n}\n\ninterface Action {\n setCourierPoint(point: Nullable<CourierPoint>): void;\n}\n\nconst initialState: State = {\n courierPoint: null,\n};\n\nexport const useCourierPointStore = create<State & Action>()((set) => ({\n ...initialState,\n\n setCourierPoint(point: null | CourierPoint) {\n set({ courierPoint: point });\n },\n}));\n","import classNames from \"classnames\";\nimport { FC, ButtonHTMLAttributes, AnchorHTMLAttributes } from \"react\";\n\nimport styles from \"./Button.module.scss\";\n\ninterface ButtonBaseProps {\n variant?: \"primary\" | \"secondary\";\n}\n\ntype ButtonAsButton = { as?: \"button\" } & ButtonHTMLAttributes<HTMLButtonElement> & ButtonBaseProps;\n\ntype ButtonAsLink = { as?: \"link\" } & AnchorHTMLAttributes<HTMLAnchorElement> & ButtonBaseProps;\n\ntype ButtonProps = ButtonAsLink | ButtonAsButton;\n\nexport const Button: FC<ButtonProps> = ({ className, variant = \"primary\", ...props }) => {\n if (props.as === \"link\") {\n const { as: _, ...other } = props;\n return <a className={classNames(styles.root, className, styles[variant])} {...other} />;\n }\n\n const { as: _, ...other } = props;\n // @ts-expect-error TS2322\n return <button className={classNames(styles.root, className, styles[variant])} {...other} />;\n};\n\nButton.defaultProps = {\n as: \"button\",\n};\n","export default \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIzIiBoZWlnaHQ9IjMyIiB2aWV3Qm94PSIwIDAgMTIzIDMyIiBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgo8cGF0aCBkPSJNNi42OTc4MyAzMkM1LjQ5MTAyIDMyIDQuMzc0NyAzMS43MDM4IDMuMzQ4OTIgMzEuMTExMkMyLjMyMzEyIDMwLjUxODYgMS41MDg1MiAyOS43MTg2IDAuOTA1MTE0IDI4LjcxMTJDMC4zMDE3MDUgMjcuNzAzOCAwIDI2LjYwNzQgMCAyNS40MjIyVjYuNTc3NzhDMCA1LjM2Mjk2IDAuMzAxNzA1IDQuMjY2NjYgMC45MDUxMTQgMy4yODg4OEMxLjUwODUyIDIuMjgxNDggMi4zMjMxMiAxLjQ4MTQ4IDMuMzQ4OTIgMC44ODg4ODhDNC4zNzQ3IDAuMjk2Mjk2IDUuNDkxMDIgMCA2LjY5NzgzIDBIMjUuODg2MkMyNy4wOTMgMCAyOC4xOTQyIDAuMjk2Mjk2IDI5LjE4OTkgMC44ODg4ODhDMzAuMjE1NiAxLjQ4MTQ4IDMxLjAzMDIgMi4yODE0OCAzMS42MzM4IDMuMjg4ODhDMzIuMjY3MyA0LjI2NjY2IDMyLjU4NDEgNS4zNjI5NiAzMi41ODQxIDYuNTc3NzhWMjUuNDIyMkMzMi41ODQxIDI2LjYwNzQgMzIuMjY3MyAyNy43MDM4IDMxLjYzMzggMjguNzExMkMzMS4wMzAyIDI5LjcxODYgMzAuMjE1NiAzMC41MTg2IDI5LjE4OTkgMzEuMTExMkMyOC4xOTQyIDMxLjcwMzggMjcuMDkzIDMyIDI1Ljg4NjIgMzJINi42OTc4M1pNNy4wMTQ2MiAyNS4wNjY2SDI1LjQ3ODlWNi45MzMzNEg3LjAxNDYyVjI1LjA2NjZaIiBmaWxsPSJibGFjayIvPgo8cGF0aCBkPSJNMzcuNTY3OCAzMlYwSDQ0LjgwODdMNTUuODUxIDEyLjkzMzNMNjYuODQ4MiAwSDc0LjEzNDVWMzJINjcuMDc0NVYxMC41MzMzTDU1Ljg1MSAyMy42ODg4TDQ0LjU4MjQgMTAuNTc3OFYzMkgzNy41Njc4WiIgZmlsbD0iYmxhY2siLz4KPHBhdGggZD0iTTc5LjU1MzMgMzJWMEg4Ni43OTQxTDEwNS4wMzIgMjEuMzMzNFYwSDExMi4xMzdWMzJIMTA0Ljg5Nkw4Ni41Njc5IDEwLjU3NzhWMzJINzkuNTUzM1oiIGZpbGw9ImJsYWNrIi8+CjxwYXRoIGQ9Ik0xMTYuMDc2IDMyVjBIMTIzVjMySDExNi4wNzZaIiBmaWxsPSJibGFjayIvPgo8L3N2Zz4K\"","import { FC } from \"react\";\n\nimport Logo from \"src/assets/logo.svg\";\nimport { useConfigContext } from \"src/context/config\";\n\nimport styles from \"./Header.module.scss\";\n\nexport const LogoContainer: FC = () => {\n const { hideLogo } = useConfigContext();\n\n if (hideLogo) {\n return null;\n }\n\n return (\n <div className={styles.logo}>\n <Logo />\n </div>\n );\n};\n","export default \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjgiIHZpZXdCb3g9IjAgMCAyNCAyOCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0yNCAxMS43NzY1QzI0IDQuMDUxNzYgMTcuNjA1NyAwIDEyIDBDNi4zOTQyOSAwIDAgNC4wNTE3NiAwIDExLjc3NjVDMCAxNi45MTUzIDMuOTk0MjkgMjIuMzM0MSAxMiAyOEMyMC4wMDU3IDIyLjMzNDEgMjQgMTYuOTE1MyAyNCAxMS43NzY1Wk0xMi4wMDAxIDE2QzE0LjIwOTMgMTYgMTYuMDAwMSAxNC4yMDkxIDE2LjAwMDEgMTJDMTYuMDAwMSA5Ljc5MDg2IDE0LjIwOTMgOCAxMi4wMDAxIDhDOS43OTA5OCA4IDguMDAwMTIgOS43OTA4NiA4LjAwMDEyIDEyQzguMDAwMTIgMTQuMjA5MSA5Ljc5MDk4IDE2IDEyLjAwMDEgMTZaIiBmaWxsPSIjMTc2MEVFIi8+Cjwvc3ZnPgo=\"","import { create } from \"zustand\";\n\ninterface State {\n open: boolean;\n}\n\ninterface Action {\n toggle(value?: boolean): void;\n}\n\nconst initialState: State = {\n open: false,\n};\n\nexport const useLocationAsideStore = create<State & Action>((set) => ({\n ...initialState,\n\n toggle(value?: boolean) {\n set((state) => ({ open: value ?? !state.open }));\n },\n}));\n","import { create } from \"zustand\";\n\ninterface State {\n place: Nullable<google.maps.places.PlaceResult>;\n}\n\ninterface Action {\n setPlace(place: Nullable<google.maps.places.PlaceResult>): void;\n}\n\nconst initialState: State = {\n place: null,\n};\n\nexport const useSelectedPlaceStore = create<State & Action>((set) => ({\n ...initialState,\n\n setPlace(place: null | google.maps.places.PlaceResult) {\n set({ place });\n },\n}));\n","import { FC } from \"react\";\nimport classNames from \"classnames\";\nimport { useTranslate } from \"@tolgee/react\";\n\nimport PinIcon from \"src/assets/pin.svg\";\nimport { useLocationAsideStore } from \"src/stores/locationAside\";\nimport { useSelectedPlaceStore } from \"src/stores/selectedPlace\";\n\nimport styles from \"./CurrentLocation.module.scss\";\n\ninterface CurrentLocationProps {\n className?: string;\n}\n\nexport const CurrentLocation: FC<CurrentLocationProps> = ({ className }) => {\n const { t } = useTranslate(\"current_location\");\n\n const selectedPlace = useSelectedPlaceStore((state) => state.place);\n const toggle = useLocationAsideStore((state) => state.toggle);\n\n const handleOpen = () => {\n toggle(true);\n };\n\n const locality = selectedPlace?.address_components?.find((component) => component.types.includes(\"locality\"));\n\n return (\n <div className={classNames(styles.root, className)} onClick={handleOpen}>\n <div className={styles.icon}>\n <PinIcon />\n </div>\n <span className={styles.text}>\n {!selectedPlace && t(\"choose_from_map\")}\n {selectedPlace && `${locality?.long_name ?? selectedPlace.formatted_address}`}\n </span>\n </div>\n );\n};\n","import classNames from \"classnames\";\nimport { FC, memo, useEffect } from \"react\";\nimport { useTranslate } from \"@tolgee/react\";\n\nimport { useMapStore } from \"src/stores/map\";\nimport { useConfigContext } from \"src/context/config\";\nimport { useCourierPointStore } from \"src/stores/courierPoint\";\n\nimport { Button } from \"../Button\";\nimport { LogoContainer } from \"./LogoContainer\";\nimport { CurrentLocation } from \"../CurrentLocation\";\n\nimport styles from \"./Header.module.scss\";\n\ninterface HeaderProps {\n className?: string;\n}\n\nconst Header: FC<HeaderProps> = ({ className }) => {\n const { t } = useTranslate(\"header\");\n\n const { disableCourierDelivery } = useConfigContext();\n\n const courierPoint = useCourierPointStore((state) => state.courierPoint);\n const setCourierPoint = useCourierPointStore((state) => state.setCourierPoint);\n const mapMode = useMapStore((state) => state.mode);\n const setMapMode = useMapStore((state) => state.setMode);\n\n useEffect(() => {\n if (courierPoint) {\n setMapMode(\"courier_delivery\");\n } else {\n setMapMode(\"self_pickup\");\n }\n }, [courierPoint, setMapMode]);\n\n const handleSelfPickup = () => {\n setCourierPoint(null);\n setMapMode(\"self_pickup\");\n };\n\n const handleCourierDelivery = () => {\n setCourierPoint(null);\n setMapMode(\"courier_delivery\");\n };\n\n const isSelfPickup = mapMode === \"self_pickup\";\n const isCourierDelivery = mapMode === \"courier_delivery\";\n\n return (\n <div className={classNames(styles.root, className)}>\n <LogoContainer />\n\n <nav className={styles.nav}>\n {!disableCourierDelivery && (\n <Button\n as=\"link\"\n className={styles.navItem}\n variant={isSelfPickup ? \"primary\" : \"secondary\"}\n onClick={handleSelfPickup}\n >\n {t(\"self_pickup\")}\n </Button>\n )}\n\n {!disableCourierDelivery && (\n <Button\n as=\"link\"\n className={styles.navItem}\n variant={isCourierDelivery ? \"primary\" : \"secondary\"}\n onClick={handleCourierDelivery}\n >\n {t(\"courier_delivery\")}\n </Button>\n )}\n\n <CurrentLocation />\n </nav>\n </div>\n );\n};\n\nexport const MemoizedHeader = memo(Header);\nexport { MemoizedHeader as Header };\n","import { create } from \"zustand\";\n\ninterface State {\n open: boolean;\n}\n\ninterface Action {\n toggle(value?: boolean): void;\n}\n\nconst initialState: State = {\n open: false,\n};\n\nexport const useSidebarStore = create<State & Action>((set) => ({\n ...initialState,\n\n toggle(value?: boolean) {\n set((state) => ({ open: value ?? !state.open }));\n },\n}));\n","import { FC } from \"react\";\nimport classNames from \"classnames\";\n\nimport { useSidebarStore } from \"src/stores/sidebar\";\n\nimport styles from \"./Layout.module.scss\";\n\ninterface LayoutProps {\n children: React.ReactNode;\n}\n\nexport const Layout: FC<LayoutProps> = ({ children }) => {\n const open = useSidebarStore((state) => state.open);\n\n return (\n <div\n className={classNames(styles.root, {\n [styles.sidebarOpen]: open,\n })}\n >\n {children}\n </div>\n );\n};\n","export enum ETypeFilter {\n All = 0,\n PickPoint = 20,\n PostOffice = 30,\n}\n\nexport type Hour =\n | \"00\"\n | \"01\"\n | \"02\"\n | \"03\"\n | \"04\"\n | \"05\"\n | \"06\"\n | \"07\"\n | \"08\"\n | \"09\"\n | \"10\"\n | \"11\"\n | \"12\"\n | \"13\"\n | \"14\"\n | \"15\"\n | \"16\"\n | \"17\"\n | \"18\"\n | \"19\"\n | \"20\"\n | \"21\"\n | \"22\"\n | \"23\";\n\nexport type Minute =\n | \"00\"\n | \"01\"\n | \"02\"\n | \"03\"\n | \"04\"\n | \"05\"\n | \"06\"\n | \"07\"\n | \"08\"\n | \"09\"\n | \"10\"\n | \"11\"\n | \"12\"\n | \"13\"\n | \"14\"\n | \"15\"\n | \"16\"\n | \"17\"\n | \"18\"\n | \"19\"\n | \"20\"\n | \"21\"\n | \"22\"\n | \"23\"\n | \"24\"\n | \"25\"\n | \"26\"\n | \"27\"\n | \"28\"\n | \"29\"\n | \"30\"\n | \"31\"\n | \"32\"\n | \"33\"\n | \"34\"\n | \"35\"\n | \"36\"\n | \"37\"\n | \"38\"\n | \"39\"\n | \"40\"\n | \"41\"\n | \"42\"\n | \"43\"\n | \"44\"\n | \"45\"\n | \"46\"\n | \"47\"\n | \"48\"\n | \"49\"\n | \"50\"\n | \"51\"\n | \"52\"\n | \"53\"\n | \"54\"\n | \"55\"\n | \"56\"\n | \"57\"\n | \"58\"\n | \"59\";\n\nexport type HoursMinutes = `${Hour}:${Minute}`;\n\nexport type WorkingHours = [HoursMinutes, HoursMinutes];\n\nexport enum EReceiveFilter {\n PayByCash = 0,\n DressingRoom,\n CheckOrder,\n}\n\nexport enum ESendFilter {\n Return = 0,\n Payment,\n Shipping,\n}\n\nexport interface Filter {\n query: string;\n type: ETypeFilter;\n hours: WorkingHours;\n send: {\n [ESendFilter.Return]: boolean;\n [ESendFilter.Payment]: boolean;\n [ESendFilter.Shipping]: boolean;\n };\n receive: {\n [EReceiveFilter.PayByCash]: boolean;\n [EReceiveFilter.DressingRoom]: boolean;\n [EReceiveFilter.CheckOrder]: boolean;\n };\n}\n","import { create } from \"zustand\";\n\nimport { EReceiveFilter, ESendFilter, ETypeFilter, Filter } from \"src/types/filters\";\n\ninterface State extends Filter {}\n\ninterface Action {\n setFilter(filter: Partial<Filter>): void;\n}\n\nconst initialState: State = {\n query: \"\",\n type: ETypeFilter.All,\n hours: [\"08:00\", \"22:00\"],\n send: {\n [ESendFilter.Return]: false,\n [ESendFilter.Payment]: false,\n [ESendFilter.Shipping]: false,\n },\n receive: {\n [EReceiveFilter.PayByCash]: false,\n [EReceiveFilter.CheckOrder]: false,\n [EReceiveFilter.DressingRoom]: false,\n },\n};\n\nexport const useFilterStore = create<State & Action>((set) => ({\n ...initialState,\n\n setFilter(filter: Partial<Filter>) {\n set(filter);\n },\n}));\n","import classNames from \"classnames\";\nimport { FC, HTMLAttributes } from \"react\";\n\nimport styles from \"./Hr.module.scss\";\n\ntype HrProps = HTMLAttributes<HTMLElement>;\n\nexport const Hr: FC<HrProps> = ({ className, ...props }) => {\n return <hr className={classNames(styles.root, className)} {...props} />;\n};\n","export default \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHZpZXdCb3g9IjAgMCAyMCAyMCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGlwLXBhdGg9InVybCgjY2xpcDBfNDIyXzExNDcwKSI+CiAgICA8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIKICAgICAgZD0iTTE3LjA3MTIgMy4wNzExNkMxNi41ODMgMi41ODMwMSAxNS43OTE2IDIuNTgzMDEgMTUuMzAzNCAzLjA3MTE2TDEwIDguMzc0NTZMNC42OTY2MSAzLjA3MTE2QzQuMjA4NDUgMi41ODMgMy40MTcgMi41ODMgMi45Mjg4NCAzLjA3MTE2QzIuNDQwNjkgMy41NTkzMSAyLjQ0MDY5IDQuMzUwNzcgMi45Mjg4NCA0LjgzODkzTDguMjMyMjQgMTAuMTQyM0wyLjkyOTAzIDE1LjQ0NTVDMi40NDA4NyAxNS45MzM3IDIuNDQwODcgMTYuNzI1MSAyLjkyOTAzIDE3LjIxMzNDMy40MTcxOCAxNy43MDE1IDQuMjA4NjQgMTcuNzAxNSA0LjY5Njc5IDE3LjIxMzNMMTAgMTEuOTEwMUwxNS4zMDMyIDE3LjIxMzNDMTUuNzkxNCAxNy43MDE1IDE2LjU4MjggMTcuNzAxNSAxNy4wNzEgMTcuMjEzM0MxNy41NTkxIDE2LjcyNTEgMTcuNTU5MSAxNS45MzM3IDE3LjA3MSAxNS40NDU1TDExLjc2NzggMTAuMTQyM0wxNy4wNzEyIDQuODM4OTNDMTcuNTU5MyA0LjM1MDc4IDE3LjU1OTMgMy41NTkzMiAxNy4wNzEyIDMuMDcxMTZaIgogICAgICBmaWxsPSJjdXJyZW50Y29sb3IiIC8+CiAgPC9nPgogIDxkZWZzPgogICAgPGNsaXBQYXRoIGlkPSJjbGlwMF80MjJfMTE0NzAiPgogICAgICA8cmVjdCB3aWR0aD0iMjAuMDAwNCIgaGVpZ2h0PSIyMCIgZmlsbD0id2hpdGUiIC8+CiAgICA8L2NsaXBQYXRoPgogIDwvZGVmcz4KPC9zdmc+Cg==\"","import { FC } from \"react\";\n\nimport CloseIcon from \"src/assets/close.svg\";\nimport { useSidebarStore } from \"src/stores/sidebar\";\n\nimport styles from \"./Sidebar.module.scss\";\n\nexport const HeaderContainer: FC = () => {\n const toggle = useSidebarStore((state) => state.toggle);\n\n const handleToggleSidebar = () => {\n toggle(false);\n };\n\n return (\n <div className={styles.header}>\n <div className={styles.closeIcon} onClick={handleToggleSidebar}>\n <CloseIcon />\n </div>\n </div>\n );\n};\n","import { FC } from \"react\";\nimport classNames from \"classnames\";\nimport { useTranslate } from \"@tolgee/react\";\n\nimport { ETypeFilter } from \"src/types/filters\";\n\nimport { Button } from \"../Button\";\n\nimport styles from \"./TypeFilter.module.scss\";\n\ninterface TypeFilterProps {\n value: ETypeFilter;\n className?: string;\n onChange?: (value: ETypeFilter) => void;\n}\n\nexport const TypeFilter: FC<TypeFilterProps> = ({ value, onChange, className }) => {\n const { t } = useTranslate(\"type_filter\");\n\n const handleChange = (value: ETypeFilter) => () => onChange?.(value);\n\n return (\n <div className={classNames(styles.root, className)}>\n <Button variant={value === ETypeFilter.All ? \"primary\" : \"secondary\"} onClick={handleChange(ETypeFilter.All)}>\n {t(\"all\")}\n </Button>\n <Button\n variant={value === ETypeFilter.PostOffice ? \"primary\" : \"secondary\"}\n onClick={handleChange(ETypeFilter.PostOffice)}\n >\n {t(\"post_office\")}\n </Button>\n <Button\n variant={value === ETypeFilter.PickPoint ? \"primary\" : \"secondary\"}\n onClick={handleChange(ETypeFilter.PickPoint)}\n >\n {t(\"pick_point\")}\n </Button>\n </div>\n );\n};\n","import { FC, memo } from \"react\";\n\nimport { ETypeFilter } from \"src/types/filters\";\nimport { useFilterStore } from \"src/stores/filters\";\n\nimport { TypeFilter } from \"../TypeFilter\";\n\ninterface TypeFilterContainerProps {\n className?: string;\n onChange: (value: ETypeFilter) => void;\n}\n\nconst TypeFilterContainer: FC<TypeFilterContainerProps> = ({ className, onChange }) => {\n const typeFilter = useFilterStore((state) => state.type);\n\n return <TypeFilter value={typeFilter} className={className} onChange={onChange} />;\n};\n\nconst MemoizedTypeFilterContainer = memo(TypeFilterContainer);\nexport { MemoizedTypeFilterContainer as TypeFilterContainer };\n","import classNames from \"classnames\";\nimport { InputHTMLAttributes, LabelHTMLAttributes } from \"react\";\n\nimport styles from \"./Radio.module.scss\";\n\nexport type RadioProps<T> = InputHTMLAttributes<HTMLInputElement> & {\n value?: T;\n defaultValue?: T;\n label?: string;\n labelProps?: LabelHTMLAttributes<HTMLLabelElement>;\n};\n\nexport const Radio = <T,>({ label, className, labelProps = {}, ...props }: RadioProps<T>) => {\n const { className: labelClassName, ...otherLabelProps } = labelProps;\n\n return (\n <label className={classNames(styles.label, labelClassName)} {...otherLabelProps}>\n <input type=\"radio\" className={classNames(styles.root, className)} {...props} />\n {label}\n </label>\n );\n};\n","import { Radio, RadioProps } from \"../Radio\";\n\nexport const Checkbox = <T,>(props: RadioProps<T>) => {\n return <Radio {...props} type=\"checkbox\" />;\n};\n","import classNames from \"classnames\";\nimport React, { ChangeEvent, HTMLAttributes } from \"react\";\n\nimport { RadioProps } from \"../Radio\";\n\nimport styles from \"../RadioGroup/RadioGroup.module.scss\";\n\nexport type CheckboxGroupProps<T> = Omit<HTMLAttributes<HTMLDivElement>, \"onChange\"> & {\n value?: T;\n label?: string;\n children: React.ReactElement<RadioProps<T>>[];\n onChange?: (value: T) => void;\n};\n\nexport const CheckboxGroup = <T extends Dictionary<unknown>>({\n label,\n value,\n onChange,\n children,\n className,\n ...props\n}: CheckboxGroupProps<T>) => {\n return (\n <div className={classNames(styles.root, className)} {...props}>\n {label && <span className={styles.legend}>{label}</span>}\n <div className={styles.body}>\n {React.Children.map(children, (child) => {\n if (!React.isValidElement(child)) {\n return null;\n }\n\n return React.cloneElement(child, {\n checked: !!value?.[child.props.value as keyof T],\n onChange: (event: ChangeEvent<HTMLInputElement>) =>\n onChange?.({\n ...value,\n [event.target.value]: event.target.checked,\n } as T),\n });\n })}\n </div>\n </div>\n );\n};\n","import { FC, memo } from \"react\";\nimport { useTranslate } from \"@tolgee/react\";\n\nimport { useFilterStore } from \"src/stores/filters\";\nimport { ESendFilter, Filter } from \"src/types/filters\";\n\nimport { Checkbox } from \"../Checkbox\";\nimport { CheckboxGroup } from \"../CheckboxGroup\";\n\ninterface SendFilterContainerProps {\n className?: string;\n onChange: (value: Filter[\"send\"]) => void;\n}\n\nconst SendFilterContainer: FC<SendFilterContainerProps> = ({ className, onChange }) => {\n const { t } = useTranslate(\"send_filter\");\n\n const sendFilter = useFilterStore((state) => state.send);\n\n return (\n <CheckboxGroup<Filter[\"send\"]> className={className} value={sendFilter} label={t(\"title\")} onChange={onChange}>\n <Checkbox<ESendFilter> name=\"send\" value={ESendFilter.Return} label={t(\"sending_returns\")} />\n <Checkbox<ESendFilter> name=\"send\" value={ESendFilter.Shipping} label={t(\"shipping\")} />\n <Checkbox<ESendFilter> name=\"send\" value={ESendFilter.Payment} label={t(\"payment\")} />\n </CheckboxGroup>\n );\n};\n\nconst MemoizedSendFilterContainer = memo(SendFilterContainer);\nexport { MemoizedSendFilterContainer as SendFilterContainer };\n","import { FC, memo } from \"react\";\nimport { useTranslate } from \"@tolgee/react\";\n\nimport { useFilterStore } from \"src/stores/filters\";\nimport { EReceiveFilter, Filter } from \"src/types/filters\";\n\nimport { Checkbox } from \"../Checkbox\";\nimport { CheckboxGroup } from \"../CheckboxGroup\";\n\ninterface ReceiveFilterContainerProps {\n className?: string;\n onChange: (value: Filter[\"receive\"]) => void;\n}\n\nconst ReceiveFilterContainer: FC<ReceiveFilterContainerProps> = ({ className, onChange }) => {\n const { t } = useTranslate(\"receive_filter\");\n\n const receiveFilter = useFilterStore((state) => state.receive);\n\n return (\n <CheckboxGroup<Filter[\"receive\"]>\n value={receiveFilter}\n label={t(\"title\")}\n onChange={onChange}\n className={className}\n >\n <Checkbox<EReceiveFilter> name=\"receive\" value={EReceiveFilter.DressingRoom} label={t(\"dressing_room\")} />\n <Checkbox<EReceiveFilter> name=\"receive\" value={EReceiveFilter.CheckOrder} label={t(\"check_order\")} />\n <Checkbox<EReceiveFilter> name=\"receive\" value={EReceiveFilter.PayByCash} label={t(\"pay_by_cash\")} />\n </CheckboxGroup>\n );\n};\n\nconst MemoizedReceiveFilterContainer = memo(ReceiveFilterContainer);\nexport { MemoizedReceiveFilterContainer as ReceiveFilterContainer };\n","import classNames from \"classnames\";\nimport { FC, useCallback } from \"react\";\n\nimport { useFilterStore } from \"src/stores/filters\";\nimport { useSidebarStore } from \"src/stores/sidebar\";\nimport { ETypeFilter, Filter } from \"src/types/filters\";\n\nimport { Hr } from \"../Hr\";\nimport { HeaderContainer } from \"./HeaderContainer\";\nimport { TypeFilterContainer } from \"./TypeFilterContainer\";\nimport { SendFilterContainer } from \"./SendFilterContainer\";\nimport { ReceiveFilterContainer } from \"./ReceiveFilterContainer\";\n\nimport styles from \"./Sidebar.module.scss\";\n\ninterface SidebarProps {\n className?: string;\n}\n\nexport const Sidebar: FC<SidebarProps> = ({ className }) => {\n const sidebarOpen = useSidebarStore((state) => state.open);\n const setFilter = useFilterStore((state) => state.setFilter);\n\n const handleChangeType = useCallback((value: ETypeFilter) => setFilter({ type: value }), [setFilter]);\n const handleChangeSend = useCallback((value: Filter[\"send\"]) => setFilter({ send: value }), [setFilter]);\n const handleChangeReceive = useCallback((value: Filter[\"receive\"]) => setFilter({ receive: value }), [setFilter]);\n // const handleChangeWorkingHours = useCallback((value: WorkingHours) => setFilter({ hours: value }), [setFilter]);\n\n return (\n <div\n className={classNames(styles.root, className, {\n [styles.open]: sidebarOpen,\n })}\n >\n <HeaderContainer />\n <div className={styles.withRightPadding}>\n <TypeFilterContainer className={styles.typeFilter} onChange={handleChangeType} />\n {/* <WorkingHoursFilter value={filter.hours} onChange={handleChangeWorkingHours} /> */}\n <Hr className={styles.separator} />\n <ReceiveFilterContainer onChange={handleChangeReceive} />\n <Hr />\n <SendFilterContainer onChange={handleChangeSend} />\n <Hr />\n </div>\n </div>\n );\n};\n","export default \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNjAiIGhlaWdodD0iNDAiIHZpZXdCb3g9IjAgMCA2MCA0MCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8cGF0aCBkPSJNMCAwSDUyQzU2LjQxODMgMCA2MCAzLjU4MTcyIDYwIDhWMzJDNjAgMzYuNDE4MyA1Ni40MTgzIDQwIDUyIDQwSDBWMFoiIGZpbGw9IiMzMjMyMzIiIC8+CiAgPHBhdGgKICAgIGQ9Ik0zMi4wOTMgMTBINDUuOTA3QzQ3LjA1ODEgMTAgNDggMTAuOTA5MiA0OCAxMi4wMjA1VjE0LjI0MzFDNDggMTUuMDUxMyA0Ny40NzY3IDE2LjA2MTUgNDYuOTUzNSAxNi41NjY3TDQyLjQ1MzUgMjAuNDA1NkM0MS44MjU2IDIwLjkxMDggNDEuNDA3IDIxLjkyMSA0MS40MDcgMjIuNzI5MlYyNy4wNzMzQzQxLjQwNyAyNy42Nzk1IDQwLjk4ODQgMjguNDg3NyA0MC40NjUxIDI4Ljc5MDhMMzkgMjkuN0MzNy42Mzk1IDMwLjUwODIgMzUuNzU1OCAyOS41OTkgMzUuNzU1OCAyNy45ODI2VjIyLjYyODJDMzUuNzU1OCAyMS45MjEgMzUuMzM3MiAyMS4wMTE4IDM0LjkxODYgMjAuNTA2N0wzMC45NDE5IDE2LjQ2NTZDMzAuNDE4NiAxNS45NjA1IDMwIDE1LjA1MTMgMzAgMTQuNDQ1MVYxMi4xMjE1QzMwIDEwLjkwOTIgMzAuOTQxOSAxMCAzMi4wOTMgMTBaIgogICAgc3Ryb2tlPSJ3aGl0ZSIgc3Ryb2tlLXdpZHRoPSIxLjUiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiAvPgo8L3N2Zz4K\"","import { FC } from \"react\";\nimport classNames from \"classnames\";\n\nimport FilterIcon from \"src/assets/filter.svg\";\nimport { useSidebarStore } from \"src/stores/sidebar\";\n\nimport styles from \"./MapContainer.module.scss\";\n\nexport const FilterButton: FC = () => {\n const open = useSidebarStore((state) => state.open);\n const toggle = useSidebarStore((state) => state.toggle);\n\n const handleToggleSidebar = () => {\n toggle(true);\n };\n\n return (\n <div\n className={classNames(styles.filterIcon, {\n [styles.sidebarOpen]: open,\n })}\n onClick={handleToggleSidebar}\n >\n <FilterIcon />\n </div>\n );\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.loadGoogleMapScript = exports.isBrowser = void 0;\nvar isBrowser = typeof window !== \"undefined\" && window.document;\nexports.isBrowser = isBrowser;\n\nvar loadGoogleMapScript = function loadGoogleMapScript(googleMapsScriptBaseUrl, googleMapsScriptUrl) {\n if (!isBrowser) return Promise.resolve();\n\n if (typeof google !== \"undefined\") {\n if (google.maps && google.maps.api) return Promise.resolve();\n }\n\n var scriptElements = document.querySelectorAll(\"script[src*=\\\"\".concat(googleMapsScriptBaseUrl, \"\\\"]\"));\n\n if (scriptElements && scriptElements.length) {\n return new Promise(function (resolve) {\n // in case we already have a script on the page and it's loaded we resolve\n if (typeof google !== \"undefined\") return resolve(); // otherwise we wait until it's loaded and resolve\n\n scriptElements[0].addEventListener(\"load\", function () {\n return resolve();\n });\n });\n }\n\n var scriptUrl = new URL(googleMapsScriptUrl);\n scriptUrl.searchParams.set(\"callback\", \"__REACT_GOOGLE_AUTOCOMPLETE_CALLBACK__\");\n var el = document.createElement(\"script\");\n el.src = scriptUrl.toString();\n return new Promise(function (resolve) {\n window.__REACT_GOOGLE_AUTOCOMPLETE_CALLBACK__ = resolve;\n document.body.appendChild(el);\n });\n};\n\nexports.loadGoogleMapScript = loadGoogleMapScript;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.GOOGLE_MAP_SCRIPT_BASE_URL = void 0;\nvar GOOGLE_MAP_SCRIPT_BASE_URL = \"https://maps.googleapis.com/maps/api/js\";\nexports.GOOGLE_MAP_SCRIPT_BASE_URL = GOOGLE_MAP_SCRIPT_BASE_URL;","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = usePlacesWidget;\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _utils = require(\"./utils\");\n\nvar _constants = require(\"./constants\");\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction usePlacesWidget(props) {\n var ref = props.ref,\n onPlaceSelected = props.onPlaceSelected,\n apiKey = props.apiKey,\n _props$libraries = props.libraries,\n libraries = _props$libraries === void 0 ? \"places\" : _props$libraries,\n _props$inputAutocompl = props.inputAutocompleteValue,\n inputAutocompleteValue = _props$inputAutocompl === void 0 ? \"new-password\" : _props$inputAutocompl,\n _props$options = props.options;\n _props$options = _props$options === void 0 ? {} : _props$options;\n\n var _props$options$types = _props$options.types,\n types = _props$options$types === void 0 ? [\"(cities)\"] : _props$options$types,\n componentRestrictions = _props$options.componentRestrictions,\n _props$options$fields = _props$options.fields,\n fields = _props$options$fields === void 0 ? [\"address_components\", \"geometry.location\", \"place_id\", \"formatted_address\"] : _props$options$fields,\n bounds = _props$options.bounds,\n options = _objectWithoutProperties(_props$options, [\"types\", \"componentRestrictions\", \"fields\", \"bounds\"]),\n _props$googleMapsScri = props.googleMapsScriptBaseUrl,\n googleMapsScriptBaseUrl = _props$googleMapsScri === void 0 ? _constants.GOOGLE_MAP_SCRIPT_BASE_URL : _props$googleMapsScri,\n language = props.language;\n\n var inputRef = (0, _react.useRef)(null);\n var event = (0, _react.useRef)(null);\n var autocompleteRef = (0, _react.useRef)(null);\n var observerHack = (0, _react.useRef)(null);\n var languageQueryParam = language ? \"&language=\".concat(language) : \"\";\n var googleMapsScriptUrl = \"\".concat(googleMapsScriptBaseUrl, \"?libraries=\").concat(libraries, \"&key=\").concat(apiKey).concat(languageQueryParam);\n var handleLoadScript = (0, _react.useCallback)(function () {\n return (0, _utils.loadGoogleMapScript)(googleMapsScriptBaseUrl, googleMapsScriptUrl);\n }, [googleMapsScriptBaseUrl, googleMapsScriptUrl]);\n (0, _react.useEffect)(function () {\n var config = _objectSpread(_objectSpread({}, options), {}, {\n fields: fields,\n types: types,\n bounds: bounds\n });\n\n if (componentRestrictions) {\n config.componentRestrictions = componentRestrictions;\n }\n\n if (autocompleteRef.current || !inputRef.current || !_utils.isBrowser) return;\n if (ref && !ref.current) ref.current = inputRef.current;\n\n var handleAutoComplete = function handleAutoComplete() {\n var _google$maps;\n\n if (typeof google === \"undefined\") return console.error(\"Google has not been found. Make sure your provide apiKey prop.\");\n if (!((_google$maps = google.maps) !== null && _google$maps !== void 0 && _google$maps.places)) return console.error(\"Google maps places API must be loaded.\");\n if (!inputRef.current instanceof HTMLInputElement) return console.error(\"Input ref must be HTMLInputElement.\");\n autocompleteRef.current = new google.maps.places.Autocomplete(inputRef.current, config);\n\n if (autocompleteRef.current) {\n event.current = autocompleteRef.current.addListener(\"place_changed\", function () {\n if (onPlaceSelected && autocompleteRef && autocompleteRef.current) {\n onPlaceSelected(autocompleteRef.current.getPlace(), inputRef.current, autocompleteRef.current);\n }\n });\n }\n };\n\n if (apiKey) {\n handleLoadScript().then(function () {\n return handleAutoComplete();\n });\n } else {\n handleAutoComplete();\n }\n\n return function () {\n return event.current ? event.current.remove() : undefined;\n };\n }, []); // Autofill workaround adapted from https://stackoverflow.com/questions/29931712/chrome-autofill-covers-autocomplete-for-google-maps-api-v3/49161445#49161445\n\n (0, _react.useEffect)(function () {\n var _React$version;\n\n // TODO find out why react 18(strict mode) hangs the page loading\n if (!(_react.default !== null && _react.default !== void 0 && (_React$version = _react.default.version) !== null && _React$version !== void 0 && _React$version.startsWith(\"18\")) && _utils.isBrowser && window.MutationObserver && inputRef.current && inputRef.current instanceof HTMLInputElement) {\n observerHack.current = new MutationObserver(function () {\n observerHack.current.disconnect();\n\n if (inputRef.current) {\n inputRef.current.autocomplete = inputAutocompleteValue;\n }\n });\n observerHack.current.observe(inputRef.current, {\n attributes: true,\n attributeFilter: [\"autocomplete\"]\n });\n }\n }, [inputAutocompleteValue]);\n (0, _react.useEffect)(function () {\n if (autocompleteRef.current) {\n autocompleteRef.current.setFields(fields);\n }\n }, [fields]);\n (0, _react.useEffect)(function () {\n if (autocompleteRef.current) {\n autocompleteRef.current.setBounds(bounds);\n }\n }, [bounds]);\n (0, _react.useEffect)(function () {\n if (autocompleteRef.current) {\n autocompleteRef.current.setComponentRestrictions(componentRestrictions);\n }\n }, [componentRestrictions]);\n (0, _react.useEffect)(function () {\n if (autocompleteRef.current) {\n autocompleteRef.current.setOptions(options);\n }\n }, [options]);\n return {\n ref: inputRef,\n autocompleteRef: autocompleteRef\n };\n}","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _usePlacesWidget2 = _interopRequireDefault(require(\"./usePlacesWidget\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction ReactGoogleAutocomplete(props) {\n var onPlaceSelected = props.onPlaceSelected,\n apiKey = props.apiKey,\n libraries = props.libraries,\n inputAutocompleteValue = props.inputAutocompleteValue,\n options = props.options,\n googleMapsScriptBaseUrl = props.googleMapsScriptBaseUrl,\n refProp = props.refProp,\n language = props.language,\n rest = _objectWithoutProperties(props, [\"onPlaceSelected\", \"apiKey\", \"libraries\", \"inputAutocompleteValue\", \"options\", \"googleMapsScriptBaseUrl\", \"refProp\", \"language\"]);\n\n var _usePlacesWidget = (0, _usePlacesWidget2.default)({\n ref: refProp,\n googleMapsScriptBaseUrl: googleMapsScriptBaseUrl,\n onPlaceSelected: onPlaceSelected,\n apiKey: apiKey,\n libraries: libraries,\n inputAutocompleteValue: inputAutocompleteValue,\n options: options,\n language: language\n }),\n ref = _usePlacesWidget.ref;\n\n return /*#__PURE__*/_react.default.createElement(\"input\", _extends({\n ref: ref\n }, rest));\n}\n\nReactGoogleAutocomplete.propTypes = {\n apiKey: _propTypes.default.string,\n libraries: _propTypes.default.arrayOf(_propTypes.default.string),\n ref: _propTypes.default.oneOfType([// Either a function\n _propTypes.default.func, // Or anything shaped { current: any }\n _propTypes.default.shape({\n current: _propTypes.default.any\n })]),\n googleMapsScriptBaseUrl: _propTypes.default.string,\n onPlaceSelected: _propTypes.default.func,\n inputAutocompleteValue: _propTypes.default.string,\n options: _propTypes.default.shape({\n componentRestrictions: _propTypes.default.object,\n bounds: _propTypes.default.object,\n location: _propTypes.default.object,\n offset: _propTypes.default.number,\n origin: _propTypes.default.object,\n radius: _propTypes.default.number,\n sessionToken: _propTypes.default.object,\n types: _propTypes.default.arrayOf(_propTypes.default.string)\n }),\n language: _propTypes.default.string\n};\n\nvar _default = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {\n return /*#__PURE__*/_react.default.createElement(ReactGoogleAutocomplete, _extends({}, props, {\n refProp: ref\n }));\n});\n\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function get() {\n return _ReactGoogleAutocomplete.default;\n }\n});\nObject.defineProperty(exports, \"usePlacesWidget\", {\n enumerable: true,\n get: function get() {\n return _usePlacesWidget.default;\n }\n});\n\nvar _ReactGoogleAutocomplete = _interopRequireDefault(require(\"./ReactGoogleAutocomplete\"));\n\nvar _usePlacesWidget = _interopRequireDefault(require(\"./usePlacesWidget\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }","'use strict';\n\nmodule.exports = require('./lib');\n","export default \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHZpZXdCb3g9IjAgMCAyMCAyMCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIKICAgIGQ9Ik0xNC42MTc0IDE2LjAzMTdDMTMuMDc3NyAxNy4yNjM1IDExLjEyNDYgMTggOC45OTk1MSAxOEM0LjAyODk1IDE4IC0wLjAwMDQ4ODI4MSAxMy45NzA2IC0wLjAwMDQ4ODI4MSA5Qy0wLjAwMDQ4ODI4MSA0LjAyOTQ0IDQuMDI4OTUgMCA4Ljk5OTUxIDBDMTMuOTcwMSAwIDE3Ljk5OTUgNC4wMjk0NCAxNy45OTk1IDlDMTcuOTk5NSAxMS4xMjQ5IDE3LjI2MzEgMTMuMDc3OCAxNi4wMzE2IDE0LjYxNzVMMTkuNzA3IDE4LjI5MjlDMjAuMDk3NSAxOC42ODM0IDIwLjA5NzUgMTkuMzE2NiAxOS43MDcgMTkuNzA3MUMxOS4zMTY1IDIwLjA5NzcgMTguNjgzMyAyMC4wOTc3IDE4LjI5MjggMTkuNzA3MUwxNC42MTc0IDE2LjAzMTdaTTEuOTk5NTEgOUMxLjk5OTUxIDUuMTM0MDEgNS4xMzM1MiAyIDguOTk5NTEgMkMxMi44NjU1IDIgMTUuOTk5NSA1LjEzNDAxIDE1Ljk5OTUgOUMxNS45OTk1IDEwLjg4NjYgMTUuMjUzMiAxMi41OTg4IDE0LjAzOTcgMTMuODU3N0MxNC4wMDYgMTMuODgzNiAxMy45NzM3IDEzLjkxMjEgMTMuOTQyOCAxMy45NDI5QzEzLjkxMTkgMTMuOTczOCAxMy44ODM1IDE0LjAwNjIgMTMuODU3NSAxNC4wMzk5QzEyLjU5ODYgMTUuMjUzNSAxMC44ODYzIDE2IDguOTk5NTEgMTZDNS4xMzM1MiAxNiAxLjk5OTUxIDEyLjg2NiAxLjk5OTUxIDlaIgogICAgZmlsbD0iY3VycmVudGNvbG9yIiAvPgo8L3N2Zz4K\"","import classNames from \"classnames\";\nimport { ReactNode, forwardRef } from \"react\";\n\nimport styles from \"./Input.module.scss\";\n\ninterface InputProps extends React.HTMLAttributes<HTMLInputElement> {\n label?: string;\n className?: string;\n startAdornment?: ReactNode;\n endAdornment?: ReactNode;\n}\n\nexport const Input = forwardRef<HTMLInputElement, InputProps>(\n ({ label, className, startAdornment, endAdornment, ...props }, ref) => {\n return (\n <label className={classNames(styles.root, className)}>\n {label && <span className={styles.label}>{label}</span>}\n <div className={styles.inputContainer}>\n {startAdornment && <div className={styles.startAdornment}>{startAdornment}</div>}\n <input ref={ref} className={styles.input} {...props} />\n {endAdornment && <div className={styles.endAdornment}>{endAdornment}</div>}\n </div>\n </label>\n );\n },\n);\n","import { FC } from \"react\";\nimport { useTranslate } from \"@tolgee/react\";\nimport { usePlacesWidget } from \"react-google-autocomplete\";\n\nimport { useMapStore } from \"src/stores/map\";\nimport SearchIcon from \"src/assets/search.svg\";\nimport { useConfigContext } from \"src/context/config\";\nimport { MAP_SELECTED_POINT_ZOOM } from \"src/constants/map\";\nimport { useSelectedPlaceStore } from \"src/stores/selectedPlace\";\n\nimport { Input } from \"../Input\";\n\ninterface CourierDeliverySelectorContainerProps {\n className?: string;\n}\n\nexport const CourierDeliverySelectorContainer: FC<CourierDeliverySelectorContainerProps> = ({ className }) => {\n const { t } = useTranslate(\"location_selector\");\n\n const { country } = useConfigContext();\n\n const setMapZoom = useMapStore((state) => state.setZoom);\n const setSelectedPlace = useSelectedPlaceStore((state) => state.setPlace);\n\n const types: google.maps.places.AutocompleteOptions[\"types\"] = [];\n\n const placesOptions: google.maps.places.AutocompleteOptions | undefined = country\n ? { componentRestrictions: { country }, types }\n : { types };\n\n const handleSetSelectedPlace = (place: google.maps.places.PlaceResult) => {\n setMapZoom(MAP_SELECTED_POINT_ZOOM);\n setSelectedPlace(place);\n };\n\n const { ref } = usePlacesWidget<HTMLInputElement>({\n libraries: [\"places\"],\n options: placesOptions,\n onPlaceSelected: handleSetSelectedPlace,\n });\n\n return <Input ref={ref} className={className} endAdornment={<SearchIcon />} placeholder={t(\"placeholder\")} />;\n};\n","import { FC, memo } from \"react\";\n\nimport { useMapStore } from \"src/stores/map\";\n\nimport { CourierDeliverySelectorContainer } from \"./CourierDeliverySelectorContainer\";\n\ninterface LocationSelectorProps {\n className?: string;\n // value?: null | LocationPoint;\n // onChange?: (value: null | LocationPoint) => void;\n}\n\nconst LocationSelector: FC<LocationSelectorProps> = ({ className }) => {\n const mapLoaded = useMapStore((state) => state.loaded);\n\n if (!mapLoaded) {\n return;\n }\n\n return <CourierDeliverySelectorContainer className={className} />;\n // return <SelfPickupSelectorContainer className={className} value={value} onChange={onChange} />;\n};\n\nconst LocationSelectorMemo = memo(LocationSelector);\nexport { LocationSelectorMemo as LocationSelector };\n","import { create } from \"zustand\";\n\nimport { LocationPoint } from \"src/types/points\";\n\nexport type SelectPointHook = (point: Nullable<LocationPoint>) => void;\n\ninterface State {\n location: Nullable<LocationPoint>;\n hook: Nullable<SelectPointHook>;\n}\n\ninterface Action {\n setSelectedPoint(point: Nullable<LocationPoint>): void;\n\n setSelectPointHook(hook: Nullable<SelectPointHook>): void;\n}\n\nconst initialState: State = {\n location: null,\n hook: null,\n};\n\nexport const useSelectedPointStore = create<State & Action>()((set) => ({\n ...initialState,\n\n setSelectedPoint(location: Nullable<LocationPoint>) {\n set({ location });\n },\n\n setSelectPointHook(hook: SelectPointHook) {\n set({ hook });\n },\n}));\n","export default \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDIiIGhlaWdodD0iNDIiIHZpZXdCb3g9IjAgMCA0MiA0MiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8cmVjdCB3aWR0aD0iNDIiIGhlaWdodD0iNDIiIHJ4PSIyMSIgZmlsbD0id2hpdGUiIC8+CiAgPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiCiAgICBkPSJNMzEuMDAzNSAyOC4wMDA4VjE3Ljc2NDZDMzEuMDAzNSAxNi42NjAzIDMwLjM5NjggMTUuNjQ1MyAyOS40MjQyIDE1LjEyMjNMMjIuNDIwNiAxMS4zNTY3QzIxLjUzMzUgMTAuODc5OCAyMC40NjYzIDEwLjg3OTggMTkuNTc5MyAxMS4zNTY3TDEyLjU3NTcgMTUuMTIyM0MxMS42MDMgMTUuNjQ1MyAxMC45OTYzIDE2LjY2MDMgMTAuOTk2MyAxNy43NjQ2VjI4LjAwMDhDMTAuOTk2MyAyOS42NTc2IDEyLjMzOTUgMzEuMDAwOCAxMy45OTYzIDMxLjAwMDhIMTkuMzExQzE5LjMyOTEgMzEuMDAxMiAxOS4zNDczIDMxLjAwMTQgMTkuMzY1NCAzMS4wMDE0SDIyLjYzNEMyMi42NTIyIDMxLjAwMTQgMjIuNjcwMyAzMS4wMDEyIDIyLjY4ODQgMzEuMDAwOEgyOC4wMDM1QzI5LjY2MDQgMzEuMDAwOCAzMS4wMDM1IDI5LjY1NzYgMzEuMDAzNSAyOC4wMDA4Wk0yNS4wODQxIDI5LjAwMDhIMjguMDAzNUMyOC41NTU4IDI5LjAwMDggMjkuMDAzNSAyOC41NTMxIDI5LjAwMzUgMjguMDAwOFYxNy43NjQ2QzI5LjAwMzUgMTcuMzk2NSAyOC44MDEzIDE3LjA1ODIgMjguNDc3MSAxNi44ODM4TDIxLjQ3MzUgMTMuMTE4M0MyMS4xNzc4IDEyLjk1OTMgMjAuODIyMSAxMi45NTkzIDIwLjUyNjQgMTMuMTE4M0wxMy41MjI4IDE2Ljg4MzhDMTMuMTk4NiAxNy4wNTgyIDEyLjk5NjMgMTcuMzk2NSAxMi45OTYzIDE3Ljc2NDZWMjguMDAwOEMxMi45OTYzIDI4LjU1MzEgMTMuNDQ0MSAyOS4wMDA4IDEzLjk5NjMgMjkuMDAwOEgxNi45MTUzQzE2Ljg4MjYgMjguODM5NCAxNi44NjU0IDI4LjY3MjQgMTYuODY1NCAyOC41MDE0VjIwLjg5NDlDMTYuODY1NCAxOS41MTQyIDE3Ljk4NDcgMTguMzk0OSAxOS4zNjU0IDE4LjM5NDlIMjIuNjM0QzI0LjAxNDcgMTguMzk0OSAyNS4xMzQgMTkuNTE0MiAyNS4xMzQgMjAuODk0OVYyOC41MDE0QzI1LjEzNCAyOC42NzI0IDI1LjExNjggMjguODM5NCAyNS4wODQxIDI5LjAwMDhaTTIyLjY1ODMgMjkuMDAwOEMyMi45MjMyIDI4Ljk4ODEgMjMuMTM0IDI4Ljc2OTQgMjMuMTM0IDI4LjUwMTRWMjAuODk0OUMyMy4xMzQgMjAuNjE4OCAyMi45MTAyIDIwLjM5NDkgMjIuNjM0IDIwLjM5NDlIMTkuMzY1NEMxOS4wODkzIDIwLjM5NDkgMTguODY1NCAyMC42MTg4IDE4Ljg2NTQgMjAuODk0OVYyOC41MDE0QzE4Ljg2NTQgMjguNzY5NCAxOS4wNzYzIDI4Ljk4ODEgMTkuMzQxMSAyOS4wMDA4SDIyLjY1ODNaIgogICAgZmlsbD0iY3VycmVudGNvbG9yIiAvPgogIDxyZWN0IHg9IjAuNSIgeT0iMC41IiB3aWR0aD0iNDEiIGhlaWdodD0iNDEiIHJ4PSIyMC41IiBzdHJva2U9IiMxRDM2NjUiIHN0cm9rZS1vcGFjaXR5PSIwLjEiIC8+Cjwvc3ZnPgo=\"","import classNames from \"classnames\";\nimport { FC, ReactNode } from \"react\";\n\nimport styles from \"./Chip.module.scss\";\n\ninterface ChipProps extends React.ComponentProps<\"div\"> {\n active?: boolean;\n className?: string;\n children: ReactNode;\n}\n\nexport const Chip: FC<ChipProps> = ({ active, children, className, ...props }) => {\n return (\n <div\n {...props}\n className={classNames(styles.root, className, {\n [styles.active]: active,\n })}\n >\n {children}\n </div>\n );\n};\n","import { FC } from \"react\";\nimport classNames from \"classnames\";\n\nimport styles from \"./TextArea.module.scss\";\n\ntype TextAreaProps = React.ComponentProps<\"textarea\">;\n\nexport const TextArea: FC<TextAreaProps> = ({ className, ...props }) => {\n return <textarea {...props} className={classNames(styles.root, className)} />;\n};\n","import { Reducer } from \"react\";\n\nimport { CourierDeliveryPoint } from \"src/types/points\";\n\nexport type CourierDetailsModalState = CourierDeliveryPoint;\n\nexport type CourierDetailsModalAction =\n | {\n type: \"SET_COMMENT\";\n payload: string;\n }\n // | {\n // type: \"SET_PAY_BY_CARD\";\n // payload: boolean;\n // }\n // | {\n // type: \"SET_PAY_BY_CASH\";\n // payload: boolean;\n // }\n | {\n type: \"SET_DELIVERY_TIME\";\n payload: string;\n }\n | {\n type: \"SET_APARTMENT_NUMBER\";\n payload: string;\n };\n\nexport const reducer: Reducer<CourierDetailsModalState, CourierDetailsModalAction> = (state, action) => {\n let nextState = { ...state };\n\n switch (action.type) {\n case \"SET_COMMENT\":\n nextState = { ...state, comment: action.payload };\n break;\n // case \"SET_PAY_BY_CARD\":\n // nextState = { ...state, pay_by_cash: false, pay_by_card: action.payload };\n // break;\n // case \"SET_PAY_BY_CASH\":\n // nextState = { ...state, pay_by_card: false, pay_by_cash: action.payload };\n // break;\n case \"SET_DELIVERY_TIME\":\n nextState = { ...state, delivery_time: action.payload };\n break;\n case \"SET_APARTMENT_NUMBER\":\n nextState = { ...state, apartment_number: action.payload };\n break;\n }\n\n return nextState;\n};\n","import classNames from \"classnames\";\nimport { FC, useReducer } from \"react\";\nimport { useTranslate } from \"@tolgee/react\";\n\nimport CloseIcon from \"src/assets/close.svg\";\nimport LogoIcon from \"src/assets/courier-balloon-logo.svg\";\nimport { CourierPoint, CourierDeliveryPoint } from \"src/types/points\";\n\nimport { Chip } from \"../Chip\";\nimport { Button } from \"../Button\";\nimport { TextArea } from \"../TextArea\";\nimport { reducer } from \"./CourierDetailsModal.utils\";\n\nimport styles from \"./CourierDetailsModal.module.scss\";\n\ninterface CourierDetailsModalProps {\n className?: string;\n onClose?: () => void;\n location: CourierPoint;\n onSubmit?: (point: CourierDeliveryPoint) => void;\n}\n\nexport const CourierDetailsModal: FC<CourierDetailsModalProps> = ({ onClose, onSubmit, location, className }) => {\n const { t } = useTranslate([\"details_modal\", \"courier_balloon\", \"common\"]);\n\n const [state, dispatch] = useReducer(reducer, {\n ...location,\n comment: \"\",\n delivery_time: \"\",\n // pay_by_cash: false,\n // pay_by_card: false,\n apartment_number: \"\",\n });\n\n const handleSubmit = () => {\n onSubmit?.(state);\n };\n\n // const handlePayByCash = () => {\n // dispatch({ payload: true, type: \"SET_PAY_BY_CASH\" });\n // };\n\n // const handlePayByCard = () => {\n // dispatch({ payload: true, type: \"SET_PAY_BY_CARD\" });\n // };\n\n const handleSetDeliveryTime = (value: string) => () => {\n dispatch({ payload: value, type: \"SET_DELIVERY_TIME\" });\n };\n\n const handleChangeApartmentNumber = (event: React.ChangeEvent<HTMLTextAreaElement>) => {\n dispatch({ payload: event.target.value, type: \"SET_APARTMENT_NUMBER\" });\n };\n\n const handleChangeComment = (event: React.ChangeEvent<HTMLTextAreaElement>) => {\n dispatch({ type: \"SET_COMMENT\", payload: event.target.value });\n };\n\n const valid = !!(/* (state.pay_by_cash || state.pay_by_card) && */ (state.delivery_time && state.apartment_number));\n\n return (\n <div className={classNames(styles.root, className)}>\n <div className={styles.header}>\n <div className={styles.close} onClick={onClose}>\n <CloseIcon />\n </div>\n\n <div className={styles.title}>\n <LogoIcon />\n <span>{t(\"title\", { ns: \"courier_balloon\" })}</span>\n </div>\n </div>\n\n <div className={styles.content}>\n <section className={styles.section}>\n <label>{t(\"address\")}:</label>\n <p>{location.address}</p>\n </section>\n\n <section className={styles.section}>\n <label>{t(\"delivery_time\")}:</label>\n <div className={styles.chips}>\n <Chip active={state.delivery_time === \"8:00-13:00\"} onClick={handleSetDeliveryTime(\"8:00-13:00\")}>\n 8:00 - 13:00\n </Chip>\n <Chip active={state.delivery_time === \"14:00-22:00\"} onClick={handleSetDeliveryTime(\"14:00-22:00\")}>\n 14:00 - 22:00\n </Chip>\n </div>\n </section>\n\n {/* <section className={styles.section}>\n <label>{t(\"payment_method\")}:</label>\n <div className={styles.chips}>\n <Chip active={state.pay_by_cash} onClick={handlePayByCash}>\n {t(\"pay_by_cash\")}\n </Chip>\n <Chip active={state.pay_by_card} onClick={handlePayByCard}>\n {t(\"pay_by_card\")}\n </Chip>\n </div>\n </section> */}\n\n <section className={styles.section}>\n <label>{t(\"apartment_number\")}:</label>\n <TextArea rows={1} onBlur={handleChangeApartmentNumber} />\n </section>\n\n <section className={classNames(styles.section, styles.commentSection)}>\n <label>{t(\"comment\")}:</label>\n <TextArea className={styles.comment} onBlur={handleChangeComment} />\n </section>\n </div>\n\n <div className={styles.actions}>\n <Button disabled={!valid} variant=\"primary\" className={styles.submit} onClick={handleSubmit}>\n {t(\"choose\", { ns: \"common\" })}\n </Button>\n </div>\n </div>\n );\n};\n","export default \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDIiIGhlaWdodD0iNDIiIHZpZXdCb3g9IjAgMCA0MiA0MiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHJlY3Qgd2lkdGg9IjQyIiBoZWlnaHQ9IjQyIiByeD0iMjEiIGZpbGw9IndoaXRlIi8+CjxwYXRoIGQ9Ik03LjYzMzYyIDI1QzcuMzM5MjcgMjUgNy4wNjcgMjQuOTI1OSA2LjgxNjgxIDI0Ljc3NzhDNi41NjY2MiAyNC42Mjk2IDYuMzY3OTMgMjQuNDI5NiA2LjIyMDc2IDI0LjE3NzhDNi4wNzM1OSAyMy45MjU5IDYgMjMuNjUxOSA2IDIzLjM1NTZWMTguNjQ0NEM2IDE4LjM0MDcgNi4wNzM1OSAxOC4wNjY3IDYuMjIwNzYgMTcuODIyMkM2LjM2NzkzIDE3LjU3MDQgNi41NjY2MiAxNy4zNzA0IDYuODE2ODEgMTcuMjIyMkM3LjA2NyAxNy4wNzQxIDcuMzM5MjcgMTcgNy42MzM2MiAxN0gxMi4zMTM3QzEyLjYwODEgMTcgMTIuODc2NyAxNy4wNzQxIDEzLjExOTUgMTcuMjIyMkMxMy4zNjk3IDE3LjM3MDQgMTMuNTY4NCAxNy41NzA0IDEzLjcxNTUgMTcuODIyMkMxMy44NzAxIDE4LjA2NjcgMTMuOTQ3MyAxOC4zNDA3IDEzLjk0NzMgMTguNjQ0NFYyMy4zNTU2QzEzLjk0NzMgMjMuNjUxOSAxMy44NzAxIDIzLjkyNTkgMTMuNzE1NSAyNC4xNzc4QzEzLjU2ODQgMjQuNDI5NiAxMy4zNjk3IDI0LjYyOTYgMTMuMTE5NSAyNC43Nzc4QzEyLjg3NjcgMjQuOTI1OSAxMi42MDgxIDI1IDEyLjMxMzcgMjVINy42MzM2MlpNNy43MTA4OSAyMy4yNjY3SDEyLjIxNDRWMTguNzMzM0g3LjcxMDg5VjIzLjI2NjdaIiBmaWxsPSJibGFjayIvPgo8cGF0aCBkPSJNMTUuMTYyOSAyNVYxN0gxNi45MjlMMTkuNjIyMiAyMC4yMzMzTDIyLjMwNDUgMTdIMjQuMDgxNlYyNUgyMi4zNTk3VjE5LjYzMzNMMTkuNjIyMiAyMi45MjIyTDE2Ljg3MzggMTkuNjQ0NFYyNUgxNS4xNjI5WiIgZmlsbD0iYmxhY2siLz4KPHBhdGggZD0iTTI1LjQwMzIgMjVWMTdIMjcuMTY5M0wzMS42MTc2IDIyLjMzMzNWMTdIMzMuMzUwNVYyNUgzMS41ODQ1TDI3LjExNDEgMTkuNjQ0NFYyNUgyNS40MDMyWiIgZmlsbD0iYmxhY2siLz4KPHBhdGggZD0iTTM0LjMxMTIgMjVWMTdIMzZWMjVIMzQuMzExMloiIGZpbGw9ImJsYWNrIi8+CjxyZWN0IHg9IjAuNSIgeT0iMC41IiB3aWR0aD0iNDEiIGhlaWdodD0iNDEiIHJ4PSIyMC41IiBzdHJva2U9IiMxRDM2NjUiIHN0cm9rZS1vcGFjaXR5PSIwLjEiLz4KPC9zdmc+Cg==\"","import { FC } from \"react\";\nimport classNames from \"classnames\";\nimport { useTranslate } from \"@tolgee/react\";\n\nimport CloseIcon from \"src/assets/close.svg\";\nimport { LocationPoint } from \"src/types/points\";\nimport LogoIcon from \"src/assets/balloon-logo.svg\";\n\nimport { Chip } from \"../Chip\";\nimport { Button } from \"../Button\";\n\nimport styles from \"./LocationDetailsModal.module.scss\";\n\ninterface LocationDetailsModalProps {\n className?: string;\n onClose?: () => void;\n location: LocationPoint;\n onSubmit?: (point: LocationPoint) => void;\n}\n\nexport const LocationDetailsModal: FC<LocationDetailsModalProps> = ({ onClose, onSubmit, location, className }) => {\n const { t } = useTranslate([\"details_modal\", \"common\"]);\n\n const handleSubmit = () => {\n onSubmit?.(location);\n };\n\n return (\n <div className={classNames(styles.root, className)}>\n <div className={styles.header}>\n <div className={styles.close} onClick={onClose}>\n <CloseIcon />\n </div>\n\n <div className={styles.title}>\n <LogoIcon />\n <span>{location.name}</span>\n </div>\n </div>\n\n <div className={styles.content}>\n <section className={styles.section}>\n <label>{t(\"address\")}:</label>\n <p>{location.location.full_address}</p>\n </section>\n\n {!!location.schedule.length && (\n <section className={styles.section}>\n <label>{t(\"schedule\")}:</label>\n {location.schedule.map((item, index) => (\n <p key={index} className={styles.scheduleItem}>\n {item}\n </p>\n ))}\n </section>\n )}\n\n {(location.pay_by_card || location.pay_by_card) && (\n <section className={styles.section}>\n <label>{t(\"payment_method\")}:</label>\n <div className={styles.chips}>\n {location.pay_by_cash && <Chip>{t(\"pay_by_cash\")}</Chip>}\n {location.pay_by_card && <Chip>{t(\"pay_by_card\")}</Chip>}\n </div>\n </section>\n )}\n\n <section className={styles.section}>\n <label>{t(\"services\")}:</label>\n <div className={styles.services}>\n {location.is_pickup && <span>{t(\"is_pickup\")}</span>}\n {location.is_delivery && <span>{t(\"is_delivery\")}</span>}\n {location.is_dressing_room && <span>{t(\"is_dressing_room\")}</span>}\n {location.is_check_order && <span>{t(\"is_check_order\")}</span>}\n </div>\n </section>\n\n <section className={styles.section}>\n <label>{t(\"location\")}:</label>\n <p>{location.location_name}</p>\n </section>\n\n <section className={styles.images}>\n {location.images.map((image) => (\n <img src={image} key={image} alt={location.name} className={styles.image} />\n ))}\n </section>\n </div>\n\n <div className={styles.actions}>\n <Button variant=\"primary\" className={styles.submit} onClick={handleSubmit}>\n {t(\"choose\", { ns: \"common\" })}\n </Button>\n </div>\n </div>\n );\n};\n","import { FC, useCallback } from \"react\";\n\nimport { useMapStore } from \"src/stores/map\";\nimport { useConfigContext } from \"src/context/config\";\nimport { useCourierPointStore } from \"src/stores/courierPoint\";\nimport { useSelectedPointStore } from \"src/stores/selectedPoint\";\nimport { CourierDeliveryPoint, LocationPoint } from \"src/types/points\";\n\nimport { CourierDetailsModal } from \"../CourierDetailsModal\";\nimport { LocationDetailsModal } from \"../LocationDetailsModal\";\n\nimport styles from \"./MapContainer.module.scss\";\n\nexport const DetailsModalContainer: FC = () => {\n const { onPointClick } = useConfigContext();\n\n const detailsOpen = useMapStore((state) => state.detailsOpen);\n const setDetailsOpen = useMapStore((state) => state.setDetailsOpen);\n\n const selectedPoint = useSelectedPointStore((state) => state.location);\n const setSelectedPoint = useSelectedPointStore((state) => state.setSelectedPoint);\n\n const courierPoint = useCourierPointStore((state) => state.courierPoint);\n const setCourierPoint = useCourierPointStore((state) => state.setCourierPoint);\n\n const handleCloseDetails = useCallback(() => {\n setDetailsOpen(false);\n }, [setDetailsOpen]);\n\n const handleSubmitDetails = useCallback(\n (point: LocationPoint | CourierDeliveryPoint) => {\n onPointClick(point);\n setDetailsOpen(false);\n setSelectedPoint(null);\n setCourierPoint(null);\n },\n [onPointClick, setCourierPoint, setDetailsOpen, setSelectedPoint],\n );\n\n return (\n <>\n {courierPoint?.address && detailsOpen && (\n <CourierDetailsModal\n location={courierPoint}\n className={styles.details}\n onClose={handleCloseDetails}\n onSubmit={handleSubmitDetails}\n />\n )}\n\n {selectedPoint && detailsOpen && (\n <LocationDetailsModal\n location={selectedPoint}\n className={styles.details}\n onClose={handleCloseDetails}\n onSubmit={handleSubmitDetails}\n />\n )}\n </>\n );\n};\n","import classNames from \"classnames\";\nimport { FC, ReactNode, memo } from \"react\";\n\nimport { FilterButton } from \"./FilterButton\";\nimport { LocationSelector } from \"../LocationSelector\";\nimport { DetailsModalContainer } from \"./DetailsModalContainer\";\n\nimport styles from \"./MapContainer.module.scss\";\n\ninterface MapContainerProps {\n children: ReactNode;\n className?: string;\n}\n\nconst MapContainer: FC<MapContainerProps> = ({ className, children }) => {\n return (\n <div className={classNames(styles.root, className)}>\n <LocationSelector className={styles.locationSelector} />\n <FilterButton />\n\n {children}\n\n <DetailsModalContainer />\n </div>\n );\n};\n\nconst MemoizedMapContainer = memo(MapContainer);\nexport { MemoizedMapContainer as MapContainer };\n","import classNames from \"classnames\";\nimport { FC, ReactNode } from \"react\";\n\nimport styles from \"./Aside.module.scss\";\n\ninterface AsideProps {\n open: boolean;\n className?: string;\n children: ReactNode;\n}\n\nexport const Aside: FC<AsideProps> = ({ open, children, className }) => {\n return (\n <div\n className={classNames(styles.root, className, {\n [styles.open]: open,\n })}\n >\n <div className={styles.overlay} />\n <div className={styles.container}>{children}</div>\n </div>\n );\n};\n","import { useTranslate } from \"@tolgee/react\";\nimport { ElementRef, memo, useRef } from \"react\";\nimport { usePlacesWidget } from \"react-google-autocomplete\";\n\nimport { useMapStore } from \"src/stores/map\";\nimport { useConfigContext } from \"src/context/config\";\nimport { MAP_SELECTED_PLACE_ZOOM } from \"src/constants/map\";\nimport { useSelectedPlaceStore } from \"src/stores/selectedPlace\";\nimport { useLocationAsideStore } from \"src/stores/locationAside\";\n\nimport { Input } from \"../Input\";\nimport { Aside } from \"../Aside\";\n\nimport styles from \"./LocationAside.module.scss\";\n\nconst LocationAside = () => {\n const { t } = useTranslate([\"location_aside\", \"common\"]);\n\n const { country } = useConfigContext();\n\n const containerRef = useRef<ElementRef<\"div\">>(null);\n\n const setMapZoom = useMapStore((state) => state.setZoom);\n const setSelectedPlace = useSelectedPlaceStore((state) => state.setPlace);\n\n const open = useLocationAsideStore((state) => state.open);\n const toggle = useLocationAsideStore((state) => state.toggle);\n\n const handleSubmit = (place: Nullable<google.maps.places.PlaceResult>) => {\n toggle(false);\n setMapZoom(MAP_SELECTED_PLACE_ZOOM);\n setSelectedPlace(place);\n };\n\n const placesOptions: Nullable<google.maps.places.AutocompleteOptions> = country\n ? { componentRestrictions: { country } }\n : undefined;\n\n const { ref } = usePlacesWidget<HTMLInputElement>({\n libraries: [\"places\"],\n options: placesOptions,\n onPlaceSelected: handleSubmit,\n apiKey: import.meta.env.VITE_REACT_APP_GMAP_KEY,\n });\n\n return (\n <Aside open={open}>\n <div ref={containerRef} className={styles.container}>\n <div className={styles.selector}>\n <div className={styles.label}>{t(\"choose_city\")}</div>\n <Input ref={ref} placeholder={t(\"placeholder\")} />\n </div>\n </div>\n </Aside>\n );\n};\n\nconst MemoLocationAside = memo(LocationAside);\nexport { MemoLocationAside as LocationAside };\n","'use strict';\n\nexport default function bind(fn, thisArg) {\n return function wrap() {\n return fn.apply(thisArg, arguments);\n };\n}\n","'use strict';\n\nimport bind from './helpers/bind.js';\n\n// utils is a library of generic helper functions non-specific to axios\n\nconst {toString} = Object.prototype;\nconst {getPrototypeOf} = Object;\n\nconst kindOf = (cache => thing => {\n const str = toString.call(thing);\n return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());\n})(Object.create(null));\n\nconst kindOfTest = (type) => {\n type = type.toLowerCase();\n return (thing) => kindOf(thing) === type\n}\n\nconst typeOfTest = type => thing => typeof thing === type;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n *\n * @returns {boolean} True if value is an Array, otherwise false\n */\nconst {isArray} = Array;\n\n/**\n * Determine if a value is undefined\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nconst isUndefined = typeOfTest('undefined');\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && isFunction(val.constructor.isBuffer) && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nconst isArrayBuffer = kindOfTest('ArrayBuffer');\n\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n let result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (isArrayBuffer(val.buffer));\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a String, otherwise false\n */\nconst isString = typeOfTest('string');\n\n/**\n * Determine if a value is a Function\n *\n * @param {*} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nconst isFunction = typeOfTest('function');\n\n/**\n * Determine if a value is a Number\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Number, otherwise false\n */\nconst isNumber = typeOfTest('number');\n\n/**\n * Determine if a value is an Object\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an Object, otherwise false\n */\nconst isObject = (thing) => thing !== null && typeof thing === 'object';\n\n/**\n * Determine if a value is a Boolean\n *\n * @param {*} thing The value to test\n * @returns {boolean} True if value is a Boolean, otherwise false\n */\nconst isBoolean = thing => thing === true || thing === false;\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a plain Object, otherwise false\n */\nconst isPlainObject = (val) => {\n if (kindOf(val) !== 'object') {\n return false;\n }\n\n const prototype = getPrototypeOf(val);\n return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in val) && !(Symbol.iterator in val);\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Date, otherwise false\n */\nconst isDate = kindOfTest('Date');\n\n/**\n * Determine if a value is a File\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFile = kindOfTest('File');\n\n/**\n * Determine if a value is a Blob\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nconst isBlob = kindOfTest('Blob');\n\n/**\n * Determine if a value is a FileList\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFileList = kindOfTest('FileList');\n\n/**\n * Determine if a value is a Stream\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nconst isStream = (val) => isObject(val) && isFunction(val.pipe);\n\n/**\n * Determine if a value is a FormData\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nconst isFormData = (thing) => {\n let kind;\n return thing && (\n (typeof FormData === 'function' && thing instanceof FormData) || (\n isFunction(thing.append) && (\n (kind = kindOf(thing)) === 'formdata' ||\n // detect form-data instance\n (kind === 'object' && isFunction(thing.toString) && thing.toString() === '[object FormData]')\n )\n )\n )\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nconst isURLSearchParams = kindOfTest('URLSearchParams');\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n *\n * @returns {String} The String freed of excess whitespace\n */\nconst trim = (str) => str.trim ?\n str.trim() : str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n *\n * @param {Boolean} [allOwnKeys = false]\n * @returns {any}\n */\nfunction forEach(obj, fn, {allOwnKeys = false} = {}) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n let i;\n let l;\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n const keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj);\n const len = keys.length;\n let key;\n\n for (i = 0; i < len; i++) {\n key = keys[i];\n fn.call(null, obj[key], key, obj);\n }\n }\n}\n\nfunction findKey(obj, key) {\n key = key.toLowerCase();\n const keys = Object.keys(obj);\n let i = keys.length;\n let _key;\n while (i-- > 0) {\n _key = keys[i];\n if (key === _key.toLowerCase()) {\n return _key;\n }\n }\n return null;\n}\n\nconst _global = (() => {\n /*eslint no-undef:0*/\n if (typeof globalThis !== \"undefined\") return globalThis;\n return typeof self !== \"undefined\" ? self : (typeof window !== 'undefined' ? window : global)\n})();\n\nconst isContextDefined = (context) => !isUndefined(context) && context !== _global;\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n *\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n const {caseless} = isContextDefined(this) && this || {};\n const result = {};\n const assignValue = (val, key) => {\n const targetKey = caseless && findKey(result, key) || key;\n if (isPlainObject(result[targetKey]) && isPlainObject(val)) {\n result[targetKey] = merge(result[targetKey], val);\n } else if (isPlainObject(val)) {\n result[targetKey] = merge({}, val);\n } else if (isArray(val)) {\n result[targetKey] = val.slice();\n } else {\n result[targetKey] = val;\n }\n }\n\n for (let i = 0, l = arguments.length; i < l; i++) {\n arguments[i] && forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n *\n * @param {Boolean} [allOwnKeys]\n * @returns {Object} The resulting value of object a\n */\nconst extend = (a, b, thisArg, {allOwnKeys}= {}) => {\n forEach(b, (val, key) => {\n if (thisArg && isFunction(val)) {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n }, {allOwnKeys});\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n *\n * @returns {string} content value without BOM\n */\nconst stripBOM = (content) => {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\n/**\n * Inherit the prototype methods from one constructor into another\n * @param {function} constructor\n * @param {function} superConstructor\n * @param {object} [props]\n * @param {object} [descriptors]\n *\n * @returns {void}\n */\nconst inherits = (constructor, superConstructor, props, descriptors) => {\n constructor.prototype = Object.create(superConstructor.prototype, descriptors);\n constructor.prototype.constructor = constructor;\n Object.defineProperty(constructor, 'super', {\n value: superConstructor.prototype\n });\n props && Object.assign(constructor.prototype, props);\n}\n\n/**\n * Resolve object with deep prototype chain to a flat object\n * @param {Object} sourceObj source object\n * @param {Object} [destObj]\n * @param {Function|Boolean} [filter]\n * @param {Function} [propFilter]\n *\n * @returns {Object}\n */\nconst toFlatObject = (sourceObj, destObj, filter, propFilter) => {\n let props;\n let i;\n let prop;\n const merged = {};\n\n destObj = destObj || {};\n // eslint-disable-next-line no-eq-null,eqeqeq\n if (sourceObj == null) return destObj;\n\n do {\n props = Object.getOwnPropertyNames(sourceObj);\n i = props.length;\n while (i-- > 0) {\n prop = props[i];\n if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) {\n destObj[prop] = sourceObj[prop];\n merged[prop] = true;\n }\n }\n sourceObj = filter !== false && getPrototypeOf(sourceObj);\n } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype);\n\n return destObj;\n}\n\n/**\n * Determines whether a string ends with the characters of a specified string\n *\n * @param {String} str\n * @param {String} searchString\n * @param {Number} [position= 0]\n *\n * @returns {boolean}\n */\nconst endsWith = (str, searchString, position) => {\n str = String(str);\n if (position === undefined || position > str.length) {\n position = str.length;\n }\n position -= searchString.length;\n const lastIndex = str.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n}\n\n\n/**\n * Returns new array from array like object or null if failed\n *\n * @param {*} [thing]\n *\n * @returns {?Array}\n */\nconst toArray = (thing) => {\n if (!thing) return null;\n if (isArray(thing)) return thing;\n let i = thing.length;\n if (!isNumber(i)) return null;\n const arr = new Array(i);\n while (i-- > 0) {\n arr[i] = thing[i];\n }\n return arr;\n}\n\n/**\n * Checking if the Uint8Array exists and if it does, it returns a function that checks if the\n * thing passed in is an instance of Uint8Array\n *\n * @param {TypedArray}\n *\n * @returns {Array}\n */\n// eslint-disable-next-line func-names\nconst isTypedArray = (TypedArray => {\n // eslint-disable-next-line func-names\n return thing => {\n return TypedArray && thing instanceof TypedArray;\n };\n})(typeof Uint8Array !== 'undefined' && getPrototypeOf(Uint8Array));\n\n/**\n * For each entry in the object, call the function with the key and value.\n *\n * @param {Object<any, any>} obj - The object to iterate over.\n * @param {Function} fn - The function to call for each entry.\n *\n * @returns {void}\n */\nconst forEachEntry = (obj, fn) => {\n const generator = obj && obj[Symbol.iterator];\n\n const iterator = generator.call(obj);\n\n let result;\n\n while ((result = iterator.next()) && !result.done) {\n const pair = result.value;\n fn.call(obj, pair[0], pair[1]);\n }\n}\n\n/**\n * It takes a regular expression and a string, and returns an array of all the matches\n *\n * @param {string} regExp - The regular expression to match against.\n * @param {string} str - The string to search.\n *\n * @returns {Array<boolean>}\n */\nconst matchAll = (regExp, str) => {\n let matches;\n const arr = [];\n\n while ((matches = regExp.exec(str)) !== null) {\n arr.push(matches);\n }\n\n return arr;\n}\n\n/* Checking if the kindOfTest function returns true when passed an HTMLFormElement. */\nconst isHTMLForm = kindOfTest('HTMLFormElement');\n\nconst toCamelCase = str => {\n return str.toLowerCase().replace(/[-_\\s]([a-z\\d])(\\w*)/g,\n function replacer(m, p1, p2) {\n return p1.toUpperCase() + p2;\n }\n );\n};\n\n/* Creating a function that will check if an object has a property. */\nconst hasOwnProperty = (({hasOwnProperty}) => (obj, prop) => hasOwnProperty.call(obj, prop))(Object.prototype);\n\n/**\n * Determine if a value is a RegExp object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a RegExp object, otherwise false\n */\nconst isRegExp = kindOfTest('RegExp');\n\nconst reduceDescriptors = (obj, reducer) => {\n const descriptors = Object.getOwnPropertyDescriptors(obj);\n const reducedDescriptors = {};\n\n forEach(descriptors, (descriptor, name) => {\n if (reducer(descriptor, name, obj) !== false) {\n reducedDescriptors[name] = descriptor;\n }\n });\n\n Object.defineProperties(obj, reducedDescriptors);\n}\n\n/**\n * Makes all methods read-only\n * @param {Object} obj\n */\n\nconst freezeMethods = (obj) => {\n reduceDescriptors(obj, (descriptor, name) => {\n // skip restricted props in strict mode\n if (isFunction(obj) && ['arguments', 'caller', 'callee'].indexOf(name) !== -1) {\n return false;\n }\n\n const value = obj[name];\n\n if (!isFunction(value)) return;\n\n descriptor.enumerable = false;\n\n if ('writable' in descriptor) {\n descriptor.writable = false;\n return;\n }\n\n if (!descriptor.set) {\n descriptor.set = () => {\n throw Error('Can not rewrite read-only method \\'' + name + '\\'');\n };\n }\n });\n}\n\nconst toObjectSet = (arrayOrString, delimiter) => {\n const obj = {};\n\n const define = (arr) => {\n arr.forEach(value => {\n obj[value] = true;\n });\n }\n\n isArray(arrayOrString) ? define(arrayOrString) : define(String(arrayOrString).split(delimiter));\n\n return obj;\n}\n\nconst noop = () => {}\n\nconst toFiniteNumber = (value, defaultValue) => {\n value = +value;\n return Number.isFinite(value) ? value : defaultValue;\n}\n\nconst ALPHA = 'abcdefghijklmnopqrstuvwxyz'\n\nconst DIGIT = '0123456789';\n\nconst ALPHABET = {\n DIGIT,\n ALPHA,\n ALPHA_DIGIT: ALPHA + ALPHA.toUpperCase() + DIGIT\n}\n\nconst generateString = (size = 16, alphabet = ALPHABET.ALPHA_DIGIT) => {\n let str = '';\n const {length} = alphabet;\n while (size--) {\n str += alphabet[Math.random() * length|0]\n }\n\n return str;\n}\n\n/**\n * If the thing is a FormData object, return true, otherwise return false.\n *\n * @param {unknown} thing - The thing to check.\n *\n * @returns {boolean}\n */\nfunction isSpecCompliantForm(thing) {\n return !!(thing && isFunction(thing.append) && thing[Symbol.toStringTag] === 'FormData' && thing[Symbol.iterator]);\n}\n\nconst toJSONObject = (obj) => {\n const stack = new Array(10);\n\n const visit = (source, i) => {\n\n if (isObject(source)) {\n if (stack.indexOf(source) >= 0) {\n return;\n }\n\n if(!('toJSON' in source)) {\n stack[i] = source;\n const target = isArray(source) ? [] : {};\n\n forEach(source, (value, key) => {\n const reducedValue = visit(value, i + 1);\n !isUndefined(reducedValue) && (target[key] = reducedValue);\n });\n\n stack[i] = undefined;\n\n return target;\n }\n }\n\n return source;\n }\n\n return visit(obj, 0);\n}\n\nconst isAsyncFn = kindOfTest('AsyncFunction');\n\nconst isThenable = (thing) =>\n thing && (isObject(thing) || isFunction(thing)) && isFunction(thing.then) && isFunction(thing.catch);\n\nexport default {\n isArray,\n isArrayBuffer,\n isBuffer,\n isFormData,\n isArrayBufferView,\n isString,\n isNumber,\n isBoolean,\n isObject,\n isPlainObject,\n isUndefined,\n isDate,\n isFile,\n isBlob,\n isRegExp,\n isFunction,\n isStream,\n isURLSearchParams,\n isTypedArray,\n isFileList,\n forEach,\n merge,\n extend,\n trim,\n stripBOM,\n inherits,\n toFlatObject,\n kindOf,\n kindOfTest,\n endsWith,\n toArray,\n forEachEntry,\n matchAll,\n isHTMLForm,\n hasOwnProperty,\n hasOwnProp: hasOwnProperty, // an alias to avoid ESLint no-prototype-builtins detection\n reduceDescriptors,\n freezeMethods,\n toObjectSet,\n toCamelCase,\n noop,\n toFiniteNumber,\n findKey,\n global: _global,\n isContextDefined,\n ALPHABET,\n generateString,\n isSpecCompliantForm,\n toJSONObject,\n isAsyncFn,\n isThenable\n};\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [config] The config.\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n *\n * @returns {Error} The created error.\n */\nfunction AxiosError(message, code, config, request, response) {\n Error.call(this);\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n } else {\n this.stack = (new Error()).stack;\n }\n\n this.message = message;\n this.name = 'AxiosError';\n code && (this.code = code);\n config && (this.config = config);\n request && (this.request = request);\n response && (this.response = response);\n}\n\nutils.inherits(AxiosError, Error, {\n toJSON: function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: utils.toJSONObject(this.config),\n code: this.code,\n status: this.response && this.response.status ? this.response.status : null\n };\n }\n});\n\nconst prototype = AxiosError.prototype;\nconst descriptors = {};\n\n[\n 'ERR_BAD_OPTION_VALUE',\n 'ERR_BAD_OPTION',\n 'ECONNABORTED',\n 'ETIMEDOUT',\n 'ERR_NETWORK',\n 'ERR_FR_TOO_MANY_REDIRECTS',\n 'ERR_DEPRECATED',\n 'ERR_BAD_RESPONSE',\n 'ERR_BAD_REQUEST',\n 'ERR_CANCELED',\n 'ERR_NOT_SUPPORT',\n 'ERR_INVALID_URL'\n// eslint-disable-next-line func-names\n].forEach(code => {\n descriptors[code] = {value: code};\n});\n\nObject.defineProperties(AxiosError, descriptors);\nObject.defineProperty(prototype, 'isAxiosError', {value: true});\n\n// eslint-disable-next-line func-names\nAxiosError.from = (error, code, config, request, response, customProps) => {\n const axiosError = Object.create(prototype);\n\n utils.toFlatObject(error, axiosError, function filter(obj) {\n return obj !== Error.prototype;\n }, prop => {\n return prop !== 'isAxiosError';\n });\n\n AxiosError.call(axiosError, error.message, code, config, request, response);\n\n axiosError.cause = error;\n\n axiosError.name = error.name;\n\n customProps && Object.assign(axiosError, customProps);\n\n return axiosError;\n};\n\nexport default AxiosError;\n","// eslint-disable-next-line strict\nexport default null;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\n// temporary hotfix to avoid circular references until AxiosURLSearchParams is refactored\nimport PlatformFormData from '../platform/node/classes/FormData.js';\n\n/**\n * Determines if the given thing is a array or js object.\n *\n * @param {string} thing - The object or array to be visited.\n *\n * @returns {boolean}\n */\nfunction isVisitable(thing) {\n return utils.isPlainObject(thing) || utils.isArray(thing);\n}\n\n/**\n * It removes the brackets from the end of a string\n *\n * @param {string} key - The key of the parameter.\n *\n * @returns {string} the key without the brackets.\n */\nfunction removeBrackets(key) {\n return utils.endsWith(key, '[]') ? key.slice(0, -2) : key;\n}\n\n/**\n * It takes a path, a key, and a boolean, and returns a string\n *\n * @param {string} path - The path to the current key.\n * @param {string} key - The key of the current object being iterated over.\n * @param {string} dots - If true, the key will be rendered with dots instead of brackets.\n *\n * @returns {string} The path to the current key.\n */\nfunction renderKey(path, key, dots) {\n if (!path) return key;\n return path.concat(key).map(function each(token, i) {\n // eslint-disable-next-line no-param-reassign\n token = removeBrackets(token);\n return !dots && i ? '[' + token + ']' : token;\n }).join(dots ? '.' : '');\n}\n\n/**\n * If the array is an array and none of its elements are visitable, then it's a flat array.\n *\n * @param {Array<any>} arr - The array to check\n *\n * @returns {boolean}\n */\nfunction isFlatArray(arr) {\n return utils.isArray(arr) && !arr.some(isVisitable);\n}\n\nconst predicates = utils.toFlatObject(utils, {}, null, function filter(prop) {\n return /^is[A-Z]/.test(prop);\n});\n\n/**\n * Convert a data object to FormData\n *\n * @param {Object} obj\n * @param {?Object} [formData]\n * @param {?Object} [options]\n * @param {Function} [options.visitor]\n * @param {Boolean} [options.metaTokens = true]\n * @param {Boolean} [options.dots = false]\n * @param {?Boolean} [options.indexes = false]\n *\n * @returns {Object}\n **/\n\n/**\n * It converts an object into a FormData object\n *\n * @param {Object<any, any>} obj - The object to convert to form data.\n * @param {string} formData - The FormData object to append to.\n * @param {Object<string, any>} options\n *\n * @returns\n */\nfunction toFormData(obj, formData, options) {\n if (!utils.isObject(obj)) {\n throw new TypeError('target must be an object');\n }\n\n // eslint-disable-next-line no-param-reassign\n formData = formData || new (PlatformFormData || FormData)();\n\n // eslint-disable-next-line no-param-reassign\n options = utils.toFlatObject(options, {\n metaTokens: true,\n dots: false,\n indexes: false\n }, false, function defined(option, source) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n return !utils.isUndefined(source[option]);\n });\n\n const metaTokens = options.metaTokens;\n // eslint-disable-next-line no-use-before-define\n const visitor = options.visitor || defaultVisitor;\n const dots = options.dots;\n const indexes = options.indexes;\n const _Blob = options.Blob || typeof Blob !== 'undefined' && Blob;\n const useBlob = _Blob && utils.isSpecCompliantForm(formData);\n\n if (!utils.isFunction(visitor)) {\n throw new TypeError('visitor must be a function');\n }\n\n function convertValue(value) {\n if (value === null) return '';\n\n if (utils.isDate(value)) {\n return value.toISOString();\n }\n\n if (!useBlob && utils.isBlob(value)) {\n throw new AxiosError('Blob is not supported. Use a Buffer instead.');\n }\n\n if (utils.isArrayBuffer(value) || utils.isTypedArray(value)) {\n return useBlob && typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value);\n }\n\n return value;\n }\n\n /**\n * Default visitor.\n *\n * @param {*} value\n * @param {String|Number} key\n * @param {Array<String|Number>} path\n * @this {FormData}\n *\n * @returns {boolean} return true to visit the each prop of the value recursively\n */\n function defaultVisitor(value, key, path) {\n let arr = value;\n\n if (value && !path && typeof value === 'object') {\n if (utils.endsWith(key, '{}')) {\n // eslint-disable-next-line no-param-reassign\n key = metaTokens ? key : key.slice(0, -2);\n // eslint-disable-next-line no-param-reassign\n value = JSON.stringify(value);\n } else if (\n (utils.isArray(value) && isFlatArray(value)) ||\n ((utils.isFileList(value) || utils.endsWith(key, '[]')) && (arr = utils.toArray(value))\n )) {\n // eslint-disable-next-line no-param-reassign\n key = removeBrackets(key);\n\n arr.forEach(function each(el, index) {\n !(utils.isUndefined(el) || el === null) && formData.append(\n // eslint-disable-next-line no-nested-ternary\n indexes === true ? renderKey([key], index, dots) : (indexes === null ? key : key + '[]'),\n convertValue(el)\n );\n });\n return false;\n }\n }\n\n if (isVisitable(value)) {\n return true;\n }\n\n formData.append(renderKey(path, key, dots), convertValue(value));\n\n return false;\n }\n\n const stack = [];\n\n const exposedHelpers = Object.assign(predicates, {\n defaultVisitor,\n convertValue,\n isVisitable\n });\n\n function build(value, path) {\n if (utils.isUndefined(value)) return;\n\n if (stack.indexOf(value) !== -1) {\n throw Error('Circular reference detected in ' + path.join('.'));\n }\n\n stack.push(value);\n\n utils.forEach(value, function each(el, key) {\n const result = !(utils.isUndefined(el) || el === null) && visitor.call(\n formData, el, utils.isString(key) ? key.trim() : key, path, exposedHelpers\n );\n\n if (result === true) {\n build(el, path ? path.concat(key) : [key]);\n }\n });\n\n stack.pop();\n }\n\n if (!utils.isObject(obj)) {\n throw new TypeError('data must be an object');\n }\n\n build(obj);\n\n return formData;\n}\n\nexport default toFormData;\n","'use strict';\n\nimport toFormData from './toFormData.js';\n\n/**\n * It encodes a string by replacing all characters that are not in the unreserved set with\n * their percent-encoded equivalents\n *\n * @param {string} str - The string to encode.\n *\n * @returns {string} The encoded string.\n */\nfunction encode(str) {\n const charMap = {\n '!': '%21',\n \"'\": '%27',\n '(': '%28',\n ')': '%29',\n '~': '%7E',\n '%20': '+',\n '%00': '\\x00'\n };\n return encodeURIComponent(str).replace(/[!'()~]|%20|%00/g, function replacer(match) {\n return charMap[match];\n });\n}\n\n/**\n * It takes a params object and converts it to a FormData object\n *\n * @param {Object<string, any>} params - The parameters to be converted to a FormData object.\n * @param {Object<string, any>} options - The options object passed to the Axios constructor.\n *\n * @returns {void}\n */\nfunction AxiosURLSearchParams(params, options) {\n this._pairs = [];\n\n params && toFormData(params, this, options);\n}\n\nconst prototype = AxiosURLSearchParams.prototype;\n\nprototype.append = function append(name, value) {\n this._pairs.push([name, value]);\n};\n\nprototype.toString = function toString(encoder) {\n const _encode = encoder ? function(value) {\n return encoder.call(this, value, encode);\n } : encode;\n\n return this._pairs.map(function each(pair) {\n return _encode(pair[0]) + '=' + _encode(pair[1]);\n }, '').join('&');\n};\n\nexport default AxiosURLSearchParams;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosURLSearchParams from '../helpers/AxiosURLSearchParams.js';\n\n/**\n * It replaces all instances of the characters `:`, `$`, `,`, `+`, `[`, and `]` with their\n * URI encoded counterparts\n *\n * @param {string} val The value to be encoded.\n *\n * @returns {string} The encoded value.\n */\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @param {?object} options\n *\n * @returns {string} The formatted url\n */\nexport default function buildURL(url, params, options) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n \n const _encode = options && options.encode || encode;\n\n const serializeFn = options && options.serialize;\n\n let serializedParams;\n\n if (serializeFn) {\n serializedParams = serializeFn(params, options);\n } else {\n serializedParams = utils.isURLSearchParams(params) ?\n params.toString() :\n new AxiosURLSearchParams(params, options).toString(_encode);\n }\n\n if (serializedParams) {\n const hashmarkIndex = url.indexOf(\"#\");\n\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\nclass InterceptorManager {\n constructor() {\n this.handlers = [];\n }\n\n /**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\n use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled,\n rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n }\n\n /**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n *\n * @returns {Boolean} `true` if the interceptor was removed, `false` otherwise\n */\n eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n }\n\n /**\n * Clear all interceptors from the stack\n *\n * @returns {void}\n */\n clear() {\n if (this.handlers) {\n this.handlers = [];\n }\n }\n\n /**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n *\n * @returns {void}\n */\n forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n }\n}\n\nexport default InterceptorManager;\n","'use strict';\n\nexport default {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n};\n","'use strict';\n\nimport AxiosURLSearchParams from '../../../helpers/AxiosURLSearchParams.js';\nexport default typeof URLSearchParams !== 'undefined' ? URLSearchParams : AxiosURLSearchParams;\n","'use strict';\n\nexport default typeof FormData !== 'undefined' ? FormData : null;\n","'use strict'\n\nexport default typeof Blob !== 'undefined' ? Blob : null\n","import URLSearchParams from './classes/URLSearchParams.js'\nimport FormData from './classes/FormData.js'\nimport Blob from './classes/Blob.js'\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n *\n * @returns {boolean}\n */\nconst isStandardBrowserEnv = (() => {\n let product;\n if (typeof navigator !== 'undefined' && (\n (product = navigator.product) === 'ReactNative' ||\n product === 'NativeScript' ||\n product === 'NS')\n ) {\n return false;\n }\n\n return typeof window !== 'undefined' && typeof document !== 'undefined';\n})();\n\n/**\n * Determine if we're running in a standard browser webWorker environment\n *\n * Although the `isStandardBrowserEnv` method indicates that\n * `allows axios to run in a web worker`, the WebWorker will still be\n * filtered out due to its judgment standard\n * `typeof window !== 'undefined' && typeof document !== 'undefined'`.\n * This leads to a problem when axios post `FormData` in webWorker\n */\n const isStandardBrowserWebWorkerEnv = (() => {\n return (\n typeof WorkerGlobalScope !== 'undefined' &&\n // eslint-disable-next-line no-undef\n self instanceof WorkerGlobalScope &&\n typeof self.importScripts === 'function'\n );\n})();\n\n\nexport default {\n isBrowser: true,\n classes: {\n URLSearchParams,\n FormData,\n Blob\n },\n isStandardBrowserEnv,\n isStandardBrowserWebWorkerEnv,\n protocols: ['http', 'https', 'file', 'blob', 'url', 'data']\n};\n","'use strict';\n\nimport utils from '../utils.js';\nimport toFormData from './toFormData.js';\nimport platform from '../platform/index.js';\n\nexport default function toURLEncodedForm(data, options) {\n return toFormData(data, new platform.classes.URLSearchParams(), Object.assign({\n visitor: function(value, key, path, helpers) {\n if (platform.isNode && utils.isBuffer(value)) {\n this.append(key, value.toString('base64'));\n return false;\n }\n\n return helpers.defaultVisitor.apply(this, arguments);\n }\n }, options));\n}\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * It takes a string like `foo[x][y][z]` and returns an array like `['foo', 'x', 'y', 'z']\n *\n * @param {string} name - The name of the property to get.\n *\n * @returns An array of strings.\n */\nfunction parsePropPath(name) {\n // foo[x][y][z]\n // foo.x.y.z\n // foo-x-y-z\n // foo x y z\n return utils.matchAll(/\\w+|\\[(\\w*)]/g, name).map(match => {\n return match[0] === '[]' ? '' : match[1] || match[0];\n });\n}\n\n/**\n * Convert an array to an object.\n *\n * @param {Array<any>} arr - The array to convert to an object.\n *\n * @returns An object with the same keys and values as the array.\n */\nfunction arrayToObject(arr) {\n const obj = {};\n const keys = Object.keys(arr);\n let i;\n const len = keys.length;\n let key;\n for (i = 0; i < len; i++) {\n key = keys[i];\n obj[key] = arr[key];\n }\n return obj;\n}\n\n/**\n * It takes a FormData object and returns a JavaScript object\n *\n * @param {string} formData The FormData object to convert to JSON.\n *\n * @returns {Object<string, any> | null} The converted object.\n */\nfunction formDataToJSON(formData) {\n function buildPath(path, value, target, index) {\n let name = path[index++];\n const isNumericKey = Number.isFinite(+name);\n const isLast = index >= path.length;\n name = !name && utils.isArray(target) ? target.length : name;\n\n if (isLast) {\n if (utils.hasOwnProp(target, name)) {\n target[name] = [target[name], value];\n } else {\n target[name] = value;\n }\n\n return !isNumericKey;\n }\n\n if (!target[name] || !utils.isObject(target[name])) {\n target[name] = [];\n }\n\n const result = buildPath(path, value, target[name], index);\n\n if (result && utils.isArray(target[name])) {\n target[name] = arrayToObject(target[name]);\n }\n\n return !isNumericKey;\n }\n\n if (utils.isFormData(formData) && utils.isFunction(formData.entries)) {\n const obj = {};\n\n utils.forEachEntry(formData, (name, value) => {\n buildPath(parsePropPath(name), value, obj, 0);\n });\n\n return obj;\n }\n\n return null;\n}\n\nexport default formDataToJSON;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\nimport transitionalDefaults from './transitional.js';\nimport toFormData from '../helpers/toFormData.js';\nimport toURLEncodedForm from '../helpers/toURLEncodedForm.js';\nimport platform from '../platform/index.js';\nimport formDataToJSON from '../helpers/formDataToJSON.js';\n\nconst DEFAULT_CONTENT_TYPE = {\n 'Content-Type': undefined\n};\n\n/**\n * It takes a string, tries to parse it, and if it fails, it returns the stringified version\n * of the input\n *\n * @param {any} rawValue - The value to be stringified.\n * @param {Function} parser - A function that parses a string into a JavaScript object.\n * @param {Function} encoder - A function that takes a value and returns a string.\n *\n * @returns {string} A stringified version of the rawValue.\n */\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nconst defaults = {\n\n transitional: transitionalDefaults,\n\n adapter: ['xhr', 'http'],\n\n transformRequest: [function transformRequest(data, headers) {\n const contentType = headers.getContentType() || '';\n const hasJSONContentType = contentType.indexOf('application/json') > -1;\n const isObjectPayload = utils.isObject(data);\n\n if (isObjectPayload && utils.isHTMLForm(data)) {\n data = new FormData(data);\n }\n\n const isFormData = utils.isFormData(data);\n\n if (isFormData) {\n if (!hasJSONContentType) {\n return data;\n }\n return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data;\n }\n\n if (utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n headers.setContentType('application/x-www-form-urlencoded;charset=utf-8', false);\n return data.toString();\n }\n\n let isFileList;\n\n if (isObjectPayload) {\n if (contentType.indexOf('application/x-www-form-urlencoded') > -1) {\n return toURLEncodedForm(data, this.formSerializer).toString();\n }\n\n if ((isFileList = utils.isFileList(data)) || contentType.indexOf('multipart/form-data') > -1) {\n const _FormData = this.env && this.env.FormData;\n\n return toFormData(\n isFileList ? {'files[]': data} : data,\n _FormData && new _FormData(),\n this.formSerializer\n );\n }\n }\n\n if (isObjectPayload || hasJSONContentType ) {\n headers.setContentType('application/json', false);\n return stringifySafely(data);\n }\n\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n const transitional = this.transitional || defaults.transitional;\n const forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n const JSONRequested = this.responseType === 'json';\n\n if (data && utils.isString(data) && ((forcedJSONParsing && !this.responseType) || JSONRequested)) {\n const silentJSONParsing = transitional && transitional.silentJSONParsing;\n const strictJSONParsing = !silentJSONParsing && JSONRequested;\n\n try {\n return JSON.parse(data);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response);\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n env: {\n FormData: platform.classes.FormData,\n Blob: platform.classes.Blob\n },\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n },\n\n headers: {\n common: {\n 'Accept': 'application/json, text/plain, */*'\n }\n }\n};\n\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n defaults.headers[method] = {};\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n});\n\nexport default defaults;\n","'use strict';\n\nimport utils from './../utils.js';\n\n// RawAxiosHeaders whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nconst ignoreDuplicateOf = utils.toObjectSet([\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n]);\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} rawHeaders Headers needing to be parsed\n *\n * @returns {Object} Headers parsed into an object\n */\nexport default rawHeaders => {\n const parsed = {};\n let key;\n let val;\n let i;\n\n rawHeaders && rawHeaders.split('\\n').forEach(function parser(line) {\n i = line.indexOf(':');\n key = line.substring(0, i).trim().toLowerCase();\n val = line.substring(i + 1).trim();\n\n if (!key || (parsed[key] && ignoreDuplicateOf[key])) {\n return;\n }\n\n if (key === 'set-cookie') {\n if (parsed[key]) {\n parsed[key].push(val);\n } else {\n parsed[key] = [val];\n }\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n });\n\n return parsed;\n};\n","'use strict';\n\nimport utils from '../utils.js';\nimport parseHeaders from '../helpers/parseHeaders.js';\n\nconst $internals = Symbol('internals');\n\nfunction normalizeHeader(header) {\n return header && String(header).trim().toLowerCase();\n}\n\nfunction normalizeValue(value) {\n if (value === false || value == null) {\n return value;\n }\n\n return utils.isArray(value) ? value.map(normalizeValue) : String(value);\n}\n\nfunction parseTokens(str) {\n const tokens = Object.create(null);\n const tokensRE = /([^\\s,;=]+)\\s*(?:=\\s*([^,;]+))?/g;\n let match;\n\n while ((match = tokensRE.exec(str))) {\n tokens[match[1]] = match[2];\n }\n\n return tokens;\n}\n\nconst isValidHeaderName = (str) => /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(str.trim());\n\nfunction matchHeaderValue(context, value, header, filter, isHeaderNameFilter) {\n if (utils.isFunction(filter)) {\n return filter.call(this, value, header);\n }\n\n if (isHeaderNameFilter) {\n value = header;\n }\n\n if (!utils.isString(value)) return;\n\n if (utils.isString(filter)) {\n return value.indexOf(filter) !== -1;\n }\n\n if (utils.isRegExp(filter)) {\n return filter.test(value);\n }\n}\n\nfunction formatHeader(header) {\n return header.trim()\n .toLowerCase().replace(/([a-z\\d])(\\w*)/g, (w, char, str) => {\n return char.toUpperCase() + str;\n });\n}\n\nfunction buildAccessors(obj, header) {\n const accessorName = utils.toCamelCase(' ' + header);\n\n ['get', 'set', 'has'].forEach(methodName => {\n Object.defineProperty(obj, methodName + accessorName, {\n value: function(arg1, arg2, arg3) {\n return this[methodName].call(this, header, arg1, arg2, arg3);\n },\n configurable: true\n });\n });\n}\n\nclass AxiosHeaders {\n constructor(headers) {\n headers && this.set(headers);\n }\n\n set(header, valueOrRewrite, rewrite) {\n const self = this;\n\n function setHeader(_value, _header, _rewrite) {\n const lHeader = normalizeHeader(_header);\n\n if (!lHeader) {\n throw new Error('header name must be a non-empty string');\n }\n\n const key = utils.findKey(self, lHeader);\n\n if(!key || self[key] === undefined || _rewrite === true || (_rewrite === undefined && self[key] !== false)) {\n self[key || _header] = normalizeValue(_value);\n }\n }\n\n const setHeaders = (headers, _rewrite) =>\n utils.forEach(headers, (_value, _header) => setHeader(_value, _header, _rewrite));\n\n if (utils.isPlainObject(header) || header instanceof this.constructor) {\n setHeaders(header, valueOrRewrite)\n } else if(utils.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) {\n setHeaders(parseHeaders(header), valueOrRewrite);\n } else {\n header != null && setHeader(valueOrRewrite, header, rewrite);\n }\n\n return this;\n }\n\n get(header, parser) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n if (key) {\n const value = this[key];\n\n if (!parser) {\n return value;\n }\n\n if (parser === true) {\n return parseTokens(value);\n }\n\n if (utils.isFunction(parser)) {\n return parser.call(this, value, key);\n }\n\n if (utils.isRegExp(parser)) {\n return parser.exec(value);\n }\n\n throw new TypeError('parser must be boolean|regexp|function');\n }\n }\n }\n\n has(header, matcher) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n return !!(key && this[key] !== undefined && (!matcher || matchHeaderValue(this, this[key], key, matcher)));\n }\n\n return false;\n }\n\n delete(header, matcher) {\n const self = this;\n let deleted = false;\n\n function deleteHeader(_header) {\n _header = normalizeHeader(_header);\n\n if (_header) {\n const key = utils.findKey(self, _header);\n\n if (key && (!matcher || matchHeaderValue(self, self[key], key, matcher))) {\n delete self[key];\n\n deleted = true;\n }\n }\n }\n\n if (utils.isArray(header)) {\n header.forEach(deleteHeader);\n } else {\n deleteHeader(header);\n }\n\n return deleted;\n }\n\n clear(matcher) {\n const keys = Object.keys(this);\n let i = keys.length;\n let deleted = false;\n\n while (i--) {\n const key = keys[i];\n if(!matcher || matchHeaderValue(this, this[key], key, matcher, true)) {\n delete this[key];\n deleted = true;\n }\n }\n\n return deleted;\n }\n\n normalize(format) {\n const self = this;\n const headers = {};\n\n utils.forEach(this, (value, header) => {\n const key = utils.findKey(headers, header);\n\n if (key) {\n self[key] = normalizeValue(value);\n delete self[header];\n return;\n }\n\n const normalized = format ? formatHeader(header) : String(header).trim();\n\n if (normalized !== header) {\n delete self[header];\n }\n\n self[normalized] = normalizeValue(value);\n\n headers[normalized] = true;\n });\n\n return this;\n }\n\n concat(...targets) {\n return this.constructor.concat(this, ...targets);\n }\n\n toJSON(asStrings) {\n const obj = Object.create(null);\n\n utils.forEach(this, (value, header) => {\n value != null && value !== false && (obj[header] = asStrings && utils.isArray(value) ? value.join(', ') : value);\n });\n\n return obj;\n }\n\n [Symbol.iterator]() {\n return Object.entries(this.toJSON())[Symbol.iterator]();\n }\n\n toString() {\n return Object.entries(this.toJSON()).map(([header, value]) => header + ': ' + value).join('\\n');\n }\n\n get [Symbol.toStringTag]() {\n return 'AxiosHeaders';\n }\n\n static from(thing) {\n return thing instanceof this ? thing : new this(thing);\n }\n\n static concat(first, ...targets) {\n const computed = new this(first);\n\n targets.forEach((target) => computed.set(target));\n\n return computed;\n }\n\n static accessor(header) {\n const internals = this[$internals] = (this[$internals] = {\n accessors: {}\n });\n\n const accessors = internals.accessors;\n const prototype = this.prototype;\n\n function defineAccessor(_header) {\n const lHeader = normalizeHeader(_header);\n\n if (!accessors[lHeader]) {\n buildAccessors(prototype, _header);\n accessors[lHeader] = true;\n }\n }\n\n utils.isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header);\n\n return this;\n }\n}\n\nAxiosHeaders.accessor(['Content-Type', 'Content-Length', 'Accept', 'Accept-Encoding', 'User-Agent', 'Authorization']);\n\nutils.freezeMethods(AxiosHeaders.prototype);\nutils.freezeMethods(AxiosHeaders);\n\nexport default AxiosHeaders;\n","'use strict';\n\nimport utils from './../utils.js';\nimport defaults from '../defaults/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Array|Function} fns A single function or Array of functions\n * @param {?Object} response The response object\n *\n * @returns {*} The resulting transformed data\n */\nexport default function transformData(fns, response) {\n const config = this || defaults;\n const context = response || config;\n const headers = AxiosHeaders.from(context.headers);\n let data = context.data;\n\n utils.forEach(fns, function transform(fn) {\n data = fn.call(config, data, headers.normalize(), response ? response.status : undefined);\n });\n\n headers.normalize();\n\n return data;\n}\n","'use strict';\n\nexport default function isCancel(value) {\n return !!(value && value.__CANCEL__);\n}\n","'use strict';\n\nimport AxiosError from '../core/AxiosError.js';\nimport utils from '../utils.js';\n\n/**\n * A `CanceledError` is an object that is thrown when an operation is canceled.\n *\n * @param {string=} message The message.\n * @param {Object=} config The config.\n * @param {Object=} request The request.\n *\n * @returns {CanceledError} The created error.\n */\nfunction CanceledError(message, config, request) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n AxiosError.call(this, message == null ? 'canceled' : message, AxiosError.ERR_CANCELED, config, request);\n this.name = 'CanceledError';\n}\n\nutils.inherits(CanceledError, AxiosError, {\n __CANCEL__: true\n});\n\nexport default CanceledError;\n","'use strict';\n\nimport AxiosError from './AxiosError.js';\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n *\n * @returns {object} The response.\n */\nexport default function settle(resolve, reject, response) {\n const validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(new AxiosError(\n 'Request failed with status code ' + response.status,\n [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4],\n response.config,\n response.request,\n response\n ));\n }\n}\n","'use strict';\n\nimport utils from './../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.isStandardBrowserEnv ?\n\n// Standard browser envs support document.cookie\n (function standardBrowserEnv() {\n return {\n write: function write(name, value, expires, path, domain, secure) {\n const cookie = [];\n cookie.push(name + '=' + encodeURIComponent(value));\n\n if (utils.isNumber(expires)) {\n cookie.push('expires=' + new Date(expires).toGMTString());\n }\n\n if (utils.isString(path)) {\n cookie.push('path=' + path);\n }\n\n if (utils.isString(domain)) {\n cookie.push('domain=' + domain);\n }\n\n if (secure === true) {\n cookie.push('secure');\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read: function read(name) {\n const match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove: function remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n };\n })() :\n\n// Non standard browser env (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return {\n write: function write() {},\n read: function read() { return null; },\n remove: function remove() {}\n };\n })();\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n *\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nexport default function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"<scheme>://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n}\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n *\n * @returns {string} The combined URL\n */\nexport default function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n}\n","'use strict';\n\nimport isAbsoluteURL from '../helpers/isAbsoluteURL.js';\nimport combineURLs from '../helpers/combineURLs.js';\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n *\n * @returns {string} The combined full path\n */\nexport default function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n}\n","'use strict';\n\nimport utils from './../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.isStandardBrowserEnv ?\n\n// Standard browser envs have full support of the APIs needed to test\n// whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n const msie = /(msie|trident)/i.test(navigator.userAgent);\n const urlParsingNode = document.createElement('a');\n let originURL;\n\n /**\n * Parse a URL to discover it's components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n let href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n const parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })();\n","'use strict';\n\nexport default function parseProtocol(url) {\n const match = /^([-+\\w]{1,25})(:?\\/\\/|:)/.exec(url);\n return match && match[1] || '';\n}\n","'use strict';\n\n/**\n * Calculate data maxRate\n * @param {Number} [samplesCount= 10]\n * @param {Number} [min= 1000]\n * @returns {Function}\n */\nfunction speedometer(samplesCount, min) {\n samplesCount = samplesCount || 10;\n const bytes = new Array(samplesCount);\n const timestamps = new Array(samplesCount);\n let head = 0;\n let tail = 0;\n let firstSampleTS;\n\n min = min !== undefined ? min : 1000;\n\n return function push(chunkLength) {\n const now = Date.now();\n\n const startedAt = timestamps[tail];\n\n if (!firstSampleTS) {\n firstSampleTS = now;\n }\n\n bytes[head] = chunkLength;\n timestamps[head] = now;\n\n let i = tail;\n let bytesCount = 0;\n\n while (i !== head) {\n bytesCount += bytes[i++];\n i = i % samplesCount;\n }\n\n head = (head + 1) % samplesCount;\n\n if (head === tail) {\n tail = (tail + 1) % samplesCount;\n }\n\n if (now - firstSampleTS < min) {\n return;\n }\n\n const passed = startedAt && now - startedAt;\n\n return passed ? Math.round(bytesCount * 1000 / passed) : undefined;\n };\n}\n\nexport default speedometer;\n","'use strict';\n\nimport utils from './../utils.js';\nimport settle from './../core/settle.js';\nimport cookies from './../helpers/cookies.js';\nimport buildURL from './../helpers/buildURL.js';\nimport buildFullPath from '../core/buildFullPath.js';\nimport isURLSameOrigin from './../helpers/isURLSameOrigin.js';\nimport transitionalDefaults from '../defaults/transitional.js';\nimport AxiosError from '../core/AxiosError.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport parseProtocol from '../helpers/parseProtocol.js';\nimport platform from '../platform/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport speedometer from '../helpers/speedometer.js';\n\nfunction progressEventReducer(listener, isDownloadStream) {\n let bytesNotified = 0;\n const _speedometer = speedometer(50, 250);\n\n return e => {\n const loaded = e.loaded;\n const total = e.lengthComputable ? e.total : undefined;\n const progressBytes = loaded - bytesNotified;\n const rate = _speedometer(progressBytes);\n const inRange = loaded <= total;\n\n bytesNotified = loaded;\n\n const data = {\n loaded,\n total,\n progress: total ? (loaded / total) : undefined,\n bytes: progressBytes,\n rate: rate ? rate : undefined,\n estimated: rate && total && inRange ? (total - loaded) / rate : undefined,\n event: e\n };\n\n data[isDownloadStream ? 'download' : 'upload'] = true;\n\n listener(data);\n };\n}\n\nconst isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined';\n\nexport default isXHRAdapterSupported && function (config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n let requestData = config.data;\n const requestHeaders = AxiosHeaders.from(config.headers).normalize();\n const responseType = config.responseType;\n let onCanceled;\n function done() {\n if (config.cancelToken) {\n config.cancelToken.unsubscribe(onCanceled);\n }\n\n if (config.signal) {\n config.signal.removeEventListener('abort', onCanceled);\n }\n }\n\n if (utils.isFormData(requestData)) {\n if (platform.isStandardBrowserEnv || platform.isStandardBrowserWebWorkerEnv) {\n requestHeaders.setContentType(false); // Let the browser set it\n } else {\n requestHeaders.setContentType('multipart/form-data;', false); // mobile/desktop app frameworks\n }\n }\n\n let request = new XMLHttpRequest();\n\n // HTTP basic authentication\n if (config.auth) {\n const username = config.auth.username || '';\n const password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : '';\n requestHeaders.set('Authorization', 'Basic ' + btoa(username + ':' + password));\n }\n\n const fullPath = buildFullPath(config.baseURL, config.url);\n\n request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n const responseHeaders = AxiosHeaders.from(\n 'getAllResponseHeaders' in request && request.getAllResponseHeaders()\n );\n const responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n const response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config,\n request\n };\n\n settle(function _resolve(value) {\n resolve(value);\n done();\n }, function _reject(err) {\n reject(err);\n done();\n }, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n let timeoutErrorMessage = config.timeout ? 'timeout of ' + config.timeout + 'ms exceeded' : 'timeout exceeded';\n const transitional = config.transitional || transitionalDefaults;\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n reject(new AxiosError(\n timeoutErrorMessage,\n transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,\n config,\n request));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if (platform.isStandardBrowserEnv) {\n // Add xsrf header\n const xsrfValue = (config.withCredentials || isURLSameOrigin(fullPath))\n && config.xsrfCookieName && cookies.read(config.xsrfCookieName);\n\n if (xsrfValue) {\n requestHeaders.set(config.xsrfHeaderName, xsrfValue);\n }\n }\n\n // Remove Content-Type if data is undefined\n requestData === undefined && requestHeaders.setContentType(null);\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders.toJSON(), function setRequestHeader(val, key) {\n request.setRequestHeader(key, val);\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(config.withCredentials)) {\n request.withCredentials = !!config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = config.responseType;\n }\n\n // Handle progress if needed\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', progressEventReducer(config.onDownloadProgress, true));\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', progressEventReducer(config.onUploadProgress));\n }\n\n if (config.cancelToken || config.signal) {\n // Handle cancellation\n // eslint-disable-next-line func-names\n onCanceled = cancel => {\n if (!request) {\n return;\n }\n reject(!cancel || cancel.type ? new CanceledError(null, config, request) : cancel);\n request.abort();\n request = null;\n };\n\n config.cancelToken && config.cancelToken.subscribe(onCanceled);\n if (config.signal) {\n config.signal.aborted ? onCanceled() : config.signal.addEventListener('abort', onCanceled);\n }\n }\n\n const protocol = parseProtocol(fullPath);\n\n if (protocol && platform.protocols.indexOf(protocol) === -1) {\n reject(new AxiosError('Unsupported protocol ' + protocol + ':', AxiosError.ERR_BAD_REQUEST, config));\n return;\n }\n\n\n // Send the request\n request.send(requestData || null);\n });\n}\n","import utils from '../utils.js';\nimport httpAdapter from './http.js';\nimport xhrAdapter from './xhr.js';\nimport AxiosError from \"../core/AxiosError.js\";\n\nconst knownAdapters = {\n http: httpAdapter,\n xhr: xhrAdapter\n}\n\nutils.forEach(knownAdapters, (fn, value) => {\n if(fn) {\n try {\n Object.defineProperty(fn, 'name', {value});\n } catch (e) {\n // eslint-disable-next-line no-empty\n }\n Object.defineProperty(fn, 'adapterName', {value});\n }\n});\n\nexport default {\n getAdapter: (adapters) => {\n adapters = utils.isArray(adapters) ? adapters : [adapters];\n\n const {length} = adapters;\n let nameOrAdapter;\n let adapter;\n\n for (let i = 0; i < length; i++) {\n nameOrAdapter = adapters[i];\n if((adapter = utils.isString(nameOrAdapter) ? knownAdapters[nameOrAdapter.toLowerCase()] : nameOrAdapter)) {\n break;\n }\n }\n\n if (!adapter) {\n if (adapter === false) {\n throw new AxiosError(\n `Adapter ${nameOrAdapter} is not supported by the environment`,\n 'ERR_NOT_SUPPORT'\n );\n }\n\n throw new Error(\n utils.hasOwnProp(knownAdapters, nameOrAdapter) ?\n `Adapter '${nameOrAdapter}' is not available in the build` :\n `Unknown adapter '${nameOrAdapter}'`\n );\n }\n\n if (!utils.isFunction(adapter)) {\n throw new TypeError('adapter is not a function');\n }\n\n return adapter;\n },\n adapters: knownAdapters\n}\n","'use strict';\n\nimport transformData from './transformData.js';\nimport isCancel from '../cancel/isCancel.js';\nimport defaults from '../defaults/index.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport adapters from \"../adapters/adapters.js\";\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n *\n * @param {Object} config The config that is to be used for the request\n *\n * @returns {void}\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n\n if (config.signal && config.signal.aborted) {\n throw new CanceledError(null, config);\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n *\n * @returns {Promise} The Promise to be fulfilled\n */\nexport default function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n config.headers = AxiosHeaders.from(config.headers);\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.transformRequest\n );\n\n if (['post', 'put', 'patch'].indexOf(config.method) !== -1) {\n config.headers.setContentType('application/x-www-form-urlencoded', false);\n }\n\n const adapter = adapters.getAdapter(config.adapter || defaults.adapter);\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n config.transformResponse,\n response\n );\n\n response.headers = AxiosHeaders.from(response.headers);\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n config.transformResponse,\n reason.response\n );\n reason.response.headers = AxiosHeaders.from(reason.response.headers);\n }\n }\n\n return Promise.reject(reason);\n });\n}\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosHeaders from \"./AxiosHeaders.js\";\n\nconst headersToObject = (thing) => thing instanceof AxiosHeaders ? thing.toJSON() : thing;\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n *\n * @returns {Object} New object resulting from merging config2 to config1\n */\nexport default function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n const config = {};\n\n function getMergedValue(target, source, caseless) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge.call({caseless}, target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDeepProperties(a, b, caseless) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(a, b, caseless);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a, caseless);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function valueFromConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function defaultToConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDirectKeys(a, b, prop) {\n if (prop in config2) {\n return getMergedValue(a, b);\n } else if (prop in config1) {\n return getMergedValue(undefined, a);\n }\n }\n\n const mergeMap = {\n url: valueFromConfig2,\n method: valueFromConfig2,\n data: valueFromConfig2,\n baseURL: defaultToConfig2,\n transformRequest: defaultToConfig2,\n transformResponse: defaultToConfig2,\n paramsSerializer: defaultToConfig2,\n timeout: defaultToConfig2,\n timeoutMessage: defaultToConfig2,\n withCredentials: defaultToConfig2,\n adapter: defaultToConfig2,\n responseType: defaultToConfig2,\n xsrfCookieName: defaultToConfig2,\n xsrfHeaderName: defaultToConfig2,\n onUploadProgress: defaultToConfig2,\n onDownloadProgress: defaultToConfig2,\n decompress: defaultToConfig2,\n maxContentLength: defaultToConfig2,\n maxBodyLength: defaultToConfig2,\n beforeRedirect: defaultToConfig2,\n transport: defaultToConfig2,\n httpAgent: defaultToConfig2,\n httpsAgent: defaultToConfig2,\n cancelToken: defaultToConfig2,\n socketPath: defaultToConfig2,\n responseEncoding: defaultToConfig2,\n validateStatus: mergeDirectKeys,\n headers: (a, b) => mergeDeepProperties(headersToObject(a), headersToObject(b), true)\n };\n\n utils.forEach(Object.keys(Object.assign({}, config1, config2)), function computeConfigValue(prop) {\n const merge = mergeMap[prop] || mergeDeepProperties;\n const configValue = merge(config1[prop], config2[prop], prop);\n (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n });\n\n return config;\n}\n","export const VERSION = \"1.4.0\";","'use strict';\n\nimport {VERSION} from '../env/data.js';\nimport AxiosError from '../core/AxiosError.js';\n\nconst validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach((type, i) => {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nconst deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n *\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n *\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n function formatMessage(opt, desc) {\n return '[Axios v' + VERSION + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return (value, opt, opts) => {\n if (validator === false) {\n throw new AxiosError(\n formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')),\n AxiosError.ERR_DEPRECATED\n );\n }\n\n if (version && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\n/**\n * Assert object's properties type\n *\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n *\n * @returns {object}\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE);\n }\n const keys = Object.keys(options);\n let i = keys.length;\n while (i-- > 0) {\n const opt = keys[i];\n const validator = schema[opt];\n if (validator) {\n const value = options[opt];\n const result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new AxiosError('option ' + opt + ' must be ' + result, AxiosError.ERR_BAD_OPTION_VALUE);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION);\n }\n }\n}\n\nexport default {\n assertOptions,\n validators\n};\n","'use strict';\n\nimport utils from './../utils.js';\nimport buildURL from '../helpers/buildURL.js';\nimport InterceptorManager from './InterceptorManager.js';\nimport dispatchRequest from './dispatchRequest.js';\nimport mergeConfig from './mergeConfig.js';\nimport buildFullPath from './buildFullPath.js';\nimport validator from '../helpers/validator.js';\nimport AxiosHeaders from './AxiosHeaders.js';\n\nconst validators = validator.validators;\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n *\n * @return {Axios} A new instance of Axios\n */\nclass Axios {\n constructor(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n }\n\n /**\n * Dispatch a request\n *\n * @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults)\n * @param {?Object} config\n *\n * @returns {Promise} The Promise to be fulfilled\n */\n request(configOrUrl, config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof configOrUrl === 'string') {\n config = config || {};\n config.url = configOrUrl;\n } else {\n config = configOrUrl || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n const {transitional, paramsSerializer, headers} = config;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean)\n }, false);\n }\n\n if (paramsSerializer != null) {\n if (utils.isFunction(paramsSerializer)) {\n config.paramsSerializer = {\n serialize: paramsSerializer\n }\n } else {\n validator.assertOptions(paramsSerializer, {\n encode: validators.function,\n serialize: validators.function\n }, true);\n }\n }\n\n // Set config.method\n config.method = (config.method || this.defaults.method || 'get').toLowerCase();\n\n let contextHeaders;\n\n // Flatten headers\n contextHeaders = headers && utils.merge(\n headers.common,\n headers[config.method]\n );\n\n contextHeaders && utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n (method) => {\n delete headers[method];\n }\n );\n\n config.headers = AxiosHeaders.concat(contextHeaders, headers);\n\n // filter out skipped interceptors\n const requestInterceptorChain = [];\n let synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n const responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n let promise;\n let i = 0;\n let len;\n\n if (!synchronousRequestInterceptors) {\n const chain = [dispatchRequest.bind(this), undefined];\n chain.unshift.apply(chain, requestInterceptorChain);\n chain.push.apply(chain, responseInterceptorChain);\n len = chain.length;\n\n promise = Promise.resolve(config);\n\n while (i < len) {\n promise = promise.then(chain[i++], chain[i++]);\n }\n\n return promise;\n }\n\n len = requestInterceptorChain.length;\n\n let newConfig = config;\n\n i = 0;\n\n while (i < len) {\n const onFulfilled = requestInterceptorChain[i++];\n const onRejected = requestInterceptorChain[i++];\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected.call(this, error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest.call(this, newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n i = 0;\n len = responseInterceptorChain.length;\n\n while (i < len) {\n promise = promise.then(responseInterceptorChain[i++], responseInterceptorChain[i++]);\n }\n\n return promise;\n }\n\n getUri(config) {\n config = mergeConfig(this.defaults, config);\n const fullPath = buildFullPath(config.baseURL, config.url);\n return buildURL(fullPath, config.params, config.paramsSerializer);\n }\n}\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n\n function generateHTTPMethod(isForm) {\n return function httpMethod(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n headers: isForm ? {\n 'Content-Type': 'multipart/form-data'\n } : {},\n url,\n data\n }));\n };\n }\n\n Axios.prototype[method] = generateHTTPMethod();\n\n Axios.prototype[method + 'Form'] = generateHTTPMethod(true);\n});\n\nexport default Axios;\n","'use strict';\n\nimport CanceledError from './CanceledError.js';\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @param {Function} executor The executor function.\n *\n * @returns {CancelToken}\n */\nclass CancelToken {\n constructor(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n let resolvePromise;\n\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n const token = this;\n\n // eslint-disable-next-line func-names\n this.promise.then(cancel => {\n if (!token._listeners) return;\n\n let i = token._listeners.length;\n\n while (i-- > 0) {\n token._listeners[i](cancel);\n }\n token._listeners = null;\n });\n\n // eslint-disable-next-line func-names\n this.promise.then = onfulfilled => {\n let _resolve;\n // eslint-disable-next-line func-names\n const promise = new Promise(resolve => {\n token.subscribe(resolve);\n _resolve = resolve;\n }).then(onfulfilled);\n\n promise.cancel = function reject() {\n token.unsubscribe(_resolve);\n };\n\n return promise;\n };\n\n executor(function cancel(message, config, request) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new CanceledError(message, config, request);\n resolvePromise(token.reason);\n });\n }\n\n /**\n * Throws a `CanceledError` if cancellation has been requested.\n */\n throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n }\n\n /**\n * Subscribe to the cancel signal\n */\n\n subscribe(listener) {\n if (this.reason) {\n listener(this.reason);\n return;\n }\n\n if (this._listeners) {\n this._listeners.push(listener);\n } else {\n this._listeners = [listener];\n }\n }\n\n /**\n * Unsubscribe from the cancel signal\n */\n\n unsubscribe(listener) {\n if (!this._listeners) {\n return;\n }\n const index = this._listeners.indexOf(listener);\n if (index !== -1) {\n this._listeners.splice(index, 1);\n }\n }\n\n /**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\n static source() {\n let cancel;\n const token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token,\n cancel\n };\n }\n}\n\nexport default CancelToken;\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n *\n * @returns {Function}\n */\nexport default function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n *\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nexport default function isAxiosError(payload) {\n return utils.isObject(payload) && (payload.isAxiosError === true);\n}\n","const HttpStatusCode = {\n Continue: 100,\n SwitchingProtocols: 101,\n Processing: 102,\n EarlyHints: 103,\n Ok: 200,\n Created: 201,\n Accepted: 202,\n NonAuthoritativeInformation: 203,\n NoContent: 204,\n ResetContent: 205,\n PartialContent: 206,\n MultiStatus: 207,\n AlreadyReported: 208,\n ImUsed: 226,\n MultipleChoices: 300,\n MovedPermanently: 301,\n Found: 302,\n SeeOther: 303,\n NotModified: 304,\n UseProxy: 305,\n Unused: 306,\n TemporaryRedirect: 307,\n PermanentRedirect: 308,\n BadRequest: 400,\n Unauthorized: 401,\n PaymentRequired: 402,\n Forbidden: 403,\n NotFound: 404,\n MethodNotAllowed: 405,\n NotAcceptable: 406,\n ProxyAuthenticationRequired: 407,\n RequestTimeout: 408,\n Conflict: 409,\n Gone: 410,\n LengthRequired: 411,\n PreconditionFailed: 412,\n PayloadTooLarge: 413,\n UriTooLong: 414,\n UnsupportedMediaType: 415,\n RangeNotSatisfiable: 416,\n ExpectationFailed: 417,\n ImATeapot: 418,\n MisdirectedRequest: 421,\n UnprocessableEntity: 422,\n Locked: 423,\n FailedDependency: 424,\n TooEarly: 425,\n UpgradeRequired: 426,\n PreconditionRequired: 428,\n TooManyRequests: 429,\n RequestHeaderFieldsTooLarge: 431,\n UnavailableForLegalReasons: 451,\n InternalServerError: 500,\n NotImplemented: 501,\n BadGateway: 502,\n ServiceUnavailable: 503,\n GatewayTimeout: 504,\n HttpVersionNotSupported: 505,\n VariantAlsoNegotiates: 506,\n InsufficientStorage: 507,\n LoopDetected: 508,\n NotExtended: 510,\n NetworkAuthenticationRequired: 511,\n};\n\nObject.entries(HttpStatusCode).forEach(([key, value]) => {\n HttpStatusCode[value] = key;\n});\n\nexport default HttpStatusCode;\n","'use strict';\n\nimport utils from './utils.js';\nimport bind from './helpers/bind.js';\nimport Axios from './core/Axios.js';\nimport mergeConfig from './core/mergeConfig.js';\nimport defaults from './defaults/index.js';\nimport formDataToJSON from './helpers/formDataToJSON.js';\nimport CanceledError from './cancel/CanceledError.js';\nimport CancelToken from './cancel/CancelToken.js';\nimport isCancel from './cancel/isCancel.js';\nimport {VERSION} from './env/data.js';\nimport toFormData from './helpers/toFormData.js';\nimport AxiosError from './core/AxiosError.js';\nimport spread from './helpers/spread.js';\nimport isAxiosError from './helpers/isAxiosError.js';\nimport AxiosHeaders from \"./core/AxiosHeaders.js\";\nimport HttpStatusCode from './helpers/HttpStatusCode.js';\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n *\n * @returns {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n const context = new Axios(defaultConfig);\n const instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context, {allOwnKeys: true});\n\n // Copy context to instance\n utils.extend(instance, context, null, {allOwnKeys: true});\n\n // Factory for creating new instances\n instance.create = function create(instanceConfig) {\n return createInstance(mergeConfig(defaultConfig, instanceConfig));\n };\n\n return instance;\n}\n\n// Create the default instance to be exported\nconst axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Expose Cancel & CancelToken\naxios.CanceledError = CanceledError;\naxios.CancelToken = CancelToken;\naxios.isCancel = isCancel;\naxios.VERSION = VERSION;\naxios.toFormData = toFormData;\n\n// Expose AxiosError class\naxios.AxiosError = AxiosError;\n\n// alias for CanceledError for backward compatibility\naxios.Cancel = axios.CanceledError;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\n\naxios.spread = spread;\n\n// Expose isAxiosError\naxios.isAxiosError = isAxiosError;\n\n// Expose mergeConfig\naxios.mergeConfig = mergeConfig;\n\naxios.AxiosHeaders = AxiosHeaders;\n\naxios.formToJSON = thing => formDataToJSON(utils.isHTMLForm(thing) ? new FormData(thing) : thing);\n\naxios.HttpStatusCode = HttpStatusCode;\n\naxios.default = axios;\n\n// this module should only have a default export\nexport default axios\n","import axios from \"axios\";\n\nexport const axiosClient = axios.create({\n baseURL: import.meta.env.VITE_API_BASE_URL,\n});\n","export const MAX_LOAD_SIZE = 1024;\n","import { axiosClient } from \"src/api/client\";\nimport { PointsList } from \"src/types/points\";\nimport { MAX_LOAD_SIZE } from \"src/constants/limits\";\nimport { Filter, ESendFilter, EReceiveFilter } from \"src/types/filters\";\n\ninterface FetchPointsRequestParams {\n q?: string;\n bounds?: Nullable<Bounds>;\n filter?: Nullable<Filter>;\n}\n\ninterface FetchPointsRequestOptions {\n loading?: boolean;\n onCancel?: () => void;\n controller?: AbortController;\n}\n\nconst receiveKey: Record<EReceiveFilter, string[]> = {\n [EReceiveFilter.CheckOrder]: [\"is_check_order\", \"is_delivery\"],\n [EReceiveFilter.DressingRoom]: [\"is_dressing_room\", \"is_delivery\"],\n [EReceiveFilter.PayByCash]: [\"pay_by_cash\", \"pay_by_card\", \"is_delivery\"],\n};\n\nconst sendKey: Record<ESendFilter, string[]> = {\n [ESendFilter.Return]: [\"is_pickup\"],\n [ESendFilter.Shipping]: [\"is_pickup\"],\n [ESendFilter.Payment]: [\"pay_by_cash\", \"pay_by_card\", \"is_pickup\"],\n};\n\nexport async function* fetchPointsRequest(\n { q, filter, bounds }: FetchPointsRequestParams = {},\n { loading, onCancel, controller }: FetchPointsRequestOptions = {},\n) {\n if (loading && controller) {\n controller.abort();\n onCancel?.();\n }\n\n const params: Dictionary<Primitive> = {\n status: 30,\n page_size: MAX_LOAD_SIZE,\n };\n\n if (q) {\n params.q = q;\n }\n\n if (filter?.type) {\n params.type = filter.type;\n }\n\n if (filter?.receive) {\n Object.entries(filter?.receive).forEach(([key, value]) => {\n if (!value) {\n return;\n }\n\n const keys = receiveKey[key as unknown as EReceiveFilter];\n\n keys.forEach((key) => {\n params[key] = true;\n });\n });\n }\n\n if (filter?.send) {\n Object.entries(filter?.send).forEach(([key, value]) => {\n if (!value) {\n return;\n }\n\n const keys = sendKey[key as unknown as ESendFilter];\n\n keys.forEach((key) => {\n params[key] = true;\n });\n });\n }\n\n if (bounds) {\n params.start_latitude = bounds[0][0];\n params.end_latitude = bounds[0][1];\n params.start_longitude = bounds[1][0];\n params.end_longitude = bounds[1][1];\n }\n\n let result = await axiosClient.get<HttpResponse<PointsList>>(\"/locations/points\", {\n params,\n signal: controller?.signal,\n });\n\n let numPages = result.data.data.num_pages;\n let currentPage = result.data.data.current_page;\n\n while (currentPage < numPages) {\n yield result;\n\n params.page = currentPage + 1;\n\n const nextResult = await axiosClient.get<HttpResponse<PointsList>>(\"/locations/points\", {\n params,\n signal: controller?.signal,\n });\n\n result.data.data.results = [...result.data.data.results, ...nextResult.data.data.results];\n result = nextResult;\n\n currentPage = nextResult.data.data.current_page;\n numPages = nextResult.data.data.num_pages;\n }\n\n yield result;\n return result;\n}\n","import { Filter } from \"src/types/filters\";\nimport { PointsList } from \"src/types/points\";\nimport { fetchPointsRequest } from \"src/services/points\";\n\nconst controllers = new WeakSet<AbortController>();\nconst controller = new AbortController();\ncontrollers.add(controller);\n\nexport const createPointsIterator = (loading: boolean, filter?: Nullable<Filter>, bounds?: Nullable<Bounds>) => {\n return async (fn: (data: HttpResponse<PointsList>) => void) => {\n for await (const result of fetchPointsRequest(\n { filter, bounds },\n {\n loading,\n },\n )) {\n fn(result.data);\n }\n };\n};\n","export const WIDGET_ID = \"@omnic/widget-locations\";\n","import { WIDGET_ID } from \"src/constants/global\";\n\nexport const setWidgetCSSProperty = (property: string, value: string) => {\n document.getElementById(WIDGET_ID)?.style.setProperty(property, value);\n};\n","import { create } from \"zustand\";\n\nimport { Filter } from \"src/types/filters\";\nimport { createPointsIterator } from \"src/utils\";\nimport { LocationPoint } from \"src/types/points\";\n\nimport { useMapStore } from \"./map\";\n\ninterface State {\n error: boolean;\n loaded: boolean;\n loading: boolean;\n reloading: boolean;\n points: LocationPoint[];\n}\n\ninterface Action {\n loadFirst(filter?: Filter): Promise<void>;\n\n loadNext(bounds: Bounds, filter?: Filter): Promise<void>;\n}\n\nconst initialState: State = {\n points: [],\n error: false,\n loaded: false,\n loading: false,\n reloading: false,\n};\n\nexport const usePointsStore = create<State & Action>()((set, get) => ({\n ...initialState,\n\n async loadNext(bounds: Bounds, filter?: Filter) {\n const reloading = get().reloading;\n\n set({\n error: false,\n reloading: true,\n });\n\n useMapStore.getState().setBounds(bounds);\n\n let index = 0;\n\n try {\n const iterator = createPointsIterator(reloading, filter, bounds);\n\n await iterator((data) => {\n if (index === 0) {\n set({ points: data.data.results });\n } else {\n set({ points: [...get().points, ...data.data.results] });\n }\n\n index++;\n });\n\n set({ reloading: false });\n } catch (e) {\n set({ error: true });\n }\n },\n\n async loadFirst(filter?: Filter) {\n const loading = get().loading;\n const bounds = useMapStore.getState().bounds;\n\n set({\n error: false,\n loading: true,\n });\n\n let index = 0;\n\n try {\n const iterator = createPointsIterator(loading, filter, bounds);\n\n await iterator((data) => {\n if (index >= 1) {\n set({\n loading: false,\n loaded: true,\n });\n }\n\n if (index === 0) {\n set({ points: data.data.results });\n } else {\n set({ points: [...get().points, ...data.data.results] });\n }\n\n index++;\n });\n\n set({\n loading: false,\n loaded: true,\n });\n } catch (e) {\n set({\n error: true,\n loading: false,\n });\n }\n },\n}));\n","import { useEffect } from \"react\";\n\nimport { usePointsStore } from \"src/stores/points\";\nimport { useFilterStore } from \"src/stores/filters\";\n\nexport const usePointsLoader = () => {\n useEffect(() => {\n usePointsStore.getState().loadFirst();\n\n const listener = useFilterStore.subscribe((filter) => {\n usePointsStore.getState().loadFirst(filter);\n });\n\n return () => {\n listener();\n };\n }, []);\n};\n","export const PATH_SEPARATOR = '.';\nexport const TARGET = Symbol('target');\nexport const UNSUBSCRIBE = Symbol('unsubscribe');\n","export function isBuiltinWithMutableMethods(value) {\n\treturn value instanceof Date\n\t\t|| value instanceof Set\n\t\t|| value instanceof Map\n\t\t|| value instanceof WeakSet\n\t\t|| value instanceof WeakMap\n\t\t|| ArrayBuffer.isView(value);\n}\n\nexport function isBuiltinWithoutMutableMethods(value) {\n\treturn (typeof value === 'object' ? value === null : typeof value !== 'function') || value instanceof RegExp;\n}\n","export default Array.isArray;\n","export default function isSymbol(value) {\n\treturn typeof value === 'symbol';\n}\n","import {PATH_SEPARATOR} from './constants.js';\nimport isArray from './is-array.js';\nimport isSymbol from './is-symbol.js';\n\nconst path = {\n\tafter: (path, subPath) => {\n\t\tif (isArray(path)) {\n\t\t\treturn path.slice(subPath.length);\n\t\t}\n\n\t\tif (subPath === '') {\n\t\t\treturn path;\n\t\t}\n\n\t\treturn path.slice(subPath.length + 1);\n\t},\n\tconcat: (path, key) => {\n\t\tif (isArray(path)) {\n\t\t\tpath = [...path];\n\n\t\t\tif (key) {\n\t\t\t\tpath.push(key);\n\t\t\t}\n\n\t\t\treturn path;\n\t\t}\n\n\t\tif (key && key.toString !== undefined) {\n\t\t\tif (path !== '') {\n\t\t\t\tpath += PATH_SEPARATOR;\n\t\t\t}\n\n\t\t\tif (isSymbol(key)) {\n\t\t\t\treturn path + key.toString();\n\t\t\t}\n\n\t\t\treturn path + key;\n\t\t}\n\n\t\treturn path;\n\t},\n\tinitial: path => {\n\t\tif (isArray(path)) {\n\t\t\treturn path.slice(0, -1);\n\t\t}\n\n\t\tif (path === '') {\n\t\t\treturn path;\n\t\t}\n\n\t\tconst index = path.lastIndexOf(PATH_SEPARATOR);\n\n\t\tif (index === -1) {\n\t\t\treturn '';\n\t\t}\n\n\t\treturn path.slice(0, index);\n\t},\n\tlast: path => {\n\t\tif (isArray(path)) {\n\t\t\treturn path[path.length - 1] || '';\n\t\t}\n\n\t\tif (path === '') {\n\t\t\treturn path;\n\t\t}\n\n\t\tconst index = path.lastIndexOf(PATH_SEPARATOR);\n\n\t\tif (index === -1) {\n\t\t\treturn path;\n\t\t}\n\n\t\treturn path.slice(index + 1);\n\t},\n\twalk: (path, callback) => {\n\t\tif (isArray(path)) {\n\t\t\tfor (const key of path) {\n\t\t\t\tcallback(key);\n\t\t\t}\n\t\t} else if (path !== '') {\n\t\t\tlet position = 0;\n\t\t\tlet index = path.indexOf(PATH_SEPARATOR);\n\n\t\t\tif (index === -1) {\n\t\t\t\tcallback(path);\n\t\t\t} else {\n\t\t\t\twhile (position < path.length) {\n\t\t\t\t\tif (index === -1) {\n\t\t\t\t\t\tindex = path.length;\n\t\t\t\t\t}\n\n\t\t\t\t\tcallback(path.slice(position, index));\n\n\t\t\t\t\tposition = index + 1;\n\t\t\t\t\tindex = path.indexOf(PATH_SEPARATOR, position);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\tget(object, path) {\n\t\tthis.walk(path, key => {\n\t\t\tif (object) {\n\t\t\t\tobject = object[key];\n\t\t\t}\n\t\t});\n\n\t\treturn object;\n\t},\n};\n\nexport default path;\n","export default function isIterator(value) {\n\treturn typeof value === 'object' && typeof value.next === 'function';\n}\n","import {TARGET} from './constants.js';\n\n// eslint-disable-next-line max-params\nexport default function wrapIterator(iterator, target, thisArg, applyPath, prepareValue) {\n\tconst originalNext = iterator.next;\n\n\tif (target.name === 'entries') {\n\t\titerator.next = function () {\n\t\t\tconst result = originalNext.call(this);\n\n\t\t\tif (result.done === false) {\n\t\t\t\tresult.value[0] = prepareValue(\n\t\t\t\t\tresult.value[0],\n\t\t\t\t\ttarget,\n\t\t\t\t\tresult.value[0],\n\t\t\t\t\tapplyPath,\n\t\t\t\t);\n\t\t\t\tresult.value[1] = prepareValue(\n\t\t\t\t\tresult.value[1],\n\t\t\t\t\ttarget,\n\t\t\t\t\tresult.value[0],\n\t\t\t\t\tapplyPath,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn result;\n\t\t};\n\t} else if (target.name === 'values') {\n\t\tconst keyIterator = thisArg[TARGET].keys();\n\n\t\titerator.next = function () {\n\t\t\tconst result = originalNext.call(this);\n\n\t\t\tif (result.done === false) {\n\t\t\t\tresult.value = prepareValue(\n\t\t\t\t\tresult.value,\n\t\t\t\t\ttarget,\n\t\t\t\t\tkeyIterator.next().value,\n\t\t\t\t\tapplyPath,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn result;\n\t\t};\n\t} else {\n\t\titerator.next = function () {\n\t\t\tconst result = originalNext.call(this);\n\n\t\t\tif (result.done === false) {\n\t\t\t\tresult.value = prepareValue(\n\t\t\t\t\tresult.value,\n\t\t\t\t\ttarget,\n\t\t\t\t\tresult.value,\n\t\t\t\t\tapplyPath,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn result;\n\t\t};\n\t}\n\n\treturn iterator;\n}\n","import isSymbol from './is-symbol.js';\n\nexport default function ignoreProperty(cache, options, property) {\n\treturn cache.isUnsubscribed\n\t\t|| (options.ignoreSymbols && isSymbol(property))\n\t\t|| (options.ignoreUnderscores && property.charAt(0) === '_')\n\t\t|| ('ignoreKeys' in options && options.ignoreKeys.includes(property));\n}\n","import path from './path.js';\n\n/**\n@class Cache\n@private\n*/\nexport default class Cache {\n\tconstructor(equals) {\n\t\tthis._equals = equals;\n\t\tthis._proxyCache = new WeakMap();\n\t\tthis._pathCache = new WeakMap();\n\t\tthis.isUnsubscribed = false;\n\t}\n\n\t_getDescriptorCache() {\n\t\tif (this._descriptorCache === undefined) {\n\t\t\tthis._descriptorCache = new WeakMap();\n\t\t}\n\n\t\treturn this._descriptorCache;\n\t}\n\n\t_getProperties(target) {\n\t\tconst descriptorCache = this._getDescriptorCache();\n\t\tlet properties = descriptorCache.get(target);\n\n\t\tif (properties === undefined) {\n\t\t\tproperties = {};\n\t\t\tdescriptorCache.set(target, properties);\n\t\t}\n\n\t\treturn properties;\n\t}\n\n\t_getOwnPropertyDescriptor(target, property) {\n\t\tif (this.isUnsubscribed) {\n\t\t\treturn Reflect.getOwnPropertyDescriptor(target, property);\n\t\t}\n\n\t\tconst properties = this._getProperties(target);\n\t\tlet descriptor = properties[property];\n\n\t\tif (descriptor === undefined) {\n\t\t\tdescriptor = Reflect.getOwnPropertyDescriptor(target, property);\n\t\t\tproperties[property] = descriptor;\n\t\t}\n\n\t\treturn descriptor;\n\t}\n\n\tgetProxy(target, path, handler, proxyTarget) {\n\t\tif (this.isUnsubscribed) {\n\t\t\treturn target;\n\t\t}\n\n\t\tconst reflectTarget = target[proxyTarget];\n\t\tconst source = reflectTarget || target;\n\n\t\tthis._pathCache.set(source, path);\n\n\t\tlet proxy = this._proxyCache.get(source);\n\n\t\tif (proxy === undefined) {\n\t\t\tproxy = reflectTarget === undefined\n\t\t\t\t? new Proxy(target, handler)\n\t\t\t\t: target;\n\n\t\t\tthis._proxyCache.set(source, proxy);\n\t\t}\n\n\t\treturn proxy;\n\t}\n\n\tgetPath(target) {\n\t\treturn this.isUnsubscribed ? undefined : this._pathCache.get(target);\n\t}\n\n\tisDetached(target, object) {\n\t\treturn !Object.is(target, path.get(object, this.getPath(target)));\n\t}\n\n\tdefineProperty(target, property, descriptor) {\n\t\tif (!Reflect.defineProperty(target, property, descriptor)) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif (!this.isUnsubscribed) {\n\t\t\tthis._getProperties(target)[property] = descriptor;\n\t\t}\n\n\t\treturn true;\n\t}\n\n\tsetProperty(target, property, value, receiver, previous) { // eslint-disable-line max-params\n\t\tif (!this._equals(previous, value) || !(property in target)) {\n\t\t\tconst descriptor = this._getOwnPropertyDescriptor(target, property);\n\n\t\t\tif (descriptor !== undefined && 'set' in descriptor) {\n\t\t\t\treturn Reflect.set(target, property, value, receiver);\n\t\t\t}\n\n\t\t\treturn Reflect.set(target, property, value);\n\t\t}\n\n\t\treturn true;\n\t}\n\n\tdeleteProperty(target, property, previous) {\n\t\tif (Reflect.deleteProperty(target, property)) {\n\t\t\tif (!this.isUnsubscribed) {\n\t\t\t\tconst properties = this._getDescriptorCache().get(target);\n\n\t\t\t\tif (properties) {\n\t\t\t\t\tdelete properties[property];\n\t\t\t\t\tthis._pathCache.delete(previous);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t}\n\n\tisSameDescriptor(a, target, property) {\n\t\tconst b = this._getOwnPropertyDescriptor(target, property);\n\n\t\treturn a !== undefined\n\t\t\t&& b !== undefined\n\t\t\t&& Object.is(a.value, b.value)\n\t\t\t&& (a.writable || false) === (b.writable || false)\n\t\t\t&& (a.enumerable || false) === (b.enumerable || false)\n\t\t\t&& (a.configurable || false) === (b.configurable || false)\n\t\t\t&& a.get === b.get\n\t\t\t&& a.set === b.set;\n\t}\n\n\tisGetInvariant(target, property) {\n\t\tconst descriptor = this._getOwnPropertyDescriptor(target, property);\n\n\t\treturn descriptor !== undefined\n\t\t\t&& descriptor.configurable !== true\n\t\t\t&& descriptor.writable !== true;\n\t}\n\n\tunsubscribe() {\n\t\tthis._descriptorCache = null;\n\t\tthis._pathCache = null;\n\t\tthis._proxyCache = null;\n\t\tthis.isUnsubscribed = true;\n\t}\n}\n","export default function isObject(value) {\n\treturn toString.call(value) === '[object Object]';\n}\n","export default function isDiffCertain() {\n\treturn true;\n}\n","export default function isDiffArrays(clone, value) {\n\treturn clone.length !== value.length || clone.some((item, index) => value[index] !== item);\n}\n","export const IMMUTABLE_OBJECT_METHODS = new Set([\n\t'hasOwnProperty',\n\t'isPrototypeOf',\n\t'propertyIsEnumerable',\n\t'toLocaleString',\n\t'toString',\n\t'valueOf',\n]);\n","import isDiffCertain from '../diff/is-diff-certain.js';\nimport isDiffArrays from '../diff/is-diff-arrays.js';\nimport {IMMUTABLE_OBJECT_METHODS} from './object.js';\n\nconst IMMUTABLE_ARRAY_METHODS = new Set([\n\t'concat',\n\t'includes',\n\t'indexOf',\n\t'join',\n\t'keys',\n\t'lastIndexOf',\n]);\n\nexport const MUTABLE_ARRAY_METHODS = {\n\tpush: isDiffCertain,\n\tpop: isDiffCertain,\n\tshift: isDiffCertain,\n\tunshift: isDiffCertain,\n\tcopyWithin: isDiffArrays,\n\treverse: isDiffArrays,\n\tsort: isDiffArrays,\n\tsplice: isDiffArrays,\n\tflat: isDiffArrays,\n\tfill: isDiffArrays,\n};\n\nexport const HANDLED_ARRAY_METHODS = new Set([\n\t...IMMUTABLE_OBJECT_METHODS,\n\t...IMMUTABLE_ARRAY_METHODS,\n\t...Object.keys(MUTABLE_ARRAY_METHODS),\n]);\n","export default function isDiffSets(clone, value) {\n\tif (clone.size !== value.size) {\n\t\treturn true;\n\t}\n\n\tfor (const element of clone) {\n\t\tif (!value.has(element)) {\n\t\t\treturn true;\n\t\t}\n\t}\n\n\treturn false;\n}\n","import isDiffSets from '../diff/is-diff-sets.js';\n\nexport const COLLECTION_ITERATOR_METHODS = [\n\t'keys',\n\t'values',\n\t'entries',\n];\n\nexport const IMMUTABLE_SET_METHODS = new Set([\n\t'has',\n\t'toString',\n]);\n\nexport const MUTABLE_SET_METHODS = {\n\tadd: isDiffSets,\n\tclear: isDiffSets,\n\tdelete: isDiffSets,\n\tforEach: isDiffSets,\n};\n\nexport const HANDLED_SET_METHODS = new Set([\n\t...IMMUTABLE_SET_METHODS,\n\t...Object.keys(MUTABLE_SET_METHODS),\n\t...COLLECTION_ITERATOR_METHODS,\n]);\n","export default function isDiffMaps(clone, value) {\n\tif (clone.size !== value.size) {\n\t\treturn true;\n\t}\n\n\tlet bValue;\n\tfor (const [key, aValue] of clone) {\n\t\tbValue = value.get(key);\n\n\t\tif (bValue !== aValue || (bValue === undefined && !value.has(key))) {\n\t\t\treturn true;\n\t\t}\n\t}\n\n\treturn false;\n}\n","import isDiffMaps from '../diff/is-diff-maps.js';\nimport {IMMUTABLE_SET_METHODS, COLLECTION_ITERATOR_METHODS} from './set.js';\n\nconst IMMUTABLE_MAP_METHODS = new Set([...IMMUTABLE_SET_METHODS, 'get']);\n\nexport const MUTABLE_MAP_METHODS = {\n\tset: isDiffMaps,\n\tclear: isDiffMaps,\n\tdelete: isDiffMaps,\n\tforEach: isDiffMaps,\n};\n\nexport const HANDLED_MAP_METHODS = new Set([\n\t...IMMUTABLE_MAP_METHODS,\n\t...Object.keys(MUTABLE_MAP_METHODS),\n\t...COLLECTION_ITERATOR_METHODS,\n]);\n","import path from '../../path.js';\nimport isArray from '../../is-array.js';\nimport isObject from '../../is-object.js';\nimport {MUTABLE_ARRAY_METHODS} from '../methods/array.js';\nimport {MUTABLE_SET_METHODS} from '../methods/set.js';\nimport {MUTABLE_MAP_METHODS} from '../methods/map.js';\nimport {IMMUTABLE_OBJECT_METHODS} from '../methods/object.js';\n\nexport default class CloneObject {\n\tconstructor(value, path, argumentsList, hasOnValidate) {\n\t\tthis._path = path;\n\t\tthis._isChanged = false;\n\t\tthis._clonedCache = new Set();\n\t\tthis._hasOnValidate = hasOnValidate;\n\t\tthis._changes = hasOnValidate ? [] : null;\n\n\t\tthis.clone = path === undefined ? value : this._shallowClone(value);\n\t}\n\n\tstatic isHandledMethod(name) {\n\t\treturn IMMUTABLE_OBJECT_METHODS.has(name);\n\t}\n\n\t_shallowClone(value) {\n\t\tlet clone = value;\n\n\t\tif (isObject(value)) {\n\t\t\tclone = {...value};\n\t\t} else if (isArray(value) || ArrayBuffer.isView(value)) {\n\t\t\tclone = [...value];\n\t\t} else if (value instanceof Date) {\n\t\t\tclone = new Date(value);\n\t\t} else if (value instanceof Set) {\n\t\t\tclone = new Set([...value].map(item => this._shallowClone(item)));\n\t\t} else if (value instanceof Map) {\n\t\t\tclone = new Map();\n\n\t\t\tfor (const [key, item] of value.entries()) {\n\t\t\t\tclone.set(key, this._shallowClone(item));\n\t\t\t}\n\t\t}\n\n\t\tthis._clonedCache.add(clone);\n\n\t\treturn clone;\n\t}\n\n\tpreferredThisArg(isHandledMethod, name, thisArg, thisProxyTarget) {\n\t\tif (isHandledMethod) {\n\t\t\tif (isArray(thisProxyTarget)) {\n\t\t\t\tthis._onIsChanged = MUTABLE_ARRAY_METHODS[name];\n\t\t\t} else if (thisProxyTarget instanceof Set) {\n\t\t\t\tthis._onIsChanged = MUTABLE_SET_METHODS[name];\n\t\t\t} else if (thisProxyTarget instanceof Map) {\n\t\t\t\tthis._onIsChanged = MUTABLE_MAP_METHODS[name];\n\t\t\t}\n\n\t\t\treturn thisProxyTarget;\n\t\t}\n\n\t\treturn thisArg;\n\t}\n\n\tupdate(fullPath, property, value) {\n\t\tconst changePath = path.after(fullPath, this._path);\n\n\t\tif (property !== 'length') {\n\t\t\tlet object = this.clone;\n\n\t\t\tpath.walk(changePath, key => {\n\t\t\t\tif (object && object[key]) {\n\t\t\t\t\tif (!this._clonedCache.has(object[key])) {\n\t\t\t\t\t\tobject[key] = this._shallowClone(object[key]);\n\t\t\t\t\t}\n\n\t\t\t\t\tobject = object[key];\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tif (this._hasOnValidate) {\n\t\t\t\tthis._changes.push({\n\t\t\t\t\tpath: changePath,\n\t\t\t\t\tproperty,\n\t\t\t\t\tprevious: value,\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif (object && object[property]) {\n\t\t\t\tobject[property] = value;\n\t\t\t}\n\t\t}\n\n\t\tthis._isChanged = true;\n\t}\n\n\tundo(object) {\n\t\tlet change;\n\n\t\tfor (let index = this._changes.length - 1; index !== -1; index--) {\n\t\t\tchange = this._changes[index];\n\n\t\t\tpath.get(object, change.path)[change.property] = change.previous;\n\t\t}\n\t}\n\n\tisChanged(value) {\n\t\treturn this._onIsChanged === undefined\n\t\t\t? this._isChanged\n\t\t\t: this._onIsChanged(this.clone, value);\n\t}\n}\n","import {HANDLED_ARRAY_METHODS} from '../methods/array.js';\nimport CloneObject from './clone-object.js';\n\nexport default class CloneArray extends CloneObject {\n\tstatic isHandledMethod(name) {\n\t\treturn HANDLED_ARRAY_METHODS.has(name);\n\t}\n}\n","import CloneObject from './clone-object.js';\n\nexport default class CloneDate extends CloneObject {\n\tundo(object) {\n\t\tobject.setTime(this.clone.getTime());\n\t}\n\n\tisChanged(value, equals) {\n\t\treturn !equals(this.clone.valueOf(), value.valueOf());\n\t}\n}\n","import {HANDLED_SET_METHODS} from '../methods/set.js';\nimport CloneObject from './clone-object.js';\n\nexport default class CloneSet extends CloneObject {\n\tstatic isHandledMethod(name) {\n\t\treturn HANDLED_SET_METHODS.has(name);\n\t}\n\n\tundo(object) {\n\t\tfor (const value of this.clone) {\n\t\t\tobject.add(value);\n\t\t}\n\n\t\tfor (const value of object) {\n\t\t\tif (!this.clone.has(value)) {\n\t\t\t\tobject.delete(value);\n\t\t\t}\n\t\t}\n\t}\n}\n\n","import {HANDLED_MAP_METHODS} from '../methods/map.js';\nimport CloneObject from './clone-object.js';\n\nexport default class CloneMap extends CloneObject {\n\tstatic isHandledMethod(name) {\n\t\treturn HANDLED_MAP_METHODS.has(name);\n\t}\n\n\tundo(object) {\n\t\tfor (const [key, value] of this.clone.entries()) {\n\t\t\tobject.set(key, value);\n\t\t}\n\n\t\tfor (const key of object.keys()) {\n\t\t\tif (!this.clone.has(key)) {\n\t\t\t\tobject.delete(key);\n\t\t\t}\n\t\t}\n\t}\n}\n","import CloneObject from './clone-object.js';\n\nexport default class CloneWeakSet extends CloneObject {\n\tconstructor(value, path, argumentsList, hasOnValidate) {\n\t\tsuper(undefined, path, argumentsList, hasOnValidate);\n\n\t\tthis._arg1 = argumentsList[0];\n\t\tthis._weakValue = value.has(this._arg1);\n\t}\n\n\tisChanged(value) {\n\t\treturn this._weakValue !== value.has(this._arg1);\n\t}\n\n\tundo(object) {\n\t\tif (this._weakValue && !object.has(this._arg1)) {\n\t\t\tobject.add(this._arg1);\n\t\t} else {\n\t\t\tobject.delete(this._arg1);\n\t\t}\n\t}\n}\n\n","import CloneObject from './clone-object.js';\n\nexport default class CloneWeakMap extends CloneObject {\n\tconstructor(value, path, argumentsList, hasOnValidate) {\n\t\tsuper(undefined, path, argumentsList, hasOnValidate);\n\n\t\tthis._weakKey = argumentsList[0];\n\t\tthis._weakHas = value.has(this._weakKey);\n\t\tthis._weakValue = value.get(this._weakKey);\n\t}\n\n\tisChanged(value) {\n\t\treturn this._weakValue !== value.get(this._weakKey);\n\t}\n\n\tundo(object) {\n\t\tconst weakHas = object.has(this._weakKey);\n\n\t\tif (this._weakHas && !weakHas) {\n\t\t\tobject.set(this._weakKey, this._weakValue);\n\t\t} else if (!this._weakHas && weakHas) {\n\t\t\tobject.delete(this._weakKey);\n\t\t} else if (this._weakValue !== object.get(this._weakKey)) {\n\t\t\tobject.set(this._weakKey, this._weakValue);\n\t\t}\n\t}\n}\n","import isArray from '../is-array.js';\nimport {isBuiltinWithMutableMethods} from '../is-builtin.js';\nimport isObject from '../is-object.js';\nimport CloneObject from './clone/clone-object.js';\nimport CloneArray from './clone/clone-array.js';\nimport CloneDate from './clone/clone-date.js';\nimport CloneSet from './clone/clone-set.js';\nimport CloneMap from './clone/clone-map.js';\nimport CloneWeakSet from './clone/clone-weakset.js';\nimport CloneWeakMap from './clone/clone-weakmap.js';\n\nexport default class SmartClone {\n\tconstructor(hasOnValidate) {\n\t\tthis._stack = [];\n\t\tthis._hasOnValidate = hasOnValidate;\n\t}\n\n\tstatic isHandledType(value) {\n\t\treturn isObject(value)\n\t\t\t|| isArray(value)\n\t\t\t|| isBuiltinWithMutableMethods(value);\n\t}\n\n\tstatic isHandledMethod(target, name) {\n\t\tif (isObject(target)) {\n\t\t\treturn CloneObject.isHandledMethod(name);\n\t\t}\n\n\t\tif (isArray(target)) {\n\t\t\treturn CloneArray.isHandledMethod(name);\n\t\t}\n\n\t\tif (target instanceof Set) {\n\t\t\treturn CloneSet.isHandledMethod(name);\n\t\t}\n\n\t\tif (target instanceof Map) {\n\t\t\treturn CloneMap.isHandledMethod(name);\n\t\t}\n\n\t\treturn isBuiltinWithMutableMethods(target);\n\t}\n\n\tget isCloning() {\n\t\treturn this._stack.length > 0;\n\t}\n\n\tstart(value, path, argumentsList) {\n\t\tlet CloneClass = CloneObject;\n\n\t\tif (isArray(value)) {\n\t\t\tCloneClass = CloneArray;\n\t\t} else if (value instanceof Date) {\n\t\t\tCloneClass = CloneDate;\n\t\t} else if (value instanceof Set) {\n\t\t\tCloneClass = CloneSet;\n\t\t} else if (value instanceof Map) {\n\t\t\tCloneClass = CloneMap;\n\t\t} else if (value instanceof WeakSet) {\n\t\t\tCloneClass = CloneWeakSet;\n\t\t} else if (value instanceof WeakMap) {\n\t\t\tCloneClass = CloneWeakMap;\n\t\t}\n\n\t\tthis._stack.push(new CloneClass(value, path, argumentsList, this._hasOnValidate));\n\t}\n\n\tupdate(fullPath, property, value) {\n\t\tthis._stack[this._stack.length - 1].update(fullPath, property, value);\n\t}\n\n\tpreferredThisArg(target, thisArg, thisProxyTarget) {\n\t\tconst {name} = target;\n\t\tconst isHandledMethod = SmartClone.isHandledMethod(thisProxyTarget, name);\n\n\t\treturn this._stack[this._stack.length - 1]\n\t\t\t.preferredThisArg(isHandledMethod, name, thisArg, thisProxyTarget);\n\t}\n\n\tisChanged(isMutable, value, equals) {\n\t\treturn this._stack[this._stack.length - 1].isChanged(isMutable, value, equals);\n\t}\n\n\tundo(object) {\n\t\tif (this._previousClone !== undefined) {\n\t\t\tthis._previousClone.undo(object);\n\t\t}\n\t}\n\n\tstop() {\n\t\tthis._previousClone = this._stack.pop();\n\n\t\treturn this._previousClone.clone;\n\t}\n}\n","/* eslint-disable unicorn/prefer-spread */\nimport {TARGET, UNSUBSCRIBE} from './lib/constants.js';\nimport {isBuiltinWithMutableMethods, isBuiltinWithoutMutableMethods} from './lib/is-builtin.js';\nimport path from './lib/path.js';\nimport isSymbol from './lib/is-symbol.js';\nimport isIterator from './lib/is-iterator.js';\nimport wrapIterator from './lib/wrap-iterator.js';\nimport ignoreProperty from './lib/ignore-property.js';\nimport Cache from './lib/cache.js';\nimport SmartClone from './lib/smart-clone/smart-clone.js';\n\nconst defaultOptions = {\n\tequals: Object.is,\n\tisShallow: false,\n\tpathAsArray: false,\n\tignoreSymbols: false,\n\tignoreUnderscores: false,\n\tignoreDetached: false,\n\tdetails: false,\n};\n\nconst onChange = (object, onChange, options = {}) => {\n\toptions = {\n\t\t...defaultOptions,\n\t\t...options,\n\t};\n\n\tconst proxyTarget = Symbol('ProxyTarget');\n\tconst {equals, isShallow, ignoreDetached, details} = options;\n\tconst cache = new Cache(equals);\n\tconst hasOnValidate = typeof options.onValidate === 'function';\n\tconst smartClone = new SmartClone(hasOnValidate);\n\n\t// eslint-disable-next-line max-params\n\tconst validate = (target, property, value, previous, applyData) => !hasOnValidate\n\t\t|| smartClone.isCloning\n\t\t|| options.onValidate(path.concat(cache.getPath(target), property), value, previous, applyData) === true;\n\n\tconst handleChangeOnTarget = (target, property, value, previous) => {\n\t\tif (\n\t\t\t!ignoreProperty(cache, options, property)\n\t\t\t&& !(ignoreDetached && cache.isDetached(target, object))\n\t\t) {\n\t\t\thandleChange(cache.getPath(target), property, value, previous);\n\t\t}\n\t};\n\n\t// eslint-disable-next-line max-params\n\tconst handleChange = (changePath, property, value, previous, applyData) => {\n\t\tif (smartClone.isCloning) {\n\t\t\tsmartClone.update(changePath, property, previous);\n\t\t} else {\n\t\t\tonChange(path.concat(changePath, property), value, previous, applyData);\n\t\t}\n\t};\n\n\tconst getProxyTarget = value => value\n\t\t? (value[proxyTarget] || value)\n\t\t: value;\n\n\tconst prepareValue = (value, target, property, basePath) => {\n\t\tif (\n\t\t\tisBuiltinWithoutMutableMethods(value)\n\t\t\t|| property === 'constructor'\n\t\t\t|| (isShallow && !SmartClone.isHandledMethod(target, property))\n\t\t\t|| ignoreProperty(cache, options, property)\n\t\t\t|| cache.isGetInvariant(target, property)\n\t\t\t|| (ignoreDetached && cache.isDetached(target, object))\n\t\t) {\n\t\t\treturn value;\n\t\t}\n\n\t\tif (basePath === undefined) {\n\t\t\tbasePath = cache.getPath(target);\n\t\t}\n\n\t\treturn cache.getProxy(value, path.concat(basePath, property), handler, proxyTarget);\n\t};\n\n\tconst handler = {\n\t\tget(target, property, receiver) {\n\t\t\tif (isSymbol(property)) {\n\t\t\t\tif (property === proxyTarget || property === TARGET) {\n\t\t\t\t\treturn target;\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\tproperty === UNSUBSCRIBE\n\t\t\t\t\t&& !cache.isUnsubscribed\n\t\t\t\t\t&& cache.getPath(target).length === 0\n\t\t\t\t) {\n\t\t\t\t\tcache.unsubscribe();\n\t\t\t\t\treturn target;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst value = isBuiltinWithMutableMethods(target)\n\t\t\t\t? Reflect.get(target, property)\n\t\t\t\t: Reflect.get(target, property, receiver);\n\n\t\t\treturn prepareValue(value, target, property);\n\t\t},\n\n\t\tset(target, property, value, receiver) {\n\t\t\tvalue = getProxyTarget(value);\n\n\t\t\tconst reflectTarget = target[proxyTarget] || target;\n\t\t\tconst previous = reflectTarget[property];\n\n\t\t\tif (equals(previous, value) && property in target) {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tconst isValid = validate(target, property, value, previous);\n\n\t\t\tif (\n\t\t\t\tisValid\n\t\t\t\t&& cache.setProperty(reflectTarget, property, value, receiver, previous)\n\t\t\t) {\n\t\t\t\thandleChangeOnTarget(target, property, target[property], previous);\n\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\treturn !isValid;\n\t\t},\n\n\t\tdefineProperty(target, property, descriptor) {\n\t\t\tif (!cache.isSameDescriptor(descriptor, target, property)) {\n\t\t\t\tconst previous = target[property];\n\n\t\t\t\tif (\n\t\t\t\t\tvalidate(target, property, descriptor.value, previous)\n\t\t\t\t\t&& cache.defineProperty(target, property, descriptor, previous)\n\t\t\t\t) {\n\t\t\t\t\thandleChangeOnTarget(target, property, descriptor.value, previous);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn true;\n\t\t},\n\n\t\tdeleteProperty(target, property) {\n\t\t\tif (!Reflect.has(target, property)) {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tconst previous = Reflect.get(target, property);\n\t\t\tconst isValid = validate(target, property, undefined, previous);\n\n\t\t\tif (\n\t\t\t\tisValid\n\t\t\t\t&& cache.deleteProperty(target, property, previous)\n\t\t\t) {\n\t\t\t\thandleChangeOnTarget(target, property, undefined, previous);\n\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\treturn !isValid;\n\t\t},\n\n\t\tapply(target, thisArg, argumentsList) {\n\t\t\tconst thisProxyTarget = thisArg[proxyTarget] || thisArg;\n\n\t\t\tif (cache.isUnsubscribed) {\n\t\t\t\treturn Reflect.apply(target, thisProxyTarget, argumentsList);\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\t(details === false\n\t\t\t\t\t|| (details !== true && !details.includes(target.name)))\n\t\t\t\t&& SmartClone.isHandledType(thisProxyTarget)\n\t\t\t) {\n\t\t\t\tlet applyPath = path.initial(cache.getPath(target));\n\t\t\t\tconst isHandledMethod = SmartClone.isHandledMethod(thisProxyTarget, target.name);\n\n\t\t\t\tsmartClone.start(thisProxyTarget, applyPath, argumentsList);\n\n\t\t\t\tlet result = Reflect.apply(\n\t\t\t\t\ttarget,\n\t\t\t\t\tsmartClone.preferredThisArg(target, thisArg, thisProxyTarget),\n\t\t\t\t\tisHandledMethod\n\t\t\t\t\t\t? argumentsList.map(argument => getProxyTarget(argument))\n\t\t\t\t\t\t: argumentsList,\n\t\t\t\t);\n\n\t\t\t\tconst isChanged = smartClone.isChanged(thisProxyTarget, equals);\n\t\t\t\tconst previous = smartClone.stop();\n\n\t\t\t\tif (SmartClone.isHandledType(result) && isHandledMethod) {\n\t\t\t\t\tif (thisArg instanceof Map && target.name === 'get') {\n\t\t\t\t\t\tapplyPath = path.concat(applyPath, argumentsList[0]);\n\t\t\t\t\t}\n\n\t\t\t\t\tresult = cache.getProxy(result, applyPath, handler);\n\t\t\t\t}\n\n\t\t\t\tif (isChanged) {\n\t\t\t\t\tconst applyData = {\n\t\t\t\t\t\tname: target.name,\n\t\t\t\t\t\targs: argumentsList,\n\t\t\t\t\t\tresult,\n\t\t\t\t\t};\n\t\t\t\t\tconst changePath = smartClone.isCloning\n\t\t\t\t\t\t? path.initial(applyPath)\n\t\t\t\t\t\t: applyPath;\n\t\t\t\t\tconst property = smartClone.isCloning\n\t\t\t\t\t\t? path.last(applyPath)\n\t\t\t\t\t\t: '';\n\n\t\t\t\t\tif (validate(path.get(object, changePath), property, thisProxyTarget, previous, applyData)) {\n\t\t\t\t\t\thandleChange(changePath, property, thisProxyTarget, previous, applyData);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tsmartClone.undo(thisProxyTarget);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\t(thisArg instanceof Map || thisArg instanceof Set)\n\t\t\t\t\t&& isIterator(result)\n\t\t\t\t) {\n\t\t\t\t\treturn wrapIterator(result, target, thisArg, applyPath, prepareValue);\n\t\t\t\t}\n\n\t\t\t\treturn result;\n\t\t\t}\n\n\t\t\treturn Reflect.apply(target, thisArg, argumentsList);\n\t\t},\n\t};\n\n\tconst proxy = cache.getProxy(object, options.pathAsArray ? [] : '', handler);\n\tonChange = onChange.bind(proxy);\n\n\tif (hasOnValidate) {\n\t\toptions.onValidate = options.onValidate.bind(proxy);\n\t}\n\n\treturn proxy;\n};\n\nonChange.target = proxy => (proxy && proxy[TARGET]) || proxy;\nonChange.unsubscribe = proxy => proxy[UNSUBSCRIBE] || proxy;\n\nexport default onChange;\n","import onChange from \"on-change\";\nimport { useState, useEffect } from \"react\";\n\nimport { WidgetConfig } from \"src/types/config\";\nimport { DEFAULT_CONFIG } from \"src/constants/config\";\n\nexport const useWidgetConfig = (initialConfig?: WidgetConfig) => {\n const [config, setConfig] = useState({\n ...(DEFAULT_CONFIG as WidgetConfig),\n ...(initialConfig ?? window.OMNIC_WIDGET_LOCATIONS_CONFIG),\n });\n\n const isReactConfig = initialConfig && !window.OMNIC_WIDGET_LOCATIONS_CONFIG;\n const isWindowConfig = !initialConfig && window.OMNIC_WIDGET_LOCATIONS_CONFIG;\n\n useEffect(() => {\n if (!isReactConfig) {\n return;\n }\n\n setConfig(initialConfig);\n }, [initialConfig, isReactConfig]);\n\n useEffect(() => {\n if (!isWindowConfig) {\n return;\n }\n\n window.OMNIC_WIDGET_LOCATIONS_CONFIG = onChange(\n window.OMNIC_WIDGET_LOCATIONS_CONFIG!,\n function (this: WidgetConfig) {\n const nextConfig = onChange.target(this);\n\n if (nextConfig.palette) {\n nextConfig.palette = { ...nextConfig.palette };\n }\n\n if (nextConfig.map) {\n nextConfig.map = { ...nextConfig.map };\n }\n\n setConfig({ ...nextConfig });\n },\n );\n\n return () => {\n if (!window.OMNIC_WIDGET_LOCATIONS_CONFIG) {\n return;\n }\n\n onChange.unsubscribe(window.OMNIC_WIDGET_LOCATIONS_CONFIG);\n };\n }, [isWindowConfig]);\n\n return config;\n};\n","import { axiosClient } from \"src/api/client\";\nimport { INNType, WidgetOptions } from \"src/types/config\";\n\nexport const useInitializeAxios = (INN: INNType, options?: WidgetOptions) => {\n axiosClient.defaults.headers.get.Authorization = `INN ${INN}`;\n\n if (options?.baseURL) {\n axiosClient.defaults.baseURL = options.baseURL;\n }\n};\n","import { jsx, Fragment, jsxs } from 'react/jsx-runtime';\nimport { createContext, useContext, memo, useState, useRef, useEffect, PureComponent, createRef, useMemo, Children, isValidElement, cloneElement } from 'react';\nimport * as ReactDOM from 'react-dom';\nimport { createPortal } from 'react-dom';\n\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nfunction __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nvar __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\r\n\r\nfunction __rest$1(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nfunction __awaiter$1(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nfunction __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\n\nfunction getDefaultExportFromCjs (x) {\n\treturn x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;\n}\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar NODE_ENV = process.env.NODE_ENV;\n\nvar invariant = function(condition, format, a, b, c, d, e, f) {\n if (NODE_ENV !== 'production') {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n }\n\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error(\n 'Minified exception occurred; use the non-minified dev environment ' +\n 'for the full error message and additional helpful warnings.'\n );\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(\n format.replace(/%s/g, function() { return args[argIndex++]; })\n );\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n};\n\nvar invariant_1 = invariant;\n\nvar invariant$1 = /*@__PURE__*/getDefaultExportFromCjs(invariant_1);\n\nvar MapContext = createContext(null);\nfunction useGoogleMap() {\n invariant$1(!!useContext, 'useGoogleMap is React hook and requires React version 16.8+');\n var map = useContext(MapContext);\n invariant$1(!!map, 'useGoogleMap needs a GoogleMap available up in the tree');\n return map;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction reduce(obj, fn, acc) {\n return Object.keys(obj).reduce(function reducer(newAcc, key) {\n return fn(newAcc, obj[key], key);\n }, acc);\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction forEach(obj, fn) {\n Object.keys(obj).forEach(function (key) {\n return fn(obj[key], key);\n });\n}\n\n/* global google */\nfunction applyUpdaterToNextProps(\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nupdaterMap, \n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nprevProps, \n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nnextProps, \n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ninstance\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\n) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var map = {};\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var iter = function (fn, key) {\n var nextValue = nextProps[key];\n if (nextValue !== prevProps[key]) {\n map[key] = nextValue;\n fn(instance, nextValue);\n }\n };\n forEach(updaterMap, iter);\n return map;\n}\nfunction registerEvents(\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nprops, \n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ninstance, eventMap) {\n var registeredList = reduce(eventMap, function reducer(acc, googleEventName, \n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n onEventName) {\n if (typeof props[onEventName] === 'function') {\n acc.push(google.maps.event.addListener(instance, googleEventName, props[onEventName]));\n }\n return acc;\n }, []);\n return registeredList;\n}\nfunction unregisterEvent(registered) {\n google.maps.event.removeListener(registered);\n}\nfunction unregisterEvents(events) {\n if (events === void 0) { events = []; }\n events.forEach(unregisterEvent);\n}\nfunction applyUpdatersToPropsAndRegisterEvents(_a) {\n var updaterMap = _a.updaterMap, eventMap = _a.eventMap, prevProps = _a.prevProps, nextProps = _a.nextProps, instance = _a.instance;\n var registeredEvents = registerEvents(nextProps, instance, eventMap);\n applyUpdaterToNextProps(updaterMap, prevProps, nextProps, instance);\n return registeredEvents;\n}\n\nvar eventMap$i = {\n onDblClick: 'dblclick',\n onDragEnd: 'dragend',\n onDragStart: 'dragstart',\n onMapTypeIdChanged: 'maptypeid_changed',\n onMouseMove: 'mousemove',\n onMouseOut: 'mouseout',\n onMouseOver: 'mouseover',\n onMouseDown: 'mousedown',\n onMouseUp: 'mouseup',\n onRightClick: 'rightclick',\n onTilesLoaded: 'tilesloaded',\n onBoundsChanged: 'bounds_changed',\n onCenterChanged: 'center_changed',\n onClick: 'click',\n onDrag: 'drag',\n onHeadingChanged: 'heading_changed',\n onIdle: 'idle',\n onProjectionChanged: 'projection_changed',\n onResize: 'resize',\n onTiltChanged: 'tilt_changed',\n onZoomChanged: 'zoom_changed',\n};\nvar updaterMap$i = {\n extraMapTypes: function (map, extra) {\n extra.forEach(function forEachExtra(it, i) {\n map.mapTypes.set(String(i), it);\n });\n },\n center: function (map, center) {\n map.setCenter(center);\n },\n clickableIcons: function (map, clickable) {\n map.setClickableIcons(clickable);\n },\n heading: function (map, heading) {\n map.setHeading(heading);\n },\n mapTypeId: function (map, mapTypeId) {\n map.setMapTypeId(mapTypeId);\n },\n options: function (map, options) {\n map.setOptions(options);\n },\n streetView: function (map, streetView) {\n map.setStreetView(streetView);\n },\n tilt: function (map, tilt) {\n map.setTilt(tilt);\n },\n zoom: function (map, zoom) {\n map.setZoom(zoom);\n },\n};\n// TODO: unfinished!\nfunction GoogleMapFunctional(_a) {\n var children = _a.children, options = _a.options, id = _a.id, mapContainerStyle = _a.mapContainerStyle, mapContainerClassName = _a.mapContainerClassName, center = _a.center, \n // clickableIcons,\n // extraMapTypes,\n // heading,\n // mapTypeId,\n onClick = _a.onClick, onDblClick = _a.onDblClick, onDrag = _a.onDrag, onDragEnd = _a.onDragEnd, onDragStart = _a.onDragStart, onMouseMove = _a.onMouseMove, onMouseOut = _a.onMouseOut, onMouseOver = _a.onMouseOver, onMouseDown = _a.onMouseDown, onMouseUp = _a.onMouseUp, onRightClick = _a.onRightClick, \n // onMapTypeIdChanged,\n // onTilesLoaded,\n // onBoundsChanged,\n onCenterChanged = _a.onCenterChanged, \n // onHeadingChanged,\n // onIdle,\n // onProjectionChanged,\n // onResize,\n // onTiltChanged,\n // onZoomChanged,\n onLoad = _a.onLoad, onUnmount = _a.onUnmount;\n var _b = useState(null), map = _b[0], setMap = _b[1];\n var ref = useRef(null);\n // const [extraMapTypesListener, setExtraMapTypesListener] = useState<google.maps.MapsEventListener | null>(null)\n var _c = useState(null), centerChangedListener = _c[0], setCenterChangedListener = _c[1];\n var _d = useState(null), dblclickListener = _d[0], setDblclickListener = _d[1];\n var _e = useState(null), dragendListener = _e[0], setDragendListener = _e[1];\n var _f = useState(null), dragstartListener = _f[0], setDragstartListener = _f[1];\n var _g = useState(null), mousedownListener = _g[0], setMousedownListener = _g[1];\n var _h = useState(null), mousemoveListener = _h[0], setMousemoveListener = _h[1];\n var _j = useState(null), mouseoutListener = _j[0], setMouseoutListener = _j[1];\n var _k = useState(null), mouseoverListener = _k[0], setMouseoverListener = _k[1];\n var _l = useState(null), mouseupListener = _l[0], setMouseupListener = _l[1];\n var _m = useState(null), rightclickListener = _m[0], setRightclickListener = _m[1];\n var _o = useState(null), clickListener = _o[0], setClickListener = _o[1];\n var _p = useState(null), dragListener = _p[0], setDragListener = _p[1];\n // Order does matter\n useEffect(function () {\n if (options && map !== null) {\n map.setOptions(options);\n }\n }, [map, options]);\n useEffect(function () {\n if (map !== null && typeof center !== 'undefined') {\n map.setCenter(center);\n }\n }, [map, center]);\n useEffect(function () {\n if (map && onDblClick) {\n if (dblclickListener !== null) {\n google.maps.event.removeListener(dblclickListener);\n }\n setDblclickListener(google.maps.event.addListener(map, 'dblclick', onDblClick));\n }\n }, [onDblClick]);\n useEffect(function () {\n if (map && onDragEnd) {\n if (dragendListener !== null) {\n google.maps.event.removeListener(dragendListener);\n }\n setDragendListener(google.maps.event.addListener(map, 'dragend', onDragEnd));\n }\n }, [onDragEnd]);\n useEffect(function () {\n if (map && onDragStart) {\n if (dragstartListener !== null) {\n google.maps.event.removeListener(dragstartListener);\n }\n setDragstartListener(google.maps.event.addListener(map, 'dragstart', onDragStart));\n }\n }, [onDragStart]);\n useEffect(function () {\n if (map && onMouseDown) {\n if (mousedownListener !== null) {\n google.maps.event.removeListener(mousedownListener);\n }\n setMousedownListener(google.maps.event.addListener(map, 'mousedown', onMouseDown));\n }\n }, [onMouseDown]);\n useEffect(function () {\n if (map && onMouseMove) {\n if (mousemoveListener !== null) {\n google.maps.event.removeListener(mousemoveListener);\n }\n setMousemoveListener(google.maps.event.addListener(map, 'mousemove', onMouseMove));\n }\n }, [onMouseMove]);\n useEffect(function () {\n if (map && onMouseOut) {\n if (mouseoutListener !== null) {\n google.maps.event.removeListener(mouseoutListener);\n }\n setMouseoutListener(google.maps.event.addListener(map, 'mouseout', onMouseOut));\n }\n }, [onMouseOut]);\n useEffect(function () {\n if (map && onMouseOver) {\n if (mouseoverListener !== null) {\n google.maps.event.removeListener(mouseoverListener);\n }\n setMouseoverListener(google.maps.event.addListener(map, 'mouseover', onMouseOver));\n }\n }, [onMouseOver]);\n useEffect(function () {\n if (map && onMouseUp) {\n if (mouseupListener !== null) {\n google.maps.event.removeListener(mouseupListener);\n }\n setMouseupListener(google.maps.event.addListener(map, 'mouseup', onMouseUp));\n }\n }, [onMouseUp]);\n useEffect(function () {\n if (map && onRightClick) {\n if (rightclickListener !== null) {\n google.maps.event.removeListener(rightclickListener);\n }\n setRightclickListener(google.maps.event.addListener(map, 'rightclick', onRightClick));\n }\n }, [onRightClick]);\n useEffect(function () {\n if (map && onClick) {\n if (clickListener !== null) {\n google.maps.event.removeListener(clickListener);\n }\n setClickListener(google.maps.event.addListener(map, 'click', onClick));\n }\n }, [onClick]);\n useEffect(function () {\n if (map && onDrag) {\n if (dragListener !== null) {\n google.maps.event.removeListener(dragListener);\n }\n setDragListener(google.maps.event.addListener(map, 'drag', onDrag));\n }\n }, [onDrag]);\n useEffect(function () {\n if (map && onCenterChanged) {\n if (centerChangedListener !== null) {\n google.maps.event.removeListener(centerChangedListener);\n }\n setCenterChangedListener(google.maps.event.addListener(map, 'center_changed', onCenterChanged));\n }\n }, [onClick]);\n useEffect(function () {\n var map = ref.current === null\n ? null\n : new google.maps.Map(ref.current, options);\n setMap(map);\n if (map !== null && onLoad) {\n onLoad(map);\n }\n return function () {\n if (map !== null) {\n if (onUnmount) {\n onUnmount(map);\n }\n }\n };\n }, []);\n return (jsx(\"div\", { id: id, ref: ref, style: mapContainerStyle, className: mapContainerClassName, children: jsx(MapContext.Provider, { value: map, children: map !== null ? children : jsx(Fragment, {}) }) }));\n}\nmemo(GoogleMapFunctional);\nvar GoogleMap = /** @class */ (function (_super) {\n __extends(GoogleMap, _super);\n function GoogleMap() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.state = {\n map: null,\n };\n _this.registeredEvents = [];\n _this.mapRef = null;\n _this.getInstance = function () {\n if (_this.mapRef === null) {\n return null;\n }\n return new google.maps.Map(_this.mapRef, _this.props.options);\n };\n _this.panTo = function (latLng) {\n var map = _this.getInstance();\n if (map) {\n map.panTo(latLng);\n }\n };\n _this.setMapCallback = function () {\n if (_this.state.map !== null) {\n if (_this.props.onLoad) {\n _this.props.onLoad(_this.state.map);\n }\n }\n };\n _this.getRef = function (ref) {\n _this.mapRef = ref;\n };\n return _this;\n }\n GoogleMap.prototype.componentDidMount = function () {\n var map = this.getInstance();\n this.registeredEvents = applyUpdatersToPropsAndRegisterEvents({\n updaterMap: updaterMap$i,\n eventMap: eventMap$i,\n prevProps: {},\n nextProps: this.props,\n instance: map,\n });\n this.setState(function setMap() {\n return {\n map: map,\n };\n }, this.setMapCallback);\n };\n GoogleMap.prototype.componentDidUpdate = function (prevProps) {\n if (this.state.map !== null) {\n unregisterEvents(this.registeredEvents);\n this.registeredEvents = applyUpdatersToPropsAndRegisterEvents({\n updaterMap: updaterMap$i,\n eventMap: eventMap$i,\n prevProps: prevProps,\n nextProps: this.props,\n instance: this.state.map,\n });\n }\n };\n GoogleMap.prototype.componentWillUnmount = function () {\n if (this.state.map !== null) {\n if (this.props.onUnmount) {\n this.props.onUnmount(this.state.map);\n }\n unregisterEvents(this.registeredEvents);\n }\n };\n GoogleMap.prototype.render = function () {\n return (jsx(\"div\", { id: this.props.id, ref: this.getRef, style: this.props.mapContainerStyle, className: this.props.mapContainerClassName, children: jsx(MapContext.Provider, { value: this.state.map, children: this.state.map !== null ? this.props.children : jsx(Fragment, {}) }) }));\n };\n return GoogleMap;\n}(PureComponent));\n\nvar isBrowser = typeof document !== 'undefined';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction injectScript(_a) {\n var url = _a.url, id = _a.id, nonce = _a.nonce;\n if (!isBrowser) {\n return Promise.reject(new Error('document is undefined'));\n }\n return new Promise(function injectScriptCallback(resolve, reject) {\n var existingScript = document.getElementById(id);\n var windowWithGoogleMap = window;\n if (existingScript) {\n // Same script id/url: keep same script\n var dataStateAttribute = existingScript.getAttribute('data-state');\n if (existingScript.src === url && dataStateAttribute !== 'error') {\n if (dataStateAttribute === 'ready') {\n return resolve(id);\n }\n else {\n var originalInitMap_1 = windowWithGoogleMap.initMap;\n var originalErrorCallback_1 = existingScript.onerror;\n windowWithGoogleMap.initMap = function initMap() {\n if (originalInitMap_1) {\n originalInitMap_1();\n }\n resolve(id);\n };\n existingScript.onerror = function (err) {\n if (originalErrorCallback_1) {\n originalErrorCallback_1(err);\n }\n reject(err);\n };\n return;\n }\n }\n // Same script id, but either\n // 1. requested URL is different\n // 2. script failed to load\n else {\n existingScript.remove();\n }\n }\n var script = document.createElement('script');\n script.type = 'text/javascript';\n script.src = url;\n script.id = id;\n script.async = true;\n script.nonce = nonce || '';\n script.onerror = function onerror(err) {\n script.setAttribute('data-state', 'error');\n reject(err);\n };\n windowWithGoogleMap.initMap = function onload() {\n script.setAttribute('data-state', 'ready');\n resolve(id);\n };\n document.head.appendChild(script);\n }).catch(function (err) {\n console.error('injectScript error: ', err);\n throw err;\n });\n}\n\nfunction isGoogleFontStyle(element) {\n // 'Roboto' or 'Google Sans Text' font download\n var href = element.href;\n if (href && (href.indexOf('https://fonts.googleapis.com/css?family=Roboto') === 0 ||\n href.indexOf('https://fonts.googleapis.com/css?family=Google+Sans+Text') === 0)) {\n return true;\n }\n // font style elements\n if (\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n element.tagName.toLowerCase() === 'style' &&\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n element.styleSheet &&\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n element.styleSheet.cssText &&\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n element.styleSheet.cssText.replace('\\r\\n', '').indexOf('.gm-style') === 0) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n element.styleSheet.cssText = '';\n return true;\n }\n // font style elements for other browsers\n if (\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n element.tagName.toLowerCase() === 'style' &&\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n element.innerHTML &&\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n element.innerHTML.replace('\\r\\n', '').indexOf('.gm-style') === 0) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n element.innerHTML = '';\n return true;\n }\n // when google tries to add empty style\n if (\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n element.tagName.toLowerCase() === 'style' &&\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n !element.styleSheet &&\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n !element.innerHTML) {\n return true;\n }\n return false;\n}\n// Preventing the Google Maps library from downloading an extra font\nfunction preventGoogleFonts() {\n // we override these methods only for one particular head element\n // default methods for other elements are not affected\n var head = document.getElementsByTagName('head')[0];\n if (head) {\n var trueInsertBefore_1 = head.insertBefore.bind(head);\n // TODO: adding return before reflect solves the TS issue\n head.insertBefore = function insertBefore(newElement, referenceElement) {\n if (!isGoogleFontStyle(newElement)) {\n Reflect.apply(trueInsertBefore_1, head, [newElement, referenceElement]);\n }\n return newElement;\n };\n var trueAppend_1 = head.appendChild.bind(head);\n // TODO: adding return before reflect solves the TS issue\n head.appendChild = function appendChild(textNode) {\n if (!isGoogleFontStyle(textNode)) {\n Reflect.apply(trueAppend_1, head, [textNode]);\n }\n return textNode;\n };\n }\n}\n\nfunction makeLoadScriptUrl(_a) {\n var googleMapsApiKey = _a.googleMapsApiKey, googleMapsClientId = _a.googleMapsClientId, _b = _a.version, version = _b === void 0 ? 'weekly' : _b, language = _a.language, region = _a.region, libraries = _a.libraries, channel = _a.channel, mapIds = _a.mapIds, authReferrerPolicy = _a.authReferrerPolicy;\n var params = [];\n invariant$1((googleMapsApiKey && googleMapsClientId) || !(googleMapsApiKey && googleMapsClientId), 'You need to specify either googleMapsApiKey or googleMapsClientId for @react-google-maps/api load script to work. You cannot use both at the same time.');\n if (googleMapsApiKey) {\n params.push(\"key=\".concat(googleMapsApiKey));\n }\n else if (googleMapsClientId) {\n params.push(\"client=\".concat(googleMapsClientId));\n }\n if (version) {\n params.push(\"v=\".concat(version));\n }\n if (language) {\n params.push(\"language=\".concat(language));\n }\n if (region) {\n params.push(\"region=\".concat(region));\n }\n if (libraries && libraries.length) {\n params.push(\"libraries=\".concat(libraries.sort().join(',')));\n }\n if (channel) {\n params.push(\"channel=\".concat(channel));\n }\n if (mapIds && mapIds.length) {\n params.push(\"map_ids=\".concat(mapIds.join(',')));\n }\n if (authReferrerPolicy) {\n params.push(\"auth_referrer_policy=\".concat(authReferrerPolicy));\n }\n params.push('callback=initMap');\n return \"https://maps.googleapis.com/maps/api/js?\".concat(params.join('&'));\n}\n\nvar cleaningUp = false;\nfunction DefaultLoadingElement() {\n return jsx(\"div\", { children: \"Loading...\" });\n}\nvar defaultLoadScriptProps = {\n id: 'script-loader',\n version: 'weekly',\n};\nvar LoadScript = /** @class */ (function (_super) {\n __extends(LoadScript, _super);\n function LoadScript() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.check = createRef();\n _this.state = {\n loaded: false,\n };\n _this.cleanupCallback = function () {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n delete window.google.maps;\n _this.injectScript();\n };\n _this.isCleaningUp = function () { return __awaiter$1(_this, void 0, void 0, function () {\n function promiseCallback(resolve) {\n if (!cleaningUp) {\n resolve();\n }\n else {\n if (isBrowser) {\n var timer_1 = window.setInterval(function interval() {\n if (!cleaningUp) {\n window.clearInterval(timer_1);\n resolve();\n }\n }, 1);\n }\n }\n return;\n }\n return __generator(this, function (_a) {\n return [2 /*return*/, new Promise(promiseCallback)];\n });\n }); };\n _this.cleanup = function () {\n cleaningUp = true;\n var script = document.getElementById(_this.props.id);\n if (script && script.parentNode) {\n script.parentNode.removeChild(script);\n }\n Array.prototype.slice\n .call(document.getElementsByTagName('script'))\n .filter(function filter(script) {\n return typeof script.src === 'string' && script.src.includes('maps.googleapis');\n })\n .forEach(function forEach(script) {\n if (script.parentNode) {\n script.parentNode.removeChild(script);\n }\n });\n Array.prototype.slice\n .call(document.getElementsByTagName('link'))\n .filter(function filter(link) {\n return (link.href === 'https://fonts.googleapis.com/css?family=Roboto:300,400,500,700|Google+Sans');\n })\n .forEach(function forEach(link) {\n if (link.parentNode) {\n link.parentNode.removeChild(link);\n }\n });\n Array.prototype.slice\n .call(document.getElementsByTagName('style'))\n .filter(function filter(style) {\n return (style.innerText !== undefined &&\n style.innerText.length > 0 &&\n style.innerText.includes('.gm-'));\n })\n .forEach(function forEach(style) {\n if (style.parentNode) {\n style.parentNode.removeChild(style);\n }\n });\n };\n _this.injectScript = function () {\n if (_this.props.preventGoogleFontsLoading) {\n preventGoogleFonts();\n }\n invariant$1(!!_this.props.id, 'LoadScript requires \"id\" prop to be a string: %s', _this.props.id);\n var injectScriptOptions = {\n id: _this.props.id,\n nonce: _this.props.nonce,\n url: makeLoadScriptUrl(_this.props),\n };\n injectScript(injectScriptOptions)\n .then(function () {\n if (_this.props.onLoad) {\n _this.props.onLoad();\n }\n _this.setState(function setLoaded() {\n return {\n loaded: true,\n };\n });\n return;\n })\n .catch(function (err) {\n if (_this.props.onError) {\n _this.props.onError(err);\n }\n console.error(\"\\n There has been an Error with loading Google Maps API script, please check that you provided correct google API key (\".concat(_this\n .props.googleMapsApiKey || '-', \") or Client ID (\").concat(_this.props.googleMapsClientId ||\n '-', \") to <LoadScript />\\n Otherwise it is a Network issue.\\n \"));\n });\n };\n return _this;\n }\n LoadScript.prototype.componentDidMount = function () {\n if (isBrowser) {\n if (window.google && window.google.maps && !cleaningUp) {\n console.error('google api is already presented');\n return;\n }\n this.isCleaningUp()\n .then(this.injectScript)\n .catch(function error(err) {\n console.error('Error at injecting script after cleaning up: ', err);\n });\n }\n };\n LoadScript.prototype.componentDidUpdate = function (prevProps) {\n if (this.props.libraries !== prevProps.libraries) {\n console.warn('Performance warning! LoadScript has been reloaded unintentionally! You should not pass `libraries` prop as new array. Please keep an array of libraries as static class property for Components and PureComponents, or just a const variable outside of component, or somewhere in config files or ENV variables');\n }\n if (isBrowser && prevProps.language !== this.props.language) {\n this.cleanup();\n // TODO: refactor to use gDSFP maybe... wait for hooks refactoring.\n this.setState(function setLoaded() {\n return {\n loaded: false,\n };\n }, this.cleanupCallback);\n }\n };\n LoadScript.prototype.componentWillUnmount = function () {\n var _this = this;\n if (isBrowser) {\n this.cleanup();\n var timeoutCallback = function () {\n if (!_this.check.current) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n delete window.google;\n cleaningUp = false;\n }\n };\n window.setTimeout(timeoutCallback, 1);\n if (this.props.onUnmount) {\n this.props.onUnmount();\n }\n }\n };\n LoadScript.prototype.render = function () {\n return (jsxs(Fragment, { children: [jsx(\"div\", { ref: this.check }), this.state.loaded\n ? this.props.children\n : this.props.loadingElement || jsx(DefaultLoadingElement, {})] }));\n };\n LoadScript.defaultProps = defaultLoadScriptProps;\n return LoadScript;\n}(PureComponent));\n\n/* eslint-disable filenames/match-regex */\nvar previouslyLoadedUrl;\nfunction useLoadScript(_a) {\n var _b = _a.id, id = _b === void 0 ? defaultLoadScriptProps.id : _b, _c = _a.version, version = _c === void 0 ? defaultLoadScriptProps.version : _c, nonce = _a.nonce, googleMapsApiKey = _a.googleMapsApiKey, googleMapsClientId = _a.googleMapsClientId, language = _a.language, region = _a.region, libraries = _a.libraries, preventGoogleFontsLoading = _a.preventGoogleFontsLoading, channel = _a.channel, mapIds = _a.mapIds, authReferrerPolicy = _a.authReferrerPolicy;\n var isMounted = useRef(false);\n var _d = useState(false), isLoaded = _d[0], setLoaded = _d[1];\n var _e = useState(undefined), loadError = _e[0], setLoadError = _e[1];\n useEffect(function trackMountedState() {\n isMounted.current = true;\n return function () {\n isMounted.current = false;\n };\n }, []);\n useEffect(function applyPreventGoogleFonts() {\n if (isBrowser && preventGoogleFontsLoading) {\n preventGoogleFonts();\n }\n }, [preventGoogleFontsLoading]);\n useEffect(function validateLoadedState() {\n if (isLoaded) {\n invariant$1(!!window.google, 'useLoadScript was marked as loaded, but window.google is not present. Something went wrong.');\n }\n }, [isLoaded]);\n var url = makeLoadScriptUrl({\n version: version,\n googleMapsApiKey: googleMapsApiKey,\n googleMapsClientId: googleMapsClientId,\n language: language,\n region: region,\n libraries: libraries,\n channel: channel,\n mapIds: mapIds,\n authReferrerPolicy: authReferrerPolicy\n });\n useEffect(function loadScriptAndModifyLoadedState() {\n if (!isBrowser) {\n return;\n }\n function setLoadedIfMounted() {\n if (isMounted.current) {\n setLoaded(true);\n previouslyLoadedUrl = url;\n }\n }\n if (window.google && window.google.maps && previouslyLoadedUrl === url) {\n setLoadedIfMounted();\n return;\n }\n injectScript({ id: id, url: url, nonce: nonce })\n .then(setLoadedIfMounted)\n .catch(function handleInjectError(err) {\n if (isMounted.current) {\n setLoadError(err);\n }\n console.warn(\"\\n There has been an Error with loading Google Maps API script, please check that you provided correct google API key (\".concat(googleMapsApiKey ||\n '-', \") or Client ID (\").concat(googleMapsClientId || '-', \")\\n Otherwise it is a Network issue.\\n \"));\n console.error(err);\n });\n }, [id, url, nonce]);\n var prevLibraries = useRef();\n useEffect(function checkPerformance() {\n if (prevLibraries.current && libraries !== prevLibraries.current) {\n console.warn('Performance warning! LoadScript has been reloaded unintentionally! You should not pass `libraries` prop as new array. Please keep an array of libraries as static class property for Components and PureComponents, or just a const variable outside of component, or somewhere in config files or ENV variables');\n }\n prevLibraries.current = libraries;\n }, [libraries]);\n return { isLoaded: isLoaded, loadError: loadError, url: url };\n}\n\nvar defaultLoadingElement = jsx(DefaultLoadingElement, {});\nfunction LoadScriptNext(_a) {\n var loadingElement = _a.loadingElement, onLoad = _a.onLoad, onError = _a.onError, onUnmount = _a.onUnmount, children = _a.children, hookOptions = __rest$1(_a, [\"loadingElement\", \"onLoad\", \"onError\", \"onUnmount\", \"children\"]);\n var _b = useLoadScript(hookOptions), isLoaded = _b.isLoaded, loadError = _b.loadError;\n useEffect(function handleOnLoad() {\n if (isLoaded && typeof onLoad === 'function') {\n onLoad();\n }\n }, [isLoaded, onLoad]);\n useEffect(function handleOnError() {\n if (loadError && typeof onError === 'function') {\n onError(loadError);\n }\n }, [loadError, onError]);\n useEffect(function handleOnUnmount() {\n return function () {\n if (onUnmount) {\n onUnmount();\n }\n };\n }, [onUnmount]);\n return isLoaded ? children : loadingElement || defaultLoadingElement;\n}\nvar LoadScriptNext$1 = memo(LoadScriptNext);\n\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n\r\nfunction __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\n\n// do not edit .js files directly - edit src/index.jst\n\n\n\nvar fastDeepEqual$1 = function equal(a, b) {\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n\n var length, i, keys;\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n\n for (i = length; i-- !== 0;) {\n var key = keys[i];\n\n if (!equal(a[key], b[key])) return false;\n }\n\n return true;\n }\n\n // true if both NaN, false otherwise\n return a!==a && b!==b;\n};\n\n/**\n * Copyright 2019 Google LLC. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at.\n *\n * Http://www.apache.org/licenses/LICENSE-2.0.\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nconst DEFAULT_ID = \"__googleMapsScriptId\";\n/**\n * The status of the [[Loader]].\n */\nvar LoaderStatus;\n(function (LoaderStatus) {\n LoaderStatus[LoaderStatus[\"INITIALIZED\"] = 0] = \"INITIALIZED\";\n LoaderStatus[LoaderStatus[\"LOADING\"] = 1] = \"LOADING\";\n LoaderStatus[LoaderStatus[\"SUCCESS\"] = 2] = \"SUCCESS\";\n LoaderStatus[LoaderStatus[\"FAILURE\"] = 3] = \"FAILURE\";\n})(LoaderStatus || (LoaderStatus = {}));\n/**\n * [[Loader]] makes it easier to add Google Maps JavaScript API to your application\n * dynamically using\n * [Promises](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise).\n * It works by dynamically creating and appending a script node to the the\n * document head and wrapping the callback function so as to return a promise.\n *\n * ```\n * const loader = new Loader({\n * apiKey: \"\",\n * version: \"weekly\",\n * libraries: [\"places\"]\n * });\n *\n * loader.load().then((google) => {\n * const map = new google.maps.Map(...)\n * })\n * ```\n */\nclass Loader {\n /**\n * Creates an instance of Loader using [[LoaderOptions]]. No defaults are set\n * using this library, instead the defaults are set by the Google Maps\n * JavaScript API server.\n *\n * ```\n * const loader = Loader({apiKey, version: 'weekly', libraries: ['places']});\n * ```\n */\n constructor({ apiKey, authReferrerPolicy, channel, client, id = DEFAULT_ID, language, libraries = [], mapIds, nonce, region, retries = 3, url = \"https://maps.googleapis.com/maps/api/js\", version, }) {\n this.callbacks = [];\n this.done = false;\n this.loading = false;\n this.errors = [];\n this.apiKey = apiKey;\n this.authReferrerPolicy = authReferrerPolicy;\n this.channel = channel;\n this.client = client;\n this.id = id || DEFAULT_ID; // Do not allow empty string\n this.language = language;\n this.libraries = libraries;\n this.mapIds = mapIds;\n this.nonce = nonce;\n this.region = region;\n this.retries = retries;\n this.url = url;\n this.version = version;\n if (Loader.instance) {\n if (!fastDeepEqual$1(this.options, Loader.instance.options)) {\n throw new Error(`Loader must not be called again with different options. ${JSON.stringify(this.options)} !== ${JSON.stringify(Loader.instance.options)}`);\n }\n return Loader.instance;\n }\n Loader.instance = this;\n }\n get options() {\n return {\n version: this.version,\n apiKey: this.apiKey,\n channel: this.channel,\n client: this.client,\n id: this.id,\n libraries: this.libraries,\n language: this.language,\n region: this.region,\n mapIds: this.mapIds,\n nonce: this.nonce,\n url: this.url,\n authReferrerPolicy: this.authReferrerPolicy,\n };\n }\n get status() {\n if (this.errors.length) {\n return LoaderStatus.FAILURE;\n }\n if (this.done) {\n return LoaderStatus.SUCCESS;\n }\n if (this.loading) {\n return LoaderStatus.LOADING;\n }\n return LoaderStatus.INITIALIZED;\n }\n get failed() {\n return this.done && !this.loading && this.errors.length >= this.retries + 1;\n }\n /**\n * CreateUrl returns the Google Maps JavaScript API script url given the [[LoaderOptions]].\n *\n * @ignore\n * @deprecated\n */\n createUrl() {\n let url = this.url;\n url += `?callback=__googleMapsCallback`;\n if (this.apiKey) {\n url += `&key=${this.apiKey}`;\n }\n if (this.channel) {\n url += `&channel=${this.channel}`;\n }\n if (this.client) {\n url += `&client=${this.client}`;\n }\n if (this.libraries.length > 0) {\n url += `&libraries=${this.libraries.join(\",\")}`;\n }\n if (this.language) {\n url += `&language=${this.language}`;\n }\n if (this.region) {\n url += `&region=${this.region}`;\n }\n if (this.version) {\n url += `&v=${this.version}`;\n }\n if (this.mapIds) {\n url += `&map_ids=${this.mapIds.join(\",\")}`;\n }\n if (this.authReferrerPolicy) {\n url += `&auth_referrer_policy=${this.authReferrerPolicy}`;\n }\n return url;\n }\n deleteScript() {\n const script = document.getElementById(this.id);\n if (script) {\n script.remove();\n }\n }\n /**\n * Load the Google Maps JavaScript API script and return a Promise.\n * @deprecated, use importLibrary() instead.\n */\n load() {\n return this.loadPromise();\n }\n /**\n * Load the Google Maps JavaScript API script and return a Promise.\n *\n * @ignore\n * @deprecated, use importLibrary() instead.\n */\n loadPromise() {\n return new Promise((resolve, reject) => {\n this.loadCallback((err) => {\n if (!err) {\n resolve(window.google);\n }\n else {\n reject(err.error);\n }\n });\n });\n }\n importLibrary(name) {\n this.execute();\n return google.maps.importLibrary(name);\n }\n /**\n * Load the Google Maps JavaScript API script with a callback.\n * @deprecated, use importLibrary() instead.\n */\n loadCallback(fn) {\n this.callbacks.push(fn);\n this.execute();\n }\n /**\n * Set the script on document.\n */\n setScript() {\n var _a, _b;\n if (document.getElementById(this.id)) {\n // TODO wrap onerror callback for cases where the script was loaded elsewhere\n this.callback();\n return;\n }\n const params = {\n key: this.apiKey,\n channel: this.channel,\n client: this.client,\n libraries: this.libraries.length && this.libraries,\n v: this.version,\n mapIds: this.mapIds,\n language: this.language,\n region: this.region,\n authReferrerPolicy: this.authReferrerPolicy,\n };\n // keep the URL minimal:\n Object.keys(params).forEach(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (key) => !params[key] && delete params[key]);\n if (!((_b = (_a = window === null || window === void 0 ? void 0 : window.google) === null || _a === void 0 ? void 0 : _a.maps) === null || _b === void 0 ? void 0 : _b.importLibrary)) {\n // tweaked copy of https://developers.google.com/maps/documentation/javascript/load-maps-js-api#dynamic-library-import\n // which also sets the base url, the id, and the nonce\n /* eslint-disable */\n ((g) => {\n // @ts-ignore\n let h, a, k, p = \"The Google Maps JavaScript API\", c = \"google\", l = \"importLibrary\", q = \"__ib__\", m = document, b = window;\n // @ts-ignore\n b = b[c] || (b[c] = {});\n // @ts-ignore\n const d = b.maps || (b.maps = {}), r = new Set(), e = new URLSearchParams(), u = () => \n // @ts-ignore\n h || (h = new Promise((f, n) => __awaiter(this, void 0, void 0, function* () {\n var _a;\n yield (a = m.createElement(\"script\"));\n a.id = this.id;\n e.set(\"libraries\", [...r] + \"\");\n // @ts-ignore\n for (k in g)\n e.set(k.replace(/[A-Z]/g, (t) => \"_\" + t[0].toLowerCase()), g[k]);\n e.set(\"callback\", c + \".maps.\" + q);\n a.src = this.url + `?` + e;\n d[q] = f;\n a.onerror = () => (h = n(Error(p + \" could not load.\")));\n // @ts-ignore\n a.nonce = this.nonce || ((_a = m.querySelector(\"script[nonce]\")) === null || _a === void 0 ? void 0 : _a.nonce) || \"\";\n m.head.append(a);\n })));\n // @ts-ignore\n d[l] ? console.warn(p + \" only loads once. Ignoring:\", g) : (d[l] = (f, ...n) => r.add(f) && u().then(() => d[l](f, ...n)));\n })(params);\n /* eslint-enable */\n }\n // While most libraries populate the global namespace when loaded via bootstrap params,\n // this is not the case for \"marker\" when used with the inline bootstrap loader\n // (and maybe others in the future). So ensure there is an importLibrary for each:\n const libraryPromises = this.libraries.map((library) => this.importLibrary(library));\n // ensure at least one library, to kick off loading...\n if (!libraryPromises.length) {\n libraryPromises.push(this.importLibrary(\"core\"));\n }\n Promise.all(libraryPromises).then(() => this.callback(), (error) => {\n const event = new ErrorEvent(\"error\", { error }); // for backwards compat\n this.loadErrorCallback(event);\n });\n }\n /**\n * Reset the loader state.\n */\n reset() {\n this.deleteScript();\n this.done = false;\n this.loading = false;\n this.errors = [];\n this.onerrorEvent = null;\n }\n resetIfRetryingFailed() {\n if (this.failed) {\n this.reset();\n }\n }\n loadErrorCallback(e) {\n this.errors.push(e);\n if (this.errors.length <= this.retries) {\n const delay = this.errors.length * Math.pow(2, this.errors.length);\n console.error(`Failed to load Google Maps script, retrying in ${delay} ms.`);\n setTimeout(() => {\n this.deleteScript();\n this.setScript();\n }, delay);\n }\n else {\n this.onerrorEvent = e;\n this.callback();\n }\n }\n callback() {\n this.done = true;\n this.loading = false;\n this.callbacks.forEach((cb) => {\n cb(this.onerrorEvent);\n });\n this.callbacks = [];\n }\n execute() {\n this.resetIfRetryingFailed();\n if (this.done) {\n this.callback();\n }\n else {\n // short circuit and warn if google.maps is already loaded\n if (window.google && window.google.maps && window.google.maps.version) {\n console.warn(\"Google Maps already loaded outside @googlemaps/js-api-loader.\" +\n \"This may result in undesirable behavior as options and script parameters may not match.\");\n this.callback();\n return;\n }\n if (this.loading) ;\n else {\n this.loading = true;\n this.setScript();\n }\n }\n }\n}\n\nvar defaultLibraries = ['maps'];\nfunction useJsApiLoader(_a) {\n var _b = _a.id, id = _b === void 0 ? defaultLoadScriptProps.id : _b, _c = _a.version, version = _c === void 0 ? defaultLoadScriptProps.version : _c, nonce = _a.nonce, googleMapsApiKey = _a.googleMapsApiKey, \n // googleMapsClientId,\n language = _a.language, region = _a.region, _d = _a.libraries, libraries = _d === void 0 ? defaultLibraries : _d, preventGoogleFontsLoading = _a.preventGoogleFontsLoading, \n // channel,\n mapIds = _a.mapIds, authReferrerPolicy = _a.authReferrerPolicy;\n var isMounted = useRef(false);\n var _e = useState(false), isLoaded = _e[0], setLoaded = _e[1];\n var _f = useState(undefined), loadError = _f[0], setLoadError = _f[1];\n useEffect(function trackMountedState() {\n isMounted.current = true;\n return function () {\n isMounted.current = false;\n };\n }, []);\n var loader = useMemo(function () {\n return new Loader({\n id: id,\n apiKey: googleMapsApiKey,\n version: version,\n libraries: libraries,\n language: language || 'en',\n region: region || 'US',\n mapIds: mapIds || [],\n nonce: nonce || '',\n authReferrerPolicy: authReferrerPolicy || 'origin',\n });\n }, [id, googleMapsApiKey, version, libraries, language, region, mapIds, nonce, authReferrerPolicy]);\n useEffect(function effect() {\n if (isLoaded) {\n return;\n }\n else {\n loader.load().then(function () {\n if (isMounted.current) {\n setLoaded(true);\n }\n return;\n })\n .catch(function (error) {\n setLoadError(error);\n });\n }\n }, []);\n useEffect(function () {\n if (isBrowser && preventGoogleFontsLoading) {\n preventGoogleFonts();\n }\n }, [preventGoogleFontsLoading]);\n var prevLibraries = useRef();\n useEffect(function () {\n if (prevLibraries.current && libraries !== prevLibraries.current) {\n console.warn('Performance warning! LoadScript has been reloaded unintentionally! You should not pass `libraries` prop as new array. Please keep an array of libraries as static class property for Components and PureComponents, or just a const variable outside of component, or somewhere in config files or ENV variables');\n }\n prevLibraries.current = libraries;\n }, [libraries]);\n return { isLoaded: isLoaded, loadError: loadError };\n}\n\nvar eventMap$h = {};\nvar updaterMap$h = {\n options: function (instance, options) {\n instance.setOptions(options);\n },\n};\nfunction TrafficLayerFunctional(_a) {\n var options = _a.options, onLoad = _a.onLoad, onUnmount = _a.onUnmount;\n var map = useContext(MapContext);\n var _b = useState(null), instance = _b[0], setInstance = _b[1];\n // Order does matter\n useEffect(function () {\n if (instance !== null) {\n instance.setMap(map);\n }\n }, [map]);\n useEffect(function () {\n if (options && instance !== null) {\n instance.setOptions(options);\n }\n }, [instance, options]);\n useEffect(function () {\n var trafficLayer = new google.maps.TrafficLayer(__assign(__assign({}, (options || {})), { map: map }));\n setInstance(trafficLayer);\n if (onLoad) {\n onLoad(trafficLayer);\n }\n return function () {\n if (instance !== null) {\n if (onUnmount) {\n onUnmount(instance);\n }\n instance.setMap(null);\n }\n };\n }, []);\n return null;\n}\nvar TrafficLayerF = memo(TrafficLayerFunctional);\nvar TrafficLayer = /** @class */ (function (_super) {\n __extends(TrafficLayer, _super);\n function TrafficLayer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.state = {\n trafficLayer: null,\n };\n _this.setTrafficLayerCallback = function () {\n if (_this.state.trafficLayer !== null && _this.props.onLoad) {\n _this.props.onLoad(_this.state.trafficLayer);\n }\n };\n _this.registeredEvents = [];\n return _this;\n }\n TrafficLayer.prototype.componentDidMount = function () {\n var trafficLayer = new google.maps.TrafficLayer(__assign(__assign({}, (this.props.options || {})), { map: this.context }));\n this.registeredEvents = applyUpdatersToPropsAndRegisterEvents({\n updaterMap: updaterMap$h,\n eventMap: eventMap$h,\n prevProps: {},\n nextProps: this.props,\n instance: trafficLayer,\n });\n this.setState(function setTrafficLayer() {\n return {\n trafficLayer: trafficLayer,\n };\n }, this.setTrafficLayerCallback);\n };\n TrafficLayer.prototype.componentDidUpdate = function (prevProps) {\n if (this.state.trafficLayer !== null) {\n unregisterEvents(this.registeredEvents);\n this.registeredEvents = applyUpdatersToPropsAndRegisterEvents({\n updaterMap: updaterMap$h,\n eventMap: eventMap$h,\n prevProps: prevProps,\n nextProps: this.props,\n instance: this.state.trafficLayer,\n });\n }\n };\n TrafficLayer.prototype.componentWillUnmount = function () {\n if (this.state.trafficLayer !== null) {\n if (this.props.onUnmount) {\n this.props.onUnmount(this.state.trafficLayer);\n }\n unregisterEvents(this.registeredEvents);\n this.state.trafficLayer.setMap(null);\n }\n };\n TrafficLayer.prototype.render = function () {\n return null;\n };\n TrafficLayer.contextType = MapContext;\n return TrafficLayer;\n}(PureComponent));\n\nfunction BicyclingLayerFunctional(_a) {\n var onLoad = _a.onLoad, onUnmount = _a.onUnmount;\n var map = useContext(MapContext);\n var _b = useState(null), instance = _b[0], setInstance = _b[1];\n // Order does matter\n useEffect(function () {\n if (instance !== null) {\n instance.setMap(map);\n }\n }, [map]);\n useEffect(function () {\n var bicyclingLayer = new google.maps.BicyclingLayer();\n setInstance(bicyclingLayer);\n bicyclingLayer.setMap(map);\n if (onLoad) {\n onLoad(bicyclingLayer);\n }\n return function () {\n if (bicyclingLayer !== null) {\n if (onUnmount) {\n onUnmount(bicyclingLayer);\n }\n bicyclingLayer.setMap(null);\n }\n };\n }, []);\n return null;\n}\nvar BicyclingLayerF = memo(BicyclingLayerFunctional);\nvar BicyclingLayer = /** @class */ (function (_super) {\n __extends(BicyclingLayer, _super);\n function BicyclingLayer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.state = {\n bicyclingLayer: null,\n };\n _this.setBicyclingLayerCallback = function () {\n if (_this.state.bicyclingLayer !== null) {\n _this.state.bicyclingLayer.setMap(_this.context);\n if (_this.props.onLoad) {\n _this.props.onLoad(_this.state.bicyclingLayer);\n }\n }\n };\n return _this;\n }\n BicyclingLayer.prototype.componentDidMount = function () {\n var bicyclingLayer = new google.maps.BicyclingLayer();\n this.setState(function () {\n return {\n bicyclingLayer: bicyclingLayer,\n };\n }, this.setBicyclingLayerCallback);\n };\n BicyclingLayer.prototype.componentWillUnmount = function () {\n if (this.state.bicyclingLayer !== null) {\n if (this.props.onUnmount) {\n this.props.onUnmount(this.state.bicyclingLayer);\n }\n this.state.bicyclingLayer.setMap(null);\n }\n };\n BicyclingLayer.prototype.render = function () {\n return null;\n };\n BicyclingLayer.contextType = MapContext;\n return BicyclingLayer;\n}(PureComponent));\n\nfunction TransitLayerFunctional(_a) {\n var onLoad = _a.onLoad, onUnmount = _a.onUnmount;\n var map = useContext(MapContext);\n var _b = useState(null), instance = _b[0], setInstance = _b[1];\n // Order does matter\n useEffect(function () {\n if (instance !== null) {\n instance.setMap(map);\n }\n }, [map]);\n useEffect(function () {\n var transitLayer = new google.maps.TransitLayer();\n setInstance(transitLayer);\n transitLayer.setMap(map);\n if (onLoad) {\n onLoad(transitLayer);\n }\n return function () {\n if (instance !== null) {\n if (onUnmount) {\n onUnmount(instance);\n }\n instance.setMap(null);\n }\n };\n }, []);\n return null;\n}\nvar TransitLayerF = memo(TransitLayerFunctional);\nvar TransitLayer = /** @class */ (function (_super) {\n __extends(TransitLayer, _super);\n function TransitLayer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.state = {\n transitLayer: null,\n };\n _this.setTransitLayerCallback = function () {\n if (_this.state.transitLayer !== null) {\n _this.state.transitLayer.setMap(_this.context);\n if (_this.props.onLoad) {\n _this.props.onLoad(_this.state.transitLayer);\n }\n }\n };\n return _this;\n }\n TransitLayer.prototype.componentDidMount = function () {\n var transitLayer = new google.maps.TransitLayer();\n this.setState(function setTransitLayer() {\n return {\n transitLayer: transitLayer,\n };\n }, this.setTransitLayerCallback);\n };\n TransitLayer.prototype.componentWillUnmount = function () {\n if (this.state.transitLayer !== null) {\n if (this.props.onUnmount) {\n this.props.onUnmount(this.state.transitLayer);\n }\n this.state.transitLayer.setMap(null);\n }\n };\n TransitLayer.prototype.render = function () {\n return null;\n };\n TransitLayer.contextType = MapContext;\n return TransitLayer;\n}(PureComponent));\n\nvar eventMap$g = {\n onCircleComplete: 'circlecomplete',\n onMarkerComplete: 'markercomplete',\n onOverlayComplete: 'overlaycomplete',\n onPolygonComplete: 'polygoncomplete',\n onPolylineComplete: 'polylinecomplete',\n onRectangleComplete: 'rectanglecomplete',\n};\nvar updaterMap$g = {\n drawingMode: function (instance, drawingMode) {\n instance.setDrawingMode(drawingMode);\n },\n options: function (instance, options) {\n instance.setOptions(options);\n },\n};\nfunction DrawingManagerFunctional(_a) {\n var options = _a.options, drawingMode = _a.drawingMode, onCircleComplete = _a.onCircleComplete, onMarkerComplete = _a.onMarkerComplete, onOverlayComplete = _a.onOverlayComplete, onPolygonComplete = _a.onPolygonComplete, onPolylineComplete = _a.onPolylineComplete, onRectangleComplete = _a.onRectangleComplete, onLoad = _a.onLoad, onUnmount = _a.onUnmount;\n var map = useContext(MapContext);\n var _b = useState(null), instance = _b[0], setInstance = _b[1];\n var _c = useState(null), circlecompleteListener = _c[0], setCircleCompleteListener = _c[1];\n var _d = useState(null), markercompleteListener = _d[0], setMarkerCompleteListener = _d[1];\n var _e = useState(null), overlaycompleteListener = _e[0], setOverlayCompleteListener = _e[1];\n var _f = useState(null), polygoncompleteListener = _f[0], setPolygonCompleteListener = _f[1];\n var _g = useState(null), polylinecompleteListener = _g[0], setPolylineCompleteListener = _g[1];\n var _h = useState(null), rectanglecompleteListener = _h[0], setRectangleCompleteListener = _h[1];\n // Order does matter\n useEffect(function () {\n if (instance !== null) {\n instance.setMap(map);\n }\n }, [map]);\n useEffect(function () {\n if (options && instance !== null) {\n instance.setOptions(options);\n }\n }, [instance, options]);\n useEffect(function () {\n if (drawingMode && instance !== null) {\n instance.setDrawingMode(drawingMode);\n }\n }, [instance, drawingMode]);\n useEffect(function () {\n if (instance && onCircleComplete) {\n if (circlecompleteListener !== null) {\n google.maps.event.removeListener(circlecompleteListener);\n }\n setCircleCompleteListener(google.maps.event.addListener(instance, 'circlecomplete', onCircleComplete));\n }\n }, [instance, onCircleComplete]);\n useEffect(function () {\n if (instance && onMarkerComplete) {\n if (markercompleteListener !== null) {\n google.maps.event.removeListener(markercompleteListener);\n }\n setMarkerCompleteListener(google.maps.event.addListener(instance, 'markercomplete', onMarkerComplete));\n }\n }, [instance, onMarkerComplete]);\n useEffect(function () {\n if (instance && onOverlayComplete) {\n if (overlaycompleteListener !== null) {\n google.maps.event.removeListener(overlaycompleteListener);\n }\n setOverlayCompleteListener(google.maps.event.addListener(instance, 'overlaycomplete', onOverlayComplete));\n }\n }, [instance, onOverlayComplete]);\n useEffect(function () {\n if (instance && onPolygonComplete) {\n if (polygoncompleteListener !== null) {\n google.maps.event.removeListener(polygoncompleteListener);\n }\n setPolygonCompleteListener(google.maps.event.addListener(instance, 'polygoncomplete', onPolygonComplete));\n }\n }, [instance, onPolygonComplete]);\n useEffect(function () {\n if (instance && onPolylineComplete) {\n if (polylinecompleteListener !== null) {\n google.maps.event.removeListener(polylinecompleteListener);\n }\n setPolylineCompleteListener(google.maps.event.addListener(instance, 'polylinecomplete', onPolylineComplete));\n }\n }, [instance, onPolylineComplete]);\n useEffect(function () {\n if (instance && onRectangleComplete) {\n if (rectanglecompleteListener !== null) {\n google.maps.event.removeListener(rectanglecompleteListener);\n }\n setRectangleCompleteListener(google.maps.event.addListener(instance, 'rectanglecomplete', onRectangleComplete));\n }\n }, [instance, onRectangleComplete]);\n useEffect(function () {\n invariant$1(!!google.maps.drawing, \"Did you include prop libraries={['drawing']} in the URL? %s\", google.maps.drawing);\n var drawingManager = new google.maps.drawing.DrawingManager(__assign(__assign({}, (options || {})), { map: map }));\n if (drawingMode) {\n drawingManager.setDrawingMode(drawingMode);\n }\n if (onCircleComplete) {\n setCircleCompleteListener(google.maps.event.addListener(drawingManager, 'circlecomplete', onCircleComplete));\n }\n if (onMarkerComplete) {\n setMarkerCompleteListener(google.maps.event.addListener(drawingManager, 'markercomplete', onMarkerComplete));\n }\n if (onOverlayComplete) {\n setOverlayCompleteListener(google.maps.event.addListener(drawingManager, 'overlaycomplete', onOverlayComplete));\n }\n if (onPolygonComplete) {\n setPolygonCompleteListener(google.maps.event.addListener(drawingManager, 'polygoncomplete', onPolygonComplete));\n }\n if (onPolylineComplete) {\n setPolylineCompleteListener(google.maps.event.addListener(drawingManager, 'polylinecomplete', onPolylineComplete));\n }\n if (onRectangleComplete) {\n setRectangleCompleteListener(google.maps.event.addListener(drawingManager, 'rectanglecomplete', onRectangleComplete));\n }\n setInstance(drawingManager);\n if (onLoad) {\n onLoad(drawingManager);\n }\n return function () {\n if (instance !== null) {\n if (circlecompleteListener) {\n google.maps.event.removeListener(circlecompleteListener);\n }\n if (markercompleteListener) {\n google.maps.event.removeListener(markercompleteListener);\n }\n if (overlaycompleteListener) {\n google.maps.event.removeListener(overlaycompleteListener);\n }\n if (polygoncompleteListener) {\n google.maps.event.removeListener(polygoncompleteListener);\n }\n if (polylinecompleteListener) {\n google.maps.event.removeListener(polylinecompleteListener);\n }\n if (rectanglecompleteListener) {\n google.maps.event.removeListener(rectanglecompleteListener);\n }\n if (onUnmount) {\n onUnmount(instance);\n }\n instance.setMap(null);\n }\n };\n }, []);\n return null;\n}\nvar DrawingManagerF = memo(DrawingManagerFunctional);\nvar DrawingManager = /** @class */ (function (_super) {\n __extends(DrawingManager, _super);\n function DrawingManager(props) {\n var _this = _super.call(this, props) || this;\n _this.registeredEvents = [];\n _this.state = {\n drawingManager: null,\n };\n _this.setDrawingManagerCallback = function () {\n if (_this.state.drawingManager !== null && _this.props.onLoad) {\n _this.props.onLoad(_this.state.drawingManager);\n }\n };\n invariant$1(!!google.maps.drawing, \"Did you include prop libraries={['drawing']} in the URL? %s\", google.maps.drawing);\n return _this;\n }\n DrawingManager.prototype.componentDidMount = function () {\n var drawingManager = new google.maps.drawing.DrawingManager(__assign(__assign({}, (this.props.options || {})), { map: this.context }));\n this.registeredEvents = applyUpdatersToPropsAndRegisterEvents({\n updaterMap: updaterMap$g,\n eventMap: eventMap$g,\n prevProps: {},\n nextProps: this.props,\n instance: drawingManager,\n });\n this.setState(function setDrawingManager() {\n return {\n drawingManager: drawingManager,\n };\n }, this.setDrawingManagerCallback);\n };\n DrawingManager.prototype.componentDidUpdate = function (prevProps) {\n if (this.state.drawingManager !== null) {\n unregisterEvents(this.registeredEvents);\n this.registeredEvents = applyUpdatersToPropsAndRegisterEvents({\n updaterMap: updaterMap$g,\n eventMap: eventMap$g,\n prevProps: prevProps,\n nextProps: this.props,\n instance: this.state.drawingManager,\n });\n }\n };\n DrawingManager.prototype.componentWillUnmount = function () {\n if (this.state.drawingManager !== null) {\n if (this.props.onUnmount) {\n this.props.onUnmount(this.state.drawingManager);\n }\n unregisterEvents(this.registeredEvents);\n this.state.drawingManager.setMap(null);\n }\n };\n DrawingManager.prototype.render = function () {\n return null;\n };\n DrawingManager.contextType = MapContext;\n return DrawingManager;\n}(PureComponent));\n\nvar eventMap$f = {\n onAnimationChanged: 'animation_changed',\n onClick: 'click',\n onClickableChanged: 'clickable_changed',\n onCursorChanged: 'cursor_changed',\n onDblClick: 'dblclick',\n onDrag: 'drag',\n onDragEnd: 'dragend',\n onDraggableChanged: 'draggable_changed',\n onDragStart: 'dragstart',\n onFlatChanged: 'flat_changed',\n onIconChanged: 'icon_changed',\n onMouseDown: 'mousedown',\n onMouseOut: 'mouseout',\n onMouseOver: 'mouseover',\n onMouseUp: 'mouseup',\n onPositionChanged: 'position_changed',\n onRightClick: 'rightclick',\n onShapeChanged: 'shape_changed',\n onTitleChanged: 'title_changed',\n onVisibleChanged: 'visible_changed',\n onZindexChanged: 'zindex_changed',\n};\nvar updaterMap$f = {\n animation: function (instance, animation) {\n instance.setAnimation(animation);\n },\n clickable: function (instance, clickable) {\n instance.setClickable(clickable);\n },\n cursor: function (instance, cursor) {\n instance.setCursor(cursor);\n },\n draggable: function (instance, draggable) {\n instance.setDraggable(draggable);\n },\n icon: function (instance, icon) {\n instance.setIcon(icon);\n },\n label: function (instance, label) {\n instance.setLabel(label);\n },\n map: function (instance, map) {\n instance.setMap(map);\n },\n opacity: function (instance, opacity) {\n instance.setOpacity(opacity);\n },\n options: function (instance, options) {\n instance.setOptions(options);\n },\n position: function (instance, position) {\n instance.setPosition(position);\n },\n shape: function (instance, shape) {\n instance.setShape(shape);\n },\n title: function (instance, title) {\n instance.setTitle(title);\n },\n visible: function (instance, visible) {\n instance.setVisible(visible);\n },\n zIndex: function (instance, zIndex) {\n instance.setZIndex(zIndex);\n },\n};\nvar defaultOptions$5 = {};\nfunction MarkerFunctional(_a) {\n var position = _a.position, options = _a.options, clusterer = _a.clusterer, noClustererRedraw = _a.noClustererRedraw, children = _a.children, draggable = _a.draggable, visible = _a.visible, animation = _a.animation, clickable = _a.clickable, cursor = _a.cursor, icon = _a.icon, label = _a.label, opacity = _a.opacity, shape = _a.shape, title = _a.title, zIndex = _a.zIndex, onClick = _a.onClick, onDblClick = _a.onDblClick, onDrag = _a.onDrag, onDragEnd = _a.onDragEnd, onDragStart = _a.onDragStart, onMouseOut = _a.onMouseOut, onMouseOver = _a.onMouseOver, onMouseUp = _a.onMouseUp, onMouseDown = _a.onMouseDown, onRightClick = _a.onRightClick, onClickableChanged = _a.onClickableChanged, onCursorChanged = _a.onCursorChanged, onAnimationChanged = _a.onAnimationChanged, onDraggableChanged = _a.onDraggableChanged, onFlatChanged = _a.onFlatChanged, onIconChanged = _a.onIconChanged, onPositionChanged = _a.onPositionChanged, onShapeChanged = _a.onShapeChanged, onTitleChanged = _a.onTitleChanged, onVisibleChanged = _a.onVisibleChanged, onZindexChanged = _a.onZindexChanged, onLoad = _a.onLoad, onUnmount = _a.onUnmount;\n var map = useContext(MapContext);\n var _b = useState(null), instance = _b[0], setInstance = _b[1];\n var _c = useState(null), dblclickListener = _c[0], setDblclickListener = _c[1];\n var _d = useState(null), dragendListener = _d[0], setDragendListener = _d[1];\n var _e = useState(null), dragstartListener = _e[0], setDragstartListener = _e[1];\n var _f = useState(null), mousedownListener = _f[0], setMousedownListener = _f[1];\n var _g = useState(null), mouseoutListener = _g[0], setMouseoutListener = _g[1];\n var _h = useState(null), mouseoverListener = _h[0], setMouseoverListener = _h[1];\n var _j = useState(null), mouseupListener = _j[0], setMouseupListener = _j[1];\n var _k = useState(null), rightclickListener = _k[0], setRightclickListener = _k[1];\n var _l = useState(null), clickListener = _l[0], setClickListener = _l[1];\n var _m = useState(null), dragListener = _m[0], setDragListener = _m[1];\n var _o = useState(null), clickableChangedListener = _o[0], setClickableChangedListener = _o[1];\n var _p = useState(null), cursorChangedListener = _p[0], setCursorChangedListener = _p[1];\n var _q = useState(null), animationChangedListener = _q[0], setAnimationChangedListener = _q[1];\n var _r = useState(null), draggableChangedListener = _r[0], setDraggableChangedListener = _r[1];\n var _s = useState(null), flatChangedListener = _s[0], setFlatChangedListener = _s[1];\n var _t = useState(null), iconChangedListener = _t[0], setIconChangedListener = _t[1];\n var _u = useState(null), positionChangedListener = _u[0], setPositionChangedListener = _u[1];\n var _v = useState(null), shapeChangedListener = _v[0], setShapeChangedListener = _v[1];\n var _w = useState(null), titleChangedListener = _w[0], setTitleChangedListener = _w[1];\n var _x = useState(null), visibleChangedListener = _x[0], setVisibleChangedListener = _x[1];\n var _y = useState(null), zIndexChangedListener = _y[0], setZindexChangedListener = _y[1];\n // Order does matter\n useEffect(function () {\n if (instance !== null) {\n instance.setMap(map);\n }\n }, [map]);\n useEffect(function () {\n if (typeof options !== 'undefined' && instance !== null) {\n instance.setOptions(options);\n }\n }, [instance, options]);\n useEffect(function () {\n if (typeof draggable !== 'undefined' && instance !== null) {\n instance.setDraggable(draggable);\n }\n }, [instance, draggable]);\n useEffect(function () {\n if (position && instance !== null) {\n instance.setPosition(position);\n }\n }, [instance, position]);\n useEffect(function () {\n if (typeof visible !== 'undefined' && instance !== null) {\n instance.setVisible(visible);\n }\n }, [instance, visible]);\n useEffect(function () {\n instance === null || instance === void 0 ? void 0 : instance.setAnimation(animation);\n }, [instance, animation]);\n useEffect(function () {\n if (instance && onDblClick) {\n if (dblclickListener !== null) {\n google.maps.event.removeListener(dblclickListener);\n }\n setDblclickListener(google.maps.event.addListener(instance, 'dblclick', onDblClick));\n }\n }, [onDblClick]);\n useEffect(function () {\n if (instance && onDragEnd) {\n if (dragendListener !== null) {\n google.maps.event.removeListener(dragendListener);\n }\n setDragendListener(google.maps.event.addListener(instance, 'dragend', onDragEnd));\n }\n }, [onDragEnd]);\n useEffect(function () {\n if (instance && onDragStart) {\n if (dragstartListener !== null) {\n google.maps.event.removeListener(dragstartListener);\n }\n setDragstartListener(google.maps.event.addListener(instance, 'dragstart', onDragStart));\n }\n }, [onDragStart]);\n useEffect(function () {\n if (instance && onMouseDown) {\n if (mousedownListener !== null) {\n google.maps.event.removeListener(mousedownListener);\n }\n setMousedownListener(google.maps.event.addListener(instance, 'mousedown', onMouseDown));\n }\n }, [onMouseDown]);\n useEffect(function () {\n if (instance && onMouseOut) {\n if (mouseoutListener !== null) {\n google.maps.event.removeListener(mouseoutListener);\n }\n setMouseoutListener(google.maps.event.addListener(instance, 'mouseout', onMouseOut));\n }\n }, [onMouseOut]);\n useEffect(function () {\n if (instance && onMouseOver) {\n if (mouseoverListener !== null) {\n google.maps.event.removeListener(mouseoverListener);\n }\n setMouseoverListener(google.maps.event.addListener(instance, 'mouseover', onMouseOver));\n }\n }, [onMouseOver]);\n useEffect(function () {\n if (instance && onMouseUp) {\n if (mouseupListener !== null) {\n google.maps.event.removeListener(mouseupListener);\n }\n setMouseupListener(google.maps.event.addListener(instance, 'mouseup', onMouseUp));\n }\n }, [onMouseUp]);\n useEffect(function () {\n if (instance && onRightClick) {\n if (rightclickListener !== null) {\n google.maps.event.removeListener(rightclickListener);\n }\n setRightclickListener(google.maps.event.addListener(instance, 'rightclick', onRightClick));\n }\n }, [onRightClick]);\n useEffect(function () {\n if (instance && onClick) {\n if (clickListener !== null) {\n google.maps.event.removeListener(clickListener);\n }\n setClickListener(google.maps.event.addListener(instance, 'click', onClick));\n }\n }, [onClick]);\n useEffect(function () {\n if (instance && onDrag) {\n if (dragListener !== null) {\n google.maps.event.removeListener(dragListener);\n }\n setDragListener(google.maps.event.addListener(instance, 'drag', onDrag));\n }\n }, [onDrag]);\n useEffect(function () {\n if (instance && onClickableChanged) {\n if (clickableChangedListener !== null) {\n google.maps.event.removeListener(clickableChangedListener);\n }\n setClickableChangedListener(google.maps.event.addListener(instance, 'clickable_changed', onClickableChanged));\n }\n }, [onClickableChanged]);\n useEffect(function () {\n if (instance && onCursorChanged) {\n if (cursorChangedListener !== null) {\n google.maps.event.removeListener(cursorChangedListener);\n }\n setCursorChangedListener(google.maps.event.addListener(instance, 'cursor_changed', onCursorChanged));\n }\n }, [onCursorChanged]);\n useEffect(function () {\n if (instance && onAnimationChanged) {\n if (animationChangedListener !== null) {\n google.maps.event.removeListener(animationChangedListener);\n }\n setAnimationChangedListener(google.maps.event.addListener(instance, 'animation_changed', onAnimationChanged));\n }\n }, [onAnimationChanged]);\n useEffect(function () {\n if (instance && onDraggableChanged) {\n if (draggableChangedListener !== null) {\n google.maps.event.removeListener(draggableChangedListener);\n }\n setDraggableChangedListener(google.maps.event.addListener(instance, 'draggable_changed', onDraggableChanged));\n }\n }, [onDraggableChanged]);\n useEffect(function () {\n if (instance && onFlatChanged) {\n if (flatChangedListener !== null) {\n google.maps.event.removeListener(flatChangedListener);\n }\n setFlatChangedListener(google.maps.event.addListener(instance, 'flat_changed', onFlatChanged));\n }\n }, [onFlatChanged]);\n useEffect(function () {\n if (instance && onIconChanged) {\n if (iconChangedListener !== null) {\n google.maps.event.removeListener(iconChangedListener);\n }\n setIconChangedListener(google.maps.event.addListener(instance, 'icon_changed', onIconChanged));\n }\n }, [onIconChanged]);\n useEffect(function () {\n if (instance && onPositionChanged) {\n if (positionChangedListener !== null) {\n google.maps.event.removeListener(positionChangedListener);\n }\n setPositionChangedListener(google.maps.event.addListener(instance, 'position_changed', onPositionChanged));\n }\n }, [onPositionChanged]);\n useEffect(function () {\n if (instance && onShapeChanged) {\n if (shapeChangedListener !== null) {\n google.maps.event.removeListener(shapeChangedListener);\n }\n setShapeChangedListener(google.maps.event.addListener(instance, 'shape_changed', onShapeChanged));\n }\n }, [onShapeChanged]);\n useEffect(function () {\n if (instance && onTitleChanged) {\n if (titleChangedListener !== null) {\n google.maps.event.removeListener(titleChangedListener);\n }\n setTitleChangedListener(google.maps.event.addListener(instance, 'title_changed', onTitleChanged));\n }\n }, [onTitleChanged]);\n useEffect(function () {\n if (instance && onVisibleChanged) {\n if (visibleChangedListener !== null) {\n google.maps.event.removeListener(visibleChangedListener);\n }\n setVisibleChangedListener(google.maps.event.addListener(instance, 'visible_changed', onVisibleChanged));\n }\n }, [onVisibleChanged]);\n useEffect(function () {\n if (instance && onZindexChanged) {\n if (zIndexChangedListener !== null) {\n google.maps.event.removeListener(zIndexChangedListener);\n }\n setZindexChangedListener(google.maps.event.addListener(instance, 'zindex_changed', onZindexChanged));\n }\n }, [onZindexChanged]);\n useEffect(function () {\n var markerOptions = __assign(__assign(__assign({}, (options || defaultOptions$5)), (clusterer ? defaultOptions$5 : { map: map })), { position: position });\n var marker = new google.maps.Marker(markerOptions);\n if (clusterer) {\n clusterer.addMarker(marker, !!noClustererRedraw);\n }\n else {\n marker.setMap(map);\n }\n if (position) {\n marker.setPosition(position);\n }\n if (typeof visible !== 'undefined') {\n marker.setVisible(visible);\n }\n if (typeof draggable !== 'undefined') {\n marker.setDraggable(draggable);\n }\n if (typeof clickable !== 'undefined') {\n marker.setClickable(clickable);\n }\n if (typeof cursor === 'string') {\n marker.setCursor(cursor);\n }\n if (icon) {\n marker.setIcon(icon);\n }\n if (typeof label !== 'undefined') {\n marker.setLabel(label);\n }\n if (typeof opacity !== 'undefined') {\n marker.setOpacity(opacity);\n }\n if (shape) {\n marker.setShape(shape);\n }\n if (typeof title === 'string') {\n marker.setTitle(title);\n }\n if (typeof zIndex === 'number') {\n marker.setZIndex(zIndex);\n }\n if (onDblClick) {\n setDblclickListener(google.maps.event.addListener(marker, 'dblclick', onDblClick));\n }\n if (onDragEnd) {\n setDragendListener(google.maps.event.addListener(marker, 'dragend', onDragEnd));\n }\n if (onDragStart) {\n setDragstartListener(google.maps.event.addListener(marker, 'dragstart', onDragStart));\n }\n if (onMouseDown) {\n setMousedownListener(google.maps.event.addListener(marker, 'mousedown', onMouseDown));\n }\n if (onMouseOut) {\n setMouseoutListener(google.maps.event.addListener(marker, 'mouseout', onMouseOut));\n }\n if (onMouseOver) {\n setMouseoverListener(google.maps.event.addListener(marker, 'mouseover', onMouseOver));\n }\n if (onMouseUp) {\n setMouseupListener(google.maps.event.addListener(marker, 'mouseup', onMouseUp));\n }\n if (onRightClick) {\n setRightclickListener(google.maps.event.addListener(marker, 'rightclick', onRightClick));\n }\n if (onClick) {\n setClickListener(google.maps.event.addListener(marker, 'click', onClick));\n }\n if (onDrag) {\n setDragListener(google.maps.event.addListener(marker, 'drag', onDrag));\n }\n if (onClickableChanged) {\n setClickableChangedListener(google.maps.event.addListener(marker, 'clickable_changed', onClickableChanged));\n }\n if (onCursorChanged) {\n setCursorChangedListener(google.maps.event.addListener(marker, 'cursor_changed', onCursorChanged));\n }\n if (onAnimationChanged) {\n setAnimationChangedListener(google.maps.event.addListener(marker, 'animation_changed', onAnimationChanged));\n }\n if (onDraggableChanged) {\n setDraggableChangedListener(google.maps.event.addListener(marker, 'draggable_changed', onDraggableChanged));\n }\n if (onFlatChanged) {\n setFlatChangedListener(google.maps.event.addListener(marker, 'flat_changed', onFlatChanged));\n }\n if (onIconChanged) {\n setIconChangedListener(google.maps.event.addListener(marker, 'icon_changed', onIconChanged));\n }\n if (onPositionChanged) {\n setPositionChangedListener(google.maps.event.addListener(marker, 'position_changed', onPositionChanged));\n }\n if (onShapeChanged) {\n setShapeChangedListener(google.maps.event.addListener(marker, 'shape_changed', onShapeChanged));\n }\n if (onTitleChanged) {\n setTitleChangedListener(google.maps.event.addListener(marker, 'title_changed', onTitleChanged));\n }\n if (onVisibleChanged) {\n setVisibleChangedListener(google.maps.event.addListener(marker, 'visible_changed', onVisibleChanged));\n }\n if (onZindexChanged) {\n setZindexChangedListener(google.maps.event.addListener(marker, 'zindex_changed', onZindexChanged));\n }\n setInstance(marker);\n if (onLoad) {\n onLoad(marker);\n }\n return function () {\n if (dblclickListener !== null) {\n google.maps.event.removeListener(dblclickListener);\n }\n if (dragendListener !== null) {\n google.maps.event.removeListener(dragendListener);\n }\n if (dragstartListener !== null) {\n google.maps.event.removeListener(dragstartListener);\n }\n if (mousedownListener !== null) {\n google.maps.event.removeListener(mousedownListener);\n }\n if (mouseoutListener !== null) {\n google.maps.event.removeListener(mouseoutListener);\n }\n if (mouseoverListener !== null) {\n google.maps.event.removeListener(mouseoverListener);\n }\n if (mouseupListener !== null) {\n google.maps.event.removeListener(mouseupListener);\n }\n if (rightclickListener !== null) {\n google.maps.event.removeListener(rightclickListener);\n }\n if (clickListener !== null) {\n google.maps.event.removeListener(clickListener);\n }\n if (clickableChangedListener !== null) {\n google.maps.event.removeListener(clickableChangedListener);\n }\n if (cursorChangedListener !== null) {\n google.maps.event.removeListener(cursorChangedListener);\n }\n if (animationChangedListener !== null) {\n google.maps.event.removeListener(animationChangedListener);\n }\n if (draggableChangedListener !== null) {\n google.maps.event.removeListener(draggableChangedListener);\n }\n if (flatChangedListener !== null) {\n google.maps.event.removeListener(flatChangedListener);\n }\n if (iconChangedListener !== null) {\n google.maps.event.removeListener(iconChangedListener);\n }\n if (positionChangedListener !== null) {\n google.maps.event.removeListener(positionChangedListener);\n }\n if (titleChangedListener !== null) {\n google.maps.event.removeListener(titleChangedListener);\n }\n if (visibleChangedListener !== null) {\n google.maps.event.removeListener(visibleChangedListener);\n }\n if (zIndexChangedListener !== null) {\n google.maps.event.removeListener(zIndexChangedListener);\n }\n if (onUnmount) {\n onUnmount(marker);\n }\n if (clusterer) {\n clusterer.removeMarker(marker, !!noClustererRedraw);\n }\n else if (marker) {\n marker.setMap(null);\n }\n };\n }, []);\n var chx = useMemo(function () {\n return children\n ? Children.map(children, function (child) {\n if (!isValidElement(child)) {\n return child;\n }\n var elementChild = child;\n return cloneElement(elementChild, { anchor: instance });\n })\n : null;\n }, [children, instance]);\n return jsx(Fragment, { children: chx }) || null;\n}\nvar MarkerF = memo(MarkerFunctional);\nvar Marker = /** @class */ (function (_super) {\n __extends(Marker, _super);\n function Marker() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.registeredEvents = [];\n return _this;\n }\n Marker.prototype.componentDidMount = function () {\n var markerOptions = __assign(__assign(__assign({}, (this.props.options || defaultOptions$5)), (this.props.clusterer ? defaultOptions$5 : { map: this.context })), { position: this.props.position });\n // Unfortunately we can't just do this in the contstructor, because the\n // `MapContext` might not be filled in yet.\n this.marker = new google.maps.Marker(markerOptions);\n if (this.props.clusterer) {\n this.props.clusterer.addMarker(this.marker, !!this.props.noClustererRedraw);\n }\n else {\n this.marker.setMap(this.context);\n }\n this.registeredEvents = applyUpdatersToPropsAndRegisterEvents({\n updaterMap: updaterMap$f,\n eventMap: eventMap$f,\n prevProps: {},\n nextProps: this.props,\n instance: this.marker,\n });\n if (this.props.onLoad) {\n this.props.onLoad(this.marker);\n }\n };\n Marker.prototype.componentDidUpdate = function (prevProps) {\n if (this.marker) {\n unregisterEvents(this.registeredEvents);\n this.registeredEvents = applyUpdatersToPropsAndRegisterEvents({\n updaterMap: updaterMap$f,\n eventMap: eventMap$f,\n prevProps: prevProps,\n nextProps: this.props,\n instance: this.marker,\n });\n }\n };\n Marker.prototype.componentWillUnmount = function () {\n if (this.marker) {\n if (this.props.onUnmount) {\n this.props.onUnmount(this.marker);\n }\n unregisterEvents(this.registeredEvents);\n if (this.props.clusterer) {\n this.props.clusterer.removeMarker(this.marker, !!this.props.noClustererRedraw);\n }\n else {\n this.marker && this.marker.setMap(null);\n }\n }\n };\n Marker.prototype.render = function () {\n var _this = this;\n var children = null;\n if (this.props.children) {\n children = Children.map(this.props.children, function (child) {\n if (!isValidElement(child)) {\n return child;\n }\n var elementChild = child;\n return cloneElement(elementChild, { anchor: _this.marker });\n });\n }\n return children || null;\n };\n Marker.contextType = MapContext;\n return Marker;\n}(PureComponent));\n\nvar ClusterIcon = /** @class */ (function () {\n function ClusterIcon(cluster, styles) {\n cluster.getClusterer().extend(ClusterIcon, google.maps.OverlayView);\n this.cluster = cluster;\n this.clusterClassName = this.cluster.getClusterer().getClusterClass();\n this.className = this.clusterClassName;\n this.styles = styles;\n this.center = undefined;\n this.div = null;\n this.sums = null;\n this.visible = false;\n this.boundsChangedListener = null;\n this.url = '';\n this.height = 0;\n this.width = 0;\n this.anchorText = [0, 0];\n this.anchorIcon = [0, 0];\n this.textColor = 'black';\n this.textSize = 11;\n this.textDecoration = 'none';\n this.fontWeight = 'bold';\n this.fontStyle = 'normal';\n this.fontFamily = 'Arial,sans-serif';\n this.backgroundPosition = '0 0';\n this.cMouseDownInCluster = null;\n this.cDraggingMapByCluster = null;\n this.timeOut = null;\n this.setMap(cluster.getMap()); // Note: this causes onAdd to be called\n this.onBoundsChanged = this.onBoundsChanged.bind(this);\n this.onMouseDown = this.onMouseDown.bind(this);\n this.onClick = this.onClick.bind(this);\n this.onMouseOver = this.onMouseOver.bind(this);\n this.onMouseOut = this.onMouseOut.bind(this);\n this.onAdd = this.onAdd.bind(this);\n this.onRemove = this.onRemove.bind(this);\n this.draw = this.draw.bind(this);\n this.hide = this.hide.bind(this);\n this.show = this.show.bind(this);\n this.useStyle = this.useStyle.bind(this);\n this.setCenter = this.setCenter.bind(this);\n this.getPosFromLatLng = this.getPosFromLatLng.bind(this);\n }\n ClusterIcon.prototype.onBoundsChanged = function () {\n this.cDraggingMapByCluster = this.cMouseDownInCluster;\n };\n ClusterIcon.prototype.onMouseDown = function () {\n this.cMouseDownInCluster = true;\n this.cDraggingMapByCluster = false;\n };\n ClusterIcon.prototype.onClick = function (event) {\n this.cMouseDownInCluster = false;\n if (!this.cDraggingMapByCluster) {\n var markerClusterer_1 = this.cluster.getClusterer();\n /**\n * This event is fired when a cluster marker is clicked.\n * @name MarkerClusterer#click\n * @param {Cluster} c The cluster that was clicked.\n * @event\n */\n google.maps.event.trigger(markerClusterer_1, 'click', this.cluster);\n google.maps.event.trigger(markerClusterer_1, 'clusterclick', this.cluster); // deprecated name\n // The default click handler follows. Disable it by setting\n // the zoomOnClick property to false.\n if (markerClusterer_1.getZoomOnClick()) {\n // Zoom into the cluster.\n var maxZoom_1 = markerClusterer_1.getMaxZoom();\n var bounds_1 = this.cluster.getBounds();\n var map = markerClusterer_1.getMap();\n if (map !== null && 'fitBounds' in map) {\n map.fitBounds(bounds_1);\n }\n // There is a fix for Issue 170 here:\n this.timeOut = window.setTimeout(function () {\n var map = markerClusterer_1.getMap();\n if (map !== null) {\n if ('fitBounds' in map) {\n map.fitBounds(bounds_1);\n }\n var zoom = map.getZoom() || 0;\n // Don't zoom beyond the max zoom level\n if (maxZoom_1 !== null &&\n zoom > maxZoom_1) {\n map.setZoom(maxZoom_1 + 1);\n }\n }\n }, 100);\n }\n // Prevent event propagation to the map:\n event.cancelBubble = true;\n if (event.stopPropagation) {\n event.stopPropagation();\n }\n }\n };\n ClusterIcon.prototype.onMouseOver = function () {\n /**\n * This event is fired when the mouse moves over a cluster marker.\n * @name MarkerClusterer#mouseover\n * @param {Cluster} c The cluster that the mouse moved over.\n * @event\n */\n google.maps.event.trigger(this.cluster.getClusterer(), 'mouseover', this.cluster);\n };\n ClusterIcon.prototype.onMouseOut = function () {\n /**\n * This event is fired when the mouse moves out of a cluster marker.\n * @name MarkerClusterer#mouseout\n * @param {Cluster} c The cluster that the mouse moved out of.\n * @event\n */\n google.maps.event.trigger(this.cluster.getClusterer(), 'mouseout', this.cluster);\n };\n ClusterIcon.prototype.onAdd = function () {\n var _a;\n this.div = document.createElement('div');\n this.div.className = this.className;\n if (this.visible) {\n this.show();\n }\n (_a = this.getPanes()) === null || _a === void 0 ? void 0 : _a.overlayMouseTarget.appendChild(this.div);\n var map = this.getMap();\n if (map !== null) {\n // Fix for Issue 157\n this.boundsChangedListener = google.maps.event.addListener(map, 'bounds_changed', this.onBoundsChanged);\n this.div.addEventListener('mousedown', this.onMouseDown);\n this.div.addEventListener('click', this.onClick);\n this.div.addEventListener('mouseover', this.onMouseOver);\n this.div.addEventListener('mouseout', this.onMouseOut);\n }\n };\n ClusterIcon.prototype.onRemove = function () {\n if (this.div && this.div.parentNode) {\n this.hide();\n if (this.boundsChangedListener !== null) {\n google.maps.event.removeListener(this.boundsChangedListener);\n }\n this.div.removeEventListener('mousedown', this.onMouseDown);\n this.div.removeEventListener('click', this.onClick);\n this.div.removeEventListener('mouseover', this.onMouseOver);\n this.div.removeEventListener('mouseout', this.onMouseOut);\n this.div.parentNode.removeChild(this.div);\n if (this.timeOut !== null) {\n window.clearTimeout(this.timeOut);\n this.timeOut = null;\n }\n this.div = null;\n }\n };\n ClusterIcon.prototype.draw = function () {\n if (this.visible && this.div !== null && this.center) {\n var pos = this.getPosFromLatLng(this.center);\n this.div.style.top = pos !== null ? \"\".concat(pos.y, \"px\") : '0';\n this.div.style.left = pos !== null ? \"\".concat(pos.x, \"px\") : '0';\n }\n };\n ClusterIcon.prototype.hide = function () {\n if (this.div) {\n this.div.style.display = 'none';\n }\n this.visible = false;\n };\n ClusterIcon.prototype.show = function () {\n var _a, _b, _c, _d, _e, _f;\n if (this.div && this.center) {\n var divTitle = this.sums === null ||\n typeof this.sums.title === 'undefined' ||\n this.sums.title === '' ? this.cluster.getClusterer().getTitle() : this.sums.title;\n // NOTE: values must be specified in px units\n var bp = this.backgroundPosition.split(' ');\n var spriteH = parseInt(((_a = bp[0]) === null || _a === void 0 ? void 0 : _a.replace(/^\\s+|\\s+$/g, '')) || '0', 10);\n var spriteV = parseInt(((_b = bp[1]) === null || _b === void 0 ? void 0 : _b.replace(/^\\s+|\\s+$/g, '')) || '0', 10);\n var pos = this.getPosFromLatLng(this.center);\n this.div.className = this.className;\n this.div.setAttribute('style', \"cursor: pointer; position: absolute; top: \".concat(pos !== null ? \"\".concat(pos.y, \"px\") : '0', \"; left: \").concat(pos !== null ? \"\".concat(pos.x, \"px\") : '0', \"; width: \").concat(this.width, \"px; height: \").concat(this.height, \"px; \"));\n var img = document.createElement('img');\n img.alt = divTitle;\n img.src = this.url;\n img.width = this.width;\n img.height = this.height;\n img.setAttribute('style', \"position: absolute; top: \".concat(spriteV, \"px; left: \").concat(spriteH, \"px\"));\n if (!this.cluster.getClusterer().enableRetinaIcons) {\n img.style.clip = \"rect(-\".concat(spriteV, \"px, -\").concat(spriteH + this.width, \"px, -\").concat(spriteV + this.height, \", -\").concat(spriteH, \")\");\n }\n var textElm = document.createElement('div');\n textElm.setAttribute('style', \"position: absolute; top: \".concat(this.anchorText[0], \"px; left: \").concat(this.anchorText[1], \"px; color: \").concat(this.textColor, \"; font-size: \").concat(this.textSize, \"px; font-family: \").concat(this.fontFamily, \"; font-weight: \").concat(this.fontWeight, \"; fontStyle: \").concat(this.fontStyle, \"; text-decoration: \").concat(this.textDecoration, \"; text-align: center; width: \").concat(this.width, \"px; line-height: \").concat(this.height, \"px\"));\n if ((_c = this.sums) === null || _c === void 0 ? void 0 : _c.text)\n textElm.innerText = \"\".concat((_d = this.sums) === null || _d === void 0 ? void 0 : _d.text);\n if ((_e = this.sums) === null || _e === void 0 ? void 0 : _e.html)\n textElm.innerHTML = \"\".concat((_f = this.sums) === null || _f === void 0 ? void 0 : _f.html);\n this.div.innerHTML = '';\n this.div.appendChild(img);\n this.div.appendChild(textElm);\n this.div.title = divTitle;\n this.div.style.display = '';\n }\n this.visible = true;\n };\n ClusterIcon.prototype.useStyle = function (sums) {\n this.sums = sums;\n var styles = this.cluster.getClusterer().getStyles();\n var style = styles[Math.min(styles.length - 1, Math.max(0, sums.index - 1))];\n if (style) {\n this.url = style.url;\n this.height = style.height;\n this.width = style.width;\n if (style.className) {\n this.className = \"\".concat(this.clusterClassName, \" \").concat(style.className);\n }\n this.anchorText = style.anchorText || [0, 0];\n this.anchorIcon = style.anchorIcon || [this.height / 2, this.width / 2];\n this.textColor = style.textColor || 'black';\n this.textSize = style.textSize || 11;\n this.textDecoration = style.textDecoration || 'none';\n this.fontWeight = style.fontWeight || 'bold';\n this.fontStyle = style.fontStyle || 'normal';\n this.fontFamily = style.fontFamily || 'Arial,sans-serif';\n this.backgroundPosition = style.backgroundPosition || '0 0';\n }\n };\n ClusterIcon.prototype.setCenter = function (center) {\n this.center = center;\n };\n ClusterIcon.prototype.getPosFromLatLng = function (latlng) {\n var pos = this.getProjection().fromLatLngToDivPixel(latlng);\n if (pos !== null) {\n pos.x -= this.anchorIcon[1];\n pos.y -= this.anchorIcon[0];\n }\n return pos;\n };\n return ClusterIcon;\n}());\n\n/* global google */\nvar Cluster$1 = /** @class */ (function () {\n function Cluster(markerClusterer) {\n this.markerClusterer = markerClusterer;\n this.map = this.markerClusterer.getMap();\n this.gridSize = this.markerClusterer.getGridSize();\n this.minClusterSize = this.markerClusterer.getMinimumClusterSize();\n this.averageCenter = this.markerClusterer.getAverageCenter();\n this.markers = [];\n this.center = undefined;\n this.bounds = null;\n this.clusterIcon = new ClusterIcon(this, this.markerClusterer.getStyles());\n this.getSize = this.getSize.bind(this);\n this.getMarkers = this.getMarkers.bind(this);\n this.getCenter = this.getCenter.bind(this);\n this.getMap = this.getMap.bind(this);\n this.getClusterer = this.getClusterer.bind(this);\n this.getBounds = this.getBounds.bind(this);\n this.remove = this.remove.bind(this);\n this.addMarker = this.addMarker.bind(this);\n this.isMarkerInClusterBounds = this.isMarkerInClusterBounds.bind(this);\n this.calculateBounds = this.calculateBounds.bind(this);\n this.updateIcon = this.updateIcon.bind(this);\n this.isMarkerAlreadyAdded = this.isMarkerAlreadyAdded.bind(this);\n }\n Cluster.prototype.getSize = function () {\n return this.markers.length;\n };\n Cluster.prototype.getMarkers = function () {\n return this.markers;\n };\n Cluster.prototype.getCenter = function () {\n return this.center;\n };\n Cluster.prototype.getMap = function () {\n return this.map;\n };\n Cluster.prototype.getClusterer = function () {\n return this.markerClusterer;\n };\n Cluster.prototype.getBounds = function () {\n var bounds = new google.maps.LatLngBounds(this.center, this.center);\n var markers = this.getMarkers();\n for (var _i = 0, markers_1 = markers; _i < markers_1.length; _i++) {\n var marker = markers_1[_i];\n var position = marker.getPosition();\n if (position) {\n bounds.extend(position);\n }\n }\n return bounds;\n };\n Cluster.prototype.remove = function () {\n this.clusterIcon.setMap(null);\n this.markers = [];\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n delete this.markers;\n };\n Cluster.prototype.addMarker = function (marker) {\n var _a;\n if (this.isMarkerAlreadyAdded(marker)) {\n return false;\n }\n if (!this.center) {\n var position = marker.getPosition();\n if (position) {\n this.center = position;\n this.calculateBounds();\n }\n }\n else {\n if (this.averageCenter) {\n var position = marker.getPosition();\n if (position) {\n var length_1 = this.markers.length + 1;\n this.center = new google.maps.LatLng((this.center.lat() * (length_1 - 1) + position.lat()) / length_1, (this.center.lng() * (length_1 - 1) + position.lng()) / length_1);\n this.calculateBounds();\n }\n }\n }\n marker.isAdded = true;\n this.markers.push(marker);\n var mCount = this.markers.length;\n var maxZoom = this.markerClusterer.getMaxZoom();\n var zoom = (_a = this.map) === null || _a === void 0 ? void 0 : _a.getZoom();\n if (maxZoom !== null && typeof zoom !== 'undefined' && zoom > maxZoom) {\n // Zoomed in past max zoom, so show the marker.\n if (marker.getMap() !== this.map) {\n marker.setMap(this.map);\n }\n }\n else if (mCount < this.minClusterSize) {\n // Min cluster size not reached so show the marker.\n if (marker.getMap() !== this.map) {\n marker.setMap(this.map);\n }\n }\n else if (mCount === this.minClusterSize) {\n // Hide the markers that were showing.\n for (var _i = 0, _b = this.markers; _i < _b.length; _i++) {\n var markerElement = _b[_i];\n markerElement.setMap(null);\n }\n }\n else {\n marker.setMap(null);\n }\n return true;\n };\n Cluster.prototype.isMarkerInClusterBounds = function (marker) {\n if (this.bounds !== null) {\n var position = marker.getPosition();\n if (position) {\n return this.bounds.contains(position);\n }\n }\n return false;\n };\n Cluster.prototype.calculateBounds = function () {\n this.bounds = this.markerClusterer.getExtendedBounds(new google.maps.LatLngBounds(this.center, this.center));\n };\n Cluster.prototype.updateIcon = function () {\n var _a;\n var mCount = this.markers.length;\n var maxZoom = this.markerClusterer.getMaxZoom();\n var zoom = (_a = this.map) === null || _a === void 0 ? void 0 : _a.getZoom();\n if (maxZoom !== null && typeof zoom !== 'undefined' && zoom > maxZoom) {\n this.clusterIcon.hide();\n return;\n }\n if (mCount < this.minClusterSize) {\n // Min cluster size not yet reached.\n this.clusterIcon.hide();\n return;\n }\n if (this.center) {\n this.clusterIcon.setCenter(this.center);\n }\n this.clusterIcon.useStyle(this.markerClusterer.getCalculator()(this.markers, this.markerClusterer.getStyles().length));\n this.clusterIcon.show();\n };\n Cluster.prototype.isMarkerAlreadyAdded = function (marker) {\n if (this.markers.includes) {\n return this.markers.includes(marker);\n }\n for (var i = 0; i < this.markers.length; i++) {\n if (marker === this.markers[i]) {\n return true;\n }\n }\n return false;\n };\n return Cluster;\n}());\n\n/* global google */\n/**\n * Supports up to 9007199254740991 (Number.MAX_SAFE_INTEGER) markers\n * which is not a problem as max array length is 4294967296 (2**32)\n */\nfunction CALCULATOR(markers, numStyles) {\n var count = markers.length;\n var numberOfDigits = count.toString().length;\n var index = Math.min(numberOfDigits, numStyles);\n return {\n text: count.toString(),\n index: index,\n title: '',\n };\n}\nvar BATCH_SIZE = 2000;\nvar BATCH_SIZE_IE = 500;\nvar IMAGE_PATH = 'https://developers.google.com/maps/documentation/javascript/examples/markerclusterer/m';\nvar IMAGE_EXTENSION = 'png';\nvar IMAGE_SIZES = [53, 56, 66, 78, 90];\nvar CLUSTERER_CLASS = 'cluster';\nvar Clusterer = /** @class */ (function () {\n function Clusterer(map, optMarkers, optOptions) {\n if (optMarkers === void 0) { optMarkers = []; }\n if (optOptions === void 0) { optOptions = {}; }\n this.getMinimumClusterSize = this.getMinimumClusterSize.bind(this);\n this.setMinimumClusterSize = this.setMinimumClusterSize.bind(this);\n this.getEnableRetinaIcons = this.getEnableRetinaIcons.bind(this);\n this.setEnableRetinaIcons = this.setEnableRetinaIcons.bind(this);\n this.addToClosestCluster = this.addToClosestCluster.bind(this);\n this.getImageExtension = this.getImageExtension.bind(this);\n this.setImageExtension = this.setImageExtension.bind(this);\n this.getExtendedBounds = this.getExtendedBounds.bind(this);\n this.getAverageCenter = this.getAverageCenter.bind(this);\n this.setAverageCenter = this.setAverageCenter.bind(this);\n this.getTotalClusters = this.getTotalClusters.bind(this);\n this.fitMapToMarkers = this.fitMapToMarkers.bind(this);\n this.getIgnoreHidden = this.getIgnoreHidden.bind(this);\n this.setIgnoreHidden = this.setIgnoreHidden.bind(this);\n this.getClusterClass = this.getClusterClass.bind(this);\n this.setClusterClass = this.setClusterClass.bind(this);\n this.getTotalMarkers = this.getTotalMarkers.bind(this);\n this.getZoomOnClick = this.getZoomOnClick.bind(this);\n this.setZoomOnClick = this.setZoomOnClick.bind(this);\n this.getBatchSizeIE = this.getBatchSizeIE.bind(this);\n this.setBatchSizeIE = this.setBatchSizeIE.bind(this);\n this.createClusters = this.createClusters.bind(this);\n this.onZoomChanged = this.onZoomChanged.bind(this);\n this.getImageSizes = this.getImageSizes.bind(this);\n this.setImageSizes = this.setImageSizes.bind(this);\n this.getCalculator = this.getCalculator.bind(this);\n this.setCalculator = this.setCalculator.bind(this);\n this.removeMarkers = this.removeMarkers.bind(this);\n this.resetViewport = this.resetViewport.bind(this);\n this.getImagePath = this.getImagePath.bind(this);\n this.setImagePath = this.setImagePath.bind(this);\n this.pushMarkerTo = this.pushMarkerTo.bind(this);\n this.removeMarker = this.removeMarker.bind(this);\n this.clearMarkers = this.clearMarkers.bind(this);\n this.setupStyles = this.setupStyles.bind(this);\n this.getGridSize = this.getGridSize.bind(this);\n this.setGridSize = this.setGridSize.bind(this);\n this.getClusters = this.getClusters.bind(this);\n this.getMaxZoom = this.getMaxZoom.bind(this);\n this.setMaxZoom = this.setMaxZoom.bind(this);\n this.getMarkers = this.getMarkers.bind(this);\n this.addMarkers = this.addMarkers.bind(this);\n this.getStyles = this.getStyles.bind(this);\n this.setStyles = this.setStyles.bind(this);\n this.addMarker = this.addMarker.bind(this);\n this.onRemove = this.onRemove.bind(this);\n this.getTitle = this.getTitle.bind(this);\n this.setTitle = this.setTitle.bind(this);\n this.repaint = this.repaint.bind(this);\n this.onIdle = this.onIdle.bind(this);\n this.redraw = this.redraw.bind(this);\n this.onAdd = this.onAdd.bind(this);\n this.draw = this.draw.bind(this);\n this.extend = this.extend.bind(this);\n this.extend(Clusterer, google.maps.OverlayView);\n this.markers = [];\n this.clusters = [];\n this.listeners = [];\n this.activeMap = null;\n this.ready = false;\n this.gridSize = optOptions.gridSize || 60;\n this.minClusterSize = optOptions.minimumClusterSize || 2;\n this.maxZoom = optOptions.maxZoom || null;\n this.styles = optOptions.styles || [];\n this.title = optOptions.title || '';\n this.zoomOnClick = true;\n if (optOptions.zoomOnClick !== undefined) {\n this.zoomOnClick = optOptions.zoomOnClick;\n }\n this.averageCenter = false;\n if (optOptions.averageCenter !== undefined) {\n this.averageCenter = optOptions.averageCenter;\n }\n this.ignoreHidden = false;\n if (optOptions.ignoreHidden !== undefined) {\n this.ignoreHidden = optOptions.ignoreHidden;\n }\n this.enableRetinaIcons = false;\n if (optOptions.enableRetinaIcons !== undefined) {\n this.enableRetinaIcons = optOptions.enableRetinaIcons;\n }\n this.imagePath = optOptions.imagePath || IMAGE_PATH;\n this.imageExtension = optOptions.imageExtension || IMAGE_EXTENSION;\n this.imageSizes = optOptions.imageSizes || IMAGE_SIZES;\n this.calculator = optOptions.calculator || CALCULATOR;\n this.batchSize = optOptions.batchSize || BATCH_SIZE;\n this.batchSizeIE = optOptions.batchSizeIE || BATCH_SIZE_IE;\n this.clusterClass = optOptions.clusterClass || CLUSTERER_CLASS;\n if (navigator.userAgent.toLowerCase().indexOf('msie') !== -1) {\n // Try to avoid IE timeout when processing a huge number of markers:\n this.batchSize = this.batchSizeIE;\n }\n this.timerRefStatic = null;\n this.setupStyles();\n this.addMarkers(optMarkers, true);\n this.setMap(map); // Note: this causes onAdd to be called\n }\n Clusterer.prototype.onZoomChanged = function () {\n var _a, _b;\n this.resetViewport(false);\n // Workaround for this Google bug: when map is at level 0 and \"-\" of\n // zoom slider is clicked, a \"zoom_changed\" event is fired even though\n // the map doesn't zoom out any further. In this situation, no \"idle\"\n // event is triggered so the cluster markers that have been removed\n // do not get redrawn. Same goes for a zoom in at maxZoom.\n if (((_a = this.getMap()) === null || _a === void 0 ? void 0 : _a.getZoom()) === (this.get('minZoom') || 0) ||\n ((_b = this.getMap()) === null || _b === void 0 ? void 0 : _b.getZoom()) === this.get('maxZoom')) {\n google.maps.event.trigger(this, 'idle');\n }\n };\n Clusterer.prototype.onIdle = function () {\n this.redraw();\n };\n Clusterer.prototype.onAdd = function () {\n var map = this.getMap();\n this.activeMap = map;\n this.ready = true;\n this.repaint();\n if (map !== null) {\n // Add the map event listeners\n this.listeners = [\n google.maps.event.addListener(map, 'zoom_changed', this.onZoomChanged),\n google.maps.event.addListener(map, 'idle', this.onIdle),\n ];\n }\n };\n Clusterer.prototype.onRemove = function () {\n // Put all the managed markers back on the map:\n for (var _i = 0, _a = this.markers; _i < _a.length; _i++) {\n var marker = _a[_i];\n if (marker.getMap() !== this.activeMap) {\n marker.setMap(this.activeMap);\n }\n }\n // Remove all clusters:\n for (var _b = 0, _c = this.clusters; _b < _c.length; _b++) {\n var cluster = _c[_b];\n cluster.remove();\n }\n this.clusters = [];\n // Remove map event listeners:\n for (var _d = 0, _e = this.listeners; _d < _e.length; _d++) {\n var listener = _e[_d];\n google.maps.event.removeListener(listener);\n }\n this.listeners = [];\n this.activeMap = null;\n this.ready = false;\n };\n Clusterer.prototype.draw = function () { return; };\n Clusterer.prototype.getMap = function () { return null; };\n Clusterer.prototype.getPanes = function () { return null; };\n Clusterer.prototype.getProjection = function () {\n return {\n fromContainerPixelToLatLng: function () { return null; },\n fromDivPixelToLatLng: function () { return null; },\n fromLatLngToContainerPixel: function () { return null; },\n fromLatLngToDivPixel: function () { return null; },\n getVisibleRegion: function () { return null; },\n getWorldWidth: function () { return 0; }\n };\n };\n Clusterer.prototype.setMap = function () { return; };\n Clusterer.prototype.addListener = function () {\n return {\n remove: function () { return; }\n };\n };\n Clusterer.prototype.bindTo = function () { return; };\n Clusterer.prototype.get = function () { return; };\n Clusterer.prototype.notify = function () { return; };\n Clusterer.prototype.set = function () { return; };\n Clusterer.prototype.setValues = function () { return; };\n Clusterer.prototype.unbind = function () { return; };\n Clusterer.prototype.unbindAll = function () { return; };\n Clusterer.prototype.setupStyles = function () {\n if (this.styles.length > 0) {\n return;\n }\n for (var i = 0; i < this.imageSizes.length; i++) {\n this.styles.push({\n url: \"\".concat(this.imagePath + (i + 1), \".\").concat(this.imageExtension),\n height: this.imageSizes[i] || 0,\n width: this.imageSizes[i] || 0,\n });\n }\n };\n Clusterer.prototype.fitMapToMarkers = function () {\n var markers = this.getMarkers();\n var bounds = new google.maps.LatLngBounds();\n for (var _i = 0, markers_1 = markers; _i < markers_1.length; _i++) {\n var marker = markers_1[_i];\n var position = marker.getPosition();\n if (position) {\n bounds.extend(position);\n }\n }\n var map = this.getMap();\n if (map !== null && 'fitBounds' in map) {\n map.fitBounds(bounds);\n }\n };\n Clusterer.prototype.getGridSize = function () {\n return this.gridSize;\n };\n Clusterer.prototype.setGridSize = function (gridSize) {\n this.gridSize = gridSize;\n };\n Clusterer.prototype.getMinimumClusterSize = function () {\n return this.minClusterSize;\n };\n Clusterer.prototype.setMinimumClusterSize = function (minimumClusterSize) {\n this.minClusterSize = minimumClusterSize;\n };\n Clusterer.prototype.getMaxZoom = function () {\n return this.maxZoom;\n };\n Clusterer.prototype.setMaxZoom = function (maxZoom) {\n this.maxZoom = maxZoom;\n };\n Clusterer.prototype.getStyles = function () {\n return this.styles;\n };\n Clusterer.prototype.setStyles = function (styles) {\n this.styles = styles;\n };\n Clusterer.prototype.getTitle = function () {\n return this.title;\n };\n Clusterer.prototype.setTitle = function (title) {\n this.title = title;\n };\n Clusterer.prototype.getZoomOnClick = function () {\n return this.zoomOnClick;\n };\n Clusterer.prototype.setZoomOnClick = function (zoomOnClick) {\n this.zoomOnClick = zoomOnClick;\n };\n Clusterer.prototype.getAverageCenter = function () {\n return this.averageCenter;\n };\n Clusterer.prototype.setAverageCenter = function (averageCenter) {\n this.averageCenter = averageCenter;\n };\n Clusterer.prototype.getIgnoreHidden = function () {\n return this.ignoreHidden;\n };\n Clusterer.prototype.setIgnoreHidden = function (ignoreHidden) {\n this.ignoreHidden = ignoreHidden;\n };\n Clusterer.prototype.getEnableRetinaIcons = function () {\n return this.enableRetinaIcons;\n };\n Clusterer.prototype.setEnableRetinaIcons = function (enableRetinaIcons) {\n this.enableRetinaIcons = enableRetinaIcons;\n };\n Clusterer.prototype.getImageExtension = function () {\n return this.imageExtension;\n };\n Clusterer.prototype.setImageExtension = function (imageExtension) {\n this.imageExtension = imageExtension;\n };\n Clusterer.prototype.getImagePath = function () {\n return this.imagePath;\n };\n Clusterer.prototype.setImagePath = function (imagePath) {\n this.imagePath = imagePath;\n };\n Clusterer.prototype.getImageSizes = function () {\n return this.imageSizes;\n };\n Clusterer.prototype.setImageSizes = function (imageSizes) {\n this.imageSizes = imageSizes;\n };\n Clusterer.prototype.getCalculator = function () {\n return this.calculator;\n };\n Clusterer.prototype.setCalculator = function (calculator) {\n this.calculator = calculator;\n };\n Clusterer.prototype.getBatchSizeIE = function () {\n return this.batchSizeIE;\n };\n Clusterer.prototype.setBatchSizeIE = function (batchSizeIE) {\n this.batchSizeIE = batchSizeIE;\n };\n Clusterer.prototype.getClusterClass = function () {\n return this.clusterClass;\n };\n Clusterer.prototype.setClusterClass = function (clusterClass) {\n this.clusterClass = clusterClass;\n };\n Clusterer.prototype.getMarkers = function () {\n return this.markers;\n };\n Clusterer.prototype.getTotalMarkers = function () {\n return this.markers.length;\n };\n Clusterer.prototype.getClusters = function () {\n return this.clusters;\n };\n Clusterer.prototype.getTotalClusters = function () {\n return this.clusters.length;\n };\n Clusterer.prototype.addMarker = function (marker, optNoDraw) {\n this.pushMarkerTo(marker);\n if (!optNoDraw) {\n this.redraw();\n }\n };\n Clusterer.prototype.addMarkers = function (markers, optNoDraw) {\n for (var key in markers) {\n if (Object.prototype.hasOwnProperty.call(markers, key)) {\n var marker = markers[key];\n if (marker) {\n this.pushMarkerTo(marker);\n }\n }\n }\n if (!optNoDraw) {\n this.redraw();\n }\n };\n Clusterer.prototype.pushMarkerTo = function (marker) {\n var _this = this;\n // If the marker is draggable add a listener so we can update the clusters on the dragend:\n if (marker.getDraggable()) {\n google.maps.event.addListener(marker, 'dragend', function () {\n if (_this.ready) {\n marker.isAdded = false;\n _this.repaint();\n }\n });\n }\n marker.isAdded = false;\n this.markers.push(marker);\n };\n Clusterer.prototype.removeMarker_ = function (marker) {\n var index = -1;\n if (this.markers.indexOf) {\n index = this.markers.indexOf(marker);\n }\n else {\n for (var i = 0; i < this.markers.length; i++) {\n if (marker === this.markers[i]) {\n index = i;\n break;\n }\n }\n }\n if (index === -1) {\n // Marker is not in our list of markers, so do nothing:\n return false;\n }\n marker.setMap(null);\n this.markers.splice(index, 1); // Remove the marker from the list of managed markers\n return true;\n };\n Clusterer.prototype.removeMarker = function (marker, optNoDraw) {\n var removed = this.removeMarker_(marker);\n if (!optNoDraw && removed) {\n this.repaint();\n }\n return removed;\n };\n Clusterer.prototype.removeMarkers = function (markers, optNoDraw) {\n var removed = false;\n for (var _i = 0, markers_2 = markers; _i < markers_2.length; _i++) {\n var marker = markers_2[_i];\n removed = removed || this.removeMarker_(marker);\n }\n if (!optNoDraw && removed) {\n this.repaint();\n }\n return removed;\n };\n Clusterer.prototype.clearMarkers = function () {\n this.resetViewport(true);\n this.markers = [];\n };\n Clusterer.prototype.repaint = function () {\n var oldClusters = this.clusters.slice();\n this.clusters = [];\n this.resetViewport(false);\n this.redraw();\n // Remove the old clusters.\n // Do it in a timeout to prevent blinking effect.\n setTimeout(function timeout() {\n for (var _i = 0, oldClusters_1 = oldClusters; _i < oldClusters_1.length; _i++) {\n var oldCluster = oldClusters_1[_i];\n oldCluster.remove();\n }\n }, 0);\n };\n Clusterer.prototype.getExtendedBounds = function (bounds) {\n var projection = this.getProjection();\n // Convert the points to pixels and the extend out by the grid size.\n var trPix = projection.fromLatLngToDivPixel(\n // Turn the bounds into latlng.\n new google.maps.LatLng(bounds.getNorthEast().lat(), bounds.getNorthEast().lng()));\n if (trPix !== null) {\n trPix.x += this.gridSize;\n trPix.y -= this.gridSize;\n }\n var blPix = projection.fromLatLngToDivPixel(\n // Turn the bounds into latlng.\n new google.maps.LatLng(bounds.getSouthWest().lat(), bounds.getSouthWest().lng()));\n if (blPix !== null) {\n blPix.x -= this.gridSize;\n blPix.y += this.gridSize;\n }\n // Extend the bounds to contain the new bounds.\n if (trPix !== null) {\n // Convert the pixel points back to LatLng nw\n var point1 = projection.fromDivPixelToLatLng(trPix);\n if (point1 !== null) {\n bounds.extend(point1);\n }\n }\n if (blPix !== null) {\n // Convert the pixel points back to LatLng sw\n var point2 = projection.fromDivPixelToLatLng(blPix);\n if (point2 !== null) {\n bounds.extend(point2);\n }\n }\n return bounds;\n };\n Clusterer.prototype.redraw = function () {\n // Redraws all the clusters.\n this.createClusters(0);\n };\n Clusterer.prototype.resetViewport = function (optHide) {\n // Remove all the clusters\n for (var _i = 0, _a = this.clusters; _i < _a.length; _i++) {\n var cluster = _a[_i];\n cluster.remove();\n }\n this.clusters = [];\n // Reset the markers to not be added and to be removed from the map.\n for (var _b = 0, _c = this.markers; _b < _c.length; _b++) {\n var marker = _c[_b];\n marker.isAdded = false;\n if (optHide) {\n marker.setMap(null);\n }\n }\n };\n Clusterer.prototype.distanceBetweenPoints = function (p1, p2) {\n var R = 6371; // Radius of the Earth in km\n var dLat = ((p2.lat() - p1.lat()) * Math.PI) / 180;\n var dLon = ((p2.lng() - p1.lng()) * Math.PI) / 180;\n var a = Math.sin(dLat / 2) * Math.sin(dLat / 2) +\n Math.cos((p1.lat() * Math.PI) / 180) *\n Math.cos((p2.lat() * Math.PI) / 180) *\n Math.sin(dLon / 2) *\n Math.sin(dLon / 2);\n return R * (2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a)));\n };\n Clusterer.prototype.isMarkerInBounds = function (marker, bounds) {\n var position = marker.getPosition();\n if (position) {\n return bounds.contains(position);\n }\n return false;\n };\n Clusterer.prototype.addToClosestCluster = function (marker) {\n var cluster;\n var distance = 40000; // Some large number\n var clusterToAddTo = null;\n for (var _i = 0, _a = this.clusters; _i < _a.length; _i++) {\n var clusterElement = _a[_i];\n cluster = clusterElement;\n var center = cluster.getCenter();\n var position = marker.getPosition();\n if (center && position) {\n var d = this.distanceBetweenPoints(center, position);\n if (d < distance) {\n distance = d;\n clusterToAddTo = cluster;\n }\n }\n }\n if (clusterToAddTo && clusterToAddTo.isMarkerInClusterBounds(marker)) {\n clusterToAddTo.addMarker(marker);\n }\n else {\n cluster = new Cluster$1(this);\n cluster.addMarker(marker);\n this.clusters.push(cluster);\n }\n };\n Clusterer.prototype.createClusters = function (iFirst) {\n var _this = this;\n if (!this.ready) {\n return;\n }\n // Cancel previous batch processing if we're working on the first batch:\n if (iFirst === 0) {\n /**\n * This event is fired when the <code>Clusterer</code> begins\n * clustering markers.\n * @name Clusterer#clusteringbegin\n * @param {Clusterer} mc The Clusterer whose markers are being clustered.\n * @event\n */\n google.maps.event.trigger(this, 'clusteringbegin', this);\n if (this.timerRefStatic !== null) {\n window.clearTimeout(this.timerRefStatic);\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n delete this.timerRefStatic;\n }\n }\n var map = this.getMap();\n var bounds = map !== null && 'getBounds' in map ? map.getBounds() : null;\n var zoom = (map === null || map === void 0 ? void 0 : map.getZoom()) || 0;\n // Get our current map view bounds.\n // Create a new bounds object so we don't affect the map.\n //\n // See Comments 9 & 11 on Issue 3651 relating to this workaround for a Google Maps bug:\n var mapBounds = zoom > 3\n ? new google.maps.LatLngBounds(bounds === null || bounds === void 0 ? void 0 : bounds.getSouthWest(), bounds === null || bounds === void 0 ? void 0 : bounds.getNorthEast())\n : new google.maps.LatLngBounds(new google.maps.LatLng(85.02070771743472, -178.48388434375), new google.maps.LatLng(-85.08136444384544, 178.00048865625));\n var extendedMapBounds = this.getExtendedBounds(mapBounds);\n var iLast = Math.min(iFirst + this.batchSize, this.markers.length);\n for (var i = iFirst; i < iLast; i++) {\n var marker = this.markers[i];\n if (marker && !marker.isAdded && this.isMarkerInBounds(marker, extendedMapBounds) && (!this.ignoreHidden || (this.ignoreHidden && marker.getVisible()))) {\n this.addToClosestCluster(marker);\n }\n }\n if (iLast < this.markers.length) {\n this.timerRefStatic = window.setTimeout(function () {\n _this.createClusters(iLast);\n }, 0);\n }\n else {\n this.timerRefStatic = null;\n /**\n * This event is fired when the <code>Clusterer</code> stops\n * clustering markers.\n * @name Clusterer#clusteringend\n * @param {Clusterer} mc The Clusterer whose markers are being clustered.\n * @event\n */\n google.maps.event.trigger(this, 'clusteringend', this);\n for (var _i = 0, _a = this.clusters; _i < _a.length; _i++) {\n var cluster = _a[_i];\n cluster.updateIcon();\n }\n }\n };\n Clusterer.prototype.extend = function (obj1, obj2) {\n return function applyExtend(object) {\n for (var property in object.prototype) {\n // eslint-disable-next-line @typescript-eslint/ban-types\n var prop = property;\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n this.prototype[prop] = object.prototype[prop];\n }\n return this;\n }.apply(obj1, [obj2]);\n };\n return Clusterer;\n}());\n\nvar eventMap$e = {\n onClick: 'click',\n onClusteringBegin: 'clusteringbegin',\n onClusteringEnd: 'clusteringend',\n onMouseOut: 'mouseout',\n onMouseOver: 'mouseover',\n};\nvar updaterMap$e = {\n averageCenter: function (instance, averageCenter) {\n instance.setAverageCenter(averageCenter);\n },\n batchSizeIE: function (instance, batchSizeIE) {\n instance.setBatchSizeIE(batchSizeIE);\n },\n calculator: function (instance, calculator) {\n instance.setCalculator(calculator);\n },\n clusterClass: function (instance, clusterClass) {\n instance.setClusterClass(clusterClass);\n },\n enableRetinaIcons: function (instance, enableRetinaIcons) {\n instance.setEnableRetinaIcons(enableRetinaIcons);\n },\n gridSize: function (instance, gridSize) {\n instance.setGridSize(gridSize);\n },\n ignoreHidden: function (instance, ignoreHidden) {\n instance.setIgnoreHidden(ignoreHidden);\n },\n imageExtension: function (instance, imageExtension) {\n instance.setImageExtension(imageExtension);\n },\n imagePath: function (instance, imagePath) {\n instance.setImagePath(imagePath);\n },\n imageSizes: function (instance, imageSizes) {\n instance.setImageSizes(imageSizes);\n },\n maxZoom: function (instance, maxZoom) {\n instance.setMaxZoom(maxZoom);\n },\n minimumClusterSize: function (instance, minimumClusterSize) {\n instance.setMinimumClusterSize(minimumClusterSize);\n },\n styles: function (instance, styles) {\n instance.setStyles(styles);\n },\n title: function (instance, title) {\n instance.setTitle(title);\n },\n zoomOnClick: function (instance, zoomOnClick) {\n instance.setZoomOnClick(zoomOnClick);\n },\n};\nvar defaultOptions$4 = {};\nfunction MarkerClustererFunctional(props) {\n var children = props.children, options = props.options, averageCenter = props.averageCenter, batchSizeIE = props.batchSizeIE, calculator = props.calculator, clusterClass = props.clusterClass, enableRetinaIcons = props.enableRetinaIcons, gridSize = props.gridSize, ignoreHidden = props.ignoreHidden, imageExtension = props.imageExtension, imagePath = props.imagePath, imageSizes = props.imageSizes, maxZoom = props.maxZoom, minimumClusterSize = props.minimumClusterSize, styles = props.styles, title = props.title, zoomOnClick = props.zoomOnClick, onClick = props.onClick, onClusteringBegin = props.onClusteringBegin, onClusteringEnd = props.onClusteringEnd, onMouseOver = props.onMouseOver, onMouseOut = props.onMouseOut, onLoad = props.onLoad, onUnmount = props.onUnmount;\n var _a = useState(null), instance = _a[0], setInstance = _a[1];\n var map = useContext(MapContext);\n var _b = useState(null), clickListener = _b[0], setClickListener = _b[1];\n var _c = useState(null), clusteringBeginListener = _c[0], setClusteringBeginListener = _c[1];\n var _d = useState(null), clusteringEndListener = _d[0], setClusteringEndListener = _d[1];\n var _e = useState(null), mouseoutListener = _e[0], setMouseoutListener = _e[1];\n var _f = useState(null), mouseoverListener = _f[0], setMouseoverListener = _f[1];\n useEffect(function () {\n if (instance && onMouseOut) {\n if (mouseoutListener !== null) {\n google.maps.event.removeListener(mouseoutListener);\n }\n setMouseoutListener(google.maps.event.addListener(instance, eventMap$e.onMouseOut, onMouseOut));\n }\n }, [onMouseOut]);\n useEffect(function () {\n if (instance && onMouseOver) {\n if (mouseoverListener !== null) {\n google.maps.event.removeListener(mouseoverListener);\n }\n setMouseoverListener(google.maps.event.addListener(instance, eventMap$e.onMouseOver, onMouseOver));\n }\n }, [onMouseOver]);\n useEffect(function () {\n if (instance && onClick) {\n if (clickListener !== null) {\n google.maps.event.removeListener(clickListener);\n }\n setClickListener(google.maps.event.addListener(instance, eventMap$e.onClick, onClick));\n }\n }, [onClick]);\n useEffect(function () {\n if (instance && onClusteringBegin) {\n if (clusteringBeginListener !== null) {\n google.maps.event.removeListener(clusteringBeginListener);\n }\n setClusteringBeginListener(google.maps.event.addListener(instance, eventMap$e.onClusteringBegin, onClusteringBegin));\n }\n }, [onClusteringBegin]);\n useEffect(function () {\n if (instance && onClusteringEnd) {\n if (clusteringEndListener !== null) {\n google.maps.event.removeListener(clusteringEndListener);\n }\n setClusteringBeginListener(google.maps.event.addListener(instance, eventMap$e.onClusteringEnd, onClusteringEnd));\n }\n }, [onClusteringEnd]);\n useEffect(function () {\n if (typeof averageCenter !== 'undefined' && instance !== null) {\n updaterMap$e.averageCenter(instance, averageCenter);\n }\n }, [instance, averageCenter]);\n useEffect(function () {\n if (typeof batchSizeIE !== 'undefined' && instance !== null) {\n updaterMap$e.batchSizeIE(instance, batchSizeIE);\n }\n }, [instance, batchSizeIE]);\n useEffect(function () {\n if (typeof calculator !== 'undefined' && instance !== null) {\n updaterMap$e.calculator(instance, calculator);\n }\n }, [instance, calculator]);\n useEffect(function () {\n if (typeof clusterClass !== 'undefined' && instance !== null) {\n updaterMap$e.clusterClass(instance, clusterClass);\n }\n }, [instance, clusterClass]);\n useEffect(function () {\n if (typeof enableRetinaIcons !== 'undefined' && instance !== null) {\n updaterMap$e.enableRetinaIcons(instance, enableRetinaIcons);\n }\n }, [instance, enableRetinaIcons]);\n useEffect(function () {\n if (typeof gridSize !== 'undefined' && instance !== null) {\n updaterMap$e.gridSize(instance, gridSize);\n }\n }, [instance, gridSize]);\n useEffect(function () {\n if (typeof ignoreHidden !== 'undefined' && instance !== null) {\n updaterMap$e.ignoreHidden(instance, ignoreHidden);\n }\n }, [instance, ignoreHidden]);\n useEffect(function () {\n if (typeof imageExtension !== 'undefined' && instance !== null) {\n updaterMap$e.imageExtension(instance, imageExtension);\n }\n }, [instance, imageExtension]);\n useEffect(function () {\n if (typeof imagePath !== 'undefined' && instance !== null) {\n updaterMap$e.imagePath(instance, imagePath);\n }\n }, [instance, imagePath]);\n useEffect(function () {\n if (typeof imageSizes !== 'undefined' && instance !== null) {\n updaterMap$e.imageSizes(instance, imageSizes);\n }\n }, [instance, imageSizes]);\n useEffect(function () {\n if (typeof maxZoom !== 'undefined' && instance !== null) {\n updaterMap$e.maxZoom(instance, maxZoom);\n }\n }, [instance, maxZoom]);\n useEffect(function () {\n if (typeof minimumClusterSize !== 'undefined' && instance !== null) {\n updaterMap$e.minimumClusterSize(instance, minimumClusterSize);\n }\n }, [instance, minimumClusterSize]);\n useEffect(function () {\n if (typeof styles !== 'undefined' && instance !== null) {\n updaterMap$e.styles(instance, styles);\n }\n }, [instance, styles]);\n useEffect(function () {\n if (typeof title !== 'undefined' && instance !== null) {\n updaterMap$e.title(instance, title);\n }\n }, [instance, title]);\n useEffect(function () {\n if (typeof zoomOnClick !== 'undefined' && instance !== null) {\n updaterMap$e.zoomOnClick(instance, zoomOnClick);\n }\n }, [instance, zoomOnClick]);\n useEffect(function () {\n if (!map)\n return;\n var clustererOptions = __assign({}, (options || defaultOptions$4));\n var clusterer = new Clusterer(map, [], clustererOptions);\n if (averageCenter) {\n updaterMap$e.averageCenter(clusterer, averageCenter);\n }\n if (batchSizeIE) {\n updaterMap$e.batchSizeIE(clusterer, batchSizeIE);\n }\n if (calculator) {\n updaterMap$e.calculator(clusterer, calculator);\n }\n if (clusterClass) {\n updaterMap$e.clusterClass(clusterer, clusterClass);\n }\n if (enableRetinaIcons) {\n updaterMap$e.enableRetinaIcons(clusterer, enableRetinaIcons);\n }\n if (gridSize) {\n updaterMap$e.gridSize(clusterer, gridSize);\n }\n if (ignoreHidden) {\n updaterMap$e.ignoreHidden(clusterer, ignoreHidden);\n }\n if (imageExtension) {\n updaterMap$e.imageExtension(clusterer, imageExtension);\n }\n if (imagePath) {\n updaterMap$e.imagePath(clusterer, imagePath);\n }\n if (imageSizes) {\n updaterMap$e.imageSizes(clusterer, imageSizes);\n }\n if (maxZoom) {\n updaterMap$e.maxZoom(clusterer, maxZoom);\n }\n if (minimumClusterSize) {\n updaterMap$e.minimumClusterSize(clusterer, minimumClusterSize);\n }\n if (styles) {\n updaterMap$e.styles(clusterer, styles);\n }\n if (title) {\n updaterMap$e.title(clusterer, title);\n }\n if (zoomOnClick) {\n updaterMap$e.zoomOnClick(clusterer, zoomOnClick);\n }\n if (onMouseOut) {\n setMouseoutListener(google.maps.event.addListener(clusterer, eventMap$e.onMouseOut, onMouseOut));\n }\n if (onMouseOver) {\n setMouseoverListener(google.maps.event.addListener(clusterer, eventMap$e.onMouseOver, onMouseOver));\n }\n if (onClick) {\n setClickListener(google.maps.event.addListener(clusterer, eventMap$e.onClick, onClick));\n }\n if (onClusteringBegin) {\n setClusteringBeginListener(google.maps.event.addListener(clusterer, eventMap$e.onClusteringBegin, onClusteringBegin));\n }\n if (onClusteringEnd) {\n setClusteringEndListener(google.maps.event.addListener(clusterer, eventMap$e.onClusteringEnd, onClusteringEnd));\n }\n setInstance(clusterer);\n if (onLoad) {\n onLoad(clusterer);\n }\n return function () {\n if (mouseoutListener !== null) {\n google.maps.event.removeListener(mouseoutListener);\n }\n if (mouseoverListener !== null) {\n google.maps.event.removeListener(mouseoverListener);\n }\n if (clickListener !== null) {\n google.maps.event.removeListener(clickListener);\n }\n if (clusteringBeginListener !== null) {\n google.maps.event.removeListener(clusteringBeginListener);\n }\n if (clusteringEndListener !== null) {\n google.maps.event.removeListener(clusteringEndListener);\n }\n if (onUnmount) {\n onUnmount(clusterer);\n }\n };\n }, []);\n return instance !== null ? children(instance) || null : null;\n}\nvar MarkerClustererF = memo(MarkerClustererFunctional);\nvar ClustererComponent = /** @class */ (function (_super) {\n __extends(ClustererComponent, _super);\n function ClustererComponent() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.registeredEvents = [];\n _this.state = {\n markerClusterer: null,\n };\n _this.setClustererCallback = function () {\n if (_this.state.markerClusterer !== null && _this.props.onLoad) {\n _this.props.onLoad(_this.state.markerClusterer);\n }\n };\n return _this;\n }\n ClustererComponent.prototype.componentDidMount = function () {\n if (this.context) {\n var markerClusterer_1 = new Clusterer(this.context, [], this.props.options);\n this.registeredEvents = applyUpdatersToPropsAndRegisterEvents({\n updaterMap: updaterMap$e,\n eventMap: eventMap$e,\n prevProps: {},\n nextProps: this.props,\n instance: markerClusterer_1,\n });\n this.setState(function () {\n return {\n markerClusterer: markerClusterer_1,\n };\n }, this.setClustererCallback);\n }\n };\n ClustererComponent.prototype.componentDidUpdate = function (prevProps) {\n if (this.state.markerClusterer) {\n unregisterEvents(this.registeredEvents);\n this.registeredEvents = applyUpdatersToPropsAndRegisterEvents({\n updaterMap: updaterMap$e,\n eventMap: eventMap$e,\n prevProps: prevProps,\n nextProps: this.props,\n instance: this.state.markerClusterer,\n });\n }\n };\n ClustererComponent.prototype.componentWillUnmount = function () {\n if (this.state.markerClusterer !== null) {\n if (this.props.onUnmount) {\n this.props.onUnmount(this.state.markerClusterer);\n }\n unregisterEvents(this.registeredEvents);\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n this.state.markerClusterer.setMap(null);\n }\n };\n ClustererComponent.prototype.render = function () {\n return this.state.markerClusterer !== null\n ? this.props.children(this.state.markerClusterer)\n : null;\n };\n ClustererComponent.contextType = MapContext;\n return ClustererComponent;\n}(PureComponent));\n\n// This handler prevents an event in the InfoBox from being passed on to the map.\nfunction cancelHandler(event) {\n event.cancelBubble = true;\n if (event.stopPropagation) {\n event.stopPropagation();\n }\n}\nvar InfoBox = /** @class */ (function () {\n function InfoBox(options) {\n if (options === void 0) { options = {}; }\n this.getCloseClickHandler = this.getCloseClickHandler.bind(this);\n this.closeClickHandler = this.closeClickHandler.bind(this);\n this.createInfoBoxDiv = this.createInfoBoxDiv.bind(this);\n this.addClickHandler = this.addClickHandler.bind(this);\n this.getCloseBoxImg = this.getCloseBoxImg.bind(this);\n this.getBoxWidths = this.getBoxWidths.bind(this);\n this.setBoxStyle = this.setBoxStyle.bind(this);\n this.setPosition = this.setPosition.bind(this);\n this.getPosition = this.getPosition.bind(this);\n this.setOptions = this.setOptions.bind(this);\n this.setContent = this.setContent.bind(this);\n this.setVisible = this.setVisible.bind(this);\n this.getContent = this.getContent.bind(this);\n this.getVisible = this.getVisible.bind(this);\n this.setZIndex = this.setZIndex.bind(this);\n this.getZIndex = this.getZIndex.bind(this);\n this.onRemove = this.onRemove.bind(this);\n this.panBox = this.panBox.bind(this);\n this.extend = this.extend.bind(this);\n this.close = this.close.bind(this);\n this.draw = this.draw.bind(this);\n this.show = this.show.bind(this);\n this.hide = this.hide.bind(this);\n this.open = this.open.bind(this);\n this.extend(InfoBox, google.maps.OverlayView);\n // Standard options (in common with google.maps.InfoWindow):\n this.content = options.content || '';\n this.disableAutoPan = options.disableAutoPan || false;\n this.maxWidth = options.maxWidth || 0;\n this.pixelOffset = options.pixelOffset || new google.maps.Size(0, 0);\n this.position = options.position || new google.maps.LatLng(0, 0);\n this.zIndex = options.zIndex || null;\n // Additional options (unique to InfoBox):\n this.boxClass = options.boxClass || 'infoBox';\n this.boxStyle = options.boxStyle || {};\n this.closeBoxMargin = options.closeBoxMargin || '2px';\n this.closeBoxURL = options.closeBoxURL || 'http://www.google.com/intl/en_us/mapfiles/close.gif';\n if (options.closeBoxURL === '') {\n this.closeBoxURL = '';\n }\n this.infoBoxClearance = options.infoBoxClearance || new google.maps.Size(1, 1);\n if (typeof options.visible === 'undefined') {\n if (typeof options.isHidden === 'undefined') {\n options.visible = true;\n }\n else {\n options.visible = !options.isHidden;\n }\n }\n this.isHidden = !options.visible;\n this.alignBottom = options.alignBottom || false;\n this.pane = options.pane || 'floatPane';\n this.enableEventPropagation = options.enableEventPropagation || false;\n this.div = null;\n this.closeListener = null;\n this.moveListener = null;\n this.mapListener = null;\n this.contextListener = null;\n this.eventListeners = null;\n this.fixedWidthSet = null;\n }\n InfoBox.prototype.createInfoBoxDiv = function () {\n var _this = this;\n // This handler ignores the current event in the InfoBox and conditionally prevents\n // the event from being passed on to the map. It is used for the contextmenu event.\n var ignoreHandler = function (event) {\n event.returnValue = false;\n if (event.preventDefault) {\n event.preventDefault();\n }\n if (!_this.enableEventPropagation) {\n cancelHandler(event);\n }\n };\n if (!this.div) {\n this.div = document.createElement('div');\n this.setBoxStyle();\n if (typeof this.content === 'string') {\n this.div.innerHTML = this.getCloseBoxImg() + this.content;\n }\n else {\n this.div.innerHTML = this.getCloseBoxImg();\n this.div.appendChild(this.content);\n }\n var panes = this.getPanes();\n if (panes !== null) {\n panes[this.pane].appendChild(this.div); // Add the InfoBox div to the DOM\n }\n this.addClickHandler();\n if (this.div.style.width) {\n this.fixedWidthSet = true;\n }\n else {\n if (this.maxWidth !== 0 && this.div.offsetWidth > this.maxWidth) {\n this.div.style.width = this.maxWidth + 'px';\n this.fixedWidthSet = true;\n }\n else {\n // The following code is needed to overcome problems with MSIE\n var bw = this.getBoxWidths();\n this.div.style.width = this.div.offsetWidth - bw.left - bw.right + 'px';\n this.fixedWidthSet = false;\n }\n }\n this.panBox(this.disableAutoPan);\n if (!this.enableEventPropagation) {\n this.eventListeners = [];\n // Cancel event propagation.\n // Note: mousemove not included (to resolve Issue 152)\n var events = [\n 'mousedown',\n 'mouseover',\n 'mouseout',\n 'mouseup',\n 'click',\n 'dblclick',\n 'touchstart',\n 'touchend',\n 'touchmove',\n ];\n for (var _i = 0, events_1 = events; _i < events_1.length; _i++) {\n var event_1 = events_1[_i];\n this.eventListeners.push(google.maps.event.addListener(this.div, event_1, cancelHandler));\n }\n // Workaround for Google bug that causes the cursor to change to a pointer\n // when the mouse moves over a marker underneath InfoBox.\n this.eventListeners.push(google.maps.event.addListener(this.div, 'mouseover', function () {\n if (_this.div) {\n _this.div.style.cursor = 'default';\n }\n }));\n }\n this.contextListener = google.maps.event.addListener(this.div, 'contextmenu', ignoreHandler);\n /**\n * This event is fired when the DIV containing the InfoBox's content is attached to the DOM.\n * @name InfoBox#domready\n * @event\n */\n google.maps.event.trigger(this, 'domready');\n }\n };\n InfoBox.prototype.getCloseBoxImg = function () {\n var img = '';\n if (this.closeBoxURL !== '') {\n img = '<img alt=\"\"';\n img += ' aria-hidden=\"true\"';\n img += \" src='\" + this.closeBoxURL + \"'\";\n img += ' align=right'; // Do this because Opera chokes on style='float: right;'\n img += \" style='\";\n img += ' position: relative;'; // Required by MSIE\n img += ' cursor: pointer;';\n img += ' margin: ' + this.closeBoxMargin + ';';\n img += \"'>\";\n }\n return img;\n };\n InfoBox.prototype.addClickHandler = function () {\n this.closeListener = this.div && this.div.firstChild && this.closeBoxURL !== ''\n ? google.maps.event.addListener(this.div.firstChild, 'click', this.getCloseClickHandler())\n : null;\n };\n InfoBox.prototype.closeClickHandler = function (event) {\n // 1.0.3 fix: Always prevent propagation of a close box click to the map:\n event.cancelBubble = true;\n if (event.stopPropagation) {\n event.stopPropagation();\n }\n /**\n * This event is fired when the InfoBox's close box is clicked.\n * @name InfoBox#closeclick\n * @event\n */\n google.maps.event.trigger(this, 'closeclick');\n this.close();\n };\n InfoBox.prototype.getCloseClickHandler = function () {\n return this.closeClickHandler;\n };\n InfoBox.prototype.panBox = function (disablePan) {\n if (this.div && !disablePan) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n var map = this.getMap();\n // Only pan if attached to map, not panorama\n if (map instanceof google.maps.Map) {\n var xOffset = 0;\n var yOffset = 0;\n var bounds = map.getBounds();\n if (bounds && !bounds.contains(this.position)) {\n // Marker not in visible area of map, so set center\n // of map to the marker position first.\n map.setCenter(this.position);\n }\n var mapDiv = map.getDiv();\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n var mapWidth = mapDiv.offsetWidth;\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n var mapHeight = mapDiv.offsetHeight;\n var iwOffsetX = this.pixelOffset.width;\n var iwOffsetY = this.pixelOffset.height;\n var iwWidth = this.div.offsetWidth;\n var iwHeight = this.div.offsetHeight;\n var padX = this.infoBoxClearance.width;\n var padY = this.infoBoxClearance.height;\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n var projection = this.getProjection();\n var pixPosition = projection.fromLatLngToContainerPixel(this.position);\n if (pixPosition !== null) {\n if (pixPosition.x < -iwOffsetX + padX) {\n xOffset = pixPosition.x + iwOffsetX - padX;\n }\n else if (pixPosition.x + iwWidth + iwOffsetX + padX > mapWidth) {\n xOffset = pixPosition.x + iwWidth + iwOffsetX + padX - mapWidth;\n }\n if (this.alignBottom) {\n if (pixPosition.y < -iwOffsetY + padY + iwHeight) {\n yOffset = pixPosition.y + iwOffsetY - padY - iwHeight;\n }\n else if (pixPosition.y + iwOffsetY + padY > mapHeight) {\n yOffset = pixPosition.y + iwOffsetY + padY - mapHeight;\n }\n }\n else {\n if (pixPosition.y < -iwOffsetY + padY) {\n yOffset = pixPosition.y + iwOffsetY - padY;\n }\n else if (pixPosition.y + iwHeight + iwOffsetY + padY > mapHeight) {\n yOffset = pixPosition.y + iwHeight + iwOffsetY + padY - mapHeight;\n }\n }\n }\n if (!(xOffset === 0 && yOffset === 0)) {\n // Move the map to the shifted center.\n map.panBy(xOffset, yOffset);\n }\n }\n }\n };\n InfoBox.prototype.setBoxStyle = function () {\n if (this.div) {\n // Apply style values from the style sheet defined in the boxClass parameter:\n this.div.className = this.boxClass;\n // Clear existing inline style values:\n this.div.style.cssText = '';\n // Apply style values defined in the boxStyle parameter:\n var boxStyle = this.boxStyle;\n for (var i in boxStyle) {\n if (Object.prototype.hasOwnProperty.call(boxStyle, i)) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n this.div.style[i] = boxStyle[i];\n }\n }\n // Fix for iOS disappearing InfoBox problem\n // See http://stackoverflow.com/questions/9229535/google-maps-markers-disappear-at-certain-zoom-level-only-on-iphone-ipad\n this.div.style.webkitTransform = 'translateZ(0)';\n // Fix up opacity style for benefit of MSIE\n if (typeof this.div.style.opacity !== 'undefined' && this.div.style.opacity !== '') {\n // See http://www.quirksmode.org/css/opacity.html\n var opacity = parseFloat(this.div.style.opacity || '');\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n this.div.style.msFilter =\n '\"progid:DXImageTransform.Microsoft.Alpha(Opacity=' + opacity * 100 + ')\"';\n this.div.style.filter = 'alpha(opacity=' + opacity * 100 + ')';\n }\n // Apply required styles\n this.div.style.position = 'absolute';\n this.div.style.visibility = 'hidden';\n if (this.zIndex !== null) {\n this.div.style.zIndex = this.zIndex + '';\n }\n if (!this.div.style.overflow) {\n this.div.style.overflow = 'auto';\n }\n }\n };\n InfoBox.prototype.getBoxWidths = function () {\n var bw = { top: 0, bottom: 0, left: 0, right: 0 };\n if (!this.div) {\n return bw;\n }\n if (document.defaultView) {\n var ownerDocument = this.div.ownerDocument;\n var computedStyle = ownerDocument && ownerDocument.defaultView\n ? ownerDocument.defaultView.getComputedStyle(this.div, '')\n : null;\n if (computedStyle) {\n // The computed styles are always in pixel units (good!)\n bw.top = parseInt(computedStyle.borderTopWidth || '', 10) || 0;\n bw.bottom = parseInt(computedStyle.borderBottomWidth || '', 10) || 0;\n bw.left = parseInt(computedStyle.borderLeftWidth || '', 10) || 0;\n bw.right = parseInt(computedStyle.borderRightWidth || '', 10) || 0;\n }\n }\n else if (\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n document.documentElement.currentStyle // MSIE\n ) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n var currentStyle = this.div.currentStyle;\n if (currentStyle) {\n // The current styles may not be in pixel units, but assume they are (bad!)\n bw.top = parseInt(currentStyle.borderTopWidth || '', 10) || 0;\n bw.bottom = parseInt(currentStyle.borderBottomWidth || '', 10) || 0;\n bw.left = parseInt(currentStyle.borderLeftWidth || '', 10) || 0;\n bw.right = parseInt(currentStyle.borderRightWidth || '', 10) || 0;\n }\n }\n return bw;\n };\n InfoBox.prototype.onRemove = function () {\n if (this.div && this.div.parentNode) {\n this.div.parentNode.removeChild(this.div);\n this.div = null;\n }\n };\n InfoBox.prototype.draw = function () {\n this.createInfoBoxDiv();\n if (this.div) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n var projection = this.getProjection();\n var pixPosition = projection.fromLatLngToDivPixel(this.position);\n if (pixPosition !== null) {\n this.div.style.left = pixPosition.x + this.pixelOffset.width + 'px';\n if (this.alignBottom) {\n this.div.style.bottom = -(pixPosition.y + this.pixelOffset.height) + 'px';\n }\n else {\n this.div.style.top = pixPosition.y + this.pixelOffset.height + 'px';\n }\n }\n if (this.isHidden) {\n this.div.style.visibility = 'hidden';\n }\n else {\n this.div.style.visibility = 'visible';\n }\n }\n };\n InfoBox.prototype.setOptions = function (options) {\n if (options === void 0) { options = {}; }\n if (typeof options.boxClass !== 'undefined') {\n // Must be first\n this.boxClass = options.boxClass;\n this.setBoxStyle();\n }\n if (typeof options.boxStyle !== 'undefined') {\n // Must be second\n this.boxStyle = options.boxStyle;\n this.setBoxStyle();\n }\n if (typeof options.content !== 'undefined') {\n this.setContent(options.content);\n }\n if (typeof options.disableAutoPan !== 'undefined') {\n this.disableAutoPan = options.disableAutoPan;\n }\n if (typeof options.maxWidth !== 'undefined') {\n this.maxWidth = options.maxWidth;\n }\n if (typeof options.pixelOffset !== 'undefined') {\n this.pixelOffset = options.pixelOffset;\n }\n if (typeof options.alignBottom !== 'undefined') {\n this.alignBottom = options.alignBottom;\n }\n if (typeof options.position !== 'undefined') {\n this.setPosition(options.position);\n }\n if (typeof options.zIndex !== 'undefined') {\n this.setZIndex(options.zIndex);\n }\n if (typeof options.closeBoxMargin !== 'undefined') {\n this.closeBoxMargin = options.closeBoxMargin;\n }\n if (typeof options.closeBoxURL !== 'undefined') {\n this.closeBoxURL = options.closeBoxURL;\n }\n if (typeof options.infoBoxClearance !== 'undefined') {\n this.infoBoxClearance = options.infoBoxClearance;\n }\n if (typeof options.isHidden !== 'undefined') {\n this.isHidden = options.isHidden;\n }\n if (typeof options.visible !== 'undefined') {\n this.isHidden = !options.visible;\n }\n if (typeof options.enableEventPropagation !== 'undefined') {\n this.enableEventPropagation = options.enableEventPropagation;\n }\n if (this.div) {\n this.draw();\n }\n };\n InfoBox.prototype.setContent = function (content) {\n this.content = content;\n if (this.div) {\n if (this.closeListener) {\n google.maps.event.removeListener(this.closeListener);\n this.closeListener = null;\n }\n // Odd code required to make things work with MSIE.\n if (!this.fixedWidthSet) {\n this.div.style.width = '';\n }\n if (typeof content === 'string') {\n this.div.innerHTML = this.getCloseBoxImg() + content;\n }\n else {\n this.div.innerHTML = this.getCloseBoxImg();\n this.div.appendChild(content);\n }\n // Perverse code required to make things work with MSIE.\n // (Ensures the close box does, in fact, float to the right.)\n if (!this.fixedWidthSet) {\n this.div.style.width = this.div.offsetWidth + 'px';\n if (typeof content === 'string') {\n this.div.innerHTML = this.getCloseBoxImg() + content;\n }\n else {\n this.div.innerHTML = this.getCloseBoxImg();\n this.div.appendChild(content);\n }\n }\n this.addClickHandler();\n }\n /**\n * This event is fired when the content of the InfoBox changes.\n * @name InfoBox#content_changed\n * @event\n */\n google.maps.event.trigger(this, 'content_changed');\n };\n InfoBox.prototype.setPosition = function (latLng) {\n this.position = latLng;\n if (this.div) {\n this.draw();\n }\n /**\n * This event is fired when the position of the InfoBox changes.\n * @name InfoBox#position_changed\n * @event\n */\n google.maps.event.trigger(this, 'position_changed');\n };\n InfoBox.prototype.setVisible = function (isVisible) {\n this.isHidden = !isVisible;\n if (this.div) {\n this.div.style.visibility = this.isHidden ? 'hidden' : 'visible';\n }\n };\n InfoBox.prototype.setZIndex = function (index) {\n this.zIndex = index;\n if (this.div) {\n this.div.style.zIndex = index + '';\n }\n /**\n * This event is fired when the zIndex of the InfoBox changes.\n * @name InfoBox#zindex_changed\n * @event\n */\n google.maps.event.trigger(this, 'zindex_changed');\n };\n InfoBox.prototype.getContent = function () {\n return this.content;\n };\n InfoBox.prototype.getPosition = function () {\n return this.position;\n };\n InfoBox.prototype.getZIndex = function () {\n return this.zIndex;\n };\n InfoBox.prototype.getVisible = function () {\n var map = this.getMap();\n return typeof map === 'undefined' || map === null ? false : !this.isHidden;\n };\n InfoBox.prototype.show = function () {\n this.isHidden = false;\n if (this.div) {\n this.div.style.visibility = 'visible';\n }\n };\n InfoBox.prototype.hide = function () {\n this.isHidden = true;\n if (this.div) {\n this.div.style.visibility = 'hidden';\n }\n };\n InfoBox.prototype.open = function (map, anchor) {\n var _this = this;\n if (anchor) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n this.position = anchor.getPosition();\n this.moveListener = google.maps.event.addListener(anchor, 'position_changed', function () {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n var position = anchor.getPosition();\n _this.setPosition(position);\n });\n this.mapListener = google.maps.event.addListener(anchor, 'map_changed', function () {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n _this.setMap(anchor.map);\n });\n }\n this.setMap(map);\n if (this.div) {\n this.panBox();\n }\n };\n InfoBox.prototype.close = function () {\n if (this.closeListener) {\n google.maps.event.removeListener(this.closeListener);\n this.closeListener = null;\n }\n if (this.eventListeners) {\n for (var _i = 0, _a = this.eventListeners; _i < _a.length; _i++) {\n var eventListener = _a[_i];\n google.maps.event.removeListener(eventListener);\n }\n this.eventListeners = null;\n }\n if (this.moveListener) {\n google.maps.event.removeListener(this.moveListener);\n this.moveListener = null;\n }\n if (this.mapListener) {\n google.maps.event.removeListener(this.mapListener);\n this.mapListener = null;\n }\n if (this.contextListener) {\n google.maps.event.removeListener(this.contextListener);\n this.contextListener = null;\n }\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n this.setMap(null);\n };\n InfoBox.prototype.extend = function (obj1, obj2) {\n return function applyExtend(object) {\n for (var property in object.prototype) {\n if (!Object.prototype.hasOwnProperty.call(this, property)) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n this.prototype[property] = object.prototype[property];\n }\n }\n return this;\n }.apply(obj1, [obj2]);\n };\n return InfoBox;\n}());\n\nvar eventMap$d = {\n onCloseClick: 'closeclick',\n onContentChanged: 'content_changed',\n onDomReady: 'domready',\n onPositionChanged: 'position_changed',\n onZindexChanged: 'zindex_changed',\n};\nvar updaterMap$d = {\n options: function (instance, options) {\n instance.setOptions(options);\n },\n position: function (instance, position) {\n if (position instanceof google.maps.LatLng) {\n instance.setPosition(position);\n }\n else {\n instance.setPosition(new google.maps.LatLng(position.lat, position.lng));\n }\n },\n visible: function (instance, visible) {\n instance.setVisible(visible);\n },\n zIndex: function (instance, zIndex) {\n instance.setZIndex(zIndex);\n },\n};\nvar defaultOptions$3 = {};\nfunction InfoBoxFunctional(_a) {\n var children = _a.children, anchor = _a.anchor, options = _a.options, position = _a.position, zIndex = _a.zIndex, onCloseClick = _a.onCloseClick, onDomReady = _a.onDomReady, onContentChanged = _a.onContentChanged, onPositionChanged = _a.onPositionChanged, onZindexChanged = _a.onZindexChanged, onLoad = _a.onLoad, onUnmount = _a.onUnmount;\n var map = useContext(MapContext);\n var _b = useState(null), instance = _b[0], setInstance = _b[1];\n var _c = useState(null), closeClickListener = _c[0], setCloseClickListener = _c[1];\n var _d = useState(null), domReadyClickListener = _d[0], setDomReadyClickListener = _d[1];\n var _e = useState(null), contentChangedClickListener = _e[0], setContentChangedClickListener = _e[1];\n var _f = useState(null), positionChangedClickListener = _f[0], setPositionChangedClickListener = _f[1];\n var _g = useState(null), zIndexChangedClickListener = _g[0], setZindexChangedClickListener = _g[1];\n var containerElementRef = useRef(null);\n // Order does matter\n useEffect(function () {\n if (map && instance !== null) {\n instance.close();\n if (anchor) {\n instance.open(map, anchor);\n }\n else if (instance.getPosition()) {\n instance.open(map);\n }\n }\n }, [map, instance, anchor]);\n useEffect(function () {\n if (options && instance !== null) {\n instance.setOptions(options);\n }\n }, [instance, options]);\n useEffect(function () {\n if (position && instance !== null) {\n var positionLatLng = position instanceof google.maps.LatLng\n ? position\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n : new google.maps.LatLng(position.lat, position.lng);\n instance.setPosition(positionLatLng);\n }\n }, [position]);\n useEffect(function () {\n if (typeof zIndex === 'number' && instance !== null) {\n instance.setZIndex(zIndex);\n }\n }, [zIndex]);\n useEffect(function () {\n if (instance && onCloseClick) {\n if (closeClickListener !== null) {\n google.maps.event.removeListener(closeClickListener);\n }\n setCloseClickListener(google.maps.event.addListener(instance, 'closeclick', onCloseClick));\n }\n }, [onCloseClick]);\n useEffect(function () {\n if (instance && onDomReady) {\n if (domReadyClickListener !== null) {\n google.maps.event.removeListener(domReadyClickListener);\n }\n setDomReadyClickListener(google.maps.event.addListener(instance, 'domready', onDomReady));\n }\n }, [onDomReady]);\n useEffect(function () {\n if (instance && onContentChanged) {\n if (contentChangedClickListener !== null) {\n google.maps.event.removeListener(contentChangedClickListener);\n }\n setContentChangedClickListener(google.maps.event.addListener(instance, 'content_changed', onContentChanged));\n }\n }, [onContentChanged]);\n useEffect(function () {\n if (instance && onPositionChanged) {\n if (positionChangedClickListener !== null) {\n google.maps.event.removeListener(positionChangedClickListener);\n }\n setPositionChangedClickListener(google.maps.event.addListener(instance, 'position_changed', onPositionChanged));\n }\n }, [onPositionChanged]);\n useEffect(function () {\n if (instance && onZindexChanged) {\n if (zIndexChangedClickListener !== null) {\n google.maps.event.removeListener(zIndexChangedClickListener);\n }\n setZindexChangedClickListener(google.maps.event.addListener(instance, 'zindex_changed', onZindexChanged));\n }\n }, [onZindexChanged]);\n useEffect(function () {\n if (map) {\n var _a = options || defaultOptions$3, position_1 = _a.position, infoBoxOptions = __rest$1(_a, [\"position\"]);\n var positionLatLng = void 0;\n if (position_1 && !(position_1 instanceof google.maps.LatLng)) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n positionLatLng = new google.maps.LatLng(position_1.lat, position_1.lng);\n }\n var infoBox = new InfoBox(__assign(__assign({}, infoBoxOptions), (positionLatLng ? { position: positionLatLng } : {})));\n containerElementRef.current = document.createElement('div');\n setInstance(infoBox);\n if (onCloseClick) {\n setCloseClickListener(google.maps.event.addListener(infoBox, 'closeclick', onCloseClick));\n }\n if (onDomReady) {\n setDomReadyClickListener(google.maps.event.addListener(infoBox, 'domready', onDomReady));\n }\n if (onContentChanged) {\n setContentChangedClickListener(google.maps.event.addListener(infoBox, 'content_changed', onContentChanged));\n }\n if (onPositionChanged) {\n setPositionChangedClickListener(google.maps.event.addListener(infoBox, 'position_changed', onPositionChanged));\n }\n if (onZindexChanged) {\n setZindexChangedClickListener(google.maps.event.addListener(infoBox, 'zindex_changed', onZindexChanged));\n }\n infoBox.setContent(containerElementRef.current);\n if (anchor) {\n infoBox.open(map, anchor);\n }\n else if (infoBox.getPosition()) {\n infoBox.open(map);\n }\n else {\n invariant$1(false, 'You must provide either an anchor or a position prop for <InfoBox>.');\n }\n if (onLoad) {\n onLoad(infoBox);\n }\n }\n return function () {\n if (instance !== null) {\n if (closeClickListener) {\n google.maps.event.removeListener(closeClickListener);\n }\n if (contentChangedClickListener) {\n google.maps.event.removeListener(contentChangedClickListener);\n }\n if (domReadyClickListener) {\n google.maps.event.removeListener(domReadyClickListener);\n }\n if (positionChangedClickListener) {\n google.maps.event.removeListener(positionChangedClickListener);\n }\n if (zIndexChangedClickListener) {\n google.maps.event.removeListener(zIndexChangedClickListener);\n }\n if (onUnmount) {\n onUnmount(instance);\n }\n instance.close();\n }\n };\n }, []);\n return containerElementRef.current ? createPortal(Children.only(children), containerElementRef.current) : null;\n}\nvar InfoBoxF = memo(InfoBoxFunctional);\nvar InfoBoxComponent = /** @class */ (function (_super) {\n __extends(InfoBoxComponent, _super);\n function InfoBoxComponent() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.registeredEvents = [];\n _this.containerElement = null;\n _this.state = {\n infoBox: null,\n };\n _this.open = function (infoBox, anchor) {\n if (anchor) {\n if (_this.context !== null) {\n infoBox.open(_this.context, anchor);\n }\n }\n else if (infoBox.getPosition()) {\n if (_this.context !== null) {\n infoBox.open(_this.context);\n }\n }\n else {\n invariant$1(false, 'You must provide either an anchor or a position prop for <InfoBox>.');\n }\n };\n _this.setInfoBoxCallback = function () {\n if (_this.state.infoBox !== null && _this.containerElement !== null) {\n _this.state.infoBox.setContent(_this.containerElement);\n _this.open(_this.state.infoBox, _this.props.anchor);\n if (_this.props.onLoad) {\n _this.props.onLoad(_this.state.infoBox);\n }\n }\n };\n return _this;\n }\n InfoBoxComponent.prototype.componentDidMount = function () {\n var _a = this.props.options || {}, position = _a.position, infoBoxOptions = __rest$1(_a, [\"position\"]);\n var positionLatLng;\n if (position && !(position instanceof google.maps.LatLng)) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n positionLatLng = new google.maps.LatLng(position.lat, position.lng);\n }\n var infoBox = new InfoBox(__assign(__assign({}, infoBoxOptions), (positionLatLng ? { position: positionLatLng } : {})));\n this.containerElement = document.createElement('div');\n this.registeredEvents = applyUpdatersToPropsAndRegisterEvents({\n updaterMap: updaterMap$d,\n eventMap: eventMap$d,\n prevProps: {},\n nextProps: this.props,\n instance: infoBox,\n });\n this.setState({ infoBox: infoBox }, this.setInfoBoxCallback);\n };\n InfoBoxComponent.prototype.componentDidUpdate = function (prevProps) {\n var infoBox = this.state.infoBox;\n if (infoBox !== null) {\n unregisterEvents(this.registeredEvents);\n this.registeredEvents = applyUpdatersToPropsAndRegisterEvents({\n updaterMap: updaterMap$d,\n eventMap: eventMap$d,\n prevProps: prevProps,\n nextProps: this.props,\n instance: infoBox,\n });\n }\n };\n InfoBoxComponent.prototype.componentWillUnmount = function () {\n var onUnmount = this.props.onUnmount;\n var infoBox = this.state.infoBox;\n if (infoBox !== null) {\n if (onUnmount) {\n onUnmount(infoBox);\n }\n unregisterEvents(this.registeredEvents);\n infoBox.close();\n }\n };\n InfoBoxComponent.prototype.render = function () {\n return this.containerElement ? createPortal(Children.only(this.props.children), this.containerElement) : null;\n };\n InfoBoxComponent.contextType = MapContext;\n return InfoBoxComponent;\n}(PureComponent));\n\n// do not edit .js files directly - edit src/index.jst\n\n\n\nvar fastDeepEqual = function equal(a, b) {\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n\n var length, i, keys;\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n\n for (i = length; i-- !== 0;) {\n var key = keys[i];\n\n if (!equal(a[key], b[key])) return false;\n }\n\n return true;\n }\n\n // true if both NaN, false otherwise\n return a!==a && b!==b;\n};\n\nvar equal = /*@__PURE__*/getDefaultExportFromCjs(fastDeepEqual);\n\nconst ARRAY_TYPES = [\n Int8Array, Uint8Array, Uint8ClampedArray, Int16Array, Uint16Array,\n Int32Array, Uint32Array, Float32Array, Float64Array\n];\n\n/** @typedef {Int8ArrayConstructor | Uint8ArrayConstructor | Uint8ClampedArrayConstructor | Int16ArrayConstructor | Uint16ArrayConstructor | Int32ArrayConstructor | Uint32ArrayConstructor | Float32ArrayConstructor | Float64ArrayConstructor} TypedArrayConstructor */\n\nconst VERSION = 1; // serialized format version\nconst HEADER_SIZE = 8;\n\nclass KDBush {\n\n /**\n * Creates an index from raw `ArrayBuffer` data.\n * @param {ArrayBuffer} data\n */\n static from(data) {\n if (!(data instanceof ArrayBuffer)) {\n throw new Error('Data must be an instance of ArrayBuffer.');\n }\n const [magic, versionAndType] = new Uint8Array(data, 0, 2);\n if (magic !== 0xdb) {\n throw new Error('Data does not appear to be in a KDBush format.');\n }\n const version = versionAndType >> 4;\n if (version !== VERSION) {\n throw new Error(`Got v${version} data when expected v${VERSION}.`);\n }\n const ArrayType = ARRAY_TYPES[versionAndType & 0x0f];\n if (!ArrayType) {\n throw new Error('Unrecognized array type.');\n }\n const [nodeSize] = new Uint16Array(data, 2, 1);\n const [numItems] = new Uint32Array(data, 4, 1);\n\n return new KDBush(numItems, nodeSize, ArrayType, data);\n }\n\n /**\n * Creates an index that will hold a given number of items.\n * @param {number} numItems\n * @param {number} [nodeSize=64] Size of the KD-tree node (64 by default).\n * @param {TypedArrayConstructor} [ArrayType=Float64Array] The array type used for coordinates storage (`Float64Array` by default).\n * @param {ArrayBuffer} [data] (For internal use only)\n */\n constructor(numItems, nodeSize = 64, ArrayType = Float64Array, data) {\n if (isNaN(numItems) || numItems < 0) throw new Error(`Unpexpected numItems value: ${numItems}.`);\n\n this.numItems = +numItems;\n this.nodeSize = Math.min(Math.max(+nodeSize, 2), 65535);\n this.ArrayType = ArrayType;\n this.IndexArrayType = numItems < 65536 ? Uint16Array : Uint32Array;\n\n const arrayTypeIndex = ARRAY_TYPES.indexOf(this.ArrayType);\n const coordsByteSize = numItems * 2 * this.ArrayType.BYTES_PER_ELEMENT;\n const idsByteSize = numItems * this.IndexArrayType.BYTES_PER_ELEMENT;\n const padCoords = (8 - idsByteSize % 8) % 8;\n\n if (arrayTypeIndex < 0) {\n throw new Error(`Unexpected typed array class: ${ArrayType}.`);\n }\n\n if (data && (data instanceof ArrayBuffer)) { // reconstruct an index from a buffer\n this.data = data;\n this.ids = new this.IndexArrayType(this.data, HEADER_SIZE, numItems);\n this.coords = new this.ArrayType(this.data, HEADER_SIZE + idsByteSize + padCoords, numItems * 2);\n this._pos = numItems * 2;\n this._finished = true;\n } else { // initialize a new index\n this.data = new ArrayBuffer(HEADER_SIZE + coordsByteSize + idsByteSize + padCoords);\n this.ids = new this.IndexArrayType(this.data, HEADER_SIZE, numItems);\n this.coords = new this.ArrayType(this.data, HEADER_SIZE + idsByteSize + padCoords, numItems * 2);\n this._pos = 0;\n this._finished = false;\n\n // set header\n new Uint8Array(this.data, 0, 2).set([0xdb, (VERSION << 4) + arrayTypeIndex]);\n new Uint16Array(this.data, 2, 1)[0] = nodeSize;\n new Uint32Array(this.data, 4, 1)[0] = numItems;\n }\n }\n\n /**\n * Add a point to the index.\n * @param {number} x\n * @param {number} y\n * @returns {number} An incremental index associated with the added item (starting from `0`).\n */\n add(x, y) {\n const index = this._pos >> 1;\n this.ids[index] = index;\n this.coords[this._pos++] = x;\n this.coords[this._pos++] = y;\n return index;\n }\n\n /**\n * Perform indexing of the added points.\n */\n finish() {\n const numAdded = this._pos >> 1;\n if (numAdded !== this.numItems) {\n throw new Error(`Added ${numAdded} items when expected ${this.numItems}.`);\n }\n // kd-sort both arrays for efficient search\n sort(this.ids, this.coords, this.nodeSize, 0, this.numItems - 1, 0);\n\n this._finished = true;\n return this;\n }\n\n /**\n * Search the index for items within a given bounding box.\n * @param {number} minX\n * @param {number} minY\n * @param {number} maxX\n * @param {number} maxY\n * @returns {number[]} An array of indices correponding to the found items.\n */\n range(minX, minY, maxX, maxY) {\n if (!this._finished) throw new Error('Data not yet indexed - call index.finish().');\n\n const {ids, coords, nodeSize} = this;\n const stack = [0, ids.length - 1, 0];\n const result = [];\n\n // recursively search for items in range in the kd-sorted arrays\n while (stack.length) {\n const axis = stack.pop() || 0;\n const right = stack.pop() || 0;\n const left = stack.pop() || 0;\n\n // if we reached \"tree node\", search linearly\n if (right - left <= nodeSize) {\n for (let i = left; i <= right; i++) {\n const x = coords[2 * i];\n const y = coords[2 * i + 1];\n if (x >= minX && x <= maxX && y >= minY && y <= maxY) result.push(ids[i]);\n }\n continue;\n }\n\n // otherwise find the middle index\n const m = (left + right) >> 1;\n\n // include the middle item if it's in range\n const x = coords[2 * m];\n const y = coords[2 * m + 1];\n if (x >= minX && x <= maxX && y >= minY && y <= maxY) result.push(ids[m]);\n\n // queue search in halves that intersect the query\n if (axis === 0 ? minX <= x : minY <= y) {\n stack.push(left);\n stack.push(m - 1);\n stack.push(1 - axis);\n }\n if (axis === 0 ? maxX >= x : maxY >= y) {\n stack.push(m + 1);\n stack.push(right);\n stack.push(1 - axis);\n }\n }\n\n return result;\n }\n\n /**\n * Search the index for items within a given radius.\n * @param {number} qx\n * @param {number} qy\n * @param {number} r Query radius.\n * @returns {number[]} An array of indices correponding to the found items.\n */\n within(qx, qy, r) {\n if (!this._finished) throw new Error('Data not yet indexed - call index.finish().');\n\n const {ids, coords, nodeSize} = this;\n const stack = [0, ids.length - 1, 0];\n const result = [];\n const r2 = r * r;\n\n // recursively search for items within radius in the kd-sorted arrays\n while (stack.length) {\n const axis = stack.pop() || 0;\n const right = stack.pop() || 0;\n const left = stack.pop() || 0;\n\n // if we reached \"tree node\", search linearly\n if (right - left <= nodeSize) {\n for (let i = left; i <= right; i++) {\n if (sqDist(coords[2 * i], coords[2 * i + 1], qx, qy) <= r2) result.push(ids[i]);\n }\n continue;\n }\n\n // otherwise find the middle index\n const m = (left + right) >> 1;\n\n // include the middle item if it's in range\n const x = coords[2 * m];\n const y = coords[2 * m + 1];\n if (sqDist(x, y, qx, qy) <= r2) result.push(ids[m]);\n\n // queue search in halves that intersect the query\n if (axis === 0 ? qx - r <= x : qy - r <= y) {\n stack.push(left);\n stack.push(m - 1);\n stack.push(1 - axis);\n }\n if (axis === 0 ? qx + r >= x : qy + r >= y) {\n stack.push(m + 1);\n stack.push(right);\n stack.push(1 - axis);\n }\n }\n\n return result;\n }\n}\n\n/**\n * @param {Uint16Array | Uint32Array} ids\n * @param {InstanceType<TypedArrayConstructor>} coords\n * @param {number} nodeSize\n * @param {number} left\n * @param {number} right\n * @param {number} axis\n */\nfunction sort(ids, coords, nodeSize, left, right, axis) {\n if (right - left <= nodeSize) return;\n\n const m = (left + right) >> 1; // middle index\n\n // sort ids and coords around the middle index so that the halves lie\n // either left/right or top/bottom correspondingly (taking turns)\n select(ids, coords, m, left, right, axis);\n\n // recursively kd-sort first half and second half on the opposite axis\n sort(ids, coords, nodeSize, left, m - 1, 1 - axis);\n sort(ids, coords, nodeSize, m + 1, right, 1 - axis);\n}\n\n/**\n * Custom Floyd-Rivest selection algorithm: sort ids and coords so that\n * [left..k-1] items are smaller than k-th item (on either x or y axis)\n * @param {Uint16Array | Uint32Array} ids\n * @param {InstanceType<TypedArrayConstructor>} coords\n * @param {number} k\n * @param {number} left\n * @param {number} right\n * @param {number} axis\n */\nfunction select(ids, coords, k, left, right, axis) {\n\n while (right > left) {\n if (right - left > 600) {\n const n = right - left + 1;\n const m = k - left + 1;\n const z = Math.log(n);\n const s = 0.5 * Math.exp(2 * z / 3);\n const sd = 0.5 * Math.sqrt(z * s * (n - s) / n) * (m - n / 2 < 0 ? -1 : 1);\n const newLeft = Math.max(left, Math.floor(k - m * s / n + sd));\n const newRight = Math.min(right, Math.floor(k + (n - m) * s / n + sd));\n select(ids, coords, k, newLeft, newRight, axis);\n }\n\n const t = coords[2 * k + axis];\n let i = left;\n let j = right;\n\n swapItem(ids, coords, left, k);\n if (coords[2 * right + axis] > t) swapItem(ids, coords, left, right);\n\n while (i < j) {\n swapItem(ids, coords, i, j);\n i++;\n j--;\n while (coords[2 * i + axis] < t) i++;\n while (coords[2 * j + axis] > t) j--;\n }\n\n if (coords[2 * left + axis] === t) swapItem(ids, coords, left, j);\n else {\n j++;\n swapItem(ids, coords, j, right);\n }\n\n if (j <= k) left = j + 1;\n if (k <= j) right = j - 1;\n }\n}\n\n/**\n * @param {Uint16Array | Uint32Array} ids\n * @param {InstanceType<TypedArrayConstructor>} coords\n * @param {number} i\n * @param {number} j\n */\nfunction swapItem(ids, coords, i, j) {\n swap(ids, i, j);\n swap(coords, 2 * i, 2 * j);\n swap(coords, 2 * i + 1, 2 * j + 1);\n}\n\n/**\n * @param {InstanceType<TypedArrayConstructor>} arr\n * @param {number} i\n * @param {number} j\n */\nfunction swap(arr, i, j) {\n const tmp = arr[i];\n arr[i] = arr[j];\n arr[j] = tmp;\n}\n\n/**\n * @param {number} ax\n * @param {number} ay\n * @param {number} bx\n * @param {number} by\n */\nfunction sqDist(ax, ay, bx, by) {\n const dx = ax - bx;\n const dy = ay - by;\n return dx * dx + dy * dy;\n}\n\nconst defaultOptions$2 = {\n minZoom: 0, // min zoom to generate clusters on\n maxZoom: 16, // max zoom level to cluster the points on\n minPoints: 2, // minimum points to form a cluster\n radius: 40, // cluster radius in pixels\n extent: 512, // tile extent (radius is calculated relative to it)\n nodeSize: 64, // size of the KD-tree leaf node, affects performance\n log: false, // whether to log timing info\n\n // whether to generate numeric ids for input features (in vector tiles)\n generateId: false,\n\n // a reduce function for calculating custom cluster properties\n reduce: null, // (accumulated, props) => { accumulated.sum += props.sum; }\n\n // properties to use for individual points when running the reducer\n map: props => props // props => ({sum: props.my_value})\n};\n\nconst fround = Math.fround || (tmp => ((x) => { tmp[0] = +x; return tmp[0]; }))(new Float32Array(1));\n\nconst OFFSET_ZOOM = 2;\nconst OFFSET_ID = 3;\nconst OFFSET_PARENT = 4;\nconst OFFSET_NUM = 5;\nconst OFFSET_PROP = 6;\n\nclass Supercluster {\n constructor(options) {\n this.options = Object.assign(Object.create(defaultOptions$2), options);\n this.trees = new Array(this.options.maxZoom + 1);\n this.stride = this.options.reduce ? 7 : 6;\n this.clusterProps = [];\n }\n\n load(points) {\n const {log, minZoom, maxZoom} = this.options;\n\n if (log) console.time('total time');\n\n const timerId = `prepare ${ points.length } points`;\n if (log) console.time(timerId);\n\n this.points = points;\n\n // generate a cluster object for each point and index input points into a KD-tree\n const data = [];\n\n for (let i = 0; i < points.length; i++) {\n const p = points[i];\n if (!p.geometry) continue;\n\n const [lng, lat] = p.geometry.coordinates;\n const x = fround(lngX(lng));\n const y = fround(latY(lat));\n // store internal point/cluster data in flat numeric arrays for performance\n data.push(\n x, y, // projected point coordinates\n Infinity, // the last zoom the point was processed at\n i, // index of the source feature in the original input array\n -1, // parent cluster id\n 1 // number of points in a cluster\n );\n if (this.options.reduce) data.push(0); // noop\n }\n let tree = this.trees[maxZoom + 1] = this._createTree(data);\n\n if (log) console.timeEnd(timerId);\n\n // cluster points on max zoom, then cluster the results on previous zoom, etc.;\n // results in a cluster hierarchy across zoom levels\n for (let z = maxZoom; z >= minZoom; z--) {\n const now = +Date.now();\n\n // create a new set of clusters for the zoom and index them with a KD-tree\n tree = this.trees[z] = this._createTree(this._cluster(tree, z));\n\n if (log) console.log('z%d: %d clusters in %dms', z, tree.numItems, +Date.now() - now);\n }\n\n if (log) console.timeEnd('total time');\n\n return this;\n }\n\n getClusters(bbox, zoom) {\n let minLng = ((bbox[0] + 180) % 360 + 360) % 360 - 180;\n const minLat = Math.max(-90, Math.min(90, bbox[1]));\n let maxLng = bbox[2] === 180 ? 180 : ((bbox[2] + 180) % 360 + 360) % 360 - 180;\n const maxLat = Math.max(-90, Math.min(90, bbox[3]));\n\n if (bbox[2] - bbox[0] >= 360) {\n minLng = -180;\n maxLng = 180;\n } else if (minLng > maxLng) {\n const easternHem = this.getClusters([minLng, minLat, 180, maxLat], zoom);\n const westernHem = this.getClusters([-180, minLat, maxLng, maxLat], zoom);\n return easternHem.concat(westernHem);\n }\n\n const tree = this.trees[this._limitZoom(zoom)];\n const ids = tree.range(lngX(minLng), latY(maxLat), lngX(maxLng), latY(minLat));\n const data = tree.data;\n const clusters = [];\n for (const id of ids) {\n const k = this.stride * id;\n clusters.push(data[k + OFFSET_NUM] > 1 ? getClusterJSON(data, k, this.clusterProps) : this.points[data[k + OFFSET_ID]]);\n }\n return clusters;\n }\n\n getChildren(clusterId) {\n const originId = this._getOriginId(clusterId);\n const originZoom = this._getOriginZoom(clusterId);\n const errorMsg = 'No cluster with the specified id.';\n\n const tree = this.trees[originZoom];\n if (!tree) throw new Error(errorMsg);\n\n const data = tree.data;\n if (originId * this.stride >= data.length) throw new Error(errorMsg);\n\n const r = this.options.radius / (this.options.extent * Math.pow(2, originZoom - 1));\n const x = data[originId * this.stride];\n const y = data[originId * this.stride + 1];\n const ids = tree.within(x, y, r);\n const children = [];\n for (const id of ids) {\n const k = id * this.stride;\n if (data[k + OFFSET_PARENT] === clusterId) {\n children.push(data[k + OFFSET_NUM] > 1 ? getClusterJSON(data, k, this.clusterProps) : this.points[data[k + OFFSET_ID]]);\n }\n }\n\n if (children.length === 0) throw new Error(errorMsg);\n\n return children;\n }\n\n getLeaves(clusterId, limit, offset) {\n limit = limit || 10;\n offset = offset || 0;\n\n const leaves = [];\n this._appendLeaves(leaves, clusterId, limit, offset, 0);\n\n return leaves;\n }\n\n getTile(z, x, y) {\n const tree = this.trees[this._limitZoom(z)];\n const z2 = Math.pow(2, z);\n const {extent, radius} = this.options;\n const p = radius / extent;\n const top = (y - p) / z2;\n const bottom = (y + 1 + p) / z2;\n\n const tile = {\n features: []\n };\n\n this._addTileFeatures(\n tree.range((x - p) / z2, top, (x + 1 + p) / z2, bottom),\n tree.data, x, y, z2, tile);\n\n if (x === 0) {\n this._addTileFeatures(\n tree.range(1 - p / z2, top, 1, bottom),\n tree.data, z2, y, z2, tile);\n }\n if (x === z2 - 1) {\n this._addTileFeatures(\n tree.range(0, top, p / z2, bottom),\n tree.data, -1, y, z2, tile);\n }\n\n return tile.features.length ? tile : null;\n }\n\n getClusterExpansionZoom(clusterId) {\n let expansionZoom = this._getOriginZoom(clusterId) - 1;\n while (expansionZoom <= this.options.maxZoom) {\n const children = this.getChildren(clusterId);\n expansionZoom++;\n if (children.length !== 1) break;\n clusterId = children[0].properties.cluster_id;\n }\n return expansionZoom;\n }\n\n _appendLeaves(result, clusterId, limit, offset, skipped) {\n const children = this.getChildren(clusterId);\n\n for (const child of children) {\n const props = child.properties;\n\n if (props && props.cluster) {\n if (skipped + props.point_count <= offset) {\n // skip the whole cluster\n skipped += props.point_count;\n } else {\n // enter the cluster\n skipped = this._appendLeaves(result, props.cluster_id, limit, offset, skipped);\n // exit the cluster\n }\n } else if (skipped < offset) {\n // skip a single point\n skipped++;\n } else {\n // add a single point\n result.push(child);\n }\n if (result.length === limit) break;\n }\n\n return skipped;\n }\n\n _createTree(data) {\n const tree = new KDBush(data.length / this.stride | 0, this.options.nodeSize, Float32Array);\n for (let i = 0; i < data.length; i += this.stride) tree.add(data[i], data[i + 1]);\n tree.finish();\n tree.data = data;\n return tree;\n }\n\n _addTileFeatures(ids, data, x, y, z2, tile) {\n for (const i of ids) {\n const k = i * this.stride;\n const isCluster = data[k + OFFSET_NUM] > 1;\n\n let tags, px, py;\n if (isCluster) {\n tags = getClusterProperties(data, k, this.clusterProps);\n px = data[k];\n py = data[k + 1];\n } else {\n const p = this.points[data[k + OFFSET_ID]];\n tags = p.properties;\n const [lng, lat] = p.geometry.coordinates;\n px = lngX(lng);\n py = latY(lat);\n }\n\n const f = {\n type: 1,\n geometry: [[\n Math.round(this.options.extent * (px * z2 - x)),\n Math.round(this.options.extent * (py * z2 - y))\n ]],\n tags\n };\n\n // assign id\n let id;\n if (isCluster || this.options.generateId) {\n // optionally generate id for points\n id = data[k + OFFSET_ID];\n } else {\n // keep id if already assigned\n id = this.points[data[k + OFFSET_ID]].id;\n }\n\n if (id !== undefined) f.id = id;\n\n tile.features.push(f);\n }\n }\n\n _limitZoom(z) {\n return Math.max(this.options.minZoom, Math.min(Math.floor(+z), this.options.maxZoom + 1));\n }\n\n _cluster(tree, zoom) {\n const {radius, extent, reduce, minPoints} = this.options;\n const r = radius / (extent * Math.pow(2, zoom));\n const data = tree.data;\n const nextData = [];\n const stride = this.stride;\n\n // loop through each point\n for (let i = 0; i < data.length; i += stride) {\n // if we've already visited the point at this zoom level, skip it\n if (data[i + OFFSET_ZOOM] <= zoom) continue;\n data[i + OFFSET_ZOOM] = zoom;\n\n // find all nearby points\n const x = data[i];\n const y = data[i + 1];\n const neighborIds = tree.within(data[i], data[i + 1], r);\n\n const numPointsOrigin = data[i + OFFSET_NUM];\n let numPoints = numPointsOrigin;\n\n // count the number of points in a potential cluster\n for (const neighborId of neighborIds) {\n const k = neighborId * stride;\n // filter out neighbors that are already processed\n if (data[k + OFFSET_ZOOM] > zoom) numPoints += data[k + OFFSET_NUM];\n }\n\n // if there were neighbors to merge, and there are enough points to form a cluster\n if (numPoints > numPointsOrigin && numPoints >= minPoints) {\n let wx = x * numPointsOrigin;\n let wy = y * numPointsOrigin;\n\n let clusterProperties;\n let clusterPropIndex = -1;\n\n // encode both zoom and point index on which the cluster originated -- offset by total length of features\n const id = ((i / stride | 0) << 5) + (zoom + 1) + this.points.length;\n\n for (const neighborId of neighborIds) {\n const k = neighborId * stride;\n\n if (data[k + OFFSET_ZOOM] <= zoom) continue;\n data[k + OFFSET_ZOOM] = zoom; // save the zoom (so it doesn't get processed twice)\n\n const numPoints2 = data[k + OFFSET_NUM];\n wx += data[k] * numPoints2; // accumulate coordinates for calculating weighted center\n wy += data[k + 1] * numPoints2;\n\n data[k + OFFSET_PARENT] = id;\n\n if (reduce) {\n if (!clusterProperties) {\n clusterProperties = this._map(data, i, true);\n clusterPropIndex = this.clusterProps.length;\n this.clusterProps.push(clusterProperties);\n }\n reduce(clusterProperties, this._map(data, k));\n }\n }\n\n data[i + OFFSET_PARENT] = id;\n nextData.push(wx / numPoints, wy / numPoints, Infinity, id, -1, numPoints);\n if (reduce) nextData.push(clusterPropIndex);\n\n } else { // left points as unclustered\n for (let j = 0; j < stride; j++) nextData.push(data[i + j]);\n\n if (numPoints > 1) {\n for (const neighborId of neighborIds) {\n const k = neighborId * stride;\n if (data[k + OFFSET_ZOOM] <= zoom) continue;\n data[k + OFFSET_ZOOM] = zoom;\n for (let j = 0; j < stride; j++) nextData.push(data[k + j]);\n }\n }\n }\n }\n\n return nextData;\n }\n\n // get index of the point from which the cluster originated\n _getOriginId(clusterId) {\n return (clusterId - this.points.length) >> 5;\n }\n\n // get zoom of the point from which the cluster originated\n _getOriginZoom(clusterId) {\n return (clusterId - this.points.length) % 32;\n }\n\n _map(data, i, clone) {\n if (data[i + OFFSET_NUM] > 1) {\n const props = this.clusterProps[data[i + OFFSET_PROP]];\n return clone ? Object.assign({}, props) : props;\n }\n const original = this.points[data[i + OFFSET_ID]].properties;\n const result = this.options.map(original);\n return clone && result === original ? Object.assign({}, result) : result;\n }\n}\n\nfunction getClusterJSON(data, i, clusterProps) {\n return {\n type: 'Feature',\n id: data[i + OFFSET_ID],\n properties: getClusterProperties(data, i, clusterProps),\n geometry: {\n type: 'Point',\n coordinates: [xLng(data[i]), yLat(data[i + 1])]\n }\n };\n}\n\nfunction getClusterProperties(data, i, clusterProps) {\n const count = data[i + OFFSET_NUM];\n const abbrev =\n count >= 10000 ? `${Math.round(count / 1000) }k` :\n count >= 1000 ? `${Math.round(count / 100) / 10 }k` : count;\n const propIndex = data[i + OFFSET_PROP];\n const properties = propIndex === -1 ? {} : Object.assign({}, clusterProps[propIndex]);\n return Object.assign(properties, {\n cluster: true,\n cluster_id: data[i + OFFSET_ID],\n point_count: count,\n point_count_abbreviated: abbrev\n });\n}\n\n// longitude/latitude to spherical mercator in [0..1] range\nfunction lngX(lng) {\n return lng / 360 + 0.5;\n}\nfunction latY(lat) {\n const sin = Math.sin(lat * Math.PI / 180);\n const y = (0.5 - 0.25 * Math.log((1 + sin) / (1 - sin)) / Math.PI);\n return y < 0 ? 0 : y > 1 ? 1 : y;\n}\n\n// spherical mercator to longitude/latitude\nfunction xLng(x) {\n return (x - 0.5) * 360;\n}\nfunction yLat(y) {\n const y2 = (180 - y * 360) * Math.PI / 180;\n return 360 * Math.atan(Math.exp(y2)) / Math.PI - 90;\n}\n\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n\r\nfunction __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\n\n/**\n * Copyright 2023 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nclass MarkerUtils {\n static isAdvancedMarkerAvailable(map) {\n return (google.maps.marker &&\n map.getMapCapabilities().isAdvancedMarkersAvailable === true);\n }\n static isAdvancedMarker(marker) {\n return (google.maps.marker &&\n marker instanceof google.maps.marker.AdvancedMarkerElement);\n }\n static setMap(marker, map) {\n if (this.isAdvancedMarker(marker)) {\n marker.map = map;\n }\n else {\n marker.setMap(map);\n }\n }\n static getPosition(marker) {\n // SuperClusterAlgorithm.calculate expects a LatLng instance so we fake it for Adv Markers\n if (this.isAdvancedMarker(marker)) {\n if (marker.position) {\n if (marker.position instanceof google.maps.LatLng) {\n return marker.position;\n }\n // since we can't cast to LatLngLiteral for reasons =(\n if (marker.position.lat && marker.position.lng) {\n return new google.maps.LatLng(marker.position.lat, marker.position.lng);\n }\n }\n return new google.maps.LatLng(null);\n }\n return marker.getPosition();\n }\n static getVisible(marker) {\n if (this.isAdvancedMarker(marker)) {\n /**\n * Always return true for Advanced Markers because the clusterer\n * uses getVisible as a way to count legacy markers not as an actual\n * indicator of visibility for some reason. Even when markers are hidden\n * Marker.getVisible returns `true` and this is used to set the marker count\n * on the cluster. See the behavior of Cluster.count\n */\n return true;\n }\n return marker.getVisible();\n }\n}\n\n/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nclass Cluster {\n constructor({ markers, position }) {\n this.markers = markers;\n if (position) {\n if (position instanceof google.maps.LatLng) {\n this._position = position;\n }\n else {\n this._position = new google.maps.LatLng(position);\n }\n }\n }\n get bounds() {\n if (this.markers.length === 0 && !this._position) {\n return;\n }\n const bounds = new google.maps.LatLngBounds(this._position, this._position);\n for (const marker of this.markers) {\n bounds.extend(MarkerUtils.getPosition(marker));\n }\n return bounds;\n }\n get position() {\n return this._position || this.bounds.getCenter();\n }\n /**\n * Get the count of **visible** markers.\n */\n get count() {\n return this.markers.filter((m) => MarkerUtils.getVisible(m)).length;\n }\n /**\n * Add a marker to the cluster.\n */\n push(marker) {\n this.markers.push(marker);\n }\n /**\n * Cleanup references and remove marker from map.\n */\n delete() {\n if (this.marker) {\n MarkerUtils.setMap(this.marker, null);\n this.marker = undefined;\n }\n this.markers.length = 0;\n }\n}\n\n/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Returns the markers visible in a padded map viewport\n *\n * @param map\n * @param mapCanvasProjection\n * @param markers The list of marker to filter\n * @param viewportPaddingPixels The padding in pixel\n * @returns The list of markers in the padded viewport\n */\nconst filterMarkersToPaddedViewport = (map, mapCanvasProjection, markers, viewportPaddingPixels) => {\n const extendedMapBounds = extendBoundsToPaddedViewport(map.getBounds(), mapCanvasProjection, viewportPaddingPixels);\n return markers.filter((marker) => extendedMapBounds.contains(MarkerUtils.getPosition(marker)));\n};\n/**\n * Extends a bounds by a number of pixels in each direction\n */\nconst extendBoundsToPaddedViewport = (bounds, projection, numPixels) => {\n const { northEast, southWest } = latLngBoundsToPixelBounds(bounds, projection);\n const extendedPixelBounds = extendPixelBounds({ northEast, southWest }, numPixels);\n return pixelBoundsToLatLngBounds(extendedPixelBounds, projection);\n};\n/**\n * Returns the distance between 2 positions.\n *\n * @hidden\n */\nconst distanceBetweenPoints = (p1, p2) => {\n const R = 6371; // Radius of the Earth in km\n const dLat = ((p2.lat - p1.lat) * Math.PI) / 180;\n const dLon = ((p2.lng - p1.lng) * Math.PI) / 180;\n const sinDLat = Math.sin(dLat / 2);\n const sinDLon = Math.sin(dLon / 2);\n const a = sinDLat * sinDLat +\n Math.cos((p1.lat * Math.PI) / 180) *\n Math.cos((p2.lat * Math.PI) / 180) *\n sinDLon *\n sinDLon;\n const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));\n return R * c;\n};\n/**\n * Converts a LatLng bound to pixels.\n *\n * @hidden\n */\nconst latLngBoundsToPixelBounds = (bounds, projection) => {\n return {\n northEast: projection.fromLatLngToDivPixel(bounds.getNorthEast()),\n southWest: projection.fromLatLngToDivPixel(bounds.getSouthWest()),\n };\n};\n/**\n * Extends a pixel bounds by numPixels in all directions.\n *\n * @hidden\n */\nconst extendPixelBounds = ({ northEast, southWest }, numPixels) => {\n northEast.x += numPixels;\n northEast.y -= numPixels;\n southWest.x -= numPixels;\n southWest.y += numPixels;\n return { northEast, southWest };\n};\n/**\n * @hidden\n */\nconst pixelBoundsToLatLngBounds = ({ northEast, southWest }, projection) => {\n const sw = projection.fromDivPixelToLatLng(southWest);\n const ne = projection.fromDivPixelToLatLng(northEast);\n return new google.maps.LatLngBounds(sw, ne);\n};\n\n/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * @hidden\n */\nclass AbstractAlgorithm {\n constructor({ maxZoom = 16 }) {\n this.maxZoom = maxZoom;\n }\n /**\n * Helper function to bypass clustering based upon some map state such as\n * zoom, number of markers, etc.\n *\n * ```typescript\n * cluster({markers, map}: AlgorithmInput): Cluster[] {\n * if (shouldBypassClustering(map)) {\n * return this.noop({markers})\n * }\n * }\n * ```\n */\n noop({ markers, }) {\n return noop$1(markers);\n }\n}\n/**\n * Abstract viewport algorithm proves a class to filter markers by a padded\n * viewport. This is a common optimization.\n *\n * @hidden\n */\nclass AbstractViewportAlgorithm extends AbstractAlgorithm {\n constructor(_a) {\n var { viewportPadding = 60 } = _a, options = __rest(_a, [\"viewportPadding\"]);\n super(options);\n this.viewportPadding = 60;\n this.viewportPadding = viewportPadding;\n }\n calculate({ markers, map, mapCanvasProjection, }) {\n if (map.getZoom() >= this.maxZoom) {\n return {\n clusters: this.noop({\n markers,\n }),\n changed: false,\n };\n }\n return {\n clusters: this.cluster({\n markers: filterMarkersToPaddedViewport(map, mapCanvasProjection, markers, this.viewportPadding),\n map,\n mapCanvasProjection,\n }),\n };\n }\n}\n/**\n * @hidden\n */\nconst noop$1 = (markers) => {\n const clusters = markers.map((marker) => new Cluster({\n position: MarkerUtils.getPosition(marker),\n markers: [marker],\n }));\n return clusters;\n};\n\n/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * The default Grid algorithm historically used in Google Maps marker\n * clustering.\n *\n * The Grid algorithm does not implement caching and markers may flash as the\n * viewport changes. Instead use {@link SuperClusterAlgorithm}.\n */\nclass GridAlgorithm extends AbstractViewportAlgorithm {\n constructor(_a) {\n var { maxDistance = 40000, gridSize = 40 } = _a, options = __rest(_a, [\"maxDistance\", \"gridSize\"]);\n super(options);\n this.clusters = [];\n this.state = { zoom: -1 };\n this.maxDistance = maxDistance;\n this.gridSize = gridSize;\n }\n calculate({ markers, map, mapCanvasProjection, }) {\n const state = { zoom: map.getZoom() };\n let changed = false;\n if (this.state.zoom >= this.maxZoom && state.zoom >= this.maxZoom) ;\n else {\n changed = !equal(this.state, state);\n }\n this.state = state;\n if (map.getZoom() >= this.maxZoom) {\n return {\n clusters: this.noop({\n markers,\n }),\n changed,\n };\n }\n return {\n clusters: this.cluster({\n markers: filterMarkersToPaddedViewport(map, mapCanvasProjection, markers, this.viewportPadding),\n map,\n mapCanvasProjection,\n }),\n };\n }\n cluster({ markers, map, mapCanvasProjection, }) {\n this.clusters = [];\n markers.forEach((marker) => {\n this.addToClosestCluster(marker, map, mapCanvasProjection);\n });\n return this.clusters;\n }\n addToClosestCluster(marker, map, projection) {\n let maxDistance = this.maxDistance; // Some large number\n let cluster = null;\n for (let i = 0; i < this.clusters.length; i++) {\n const candidate = this.clusters[i];\n const distance = distanceBetweenPoints(candidate.bounds.getCenter().toJSON(), MarkerUtils.getPosition(marker).toJSON());\n if (distance < maxDistance) {\n maxDistance = distance;\n cluster = candidate;\n }\n }\n if (cluster &&\n extendBoundsToPaddedViewport(cluster.bounds, projection, this.gridSize).contains(MarkerUtils.getPosition(marker))) {\n cluster.push(marker);\n }\n else {\n const cluster = new Cluster({ markers: [marker] });\n this.clusters.push(cluster);\n }\n }\n}\n\n/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Noop algorithm does not generate any clusters or filter markers by the an extended viewport.\n */\nclass NoopAlgorithm extends AbstractAlgorithm {\n constructor(_a) {\n var options = __rest(_a, []);\n super(options);\n }\n calculate({ markers, map, mapCanvasProjection, }) {\n return {\n clusters: this.cluster({ markers, map, mapCanvasProjection }),\n changed: false,\n };\n }\n cluster(input) {\n return this.noop(input);\n }\n}\n\n/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * A very fast JavaScript algorithm for geospatial point clustering using KD trees.\n *\n * @see https://www.npmjs.com/package/supercluster for more information on options.\n */\nclass SuperClusterAlgorithm extends AbstractAlgorithm {\n constructor(_a) {\n var { maxZoom, radius = 60 } = _a, options = __rest(_a, [\"maxZoom\", \"radius\"]);\n super({ maxZoom });\n this.state = { zoom: -1 };\n this.superCluster = new Supercluster(Object.assign({ maxZoom: this.maxZoom, radius }, options));\n }\n calculate(input) {\n let changed = false;\n const state = { zoom: input.map.getZoom() };\n if (!equal(input.markers, this.markers)) {\n changed = true;\n // TODO use proxy to avoid copy?\n this.markers = [...input.markers];\n const points = this.markers.map((marker) => {\n const position = MarkerUtils.getPosition(marker);\n const coordinates = [position.lng(), position.lat()];\n return {\n type: \"Feature\",\n geometry: {\n type: \"Point\",\n coordinates,\n },\n properties: { marker },\n };\n });\n this.superCluster.load(points);\n }\n if (!changed) {\n if (this.state.zoom <= this.maxZoom || state.zoom <= this.maxZoom) {\n changed = !equal(this.state, state);\n }\n }\n this.state = state;\n if (changed) {\n this.clusters = this.cluster(input);\n }\n return { clusters: this.clusters, changed };\n }\n cluster({ map }) {\n return this.superCluster\n .getClusters([-180, -90, 180, 90], Math.round(map.getZoom()))\n .map((feature) => this.transformCluster(feature));\n }\n transformCluster({ geometry: { coordinates: [lng, lat], }, properties, }) {\n if (properties.cluster) {\n return new Cluster({\n markers: this.superCluster\n .getLeaves(properties.cluster_id, Infinity)\n .map((leaf) => leaf.properties.marker),\n position: { lat, lng },\n });\n }\n const marker = properties.marker;\n return new Cluster({\n markers: [marker],\n position: MarkerUtils.getPosition(marker),\n });\n }\n}\n\n/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Provides statistics on all clusters in the current render cycle for use in {@link Renderer.render}.\n */\nclass ClusterStats {\n constructor(markers, clusters) {\n this.markers = { sum: markers.length };\n const clusterMarkerCounts = clusters.map((a) => a.count);\n const clusterMarkerSum = clusterMarkerCounts.reduce((a, b) => a + b, 0);\n this.clusters = {\n count: clusters.length,\n markers: {\n mean: clusterMarkerSum / clusters.length,\n sum: clusterMarkerSum,\n min: Math.min(...clusterMarkerCounts),\n max: Math.max(...clusterMarkerCounts),\n },\n };\n }\n}\nclass DefaultRenderer {\n /**\n * The default render function for the library used by {@link MarkerClusterer}.\n *\n * Currently set to use the following:\n *\n * ```typescript\n * // change color if this cluster has more markers than the mean cluster\n * const color =\n * count > Math.max(10, stats.clusters.markers.mean)\n * ? \"#ff0000\"\n * : \"#0000ff\";\n *\n * // create svg url with fill color\n * const svg = window.btoa(`\n * <svg fill=\"${color}\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 240 240\">\n * <circle cx=\"120\" cy=\"120\" opacity=\".6\" r=\"70\" />\n * <circle cx=\"120\" cy=\"120\" opacity=\".3\" r=\"90\" />\n * <circle cx=\"120\" cy=\"120\" opacity=\".2\" r=\"110\" />\n * <circle cx=\"120\" cy=\"120\" opacity=\".1\" r=\"130\" />\n * </svg>`);\n *\n * // create marker using svg icon\n * return new google.maps.Marker({\n * position,\n * icon: {\n * url: `data:image/svg+xml;base64,${svg}`,\n * scaledSize: new google.maps.Size(45, 45),\n * },\n * label: {\n * text: String(count),\n * color: \"rgba(255,255,255,0.9)\",\n * fontSize: \"12px\",\n * },\n * // adjust zIndex to be above other markers\n * zIndex: 1000 + count,\n * });\n * ```\n */\n render({ count, position }, stats, map) {\n // change color if this cluster has more markers than the mean cluster\n const color = count > Math.max(10, stats.clusters.markers.mean) ? \"#ff0000\" : \"#0000ff\";\n // create svg literal with fill color\n const svg = `<svg fill=\"${color}\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 240 240\" width=\"50\" height=\"50\">\n<circle cx=\"120\" cy=\"120\" opacity=\".6\" r=\"70\" />\n<circle cx=\"120\" cy=\"120\" opacity=\".3\" r=\"90\" />\n<circle cx=\"120\" cy=\"120\" opacity=\".2\" r=\"110\" />\n<text x=\"50%\" y=\"50%\" style=\"fill:#fff\" text-anchor=\"middle\" font-size=\"50\" dominant-baseline=\"middle\" font-family=\"roboto,arial,sans-serif\">${count}</text>\n</svg>`;\n const title = `Cluster of ${count} markers`, \n // adjust zIndex to be above other markers\n zIndex = Number(google.maps.Marker.MAX_ZINDEX) + count;\n if (MarkerUtils.isAdvancedMarkerAvailable(map)) {\n // create cluster SVG element\n const div = document.createElement(\"div\");\n div.innerHTML = svg;\n const svgEl = div.firstElementChild;\n svgEl.setAttribute(\"transform\", \"translate(0 25)\");\n const clusterOptions = {\n map,\n position,\n zIndex,\n title,\n content: svgEl,\n };\n return new google.maps.marker.AdvancedMarkerElement(clusterOptions);\n }\n const clusterOptions = {\n position,\n zIndex,\n title,\n icon: {\n url: `data:image/svg+xml;base64,${btoa(svg)}`,\n anchor: new google.maps.Point(25, 25),\n },\n };\n return new google.maps.Marker(clusterOptions);\n }\n}\n\n/**\n * Copyright 2019 Google LLC. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Extends an object's prototype by another's.\n *\n * @param type1 The Type to be extended.\n * @param type2 The Type to extend with.\n * @ignore\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction extend(type1, type2) {\n /* istanbul ignore next */\n // eslint-disable-next-line prefer-const\n for (let property in type2.prototype) {\n type1.prototype[property] = type2.prototype[property];\n }\n}\n/**\n * @ignore\n */\nclass OverlayViewSafe {\n constructor() {\n // MarkerClusterer implements google.maps.OverlayView interface. We use the\n // extend function to extend MarkerClusterer with google.maps.OverlayView\n // because it might not always be available when the code is defined so we\n // look for it at the last possible moment. If it doesn't exist now then\n // there is no point going ahead :)\n extend(OverlayViewSafe, google.maps.OverlayView);\n }\n}\n\n/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar MarkerClustererEvents;\n(function (MarkerClustererEvents) {\n MarkerClustererEvents[\"CLUSTERING_BEGIN\"] = \"clusteringbegin\";\n MarkerClustererEvents[\"CLUSTERING_END\"] = \"clusteringend\";\n MarkerClustererEvents[\"CLUSTER_CLICK\"] = \"click\";\n})(MarkerClustererEvents || (MarkerClustererEvents = {}));\nconst defaultOnClusterClickHandler = (_, cluster, map) => {\n map.fitBounds(cluster.bounds);\n};\n/**\n * MarkerClusterer creates and manages per-zoom-level clusters for large amounts\n * of markers. See {@link MarkerClustererOptions} for more details.\n *\n */\nclass MarkerClusterer extends OverlayViewSafe {\n constructor({ map, markers = [], algorithmOptions = {}, algorithm = new SuperClusterAlgorithm(algorithmOptions), renderer = new DefaultRenderer(), onClusterClick = defaultOnClusterClickHandler, }) {\n super();\n this.markers = [...markers];\n this.clusters = [];\n this.algorithm = algorithm;\n this.renderer = renderer;\n this.onClusterClick = onClusterClick;\n if (map) {\n this.setMap(map);\n }\n }\n addMarker(marker, noDraw) {\n if (this.markers.includes(marker)) {\n return;\n }\n this.markers.push(marker);\n if (!noDraw) {\n this.render();\n }\n }\n addMarkers(markers, noDraw) {\n markers.forEach((marker) => {\n this.addMarker(marker, true);\n });\n if (!noDraw) {\n this.render();\n }\n }\n removeMarker(marker, noDraw) {\n const index = this.markers.indexOf(marker);\n if (index === -1) {\n // Marker is not in our list of markers, so do nothing:\n return false;\n }\n MarkerUtils.setMap(marker, null);\n this.markers.splice(index, 1); // Remove the marker from the list of managed markers\n if (!noDraw) {\n this.render();\n }\n return true;\n }\n removeMarkers(markers, noDraw) {\n let removed = false;\n markers.forEach((marker) => {\n removed = this.removeMarker(marker, true) || removed;\n });\n if (removed && !noDraw) {\n this.render();\n }\n return removed;\n }\n clearMarkers(noDraw) {\n this.markers.length = 0;\n if (!noDraw) {\n this.render();\n }\n }\n /**\n * Recalculates and draws all the marker clusters.\n */\n render() {\n const map = this.getMap();\n if (map instanceof google.maps.Map && map.getProjection()) {\n google.maps.event.trigger(this, MarkerClustererEvents.CLUSTERING_BEGIN, this);\n const { clusters, changed } = this.algorithm.calculate({\n markers: this.markers,\n map,\n mapCanvasProjection: this.getProjection(),\n });\n // Allow algorithms to return flag on whether the clusters/markers have changed.\n if (changed || changed == undefined) {\n // Accumulate the markers of the clusters composed of a single marker.\n // Those clusters directly use the marker.\n // Clusters with more than one markers use a group marker generated by a renderer.\n const singleMarker = new Set();\n for (const cluster of clusters) {\n if (cluster.markers.length == 1) {\n singleMarker.add(cluster.markers[0]);\n }\n }\n const groupMarkers = [];\n // Iterate the clusters that are currently rendered.\n for (const cluster of this.clusters) {\n if (cluster.marker == null) {\n continue;\n }\n if (cluster.markers.length == 1) {\n if (!singleMarker.has(cluster.marker)) {\n // The marker:\n // - was previously rendered because it is from a cluster with 1 marker,\n // - should no more be rendered as it is not in singleMarker.\n MarkerUtils.setMap(cluster.marker, null);\n }\n }\n else {\n // Delay the removal of old group markers to avoid flickering.\n groupMarkers.push(cluster.marker);\n }\n }\n this.clusters = clusters;\n this.renderClusters();\n // Delayed removal of the markers of the former groups.\n requestAnimationFrame(() => groupMarkers.forEach((marker) => MarkerUtils.setMap(marker, null)));\n }\n google.maps.event.trigger(this, MarkerClustererEvents.CLUSTERING_END, this);\n }\n }\n onAdd() {\n this.idleListener = this.getMap().addListener(\"idle\", this.render.bind(this));\n this.render();\n }\n onRemove() {\n google.maps.event.removeListener(this.idleListener);\n this.reset();\n }\n reset() {\n this.markers.forEach((marker) => MarkerUtils.setMap(marker, null));\n this.clusters.forEach((cluster) => cluster.delete());\n this.clusters = [];\n }\n renderClusters() {\n // Generate stats to pass to renderers.\n const stats = new ClusterStats(this.markers, this.clusters);\n const map = this.getMap();\n this.clusters.forEach((cluster) => {\n if (cluster.markers.length === 1) {\n cluster.marker = cluster.markers[0];\n }\n else {\n // Generate the marker to represent the group.\n cluster.marker = this.renderer.render(cluster, stats, map);\n // Make sure all individual markers are removed from the map.\n cluster.markers.forEach((marker) => MarkerUtils.setMap(marker, null));\n if (this.onClusterClick) {\n cluster.marker.addListener(\"click\", \n /* istanbul ignore next */\n (event) => {\n google.maps.event.trigger(this, MarkerClustererEvents.CLUSTER_CLICK, cluster);\n this.onClusterClick(event, cluster, map);\n });\n }\n }\n MarkerUtils.setMap(cluster.marker, map);\n });\n }\n}\n\nvar index_esm = /*#__PURE__*/Object.freeze({\n __proto__: null,\n AbstractAlgorithm: AbstractAlgorithm,\n AbstractViewportAlgorithm: AbstractViewportAlgorithm,\n Cluster: Cluster,\n ClusterStats: ClusterStats,\n DefaultRenderer: DefaultRenderer,\n GridAlgorithm: GridAlgorithm,\n MarkerClusterer: MarkerClusterer,\n get MarkerClustererEvents () { return MarkerClustererEvents; },\n NoopAlgorithm: NoopAlgorithm,\n SuperClusterAlgorithm: SuperClusterAlgorithm,\n defaultOnClusterClickHandler: defaultOnClusterClickHandler,\n distanceBetweenPoints: distanceBetweenPoints,\n extendBoundsToPaddedViewport: extendBoundsToPaddedViewport,\n extendPixelBounds: extendPixelBounds,\n filterMarkersToPaddedViewport: filterMarkersToPaddedViewport,\n noop: noop$1,\n pixelBoundsToLatLngBounds: pixelBoundsToLatLngBounds\n});\n\nfunction useGoogleMarkerClusterer(options) {\n var map = useGoogleMap();\n var _a = useState(null), markerClusterer = _a[0], setMarkerClusterer = _a[1];\n useEffect(function () {\n if (map && markerClusterer === null) {\n var markerCluster = new MarkerClusterer(__assign(__assign({}, options), { map: map }));\n setMarkerClusterer(markerCluster);\n }\n }, [map]);\n return markerClusterer;\n}\n/** Wrapper around [@googlemaps/markerclusterer](https://github.com/googlemaps/js-markerclusterer)\n *\n * Accepts {@link MarkerClustererOptionsSubset} which is a subset of {@link MarkerClustererOptions}\n */\nfunction GoogleMarkerClusterer(_a) {\n var children = _a.children, options = _a.options;\n var markerClusterer = useGoogleMarkerClusterer(options);\n return markerClusterer !== null ? children(markerClusterer) : null;\n}\nvar GoogleMarkerClusterer$1 = memo(GoogleMarkerClusterer);\n\nvar eventMap$c = {\n onCloseClick: 'closeclick',\n onContentChanged: 'content_changed',\n onDomReady: 'domready',\n onPositionChanged: 'position_changed',\n onZindexChanged: 'zindex_changed',\n};\nvar updaterMap$c = {\n options: function (instance, options) {\n instance.setOptions(options);\n },\n position: function (instance, position) {\n instance.setPosition(position);\n },\n zIndex: function (instance, zIndex) {\n instance.setZIndex(zIndex);\n },\n};\nfunction InfoWindowFunctional(_a) {\n var children = _a.children, anchor = _a.anchor, options = _a.options, position = _a.position, zIndex = _a.zIndex, onCloseClick = _a.onCloseClick, onDomReady = _a.onDomReady, onContentChanged = _a.onContentChanged, onPositionChanged = _a.onPositionChanged, onZindexChanged = _a.onZindexChanged, onLoad = _a.onLoad, onUnmount = _a.onUnmount;\n var map = useContext(MapContext);\n var _b = useState(null), instance = _b[0], setInstance = _b[1];\n var _c = useState(null), closeclickListener = _c[0], setCloseClickListener = _c[1];\n var _d = useState(null), domreadyclickListener = _d[0], setDomReadyClickListener = _d[1];\n var _e = useState(null), contentchangedclickListener = _e[0], setContentChangedClickListener = _e[1];\n var _f = useState(null), positionchangedclickListener = _f[0], setPositionChangedClickListener = _f[1];\n var _g = useState(null), zindexchangedclickListener = _g[0], setZindexChangedClickListener = _g[1];\n var containerElementRef = useRef(null);\n // Order does matter\n useEffect(function () {\n if (instance !== null) {\n instance.close();\n if (anchor) {\n instance.open(map, anchor);\n }\n else if (instance.getPosition()) {\n instance.open(map);\n }\n }\n }, [map, instance, anchor]);\n useEffect(function () {\n if (options && instance !== null) {\n instance.setOptions(options);\n }\n }, [instance, options]);\n useEffect(function () {\n if (position && instance !== null) {\n instance.setPosition(position);\n }\n }, [position]);\n useEffect(function () {\n if (typeof zIndex === 'number' && instance !== null) {\n instance.setZIndex(zIndex);\n }\n }, [zIndex]);\n useEffect(function () {\n if (instance && onCloseClick) {\n if (closeclickListener !== null) {\n google.maps.event.removeListener(closeclickListener);\n }\n setCloseClickListener(google.maps.event.addListener(instance, 'closeclick', onCloseClick));\n }\n }, [onCloseClick]);\n useEffect(function () {\n if (instance && onDomReady) {\n if (domreadyclickListener !== null) {\n google.maps.event.removeListener(domreadyclickListener);\n }\n setDomReadyClickListener(google.maps.event.addListener(instance, 'domready', onDomReady));\n }\n }, [onDomReady]);\n useEffect(function () {\n if (instance && onContentChanged) {\n if (contentchangedclickListener !== null) {\n google.maps.event.removeListener(contentchangedclickListener);\n }\n setContentChangedClickListener(google.maps.event.addListener(instance, 'content_changed', onContentChanged));\n }\n }, [onContentChanged]);\n useEffect(function () {\n if (instance && onPositionChanged) {\n if (positionchangedclickListener !== null) {\n google.maps.event.removeListener(positionchangedclickListener);\n }\n setPositionChangedClickListener(google.maps.event.addListener(instance, 'position_changed', onPositionChanged));\n }\n }, [onPositionChanged]);\n useEffect(function () {\n if (instance && onZindexChanged) {\n if (zindexchangedclickListener !== null) {\n google.maps.event.removeListener(zindexchangedclickListener);\n }\n setZindexChangedClickListener(google.maps.event.addListener(instance, 'zindex_changed', onZindexChanged));\n }\n }, [onZindexChanged]);\n useEffect(function () {\n var infoWindow = new google.maps.InfoWindow(__assign({}, (options || {})));\n setInstance(infoWindow);\n containerElementRef.current = document.createElement('div');\n if (onCloseClick) {\n setCloseClickListener(google.maps.event.addListener(infoWindow, 'closeclick', onCloseClick));\n }\n if (onDomReady) {\n setDomReadyClickListener(google.maps.event.addListener(infoWindow, 'domready', onDomReady));\n }\n if (onContentChanged) {\n setContentChangedClickListener(google.maps.event.addListener(infoWindow, 'content_changed', onContentChanged));\n }\n if (onPositionChanged) {\n setPositionChangedClickListener(google.maps.event.addListener(infoWindow, 'position_changed', onPositionChanged));\n }\n if (onZindexChanged) {\n setZindexChangedClickListener(google.maps.event.addListener(infoWindow, 'zindex_changed', onZindexChanged));\n }\n infoWindow.setContent(containerElementRef.current);\n if (position) {\n infoWindow.setPosition(position);\n }\n if (zIndex) {\n infoWindow.setZIndex(zIndex);\n }\n if (anchor) {\n infoWindow.open(map, anchor);\n }\n else if (infoWindow.getPosition()) {\n infoWindow.open(map);\n }\n else {\n invariant$1(false, \"You must provide either an anchor (typically render it inside a <Marker>) or a position props for <InfoWindow>.\");\n }\n if (onLoad) {\n onLoad(infoWindow);\n }\n return function () {\n if (closeclickListener) {\n google.maps.event.removeListener(closeclickListener);\n }\n if (contentchangedclickListener) {\n google.maps.event.removeListener(contentchangedclickListener);\n }\n if (domreadyclickListener) {\n google.maps.event.removeListener(domreadyclickListener);\n }\n if (positionchangedclickListener) {\n google.maps.event.removeListener(positionchangedclickListener);\n }\n if (zindexchangedclickListener) {\n google.maps.event.removeListener(zindexchangedclickListener);\n }\n if (onUnmount) {\n onUnmount(infoWindow);\n }\n infoWindow.close();\n };\n }, []);\n return containerElementRef.current ? (createPortal(Children.only(children), containerElementRef.current)) : (null);\n}\nvar InfoWindowF = memo(InfoWindowFunctional);\nvar InfoWindow = /** @class */ (function (_super) {\n __extends(InfoWindow, _super);\n function InfoWindow() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.registeredEvents = [];\n _this.containerElement = null;\n _this.state = {\n infoWindow: null,\n };\n _this.open = function (infoWindow, anchor) {\n if (anchor) {\n infoWindow.open(_this.context, anchor);\n }\n else if (infoWindow.getPosition()) {\n infoWindow.open(_this.context);\n }\n else {\n invariant$1(false, \"You must provide either an anchor (typically render it inside a <Marker>) or a position props for <InfoWindow>.\");\n }\n };\n _this.setInfoWindowCallback = function () {\n if (_this.state.infoWindow !== null && _this.containerElement !== null) {\n _this.state.infoWindow.setContent(_this.containerElement);\n _this.open(_this.state.infoWindow, _this.props.anchor);\n if (_this.props.onLoad) {\n _this.props.onLoad(_this.state.infoWindow);\n }\n }\n };\n return _this;\n }\n InfoWindow.prototype.componentDidMount = function () {\n var infoWindow = new google.maps.InfoWindow(__assign({}, (this.props.options || {})));\n this.containerElement = document.createElement('div');\n this.registeredEvents = applyUpdatersToPropsAndRegisterEvents({\n updaterMap: updaterMap$c,\n eventMap: eventMap$c,\n prevProps: {},\n nextProps: this.props,\n instance: infoWindow,\n });\n this.setState(function () {\n return {\n infoWindow: infoWindow,\n };\n }, this.setInfoWindowCallback);\n };\n InfoWindow.prototype.componentDidUpdate = function (prevProps) {\n if (this.state.infoWindow !== null) {\n unregisterEvents(this.registeredEvents);\n this.registeredEvents = applyUpdatersToPropsAndRegisterEvents({\n updaterMap: updaterMap$c,\n eventMap: eventMap$c,\n prevProps: prevProps,\n nextProps: this.props,\n instance: this.state.infoWindow,\n });\n }\n };\n InfoWindow.prototype.componentWillUnmount = function () {\n if (this.state.infoWindow !== null) {\n unregisterEvents(this.registeredEvents);\n if (this.props.onUnmount) {\n this.props.onUnmount(this.state.infoWindow);\n }\n this.state.infoWindow.close();\n }\n };\n InfoWindow.prototype.render = function () {\n return this.containerElement ? (createPortal(Children.only(this.props.children), this.containerElement)) : (null);\n };\n InfoWindow.contextType = MapContext;\n return InfoWindow;\n}(PureComponent));\n\nvar eventMap$b = {\n onClick: 'click',\n onDblClick: 'dblclick',\n onDrag: 'drag',\n onDragEnd: 'dragend',\n onDragStart: 'dragstart',\n onMouseDown: 'mousedown',\n onMouseMove: 'mousemove',\n onMouseOut: 'mouseout',\n onMouseOver: 'mouseover',\n onMouseUp: 'mouseup',\n onRightClick: 'rightclick',\n};\nvar updaterMap$b = {\n draggable: function (instance, draggable) {\n instance.setDraggable(draggable);\n },\n editable: function (instance, editable) {\n instance.setEditable(editable);\n },\n map: function (instance, map) {\n instance.setMap(map);\n },\n options: function (instance, options) {\n instance.setOptions(options);\n },\n path: function (instance, path) {\n instance.setPath(path);\n },\n visible: function (instance, visible) {\n instance.setVisible(visible);\n },\n};\nvar defaultOptions$1 = {};\nfunction PolylineFunctional(_a) {\n var options = _a.options, draggable = _a.draggable, editable = _a.editable, visible = _a.visible, path = _a.path, onDblClick = _a.onDblClick, onDragEnd = _a.onDragEnd, onDragStart = _a.onDragStart, onMouseDown = _a.onMouseDown, onMouseMove = _a.onMouseMove, onMouseOut = _a.onMouseOut, onMouseOver = _a.onMouseOver, onMouseUp = _a.onMouseUp, onRightClick = _a.onRightClick, onClick = _a.onClick, onDrag = _a.onDrag, onLoad = _a.onLoad, onUnmount = _a.onUnmount;\n var map = useContext(MapContext);\n var _b = useState(null), instance = _b[0], setInstance = _b[1];\n var _c = useState(null), dblclickListener = _c[0], setDblclickListener = _c[1];\n var _d = useState(null), dragendListener = _d[0], setDragendListener = _d[1];\n var _e = useState(null), dragstartListener = _e[0], setDragstartListener = _e[1];\n var _f = useState(null), mousedownListener = _f[0], setMousedownListener = _f[1];\n var _g = useState(null), mousemoveListener = _g[0], setMousemoveListener = _g[1];\n var _h = useState(null), mouseoutListener = _h[0], setMouseoutListener = _h[1];\n var _j = useState(null), mouseoverListener = _j[0], setMouseoverListener = _j[1];\n var _k = useState(null), mouseupListener = _k[0], setMouseupListener = _k[1];\n var _l = useState(null), rightclickListener = _l[0], setRightclickListener = _l[1];\n var _m = useState(null), clickListener = _m[0], setClickListener = _m[1];\n var _o = useState(null), dragListener = _o[0], setDragListener = _o[1];\n // Order does matter\n useEffect(function () {\n if (instance !== null) {\n instance.setMap(map);\n }\n }, [map]);\n useEffect(function () {\n if (typeof options !== 'undefined' && instance !== null) {\n instance.setOptions(options);\n }\n }, [instance, options]);\n useEffect(function () {\n if (typeof draggable !== 'undefined' && instance !== null) {\n instance.setDraggable(draggable);\n }\n }, [instance, draggable]);\n useEffect(function () {\n if (typeof editable !== 'undefined' && instance !== null) {\n instance.setEditable(editable);\n }\n }, [instance, editable]);\n useEffect(function () {\n if (typeof visible !== 'undefined' && instance !== null) {\n instance.setVisible(visible);\n }\n }, [instance, visible]);\n useEffect(function () {\n if (typeof path !== 'undefined' && instance !== null) {\n instance.setPath(path);\n }\n }, [instance, path]);\n useEffect(function () {\n if (instance && onDblClick) {\n if (dblclickListener !== null) {\n google.maps.event.removeListener(dblclickListener);\n }\n setDblclickListener(google.maps.event.addListener(instance, 'dblclick', onDblClick));\n }\n }, [onDblClick]);\n useEffect(function () {\n if (instance && onDragEnd) {\n if (dragendListener !== null) {\n google.maps.event.removeListener(dragendListener);\n }\n setDragendListener(google.maps.event.addListener(instance, 'dragend', onDragEnd));\n }\n }, [onDragEnd]);\n useEffect(function () {\n if (instance && onDragStart) {\n if (dragstartListener !== null) {\n google.maps.event.removeListener(dragstartListener);\n }\n setDragstartListener(google.maps.event.addListener(instance, 'dragstart', onDragStart));\n }\n }, [onDragStart]);\n useEffect(function () {\n if (instance && onMouseDown) {\n if (mousedownListener !== null) {\n google.maps.event.removeListener(mousedownListener);\n }\n setMousedownListener(google.maps.event.addListener(instance, 'mousedown', onMouseDown));\n }\n }, [onMouseDown]);\n useEffect(function () {\n if (instance && onMouseMove) {\n if (mousemoveListener !== null) {\n google.maps.event.removeListener(mousemoveListener);\n }\n setMousemoveListener(google.maps.event.addListener(instance, 'mousemove', onMouseMove));\n }\n }, [onMouseMove]);\n useEffect(function () {\n if (instance && onMouseOut) {\n if (mouseoutListener !== null) {\n google.maps.event.removeListener(mouseoutListener);\n }\n setMouseoutListener(google.maps.event.addListener(instance, 'mouseout', onMouseOut));\n }\n }, [onMouseOut]);\n useEffect(function () {\n if (instance && onMouseOver) {\n if (mouseoverListener !== null) {\n google.maps.event.removeListener(mouseoverListener);\n }\n setMouseoverListener(google.maps.event.addListener(instance, 'mouseover', onMouseOver));\n }\n }, [onMouseOver]);\n useEffect(function () {\n if (instance && onMouseUp) {\n if (mouseupListener !== null) {\n google.maps.event.removeListener(mouseupListener);\n }\n setMouseupListener(google.maps.event.addListener(instance, 'mouseup', onMouseUp));\n }\n }, [onMouseUp]);\n useEffect(function () {\n if (instance && onRightClick) {\n if (rightclickListener !== null) {\n google.maps.event.removeListener(rightclickListener);\n }\n setRightclickListener(google.maps.event.addListener(instance, 'rightclick', onRightClick));\n }\n }, [onRightClick]);\n useEffect(function () {\n if (instance && onClick) {\n if (clickListener !== null) {\n google.maps.event.removeListener(clickListener);\n }\n setClickListener(google.maps.event.addListener(instance, 'click', onClick));\n }\n }, [onClick]);\n useEffect(function () {\n if (instance && onDrag) {\n if (dragListener !== null) {\n google.maps.event.removeListener(dragListener);\n }\n setDragListener(google.maps.event.addListener(instance, 'drag', onDrag));\n }\n }, [onDrag]);\n useEffect(function () {\n var polyline = new google.maps.Polyline(__assign(__assign({}, (options || defaultOptions$1)), { map: map }));\n if (path) {\n polyline.setPath(path);\n }\n if (typeof visible !== 'undefined') {\n polyline.setVisible(visible);\n }\n if (typeof editable !== 'undefined') {\n polyline.setEditable(editable);\n }\n if (typeof draggable !== 'undefined') {\n polyline.setDraggable(draggable);\n }\n if (onDblClick) {\n setDblclickListener(google.maps.event.addListener(polyline, 'dblclick', onDblClick));\n }\n if (onDragEnd) {\n setDragendListener(google.maps.event.addListener(polyline, 'dragend', onDragEnd));\n }\n if (onDragStart) {\n setDragstartListener(google.maps.event.addListener(polyline, 'dragstart', onDragStart));\n }\n if (onMouseDown) {\n setMousedownListener(google.maps.event.addListener(polyline, 'mousedown', onMouseDown));\n }\n if (onMouseMove) {\n setMousemoveListener(google.maps.event.addListener(polyline, 'mousemove', onMouseMove));\n }\n if (onMouseOut) {\n setMouseoutListener(google.maps.event.addListener(polyline, 'mouseout', onMouseOut));\n }\n if (onMouseOver) {\n setMouseoverListener(google.maps.event.addListener(polyline, 'mouseover', onMouseOver));\n }\n if (onMouseUp) {\n setMouseupListener(google.maps.event.addListener(polyline, 'mouseup', onMouseUp));\n }\n if (onRightClick) {\n setRightclickListener(google.maps.event.addListener(polyline, 'rightclick', onRightClick));\n }\n if (onClick) {\n setClickListener(google.maps.event.addListener(polyline, 'click', onClick));\n }\n if (onDrag) {\n setDragListener(google.maps.event.addListener(polyline, 'drag', onDrag));\n }\n setInstance(polyline);\n if (onLoad) {\n onLoad(polyline);\n }\n return function () {\n if (dblclickListener !== null) {\n google.maps.event.removeListener(dblclickListener);\n }\n if (dragendListener !== null) {\n google.maps.event.removeListener(dragendListener);\n }\n if (dragstartListener !== null) {\n google.maps.event.removeListener(dragstartListener);\n }\n if (mousedownListener !== null) {\n google.maps.event.removeListener(mousedownListener);\n }\n if (mousemoveListener !== null) {\n google.maps.event.removeListener(mousemoveListener);\n }\n if (mouseoutListener !== null) {\n google.maps.event.removeListener(mouseoutListener);\n }\n if (mouseoverListener !== null) {\n google.maps.event.removeListener(mouseoverListener);\n }\n if (mouseupListener !== null) {\n google.maps.event.removeListener(mouseupListener);\n }\n if (rightclickListener !== null) {\n google.maps.event.removeListener(rightclickListener);\n }\n if (clickListener !== null) {\n google.maps.event.removeListener(clickListener);\n }\n if (onUnmount) {\n onUnmount(polyline);\n }\n polyline.setMap(null);\n };\n }, []);\n return null;\n}\nvar PolylineF = memo(PolylineFunctional);\nvar Polyline = /** @class */ (function (_super) {\n __extends(Polyline, _super);\n function Polyline() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.registeredEvents = [];\n _this.state = {\n polyline: null,\n };\n _this.setPolylineCallback = function () {\n if (_this.state.polyline !== null && _this.props.onLoad) {\n _this.props.onLoad(_this.state.polyline);\n }\n };\n return _this;\n }\n Polyline.prototype.componentDidMount = function () {\n var polyline = new google.maps.Polyline(__assign(__assign({}, (this.props.options || {})), { map: this.context }));\n this.registeredEvents = applyUpdatersToPropsAndRegisterEvents({\n updaterMap: updaterMap$b,\n eventMap: eventMap$b,\n prevProps: {},\n nextProps: this.props,\n instance: polyline,\n });\n this.setState(function setPolyline() {\n return {\n polyline: polyline,\n };\n }, this.setPolylineCallback);\n };\n Polyline.prototype.componentDidUpdate = function (prevProps) {\n if (this.state.polyline !== null) {\n unregisterEvents(this.registeredEvents);\n this.registeredEvents = applyUpdatersToPropsAndRegisterEvents({\n updaterMap: updaterMap$b,\n eventMap: eventMap$b,\n prevProps: prevProps,\n nextProps: this.props,\n instance: this.state.polyline,\n });\n }\n };\n Polyline.prototype.componentWillUnmount = function () {\n if (this.state.polyline !== null) {\n if (this.props.onUnmount) {\n this.props.onUnmount(this.state.polyline);\n }\n unregisterEvents(this.registeredEvents);\n this.state.polyline.setMap(null);\n }\n };\n Polyline.prototype.render = function () {\n return null;\n };\n Polyline.contextType = MapContext;\n return Polyline;\n}(PureComponent));\n\nvar eventMap$a = {\n onClick: 'click',\n onDblClick: 'dblclick',\n onDrag: 'drag',\n onDragEnd: 'dragend',\n onDragStart: 'dragstart',\n onMouseDown: 'mousedown',\n onMouseMove: 'mousemove',\n onMouseOut: 'mouseout',\n onMouseOver: 'mouseover',\n onMouseUp: 'mouseup',\n onRightClick: 'rightclick',\n};\nvar updaterMap$a = {\n draggable: function (instance, draggable) {\n instance.setDraggable(draggable);\n },\n editable: function (instance, editable) {\n instance.setEditable(editable);\n },\n map: function (instance, map) {\n instance.setMap(map);\n },\n options: function (instance, options) {\n instance.setOptions(options);\n },\n path: function (instance, path) {\n instance.setPath(path);\n },\n paths: function (instance, paths) {\n instance.setPaths(paths);\n },\n visible: function (instance, visible) {\n instance.setVisible(visible);\n },\n};\nfunction PolygonFunctional(_a) {\n var options = _a.options, draggable = _a.draggable, editable = _a.editable, visible = _a.visible, path = _a.path, paths = _a.paths, onDblClick = _a.onDblClick, onDragEnd = _a.onDragEnd, onDragStart = _a.onDragStart, onMouseDown = _a.onMouseDown, onMouseMove = _a.onMouseMove, onMouseOut = _a.onMouseOut, onMouseOver = _a.onMouseOver, onMouseUp = _a.onMouseUp, onRightClick = _a.onRightClick, onClick = _a.onClick, onDrag = _a.onDrag, onLoad = _a.onLoad, onUnmount = _a.onUnmount;\n var map = useContext(MapContext);\n var _b = useState(null), instance = _b[0], setInstance = _b[1];\n var _c = useState(null), dblclickListener = _c[0], setDblclickListener = _c[1];\n var _d = useState(null), dragendListener = _d[0], setDragendListener = _d[1];\n var _e = useState(null), dragstartListener = _e[0], setDragstartListener = _e[1];\n var _f = useState(null), mousedownListener = _f[0], setMousedownListener = _f[1];\n var _g = useState(null), mousemoveListener = _g[0], setMousemoveListener = _g[1];\n var _h = useState(null), mouseoutListener = _h[0], setMouseoutListener = _h[1];\n var _j = useState(null), mouseoverListener = _j[0], setMouseoverListener = _j[1];\n var _k = useState(null), mouseupListener = _k[0], setMouseupListener = _k[1];\n var _l = useState(null), rightclickListener = _l[0], setRightclickListener = _l[1];\n var _m = useState(null), clickListener = _m[0], setClickListener = _m[1];\n var _o = useState(null), dragListener = _o[0], setDragListener = _o[1];\n // Order does matter\n useEffect(function () {\n if (instance !== null) {\n instance.setMap(map);\n }\n }, [map]);\n useEffect(function () {\n if (typeof options !== 'undefined' && instance !== null) {\n instance.setOptions(options);\n }\n }, [instance, options]);\n useEffect(function () {\n if (typeof draggable !== 'undefined' && instance !== null) {\n instance.setDraggable(draggable);\n }\n }, [instance, draggable]);\n useEffect(function () {\n if (typeof editable !== 'undefined' && instance !== null) {\n instance.setEditable(editable);\n }\n }, [instance, editable]);\n useEffect(function () {\n if (typeof visible !== 'undefined' && instance !== null) {\n instance.setVisible(visible);\n }\n }, [instance, visible]);\n useEffect(function () {\n if (typeof path !== 'undefined' && instance !== null) {\n instance.setPath(path);\n }\n }, [instance, path]);\n useEffect(function () {\n if (typeof paths !== 'undefined' && instance !== null) {\n instance.setPaths(paths);\n }\n }, [instance, paths]);\n useEffect(function () {\n if (instance && onDblClick) {\n if (dblclickListener !== null) {\n google.maps.event.removeListener(dblclickListener);\n }\n setDblclickListener(google.maps.event.addListener(instance, 'dblclick', onDblClick));\n }\n }, [onDblClick]);\n useEffect(function () {\n if (instance && onDragEnd) {\n if (dragendListener !== null) {\n google.maps.event.removeListener(dragendListener);\n }\n setDragendListener(google.maps.event.addListener(instance, 'dragend', onDragEnd));\n }\n }, [onDragEnd]);\n useEffect(function () {\n if (instance && onDragStart) {\n if (dragstartListener !== null) {\n google.maps.event.removeListener(dragstartListener);\n }\n setDragstartListener(google.maps.event.addListener(instance, 'dragstart', onDragStart));\n }\n }, [onDragStart]);\n useEffect(function () {\n if (instance && onMouseDown) {\n if (mousedownListener !== null) {\n google.maps.event.removeListener(mousedownListener);\n }\n setMousedownListener(google.maps.event.addListener(instance, 'mousedown', onMouseDown));\n }\n }, [onMouseDown]);\n useEffect(function () {\n if (instance && onMouseMove) {\n if (mousemoveListener !== null) {\n google.maps.event.removeListener(mousemoveListener);\n }\n setMousemoveListener(google.maps.event.addListener(instance, 'mousemove', onMouseMove));\n }\n }, [onMouseMove]);\n useEffect(function () {\n if (instance && onMouseOut) {\n if (mouseoutListener !== null) {\n google.maps.event.removeListener(mouseoutListener);\n }\n setMouseoutListener(google.maps.event.addListener(instance, 'mouseout', onMouseOut));\n }\n }, [onMouseOut]);\n useEffect(function () {\n if (instance && onMouseOver) {\n if (mouseoverListener !== null) {\n google.maps.event.removeListener(mouseoverListener);\n }\n setMouseoverListener(google.maps.event.addListener(instance, 'mouseover', onMouseOver));\n }\n }, [onMouseOver]);\n useEffect(function () {\n if (instance && onMouseUp) {\n if (mouseupListener !== null) {\n google.maps.event.removeListener(mouseupListener);\n }\n setMouseupListener(google.maps.event.addListener(instance, 'mouseup', onMouseUp));\n }\n }, [onMouseUp]);\n useEffect(function () {\n if (instance && onRightClick) {\n if (rightclickListener !== null) {\n google.maps.event.removeListener(rightclickListener);\n }\n setRightclickListener(google.maps.event.addListener(instance, 'rightclick', onRightClick));\n }\n }, [onRightClick]);\n useEffect(function () {\n if (instance && onClick) {\n if (clickListener !== null) {\n google.maps.event.removeListener(clickListener);\n }\n setClickListener(google.maps.event.addListener(instance, 'click', onClick));\n }\n }, [onClick]);\n useEffect(function () {\n if (instance && onDrag) {\n if (dragListener !== null) {\n google.maps.event.removeListener(dragListener);\n }\n setDragListener(google.maps.event.addListener(instance, 'drag', onDrag));\n }\n }, [onDrag]);\n useEffect(function () {\n var polygon = new google.maps.Polygon(__assign(__assign({}, (options || {})), { map: map }));\n if (path) {\n polygon.setPath(path);\n }\n if (paths) {\n polygon.setPaths(paths);\n }\n if (typeof visible !== 'undefined') {\n polygon.setVisible(visible);\n }\n if (typeof editable !== 'undefined') {\n polygon.setEditable(editable);\n }\n if (typeof draggable !== 'undefined') {\n polygon.setDraggable(draggable);\n }\n if (onDblClick) {\n setDblclickListener(google.maps.event.addListener(polygon, 'dblclick', onDblClick));\n }\n if (onDragEnd) {\n setDragendListener(google.maps.event.addListener(polygon, 'dragend', onDragEnd));\n }\n if (onDragStart) {\n setDragstartListener(google.maps.event.addListener(polygon, 'dragstart', onDragStart));\n }\n if (onMouseDown) {\n setMousedownListener(google.maps.event.addListener(polygon, 'mousedown', onMouseDown));\n }\n if (onMouseMove) {\n setMousemoveListener(google.maps.event.addListener(polygon, 'mousemove', onMouseMove));\n }\n if (onMouseOut) {\n setMouseoutListener(google.maps.event.addListener(polygon, 'mouseout', onMouseOut));\n }\n if (onMouseOver) {\n setMouseoverListener(google.maps.event.addListener(polygon, 'mouseover', onMouseOver));\n }\n if (onMouseUp) {\n setMouseupListener(google.maps.event.addListener(polygon, 'mouseup', onMouseUp));\n }\n if (onRightClick) {\n setRightclickListener(google.maps.event.addListener(polygon, 'rightclick', onRightClick));\n }\n if (onClick) {\n setClickListener(google.maps.event.addListener(polygon, 'click', onClick));\n }\n if (onDrag) {\n setDragListener(google.maps.event.addListener(polygon, 'drag', onDrag));\n }\n setInstance(polygon);\n if (onLoad) {\n onLoad(polygon);\n }\n return function () {\n if (dblclickListener !== null) {\n google.maps.event.removeListener(dblclickListener);\n }\n if (dragendListener !== null) {\n google.maps.event.removeListener(dragendListener);\n }\n if (dragstartListener !== null) {\n google.maps.event.removeListener(dragstartListener);\n }\n if (mousedownListener !== null) {\n google.maps.event.removeListener(mousedownListener);\n }\n if (mousemoveListener !== null) {\n google.maps.event.removeListener(mousemoveListener);\n }\n if (mouseoutListener !== null) {\n google.maps.event.removeListener(mouseoutListener);\n }\n if (mouseoverListener !== null) {\n google.maps.event.removeListener(mouseoverListener);\n }\n if (mouseupListener !== null) {\n google.maps.event.removeListener(mouseupListener);\n }\n if (rightclickListener !== null) {\n google.maps.event.removeListener(rightclickListener);\n }\n if (clickListener !== null) {\n google.maps.event.removeListener(clickListener);\n }\n if (onUnmount) {\n onUnmount(polygon);\n }\n polygon.setMap(null);\n };\n }, []);\n return null;\n}\nvar PolygonF = memo(PolygonFunctional);\nvar Polygon = /** @class */ (function (_super) {\n __extends(Polygon, _super);\n function Polygon() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.registeredEvents = [];\n _this.state = {\n polygon: null,\n };\n _this.setPolygonCallback = function () {\n if (_this.state.polygon !== null && _this.props.onLoad) {\n _this.props.onLoad(_this.state.polygon);\n }\n };\n return _this;\n }\n Polygon.prototype.componentDidMount = function () {\n var polygon = new google.maps.Polygon(__assign(__assign({}, (this.props.options || {})), { map: this.context }));\n this.registeredEvents = applyUpdatersToPropsAndRegisterEvents({\n updaterMap: updaterMap$a,\n eventMap: eventMap$a,\n prevProps: {},\n nextProps: this.props,\n instance: polygon,\n });\n this.setState(function setPolygon() {\n return {\n polygon: polygon,\n };\n }, this.setPolygonCallback);\n };\n Polygon.prototype.componentDidUpdate = function (prevProps) {\n if (this.state.polygon !== null) {\n unregisterEvents(this.registeredEvents);\n this.registeredEvents = applyUpdatersToPropsAndRegisterEvents({\n updaterMap: updaterMap$a,\n eventMap: eventMap$a,\n prevProps: prevProps,\n nextProps: this.props,\n instance: this.state.polygon,\n });\n }\n };\n Polygon.prototype.componentWillUnmount = function () {\n if (this.state.polygon !== null) {\n if (this.props.onUnmount) {\n this.props.onUnmount(this.state.polygon);\n }\n unregisterEvents(this.registeredEvents);\n this.state.polygon && this.state.polygon.setMap(null);\n }\n };\n Polygon.prototype.render = function () {\n return null;\n };\n Polygon.contextType = MapContext;\n return Polygon;\n}(PureComponent));\n\nvar eventMap$9 = {\n onBoundsChanged: 'bounds_changed',\n onClick: 'click',\n onDblClick: 'dblclick',\n onDrag: 'drag',\n onDragEnd: 'dragend',\n onDragStart: 'dragstart',\n onMouseDown: 'mousedown',\n onMouseMove: 'mousemove',\n onMouseOut: 'mouseout',\n onMouseOver: 'mouseover',\n onMouseUp: 'mouseup',\n onRightClick: 'rightclick',\n};\nvar updaterMap$9 = {\n bounds: function (instance, bounds) {\n instance.setBounds(bounds);\n },\n draggable: function (instance, draggable) {\n instance.setDraggable(draggable);\n },\n editable: function (instance, editable) {\n instance.setEditable(editable);\n },\n map: function (instance, map) {\n instance.setMap(map);\n },\n options: function (instance, options) {\n instance.setOptions(options);\n },\n visible: function (instance, visible) {\n instance.setVisible(visible);\n },\n};\nfunction RectangleFunctional(_a) {\n var options = _a.options, bounds = _a.bounds, draggable = _a.draggable, editable = _a.editable, visible = _a.visible, onDblClick = _a.onDblClick, onDragEnd = _a.onDragEnd, onDragStart = _a.onDragStart, onMouseDown = _a.onMouseDown, onMouseMove = _a.onMouseMove, onMouseOut = _a.onMouseOut, onMouseOver = _a.onMouseOver, onMouseUp = _a.onMouseUp, onRightClick = _a.onRightClick, onClick = _a.onClick, onDrag = _a.onDrag, onBoundsChanged = _a.onBoundsChanged, onLoad = _a.onLoad, onUnmount = _a.onUnmount;\n var map = useContext(MapContext);\n var _b = useState(null), instance = _b[0], setInstance = _b[1];\n var _c = useState(null), dblclickListener = _c[0], setDblclickListener = _c[1];\n var _d = useState(null), dragendListener = _d[0], setDragendListener = _d[1];\n var _e = useState(null), dragstartListener = _e[0], setDragstartListener = _e[1];\n var _f = useState(null), mousedownListener = _f[0], setMousedownListener = _f[1];\n var _g = useState(null), mousemoveListener = _g[0], setMousemoveListener = _g[1];\n var _h = useState(null), mouseoutListener = _h[0], setMouseoutListener = _h[1];\n var _j = useState(null), mouseoverListener = _j[0], setMouseoverListener = _j[1];\n var _k = useState(null), mouseupListener = _k[0], setMouseupListener = _k[1];\n var _l = useState(null), rightClickListener = _l[0], setRightClickListener = _l[1];\n var _m = useState(null), clickListener = _m[0], setClickListener = _m[1];\n var _o = useState(null), dragListener = _o[0], setDragListener = _o[1];\n var _p = useState(null), boundsChangedListener = _p[0], setBoundsChangedListener = _p[1];\n // Order does matter\n useEffect(function () {\n if (instance !== null) {\n instance.setMap(map);\n }\n }, [map]);\n useEffect(function () {\n if (typeof options !== 'undefined' && instance !== null) {\n instance.setOptions(options);\n }\n }, [instance, options]);\n useEffect(function () {\n if (typeof draggable !== 'undefined' && instance !== null) {\n instance.setDraggable(draggable);\n }\n }, [instance, draggable]);\n useEffect(function () {\n if (typeof editable !== 'undefined' && instance !== null) {\n instance.setEditable(editable);\n }\n }, [instance, editable]);\n useEffect(function () {\n if (typeof visible !== 'undefined' && instance !== null) {\n instance.setVisible(visible);\n }\n }, [instance, visible]);\n useEffect(function () {\n if (typeof bounds !== 'undefined' && instance !== null) {\n instance.setBounds(bounds);\n }\n }, [instance, bounds]);\n useEffect(function () {\n if (instance && onDblClick) {\n if (dblclickListener !== null) {\n google.maps.event.removeListener(dblclickListener);\n }\n setDblclickListener(google.maps.event.addListener(instance, 'dblclick', onDblClick));\n }\n }, [onDblClick]);\n useEffect(function () {\n if (instance && onDragEnd) {\n if (dragendListener !== null) {\n google.maps.event.removeListener(dragendListener);\n }\n setDragendListener(google.maps.event.addListener(instance, 'dragend', onDragEnd));\n }\n }, [onDragEnd]);\n useEffect(function () {\n if (instance && onDragStart) {\n if (dragstartListener !== null) {\n google.maps.event.removeListener(dragstartListener);\n }\n setDragstartListener(google.maps.event.addListener(instance, 'dragstart', onDragStart));\n }\n }, [onDragStart]);\n useEffect(function () {\n if (instance && onMouseDown) {\n if (mousedownListener !== null) {\n google.maps.event.removeListener(mousedownListener);\n }\n setMousedownListener(google.maps.event.addListener(instance, 'mousedown', onMouseDown));\n }\n }, [onMouseDown]);\n useEffect(function () {\n if (instance && onMouseMove) {\n if (mousemoveListener !== null) {\n google.maps.event.removeListener(mousemoveListener);\n }\n setMousemoveListener(google.maps.event.addListener(instance, 'mousemove', onMouseMove));\n }\n }, [onMouseMove]);\n useEffect(function () {\n if (instance && onMouseOut) {\n if (mouseoutListener !== null) {\n google.maps.event.removeListener(mouseoutListener);\n }\n setMouseoutListener(google.maps.event.addListener(instance, 'mouseout', onMouseOut));\n }\n }, [onMouseOut]);\n useEffect(function () {\n if (instance && onMouseOver) {\n if (mouseoverListener !== null) {\n google.maps.event.removeListener(mouseoverListener);\n }\n setMouseoverListener(google.maps.event.addListener(instance, 'mouseover', onMouseOver));\n }\n }, [onMouseOver]);\n useEffect(function () {\n if (instance && onMouseUp) {\n if (mouseupListener !== null) {\n google.maps.event.removeListener(mouseupListener);\n }\n setMouseupListener(google.maps.event.addListener(instance, 'mouseup', onMouseUp));\n }\n }, [onMouseUp]);\n useEffect(function () {\n if (instance && onRightClick) {\n if (rightClickListener !== null) {\n google.maps.event.removeListener(rightClickListener);\n }\n setRightClickListener(google.maps.event.addListener(instance, 'rightclick', onRightClick));\n }\n }, [onRightClick]);\n useEffect(function () {\n if (instance && onClick) {\n if (clickListener !== null) {\n google.maps.event.removeListener(clickListener);\n }\n setClickListener(google.maps.event.addListener(instance, 'click', onClick));\n }\n }, [onClick]);\n useEffect(function () {\n if (instance && onDrag) {\n if (dragListener !== null) {\n google.maps.event.removeListener(dragListener);\n }\n setDragListener(google.maps.event.addListener(instance, 'drag', onDrag));\n }\n }, [onDrag]);\n useEffect(function () {\n if (instance && onBoundsChanged) {\n if (boundsChangedListener !== null) {\n google.maps.event.removeListener(boundsChangedListener);\n }\n setBoundsChangedListener(google.maps.event.addListener(instance, 'bounds_changed', onBoundsChanged));\n }\n }, [onBoundsChanged]);\n useEffect(function () {\n var rectangle = new google.maps.Rectangle(__assign(__assign({}, (options || {})), { map: map }));\n if (typeof visible !== 'undefined') {\n rectangle.setVisible(visible);\n }\n if (typeof editable !== 'undefined') {\n rectangle.setEditable(editable);\n }\n if (typeof draggable !== 'undefined') {\n rectangle.setDraggable(draggable);\n }\n if (typeof bounds !== 'undefined') {\n rectangle.setBounds(bounds);\n }\n if (onDblClick) {\n setDblclickListener(google.maps.event.addListener(rectangle, 'dblclick', onDblClick));\n }\n if (onDragEnd) {\n setDragendListener(google.maps.event.addListener(rectangle, 'dragend', onDragEnd));\n }\n if (onDragStart) {\n setDragstartListener(google.maps.event.addListener(rectangle, 'dragstart', onDragStart));\n }\n if (onMouseDown) {\n setMousedownListener(google.maps.event.addListener(rectangle, 'mousedown', onMouseDown));\n }\n if (onMouseMove) {\n setMousemoveListener(google.maps.event.addListener(rectangle, 'mousemove', onMouseMove));\n }\n if (onMouseOut) {\n setMouseoutListener(google.maps.event.addListener(rectangle, 'mouseout', onMouseOut));\n }\n if (onMouseOver) {\n setMouseoverListener(google.maps.event.addListener(rectangle, 'mouseover', onMouseOver));\n }\n if (onMouseUp) {\n setMouseupListener(google.maps.event.addListener(rectangle, 'mouseup', onMouseUp));\n }\n if (onRightClick) {\n setRightClickListener(google.maps.event.addListener(rectangle, 'rightclick', onRightClick));\n }\n if (onClick) {\n setClickListener(google.maps.event.addListener(rectangle, 'click', onClick));\n }\n if (onDrag) {\n setDragListener(google.maps.event.addListener(rectangle, 'drag', onDrag));\n }\n if (onBoundsChanged) {\n setBoundsChangedListener(google.maps.event.addListener(rectangle, 'bounds_changed', onBoundsChanged));\n }\n setInstance(rectangle);\n if (onLoad) {\n onLoad(rectangle);\n }\n return function () {\n if (dblclickListener !== null) {\n google.maps.event.removeListener(dblclickListener);\n }\n if (dragendListener !== null) {\n google.maps.event.removeListener(dragendListener);\n }\n if (dragstartListener !== null) {\n google.maps.event.removeListener(dragstartListener);\n }\n if (mousedownListener !== null) {\n google.maps.event.removeListener(mousedownListener);\n }\n if (mousemoveListener !== null) {\n google.maps.event.removeListener(mousemoveListener);\n }\n if (mouseoutListener !== null) {\n google.maps.event.removeListener(mouseoutListener);\n }\n if (mouseoverListener !== null) {\n google.maps.event.removeListener(mouseoverListener);\n }\n if (mouseupListener !== null) {\n google.maps.event.removeListener(mouseupListener);\n }\n if (rightClickListener !== null) {\n google.maps.event.removeListener(rightClickListener);\n }\n if (clickListener !== null) {\n google.maps.event.removeListener(clickListener);\n }\n if (dragListener !== null) {\n google.maps.event.removeListener(dragListener);\n }\n if (boundsChangedListener !== null) {\n google.maps.event.removeListener(boundsChangedListener);\n }\n if (onUnmount) {\n onUnmount(rectangle);\n }\n rectangle.setMap(null);\n };\n }, []);\n return null;\n}\nvar RectangleF = memo(RectangleFunctional);\nvar Rectangle = /** @class */ (function (_super) {\n __extends(Rectangle, _super);\n function Rectangle() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.registeredEvents = [];\n _this.state = {\n rectangle: null,\n };\n _this.setRectangleCallback = function () {\n if (_this.state.rectangle !== null && _this.props.onLoad) {\n _this.props.onLoad(_this.state.rectangle);\n }\n };\n return _this;\n }\n Rectangle.prototype.componentDidMount = function () {\n var rectangle = new google.maps.Rectangle(__assign(__assign({}, (this.props.options || {})), { map: this.context }));\n this.registeredEvents = applyUpdatersToPropsAndRegisterEvents({\n updaterMap: updaterMap$9,\n eventMap: eventMap$9,\n prevProps: {},\n nextProps: this.props,\n instance: rectangle,\n });\n this.setState(function setRectangle() {\n return {\n rectangle: rectangle,\n };\n }, this.setRectangleCallback);\n };\n Rectangle.prototype.componentDidUpdate = function (prevProps) {\n if (this.state.rectangle !== null) {\n unregisterEvents(this.registeredEvents);\n this.registeredEvents = applyUpdatersToPropsAndRegisterEvents({\n updaterMap: updaterMap$9,\n eventMap: eventMap$9,\n prevProps: prevProps,\n nextProps: this.props,\n instance: this.state.rectangle,\n });\n }\n };\n Rectangle.prototype.componentWillUnmount = function () {\n if (this.state.rectangle !== null) {\n if (this.props.onUnmount) {\n this.props.onUnmount(this.state.rectangle);\n }\n unregisterEvents(this.registeredEvents);\n this.state.rectangle.setMap(null);\n }\n };\n Rectangle.prototype.render = function () {\n return null;\n };\n Rectangle.contextType = MapContext;\n return Rectangle;\n}(PureComponent));\n\nvar eventMap$8 = {\n onCenterChanged: 'center_changed',\n onRadiusChanged: 'radius_changed',\n onClick: 'click',\n onDblClick: 'dblclick',\n onDrag: 'drag',\n onDragEnd: 'dragend',\n onDragStart: 'dragstart',\n onMouseDown: 'mousedown',\n onMouseMove: 'mousemove',\n onMouseOut: 'mouseout',\n onMouseOver: 'mouseover',\n onMouseUp: 'mouseup',\n onRightClick: 'rightclick',\n};\nvar updaterMap$8 = {\n center: function (instance, center) {\n instance.setCenter(center);\n },\n draggable: function (instance, draggable) {\n instance.setDraggable(draggable);\n },\n editable: function (instance, editable) {\n instance.setEditable(editable);\n },\n map: function (instance, map) {\n instance.setMap(map);\n },\n options: function (instance, options) {\n instance.setOptions(options);\n },\n radius: function (instance, radius) {\n instance.setRadius(radius);\n },\n visible: function (instance, visible) {\n instance.setVisible(visible);\n },\n};\nvar defaultOptions = {};\nfunction CircleFunctional(_a) {\n var options = _a.options, center = _a.center, radius = _a.radius, draggable = _a.draggable, editable = _a.editable, visible = _a.visible, onDblClick = _a.onDblClick, onDragEnd = _a.onDragEnd, onDragStart = _a.onDragStart, onMouseDown = _a.onMouseDown, onMouseMove = _a.onMouseMove, onMouseOut = _a.onMouseOut, onMouseOver = _a.onMouseOver, onMouseUp = _a.onMouseUp, onRightClick = _a.onRightClick, onClick = _a.onClick, onDrag = _a.onDrag, onCenterChanged = _a.onCenterChanged, onRadiusChanged = _a.onRadiusChanged, onLoad = _a.onLoad, onUnmount = _a.onUnmount;\n var map = useContext(MapContext);\n var _b = useState(null), instance = _b[0], setInstance = _b[1];\n var _c = useState(null), dblclickListener = _c[0], setDblclickListener = _c[1];\n var _d = useState(null), dragendListener = _d[0], setDragendListener = _d[1];\n var _e = useState(null), dragstartListener = _e[0], setDragstartListener = _e[1];\n var _f = useState(null), mousedownListener = _f[0], setMousedownListener = _f[1];\n var _g = useState(null), mousemoveListener = _g[0], setMousemoveListener = _g[1];\n var _h = useState(null), mouseoutListener = _h[0], setMouseoutListener = _h[1];\n var _j = useState(null), mouseoverListener = _j[0], setMouseoverListener = _j[1];\n var _k = useState(null), mouseupListener = _k[0], setMouseupListener = _k[1];\n var _l = useState(null), rightclickListener = _l[0], setRightclickListener = _l[1];\n var _m = useState(null), clickListener = _m[0], setClickListener = _m[1];\n var _o = useState(null), dragListener = _o[0], setDragListener = _o[1];\n var _p = useState(null), centerChangedListener = _p[0], setCenterChangedListener = _p[1];\n var _q = useState(null), radiusChangedListener = _q[0], setRadiusChangedListener = _q[1];\n // Order does matter\n useEffect(function () {\n if (instance !== null) {\n instance.setMap(map);\n }\n }, [map]);\n useEffect(function () {\n if (typeof options !== 'undefined' && instance !== null) {\n instance.setOptions(options);\n }\n }, [instance, options]);\n useEffect(function () {\n if (typeof draggable !== 'undefined' && instance !== null) {\n instance.setDraggable(draggable);\n }\n }, [instance, draggable]);\n useEffect(function () {\n if (typeof editable !== 'undefined' && instance !== null) {\n instance.setEditable(editable);\n }\n }, [instance, editable]);\n useEffect(function () {\n if (typeof visible !== 'undefined' && instance !== null) {\n instance.setVisible(visible);\n }\n }, [instance, visible]);\n useEffect(function () {\n if (typeof radius === 'number' && instance !== null) {\n instance.setRadius(radius);\n }\n }, [instance, radius]);\n useEffect(function () {\n if (typeof center !== 'undefined' && instance !== null) {\n instance.setCenter(center);\n }\n }, [instance, center]);\n useEffect(function () {\n if (instance && onDblClick) {\n if (dblclickListener !== null) {\n google.maps.event.removeListener(dblclickListener);\n }\n setDblclickListener(google.maps.event.addListener(instance, 'dblclick', onDblClick));\n }\n }, [onDblClick]);\n useEffect(function () {\n if (instance && onDragEnd) {\n if (dragendListener !== null) {\n google.maps.event.removeListener(dragendListener);\n }\n setDragendListener(google.maps.event.addListener(instance, 'dragend', onDragEnd));\n }\n }, [onDragEnd]);\n useEffect(function () {\n if (instance && onDragStart) {\n if (dragstartListener !== null) {\n google.maps.event.removeListener(dragstartListener);\n }\n setDragstartListener(google.maps.event.addListener(instance, 'dragstart', onDragStart));\n }\n }, [onDragStart]);\n useEffect(function () {\n if (instance && onMouseDown) {\n if (mousedownListener !== null) {\n google.maps.event.removeListener(mousedownListener);\n }\n setMousedownListener(google.maps.event.addListener(instance, 'mousedown', onMouseDown));\n }\n }, [onMouseDown]);\n useEffect(function () {\n if (instance && onMouseMove) {\n if (mousemoveListener !== null) {\n google.maps.event.removeListener(mousemoveListener);\n }\n setMousemoveListener(google.maps.event.addListener(instance, 'mousemove', onMouseMove));\n }\n }, [onMouseMove]);\n useEffect(function () {\n if (instance && onMouseOut) {\n if (mouseoutListener !== null) {\n google.maps.event.removeListener(mouseoutListener);\n }\n setMouseoutListener(google.maps.event.addListener(instance, 'mouseout', onMouseOut));\n }\n }, [onMouseOut]);\n useEffect(function () {\n if (instance && onMouseOver) {\n if (mouseoverListener !== null) {\n google.maps.event.removeListener(mouseoverListener);\n }\n setMouseoverListener(google.maps.event.addListener(instance, 'mouseover', onMouseOver));\n }\n }, [onMouseOver]);\n useEffect(function () {\n if (instance && onMouseUp) {\n if (mouseupListener !== null) {\n google.maps.event.removeListener(mouseupListener);\n }\n setMouseupListener(google.maps.event.addListener(instance, 'mouseup', onMouseUp));\n }\n }, [onMouseUp]);\n useEffect(function () {\n if (instance && onRightClick) {\n if (rightclickListener !== null) {\n google.maps.event.removeListener(rightclickListener);\n }\n setRightclickListener(google.maps.event.addListener(instance, 'rightclick', onRightClick));\n }\n }, [onRightClick]);\n useEffect(function () {\n if (instance && onClick) {\n if (clickListener !== null) {\n google.maps.event.removeListener(clickListener);\n }\n setClickListener(google.maps.event.addListener(instance, 'click', onClick));\n }\n }, [onClick]);\n useEffect(function () {\n if (instance && onDrag) {\n if (dragListener !== null) {\n google.maps.event.removeListener(dragListener);\n }\n setDragListener(google.maps.event.addListener(instance, 'drag', onDrag));\n }\n }, [onDrag]);\n useEffect(function () {\n if (instance && onCenterChanged) {\n if (centerChangedListener !== null) {\n google.maps.event.removeListener(centerChangedListener);\n }\n setCenterChangedListener(google.maps.event.addListener(instance, 'center_changed', onCenterChanged));\n }\n }, [onClick]);\n useEffect(function () {\n if (instance && onRadiusChanged) {\n if (radiusChangedListener !== null) {\n google.maps.event.removeListener(radiusChangedListener);\n }\n setRadiusChangedListener(google.maps.event.addListener(instance, 'radius_changed', onRadiusChanged));\n }\n }, [onRadiusChanged]);\n useEffect(function () {\n var circle = new google.maps.Circle(__assign(__assign({}, (options || defaultOptions)), { map: map }));\n if (typeof radius === 'number') {\n circle.setRadius(radius);\n }\n if (typeof center !== 'undefined') {\n circle.setCenter(center);\n }\n if (typeof radius === 'number') {\n circle.setRadius(radius);\n }\n if (typeof visible !== 'undefined') {\n circle.setVisible(visible);\n }\n if (typeof editable !== 'undefined') {\n circle.setEditable(editable);\n }\n if (typeof draggable !== 'undefined') {\n circle.setDraggable(draggable);\n }\n if (onDblClick) {\n setDblclickListener(google.maps.event.addListener(circle, 'dblclick', onDblClick));\n }\n if (onDragEnd) {\n setDragendListener(google.maps.event.addListener(circle, 'dragend', onDragEnd));\n }\n if (onDragStart) {\n setDragstartListener(google.maps.event.addListener(circle, 'dragstart', onDragStart));\n }\n if (onMouseDown) {\n setMousedownListener(google.maps.event.addListener(circle, 'mousedown', onMouseDown));\n }\n if (onMouseMove) {\n setMousemoveListener(google.maps.event.addListener(circle, 'mousemove', onMouseMove));\n }\n if (onMouseOut) {\n setMouseoutListener(google.maps.event.addListener(circle, 'mouseout', onMouseOut));\n }\n if (onMouseOver) {\n setMouseoverListener(google.maps.event.addListener(circle, 'mouseover', onMouseOver));\n }\n if (onMouseUp) {\n setMouseupListener(google.maps.event.addListener(circle, 'mouseup', onMouseUp));\n }\n if (onRightClick) {\n setRightclickListener(google.maps.event.addListener(circle, 'rightclick', onRightClick));\n }\n if (onClick) {\n setClickListener(google.maps.event.addListener(circle, 'click', onClick));\n }\n if (onDrag) {\n setDragListener(google.maps.event.addListener(circle, 'drag', onDrag));\n }\n if (onCenterChanged) {\n setCenterChangedListener(google.maps.event.addListener(circle, 'center_changed', onCenterChanged));\n }\n if (onRadiusChanged) {\n setRadiusChangedListener(google.maps.event.addListener(circle, 'radius_changed', onRadiusChanged));\n }\n setInstance(circle);\n if (onLoad) {\n onLoad(circle);\n }\n return function () {\n if (dblclickListener !== null) {\n google.maps.event.removeListener(dblclickListener);\n }\n if (dragendListener !== null) {\n google.maps.event.removeListener(dragendListener);\n }\n if (dragstartListener !== null) {\n google.maps.event.removeListener(dragstartListener);\n }\n if (mousedownListener !== null) {\n google.maps.event.removeListener(mousedownListener);\n }\n if (mousemoveListener !== null) {\n google.maps.event.removeListener(mousemoveListener);\n }\n if (mouseoutListener !== null) {\n google.maps.event.removeListener(mouseoutListener);\n }\n if (mouseoverListener !== null) {\n google.maps.event.removeListener(mouseoverListener);\n }\n if (mouseupListener !== null) {\n google.maps.event.removeListener(mouseupListener);\n }\n if (rightclickListener !== null) {\n google.maps.event.removeListener(rightclickListener);\n }\n if (clickListener !== null) {\n google.maps.event.removeListener(clickListener);\n }\n if (centerChangedListener !== null) {\n google.maps.event.removeListener(centerChangedListener);\n }\n if (radiusChangedListener !== null) {\n google.maps.event.removeListener(radiusChangedListener);\n }\n if (onUnmount) {\n onUnmount(circle);\n }\n circle.setMap(null);\n };\n }, []);\n return null;\n}\nvar CircleF = memo(CircleFunctional);\nvar Circle = /** @class */ (function (_super) {\n __extends(Circle, _super);\n function Circle() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.registeredEvents = [];\n _this.state = {\n circle: null,\n };\n _this.setCircleCallback = function () {\n if (_this.state.circle !== null && _this.props.onLoad) {\n _this.props.onLoad(_this.state.circle);\n }\n };\n return _this;\n }\n Circle.prototype.componentDidMount = function () {\n var circle = new google.maps.Circle(__assign(__assign({}, (this.props.options || {})), { map: this.context }));\n this.registeredEvents = applyUpdatersToPropsAndRegisterEvents({\n updaterMap: updaterMap$8,\n eventMap: eventMap$8,\n prevProps: {},\n nextProps: this.props,\n instance: circle,\n });\n this.setState(function setCircle() {\n return {\n circle: circle,\n };\n }, this.setCircleCallback);\n };\n Circle.prototype.componentDidUpdate = function (prevProps) {\n if (this.state.circle !== null) {\n unregisterEvents(this.registeredEvents);\n this.registeredEvents = applyUpdatersToPropsAndRegisterEvents({\n updaterMap: updaterMap$8,\n eventMap: eventMap$8,\n prevProps: prevProps,\n nextProps: this.props,\n instance: this.state.circle,\n });\n }\n };\n Circle.prototype.componentWillUnmount = function () {\n var _a;\n if (this.state.circle !== null) {\n if (this.props.onUnmount) {\n this.props.onUnmount(this.state.circle);\n }\n unregisterEvents(this.registeredEvents);\n (_a = this.state.circle) === null || _a === void 0 ? void 0 : _a.setMap(null);\n }\n };\n Circle.prototype.render = function () {\n return null;\n };\n Circle.contextType = MapContext;\n return Circle;\n}(PureComponent));\n\nvar eventMap$7 = {\n onClick: 'click',\n onDblClick: 'dblclick',\n onMouseDown: 'mousedown',\n onMouseOut: 'mouseout',\n onMouseOver: 'mouseover',\n onMouseUp: 'mouseup',\n onRightClick: 'rightclick',\n onAddFeature: 'addfeature',\n onRemoveFeature: 'removefeature',\n onRemoveProperty: 'removeproperty',\n onSetGeometry: 'setgeometry',\n onSetProperty: 'setproperty',\n};\nvar updaterMap$7 = {\n add: function (instance, feature) {\n instance.add(feature);\n },\n addgeojson: function (instance, geojson, options) {\n instance.addGeoJson(geojson, options);\n },\n contains: function (instance, feature) {\n instance.contains(feature);\n },\n foreach: function (instance, callback) {\n instance.forEach(callback);\n },\n loadgeojson: function (instance, url, options, callback) {\n instance.loadGeoJson(url, options, callback);\n },\n overridestyle: function (instance, feature, style) {\n instance.overrideStyle(feature, style);\n },\n remove: function (instance, feature) {\n instance.remove(feature);\n },\n revertstyle: function (instance, feature) {\n instance.revertStyle(feature);\n },\n controlposition: function (instance, controlPosition) {\n instance.setControlPosition(controlPosition);\n },\n controls: function (instance, controls) {\n instance.setControls(controls);\n },\n drawingmode: function (instance, mode) {\n instance.setDrawingMode(mode);\n },\n map: function (instance, map) {\n instance.setMap(map);\n },\n style: function (instance, style) {\n instance.setStyle(style);\n },\n togeojson: function (instance, callback) {\n instance.toGeoJson(callback);\n },\n};\nfunction DataFunctional(_a) {\n var options = _a.options, onClick = _a.onClick, onDblClick = _a.onDblClick, onMouseDown = _a.onMouseDown, onMouseMove = _a.onMouseMove, onMouseOut = _a.onMouseOut, onMouseOver = _a.onMouseOver, onMouseUp = _a.onMouseUp, onRightClick = _a.onRightClick, onAddFeature = _a.onAddFeature, onRemoveFeature = _a.onRemoveFeature, onRemoveProperty = _a.onRemoveProperty, onSetGeometry = _a.onSetGeometry, onSetProperty = _a.onSetProperty, onLoad = _a.onLoad, onUnmount = _a.onUnmount;\n var map = useContext(MapContext);\n var _b = useState(null), instance = _b[0], setInstance = _b[1];\n var _c = useState(null), dblclickListener = _c[0], setDblclickListener = _c[1];\n var _d = useState(null), mousedownListener = _d[0], setMousedownListener = _d[1];\n var _e = useState(null), mousemoveListener = _e[0], setMousemoveListener = _e[1];\n var _f = useState(null), mouseoutListener = _f[0], setMouseoutListener = _f[1];\n var _g = useState(null), mouseoverListener = _g[0], setMouseoverListener = _g[1];\n var _h = useState(null), mouseupListener = _h[0], setMouseupListener = _h[1];\n var _j = useState(null), rightclickListener = _j[0], setRightclickListener = _j[1];\n var _k = useState(null), clickListener = _k[0], setClickListener = _k[1];\n var _l = useState(null), addFeatureListener = _l[0], setAddFeatureListener = _l[1];\n var _m = useState(null), removeFeatureListener = _m[0], setRemoveFeatureListener = _m[1];\n var _o = useState(null), removePropertyListener = _o[0], setRemovePropertyListener = _o[1];\n var _p = useState(null), setGeometryListener = _p[0], setSetGeometryListener = _p[1];\n var _q = useState(null), setPropertyListener = _q[0], setSetPropertyListener = _q[1];\n // Order does matter\n useEffect(function () {\n if (instance !== null) {\n instance.setMap(map);\n }\n }, [map]);\n useEffect(function () {\n if (instance && onDblClick) {\n if (dblclickListener !== null) {\n google.maps.event.removeListener(dblclickListener);\n }\n setDblclickListener(google.maps.event.addListener(instance, 'dblclick', onDblClick));\n }\n }, [onDblClick]);\n useEffect(function () {\n if (instance && onMouseDown) {\n if (mousedownListener !== null) {\n google.maps.event.removeListener(mousedownListener);\n }\n setMousedownListener(google.maps.event.addListener(instance, 'mousedown', onMouseDown));\n }\n }, [onMouseDown]);\n useEffect(function () {\n if (instance && onMouseMove) {\n if (mousemoveListener !== null) {\n google.maps.event.removeListener(mousemoveListener);\n }\n setMousemoveListener(google.maps.event.addListener(instance, 'mousemove', onMouseMove));\n }\n }, [onMouseMove]);\n useEffect(function () {\n if (instance && onMouseOut) {\n if (mouseoutListener !== null) {\n google.maps.event.removeListener(mouseoutListener);\n }\n setMouseoutListener(google.maps.event.addListener(instance, 'mouseout', onMouseOut));\n }\n }, [onMouseOut]);\n useEffect(function () {\n if (instance && onMouseOver) {\n if (mouseoverListener !== null) {\n google.maps.event.removeListener(mouseoverListener);\n }\n setMouseoverListener(google.maps.event.addListener(instance, 'mouseover', onMouseOver));\n }\n }, [onMouseOver]);\n useEffect(function () {\n if (instance && onMouseUp) {\n if (mouseupListener !== null) {\n google.maps.event.removeListener(mouseupListener);\n }\n setMouseupListener(google.maps.event.addListener(instance, 'mouseup', onMouseUp));\n }\n }, [onMouseUp]);\n useEffect(function () {\n if (instance && onRightClick) {\n if (rightclickListener !== null) {\n google.maps.event.removeListener(rightclickListener);\n }\n setRightclickListener(google.maps.event.addListener(instance, 'rightclick', onRightClick));\n }\n }, [onRightClick]);\n useEffect(function () {\n if (instance && onClick) {\n if (clickListener !== null) {\n google.maps.event.removeListener(clickListener);\n }\n setClickListener(google.maps.event.addListener(instance, 'click', onClick));\n }\n }, [onClick]);\n useEffect(function () {\n if (instance && onAddFeature) {\n if (addFeatureListener !== null) {\n google.maps.event.removeListener(addFeatureListener);\n }\n setAddFeatureListener(google.maps.event.addListener(instance, 'addfeature', onAddFeature));\n }\n }, [onAddFeature]);\n useEffect(function () {\n if (instance && onRemoveFeature) {\n if (removeFeatureListener !== null) {\n google.maps.event.removeListener(removeFeatureListener);\n }\n setRemoveFeatureListener(google.maps.event.addListener(instance, 'removefeature', onRemoveFeature));\n }\n }, [onRemoveFeature]);\n useEffect(function () {\n if (instance && onRemoveProperty) {\n if (removePropertyListener !== null) {\n google.maps.event.removeListener(removePropertyListener);\n }\n setRemovePropertyListener(google.maps.event.addListener(instance, 'removeproperty', onRemoveProperty));\n }\n }, [onRemoveProperty]);\n useEffect(function () {\n if (instance && onSetGeometry) {\n if (setGeometryListener !== null) {\n google.maps.event.removeListener(setGeometryListener);\n }\n setSetGeometryListener(google.maps.event.addListener(instance, 'setgeometry', onSetGeometry));\n }\n }, [onSetGeometry]);\n useEffect(function () {\n if (instance && onSetProperty) {\n if (setPropertyListener !== null) {\n google.maps.event.removeListener(setPropertyListener);\n }\n setSetPropertyListener(google.maps.event.addListener(instance, 'setproperty', onSetProperty));\n }\n }, [onSetProperty]);\n useEffect(function () {\n if (map !== null) {\n var data = new google.maps.Data(__assign(__assign({}, (options || {})), { map: map }));\n if (onDblClick) {\n setDblclickListener(google.maps.event.addListener(data, 'dblclick', onDblClick));\n }\n if (onMouseDown) {\n setMousedownListener(google.maps.event.addListener(data, 'mousedown', onMouseDown));\n }\n if (onMouseMove) {\n setMousemoveListener(google.maps.event.addListener(data, 'mousemove', onMouseMove));\n }\n if (onMouseOut) {\n setMouseoutListener(google.maps.event.addListener(data, 'mouseout', onMouseOut));\n }\n if (onMouseOver) {\n setMouseoverListener(google.maps.event.addListener(data, 'mouseover', onMouseOver));\n }\n if (onMouseUp) {\n setMouseupListener(google.maps.event.addListener(data, 'mouseup', onMouseUp));\n }\n if (onRightClick) {\n setRightclickListener(google.maps.event.addListener(data, 'rightclick', onRightClick));\n }\n if (onClick) {\n setClickListener(google.maps.event.addListener(data, 'click', onClick));\n }\n if (onAddFeature) {\n setAddFeatureListener(google.maps.event.addListener(data, 'addfeature', onAddFeature));\n }\n if (onRemoveFeature) {\n setRemoveFeatureListener(google.maps.event.addListener(data, 'removefeature', onRemoveFeature));\n }\n if (onRemoveProperty) {\n setRemovePropertyListener(google.maps.event.addListener(data, 'removeproperty', onRemoveProperty));\n }\n if (onSetGeometry) {\n setSetGeometryListener(google.maps.event.addListener(data, 'setgeometry', onSetGeometry));\n }\n if (onSetProperty) {\n setSetPropertyListener(google.maps.event.addListener(data, 'setproperty', onSetProperty));\n }\n setInstance(data);\n if (onLoad) {\n onLoad(data);\n }\n }\n return function () {\n if (instance) {\n if (dblclickListener !== null) {\n google.maps.event.removeListener(dblclickListener);\n }\n if (mousedownListener !== null) {\n google.maps.event.removeListener(mousedownListener);\n }\n if (mousemoveListener !== null) {\n google.maps.event.removeListener(mousemoveListener);\n }\n if (mouseoutListener !== null) {\n google.maps.event.removeListener(mouseoutListener);\n }\n if (mouseoverListener !== null) {\n google.maps.event.removeListener(mouseoverListener);\n }\n if (mouseupListener !== null) {\n google.maps.event.removeListener(mouseupListener);\n }\n if (rightclickListener !== null) {\n google.maps.event.removeListener(rightclickListener);\n }\n if (clickListener !== null) {\n google.maps.event.removeListener(clickListener);\n }\n if (addFeatureListener !== null) {\n google.maps.event.removeListener(addFeatureListener);\n }\n if (removeFeatureListener !== null) {\n google.maps.event.removeListener(removeFeatureListener);\n }\n if (removePropertyListener !== null) {\n google.maps.event.removeListener(removePropertyListener);\n }\n if (setGeometryListener !== null) {\n google.maps.event.removeListener(setGeometryListener);\n }\n if (setPropertyListener !== null) {\n google.maps.event.removeListener(setPropertyListener);\n }\n if (onUnmount) {\n onUnmount(instance);\n }\n instance.setMap(null);\n }\n };\n }, []);\n return null;\n}\nvar DataF = memo(DataFunctional);\nvar Data = /** @class */ (function (_super) {\n __extends(Data, _super);\n function Data() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.registeredEvents = [];\n _this.state = {\n data: null,\n };\n _this.setDataCallback = function () {\n if (_this.state.data !== null && _this.props.onLoad) {\n _this.props.onLoad(_this.state.data);\n }\n };\n return _this;\n }\n Data.prototype.componentDidMount = function () {\n if (this.context !== null) {\n var data_1 = new google.maps.Data(__assign(__assign({}, (this.props.options || {})), { map: this.context }));\n this.registeredEvents = applyUpdatersToPropsAndRegisterEvents({\n updaterMap: updaterMap$7,\n eventMap: eventMap$7,\n prevProps: {},\n nextProps: this.props,\n instance: data_1,\n });\n this.setState(function () {\n return {\n data: data_1,\n };\n }, this.setDataCallback);\n }\n };\n Data.prototype.componentDidUpdate = function (prevProps) {\n if (this.state.data !== null) {\n unregisterEvents(this.registeredEvents);\n this.registeredEvents = applyUpdatersToPropsAndRegisterEvents({\n updaterMap: updaterMap$7,\n eventMap: eventMap$7,\n prevProps: prevProps,\n nextProps: this.props,\n instance: this.state.data,\n });\n }\n };\n Data.prototype.componentWillUnmount = function () {\n if (this.state.data !== null) {\n if (this.props.onUnmount) {\n this.props.onUnmount(this.state.data);\n }\n unregisterEvents(this.registeredEvents);\n if (this.state.data) {\n this.state.data.setMap(null);\n }\n }\n };\n Data.prototype.render = function () {\n return null;\n };\n Data.contextType = MapContext;\n return Data;\n}(PureComponent));\n\nvar eventMap$6 = {\n onClick: 'click',\n onDefaultViewportChanged: 'defaultviewport_changed',\n onStatusChanged: 'status_changed',\n};\nvar updaterMap$6 = {\n options: function (instance, options) {\n instance.setOptions(options);\n },\n url: function (instance, url) {\n instance.setUrl(url);\n },\n zIndex: function (instance, zIndex) {\n instance.setZIndex(zIndex);\n },\n};\nvar KmlLayer = /** @class */ (function (_super) {\n __extends(KmlLayer, _super);\n function KmlLayer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.registeredEvents = [];\n _this.state = {\n kmlLayer: null,\n };\n _this.setKmlLayerCallback = function () {\n if (_this.state.kmlLayer !== null && _this.props.onLoad) {\n _this.props.onLoad(_this.state.kmlLayer);\n }\n };\n return _this;\n }\n KmlLayer.prototype.componentDidMount = function () {\n var kmlLayer = new google.maps.KmlLayer(__assign(__assign({}, this.props.options), { map: this.context }));\n this.registeredEvents = applyUpdatersToPropsAndRegisterEvents({\n updaterMap: updaterMap$6,\n eventMap: eventMap$6,\n prevProps: {},\n nextProps: this.props,\n instance: kmlLayer,\n });\n this.setState(function setLmlLayer() {\n return {\n kmlLayer: kmlLayer,\n };\n }, this.setKmlLayerCallback);\n };\n KmlLayer.prototype.componentDidUpdate = function (prevProps) {\n if (this.state.kmlLayer !== null) {\n unregisterEvents(this.registeredEvents);\n this.registeredEvents = applyUpdatersToPropsAndRegisterEvents({\n updaterMap: updaterMap$6,\n eventMap: eventMap$6,\n prevProps: prevProps,\n nextProps: this.props,\n instance: this.state.kmlLayer,\n });\n }\n };\n KmlLayer.prototype.componentWillUnmount = function () {\n if (this.state.kmlLayer !== null) {\n if (this.props.onUnmount) {\n this.props.onUnmount(this.state.kmlLayer);\n }\n unregisterEvents(this.registeredEvents);\n this.state.kmlLayer.setMap(null);\n }\n };\n KmlLayer.prototype.render = function () {\n return null;\n };\n KmlLayer.contextType = MapContext;\n return KmlLayer;\n}(PureComponent));\n\nfunction getOffsetOverride(containerElement, getPixelPositionOffset) {\n return typeof getPixelPositionOffset === 'function'\n ? getPixelPositionOffset(containerElement.offsetWidth, containerElement.offsetHeight)\n : {\n x: 0,\n y: 0,\n };\n}\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction createLatLng(inst, Type) { return new Type(inst.lat, inst.lng); }\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction createLatLngBounds(inst, Type) {\n return new Type(new google.maps.LatLng(inst.ne.lat, inst.ne.lng), new google.maps.LatLng(inst.sw.lat, inst.sw.lng));\n}\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction ensureOfType(inst, \n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype, \n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfactory\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\n) {\n return inst instanceof type ? inst : factory(inst, type);\n}\nfunction ensureOfTypeBounds(inst, \n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype, \n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfactory\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\n) {\n return inst instanceof type ? inst : factory(inst, type);\n}\nfunction getLayoutStylesByBounds(mapCanvasProjection, offset, bounds) {\n var ne = mapCanvasProjection && mapCanvasProjection.fromLatLngToDivPixel(bounds.getNorthEast());\n var sw = mapCanvasProjection && mapCanvasProjection.fromLatLngToDivPixel(bounds.getSouthWest());\n if (ne && sw) {\n return {\n left: \"\".concat(sw.x + offset.x, \"px\"),\n top: \"\".concat(ne.y + offset.y, \"px\"),\n width: \"\".concat(ne.x - sw.x - offset.x, \"px\"),\n height: \"\".concat(sw.y - ne.y - offset.y, \"px\"),\n };\n }\n return {\n left: '-9999px',\n top: '-9999px',\n };\n}\nfunction getLayoutStylesByPosition(mapCanvasProjection, offset, position) {\n var point = mapCanvasProjection && mapCanvasProjection.fromLatLngToDivPixel(position);\n if (point) {\n var x = point.x, y = point.y;\n return {\n left: \"\".concat(x + offset.x, \"px\"),\n top: \"\".concat(y + offset.y, \"px\"),\n };\n }\n return {\n left: '-9999px',\n top: '-9999px',\n };\n}\nfunction getLayoutStyles(mapCanvasProjection, offset, bounds, position) {\n return bounds !== undefined\n ? getLayoutStylesByBounds(mapCanvasProjection, offset, ensureOfTypeBounds(bounds, google.maps.LatLngBounds, createLatLngBounds))\n : getLayoutStylesByPosition(mapCanvasProjection, offset, ensureOfType(position, google.maps.LatLng, createLatLng));\n}\nfunction arePositionsEqual(currentPosition, previousPosition) {\n return currentPosition.left === previousPosition.left\n && currentPosition.top === previousPosition.top\n && currentPosition.width === previousPosition.height\n && currentPosition.height === previousPosition.height;\n}\n\nfunction createOverlay(container, pane, position, bounds, getPixelPositionOffset) {\n var Overlay = /** @class */ (function (_super) {\n __extends(Overlay, _super);\n function Overlay(container, pane, position, bounds) {\n var _this = _super.call(this) || this;\n _this.container = container;\n _this.pane = pane;\n _this.position = position;\n _this.bounds = bounds;\n return _this;\n }\n Overlay.prototype.onAdd = function () {\n var _a;\n var pane = (_a = this.getPanes()) === null || _a === void 0 ? void 0 : _a[this.pane];\n pane === null || pane === void 0 ? void 0 : pane.appendChild(this.container);\n };\n Overlay.prototype.draw = function () {\n var projection = this.getProjection();\n var offset = __assign({}, (this.container\n ? getOffsetOverride(this.container, getPixelPositionOffset)\n : {\n x: 0,\n y: 0,\n }));\n var layoutStyles = getLayoutStyles(projection, offset, this.bounds, this.position);\n for (var _i = 0, _a = Object.entries(layoutStyles); _i < _a.length; _i++) {\n var _b = _a[_i], key = _b[0], value = _b[1];\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n this.container.style[key] = value;\n }\n };\n Overlay.prototype.onRemove = function () {\n if (this.container.parentNode !== null) {\n this.container.parentNode.removeChild(this.container);\n }\n };\n return Overlay;\n }(google.maps.OverlayView));\n return new Overlay(container, pane, position, bounds);\n}\n\nfunction convertToLatLngString(latLngLike) {\n if (!latLngLike) {\n return '';\n }\n var latLng = latLngLike instanceof google.maps.LatLng\n ? latLngLike\n : new google.maps.LatLng(latLngLike.lat, latLngLike.lng);\n return latLng + '';\n}\nfunction convertToLatLngBoundsString(latLngBoundsLike) {\n if (!latLngBoundsLike) {\n return '';\n }\n var latLngBounds = latLngBoundsLike instanceof google.maps.LatLngBounds\n ? latLngBoundsLike\n : new google.maps.LatLngBounds(new google.maps.LatLng(latLngBoundsLike.south, latLngBoundsLike.east), new google.maps.LatLng(latLngBoundsLike.north, latLngBoundsLike.west));\n return latLngBounds + '';\n}\nvar FLOAT_PANE = \"floatPane\";\nvar MAP_PANE = \"mapPane\";\nvar MARKER_LAYER = \"markerLayer\";\nvar OVERLAY_LAYER = \"overlayLayer\";\nvar OVERLAY_MOUSE_TARGET = \"overlayMouseTarget\";\nfunction OverlayViewFunctional(_a) {\n var position = _a.position, bounds = _a.bounds, mapPaneName = _a.mapPaneName, zIndex = _a.zIndex, onLoad = _a.onLoad, onUnmount = _a.onUnmount, getPixelPositionOffset = _a.getPixelPositionOffset, children = _a.children;\n var map = useContext(MapContext);\n var container = useMemo(function () {\n var div = document.createElement('div');\n div.style.position = 'absolute';\n return div;\n }, []);\n var overlay = useMemo(function () {\n return createOverlay(container, mapPaneName, position, bounds, getPixelPositionOffset);\n }, [container, mapPaneName, position, bounds]);\n useEffect(function () {\n onLoad === null || onLoad === void 0 ? void 0 : onLoad(overlay);\n overlay === null || overlay === void 0 ? void 0 : overlay.setMap(map);\n return function () {\n onUnmount === null || onUnmount === void 0 ? void 0 : onUnmount(overlay);\n overlay === null || overlay === void 0 ? void 0 : overlay.setMap(null);\n };\n }, [map, overlay]);\n // to move the container to the foreground and background\n useEffect(function () {\n container.style.zIndex = \"\".concat(zIndex);\n }, [zIndex, container]);\n return ReactDOM.createPortal(children, container);\n}\nvar OverlayViewF = memo(OverlayViewFunctional);\nvar OverlayView = /** @class */ (function (_super) {\n __extends(OverlayView, _super);\n function OverlayView(props) {\n var _this = _super.call(this, props) || this;\n _this.state = {\n paneEl: null,\n containerStyle: {\n // set initial position\n position: 'absolute',\n },\n };\n _this.updatePane = function () {\n var mapPaneName = _this.props.mapPaneName;\n // https://developers.google.com/maps/documentation/javascript/3.exp/reference#MapPanes\n var mapPanes = _this.overlayView.getPanes();\n invariant$1(!!mapPaneName, \"OverlayView requires props.mapPaneName but got %s\", mapPaneName);\n if (mapPanes) {\n _this.setState({\n paneEl: mapPanes[mapPaneName],\n });\n }\n else {\n _this.setState({\n paneEl: null,\n });\n }\n };\n _this.onAdd = function () {\n var _a, _b;\n _this.updatePane();\n (_b = (_a = _this.props).onLoad) === null || _b === void 0 ? void 0 : _b.call(_a, _this.overlayView);\n };\n _this.onPositionElement = function () {\n var _a;\n var mapCanvasProjection = _this.overlayView.getProjection();\n var offset = __assign({ x: 0, y: 0 }, (_this.containerRef.current\n ? getOffsetOverride(_this.containerRef.current, _this.props.getPixelPositionOffset)\n : {}));\n var layoutStyles = getLayoutStyles(mapCanvasProjection, offset, _this.props.bounds, _this.props.position);\n var left = (_a = _this.state.containerStyle, _a.left), top = _a.top, width = _a.width, height = _a.height;\n if (!arePositionsEqual(layoutStyles, { left: left, top: top, width: width, height: height })) {\n _this.setState({\n containerStyle: {\n top: layoutStyles.top || 0,\n left: layoutStyles.left || 0,\n width: layoutStyles.width || 0,\n height: layoutStyles.height || 0,\n position: 'absolute',\n },\n });\n }\n };\n _this.draw = function () {\n _this.onPositionElement();\n };\n _this.onRemove = function () {\n var _a, _b;\n _this.setState(function () { return ({\n paneEl: null,\n }); });\n (_b = (_a = _this.props).onUnmount) === null || _b === void 0 ? void 0 : _b.call(_a, _this.overlayView);\n };\n _this.containerRef = createRef();\n // You must implement three methods: onAdd(), draw(), and onRemove().\n var overlayView = new google.maps.OverlayView();\n overlayView.onAdd = _this.onAdd;\n overlayView.draw = _this.draw;\n overlayView.onRemove = _this.onRemove;\n _this.overlayView = overlayView;\n return _this;\n }\n OverlayView.prototype.componentDidMount = function () {\n this.overlayView.setMap(this.context);\n };\n OverlayView.prototype.componentDidUpdate = function (prevProps) {\n var prevPositionString = convertToLatLngString(prevProps.position);\n var positionString = convertToLatLngString(this.props.position);\n var prevBoundsString = convertToLatLngBoundsString(prevProps.bounds);\n var boundsString = convertToLatLngBoundsString(this.props.bounds);\n if (prevPositionString !== positionString ||\n prevBoundsString !== boundsString) {\n this.overlayView.draw();\n }\n if (prevProps.mapPaneName !== this.props.mapPaneName) {\n this.updatePane();\n }\n };\n OverlayView.prototype.componentWillUnmount = function () {\n this.overlayView.setMap(null);\n };\n OverlayView.prototype.render = function () {\n var paneEl = this.state.paneEl;\n if (paneEl) {\n return ReactDOM.createPortal(jsx(\"div\", { ref: this.containerRef, style: this.state.containerStyle, children: Children.only(this.props.children) }), paneEl);\n }\n else {\n return null;\n }\n };\n OverlayView.FLOAT_PANE = \"floatPane\";\n OverlayView.MAP_PANE = \"mapPane\";\n OverlayView.MARKER_LAYER = \"markerLayer\";\n OverlayView.OVERLAY_LAYER = \"overlayLayer\";\n OverlayView.OVERLAY_MOUSE_TARGET = \"overlayMouseTarget\";\n OverlayView.contextType = MapContext;\n return OverlayView;\n}(PureComponent));\n\nfunction noop() { return; }\n\nvar eventMap$5 = {\n onDblClick: 'dblclick',\n onClick: 'click',\n};\nvar updaterMap$5 = {\n opacity: function (instance, opacity) {\n instance.setOpacity(opacity);\n },\n};\nfunction GroundOverlayFunctional(_a) {\n var url = _a.url, bounds = _a.bounds, options = _a.options, visible = _a.visible;\n var map = useContext(MapContext);\n var imageBounds = new google.maps.LatLngBounds(new google.maps.LatLng(bounds.south, bounds.west), new google.maps.LatLng(bounds.north, bounds.east));\n var groundOverlay = useMemo(function () {\n var overlay = new google.maps.GroundOverlay(url, imageBounds, __assign({}, options));\n return overlay;\n }, []);\n useEffect(function () {\n if (groundOverlay !== null) {\n groundOverlay.setMap(map);\n }\n }, [map]);\n useEffect(function () {\n if (typeof url !== 'undefined' && groundOverlay !== null) {\n groundOverlay.set(\"url\", url);\n groundOverlay.setMap(map);\n }\n }, [groundOverlay, url]);\n useEffect(function () {\n if (typeof visible !== 'undefined' && groundOverlay !== null) {\n groundOverlay.setOpacity(visible ? 1 : 0);\n }\n }, [groundOverlay, visible]);\n useEffect(function () {\n var newBounds = new google.maps.LatLngBounds(new google.maps.LatLng(bounds.south, bounds.west), new google.maps.LatLng(bounds.north, bounds.east));\n if (typeof bounds !== 'undefined' && groundOverlay !== null) {\n groundOverlay.set(\"bounds\", newBounds);\n groundOverlay.setMap(map);\n }\n }, [groundOverlay, bounds]);\n return null;\n}\nvar GroundOverlayF = memo(GroundOverlayFunctional);\nvar GroundOverlay = /** @class */ (function (_super) {\n __extends(GroundOverlay, _super);\n function GroundOverlay() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.registeredEvents = [];\n _this.state = {\n groundOverlay: null,\n };\n _this.setGroundOverlayCallback = function () {\n if (_this.state.groundOverlay !== null && _this.props.onLoad) {\n _this.props.onLoad(_this.state.groundOverlay);\n }\n };\n return _this;\n }\n GroundOverlay.prototype.componentDidMount = function () {\n invariant$1(!!this.props.url || !!this.props.bounds, \"For GroundOverlay, url and bounds are passed in to constructor and are immutable after instantiated. This is the behavior of Google Maps JavaScript API v3 ( See https://developers.google.com/maps/documentation/javascript/reference#GroundOverlay) Hence, use the corresponding two props provided by `react-google-maps-api`, url and bounds. In some cases, you'll need the GroundOverlay component to reflect the changes of url and bounds. You can leverage the React's key property to remount the component. Typically, just `key={url}` would serve your need. See https://github.com/tomchentw/react-google-maps/issues/655\");\n var groundOverlay = new google.maps.GroundOverlay(this.props.url, this.props.bounds, __assign(__assign({}, this.props.options), { map: this.context }));\n this.registeredEvents = applyUpdatersToPropsAndRegisterEvents({\n updaterMap: updaterMap$5,\n eventMap: eventMap$5,\n prevProps: {},\n nextProps: this.props,\n instance: groundOverlay,\n });\n this.setState(function setGroundOverlay() {\n return {\n groundOverlay: groundOverlay,\n };\n }, this.setGroundOverlayCallback);\n };\n GroundOverlay.prototype.componentDidUpdate = function (prevProps) {\n if (this.state.groundOverlay !== null) {\n unregisterEvents(this.registeredEvents);\n this.registeredEvents = applyUpdatersToPropsAndRegisterEvents({\n updaterMap: updaterMap$5,\n eventMap: eventMap$5,\n prevProps: prevProps,\n nextProps: this.props,\n instance: this.state.groundOverlay,\n });\n }\n };\n GroundOverlay.prototype.componentWillUnmount = function () {\n if (this.state.groundOverlay) {\n if (this.props.onUnmount) {\n this.props.onUnmount(this.state.groundOverlay);\n }\n this.state.groundOverlay.setMap(null);\n }\n };\n GroundOverlay.prototype.render = function () {\n return null;\n };\n GroundOverlay.defaultProps = {\n onLoad: noop,\n };\n GroundOverlay.contextType = MapContext;\n return GroundOverlay;\n}(PureComponent));\n\nvar eventMap$4 = {};\nvar updaterMap$4 = {\n data: function (instance, data) {\n instance.setData(data);\n },\n map: function (instance, map) {\n instance.setMap(map);\n },\n options: function (instance, options) {\n instance.setOptions(options);\n },\n};\nfunction HeatmapLayerFunctional(_a) {\n var data = _a.data, onLoad = _a.onLoad, onUnmount = _a.onUnmount, options = _a.options;\n var map = useContext(MapContext);\n var _b = useState(null), instance = _b[0], setInstance = _b[1];\n useEffect(function () {\n if (!google.maps.visualization) {\n invariant$1(!!google.maps.visualization, 'Did you include prop libraries={[\"visualization\"]} in useJsApiScript? %s', google.maps.visualization);\n }\n }, []);\n useEffect(function () {\n invariant$1(!!data, 'data property is required in HeatmapLayer %s', data);\n }, [data]);\n // Order does matter\n useEffect(function () {\n if (instance !== null) {\n instance.setMap(map);\n }\n }, [map]);\n useEffect(function () {\n if (options && instance !== null) {\n instance.setOptions(options);\n }\n }, [instance, options]);\n useEffect(function () {\n var heatmapLayer = new google.maps.visualization.HeatmapLayer(__assign(__assign({}, (options || {})), { data: data, map: map }));\n setInstance(heatmapLayer);\n if (onLoad) {\n onLoad(heatmapLayer);\n }\n return function () {\n if (instance !== null) {\n if (onUnmount) {\n onUnmount(instance);\n }\n instance.setMap(null);\n }\n };\n }, []);\n return null;\n}\nvar HeatmapLayerF = memo(HeatmapLayerFunctional);\nvar HeatmapLayer = /** @class */ (function (_super) {\n __extends(HeatmapLayer, _super);\n function HeatmapLayer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.registeredEvents = [];\n _this.state = {\n heatmapLayer: null,\n };\n _this.setHeatmapLayerCallback = function () {\n if (_this.state.heatmapLayer !== null && _this.props.onLoad) {\n _this.props.onLoad(_this.state.heatmapLayer);\n }\n };\n return _this;\n }\n HeatmapLayer.prototype.componentDidMount = function () {\n invariant$1(!!google.maps.visualization, 'Did you include prop libraries={[\"visualization\"]} to <LoadScript />? %s', google.maps.visualization);\n invariant$1(!!this.props.data, 'data property is required in HeatmapLayer %s', this.props.data);\n var heatmapLayer = new google.maps.visualization.HeatmapLayer(__assign(__assign({}, (this.props.options || {})), { data: this.props.data, map: this.context }));\n this.registeredEvents = applyUpdatersToPropsAndRegisterEvents({\n updaterMap: updaterMap$4,\n eventMap: eventMap$4,\n prevProps: {},\n nextProps: this.props,\n instance: heatmapLayer,\n });\n this.setState(function setHeatmapLayer() {\n return {\n heatmapLayer: heatmapLayer,\n };\n }, this.setHeatmapLayerCallback);\n };\n HeatmapLayer.prototype.componentDidUpdate = function (prevProps) {\n unregisterEvents(this.registeredEvents);\n this.registeredEvents = applyUpdatersToPropsAndRegisterEvents({\n updaterMap: updaterMap$4,\n eventMap: eventMap$4,\n prevProps: prevProps,\n nextProps: this.props,\n instance: this.state.heatmapLayer,\n });\n };\n HeatmapLayer.prototype.componentWillUnmount = function () {\n if (this.state.heatmapLayer !== null) {\n if (this.props.onUnmount) {\n this.props.onUnmount(this.state.heatmapLayer);\n }\n unregisterEvents(this.registeredEvents);\n this.state.heatmapLayer.setMap(null);\n }\n };\n HeatmapLayer.prototype.render = function () {\n return null;\n };\n HeatmapLayer.contextType = MapContext;\n return HeatmapLayer;\n}(PureComponent));\n\nvar eventMap$3 = {\n onCloseClick: 'closeclick',\n onPanoChanged: 'pano_changed',\n onPositionChanged: 'position_changed',\n onPovChanged: 'pov_changed',\n onResize: 'resize',\n onStatusChanged: 'status_changed',\n onVisibleChanged: 'visible_changed',\n onZoomChanged: 'zoom_changed',\n};\nvar updaterMap$3 = {\n register: function (instance, provider, options) {\n instance.registerPanoProvider(provider, options);\n },\n links: function (instance, links) {\n instance.setLinks(links);\n },\n motionTracking: function (instance, motionTracking) {\n instance.setMotionTracking(motionTracking);\n },\n options: function (instance, options) {\n instance.setOptions(options);\n },\n pano: function (instance, pano) {\n instance.setPano(pano);\n },\n position: function (instance, position) {\n instance.setPosition(position);\n },\n pov: function (instance, pov) {\n instance.setPov(pov);\n },\n visible: function (instance, visible) {\n instance.setVisible(visible);\n },\n zoom: function (instance, zoom) {\n instance.setZoom(zoom);\n },\n};\nvar StreetViewPanorama = /** @class */ (function (_super) {\n __extends(StreetViewPanorama, _super);\n function StreetViewPanorama() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.registeredEvents = [];\n _this.state = {\n streetViewPanorama: null,\n };\n _this.setStreetViewPanoramaCallback = function () {\n if (_this.state.streetViewPanorama !== null && _this.props.onLoad) {\n _this.props.onLoad(_this.state.streetViewPanorama);\n }\n };\n return _this;\n }\n StreetViewPanorama.prototype.componentDidMount = function () {\n var _a, _b;\n var streetViewPanorama = (_b = (_a = this.context) === null || _a === void 0 ? void 0 : _a.getStreetView()) !== null && _b !== void 0 ? _b : null;\n this.registeredEvents = applyUpdatersToPropsAndRegisterEvents({\n updaterMap: updaterMap$3,\n eventMap: eventMap$3,\n prevProps: {},\n nextProps: this.props,\n instance: streetViewPanorama,\n });\n this.setState(function () {\n return {\n streetViewPanorama: streetViewPanorama,\n };\n }, this.setStreetViewPanoramaCallback);\n };\n StreetViewPanorama.prototype.componentDidUpdate = function (prevProps) {\n if (this.state.streetViewPanorama !== null) {\n unregisterEvents(this.registeredEvents);\n this.registeredEvents = applyUpdatersToPropsAndRegisterEvents({\n updaterMap: updaterMap$3,\n eventMap: eventMap$3,\n prevProps: prevProps,\n nextProps: this.props,\n instance: this.state.streetViewPanorama,\n });\n }\n };\n StreetViewPanorama.prototype.componentWillUnmount = function () {\n if (this.state.streetViewPanorama !== null) {\n if (this.props.onUnmount) {\n this.props.onUnmount(this.state.streetViewPanorama);\n }\n unregisterEvents(this.registeredEvents);\n this.state.streetViewPanorama.setVisible(false);\n }\n };\n StreetViewPanorama.prototype.render = function () {\n return null;\n };\n StreetViewPanorama.contextType = MapContext;\n return StreetViewPanorama;\n}(PureComponent));\n\nvar StreetViewService = /** @class */ (function (_super) {\n __extends(StreetViewService, _super);\n function StreetViewService() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.state = {\n streetViewService: null,\n };\n _this.setStreetViewServiceCallback = function () {\n if (_this.state.streetViewService !== null && _this.props.onLoad) {\n _this.props.onLoad(_this.state.streetViewService);\n }\n };\n return _this;\n }\n StreetViewService.prototype.componentDidMount = function () {\n var streetViewService = new google.maps.StreetViewService();\n this.setState(function setStreetViewService() {\n return {\n streetViewService: streetViewService,\n };\n }, this.setStreetViewServiceCallback);\n };\n StreetViewService.prototype.componentWillUnmount = function () {\n if (this.state.streetViewService !== null && this.props.onUnmount) {\n this.props.onUnmount(this.state.streetViewService);\n }\n };\n StreetViewService.prototype.render = function () {\n return null;\n };\n StreetViewService.contextType = MapContext;\n return StreetViewService;\n}(PureComponent));\n\nvar DirectionsService = /** @class */ (function (_super) {\n __extends(DirectionsService, _super);\n function DirectionsService() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.state = {\n directionsService: null,\n };\n _this.setDirectionsServiceCallback = function () {\n if (_this.state.directionsService !== null && _this.props.onLoad) {\n _this.props.onLoad(_this.state.directionsService);\n }\n };\n return _this;\n }\n DirectionsService.prototype.componentDidMount = function () {\n invariant$1(!!this.props.options, 'DirectionsService expected options object as parameter, but got %s', this.props.options);\n var directionsService = new google.maps.DirectionsService();\n this.setState(function setDirectionsService() {\n return {\n directionsService: directionsService,\n };\n }, this.setDirectionsServiceCallback);\n };\n DirectionsService.prototype.componentDidUpdate = function () {\n if (this.state.directionsService !== null) {\n this.state.directionsService.route(this.props.options, this.props.callback);\n }\n };\n DirectionsService.prototype.componentWillUnmount = function () {\n if (this.state.directionsService !== null) {\n if (this.props.onUnmount) {\n this.props.onUnmount(this.state.directionsService);\n }\n }\n };\n DirectionsService.prototype.render = function () {\n return null;\n };\n return DirectionsService;\n}(PureComponent));\n\nvar eventMap$2 = {\n onDirectionsChanged: 'directions_changed',\n};\nvar updaterMap$2 = {\n directions: function (instance, directions) {\n instance.setDirections(directions);\n },\n map: function (instance, map) {\n instance.setMap(map);\n },\n options: function (instance, options) {\n instance.setOptions(options);\n },\n panel: function (instance, panel) {\n instance.setPanel(panel);\n },\n routeIndex: function (instance, routeIndex) {\n instance.setRouteIndex(routeIndex);\n },\n};\nvar DirectionsRenderer = /** @class */ (function (_super) {\n __extends(DirectionsRenderer, _super);\n function DirectionsRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.registeredEvents = [];\n _this.state = {\n directionsRenderer: null,\n };\n _this.setDirectionsRendererCallback = function () {\n if (_this.state.directionsRenderer !== null) {\n _this.state.directionsRenderer.setMap(_this.context);\n if (_this.props.onLoad) {\n _this.props.onLoad(_this.state.directionsRenderer);\n }\n }\n };\n return _this;\n }\n DirectionsRenderer.prototype.componentDidMount = function () {\n var directionsRenderer = new google.maps.DirectionsRenderer(this.props.options);\n this.registeredEvents = applyUpdatersToPropsAndRegisterEvents({\n updaterMap: updaterMap$2,\n eventMap: eventMap$2,\n prevProps: {},\n nextProps: this.props,\n instance: directionsRenderer,\n });\n this.setState(function setDirectionsRenderer() {\n return {\n directionsRenderer: directionsRenderer,\n };\n }, this.setDirectionsRendererCallback);\n };\n DirectionsRenderer.prototype.componentDidUpdate = function (prevProps) {\n if (this.state.directionsRenderer !== null) {\n unregisterEvents(this.registeredEvents);\n this.registeredEvents = applyUpdatersToPropsAndRegisterEvents({\n updaterMap: updaterMap$2,\n eventMap: eventMap$2,\n prevProps: prevProps,\n nextProps: this.props,\n instance: this.state.directionsRenderer,\n });\n }\n };\n DirectionsRenderer.prototype.componentWillUnmount = function () {\n if (this.state.directionsRenderer !== null) {\n if (this.props.onUnmount) {\n this.props.onUnmount(this.state.directionsRenderer);\n }\n unregisterEvents(this.registeredEvents);\n if (this.state.directionsRenderer) {\n this.state.directionsRenderer.setMap(null);\n }\n }\n };\n DirectionsRenderer.prototype.render = function () {\n return jsx(Fragment, {});\n };\n DirectionsRenderer.contextType = MapContext;\n return DirectionsRenderer;\n}(PureComponent));\n\nvar DistanceMatrixService = /** @class */ (function (_super) {\n __extends(DistanceMatrixService, _super);\n function DistanceMatrixService() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.state = {\n distanceMatrixService: null,\n };\n _this.setDistanceMatrixServiceCallback = function () {\n if (_this.state.distanceMatrixService !== null && _this.props.onLoad) {\n _this.props.onLoad(_this.state.distanceMatrixService);\n }\n };\n return _this;\n }\n DistanceMatrixService.prototype.componentDidMount = function () {\n invariant$1(!!this.props.options, 'DistanceMatrixService expected options object as parameter, but go %s', this.props.options);\n var distanceMatrixService = new google.maps.DistanceMatrixService();\n this.setState(function setDistanceMatrixService() {\n return {\n distanceMatrixService: distanceMatrixService,\n };\n }, this.setDistanceMatrixServiceCallback);\n };\n DistanceMatrixService.prototype.componentDidUpdate = function () {\n if (this.state.distanceMatrixService !== null) {\n this.state.distanceMatrixService.getDistanceMatrix(this.props.options, this.props.callback);\n }\n };\n DistanceMatrixService.prototype.componentWillUnmount = function () {\n if (this.state.distanceMatrixService !== null && this.props.onUnmount) {\n this.props.onUnmount(this.state.distanceMatrixService);\n }\n };\n DistanceMatrixService.prototype.render = function () {\n return null;\n };\n return DistanceMatrixService;\n}(PureComponent));\n\nvar eventMap$1 = {\n onPlacesChanged: 'places_changed',\n};\nvar updaterMap$1 = {\n bounds: function (instance, bounds) {\n instance.setBounds(bounds);\n },\n};\nvar StandaloneSearchBox = /** @class */ (function (_super) {\n __extends(StandaloneSearchBox, _super);\n function StandaloneSearchBox() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.registeredEvents = [];\n _this.containerElement = createRef();\n _this.state = {\n searchBox: null,\n };\n _this.setSearchBoxCallback = function () {\n if (_this.state.searchBox !== null && _this.props.onLoad) {\n _this.props.onLoad(_this.state.searchBox);\n }\n };\n return _this;\n }\n StandaloneSearchBox.prototype.componentDidMount = function () {\n invariant$1(!!google.maps.places, 'You need to provide libraries={[\"places\"]} prop to <LoadScript /> component %s', google.maps.places);\n if (this.containerElement !== null && this.containerElement.current !== null) {\n var input = this.containerElement.current.querySelector('input');\n if (input !== null) {\n var searchBox_1 = new google.maps.places.SearchBox(input, this.props.options);\n this.registeredEvents = applyUpdatersToPropsAndRegisterEvents({\n updaterMap: updaterMap$1,\n eventMap: eventMap$1,\n prevProps: {},\n nextProps: this.props,\n instance: searchBox_1,\n });\n this.setState(function setSearchBox() {\n return {\n searchBox: searchBox_1,\n };\n }, this.setSearchBoxCallback);\n }\n }\n };\n StandaloneSearchBox.prototype.componentDidUpdate = function (prevProps) {\n if (this.state.searchBox !== null) {\n unregisterEvents(this.registeredEvents);\n this.registeredEvents = applyUpdatersToPropsAndRegisterEvents({\n updaterMap: updaterMap$1,\n eventMap: eventMap$1,\n prevProps: prevProps,\n nextProps: this.props,\n instance: this.state.searchBox,\n });\n }\n };\n StandaloneSearchBox.prototype.componentWillUnmount = function () {\n if (this.state.searchBox !== null) {\n if (this.props.onUnmount) {\n this.props.onUnmount(this.state.searchBox);\n }\n unregisterEvents(this.registeredEvents);\n }\n };\n StandaloneSearchBox.prototype.render = function () {\n return jsx(\"div\", { ref: this.containerElement, children: Children.only(this.props.children) });\n };\n StandaloneSearchBox.contextType = MapContext;\n return StandaloneSearchBox;\n}(PureComponent));\n\nvar eventMap = {\n onPlaceChanged: 'place_changed',\n};\nvar updaterMap = {\n bounds: function (instance, bounds) {\n instance.setBounds(bounds);\n },\n restrictions: function (instance, restrictions) {\n instance.setComponentRestrictions(restrictions);\n },\n fields: function (instance, fields) {\n instance.setFields(fields);\n },\n options: function (instance, options) {\n instance.setOptions(options);\n },\n types: function (instance, types) {\n instance.setTypes(types);\n },\n};\nvar Autocomplete = /** @class */ (function (_super) {\n __extends(Autocomplete, _super);\n function Autocomplete() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.registeredEvents = [];\n _this.containerElement = createRef();\n _this.state = {\n autocomplete: null,\n };\n _this.setAutocompleteCallback = function () {\n if (_this.state.autocomplete !== null && _this.props.onLoad) {\n _this.props.onLoad(_this.state.autocomplete);\n }\n };\n return _this;\n }\n Autocomplete.prototype.componentDidMount = function () {\n var _a;\n invariant$1(!!google.maps.places, 'You need to provide libraries={[\"places\"]} prop to <LoadScript /> component %s', google.maps.places);\n // TODO: why current could be equal null?\n var input = (_a = this.containerElement.current) === null || _a === void 0 ? void 0 : _a.querySelector('input');\n if (input) {\n var autocomplete_1 = new google.maps.places.Autocomplete(input, this.props.options);\n this.registeredEvents = applyUpdatersToPropsAndRegisterEvents({\n updaterMap: updaterMap,\n eventMap: eventMap,\n prevProps: {},\n nextProps: this.props,\n instance: autocomplete_1,\n });\n this.setState(function () {\n return {\n autocomplete: autocomplete_1,\n };\n }, this.setAutocompleteCallback);\n }\n };\n Autocomplete.prototype.componentDidUpdate = function (prevProps) {\n unregisterEvents(this.registeredEvents);\n this.registeredEvents = applyUpdatersToPropsAndRegisterEvents({\n updaterMap: updaterMap,\n eventMap: eventMap,\n prevProps: prevProps,\n nextProps: this.props,\n instance: this.state.autocomplete,\n });\n };\n Autocomplete.prototype.componentWillUnmount = function () {\n if (this.state.autocomplete !== null) {\n unregisterEvents(this.registeredEvents);\n }\n };\n Autocomplete.prototype.render = function () {\n return jsx(\"div\", { ref: this.containerElement, className: this.props.className, children: Children.only(this.props.children) });\n };\n Autocomplete.defaultProps = {\n className: ''\n };\n Autocomplete.contextType = MapContext;\n return Autocomplete;\n}(PureComponent));\n\nexport { Autocomplete, BicyclingLayer, BicyclingLayerF, Circle, CircleF, Data, DataF, DirectionsRenderer, DirectionsService, DistanceMatrixService, DrawingManager, DrawingManagerF, FLOAT_PANE, GoogleMap, index_esm as GoogleMapsMarkerClusterer, GoogleMarkerClusterer$1 as GoogleMarkerClusterer, GroundOverlay, GroundOverlayF, HeatmapLayer, HeatmapLayerF, InfoBoxComponent as InfoBox, InfoBoxF, InfoWindow, InfoWindowF, KmlLayer, LoadScript, LoadScriptNext$1 as LoadScriptNext, MAP_PANE, MARKER_LAYER, MapContext, Marker, ClustererComponent as MarkerClusterer, MarkerClustererF, MarkerF, OVERLAY_LAYER, OVERLAY_MOUSE_TARGET, OverlayView, OverlayViewF, Polygon, PolygonF, Polyline, PolylineF, Rectangle, RectangleF, StandaloneSearchBox, StreetViewPanorama, StreetViewService, TrafficLayer, TrafficLayerF, TransitLayer, TransitLayerF, useGoogleMap, useJsApiLoader, useLoadScript };\n//# sourceMappingURL=esm.js.map\n","import { FC } from \"react\";\nimport classNames from \"classnames\";\n\nimport styles from \"./Overlay.module.scss\";\n\ninterface OverlayProps {\n className?: string;\n children: React.ReactNode;\n}\n\nexport const Overlay: FC<OverlayProps> = ({ children, className }) => {\n return <div className={classNames(styles.root, className)}>{children}</div>;\n};\n","import styles from \"./Spinner.module.scss\";\n\nexport const Spinner = () => {\n return <div className={styles.loader}>Loading...</div>;\n};\n","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar runtime = (function (exports) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var defineProperty = Object.defineProperty || function (obj, key, desc) { obj[key] = desc.value; };\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n function define(obj, key, value) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n return obj[key];\n }\n try {\n // IE 8 has a broken Object.defineProperty that only works on DOM objects.\n define({}, \"\");\n } catch (err) {\n define = function(obj, key, value) {\n return obj[key] = value;\n };\n }\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n defineProperty(generator, \"_invoke\", { value: makeInvokeMethod(innerFn, self, context) });\n\n return generator;\n }\n exports.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n define(IteratorPrototype, iteratorSymbol, function () {\n return this;\n });\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = GeneratorFunctionPrototype;\n defineProperty(Gp, \"constructor\", { value: GeneratorFunctionPrototype, configurable: true });\n defineProperty(\n GeneratorFunctionPrototype,\n \"constructor\",\n { value: GeneratorFunction, configurable: true }\n );\n GeneratorFunction.displayName = define(\n GeneratorFunctionPrototype,\n toStringTagSymbol,\n \"GeneratorFunction\"\n );\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n define(prototype, method, function(arg) {\n return this._invoke(method, arg);\n });\n });\n }\n\n exports.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n exports.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n define(genFun, toStringTagSymbol, \"GeneratorFunction\");\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n exports.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return PromiseImpl.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return PromiseImpl.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n defineProperty(this, \"_invoke\", { value: enqueue });\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n define(AsyncIterator.prototype, asyncIteratorSymbol, function () {\n return this;\n });\n exports.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n if (PromiseImpl === void 0) PromiseImpl = Promise;\n\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList),\n PromiseImpl\n );\n\n return exports.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var methodName = context.method;\n var method = delegate.iterator[methodName];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method, or a missing .next mehtod, always terminate the\n // yield* loop.\n context.delegate = null;\n\n // Note: [\"return\"] must be used for ES3 parsing compatibility.\n if (methodName === \"throw\" && delegate.iterator[\"return\"]) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n if (methodName !== \"return\") {\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a '\" + methodName + \"' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n define(Gp, toStringTagSymbol, \"Generator\");\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n define(Gp, iteratorSymbol, function() {\n return this;\n });\n\n define(Gp, \"toString\", function() {\n return \"[object Generator]\";\n });\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n exports.keys = function(val) {\n var object = Object(val);\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n exports.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n\n // Regardless of whether this script is executing as a CommonJS module\n // or not, return the runtime object so that we can declare the variable\n // regeneratorRuntime in the outer scope, which allows this module to be\n // injected easily by `bin/regenerator --include-runtime script.js`.\n return exports;\n\n}(\n // If this script is executing as a CommonJS module, use module.exports\n // as the regeneratorRuntime namespace. Otherwise create a new empty\n // object. Either way, the resulting object will be used to initialize\n // the regeneratorRuntime variable at the top of this file.\n typeof module === \"object\" ? module.exports : {}\n));\n\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n // This module should not be running in strict mode, so the above\n // assignment should always work unless something is misconfigured. Just\n // in case runtime.js accidentally runs in strict mode, in modern engines\n // we can explicitly access globalThis. In older engines we can escape\n // strict mode using a global Function call. This could conceivably fail\n // if a Content Security Policy forbids using Function, but in that case\n // the proper solution is to fix the accidental strict mode problem. If\n // you've misconfigured your bundler to force strict mode and applied a\n // CSP to forbid Function, and you're not willing to fix either of those\n // problems, please detail your unique predicament in a GitHub issue.\n if (typeof globalThis === \"object\") {\n globalThis.regeneratorRuntime = runtime;\n } else {\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n }\n}\n","\"use strict\";var regeneratorRuntime = require(\"regenerator-runtime\");function asyncGeneratorStep(e,r,n,t,o,a,c){try{var s=e[a](c),u=s.value}catch(e){return void n(e)}s.done?r(u):Promise.resolve(u).then(t,o)}function _asyncToGenerator(e){return function(){var r=this,n=arguments;return new Promise(function(t,o){var a=e.apply(r,n);function c(e){asyncGeneratorStep(a,t,o,c,s,\"next\",e)}function s(e){asyncGeneratorStep(a,t,o,c,s,\"throw\",e)}c(void 0)})}}Object.defineProperty(exports,\"__esModule\",{value:!0}),exports.default=void 0;var DEBUG=!1,API_KEY=null,LANGUAGE=\"en\",REGION=null,LOCATION_TYPE=null,GOOGLE_API=\"https://maps.googleapis.com/maps/api/geocode/json\";function log(e){var r=arguments.length>1&&void 0!==arguments[1]&&arguments[1];DEBUG&&(r?console.warn(e):console.log(e))}function handleUrl(e){return _handleUrl.apply(this,arguments)}function _handleUrl(){return(_handleUrl=_asyncToGenerator(regeneratorRuntime.mark(function e(r){var n,t;return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,fetch(r).catch(function(){return Promise.reject(new Error(\"Error fetching data\"))});case 2:return n=e.sent,e.next=5,n.json().catch(function(){return log(\"Error parsing server response\"),Promise.reject(new Error(\"Error parsing server response\"))});case 5:if(\"OK\"!==(t=e.sent).status){e.next=9;break}return log(t),e.abrupt(\"return\",t);case 9:return log(\"\".concat(t.error_message,\".\\nServer returned status code \").concat(t.status),!0),e.abrupt(\"return\",Promise.reject(new Error(\"\".concat(t.error_message,\".\\nServer returned status code \").concat(t.status))));case 11:case\"end\":return e.stop()}},e)}))).apply(this,arguments)}var _default={setApiKey:function(apiKey){API_KEY=apiKey},setLanguage:function(language){LANGUAGE=language},setRegion:function(region){REGION=region},setLocationType:function(locationType){LOCATION_TYPE=locationType},enableDebug:function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];DEBUG=e},fromLatLng:function(lat,lng,apiKey,language,region,locationType){return _asyncToGenerator(regeneratorRuntime.mark(function a(){var c,s;return regeneratorRuntime.wrap(function(a){for(;;)switch(a.prev=a.next){case 0:if(lat&&lng){a.next=3;break}return log(\"Provided coordinates are invalid\",!0),a.abrupt(\"return\",Promise.reject(new Error(\"Provided coordinates are invalid\")));case 3:return c=\"\".concat(lat,\",\").concat(lng),s=\"\".concat(GOOGLE_API,\"?latlng=\").concat(encodeURIComponent(c)),(apiKey||API_KEY)&&(s+=\"&key=\".concat(API_KEY=apiKey||API_KEY)),(language||LANGUAGE)&&(s+=\"&language=\".concat(LANGUAGE=language||LANGUAGE)),(region||REGION)&&(REGION=region||REGION,s+=\"&region=\".concat(encodeURIComponent(REGION))),(locationType||LOCATION_TYPE)&&(LOCATION_TYPE=locationType||LOCATION_TYPE,s+=\"&location_type=\".concat(encodeURIComponent(LOCATION_TYPE))),a.abrupt(\"return\",handleUrl(s));case 9:case\"end\":return a.stop()}},a)}))()},fromAddress:function(address,apiKey,language,region){return _asyncToGenerator(regeneratorRuntime.mark(function o(){var a;return regeneratorRuntime.wrap(function(o){for(;;)switch(o.prev=o.next){case 0:if(address){o.next=3;break}return log(\"Provided address is invalid\",!0),o.abrupt(\"return\",Promise.reject(new Error(\"Provided address is invalid\")));case 3:return a=\"\".concat(GOOGLE_API,\"?address=\").concat(encodeURIComponent(address)),(apiKey||API_KEY)&&(a+=\"&key=\".concat(API_KEY=apiKey||API_KEY)),(language||LANGUAGE)&&(a+=\"&language=\".concat(LANGUAGE=language||LANGUAGE)),(region||REGION)&&(REGION=region||REGION,a+=\"&region=\".concat(encodeURIComponent(REGION))),o.abrupt(\"return\",handleUrl(a));case 8:case\"end\":return o.stop()}},o)}))()}};exports.default=_default;","import { LoadScriptProps } from \"@react-google-maps/api\";\n\nimport { MAP_INITIAL_ZOOM } from \"src/constants/map\";\n\nexport const zoom = MAP_INITIAL_ZOOM;\n\nexport const mapLibraries: LoadScriptProps[\"libraries\"] = [\"places\"];\n\nexport const mapOptions: google.maps.MapOptions = {\n disableDefaultUI: true,\n};\n\nexport const markerOptions: google.maps.MarkerOptions = {\n optimized: true,\n};\n\nexport const mountTimeout = 1000;\n","import classNames from \"classnames\";\nimport Geocode from \"react-geocode\";\nimport { FC, ReactNode, useCallback, useMemo } from \"react\";\nimport { GoogleMap, GoogleMapProps } from \"@react-google-maps/api\";\n\nimport { useConfigContext } from \"src/context/config\";\nimport { MAP_FALLBACK_CENTER } from \"src/constants/map\";\nimport { useCourierPointStore } from \"src/stores/courierPoint\";\nimport { useSelectedPointStore } from \"src/stores/selectedPoint\";\n\nimport { mapOptions, zoom } from \"./MapGoogle.constants\";\n\nimport styles from \"./MapGoogle.module.scss\";\n\ninterface MapContainerProps {\n className?: string;\n children: ReactNode;\n onLoad?: GoogleMapProps[\"onLoad\"];\n onIdle?: GoogleMapProps[\"onIdle\"];\n onUnmount?: GoogleMapProps[\"onUnmount\"];\n}\n\nGeocode.setLocationType(\"ROOFTOP\");\nGeocode.setApiKey(import.meta.env.VITE_REACT_APP_GMAP_KEY);\n\nexport const MapContainer: FC<MapContainerProps> = ({ children, className, onLoad, onIdle, onUnmount }) => {\n const { map, disableCourierDelivery } = useConfigContext();\n\n const setCourierPoint = useCourierPointStore((state) => state.setCourierPoint);\n const setSelectedPoint = useSelectedPointStore((state) => state.setSelectedPoint);\n\n const center: google.maps.LatLngLiteral = useMemo(\n () => ({\n lat: map?.center?.[0] ?? MAP_FALLBACK_CENTER[0],\n lng: map?.center?.[1] ?? MAP_FALLBACK_CENTER[1],\n }),\n [map?.center],\n );\n\n const handleMapClick = useCallback(\n async (event: google.maps.MapMouseEvent) => {\n const { latLng } = event;\n\n if (!latLng || disableCourierDelivery) {\n return;\n }\n\n setSelectedPoint(null);\n\n try {\n const response = await Geocode.fromLatLng(latLng.lat().toString(), latLng.lng().toString());\n const address = response?.results?.[0]?.formatted_address;\n\n if (address) {\n setCourierPoint({\n address,\n coords: [latLng.lat(), latLng.lng()],\n });\n }\n } catch (error) {\n setCourierPoint({\n address: null,\n coords: [latLng.lat(), latLng.lng()],\n });\n }\n },\n [disableCourierDelivery, setCourierPoint, setSelectedPoint],\n );\n\n return (\n <GoogleMap\n zoom={zoom}\n center={center}\n options={mapOptions}\n mapContainerClassName={classNames(styles.root, className)}\n onLoad={onLoad}\n onIdle={onIdle}\n onUnmount={onUnmount}\n onClick={handleMapClick}\n >\n {children}\n </GoogleMap>\n );\n};\n","export default \"data:image/png;base64,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\"","import { FC } from \"react\";\nimport { T } from \"@tolgee/react\";\nimport classNames from \"classnames\";\n\nimport { CourierPoint } from \"src/types/points\";\nimport { BALLOON_DETAILS_ID } from \"src/constants/map\";\nimport LogoIcon from \"src/assets/courier-balloon-logo.svg\";\n\nimport { Button } from \"../Button\";\n\nimport styles from \"./CourierBalloon.module.scss\";\n\ntype CourierBalloonProps = Partial<CourierPoint> & {\n SSR?: boolean;\n variant: \"error\" | \"default\";\n className?: string;\n onDetails?: () => void;\n};\n\nexport const CourierBalloon: FC<CourierBalloonProps> = ({ SSR, variant, address, className, onDetails }) => {\n const isError = variant === \"error\";\n const isDefault = variant === \"default\";\n\n const title = SSR ? `{ courier_balloon.title }` : <T keyName=\"title\" ns=\"courier_balloon\" />;\n const errorTitle = SSR ? `{ courier_balloon.error_title }` : <T keyName=\"error_title\" ns=\"courier_balloon\" />;\n\n const errorDescription = SSR ? (\n `{ courier_balloon.error_description }`\n ) : (\n <T keyName=\"error_description\" ns=\"courier_balloon\" />\n );\n\n return (\n <div className={classNames(styles.root, className, styles[`${variant}Variant`])}>\n <div className={styles.header}>\n <LogoIcon />\n <span className={styles.title}>{isError ? errorTitle : title}</span>\n </div>\n <div className={styles.description}>{isError ? errorDescription : address || `{{ properties.address }}`}</div>\n {isDefault && (\n <div className={styles.actions}>\n <Button id={BALLOON_DETAILS_ID} as=\"button\" variant=\"primary\" className={styles.details} onClick={onDetails}>\n {SSR ? `{ details }` : <T keyName=\"details\" ns=\"common\" />}\n </Button>\n </div>\n )}\n </div>\n );\n};\n","import { FC, useState } from \"react\";\nimport { Marker, InfoWindow } from \"@react-google-maps/api\";\n\nimport { CourierPoint } from \"src/types/points\";\nimport { MARKER_SIZE } from \"src/constants/map\";\nimport courierMarkerIcon from \"src/assets/markers/pin-user.png\";\n\nimport { markerOptions } from \"./MapGoogle.constants\";\nimport { CourierBalloon } from \"../CourierBalloon/CourierBalloon\";\n\nimport styles from \"./MapGoogle.module.scss\";\n\ninterface CourierPointProps {\n point: CourierPoint;\n setOpenDetails: (open: boolean) => void;\n setCourierPoint: (point: null | CourierPoint) => void;\n}\n\nexport const CourierPointMarker: FC<CourierPointProps> = ({ point, setOpenDetails, setCourierPoint }) => {\n const [marker, setMarker] = useState<null | google.maps.Marker>(null);\n\n const position = {\n lat: point.coords[0],\n lng: point.coords[1],\n };\n\n const handleDetailsClick = () => {\n setOpenDetails(true);\n };\n\n const handleCloseBalloon = () => {\n setCourierPoint(null);\n };\n\n const icon: google.maps.Icon = {\n url: courierMarkerIcon,\n scaledSize: new google.maps.Size(...MARKER_SIZE),\n };\n\n return (\n <Marker noClustererRedraw icon={icon} position={position} options={markerOptions} onLoad={setMarker}>\n {marker?.getVisible() && (\n <InfoWindow onCloseClick={handleCloseBalloon}>\n <CourierBalloon\n variant={point.address ? \"default\" : \"error\"}\n {...point}\n className={styles.balloon}\n onDetails={handleDetailsClick}\n />\n </InfoWindow>\n )}\n </Marker>\n );\n};\n","export default \"data:image/png;base64,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\"","export default \"data:image/png;base64,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\"","export default \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8cGF0aAogICAgZD0iTTEyLjUgOC4wMDAwM0MxMi41IDguMjg2NzggMTIuMzkyIDguNTczNSAxMi4xNzYzIDguNzkyMTJMNS4zODc0OCAxNS42NzE4QzQuOTU1NjIgMTYuMTA5NCA0LjI1NTQ0IDE2LjEwOTQgMy44MjM3NiAxNS42NzE4QzMuMzkyMDggMTUuMjM0MyAzLjM5MjA4IDE0LjUyNDkgMy44MjM3NiAxNC4wODcyTDkuODMwOTEgOC4wMDAwM0wzLjgyMzk3IDEuOTEyNzlDMy4zOTIyOSAxLjQ3NTE1IDMuMzkyMjkgMC43NjU4MTEgMy44MjM5NyAwLjMyODM4N0M0LjI1NTY1IC0wLjEwOTQ2MSA0Ljk1NTgzIC0wLjEwOTQ2MSA1LjM4NzY5IDAuMzI4Mzg3TDEyLjE3NjUgNy4yMDc5M0MxMi4zOTIyIDcuNDI2NjYgMTIuNSA3LjcxMzM4IDEyLjUgOC4wMDAwM1oiCiAgICBmaWxsPSJjdXJyZW50Y29sb3IiIC8+Cjwvc3ZnPgo=\"","import { FC } from \"react\";\nimport { T } from \"@tolgee/react\";\nimport classNames from \"classnames\";\n\nimport { LocationPoint } from \"src/types/points\";\nimport LogoIcon from \"src/assets/balloon-logo.svg\";\nimport ArrowRightIcon from \"src/assets/arrow-right.svg\";\nimport { BALLOON_SUBMIT_ID, BALLOON_DETAILS_ID } from \"src/constants/map\";\n\nimport { Button } from \"../Button\";\n\nimport styles from \"./LocationBalloon.module.scss\";\n\ntype LocationBalloonProps = Partial<LocationPoint> & {\n SSR?: boolean;\n className?: string;\n onSubmit?: () => void;\n onDetails?: () => void;\n};\n\nexport const LocationBalloon: FC<LocationBalloonProps> = ({\n SSR,\n name,\n location,\n onSubmit,\n className,\n onDetails,\n location_name,\n}) => {\n return (\n <div className={classNames(styles.root, className)}>\n <div className={styles.header}>\n <LogoIcon />\n <span className={styles.title}>{name || `{{ properties.point.name }}`}</span>\n </div>\n <div className={styles.description}>\n {location?.full_address || `{{ properties.point.location.full_address }}`},{\" \"}\n {location_name || `{{ properties.point.location_name }}`}\n </div>\n <div className={styles.actions}>\n <Button id={BALLOON_SUBMIT_ID} variant=\"primary\" className={styles.submit} onClick={onSubmit}>\n {SSR ? `{ choose }` : <T keyName=\"choose\" ns=\"common\" />}\n </Button>\n <Button id={BALLOON_DETAILS_ID} as=\"link\" variant=\"primary\" className={styles.details} onClick={onDetails}>\n {SSR ? `{ details }` : <T keyName=\"details\" ns=\"common\" />}\n <ArrowRightIcon />\n </Button>\n </div>\n </div>\n );\n};\n","import { FC, useState } from \"react\";\nimport { Marker, InfoWindow, MarkerProps } from \"@react-google-maps/api\";\n\nimport { LocationPoint } from \"src/types/points\";\nimport pvzMarkerIcon from \"src/assets/markers/pin-pvz.png\";\nimport postmatMarkerIcon from \"src/assets/markers/pin-postmat.png\";\nimport { MARKER_SIZE, SCALED_MARKER_SIZE } from \"src/constants/map\";\n\nimport { LocationBalloon } from \"../LocationBalloon\";\nimport { markerOptions } from \"./MapGoogle.constants\";\n\nimport styles from \"./MapGoogle.module.scss\";\n\ninterface PointProps {\n point: LocationPoint;\n selectedPoint: Nullable<LocationPoint>;\n clusterer: MarkerProps[\"clusterer\"];\n setOpenDetails: (open: boolean) => void;\n onPointClick: (point: LocationPoint) => void;\n onPointSelected: (point: Nullable<LocationPoint>) => void;\n}\n\nexport const Point: FC<PointProps> = ({\n point,\n clusterer,\n onPointClick,\n selectedPoint,\n setOpenDetails,\n onPointSelected,\n}) => {\n const [marker, setMarker] = useState<Nullable<google.maps.Marker>>(null);\n\n const handleMarkerClick = () => {\n setOpenDetails(false);\n onPointSelected(point);\n };\n\n const position = {\n lat: point.location.latitude,\n lng: point.location.longitude,\n };\n\n const handleCloseClick = () => onPointSelected(null);\n\n const handleDetailsClick = () => {\n setOpenDetails(true);\n onPointSelected(point);\n };\n\n const handleSubmitClick = () => {\n onPointClick(point);\n setOpenDetails(false);\n onPointSelected(null);\n };\n\n const markerSize = selectedPoint?.uid === point.uid ? SCALED_MARKER_SIZE : MARKER_SIZE;\n\n const icon: google.maps.Icon = {\n scaledSize: new google.maps.Size(...markerSize),\n url: point.type === 30 ? postmatMarkerIcon : pvzMarkerIcon,\n };\n\n return (\n <Marker\n noClustererRedraw\n icon={icon}\n key={point.uid}\n position={position}\n clusterer={clusterer}\n options={markerOptions}\n onLoad={setMarker}\n onClick={handleMarkerClick}\n >\n {selectedPoint?.uid === point.uid && marker?.getVisible() && (\n <InfoWindow onCloseClick={handleCloseClick}>\n <LocationBalloon\n {...point}\n className={styles.balloon}\n onSubmit={handleSubmitClick}\n onDetails={handleDetailsClick}\n />\n </InfoWindow>\n )}\n </Marker>\n );\n};\n","import { MarkerClusterer } from \"@react-google-maps/api\";\nimport { ComponentProps, FC, Fragment, memo } from \"react\";\n\nimport { LocationPoint } from \"src/types/points\";\n\nimport { Point } from \"./Point\";\n\nimport styles from \"./MapGoogle.module.scss\";\n\ntype PointProps = ComponentProps<typeof Point>;\n\ninterface ClustersProps {\n points: LocationPoint[];\n selectedPoint: Nullable<LocationPoint>;\n onOpenDetails: (open: boolean) => void;\n onPointClick: PointProps[\"onPointClick\"];\n onPointSelected: PointProps[\"onPointSelected\"];\n}\n\nconst Clusters: FC<ClustersProps> = ({ points, selectedPoint, onOpenDetails, onPointClick, onPointSelected }) => {\n return (\n <MarkerClusterer clusterClass={styles.cluster}>\n {(clusterer) => (\n <Fragment>\n {points.map((point) => (\n <Point\n point={point}\n key={point.uid}\n clusterer={clusterer}\n selectedPoint={selectedPoint}\n setOpenDetails={onOpenDetails}\n onPointClick={onPointClick}\n onPointSelected={onPointSelected}\n />\n ))}\n </Fragment>\n )}\n </MarkerClusterer>\n );\n};\n\nconst MemoizedClusters = memo(Clusters);\nexport { MemoizedClusters as Clusters };\n","import { ComponentProps, FC, memo } from \"react\";\n\nimport { usePointsStore } from \"src/stores/points\";\nimport { useConfigContext } from \"src/context/config\";\nimport { useSelectedPlaceStore } from \"src/stores/selectedPlace\";\nimport { useSelectedPointStore } from \"src/stores/selectedPoint\";\n\nimport { Point } from \"./Point\";\nimport { Clusters } from \"./Clusters\";\n\ntype PointProps = ComponentProps<typeof Point>;\n\ninterface ClustersContainerProps {\n mounted: boolean;\n onOpenDetails: (open: boolean) => void;\n onPointClick: PointProps[\"onPointClick\"];\n onPointSelected: PointProps[\"onPointSelected\"];\n}\n\nconst ClustersContainer: FC<ClustersContainerProps> = ({ mounted, onOpenDetails, onPointClick, onPointSelected }) => {\n const { locale } = useConfigContext();\n\n const points = usePointsStore((state) => state.points);\n const selectedPoint = useSelectedPointStore((state) => state.location);\n const selectedPlace = useSelectedPlaceStore((state) => state.place);\n\n if (!mounted) {\n return null;\n }\n\n const clustererKey = JSON.stringify([points.length, locale, selectedPlace?.place_id]);\n\n return (\n <Clusters\n key={clustererKey}\n points={points}\n selectedPoint={selectedPoint}\n onOpenDetails={onOpenDetails}\n onPointClick={onPointClick}\n onPointSelected={onPointSelected}\n />\n );\n};\n\nconst MemoizedClustersContainer = memo(ClustersContainer);\nexport { MemoizedClustersContainer as ClustersContainer };\n","import Geocode from \"react-geocode\";\nimport { useCallback, useEffect, useState } from \"react\";\n\nimport { useMapStore } from \"src/stores/map\";\nimport { LocationPoint } from \"src/types/points\";\nimport { useConfigContext } from \"src/context/config\";\nimport { MAP_SELECTED_POINT_ZOOM } from \"src/constants/map\";\nimport { useSelectedPlaceStore } from \"src/stores/selectedPlace\";\nimport { useSelectedPointStore } from \"src/stores/selectedPoint\";\n\nimport { mountTimeout } from \"./MapGoogle.constants\";\n\ninterface UseAttachSelectPointHookOptions {\n map: Nullable<google.maps.Map>;\n onAttach?: () => void;\n}\n\nexport const useAttachSelectPointHook = ({ map, onAttach }: UseAttachSelectPointHookOptions) => {\n const setSelectPointHook = useSelectedPointStore((state) => state.setSelectPointHook);\n\n const handleSelectPoint = useCallback(\n (point: Nullable<LocationPoint>) => {\n if (!point) {\n return;\n }\n\n onAttach?.();\n\n map?.setZoom(MAP_SELECTED_POINT_ZOOM);\n\n map?.setCenter({\n lat: point.location.latitude,\n lng: point.location.longitude,\n });\n },\n [map], // eslint-disable-line react-hooks/exhaustive-deps\n );\n\n useEffect(() => {\n setSelectPointHook(handleSelectPoint);\n }, [handleSelectPoint, setSelectPointHook]);\n};\n\nexport const useMapTimeoutMount = () => {\n const [mounted, setMounted] = useState(false);\n\n useEffect(() => {\n if (mounted) {\n return;\n }\n\n const timer = setTimeout(() => setMounted(true), mountTimeout);\n return () => clearTimeout(timer);\n }, [mounted]);\n\n return [mounted, setMounted] as const;\n};\n\ninterface UseGeocodeLocaleHookOptions {\n onUpdate?: () => void;\n}\n\nexport const useGeocodeLocale = ({ onUpdate }: UseGeocodeLocaleHookOptions) => {\n const { locale } = useConfigContext();\n\n useEffect(() => {\n onUpdate?.();\n\n if (locale) {\n Geocode.setLanguage(locale);\n }\n }, [locale]); // eslint-disable-line react-hooks/exhaustive-deps\n};\n\ninterface UseMapCityCenterHookOptions {\n map: Nullable<google.maps.Map>;\n}\n\nexport const useMapCityCenter = ({ map }: UseMapCityCenterHookOptions) => {\n const selectedPlace = useSelectedPlaceStore((state) => state.place);\n\n const mapZoom = useMapStore((state) => state.zoom);\n\n useEffect(() => {\n if (!selectedPlace) {\n return;\n }\n\n map?.setZoom(mapZoom);\n\n const lng = selectedPlace.geometry?.location?.lng();\n const lat = selectedPlace.geometry?.location?.lat();\n\n if (!lat || !lng) {\n return;\n }\n\n map?.setCenter({ lng, lat });\n }, [selectedPlace, map]); // eslint-disable-line react-hooks/exhaustive-deps\n};\n","import classNames from \"classnames\";\nimport { LoadScriptNext } from \"@react-google-maps/api\";\nimport React, { FC, useCallback, useState } from \"react\";\n\nimport { MapProps } from \"src/types/map\";\nimport { useMapStore } from \"src/stores/map\";\nimport { usePointsStore } from \"src/stores/points\";\nimport { useConfigContext } from \"src/context/config\";\nimport { useCourierPointStore } from \"src/stores/courierPoint\";\nimport { useSelectedPointStore } from \"src/stores/selectedPoint\";\n\nimport { Overlay } from \"../Overlay\";\nimport { Spinner } from \"../Spinner\";\nimport { MapContainer } from \"./MapContainer\";\nimport { CourierPointMarker } from \"./CourierPoint\";\nimport { mapLibraries } from \"./MapGoogle.constants\";\nimport { ClustersContainer } from \"./ClustersContainer\";\nimport { useAttachSelectPointHook, useGeocodeLocale, useMapCityCenter, useMapTimeoutMount } from \"./MapGoogle.hooks\";\n\nimport styles from \"./MapGoogle.module.scss\";\n\nexport const MapGoogle: FC<MapProps> = ({ className }) => {\n const setMapLoaded = useMapStore((state) => state.setLoaded);\n const setDetailsOpen = useMapStore((state) => state.setDetailsOpen);\n\n const loading = usePointsStore((state) => state.loading);\n const loadNext = usePointsStore((state) => state.loadNext);\n\n const courierPoint = useCourierPointStore((state) => state.courierPoint);\n const setCourierPoint = useCourierPointStore((state) => state.setCourierPoint);\n\n const setSelectedPoint = useSelectedPointStore((state) => state.setSelectedPoint);\n\n const { locale, onPointClick } = useConfigContext();\n\n const [map, setMap] = useState<Nullable<google.maps.Map>>(null);\n\n const [mounted, setMounted] = useMapTimeoutMount();\n\n useMapCityCenter({ map });\n\n useGeocodeLocale({\n onUpdate: () => setMounted(false),\n });\n\n useAttachSelectPointHook({\n map,\n onAttach: () => setMounted(false),\n });\n\n const handleScriptLoad = () => {\n setMapLoaded(true);\n };\n\n const handleMapLoad = useCallback((map: google.maps.Map) => {\n setMap(map);\n }, []);\n\n const handleUnmount = useCallback(() => {\n setMap(null);\n }, []);\n\n const handleBoundsChange = useCallback(() => {\n if (!map) {\n return;\n }\n\n const bounds = map?.getBounds();\n\n if (!bounds) {\n return;\n }\n\n loadNext([\n [bounds.getSouthWest().lat(), bounds.getNorthEast().lat()],\n [bounds.getSouthWest().lng(), bounds.getNorthEast().lng()],\n ]);\n }, [loadNext, map]);\n\n const handleSetSelectPoint: typeof setSelectedPoint = useCallback(\n (...args) => {\n setCourierPoint(null);\n setSelectedPoint(...args);\n },\n [setCourierPoint, setSelectedPoint],\n );\n\n return (\n <div className={classNames(styles.mapContainer, className)}>\n <LoadScriptNext\n key={locale}\n language={locale}\n libraries={mapLibraries}\n googleMapsApiKey={import.meta.env.VITE_REACT_APP_GMAP_KEY}\n onLoad={handleScriptLoad}\n loadingElement={\n <Overlay className={styles.overlay}>\n <Spinner />\n </Overlay>\n }\n >\n <MapContainer onIdle={handleBoundsChange} onLoad={handleMapLoad} onUnmount={handleUnmount}>\n {courierPoint && (\n <CourierPointMarker\n point={courierPoint}\n setOpenDetails={setDetailsOpen}\n setCourierPoint={setCourierPoint}\n />\n )}\n\n <ClustersContainer\n mounted={mounted}\n onPointClick={onPointClick}\n onOpenDetails={setDetailsOpen}\n onPointSelected={handleSetSelectPoint}\n />\n </MapContainer>\n </LoadScriptNext>\n\n {(loading || !mounted) && (\n <Overlay className={styles.overlay}>\n <Spinner />\n </Overlay>\n )}\n </div>\n );\n};\n\nconst MemoMap = React.memo(MapGoogle);\nexport { MemoMap as MapYandex };\n","import t,{useContext as e,useState as n,useRef as o,useEffect as s}from\"react\";function r(){return r=Object.assign?Object.assign.bind():function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(t[o]=n[o])}return t},r.apply(this,arguments)}const a=(t,e)=>{const n={};for(const o in t)-1===e.indexOf(o)&&(n[o]=t[o]);return n},i=/*#__PURE__*/t.createContext(null),c=/*#__PURE__*/t.createContext(null),l=e=>n=>/*#__PURE__*/t.createElement(c.Consumer,null,o=>/*#__PURE__*/t.createElement(e,r({parent:o},n))),p=(t=[])=>{const[r,a]=n(!1),c=o(t),l=(()=>{const t=e(i);if(null===t)throw new Error(\"Couldn't find Yandex.Maps API in the context. Make sure that hook useYMaps is inside <YMaps /> provider\");return t})(),p=l.getApi();return s(()=>{l.load().then(()=>Promise.all(c.current.map(l.loadModule))).then(()=>a(!0))},[]),r&&p?p:null},u=()=>{},m=[\"onLoad\",\"onError\",\"modules\",\"apiLoader\"];function d(e,n=!1,o=[]){return i=>{const{width:c,height:l,modules:d=[],onLoad:h=u}=i,f=p(o.concat(d)),y=!n||!!f,b=a(i,m);return s(()=>f?h(f):void 0,[f]),y?/*#__PURE__*/t.createElement(e,r({ymaps:f},b)):/*#__PURE__*/t.createElement(\"div\",{style:{width:c,height:l}})}}const h=\"undefined\"!=typeof window,f={lang:\"ru_RU\",load:\"\",ns:\"\",mode:\"release\"},y=e=>{const{version:n=\"2.1\",enterprise:r=!1,query:a={lang:\"ru_RU\",load:\"\",ns:\"\"},preload:c=!1,children:l}=e,p=o((t=>{const{query:e=f}=t,n=Date.now().toString(32),o=e.ns||\"\",s=\"__yandex-maps-api-onload__$$\"+n,r=\"__yandex-maps-api-onerror__$$\"+n,a=h?window:{},i={};let c;const l=()=>o?a[o]:c,p=()=>{delete a[s],delete a[r]};return{load:()=>{if(l())return Promise.resolve(c);if(i[o])return i[o];const n={onload:s,onerror:r,...f,...e},u=Object.keys(n).map(t=>`${t}=${n[t]}`).join(\"&\"),m=[`https://${t.enterprise?\"enterprise.\":\"\"}api-maps.yandex.ru`,t.version,\"?\"+u].join(\"/\");return i[o]=new Promise((t,e)=>{a[s]=e=>{p(),e.ready(()=>{c=e,t(e)})},a[r]=t=>{p(),e(t)},(t=>new Promise((e,n)=>{const o=document.createElement(\"script\");o.type=\"text/javascript\",o.onload=e,o.onerror=n,o.src=t,o.async=!0,document.head.appendChild(o)}))(m).catch(a[r])}),i[o]},getApi:l,loadModule:t=>new Promise((e,n)=>{c.modules.require(t).done(n=>{n.forEach(e=>{((t,e,n,o=!1)=>{const s=\"string\"==typeof e?e.split(\".\"):e.slice();let r,a=t;for(;s.length>1;)r=s.shift(),a[r]||(a[r]={}),a=a[r];const i=s[0];a[i]=!0===o&&a[i]||n})(c,t,e,!0)}),e(c)},n)})}})({version:n,enterprise:r,query:a,preload:c}));return s(()=>{c&&p.current.load()},[p.current]),/*#__PURE__*/t.createElement(i.Provider,{value:p.current},l)},b=/^on(?=[A-Z])/;function v(t){return Object.keys(t).reduce((e,n)=>{if(b.test(n)){const o=n.replace(b,\"\").toLowerCase();e._events[o]=t[n]}else e[n]=t[n];return e},{_events:{}})}function j(t,e,n){\"function\"==typeof n&&t.events.add(e,n)}function O(t,e,n){\"function\"==typeof n&&t.events.remove(e,n)}function g(t,e,n){Object.keys(Object.assign({},e,n)).forEach(o=>{e[o]!==n[o]&&(O(t,o,e[o]),j(t,o,n[o]))})}const E=t=>\"default\"+t.charAt(0).toUpperCase()+t.slice(1);function C(t,e){return void 0!==t[e]||void 0===t[E(e)]}function _(t,e,n){return(C(t,e)?t[e]:t[E(e)])||n}function R(t,e,n=null){if(t!==e){if(t&&(\"current\"in t?t.current=null:\"function\"==typeof t&&t(null)),!e)return;\"current\"in e?e.current=n:\"function\"==typeof e&&e(n)}}function w(t){const{width:e,height:n,style:o,className:s}=t;return void 0!==o||void 0!==s?Object.assign({},o&&{style:o},s&&{className:s}):{style:{width:e,height:n}}}class P extends t.Component{constructor(t){super(t),this.state={error:null,errorInfo:null}}componentDidCatch(t,e){const{onError:n=(()=>{})}=this.props;n(t),this.setState({error:t,errorInfo:e})}render(){return this.state.error?null:this.props.children}}const x=e=>({onError:n,...o})=>/*#__PURE__*/t.createElement(P,{onError:n},/*#__PURE__*/t.createElement(e,o));class M extends t.Component{constructor(){super(),this.instance=null,this.state={instance:null},this._parentElement=null,this._getRef=t=>{this._parentElement=t}}componentDidMount(){this.instance=M.mountObject(this._parentElement,this.props.ymaps.Map,this.props),this.setState({instance:this.instance})}componentDidUpdate(t){null!==this.instance&&M.updateObject(this.instance,t,this.props)}componentWillUnmount(){M.unmountObject(this.instance,this.props)}render(){const e=w(this.props),n=v(this.props),o=a(n,[\"_events\",\"state\",\"defaultState\",\"options\",\"defaultOptions\",\"instanceRef\",\"ymaps\",\"children\",\"width\",\"height\",\"style\",\"className\"]);/*#__PURE__*/return t.createElement(c.Provider,{value:this.state.instance},/*#__PURE__*/t.createElement(\"div\",r({ref:this._getRef},e,o),this.props.children))}static mountObject(t,e,n){const{instanceRef:o,_events:s}=v(n),r=new e(t,_(n,\"state\"),_(n,\"options\"));return Object.keys(s).forEach(t=>j(r,t,s[t])),R(null,o,r),r}static updateObject(t,e,n){const{_events:o,instanceRef:s}=v(n),{_events:r,instanceRef:a}=v(e);if(C(n,\"state\")){const o=_(e,\"state\",{}),s=_(n,\"state\",{});o.type!==s.type&&t.setType(s.type),o.behaviors!==s.behaviors&&(o.behaviors&&t.behaviors.disable(o.behaviors),s.behaviors&&t.behaviors.enable(s.behaviors)),s.zoom&&o.zoom!==s.zoom&&t.setZoom(s.zoom),s.center&&o.center!==s.center&&t.setCenter(s.center),s.bounds&&o.bounds!==s.bounds&&t.setBounds(s.bounds)}if(C(n,\"options\")){const o=_(e,\"options\"),s=_(n,\"options\",{});o!==s&&t.options.set(s)}_(e,\"width\")===_(n,\"width\")&&_(e,\"height\")===_(n,\"height\")||t.container.fitToViewport(),g(t,r,o),R(a,s,t)}static unmountObject(t,e){const{instanceRef:n,_events:o}=v(e);null!==t&&(Object.keys(o).forEach(e=>O(t,e,o[e])),t.destroy(),R(n))}}const k=x(d(M,!0,[\"Map\"]));k.defaultProps={width:320,height:240};class S extends t.Component{constructor(){super(),this.state={instance:null},this._parentElement=null,this._getRef=t=>{this._parentElement=t}}componentDidMount(){this._mounted=!0,this.props.ymaps.panorama.isSupported()&&S.mountObject(this._parentElement,this.props.ymaps.panorama,this.props).then(t=>this._mounted&&this.setState({instance:t}))}componentDidUpdate(t){null!==this.state.instance&&S.updateObject(this.state.instance,t,this.props)}componentWillUnmount(){this._mounted=!1,S.unmountObject(this.state.instance,this.props)}render(){const e=w(this.props);/*#__PURE__*/return t.createElement(\"div\",r({ref:this._getRef},e))}static mountObject(t,e,n){const{instanceRef:o,_events:s}=v(n),r=_(n,\"point\"),a=_(n,\"locateOptions\"),i=_(n,\"options\");return new Promise((n,c)=>{e.locate(r,a).done(r=>{if(r.length>0){const a=new e.Player(t,r[0],i);R(null,o,a),Object.keys(s).forEach(t=>j(a,t,s[t])),n(a)}},c)})}static updateObject(t,e,n){const{_events:o,instanceRef:s}=v(n),{_events:r,instanceRef:a}=v(e);if(C(n,\"options\")){const o=_(e,\"options\"),s=_(n,\"options\");o!==s&&t.options.set(s)}if(C(n,\"point\")){const o=_(n,\"point\"),s=_(e,\"point\"),r=_(n,\"locateOptions\");o!==s&&t.moveTo(o,r)}g(t,r,o),R(a,s,t)}static unmountObject(t,e){const{instanceRef:n,_events:o}=v(e);null!==t&&(Object.keys(o).forEach(e=>O(t,e,o[e])),R(n))}}const T=x(d(S,!0,[\"panorama.isSupported\",\"panorama.locate\",\"panorama.createPlayer\",\"panorama.Player\"]));T.defaultProps={width:320,height:240};class U extends t.Component{constructor(){super(),this.state={instance:null},this.instance=null}componentDidMount(){const t=U.mountControl(this.props.ymaps.control[this.props.name],this.props);this.instance=t,this.setState({instance:t})}componentDidUpdate(t){null!==this.instance&&U.updateControl(this.instance,t,this.props)}componentWillUnmount(){U.unmountControl(this.instance,this.props)}render(){/*#__PURE__*/return t.createElement(c.Provider,{value:this.state.instance},this.props.children)}static mountControl(t,e){const{instanceRef:n,parent:o,lazy:s,_events:r}=v(e),a=new t({data:_(e,\"data\"),options:_(e,\"options\"),state:_(e,\"state\"),mapTypes:_(e,\"mapTypes\"),lazy:s});if(Object.keys(r).forEach(t=>j(a,t,r[t])),o&&o.controls&&\"function\"==typeof o.controls.add)o.controls.add(a);else{if(!o||!o.add||\"function\"!=typeof o.add)throw new Error(`No parent found to mount ${e.name}`);o.add(a)}return R(null,n,a),a}static updateControl(t,e,n){const{_events:o,instanceRef:s}=v(n),{_events:r,instanceRef:a}=v(e);if(C(n,\"options\")){const o=_(e,\"options\"),s=_(n,\"options\");o!==s&&t.options.set(s)}if(C(n,\"data\")){const o=_(e,\"data\"),s=_(n,\"data\");o!==s&&t.data.set(s)}if(C(n,\"state\")){const o=_(e,\"state\"),s=_(n,\"state\");o!==s&&t.state.set(s)}if(C(n,\"mapTypes\")){const o=_(e,\"mapTypes\"),s=_(n,\"mapTypes\");o!==s&&(t.removeAllMapTypes(),s.forEach(e=>t.addMapType(e)))}g(t,r,o),R(a,s,t)}static unmountControl(t,e){const{instanceRef:n,parent:o,_events:s}=v(e);null!==t&&(Object.keys(s).forEach(e=>O(t,e,s[e])),o.controls&&\"function\"==typeof o.controls.remove?o.controls.remove(t):o.remove&&\"function\"==typeof o.remove&&o.remove(t),R(n))}}var D=x(l(d(e=>/*#__PURE__*/t.createElement(U,r({},e,{name:\"Button\"})),!0,[\"control.Button\"]))),B=x(l(d(e=>/*#__PURE__*/t.createElement(U,r({},e,{name:\"FullscreenControl\"})),!0,[\"control.FullscreenControl\"]))),A=x(l(d(e=>/*#__PURE__*/t.createElement(U,r({},e,{name:\"GeolocationControl\"})),!0,[\"control.GeolocationControl\"]))),L=x(l(d(e=>/*#__PURE__*/t.createElement(U,r({},e,{name:\"ListBox\"})),!0,[\"control.ListBox\"]))),$=x(l(d(e=>/*#__PURE__*/t.createElement(U,r({},e,{name:\"ListBoxItem\"})),!0,[\"control.ListBoxItem\"]))),N=x(l(d(e=>/*#__PURE__*/t.createElement(U,r({},e,{name:\"RouteButton\"})),!0,[\"control.RouteButton\"]))),Z=x(l(d(e=>/*#__PURE__*/t.createElement(U,r({},e,{name:\"RouteEditor\"})),!0,[\"control.RouteEditor\"]))),z=x(l(d(e=>/*#__PURE__*/t.createElement(U,r({},e,{name:\"RoutePanel\"})),!0,[\"control.RoutePanel\"]))),G=x(l(d(e=>/*#__PURE__*/t.createElement(U,r({},e,{name:\"RulerControl\"})),!0,[\"control.RulerControl\"]))),I=x(l(d(e=>/*#__PURE__*/t.createElement(U,r({},e,{name:\"SearchControl\"})),!0,[\"control.SearchControl\"]))),W=x(l(d(e=>/*#__PURE__*/t.createElement(U,r({},e,{name:\"TrafficControl\"})),!0,[\"control.TrafficControl\"]))),F=x(l(d(e=>/*#__PURE__*/t.createElement(U,r({},e,{name:\"TypeSelector\"})),!0,[\"control.TypeSelector\"]))),q=x(l(d(e=>/*#__PURE__*/t.createElement(U,r({},e,{name:\"ZoomControl\"})),!0,[\"control.ZoomControl\"])));class Y extends t.Component{constructor(){super(),this.state={instance:null},this.instance=null}componentDidMount(){const t=Y.mountObject(this.props.ymaps.Clusterer,this.props);this.instance=t,this.setState({instance:t})}componentDidUpdate(t){null!==this.state.instance&&Y.updateObject(this.instance,t,this.props)}componentWillUnmount(){Y.unmountObject(this.instance,this.props)}render(){/*#__PURE__*/return t.createElement(c.Provider,{value:this.state.instance},this.props.children)}static mountObject(t,e){const{instanceRef:n,parent:o,_events:s}=v(e),r=new t(_(e,\"options\"));if(Object.keys(s).forEach(t=>j(r,t,s[t])),o.geoObjects&&\"function\"==typeof o.geoObjects.add)o.geoObjects.add(r);else{if(!o.add||\"function\"!=typeof o.add)throw new Error(\"No parent found to mount Clusterer\");o.add(r)}return R(null,n,r),r}static updateObject(t,e,n){const{_events:o,instanceRef:s}=v(n),{_events:r,instanceRef:a}=v(e);if(C(n,\"options\")){const o=_(e,\"options\"),s=_(n,\"options\");o!==s&&t.options.set(s)}g(t,r,o),R(a,s,t)}static unmountObject(t,e){const{instanceRef:n,parent:o,_events:s}=v(e);null!==t&&(Object.keys(s).forEach(e=>O(t,e,s[e])),o.geoObjects&&\"function\"==typeof o.geoObjects.remove?o.geoObjects.remove(t):o.remove&&\"function\"==typeof o.remove&&o.remove(t),R(n))}}var V=x(l(d(Y,!0,[\"Clusterer\"])));class H extends t.Component{constructor(){super(),this.state={instance:null}}componentDidMount(){const t=H.mountObject(this.props.ymaps.ObjectManager,this.props);this.instance=t,this.setState({instance:t})}componentDidUpdate(t){null!==this.instance&&H.updateObject(this.instance,t,this.props)}componentWillUnmount(){H.unmountObject(this.instance,this.props)}render(){return null}static mountObject(t,e){const{instanceRef:n,parent:o,_events:s}=v(e),r=_(e,\"options\",{}),a=_(e,\"features\",{}),i=_(e,\"filter\",null),c=_(e,\"objects\",{}),l=_(e,\"clusters\",{}),p=new t(r);if(p.add(a||[]),p.setFilter(i),p.objects.options.set(c),p.clusters.options.set(l),Object.keys(s).forEach(t=>j(p,t,s[t])),o.geoObjects&&\"function\"==typeof o.geoObjects.add)o.geoObjects.add(p);else{if(!o.add||\"function\"!=typeof o.add)throw new Error(\"No parent found to mount ObjectManager\");o.add(p)}return R(null,n,p),p}static updateObject(t,e,n){const{_events:o,instanceRef:s}=v(n),{_events:r,instanceRef:a}=v(e);if(C(n,\"options\")){const o=_(e,\"options\"),s=_(n,\"options\");o!==s&&t.options.set(s)}if(C(n,\"objects\")){const o=_(e,\"objects\"),s=_(n,\"objects\");o!==s&&t.objects.options.set(s)}if(C(n,\"clusters\")){const o=_(e,\"clusters\"),s=_(n,\"clusters\");o!==s&&t.clusters.options.set(s)}if(C(n,\"filter\")){const o=_(e,\"filter\"),s=_(n,\"filter\");o!==s&&t.setFilter(s)}if(C(n,\"features\")){const o=_(e,\"features\"),s=_(n,\"features\");o!==s&&(t.remove(o),t.add(s))}g(t,r,o),R(a,s,t)}static unmountObject(t,e){const{instanceRef:n,parent:o,_events:s}=v(e);null!==t&&(Object.keys(s).forEach(e=>O(t,e,s[e])),o.geoObjects&&\"function\"==typeof o.geoObjects.remove?o.geoObjects.remove(t):o.remove&&\"function\"==typeof o.remove&&o.remove(t),R(n))}}var J=x(l(d(H,!0,[\"ObjectManager\"])));class K extends t.Component{constructor(){super(),this.state={instance:null},this.instance=null}componentDidMount(){const{name:t,ymaps:e,dangerZone:n}=this.props,o=K.mountObject(n&&\"function\"==typeof n.modifyConstructor?n.modifyConstructor(e[t]):e[t],this.props);this.instance=o,this.setState({instance:o})}componentDidUpdate(t){null!==this.instance&&K.updateObject(this.instance,t,this.props)}componentWillUnmount(){K.unmountObject(this.instance,this.props)}render(){return null}static mountObject(t,e){const{instanceRef:n,parent:o,_events:s}=v(e),r=new t(_(e,\"geometry\"),_(e,\"properties\"),_(e,\"options\"));if(Object.keys(s).forEach(t=>j(r,t,s[t])),o&&o.geoObjects&&\"function\"==typeof o.geoObjects.add)o.geoObjects.add(r);else{if(!o||!o.add||\"function\"!=typeof o.add)throw new Error(`No parent found to mount ${e.name}`);o.add(r)}return R(null,n,r),r}static updateObject(t,e,n){const{_events:o,instanceRef:s}=v(n),{_events:r,instanceRef:a}=v(e);if(C(n,\"geometry\")){const o=_(e,\"geometry\",{}),s=_(n,\"geometry\",{});Array.isArray(s)&&s!==o?Array.isArray(s[0])&&\"number\"==typeof s[1]?(t.geometry.setCoordinates(s[0]),t.geometry.setRadius(s[1])):t.geometry.setCoordinates(s):\"object\"==typeof s&&(s.coordinates!==o.coordinates&&t.geometry.setCoordinates(s.coordinates),s.radius!==o.radius&&t.geometry.setRadius(s.radius))}if(C(n,\"properties\")){const o=_(e,\"properties\"),s=_(n,\"properties\");o!==s&&t.properties.set(s)}if(C(n,\"options\")){const o=_(e,\"options\"),s=_(n,\"options\");o!==s&&t.options.set(s)}g(t,r,o),R(a,s,t)}static unmountObject(t,e){const{instanceRef:n,parent:o,_events:s}=v(e);null!==t&&(Object.keys(s).forEach(e=>O(t,e,s[e])),o.geoObjects&&\"function\"==typeof o.geoObjects.remove?o.geoObjects.remove(t):o.remove&&\"function\"==typeof o.remove&&o.remove(t),R(n))}}const Q={modifyConstructor(t){function e(e,n,o){t.call(this,{geometry:e,properties:n},o)}return e.prototype=t.prototype,e}};var X=x(l(d(e=>/*#__PURE__*/t.createElement(K,r({},e,{name:\"GeoObject\",dangerZone:Q})),!0,[\"GeoObject\"]))),tt=x(l(d(e=>/*#__PURE__*/t.createElement(K,r({},e,{name:\"Circle\"})),!0,[\"Circle\"]))),et=x(l(d(e=>/*#__PURE__*/t.createElement(K,r({},e,{name:\"Placemark\"})),!0,[\"Placemark\"]))),nt=x(l(d(e=>/*#__PURE__*/t.createElement(K,r({},e,{name:\"Polygon\"})),!0,[\"Polygon\"]))),ot=x(l(d(e=>/*#__PURE__*/t.createElement(K,r({},e,{name:\"Polyline\"})),!0,[\"Polyline\"]))),st=x(l(d(e=>/*#__PURE__*/t.createElement(K,r({},e,{name:\"Rectangle\"})),!0,[\"Rectangle\"])));export{D as Button,tt as Circle,V as Clusterer,B as FullscreenControl,X as GeoObject,A as GeolocationControl,L as ListBox,$ as ListBoxItem,k as Map,J as ObjectManager,T as Panorama,et as Placemark,nt as Polygon,ot as Polyline,st as Rectangle,N as RouteButton,Z as RouteEditor,z as RoutePanel,G as RulerControl,I as SearchControl,W as TrafficControl,F as TypeSelector,y as YMaps,q as ZoomControl,p as useYMaps,d as withYMaps};\n//# sourceMappingURL=react-yandex-maps.esm.js.map\n","import { YMapsApi } from \"@pbe/react-yandex-maps/typings/util/typing\";\n\nimport { LocationPoint } from \"src/types/points\";\nimport { SCALED_MARKER_SIZE } from \"src/constants/map\";\n\nexport type Feature = ReturnType<typeof getMapFeatures>[number];\n\n/**\n * @see {@link https://yandex.ru/dev/maps/jsapi/doc/2.1/ref/reference/ObjectManager.html}\n */\nexport const getMapFeatures = (points: LocationPoint[], api: YMapsApi, template: string) => {\n return points?.map((point) => ({\n id: point.uid,\n type: \"Feature\",\n properties: { point },\n geometry: {\n type: \"Point\",\n coordinates: [point.location.latitude, point.location.longitude],\n },\n options: {\n hideIconOnBalloonOpen: false,\n preset: getPresetByType(point.type),\n balloonOffset: [0, -SCALED_MARKER_SIZE[1]],\n balloonContentLayout: api?.templateLayoutFactory?.createClass(template),\n },\n }));\n};\n\nexport const getPresetByType = (type: number, suffix?: string) => {\n if (type === 30) {\n return `custom#pin-postmat${suffix ? `__${suffix}` : \"\"}`;\n }\n\n return `custom#pin-pvz${suffix ? `__${suffix}` : \"\"}`;\n};\n\nexport const getMarkerImageOffset = (size: Size) => {\n return [-(size[0] / 2), -size[1]];\n};\n","import { YMaps } from \"@pbe/react-yandex-maps\";\nimport { IPlacemarkOptions } from \"yandex-maps\";\nimport { YMapsModules } from \"@pbe/react-yandex-maps/typings/util/typing\";\n\nimport { Locale } from \"src/types/i18n\";\nimport { MARKER_SIZE } from \"src/constants/map\";\nimport userMarkerIcon from \"src/assets/markers/pin-user.png\";\n\nimport { getMarkerImageOffset } from \"./MapYandex.utils\";\n\ntype YMapsQuery = NonNullable<React.ComponentProps<typeof YMaps>[\"query\"]>;\n\nexport const localesMap: Record<Locale, YMapsQuery[\"lang\"]> = {\n en: \"en_US\",\n ru: \"ru_RU\",\n};\n\nexport const query: YMapsQuery = {\n load: \"suggest\",\n apikey: import.meta.env.VITE_REACT_APP_YMAP_KEY,\n};\n\nexport const mapModules: YMapsModules = [\n \"templateLayoutFactory\",\n \"option.presetStorage\",\n \"control.GeolocationControl\",\n \"geocode\",\n];\nexport const objectManagerModules: YMapsModules = [\"objectManager.addon.objectsBalloon\"];\nexport const placemarkModules: YMapsModules = [\"geoObject.addon.balloon\"];\n\nexport const mapOptions: ymaps.IMapOptions = {\n yandexMapDisablePoiInteractivity: false,\n};\n\nexport const objectManagerOptions = {\n clusterize: true,\n};\n\nexport const placemarkOptions: IPlacemarkOptions = {\n iconImageSize: MARKER_SIZE,\n iconLayout: \"default#image\",\n hideIconOnBalloonOpen: false,\n iconImageHref: userMarkerIcon,\n balloonOffset: [0, -MARKER_SIZE[1]],\n iconImageOffset: getMarkerImageOffset(MARKER_SIZE),\n};\n","import classNames from \"classnames\";\nimport { useTranslate } from \"@tolgee/react\";\nimport { renderToString } from \"react-dom/server\";\nimport { YMapsApi } from \"@pbe/react-yandex-maps/typings/util/typing\";\nimport { Event, GeocodeResult, IPlacemarkOptions } from \"yandex-maps\";\nimport React, { FC, useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nimport { ObjectManager, Placemark, YMaps, Map as YandexMap } from \"@pbe/react-yandex-maps\";\n\nimport { MapProps } from \"src/types/map\";\nimport { useMapStore } from \"src/stores/map\";\nimport { WIDGET_ID } from \"src/constants/global\";\nimport { LocationPoint } from \"src/types/points\";\nimport { usePointsStore } from \"src/stores/points\";\nimport { useConfigContext } from \"src/context/config\";\nimport pvsMarkerIcon from \"src/assets/markers/pin-pvz.png\";\nimport { useCourierPointStore } from \"src/stores/courierPoint\";\nimport { useSelectedPointStore } from \"src/stores/selectedPoint\";\nimport { useSelectedPlaceStore } from \"src/stores/selectedPlace\";\nimport postmatMarkerIcon from \"src/assets/markers/pin-postmat.png\";\nimport {\n BALLOON_DETAILS_ID,\n BALLOON_SUBMIT_ID,\n MAP_FALLBACK_CENTER,\n MAP_INITIAL_ZOOM,\n MAP_SELECTED_POINT_ZOOM,\n MARKER_SIZE,\n SCALED_MARKER_SIZE,\n} from \"src/constants/map\";\n\nimport { Spinner } from \"../Spinner\";\nimport { Overlay } from \"../Overlay\";\nimport { LocationBalloon } from \"../LocationBalloon\";\nimport { CourierBalloon } from \"../CourierBalloon/CourierBalloon\";\nimport { Feature, getMapFeatures, getMarkerImageOffset, getPresetByType } from \"./MapYandex.utils\";\nimport {\n objectManagerOptions as initialObjectManagerOptions,\n localesMap,\n mapModules,\n mapOptions,\n objectManagerModules,\n placemarkModules,\n placemarkOptions,\n query,\n} from \"./MapYandex.constants\";\n\nimport styles from \"./MapYandex.module.scss\";\n\nconst MapYandex: FC<MapProps> = ({ className }) => {\n const { t } = useTranslate([\"courier_balloon\", \"common\"]);\n\n const mapRef = useRef<undefined | ymaps.Map>();\n const objectManagerRef = useRef<null | ymaps.ObjectManager>(null);\n\n const { map, locale, disableCourierDelivery, onPointClick } = useConfigContext();\n\n const [mapApi, setMapApi] = useState<Nullable<YMapsApi>>(null);\n const [features, setFeatures] = useState<ReturnType<typeof getMapFeatures>>([]);\n const [objectManagerOptions, setObjectManagerOptions] = useState<Dictionary<unknown>>(initialObjectManagerOptions);\n\n const selectedPlace = useSelectedPlaceStore((state) => state.place);\n\n const mapZoom = useMapStore((state) => state.zoom);\n const setMapLoaded = useMapStore((state) => state.setLoaded);\n const setDetailsOpen = useMapStore((state) => state.setDetailsOpen);\n\n const points = usePointsStore((state) => state.points);\n const loading = usePointsStore((state) => state.loading);\n const loadNext = usePointsStore((state) => state.loadNext);\n\n const courierPoint = useCourierPointStore((state) => state.courierPoint);\n const setCourierPoint = useCourierPointStore((state) => state.setCourierPoint);\n\n const selectedPoint = useSelectedPointStore((state) => state.location);\n const setSelectedPoint = useSelectedPointStore((state) => state.setSelectedPoint);\n const setSelectPointHook = useSelectedPointStore((state) => state.setSelectPointHook);\n\n const prevFeatures = useRef<ReturnType<typeof getMapFeatures>>([]);\n\n const locationBalloonTemplate = useMemo(\n () =>\n renderToString(<LocationBalloon SSR />)\n .replace(\"{ choose }\", t(\"choose\"))\n .replace(\"{ details }\", t(\"details\")),\n [t, locale], // eslint-disable-line react-hooks/exhaustive-deps\n );\n\n const courierBalloonTemplate = useMemo(\n () =>\n renderToString(<CourierBalloon SSR variant=\"default\" />)\n .replace(\"{ details }\", t(\"details\", { ns: \"common\" }))\n .replace(\"{ courier_balloon.title }\", t(\"title\")),\n [t, locale], // eslint-disable-line react-hooks/exhaustive-deps\n );\n\n const courierErrorBalloonTemplate = useMemo(\n () =>\n renderToString(<CourierBalloon SSR variant=\"error\" />)\n .replace(\"{ courier_balloon.error_title }\", t(\"error_title\"))\n .replace(\"{ courier_balloon.error_description }\", t(\"error_description\")),\n [t, locale], // eslint-disable-line react-hooks/exhaustive-deps\n );\n\n const mapState: ymaps.IMapState = useMemo(\n () => ({\n zoom: MAP_INITIAL_ZOOM,\n center: map?.center ?? MAP_FALLBACK_CENTER,\n behaviors: [\"default\", \"scrollZoom\"],\n }),\n [map?.center],\n );\n\n useEffect(() => {\n if (!mapApi || !objectManagerRef.current) {\n return;\n }\n\n // Preserve currently selected feature\n prevFeatures.current.forEach((feature) => {\n if (feature.id === selectedPoint?.uid) {\n return;\n }\n\n objectManagerRef.current?.remove(feature);\n });\n\n // Add new features\n const nextFeatures = getMapFeatures(points, mapApi, locationBalloonTemplate);\n prevFeatures.current = nextFeatures;\n\n objectManagerRef.current.add(nextFeatures);\n\n // Initialize geolocation control\n const map = mapRef.current;\n const geolocationControl = new mapApi.control.GeolocationControl();\n map?.controls.add(geolocationControl);\n\n return () => {\n map?.controls.remove(geolocationControl);\n };\n }, [locationBalloonTemplate, mapApi, points, selectedPoint?.uid]);\n\n useEffect(() => {\n if (!selectedPlace) {\n return;\n }\n\n const lng = selectedPlace.geometry?.location?.lng();\n const lat = selectedPlace.geometry?.location?.lat();\n\n if (!lat || !lng) {\n return;\n }\n\n mapRef.current?.setCenter([lat, lng], mapZoom, {\n duration: 300,\n timingFunction: \"ease-in-out\",\n });\n }, [selectedPlace]); // eslint-disable-line react-hooks/exhaustive-deps\n\n const handleBoundsChange = useCallback(\n (event: Event) => {\n const newBounds = event.get(\"newBounds\") as Bounds;\n\n loadNext([\n [newBounds[0][0], newBounds[1][0]],\n [newBounds[0][1], newBounds[1][1]],\n ]);\n },\n [loadNext],\n );\n\n const selectedPointRef = useRef(selectedPoint);\n\n const handleMapLoad = useCallback(\n (api: YMapsApi) => {\n setMapApi(api);\n setMapLoaded(true);\n\n // Initialize presets\n\n api?.option?.presetStorage.add(`custom#pin-postmat`, {\n iconImageSize: MARKER_SIZE,\n iconLayout: \"default#image\",\n iconImageHref: postmatMarkerIcon,\n iconImageOffset: getMarkerImageOffset(MARKER_SIZE),\n });\n\n api?.option?.presetStorage.add(`custom#pin-postmat__active`, {\n iconLayout: \"default#image\",\n iconImageHref: postmatMarkerIcon,\n iconImageSize: SCALED_MARKER_SIZE,\n iconImageOffset: getMarkerImageOffset(SCALED_MARKER_SIZE),\n });\n\n api?.option?.presetStorage.add(`custom#pin-pvz`, {\n iconImageSize: MARKER_SIZE,\n iconLayout: \"default#image\",\n iconImageHref: pvsMarkerIcon,\n iconImageOffset: getMarkerImageOffset(MARKER_SIZE),\n });\n\n api?.option?.presetStorage.add(`custom#pin-pvz__active`, {\n iconLayout: \"default#image\",\n iconImageHref: pvsMarkerIcon,\n iconImageSize: SCALED_MARKER_SIZE,\n iconImageOffset: getMarkerImageOffset(SCALED_MARKER_SIZE),\n });\n\n // Set manager options\n\n setObjectManagerOptions((prevObjectManagerOptions) => {\n const primaryColor = window\n .getComputedStyle(document.getElementById(WIDGET_ID) as HTMLElement)\n .getPropertyValue(\"--color-primary\");\n\n return {\n ...prevObjectManagerOptions,\n clusterIconColor: primaryColor,\n };\n });\n\n // Set initial features\n\n setFeatures(getMapFeatures(points, api, locationBalloonTemplate));\n },\n [locationBalloonTemplate, points, setMapLoaded],\n );\n\n const handleSelectPoint = useCallback((point: Nullable<LocationPoint>) => {\n if (!point) {\n return;\n }\n\n mapRef.current?.setCenter([point.location.latitude, point.location.longitude], MAP_SELECTED_POINT_ZOOM, {\n duration: 300,\n timingFunction: \"ease-in-out\",\n });\n\n objectManagerRef.current?.objects.events.fire(\"click\", {\n objectId: point.uid,\n });\n }, []);\n\n useEffect(() => {\n setSelectPointHook(handleSelectPoint);\n }, [handleSelectPoint, setSelectPointHook]);\n\n const handleClickBalloonDetails = useCallback(() => {\n setDetailsOpen(true);\n }, [setDetailsOpen]);\n\n const handleBalloonSubmit = useCallback(() => {\n if (!selectedPointRef.current) {\n return;\n }\n\n onPointClick(selectedPointRef.current);\n setDetailsOpen(false);\n setSelectedPoint(null);\n setCourierPoint(null);\n mapRef.current?.balloon.close();\n }, [onPointClick, setCourierPoint, setDetailsOpen, setSelectedPoint]);\n\n const handleOpenBalloon = useCallback(() => {\n document.getElementById(BALLOON_DETAILS_ID)?.addEventListener(\"click\", handleClickBalloonDetails);\n document.getElementById(BALLOON_SUBMIT_ID)?.addEventListener(\"click\", handleBalloonSubmit);\n }, [handleBalloonSubmit, handleClickBalloonDetails]);\n\n const handleCloseBalloon = useCallback(\n (event: Event) => {\n const objectId = event.get(\"objectId\") as string;\n\n if (selectedPointRef.current?.uid === objectId) {\n objectManagerRef.current?.objects.setObjectOptions(selectedPointRef.current?.uid as string, {\n preset: getPresetByType(selectedPointRef.current?.type as number),\n });\n\n setCourierPoint(null);\n setSelectedPoint(null);\n setCourierPoint(null);\n selectedPointRef.current = null;\n }\n\n document.getElementById(BALLOON_DETAILS_ID)?.removeEventListener(\"click\", handleClickBalloonDetails);\n document.getElementById(BALLOON_SUBMIT_ID)?.removeEventListener(\"click\", handleBalloonSubmit);\n },\n [handleBalloonSubmit, handleClickBalloonDetails, setCourierPoint, setSelectedPoint],\n );\n\n const handleObjectClick = useCallback(\n (event: Event) => {\n const objectId = event.get(\"objectId\") as string;\n const object = objectManagerRef.current?.objects?.getById(objectId) as null | Feature;\n\n if (!object) {\n return;\n }\n\n const nextPoint = object.properties.point as LocationPoint;\n\n setDetailsOpen(false);\n setCourierPoint(null);\n setSelectedPoint(nextPoint);\n\n objectManagerRef.current?.objects.each((object) => {\n const feature = object as unknown as Feature;\n\n objectManagerRef.current?.objects.setObjectOptions(feature.id, {\n preset: getPresetByType(feature.properties.point.type),\n });\n });\n\n objectManagerRef.current?.objects.setObjectOptions(objectId, {\n preset: getPresetByType(nextPoint.type, \"active\"),\n });\n\n selectedPointRef.current = nextPoint;\n },\n [setCourierPoint, setDetailsOpen, setSelectedPoint],\n );\n\n const handleMapClick = useCallback(\n async (event: Event) => {\n if (!mapApi || disableCourierDelivery) {\n return;\n }\n\n const coords = event.get(\"coords\") as Coordinates;\n const { geoObjects } = await mapApi.geocode(coords);\n const firstGeoObject = geoObjects.get(0) as GeocodeResult;\n const address = firstGeoObject.getAddressLine();\n\n const precision = firstGeoObject.properties.get(\n \"metaDataProperty.GeocoderMetaData.precision\",\n {},\n ) as unknown as string;\n\n setSelectedPoint(null);\n\n if (precision !== \"exact\") {\n setCourierPoint({\n coords,\n address: null,\n });\n\n return;\n }\n\n setCourierPoint({\n coords,\n address,\n });\n },\n [disableCourierDelivery, mapApi, setCourierPoint, setSelectedPoint],\n );\n\n const courierPlacemarkOptions: IPlacemarkOptions = useMemo(\n () => ({\n ...placemarkOptions,\n balloonContentLayout: mapApi?.templateLayoutFactory?.createClass(courierBalloonTemplate),\n }),\n [courierBalloonTemplate, mapApi?.templateLayoutFactory],\n );\n\n const courierErrorPlacemarkOptions: IPlacemarkOptions = useMemo(\n () => ({\n ...placemarkOptions,\n balloonContentLayout: mapApi?.templateLayoutFactory?.createClass(courierErrorBalloonTemplate),\n }),\n [courierErrorBalloonTemplate, mapApi?.templateLayoutFactory],\n );\n\n const handlePlacemarkMount = useCallback(\n (placemark: ymaps.Map) => {\n placemark?.balloon?.open();\n placemark?.balloon?.events?.add(\"open\", handleOpenBalloon);\n placemark?.balloon?.events?.add(\"close\", handleCloseBalloon);\n },\n [handleCloseBalloon, handleOpenBalloon],\n );\n\n return (\n <div className={classNames(styles.root, className)}>\n <YMaps\n key={locale}\n query={{\n ...query,\n lang: localesMap[locale ?? \"ru\"],\n }}\n >\n <YandexMap\n width=\"100%\"\n height=\"100%\"\n state={mapState}\n instanceRef={mapRef}\n options={mapOptions}\n modules={mapModules}\n onLoad={handleMapLoad}\n onClick={handleMapClick}\n onBoundsChange={handleBoundsChange}\n >\n {courierPoint?.address && (\n <Placemark\n properties={courierPoint}\n modules={placemarkModules}\n geometry={courierPoint.coords}\n options={courierPlacemarkOptions}\n instanceRef={handlePlacemarkMount}\n key={JSON.stringify(courierPoint.coords)}\n />\n )}\n {courierPoint && !courierPoint.address && (\n <Placemark\n modules={placemarkModules}\n geometry={courierPoint.coords}\n instanceRef={handlePlacemarkMount}\n options={courierErrorPlacemarkOptions}\n key={JSON.stringify(courierPoint.coords)}\n />\n )}\n <ObjectManager\n features={features}\n instanceRef={objectManagerRef}\n modules={objectManagerModules}\n options={objectManagerOptions}\n onClick={handleObjectClick}\n onBalloonOpen={handleOpenBalloon}\n onBalloonClose={handleCloseBalloon}\n />\n </YandexMap>\n </YMaps>\n\n {loading && (\n <Overlay className={styles.overlay}>\n <Spinner />\n </Overlay>\n )}\n </div>\n );\n};\n\nconst MemoMap = React.memo(MapYandex);\nexport { MemoMap as MapYandex };\n","import { MapProvider } from \"src/types/map\";\nimport { MapGoogle } from \"src/components/MapGoogle\";\nimport { MapYandex } from \"src/components/MapYandex\";\n\nexport const useMapRenderer = (provider: MapProvider) => {\n const providers = {\n google: MapGoogle,\n yandex: MapYandex,\n } as const;\n\n return providers[provider];\n};\n","import { useEffect } from \"react\";\nimport { useTolgee } from \"@tolgee/react\";\n\nimport { Locale } from \"src/types/i18n\";\nimport { Palette } from \"src/types/config\";\nimport { StartScreenType } from \"src/types/map\";\nimport { setWidgetCSSProperty } from \"src/utils\";\nimport { useLocationAsideStore } from \"src/stores/locationAside\";\n\nexport const useLocaleUpdateWatcher = (locale: Nullable<Locale>) => {\n const tolgee = useTolgee([\"language\"]);\n\n useEffect(() => {\n if (locale) {\n tolgee.changeLanguage(locale);\n }\n }, [locale, tolgee]);\n};\n\nexport const usePaletteUpdateWatcher = (palette: Nullable<Palette>) => {\n useEffect(() => {\n if (palette) {\n const keys = Object.keys(palette);\n\n keys.forEach((key) => {\n const color = palette[key as keyof typeof palette];\n\n if (!color) {\n return;\n }\n\n setWidgetCSSProperty(`--color-${key}`, color);\n });\n }\n }, [palette]);\n};\n\nexport const useButtonRadiusUpdateWatcher = (radius: Nullable<number>) => {\n useEffect(() => {\n if (radius && typeof radius !== \"undefined\") {\n setWidgetCSSProperty(`--button-radius`, `${radius}px`);\n }\n }, [radius]);\n};\n\nexport const useFontUpdateWatcher = (font: Nullable<string>) => {\n useEffect(() => {\n if (font && typeof font !== \"undefined\") {\n setWidgetCSSProperty(`--font`, font);\n }\n }, [font]);\n};\n\nexport const useStartScreenUpdateWatcher = (startScreen: Nullable<StartScreenType>) => {\n const toggleAside = useLocationAsideStore((state) => state.toggle);\n\n const isSelectorStartScreen = startScreen === \"selector\";\n\n useEffect(() => {\n if (isSelectorStartScreen) {\n toggleAside(true);\n }\n }, [isSelectorStartScreen, toggleAside]);\n};\n","import { FC, ReactNode } from \"react\";\n\nimport { Locale } from \"src/types/i18n\";\n\nimport { useLocaleUpdateWatcher } from \"./Widget.hooks\";\n\ninterface LocaleProviderProps {\n locale: Nullable<Locale>;\n children: ReactNode;\n}\n\nexport const LocaleProvider: FC<LocaleProviderProps> = ({ children, locale }) => {\n useLocaleUpdateWatcher(locale);\n return <>{children}</>;\n};\n","import { FC } from \"react\";\n\nimport { Spinner } from \"src/components/Spinner\";\nimport { Overlay } from \"src/components/Overlay\";\n\nexport const PreloaderOverlay: FC = () => {\n return (\n <Overlay>\n <Spinner />\n </Overlay>\n );\n};\n","import { FC, ReactNode } from \"react\";\n\nimport { usePointsStore } from \"src/stores/points\";\n\nimport { PreloaderOverlay } from \"./PreloaderOverlay\";\n\ninterface WidgetContainerProps {\n children: ReactNode;\n}\n\nexport const WidgetContainer: FC<WidgetContainerProps> = ({ children }) => {\n const loaded = usePointsStore((state) => state.loaded);\n const loading = usePointsStore((state) => state.loading);\n\n if (loading && !loaded) {\n return <PreloaderOverlay />;\n }\n\n return <>{children}</>;\n};\n","import { FC } from \"react\";\nimport invariant from \"invariant\";\nimport { TolgeeProvider } from \"@tolgee/react\";\n\nimport { tolgee } from \"src/i18n\";\nimport { Header } from \"src/components/Header\";\nimport { Layout } from \"src/components/Layout\";\nimport { Sidebar } from \"src/components/Sidebar\";\nimport { ConfigContext } from \"src/context/config\";\nimport { MapContainer } from \"src/components/MapContainer\";\nimport { LocationAside } from \"src/components/LocationAside\";\nimport { WidgetConfig, WidgetOptions } from \"src/types/config\";\nimport { useInitializeAxios, useMapRenderer, usePointsLoader, useWidgetConfig } from \"src/hooks\";\n\nimport { LocaleProvider } from \"./LocaleProvider\";\nimport { WidgetContainer } from \"./WidgetContainer\";\nimport { PreloaderOverlay } from \"./PreloaderOverlay\";\nimport {\n useButtonRadiusUpdateWatcher,\n useFontUpdateWatcher,\n usePaletteUpdateWatcher,\n useStartScreenUpdateWatcher,\n} from \"./Widget.hooks\";\n\nimport styles from \"./Widget.module.scss\";\n\ninterface WidgetProps {\n config?: WidgetConfig;\n options?: WidgetOptions;\n}\n\nexport const Widget: FC<WidgetProps> = ({ config: initialConfig, options }) => {\n const config = useWidgetConfig(initialConfig);\n const { map, font, radius, locale, palette, startScreen, INN } = config;\n\n invariant(INN, \"INN is required\");\n useInitializeAxios(INN, options);\n\n invariant(map?.provider, \"Map provider is required\");\n const MapProvider = useMapRenderer(map.provider);\n\n usePointsLoader();\n\n useFontUpdateWatcher(font);\n usePaletteUpdateWatcher(palette);\n useButtonRadiusUpdateWatcher(radius);\n useStartScreenUpdateWatcher(startScreen);\n\n return (\n <TolgeeProvider tolgee={tolgee} fallback={<PreloaderOverlay />}>\n <LocaleProvider locale={locale}>\n <WidgetContainer>\n <ConfigContext.Provider value={config}>\n <Layout>\n <Header className={styles.header} />\n <Sidebar className={styles.sidebar} />\n <MapContainer className={styles.map}>\n <MapProvider />\n </MapContainer>\n <LocationAside />\n </Layout>\n </ConfigContext.Provider>\n </WidgetContainer>\n </LocaleProvider>\n </TolgeeProvider>\n );\n};\n"],"names":["invariant","a","b","c","d","e","f","isObject","i","ns","self","active","Cache","descriptors","__rest$1","t","p","formatter","text","result","options","language","controller","tolgee","index","data","injectScript","credentials","React","defaultOptions","enCommon","classNames","require$$0","h","k","l","m","n","q","g","r","u","shimModule","require$$1","v","w","withSelectorModule","selector","uuidV4","initialState","zoom","open","_","other","styles","Logo","PinIcon","ETypeFilter","EReceiveFilter","ESendFilter","filter","CloseIcon","onChange","value","typeFilter","label","sidebarOpen","TypeFilterContainer","ReceiveFilterContainer","SendFilterContainer","FilterIcon","ReactPropTypesSecret","shim","location","propTypesModule","utils","isBrowser","loadGoogleMapScript","_typeof","obj","usePlacesWidget_1","_react","_interopRequireWildcard","require$$2","_getRequireWildcardCache","nodeInterop","_objectWithoutProperties","_objectWithoutPropertiesLoose","handleAutoComplete","ReactGoogleAutocomplete_1","_interopRequireDefault","startAdornment","endAdornment","usePlacesWidget","SearchIcon","LogoIcon","image","MapContainer","LocationSelector","toString","isArray","prototype","forEach","extend","content","hasOwnProperty","reducer","noop","path","encode","URLSearchParams","FormData","Blob","isFormData","isFileList","transitional","header","defaults","AxiosHeaders","validateStatus","standardBrowserEnv","isURLSameOrigin","nonStandardBrowserEnv","adapters","merge","VERSION","validators","validator","InterceptorManager","forEachMethodNoData","forEachMethodWithData","Axios","create","CancelToken","all","HttpStatusCode","axios","key","details","__assign","P","body","y","x","map","updaterMap","eventMap","GoogleMap","script","LoaderStatus","title","markerOptions","Marker","ClusterIcon","cluster","Cluster","Clusterer","R","ClustererComponent","InfoBox","_a","equal","r2","j","reduce","y2","input","clusterOptions","MarkerClustererEvents","InfoWindow","container","Overlay","pane","position","bounds","overlay","runtime","undefined","next","regeneratorRuntime","_default","address","o","mapOptions","courierMarkerIcon","ArrowRightIcon","pvzMarkerIcon","MarkerClusterer","Fragment","Clusters","LoadScriptNext","ClustersContainer","s","objectManagerOptions","initialObjectManagerOptions","object","YMaps","YandexMap","Placemark","ObjectManager","MapYandex","Header","LocationAside"],"mappings":"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","x_google_ignoreList":[0,1,2,4,5,6,7,8,9,10,11,12,13,14,45,46,47,48,49,50,51,52,53,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,148,151,152,167]}