{"mappings":"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","sources":["","fetch-products.js"],"sourcesContent":["const currentPage = window.location.pathname;\nconst menuContainer = document.querySelector('.menu-icons');\nconst navigationContainer = document.querySelector('.navigation-container');\nconst productHeading = document.querySelector('.product-heading');\nconst header = document.querySelector('.header');\nlet openMenu = true;\nmenuContainer.addEventListener('click', ()=>{\n menuContainer.classList.toggle('change');\n if (openMenu) {\n navigationContainer.style.display = 'block';\n openMenu = false;\n } else {\n navigationContainer.style.display = 'none';\n openMenu = true;\n }\n});\n// Map pages to categories\nconst categoryMap = {\n '/sandalwood-products.html': 'Sandalwood Products',\n '/essential-oils.html': 'Essential Oils',\n '/premium-perfumes.html': 'Premium Perfumes'\n};\n// Inject the modal into the DOM once\nconst modalHTML = `\n
\n
\n ×\n

\n
\n
\n \n \"User\n \n
\n\n
\n \n \"Building\n \n
\n\n
\n \n \"Email\n \n
\n\n
\n \n \n
\n\n
\n \n \n
\n\n \n\n
\n
\n
\n
\n`;\n// Append the modal to the body\ndocument.body.insertAdjacentHTML('beforeend', modalHTML);\n// Get the category based on the current page\nconst category = categoryMap[currentPage];\nif (category) {\n const productList = document.querySelector('.category-products-container');\n const fetchProducts = async ()=>{\n try {\n // Fetch products for the specific category\n const response = await fetch(`https://api.anjumaromatics.com/api/products?category=${encodeURIComponent(category)}`);\n if (!response.ok) throw new Error('Failed to fetch products');\n const products = await response.json();\n // Display products\n if (products.length > 0) {\n document.querySelector('.loader').style.display = 'none';\n products.forEach((product, index)=>{\n let individualProductContainer = document.createElement('div');\n individualProductContainer.classList.add('category-product');\n // Dynamically create the \"View Details\" URL\n const productDetailsPage = `/${category.toLowerCase().replace(' ', '-')}-details.html?title=${product.title}`;\n // writing code as user can see name without hphen and with space\n function formatTitle(slug) {\n return slug.split('-') // Split by hyphen\n .map((word)=>word.charAt(0).toUpperCase() + word.slice(1)) // Capitalize each word\n .join(' '); // Join words with space\n }\n const formattedTitle = formatTitle(product.title);\n const individualProduct = `\n
\n ${formattedTitle}\n
\n \n
\n

${formattedTitle}

\n

${product.shortoverview}

\n\n
\n \n \n
\n
\n `;\n individualProductContainer.innerHTML = individualProduct;\n productList.append(individualProductContainer);\n });\n } else document.querySelector('.loader').style.display = 'block';\n } catch (error) {\n console.error('Error fetching products:', error);\n }\n };\n fetchProducts();\n}\n// acknowledment of form data sent\nfunction showAcknowledgment(message, isSuccess) {\n const statusDiv = document.getElementById('status');\n statusDiv.style.display = 'block'; // Show status\n statusDiv.style.color = isSuccess ? '#804e33' : 'red';\n statusDiv.textContent = message;\n setTimeout(()=>{\n statusDiv.textContent = '';\n closeInquiryPopup();\n }, 2500);\n}\n// sending mails\nasync function sendRequest(url, formData) {\n const statusDiv = document.getElementById('status');\n statusDiv.style.display = 'block';\n statusDiv.style.color = '#804e33'; // Indicate process\n statusDiv.textContent = \"Sending... \\u23F3\";\n try {\n const response = await fetch(url, {\n method: 'POST',\n body: formData\n });\n if (response.ok) showAcknowledgment(\"Inquiry sent successfully \\u2705, thank you\", true);\n else showAcknowledgment('Failed to send the message.', false);\n } catch (error) {\n showAcknowledgment('Error occurred while sending the message.', false);\n }\n}\nconst phoneInput = document.getElementById('phone');\nconst intlTelInput = window.intlTelInput(phoneInput, {\n utilsScript: 'https://cdnjs.cloudflare.com/ajax/libs/intl-tel-input/17.0.8/js/utils.js',\n preferredCountries: [\n 'us',\n 'gb',\n 'in',\n 'au'\n ],\n separateDialCode: true,\n initialCountry: 'auto',\n geoIpLookup: function(callback) {\n fetch('https://ipapi.co/json/').then((response)=>response.json()).then((data)=>callback(data.country_code)).catch(()=>callback('us')); // Fallback to US if IP lookup fails\n }\n});\n// storing form values in formdata\nwindow.sendMessage = function() {\n const productName = document.getElementById('product-inquiry-name').innerText;\n const userName = document.getElementById('name').value;\n const userEmail = document.getElementById('email').value;\n const userMessage = document.getElementById('message').value;\n const companyName = document.getElementById('company-name').value;\n const fullPhoneNumber = intlTelInput.getNumber();\n const formData = new FormData();\n formData.append('username', `${userName}`);\n formData.append('usermail', userEmail);\n formData.append('number', fullPhoneNumber);\n formData.append('message', userMessage);\n formData.append('company', companyName);\n formData.append('product', productName);\n sendRequest('https://api.anjumaromatics.com/api/send-inquiry', formData);\n};\ndocument.addEventListener('DOMContentLoaded', function() {\n const form = document.querySelector('.form-container');\n const nameInput = document.getElementById('name');\n const companyName = document.getElementById('company-name');\n const emailInput = document.getElementById('email');\n const phoneInput = document.getElementById('phone');\n const messageInput = document.getElementById('message');\n const submitButton = document.querySelector('.submit-button');\n const statusDiv = document.getElementById('status');\n submitButton.addEventListener('click', function(event) {\n let isValid = true;\n statusDiv.innerHTML = ''; // Clear previous messages\n // Name Validation\n if (nameInput.value.trim() === '') {\n showError('Name is required');\n isValid = false;\n }\n if (companyName.value.trim() === '') {\n showError('Company name is required');\n isValid = false;\n }\n // Email Validation (Strict)\n const email = emailInput.value.trim();\n if (!validateEmail(email)) {\n showError('Enter a valid email address');\n isValid = false;\n } else if (isDisposableEmail(email)) {\n showError('Temporary/disposable email addresses are not allowed');\n isValid = false;\n }\n // Phone Validation (Only digits, length 10-15)\n if (!validatePhone(phoneInput.value.trim())) {\n showError('Enter a valid phone number (digits only, 10-15 characters)');\n isValid = false;\n }\n // Message Validation\n if (messageInput.value.trim() === '') {\n showError('Message cannot be empty');\n isValid = false;\n }\n // If form is valid, simulate submission\n if (isValid) {\n statusDiv.style.color = 'green';\n sendMessage();\n form.reset();\n }\n });\n function validateEmail(email) {\n const emailRegex = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$/;\n return emailRegex.test(email);\n }\n function validatePhone(phone) {\n const phoneRegex = /^[0-9]{10,15}$/;\n return phoneRegex.test(phone);\n }\n function isDisposableEmail(email) {\n const tempEmailDomains = [\n 'mailinator.com',\n 'tempmail.com',\n 'disposablemail.com',\n 'guerrillamail.com',\n '10minutemail.com',\n 'yopmail.com',\n 'fakeinbox.com',\n 'throwawaymail.com',\n 'getnada.com',\n 'temp-mail.org',\n 'maildrop.cc',\n 'sharklasers.com',\n 'anonbox.net',\n 'mailsac.com',\n 'mytemp.email',\n 'mailnesia.com'\n ];\n const domain = email.split('@')[1];\n return tempEmailDomains.includes(domain);\n }\n function showError(message) {\n const errorElement = document.createElement('p');\n errorElement.style.color = 'red';\n errorElement.textContent = message;\n statusDiv.appendChild(errorElement);\n }\n});\nwindow.openInquiryPopup = function(productName) {\n document.querySelector('.modal').style.display = 'block';\n document.getElementById('product-inquiry-name').innerText = productName;\n};\nwindow.closeInquiryPopup = function() {\n document.querySelector('.modal').style.display = 'none';\n resetValue();\n};\nfunction resetValue() {\n document.getElementById('name').value = '';\n document.getElementById('email').value = '';\n document.getElementById('phone').value = '';\n document.getElementById('message').value = '';\n document.getElementById('company-name').value = '';\n document.getElementById('status').innerText = '';\n}\nwindow.onclick = function(event) {\n let modal = document.querySelector('.modal');\n if (event.target === modal) {\n modal.style.display = 'none';\n resetValue();\n }\n};\n\n//# sourceMappingURL=essential-oils.7644ca2b.js.map\n","const currentPage = window.location.pathname;\r\n\r\nconst menuContainer = document.querySelector('.menu-icons');\r\nconst navigationContainer = document.querySelector('.navigation-container');\r\nconst productHeading = document.querySelector('.product-heading');\r\n\r\nconst header = document.querySelector('.header');\r\n\r\nlet openMenu = true;\r\nmenuContainer.addEventListener('click', () => {\r\n menuContainer.classList.toggle('change');\r\n if (openMenu) {\r\n navigationContainer.style.display = 'block';\r\n openMenu = false;\r\n } else {\r\n navigationContainer.style.display = 'none';\r\n openMenu = true;\r\n }\r\n});\r\n\r\n// Map pages to categories\r\nconst categoryMap = {\r\n '/sandalwood-products.html': 'Sandalwood Products',\r\n '/essential-oils.html': 'Essential Oils',\r\n '/premium-perfumes.html': 'Premium Perfumes',\r\n};\r\n\r\n// Inject the modal into the DOM once\r\nconst modalHTML = `\r\n
\r\n
\r\n ×\r\n

\r\n
\r\n
\r\n \r\n \"User\r\n \r\n
\r\n\r\n
\r\n \r\n \"Building\r\n \r\n
\r\n\r\n
\r\n \r\n \"Email\r\n \r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n\r\n \r\n\r\n
\r\n
\r\n
\r\n
\r\n`;\r\n\r\n// Append the modal to the body\r\ndocument.body.insertAdjacentHTML('beforeend', modalHTML);\r\n\r\n// Get the category based on the current page\r\nconst category = categoryMap[currentPage];\r\n\r\nif (category) {\r\n const productList = document.querySelector('.category-products-container');\r\n\r\n const fetchProducts = async () => {\r\n try {\r\n // Fetch products for the specific category\r\n const response = await fetch(\r\n `https://api.anjumaromatics.com/api/products?category=${encodeURIComponent(\r\n category\r\n )}`\r\n );\r\n if (!response.ok) throw new Error('Failed to fetch products');\r\n\r\n const products = await response.json();\r\n // Display products\r\n if (products.length > 0) {\r\n document.querySelector('.loader').style.display = 'none';\r\n products.forEach((product, index) => {\r\n let individualProductContainer =\r\n document.createElement('div');\r\n individualProductContainer.classList.add(\r\n 'category-product'\r\n );\r\n\r\n // Dynamically create the \"View Details\" URL\r\n const productDetailsPage = `/${category\r\n .toLowerCase()\r\n .replace(' ', '-')}-details.html?title=${product.title}`;\r\n\r\n // writing code as user can see name without hphen and with space\r\n\r\n function formatTitle(slug) {\r\n return slug\r\n .split('-') // Split by hyphen\r\n .map(\r\n (word) =>\r\n word.charAt(0).toUpperCase() + word.slice(1)\r\n ) // Capitalize each word\r\n .join(' '); // Join words with space\r\n }\r\n\r\n const formattedTitle = formatTitle(product.title);\r\n\r\n const individualProduct = `\r\n
\r\n ${formattedTitle}\r\n
\r\n \r\n
\r\n

${formattedTitle}

\r\n

${\r\n product.shortoverview\r\n }

\r\n\r\n
\r\n \r\n \r\n
\r\n
\r\n `;\r\n\r\n individualProductContainer.innerHTML = individualProduct;\r\n\r\n productList.append(individualProductContainer);\r\n });\r\n } else {\r\n document.querySelector('.loader').style.display = 'block';\r\n }\r\n } catch (error) {\r\n console.error('Error fetching products:', error);\r\n }\r\n };\r\n\r\n fetchProducts();\r\n}\r\n\r\n// acknowledment of form data sent\r\n\r\nfunction showAcknowledgment(message, isSuccess) {\r\n const statusDiv = document.getElementById('status');\r\n statusDiv.style.display = 'block'; // Show status\r\n statusDiv.style.color = isSuccess ? '#804e33' : 'red';\r\n statusDiv.textContent = message;\r\n setTimeout(() => {\r\n statusDiv.textContent = '';\r\n closeInquiryPopup();\r\n }, 2500);\r\n}\r\n\r\n// sending mails\r\nasync function sendRequest(url, formData) {\r\n const statusDiv = document.getElementById('status');\r\n statusDiv.style.display = 'block';\r\n statusDiv.style.color = '#804e33'; // Indicate process\r\n statusDiv.textContent = 'Sending... ⏳';\r\n\r\n try {\r\n const response = await fetch(url, {\r\n method: 'POST',\r\n body: formData,\r\n });\r\n\r\n if (response.ok) {\r\n showAcknowledgment('Inquiry sent successfully ✅, thank you', true);\r\n } else {\r\n showAcknowledgment('Failed to send the message.', false);\r\n }\r\n } catch (error) {\r\n showAcknowledgment('Error occurred while sending the message.', false);\r\n }\r\n}\r\n\r\nconst phoneInput = document.getElementById('phone');\r\nconst intlTelInput = window.intlTelInput(phoneInput, {\r\n utilsScript:\r\n 'https://cdnjs.cloudflare.com/ajax/libs/intl-tel-input/17.0.8/js/utils.js', // Utility script for validation\r\n preferredCountries: ['us', 'gb', 'in', 'au'], // Preferred countries\r\n separateDialCode: true, // Show country code separately\r\n initialCountry: 'auto', // Auto-detect user's country\r\n geoIpLookup: function (callback) {\r\n fetch('https://ipapi.co/json/')\r\n .then((response) => response.json())\r\n .then((data) => callback(data.country_code))\r\n .catch(() => callback('us')); // Fallback to US if IP lookup fails\r\n },\r\n});\r\n\r\n// storing form values in formdata\r\nwindow.sendMessage = function () {\r\n const productName = document.getElementById(\r\n 'product-inquiry-name'\r\n ).innerText;\r\n\r\n const userName = document.getElementById('name').value;\r\n const userEmail = document.getElementById('email').value;\r\n const userMessage = document.getElementById('message').value;\r\n const companyName = document.getElementById('company-name').value;\r\n const fullPhoneNumber = intlTelInput.getNumber();\r\n\r\n const formData = new FormData();\r\n formData.append('username', `${userName}`);\r\n formData.append('usermail', userEmail);\r\n formData.append('number', fullPhoneNumber);\r\n formData.append('message', userMessage);\r\n formData.append('company', companyName);\r\n formData.append('product', productName);\r\n sendRequest('https://api.anjumaromatics.com/api/send-inquiry', formData);\r\n};\r\n\r\ndocument.addEventListener('DOMContentLoaded', function () {\r\n const form = document.querySelector('.form-container');\r\n const nameInput = document.getElementById('name');\r\n const companyName = document.getElementById('company-name');\r\n const emailInput = document.getElementById('email');\r\n const phoneInput = document.getElementById('phone');\r\n const messageInput = document.getElementById('message');\r\n const submitButton = document.querySelector('.submit-button');\r\n const statusDiv = document.getElementById('status');\r\n\r\n submitButton.addEventListener('click', function (event) {\r\n let isValid = true;\r\n statusDiv.innerHTML = ''; // Clear previous messages\r\n\r\n // Name Validation\r\n if (nameInput.value.trim() === '') {\r\n showError('Name is required');\r\n isValid = false;\r\n }\r\n\r\n if (companyName.value.trim() === '') {\r\n showError('Company name is required');\r\n isValid = false;\r\n }\r\n\r\n // Email Validation (Strict)\r\n const email = emailInput.value.trim();\r\n if (!validateEmail(email)) {\r\n showError('Enter a valid email address');\r\n isValid = false;\r\n } else if (isDisposableEmail(email)) {\r\n showError('Temporary/disposable email addresses are not allowed');\r\n isValid = false;\r\n }\r\n\r\n // Phone Validation (Only digits, length 10-15)\r\n if (!validatePhone(phoneInput.value.trim())) {\r\n showError(\r\n 'Enter a valid phone number (digits only, 10-15 characters)'\r\n );\r\n isValid = false;\r\n }\r\n\r\n // Message Validation\r\n if (messageInput.value.trim() === '') {\r\n showError('Message cannot be empty');\r\n isValid = false;\r\n }\r\n\r\n // If form is valid, simulate submission\r\n if (isValid) {\r\n statusDiv.style.color = 'green';\r\n sendMessage();\r\n form.reset();\r\n }\r\n });\r\n\r\n function validateEmail(email) {\r\n const emailRegex = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$/;\r\n return emailRegex.test(email);\r\n }\r\n\r\n function validatePhone(phone) {\r\n const phoneRegex = /^[0-9]{10,15}$/;\r\n return phoneRegex.test(phone);\r\n }\r\n\r\n function isDisposableEmail(email) {\r\n const tempEmailDomains = [\r\n 'mailinator.com',\r\n 'tempmail.com',\r\n 'disposablemail.com',\r\n 'guerrillamail.com',\r\n '10minutemail.com',\r\n 'yopmail.com',\r\n 'fakeinbox.com',\r\n 'throwawaymail.com',\r\n 'getnada.com',\r\n 'temp-mail.org',\r\n 'maildrop.cc',\r\n 'sharklasers.com',\r\n 'anonbox.net',\r\n 'mailsac.com',\r\n 'mytemp.email',\r\n 'mailnesia.com',\r\n ];\r\n\r\n const domain = email.split('@')[1];\r\n return tempEmailDomains.includes(domain);\r\n }\r\n\r\n function showError(message) {\r\n const errorElement = document.createElement('p');\r\n errorElement.style.color = 'red';\r\n errorElement.textContent = message;\r\n statusDiv.appendChild(errorElement);\r\n }\r\n});\r\n\r\nwindow.openInquiryPopup = function (productName) {\r\n document.querySelector('.modal').style.display = 'block';\r\n document.getElementById('product-inquiry-name').innerText = productName;\r\n};\r\n\r\nwindow.closeInquiryPopup = function () {\r\n document.querySelector('.modal').style.display = 'none';\r\n resetValue();\r\n};\r\n\r\nfunction resetValue() {\r\n document.getElementById('name').value = '';\r\n document.getElementById('email').value = '';\r\n document.getElementById('phone').value = '';\r\n document.getElementById('message').value = '';\r\n document.getElementById('company-name').value = '';\r\n document.getElementById('status').innerText = '';\r\n}\r\n\r\nwindow.onclick = function (event) {\r\n let modal = document.querySelector('.modal');\r\n if (event.target === modal) {\r\n modal.style.display = 'none';\r\n resetValue();\r\n }\r\n};\r\n"],"names":["currentPage","window","location","pathname","menuContainer","document","querySelector","navigationContainer","openMenu","addEventListener","classList","toggle","style","display","modalHTML","body","insertAdjacentHTML","category","categoryMap","productList","fetchProducts","response","fetch","encodeURIComponent","ok","Error","products","json","length","forEach","product","index","individualProductContainer","createElement","add","productDetailsPage","toLowerCase","replace","title","formattedTitle","slug","split","map","word","charAt","toUpperCase","slice","join","individualProduct","image","shortoverview","innerHTML","append","error","console","showAcknowledgment","message","isSuccess","statusDiv","getElementById","color","textContent","setTimeout","closeInquiryPopup","sendRequest","url","formData","method","phoneInput","intlTelInput","utilsScript","preferredCountries","separateDialCode","initialCountry","geoIpLookup","callback","then","data","country_code","catch","resetValue","value","innerText","sendMessage","productName","userName","userEmail","userMessage","companyName","fullPhoneNumber","getNumber","FormData","form","nameInput","emailInput","messageInput","submitButton","showError","errorElement","appendChild","event","phone","isValid","trim","email","emailRegex","test","tempEmailDomains","includes","phoneRegex","reset","openInquiryPopup","onclick","modal","target"],"version":3,"file":"essential-oils.7644ca2b.js.map"}