{"version":3,"sources":["webpack:///./src/views/Contact.vue?c0a8","webpack:///./node_modules/emailjs-com/es/store/store.js","webpack:///./node_modules/emailjs-com/es/methods/init/init.js","webpack:///./node_modules/emailjs-com/es/utils/validateParams.js","webpack:///./node_modules/emailjs-com/es/models/EmailJSResponseStatus.js","webpack:///./node_modules/emailjs-com/es/api/sendPost.js","webpack:///./node_modules/emailjs-com/es/methods/send/send.js","webpack:///./node_modules/emailjs-com/es/methods/sendForm/sendForm.js","webpack:///./node_modules/emailjs-com/es/index.js","webpack:///./src/views/Contact.vue","webpack:///./src/views/Contact.vue?763f","webpack:///./src/views/Contact.vue?aba4","webpack:///./src/views/Contact.vue?42db"],"names":["render","_vm","this","_h","$createElement","_c","_self","staticClass","attrs","VRow","key","_v","on","$event","preventDefault","sendEmail","apply","arguments","domProps","subject","staticRenderFns","store","_origin","init","userID","origin","_userID","validateParams","serviceID","templateID","EmailJSResponseStatus","httpResponse","status","text","responseText","sendPost","url","data","headers","Promise","resolve","reject","xhr","XMLHttpRequest","addEventListener","target","responseStatus","open","Object","keys","forEach","setRequestHeader","send","templatePrams","uID","params","lib_version","user_id","service_id","template_id","template_params","JSON","stringify","findHTMLForm","form","currentForm","document","querySelector","nodeName","sendForm","formData","FormData","append","Vue","extend","name","defaultForm","freeze","email","message","assign","computed","formIsValid","test","methods","$route","e","console","log","process","emailjs","then","result","alert","error","component"],"mappings":"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","file":"js/contact.dca14622.js","sourcesContent":["import { VRow } from 'vuetify/lib/components/VGrid';\n\nvar render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"contact mt-10 mt-md-16\"},[_c('transition-group',{attrs:{\"appear\":\"\",\"name\":\"contact__fade\"}},[_c(VRow,{key:\"0\",attrs:{\"no-gutters\":\"\",\"justify\":\"center\"}},[_c('h1',{staticClass:\"contact__header\"},[_vm._v(\"Contact Spencer Krips\")])]),_c('form',{key:\"0\",staticClass:\"contact__form my-6 mx-auto\",on:{\"submit\":function($event){$event.preventDefault();return _vm.sendEmail.apply(null, arguments)}}},[_c(VRow,{staticClass:\"mb-5\",attrs:{\"no-gutters\":\"\"}},[_c('input',{staticClass:\"contact__form--input px-2\",attrs:{\"placeholder\":\"Name *\",\"required\":\"\",\"name\":\"form_name\",\"type\":\"text\"}})]),_c(VRow,{staticClass:\"mb-5\",attrs:{\"no-gutters\":\"\"}},[_c('input',{staticClass:\"contact__form--input px-2\",attrs:{\"placeholder\":\"Email *\",\"required\":\"\",\"name\":\"form_email\",\"type\":\"email\"}})]),_c(VRow,{staticClass:\"mb-5\",attrs:{\"no-gutters\":\"\"}},[_c('input',{staticClass:\"contact__form--input px-2\",attrs:{\"placeholder\":\"Subject\",\"name\":\"form_subject\",\"type\":\"text\"},domProps:{\"value\":_vm.subject()}})]),_c(VRow,{staticClass:\"mb-5\",attrs:{\"no-gutters\":\"\"}},[_c('textarea',{staticClass:\"contact__form--message pa-2\",attrs:{\"placeholder\":\"Message *\",\"name\":\"form_message\",\"rows\":\"6\",\"required\":\"\"}})]),_c(VRow,{attrs:{\"no-gutters\":\"\"}},[_c('button',{staticClass:\"contact__form--button\",attrs:{\"type\":\"submit\"}},[_vm._v(\" Send message \")])])],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export const store = {\n _origin: 'https://api.emailjs.com',\n};\n","import { store } from '../../store/store';\n/**\n * Initiation\n * @param {string} userID - set the EmailJS user ID\n * @param {string} origin - set the EmailJS origin\n */\nexport const init = (userID, origin = 'https://api.emailjs.com') => {\n store._userID = userID;\n store._origin = origin;\n};\n","export const validateParams = (userID, serviceID, templateID) => {\n if (!userID) {\n throw 'The user ID is required. Visit https://dashboard.emailjs.com/admin/integration';\n }\n if (!serviceID) {\n throw 'The service ID is required. Visit https://dashboard.emailjs.com/admin';\n }\n if (!templateID) {\n throw 'The template ID is required. Visit https://dashboard.emailjs.com/admin/templates';\n }\n return true;\n};\n","export class EmailJSResponseStatus {\n constructor(httpResponse) {\n this.status = httpResponse.status;\n this.text = httpResponse.responseText;\n }\n}\n","import { EmailJSResponseStatus } from '../models/EmailJSResponseStatus';\nimport { store } from '../store/store';\nexport const sendPost = (url, data, headers = {}) => {\n return new Promise((resolve, reject) => {\n const xhr = new XMLHttpRequest();\n xhr.addEventListener('load', ({ target }) => {\n const responseStatus = new EmailJSResponseStatus(target);\n if (responseStatus.status === 200 || responseStatus.text === 'OK') {\n resolve(responseStatus);\n }\n else {\n reject(responseStatus);\n }\n });\n xhr.addEventListener('error', ({ target }) => {\n reject(new EmailJSResponseStatus(target));\n });\n xhr.open('POST', store._origin + url, true);\n Object.keys(headers).forEach((key) => {\n xhr.setRequestHeader(key, headers[key]);\n });\n xhr.send(data);\n });\n};\n","import { store } from '../../store/store';\nimport { validateParams } from '../../utils/validateParams';\nimport { sendPost } from '../../api/sendPost';\n/**\n * Send a template to the specific EmailJS service\n * @param {string} serviceID - the EmailJS service ID\n * @param {string} templateID - the EmailJS template ID\n * @param {object} templatePrams - the template params, what will be set to the EmailJS template\n * @param {string} userID - the EmailJS user ID\n * @returns {Promise<EmailJSResponseStatus>}\n */\nexport const send = (serviceID, templateID, templatePrams, userID) => {\n const uID = userID || store._userID;\n validateParams(uID, serviceID, templateID);\n const params = {\n lib_version: '3.2.0',\n user_id: uID,\n service_id: serviceID,\n template_id: templateID,\n template_params: templatePrams,\n };\n return sendPost('/api/v1.0/email/send', JSON.stringify(params), {\n 'Content-type': 'application/json',\n });\n};\n","import { store } from '../../store/store';\nimport { validateParams } from '../../utils/validateParams';\nimport { sendPost } from '../../api/sendPost';\nconst findHTMLForm = (form) => {\n let currentForm;\n if (typeof form === 'string') {\n currentForm = document.querySelector(form);\n }\n else {\n currentForm = form;\n }\n if (!currentForm || currentForm.nodeName !== 'FORM') {\n throw 'The 3rd parameter is expected to be the HTML form element or the style selector of form';\n }\n return currentForm;\n};\n/**\n * Send a form the specific EmailJS service\n * @param {string} serviceID - the EmailJS service ID\n * @param {string} templateID - the EmailJS template ID\n * @param {string | HTMLFormElement} form - the form element or selector\n * @param {string} userID - the EmailJS user ID\n * @returns {Promise<EmailJSResponseStatus>}\n */\nexport const sendForm = (serviceID, templateID, form, userID) => {\n const uID = userID || store._userID;\n const currentForm = findHTMLForm(form);\n validateParams(uID, serviceID, templateID);\n const formData = new FormData(currentForm);\n formData.append('lib_version', '3.2.0');\n formData.append('service_id', serviceID);\n formData.append('template_id', templateID);\n formData.append('user_id', uID);\n return sendPost('/api/v1.0/email/send-form', formData);\n};\n","import { init } from './methods/init/init';\nimport { send } from './methods/send/send';\nimport { sendForm } from './methods/sendForm/sendForm';\nexport { init, send, sendForm };\nexport default {\n init,\n send,\n sendForm,\n};\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport emailjs from \"emailjs-com\";\ndeclare module \"vue/types/vue\" {\n interface Vue {\n form: {\n name: string;\n email: string;\n subject: string;\n message: string;\n };\n }\n}\n\nexport default Vue.extend({\n name: \"Contact\",\n data() {\n const defaultForm = Object.freeze({\n name: \"\",\n email: \"\",\n subject: \"\",\n message: \"\",\n });\n\n return {\n form: Object.assign({}, defaultForm),\n defaultForm,\n };\n },\n\n computed: {\n formIsValid() {\n return (\n this.form.name &&\n this.form.email &&\n /.+@.+/.test(this.form.email) &&\n this.form.message\n );\n },\n },\n\n methods: {\n subject(): string {\n return this.$route.params.subject;\n },\n sendEmail(e: { target: string | HTMLFormElement }) {\n console.log(process.env.VUE_APP_EMAILJS_USER);\n emailjs\n .sendForm(\n process.env.VUE_APP_EMAILJS_SERVICE,\n process.env.VUE_APP_EMAILJS_TEMPLATE,\n e.target,\n process.env.VUE_APP_EMAILJS_USER\n )\n .then(\n (result) => {\n alert(\"Message Sent!\");\n console.log(\"SUCCESS!\", result.status, result.text);\n },\n (error) => {\n alert(\"There was a problem sending your message, please try again\");\n console.log(\"FAILED...\", error);\n }\n );\n },\n },\n});\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--15-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Contact.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--15-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Contact.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Contact.vue?vue&type=template&id=90729a10&scoped=true&\"\nimport script from \"./Contact.vue?vue&type=script&lang=ts&\"\nexport * from \"./Contact.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./Contact.vue?vue&type=style&index=0&id=90729a10&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"90729a10\",\n null\n \n)\n\nexport default component.exports","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Contact.vue?vue&type=style&index=0&id=90729a10&lang=scss&scoped=true&\""],"sourceRoot":""}