{"version":3,"file":"js/2457-1633e697d77bf590279b.chunk.js","mappings":"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","sources":["webpack://sniffspot/./frontend/src/components/sniff-apple-maps/index.jsx","webpack://sniffspot/./frontend/src/helpers/mapkit-token.js","webpack://sniffspot/./frontend/src/assets/img/star-solid.png"],"sourcesContent":["import React, { useEffect, useMemo, useState } from 'react';\nimport { connect, useDispatch } from 'react-redux';\nimport { debounce } from 'lodash';\nimport mapkitToken from '../../helpers/mapkit-token';\nimport usePrevious from '../../services/hooks/usePrevious';\nimport { IMG_RESIZES } from '../../consts/resizer.consts';\nimport { ImageHelper } from '../../classes/image-helper.class';\nimport useMobileScreen from '../../services/hooks/useMobileScreen';\nimport { SET_MAP_DATA } from '../../actions/map.actions';\nimport { showSize } from '../../helpers/common';\nimport { showPrice } from '../../helpers/price';\nimport { Map, MapkitProvider, useMap } from 'react-mapkit';\nimport { CIRCLE_RADIUS, SPOT_ENCLOSURE } from '../../consts/spot.consts';\nimport { RouteFormatter } from '../../routes';\nimport emptySpotImg from '../../assets/img/empty-spot.png';\nimport starImg from '../../assets/img/star-solid.png';\nimport './style.scss';\n\nconst customAnno = (_, options) => {\n const spot = options.data;\n const spotSize = showSize(spot.size, spot.sizeUnits) || '';\n const isActive = spot.id == spot.activeSpotId;\n\n const div = document.createElement('div');\n\n const span = document.createElement('span');\n span.innerText = spot?.publicPark ? 'Public park' : spotSize;\n\n div.className = `sniff-listings-anno ${!spot?.publicPark && !spotSize ? 'no-size' : ''} ${isActive ? 'active' : ''}`;\n\n const spanSVG = document.createElement('span');\n spanSVG.className = 'sniff-listings-anno_span-svg';\n\n const topSVG = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n topSVG.setAttribute('width', 14);\n topSVG.setAttribute('height', 14);\n topSVG.setAttribute('viewBox', '0 0 20 20');\n topSVG.setAttribute('fill', 'none');\n\n const svgP1 = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n const svgP2 = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n svgP1.setAttribute(\n 'd',\n 'M15 20a.623.623 0 0 1-.53-.292l-3.052-4.844a7.477 7.477 0 0 1-2.836 0l-3.054 4.844a.621.621 0 0 1-.6.288.628.628 0 0 1-.52-.423l-1.136-3.406-2.77-.555a.628.628 0 0 1-.465-.401.63.63 0 0 1 .104-.607l3.122-3.815A7.507 7.507 0 0 1 2.5 7.5C2.5 3.364 5.864 0 10 0s7.5 3.364 7.5 7.5c0 1.137-.263 2.27-.762 3.29l3.121 3.814a.626.626 0 0 1-.361 1.009l-2.77.554-1.135 3.405A.626.626 0 0 1 15 20Zm-.175-2.075.833-2.498a.624.624 0 0 1 .47-.415l2.105-.42-2.183-2.667a7.552 7.552 0 0 1-3.38 2.583l2.155 3.417ZM3.873 15.012c.219.044.4.204.47.415l.832 2.497 2.153-3.417a7.553 7.553 0 0 1-3.38-2.583l-2.182 2.667 2.107.421ZM10 1.25A6.257 6.257 0 0 0 3.75 7.5 6.258 6.258 0 0 0 10 13.75a6.258 6.258 0 0 0 6.25-6.25A6.258 6.258 0 0 0 10 1.25Z'\n );\n svgP2.setAttribute(\n 'd',\n 'M7.577 11.433a1.105 1.105 0 0 1-.967-.555 1.123 1.123 0 0 1-.064-.991l.734-1.685-1.322-1.3c-.21-.205-.33-.481-.335-.778a1.102 1.102 0 0 1 .313-.79c.21-.218.492-.338.79-.338h1.408l.867-1.704a1.129 1.129 0 0 1 1.524-.478c.2.106.363.268.47.47L11.864 5h1.412c.591 0 1.085.486 1.1 1.083.007.31-.116.61-.339.825l-1.317 1.294.73 1.676a1.12 1.12 0 0 1-.594 1.469 1.118 1.118 0 0 1-.992-.064L10 10.232l-1.873 1.054a1.105 1.105 0 0 1-.55.146ZM10 8.891c.107 0 .213.027.307.08l1.836 1.033-.739-1.698a.628.628 0 0 1 .135-.695l1.385-1.361h-1.441a.623.623 0 0 1-.558-.342L10 4.086l-.926 1.819a.622.622 0 0 1-.556.342H7.075L8.462 7.61c.183.18.237.459.135.695l-.74 1.698 1.837-1.033A.62.62 0 0 1 10 8.89Z'\n );\n svgP1.setAttribute('fill', isActive ? '#fff' : '#3AA648');\n svgP2.setAttribute('fill', isActive ? '#fff' : '#3AA648');\n topSVG.appendChild(svgP1);\n topSVG.appendChild(svgP2);\n spanSVG.appendChild(topSVG);\n\n (spot.size || spot.publicPark) && div.appendChild(span);\n\n const padding = document.createElement('span');\n padding.setAttribute('style', 'width: 6px;');\n\n spot.size && spot.top && div.appendChild(padding);\n spot.top && div.appendChild(spanSVG);\n\n return div;\n};\n\nconst customAnnoMyLoc = () => {\n const div = document.createElement('div');\n div.className = 'sniff-listings-anno-my-loc';\n div.appendChild(document.createElement('div'));\n return div;\n};\n\nconst calloutDelegate = {\n calloutElementForAnnotation: (anno) => {\n const spot = anno.data;\n const { top, bottom, left, right } = spot.calloutPosition;\n\n const elementCont = document.createElement('div');\n elementCont.className = `map-spot-callout-cont ${top ? 'call-top' : ''} ${bottom ? 'call-bottom' : ''} ${left ? 'call-left' : ''} ${\n right ? 'call-right' : ''\n }`;\n\n const element = elementCont.appendChild(document.createElement('div'));\n element.className = 'map-spot-callout';\n\n const imgDiv = element.appendChild(document.createElement('div'));\n imgDiv.className = 'map-spot-callout__imgDiv';\n const img = imgDiv.appendChild(document.createElement('img'));\n img.src = ImageHelper.getUrlFromOptions(spot.allPhotos.length > 0 ? spot.allPhotos[0] : emptySpotImg, `fit-in/${IMG_RESIZES.x0256}`);\n img.alt = spot.title;\n img.width = '234';\n img.height = '150';\n img.loading = 'lazy';\n\n const spotType = element.appendChild(document.createElement('p'));\n spotType.className = 'spot-type-public';\n spotType.innerText = spot.publicPark ? 'Public dog park' : 'Private dog park';\n\n const title = element.appendChild(document.createElement('h3'));\n title.textContent = spot.title;\n\n if (spot.enclosureType || spot.size) {\n const detail = element.appendChild(document.createElement('div'));\n detail.className = 'map-spot-callout__detail';\n detail.textContent = `${spot.enclosureType ? SPOT_ENCLOSURE[spot.enclosureType.toUpperCase()] : ''}${\n spot.size ? ' — ' + showSize(spot.size, spot.sizeUnits) : ''\n }`;\n }\n\n const price = element.appendChild(document.createElement('div'));\n price.className = 'map-spot-callout__price';\n if (spot.price) {\n const priceNumber = price.appendChild(document.createElement('span'));\n priceNumber.className = 'snif-p snif-semibold';\n priceNumber.textContent = showPrice(spot.price);\n }\n const priceDesc = price.appendChild(document.createElement('span'));\n priceDesc.textContent = spot.price ? ' dog / hour' : 'no fee info';\n\n const rating = element.appendChild(document.createElement('div'));\n rating.className = 'map-spot-callout__rating';\n\n if (spot.rating) {\n const fixedRating = Math.round(spot.rating * 10) / 10;\n const star = rating.appendChild(document.createElement('img'));\n star.src = starImg;\n star.alt = 'Star';\n star.width = '16';\n star.height = '16';\n star.loading = 'lazy';\n const ratingNumber = rating.appendChild(document.createElement('span'));\n ratingNumber.className = 'text-dark';\n ratingNumber.textContent = `${fixedRating} —`;\n const reviews = rating.appendChild(document.createElement('span'));\n reviews.textContent = `(${spot.reviewsCount})`;\n } else if (spot.new) {\n const ratingNew = rating.appendChild(document.createElement('p'));\n ratingNew.textContent = 'New!';\n }\n if (!spot.publicPark) {\n element.onclick = (e) => spot.handleClick(e);\n }\n return elementCont;\n },\n calloutAnchorOffsetForAnnotation: () => new DOMPoint(0, 0),\n};\n\nconst getBoundRect = (map) => {\n const mapBoundRect = map.region.toBoundingRegion();\n const data = {\n ne: {\n lat: mapBoundRect.northLatitude,\n lng: mapBoundRect.eastLongitude,\n },\n sw: {\n lat: mapBoundRect.southLatitude,\n lng: mapBoundRect.westLongitude,\n },\n };\n return data;\n};\n\nconst getCenter = (map) => {\n const latlng = map.center;\n const data = {\n lat: latlng.latitude,\n lng: latlng.longitude,\n };\n return data;\n};\n\nconst RenderMap = ({\n center,\n setLatLong,\n anno,\n draggable = false,\n cameraDistance,\n circle,\n isListings,\n spots,\n setMapRect,\n setMapCenter,\n isCalcZoom,\n listingSpots,\n activeSpotId,\n showsUserLocation,\n}) => {\n const dispatch = useDispatch();\n const isMobile = useMobileScreen();\n const [rect, setRect] = useState(null);\n const [loading, setLoading] = useState(false);\n const prevRect = usePrevious(rect);\n const prevCenter = usePrevious(center);\n const { map, mapProps, mapkit } = useMap({\n center: [center.latitude, center.longitude],\n showsCompass: 'hidden',\n cameraDistance,\n });\n\n const calcNewRect = () => setRect(getBoundRect(map));\n const calcNewRectDebounce = useMemo(() => debounce(calcNewRect, isMobile ? 0 : 700), [calcNewRect]);\n\n const handleClickAnno = (e, spot) => {\n e?.preventDefault();\n e?.stopPropagation();\n const spotUrl = RouteFormatter.listings({ first: spot.spotUrl });\n window.open(spotUrl, '_blank');\n };\n\n useEffect(() => {\n if (prevRect && rect && !loading) {\n setMapRect(rect);\n }\n }, [rect]);\n\n useEffect(() => {\n if (map && mapkit && isListings) {\n calcNewRect();\n map.addEventListener('scroll-end', calcNewRectDebounce);\n map.addEventListener('zoom-end', calcNewRectDebounce);\n map.addEventListener('region-change-end', () => setMapCenter(getCenter(map)));\n }\n }, [map, mapkit, isListings]);\n\n useEffect(() => {\n if (map && mapkit && center?.longitude && center?.latitude) {\n if (prevCenter.latitude !== center.latitude || prevCenter.longitude !== center.longitude) {\n map.setCenterAnimated(new mapkit.Coordinate(center.latitude, center.longitude), false);\n }\n }\n }, [map, mapkit, prevCenter, center]);\n\n useEffect(() => {\n if (map && mapkit && map.center && isCalcZoom && listingSpots && listingSpots.length > 1) {\n const sortedLat = [...listingSpots].sort((a, b) => a.latitude - b.latitude);\n const sortedLng = [...listingSpots].sort((a, b) => a.longitude - b.longitude);\n const lowestLat = map.center.latitude - sortedLat[0].latitude;\n const highestLat = sortedLat[sortedLat.length - 1].latitude - map.center.latitude;\n const lowestLng = map.center.longitude - sortedLng[0].longitude;\n const highestLng = sortedLng[sortedLng.length - 1].longitude - map.center.longitude;\n const latSpan = (lowestLat > highestLat ? lowestLat : highestLat) * 2 * 1.35;\n const lngSpan = (lowestLng > highestLng ? lowestLng : highestLng) * 2 * 1.35;\n const spanCoor = new mapkit.CoordinateSpan(latSpan, lngSpan);\n setLoading(true);\n setTimeout(() => {\n map.setRegionAnimated(new mapkit.CoordinateRegion(map.center, spanCoor));\n dispatch({ type: SET_MAP_DATA, value: { isCalcZoom: false } });\n }, 700);\n setTimeout(() => setLoading(false), 1500);\n }\n }, [map, mapkit, isCalcZoom, listingSpots]);\n\n useEffect(() => {\n if (map && mapkit) {\n if (isListings) {\n if (showsUserLocation) {\n navigator.geolocation.getCurrentPosition(\n (position) => {\n const coords = new mapkit.Coordinate(position.coords.latitude, position.coords.longitude);\n const annotation = new mapkit.Annotation(coords, customAnnoMyLoc);\n map.addAnnotation(annotation);\n },\n (err) => console.warn(err),\n { enableHighAccuracy: true, maximumAge: 60 * 1000, timeout: 30000 }\n );\n }\n } else if (anno) {\n const coordinate = new mapkit.Coordinate(center.latitude, center.longitude);\n const marker = new mapkit.MarkerAnnotation(coordinate, {\n draggable: draggable,\n selected: true,\n color: '#3aa648',\n });\n\n if (draggable) {\n marker.addEventListener('drag-end', function () {\n map.setCenterAnimated(marker.coordinate);\n setLatLong(marker.coordinate);\n });\n }\n\n map.addAnnotation(marker);\n map.setCameraDistanceAnimated(1800);\n } else if (circle) {\n const coordinate = new mapkit.Coordinate(center.latitude, center.longitude);\n const circleOverlay = new mapkit.CircleOverlay(coordinate, CIRCLE_RADIUS);\n circleOverlay.style = new mapkit.Style({\n fillColor: '#50B820',\n fillOpacity: 0.3,\n strokeColor: '#50B820',\n lineWidth: 2,\n });\n\n map.addOverlay(circleOverlay);\n }\n }\n }, [map, mapkit, anno, draggable, circle, isListings, spots, activeSpotId]);\n\n useEffect(() => {\n if (map && mapkit && isListings) {\n map.removeAnnotations(map.annotations);\n\n if (spots.length > 0) {\n const newMarkers = [];\n for (let i = spots.length; i > 0; i--) {\n const spot = spots[i - 1];\n const isActive = spot.id == activeSpotId;\n const mapCenter = getCenter(map);\n let top = false;\n let left = false;\n let right = false;\n let bottom = false;\n\n if (parseFloat(spot.latitude) > mapCenter.lat) {\n top = true;\n } else {\n bottom = true;\n }\n\n if (parseFloat(spot.longitude) > mapCenter.lng) {\n right = true;\n } else {\n left = true;\n }\n\n const calloutPosition = { top, bottom, left, right };\n\n const options = {\n callout: calloutDelegate,\n data: {\n ...spot,\n activeSpotId,\n calloutPosition,\n handleClick: spot.publicPark ? undefined : (e) => handleClickAnno(e, spot),\n },\n selected: isActive,\n calloutEnabled: !isActive,\n };\n const coordinate = new mapkit.Coordinate(parseFloat(spot.latitude), parseFloat(spot.longitude));\n const annotation = new mapkit.Annotation(coordinate, customAnno, options);\n newMarkers.push(annotation);\n }\n map.addAnnotations(newMarkers);\n }\n }\n }, [map, mapkit, prevRect, isListings, spots, activeSpotId]);\n\n return ;\n};\n\nconst SniffAppleMaps = (props) => {\n if (!mapkitToken) {\n return '';\n }\n\n return (\n \n \n \n );\n};\n\nconst mapStateToProps = (state) => {\n return { isCalcZoom: state.map.isCalcZoom, listingSpots: state.map.listingSpots };\n};\n\nexport default connect(mapStateToProps)(SniffAppleMaps);\n","import jwt from 'jsonwebtoken';\nimport { APPLE_MAPS_KIT_ID, APPLE_MAPS_KIT_PK, APPLE_MAPS_TEAM_ID } from '../consts/env.consts';\n\nfunction generate(authKey, keyId, teamId, ttl = 30 * 60, origin) {\n if (authKey == null) {\n throw new Error('Missing your MapKit Authorization Key');\n }\n\n if (keyId == null) {\n throw new Error('Missing your MapKit JS Key ID');\n }\n\n if (teamId == null) {\n throw new Error('Missing your Apple Developer Team ID');\n }\n\n const payload = {\n iss: teamId,\n iat: Date.now() / 1000,\n exp: Date.now() / 1000 + ttl,\n origin,\n };\n\n const header = {\n kid: keyId,\n typ: 'JWT',\n alg: 'ES256',\n };\n\n return jwt.sign(payload, authKey.toString('utf-8'), { header });\n}\n\nconst mapkitToken = generate(APPLE_MAPS_KIT_PK, APPLE_MAPS_KIT_ID, APPLE_MAPS_TEAM_ID);\n\nexport default mapkitToken;\n","module.exports = {\n srcSet: \"https://static.sniffspot.com/packs/img/star-solid-34.339a1ee59f804128.png\"+\" 34w\",\n images: [{path: \"https://static.sniffspot.com/packs/img/star-solid-34.339a1ee59f804128.png\",width: 34,height: 33}],\n src: \"https://static.sniffspot.com/packs/img/star-solid-34.339a1ee59f804128.png\",\n toString: function(){return \"https://static.sniffspot.com/packs/img/star-solid-34.339a1ee59f804128.png\"},\n \n width: 34,\n height: 33\n }"],"names":["customAnno","_","options","spot","data","spotSize","showSize","size","sizeUnits","isActive","id","activeSpotId","div","document","createElement","span","innerText","publicPark","className","concat","spanSVG","topSVG","createElementNS","setAttribute","svgP1","svgP2","appendChild","padding","top","customAnnoMyLoc","calloutDelegate","calloutElementForAnnotation","anno","_spot$calloutPosition","calloutPosition","bottom","left","right","elementCont","element","imgDiv","img","src","ImageHelper","getUrlFromOptions","allPhotos","length","emptySpotImg","IMG_RESIZES","x0256","alt","title","width","height","loading","spotType","textContent","enclosureType","detail","SPOT_ENCLOSURE","toUpperCase","price","priceNumber","showPrice","rating","fixedRating","Math","round","star","starImg","ratingNumber","reviewsCount","onclick","e","handleClick","calloutAnchorOffsetForAnnotation","DOMPoint","getCenter","map","latlng","center","lat","latitude","lng","longitude","RenderMap","_ref","setLatLong","_ref$draggable","draggable","cameraDistance","circle","isListings","spots","setMapRect","setMapCenter","isCalcZoom","listingSpots","showsUserLocation","dispatch","useDispatch","isMobile","useMobileScreen","_useState2","_slicedToArray","useState","rect","setRect","_useState4","setLoading","prevRect","usePrevious","prevCenter","_useMap","useMap","showsCompass","mapProps","mapkit","calcNewRect","mapBoundRect","region","toBoundingRegion","ne","northLatitude","eastLongitude","sw","southLatitude","westLongitude","getBoundRect","calcNewRectDebounce","useMemo","debounce","useEffect","addEventListener","setCenterAnimated","Coordinate","sortedLat","_toConsumableArray","sort","a","b","sortedLng","lowestLat","highestLat","lowestLng","highestLng","latSpan","lngSpan","spanCoor","CoordinateSpan","setTimeout","setRegionAnimated","CoordinateRegion","type","SET_MAP_DATA","value","navigator","geolocation","getCurrentPosition","position","coords","annotation","Annotation","addAnnotation","err","console","warn","enableHighAccuracy","maximumAge","timeout","coordinate","marker","MarkerAnnotation","selected","color","setCameraDistanceAnimated","circleOverlay","CircleOverlay","CIRCLE_RADIUS","style","Style","fillColor","fillOpacity","strokeColor","lineWidth","addOverlay","removeAnnotations","annotations","newMarkers","_loop","i","mapCenter","parseFloat","callout","_objectSpread","undefined","preventDefault","stopPropagation","spotUrl","RouteFormatter","listings","first","window","open","handleClickAnno","calloutEnabled","push","addAnnotations","React","Map","connect","state","props","mapkitToken","MapkitProvider","tokenOrCallback","showsZoomControl","authKey","keyId","teamId","ttl","arguments","origin","Error","payload","iss","iat","Date","now","exp","header","kid","typ","alg","jwt","toString","generate","APPLE_MAPS_KIT_PK","APPLE_MAPS_KIT_ID","APPLE_MAPS_TEAM_ID","module","exports","srcSet","images","path"],"sourceRoot":""}