{"version":3,"file":"src/js/pages/store.js","sources":["../../node_modules/fast-deep-equal/index.js","../../node_modules/kdbush/index.js","../../node_modules/supercluster/index.js","../../node_modules/@googlemaps/markerclusterer/node_modules/tslib/tslib.es6.js","../../node_modules/@googlemaps/markerclusterer/src/marker-utils.ts","../../node_modules/@googlemaps/markerclusterer/src/cluster.ts","../../node_modules/@googlemaps/markerclusterer/src/algorithms/core.ts","../../node_modules/@googlemaps/markerclusterer/src/algorithms/supercluster.ts","../../node_modules/@googlemaps/markerclusterer/src/renderer.ts","../../node_modules/@googlemaps/markerclusterer/src/overlay-view-safe.ts","../../node_modules/@googlemaps/markerclusterer/src/markerclusterer.ts","../../node_modules/regenerator-runtime/runtime.js","../../src/js/pages/store.js"],"sourcesContent":["'use strict';\n\n// do not edit .js files directly - edit src/index.jst\n\n\n\nmodule.exports = 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","\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\nexport default class 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} 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} 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} 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} 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","\nimport KDBush from 'kdbush';\n\nconst defaultOptions = {\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\nexport default class Supercluster {\n constructor(options) {\n this.options = Object.assign(Object.create(defaultOptions), 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","/*! *****************************************************************************\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 (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\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\nexport var __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\nexport function __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}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __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}\r\n\r\nexport function __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}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\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 */\n\n/**\n * Supports markers of either either \"legacy\" or \"advanced\" types.\n */\nexport type Marker =\n | google.maps.Marker\n | google.maps.marker.AdvancedMarkerElement;\n\n/**\n * util class that creates a common set of convenience functions to wrap\n * shared behavior of Advanced Markers and Markers.\n */\nexport class MarkerUtils {\n public static isAdvancedMarkerAvailable(map: google.maps.Map): boolean {\n return (\n google.maps.marker &&\n map.getMapCapabilities().isAdvancedMarkersAvailable === true\n );\n }\n\n public static isAdvancedMarker(\n marker: Marker\n ): marker is google.maps.marker.AdvancedMarkerElement {\n return (\n google.maps.marker &&\n marker instanceof google.maps.marker.AdvancedMarkerElement\n );\n }\n\n public static setMap(marker: Marker, map: google.maps.Map | null) {\n if (this.isAdvancedMarker(marker)) {\n marker.map = map;\n } else {\n marker.setMap(map);\n }\n }\n\n public static getPosition(marker: Marker): google.maps.LatLng {\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(\n marker.position.lat,\n marker.position.lng\n );\n }\n }\n return new google.maps.LatLng(null);\n }\n return marker.getPosition();\n }\n\n public static getVisible(marker: 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 * 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\nimport { MarkerUtils, Marker } from \"./marker-utils\";\n\nexport interface ClusterOptions {\n position?: google.maps.LatLng | google.maps.LatLngLiteral;\n markers?: Marker[];\n}\n\nexport class Cluster {\n public marker?: Marker;\n public readonly markers?: Marker[];\n protected _position: google.maps.LatLng;\n\n constructor({ markers, position }: ClusterOptions) {\n this.markers = markers;\n\n if (position) {\n if (position instanceof google.maps.LatLng) {\n this._position = position;\n } else {\n this._position = new google.maps.LatLng(position);\n }\n }\n }\n\n public get bounds(): google.maps.LatLngBounds | undefined {\n if (this.markers.length === 0 && !this._position) {\n return;\n }\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\n public get position(): google.maps.LatLng {\n return this._position || this.bounds.getCenter();\n }\n\n /**\n * Get the count of **visible** markers.\n */\n public get count(): number {\n return this.markers.filter((m: Marker) => MarkerUtils.getVisible(m)).length;\n }\n\n /**\n * Add a marker to the cluster.\n */\n public push(marker: Marker): void {\n this.markers.push(marker);\n }\n\n /**\n * Cleanup references and remove marker from map.\n */\n public delete(): void {\n if (this.marker) {\n MarkerUtils.setMap(this.marker, null);\n this.marker = undefined;\n }\n this.markers.length = 0;\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\nimport { Cluster } from \"../cluster\";\nimport { filterMarkersToPaddedViewport } from \"./utils\";\nimport { MarkerUtils, Marker } from \"../marker-utils\";\n\nexport interface AlgorithmInput {\n /**\n * The map containing the markers and clusters.\n */\n map: google.maps.Map;\n /**\n * An array of markers to be clustered.\n *\n * There are some specific edge cases to be aware of including the following:\n * * Markers that are not visible.\n */\n markers: Marker[];\n /**\n * The `mapCanvasProjection` enables easy conversion from lat/lng to pixel.\n *\n * @see [MapCanvasProjection](https://developers.google.com/maps/documentation/javascript/reference/overlay-view#MapCanvasProjection)\n */\n mapCanvasProjection: google.maps.MapCanvasProjection;\n}\n\nexport interface AlgorithmOutput {\n /**\n * The clusters returned based upon the {@link AlgorithmInput}.\n */\n clusters: Cluster[];\n /**\n * A boolean flag indicating that the clusters have not changed.\n */\n changed?: boolean;\n}\n\nexport interface Algorithm {\n /**\n * Calculates an array of {@link Cluster}.\n */\n calculate: ({ markers, map }: AlgorithmInput) => AlgorithmOutput;\n}\n\nexport interface AlgorithmOptions {\n // Markers are not clustered at maxZoom and above.\n maxZoom?: number;\n}\n\n/**\n * @hidden\n */\nexport abstract class AbstractAlgorithm implements Algorithm {\n protected maxZoom: number;\n\n constructor({ maxZoom = 16 }: AlgorithmOptions) {\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 protected noop>({\n markers,\n }: T): Cluster[] {\n return noop(markers);\n }\n /**\n * Calculates an array of {@link Cluster}. Calculate is separate from\n * {@link cluster} as it does preprocessing on the markers such as filtering\n * based upon the viewport as in {@link AbstractViewportAlgorithm}. Caching\n * and other optimizations can also be done here.\n */\n public abstract calculate({ markers, map }: AlgorithmInput): AlgorithmOutput;\n\n /**\n * Clusters the markers and called from {@link calculate}.\n */\n protected abstract cluster({ markers, map }: AlgorithmInput): Cluster[];\n}\n\n/**\n * @hidden\n */\nexport interface ViewportAlgorithmOptions extends AlgorithmOptions {\n /**\n * The number of pixels to extend beyond the viewport bounds when filtering\n * markers prior to clustering.\n */\n viewportPadding?: number;\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 */\nexport abstract class AbstractViewportAlgorithm extends AbstractAlgorithm {\n protected viewportPadding = 60;\n\n constructor({ viewportPadding = 60, ...options }: ViewportAlgorithmOptions) {\n super(options);\n this.viewportPadding = viewportPadding;\n }\n public calculate({\n markers,\n map,\n mapCanvasProjection,\n }: AlgorithmInput): AlgorithmOutput {\n if (map.getZoom() >= this.maxZoom) {\n return {\n clusters: this.noop({\n markers,\n }),\n changed: false,\n };\n }\n\n return {\n clusters: this.cluster({\n markers: filterMarkersToPaddedViewport(\n map,\n mapCanvasProjection,\n markers,\n this.viewportPadding\n ),\n map,\n mapCanvasProjection,\n }),\n };\n }\n protected abstract cluster({ markers, map }: AlgorithmInput): Cluster[];\n}\n\n/**\n * @hidden\n */\nexport const noop = (markers: Marker[]): Cluster[] => {\n const clusters = markers.map(\n (marker) =>\n new Cluster({\n position: MarkerUtils.getPosition(marker),\n markers: [marker],\n })\n );\n return clusters;\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\nimport { AbstractAlgorithm, AlgorithmInput, AlgorithmOutput } from \"./core\";\nimport SuperCluster, { ClusterFeature } from \"supercluster\";\nimport { MarkerUtils, Marker } from \"../marker-utils\";\nimport { Cluster } from \"../cluster\";\nimport equal from \"fast-deep-equal\";\n\nexport type SuperClusterOptions = SuperCluster.Options<\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n { [name: string]: any },\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n { [name: string]: any }\n>;\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 */\nexport class SuperClusterAlgorithm extends AbstractAlgorithm {\n protected superCluster: SuperCluster;\n protected markers: Marker[];\n protected clusters: Cluster[];\n protected state = { zoom: -1 };\n\n constructor({ maxZoom, radius = 60, ...options }: SuperClusterOptions) {\n super({ maxZoom });\n\n this.superCluster = new SuperCluster({\n maxZoom: this.maxZoom,\n radius,\n ...options,\n });\n }\n\n public calculate(input: AlgorithmInput): AlgorithmOutput {\n let changed = false;\n const state = { zoom: input.map.getZoom() };\n\n if (!equal(input.markers, this.markers)) {\n changed = true;\n // TODO use proxy to avoid copy?\n this.markers = [...input.markers];\n\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\" as const,\n geometry: {\n type: \"Point\" as const,\n coordinates,\n },\n properties: { marker },\n };\n });\n this.superCluster.load(points);\n }\n\n if (!changed) {\n if (this.state.zoom <= this.maxZoom || state.zoom <= this.maxZoom) {\n changed = !equal(this.state, state);\n }\n }\n\n this.state = state;\n\n if (changed) {\n this.clusters = this.cluster(input);\n }\n\n return { clusters: this.clusters, changed };\n }\n\n public cluster({ map }: AlgorithmInput): Cluster[] {\n return this.superCluster\n .getClusters([-180, -90, 180, 90], Math.round(map.getZoom()))\n .map((feature: ClusterFeature<{ marker: Marker }>) =>\n this.transformCluster(feature)\n );\n }\n\n protected transformCluster({\n geometry: {\n coordinates: [lng, lat],\n },\n properties,\n }: ClusterFeature<{ marker: Marker }>): Cluster {\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\n const marker = properties.marker;\n\n return new Cluster({\n markers: [marker],\n position: MarkerUtils.getPosition(marker),\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\nimport { Cluster } from \"./cluster\";\nimport { Marker, MarkerUtils } from \"./marker-utils\";\n\n/**\n * Provides statistics on all clusters in the current render cycle for use in {@link Renderer.render}.\n */\nexport class ClusterStats {\n public readonly markers: { sum: number };\n public readonly clusters: {\n count: number;\n markers: {\n mean: number;\n sum: number;\n min: number;\n max: number;\n };\n };\n\n constructor(markers: Marker[], clusters: Cluster[]) {\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\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}\n\nexport interface Renderer {\n /**\n * Turn a {@link Cluster} into a `Marker`.\n *\n * Below is a simple example to create a marker with the number of markers in the cluster as a label.\n *\n * ```typescript\n * return new google.maps.Marker({\n * position,\n * label: String(markers.length),\n * });\n * ```\n */\n render(cluster: Cluster, stats: ClusterStats, map: google.maps.Map): Marker;\n}\n\nexport class DefaultRenderer implements Renderer {\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 * \n * \n * \n * \n * \n * `);\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 public render(\n { count, position }: Cluster,\n stats: ClusterStats,\n map: google.maps.Map\n ): Marker {\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) ? \"#ff0000\" : \"#0000ff\";\n\n // create svg literal with fill color\n const svg = `\n\n\n\n${count}\n`;\n\n const title = `Cluster of ${count} markers`,\n // adjust zIndex to be above other markers\n zIndex: number = Number(google.maps.Marker.MAX_ZINDEX) + count;\n\n if (MarkerUtils.isAdvancedMarkerAvailable(map)) {\n // create cluster SVG element\n const parser = new DOMParser();\n const svgEl = parser.parseFromString(\n svg,\n \"image/svg+xml\"\n ).documentElement;\n svgEl.setAttribute(\"transform\", \"translate(0 25)\");\n\n const clusterOptions: google.maps.marker.AdvancedMarkerElementOptions = {\n map,\n position,\n zIndex,\n title,\n content: svgEl,\n };\n return new google.maps.marker.AdvancedMarkerElement(clusterOptions);\n }\n\n const clusterOptions: google.maps.MarkerOptions = {\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 * 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// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface OverlayViewSafe extends google.maps.OverlayView {}\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: any, type2: any): void {\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/**\n * @ignore\n */\nexport class 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 * 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\nimport {\n Algorithm,\n AlgorithmOptions,\n SuperClusterAlgorithm,\n} from \"./algorithms\";\nimport { ClusterStats, DefaultRenderer, Renderer } from \"./renderer\";\nimport { Cluster } from \"./cluster\";\nimport { OverlayViewSafe } from \"./overlay-view-safe\";\nimport { MarkerUtils, Marker } from \"./marker-utils\";\n\nexport type onClusterClickHandler = (\n event: google.maps.MapMouseEvent,\n cluster: Cluster,\n map: google.maps.Map\n) => void;\nexport interface MarkerClustererOptions {\n markers?: Marker[];\n /**\n * An algorithm to cluster markers. Default is {@link SuperClusterAlgorithm}. Must\n * provide a `calculate` method accepting {@link AlgorithmInput} and returning\n * an array of {@link Cluster}.\n */\n algorithm?: Algorithm;\n algorithmOptions?: AlgorithmOptions;\n map?: google.maps.Map | null;\n /**\n * An object that converts a {@link Cluster} into a `google.maps.Marker`.\n * Default is {@link DefaultRenderer}.\n */\n renderer?: Renderer;\n onClusterClick?: onClusterClickHandler;\n}\n\nexport enum MarkerClustererEvents {\n CLUSTERING_BEGIN = \"clusteringbegin\",\n CLUSTERING_END = \"clusteringend\",\n CLUSTER_CLICK = \"click\",\n}\n\nexport const defaultOnClusterClickHandler: onClusterClickHandler = (\n _: google.maps.MapMouseEvent,\n cluster: Cluster,\n map: google.maps.Map\n): void => {\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 */\nexport class MarkerClusterer extends OverlayViewSafe {\n /** @see {@link MarkerClustererOptions.onClusterClick} */\n public onClusterClick: onClusterClickHandler;\n /** @see {@link MarkerClustererOptions.algorithm} */\n protected algorithm: Algorithm;\n protected clusters: Cluster[];\n protected markers: Marker[];\n /** @see {@link MarkerClustererOptions.renderer} */\n protected renderer: Renderer;\n /** @see {@link MarkerClustererOptions.map} */\n protected map: google.maps.Map | null;\n protected idleListener: google.maps.MapsEventListener;\n\n constructor({\n map,\n markers = [],\n algorithmOptions = {},\n algorithm = new SuperClusterAlgorithm(algorithmOptions),\n renderer = new DefaultRenderer(),\n onClusterClick = defaultOnClusterClickHandler,\n }: MarkerClustererOptions) {\n super();\n this.markers = [...markers];\n this.clusters = [];\n\n this.algorithm = algorithm;\n this.renderer = renderer;\n\n this.onClusterClick = onClusterClick;\n\n if (map) {\n this.setMap(map);\n }\n }\n\n public addMarker(marker: Marker, noDraw?: boolean): void {\n if (this.markers.includes(marker)) {\n return;\n }\n\n this.markers.push(marker);\n if (!noDraw) {\n this.render();\n }\n }\n\n public addMarkers(markers: Marker[], noDraw?: boolean): void {\n markers.forEach((marker) => {\n this.addMarker(marker, true);\n });\n\n if (!noDraw) {\n this.render();\n }\n }\n\n public removeMarker(marker: Marker, noDraw?: boolean): boolean {\n const index = this.markers.indexOf(marker);\n\n if (index === -1) {\n // Marker is not in our list of markers, so do nothing:\n return false;\n }\n\n MarkerUtils.setMap(marker, null);\n this.markers.splice(index, 1); // Remove the marker from the list of managed markers\n\n if (!noDraw) {\n this.render();\n }\n\n return true;\n }\n\n public removeMarkers(markers: Marker[], noDraw?: boolean): boolean {\n let removed = false;\n\n markers.forEach((marker) => {\n removed = this.removeMarker(marker, true) || removed;\n });\n\n if (removed && !noDraw) {\n this.render();\n }\n\n return removed;\n }\n\n public clearMarkers(noDraw?: boolean): void {\n this.markers.length = 0;\n\n if (!noDraw) {\n this.render();\n }\n }\n\n /**\n * Recalculates and draws all the marker clusters.\n */\n public render(): void {\n const map = this.getMap();\n if (map instanceof google.maps.Map && map.getProjection()) {\n google.maps.event.trigger(\n this,\n MarkerClustererEvents.CLUSTERING_BEGIN,\n this\n );\n const { clusters, changed } = this.algorithm.calculate({\n markers: this.markers,\n map,\n mapCanvasProjection: this.getProjection(),\n });\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\n const groupMarkers: Marker[] = [];\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 } else {\n // Delay the removal of old group markers to avoid flickering.\n groupMarkers.push(cluster.marker);\n }\n }\n\n this.clusters = clusters;\n this.renderClusters();\n\n // Delayed removal of the markers of the former groups.\n requestAnimationFrame(() =>\n groupMarkers.forEach((marker) => MarkerUtils.setMap(marker, null))\n );\n }\n google.maps.event.trigger(\n this,\n MarkerClustererEvents.CLUSTERING_END,\n this\n );\n }\n }\n\n public onAdd(): void {\n this.idleListener = this.getMap().addListener(\n \"idle\",\n this.render.bind(this)\n );\n this.render();\n }\n\n public onRemove(): void {\n google.maps.event.removeListener(this.idleListener);\n this.reset();\n }\n\n protected reset(): void {\n this.markers.forEach((marker) => MarkerUtils.setMap(marker, null));\n this.clusters.forEach((cluster) => cluster.delete());\n this.clusters = [];\n }\n\n protected renderClusters(): void {\n // Generate stats to pass to renderers.\n const stats = new ClusterStats(this.markers, this.clusters);\n const map = this.getMap() as google.maps.Map;\n\n this.clusters.forEach((cluster) => {\n if (cluster.markers.length === 1) {\n cluster.marker = cluster.markers[0];\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(\n \"click\",\n /* istanbul ignore next */\n (event: google.maps.MapMouseEvent) => {\n google.maps.event.trigger(\n this,\n MarkerClustererEvents.CLUSTER_CLICK,\n cluster\n );\n this.onClusterClick(event, cluster, map);\n }\n );\n }\n }\n MarkerUtils.setMap(cluster.marker, map);\n });\n }\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 GeneratorResume behavior specified since ES2015:\n // ES2015 spec, step 3: https://262.ecma-international.org/6.0/#sec-generatorresume\n // Latest spec, step 2: https://tc39.es/ecma262/#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 method, 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 != null) {\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 throw new TypeError(typeof iterable + \" is not iterable\");\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';\r\nimport { MarkerClusterer } from '@googlemaps/markerclusterer';\r\nimport 'regenerator-runtime/runtime';\r\n\r\n{\r\n\tlet map;\r\n\tlet activeMarker = null;\r\n\tlet markers = [];\r\n\tlet clusterer = null;\r\n\tlet searchLocationLat = null;\r\n\tlet searchLocationLng = null;\r\n\tlet searchExecuted = false; // Variabile di stato per tracciare l'esecuzione della ricerca\r\n\tlet infoWindow = null;\r\n\tlet stores = []; // Variabile globale per memorizzare i dati degli store\r\n\tlet skipGA4Event = false;\r\n\tlet searchTimeout = null;\r\n\r\n\r\n\r\n\r\n\tfunction loadGoogleMapsAPI() {\r\n\t\tif (!window.storeLocatorSettings.apiKey && !IS_DEV) {\r\n\t\t\tthrow (`Missing Google Map Api Key`);\r\n\t\t}\r\n\r\n\t\treturn new Promise((resolve, reject) => {\r\n\t\t\tconst script = document.createElement('script');\r\n\t\t\tconst locale = detectLocale();\r\n\t\t\tscript.src = `https://maps.googleapis.com/maps/api/js?key=` + window.storeLocatorSettings.apiKey + `&callback=initMap&libraries=places®ion=EN&language=en`;\r\n\t\t\tscript.async = true;\r\n\t\t\tscript.defer = true;\r\n\t\t\tscript.onload = resolve;\r\n\t\t\tscript.onerror = reject;\r\n\t\t\tdocument.head.appendChild(script);\r\n\t\t});\r\n\t}\r\n\r\n\tasync function loadMapStyle() {\r\n\t\ttry {\r\n\t\t\tconst response = await fetch('/data/mapStyle.json');\r\n\t\t\treturn await response.json();\r\n\t\t} catch (error) {\r\n\t\t\t// console.error('Error loading map style:', error);\r\n\t\t\treturn [];\r\n\t\t}\r\n\t}\r\n\r\n\tfunction displayInfoWindow(marker, store) {\r\n\t\t// Chiudi eventuali finestre di informazioni aperte\r\n\t\tif (infoWindow) {\r\n\t\t\tinfoWindow.close();\r\n\t\t}\r\n\r\n\t\t// Calcola la distanza, se non è già stata calcolata\r\n\t\tif (typeof store.distance === 'undefined') {\r\n\t\t\tstore.distance = calculateDistance(searchLocationLat, searchLocationLng, store.lat, store.lng);\r\n\t\t}\r\n\r\n\t\tlet hoursHtml = '';\r\n\t\tconst storeStatus = isStoreOpen(store);\r\n\r\n\t\t// Ottieni il giorno corrente in italiano come abbreviazione (es. \"Lun\" per \"Lunedì\")\r\n\t\tconst todayAbbreviation = new Date().toLocaleDateString('it-IT', { weekday: 'short' }).toLowerCase();\r\n\r\n\t\tif (store.hours) {\r\n\t\t\tstore.hours.forEach(day => {\r\n\t\t\t\tconst dayName = day.day.trim().toLowerCase();\r\n\t\t\t\t// Aggiunge la classe .highlight-today al giorno corrente\r\n\t\t\t\tconst isToday = dayName === todayAbbreviation ? 'highlight-today' : '';\r\n\r\n\t\t\t\tif (day.orari.length === 1 && day.orari[0].trim() === 'Chiuso') {\r\n\t\t\t\t\thoursHtml += `
  • ${dayName}:
    ${window.storeLocatorSettings.localizedStrings.LBL_ORARIO_CHIUSO}
  • `;\r\n\t\t\t\t} else {\r\n\t\t\t\t\thoursHtml += `
  • ${dayName}
    ${day.orari.join(' / ')}
  • `;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tconst directionsUrl = `https://www.google.com/maps/dir/?api=1&destination=${marker.getPosition().lat()},${marker.getPosition().lng()}`;\r\n\r\n\t\tlet nomeSt = store.name;\r\n\r\n\t\tif (!nomeSt) { nomeSt = \"-\" }\r\n\t\telse {\r\n\t\t\tnomeSt = nomeSt.replaceAll(\" \", \"_\").toLowerCase() + \"_\";\r\n\t\t\tnomeSt = nomeSt.replaceAll(\"_-_\", \"_\");\r\n\t\t}\r\n\r\n\t\tnomeSt = nomeSt.replace(/'/g, \"`\");\r\n\r\n\t\tif (window.data.provinciaGA4 && window.data.provinciaGA4 != \"\" && !window.data.searchByTextBox) {\r\n\t\t\tnomeSt = nomeSt + window.data.provinciaGA4;\r\n\t\t} else {\r\n\t\t\tnomeSt += \"-\";\r\n\t\t}\r\n\r\n\t\tstore.nomeContenuto = nomeSt;\r\n\r\n\t\t// Crea un nuovo contenuto HTML per l'infoWindow\r\n\t\tconst contentString = `\r\n
    \r\n
    \r\n
    \r\n
    ${store.name}
    \r\n
    ${store.distance.toFixed(2)} km
    \r\n
    \r\n
    \r\n
    \r\n
    ${store.address}, ${store.city}
    \r\n ${hoursHtml ? `\r\n
    \r\n
    Orari
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n ${storeStatus.status}\r\n ${storeStatus.status === `${window.storeLocatorSettings.localizedStrings.LBL_ORARIO_APERTO}` ? ` · ${window.storeLocatorSettings.localizedStrings.LBL_ORARIO_CHIUDE_A} ${storeStatus.closesAt}` : storeStatus.nextOpen ? ` · ${window.storeLocatorSettings.localizedStrings.LBL_ORARIO_APRE_A} ${storeStatus.nextOpen}` : ''}\r\n \r\n \r\n \r\n \r\n \r\n
    \r\n
      \r\n ${hoursHtml}\r\n
    \r\n
    \r\n
    ` : ''}\r\n ${store.phone ? `\r\n
    \r\n
    Telefono
    \r\n
    \r\n \r\n \r\n \r\n ${store.phone}\r\n
    \r\n
    \r\n ` : ''}\r\n
    \r\n \r\n
    \r\n `;\r\n\r\n\t\t// Crea una nuova finestra di informazioni\r\n\t\tinfoWindow = new google.maps.InfoWindow({\r\n\t\t\tcontent: contentString,\r\n\t\t});\r\n\r\n\t\t// Aggiungi un listener per chiudere la finestra al click sul marker\r\n\t\tgoogle.maps.event.addListener(marker, 'click', () => {\r\n\t\t\tinfoWindow.open(map, marker);\r\n\t\t});\r\n\r\n\t\t// Listener per attivare toggleWeekActive sulla .wrap-today dentro l'infoWindow\r\n\t\tgoogle.maps.event.addListenerOnce(infoWindow, 'domready', () => {\r\n\t\t\tconst wrapTodayInInfoWindow = document.querySelector('.infoWindowContent .wrap-today');\r\n\t\t\tif (wrapTodayInInfoWindow) {\r\n\t\t\t\twrapTodayInInfoWindow.addEventListener('click', toggleWeekActive);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tfunction addMarkerClickListener(marker, storeId, storeName) {\r\n\t\tconst store = stores.find(s => s.id === storeId);\r\n\t\tif (!store) return; // Se `store` non viene trovato, esci dalla funzione\r\n\r\n\t\tmarker.addListener('click', () => {\r\n\t\t\t// Scrolla fino alla posizione dell'elemento nel `listStore`\r\n\t\t\tconst storeElement = document.getElementById(`store-${storeId}`);\r\n\t\t\tif (storeElement) {\r\n\t\t\t\tstoreElement.scrollIntoView({ behavior: 'smooth', block: 'center' });\r\n\t\t\t\tdocument.querySelectorAll('.listStore li').forEach(el => el.classList.remove('active'));\r\n\t\t\t\tstoreElement.classList.add('active');\r\n\t\t\t\tchangeMarkerIcon(marker);\r\n\t\t\t\tmap.setCenter(marker.getPosition());\r\n\r\n\t\t\t\t// Calcola e aggiorna la distanza per il `store` ogni volta che si clicca sul marker\r\n\t\t\t\tstore.distance = calculateDistance(searchLocationLat, searchLocationLng, store.lat, store.lng);\r\n\r\n\t\t\t\t// Apri l'infoWindow sul marker\r\n\t\t\t\tdisplayInfoWindow(marker, store);\r\n\t\t\t\tinfoWindow.open(map, marker); // Assicurati che la finestra di informazioni sia visualizzata\r\n\r\n\t\t\t\t// Tracciamento interazione GA4\r\n\t\t\t\tconst prov = window.data.provinciaGA4;\r\n\t\t\t\tconst nomeContenuto = prov && !window.data.searchByTextBox ? `${storeName}_${prov}` : `${storeName}_-`;\r\n\t\t\t\tstoreLocatorInteractions(\"mappa\", \"seleziona_store\", nomeContenuto);\r\n\r\n\t\t\t\tconst btnTop = document.querySelector('.btn-top');\r\n\t\t\t\tif (btnTop) {\r\n\t\t\t\t\tbtnTop.classList.add('visible');\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tfunction changeMarkerIcon(marker) {\r\n\t\tif (activeMarker) {\r\n\t\t\tactiveMarker.setIcon({\r\n\t\t\t\turl: '/img/pin.png',\r\n\t\t\t});\r\n\t\t}\r\n\t\tmarker.setIcon({\r\n\t\t\turl: '/img/pin-selected.png',\r\n\t\t});\r\n\t\tactiveMarker = marker;\r\n\t}\r\n\r\n\tfunction clearMarkers() {\r\n\t\tif (clusterer) {\r\n\t\t\tclusterer.clearMarkers();\r\n\t\t}\r\n\t\tmarkers.forEach(marker => marker.setMap(null));\r\n\t\tmarkers = [];\r\n\t}\r\n\r\n\tasync function fetchStoreData(map) {\r\n\t\ttry {\r\n\t\t\tconst response = await fetch('/api/store-locator/all');\r\n\t\t\tstores = await response.json(); // Aggiorna la variabile globale `stores`\r\n\t\t\tconst locale = detectLocale();\r\n\t\t\tconst { country } = getCountryAndCenter(locale);\r\n\r\n\t\t\tconst filteredStores = stores.filter(store => store.country === country);\r\n\t\t\t// Calcola la distanza per ogni store rispetto alla posizione di ricerca attuale\r\n\t\t\tfilteredStores.forEach(store => {\r\n\t\t\t\tstore.distance = calculateDistance(searchLocationLat, searchLocationLng, store.lat, store.lng);\r\n\t\t\t});\r\n\t\t\tconst customIcon = {\r\n\t\t\t\turl: '/img/pin.png',\r\n\t\t\t};\r\n\r\n\t\t\tmarkers = filteredStores.map((store) => {\r\n\t\t\t\tconst position = { lat: store.lat, lng: store.lng };\r\n\r\n\t\t\t\tif (!isNaN(position.lat) && !isNaN(position.lng)) {\r\n\t\t\t\t\tconst marker = new google.maps.Marker({\r\n\t\t\t\t\t\tposition: position,\r\n\t\t\t\t\t\ttitle: store.name,\r\n\t\t\t\t\t\ticon: customIcon,\r\n\t\t\t\t\t\tid: `store-${store.id}`,\r\n\t\t\t\t\t\tmap: map\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\taddMarkerClickListener(marker, store.id, store.name);\r\n\t\t\t\t\treturn marker;\r\n\t\t\t\t} else {\r\n\t\t\t\t\treturn null;\r\n\t\t\t\t}\r\n\t\t\t}).filter(marker => marker !== null);\r\n\r\n\t\t\tconst renderer = {\r\n\t\t\t\trender({ count, position }) {\r\n\t\t\t\t\tconst svg = window.btoa(`\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t`);\r\n\t\t\t\t\treturn new google.maps.Marker({\r\n\t\t\t\t\t\tposition,\r\n\t\t\t\t\t\ticon: {\r\n\t\t\t\t\t\t\turl: `data:image/svg+xml;base64,${svg}`,\r\n\t\t\t\t\t\t\tanchor: new google.maps.Point(24, 24),\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tlabel: {\r\n\t\t\t\t\t\t\ttext: String(count),\r\n\t\t\t\t\t\t\tcolor: \"white\",\r\n\t\t\t\t\t\t\tfontSize: \"12px\",\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tzIndex: Number(google.maps.Marker.MAX_ZINDEX) + count,\r\n\t\t\t\t\t});\r\n\t\t\t\t},\r\n\t\t\t};\r\n\r\n\t\t\tif (clusterer) {\r\n\t\t\t\tclusterer.clearMarkers();\r\n\t\t\t}\r\n\r\n\t\t\tclusterer = new MarkerClusterer({\r\n\t\t\t\tmap: map,\r\n\t\t\t\tmarkers: markers,\r\n\t\t\t\trenderer: renderer\r\n\t\t\t});\r\n\r\n\t\t\treturn markers;\r\n\r\n\t\t} catch (error) {\r\n\t\t\tconsole.error('Error fetching store data:', error);\r\n\t\t}\r\n\t}\r\n\r\n\tasync function fetchAgentsData(tipo, countrycode, province, city, areac, shortn) {\r\n\t\ttry {\r\n\t\t\t// console.log(`Fetching agents data with params: tipo=${tipo}, countrycode=${countrycode}, provcode=${province}, citycode=${city}, areacode=${areac}, shortname=${shortn}`);\r\n\t\t\tconst response = await fetch(`/api/store-locator/agenti-by-coords?tipo=${tipo}&countrycode=${countrycode}&provcode=${province}&citycode=${city}&areacode=${areac}&shortname=${shortn}`);\r\n\t\t\tconst data = await response.json();\r\n\r\n\t\t\tdata.forEach(agent => agent.nameWebRanking += \"_agente_di_zona\");\r\n\r\n\t\t\tif (window.data.provinciaGA4 && !window.data.searchByTextBox)\r\n\t\t\t\tdata.forEach(agent => agent.nameWebRanking += \"_\" + window.data.provinciaGA4);\r\n\r\n\t\t\t//console.log('Agents data fetched:', data);\r\n\t\t\treturn data;\r\n\t\t} catch (error) {\r\n\t\t\tconsole.error('Error fetching agent data:', error);\r\n\t\t\treturn [];\r\n\t\t}\r\n\t}\r\n\r\n\tfunction calculateDistance(lat1, lng1, lat2, lng2) {\r\n\t\tconst R = 6371;\r\n\t\tconst dLat = (lat2 - lat1) * Math.PI / 180;\r\n\t\tconst dLng = (lng2 - lng1) * Math.PI / 180;\r\n\t\tconst a =\r\n\t\t\tMath.sin(dLat / 2) * Math.sin(dLat / 2) +\r\n\t\t\tMath.cos(lat1 * Math.PI / 180) * Math.cos(lat2 * Math.PI / 180) *\r\n\t\t\tMath.sin(dLng / 2) * Math.sin(dLng / 2);\r\n\t\tconst c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));\r\n\t\treturn R * c;\r\n\t}\r\n\r\n\tfunction isStoreOpen(store) {\r\n\t\tif (!store || !store.hours) {\r\n\t\t\t// console.error(`store.hours è null o undefined per il negozio:`, store);\r\n\t\t\treturn { status: \"Chiuso\", closesAt: null, nextOpen: null };\r\n\t\t}\r\n\r\n\t\tconst today = new Date();\r\n\t\tconst daysMapAbbreviated = {\r\n\t\t\t'domenica': 'Dom',\r\n\t\t\t'lunedì': 'Lun',\r\n\t\t\t'martedì': 'Mar',\r\n\t\t\t'mercoledì': 'Merc', // Stiamo usando \"Merc\" perché è così che ti arriva nei dati\r\n\t\t\t'giovedì': 'Gio',\r\n\t\t\t'venerdì': 'Ven',\r\n\t\t\t'sabato': 'Sab'\r\n\t\t};\r\n\r\n\t\t// Ottieni il giorno corrente in italiano\r\n\t\tconst dayInItalian = today.toLocaleString('it-IT', { weekday: 'long', timeZone: 'Europe/Rome' }).toLowerCase();\r\n\t\tconst dayAbbreviation = daysMapAbbreviated[dayInItalian];\r\n\r\n\t\tif (!dayAbbreviation) {\r\n\t\t\t// console.warn(`Abbreviazione non trovata per il giorno corrente: ${dayInItalian}`);\r\n\t\t\treturn { status: \"Chiuso\", closesAt: null, nextOpen: null };\r\n\t\t}\r\n\r\n\t\tconst hoursData = store?.hours?.find(h => h.day.trim() === dayAbbreviation);\r\n\r\n\t\tif (!hoursData) {\r\n\t\t\t// console.warn(`Nessun orario trovato per il giorno: ${dayAbbreviation} per il negozio: ${store.name}`);\r\n\t\t\treturn { status: \"Chiuso\", closesAt: null, nextOpen: getNextOpeningTime(store, today) };\r\n\t\t}\r\n\r\n\r\n\t\tif (!hoursData) {\r\n\t\t\t// console.warn(`Nessun orario trovato per il giorno: ${dayAbbreviation} per il negozio: ${store.name}`);\r\n\t\t\treturn { status: \"Chiuso\", closesAt: null, nextOpen: null };\r\n\t\t}\r\n\r\n\t\tif (hoursData.orari.length === 1 && hoursData.orari[0].trim().toLowerCase() === 'chiuso') {\r\n\t\t\treturn { status: \"Chiuso\", closesAt: null, nextOpen: getNextOpeningTime(store, today) };\r\n\t\t}\r\n\r\n\t\tconst options = { timeZone: 'Europe/Rome', hour12: false, hour: '2-digit', minute: '2-digit' };\r\n\t\tconst timeInRomeString = today.toLocaleTimeString('it-IT', options);\r\n\t\tconst [currentHour, currentMinute] = timeInRomeString.split(':').map(Number);\r\n\t\tconst nowInMinutes = currentHour * 60 + currentMinute;\r\n\r\n\t\tlet nextOpenTime = null;\r\n\r\n\t\tfor (let orario of hoursData.orari) {\r\n\t\t\tconst [openTime, closeTime] = orario.split(/\\s*[-–—]\\s*/).map(time => time.trim());\r\n\r\n\t\t\tif (!openTime || !closeTime) continue;\r\n\r\n\t\t\tif (!/^\\d{1,2}:\\d{2}$/.test(openTime) || !/^\\d{1,2}:\\d{2}$/.test(closeTime)) continue;\r\n\r\n\t\t\tconst [openHour, openMinute] = openTime.split(':').map(Number);\r\n\t\t\tconst [closeHour, closeMinute] = closeTime.split(':').map(Number);\r\n\r\n\t\t\tif (isNaN(openHour) || isNaN(openMinute) || isNaN(closeHour) || isNaN(closeMinute)) continue;\r\n\r\n\t\t\tconst openInMinutes = openHour * 60 + openMinute;\r\n\t\t\tconst closeInMinutes = closeHour * 60 + closeMinute;\r\n\r\n\t\t\tif (nowInMinutes >= openInMinutes && nowInMinutes < closeInMinutes) {\r\n\t\t\t\treturn {\r\n\t\t\t\t\tstatus: `${window.storeLocatorSettings.localizedStrings.LBL_ORARIO_APERTO}`,\r\n\t\t\t\t\tclosesAt: `${closeHour.toString().padStart(2, '0')}:${closeMinute.toString().padStart(2, '0')}`,\r\n\t\t\t\t\tnextOpen: null\r\n\t\t\t\t};\r\n\t\t\t}\r\n\r\n\t\t\tif (nowInMinutes < openInMinutes && (nextOpenTime === null || openInMinutes < nextOpenTime)) {\r\n\t\t\t\tnextOpenTime = openInMinutes;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (nextOpenTime !== null) {\r\n\t\t\tconst nextOpenHour = Math.floor(nextOpenTime / 60);\r\n\t\t\tconst nextOpenMinute = nextOpenTime % 60;\r\n\t\t\treturn {\r\n\t\t\t\tstatus: `${window.storeLocatorSettings.localizedStrings.LBL_ORARIO_CHIUSO}`,\r\n\t\t\t\tclosesAt: null,\r\n\t\t\t\tnextOpen: `${nextOpenHour.toString().padStart(2, '0')}:${nextOpenMinute.toString().padStart(2, '0')}`\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\t// Se l'orario di riapertura non è oggi, controlla i giorni successivi\r\n\t\tconst nextOpen = getNextOpeningTime(store, today);\r\n\r\n\t\treturn {\r\n\t\t\tstatus: `${window.storeLocatorSettings.localizedStrings.LBL_ORARIO_CHIUSO}`,\r\n\t\t\tclosesAt: null,\r\n\t\t\tnextOpen: nextOpen\r\n\t\t};\r\n\t}\r\n\r\n\tfunction getNextOpeningTime(store, currentDate) {\r\n\t\tif (!store.hours || !Array.isArray(store.hours)) {\r\n\t\t\t// console.error('store.hours is undefined or not an array in getNextOpeningTime', store);\r\n\t\t\treturn null;\r\n\t\t}\r\n\t\tconst daysMapAbbreviated = ['Dom', 'Lun', 'Mar', 'Mer', 'Gio', 'Ven', 'Sab'];\r\n\t\tlet dayIndex = currentDate.getDay(); // Ottiene l'indice del giorno della settimana (0 è Domenica, 6 è Sabato)\r\n\r\n\t\tfor (let i = 1; i <= 7; i++) {\r\n\t\t\tdayIndex = (dayIndex + 1) % 7;\r\n\t\t\tconst nextDayAbbreviation = daysMapAbbreviated[dayIndex];\r\n\t\t\tconst nextDayData = store.hours.find(h => h.day.trim() === nextDayAbbreviation);\r\n\r\n\t\t\tif (nextDayData && nextDayData.orari.length > 0 && nextDayData.orari[0].trim().toLowerCase() !== 'chiuso') {\r\n\t\t\t\tconst [nextOpenTime] = nextDayData.orari[0].split(/\\s*[-–—]\\s*/).map(time => time.trim());\r\n\t\t\t\treturn `${nextDayAbbreviation} ${nextOpenTime}`;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn null; // Non dovrebbe mai arrivare qui, ma lo mettiamo per sicurezza\r\n\t}\r\n\r\n\tfunction toggleWeekActive(event) {\r\n\t\tconst wrapTodayElement = event.target.closest('.wrap-today');\r\n\t\tif (wrapTodayElement) {\r\n\t\t\tconst todayElement = wrapTodayElement.closest('.today');\r\n\t\t\tif (todayElement) {\r\n\t\t\t\tconst weekList = todayElement.querySelector('.week');\r\n\t\t\t\tif (weekList && weekList.classList.contains('week')) {\r\n\t\t\t\t\tweekList.classList.toggle('active');\r\n\t\t\t\t\ttodayElement.classList.toggle('active');\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\t// console.log('Elemento .today non trovato.');\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\t// console.log('Elemento .wrap-today non trovato.');\r\n\t\t}\r\n\t}\r\n\r\n\tfunction detectLocale() {\r\n\t\tconst metaTags = document.getElementsByTagName('meta');\r\n\t\tfor (let i = 0; i < metaTags.length; i++) {\r\n\t\t\tif (metaTags[i].getAttribute('property') === 'og:locale') {\r\n\t\t\t\treturn metaTags[i].getAttribute('content');\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn 'en_US';\r\n\t}\r\n\r\n\tfunction getCountryAndCenter(locale) {\r\n\t\tconst mapSettings = {\r\n\t\t\tit_IT: { country: 'IT', center: { lat: 41.9028, lng: 12.4964 } },\r\n\t\t\tfr_FR: { country: 'FR', center: { lat: 48.8566, lng: 2.3522 } },\r\n\t\t\tde_DE: { country: 'DE', center: { lat: 52.5200, lng: 13.4050 } },\r\n\t\t\tde_AT: { country: 'AT', center: { lat: 48.2082, lng: 16.3738 } },\r\n\t\t\tnl_BE: { country: 'BE', center: { lat: 50.8503, lng: 4.3517 } },\r\n\t\t\tde_CH: { country: 'CH', center: { lat: 46.2044, lng: 6.1432 } },\r\n\t\t\tfr_CH: { country: 'CH', center: { lat: 46.2044, lng: 6.1432 } }\r\n\t\t};\r\n\t\treturn mapSettings[locale] || { country: 'US', center: { lat: 37.7749, lng: -122.4194 } };\r\n\t}\r\n\r\n\tfunction getProvinceFromUrl() {\r\n\t\tconst url = window.location.href;\r\n\t\tconst match = url.match(/\\/italia\\/([^\\/]+)/);\r\n\t\treturn match ? match[1] : null;\r\n\t}\r\n\r\n\tasync function initMap() {\r\n\t\tconst loader = document.querySelector('.loader');\r\n\t\tconst wrapMap = document.querySelector('.wrap-map');\r\n\t\tloader.style.display = 'flex';\r\n\t\twrapMap.classList.add('loading');\r\n\r\n\r\n\t\tconst mapStyle = await loadMapStyle();\r\n\t\tconst locale = detectLocale();\r\n\t\tconst { country, center } = getCountryAndCenter(locale);\r\n\r\n\t\tmap = new google.maps.Map(document.getElementById('map'), {\r\n\t\t\tzoom: 6,\r\n\t\t\tcenter: center,\r\n\t\t\tstyles: mapStyle\r\n\t\t});\r\n\r\n\t\tconst autocompleteInput = document.querySelectorAll('.search-input');\r\n\t\tconst autocomplete = new google.maps.places.Autocomplete(autocompleteInput[0]);\r\n\r\n\t\t// Evento per selezione del suggerimento con il mouse\r\n\t\tconst observer = new MutationObserver(() => {\r\n\t\t\tconst autocompleteContainer = document.querySelector('.pac-container');\r\n\t\t\tif (autocompleteContainer) {\r\n\t\t\t\tautocompleteContainer.addEventListener('click', async () => {\r\n\t\t\t\t\t\r\n\t\t\t\t\tif (!skipGA4Event) {\r\n\r\n\t\t\t\t\t\ttriggerGA4Event();\r\n\t\t\t\t\t\tskipGA4Event = true;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tconst place = autocomplete.getPlace();\r\n\t\t\t\t\tif (place.geometry) {\r\n\t\t\t\t\t\tsearchLocationLat = place.geometry.location.lat();\r\n\t\t\t\t\t\tsearchLocationLng = place.geometry.location.lng();\r\n\t\t\t\t\t\tawait performSearch(place.geometry.location, [place]);\r\n\t\t\t\t\t\tskipGA4Event = false; // Reset flag al termine della ricerca\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\t\tobserver.observe(document.body, { childList: true, subtree: true });\r\n\r\n\t\t// Evento per suggerimenti con Autocomplete\r\n\t\tgoogle.maps.event.addListener(autocomplete, 'place_changed', async function () {\r\n\t\t\tif (searchTimeout) {\r\n\t\t\t\tclearTimeout(searchTimeout);\r\n\t\t\t\tsearchTimeout = null;\r\n\t\t\t}\r\n\r\n\t\t\tif (!skipGA4Event) { // Controllo skipGA4Event\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\twindow.data.searchByTextBox = true;\r\n\t\t\t\ttriggerGA4Event();\r\n\t\t\t\tskipGA4Event = true;\r\n\t\t\t}\r\n\t\t\tconst place = autocomplete.getPlace();\r\n\t\t\tif (place.geometry) {\r\n\t\t\t\tsearchLocationLat = place.geometry.location.lat();\r\n\t\t\t\tsearchLocationLng = place.geometry.location.lng();\r\n\t\t\t\tawait performSearch(place.geometry.location, [place]);\r\n\t\t\t\tskipGA4Event = false; // Reset flag dopo ricerca\r\n\t\t\t}\r\n\t\t});\r\n\r\n\r\n\t\tmarkers = await fetchStoreData(map);\r\n\r\n\r\n\t\tgoogle.maps.event.addListenerOnce(map, 'idle', () => {\r\n\t\t\tloader.style.display = 'none';\r\n\t\t\twrapMap.classList.remove('loading');\r\n\t\t\twrapMap.classList.add('loaded');\r\n\t\t});\r\n\r\n\r\n\t\tasync function performSearch(location, results) {\r\n\t\t\t// console.log(\"Attempting search. Search executed:\", searchExecuted);\r\n\t\t\tif (searchExecuted) return; // Evita di eseguire nuovamente la ricerca se già eseguita\r\n\r\n\t\t\tsearchExecuted = true; // Imposta lo stato per indicare che la ricerca è in corso\r\n\t\t\t// console.log(\"Search started. Search executed set to true.\");\r\n\r\n\r\n\t\t\ttry {\r\n\t\t\t\t// console.log(`Performing search with Lat: ${searchLocationLat}, Lng: ${searchLocationLng}`);\r\n\r\n\t\t\t\tconst wrapResults = document.querySelector('.wrap-results');\r\n\t\t\t\tconst formTop = document.querySelector('.section--form-top-store-locator');\r\n\t\t\t\tconst formBottom = document.querySelector('.section--form-bottom-store-locator');\r\n\t\t\t\tconst listStore = document.querySelector('.listStore');\r\n\t\t\t\tconst listAgent = document.querySelector('.listAgent');\r\n\t\t\t\tconst storeFilters = document.querySelector('.storeFilters');\r\n\t\t\t\tconst noStore = document.querySelector('.no-store');\r\n\t\t\t\tconst btnTop = document.querySelector('.btn-top');\r\n\t\t\t\tconst mapOverlay = document.querySelector('#map-overlay');\r\n\r\n\t\t\t\tmap.setCenter(location);\r\n\t\t\t\tconst textOverlay = document.querySelector('.text-overlay');\r\n\t\t\t\tif (textOverlay) {\r\n\t\t\t\t\ttextOverlay.remove();\r\n\t\t\t\t}\r\n\t\t\t\tif (wrapResults) {\r\n\t\t\t\t\twrapResults.classList.add('active');\r\n\t\t\t\t}\r\n\t\t\t\tif (wrapMap) {\r\n\t\t\t\t\twrapMap.classList.add('searched');\r\n\t\t\t\t}\r\n\t\t\t\tif (formTop) {\r\n\t\t\t\t\tformTop.classList.add('searched');\r\n\t\t\t\t}\r\n\t\t\t\tif (formBottom) {\r\n\t\t\t\t\tformBottom.classList.add('searched');\r\n\t\t\t\t}\r\n\t\t\t\tif (btnTop) {\r\n\t\t\t\t\tbtnTop.classList.add('searched');\r\n\t\t\t\t}\r\n\t\t\t\tif (mapOverlay) {\r\n\t\t\t\t\tmapOverlay.classList.remove('active');\r\n\t\t\t\t}\r\n\r\n\t\t\t\tloader.style.display = 'flex';\r\n\r\n\t\t\t\tlet storesInRadius = [];\r\n\t\t\t\tlet stores = [];\r\n\r\n\t\t\t\tlet tipo = ''; // Dichiara 'tipo' qui per renderlo accessibile\r\n\r\n\t\t\t\ttry {\r\n\t\t\t\t\t// console.log('fetching stores by coordinates');\r\n\t\t\t\t\tif (results && results[0] && results[0].address_components) {\r\n\r\n\t\t\t\t\t\tconst ordinatiS = {\r\n\t\t\t\t\t\t\t\"country\": 1,\r\n\t\t\t\t\t\t\t\"administrative_area_level_1\": 2,\r\n\t\t\t\t\t\t\t\"administrative_area_level_2\": 3,\r\n\t\t\t\t\t\t\t\"administrative_area_level_3\": 4,\r\n\t\t\t\t\t\t\t\"administrative_area_level_4\": 5,\r\n\t\t\t\t\t\t\t\"administrative_area_level_5\": 6,\r\n\t\t\t\t\t\t\t\"locality\": 7,\r\n\t\t\t\t\t\t\t\"route\": 8,\r\n\t\t\t\t\t\t\t\"postal_code\": 9,\r\n\t\t\t\t\t\t\t\"street_address\": 10\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t\tconst addressComponents = results[0].address_components;\r\n\t\t\t\t\t\tconst country = addressComponents.find(component => component.types.includes(\"country\"))?.short_name || 'N/A';\r\n\t\t\t\t\t\tconst province = addressComponents.find(component => component.types.includes(\"administrative_area_level_2\"))?.short_name || 'N/A';\r\n\t\t\t\t\t\tconst city = addressComponents.find(component => component.types.includes(\"administrative_area_level_3\"))?.short_name || 'N/A';\r\n\t\t\t\t\t\tconst areac = addressComponents.find(component => component.types.includes(\"administrative_area_level_1\"))?.short_name || 'N/A';\r\n\r\n\t\t\t\t\t\tvar shortn = '';\r\n\t\t\t\t\t\tfor (var i = addressComponents.length - 1; i >= 0; i--) {\r\n\t\t\t\t\t\t\tvar componente = addressComponents[i];\r\n\r\n\t\t\t\t\t\t\tfor (var j = 0; j < componente.types.length; j++) {\r\n\t\t\t\t\t\t\t\tif (ordinatiS[componente.types[j]]) {\r\n\t\t\t\t\t\t\t\t\ttipo = componente.types[j];\r\n\t\t\t\t\t\t\t\t\tshortn = componente.short_name;\r\n\t\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t// console.log('tipo ', tipo, '- short 1', shortn, '- country 1', country);\r\n\r\n\t\t\t\t\t\tlet response = await fetch(`/api/store-locator/by-coords?lat=${location.lat()}&lng=${location.lng()}&tipo=${tipo}&countrycode=${country}&provcode=${province}&citycode=${city}&areacode=${areac}&shortname=${shortn}`);\r\n\t\t\t\t\t\tstores = await response.json();\r\n\r\n\r\n\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\t//console.error('No results[0] or address_components in performSearch');\r\n\t\t\t\t\t\t// alert('Non è stato possibile trovare l\\'indirizzo inserito. Per favore, verifica e riprova.');\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\t\t\t\t} catch (error) {\r\n\t\t\t\t\tconsole.error('Error fetching store data:', error);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tstoresInRadius = stores.map((store) => {\r\n\t\t\t\t\tconst distance = calculateDistance(location.lat(), location.lng(), store.lat, store.lng);\r\n\t\t\t\t\treturn { ...store, distance };\r\n\t\t\t\t});\r\n\r\n\t\t\t\tstoresInRadius.sort((a, b) => {\r\n\t\t\t\t\tconst order = { 'store': 1, 'showroom': 2, 'agent': 3 };\r\n\t\t\t\t\tconst typeA = a.type.toLowerCase();\r\n\t\t\t\t\tconst typeB = b.type.toLowerCase();\r\n\t\t\t\t\treturn order[typeA] - order[typeB] || a.distance - b.distance;\r\n\t\t\t\t});\r\n\r\n\t\t\t\t// Limita i risultati a 10 se la ricerca è per indirizzo o CAP\r\n\t\t\t\tif (tipo === 'street_address' || tipo === 'postal_code') {\r\n\t\t\t\t\tstoresInRadius = storesInRadius.slice(0, 10);\r\n\t\t\t\t\t// console.log('Limited to 10 results for street_address or postal_code');\r\n\t\t\t\t}\r\n\r\n\t\t\t\tclearMarkers();\r\n\r\n\t\t\t\tmarkers = storesInRadius.map((store) => {\r\n\t\t\t\t\tconst marker = new google.maps.Marker({\r\n\t\t\t\t\t\tposition: { lat: store.lat, lng: store.lng },\r\n\t\t\t\t\t\tmap: map,\r\n\t\t\t\t\t\ttitle: store.name,\r\n\t\t\t\t\t\ticon: {\r\n\t\t\t\t\t\t\turl: '/img/pin.png',\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tid: `store-${store.id}`\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\taddMarkerClickListener(marker, store.id, store.name);\r\n\r\n\t\t\t\t\treturn marker;\r\n\t\t\t\t});\r\n\r\n\t\t\t\t// Rimuovo i marker dal clusterer precedente e aggiorno con i nuovi\r\n\t\t\t\tif (clusterer) {\r\n\t\t\t\t\tclusterer.clearMarkers();\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Ricrea il clusterer con i marker aggiornati\r\n\t\t\t\tclusterer = new MarkerClusterer({\r\n\t\t\t\t\tmap: map,\r\n\t\t\t\t\tmarkers: markers, // Aggiungi i nuovi marker\r\n\t\t\t\t\trenderer: {\r\n\t\t\t\t\t\trender({ count, position }) {\r\n\t\t\t\t\t\t\tconst svg = window.btoa(`\r\n \r\n \r\n \r\n `);\r\n\t\t\t\t\t\t\treturn new google.maps.Marker({\r\n\t\t\t\t\t\t\t\tposition,\r\n\t\t\t\t\t\t\t\ticon: {\r\n\t\t\t\t\t\t\t\t\turl: `data:image/svg+xml;base64,${svg}`,\r\n\t\t\t\t\t\t\t\t\tanchor: new google.maps.Point(24, 24),\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\tlabel: {\r\n\t\t\t\t\t\t\t\t\ttext: String(count),\r\n\t\t\t\t\t\t\t\t\tcolor: \"white\",\r\n\t\t\t\t\t\t\t\t\tfontSize: \"12px\",\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\tzIndex: Number(google.maps.Marker.MAX_ZINDEX) + count,\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\tlistStore.innerHTML = '';\r\n\t\t\t\tlistAgent.innerHTML = '';\r\n\r\n\t\t\t\tstoresInRadius.forEach((store) => {\r\n\t\t\t\t\tconst storeStatus = isStoreOpen(store);\r\n\t\t\t\t\tstore.storeStatus = storeStatus;\r\n\r\n\t\t\t\t\tconst today = new Date();\r\n\t\t\t\t\tconst dayInItalian = today.toLocaleDateString('it-IT', { weekday: 'long' }).toLowerCase();\r\n\r\n\t\t\t\t\t// Mappatura per abbreviare i giorni della settimana\r\n\t\t\t\t\tconst daysMap = {\r\n\t\t\t\t\t\t'domenica': 'Dom',\r\n\t\t\t\t\t\t'lunedì': 'Lun',\r\n\t\t\t\t\t\t'martedì': 'Mar',\r\n\t\t\t\t\t\t'mercoledì': 'Merc',\r\n\t\t\t\t\t\t'giovedì': 'Gio',\r\n\t\t\t\t\t\t'venerdì': 'Ven',\r\n\t\t\t\t\t\t'sabato': 'Sab'\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\tconst todayAbbreviated = daysMap[dayInItalian] || dayInItalian;\r\n\r\n\t\t\t\t\tlet hoursHtml = '';\r\n\t\t\t\t\tif (store.hours) {\r\n\t\t\t\t\t\tstore.hours.forEach(day => {\r\n\t\t\t\t\t\t\tconst dayAbbreviated = daysMap[day.day.trim().toLowerCase()] || day.day.trim();\r\n\t\t\t\t\t\t\tconst isToday = dayAbbreviated === todayAbbreviated ? 'highlight-today' : '';\r\n\r\n\t\t\t\t\t\t\tif (day.orari.length === 1 && day.orari[0].trim() === 'Chiuso') {\r\n\t\t\t\t\t\t\t\thoursHtml += `
  • ${dayAbbreviated}:
    ${window.storeLocatorSettings.localizedStrings.LBL_ORARIO_CHIUSO}
  • `;\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\thoursHtml += `
  • \r\n
    ${dayAbbreviated}
    \r\n
    ${day.orari.join(' / ')}
    \r\n
  • `;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tconst storeItem = document.createElement('li');\r\n\t\t\t\t\tstoreItem.id = `store-${store.id}`;\r\n\t\t\t\t\tstoreItem.dataset.markerId = `store-${store.id}`;\r\n\r\n\t\t\t\t\tvar nomeContenuto = \"\";\r\n\t\t\t\t\tvar prov = window.data.provinciaGA4;\r\n\r\n\t\t\t\t\tif (prov && !window.data.searchByTextBox)\r\n\t\t\t\t\t\tnomeContenuto = store.name.replace(/'/g, \"`\") + \"_\" + prov;\r\n\t\t\t\t\telse\r\n\t\t\t\t\t\tnomeContenuto = store.name.replace(/'/g, \"`\") + \"_-\";\r\n\r\n\t\t\t\t\tconst directionsUrl = `https://www.google.com/maps/dir/?api=1&destination=${store.lat},${store.lng}`;\r\n\r\n\r\n\t\t\t\t\tstoreItem.innerHTML = `\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t
    ${store.name}
    \r\n\t\t\t\t\t\t\t\t
    ${store.distance.toFixed(2)} km
    \r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t
      \r\n\t\t\t\t\t\t\t\t\t\t
    • \r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t${store.address} - ${store.city}\r\n\t\t\t\t\t\t\t\t\t\t
    • \r\n\t\t\t\t\t\t\t\t\t\t${hoursHtml ? `\r\n\t\t\t\t\t\t\t\t\t\t
    • \r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t
      \r\n\t\t\t\t\t\t\t\t\t\t\t\t
      \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t${storeStatus.status}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t${storeStatus.status === `${window.storeLocatorSettings.localizedStrings.LBL_ORARIO_APERTO}` ? ` · ${window.storeLocatorSettings.localizedStrings.LBL_ORARIO_CHIUDE_A} ${storeStatus.closesAt}` : storeStatus.nextOpen ? ` · ${window.storeLocatorSettings.localizedStrings.LBL_ORARIO_APRE_A} ${storeStatus.nextOpen}` : ''}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t
      \r\n\t\t\t\t\t\t\t\t\t\t\t\t
        \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t${hoursHtml}\r\n\t\t\t\t\t\t\t\t\t\t\t\t
      \r\n\t\t\t\t\t\t\t\t\t\t\t
      \r\n\t\t\t\t\t\t\t\t\t\t
    • ` : ''}\r\n\t\t\t\t\t\t\t\t\t\t${store.phone ? `\r\n\t\t\t\t\t\t\t\t\t\t
    • \r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t${store.phone}\r\n\t\t\t\t\t\t\t\t\t\t
    • ` : ''}\r\n\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t${window.storeLocatorSettings.localizedStrings.LBL_RAGGIUNGERE_STORE}\r\n\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t${window.storeLocatorSettings.localizedStrings.LBL_CONTATTA_STORE}\r\n\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t`;\r\n\r\n\r\n\t\t\t\t\tstoreItem.addEventListener('click', () => {\r\n\t\t\t\t\t\tconst markerId = storeItem.dataset.markerId;\r\n\t\t\t\t\t\tconst marker = markers.find(m => m.id === markerId);\r\n\r\n\t\t\t\t\t\tif (marker) {\r\n\t\t\t\t\t\t\tdisplayInfoWindow(marker, store); // Apre l'infoWindow sul marker corrispondente\r\n\t\t\t\t\t\t\tinfoWindow.open(map, marker); // Mostra l'infoWindow\r\n\t\t\t\t\t\t\tmap.setCenter(marker.getPosition()); // Centra la mappa sul marker\r\n\r\n\t\t\t\t\t\t\tdocument.querySelectorAll('.listStore li').forEach(el => el.classList.remove('active'));\r\n\t\t\t\t\t\t\tstoreItem.classList.add('active');\r\n\t\t\t\t\t\t\tstoreItem.scrollIntoView({ behavior: 'smooth', block: 'center' });\r\n\t\t\t\t\t\t\tchangeMarkerIcon(marker);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\r\n\r\n\t\t\t\t\tlistStore.appendChild(storeItem);\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif (storesInRadius.length === 0) {\r\n\t\t\t\t\tstoreFilters.style.display = 'none';\r\n\t\t\t\t\tnoStore.style.display = 'block';\r\n\t\t\t\t\tmap.setZoom(14);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tstoreFilters.style.display = 'block';\r\n\t\t\t\t\tnoStore.style.display = 'none';\r\n\t\t\t\t}\r\n\r\n\t\t\t\tstoreFilters.querySelector('span').textContent = storesInRadius.length;\r\n\r\n\t\t\t\tconst geocoder = new google.maps.Geocoder();\r\n\t\t\t\tconst address = document.querySelector('.search-input').value;\r\n\t\t\t\tgeocoder.geocode({ address: addressForGeocoder(address) }, async (results, status) => {\r\n\t\t\t\t\tif (status === 'OK' && results[0]) {\r\n\t\t\t\t\t\tconst ordinatiA = {\r\n\t\t\t\t\t\t\t\"country\": 1,\r\n\t\t\t\t\t\t\t\"administrative_area_level_1\": 2,\r\n\t\t\t\t\t\t\t\"administrative_area_level_2\": 3,\r\n\t\t\t\t\t\t\t\"administrative_area_level_3\": 4,\r\n\t\t\t\t\t\t\t\"administrative_area_level_4\": 5,\r\n\t\t\t\t\t\t\t\"administrative_area_level_5\": 6,\r\n\t\t\t\t\t\t\t\"locality\": 7,\r\n\t\t\t\t\t\t\t\"route\": 8,\r\n\t\t\t\t\t\t\t\"postal_code\": 9\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t\tconst addressComponents = results[0].address_components;\r\n\t\t\t\t\t\tconst country = addressComponents.find(component => component.types.includes(\"country\"))?.short_name || 'N/A';\r\n\t\t\t\t\t\tconst province = addressComponents.find(component => component.types.includes(\"administrative_area_level_2\"))?.short_name || 'N/A';\r\n\t\t\t\t\t\tconst city = addressComponents.find(component => component.types.includes(\"administrative_area_level_3\"))?.short_name || 'N/A';\r\n\t\t\t\t\t\tconst areac = addressComponents.find(component => component.types.includes(\"administrative_area_level_1\"))?.short_name || 'N/A';\r\n\r\n\t\t\t\t\t\tvar tipo = ''; var shortn = '';\r\n\t\t\t\t\t\tfor (var i = addressComponents.length - 1; i >= 0; i--) {\r\n\t\t\t\t\t\t\tvar componente = addressComponents[i];\r\n\r\n\t\t\t\t\t\t\tfor (var j = 0; j < componente.types.length; j++) {\r\n\t\t\t\t\t\t\t\tif (ordinatiA[componente.types[j]]) {\r\n\t\t\t\t\t\t\t\t\ttipo = componente.types[j];\r\n\t\t\t\t\t\t\t\t\tshortn = componente.short_name;\r\n\t\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t// console.log('tipo ', tipo, ' - short 2 ', shortn);\r\n\r\n\t\t\t\t\t\tconst agents = await fetchAgentsData(tipo, country, province, city, areac, shortn);\r\n\r\n\t\t\t\t\t\tif (agents.length > 0) {\r\n\t\t\t\t\t\t\tagents.forEach(agent => {\r\n\t\t\t\t\t\t\t\tconst agentItem = document.createElement('li');\r\n\t\t\t\t\t\t\t\tagentItem.classList.add('agent');\r\n\r\n\t\t\t\t\t\t\t\tvar nomeContenuto = agent.nameWebRanking.replace(/'/g, \"`\");\r\n\t\t\t\t\t\t\t\tvar prov = window.data.provinciaGA4;\r\n\t\t\t\t\t\t\t\tif (!prov || window.data.searchByTextBox)\r\n\t\t\t\t\t\t\t\t\tnomeContenuto += \"_-\";\r\n\r\n\t\t\t\t\t\t\t\tagentItem.innerHTML = `\r\n
    ${window.storeLocatorSettings.localizedStrings.LBL_AGENTE_ZONA}
    \r\n
    \r\n
    \r\n
    ${agent.name}
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n `;\r\n\t\t\t\t\t\t\t\tlistAgent.appendChild(agentItem);\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\tconst bounds = new google.maps.LatLngBounds();\r\n\t\t\t\tmarkers.forEach(marker => bounds.extend(marker.getPosition()));\r\n\t\t\t\tif (markers.length > 0) {\r\n\t\t\t\t\tmap.fitBounds(bounds);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tloader.style.display = 'none';\r\n\r\n\t\t\t\tconst mapSection = document.querySelector('.section--map-store-locator');\r\n\t\t\t\tif (mapSection) {\r\n\t\t\t\t\tconst headerHeight = 100;\r\n\t\t\t\t\tconst scrollPosition = mapSection.offsetTop - headerHeight;\r\n\t\t\t\t\twindow.scrollTo({ top: scrollPosition, behavior: 'smooth' });\r\n\t\t\t\t}\r\n\t\t\t} catch (error) {\r\n\t\t\t\tconsole.error('Error performing search:', error);\r\n\t\t\t} finally {\r\n\t\t\t\tsearchExecuted = false; // Resetta la variabile di stato per consentire nuove ricerche in futuro\r\n\t\t\t\t// console.log(\"Search completed. Search executed reset to false.\");\r\n\r\n\t\t\t}\r\n\t\t}\r\n\r\n\r\n\r\n\t\tconst searchInputs = document.querySelectorAll('.search-input');\r\n\t\tsearchInputs.forEach(input => {\r\n\t\t\tinput.addEventListener('input', (e) => {\r\n\t\t\t\tsearchInputs.forEach(syncInput => {\r\n\t\t\t\t\tif (syncInput !== e.target) {\r\n\t\t\t\t\t\tsyncInput.value = e.target.value;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t});\r\n\r\n\r\n\t\t// Evento di click sul pulsante di ricerca\r\n\t\tdocument.querySelectorAll('.btn--search').forEach(button => {\r\n\t\t\tbutton.addEventListener('click', (e) => {\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\tsearch();\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\t// Evento per la pressione di Invio sul campo di input\r\n\t\tdocument.querySelectorAll('.search-input').forEach(input => {\r\n\t\t\tinput.addEventListener('keydown', function (e) {\r\n\t\t\t\tif (e.key === 'Enter') {\r\n\t\t\t\t\te.preventDefault();\r\n\r\n\t\t\t\t\t// Avvia un timeout per chiamare search() dopo un breve intervallo\r\n\t\t\t\t\tsearchTimeout = setTimeout(function () {\r\n\t\t\t\t\t\tconst place = autocomplete.getPlace();\r\n\t\t\t\t\t\tif (place && place.geometry) {\r\n\t\t\t\t\t\t\t// Un suggerimento è stato selezionato; 'place_changed' gestirà l'evento\r\n\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t// Nessun suggerimento selezionato; procedi con search()\r\n\t\t\t\t\t\t\tsearch();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}, 200); // Regola il delay se necessario\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\tdocument.querySelectorAll('.btn--myPosition').forEach(button => {\r\n\t\t\tbutton.addEventListener('click', (e) => {\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\tconst locale = detectLocale();\r\n\t\t\t\tconst { country: siteCountry } = getCountryAndCenter(locale);\r\n\t\t\t\tif (navigator.geolocation) {\r\n\t\t\t\t\tnavigator.geolocation.getCurrentPosition(async (position) => {\r\n\t\t\t\t\t\tconst location = new google.maps.LatLng(position.coords.latitude, position.coords.longitude);\r\n\t\t\t\t\t\tconst geocoder = new google.maps.Geocoder();\r\n\t\t\t\t\t\tgeocoder.geocode({ location }, async (results, status) => {\r\n\t\t\t\t\t\t\tif (status === 'OK' && results[0]) {\r\n\r\n\t\t\t\t\t\t\t\tvar prov = window.data.provinciaGA4;\r\n\r\n\t\t\t\t\t\t\t\tif (window.data.provinciaGA4 == \"\" || window.data.searchByTextBox)\r\n\t\t\t\t\t\t\t\t\tprov = \"-\";\r\n\r\n\t\t\t\t\t\t\t\tstoreLocatorFindPosition(prov, results[0].formatted_address);\r\n\r\n\t\t\t\t\t\t\t\tconst userCountry = results[0].address_components.find(component => component.types.includes(\"country\")).short_name;\r\n\t\t\t\t\t\t\t\tif (userCountry === siteCountry) {\r\n\t\t\t\t\t\t\t\t\tsearchInputs.forEach(input => {\r\n\t\t\t\t\t\t\t\t\t\tinput.value = results[0].formatted_address;\r\n\t\t\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\t\t\t\t// Aggiorna le coordinate di ricerca con quelle dell'utente\r\n\t\t\t\t\t\t\t\t\tsearchLocationLat = position.coords.latitude;\r\n\t\t\t\t\t\t\t\t\tsearchLocationLng = position.coords.longitude;\r\n\t\t\t\t\t\t\t\t\t// console.log(`Updated coordinates from My Position: Lat ${searchLocationLat}, Lng ${searchLocationLng}`);\r\n\r\n\t\t\t\t\t\t\t\t\tawait performSearch(location, results);\r\n\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\tclearMarkers(); // Rimuove i marker se i paesi non corrispondono\r\n\t\t\t\t\t\t\t\t\tmap.setCenter(location); // Centra la mappa sulla posizione dell'utente\r\n\t\t\t\t\t\t\t\t\tmap.setZoom(10); // Regola il livello di zoom\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}, (error) => {\r\n\t\t\t\t\t\talert('Errore nella geolocalizzazione: ' + error.message);\r\n\t\t\t\t\t});\r\n\t\t\t\t} else {\r\n\t\t\t\t\talert('La geolocalizzazione non è supportata dal tuo browser.');\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\tdocument.querySelector('.listStore').addEventListener('click', (e) => {\r\n\t\t\tif (e.target.closest('.wrap-today')) {\r\n\t\t\t\ttoggleWeekActive(e);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tconst province = window.data.provincia;// getProvinceFromUrl();\r\n\t\tif (province) {\r\n\t\t\tconst searchInput = document.querySelector('.search-input');\r\n\t\t\tsearchInput.value = province;\r\n\t\t\tconst event = new Event('input', { bubbles: true });\r\n\t\t\tsearchInput.dispatchEvent(event);\r\n\t\t\t// skipGA4Event = true; // Imposta il flag per saltare l'evento GA4\r\n\t\t\tconst searchButton = document.querySelector('.btn--search');\r\n\t\t\tsearch(true);\r\n\t\t\t//searchButton.click();\r\n\t\t\t//window.data.searchByTextBox = true;\r\n\t\t}\r\n\r\n\t\t// Scorre tutte le province per gestire l'evento GA4\r\n\t\t//var provList = $('ul.provList>li a');\r\n\t\t//$.each(provList, function (index, node) {\r\n\t\t//\t$(this).on(\"click\", function () {\r\n\t\t//\t\tstoreLocatorProvince($(this).data(\"title\"));\r\n\t\t//\t});\r\n\t\t//})\r\n\r\n\t\tdocument.querySelector('.btn--contattaci').addEventListener('click', (e) => {\r\n\r\n\t\t\tvar prov = \"-\";\r\n\t\t\tif (window.data.provinciaGA4 && !window.data.searchByTextBox)\r\n\t\t\t\tprov = window.data.provinciaGA4;\r\n\r\n\t\t\tstoreLocatorInteractions('store', 'richiedi_appuntamento', prov);\r\n\t\t});\r\n\r\n\t\t// Funzione per l'evento GA4\r\n\t\tfunction triggerGA4Event() {\r\n\t\t\tconst address = document.querySelector('.search-input').value;\r\n\t\t\tconst prov = window.data.provinciaGA4 || \"-\";\r\n\r\n\t\t\tvar position = \"search_bar\";\r\n\t\t\tif (!window.data.searchByTextBox && prov != \"-\")\r\n\t\t\t\tposition = \"listing_province\";\r\n\r\n\t\t\tstoreLocatorSearch(address, prov, position);\r\n\t\t}\r\n\r\n\t\tfunction search(fromProv) {\r\n\t\t\tif (fromProv)\r\n\t\t\t\twindow.data.searchByTextBox = false;\r\n\t\t\telse\r\n\t\t\t\twindow.data.searchByTextBox = true;\r\n\r\n\t\t\tconst address = document.querySelector('.search-input').value;\r\n\t\t\tif (!address) return;\r\n\t\t\tconst locale = detectLocale();\r\n\t\t\tconst { country } = getCountryAndCenter(locale);\r\n\t\t\tif (address) {\r\n\t\t\t\tif (!skipGA4Event) {\r\n\t\t\t\t\tvar prov = window.data.provinciaGA4;\r\n\t\t\t\t\tvar label = prov && fromProv ? prov : \"-\";\r\n\r\n\t\t\t\t\tif (typeof fromProv === 'undefined' && prov)\r\n\t\t\t\t\t\tlabel = address;\r\n\t\t\t\t\t\r\n\t\t\t\t\tvar position = \"search_bar\";\r\n\t\t\t\t\tif (!window.data.searchByTextBox && fromProv)\r\n\t\t\t\t\t\tposition = \"listing_province\";\r\n\r\n\t\t\t\t\tif (fromProv) {\r\n\t\t\t\t\t\tstoreLocatorProvince(prov);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tstoreLocatorSearch(address, label, position);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tskipGA4Event = false; // Resetting flag after GA4 event\r\n\t\t\t\tconst geocoder = new google.maps.Geocoder();\r\n\t\t\t\tgeocoder.geocode({ address: addressForGeocoder(address) }, async (results, status) => {\r\n\t\t\t\t\tif (status === 'OK') {\r\n\t\t\t\t\t\tconst location = results[0].geometry.location;\r\n\t\t\t\t\t\tsearchLocationLat = location.lat();\r\n\t\t\t\t\t\tsearchLocationLng = location.lng();\r\n\t\t\t\t\t\tawait performSearch(location, results);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t\tskipGA4Event = false; // Reset flag after search\r\n\r\n\t\t\t}\r\n\t\t}\r\n\r\n\r\n\t}\r\n\r\n\tfunction openAgentForm(agentID) {\r\n\t\tconst agentForm = document.getElementById('agent-form');\r\n\t\tagentForm.setAttribute('data-agent-id', agentID);\r\n\t}\r\n\r\n\tasync function onSubmitAgent() {\r\n\t\tconst form = document.getElementById('form-agente');\r\n\t\tconst formData = new FormData(form);\r\n\t\tconst recaptchaToken = grecaptcha.getResponse();\r\n\r\n\t\tconst agentID = $('#form-agente').data('agent-id') || '';\r\n\r\n\t\tformData.set('TypeContact', 'agent');\r\n\t\tformData.set('agentID', agentID);\r\n\r\n\t\tconst model = {\r\n\t\t\tCaptcha: recaptchaToken,\r\n\t\t\tNome: formData.get('Nome') || '',\r\n\t\t\tCognome: formData.get('Cognome') || '',\r\n\t\t\tEmail: formData.get('Email') || '',\r\n\t\t\tNazione: formData.get('Nazione') || '',\r\n\t\t\tCitta: formData.get('Citta') || '',\r\n\t\t\tCountry: formData.get('Country') || '',\r\n\t\t\tMessaggio: formData.get('Messaggio') || '',\r\n\t\t\tPrivacy: formData.get('Privacy') === 'on',\r\n\t\t\tNewsletter: formData.get('Newsletter') === 'on',\r\n\t\t\tTypeContact: formData.get('TypeContact') || '',\r\n\t\t\tagentID: formData.get('agentID') || ''\r\n\t\t};\r\n\r\n\t\tconst data = {\r\n\t\t\tdata: model\r\n\t\t};\r\n\r\n\t\t// console.log('Model:', model);\r\n\r\n\t\ttry {\r\n\t\t\tconst response = await fetch('/WS/wsUsers.asmx/ContactStore', {\r\n\t\t\t\tmethod: 'POST',\r\n\t\t\t\theaders: {\r\n\t\t\t\t\t'Content-Type': 'application/json'\r\n\t\t\t\t},\r\n\t\t\t\tbody: JSON.stringify(data)\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\t//if (!response.ok) {\r\n\t\t\t//\tthrow new Error('Network response was not ok ' + response.statusText);\r\n\t\t\t//}\r\n\r\n\t\t\tconst responseData = await response.json();\r\n\t\t\t// console.log('Success:', responseData);\r\n\r\n\t\t\tif (responseData.d.Status) {\r\n\t\t\t\tdocument.getElementById('thank-you-message').style.display = 'block';\r\n\t\t\t\tdocument.getElementById('form-agente').style.display = 'none';\r\n\t\t\t\tdocument.getElementById('storeInfo').style.display = 'none';\r\n\t\t\t\tdocument.getElementById('titleModal').style.display = 'none';\r\n\r\n\t\t\t\tvar storeAgentName = responseData.d.Props.StoreAgentName.replace(/'/g, \"`\");\r\n\r\n\t\t\t\tvar prov = window.data.provinciaGA4;\r\n\t\t\t\tif (prov && !window.data.searchByTextBox)\r\n\t\t\t\t\tstoreAgentName += \"_\" + prov;\r\n\t\t\t\telse\r\n\t\t\t\t\tstoreAgentName += \"_-\";\r\n\r\n\t\t\t\t// Gestione evento GA\r\n\t\t\t\tstoreLocatorRequestSent(storeAgentName);\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\talert(responseData.d.HTML);\r\n\t\t\t}\t\t\t\r\n\r\n\t\t} catch (error) {\r\n\t\t\t\r\n\t\t\t// console.error('There has been a problem with your fetch operation:', error);\r\n\t\t\talert('There was an error submitting the form. Please try again later.');\r\n\t\t}\r\n\t}\r\n\r\n\tfunction resetForm() {\r\n\t\tdocument.getElementById('form-agente').reset();\r\n\t\tdocument.getElementById('thank-you-message').style.display = 'none';\r\n\t\tdocument.getElementById('form-agente').style.display = 'block';\r\n\t\tdocument.getElementById('storeInfo').style.display = 'block';\r\n\t\tdocument.getElementById('titleModal').style.display = 'block';\r\n\t}\r\n\r\n\tfunction toggleWrapMap() {\r\n\t\tconst wrapMap = document.querySelector('.wrap-map');\r\n\t\tconst mapToggle = document.querySelector('.showMap input[type=\"checkbox\"]');\r\n\r\n\t\tmapToggle.addEventListener('change', function () {\r\n\t\t\tif (mapToggle.checked) {\r\n\t\t\t\twrapMap.style.display = 'block';\r\n\t\t\t} else {\r\n\t\t\t\twrapMap.style.display = 'none';\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tfunction scrollToMap() {\r\n\t\tconst btnTop = document.querySelector('.btn-top');\r\n\t\tif (btnTop) {\r\n\t\t\tbtnTop.addEventListener('click', (e) => {\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\tconst wrapMap = document.querySelector('.wrap-map');\r\n\t\t\t\tif (wrapMap) {\r\n\t\t\t\t\twrapMap.scrollIntoView({ behavior: 'smooth', block: 'center' });\r\n\t\t\t\t}\r\n\t\t\t\tbtnTop.classList.remove('visible');\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tfunction observeMapVisibility() {\r\n\t\tconst listStore = document.querySelector('.listStore');\r\n\t\tconst btnTop = document.querySelector('.btn-top');\r\n\r\n\t\tconst observer = new IntersectionObserver((entries) => {\r\n\t\t\tentries.forEach(entry => {\r\n\t\t\t\tif (entry.isIntersecting) {\r\n\t\t\t\t\t// Se listStore è visibile, mostra il pulsante btn-top\r\n\t\t\t\t\tbtnTop.style.display = 'block';\r\n\t\t\t\t} else {\r\n\t\t\t\t\t// Se listStore non è visibile, nascondi il pulsante btn-top\r\n\t\t\t\t\tbtnTop.style.display = 'none';\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}, {\r\n\t\t\troot: null,\r\n\t\t\tthreshold: 0.1 // Attiva quando almeno il 10% di listStore è visibile\r\n\t\t});\r\n\r\n\t\t// Osserva l'elemento listStore\r\n\t\tif (listStore) {\r\n\t\t\tobserver.observe(listStore);\r\n\t\t}\r\n\t}\r\n\r\n\tfunction addressForGeocoder(address) {\r\n\t\tlet addressToSearch = address;\r\n\r\n\t\t// La mappa per Cotto d'este è impostata sempre su lingua EN.\r\n\t\t// Questo impedisce di trovare risultati quando si cerca solo il CAP.\r\n\t\t//\r\n\t\t// Questa modifica quando sto in Italiano e cerco una sola parola\r\n\t\t// aggiunge \"Italy\" alla ricerca.\r\n\t\t// (Aiuta per la ricerca del cap, ma dovebbre essere utile anche per i nomi di città)\r\n\t\tif (!(addressToSearch + \"\").match(\" \")) {\r\n\t\t\tconst locale = detectLocale();\r\n\t\t\tconst { country } = getCountryAndCenter(locale);\r\n\t\t\tif (country === \"IT\")\r\n\t\t\t\taddressToSearch += \", Italy\";\r\n\t\t}\r\n\r\n\t\treturn addressToSearch;\r\n\t}\r\n\t$(document).ready(function () {\r\n\t\tthis.labels = window.labels || {\r\n\t\t\tapproximately: window.storeLocatorSettings.localizedStrings.LBL_DISTANZA_STORE,\r\n\t\t\traggiungiStore: window.storeLocatorSettings.localizedStrings.LBL_RAGGIUNGERE_STORE,\r\n\t\t\tcontactStore: window.storeLocatorSettings.localizedStrings.LBL_CONTATTA_STORE,\r\n\t\t\tcontactAgent: window.storeLocatorSettings.localizedStrings.LBL_CONTATTA_AGENTE,\r\n\t\t\tagenteZona: window.storeLocatorSettings.localizedStrings.LBL_AGENTE_ZONA\r\n\t\t};\r\n\t\t$(document).on('click', '.linkFancyAgent', function () {\r\n\t\t\tconst encodedAgentData = $(this).data('agent');\r\n\t\t\tif (encodedAgentData) {\r\n\t\t\t\tconst agentData = JSON.parse(decodeURIComponent(encodedAgentData));\r\n\r\n\t\t\t\t//console.log(agentData);\r\n\r\n\t\t\t\tconst agentInfo = `\r\n\t\t\t\t\t
    ${window.storeLocatorSettings.localizedStrings.LBL_AGENTE_ZONA}
    \r\n\t\t\t\t\t
    ${agentData.name}
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t${agentData.phone}\r\n\t\t\t\t\t
    \r\n\t\t\t\t`;\r\n\t\t\t\t$('#agent-form .store-info').html(agentInfo);\r\n\t\t\t\t$('#form-agente').data('agent-id', agentData.id);\r\n\t\t\t} else {\r\n\t\t\t\t// console.log('Agent data not found');\r\n\t\t\t}\r\n\t\t\t$.fancybox.open({\r\n\t\t\t\tsrc: '#agent-form',\r\n\t\t\t\ttype: 'inline',\r\n\t\t\t\topts: {\r\n\t\t\t\t\ttouch: false, // Disattiva lo scrolling\r\n\t\t\t\t\tafterShow: function (instance, current) {\r\n\t\t\t\t\t\t// console.info('Fancybox displayed.');\r\n\t\t\t\t\t},\r\n\t\t\t\t\tafterClose: function (instance, current) {\r\n\t\t\t\t\t\t// console.info('Fancybox closed.');\r\n\t\t\t\t\t\tresetForm();\r\n\t\t\t\t\t},\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\t$(document).on('click', '.close-fancybox', function (event) {\r\n\t\t\tevent.preventDefault();\r\n\t\t\t$.fancybox.close();\r\n\t\t});\r\n\r\n\t\t$('#Nazione').on('change', function () {\r\n\t\t\tif (this.value == 204) {\r\n\r\n\t\t\t\tdocument.getElementById('divCountry').style.display = 'block';\r\n\t\t\t} else {\r\n\t\t\t\tdocument.getElementById('divCountry').style.display = 'none';\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t$('#form-agente').on('submit', function (event) {\r\n\t\t\tevent.preventDefault();\r\n\t\t\tonSubmitAgent();\r\n\t\t});\r\n\t});\r\n\r\n\tdocument.addEventListener('DOMContentLoaded', function () {\r\n\t\tloadGoogleMapsAPI();\r\n\t\ttoggleWrapMap();\r\n\t\tscrollToMap();\r\n\t\tobserveMapVisibility();\r\n\t});\r\n\r\n\twindow.initMap = initMap;\r\n}\r\n"],"names":["SuperCluster","equal","undefined","map","activeMarker","markers","clusterer","searchLocationLat","searchLocationLng","searchExecuted","infoWindow","stores","skipGA4Event","searchTimeout","loadGoogleMapsAPI","window","storeLocatorSettings","apiKey","IS_DEV","Promise","resolve","reject","script","document","createElement","locale","detectLocale","src","async","defer","onload","onerror","head","appendChild","loadMapStyle","_loadMapStyle","apply","arguments","_asyncToGenerator","_regeneratorRuntime","mark","_callee","response","wrap","_callee$","_context","prev","next","fetch","sent","json","abrupt","t0","stop","displayInfoWindow","marker","store","close","distance","calculateDistance","lat","lng","hoursHtml","storeStatus","isStoreOpen","todayAbbreviation","Date","toLocaleDateString","weekday","toLowerCase","hours","forEach","day","dayName","trim","isToday","orari","length","localizedStrings","LBL_ORARIO_CHIUSO","join","directionsUrl","getPosition","nomeSt","name","replaceAll","replace","data","provinciaGA4","searchByTextBox","nomeContenuto","contentString","toFixed","address","city","status","LBL_ORARIO_APERTO","LBL_ORARIO_CHIUDE_A","closesAt","nextOpen","LBL_ORARIO_APRE_A","phone","google","maps","InfoWindow","content","event","addListener","open","addListenerOnce","wrapTodayInInfoWindow","querySelector","addEventListener","toggleWeekActive","addMarkerClickListener","storeId","storeName","find","s","id","storeElement","getElementById","scrollIntoView","behavior","block","querySelectorAll","el","classList","remove","add","changeMarkerIcon","setCenter","prov","storeLocatorInteractions","btnTop","setIcon","url","clearMarkers","setMap","fetchStoreData","_x","_fetchStoreData","_callee2","_getCountryAndCenter2","country","filteredStores","customIcon","renderer","_callee2$","_context2","getCountryAndCenter","filter","position","isNaN","Marker","title","icon","render","_ref","count","svg","btoa","anchor","Point","label","text","String","color","fontSize","zIndex","Number","MAX_ZINDEX","MarkerClusterer","console","error","fetchAgentsData","_x2","_x3","_x4","_x5","_x6","_x7","_fetchAgentsData","_callee3","tipo","countrycode","province","areac","shortn","_callee3$","_context3","agent","nameWebRanking","lat1","lng1","lat2","lng2","R","dLat","Math","PI","dLng","a","sin","cos","c","atan2","sqrt","_store$hours","today","daysMapAbbreviated","dayInItalian","toLocaleString","timeZone","dayAbbreviation","hoursData","h","getNextOpeningTime","options","hour12","hour","minute","timeInRomeString","toLocaleTimeString","_timeInRomeString$spl","split","currentHour","currentMinute","nowInMinutes","nextOpenTime","_iterator","_createForOfIteratorHelperLoose","_step","done","orario","value","_orario$split$map","time","openTime","closeTime","test","_openTime$split$map","openHour","openMinute","_closeTime$split$map","closeHour","closeMinute","openInMinutes","closeInMinutes","toString","padStart","nextOpenHour","floor","nextOpenMinute","currentDate","Array","isArray","dayIndex","getDay","_loop","nextDayAbbreviation","nextDayData","_nextDayData$orari$0$","v","_ret","i","wrapTodayElement","target","closest","todayElement","weekList","contains","toggle","metaTags","getElementsByTagName","getAttribute","mapSettings","it_IT","center","fr_FR","de_DE","de_AT","nl_BE","de_CH","fr_CH","initMap","_initMap","_callee11","loader","wrapMap","mapStyle","_getCountryAndCenter3","autocompleteInput","autocomplete","observer","performSearch","_performSearch","searchInputs","searchInput","searchButton","triggerGA4Event","search","_callee11$","_context11","_search","fromProv","_getCountryAndCenter5","storeLocatorProvince","storeLocatorSearch","geocoder","Geocoder","geocode","addressForGeocoder","_ref6","_callee8","results","location","_callee8$","_context8","geometry","_x13","_x14","_triggerGA4Event","_performSearch3","_callee10","wrapResults","formTop","formBottom","listStore","listAgent","storeFilters","noStore","mapOverlay","textOverlay","storesInRadius","_stores","_addressComponents$fi","_addressComponents$fi2","_addressComponents$fi3","_addressComponents$fi4","ordinatiS","addressComponents","_country","_province","componente","j","bounds","mapSection","headerHeight","scrollPosition","_callee10$","_context10","style","display","address_components","component","types","includes","short_name","_objectSpread","sort","b","order","typeA","type","typeB","slice","_ref7","innerHTML","daysMap","todayAbbreviated","dayAbbreviated","storeItem","dataset","markerId","name4GA","descrizioneProvincia","LBL_RAGGIUNGERE_STORE","email","LBL_CONTATTA_STORE","m","setZoom","textContent","_ref8","_callee9","_addressComponents$fi5","_addressComponents$fi6","_addressComponents$fi7","_addressComponents$fi8","ordinatiA","_addressComponents","_country2","_province2","_city","_areac","agents","_callee9$","_context9","agentItem","LBL_AGENTE_ZONA","encodeURIComponent","JSON","stringify","LBL_CONTATTA_AGENTE","_x15","_x16","LatLngBounds","extend","fitBounds","offsetTop","scrollTo","top","t1","finish","_performSearch2","_x8","_x9","Map","zoom","styles","places","Autocomplete","MutationObserver","autocompleteContainer","_callee4","place","_callee4$","_context4","getPlace","observe","body","childList","subtree","_callee5","_callee5$","_context5","clearTimeout","input","e","syncInput","button","preventDefault","key","setTimeout","_getCountryAndCenter4","siteCountry","navigator","geolocation","getCurrentPosition","_ref4","_callee7","_callee7$","_context7","LatLng","coords","latitude","longitude","_ref5","_callee6","userCountry","_callee6$","_context6","storeLocatorFindPosition","formatted_address","_x11","_x12","_x10","alert","message","provincia","Event","bubbles","dispatchEvent","onSubmitAgent","_onSubmitAgent","_callee12","form","formData","recaptchaToken","agentID","model","responseData","storeAgentName","_callee12$","_context12","FormData","grecaptcha","getResponse","$","set","Captcha","Nome","get","Cognome","Email","Nazione","Citta","Country","Messaggio","Privacy","Newsletter","TypeContact","method","headers","d","Status","Props","StoreAgentName","storeLocatorRequestSent","HTML","resetForm","reset","toggleWrapMap","mapToggle","checked","scrollToMap","observeMapVisibility","IntersectionObserver","entries","entry","isIntersecting","root","threshold","addressToSearch","match","_getCountryAndCenter","ready","labels","approximately","LBL_DISTANZA_STORE","raggiungiStore","contactStore","contactAgent","agenteZona","on","encodedAgentData","agentData","parse","decodeURIComponent","agentInfo","html","fancybox","opts","touch","afterShow","instance","current","afterClose"],"mappings":"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"}