{"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","Turbolinks","visit","location","toString","Controller","targets","addressAttributes","firstname","lastname","phone","country_code","expireCookies","csrfTokenTag","csrfToken","content","instance","axios","create","headers","Promise","resolve","reject","method","url","valid_delivery_address","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/12-be1b2e363b1b735aa5bd.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 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: '