From 74943f2c531166002cff8fc972adb13ded56b86b Mon Sep 17 00:00:00 2001 From: Matteo Manzinello Date: Wed, 1 Jul 2020 14:38:54 +0200 Subject: [PATCH] refactor i18n --- babel.config.js | 12 +- dist/mailgo.js | 951 +++++++++++++++++++++++++++++++++++ dist/mailgo.min.js | 2 +- {src/i18n => i18n}/i18n.json | 0 lib/mailgo.js | 2 +- package.json | 1 + src/mailgo.ts | 4 +- tsconfig.json | 2 +- webpack.config.js | 46 +- yarn.lock | 13 +- 10 files changed, 1011 insertions(+), 22 deletions(-) create mode 100644 dist/mailgo.js rename {src/i18n => i18n}/i18n.json (100%) diff --git a/babel.config.js b/babel.config.js index c56830b..32f40b9 100644 --- a/babel.config.js +++ b/babel.config.js @@ -1,7 +1,13 @@ const presets = [ - ["@babel/env", {}], - ["@babel/preset-flow", {}], + [ + "@babel/preset-env", + { + targets: { + browsers: ["last 2 versions"], + }, + }, + ], "@babel/preset-typescript", ]; -module.exports = { presets, sourceMaps: true }; +module.exports = { presets }; diff --git a/dist/mailgo.js b/dist/mailgo.js new file mode 100644 index 0000000..eaeabbf --- /dev/null +++ b/dist/mailgo.js @@ -0,0 +1,951 @@ +window["mailgo"] = +/******/ (function(modules) { // webpackBootstrap +/******/ // The module cache +/******/ var installedModules = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ +/******/ // Check if module is in cache +/******/ if(installedModules[moduleId]) { +/******/ return installedModules[moduleId].exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = installedModules[moduleId] = { +/******/ i: moduleId, +/******/ l: false, +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ +/******/ // Flag the module as loaded +/******/ module.l = true; +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/******/ +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = modules; +/******/ +/******/ // expose the module cache +/******/ __webpack_require__.c = installedModules; +/******/ +/******/ // define getter function for harmony exports +/******/ __webpack_require__.d = function(exports, name, getter) { +/******/ if(!__webpack_require__.o(exports, name)) { +/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); +/******/ } +/******/ }; +/******/ +/******/ // define __esModule on exports +/******/ __webpack_require__.r = function(exports) { +/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { +/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); +/******/ } +/******/ Object.defineProperty(exports, '__esModule', { value: true }); +/******/ }; +/******/ +/******/ // create a fake namespace object +/******/ // mode & 1: value is a module id, require it +/******/ // mode & 2: merge all properties of value into the ns +/******/ // mode & 4: return value when already ns object +/******/ // mode & 8|1: behave like require +/******/ __webpack_require__.t = function(value, mode) { +/******/ if(mode & 1) value = __webpack_require__(value); +/******/ if(mode & 8) return value; +/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; +/******/ var ns = Object.create(null); +/******/ __webpack_require__.r(ns); +/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); +/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); +/******/ return ns; +/******/ }; +/******/ +/******/ // getDefaultExport function for compatibility with non-harmony modules +/******/ __webpack_require__.n = function(module) { +/******/ var getter = module && module.__esModule ? +/******/ function getDefault() { return module['default']; } : +/******/ function getModuleExports() { return module; }; +/******/ __webpack_require__.d(getter, 'a', getter); +/******/ return getter; +/******/ }; +/******/ +/******/ // Object.prototype.hasOwnProperty.call +/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; +/******/ +/******/ // __webpack_public_path__ +/******/ __webpack_require__.p = ""; +/******/ +/******/ +/******/ // Load entry module and return exports +/******/ return __webpack_require__(__webpack_require__.s = 4); +/******/ }) +/************************************************************************/ +/******/ ([ +/* 0 */ +/***/ (function(module) { + +module.exports = JSON.parse("{\"languages\":[\"en\",\"it\"],\"translations\":{\"en\":{\"open_in\":\"open in \",\"cc_\":\"cc \",\"bcc_\":\"bcc \",\"subject_\":\"subject \",\"body_\":\"body \",\"gmail\":\"Gmail\",\"outlook\":\"Outlook\",\"telegram\":\"Telegram\",\"whatsapp\":\"WhatsApp\",\"skype\":\"Skype\",\"call\":\"call\",\"open\":\"open\",\"_default\":\" default\",\"_as_default\":\" as default\",\"copy\":\"copy\"},\"it\":{\"open_in\":\"apri con \",\"cc\":\"cc \",\"bcc\":\"ccn \",\"subject\":\"oggetto \",\"body\":\"testo \",\"gmail\":\"Gmail\",\"outlook\":\"Outlook\",\"telegram\":\"Telegram\",\"whatsapp\":\"WhatsApp\",\"skype\":\"Skype\",\"call\":\"chiama\",\"open\":\"apri\",\"_default\":\" \",\"_as_default\":\" \",\"copy\":\"copia\"}}}"); + +/***/ }), +/* 1 */ +/***/ (function(module, exports, __webpack_require__) { + + + var result = __webpack_require__(2); + + if (typeof result === "string") { + module.exports = result; + } else { + module.exports = result.toString(); + } + + +/***/ }), +/* 2 */ +/***/ (function(module, exports, __webpack_require__) { + +// Imports +var ___CSS_LOADER_API_IMPORT___ = __webpack_require__(3); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.i, ".m-modal{position:fixed;top:0;right:0;bottom:0;left:0;justify-content:center;align-items:center;flex-direction:column;overflow:hidden;font-size:15px;z-index:10000}.m-modal p,.m-modal span,.m-modal strong,.m-modal a{margin:0;padding:0;font-size:100%;line-height:1;font-family:-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",\"Segoe UI Symbol\";text-rendering:optimizeLegibility}.m-modal strong{font-weight:700}.m-modal .m-modal-back{position:absolute;z-index:10001;top:0;right:0;bottom:0;left:0;background-color:rgba(32,35,42,0.75);opacity:0.8}.m-modal .m-modal-content{position:relative;z-index:10002;box-sizing:content-box;text-align:center;min-width:200px;max-width:240px;background-color:#fff;opacity:0.97;border-radius:8px;box-shadow:0px 3px 20px rgba(32,35,42,0.5);color:#4a4a4a;display:flex;flex-direction:column;overflow:auto;padding:20px;transition:0.5s box-shadow}.m-modal .m-modal-content:hover{opacity:1;box-shadow:0px 7px 20px rgba(32,35,42,0.85)}.m-modal .m-modal-content .m-title{margin-bottom:8px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.m-modal .m-modal-content .m-details{margin-bottom:10px}.m-modal .m-modal-content .m-details p{font-size:12px;margin-top:3px;margin-bottom:3px}.m-modal .m-modal-content a{padding:10px;color:#4a4a4a;border-radius:8px;text-decoration:none}.m-modal .m-modal-content a.m-gmail{color:#d44638}.m-modal .m-modal-content a.m-gmail:hover{background-color:rgba(212,70,56,0.08);color:#d44638}.m-modal .m-modal-content a.m-outlook{color:#0072c6}.m-modal .m-modal-content a.m-outlook:hover{background-color:rgba(0,114,198,0.08);color:#0072c6}.m-modal .m-modal-content a.m-tg{color:#08c}.m-modal .m-modal-content a.m-tg:hover{background-color:rgba(0,114,198,0.08);color:#08c}.m-modal .m-modal-content a.m-wa{color:#00bfa5}.m-modal .m-modal-content a.m-wa:hover{background-color:rgba(0,191,165,0.08);color:#00bfa5}.m-modal .m-modal-content a.m-skype{color:#00aff0}.m-modal .m-modal-content a.m-skype:hover{background-color:rgba(0,175,240,0.08);color:#00aff0}.m-modal .m-modal-content a.m-copy{padding:16px 10px;font-size:16px}.m-modal .m-modal-content a.m-default:hover,.m-modal .m-modal-content a.m-copy:hover{background-color:rgba(0,0,0,0.08);color:#4a4a4a}.m-modal .m-modal-content a.m-by{font-size:8px;margin-top:0.8rem;padding:5px;color:#4a4a4a;opacity:0.5}.m-modal .m-modal-content a.m-by:hover{opacity:1}.m-modal .m-modal-content .w-500{font-weight:500}\n", ""]); +// Exports +module.exports = exports; + + +/***/ }), +/* 3 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +/* + MIT License http://www.opensource.org/licenses/mit-license.php + Author Tobias Koppers @sokra +*/ +// css base code, injected by the css-loader +// eslint-disable-next-line func-names +module.exports = function (useSourceMap) { + var list = []; // return the list of modules as css string + + list.toString = function toString() { + return this.map(function (item) { + var content = cssWithMappingToString(item, useSourceMap); + + if (item[2]) { + return "@media ".concat(item[2], " {").concat(content, "}"); + } + + return content; + }).join(''); + }; // import a list of modules into the list + // eslint-disable-next-line func-names + + + list.i = function (modules, mediaQuery, dedupe) { + if (typeof modules === 'string') { + // eslint-disable-next-line no-param-reassign + modules = [[null, modules, '']]; + } + + var alreadyImportedModules = {}; + + if (dedupe) { + for (var i = 0; i < this.length; i++) { + // eslint-disable-next-line prefer-destructuring + var id = this[i][0]; + + if (id != null) { + alreadyImportedModules[id] = true; + } + } + } + + for (var _i = 0; _i < modules.length; _i++) { + var item = [].concat(modules[_i]); + + if (dedupe && alreadyImportedModules[item[0]]) { + // eslint-disable-next-line no-continue + continue; + } + + if (mediaQuery) { + if (!item[2]) { + item[2] = mediaQuery; + } else { + item[2] = "".concat(mediaQuery, " and ").concat(item[2]); + } + } + + list.push(item); + } + }; + + return list; +}; + +function cssWithMappingToString(item, useSourceMap) { + var content = item[1] || ''; // eslint-disable-next-line prefer-destructuring + + var cssMapping = item[3]; + + if (!cssMapping) { + return content; + } + + if (useSourceMap && typeof btoa === 'function') { + var sourceMapping = toComment(cssMapping); + var sourceURLs = cssMapping.sources.map(function (source) { + return "/*# sourceURL=".concat(cssMapping.sourceRoot || '').concat(source, " */"); + }); + return [content].concat(sourceURLs).concat([sourceMapping]).join('\n'); + } + + return [content].join('\n'); +} // Adapted from convert-source-map (MIT) + + +function toComment(sourceMap) { + // eslint-disable-next-line no-undef + var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))); + var data = "sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(base64); + return "/*# ".concat(data, " */"); +} + +/***/ }), +/* 4 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +// ESM COMPAT FLAG +__webpack_require__.r(__webpack_exports__); + +// CONCATENATED MODULE: ../src/mailgo.ts +// i18n for mailgo +const i18n = __webpack_require__(0); +// mailgo css +const mailgoCSS = __webpack_require__(1).toString(); +// default lang +const DEFAULT_LANG = "en"; +// links +const MAILTO = "mailto:"; +const TEL = "tel:"; +const CALLTO = "callto:"; +// mailgo types +const MAIL_TYPE = "mail"; +const TEL_TYPE = "tel"; +// default href for links +const DEFAULT_BTN_HREF = "javascript:void(0);"; +// html tags +const span = "span"; +// mailgo variables +let url, mail = "", encEmail = "", cc = "", bcc = "", subject = "", bodyMail = ""; +// mailgo tel variables +let tel = "", msg = "", telegramUsername = "", skypeUsername = ""; +// the DOM elements +let title, titleTel, detailCc, detailBcc, detailSubject, detailBody, ccValue, bccValue, subjectValue, bodyValue; +// mailgo buttons (actions) +let gmail, outlook, mailgo_open, telegram, wa, skype, call, copyMail, copyTel; +/** + * mailgoInit + * the function that creates the mailgo elements in DOM + */ +const mailgoInit = (mailgoConfig) => { + // default language + let lang = DEFAULT_LANG; + // translations + let translations = i18n.translations; + // if a default language is defined use it + if ((mailgoConfig === null || mailgoConfig === void 0 ? void 0 : mailgoConfig.defaultLang) && + i18n.languages.includes(mailgoConfig.defaultLang)) { + lang = mailgoConfig.defaultLang; + } + // if is defined use it! + if (!(mailgoConfig === null || mailgoConfig === void 0 ? void 0 : mailgoConfig.forceLang) && document.documentElement.lang) { + lang = document.documentElement.lang; + } + // strings + let defaultStrings = translations[DEFAULT_LANG]; + let strings = translations[lang]; + // mailgo mail + { + // modal + let modal = createElement(); + modal.style.display = "none"; + modal.id = "mailgo"; + modal.classList.add("m-modal"); + // background + let modalBackground = createElement(); + modalBackground.className = "m-modal-back"; + modal.appendChild(modalBackground); + // modal content + let modalContent = createElement(); + modalContent.className = "m-modal-content"; + modal.appendChild(modalContent); + // title (email address) + title = createElement("strong"); + title.id = "m-title"; + title.className = "m-title"; + modalContent.appendChild(title); + // details + let details = createElement(); + details.id = "m-details"; + details.className = "m-details"; + detailCc = createElement("p"); + detailCc.id = "m-cc"; + let ccSpan = createElement(span); + ccSpan.className = "w-500"; + ccSpan.appendChild(createTextNode(strings.cc || defaultStrings.cc)); + ccValue = createElement(span); + ccValue.id = "m-cc-value"; + detailCc.appendChild(ccSpan); + detailCc.appendChild(ccValue); + details.appendChild(detailCc); + detailBcc = createElement("p"); + detailBcc.id = "m-bcc"; + let bccSpan = createElement(span); + bccSpan.className = "w-500"; + bccSpan.appendChild(createTextNode(strings.bcc || defaultStrings.bcc)); + bccValue = createElement(span); + bccValue.id = "m-bcc-value"; + detailBcc.appendChild(bccSpan); + detailBcc.appendChild(bccValue); + details.appendChild(detailBcc); + detailSubject = createElement("p"); + detailSubject.id = "m-subject"; + let subjectSpan = createElement(span); + subjectSpan.className = "w-500"; + subjectSpan.appendChild(createTextNode(strings.subject || defaultStrings.subject)); + subjectValue = createElement(span); + subjectValue.id = "m-subject-value"; + detailSubject.appendChild(subjectSpan); + detailSubject.appendChild(subjectValue); + details.appendChild(detailSubject); + detailBody = createElement("p"); + detailBody.id = "m-body"; + let bodySpan = createElement(span); + bodySpan.className = "w-500"; + bodySpan.appendChild(createTextNode(strings.body || defaultStrings.body)); + bodyValue = createElement(span); + bodyValue.id = "m-body-value"; + detailBody.appendChild(bodySpan); + detailBody.appendChild(bodyValue); + details.appendChild(detailBody); + modalContent.appendChild(details); + // Gmail + gmail = createElement("a"); + gmail.id = "m-gmail"; + gmail.href = DEFAULT_BTN_HREF; + gmail.classList.add("m-open"); + gmail.classList.add("m-gmail"); + gmail.appendChild(createTextNode(strings.open_in || defaultStrings.open_in)); + let gmailSpan = createElement(span); + gmailSpan.className = "w-500"; + gmailSpan.appendChild(createTextNode(strings.gmail || defaultStrings.gmail)); + gmail.appendChild(gmailSpan); + modalContent.appendChild(gmail); + // Outlook + outlook = createElement("a"); + outlook.id = "m-outlook"; + outlook.href = DEFAULT_BTN_HREF; + outlook.classList.add("m-open"); + outlook.classList.add("m-outlook"); + outlook.appendChild(createTextNode(strings.open_in || defaultStrings.open_in)); + let outlookSpan = createElement(span); + outlookSpan.className = "w-500"; + outlookSpan.appendChild(createTextNode(strings.outlook || defaultStrings.outlook)); + outlook.appendChild(outlookSpan); + modalContent.appendChild(outlook); + // open default + mailgo_open = createElement("a"); + mailgo_open.id = "m-open"; + mailgo_open.href = DEFAULT_BTN_HREF; + mailgo_open.classList.add("m-open"); + mailgo_open.classList.add("m-default"); + let openSpan = createElement(span); + openSpan.className = "w-500"; + openSpan.appendChild(createTextNode(strings.open || defaultStrings.open)); + mailgo_open.appendChild(openSpan); + mailgo_open.appendChild(createTextNode(strings._default || defaultStrings._default)); + modalContent.appendChild(mailgo_open); + // copy + copyMail = createElement("a"); + copyMail.id = "m-copy"; + copyMail.href = DEFAULT_BTN_HREF; + copyMail.classList.add("m-copy"); + copyMail.classList.add("w-500"); + copyMail.appendChild(createTextNode(strings.copy || defaultStrings.copy)); + modalContent.appendChild(copyMail); + modalContent.appendChild(byElement()); + // add the modal at the end of the body + document.body.appendChild(modal); + // every click outside the modal will hide the modal + modalBackground.addEventListener("click", hideMailgo); + } + // mailgo tel + { + // modal + let modal = createElement(); + modal.style.display = "none"; + modal.id = "mailgo-tel"; + modal.classList.add("m-modal"); + // background + let modalBackground = createElement(); + modalBackground.className = "m-modal-back"; + modal.appendChild(modalBackground); + // modal content + let modalContent = createElement(); + modalContent.className = "m-modal-content"; + modal.appendChild(modalContent); + // title (telephone number) + titleTel = createElement("strong"); + titleTel.id = "m-tel-title"; + titleTel.className = "m-title"; + modalContent.appendChild(titleTel); + // Telegram + telegram = createElement("a"); + telegram.id = "m-tg"; + telegram.href = DEFAULT_BTN_HREF; + telegram.classList.add("m-open"); + telegram.classList.add("m-tg"); + // by default not display + telegram.style.display = "none"; + telegram.appendChild(createTextNode(strings.open_in || defaultStrings.open_in)); + let telegramSpan = createElement(span); + telegramSpan.className = "w-500"; + telegramSpan.appendChild(createTextNode(strings.telegram || defaultStrings.telegram)); + telegram.appendChild(telegramSpan); + modalContent.appendChild(telegram); + // WhatsApp + wa = createElement("a"); + wa.id = "m-wa"; + wa.href = DEFAULT_BTN_HREF; + wa.classList.add("m-open"); + wa.classList.add("m-wa"); + wa.appendChild(createTextNode(strings.open_in || defaultStrings.open_in)); + let waSpan = createElement(span); + waSpan.className = "w-500"; + waSpan.appendChild(createTextNode(strings.whatsapp || defaultStrings.whatsapp)); + wa.appendChild(waSpan); + modalContent.appendChild(wa); + // Skype + skype = createElement("a"); + skype.id = "m-skype"; + skype.href = DEFAULT_BTN_HREF; + skype.classList.add("m-open"); + skype.classList.add("m-skype"); + skype.appendChild(createTextNode(strings.open_in || defaultStrings.open_in)); + let skypeSpan = createElement(span); + skypeSpan.className = "w-500"; + skypeSpan.appendChild(createTextNode(strings.skype || defaultStrings.skype)); + skype.appendChild(skypeSpan); + modalContent.appendChild(skype); + // call default + call = createElement("a"); + call.id = "m-call"; + call.href = DEFAULT_BTN_HREF; + call.classList.add("m-open"); + call.classList.add("m-default"); + let callSpan = createElement(span); + callSpan.className = "w-500"; + callSpan.appendChild(createTextNode(strings.call || defaultStrings.call)); + call.appendChild(callSpan); + call.appendChild(createTextNode(strings._as_default || defaultStrings._as_default)); + modalContent.appendChild(call); + // copy + copyTel = createElement("a"); + copyTel.id = "m-tel-copy"; + copyTel.href = DEFAULT_BTN_HREF; + copyTel.classList.add("m-copy"); + copyTel.classList.add("w-500"); + copyTel.appendChild(createTextNode(strings.copy || defaultStrings.copy)); + modalContent.appendChild(copyTel); + modalContent.appendChild(byElement()); + // add the modal at the end of the body + document.body.appendChild(modal); + // every click outside the modal will hide the modal + modalBackground.addEventListener("click", hideMailgo); + } + // event listener on body, if the element is mailgo-compatible the mailgo modal will be rendered + document.addEventListener("click", mailgoCheckRender); +}; +/** + * mailgoRender + * function to render a mailgo (mail or tel) + */ +const mailgoRender = (type = MAIL_TYPE, mailgo) => { + // mailgo mail + if (type === MAIL_TYPE) { + // if the element href=^"mailto:" + if (mailgo.href && mailgo.href.toLowerCase().startsWith(MAILTO)) { + mail = decodeURIComponent(mailgo.href.split("?")[0].split(MAILTO)[1].trim()); + url = new URL(mailgo.href); + let urlParams = url.searchParams; + // optional parameters for the email + cc = urlParams.get("cc"); + bcc = urlParams.get("bcc"); + subject = urlParams.get("subject"); + bodyMail = urlParams.get("body"); + } + else { + // if the element href="#mailgo" or class="mailgo" + // mail = data-address + @ + data-domain + mail = + mailgo.getAttribute("data-address") + + "@" + + mailgo.getAttribute("data-domain"); + url = new URL(MAILTO + encodeURIComponent(mail)); + // cc = data-cc-address + @ + data-cc-domain + cc = + mailgo.getAttribute("data-cc-address") + + "@" + + mailgo.getAttribute("data-cc-domain"); + // bcc = data-bcc-address + @ + data-bcc-domain + bcc = + mailgo.getAttribute("data-bcc-address") + + "@" + + mailgo.getAttribute("data-bcc-domain"); + // subject = data-subject + subject = mailgo.getAttribute("data-subject"); + // body = data-body + bodyMail = mailgo.getAttribute("data-body"); + } + // validate the email address + if (!validateEmails(mail.split(","))) + return; + // if cc, bcc is not valid cc, bcc = "" + if (cc && !validateEmails(cc.split(","))) + cc = ""; + if (bcc && !validateEmails(bcc.split(","))) + bcc = ""; + // the title of the modal (email address) + title.innerHTML = mail.split(",").join("
"); + // add the details if provided + cc + ? ((detailCc.style.display = "block"), + (ccValue.innerHTML = cc.split(",").join("
"))) + : (detailCc.style.display = "none"); + bcc + ? ((detailBcc.style.display = "block"), + (bccValue.innerHTML = bcc.split(",").join("
"))) + : (detailBcc.style.display = "none"); + subject + ? ((detailSubject.style.display = "block"), + (subjectValue.textContent = subject)) + : (detailSubject.style.display = "none"); + bodyMail + ? ((detailBody.style.display = "block"), + (bodyValue.textContent = bodyMail)) + : (detailBody.style.display = "none"); + // add the actions + gmail.addEventListener("click", openGmail); + outlook.addEventListener("click", openOutlook); + encEmail = encodeEmail(mail); + mailgo_open.addEventListener("click", openDefault); + copyMail.addEventListener("click", () => copy(mail)); + } + // mailgo tel + if (type === TEL_TYPE) { + if (mailgo.href && mailgo.href.toLowerCase().startsWith(TEL)) { + tel = decodeURIComponent(mailgo.href.split("?")[0].split(TEL)[1].trim()); + } + else if (mailgo.href && mailgo.href.toLowerCase().startsWith(CALLTO)) { + tel = decodeURIComponent(mailgo.href.split("?")[0].split(CALLTO)[1].trim()); + } + else if (mailgo.hasAttribute("data-tel")) { + tel = mailgo.getAttribute("data-tel"); + msg = mailgo.getAttribute("data-msg"); + } + // information + // let titleEl = getE("m-tel-title"); + // Telegram username + if (mailgo.hasAttribute("data-telegram")) { + telegramUsername = mailgo.getAttribute("data-telegram"); + } + // Telegram username + if (mailgo.hasAttribute("data-skype")) { + skypeUsername = mailgo.getAttribute("data-skype"); + } + // the title of the modal (tel) + titleTel.innerHTML = tel; + // add the actions to buttons + wa.addEventListener("click", openWhatsApp); + if (telegramUsername) { + setDisplay("m-tg", "block"); + telegram.addEventListener("click", openTelegram); + } + skype.addEventListener("click", openSkype); + call.addEventListener("click", callDefault); + copyTel.addEventListener("click", () => copy(tel)); + } + // show the mailgo + showMailgo(type); + // add listener keyDown + document.addEventListener("keydown", mailgoKeydown); +}; +// actions +const openGmail = () => { + // Gmail url + let gmailUrl = "https://mail.google.com/mail/u/0/?view=cm&source=mailto&to=" + + encodeURIComponent(mail); + // the details if provided + if (cc) + gmailUrl = gmailUrl.concat("&cc=" + encodeURIComponent(cc)); + if (bcc) + gmailUrl = gmailUrl.concat("&bcc=" + encodeURIComponent(bcc)); + if (subject) + gmailUrl = gmailUrl.concat("&subject=" + subject); + if (bodyMail) + gmailUrl = gmailUrl.concat("&body=" + bodyMail); + // open the link + window.open(gmailUrl, "_blank"); + // hide the modal + hideMailgo(); +}; +const openOutlook = () => { + // Outlook url + let outlookUrl = "https://outlook.live.com/owa/?path=/mail/action/compose&to=" + + encodeURIComponent(mail); + // the details if provided + if (subject) + outlookUrl = outlookUrl.concat("&subject=" + subject); + if (bodyMail) + outlookUrl = outlookUrl.concat("&body=" + bodyMail); + // open the link + window.open(outlookUrl, "_blank"); + // hide the modal + hideMailgo(); +}; +const openDefault = () => { + mailToEncoded(encEmail); + hideMailgo(); +}; +const openTelegram = () => { + // Telegram url + let tgUrl = "https://t.me/" + telegramUsername; + // open the url + window.open(tgUrl, "_blank"); + // hide the modal + hideMailgo(); +}; +const openSkype = () => { + let skype = skypeUsername !== "" ? skypeUsername : tel; + // Telegram url + let skypeUrl = "skype:" + skype; + // open the url + window.open(skypeUrl, "_blank"); + // hide the modal + hideMailgo(); +}; +const openWhatsApp = () => { + // WhatsApp url + let waUrl = "https://wa.me/" + tel; + // the details if provided + if (msg) + waUrl + "?text=" + msg; + // open the url + window.open(waUrl, "_blank"); + // hide the modal + hideMailgo(); +}; +const callDefault = (event) => { + let callUrl = "tel:" + tel; + window.open(callUrl); + hideMailgo(); +}; +const copy = (content) => { + copyToClipboard(content); + let activeCopy; + // the correct copyButton (mail or tel) + mailgoIsShowing(MAIL_TYPE) ? (activeCopy = copyMail) : (activeCopy = copyTel); + activeCopy.textContent = "copied"; + setTimeout(() => { + activeCopy.textContent = "copy"; + // hide after the timeout + hideMailgo(); + }, 999); +}; +// function that returns if an element is a mailgo +const isMailgo = (element, type = MAIL_TYPE) => { + let href = element.href; + // mailgo type mail + if (type === MAIL_TYPE) { + return ( + // first case: it is an element with "mailto:..." in href and no no-mailgo in classList + (href && + href.toLowerCase().startsWith(MAILTO) && + !element.classList.contains("no-mailgo")) || + (element.hasAttribute("data-address") && + // second case: the href=#mailgo + ((href && element.getAttribute("href").toLowerCase() === "#mailgo") || + // third case: the classList contains mailgo + (element.classList && element.classList.contains("mailgo"))))); + } + // mailgo type tel + if (type === TEL_TYPE) { + return ( + // first case: it is an element with "tel:..." or "callto:..." in href and no no-mailgo in classList + (href && + (href.toLowerCase().startsWith(TEL) || + href.toLowerCase().startsWith(CALLTO)) && + !element.classList.contains("no-mailgo")) || + (element.hasAttribute("data-tel") && + // second case: the href=#mailgo + href && + element.getAttribute("href").toLowerCase() === "#mailgo") || + // third case: the classList contains mailgo + (element.classList && element.classList.contains("mailgo"))); + } + return false; +}; +/** + * mailgoCheckRender + * function to check if an element is mailgo-enabled or not referencing to + * mail: + * document.querySelectorAll( + * 'a[href^="mailto:" i]:not(.no-mailgo), a[href="#mailgo"], a.mailgo' + * ); + * tel: + * document.querySelectorAll( + * 'a[href^="tel:" i]:not(.no-mailgo), a[href="#mailgo"], a.mailgo' + * ); + * or + * document.querySelectorAll( + * 'a[href^="callto:" i]:not(.no-mailgo), a[href="#mailgo"], a.mailgo' + * ); + */ +const mailgoCheckRender = (event) => { + // check if the id=mailgo exists in the body + if (!document.contains(getE("mailgo")) || + !document.contains(getE("mailgo-tel"))) + return; + // if a mailgo is already showing do nothing + if (mailgoIsShowing(MAIL_TYPE) || mailgoIsShowing(TEL_TYPE)) + return false; + // the path of the event + let path = (event.composedPath && event.composedPath()) || + composedPath(event.target); + if (path) { + path.forEach((element) => { + if (element instanceof HTMLDocument || element instanceof Window) + return false; + // go in the event.path to find if the user has clicked on a mailgo element + if (isMailgo(element, MAIL_TYPE)) { + // stop the normal execution of the element click + event.preventDefault(); + // render mailgo + mailgoRender(MAIL_TYPE, element); + return true; + } + if (isMailgo(element, TEL_TYPE)) { + // stop the normal execution of the element click + event.preventDefault(); + // render mailgo + mailgoRender(TEL_TYPE, element); + return true; + } + }); + } + return false; +}; +/** + * mailgoKeydown + * function to manage the keydown event when the modal is showing + */ +const mailgoKeydown = (event) => { + // if mailgo is showing + if (mailgoIsShowing(MAIL_TYPE)) { + switch (event.keyCode) { + case 27: + // Escape + hideMailgo(); + break; + case 71: + // g -> open GMail + openGmail(); + break; + case 79: + // o -> open Outlook + openOutlook(); + break; + case 32: + case 13: + // spacebar or enter -> open default + openDefault(); + break; + case 67: + // c -> copy + copy(mail); + break; + default: + return; + } + } + else if (mailgoIsShowing(TEL_TYPE)) { + switch (event.keyCode) { + case 27: + // Escape + hideMailgo(); + break; + case 84: + // t -> open Telegram + openTelegram(); + break; + case 87: + // w -> open WhatsApp + openWhatsApp(); + break; + case 32: + case 13: + // spacebar or enter -> call default + callDefault(); + break; + case 67: + // c -> copy + copy(tel); + break; + default: + return; + } + } + return; +}; +// show the modal +const showMailgo = (type = MAIL_TYPE) => { + // show mailgo type mail + if (type === MAIL_TYPE) { + setDisplay("mailgo", "flex"); + return true; + } + // show mailgo type tel + if (type === TEL_TYPE) { + setDisplay("mailgo-tel", "flex"); + return true; + } + return false; +}; +// hide the modal +const hideMailgo = () => { + setDisplay("mailgo", "none"); + setDisplay("mailgo-tel", "none"); + // remove listener keyDown + document.removeEventListener("keydown", mailgoKeydown); +}; +// is the mailgo modal hidden? +const mailgoIsShowing = (type = MAIL_TYPE) => { + return type === MAIL_TYPE + ? getDisplay("mailgo") === "flex" + : type === TEL_TYPE + ? getDisplay("mailgo-tel") === "flex" + : false; +}; +const byElement = () => { + // by + let by = createElement("a"); + by.href = "https://mailgo.js.org?ref=mailgo-modal"; + by.className = "m-by"; + by.target = "_blank"; + by.rel = "noopener noreferrer"; + by.appendChild(createTextNode("mailgo.js.org")); + return by; +}; +// create element +const createElement = (element = "div") => document.createElement(element); +// create text node +const createTextNode = (element) => document.createTextNode(element); +// decrypt email +const mailToEncoded = (encoded) => (window.location.href = MAILTO + atob(encoded)); +// encode email +const encodeEmail = (email) => btoa(email); +// getE shorthand +const getE = (id) => document.getElementById(id); +// get display value +const getDisplay = (id) => getE(id).style.display; +// get display value +const setDisplay = (id, value) => (getE(id).style.display = value); +// custom composedPath if path or event.composedPath() are not defined +const composedPath = (el) => { + let path = []; + while (el) { + path.push(el); + if (el.tagName === "HTML") { + path.push(document); + path.push(window); + return path; + } + el = el.parentElement; + } +}; +// validate a single email with regex +const validateEmail = (email) => /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/.test(email); +// validate an array of emails +const validateEmails = (arr) => arr.every(validateEmail); +// copy of a string +const copyToClipboard = (str) => { + let el = createElement("textarea"); + el.value = str; + el.setAttribute("readonly", ""); + el.style.position = "absolute"; + el.style.left = "-9999px"; + document.body.appendChild(el); + let selected = document.getSelection().rangeCount > 0 + ? document.getSelection().getRangeAt(0) + : false; + el.select(); + document.execCommand("copy"); + document.body.removeChild(el); + if (selected) { + document.getSelection().removeAllRanges(); + document.getSelection().addRange(selected); + return true; + } + return false; +}; +const mailgoStyle = () => { + // mailgo style + let mailgoCSSElement = createElement("style"); + mailgoCSSElement.id = "mailgo-style"; + mailgoCSSElement.type = "text/css"; + mailgoCSSElement.appendChild(createTextNode(mailgoCSS)); + document.head.appendChild(mailgoCSSElement); +}; +// mailgo +const mailgo = (mailgoConfig) => { + // if the window is defined... + if (window && typeof window !== "undefined") { + // add the style for mailgo + mailgoStyle(); + // if is set an initEvent add the listener + if (mailgoConfig === null || mailgoConfig === void 0 ? void 0 : mailgoConfig.initEvent) { + document.addEventListener(mailgoConfig.initEvent, () => { + mailgoInit(mailgoConfig); + }); + } + else { + mailgoInit(mailgoConfig); + } + } +}; +/* harmony default export */ var src_mailgo = (mailgo); + +// CONCATENATED MODULE: ./mailgo.dist.ts +// webpack > dist/mailgo.min.js + + + +// call init mailgo attached to the event DOMContentLoaded +const mailgoConfig = { + initEvent: "DOMContentLoaded", +}; + +src_mailgo(mailgoConfig); + + +/***/ }) +/******/ ]); \ No newline at end of file diff --git a/dist/mailgo.min.js b/dist/mailgo.min.js index 6d0e709..0452d26 100644 --- a/dist/mailgo.min.js +++ b/dist/mailgo.min.js @@ -1 +1 @@ -window.mailgo=function(e){var t={};function a(o){if(t[o])return t[o].exports;var n=t[o]={i:o,l:!1,exports:{}};return e[o].call(n.exports,n,n.exports,a),n.l=!0,n.exports}return a.m=e,a.c=t,a.d=function(e,t,o){a.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:o})},a.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},a.t=function(e,t){if(1&t&&(e=a(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var o=Object.create(null);if(a.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var n in e)a.d(o,n,function(t){return e[t]}.bind(null,n));return o},a.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return a.d(t,"a",t),t},a.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},a.p="",a(a.s=4)}([function(e){e.exports=JSON.parse('{"languages":["en","it"],"translations":{"en":{"open_in":"open in ","cc_":"cc ","bcc_":"bcc ","subject_":"subject ","body_":"body ","gmail":"Gmail","outlook":"Outlook","telegram":"Telegram","whatsapp":"WhatsApp","skype":"Skype","call":"call","open":"open","_default":" default","_as_default":" as default","copy":"copy"},"it":{"open_in":"apri con ","cc":"cc ","bcc":"ccn ","subject":"oggetto ","body":"testo ","gmail":"Gmail","outlook":"Outlook","telegram":"Telegram","whatsapp":"WhatsApp","skype":"Skype","call":"chiama","open":"apri","_default":" ","_as_default":" ","copy":"copia"}}}')},function(e,t,a){var o=a(2);e.exports="string"==typeof o?o:o.toString()},function(e,t,a){(t=a(3)(!1)).push([e.i,'.m-modal{position:fixed;top:0;right:0;bottom:0;left:0;justify-content:center;align-items:center;flex-direction:column;overflow:hidden;font-size:15px;z-index:10000}.m-modal p,.m-modal span,.m-modal strong,.m-modal a{margin:0;padding:0;font-size:100%;line-height:1;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";text-rendering:optimizeLegibility}.m-modal strong{font-weight:700}.m-modal .m-modal-back{position:absolute;z-index:10001;top:0;right:0;bottom:0;left:0;background-color:rgba(32,35,42,0.75);opacity:0.8}.m-modal .m-modal-content{position:relative;z-index:10002;box-sizing:content-box;text-align:center;min-width:200px;max-width:240px;background-color:#fff;opacity:0.97;border-radius:8px;box-shadow:0px 3px 20px rgba(32,35,42,0.5);color:#4a4a4a;display:flex;flex-direction:column;overflow:auto;padding:20px;transition:0.5s box-shadow}.m-modal .m-modal-content:hover{opacity:1;box-shadow:0px 7px 20px rgba(32,35,42,0.85)}.m-modal .m-modal-content .m-title{margin-bottom:8px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.m-modal .m-modal-content .m-details{margin-bottom:10px}.m-modal .m-modal-content .m-details p{font-size:12px;margin-top:3px;margin-bottom:3px}.m-modal .m-modal-content a{padding:10px;color:#4a4a4a;border-radius:8px;text-decoration:none}.m-modal .m-modal-content a.m-gmail{color:#d44638}.m-modal .m-modal-content a.m-gmail:hover{background-color:rgba(212,70,56,0.08);color:#d44638}.m-modal .m-modal-content a.m-outlook{color:#0072c6}.m-modal .m-modal-content a.m-outlook:hover{background-color:rgba(0,114,198,0.08);color:#0072c6}.m-modal .m-modal-content a.m-tg{color:#08c}.m-modal .m-modal-content a.m-tg:hover{background-color:rgba(0,114,198,0.08);color:#08c}.m-modal .m-modal-content a.m-wa{color:#00bfa5}.m-modal .m-modal-content a.m-wa:hover{background-color:rgba(0,191,165,0.08);color:#00bfa5}.m-modal .m-modal-content a.m-skype{color:#00aff0}.m-modal .m-modal-content a.m-skype:hover{background-color:rgba(0,175,240,0.08);color:#00aff0}.m-modal .m-modal-content a.m-copy{padding:16px 10px;font-size:16px}.m-modal .m-modal-content a.m-default:hover,.m-modal .m-modal-content a.m-copy:hover{background-color:rgba(0,0,0,0.08);color:#4a4a4a}.m-modal .m-modal-content a.m-by{font-size:8px;margin-top:0.8rem;padding:5px;color:#4a4a4a;opacity:0.5}.m-modal .m-modal-content a.m-by:hover{opacity:1}.m-modal .m-modal-content .w-500{font-weight:500}\n',""]),e.exports=t},function(e,t,a){"use strict";e.exports=function(e){var t=[];return t.toString=function(){return this.map((function(t){var a=function(e,t){var a=e[1]||"",o=e[3];if(!o)return a;if(t&&"function"==typeof btoa){var n=(d=o,i=btoa(unescape(encodeURIComponent(JSON.stringify(d)))),c="sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(i),"/*# ".concat(c," */")),l=o.sources.map((function(e){return"/*# sourceURL=".concat(o.sourceRoot||"").concat(e," */")}));return[a].concat(l).concat([n]).join("\n")}var d,i,c;return[a].join("\n")}(t,e);return t[2]?"@media ".concat(t[2]," {").concat(a,"}"):a})).join("")},t.i=function(e,a,o){"string"==typeof e&&(e=[[null,e,""]]);var n={};if(o)for(var l=0;l{let t="en",a=o.translations;(null==e?void 0:e.defaultLang)&&o.languages.includes(e.defaultLang)&&(t=e.defaultLang),!(null==e?void 0:e.forceLang)&&document.documentElement.lang&&(t=document.documentElement.lang);let n=a.en,i=a[t];{let e=ee();e.style.display="none",e.id="mailgo",e.classList.add("m-modal");let t=ee();t.className="m-modal-back",e.appendChild(t);let a=ee();a.className="m-modal-content",e.appendChild(a),c=ee("strong"),c.id="m-title",c.className="m-title",a.appendChild(c);let o=ee();o.id="m-details",o.className="m-details",m=ee("p"),m.id="m-cc";let s=ee(d);s.className="w-500",s.appendChild(te(i.cc||n.cc)),h=ee(d),h.id="m-cc-value",m.appendChild(s),m.appendChild(h),o.appendChild(m),p=ee("p"),p.id="m-bcc";let k=ee(d);k.className="w-500",k.appendChild(te(i.bcc||n.bcc)),g=ee(d),g.id="m-bcc-value",p.appendChild(k),p.appendChild(g),o.appendChild(p),r=ee("p"),r.id="m-subject";let v=ee(d);v.className="w-500",v.appendChild(te(i.subject||n.subject)),f=ee(d),f.id="m-subject-value",r.appendChild(v),r.appendChild(f),o.appendChild(r),u=ee("p"),u.id="m-body";let L=ee(d);L.className="w-500",L.appendChild(te(i.body||n.body)),b=ee(d),b.id="m-body-value",u.appendChild(L),u.appendChild(b),o.appendChild(u),a.appendChild(o),y=ee("a"),y.id="m-gmail",y.href=l,y.classList.add("m-open"),y.classList.add("m-gmail"),y.appendChild(te(i.open_in||n.open_in));let x=ee(d);x.className="w-500",x.appendChild(te(i.gmail||n.gmail)),y.appendChild(x),a.appendChild(y),C=ee("a"),C.id="m-outlook",C.href=l,C.classList.add("m-open"),C.classList.add("m-outlook"),C.appendChild(te(i.open_in||n.open_in));let j=ee(d);j.className="w-500",j.appendChild(te(i.outlook||n.outlook)),C.appendChild(j),a.appendChild(C),w=ee("a"),w.id="m-open",w.href=l,w.classList.add("m-open"),w.classList.add("m-default");let A=ee(d);A.className="w-500",A.appendChild(te(i.open||n.open)),w.appendChild(A),w.appendChild(te(i._default||n._default)),a.appendChild(w),_=ee("a"),_.id="m-copy",_.href=l,_.classList.add("m-copy"),_.classList.add("w-500"),_.appendChild(te(i.copy||n.copy)),a.appendChild(_),a.appendChild(Y()),document.body.appendChild(e),t.addEventListener("click",V)}{let e=ee();e.style.display="none",e.id="mailgo-tel",e.classList.add("m-modal");let t=ee();t.className="m-modal-back",e.appendChild(t);let a=ee();a.className="m-modal-content",e.appendChild(a),s=ee("strong"),s.id="m-tel-title",s.className="m-title",a.appendChild(s),k=ee("a"),k.id="m-tg",k.href=l,k.classList.add("m-open"),k.classList.add("m-tg"),k.style.display="none",k.appendChild(te(i.open_in||n.open_in));let o=ee(d);o.className="w-500",o.appendChild(te(i.telegram||n.telegram)),k.appendChild(o),a.appendChild(k),v=ee("a"),v.id="m-wa",v.href=l,v.classList.add("m-open"),v.classList.add("m-wa"),v.appendChild(te(i.open_in||n.open_in));let c=ee(d);c.className="w-500",c.appendChild(te(i.whatsapp||n.whatsapp)),v.appendChild(c),a.appendChild(v),L=ee("a"),L.id="m-skype",L.href=l,L.classList.add("m-open"),L.classList.add("m-skype"),L.appendChild(te(i.open_in||n.open_in));let m=ee(d);m.className="w-500",m.appendChild(te(i.skype||n.skype)),L.appendChild(m),a.appendChild(L),x=ee("a"),x.id="m-call",x.href=l,x.classList.add("m-open"),x.classList.add("m-default");let p=ee(d);p.className="w-500",p.appendChild(te(i.call||n.call)),x.appendChild(p),x.appendChild(te(i._as_default||n._as_default)),a.appendChild(x),j=ee("a"),j.id="m-tel-copy",j.href=l,j.classList.add("m-copy"),j.classList.add("w-500"),j.appendChild(te(i.copy||n.copy)),a.appendChild(j),a.appendChild(Y()),document.body.appendChild(e),t.addEventListener("click",V)}document.addEventListener("click",q)},W=(e="mail",t)=>{if("mail"===e){if(t.href&&t.href.toLowerCase().startsWith("mailto:")){A=decodeURIComponent(t.href.split("?")[0].split("mailto:")[1].trim()),i=new URL(t.href);let e=i.searchParams;N=e.get("cc"),S=e.get("bcc"),R=e.get("subject"),U=e.get("body")}else A=t.getAttribute("data-address")+"@"+t.getAttribute("data-domain"),i=new URL("mailto:"+encodeURIComponent(A)),N=t.getAttribute("data-cc-address")+"@"+t.getAttribute("data-cc-domain"),S=t.getAttribute("data-bcc-address")+"@"+t.getAttribute("data-bcc-domain"),R=t.getAttribute("data-subject"),U=t.getAttribute("data-body");if(!se(A.split(",")))return;N&&!se(N.split(","))&&(N=""),S&&!se(S.split(","))&&(S=""),c.innerHTML=A.split(",").join("
"),N?(m.style.display="block",h.innerHTML=N.split(",").join("
")):m.style.display="none",S?(p.style.display="block",g.innerHTML=S.split(",").join("
")):p.style.display="none",R?(r.style.display="block",f.textContent=R):r.style.display="none",U?(u.style.display="block",b.textContent=U):u.style.display="none",y.addEventListener("click",P),C.addEventListener("click",H),E=oe(A),w.addEventListener("click",D),_.addEventListener("click",()=>F(A))}"tel"===e&&(t.href&&t.href.toLowerCase().startsWith("tel:")?I=decodeURIComponent(t.href.split("?")[0].split("tel:")[1].trim()):t.href&&t.href.toLowerCase().startsWith("callto:")?I=decodeURIComponent(t.href.split("?")[0].split("callto:")[1].trim()):t.hasAttribute("data-tel")&&(I=t.getAttribute("data-tel"),M=t.getAttribute("data-msg")),t.hasAttribute("data-telegram")&&(z=t.getAttribute("data-telegram")),t.hasAttribute("data-skype")&&(O=t.getAttribute("data-skype")),s.innerHTML=I,v.addEventListener("click",J),z&&(de("m-tg","block"),k.addEventListener("click",B)),L.addEventListener("click",G),x.addEventListener("click",Z),j.addEventListener("click",()=>F(I))),Q(e),document.addEventListener("keydown",K)},P=()=>{let e="https://mail.google.com/mail/u/0/?view=cm&source=mailto&to="+encodeURIComponent(A);N&&(e=e.concat("&cc="+encodeURIComponent(N))),S&&(e=e.concat("&bcc="+encodeURIComponent(S))),R&&(e=e.concat("&subject="+R)),U&&(e=e.concat("&body="+U)),window.open(e,"_blank"),V()},H=()=>{let e="https://outlook.live.com/owa/?path=/mail/action/compose&to="+encodeURIComponent(A);R&&(e=e.concat("&subject="+R)),U&&(e=e.concat("&body="+U)),window.open(e,"_blank"),V()},D=()=>{ae(E),V()},B=()=>{let e="https://t.me/"+z;window.open(e,"_blank"),V()},G=()=>{let e="skype:"+(""!==O?O:I);window.open(e,"_blank"),V()},J=()=>{let e="https://wa.me/"+I;window.open(e,"_blank"),V()},Z=()=>{let e="tel:"+I;window.open(e),V()},F=e=>{let t;me(e),t=X("mail")?_:j,t.textContent="copied",setTimeout(()=>{t.textContent="copy",V()},999)},$=(e,t="mail")=>{let a=e.href;return"mail"===t?a&&a.toLowerCase().startsWith("mailto:")&&!e.classList.contains("no-mailgo")||e.hasAttribute("data-address")&&(a&&"#mailgo"===e.getAttribute("href").toLowerCase()||e.classList&&e.classList.contains("mailgo")):"tel"===t&&(a&&(a.toLowerCase().startsWith("tel:")||a.toLowerCase().startsWith("callto:"))&&!e.classList.contains("no-mailgo")||e.hasAttribute("data-tel")&&a&&"#mailgo"===e.getAttribute("href").toLowerCase()||e.classList&&e.classList.contains("mailgo"))},q=e=>{if(!document.contains(ne("mailgo"))||!document.contains(ne("mailgo-tel")))return;if(X("mail")||X("tel"))return!1;let t=e.composedPath&&e.composedPath()||ie(e.target);return t&&t.forEach(t=>!(t instanceof HTMLDocument||t instanceof Window)&&($(t,"mail")?(e.preventDefault(),W("mail",t),!0):$(t,"tel")?(e.preventDefault(),W("tel",t),!0):void 0)),!1},K=e=>{if(X("mail"))switch(e.keyCode){case 27:V();break;case 71:P();break;case 79:H();break;case 32:case 13:D();break;case 67:F(A);break;default:return}else if(X("tel"))switch(e.keyCode){case 27:V();break;case 84:B();break;case 87:J();break;case 32:case 13:Z();break;case 67:F(I);break;default:return}},Q=(e="mail")=>"mail"===e?(de("mailgo","flex"),!0):"tel"===e&&(de("mailgo-tel","flex"),!0),V=()=>{de("mailgo","none"),de("mailgo-tel","none"),document.removeEventListener("keydown",K)},X=(e="mail")=>"mail"===e?"flex"===le("mailgo"):"tel"===e&&"flex"===le("mailgo-tel"),Y=()=>{let e=ee("a");return e.href="https://mailgo.js.org?ref=mailgo-modal",e.className="m-by",e.target="_blank",e.rel="noopener noreferrer",e.appendChild(te("mailgo.js.org")),e},ee=(e="div")=>document.createElement(e),te=e=>document.createTextNode(e),ae=e=>window.location.href="mailto:"+atob(e),oe=e=>btoa(e),ne=e=>document.getElementById(e),le=e=>ne(e).style.display,de=(e,t)=>ne(e).style.display=t,ie=e=>{let t=[];for(;e;){if(t.push(e),"HTML"===e.tagName)return t.push(document),t.push(window),t;e=e.parentElement}},ce=e=>/^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/.test(e),se=e=>e.every(ce),me=e=>{let t=ee("textarea");t.value=e,t.setAttribute("readonly",""),t.style.position="absolute",t.style.left="-9999px",document.body.appendChild(t);let a=document.getSelection().rangeCount>0&&document.getSelection().getRangeAt(0);return t.select(),document.execCommand("copy"),document.body.removeChild(t),!!a&&(document.getSelection().removeAllRanges(),document.getSelection().addRange(a),!0)};var pe=e=>{window&&"undefined"!=typeof window&&((()=>{let e=ee("style");e.id="mailgo-style",e.type="text/css",e.appendChild(te(n)),document.head.appendChild(e)})(),(null==e?void 0:e.initEvent)?document.addEventListener(e.initEvent,()=>{T(e)}):T(e))};pe({initEvent:"DOMContentLoaded"})}]); \ No newline at end of file +window.mailgo=function(e){var t={};function a(o){if(t[o])return t[o].exports;var n=t[o]={i:o,l:!1,exports:{}};return e[o].call(n.exports,n,n.exports,a),n.l=!0,n.exports}return a.m=e,a.c=t,a.d=function(e,t,o){a.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:o})},a.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},a.t=function(e,t){if(1&t&&(e=a(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var o=Object.create(null);if(a.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var n in e)a.d(o,n,function(t){return e[t]}.bind(null,n));return o},a.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return a.d(t,"a",t),t},a.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},a.p="",a(a.s=4)}([function(e){e.exports=JSON.parse('{"languages":["en","it"],"translations":{"en":{"open_in":"open in ","cc_":"cc ","bcc_":"bcc ","subject_":"subject ","body_":"body ","gmail":"Gmail","outlook":"Outlook","telegram":"Telegram","whatsapp":"WhatsApp","skype":"Skype","call":"call","open":"open","_default":" default","_as_default":" as default","copy":"copy"},"it":{"open_in":"apri con ","cc":"cc ","bcc":"ccn ","subject":"oggetto ","body":"testo ","gmail":"Gmail","outlook":"Outlook","telegram":"Telegram","whatsapp":"WhatsApp","skype":"Skype","call":"chiama","open":"apri","_default":" ","_as_default":" ","copy":"copia"}}}')},function(e,t,a){var o=a(2);e.exports="string"==typeof o?o:o.toString()},function(e,t,a){(t=a(3)(!1)).push([e.i,'.m-modal{position:fixed;top:0;right:0;bottom:0;left:0;justify-content:center;align-items:center;flex-direction:column;overflow:hidden;font-size:15px;z-index:10000}.m-modal p,.m-modal span,.m-modal strong,.m-modal a{margin:0;padding:0;font-size:100%;line-height:1;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";text-rendering:optimizeLegibility}.m-modal strong{font-weight:700}.m-modal .m-modal-back{position:absolute;z-index:10001;top:0;right:0;bottom:0;left:0;background-color:rgba(32,35,42,0.75);opacity:0.8}.m-modal .m-modal-content{position:relative;z-index:10002;box-sizing:content-box;text-align:center;min-width:200px;max-width:240px;background-color:#fff;opacity:0.97;border-radius:8px;box-shadow:0px 3px 20px rgba(32,35,42,0.5);color:#4a4a4a;display:flex;flex-direction:column;overflow:auto;padding:20px;transition:0.5s box-shadow}.m-modal .m-modal-content:hover{opacity:1;box-shadow:0px 7px 20px rgba(32,35,42,0.85)}.m-modal .m-modal-content .m-title{margin-bottom:8px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.m-modal .m-modal-content .m-details{margin-bottom:10px}.m-modal .m-modal-content .m-details p{font-size:12px;margin-top:3px;margin-bottom:3px}.m-modal .m-modal-content a{padding:10px;color:#4a4a4a;border-radius:8px;text-decoration:none}.m-modal .m-modal-content a.m-gmail{color:#d44638}.m-modal .m-modal-content a.m-gmail:hover{background-color:rgba(212,70,56,0.08);color:#d44638}.m-modal .m-modal-content a.m-outlook{color:#0072c6}.m-modal .m-modal-content a.m-outlook:hover{background-color:rgba(0,114,198,0.08);color:#0072c6}.m-modal .m-modal-content a.m-tg{color:#08c}.m-modal .m-modal-content a.m-tg:hover{background-color:rgba(0,114,198,0.08);color:#08c}.m-modal .m-modal-content a.m-wa{color:#00bfa5}.m-modal .m-modal-content a.m-wa:hover{background-color:rgba(0,191,165,0.08);color:#00bfa5}.m-modal .m-modal-content a.m-skype{color:#00aff0}.m-modal .m-modal-content a.m-skype:hover{background-color:rgba(0,175,240,0.08);color:#00aff0}.m-modal .m-modal-content a.m-copy{padding:16px 10px;font-size:16px}.m-modal .m-modal-content a.m-default:hover,.m-modal .m-modal-content a.m-copy:hover{background-color:rgba(0,0,0,0.08);color:#4a4a4a}.m-modal .m-modal-content a.m-by{font-size:8px;margin-top:0.8rem;padding:5px;color:#4a4a4a;opacity:0.5}.m-modal .m-modal-content a.m-by:hover{opacity:1}.m-modal .m-modal-content .w-500{font-weight:500}\n',""]),e.exports=t},function(e,t,a){"use strict";e.exports=function(e){var t=[];return t.toString=function(){return this.map((function(t){var a=function(e,t){var a=e[1]||"",o=e[3];if(!o)return a;if(t&&"function"==typeof btoa){var n=(d=o,i=btoa(unescape(encodeURIComponent(JSON.stringify(d)))),c="sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(i),"/*# ".concat(c," */")),l=o.sources.map((function(e){return"/*# sourceURL=".concat(o.sourceRoot||"").concat(e," */")}));return[a].concat(l).concat([n]).join("\n")}var d,i,c;return[a].join("\n")}(t,e);return t[2]?"@media ".concat(t[2]," {").concat(a,"}"):a})).join("")},t.i=function(e,a,o){"string"==typeof e&&(e=[[null,e,""]]);var n={};if(o)for(var l=0;l{let t="en",a=o.translations;(null==e?void 0:e.defaultLang)&&o.languages.includes(e.defaultLang)&&(t=e.defaultLang),!(null==e?void 0:e.forceLang)&&document.documentElement.lang&&(t=document.documentElement.lang);let n=a.en,i=a[t];{let e=ee();e.style.display="none",e.id="mailgo",e.classList.add("m-modal");let t=ee();t.className="m-modal-back",e.appendChild(t);let a=ee();a.className="m-modal-content",e.appendChild(a),c=ee("strong"),c.id="m-title",c.className="m-title",a.appendChild(c);let o=ee();o.id="m-details",o.className="m-details",m=ee("p"),m.id="m-cc";let s=ee(d);s.className="w-500",s.appendChild(te(i.cc||n.cc)),h=ee(d),h.id="m-cc-value",m.appendChild(s),m.appendChild(h),o.appendChild(m),p=ee("p"),p.id="m-bcc";let k=ee(d);k.className="w-500",k.appendChild(te(i.bcc||n.bcc)),g=ee(d),g.id="m-bcc-value",p.appendChild(k),p.appendChild(g),o.appendChild(p),r=ee("p"),r.id="m-subject";let v=ee(d);v.className="w-500",v.appendChild(te(i.subject||n.subject)),f=ee(d),f.id="m-subject-value",r.appendChild(v),r.appendChild(f),o.appendChild(r),u=ee("p"),u.id="m-body";let L=ee(d);L.className="w-500",L.appendChild(te(i.body||n.body)),b=ee(d),b.id="m-body-value",u.appendChild(L),u.appendChild(b),o.appendChild(u),a.appendChild(o),y=ee("a"),y.id="m-gmail",y.href=l,y.classList.add("m-open"),y.classList.add("m-gmail"),y.appendChild(te(i.open_in||n.open_in));let x=ee(d);x.className="w-500",x.appendChild(te(i.gmail||n.gmail)),y.appendChild(x),a.appendChild(y),C=ee("a"),C.id="m-outlook",C.href=l,C.classList.add("m-open"),C.classList.add("m-outlook"),C.appendChild(te(i.open_in||n.open_in));let j=ee(d);j.className="w-500",j.appendChild(te(i.outlook||n.outlook)),C.appendChild(j),a.appendChild(C),w=ee("a"),w.id="m-open",w.href=l,w.classList.add("m-open"),w.classList.add("m-default");let A=ee(d);A.className="w-500",A.appendChild(te(i.open||n.open)),w.appendChild(A),w.appendChild(te(i._default||n._default)),a.appendChild(w),_=ee("a"),_.id="m-copy",_.href=l,_.classList.add("m-copy"),_.classList.add("w-500"),_.appendChild(te(i.copy||n.copy)),a.appendChild(_),a.appendChild(Y()),document.body.appendChild(e),t.addEventListener("click",V)}{let e=ee();e.style.display="none",e.id="mailgo-tel",e.classList.add("m-modal");let t=ee();t.className="m-modal-back",e.appendChild(t);let a=ee();a.className="m-modal-content",e.appendChild(a),s=ee("strong"),s.id="m-tel-title",s.className="m-title",a.appendChild(s),k=ee("a"),k.id="m-tg",k.href=l,k.classList.add("m-open"),k.classList.add("m-tg"),k.style.display="none",k.appendChild(te(i.open_in||n.open_in));let o=ee(d);o.className="w-500",o.appendChild(te(i.telegram||n.telegram)),k.appendChild(o),a.appendChild(k),v=ee("a"),v.id="m-wa",v.href=l,v.classList.add("m-open"),v.classList.add("m-wa"),v.appendChild(te(i.open_in||n.open_in));let c=ee(d);c.className="w-500",c.appendChild(te(i.whatsapp||n.whatsapp)),v.appendChild(c),a.appendChild(v),L=ee("a"),L.id="m-skype",L.href=l,L.classList.add("m-open"),L.classList.add("m-skype"),L.appendChild(te(i.open_in||n.open_in));let m=ee(d);m.className="w-500",m.appendChild(te(i.skype||n.skype)),L.appendChild(m),a.appendChild(L),x=ee("a"),x.id="m-call",x.href=l,x.classList.add("m-open"),x.classList.add("m-default");let p=ee(d);p.className="w-500",p.appendChild(te(i.call||n.call)),x.appendChild(p),x.appendChild(te(i._as_default||n._as_default)),a.appendChild(x),j=ee("a"),j.id="m-tel-copy",j.href=l,j.classList.add("m-copy"),j.classList.add("w-500"),j.appendChild(te(i.copy||n.copy)),a.appendChild(j),a.appendChild(Y()),document.body.appendChild(e),t.addEventListener("click",V)}document.addEventListener("click",q)},W=(e="mail",t)=>{if("mail"===e){if(t.href&&t.href.toLowerCase().startsWith("mailto:")){A=decodeURIComponent(t.href.split("?")[0].split("mailto:")[1].trim()),i=new URL(t.href);let e=i.searchParams;N=e.get("cc"),S=e.get("bcc"),R=e.get("subject"),U=e.get("body")}else A=t.getAttribute("data-address")+"@"+t.getAttribute("data-domain"),i=new URL("mailto:"+encodeURIComponent(A)),N=t.getAttribute("data-cc-address")+"@"+t.getAttribute("data-cc-domain"),S=t.getAttribute("data-bcc-address")+"@"+t.getAttribute("data-bcc-domain"),R=t.getAttribute("data-subject"),U=t.getAttribute("data-body");if(!se(A.split(",")))return;N&&!se(N.split(","))&&(N=""),S&&!se(S.split(","))&&(S=""),c.innerHTML=A.split(",").join("
"),N?(m.style.display="block",h.innerHTML=N.split(",").join("
")):m.style.display="none",S?(p.style.display="block",g.innerHTML=S.split(",").join("
")):p.style.display="none",R?(r.style.display="block",f.textContent=R):r.style.display="none",U?(u.style.display="block",b.textContent=U):u.style.display="none",y.addEventListener("click",P),C.addEventListener("click",H),E=oe(A),w.addEventListener("click",D),_.addEventListener("click",()=>F(A))}"tel"===e&&(t.href&&t.href.toLowerCase().startsWith("tel:")?I=decodeURIComponent(t.href.split("?")[0].split("tel:")[1].trim()):t.href&&t.href.toLowerCase().startsWith("callto:")?I=decodeURIComponent(t.href.split("?")[0].split("callto:")[1].trim()):t.hasAttribute("data-tel")&&(I=t.getAttribute("data-tel"),M=t.getAttribute("data-msg")),t.hasAttribute("data-telegram")&&(z=t.getAttribute("data-telegram")),t.hasAttribute("data-skype")&&(O=t.getAttribute("data-skype")),s.innerHTML=I,v.addEventListener("click",J),z&&(de("m-tg","block"),k.addEventListener("click",B)),L.addEventListener("click",G),x.addEventListener("click",Z),j.addEventListener("click",()=>F(I))),Q(e),document.addEventListener("keydown",K)},P=()=>{let e="https://mail.google.com/mail/u/0/?view=cm&source=mailto&to="+encodeURIComponent(A);N&&(e=e.concat("&cc="+encodeURIComponent(N))),S&&(e=e.concat("&bcc="+encodeURIComponent(S))),R&&(e=e.concat("&subject="+R)),U&&(e=e.concat("&body="+U)),window.open(e,"_blank"),V()},H=()=>{let e="https://outlook.live.com/owa/?path=/mail/action/compose&to="+encodeURIComponent(A);R&&(e=e.concat("&subject="+R)),U&&(e=e.concat("&body="+U)),window.open(e,"_blank"),V()},D=()=>{ae(E),V()},B=()=>{let e="https://t.me/"+z;window.open(e,"_blank"),V()},G=()=>{let e="skype:"+(""!==O?O:I);window.open(e,"_blank"),V()},J=()=>{let e="https://wa.me/"+I;window.open(e,"_blank"),V()},Z=e=>{let t="tel:"+I;window.open(t),V()},F=e=>{let t;me(e),t=X("mail")?_:j,t.textContent="copied",setTimeout(()=>{t.textContent="copy",V()},999)},$=(e,t="mail")=>{let a=e.href;return"mail"===t?a&&a.toLowerCase().startsWith("mailto:")&&!e.classList.contains("no-mailgo")||e.hasAttribute("data-address")&&(a&&"#mailgo"===e.getAttribute("href").toLowerCase()||e.classList&&e.classList.contains("mailgo")):"tel"===t&&(a&&(a.toLowerCase().startsWith("tel:")||a.toLowerCase().startsWith("callto:"))&&!e.classList.contains("no-mailgo")||e.hasAttribute("data-tel")&&a&&"#mailgo"===e.getAttribute("href").toLowerCase()||e.classList&&e.classList.contains("mailgo"))},q=e=>{if(!document.contains(ne("mailgo"))||!document.contains(ne("mailgo-tel")))return;if(X("mail")||X("tel"))return!1;let t=e.composedPath&&e.composedPath()||ie(e.target);return t&&t.forEach(t=>!(t instanceof HTMLDocument||t instanceof Window)&&($(t,"mail")?(e.preventDefault(),W("mail",t),!0):$(t,"tel")?(e.preventDefault(),W("tel",t),!0):void 0)),!1},K=e=>{if(X("mail"))switch(e.keyCode){case 27:V();break;case 71:P();break;case 79:H();break;case 32:case 13:D();break;case 67:F(A);break;default:return}else if(X("tel"))switch(e.keyCode){case 27:V();break;case 84:B();break;case 87:J();break;case 32:case 13:Z();break;case 67:F(I);break;default:return}},Q=(e="mail")=>"mail"===e?(de("mailgo","flex"),!0):"tel"===e&&(de("mailgo-tel","flex"),!0),V=()=>{de("mailgo","none"),de("mailgo-tel","none"),document.removeEventListener("keydown",K)},X=(e="mail")=>"mail"===e?"flex"===le("mailgo"):"tel"===e&&"flex"===le("mailgo-tel"),Y=()=>{let e=ee("a");return e.href="https://mailgo.js.org?ref=mailgo-modal",e.className="m-by",e.target="_blank",e.rel="noopener noreferrer",e.appendChild(te("mailgo.js.org")),e},ee=(e="div")=>document.createElement(e),te=e=>document.createTextNode(e),ae=e=>window.location.href="mailto:"+atob(e),oe=e=>btoa(e),ne=e=>document.getElementById(e),le=e=>ne(e).style.display,de=(e,t)=>ne(e).style.display=t,ie=e=>{let t=[];for(;e;){if(t.push(e),"HTML"===e.tagName)return t.push(document),t.push(window),t;e=e.parentElement}},ce=e=>/^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/.test(e),se=e=>e.every(ce),me=e=>{let t=ee("textarea");t.value=e,t.setAttribute("readonly",""),t.style.position="absolute",t.style.left="-9999px",document.body.appendChild(t);let a=document.getSelection().rangeCount>0&&document.getSelection().getRangeAt(0);return t.select(),document.execCommand("copy"),document.body.removeChild(t),!!a&&(document.getSelection().removeAllRanges(),document.getSelection().addRange(a),!0)};var pe=e=>{window&&"undefined"!=typeof window&&((()=>{let e=ee("style");e.id="mailgo-style",e.type="text/css",e.appendChild(te(n)),document.head.appendChild(e)})(),(null==e?void 0:e.initEvent)?document.addEventListener(e.initEvent,()=>{T(e)}):T(e))};pe({initEvent:"DOMContentLoaded"})}]); \ No newline at end of file diff --git a/src/i18n/i18n.json b/i18n/i18n.json similarity index 100% rename from src/i18n/i18n.json rename to i18n/i18n.json diff --git a/lib/mailgo.js b/lib/mailgo.js index 5663f9d..0e90744 100644 --- a/lib/mailgo.js +++ b/lib/mailgo.js @@ -663,7 +663,7 @@ const openWhatsApp = () => { // hide the modal hideMailgo(); }; -const callDefault = () => { +const callDefault = (event) => { let callUrl = "tel:" + tel; window.open(callUrl); hideMailgo(); diff --git a/package.json b/package.json index 33d9b94..2e5e1e8 100644 --- a/package.json +++ b/package.json @@ -42,6 +42,7 @@ "@babel/preset-flow": "^7.10.1", "@babel/preset-typescript": "^7.10.4", "@babel/types": "^7.10.3", + "babel-loader": "^8.1.0", "css-loader": "^3.6.0", "cssnano": "^4.1.10", "flow-bin": "^0.128.0", diff --git a/src/mailgo.ts b/src/mailgo.ts index f10d575..a50c3d0 100644 --- a/src/mailgo.ts +++ b/src/mailgo.ts @@ -1,7 +1,7 @@ import { MailgoConfig } from "../mailgo"; // i18n for mailgo -const i18n = require("./i18n/i18n.json"); +const i18n = require("../i18n/i18n.json"); // mailgo css const mailgoCSS = require("./mailgo.scss").toString(); @@ -578,7 +578,7 @@ const openWhatsApp = (): void => { hideMailgo(); }; -const callDefault = (): void => { +const callDefault = (event?: any): void => { let callUrl = "tel:" + tel; window.open(callUrl); hideMailgo(); diff --git a/tsconfig.json b/tsconfig.json index cc1d7ba..8d0111d 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -2,7 +2,7 @@ "compilerOptions": { "outDir": "./dist/", "sourceMap": true, - "noImplicitAny": true, + "noImplicitAny": false, "module": "es6", "target": "es6", "jsx": "react", diff --git a/webpack.config.js b/webpack.config.js index c6aef6d..d999986 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -1,32 +1,31 @@ const path = require("path"); -const UglifyJsPlugin = require("uglifyjs-webpack-plugin"); +const { presets } = require("./babel.config"); const mailgoRules = [ { test: /\.tsx?$/, include: path.resolve(__dirname, "./src/"), - use: "ts-loader", + use: [ + "ts-loader", + /*{ + loader: "babel-loader", + options: { + presets: presets, + }, + },*/ + ], exclude: /node_modules/, }, { test: /\.s[ac]ss$/i, use: ["to-string-loader", "css-loader", "sass-loader"], }, - { - test: /\.m?js$/, - exclude: /(node_modules|bower_components)/, - use: { - loader: "babel-loader", - options: { - presets: ["@babel/preset-env"], - }, - }, - }, ]; module.exports = [ { mode: "production", + target: "web", entry: "./mailgo.dist.ts", context: path.join(__dirname, "webpack"), module: { @@ -42,9 +41,30 @@ module.exports = [ path: path.resolve(__dirname, "dist"), }, }, - { mode: "production", + target: "web", + entry: "./mailgo.dist.ts", + context: path.join(__dirname, "webpack"), + module: { + rules: mailgoRules, + }, + optimization: { + minimize: false, + }, + resolve: { + extensions: [".ts", ".js"], + }, + output: { + filename: "mailgo.js", + library: "mailgo", + libraryTarget: "window", + path: path.resolve(__dirname, "dist"), + }, + }, + { + mode: "production", + target: "node", entry: "./mailgo.lib.ts", context: path.join(__dirname, "webpack"), module: { diff --git a/yarn.lock b/yarn.lock index 0d02321..71f35bd 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1741,6 +1741,17 @@ babel-jest@^26.1.0: graceful-fs "^4.2.4" slash "^3.0.0" +babel-loader@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.1.0.tgz#c611d5112bd5209abe8b9fa84c3e4da25275f1c3" + integrity sha512-7q7nC1tYOrqvUrN3LQK4GwSk/TQorZSOlO9C+RZDZpODgyN4ZlCqE5q9cDsyWOliN+aU9B4JX01xK9eJXowJLw== + dependencies: + find-cache-dir "^2.1.0" + loader-utils "^1.4.0" + mkdirp "^0.5.3" + pify "^4.0.1" + schema-utils "^2.6.5" + babel-plugin-dynamic-import-node@^2.3.3: version "2.3.3" resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz#84fda19c976ec5c6defef57f9427b3def66e17a3" @@ -6510,7 +6521,7 @@ schema-utils@^1.0.0: ajv-errors "^1.0.0" ajv-keywords "^3.1.0" -schema-utils@^2.6.1, schema-utils@^2.6.6, schema-utils@^2.7.0: +schema-utils@^2.6.1, schema-utils@^2.6.5, schema-utils@^2.6.6, schema-utils@^2.7.0: version "2.7.0" resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.0.tgz#17151f76d8eae67fbbf77960c33c676ad9f4efc7" integrity sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==