{"version":3,"sources":["webpack:///./app/javascript/controllers/change-address_controller.js","webpack:///./app/javascript/utils/address_api.js","webpack:///./app/javascript/utils/order_api.js"],"names":["$","this","element","modal","Turbolinks","visit","location","toString","addressApi","AddressAPI","address","data","placeName","orderNumber","orderGuestToken","coordinates","setCookies","zipcode","city","state","OrderAPI","emptyOrder","resetShoppingBagItemCount","saveAddress","clearGarlic","destroy","document","getElementsByClassName","innerText","Controller","addressAttributes","firstname","lastname","phone","country_code","longitude","latitude","expireCookies","cookie","isDeliveryAddressValid","csrfTokenTag","querySelector","csrfToken","content","instance","axios","create","headers","Promise","resolve","reject","method","url","then","valid_delivery_address","in_exclusion_area","place","showInvalidAddressMsg","exclusionArea","deliveryAddressTarget","invalidAddressTitle","classList","remove","popover","title","trigger","template","clone","removeClass","saveInvalidShippingAddress","user_address","invalid_address","isCompleteAddress","street_number","isMissingStreetNumber","missingStreetNumberMessage","updateCart","lineItemId","quantity","Accept","params","window","pathname","error","createCart","cartForm","FormData","action","removeItem"],"mappings":"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","file":"js/14-78f2dd580f04af17dcde.chunk.js","sourcesContent":["import { Controller } from '@hotwired/stimulus'\nimport { AddressAPI } from \"../utils/address_api\"\nimport { OrderAPI } from \"../utils/order_api\"\n\nexport default class extends Controller {\n cancel() {\n $(this.element).modal('hide')\n Turbolinks.visit(location.toString())\n }\n\n accept(){\n $(this.element).modal('hide');\n let addressApi = AddressAPI()\n let address = $(this.element).data(\"address\")\n let placeName = $(this.element).data(\"placeName\")\n let orderNumber = $(this.element).data(\"orderNumber\")\n let orderGuestToken = $(this.element).data(\"orderGuestToken\")\n let coordinates = $(this.element).data(\"coordinates\")\n\n addressApi.setCookies(placeName, address.zipcode, address.city, address.state, coordinates)\n\n if(orderGuestToken && orderGuestToken != \"\") {\n OrderAPI().emptyOrder(orderNumber, orderGuestToken)\n this.resetShoppingBagItemCount();\n }\n\n if(address.address && address.zipcode) {\n addressApi.saveAddress(address)\n } else {\n Turbolinks.visit(location.toString())\n }\n\n new clearGarlic().destroy()\n }\n\n resetShoppingBagItemCount(){\n document.getElementsByClassName('shopping-bag-item-count')[0].innerText = \"0\";\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 axios from \"axios\"\n\nexport function OrderAPI() {\n function updateCart(lineItemId, quantity) {\n \n const csrfTokenTag = document.querySelector('meta[name=csrf-token]');\n const csrfToken = csrfTokenTag ? csrfTokenTag.content : '';\n let instance = axios.create({ headers: { Accept: 'application/json', 'X-CSRF-Token': csrfToken } })\n\n return new Promise((resolve, reject) => {\n instance({\n method: \"patch\",\n url: \"/store/cart\",\n params: { location: window.location.pathname },\n data: { \"order\": { \"line_items_attributes\": {\"0\": {\"quantity\": quantity, \"id\": lineItemId } } } }\n }).then(({ data }) => {\n resolve(data)\n }).catch((error) => {\n reject(error)\n })\n })\n }\n\n function createCart(cartForm) {\n const csrfTokenTag = document.querySelector('meta[name=csrf-token]');\n const csrfToken = csrfTokenTag ? csrfTokenTag.content : '';\n let instance = axios.create({ headers: { Accept: 'application/json', 'X-CSRF-Token': csrfToken } })\n let data = new FormData(cartForm)\n return new Promise((resolve, reject) => {\n instance({\n method: \"post\",\n url: cartForm.action,\n params: { location: window.location.pathname },\n data: data\n }).then(({ data }) => {\n resolve(data)\n }).catch((error) => {\n reject(error)\n })\n })\n }\n\n function emptyOrder(orderNumber, orderGuestToken) {\n let instance = axios.create({ headers: { \"X-Spree-Order-Token\": orderGuestToken }})\n\n instance(\n {\n method: \"put\",\n url: `/store/api/orders/${orderNumber}/empty`\n }\n ).then(({ data }) => {\n Turbolinks.visit(location.toString())\n }).catch((error) => {\n })\n\n }\n\n function removeItem(lineItemId) {\n const csrfTokenTag = document.querySelector('meta[name=csrf-token]');\n const csrfToken = csrfTokenTag ? csrfTokenTag.content : '';\n let instance = axios.create({ headers: { Accept: 'application/json', 'X-CSRF-Token': csrfToken,}})\n\n return new Promise((resolve, reject) => {\n instance({\n method: \"patch\",\n url: \"/store/cart\",\n params: { location: window.location.pathname },\n data: { \"order\": { \"line_items_attributes\": {\"0\": {\"quantity\": 0, \"id\": lineItemId } } } }\n }).then(({ data }) => {\n resolve(data)\n }).catch((error) => {\n reject(error)\n })\n })\n }\n\n function updateOrder(orderId, orderGuestToken, data) {\n let instance = axios.create({ headers: { \"X-Spree-Order-Token\": orderGuestToken }})\n\n instance(\n {\n method: \"patch\",\n url: `/store/api/orders/${orderId}`,\n data: data\n }\n ).then(({ data }) => {\n if(window.location.pathname == \"/store/cart\") {\n Turbolinks.visit(location.toString())\n return;\n }\n let cartBag = document.querySelector(\".shopping-bag-item-count\")\n cartBag.innerText = data.total_quantity\n }).catch((error) => { })\n }\n\n return {\n updateCart,\n emptyOrder,\n createCart,\n removeItem\n }\n}\n"],"sourceRoot":""}