{"version":3,"file":"@emailjs-DfBlkqaH.js","sources":["../../node_modules/@emailjs/browser/es/models/EmailJSResponseStatus.js","../../node_modules/@emailjs/browser/es/utils/createWebStorage/createWebStorage.js","../../node_modules/@emailjs/browser/es/store/store.js","../../node_modules/@emailjs/browser/es/utils/buildOptions/buildOptions.js","../../node_modules/@emailjs/browser/es/methods/init/init.js","../../node_modules/@emailjs/browser/es/api/sendPost.js","../../node_modules/@emailjs/browser/es/utils/validateParams/validateParams.js","../../node_modules/@emailjs/browser/es/utils/validateTemplateParams/validateTemplateParams.js","../../node_modules/@emailjs/browser/es/utils/isHeadless/isHeadless.js","../../node_modules/@emailjs/browser/es/errors/headlessError/headlessError.js","../../node_modules/@emailjs/browser/es/utils/validateBlockListParams/validateBlockListParams.js","../../node_modules/@emailjs/browser/es/utils/isBlockedValueInParams/isBlockedValueInParams.js","../../node_modules/@emailjs/browser/es/errors/blockedEmailError/blockedEmailError.js","../../node_modules/@emailjs/browser/es/utils/validateLimitRateParams/validateLimitRateParams.js","../../node_modules/@emailjs/browser/es/utils/isLimitRateHit/isLimitRateHit.js","../../node_modules/@emailjs/browser/es/errors/limitRateError/limitRateError.js","../../node_modules/@emailjs/browser/es/methods/send/send.js","../../node_modules/@emailjs/browser/es/utils/validateForm/validateForm.js","../../node_modules/@emailjs/browser/es/methods/sendForm/sendForm.js","../../node_modules/@emailjs/browser/es/index.js"],"sourcesContent":["export class EmailJSResponseStatus {\n constructor(_status = 0, _text = 'Network Error') {\n this.status = _status;\n this.text = _text;\n }\n}\n","export const createWebStorage = () => {\n if (typeof localStorage === 'undefined')\n return;\n return {\n get: (key) => Promise.resolve(localStorage.getItem(key)),\n set: (key, value) => Promise.resolve(localStorage.setItem(key, value)),\n remove: (key) => Promise.resolve(localStorage.removeItem(key)),\n };\n};\n","import { createWebStorage } from '../utils/createWebStorage/createWebStorage';\nexport const store = {\n origin: 'https://api.emailjs.com',\n blockHeadless: false,\n storageProvider: createWebStorage(),\n};\n","export const buildOptions = (options) => {\n if (!options)\n return {};\n // support compatibility with SDK v3\n if (typeof options === 'string') {\n return {\n publicKey: options,\n };\n }\n // eslint-disable-next-line @typescript-eslint/no-base-to-string\n if (options.toString() === '[object Object]') {\n return options;\n }\n return {};\n};\n","import { store } from '../../store/store';\nimport { buildOptions } from '../../utils/buildOptions/buildOptions';\n/**\n * EmailJS global SDK config\n * @param {object} options - the EmailJS global SDK config options\n * @param {string} origin - the non-default EmailJS origin\n */\nexport const init = (options, origin = 'https://api.emailjs.com') => {\n if (!options)\n return;\n const opts = buildOptions(options);\n store.publicKey = opts.publicKey;\n store.blockHeadless = opts.blockHeadless;\n store.storageProvider = opts.storageProvider;\n store.blockList = opts.blockList;\n store.limitRate = opts.limitRate;\n store.origin = opts.origin || origin;\n};\n","import { EmailJSResponseStatus } from '../models/EmailJSResponseStatus';\nimport { store } from '../store/store';\nexport const sendPost = async (url, data, headers = {}) => {\n const response = await fetch(store.origin + url, {\n method: 'POST',\n headers,\n body: data,\n });\n const message = await response.text();\n const responseStatus = new EmailJSResponseStatus(response.status, message);\n if (response.ok) {\n return responseStatus;\n }\n throw responseStatus;\n};\n","export const validateParams = (publicKey, serviceID, templateID) => {\n if (!publicKey || typeof publicKey !== 'string') {\n throw 'The public key is required. Visit https://dashboard.emailjs.com/admin/account';\n }\n if (!serviceID || typeof serviceID !== 'string') {\n throw 'The service ID is required. Visit https://dashboard.emailjs.com/admin';\n }\n if (!templateID || typeof templateID !== 'string') {\n throw 'The template ID is required. Visit https://dashboard.emailjs.com/admin/templates';\n }\n};\n","export const validateTemplateParams = (templateParams) => {\n // eslint-disable-next-line @typescript-eslint/no-base-to-string\n if (templateParams && templateParams.toString() !== '[object Object]') {\n throw 'The template params have to be the object. Visit https://www.emailjs.com/docs/sdk/send/';\n }\n};\n","export const isHeadless = (navigator) => {\n return navigator.webdriver || !navigator.languages || navigator.languages.length === 0;\n};\n","import { EmailJSResponseStatus } from '../../models/EmailJSResponseStatus';\nexport const headlessError = () => {\n return new EmailJSResponseStatus(451, 'Unavailable For Headless Browser');\n};\n","export const validateBlockListParams = (list, watchVariable) => {\n if (!Array.isArray(list)) {\n throw 'The BlockList list has to be an array';\n }\n if (typeof watchVariable !== 'string') {\n throw 'The BlockList watchVariable has to be a string';\n }\n};\n","import { validateBlockListParams } from '../validateBlockListParams/validateBlockListParams';\nconst isBlockListDisabled = (options) => {\n return !options.list?.length || !options.watchVariable;\n};\nconst getValue = (data, name) => {\n return data instanceof FormData ? data.get(name) : data[name];\n};\nexport const isBlockedValueInParams = (options, params) => {\n if (isBlockListDisabled(options))\n return false;\n validateBlockListParams(options.list, options.watchVariable);\n const value = getValue(params, options.watchVariable);\n if (typeof value !== 'string')\n return false;\n return options.list.includes(value);\n};\n","import { EmailJSResponseStatus } from '../../models/EmailJSResponseStatus';\nexport const blockedEmailError = () => {\n return new EmailJSResponseStatus(403, 'Forbidden');\n};\n","export const validateLimitRateParams = (throttle, id) => {\n if (typeof throttle !== 'number' || throttle < 0) {\n throw 'The LimitRate throttle has to be a positive number';\n }\n if (id && typeof id !== 'string') {\n throw 'The LimitRate ID has to be a non-empty string';\n }\n};\n","import { validateLimitRateParams } from '../validateLimitRateParams/validateLimitRateParams';\nconst getLeftTime = async (id, throttle, storage) => {\n const lastTime = Number((await storage.get(id)) || 0);\n return throttle - Date.now() + lastTime;\n};\nexport const isLimitRateHit = async (defaultID, options, storage) => {\n if (!options.throttle || !storage) {\n return false;\n }\n validateLimitRateParams(options.throttle, options.id);\n const id = options.id || defaultID;\n const leftTime = await getLeftTime(id, options.throttle, storage);\n if (leftTime > 0) {\n return true;\n }\n await storage.set(id, Date.now().toString());\n return false;\n};\n","import { EmailJSResponseStatus } from '../../models/EmailJSResponseStatus';\nexport const limitRateError = () => {\n return new EmailJSResponseStatus(429, 'Too Many Requests');\n};\n","import { store } from '../../store/store';\nimport { sendPost } from '../../api/sendPost';\nimport { buildOptions } from '../../utils/buildOptions/buildOptions';\nimport { validateParams } from '../../utils/validateParams/validateParams';\nimport { validateTemplateParams } from '../../utils/validateTemplateParams/validateTemplateParams';\nimport { isHeadless } from '../../utils/isHeadless/isHeadless';\nimport { headlessError } from '../../errors/headlessError/headlessError';\nimport { isBlockedValueInParams } from '../../utils/isBlockedValueInParams/isBlockedValueInParams';\nimport { blockedEmailError } from '../../errors/blockedEmailError/blockedEmailError';\nimport { isLimitRateHit } from '../../utils/isLimitRateHit/isLimitRateHit';\nimport { limitRateError } from '../../errors/limitRateError/limitRateError';\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} templateParams - the template params, what will be set to the EmailJS template\n * @param {object} options - the EmailJS SDK config options\n * @returns {Promise}\n */\nexport const send = async (serviceID, templateID, templateParams, options) => {\n const opts = buildOptions(options);\n const publicKey = opts.publicKey || store.publicKey;\n const blockHeadless = opts.blockHeadless || store.blockHeadless;\n const storageProvider = opts.storageProvider || store.storageProvider;\n const blockList = { ...store.blockList, ...opts.blockList };\n const limitRate = { ...store.limitRate, ...opts.limitRate };\n if (blockHeadless && isHeadless(navigator)) {\n return Promise.reject(headlessError());\n }\n validateParams(publicKey, serviceID, templateID);\n validateTemplateParams(templateParams);\n if (templateParams && isBlockedValueInParams(blockList, templateParams)) {\n return Promise.reject(blockedEmailError());\n }\n if (await isLimitRateHit(location.pathname, limitRate, storageProvider)) {\n return Promise.reject(limitRateError());\n }\n const params = {\n lib_version: '4.4.1',\n user_id: publicKey,\n service_id: serviceID,\n template_id: templateID,\n template_params: templateParams,\n };\n return sendPost('/api/v1.0/email/send', JSON.stringify(params), {\n 'Content-type': 'application/json',\n });\n};\n","export const validateForm = (form) => {\n if (!form || form.nodeName !== 'FORM') {\n throw 'The 3rd parameter is expected to be the HTML form element or the style selector of the form';\n }\n};\n","import { store } from '../../store/store';\nimport { sendPost } from '../../api/sendPost';\nimport { buildOptions } from '../../utils/buildOptions/buildOptions';\nimport { validateForm } from '../../utils/validateForm/validateForm';\nimport { validateParams } from '../../utils/validateParams/validateParams';\nimport { isHeadless } from '../../utils/isHeadless/isHeadless';\nimport { headlessError } from '../../errors/headlessError/headlessError';\nimport { isBlockedValueInParams } from '../../utils/isBlockedValueInParams/isBlockedValueInParams';\nimport { blockedEmailError } from '../../errors/blockedEmailError/blockedEmailError';\nimport { isLimitRateHit } from '../../utils/isLimitRateHit/isLimitRateHit';\nimport { limitRateError } from '../../errors/limitRateError/limitRateError';\nconst findHTMLForm = (form) => {\n return typeof form === 'string' ? document.querySelector(form) : form;\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 {object} options - the EmailJS SDK config options\n * @returns {Promise}\n */\nexport const sendForm = async (serviceID, templateID, form, options) => {\n const opts = buildOptions(options);\n const publicKey = opts.publicKey || store.publicKey;\n const blockHeadless = opts.blockHeadless || store.blockHeadless;\n const storageProvider = store.storageProvider || opts.storageProvider;\n const blockList = { ...store.blockList, ...opts.blockList };\n const limitRate = { ...store.limitRate, ...opts.limitRate };\n if (blockHeadless && isHeadless(navigator)) {\n return Promise.reject(headlessError());\n }\n const currentForm = findHTMLForm(form);\n validateParams(publicKey, serviceID, templateID);\n validateForm(currentForm);\n const formData = new FormData(currentForm);\n if (isBlockedValueInParams(blockList, formData)) {\n return Promise.reject(blockedEmailError());\n }\n if (await isLimitRateHit(location.pathname, limitRate, storageProvider)) {\n return Promise.reject(limitRateError());\n }\n formData.append('lib_version', '4.4.1');\n formData.append('service_id', serviceID);\n formData.append('template_id', templateID);\n formData.append('user_id', publicKey);\n return sendPost('/api/v1.0/email/send-form', formData);\n};\n","import { EmailJSResponseStatus } from './models/EmailJSResponseStatus';\nimport { init } from './methods/init/init';\nimport { send } from './methods/send/send';\nimport { sendForm } from './methods/sendForm/sendForm';\nexport { init, send, sendForm, EmailJSResponseStatus };\nexport default {\n init,\n send,\n sendForm,\n EmailJSResponseStatus,\n};\n"],"names":["EmailJSResponseStatus","_status","_text","createWebStorage","key","value","store","buildOptions","options","init","origin","opts","sendPost","url","data","headers","response","message","responseStatus","validateParams","publicKey","serviceID","templateID","validateTemplateParams","templateParams","isHeadless","navigator","headlessError","validateBlockListParams","list","watchVariable","isBlockListDisabled","_a","getValue","name","isBlockedValueInParams","params","blockedEmailError","validateLimitRateParams","throttle","id","getLeftTime","storage","lastTime","isLimitRateHit","defaultID","limitRateError","send","blockHeadless","storageProvider","blockList","limitRate","validateForm","form","findHTMLForm","sendForm","currentForm","formData","emailjs"],"mappings":"AAAO,MAAMA,CAAsB,CAC/B,YAAYC,EAAU,EAAGC,EAAQ,gBAAiB,CAC9C,KAAK,OAASD,EACd,KAAK,KAAOC,CACf,CACL,CCLO,MAAMC,EAAmB,IAAM,CAClC,GAAI,SAAO,aAAiB,KAE5B,MAAO,CACH,IAAMC,GAAQ,QAAQ,QAAQ,aAAa,QAAQA,CAAG,CAAC,EACvD,IAAK,CAACA,EAAKC,IAAU,QAAQ,QAAQ,aAAa,QAAQD,EAAKC,CAAK,CAAC,EACrE,OAASD,GAAQ,QAAQ,QAAQ,aAAa,WAAWA,CAAG,CAAC,CACrE,CACA,ECPaE,EAAQ,CACjB,OAAQ,0BACR,cAAe,GACf,gBAAiBH,EAAkB,CACvC,ECLaI,EAAgBC,GACpBA,EAGD,OAAOA,GAAY,SACZ,CACH,UAAWA,CACvB,EAGQA,EAAQ,SAAU,IAAK,kBAChBA,EAEJ,GAXI,GCKFC,EAAO,CAACD,EAASE,EAAS,4BAA8B,CACjE,GAAI,CAACF,EACD,OACJ,MAAMG,EAAOJ,EAAaC,CAAO,EACjCF,EAAM,UAAYK,EAAK,UACvBL,EAAM,cAAgBK,EAAK,cAC3BL,EAAM,gBAAkBK,EAAK,gBAC7BL,EAAM,UAAYK,EAAK,UACvBL,EAAM,UAAYK,EAAK,UACvBL,EAAM,OAASK,EAAK,QAAUD,CAClC,ECfaE,EAAW,MAAOC,EAAKC,EAAMC,EAAU,CAAA,IAAO,CACvD,MAAMC,EAAW,MAAM,MAAMV,EAAM,OAASO,EAAK,CAC7C,OAAQ,OACR,QAAAE,EACA,KAAMD,CACd,CAAK,EACKG,EAAU,MAAMD,EAAS,OACzBE,EAAiB,IAAIlB,EAAsBgB,EAAS,OAAQC,CAAO,EACzE,GAAID,EAAS,GACT,OAAOE,EAEX,MAAMA,CACV,ECdaC,EAAiB,CAACC,EAAWC,EAAWC,IAAe,CAChE,GAAI,CAACF,GAAa,OAAOA,GAAc,SACnC,KAAM,gFAEV,GAAI,CAACC,GAAa,OAAOA,GAAc,SACnC,KAAM,wEAEV,GAAI,CAACC,GAAc,OAAOA,GAAe,SACrC,KAAM,kFAEd,ECVaC,EAA0BC,GAAmB,CAEtD,GAAIA,GAAkBA,EAAe,SAAQ,IAAO,kBAChD,KAAM,yFAEd,ECLaC,EAAcC,GAChBA,EAAU,WAAa,CAACA,EAAU,WAAaA,EAAU,UAAU,SAAW,ECA5EC,EAAgB,IAClB,IAAI3B,EAAsB,IAAK,kCAAkC,ECF/D4B,EAA0B,CAACC,EAAMC,IAAkB,CAC5D,GAAI,CAAC,MAAM,QAAQD,CAAI,EACnB,KAAM,wCAEV,GAAI,OAAOC,GAAkB,SACzB,KAAM,gDAEd,ECNMC,EAAuBvB,GAAY,CXDlC,IAAAwB,EWEH,MAAO,GAACA,EAAAxB,EAAQ,OAAR,MAAAwB,EAAc,SAAU,CAACxB,EAAQ,aAC7C,EACMyB,EAAW,CAACnB,EAAMoB,IACbpB,aAAgB,SAAWA,EAAK,IAAIoB,CAAI,EAAIpB,EAAKoB,CAAI,EAEnDC,EAAyB,CAAC3B,EAAS4B,IAAW,CACvD,GAAIL,EAAoBvB,CAAO,EAC3B,MAAO,GACXoB,EAAwBpB,EAAQ,KAAMA,EAAQ,aAAa,EAC3D,MAAMH,EAAQ4B,EAASG,EAAQ5B,EAAQ,aAAa,EACpD,OAAI,OAAOH,GAAU,SACV,GACJG,EAAQ,KAAK,SAASH,CAAK,CACtC,ECdagC,EAAoB,IACtB,IAAIrC,EAAsB,IAAK,WAAW,ECFxCsC,EAA0B,CAACC,EAAUC,IAAO,CACrD,GAAI,OAAOD,GAAa,UAAYA,EAAW,EAC3C,KAAM,qDAEV,GAAIC,GAAM,OAAOA,GAAO,SACpB,KAAM,+CAEd,ECNMC,EAAc,MAAOD,EAAID,EAAUG,IAAY,CACjD,MAAMC,EAAW,OAAQ,MAAMD,EAAQ,IAAIF,CAAE,GAAM,CAAC,EACpD,OAAOD,EAAW,KAAK,IAAG,EAAKI,CACnC,EACaC,EAAiB,MAAOC,EAAWrC,EAASkC,IAAY,CACjE,GAAI,CAAClC,EAAQ,UAAY,CAACkC,EACtB,MAAO,GAEXJ,EAAwB9B,EAAQ,SAAUA,EAAQ,EAAE,EACpD,MAAMgC,EAAKhC,EAAQ,IAAMqC,EAEzB,OADiB,MAAMJ,EAAYD,EAAIhC,EAAQ,SAAUkC,CAAO,EACjD,EACJ,IAEX,MAAMA,EAAQ,IAAIF,EAAI,KAAK,IAAK,EAAC,SAAQ,CAAE,EACpC,GACX,EChBaM,EAAiB,IACnB,IAAI9C,EAAsB,IAAK,mBAAmB,ECiBhD+C,EAAO,MAAO1B,EAAWC,EAAYE,EAAgBhB,IAAY,CAC1E,MAAMG,EAAOJ,EAAaC,CAAO,EAC3BY,EAAYT,EAAK,WAAaL,EAAM,UACpC0C,EAAgBrC,EAAK,eAAiBL,EAAM,cAC5C2C,EAAkBtC,EAAK,iBAAmBL,EAAM,gBAChD4C,EAAY,CAAE,GAAG5C,EAAM,UAAW,GAAGK,EAAK,WAC1CwC,EAAY,CAAE,GAAG7C,EAAM,UAAW,GAAGK,EAAK,WAChD,OAAIqC,GAAiBvB,EAAW,SAAS,EAC9B,QAAQ,OAAOE,EAAa,CAAE,GAEzCR,EAAeC,EAAWC,EAAWC,CAAU,EAC/CC,EAAuBC,CAAc,EACjCA,GAAkBW,EAAuBe,EAAW1B,CAAc,EAC3D,QAAQ,OAAOa,EAAiB,CAAE,EAEzC,MAAMO,EAAe,SAAS,SAAUO,EAAWF,CAAe,EAC3D,QAAQ,OAAOH,EAAc,CAAE,EASnClC,EAAS,uBAAwB,KAAK,UAP9B,CACX,YAAa,QACb,QAASQ,EACT,WAAYC,EACZ,YAAaC,EACb,gBAAiBE,CACzB,CACiE,EAAG,CAC5D,eAAgB,kBACxB,CAAK,EACL,EC/Ca4B,EAAgBC,GAAS,CAClC,GAAI,CAACA,GAAQA,EAAK,WAAa,OAC3B,KAAM,6FAEd,ECOMC,EAAgBD,GACX,OAAOA,GAAS,SAAW,SAAS,cAAcA,CAAI,EAAIA,EAUxDE,EAAW,MAAOlC,EAAWC,EAAY+B,EAAM7C,IAAY,CACpE,MAAMG,EAAOJ,EAAaC,CAAO,EAC3BY,EAAYT,EAAK,WAAaL,EAAM,UACpC0C,EAAgBrC,EAAK,eAAiBL,EAAM,cAC5C2C,EAAkB3C,EAAM,iBAAmBK,EAAK,gBAChDuC,EAAY,CAAE,GAAG5C,EAAM,UAAW,GAAGK,EAAK,WAC1CwC,EAAY,CAAE,GAAG7C,EAAM,UAAW,GAAGK,EAAK,WAChD,GAAIqC,GAAiBvB,EAAW,SAAS,EACrC,OAAO,QAAQ,OAAOE,EAAa,CAAE,EAEzC,MAAM6B,EAAcF,EAAaD,CAAI,EACrClC,EAAeC,EAAWC,EAAWC,CAAU,EAC/C8B,EAAaI,CAAW,EACxB,MAAMC,EAAW,IAAI,SAASD,CAAW,EACzC,OAAIrB,EAAuBe,EAAWO,CAAQ,EACnC,QAAQ,OAAOpB,EAAiB,CAAE,EAEzC,MAAMO,EAAe,SAAS,SAAUO,EAAWF,CAAe,EAC3D,QAAQ,OAAOH,EAAc,CAAE,GAE1CW,EAAS,OAAO,cAAe,OAAO,EACtCA,EAAS,OAAO,aAAcpC,CAAS,EACvCoC,EAAS,OAAO,cAAenC,CAAU,EACzCmC,EAAS,OAAO,UAAWrC,CAAS,EAC7BR,EAAS,4BAA6B6C,CAAQ,EACzD,EC1CeC,EAAA,CACX,KAAAjD,EACA,KAAAsC,EACA,SAAAQ,EACA,sBAAAvD,CACJ","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19]}