From 407d22041da2dea5c775d572421b7231d692cbf9 Mon Sep 17 00:00:00 2001 From: Matteo Manzinello Date: Wed, 17 Jun 2020 23:02:10 +0200 Subject: [PATCH] build --- dist/mailgo.min.js | 159 +-------------------------------------------- webpack.config.js | 2 +- 2 files changed, 2 insertions(+), 159 deletions(-) diff --git a/dist/mailgo.min.js b/dist/mailgo.min.js index d612741..a49e9a3 100644 --- a/dist/mailgo.min.js +++ b/dist/mailgo.min.js @@ -1,158 +1 @@ -/******/ (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 = "./mailgo.webpack.ts"); -/******/ }) -/************************************************************************/ -/******/ ({ - -/***/ "../node_modules/css-loader/dist/cjs.js!../node_modules/sass-loader/dist/cjs.js!./mailgo.scss": -/*!****************************************************************************************************!*\ - !*** ../node_modules/css-loader/dist/cjs.js!../node_modules/sass-loader/dist/cjs.js!./mailgo.scss ***! - \****************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -eval("// Imports\nvar ___CSS_LOADER_API_IMPORT___ = __webpack_require__(/*! ../node_modules/css-loader/dist/runtime/api.js */ \"../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.i, \".m-modal {\\n position: fixed;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n justify-content: center;\\n align-items: center;\\n flex-direction: column;\\n overflow: hidden;\\n font-size: 15px;\\n z-index: 10000; }\\n .m-modal p,\\n .m-modal span,\\n .m-modal strong,\\n .m-modal a {\\n margin: 0;\\n padding: 0;\\n font-size: 100%;\\n line-height: 1;\\n font-family: -apple-system, BlinkMacSystemFont, \\\"Segoe UI\\\", Roboto, Helvetica, Arial, sans-serif, \\\"Apple Color Emoji\\\", \\\"Segoe UI Emoji\\\", \\\"Segoe UI Symbol\\\";\\n text-rendering: optimizeLegibility; }\\n .m-modal strong {\\n font-weight: 700; }\\n .m-modal .m-modal-back {\\n position: absolute;\\n z-index: 10001;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n background-color: rgba(32, 35, 42, 0.75);\\n opacity: 0.8; }\\n .m-modal .m-modal-content {\\n position: relative;\\n z-index: 10002;\\n box-sizing: content-box;\\n text-align: center;\\n min-width: 200px;\\n max-width: 240px;\\n background-color: #fff;\\n opacity: 0.97;\\n border-radius: 8px;\\n box-shadow: 0px 3px 20px rgba(32, 35, 42, 0.5);\\n color: #4a4a4a;\\n display: flex;\\n flex-direction: column;\\n overflow: auto;\\n padding: 20px;\\n transition: 0.5s box-shadow; }\\n .m-modal .m-modal-content:hover {\\n opacity: 1;\\n box-shadow: 0px 7px 20px rgba(32, 35, 42, 0.85); }\\n .m-modal .m-modal-content .m-title {\\n margin-bottom: 8px;\\n overflow: hidden;\\n white-space: nowrap;\\n text-overflow: ellipsis; }\\n .m-modal .m-modal-content .m-details {\\n margin-bottom: 10px; }\\n .m-modal .m-modal-content .m-details p {\\n font-size: 12px;\\n margin-top: 3px;\\n margin-bottom: 3px; }\\n .m-modal .m-modal-content a {\\n padding: 10px;\\n color: #4a4a4a;\\n border-radius: 8px;\\n text-decoration: none; }\\n .m-modal .m-modal-content a.m-gmail {\\n color: #d44638; }\\n .m-modal .m-modal-content a.m-gmail:hover {\\n background-color: rgba(212, 70, 56, 0.08);\\n color: #d44638; }\\n .m-modal .m-modal-content a.m-outlook {\\n color: #0072c6; }\\n .m-modal .m-modal-content a.m-outlook:hover {\\n background-color: rgba(0, 114, 198, 0.08);\\n color: #0072c6; }\\n .m-modal .m-modal-content a.m-tg {\\n color: #0088cc; }\\n .m-modal .m-modal-content a.m-tg:hover {\\n background-color: rgba(0, 114, 198, 0.08);\\n color: #0088cc; }\\n .m-modal .m-modal-content a.m-wa {\\n color: #00bfa5; }\\n .m-modal .m-modal-content a.m-wa:hover {\\n background-color: rgba(0, 191, 165, 0.08);\\n color: #00bfa5; }\\n .m-modal .m-modal-content a.m-skype {\\n color: #00aff0; }\\n .m-modal .m-modal-content a.m-skype:hover {\\n background-color: rgba(0, 175, 240, 0.08);\\n color: #00aff0; }\\n .m-modal .m-modal-content a.m-copy {\\n padding: 16px 10px;\\n font-size: 16px; }\\n .m-modal .m-modal-content a.m-default:hover, .m-modal .m-modal-content a.m-copy:hover {\\n background-color: rgba(0, 0, 0, 0.08);\\n color: #4a4a4a; }\\n .m-modal .m-modal-content a.m-by {\\n font-size: 8px;\\n margin-top: 0.8rem;\\n padding: 5px;\\n color: #4a4a4a;\\n opacity: 0.5; }\\n .m-modal .m-modal-content a.m-by:hover {\\n opacity: 1; }\\n .m-modal .m-modal-content .w-500 {\\n font-weight: 500; }\\n\", \"\"]);\n// Exports\nmodule.exports = exports;\n\n\n//# sourceURL=webpack:///./mailgo.scss?../node_modules/css-loader/dist/cjs.js!../node_modules/sass-loader/dist/cjs.js"); - -/***/ }), - -/***/ "../node_modules/css-loader/dist/runtime/api.js": -/*!******************************************************!*\ - !*** ../node_modules/css-loader/dist/runtime/api.js ***! - \******************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -eval("\n\n/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n*/\n// css base code, injected by the css-loader\n// eslint-disable-next-line func-names\nmodule.exports = function (useSourceMap) {\n var list = []; // return the list of modules as css string\n\n list.toString = function toString() {\n return this.map(function (item) {\n var content = cssWithMappingToString(item, useSourceMap);\n\n if (item[2]) {\n return \"@media \".concat(item[2], \" {\").concat(content, \"}\");\n }\n\n return content;\n }).join('');\n }; // import a list of modules into the list\n // eslint-disable-next-line func-names\n\n\n list.i = function (modules, mediaQuery, dedupe) {\n if (typeof modules === 'string') {\n // eslint-disable-next-line no-param-reassign\n modules = [[null, modules, '']];\n }\n\n var alreadyImportedModules = {};\n\n if (dedupe) {\n for (var i = 0; i < this.length; i++) {\n // eslint-disable-next-line prefer-destructuring\n var id = this[i][0];\n\n if (id != null) {\n alreadyImportedModules[id] = true;\n }\n }\n }\n\n for (var _i = 0; _i < modules.length; _i++) {\n var item = [].concat(modules[_i]);\n\n if (dedupe && alreadyImportedModules[item[0]]) {\n // eslint-disable-next-line no-continue\n continue;\n }\n\n if (mediaQuery) {\n if (!item[2]) {\n item[2] = mediaQuery;\n } else {\n item[2] = \"\".concat(mediaQuery, \" and \").concat(item[2]);\n }\n }\n\n list.push(item);\n }\n };\n\n return list;\n};\n\nfunction cssWithMappingToString(item, useSourceMap) {\n var content = item[1] || ''; // eslint-disable-next-line prefer-destructuring\n\n var cssMapping = item[3];\n\n if (!cssMapping) {\n return content;\n }\n\n if (useSourceMap && typeof btoa === 'function') {\n var sourceMapping = toComment(cssMapping);\n var sourceURLs = cssMapping.sources.map(function (source) {\n return \"/*# sourceURL=\".concat(cssMapping.sourceRoot || '').concat(source, \" */\");\n });\n return [content].concat(sourceURLs).concat([sourceMapping]).join('\\n');\n }\n\n return [content].join('\\n');\n} // Adapted from convert-source-map (MIT)\n\n\nfunction toComment(sourceMap) {\n // eslint-disable-next-line no-undef\n var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap))));\n var data = \"sourceMappingURL=data:application/json;charset=utf-8;base64,\".concat(base64);\n return \"/*# \".concat(data, \" */\");\n}\n\n//# sourceURL=webpack:///../node_modules/css-loader/dist/runtime/api.js?"); - -/***/ }), - -/***/ "./i18n/i18n.json": -/*!************************!*\ - !*** ./i18n/i18n.json ***! - \************************/ -/*! exports provided: languages, translations, default */ -/***/ (function(module) { - -eval("module.exports = JSON.parse(\"{\\\"languages\\\":[\\\"en\\\",\\\"it\\\"],\\\"translations\\\":{\\\"en\\\":{\\\"open_in\\\":\\\"open in \\\",\\\"cc\\\":\\\"cc \\\",\\\"bcc\\\":\\\"bcc \\\",\\\"subject\\\":\\\"subject \\\",\\\"body\\\":\\\"body \\\"},\\\"it\\\":{\\\"open_in\\\":\\\"apri con \\\"}}}\");\n\n//# sourceURL=webpack:///./i18n/i18n.json?"); - -/***/ }), - -/***/ "./mailgo.scss": -/*!*********************!*\ - !*** ./mailgo.scss ***! - \*********************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -eval("\n var result = __webpack_require__(/*! !../node_modules/css-loader/dist/cjs.js!../node_modules/sass-loader/dist/cjs.js!./mailgo.scss */ \"../node_modules/css-loader/dist/cjs.js!../node_modules/sass-loader/dist/cjs.js!./mailgo.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n \n\n//# sourceURL=webpack:///./mailgo.scss?"); - -/***/ }), - -/***/ "./mailgo.ts": -/*!*******************!*\ - !*** ./mailgo.ts ***! - \*******************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n// i18n for mailgo\nconst i18n = __webpack_require__(/*! ./i18n/i18n.json */ \"./i18n/i18n.json\");\n// mailgo css\nconst mailgoCSS = __webpack_require__(/*! ./mailgo.scss */ \"./mailgo.scss\").toString();\n// default lang\nconst DEFAULT_LANG = \"en\";\n// links\nconst MAILTO = \"mailto:\";\nconst TEL = \"tel:\";\nconst CALLTO = \"callto:\";\n// mailgo types\nconst MAIL_TYPE = \"mail\";\nconst TEL_TYPE = \"tel\";\n// default href for links\nconst DEFAULT_BTN_HREF = \"javascript:void(0);\";\n// html tags\nconst span = \"span\";\n// mailgo variables\nlet url, mail = \"\", encEmail = \"\", cc = \"\", bcc = \"\", subject = \"\", bodyMail = \"\";\n// mailgo tel variables\nlet tel = \"\", msg = \"\", telegramUsername = \"\", skypeUsername = \"\";\n// the DOM elements\nlet title, titleTel, detailCc, detailBcc, detailSubject, detailBody, ccValue, bccValue, subjectValue, bodyValue;\n// mailgo buttons (actions)\nlet gmail, outlook, open, telegram, wa, skype, call, copyMail, copyTel;\n/**\n * mailgoInit\n * the function that creates the mailgo elements in DOM\n */\nconst mailgoInit = (mailgoConfig) => {\n // default language\n let lang = DEFAULT_LANG;\n // translations\n let translations = i18n.translations;\n // if a default language is defined use it\n if (mailgoConfig.defaultLang &&\n i18n.languages.includes(mailgoConfig.defaultLang)) {\n lang = mailgoConfig.defaultLang;\n }\n // if is defined use it!\n if (!mailgoConfig.forceLang && document.documentElement.lang) {\n lang = document.documentElement.lang;\n }\n // strings\n let defaultStrings = translations[DEFAULT_LANG];\n let strings = translations[lang];\n // mailgo mail\n {\n // modal\n let modal = createElement();\n modal.style.display = \"none\";\n modal.id = \"mailgo\";\n modal.classList.add(\"m-modal\");\n // background\n let modalBackground = createElement();\n modalBackground.className = \"m-modal-back\";\n modal.appendChild(modalBackground);\n // modal content\n let modalContent = createElement();\n modalContent.className = \"m-modal-content\";\n modal.appendChild(modalContent);\n // title (email address)\n title = createElement(\"strong\");\n title.id = \"m-title\";\n title.className = \"m-title\";\n modalContent.appendChild(title);\n // details\n let details = createElement();\n details.id = \"m-details\";\n details.className = \"m-details\";\n detailCc = createElement(\"p\");\n detailCc.id = \"m-cc\";\n let ccSpan = createElement(span);\n ccSpan.className = \"w-500\";\n ccSpan.appendChild(createTextNode(strings.cc));\n ccValue = createElement(span);\n ccValue.id = \"m-cc-value\";\n detailCc.appendChild(ccSpan);\n detailCc.appendChild(ccValue);\n details.appendChild(detailCc);\n detailBcc = createElement(\"p\");\n detailBcc.id = \"m-bcc\";\n let bccSpan = createElement(span);\n bccSpan.className = \"w-500\";\n bccSpan.appendChild(createTextNode(strings.bcc));\n bccValue = createElement(span);\n bccValue.id = \"m-bcc-value\";\n detailBcc.appendChild(bccSpan);\n detailBcc.appendChild(bccValue);\n details.appendChild(detailBcc);\n detailSubject = createElement(\"p\");\n detailSubject.id = \"m-subject\";\n let subjectSpan = createElement(span);\n subjectSpan.className = \"w-500\";\n subjectSpan.appendChild(createTextNode(strings.subject));\n subjectValue = createElement(span);\n subjectValue.id = \"m-subject-value\";\n detailSubject.appendChild(subjectSpan);\n detailSubject.appendChild(subjectValue);\n details.appendChild(detailSubject);\n detailBody = createElement(\"p\");\n detailBody.id = \"m-body\";\n let bodySpan = createElement(span);\n bodySpan.className = \"w-500\";\n bodySpan.appendChild(createTextNode(strings.body));\n bodyValue = createElement(span);\n bodyValue.id = \"m-body-value\";\n detailBody.appendChild(bodySpan);\n detailBody.appendChild(bodyValue);\n details.appendChild(detailBody);\n modalContent.appendChild(details);\n // Gmail\n gmail = createElement(\"a\");\n gmail.id = \"m-gmail\";\n gmail.href = DEFAULT_BTN_HREF;\n gmail.classList.add(\"m-open\");\n gmail.classList.add(\"m-gmail\");\n gmail.appendChild(createTextNode(strings.open_in));\n let gmailSpan = createElement(span);\n gmailSpan.className = \"w-500\";\n gmailSpan.appendChild(createTextNode(\"Gmail\"));\n gmail.appendChild(gmailSpan);\n modalContent.appendChild(gmail);\n // Outlook\n outlook = createElement(\"a\");\n outlook.id = \"m-outlook\";\n outlook.href = DEFAULT_BTN_HREF;\n outlook.classList.add(\"m-open\");\n outlook.classList.add(\"m-outlook\");\n outlook.appendChild(createTextNode(strings.open_in));\n let outlookSpan = createElement(span);\n outlookSpan.className = \"w-500\";\n outlookSpan.appendChild(createTextNode(\"Outlook\"));\n outlook.appendChild(outlookSpan);\n modalContent.appendChild(outlook);\n // open default\n open = createElement(\"a\");\n open.id = \"m-open\";\n open.href = DEFAULT_BTN_HREF;\n open.classList.add(\"m-open\");\n open.classList.add(\"m-default\");\n let openSpan = createElement(span);\n openSpan.className = \"w-500\";\n openSpan.appendChild(createTextNode(\"open\"));\n open.appendChild(openSpan);\n open.appendChild(createTextNode(\" default\"));\n modalContent.appendChild(open);\n // copy\n copyMail = createElement(\"a\");\n copyMail.id = \"m-copy\";\n copyMail.href = DEFAULT_BTN_HREF;\n copyMail.classList.add(\"m-copy\");\n copyMail.classList.add(\"w-500\");\n copyMail.appendChild(createTextNode(\"copy\"));\n modalContent.appendChild(copyMail);\n modalContent.appendChild(byElement());\n // add the modal at the end of the body\n document.body.appendChild(modal);\n // every click outside the modal will hide the modal\n modalBackground.addEventListener(\"click\", hideMailgo);\n }\n // mailgo tel\n {\n // modal\n let modal = createElement();\n modal.style.display = \"none\";\n modal.id = \"mailgo-tel\";\n modal.classList.add(\"m-modal\");\n // background\n let modalBackground = createElement();\n modalBackground.className = \"m-modal-back\";\n modal.appendChild(modalBackground);\n // modal content\n let modalContent = createElement();\n modalContent.className = \"m-modal-content\";\n modal.appendChild(modalContent);\n // title (telephone number)\n titleTel = createElement(\"strong\");\n titleTel.id = \"m-tel-title\";\n titleTel.className = \"m-title\";\n modalContent.appendChild(titleTel);\n // Telegram\n telegram = createElement(\"a\");\n telegram.id = \"m-tg\";\n telegram.href = DEFAULT_BTN_HREF;\n telegram.classList.add(\"m-open\");\n telegram.classList.add(\"m-tg\");\n // by default not display\n telegram.style.display = \"none\";\n telegram.appendChild(createTextNode(strings.open_in));\n let telegramSpan = createElement(span);\n telegramSpan.className = \"w-500\";\n telegramSpan.appendChild(createTextNode(\"Telegram\"));\n telegram.appendChild(telegramSpan);\n modalContent.appendChild(telegram);\n // WhatsApp\n wa = createElement(\"a\");\n wa.id = \"m-wa\";\n wa.href = DEFAULT_BTN_HREF;\n wa.classList.add(\"m-open\");\n wa.classList.add(\"m-wa\");\n wa.appendChild(createTextNode(strings.open_in));\n let waSpan = createElement(span);\n waSpan.className = \"w-500\";\n waSpan.appendChild(createTextNode(\"WhatsApp\"));\n wa.appendChild(waSpan);\n modalContent.appendChild(wa);\n // Skype\n skype = createElement(\"a\");\n skype.id = \"m-skype\";\n skype.href = DEFAULT_BTN_HREF;\n skype.classList.add(\"m-open\");\n skype.classList.add(\"m-skype\");\n skype.appendChild(createTextNode(strings.open_in));\n let skypeSpan = createElement(span);\n skypeSpan.className = \"w-500\";\n skypeSpan.appendChild(createTextNode(\"Skype\"));\n skype.appendChild(skypeSpan);\n modalContent.appendChild(skype);\n // call default\n call = createElement(\"a\");\n call.id = \"m-call\";\n call.href = DEFAULT_BTN_HREF;\n call.classList.add(\"m-open\");\n call.classList.add(\"m-default\");\n let callSpan = createElement(span);\n callSpan.className = \"w-500\";\n callSpan.appendChild(createTextNode(\"call\"));\n call.appendChild(callSpan);\n call.appendChild(createTextNode(\" as default\"));\n modalContent.appendChild(call);\n // copy\n copyTel = createElement(\"a\");\n copyTel.id = \"m-tel-copy\";\n copyTel.href = DEFAULT_BTN_HREF;\n copyTel.classList.add(\"m-copy\");\n copyTel.classList.add(\"w-500\");\n copyTel.appendChild(createTextNode(\"copy\"));\n modalContent.appendChild(copyTel);\n modalContent.appendChild(byElement());\n // add the modal at the end of the body\n document.body.appendChild(modal);\n // every click outside the modal will hide the modal\n modalBackground.addEventListener(\"click\", hideMailgo);\n }\n // event listener on body, if the element is mailgo-compatible the mailgo modal will be rendered\n document.addEventListener(\"click\", mailgoCheckRender);\n};\n/**\n * mailgoRender\n * function to render a mailgo (mail or tel)\n */\nconst mailgoRender = (type = MAIL_TYPE, mailgo) => {\n // mailgo mail\n if (type === MAIL_TYPE) {\n // if the element href=^\"mailto:\"\n if (mailgo.href && mailgo.href.toLowerCase().startsWith(MAILTO)) {\n mail = decodeURIComponent(mailgo.href.split(\"?\")[0].split(MAILTO)[1].trim());\n url = new URL(mailgo.href);\n let urlParams = url.searchParams;\n // optional parameters for the email\n cc = urlParams.get(\"cc\");\n bcc = urlParams.get(\"bcc\");\n subject = urlParams.get(\"subject\");\n bodyMail = urlParams.get(\"body\");\n }\n else {\n // if the element href=\"#mailgo\" or class=\"mailgo\"\n // mail = data-address + @ + data-domain\n mail =\n mailgo.getAttribute(\"data-address\") +\n \"@\" +\n mailgo.getAttribute(\"data-domain\");\n url = new URL(MAILTO + encodeURIComponent(mail));\n // cc = data-cc-address + @ + data-cc-domain\n cc =\n mailgo.getAttribute(\"data-cc-address\") +\n \"@\" +\n mailgo.getAttribute(\"data-cc-domain\");\n // bcc = data-bcc-address + @ + data-bcc-domain\n bcc =\n mailgo.getAttribute(\"data-bcc-address\") +\n \"@\" +\n mailgo.getAttribute(\"data-bcc-domain\");\n // subject = data-subject\n subject = mailgo.getAttribute(\"data-subject\");\n // body = data-body\n bodyMail = mailgo.getAttribute(\"data-body\");\n }\n // validate the email address\n if (!validateEmails(mail.split(\",\")))\n return;\n // if cc, bcc is not valid cc, bcc = \"\"\n if (cc && !validateEmails(cc.split(\",\")))\n cc = \"\";\n if (bcc && !validateEmails(bcc.split(\",\")))\n bcc = \"\";\n // the title of the modal (email address)\n title.innerHTML = mail.split(\",\").join(\"
\");\n // add the details if provided\n cc\n ? ((detailCc.style.display = \"block\"),\n (ccValue.innerHTML = cc.split(\",\").join(\"
\")))\n : (detailCc.style.display = \"none\");\n bcc\n ? ((detailBcc.style.display = \"block\"),\n (bccValue.innerHTML = bcc.split(\",\").join(\"
\")))\n : (detailBcc.style.display = \"none\");\n subject\n ? ((detailSubject.style.display = \"block\"),\n (subjectValue.textContent = subject))\n : (detailSubject.style.display = \"none\");\n bodyMail\n ? ((detailBody.style.display = \"block\"),\n (bodyValue.textContent = bodyMail))\n : (detailBody.style.display = \"none\");\n // add the actions\n gmail.addEventListener(\"click\", openGmail);\n outlook.addEventListener(\"click\", openOutlook);\n encEmail = encodeEmail(mail);\n open.addEventListener(\"click\", openDefault);\n copyMail.addEventListener(\"click\", () => copy(mail));\n }\n // mailgo tel\n if (type === TEL_TYPE) {\n if (mailgo.href && mailgo.href.toLowerCase().startsWith(TEL)) {\n tel = decodeURIComponent(mailgo.href.split(\"?\")[0].split(TEL)[1].trim());\n }\n else if (mailgo.href && mailgo.href.toLowerCase().startsWith(CALLTO)) {\n tel = decodeURIComponent(mailgo.href.split(\"?\")[0].split(CALLTO)[1].trim());\n }\n else if (mailgo.hasAttribute(\"data-tel\")) {\n tel = mailgo.getAttribute(\"data-tel\");\n msg = mailgo.getAttribute(\"data-msg\");\n }\n // information\n // let titleEl = getE(\"m-tel-title\");\n // Telegram username\n if (mailgo.hasAttribute(\"data-telegram\")) {\n telegramUsername = mailgo.getAttribute(\"data-telegram\");\n }\n // Telegram username\n if (mailgo.hasAttribute(\"data-skype\")) {\n skypeUsername = mailgo.getAttribute(\"data-skype\");\n }\n // the title of the modal (tel)\n titleTel.innerHTML = tel;\n // add the actions to buttons\n wa.addEventListener(\"click\", openWhatsApp);\n if (telegramUsername) {\n setDisplay(\"m-tg\", \"block\");\n telegram.addEventListener(\"click\", openTelegram);\n }\n skype.addEventListener(\"click\", openSkype);\n call.addEventListener(\"click\", callDefault);\n copyTel.addEventListener(\"click\", () => copy(tel));\n }\n // show the mailgo\n showMailgo(type);\n // add listener keyDown\n document.addEventListener(\"keydown\", mailgoKeydown);\n};\n// actions\nconst openGmail = () => {\n // Gmail url\n let gmailUrl = \"https://mail.google.com/mail/u/0/?view=cm&source=mailto&to=\" +\n encodeURIComponent(mail);\n // the details if provided\n if (cc)\n gmailUrl = gmailUrl.concat(\"&cc=\" + encodeURIComponent(cc));\n if (bcc)\n gmailUrl = gmailUrl.concat(\"&bcc=\" + encodeURIComponent(bcc));\n if (subject)\n gmailUrl = gmailUrl.concat(\"&subject=\" + subject);\n if (bodyMail)\n gmailUrl = gmailUrl.concat(\"&body=\" + bodyMail);\n // open the link\n window.open(gmailUrl, \"_blank\");\n // hide the modal\n hideMailgo();\n};\nconst openOutlook = () => {\n // Outlook url\n let outlookUrl = \"https://outlook.live.com/owa/?path=/mail/action/compose&to=\" +\n encodeURIComponent(mail);\n // the details if provided\n if (subject)\n outlookUrl = outlookUrl.concat(\"&subject=\" + subject);\n if (bodyMail)\n outlookUrl = outlookUrl.concat(\"&body=\" + bodyMail);\n // open the link\n window.open(outlookUrl, \"_blank\");\n // hide the modal\n hideMailgo();\n};\nconst openDefault = () => {\n mailToEncoded(encEmail);\n hideMailgo();\n};\nconst openTelegram = () => {\n // Telegram url\n let tgUrl = \"https://t.me/\" + telegramUsername;\n // open the url\n window.open(tgUrl, \"_blank\");\n // hide the modal\n hideMailgo();\n};\nconst openSkype = () => {\n let skype = skypeUsername !== \"\" ? skypeUsername : tel;\n // Telegram url\n let skypeUrl = \"skype:\" + skype;\n // open the url\n window.open(skypeUrl, \"_blank\");\n // hide the modal\n hideMailgo();\n};\nconst openWhatsApp = () => {\n // WhatsApp url\n let waUrl = \"https://wa.me/\" + tel;\n // the details if provided\n if (msg)\n waUrl + \"?text=\" + msg;\n // open the url\n window.open(waUrl, \"_blank\");\n // hide the modal\n hideMailgo();\n};\nconst callDefault = () => {\n let callUrl = \"tel:\" + tel;\n window.open(callUrl);\n hideMailgo();\n};\nconst copy = (content) => {\n copyToClipboard(content);\n let activeCopy;\n // the correct copyButton (mail or tel)\n mailgoIsShowing(MAIL_TYPE) ? (activeCopy = copyMail) : (activeCopy = copyTel);\n activeCopy.textContent = \"copied\";\n setTimeout(() => {\n activeCopy.textContent = \"copy\";\n // hide after the timeout\n hideMailgo();\n }, 999);\n};\n// function that returns if an element is a mailgo\nconst isMailgo = (element, type = MAIL_TYPE) => {\n let href = element.href;\n // mailgo type mail\n if (type === MAIL_TYPE) {\n return (\n // first case: it is an element with \"mailto:...\" in href and no no-mailgo in classList\n (href &&\n href.toLowerCase().startsWith(MAILTO) &&\n !element.classList.contains(\"no-mailgo\")) ||\n (element.hasAttribute(\"data-address\") &&\n // second case: the href=#mailgo\n ((href && element.getAttribute(\"href\").toLowerCase() === \"#mailgo\") ||\n // third case: the classList contains mailgo\n (element.classList && element.classList.contains(\"mailgo\")))));\n }\n // mailgo type tel\n if (type === TEL_TYPE) {\n return (\n // first case: it is an element with \"tel:...\" or \"callto:...\" in href and no no-mailgo in classList\n (href &&\n (href.toLowerCase().startsWith(TEL) ||\n href.toLowerCase().startsWith(CALLTO)) &&\n !element.classList.contains(\"no-mailgo\")) ||\n (element.hasAttribute(\"data-tel\") &&\n // second case: the href=#mailgo\n href &&\n element.getAttribute(\"href\").toLowerCase() === \"#mailgo\") ||\n // third case: the classList contains mailgo\n (element.classList && element.classList.contains(\"mailgo\")));\n }\n return false;\n};\n/**\n * mailgoCheckRender\n * function to check if an element is mailgo-enabled or not referencing to\n * mail:\n * document.querySelectorAll(\n * 'a[href^=\"mailto:\" i]:not(.no-mailgo), a[href=\"#mailgo\"], a.mailgo'\n * );\n * tel:\n * document.querySelectorAll(\n * 'a[href^=\"tel:\" i]:not(.no-mailgo), a[href=\"#mailgo\"], a.mailgo'\n * );\n * or\n * document.querySelectorAll(\n * 'a[href^=\"callto:\" i]:not(.no-mailgo), a[href=\"#mailgo\"], a.mailgo'\n * );\n */\nconst mailgoCheckRender = (event) => {\n // check if the id=mailgo exists in the body\n if (!document.contains(getE(\"mailgo\")) ||\n !document.contains(getE(\"mailgo-tel\")))\n return;\n // if a mailgo is already showing do nothing\n if (mailgoIsShowing(MAIL_TYPE) || mailgoIsShowing(TEL_TYPE))\n return false;\n // the path of the event\n let path = (event.composedPath && event.composedPath()) ||\n composedPath(event.target);\n if (path) {\n path.forEach((element) => {\n if (element instanceof HTMLDocument || element instanceof Window)\n return false;\n // go in the event.path to find if the user has clicked on a mailgo element\n if (isMailgo(element, MAIL_TYPE)) {\n // stop the normal execution of the element click\n event.preventDefault();\n // render mailgo\n mailgoRender(MAIL_TYPE, element);\n return true;\n }\n if (isMailgo(element, TEL_TYPE)) {\n // stop the normal execution of the element click\n event.preventDefault();\n // render mailgo\n mailgoRender(TEL_TYPE, element);\n return true;\n }\n });\n }\n return false;\n};\n/**\n * mailgoKeydown\n * function to manage the keydown event when the modal is showing\n */\nconst mailgoKeydown = (event) => {\n // if mailgo is showing\n if (mailgoIsShowing(MAIL_TYPE)) {\n switch (event.keyCode) {\n case 27:\n // Escape\n hideMailgo();\n break;\n case 71:\n // g -> open GMail\n openGmail();\n break;\n case 79:\n // o -> open Outlook\n openOutlook();\n break;\n case 32:\n case 13:\n // spacebar or enter -> open default\n openDefault();\n break;\n case 67:\n // c -> copy\n copy(mail);\n break;\n default:\n return;\n }\n }\n else if (mailgoIsShowing(TEL_TYPE)) {\n switch (event.keyCode) {\n case 27:\n // Escape\n hideMailgo();\n break;\n case 84:\n // t -> open Telegram\n openTelegram();\n break;\n case 87:\n // w -> open WhatsApp\n openWhatsApp();\n break;\n case 32:\n case 13:\n // spacebar or enter -> call default\n callDefault();\n break;\n case 67:\n // c -> copy\n copy(tel);\n break;\n default:\n return;\n }\n }\n return;\n};\n// show the modal\nconst showMailgo = (type = MAIL_TYPE) => {\n // show mailgo type mail\n if (type === MAIL_TYPE) {\n setDisplay(\"mailgo\", \"flex\");\n return true;\n }\n // show mailgo type tel\n if (type === TEL_TYPE) {\n setDisplay(\"mailgo-tel\", \"flex\");\n return true;\n }\n return false;\n};\n// hide the modal\nconst hideMailgo = () => {\n setDisplay(\"mailgo\", \"none\");\n setDisplay(\"mailgo-tel\", \"none\");\n // remove listener keyDown\n document.removeEventListener(\"keydown\", mailgoKeydown);\n};\n// is the mailgo modal hidden?\nconst mailgoIsShowing = (type = MAIL_TYPE) => {\n return type === MAIL_TYPE\n ? getDisplay(\"mailgo\") === \"flex\"\n : type === TEL_TYPE\n ? getDisplay(\"mailgo-tel\") === \"flex\"\n : false;\n};\nconst byElement = () => {\n // by\n let by = createElement(\"a\");\n by.href = \"https://mailgo.js.org?ref=mailgo-modal\";\n by.className = \"m-by\";\n by.target = \"_blank\";\n by.rel = \"noopener noreferrer\";\n by.appendChild(createTextNode(\"mailgo.js.org\"));\n return by;\n};\n// create element\nconst createElement = (element = \"div\") => document.createElement(element);\n// create text node\nconst createTextNode = (element) => document.createTextNode(element);\n// decrypt email\nconst mailToEncoded = (encoded) => (window.location.href = MAILTO + atob(encoded));\n// encode email\nconst encodeEmail = (email) => btoa(email);\n// getE shorthand\nconst getE = (id) => document.getElementById(id);\n// get display value\nconst getDisplay = (id) => getE(id).style.display;\n// get display value\nconst setDisplay = (id, value) => (getE(id).style.display = value);\n// custom composedPath if path or event.composedPath() are not defined\nconst composedPath = (el) => {\n let path = [];\n while (el) {\n path.push(el);\n if (el.tagName === \"HTML\") {\n path.push(document);\n path.push(window);\n return path;\n }\n el = el.parentElement;\n }\n};\n// validate a single email with regex\nconst 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);\n// validate an array of emails\nconst validateEmails = (arr) => arr.every(validateEmail);\n// copy of a string\nconst copyToClipboard = (str) => {\n let el = createElement(\"textarea\");\n el.value = str;\n el.setAttribute(\"readonly\", \"\");\n el.style.position = \"absolute\";\n el.style.left = \"-9999px\";\n document.body.appendChild(el);\n let selected = document.getSelection().rangeCount > 0\n ? document.getSelection().getRangeAt(0)\n : false;\n el.select();\n document.execCommand(\"copy\");\n document.body.removeChild(el);\n if (selected) {\n document.getSelection().removeAllRanges();\n document.getSelection().addRange(selected);\n return true;\n }\n return false;\n};\nconst mailgoStyle = () => {\n // mailgo style\n let mailgoCSSElement = createElement(\"style\");\n mailgoCSSElement.id = \"mailgo-style\";\n mailgoCSSElement.type = \"text/css\";\n mailgoCSSElement.appendChild(createTextNode(mailgoCSS));\n document.head.appendChild(mailgoCSSElement);\n};\n// mailgo\nconst mailgo = (mailgoConfig) => {\n // if the window is defined...\n if (window && typeof window !== \"undefined\") {\n // add the style for mailgo\n mailgoStyle();\n // if is set an initEvent add the listener\n if (mailgoConfig === null || mailgoConfig === void 0 ? void 0 : mailgoConfig.initEvent) {\n document.addEventListener(mailgoConfig.initEvent, () => {\n mailgoInit(mailgoConfig);\n });\n }\n else {\n mailgoInit(mailgoConfig);\n }\n }\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (mailgo);\n\n\n//# sourceURL=webpack:///./mailgo.ts?"); - -/***/ }), - -/***/ "./mailgo.webpack.ts": -/*!***************************!*\ - !*** ./mailgo.webpack.ts ***! - \***************************/ -/*! no exports provided */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _mailgo__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./mailgo */ \"./mailgo.ts\");\n\n// call init mailgo attached to the event DOMContentLoaded\nconst mailgoConfig = {\n initEvent: \"DOMContentLoaded\",\n};\nconsole.log(_mailgo__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\nObject(_mailgo__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(mailgoConfig);\n\n\n//# sourceURL=webpack:///./mailgo.webpack.ts?"); - -/***/ }) - -/******/ }); \ No newline at end of file +!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}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 "},"it":{"open_in":"apri con "}}}')},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;e.defaultLang&&o.languages.includes(e.defaultLang)&&(t=e.defaultLang),!e.forceLang&&document.documentElement.lang&&(t=document.documentElement.lang);a.en;let n=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 i=ee(d);i.className="w-500",i.appendChild(te(n.cc)),h=ee(d),h.id="m-cc-value",m.appendChild(i),m.appendChild(h),o.appendChild(m),r=ee("p"),r.id="m-bcc";let s=ee(d);s.className="w-500",s.appendChild(te(n.bcc)),g=ee(d),g.id="m-bcc-value",r.appendChild(s),r.appendChild(g),o.appendChild(r),p=ee("p"),p.id="m-subject";let w=ee(d);w.className="w-500",w.appendChild(te(n.subject)),b=ee(d),b.id="m-subject-value",p.appendChild(w),p.appendChild(b),o.appendChild(p),u=ee("p"),u.id="m-body";let L=ee(d);L.className="w-500",L.appendChild(te(n.body)),f=ee(d),f.id="m-body-value",u.appendChild(L),u.appendChild(f),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(n.open_in));let k=ee(d);k.className="w-500",k.appendChild(te("Gmail")),y.appendChild(k),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(n.open_in));let x=ee(d);x.className="w-500",x.appendChild(te("Outlook")),C.appendChild(x),a.appendChild(C),v=ee("a"),v.id="m-open",v.href=l,v.classList.add("m-open"),v.classList.add("m-default");let A=ee(d);A.className="w-500",A.appendChild(te("open")),v.appendChild(A),v.appendChild(te(" default")),a.appendChild(v),j=ee("a"),j.id="m-copy",j.href=l,j.classList.add("m-copy"),j.classList.add("w-500"),j.appendChild(te("copy")),a.appendChild(j),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),w=ee("a"),w.id="m-tg",w.href=l,w.classList.add("m-open"),w.classList.add("m-tg"),w.style.display="none",w.appendChild(te(n.open_in));let o=ee(d);o.className="w-500",o.appendChild(te("Telegram")),w.appendChild(o),a.appendChild(w),L=ee("a"),L.id="m-wa",L.href=l,L.classList.add("m-open"),L.classList.add("m-wa"),L.appendChild(te(n.open_in));let i=ee(d);i.className="w-500",i.appendChild(te("WhatsApp")),L.appendChild(i),a.appendChild(L),k=ee("a"),k.id="m-skype",k.href=l,k.classList.add("m-open"),k.classList.add("m-skype"),k.appendChild(te(n.open_in));let c=ee(d);c.className="w-500",c.appendChild(te("Skype")),k.appendChild(c),a.appendChild(k),x=ee("a"),x.id="m-call",x.href=l,x.classList.add("m-open"),x.classList.add("m-default");let m=ee(d);m.className="w-500",m.appendChild(te("call")),x.appendChild(m),x.appendChild(te(" as default")),a.appendChild(x),A=ee("a"),A.id="m-tel-copy",A.href=l,A.classList.add("m-copy"),A.classList.add("w-500"),A.appendChild(te("copy")),a.appendChild(A),a.appendChild(Y()),document.body.appendChild(e),t.addEventListener("click",V)}document.addEventListener("click",q)},P=(e="mail",t)=>{if("mail"===e){if(t.href&&t.href.toLowerCase().startsWith("mailto:")){E=decodeURIComponent(t.href.split("?")[0].split("mailto:")[1].trim()),i=new URL(t.href);let e=i.searchParams;S=e.get("cc"),_=e.get("bcc"),R=e.get("subject"),U=e.get("body")}else E=t.getAttribute("data-address")+"@"+t.getAttribute("data-domain"),i=new URL("mailto:"+encodeURIComponent(E)),S=t.getAttribute("data-cc-address")+"@"+t.getAttribute("data-cc-domain"),_=t.getAttribute("data-bcc-address")+"@"+t.getAttribute("data-bcc-domain"),R=t.getAttribute("data-subject"),U=t.getAttribute("data-body");if(!se(E.split(",")))return;S&&!se(S.split(","))&&(S=""),_&&!se(_.split(","))&&(_=""),c.innerHTML=E.split(",").join("
"),S?(m.style.display="block",h.innerHTML=S.split(",").join("
")):m.style.display="none",_?(r.style.display="block",g.innerHTML=_.split(",").join("
")):r.style.display="none",R?(p.style.display="block",b.textContent=R):p.style.display="none",U?(u.style.display="block",f.textContent=U):u.style.display="none",y.addEventListener("click",W),C.addEventListener("click",H),N=oe(E),v.addEventListener("click",D),j.addEventListener("click",()=>G(E))}"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,L.addEventListener("click",Z),z&&(de("m-tg","block"),w.addEventListener("click",B)),k.addEventListener("click",J),x.addEventListener("click",F),A.addEventListener("click",()=>G(I))),Q(e),document.addEventListener("keydown",K)},W=()=>{let e="https://mail.google.com/mail/u/0/?view=cm&source=mailto&to="+encodeURIComponent(E);S&&(e=e.concat("&cc="+encodeURIComponent(S))),_&&(e=e.concat("&bcc="+encodeURIComponent(_))),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(E);R&&(e=e.concat("&subject="+R)),U&&(e=e.concat("&body="+U)),window.open(e,"_blank"),V()},D=()=>{ae(N),V()},B=()=>{let e="https://t.me/"+z;window.open(e,"_blank"),V()},J=()=>{let e="skype:"+(""!==O?O:I);window.open(e,"_blank"),V()},Z=()=>{let e="https://wa.me/"+I;window.open(e,"_blank"),V()},F=()=>{let e="tel:"+I;window.open(e),V()},G=e=>{let t;me(e),t=X("mail")?j:A,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(),P("mail",t),!0):$(t,"tel")?(e.preventDefault(),P("tel",t),!0):void 0)),!1},K=e=>{if(X("mail"))switch(e.keyCode){case 27:V();break;case 71:W();break;case 79:H();break;case 32:case 13:D();break;case 67:G(E);break;default:return}else if(X("tel"))switch(e.keyCode){case 27:V();break;case 84:B();break;case 87:Z();break;case 32:case 13:F();break;case 67:G(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 re=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))};console.log(re),re({initEvent:"DOMContentLoaded"})}]); \ No newline at end of file diff --git a/webpack.config.js b/webpack.config.js index 2b44f36..e2fc983 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -15,7 +15,7 @@ const mailgoRules = [ module.exports = [ { - mode: "development", + mode: "production", entry: "./mailgo.webpack.ts", context: path.join(__dirname, "src"), module: {