{"version":3,"sources":["webpack:///./app/javascript/controllers/address-search_controller.js","webpack:///./app/javascript/utils/address_api.js","webpack:///./app/javascript/utils/google_place_api.js"],"names":["document","readyState","this","initGoogleMaps","window","addEventListener","event","bindEvents","validateDeliveryAddress","addressField","querySelector","addressAPI","AddressAPI","deliveryAddressTarget","dataset","address","value","autocomplete","GooglePlaceAPI","init","addListener","getAddressInformation","$","isEmptyObject","isCompleteAddress","itemsOnCart","classList","add","isDeliveryAddressValid","then","shoppingCart","coordinates","longitude","latitude","parseInt","innerText","remove","popover","showChangeAddressModal","updateShippingAddress","error","showInvalidAddressMsg","in_exclusion_area","saveInvalidShippingAddress","place","isMissingStreetNumber","displayStreetNumberPopover","invalidAddressTarget","validForDeliver","cookie","missingStreetNumberMessage","e","preventDefault","target","clearButton","defaultAddress","trim","invalidForDeliver","inExclusionArea","addressInput","data","orderGuestToken","orderNumber","modal","setCookies","zipcode","city","state","userPresent","saveAddress","location","reload","Controller","targets","addressAttributes","firstname","lastname","phone","country_code","expireCookies","csrfTokenTag","csrfToken","content","instance","axios","create","headers","Promise","resolve","reject","method","url","valid_delivery_address","Turbolinks","visit","toString","exclusionArea","invalidAddressTitle","title","trigger","template","clone","removeClass","user_address","invalid_address","street_number","google","maps","places","Autocomplete","componentRestrictions","country","fields","types","bounds","west","east","south","north","strictBounds","getPlace","postcode","geometry","address_components","component","long_name","short_name","lng","lat"],"mappings":"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","file":"js/11-6e5be9ac9255555b87dd.chunk.js","sourcesContent":["import { Controller } from '@hotwired/stimulus'\nimport { AddressAPI } from \"../utils/address_api\"\nimport { GooglePlaceAPI } from \"../utils/google_place_api\"\n\nexport default class extends Controller {\n static targets = [\"deliveryAddress\", \"invalidAddress\"]\n\n connect() {\n if (document.readyState === \"complete\") {\n this.initGoogleMaps()\n } else {\n window.addEventListener(\"load\", (event) => {\n this.initGoogleMaps()\n })\n }\n this.bindEvents()\n this.validateDeliveryAddress()\n \n }\n\n initGoogleMaps() {\n let addressField = document.querySelector(\"#ship-address\");\n this.addressAPI = AddressAPI()\n\n if(this.deliveryAddressTarget.dataset.address != 'Find your address') {\n this.deliveryAddressTarget.value = this.deliveryAddressTarget.dataset.address\n }\n\n let autocomplete = GooglePlaceAPI().init(addressField)\n autocomplete.addListener(\"place_changed\", () => {\n let address = GooglePlaceAPI().getAddressInformation(autocomplete)\n if($.isEmptyObject(address)) { return }\n\n if(this.addressAPI.isCompleteAddress(address)) {\n let itemsOnCart = 0\n this.deliveryAddressTarget.classList.add(\"validating\")\n\n this.addressAPI.isDeliveryAddressValid(address)\n .then(() => {\n let shoppingCart = document.querySelector(\".shopping-bag-item-count\")\n let coordinates = [address.longitude, address.latitude]\n itemsOnCart = parseInt(shoppingCart.innerText)\n this.deliveryAddressTarget.classList.remove(\"validating\")\n $(\"[data-target='address-search.invalidAddress']\").popover(\"hide\")\n\n if(itemsOnCart > 0) {\n this.showChangeAddressModal(address, coordinates)\n } else {\n this.updateShippingAddress(address, coordinates)\n }\n })\n .catch((error) => {\n this.addressAPI.showInvalidAddressMsg(error.in_exclusion_area, this.deliveryAddressTarget)\n this.addressAPI.saveInvalidShippingAddress(addressField.value, address.place)\n })\n } else if(this.addressAPI.isMissingStreetNumber(address)) {\n this.displayStreetNumberPopover()\n this.invalidAddressTarget.dataset.validForDeliver = \"false\"\n document.cookie = \"isValid=;expires=Thu, 01 Jan 1970 00:00:01 GMT\"\n } else {\n this.addressAPI.saveInvalidShippingAddress(addressField.value, address.place)\n this.addressAPI.showInvalidAddressMsg(false, this.deliveryAddressTarget)\n document.cookie = \"isValid=;expires=Thu, 01 Jan 1970 00:00:01 GMT\"\n }\n })\n\n this.bindEvents()\n this.validateDeliveryAddress()\n }\n \n displayStreetNumberPopover() {\n this.addressAPI = AddressAPI()\n\n this.addressAPI.missingStreetNumberMessage()\n\n $(\"[data-target='address-search.invalidAddress']\").popover(\"show\")\n }\n\n clearAddress(e) {\n e.preventDefault\n let addressInput = document.querySelector(\"#ship-address\")\n\n addressInput.value = \"\"\n e.target.classList.add(\"d-none\")\n $(\"[data-target='address-search.invalidAddress']\").popover(\"dispose\")\n }\n\n bindEvents() {\n let clearButton = document.querySelector(\".data-clear-input\")\n document.querySelector(\"#ship-address\").addEventListener(\"mousedown\", () => {\n clearButton.classList.remove(\"d-none\")\n $(\"[data-target='address-search.invalidAddress']\").popover(\"hide\")\n $('#deliver-to-wrapper').popover('hide');\n })\n\n document.querySelector(\"#ship-address\").addEventListener(\"keydown\", (e) => {\n clearButton.classList.remove(\"d-none\")\n $(\"[data-target='address-search.invalidAddress']\").popover(\"hide\")\n $('#deliver-to-wrapper').popover('hide');\n })\n\n document.querySelector(\"#ship-address\").addEventListener(\"focusout\", (e) => {\n let defaultAddress = this.deliveryAddressTarget.dataset.address\n\n if(e.target.value.trim() == \"\" && defaultAddress != \"Find your address\") {\n e.target.value = defaultAddress\n }\n })\n }\n\n validateDeliveryAddress() {\n let invalidForDeliver = this.invalidAddressTarget.dataset.validForDeliver == \"false\"\n let inExclusionArea = this.invalidAddressTarget.dataset.inExclusionArea == \"true\"\n let addressInput = document.querySelector(\".pac-target-input\")\n\n if(invalidForDeliver && (addressInput !== null && addressInput.value != \"\")) {\n this.addressAPI.showInvalidAddressMsg(inExclusionArea, this.deliveryAddressTarget)\n }\n }\n\n showChangeAddressModal(address, coordinates) {\n $(\"#changeAddressModal\").data(\"address\", address)\n $(\"#changeAddressModal\").data(\"placeName\", address.place)\n $(\"#changeAddressModal\").data(\"orderGuestToken\", this.deliveryAddressTarget.dataset.orderGuestToken)\n $(\"#changeAddressModal\").data(\"orderNumber\", this.deliveryAddressTarget.dataset.orderNumber)\n $(\"#changeAddressModal\").data(\"coordinates\", coordinates)\n $(\"#changeAddressModal\").modal('show');\n }\n\n updateShippingAddress(address, coordinates) {\n this.addressAPI.setCookies(address.place, address.zipcode, address.city, address.state, coordinates)\n if(this.deliveryAddressTarget.dataset.userPresent == \"true\") {\n this.addressAPI.saveAddress(address)\n } else {\n window.location.reload()\n // Turbolinks.visit(location.toString())\n }\n }\n\n}\n","import axios from \"axios\"\n\nexport function AddressAPI() {\n function isDeliveryAddressValid(address) {\n const csrfTokenTag = document.querySelector('meta[name=csrf-token]');\n const csrfToken = csrfTokenTag ? csrfTokenTag.content : '';\n let instance = axios.create({ headers: { 'X-CSRF-Token': csrfToken } })\n\n return new Promise((resolve, reject) => {\n instance({\n method: \"post\",\n url: \"/deliverable_addresses\",\n data: addressAttributes(address)\n })\n .then(({ data }) => {\n if(!data.valid_delivery_address || data.in_exclusion_area) {\n reject(data)\n } else {\n resolve(data)\n }\n }).catch(() => { reject(false) })\n })\n }\n\n function saveAddress(address) {\n const csrfTokenTag = document.querySelector('meta[name=csrf-token]');\n const csrfToken = csrfTokenTag ? csrfTokenTag.content : '';\n let data = addressAttributes(address)\n data[\"save_as_default\"] = true\n\n let instance = axios.create({ headers: { 'X-CSRF-Token': csrfToken } })\n instance({\n url: \"/shipping_addresses\",\n method: \"post\",\n data: data\n }).then(() => {\n Turbolinks.visit(location.toString())\n })\n }\n\n function addressAttributes(address) {\n return {\n \"shipping_address\": {\n \"firstname\": address.firstname,\n \"lastname\": address.lastname,\n \"address1\": address.address,\n \"city\": address.city,\n \"zipcode\": address.zipcode,\n \"phone\": address.phone,\n \"country_code\": address.country_code,\n \"longitude\": address.longitude,\n \"latitude\": address.latitude\n\n },\n \"state\": address.state\n }\n }\n\n function missingStreetNumberMessage() {\n $(\"[data-invalid-address-wrapper]\")\n .popover(\n {\n title: \"Missing Street Number\",\n content: \"Psst! We need your street number in order to validate your address. Please try again\",\n trigger: \"manual\",\n template: '

',\n }\n )\n }\n \n function showInvalidAddressMsg(exclusionArea, deliveryAddressTarget) {\n let invalidAddressTitle = \"🌿 Fast Nationwide Shipping Available! 🌿\"\n\n deliveryAddressTarget.classList.remove(\"validating\")\n $(\"[data-target='address-search.invalidAddress']\").popover(\"dispose\")\n\n if(exclusionArea) {\n invalidAddressTitle = \"This is an exclusion area\"\n\n $(\"[data-invalid-address-wrapper]\")\n .popover(\n { \n title: invalidAddressTitle,\n content: \"
We’re unable to deliver to your address because it appears to be a public park, public school, publicly owned or leased land.
\",\n trigger: \"manual\",\n template: '

'\n }\n )\n }\n\n $(\"[data-invalid-address-wrapper]\")\n .popover(\n { \n title: invalidAddressTitle,\n content: function() {\n var clone= $($(this).data('popover-content')).clone(true).removeClass('popover-hide')\n return clone;\n },\n trigger: \"manual\",\n template: '

'\n }\n )\n\n $(\"[data-target='address-search.invalidAddress']\").popover(\"show\")\n }\n\n function setCookies(address, zipcode, place, state, coordinates) {\n document.cookie = `zipcode=${zipcode};Path=/`\n document.cookie = `city=${place};Path=/`\n document.cookie = `state=${state};Path=/`\n document.cookie = `temp_delivery_address=${address};Path=/`\n document.cookie = \"isValid=true;Path=/\"\n document.cookie = `longitude=${coordinates[0]};Path=/`\n document.cookie = `latitude=${coordinates[1]};Path=/`\n }\n\n function expireCookies() {\n document.cookie = \"temp_delivery_address=;expires=Thu, 01 Jan 1970 00:00:01 GMT\"\n document.cookie = \"isValid=;expires=Thu, 01 Jan 1970 00:00:01 GMT\"\n document.cookie = \"city=;expires=Thu, 01 Jan 1970 00:00:01 GMT\"\n document.cookie = \"zipcode=;expires=Thu, 01 Jan 1970 00:00:01 GMT\"\n document.cookie = \"state=;expires=Thu, 01 Jan 1970 00:00:01 GMT\"\n document.cookie = \"place=;expires=Thu, 01 Jan 1970 00:00:01 GMT\"\n document.cookie = \"longitude=;expires=Thu, 01 Jan 1970 00:00:01 GMT\"\n document.cookie = \"latitude=;expires=Thu, 01 Jan 1970 00:00:01 GMT\"\n }\n\n function saveInvalidShippingAddress(user_address, invalid_address) {\n const csrfTokenTag = document.querySelector('meta[name=csrf-token]');\n const csrfToken = csrfTokenTag ? csrfTokenTag.content : '';\n\n let instance = axios.create({ headers: { 'X-CSRF-Token': csrfToken } })\n instance({\n url: \"/invalid_shipping_addresses\",\n method: \"post\",\n data: { user_address: user_address, invalid_address: invalid_address }\n })\n }\n\n function isCompleteAddress(address) {\n return address.street_number && address.zipcode && address.city\n }\n\n function isMissingStreetNumber(address) {\n return !address.street_number && address.address && address.city\n }\n\n return {\n expireCookies,\n isDeliveryAddressValid,\n saveAddress,\n setCookies,\n showInvalidAddressMsg,\n saveInvalidShippingAddress,\n isCompleteAddress,\n isMissingStreetNumber,\n missingStreetNumberMessage\n }\n}\n","import { AddressAPI } from \"../utils/address_api\"\nimport axios from \"axios\"\n\nexport function GooglePlaceAPI() {\n function init(addressField) {\n let autocomplete = new google.maps.places.Autocomplete(addressField, {\n componentRestrictions: { country: [\"us\"] },\n fields: [\"address_components\", \"geometry\"],\n types: [\"address\"],\n bounds: {west: -124.7844079, east: -66.9513812 , south: 24.7433195 , north: 49.3457868 },\n strictBounds: true,\n });\n\n return autocomplete;\n }\n\n function getAddressInformation(autocomplete) {\n const place = autocomplete.getPlace();\n let address = \"\"\n let street_number = \"\"\n let postcode = \"\"\n let city, state, country = \"\"\n\n if(!place.geometry) { return {} }\n\n for (const component of place.address_components) {\n const componentType = component.types[0];\n switch (componentType) {\n case \"street_number\": {\n street_number = component.long_name;\n break;\n }\n case \"route\": {\n address = `${street_number} ${component.short_name}`;\n break;\n }\n case \"postal_code\": {\n postcode = `${component.long_name}${postcode}`;\n break;\n }\n case \"postal_code_suffix\": {\n postcode = `${postcode}-${component.long_name}`;\n break;\n }\n case \"locality\":\n city = component.long_name;\n break;\n case \"administrative_area_level_1\": {\n state = component.long_name;\n break;\n }\n case \"country\":\n country = component.short_name;\n break;\n }\n }\n\n return {\n street_number: street_number,\n address: `${address}`,\n city: city,\n zipcode: postcode,\n state: state,\n place: `${address}, ${city}, ${state} ${postcode}, ${country}`,\n longitude: place.geometry.location.lng(),\n latitude: place.geometry.location.lat()\n }\n }\n\n return {\n init,\n getAddressInformation,\n }\n}"],"sourceRoot":""}