{"version":3,"file":"js/98446-fbfaa17da14c38171206.js","mappings":"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","sources":["webpack://StravaModern/./app/javascript/apps/settings/privacy/HideAddressApp/components/PrivateLocationMap/styles.scss?0961","webpack://StravaModern/./app/javascript/apps/settings/privacy/HideAddressApp/components/PrivateLocationMap/PrivateLocationMap.js","webpack://StravaModern/./app/javascript/apps/settings/privacy/HideAddressApp/components/AddressTypeAhead/styles.scss?7e1d","webpack://StravaModern/./app/javascript/apps/settings/privacy/HideAddressApp/components/AddressTypeAhead/AddressTypeAhead.js","webpack://StravaModern/./app/javascript/apps/settings/privacy/HideAddressApp/styles.scss?2a9d","webpack://StravaModern/./app/javascript/apps/settings/privacy/HideAddressApp/HideAddressApp.js"],"sourcesContent":["// extracted by mini-css-extract-plugin\nexport default {\"map\":\"PrivateLocationMap--map--dkyzs\",\"popup\":\"PrivateLocationMap--popup--lmkcY\"};","import React, { useEffect } from 'react';\nimport PropTypes from 'prop-types';\n\nimport Map, { useMap } from '@strava/ui/Map';\nimport PolygonCircle from '@strava/ui/Map/PolygonCircle';\nimport Popup from '@strava/ui/Map/Popup';\nimport SvgActionsVisibleDisabledNormalXsmall from '@strava/icons/ActionsVisibleDisabledNormalXsmall';\n\nimport { trackV2 } from 'utils/analytics';\nimport styles from './styles.scss';\n\nfunction MapAnalytics({ privateLocationId }) {\n const map = useMap();\n\n useEffect(() => {\n map.on('zoomstart', () => {\n trackV2({\n category: 'privacy_settings',\n page: 'private_locations',\n action: 'click',\n element: 'map_zoom',\n properties: { private_location_id: privateLocationId }\n });\n });\n map.on('dragstart', () => {\n trackV2({\n category: 'privacy_settings',\n page: 'private_locations',\n action: 'pan',\n element: 'map',\n properties: { private_location_id: privateLocationId }\n });\n });\n }, []);\n\n return null;\n}\n\nfunction PrivateLocationMap({ privateLocation }) {\n const setZoom = () => {\n let zoom;\n if (privateLocation.radius > 800) {\n zoom = 11;\n } else if (privateLocation.radius > 400) {\n zoom = 12;\n } else if (privateLocation.radius > 200) {\n zoom = 13;\n } else {\n zoom = 14;\n }\n return zoom;\n };\n\n return (\n \n \n\n \n \n \n\n \n \n );\n}\n\nPrivateLocationMap.propTypes = {\n privateLocation: PropTypes.shape({\n id: PropTypes.string,\n address: PropTypes.string,\n position: PropTypes.shape({\n lat: PropTypes.number,\n lng: PropTypes.number\n }),\n original_position: PropTypes.shape({\n lat: PropTypes.number,\n lng: PropTypes.number\n }),\n radius: PropTypes.number,\n repositionRateLimited: PropTypes.bool,\n regeneratePrivateLocationPath: PropTypes.string,\n deletePrivateLocationPath: PropTypes.string,\n distanceHidden: PropTypes.shape({\n label_key: PropTypes.string,\n value: PropTypes.string\n })\n }).isRequired\n};\n\nexport default PrivateLocationMap;\n","// extracted by mini-css-extract-plugin\nexport default {\"typeahead\":\"AddressTypeAhead--typeahead--OJg9O\"};","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport Geocoder from '@strava/ui/Map/Geocoder';\nimport I18n from 'utils/I18n';\n\nimport styles from './styles.scss';\n\nfunction AddressTypeAhead({ handleSelectedResult, clearSelectedResult }) {\n return (\n
\n \n
\n );\n}\n\nAddressTypeAhead.propTypes = {\n handleSelectedResult: PropTypes.func.isRequired,\n clearSelectedResult: PropTypes.func.isRequired\n};\n\nexport default AddressTypeAhead;\n","// extracted by mini-css-extract-plugin\nexport default {\"detail\":\"HideAddressApp--detail--e0Qmt\",\"form\":\"HideAddressApp--form--lmzpZ\",\"dropdown\":\"HideAddressApp--dropdown--Z4auy\",\"submit-button\":\"HideAddressApp--submit-button--068-U\",\"submitButton\":\"HideAddressApp--submit-button--068-U\",\"your-addresses\":\"HideAddressApp--your-addresses--udE4h\",\"yourAddresses\":\"HideAddressApp--your-addresses--udE4h\",\"map-container\":\"HideAddressApp--map-container--QiXSn\",\"mapContainer\":\"HideAddressApp--map-container--QiXSn\",\"address\":\"HideAddressApp--address--13AT0\",\"radius-hidden\":\"HideAddressApp--radius-hidden--0ncd9\",\"radiusHidden\":\"HideAddressApp--radius-hidden--0ncd9\",\"map-buttons\":\"HideAddressApp--map-buttons--rV-ZK\",\"mapButtons\":\"HideAddressApp--map-buttons--rV-ZK\",\"reposition\":\"HideAddressApp--reposition--DIMWI\",\"no-addresses\":\"HideAddressApp--no-addresses--q21EF\",\"noAddresses\":\"HideAddressApp--no-addresses--q21EF\",\"error\":\"HideAddressApp--error--FDq9+\"};","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\n\nimport DropdownSelect from '@strava/ui/DropdownSelect';\nimport Button from '@strava/ui/Button';\nimport I18n from 'utils/I18n';\nimport createNetworkingClient from 'utils/networking-client';\nimport { trackV2 } from 'utils/analytics';\n\nimport PrivateLocationMap from './components/PrivateLocationMap';\nimport AddressTypeAhead from './components/AddressTypeAhead';\nimport styles from './styles.scss';\n\nfunction HideAddressApp({\n radiiOptions,\n privateLocations,\n createPrivateLocationPath\n}) {\n const I18nPrefix = 'strava.settings.privacy.hide_address.';\n const distanceUnits =\n I18n.measurementUnits() === 'metric' ? 'meters' : 'miles';\n const [selectedRadius, setSelectedRadius] = useState(null);\n const [selectedAddress, setSelectedAddress] = useState(null);\n const [error, setError] = useState('');\n\n const trackEvent = (action, element = null, properties = null) => {\n trackV2({\n category: 'privacy_settings',\n page: 'private_locations',\n action,\n ...(element && { element }),\n ...(properties && { properties })\n });\n };\n\n useEffect(() => {\n trackEvent('screen_enter', null, {\n private_location_ids: privateLocations.map((p) => p.id)\n });\n }, []);\n\n const createPrivateLocation = (e) => {\n e.preventDefault();\n\n if (!selectedAddress) {\n setError('address_error');\n } else if (!selectedRadius) {\n setError('radius_error');\n } else {\n createNetworkingClient()\n .post(createPrivateLocationPath, {\n radius: selectedRadius,\n lat_lng: selectedAddress.center.reverse().join(','),\n address: selectedAddress.place_name\n })\n .then(() => {\n window.location.reload();\n })\n .catch((err) => {\n if (err.response.data.is_duplicate_error) {\n setError('duplicate_error_v2');\n } else {\n setError('generic_error');\n }\n });\n }\n };\n\n const deleteHiddenLocation = (p) => {\n if (window.confirm(I18n.t(`${I18nPrefix}delete_address_warning_v2`))) {\n trackEvent('click', 'confirm_delete', { private_location_id: p.id });\n createNetworkingClient()\n .delete(p.deletePrivateLocationPath)\n .then(() => {\n window.location.reload();\n });\n }\n };\n\n const repositionHiddenLocation = (p) => {\n if (window.confirm(I18n.t(`${I18nPrefix}reposition_warning_v2`))) {\n trackEvent('click', 'confirm_reposition', { private_location_id: p.id });\n createNetworkingClient()\n .put(p.regeneratePrivateLocationPath)\n .then(() => {\n window.location.reload();\n });\n }\n };\n\n const buildMaps = () => {\n if (privateLocations && privateLocations.length) {\n return (\n
\n {privateLocations.map((p) => (\n
\n \n
\n
{p.address}
\n
\n {I18n.t_html(p.distanceHidden.unit_key, {\n distance: I18n.t(p.distanceHidden.value_key)\n })}\n
\n
\n {\n trackEvent('click', 'delete', {\n private_location_id: p.id\n });\n deleteHiddenLocation(p);\n }}\n type=\"button\"\n >\n {I18n.t(`${I18nPrefix}delete_address`)}\n \n {\n trackEvent('click', 'reposition', {\n private_location_id: p.id\n });\n repositionHiddenLocation(p);\n }}\n disabled={p.repositionRateLimited}\n type=\"button\"\n >\n {I18n.t(`${I18nPrefix}reposition`)}\n \n
\n
\n
\n ))}\n
\n {I18n.t(`${I18nPrefix}reposition_explanation_v2`)}\n
\n
\n );\n }\n return (\n
\n {I18n.t(`${I18nPrefix}no_addresses`)}\n
\n );\n };\n\n return (\n
\n {/* CF todo: use Markup instead of t_html */}\n
\n {I18n.t_html(\n `${I18nPrefix}detail_v2_html`,\n {},\n {\n onLinkClick: () =>\n trackEvent('click', 'learn_more', { article_id: 115000173384 })\n }\n )}\n
\n
\n setSelectedAddress(a.result)}\n clearSelectedResult={() => setSelectedAddress(null)}\n />\n ({\n value: r.value,\n label: I18n.t(`strava.settings.privacy.distance.${distanceUnits}`, {\n distance: I18n.t(r.label_key)\n })\n }))}\n placeholder={I18n.t(`${I18nPrefix}select_radius`)}\n onChange={(r) => {\n setSelectedRadius(r.value);\n trackEvent('click', 'select_radius', { distance: r.value });\n }}\n onMenuOpen={() => trackEvent('click', 'select_radius')}\n />\n \n trackEvent('click', 'save', { distance: selectedRadius })\n }\n >\n {I18n.t(`${I18nPrefix}save_address`)}\n \n \n {error ? (\n
{I18n.t(`${I18nPrefix}${error}`)}
\n ) : null}\n
\n
\n {I18n.t(`${I18nPrefix}your_addresses`)}\n
\n
{buildMaps()}
\n
\n
\n );\n}\n\nHideAddressApp.propTypes = {\n radiiOptions: PropTypes.arrayOf(\n PropTypes.shape({\n value: PropTypes.number,\n label_key: PropTypes.string\n })\n ).isRequired,\n privateLocations: PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.string,\n address: PropTypes.string,\n position: PropTypes.shape({\n lat: PropTypes.number,\n lng: PropTypes.number\n }),\n original_position: PropTypes.shape({\n lat: PropTypes.number,\n lng: PropTypes.number\n }),\n radius: PropTypes.number,\n repositionRateLimited: PropTypes.bool,\n regeneratePrivateLocationPath: PropTypes.string,\n deletePrivateLocationPath: PropTypes.string,\n distanceHidden: PropTypes.shape({\n unit_key: PropTypes.string,\n value_key: PropTypes.string\n })\n })\n ).isRequired,\n createPrivateLocationPath: PropTypes.string.isRequired\n};\n\nexport default HideAddressApp;\n"],"names":["MapAnalytics","privateLocationId","map","useMap","useEffect","on","trackV2","category","page","action","element","properties","private_location_id","zoom","privateLocation","Map","options","center","position","lng","lat","radius","attributionControl","className","styles","PolygonCircle","id","style","fillColor","fillOpacity","strokeWeight","Popup","latLng","original_position","closeButton","closeOnMove","fill","handleSelectedResult","clearSelectedResult","Geocoder","placeholder","I18n","onResult","language","types","onClear","onLoading","radiiOptions","privateLocations","createPrivateLocationPath","I18nPrefix","distanceUnits","useState","selectedRadius","setSelectedRadius","selectedAddress","setSelectedAddress","error","setError","trackEvent","private_location_ids","p","onLinkClick","article_id","onSubmit","e","preventDefault","createNetworkingClient","post","lat_lng","reverse","join","address","place_name","then","window","location","reload","catch","err","response","data","is_duplicate_error","a","s","result","DropdownSelect","r","value","label","distance","label_key","onChange","onMenuOpen","Button","type","variant","onClick","length","key","distanceHidden","unit_key","value_key","confirm","delete","deletePrivateLocationPath","deleteHiddenLocation","put","regeneratePrivateLocationPath","repositionHiddenLocation","disabled","repositionRateLimited"],"sourceRoot":""}