{ "version": 3, "sources": ["../../node_modules/@googlemaps/js-api-loader/node_modules/fast-deep-equal/index.js", "../../node_modules/@googlemaps/js-api-loader/src/index.ts", "../../src/js/map.ts"], "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", null, "import { Loader } from '@googlemaps/js-api-loader'\n\ntype AdvancedMarkerView = google.maps.marker.AdvancedMarkerView\n\ndeclare global {\n\tinterface Window {\n\t\t_avnMapData: {\n\t\t\tstates: State[]\n\t\t\tlocations: Location[]\n\t\t}\n\t}\n}\n\ntype State = {\n\tcode: string\n\tposition: google.maps.LatLngLiteral\n}\n\ntype Location = {\n\tname: string\n\ttype: string\n\tposition: google.maps.LatLngLiteral\n\tcode: string\n}\n\ntype LocationMarker = {\n\tmarker: AdvancedMarkerView\n\tlocation: Location\n}\n\ntype StateMarker = {\n\tmarker: AdvancedMarkerView\n\tstate: State\n}\n\nconst mapEl = document.getElementById('map')\nif (mapEl) {\n\tconst loader = new Loader({\n\t\tapiKey: 'AIzaSyDR4WWv0JRi-RrfqxpMsJPOIdT-0cSb3o0&',\n\t\tversion: 'beta',\n\t\tlibraries: ['marker'],\n\t})\n\n\tloader.load().then((google) => main(google, mapEl))\n}\n\nasync function main(google: typeof globalThis.google, mapEl: HTMLElement) {\n\tconst { AdvancedMarkerView } = google.maps.marker\n\n\tconst { states, locations } = window._avnMapData\n\n\t// const collisionBehavior =\n\t// \tgoogle.maps.CollisionBehavior.OPTIONAL_AND_HIDES_LOWER_PRIORITY\n\n\tconst map = new google.maps.Map(mapEl, {\n\t\tzoom: 3,\n\t\tcenter: {\n\t\t\tlat: 31.35543,\n\t\t\tlng: 2.60372,\n\t\t},\n\t\tmapId: 'ae34ec08c6ca9c09',\n\t\tstreetViewControl: false,\n\t\tmapTypeControl: false,\n\t\tfullscreenControl: false,\n\t\tdisableDefaultUI: true,\n\t})\n\n\tconst locationMarkers = locations.map((location): LocationMarker => {\n\t\tconst content = buildLocationContent(location)\n\n\t\tconst marker = new AdvancedMarkerView({\n\t\t\tmap,\n\t\t\tcontent,\n\t\t\tposition: location.position,\n\t\t\ttitle: location.name,\n\t\t\t// collisionBehavior,\n\t\t})\n\n\t\tmarker.element!.classList.add('marker', 'location', location.type)\n\n\t\treturn { location, marker }\n\t})\n\n\tconst usClients = locationMarkers.filter(isClientInUnitedStates)\n\n\tconst stateMarkers: StateMarker[] = states.flatMap((state) => {\n\t\tconst stateClients = usClients.filter(\n\t\t\t(client) => client.location.code === state.code\n\t\t)\n\n\t\tif (stateClients.length === 0) return []\n\n\t\tconst content = buildStateContent(state, stateClients.length)\n\n\t\tconst marker = new AdvancedMarkerView({\n\t\t\tmap,\n\t\t\tcontent,\n\t\t\tposition: state.position,\n\t\t\ttitle: state.code,\n\t\t\t// collisionBehavior,\n\t\t})\n\n\t\tmarker.element!.classList.add('marker', 'state')\n\n\t\treturn { state, marker }\n\t})\n\n\tgoogle.maps.event.addListener(map, 'zoom_changed', () => {\n\t\tconst zoomLevel = map.getZoom() ?? 2\n\n\t\tif (zoomLevel >= 6.2) {\n\t\t\tstateMarkers.forEach(({ marker }) => hideMarker(marker))\n\t\t\tusClients.forEach(({ marker }) => showMarker(marker))\n\t\t} else {\n\t\t\tstateMarkers.forEach(({ marker }) => showMarker(marker))\n\t\t\tusClients.forEach(({ marker }) => hideMarker(marker))\n\t\t}\n\t})\n\n\t// Manually picked these because they work pretty good\n\tmap.fitBounds({ north: 50, west: -124, south: -18, east: 153 })\n\n\t// window._dbg = { map, locationMarkers }\n}\n\nconst iconHTML = `
${location.name}
\n\t\t${clientCount === 1 ? 'One client' : clientCount + ' clients'} in ${\n\t\tstate.code\n\t}
\n\t\t