From 8b972c97a546c34509aa6a3a901f6d5e909be044 Mon Sep 17 00:00:00 2001 From: Philipp Dormann Date: Sun, 23 Aug 2020 14:32:30 +0200 Subject: [PATCH] cleanups --- .github/FUNDING.yml | 8 - .gitignore | 3 +- .npmignore | 23 -- .prettierrc | 1 - .travis.yml | 3 - CONTRIBUTING.md | 81 ----- LICENSE | 21 -- README.md | 25 +- SECURITY.md | 5 - babel.config.js | 18 +- dist/mailgo.dark.min.js | 3 +- dist/mailgo.dark.min.js.map | 1 - dist/mailgo.min.js | 3 +- dist/mailgo.min.js.map | 1 - examples/README.md | 19 -- examples/index.dark.html | 52 --- examples/index.de.html | 75 ----- examples/index.es.html | 75 ----- examples/index.fr.html | 75 ----- examples/index.html | 75 ----- examples/index.it.html | 75 ----- examples/index.nl.html | 75 ----- examples/index.pt.html | 75 ----- examples/index.windowconfig.html | 82 ----- extensions/README.md | 7 - extensions/mailgo.chrome.min.js | 2 - extensions/mailgo.chrome.min.js.map | 1 - extensions/mailgo.firefox.min.js | 2 - extensions/mailgo.firefox.min.js.map | 1 - i18n/i18n.json | 123 ++----- lib/mailgo.js | 47 +-- lib/mailgo.js.map | 2 +- mailgo.d.ts | 95 +++--- package.json | 89 ++---- sample.html | 39 +++ src/mailgo.scss | 457 +++++++++++++-------------- src/mailgo.ts | 28 -- webpack.config.js | 178 ++++------- webpack/mailgo.chrome.ts | 10 - webpack/mailgo.dist.dark.ts | 8 +- webpack/mailgo.dist.ts | 6 +- webpack/mailgo.firefox.ts | 10 - webpack/mailgo.lib.ts | 5 +- yarn.lock | 276 ++++++---------- 44 files changed, 563 insertions(+), 1697 deletions(-) delete mode 100644 .github/FUNDING.yml delete mode 100644 .npmignore delete mode 100644 .prettierrc delete mode 100644 .travis.yml delete mode 100644 CONTRIBUTING.md delete mode 100644 LICENSE delete mode 100644 SECURITY.md delete mode 100644 dist/mailgo.dark.min.js.map delete mode 100644 dist/mailgo.min.js.map delete mode 100644 examples/README.md delete mode 100644 examples/index.dark.html delete mode 100644 examples/index.de.html delete mode 100644 examples/index.es.html delete mode 100644 examples/index.fr.html delete mode 100644 examples/index.html delete mode 100644 examples/index.it.html delete mode 100644 examples/index.nl.html delete mode 100644 examples/index.pt.html delete mode 100644 examples/index.windowconfig.html delete mode 100644 extensions/README.md delete mode 100644 extensions/mailgo.chrome.min.js delete mode 100644 extensions/mailgo.chrome.min.js.map delete mode 100644 extensions/mailgo.firefox.min.js delete mode 100644 extensions/mailgo.firefox.min.js.map create mode 100644 sample.html delete mode 100644 webpack/mailgo.chrome.ts delete mode 100644 webpack/mailgo.firefox.ts diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml deleted file mode 100644 index 2c09138..0000000 --- a/.github/FUNDING.yml +++ /dev/null @@ -1,8 +0,0 @@ -# These are supported funding model platforms - -github: [manzinello] -patreon: manzinello -open_collective: mailgo -ko_fi: manzinello -tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel -custom: # Replace with a single custom sponsorship URL diff --git a/.gitignore b/.gitignore index ba6f060..6ebed66 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ node_modules .DS_Store -.cache \ No newline at end of file +.cache +yarn.lock \ No newline at end of file diff --git a/.npmignore b/.npmignore deleted file mode 100644 index 795317b..0000000 --- a/.npmignore +++ /dev/null @@ -1,23 +0,0 @@ -assets -src -test -gulpfile.js -index.html -.DS_Store -CONTRIBUTING.md -webpack.config.js -.prettierrc -.travis.yml -wdio.conf.js -.github/FUNDING.yml -.flowconfig -babel.config.js - -webpack -examples - -extensions -mailgo.firefox.min.js -mailgo.firefox.min.js.map -mailgo.chrome.min.js -mailgo.chrome.min.js.map \ No newline at end of file diff --git a/.prettierrc b/.prettierrc deleted file mode 100644 index 0967ef4..0000000 --- a/.prettierrc +++ /dev/null @@ -1 +0,0 @@ -{} diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 98c86f7..0000000 --- a/.travis.yml +++ /dev/null @@ -1,3 +0,0 @@ -language: node_js -node_js: - - "8" \ No newline at end of file diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md deleted file mode 100644 index 4e6d59b..0000000 --- a/CONTRIBUTING.md +++ /dev/null @@ -1,81 +0,0 @@ -# Contributing - -When contributing to this repository, please first discuss the change you wish to make via issue, -email (matteo@manzinello.dev), or any other method with the owners of this repository before making a change. - -Please note we have a code of conduct, please follow it in all your interactions with the project. - -## Code of Conduct - -### Our Pledge - -In the interest of fostering an open and welcoming environment, we as -contributors and maintainers pledge to making participation in our project and -our community a harassment-free experience for everyone, regardless of age, body -size, disability, ethnicity, gender identity and expression, level of experience, -nationality, personal appearance, race, religion, or sexual identity and -orientation. - -### Our Standards - -Examples of behavior that contributes to creating a positive environment -include: - -- Using welcoming and inclusive language -- Being respectful of differing viewpoints and experiences -- Gracefully accepting constructive criticism -- Focusing on what is best for the community -- Showing empathy towards other community members - -Examples of unacceptable behavior by participants include: - -- The use of sexualized language or imagery and unwelcome sexual attention or - advances -- Trolling, insulting/derogatory comments, and personal or political attacks -- Public or private harassment -- Publishing others' private information, such as a physical or electronic - address, without explicit permission -- Other conduct which could reasonably be considered inappropriate in a - professional setting - -### Our Responsibilities - -Project maintainers are responsible for clarifying the standards of acceptable -behavior and are expected to take appropriate and fair corrective action in -response to any instances of unacceptable behavior. - -Project maintainers have the right and responsibility to remove, edit, or -reject comments, commits, code, wiki edits, issues, and other contributions -that are not aligned to this Code of Conduct, or to ban temporarily or -permanently any contributor for other behaviors that they deem inappropriate, -threatening, offensive, or harmful. - -### Scope - -This Code of Conduct applies both within project spaces and in public spaces -when an individual is representing the project or its community. Examples of -representing a project or community include using an official project e-mail -address, posting via an official social media account, or acting as an appointed -representative at an online or offline event. Representation of a project may be -further defined and clarified by project maintainers. - -### Enforcement - -Instances of abusive, harassing, or otherwise unacceptable behavior may be -reported by contacting the project team at matteo@manzinello.dev. All -complaints will be reviewed and investigated and will result in a response that -is deemed necessary and appropriate to the circumstances. The project team is -obligated to maintain confidentiality with regard to the reporter of an incident. -Further details of specific enforcement policies may be posted separately. - -Project maintainers who do not follow or enforce the Code of Conduct in good -faith may face temporary or permanent repercussions as determined by other -members of the project's leadership. - -### Attribution - -This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, -available at [http://contributor-covenant.org/version/1/4][version] - -[homepage]: http://contributor-covenant.org -[version]: http://contributor-covenant.org/version/1/4/ diff --git a/LICENSE b/LICENSE deleted file mode 100644 index cf078e2..0000000 --- a/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2019 Matteo Manzinello - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/README.md b/README.md index 4481e5c..207182b 100644 --- a/README.md +++ b/README.md @@ -1,24 +1 @@ -# 💌 mailgo - -## a new concept of `mailto` and `tel` links - -Transform all your `mailto` and `tel` link in a beautiful modal with more possibilities! Open directly Gmail, Outlook for mails; Telegram, WhatsApp or Skype for phone numbers. - -![mailgo screencast](https://github.com/manzinello/mailgo/raw/master/assets/video/mailgo.gif) - -## docs - - - -## thanks - - - - - -
-
- - - - +# 💌 mailymaily \ No newline at end of file diff --git a/SECURITY.md b/SECURITY.md deleted file mode 100644 index 0b73bf6..0000000 --- a/SECURITY.md +++ /dev/null @@ -1,5 +0,0 @@ -# Security Policy - -## Reporting a Vulnerability - -If you have any type of suggestion about security in mailgo project or you want to report a vulnerability feel free to write me at matteo@manzinello.dev diff --git a/babel.config.js b/babel.config.js index 8d7aac1..0285227 100644 --- a/babel.config.js +++ b/babel.config.js @@ -1,13 +1,13 @@ const presets = [ - [ - "@babel/preset-env", - { - targets: { - browsers: ["defaults"], - }, - }, - ], - "@babel/preset-typescript", + [ + '@babel/preset-env', + { + targets: { + browsers: [ 'defaults' ] + } + } + ], + '@babel/preset-typescript' ]; module.exports = { presets }; diff --git a/dist/mailgo.dark.min.js b/dist/mailgo.dark.min.js index 83a5b37..f5a445f 100644 --- a/dist/mailgo.dark.min.js +++ b/dist/mailgo.dark.min.js @@ -1,2 +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","es","de","fr","pt","nl","ru"],"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 ","bcc_":"ccn ","subject_":"oggetto ","body_":"testo ","call":"chiama","open":"apri","_default":" ","_as_default":" ","copy":"copia"},"es":{"open_in_":"abrir con ","bcc_":"cco ","subject_":"asunto ","body_":"cuerpo ","call":"llamar","open":"abrir","_default":" predefinido","_as_default":" por defecto","copy":"copiar"},"de":{"open_in_":"Öffnen in ","subject_":"Betreff ","body_":"Nachricht ","call":"Anrufen","open":"Öffnen","_default":" mit Standard","_as_default":" mit Standard","copy":"kopieren"},"pt":{"open_in_":"abrir com ","bcc_":"cco ","subject_":"assunto ","body_":"corpo ","call":"ligar","open":"abrir","_default":" padrão","_as_default":" por padrão","copy":"copiar"},"fr":{"open_in_":"Ouvrir dans ","bcc_":"cci ","subject_":"sujet ","body_":"contenu ","call":"Appeler","open":"Ouvrir","_default":" par défaut","_as_default":" par défaut","copy":"Copier"},"nl":{"subject_":"onderwerp ","body_":"bericht ","call":"bellen","open":"openen","_default":" standaard","_as_default":" als standaard","copy":"kopiëren"},"ru":{"open_in_":"открыть в ","subject_":"тема ","body_":"тело ","call":"позвонить","open":"открыть","_default":" по умолчанию","_as_default":" по умолчанию","copy":"скопировать"}}}')},function(e,t,a){var o=a(2);e.exports="string"==typeof o?o:o.toString()},function(e,t,a){var o=a(3)(!1);o.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:16.5px;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:#20232a;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.95;border-radius:20px;box-shadow:0 3px 20px rgba(32,35,42,0.5);color:#4a4a4a;display:flex;flex-direction:column;overflow:auto;padding:24px;transition:0.5s box-shadow}.m-modal .m-modal-content:hover,.m-modal .m-modal-content:focus,.m-modal .m-modal-content:active{opacity:1}.m-modal .m-modal-content .m-title{margin-bottom:8px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;line-height:1.2em}.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{cursor:pointer;padding:10px;color:#4a4a4a;border-radius:20px;text-decoration:none}.m-modal .m-modal-content a.m-gmail{color:#c0372a}.m-modal .m-modal-content a.m-gmail:hover,.m-modal .m-modal-content a.m-gmail:focus,.m-modal .m-modal-content a.m-gmail:active{background-color:rgba(212,70,56,0.08);color:#c0372a}.m-modal .m-modal-content a.m-outlook{color:#0967aa}.m-modal .m-modal-content a.m-outlook:hover,.m-modal .m-modal-content a.m-outlook:focus,.m-modal .m-modal-content a.m-outlook:active{background-color:rgba(0,114,198,0.08);color:#0967aa}.m-modal .m-modal-content a.m-tg{color:#086da0}.m-modal .m-modal-content a.m-tg:hover,.m-modal .m-modal-content a.m-tg:focus,.m-modal .m-modal-content a.m-tg:active{background-color:rgba(0,136,204,0.08);color:#086da0}.m-modal .m-modal-content a.m-wa{color:#067466}.m-modal .m-modal-content a.m-wa:hover,.m-modal .m-modal-content a.m-wa:focus,.m-modal .m-modal-content a.m-wa:active{background-color:rgba(0,191,165,0.08);color:#067466}.m-modal .m-modal-content a.m-skype{color:#076d92}.m-modal .m-modal-content a.m-skype:hover,.m-modal .m-modal-content a.m-skype:focus,.m-modal .m-modal-content a.m-skype:active{background-color:rgba(0,175,240,0.08);color:#076d92}.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-default:focus,.m-modal .m-modal-content a.m-default:active,.m-modal .m-modal-content a.m-copy:hover,.m-modal .m-modal-content a.m-copy:focus,.m-modal .m-modal-content a.m-copy:active{background-color:rgba(0,0,0,0.08);color:#4a4a4a}.m-modal .m-modal-content a.m-by{font-size:12px;margin-top:0.8rem;padding:5px;color:#4a4a4a}.m-modal .m-modal-content a.m-by:hover,.m-modal .m-modal-content a.m-by:focus,.m-modal .m-modal-content a.m-by:active{color:#3d3d3d}.m-modal .m-modal-content .w-500{font-weight:500}.m-modal.m-dark .m-modal-content{background-color:#20232a}.m-modal.m-dark .m-modal-content,.m-modal.m-dark .m-modal-content p,.m-modal.m-dark .m-modal-content p span,.m-modal.m-dark .m-modal-content strong{color:#fff}.m-modal.m-dark .m-modal-content a{color:#eaeaea}.m-modal.m-dark .m-modal-content a:not(.m-by):hover,.m-modal.m-dark .m-modal-content a:not(.m-by):focus,.m-modal.m-dark .m-modal-content a:not(.m-by):active{background-color:rgba(134,134,134,0.08);color:#eaeaea}.m-modal.m-dark .m-modal-content a.m-gmail{color:#e07d73}.m-modal.m-dark .m-modal-content a.m-gmail:hover,.m-modal.m-dark .m-modal-content a.m-gmail:focus,.m-modal.m-dark .m-modal-content a.m-gmail:active{background-color:rgba(212,70,56,0.08);color:#e07d73}.m-modal.m-dark .m-modal-content a.m-outlook{color:#4c9cd7}.m-modal.m-dark .m-modal-content a.m-outlook:hover,.m-modal.m-dark .m-modal-content a.m-outlook:focus,.m-modal.m-dark .m-modal-content a.m-outlook:active{background-color:rgba(0,114,198,0.08);color:#4c9cd7}.m-modal.m-dark .m-modal-content a.m-tg{color:#4cabdb}.m-modal.m-dark .m-modal-content a.m-tg:hover,.m-modal.m-dark .m-modal-content a.m-tg:focus,.m-modal.m-dark .m-modal-content a.m-tg:active{background-color:rgba(0,136,204,0.08);color:#4cabdb}.m-modal.m-dark .m-modal-content a.m-wa{color:#4cd2c0}.m-modal.m-dark .m-modal-content a.m-wa:hover,.m-modal.m-dark .m-modal-content a.m-wa:focus,.m-modal.m-dark .m-modal-content a.m-wa:active{background-color:rgba(0,191,165,0.08);color:#4cd2c0}.m-modal.m-dark .m-modal-content a.m-skype{color:#4cc7f4}.m-modal.m-dark .m-modal-content a.m-skype:hover,.m-modal.m-dark .m-modal-content a.m-skype:focus,.m-modal.m-dark .m-modal-content a.m-skype:active{background-color:rgba(0,175,240,0.08);color:#4cc7f4}.m-modal.m-dark .m-modal-content a.m-by:hover,.m-modal.m-dark .m-modal-content a.m-by:focus,.m-modal.m-dark .m-modal-content a.m-by:active{color:#fff}\n',""]),e.exports=o},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=(l=o,i=btoa(unescape(encodeURIComponent(JSON.stringify(l)))),m="sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(i),"/*# ".concat(m," */")),d=o.sources.map((function(e){return"/*# sourceURL=".concat(o.sourceRoot||"").concat(e," */")}));return[a].concat(d).concat([n]).join("\n")}var l,i,m;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 d=0;d0&&void 0!==arguments[0]?arguments[0]:"mail",a=arguments.length>1?arguments[1]:void 0;if("mail"===t){var o,n;if(a.href&&a.href.toLowerCase().startsWith(N)){M=decodeURIComponent(a.href.split("?")[0].split(N)[1].trim());var d=new URL(a.href).searchParams;z=d.get("cc"),D=d.get("bcc"),W=d.get("subject"),H=d.get("body")}else M=a.getAttribute("data-address")+"@"+a.getAttribute("data-domain"),new URL(N+encodeURIComponent(M)),z=a.getAttribute("data-cc-address")+"@"+a.getAttribute("data-cc-domain"),D=a.getAttribute("data-bcc-address")+"@"+a.getAttribute("data-bcc-domain"),W=a.getAttribute("data-subject"),H=a.getAttribute("data-body");if(void 0===(null===(o=l)||void 0===o?void 0:o.validateEmail)||!0===(null===(n=l)||void 0===n?void 0:n.validateEmail)){if(!we(M.split(",")))return;z&&!we(z.split(","))&&(z=""),D&&!we(D.split(","))&&(D="")}c.innerHTML=M.split(",").join("
"),z?(s.style.display="block",b.innerHTML=z.split(",").join("
")):s.style.display="none",D?(p.style.display="block",v.innerHTML=D.split(",").join("
")):p.style.display="none",W?(u.style.display="block",g.textContent=W):u.style.display="none",H?(f.style.display="block",h.textContent=H):f.style.display="none",k.addEventListener("click",Z),_.addEventListener("click",$),T=se(M),w.addEventListener("click",G),A.addEventListener("click",(function(){return ee(M)}))}else if("tel"===t){if(a.href&&a.href.toLowerCase().startsWith(R)?B=decodeURIComponent(a.href.split("?")[0].split(R)[1].trim()):a.href&&a.href.toLowerCase().startsWith(P)?B=decodeURIComponent(a.href.split("?")[0].split(P)[1].trim()):a.hasAttribute("data-tel")&&(B=a.getAttribute("data-tel"),a.getAttribute("data-msg")),!Ce(B))return;F=a.hasAttribute("data-telegram")?a.getAttribute("data-telegram"):null,a.hasAttribute("data-skype")&&(q=a.getAttribute("data-skype")),r.innerHTML=B,L.addEventListener("click",X),F?(document.getElementById("m-tg").style.display="block",C.addEventListener("click",Q)):document.getElementById("m-tg").style.display="none",x.addEventListener("click",V),j.addEventListener("click",Y),E.addEventListener("click",(function(){return ee(B)}))}(null===(e=l)||void 0===e?void 0:e.dark)||(a.classList.contains("dark")?he(t):ye(t)),ne(t),document.addEventListener("keydown",oe)}var Z=function(){var e="https://mail.google.com/mail/u/0/?view=cm&source=mailto&to="+encodeURIComponent(M);z&&(e=e.concat("&cc="+encodeURIComponent(z))),D&&(e=e.concat("&bcc="+encodeURIComponent(D))),W&&(e=e.concat("&subject="+W)),H&&(e=e.concat("&body="+H)),window.open(e,"_blank"),de()},$=function(){var e="https://outlook.live.com/owa/?path=/mail/action/compose&to="+encodeURIComponent(M);W&&(e=e.concat("&subject="+W)),H&&(e=e.concat("&body="+H)),window.open(e,"_blank"),de()},G=function(){re(T),de()},Q=function(){var e="https://t.me/"+F;window.open(e,"_blank"),de()},V=function(){var e="skype:"+(""!==q?q:B);window.open(e,"_blank"),de()},X=function(){var e="https://wa.me/"+B;window.open(e,"_blank"),de()},Y=function(){var e="tel:"+B;window.open(e),de()},ee=function(e){var t;Le(e),(t=le("mail")?A:E).textContent="copied",setTimeout((function(){t.textContent="copy",de()}),999)};function te(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"mail",a=e.href;return"mail"===t?a&&a.toLowerCase().startsWith(N)&&!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(R)||a.toLowerCase().startsWith(P))&&!e.classList.contains("no-mailgo")||e.hasAttribute("data-tel")&&a&&"#mailgo"===e.getAttribute("href").toLowerCase()||e.classList&&e.classList.contains("mailgo"))}function ae(e){if(!document.contains(i)||!document.contains(m))return!1;if(le("mail")||le("tel"))return!1;var t=e.composedPath&&e.composedPath()||ke(e.target);return t&&t.forEach((function(t){return!(t instanceof HTMLDocument||t instanceof Window)&&(te(t,"mail")?(e.preventDefault(),K("mail",t),!0):te(t,"tel")?(e.preventDefault(),K("tel",t),!0):void 0)})),!1}var oe=function(e){if(le("mail"))switch(e.keyCode){case 27:de();break;case 71:Z();break;case 79:$();break;case 32:case 13:G();break;case 67:ee(M);break;default:return}else if(le("tel"))switch(e.keyCode){case 27:de();break;case 84:Q();break;case 87:X();break;case 32:case 13:Y();break;case 67:ee(B);break;default:return}},ne=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"mail";fe(e,"flex")},de=function(){fe("mail","none"),fe("tel","none"),document.removeEventListener("keydown",oe)},le=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"mail";return"flex"===ue(e)},ie=function(){var e=me("a");return e.href="https://mailgo.dev?ref=mailgo-modal",e.className="m-by",e.target="_blank",e.rel="noopener noreferrer",e.appendChild(ce("mailgo.dev")),e},me=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"div";return document.createElement(e)},ce=function(e){return document.createTextNode(e)},re=function(e){return window.location.href=N+atob(e)},se=function(e){return btoa(e)},pe=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"mail";return"tel"===e?m:i},ue=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"mail";return pe(e).style.display},fe=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"mail",t=arguments.length>1?arguments[1]:void 0,a=pe(e);a.style.display=t,"flex"===t?(y=document.activeElement,a.setAttribute("aria-hidden","false"),a.setAttribute("tabindex","0"),a.focus(),be(a)):(a.setAttribute("aria-hidden","true"),a.setAttribute("tabindex","-1"),y.focus())},be=function(e){var t=e;t.querySelector(".m-modal-content a:last-of-type").addEventListener("keydown",ve),t.querySelector(".m-modal-content a:first-of-type").addEventListener("keydown",ge)},ve=function(e){"Tab"===e.code&&!1===e.shiftKey&&(e.preventDefault(),e.target.closest("div").querySelector("a:first-of-type").focus())},ge=function(e){"Tab"===e.code&&!0===e.shiftKey&&(e.preventDefault(),e.target.closest("div").querySelector("a:last-of-type").focus())},he=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"mail";return pe(e).classList.add("m-dark")},ye=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"mail";return pe(e).classList.remove("m-dark")},ke=function(e){for(var t=[];e;){if(t.push(e),"HTML"===e.tagName)return t.push(document),t.push(window),t;e=e.parentElement}},_e=function(e){return/^(([^<>()[\]\\.,;:\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)},we=function(e){return e.every(_e)},Ce=function(e){return/^[+]{0,1}[\s0-9]{0,}[(]{0,1}[0-9]{1,4}[)]{0,1}[-\s\./0-9]*$/.test(e)},Le=function(e){var t=me("textarea");t.value=e,t.setAttribute("readonly",""),t.style.position="absolute",t.style.left="-9999px",document.body.appendChild(t);var 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 xe=function(e){var t,a,o,d;l=n(n({},e),(null===(t=window)||void 0===t?void 0:t.mailgoConfig)||null),window&&"undefined"!=typeof window&&((d=me("style")).id="mailgo-style",d.type="text/css",d.appendChild(ce(S)),document.head.appendChild(d),(null===(a=l)||void 0===a?void 0:a.initEvent)?(null===(o=l)||void 0===o?void 0:o.listenerOptions)?document.addEventListener(l.initEvent,(function(){J()}),l.listenerOptions):document.addEventListener(l.initEvent,(function(){J()})):J())};xe({initEvent:"DOMContentLoaded",dark:!0})}]); -//# sourceMappingURL=mailgo.dark.min.js.map \ No newline at end of file +window.mailgo=function(t){var e={};function a(o){if(e[o])return e[o].exports;var n=e[o]={i:o,l:!1,exports:{}};return t[o].call(n.exports,n,n.exports,a),n.l=!0,n.exports}return a.m=t,a.c=e,a.d=function(t,e,o){a.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:o})},a.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},a.t=function(t,e){if(1&e&&(t=a(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var o=Object.create(null);if(a.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var n in t)a.d(o,n,function(e){return t[e]}.bind(null,n));return o},a.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return a.d(e,"a",e),e},a.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},a.p="",a(a.s=4)}([function(t){t.exports=JSON.parse('{"languages":["en","de"],"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"},"de":{"open_in_":"Öffnen in ","subject_":"Betreff ","body_":"Nachricht ","call":"Anrufen","open":"Öffnen","_default":" mit Standard","_as_default":" mit Standard","copy":"kopieren"}}}')},function(t,e,a){var o=a(2);t.exports="string"==typeof o?o:o.toString()},function(t,e,a){var o=a(3)(!1);o.push([t.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:16.5px;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:#20232a;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.95;border-radius:20px;box-shadow:0 3px 20px rgba(32,35,42,0.5);color:#4a4a4a;display:flex;flex-direction:column;overflow:auto;padding:24px;transition:0.5s box-shadow}.m-modal .m-modal-content:hover,.m-modal .m-modal-content:focus,.m-modal .m-modal-content:active{opacity:1}.m-modal .m-modal-content .m-title{margin-bottom:8px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;line-height:1.2em}.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{cursor:pointer;padding:10px;color:#4a4a4a;border-radius:20px;text-decoration:none}.m-modal .m-modal-content a.m-gmail{color:#c0372a}.m-modal .m-modal-content a.m-gmail:hover,.m-modal .m-modal-content a.m-gmail:focus,.m-modal .m-modal-content a.m-gmail:active{background-color:rgba(212,70,56,0.08);color:#c0372a}.m-modal .m-modal-content a.m-outlook{color:#0967aa}.m-modal .m-modal-content a.m-outlook:hover,.m-modal .m-modal-content a.m-outlook:focus,.m-modal .m-modal-content a.m-outlook:active{background-color:rgba(0,114,198,0.08);color:#0967aa}.m-modal .m-modal-content a.m-tg{color:#086da0}.m-modal .m-modal-content a.m-tg:hover,.m-modal .m-modal-content a.m-tg:focus,.m-modal .m-modal-content a.m-tg:active{background-color:rgba(0,136,204,0.08);color:#086da0}.m-modal .m-modal-content a.m-wa{color:#067466}.m-modal .m-modal-content a.m-wa:hover,.m-modal .m-modal-content a.m-wa:focus,.m-modal .m-modal-content a.m-wa:active{background-color:rgba(0,191,165,0.08);color:#067466}.m-modal .m-modal-content a.m-skype{color:#076d92}.m-modal .m-modal-content a.m-skype:hover,.m-modal .m-modal-content a.m-skype:focus,.m-modal .m-modal-content a.m-skype:active{background-color:rgba(0,175,240,0.08);color:#076d92}.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-default:focus,.m-modal .m-modal-content a.m-default:active,.m-modal .m-modal-content a.m-copy:hover,.m-modal .m-modal-content a.m-copy:focus,.m-modal .m-modal-content a.m-copy:active{background-color:rgba(0,0,0,0.08);color:#4a4a4a}.m-modal .m-modal-content a.m-by{font-size:12px;margin-top:0.8rem;padding:5px;color:#4a4a4a}.m-modal .m-modal-content a.m-by:hover,.m-modal .m-modal-content a.m-by:focus,.m-modal .m-modal-content a.m-by:active{color:#3d3d3d}.m-modal .m-modal-content .w-500{font-weight:500}.m-modal.m-dark .m-modal-content{background-color:#20232a}.m-modal.m-dark .m-modal-content,.m-modal.m-dark .m-modal-content p,.m-modal.m-dark .m-modal-content p span,.m-modal.m-dark .m-modal-content strong{color:#fff}.m-modal.m-dark .m-modal-content a{color:#eaeaea}.m-modal.m-dark .m-modal-content a:not(.m-by):hover,.m-modal.m-dark .m-modal-content a:not(.m-by):focus,.m-modal.m-dark .m-modal-content a:not(.m-by):active{background-color:rgba(134,134,134,0.08);color:#eaeaea}.m-modal.m-dark .m-modal-content a.m-gmail{color:#e07d73}.m-modal.m-dark .m-modal-content a.m-gmail:hover,.m-modal.m-dark .m-modal-content a.m-gmail:focus,.m-modal.m-dark .m-modal-content a.m-gmail:active{background-color:rgba(212,70,56,0.08);color:#e07d73}.m-modal.m-dark .m-modal-content a.m-outlook{color:#4c9cd7}.m-modal.m-dark .m-modal-content a.m-outlook:hover,.m-modal.m-dark .m-modal-content a.m-outlook:focus,.m-modal.m-dark .m-modal-content a.m-outlook:active{background-color:rgba(0,114,198,0.08);color:#4c9cd7}.m-modal.m-dark .m-modal-content a.m-tg{color:#4cabdb}.m-modal.m-dark .m-modal-content a.m-tg:hover,.m-modal.m-dark .m-modal-content a.m-tg:focus,.m-modal.m-dark .m-modal-content a.m-tg:active{background-color:rgba(0,136,204,0.08);color:#4cabdb}.m-modal.m-dark .m-modal-content a.m-wa{color:#4cd2c0}.m-modal.m-dark .m-modal-content a.m-wa:hover,.m-modal.m-dark .m-modal-content a.m-wa:focus,.m-modal.m-dark .m-modal-content a.m-wa:active{background-color:rgba(0,191,165,0.08);color:#4cd2c0}.m-modal.m-dark .m-modal-content a.m-skype{color:#4cc7f4}.m-modal.m-dark .m-modal-content a.m-skype:hover,.m-modal.m-dark .m-modal-content a.m-skype:focus,.m-modal.m-dark .m-modal-content a.m-skype:active{background-color:rgba(0,175,240,0.08);color:#4cc7f4}.m-modal.m-dark .m-modal-content a.m-by:hover,.m-modal.m-dark .m-modal-content a.m-by:focus,.m-modal.m-dark .m-modal-content a.m-by:active{color:#fff}\n',""]),t.exports=o},function(t,e,a){"use strict";t.exports=function(t){var e=[];return e.toString=function(){return this.map((function(e){var a=function(t,e){var a=t[1]||"",o=t[3];if(!o)return a;if(e&&"function"==typeof btoa){var n=(l=o,m=btoa(unescape(encodeURIComponent(JSON.stringify(l)))),i="sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(m),"/*# ".concat(i," */")),d=o.sources.map((function(t){return"/*# sourceURL=".concat(o.sourceRoot||"").concat(t," */")}));return[a].concat(d).concat([n]).join("\n")}var l,m,i;return[a].join("\n")}(e,t);return e[2]?"@media ".concat(e[2]," {").concat(a,"}"):a})).join("")},e.i=function(t,a,o){"string"==typeof t&&(t=[[null,t,""]]);var n={};if(o)for(var d=0;d0&&void 0!==arguments[0]?arguments[0]:"mail",a=arguments.length>1?arguments[1]:void 0;if("mail"===e){var o,n;if(a.href&&a.href.toLowerCase().startsWith(N)){M=decodeURIComponent(a.href.split("?")[0].split(N)[1].trim());var d=new URL(a.href).searchParams;z=d.get("cc"),D=d.get("bcc"),W=d.get("subject"),H=d.get("body")}else M=a.getAttribute("data-address")+"@"+a.getAttribute("data-domain"),new URL(N+encodeURIComponent(M)),z=a.getAttribute("data-cc-address")+"@"+a.getAttribute("data-cc-domain"),D=a.getAttribute("data-bcc-address")+"@"+a.getAttribute("data-bcc-domain"),W=a.getAttribute("data-subject"),H=a.getAttribute("data-body");if(void 0===(null===(o=l)||void 0===o?void 0:o.validateEmail)||!0===(null===(n=l)||void 0===n?void 0:n.validateEmail)){if(!wt(M.split(",")))return;z&&!wt(z.split(","))&&(z=""),D&&!wt(D.split(","))&&(D="")}c.innerHTML=M.split(",").join("
"),z?(s.style.display="block",b.innerHTML=z.split(",").join("
")):s.style.display="none",D?(p.style.display="block",v.innerHTML=D.split(",").join("
")):p.style.display="none",W?(u.style.display="block",g.textContent=W):u.style.display="none",H?(f.style.display="block",h.textContent=H):f.style.display="none",k.addEventListener("click",$),w.addEventListener("click",F),T=rt(M),C.addEventListener("click",G),A.addEventListener("click",(function(){return tt(M)}))}else if("tel"===e){if(a.href&&a.href.toLowerCase().startsWith(R)?B=decodeURIComponent(a.href.split("?")[0].split(R)[1].trim()):a.href&&a.href.toLowerCase().startsWith(P)?B=decodeURIComponent(a.href.split("?")[0].split(P)[1].trim()):a.hasAttribute("data-tel")&&(B=a.getAttribute("data-tel"),a.getAttribute("data-msg")),!Ct(B))return;q=a.hasAttribute("data-telegram")?a.getAttribute("data-telegram"):null,a.hasAttribute("data-skype")&&(J=a.getAttribute("data-skype")),r.innerHTML=B,x.addEventListener("click",X),q?(document.getElementById("m-tg").style.display="block",L.addEventListener("click",Q)):document.getElementById("m-tg").style.display="none",_.addEventListener("click",V),j.addEventListener("click",Y),E.addEventListener("click",(function(){return tt(B)}))}(null===(t=l)||void 0===t?void 0:t.dark)||(a.classList.contains("dark")?gt(e):ht(e)),nt(e),document.addEventListener("keydown",ot)}var $=function(){var t="https://mail.google.com/mail/u/0/?view=cm&source=mailto&to="+encodeURIComponent(M);z&&(t=t.concat("&cc="+encodeURIComponent(z))),D&&(t=t.concat("&bcc="+encodeURIComponent(D))),W&&(t=t.concat("&subject="+W)),H&&(t=t.concat("&body="+H)),window.open(t,"_blank"),dt()},F=function(){var t="https://outlook.live.com/owa/?path=/mail/action/compose&to="+encodeURIComponent(M);W&&(t=t.concat("&subject="+W)),H&&(t=t.concat("&body="+H)),window.open(t,"_blank"),dt()},G=function(){ct(T),dt()},Q=function(){var t="https://t.me/"+q;window.open(t,"_blank"),dt()},V=function(){var t="skype:"+(""!==J?J:B);window.open(t,"_blank"),dt()},X=function(){var t="https://wa.me/"+B;window.open(t,"_blank"),dt()},Y=function(){var t="tel:"+B;window.open(t),dt()},tt=function(t){var e;Lt(t),(e=lt("mail")?A:E).textContent="copied",setTimeout((function(){e.textContent="copy",dt()}),999)};function et(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"mail",a=t.href;return"mail"===e?a&&a.toLowerCase().startsWith(N)&&!t.classList.contains("no-mailgo")||t.hasAttribute("data-address")&&(a&&"#mailgo"===t.getAttribute("href").toLowerCase()||t.classList&&t.classList.contains("mailgo")):"tel"===e&&(a&&(a.toLowerCase().startsWith(R)||a.toLowerCase().startsWith(P))&&!t.classList.contains("no-mailgo")||t.hasAttribute("data-tel")&&a&&"#mailgo"===t.getAttribute("href").toLowerCase()||t.classList&&t.classList.contains("mailgo"))}function at(t){if(!document.contains(m)||!document.contains(i))return!1;if(lt("mail")||lt("tel"))return!1;var e=t.composedPath&&t.composedPath()||yt(t.target);return e&&e.forEach((function(e){return!(e instanceof HTMLDocument||e instanceof Window)&&(et(e,"mail")?(t.preventDefault(),Z("mail",e),!0):et(e,"tel")?(t.preventDefault(),Z("tel",e),!0):void 0)})),!1}var ot=function(t){if(lt("mail"))switch(t.keyCode){case 27:dt();break;case 71:$();break;case 79:F();break;case 32:case 13:G();break;case 67:tt(M);break;default:return}else if(lt("tel"))switch(t.keyCode){case 27:dt();break;case 84:Q();break;case 87:X();break;case 32:case 13:Y();break;case 67:tt(B);break;default:return}},nt=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"mail";ut(t,"flex")},dt=function(){ut("mail","none"),ut("tel","none"),document.removeEventListener("keydown",ot)},lt=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"mail";return"flex"===pt(t)},mt=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"div";return document.createElement(t)},it=function(t){return document.createTextNode(t)},ct=function(t){return window.location.href=N+atob(t)},rt=function(t){return btoa(t)},st=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"mail";return"tel"===t?i:m},pt=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"mail";return st(t).style.display},ut=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"mail",e=arguments.length>1?arguments[1]:void 0,a=st(t);a.style.display=e,"flex"===e?(y=document.activeElement,a.setAttribute("aria-hidden","false"),a.setAttribute("tabindex","0"),a.focus(),ft(a)):(a.setAttribute("aria-hidden","true"),a.setAttribute("tabindex","-1"),y.focus())},ft=function(t){var e=t;e.querySelector(".m-modal-content a:last-of-type").addEventListener("keydown",bt),e.querySelector(".m-modal-content a:first-of-type").addEventListener("keydown",vt)},bt=function(t){"Tab"===t.code&&!1===t.shiftKey&&(t.preventDefault(),t.target.closest("div").querySelector("a:first-of-type").focus())},vt=function(t){"Tab"===t.code&&!0===t.shiftKey&&(t.preventDefault(),t.target.closest("div").querySelector("a:last-of-type").focus())},gt=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"mail";return st(t).classList.add("m-dark")},ht=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"mail";return st(t).classList.remove("m-dark")},yt=function(t){for(var e=[];t;){if(e.push(t),"HTML"===t.tagName)return e.push(document),e.push(window),e;t=t.parentElement}},kt=function(t){return/^(([^<>()[\]\\.,;:\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(t)},wt=function(t){return t.every(kt)},Ct=function(t){return/^[+]{0,1}[\s0-9]{0,}[(]{0,1}[0-9]{1,4}[)]{0,1}[-\s\./0-9]*$/.test(t)},Lt=function(t){var e=mt("textarea");e.value=t,e.setAttribute("readonly",""),e.style.position="absolute",e.style.left="-9999px",document.body.appendChild(e);var a=document.getSelection().rangeCount>0&&document.getSelection().getRangeAt(0);return e.select(),document.execCommand("copy"),document.body.removeChild(e),!!a&&(document.getSelection().removeAllRanges(),document.getSelection().addRange(a),!0)};var xt=function(t){var e,a,o,d;l=n(n({},t),(null===(e=window)||void 0===e?void 0:e.mailgoConfig)||null),window&&"undefined"!=typeof window&&((d=mt("style")).id="mailgo-style",d.type="text/css",d.appendChild(it(S)),document.head.appendChild(d),(null===(a=l)||void 0===a?void 0:a.initEvent)?(null===(o=l)||void 0===o?void 0:o.listenerOptions)?document.addEventListener(l.initEvent,(function(){K()}),l.listenerOptions):document.addEventListener(l.initEvent,(function(){K()})):K())};xt({initEvent:"DOMContentLoaded",dark:!0})}]); \ No newline at end of file diff --git a/dist/mailgo.dark.min.js.map b/dist/mailgo.dark.min.js.map deleted file mode 100644 index f9c86c1..0000000 --- a/dist/mailgo.dark.min.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack://mailgo/webpack/bootstrap","webpack://mailgo/../src/mailgo.scss?16f9","webpack://mailgo/../src/mailgo.scss","webpack://mailgo/../node_modules/css-loader/dist/runtime/api.js","webpack://mailgo/../src/mailgo.ts","webpack://mailgo/./mailgo.dist.dark.ts"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","result","toString","___CSS_LOADER_EXPORT___","___CSS_LOADER_API_IMPORT___","push","useSourceMap","list","this","map","item","content","cssMapping","btoa","sourceMapping","sourceMap","base64","unescape","encodeURIComponent","JSON","stringify","data","concat","sourceURLs","sources","source","sourceRoot","join","cssWithMappingToString","mediaQuery","dedupe","alreadyImportedModules","length","id","_i","config","modalMailto","modalTel","title","titleTel","detailCc","detailBcc","detailSubject","detailBody","ccValue","bccValue","subjectValue","bodyValue","activatedLink","gmail","outlook","open","telegram","wa","skype","copyMail","copyTel","i18n","require","mailgoCSS","MAILTO","TEL","CALLTO","DEFAULT_BTN_HREF","lang","mail","encEmail","cc","bcc","subject","bodyMail","tel","telegramUsername","skypeUsername","mailgoInit","translations","languages","indexOf","forceLang","htmlLang","document","documentElement","defaultStrings","strings","getElementById","createElement","style","display","classList","add","setAttribute","dark","enableDarkMode","disableDarkMode","modalBackground","className","appendChild","modalContent","details","ccSpan","createTextNode","cc_","bccSpan","bcc_","subjectSpan","subject_","bodySpan","body_","href","open_in_","gmailSpan","outlookSpan","openSpan","_default","copy","showFooter","byElement","body","addEventListener","hideMailgo","telegramSpan","waSpan","whatsapp","skypeSpan","callSpan","_as_default","mailgoCheckRender","mailgoRender","type","mailgoElement","toLowerCase","startsWith","decodeURIComponent","split","trim","urlParams","URL","searchParams","getAttribute","validateEmail","validateEmails","innerHTML","textContent","openGmail","openOutlook","encodeEmail","openDefault","hasAttribute","validateTel","openWhatsApp","openTelegram","openSkype","callDefault","contains","showMailgo","mailgoKeydown","gmailUrl","window","outlookUrl","mailToEncoded","tgUrl","skypeUrl","waUrl","callUrl","activeCopy","copyToClipboard","mailgoIsShowing","setTimeout","isMailgo","element","event","path","composedPath","target","forEach","HTMLDocument","Window","preventDefault","keyboardEvent","keyCode","setModalDisplay","removeEventListener","getModalDisplay","by","rel","encoded","location","atob","email","getModalHTMLElement","ref","modal","activeElement","focus","setFocusLoop","querySelector","leaveLastLink","leaveFirstLink","e","code","shiftKey","closest","remove","el","tagName","parentElement","test","arr","every","str","position","left","selected","getSelection","rangeCount","getRangeAt","select","execCommand","removeChild","removeAllRanges","addRange","mailgo","mailgoConfig","mailgoCSSElement","head","initEvent","listenerOptions"],"mappings":"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","file":"mailgo.dark.min.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 4);\n","\n var result = require(\"!!../node_modules/css-loader/dist/cjs.js??ref--5-1!../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 ","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../node_modules/css-loader/dist/runtime/api.js\");\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(false);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".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:16.5px;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:#20232a;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.95;border-radius:20px;box-shadow:0 3px 20px rgba(32,35,42,0.5);color:#4a4a4a;display:flex;flex-direction:column;overflow:auto;padding:24px;transition:0.5s box-shadow}.m-modal .m-modal-content:hover,.m-modal .m-modal-content:focus,.m-modal .m-modal-content:active{opacity:1}.m-modal .m-modal-content .m-title{margin-bottom:8px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;line-height:1.2em}.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{cursor:pointer;padding:10px;color:#4a4a4a;border-radius:20px;text-decoration:none}.m-modal .m-modal-content a.m-gmail{color:#c0372a}.m-modal .m-modal-content a.m-gmail:hover,.m-modal .m-modal-content a.m-gmail:focus,.m-modal .m-modal-content a.m-gmail:active{background-color:rgba(212,70,56,0.08);color:#c0372a}.m-modal .m-modal-content a.m-outlook{color:#0967aa}.m-modal .m-modal-content a.m-outlook:hover,.m-modal .m-modal-content a.m-outlook:focus,.m-modal .m-modal-content a.m-outlook:active{background-color:rgba(0,114,198,0.08);color:#0967aa}.m-modal .m-modal-content a.m-tg{color:#086da0}.m-modal .m-modal-content a.m-tg:hover,.m-modal .m-modal-content a.m-tg:focus,.m-modal .m-modal-content a.m-tg:active{background-color:rgba(0,136,204,0.08);color:#086da0}.m-modal .m-modal-content a.m-wa{color:#067466}.m-modal .m-modal-content a.m-wa:hover,.m-modal .m-modal-content a.m-wa:focus,.m-modal .m-modal-content a.m-wa:active{background-color:rgba(0,191,165,0.08);color:#067466}.m-modal .m-modal-content a.m-skype{color:#076d92}.m-modal .m-modal-content a.m-skype:hover,.m-modal .m-modal-content a.m-skype:focus,.m-modal .m-modal-content a.m-skype:active{background-color:rgba(0,175,240,0.08);color:#076d92}.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-default:focus,.m-modal .m-modal-content a.m-default:active,.m-modal .m-modal-content a.m-copy:hover,.m-modal .m-modal-content a.m-copy:focus,.m-modal .m-modal-content a.m-copy:active{background-color:rgba(0,0,0,0.08);color:#4a4a4a}.m-modal .m-modal-content a.m-by{font-size:12px;margin-top:0.8rem;padding:5px;color:#4a4a4a}.m-modal .m-modal-content a.m-by:hover,.m-modal .m-modal-content a.m-by:focus,.m-modal .m-modal-content a.m-by:active{color:#3d3d3d}.m-modal .m-modal-content .w-500{font-weight:500}.m-modal.m-dark .m-modal-content{background-color:#20232a}.m-modal.m-dark .m-modal-content,.m-modal.m-dark .m-modal-content p,.m-modal.m-dark .m-modal-content p span,.m-modal.m-dark .m-modal-content strong{color:#fff}.m-modal.m-dark .m-modal-content a{color:#eaeaea}.m-modal.m-dark .m-modal-content a:not(.m-by):hover,.m-modal.m-dark .m-modal-content a:not(.m-by):focus,.m-modal.m-dark .m-modal-content a:not(.m-by):active{background-color:rgba(134,134,134,0.08);color:#eaeaea}.m-modal.m-dark .m-modal-content a.m-gmail{color:#e07d73}.m-modal.m-dark .m-modal-content a.m-gmail:hover,.m-modal.m-dark .m-modal-content a.m-gmail:focus,.m-modal.m-dark .m-modal-content a.m-gmail:active{background-color:rgba(212,70,56,0.08);color:#e07d73}.m-modal.m-dark .m-modal-content a.m-outlook{color:#4c9cd7}.m-modal.m-dark .m-modal-content a.m-outlook:hover,.m-modal.m-dark .m-modal-content a.m-outlook:focus,.m-modal.m-dark .m-modal-content a.m-outlook:active{background-color:rgba(0,114,198,0.08);color:#4c9cd7}.m-modal.m-dark .m-modal-content a.m-tg{color:#4cabdb}.m-modal.m-dark .m-modal-content a.m-tg:hover,.m-modal.m-dark .m-modal-content a.m-tg:focus,.m-modal.m-dark .m-modal-content a.m-tg:active{background-color:rgba(0,136,204,0.08);color:#4cabdb}.m-modal.m-dark .m-modal-content a.m-wa{color:#4cd2c0}.m-modal.m-dark .m-modal-content a.m-wa:hover,.m-modal.m-dark .m-modal-content a.m-wa:focus,.m-modal.m-dark .m-modal-content a.m-wa:active{background-color:rgba(0,191,165,0.08);color:#4cd2c0}.m-modal.m-dark .m-modal-content a.m-skype{color:#4cc7f4}.m-modal.m-dark .m-modal-content a.m-skype:hover,.m-modal.m-dark .m-modal-content a.m-skype:focus,.m-modal.m-dark .m-modal-content a.m-skype:active{background-color:rgba(0,175,240,0.08);color:#4cc7f4}.m-modal.m-dark .m-modal-content a.m-by:hover,.m-modal.m-dark .m-modal-content a.m-by:focus,.m-modal.m-dark .m-modal-content a.m-by:active{color:#fff}\\n\", \"\"]);\n// Exports\nmodule.exports = ___CSS_LOADER_EXPORT___;\n","\"use strict\";\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}","import {\n MailgoConfig,\n MailgoTranslations,\n MailgoTranslation,\n MailgoI18n,\n} from \"mailgo\";\n\n// i18n for mailgo\nconst i18n: MailgoI18n = require(\"../i18n/i18n.json\");\n\n// mailgo scss\nconst mailgoCSS: string = require(\"./mailgo.scss\").toString();\n\n// default lang\nconst DEFAULT_LANG: string = \"en\";\n\n// links\nconst MAILTO: string = \"mailto:\";\nconst TEL: string = \"tel:\";\nconst CALLTO: string = \"callto:\";\n\n// deep linking\nconst outlookDeepLink: string = \"ms-outlook://\";\n\n// mailgo types\nconst MAIL_TYPE: string = \"mail\";\nconst TEL_TYPE: string = \"tel\";\n\n// default href for links\nconst DEFAULT_BTN_HREF: string = \"javascript:void(0);\";\n\n// useful html tags\nconst spanHTMLTag: string = \"span\";\nconst aHTMLTag: string = \"a\";\nconst pHTMLTag: string = \"p\";\n\n// global mailgo config object\nlet config: MailgoConfig;\n\n// default language\nlet lang: string = DEFAULT_LANG;\n\n// modals global object\nlet modalMailto: HTMLElement, modalTel: HTMLElement;\n\n// mailgo variables\nlet url: URL,\n mail: string = \"\",\n encEmail: string = \"\",\n cc: string = \"\",\n bcc: string = \"\",\n subject: string = \"\",\n bodyMail: string = \"\";\n\n// mailgo tel variables\nlet tel: string = \"\",\n msg: string = \"\",\n telegramUsername: string = \"\",\n skypeUsername: string = \"\";\n\n// the DOM elements\nlet title: HTMLElement,\n titleTel: HTMLElement,\n detailCc: HTMLElement,\n detailBcc: HTMLElement,\n detailSubject: HTMLElement,\n detailBody: HTMLElement,\n ccValue: HTMLElement,\n bccValue: HTMLElement,\n subjectValue: HTMLElement,\n bodyValue: HTMLElement,\n activatedLink: HTMLElement;\n\n// mailgo buttons (actions)\nlet gmail: HTMLLinkElement,\n outlook: HTMLLinkElement,\n open: HTMLLinkElement,\n telegram: HTMLLinkElement,\n wa: HTMLLinkElement,\n skype: HTMLLinkElement,\n call: HTMLLinkElement,\n copyMail: HTMLLinkElement,\n copyTel: HTMLLinkElement;\n\n/**\n * mailgoInit\n * the function that creates the mailgo elements in DOM\n */\nconst mailgoInit = (): void => {\n // translations\n let {\n translations,\n }: { translations: MailgoTranslations } = i18n as MailgoI18n;\n\n // if a default language is defined use it\n if (config?.lang && i18n.languages.indexOf(config.lang) !== -1) {\n lang = config.lang;\n }\n\n // if is defined use it!\n if (!config?.forceLang) {\n // keep the lang from html\n let htmlLang: string = document.documentElement.lang;\n\n // if there are translations...\n if (i18n.languages.indexOf(htmlLang) !== -1) {\n lang = document.documentElement.lang;\n }\n }\n\n // strings\n let defaultStrings: MailgoTranslation = translations[DEFAULT_LANG];\n let strings: MailgoTranslation = translations[lang];\n\n // mailgo, if mailgo not already exists\n let mailgoExists = !!document.getElementById(\"mailgo\");\n\n if (!mailgoExists) {\n // modal\n modalMailto = createElement() as HTMLElement;\n modalMailto.style.display = \"none\";\n modalMailto.id = \"mailgo\";\n modalMailto.classList.add(\"m-modal\");\n modalMailto.setAttribute(\"role\", \"dialog\");\n modalMailto.setAttribute(\"tabindex\", \"-1\");\n modalMailto.setAttribute(\"aria-labelledby\", \"m-title\");\n\n // if dark is in config\n if (config?.dark) {\n enableDarkMode(MAIL_TYPE);\n } else {\n disableDarkMode(MAIL_TYPE);\n }\n\n // background\n let modalBackground: HTMLElement = createElement();\n modalBackground.className = \"m-modal-back\";\n modalMailto.appendChild(modalBackground);\n\n // modal content\n let modalContent: HTMLElement = createElement();\n modalContent.className = \"m-modal-content\";\n modalMailto.appendChild(modalContent);\n\n // title (email address)\n title = createElement(\"strong\");\n title.id = \"m-title\";\n title.className = \"m-title\";\n modalContent.appendChild(title);\n\n // details\n let details: HTMLElement = createElement();\n details.id = \"m-details\";\n details.className = \"m-details\";\n\n detailCc = createElement(pHTMLTag);\n detailCc.id = \"m-cc\";\n let ccSpan: HTMLElement = createElement(spanHTMLTag);\n ccSpan.className = \"w-500\";\n ccSpan.appendChild(createTextNode(strings.cc_ || defaultStrings.cc_));\n ccValue = createElement(spanHTMLTag);\n ccValue.id = \"m-cc-value\";\n detailCc.appendChild(ccSpan);\n detailCc.appendChild(ccValue);\n details.appendChild(detailCc);\n\n detailBcc = createElement(pHTMLTag);\n detailBcc.id = \"m-bcc\";\n let bccSpan: HTMLElement = createElement(spanHTMLTag);\n bccSpan.className = \"w-500\";\n bccSpan.appendChild(createTextNode(strings.bcc_ || defaultStrings.bcc_));\n bccValue = createElement(spanHTMLTag);\n bccValue.id = \"m-bcc-value\";\n detailBcc.appendChild(bccSpan);\n detailBcc.appendChild(bccValue);\n details.appendChild(detailBcc);\n\n detailSubject = createElement(pHTMLTag);\n detailSubject.id = \"m-subject\";\n let subjectSpan: HTMLElement = createElement(spanHTMLTag);\n subjectSpan.className = \"w-500\";\n subjectSpan.appendChild(\n createTextNode(strings.subject_ || defaultStrings.subject_)\n );\n subjectValue = createElement(spanHTMLTag);\n subjectValue.id = \"m-subject-value\";\n detailSubject.appendChild(subjectSpan);\n detailSubject.appendChild(subjectValue);\n details.appendChild(detailSubject);\n\n detailBody = createElement(pHTMLTag);\n detailBody.id = \"m-body\";\n let bodySpan: HTMLElement = createElement(spanHTMLTag);\n bodySpan.className = \"w-500\";\n bodySpan.appendChild(createTextNode(strings.body_ || defaultStrings.body_));\n bodyValue = createElement(spanHTMLTag);\n bodyValue.id = \"m-body-value\";\n detailBody.appendChild(bodySpan);\n detailBody.appendChild(bodyValue);\n details.appendChild(detailBody);\n\n modalContent.appendChild(details);\n\n // Gmail\n gmail = createElement(aHTMLTag) as HTMLLinkElement;\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(\n createTextNode(strings.open_in_ || defaultStrings.open_in_)\n );\n let gmailSpan: HTMLElement = createElement(spanHTMLTag);\n gmailSpan.className = \"w-500\";\n gmailSpan.appendChild(\n createTextNode(strings.gmail || defaultStrings.gmail)\n );\n gmail.appendChild(gmailSpan);\n\n modalContent.appendChild(gmail);\n\n // Outlook\n outlook = createElement(aHTMLTag) as HTMLLinkElement;\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(\n createTextNode(strings.open_in_ || defaultStrings.open_in_)\n );\n let outlookSpan: HTMLElement = createElement(spanHTMLTag);\n outlookSpan.className = \"w-500\";\n outlookSpan.appendChild(\n createTextNode(strings.outlook || defaultStrings.outlook)\n );\n outlook.appendChild(outlookSpan);\n\n modalContent.appendChild(outlook);\n\n // open default\n open = createElement(aHTMLTag) as HTMLLinkElement;\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: HTMLElement = createElement(spanHTMLTag);\n openSpan.className = \"w-500\";\n openSpan.appendChild(createTextNode(strings.open || defaultStrings.open));\n open.appendChild(openSpan);\n open.appendChild(\n createTextNode(strings._default || defaultStrings._default)\n );\n\n modalContent.appendChild(open);\n\n // copy\n copyMail = createElement(aHTMLTag) as HTMLLinkElement;\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(strings.copy || defaultStrings.copy));\n\n modalContent.appendChild(copyMail);\n\n // hide mailgo.dev in footer only if showFooter is defined and equal to false\n if (\n typeof config?.showFooter === \"undefined\" ||\n config?.showFooter !== false\n ) {\n modalContent.appendChild(byElement());\n }\n\n // add the modal at the end of the body\n document.body.appendChild(modalMailto);\n\n // every click outside the modal will hide the modal\n modalBackground.addEventListener(\"click\", hideMailgo);\n }\n\n // mailgo tel, if mailgo-tel not already exists\n let mailgoTelExists = !!document.getElementById(\"mailgo-tel\");\n\n if (!mailgoTelExists) {\n // modal\n modalTel = createElement() as HTMLElement;\n modalTel.style.display = \"none\";\n modalTel.id = \"mailgo-tel\";\n modalTel.classList.add(\"m-modal\");\n modalTel.setAttribute(\"role\", \"dialog\");\n modalTel.setAttribute(\"tabindex\", \"-1\");\n modalTel.setAttribute(\"aria-labelledby\", \"m-tel-title\");\n\n // if dark is in config\n if (config?.dark) {\n enableDarkMode(TEL_TYPE);\n } else {\n disableDarkMode(TEL_TYPE);\n }\n\n // background\n let modalBackground: HTMLElement = createElement();\n modalBackground.className = \"m-modal-back\";\n modalTel.appendChild(modalBackground);\n\n // modal content\n let modalContent: HTMLElement = createElement();\n modalContent.className = \"m-modal-content\";\n modalTel.appendChild(modalContent);\n\n // title (telephone number)\n titleTel = createElement(\"strong\");\n titleTel.id = \"m-tel-title\";\n titleTel.className = \"m-title\";\n modalContent.appendChild(titleTel);\n\n // Telegram\n telegram = createElement(aHTMLTag) as HTMLLinkElement;\n telegram.id = \"m-tg\";\n telegram.href = DEFAULT_BTN_HREF;\n telegram.classList.add(\"m-open\");\n telegram.classList.add(\"m-tg\");\n\n // by default not display\n telegram.style.display = \"none\";\n\n telegram.appendChild(\n createTextNode(strings.open_in_ || defaultStrings.open_in_)\n );\n let telegramSpan: HTMLElement = createElement(spanHTMLTag);\n telegramSpan.className = \"w-500\";\n telegramSpan.appendChild(\n createTextNode(strings.telegram || defaultStrings.telegram)\n );\n telegram.appendChild(telegramSpan);\n\n modalContent.appendChild(telegram);\n\n // WhatsApp\n wa = createElement(aHTMLTag) as HTMLLinkElement;\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_ || defaultStrings.open_in_));\n let waSpan: HTMLElement = createElement(spanHTMLTag);\n waSpan.className = \"w-500\";\n waSpan.appendChild(\n createTextNode(strings.whatsapp || defaultStrings.whatsapp)\n );\n wa.appendChild(waSpan);\n\n modalContent.appendChild(wa);\n\n // Skype\n skype = createElement(aHTMLTag) as HTMLLinkElement;\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(\n createTextNode(strings.open_in_ || defaultStrings.open_in_)\n );\n let skypeSpan: HTMLElement = createElement(spanHTMLTag);\n skypeSpan.className = \"w-500\";\n skypeSpan.appendChild(\n createTextNode(strings.skype || defaultStrings.skype)\n );\n skype.appendChild(skypeSpan);\n\n modalContent.appendChild(skype);\n\n // call default\n call = createElement(aHTMLTag) as HTMLLinkElement;\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: HTMLElement = createElement(spanHTMLTag);\n callSpan.className = \"w-500\";\n callSpan.appendChild(createTextNode(strings.call || defaultStrings.call));\n call.appendChild(callSpan);\n call.appendChild(\n createTextNode(strings._as_default || defaultStrings._as_default)\n );\n\n modalContent.appendChild(call);\n\n // copy\n copyTel = createElement(aHTMLTag) as HTMLLinkElement;\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(strings.copy || defaultStrings.copy));\n\n modalContent.appendChild(copyTel);\n\n // hide mailgo.dev in footer only if showFooter is defined and equal to false\n if (\n typeof config?.showFooter === \"undefined\" ||\n config?.showFooter !== false\n ) {\n modalContent.appendChild(byElement());\n }\n\n // add the modal at the end of the body\n document.body.appendChild(modalTel);\n\n // every click outside the modal will hide the modal\n modalBackground.addEventListener(\"click\", hideMailgo);\n }\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/**\n * mailgoRender\n * function to render a mailgo (mail or tel)\n */\nexport function mailgoRender(\n type: string = MAIL_TYPE,\n mailgoElement: HTMLLinkElement\n): void {\n // mailgo mail\n if (type === MAIL_TYPE) {\n // if the element href=^\"mailto:\"\n if (\n mailgoElement.href &&\n mailgoElement.href.toLowerCase().startsWith(MAILTO)\n ) {\n mail = decodeURIComponent(\n mailgoElement.href.split(\"?\")[0].split(MAILTO)[1].trim()\n );\n\n url = new URL(mailgoElement.href);\n let urlParams: URLSearchParams = url.searchParams;\n\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 } else {\n // if the element href=\"#mailgo\" or class=\"mailgo\"\n // mail = data-address + @ + data-domain\n mail =\n mailgoElement.getAttribute(\"data-address\") +\n \"@\" +\n mailgoElement.getAttribute(\"data-domain\");\n\n url = new URL(MAILTO + encodeURIComponent(mail));\n\n // cc = data-cc-address + @ + data-cc-domain\n cc =\n mailgoElement.getAttribute(\"data-cc-address\") +\n \"@\" +\n mailgoElement.getAttribute(\"data-cc-domain\");\n\n // bcc = data-bcc-address + @ + data-bcc-domain\n bcc =\n mailgoElement.getAttribute(\"data-bcc-address\") +\n \"@\" +\n mailgoElement.getAttribute(\"data-bcc-domain\");\n\n // subject = data-subject\n subject = mailgoElement.getAttribute(\"data-subject\");\n\n // body = data-body\n bodyMail = mailgoElement.getAttribute(\"data-body\");\n }\n\n if (\n typeof config?.validateEmail === \"undefined\" ||\n config?.validateEmail === true\n ) {\n // validate the email address\n if (!validateEmails(mail.split(\",\"))) return;\n\n // if cc, bcc are not valid cc, bcc = \"\"\n if (cc && !validateEmails(cc.split(\",\"))) cc = \"\";\n if (bcc && !validateEmails(bcc.split(\",\"))) bcc = \"\";\n }\n\n // the title of the modal (email address)\n title.innerHTML = mail.split(\",\").join(\"
\");\n\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\n bcc\n ? ((detailBcc.style.display = \"block\"),\n (bccValue.innerHTML = bcc.split(\",\").join(\"
\")))\n : (detailBcc.style.display = \"none\");\n\n subject\n ? ((detailSubject.style.display = \"block\"),\n (subjectValue.textContent = subject))\n : (detailSubject.style.display = \"none\");\n\n bodyMail\n ? ((detailBody.style.display = \"block\"),\n (bodyValue.textContent = bodyMail))\n : (detailBody.style.display = \"none\");\n\n // add the actions\n gmail.addEventListener(\"click\", openGmail);\n\n outlook.addEventListener(\"click\", openOutlook);\n\n encEmail = encodeEmail(mail);\n open.addEventListener(\"click\", openDefault);\n\n copyMail.addEventListener(\"click\", () => copy(mail));\n }\n // mailgo tel\n else if (type === TEL_TYPE) {\n if (\n mailgoElement.href &&\n mailgoElement.href.toLowerCase().startsWith(TEL)\n ) {\n tel = decodeURIComponent(\n mailgoElement.href.split(\"?\")[0].split(TEL)[1].trim()\n );\n } else if (\n mailgoElement.href &&\n mailgoElement.href.toLowerCase().startsWith(CALLTO)\n ) {\n tel = decodeURIComponent(\n mailgoElement.href.split(\"?\")[0].split(CALLTO)[1].trim()\n );\n } else if (mailgoElement.hasAttribute(\"data-tel\")) {\n tel = mailgoElement.getAttribute(\"data-tel\");\n msg = mailgoElement.getAttribute(\"data-msg\");\n }\n\n // validate the phone number\n if (!validateTel(tel)) return;\n\n // Telegram username\n if (mailgoElement.hasAttribute(\"data-telegram\")) {\n telegramUsername = mailgoElement.getAttribute(\"data-telegram\");\n } else {\n telegramUsername = null;\n }\n\n // Telegram username\n if (mailgoElement.hasAttribute(\"data-skype\")) {\n skypeUsername = mailgoElement.getAttribute(\"data-skype\");\n }\n\n // the title of the modal (tel)\n titleTel.innerHTML = tel;\n\n // add the actions to buttons\n wa.addEventListener(\"click\", openWhatsApp);\n\n // telegram must be shown only if data-telegram is provided\n if (telegramUsername) {\n document.getElementById(\"m-tg\").style.display = \"block\";\n telegram.addEventListener(\"click\", openTelegram);\n } else {\n document.getElementById(\"m-tg\").style.display = \"none\";\n }\n\n skype.addEventListener(\"click\", openSkype);\n\n call.addEventListener(\"click\", callDefault);\n\n copyTel.addEventListener(\"click\", () => copy(tel));\n }\n\n // if config.dark is set to true then all the modals will be in dark mode\n if (!config?.dark) {\n // if the element contains dark as class enable dark mode\n if (mailgoElement.classList.contains(\"dark\")) {\n enableDarkMode(type);\n } else {\n disableDarkMode(type);\n }\n }\n\n // show the mailgo\n showMailgo(type);\n\n // add listener keyDown\n document.addEventListener(\"keydown\", mailgoKeydown);\n}\n\n// actions\nconst openGmail = (): void => {\n // Gmail url\n let gmailUrl: string =\n \"https://mail.google.com/mail/u/0/?view=cm&source=mailto&to=\" +\n encodeURIComponent(mail);\n\n // the details if provided\n if (cc) gmailUrl = gmailUrl.concat(\"&cc=\" + encodeURIComponent(cc));\n if (bcc) gmailUrl = gmailUrl.concat(\"&bcc=\" + encodeURIComponent(bcc));\n if (subject) gmailUrl = gmailUrl.concat(\"&subject=\" + subject);\n if (bodyMail) gmailUrl = gmailUrl.concat(\"&body=\" + bodyMail);\n\n // open the link\n window.open(gmailUrl, \"_blank\");\n\n // hide the modal\n hideMailgo();\n};\n\nconst openOutlook = (): void => {\n // Outlook url\n let outlookUrl: string =\n \"https://outlook.live.com/owa/?path=/mail/action/compose&to=\" +\n encodeURIComponent(mail);\n\n // the details if provided\n if (subject) outlookUrl = outlookUrl.concat(\"&subject=\" + subject);\n if (bodyMail) outlookUrl = outlookUrl.concat(\"&body=\" + bodyMail);\n\n // open the link\n window.open(outlookUrl, \"_blank\");\n\n // hide the modal\n hideMailgo();\n};\n\nconst openDefault = (): void => {\n mailToEncoded(encEmail);\n hideMailgo();\n};\n\nconst openTelegram = (): void => {\n // Telegram url\n let tgUrl: string = \"https://t.me/\" + telegramUsername;\n\n // open the url\n window.open(tgUrl, \"_blank\");\n\n // hide the modal\n hideMailgo();\n};\n\nconst openSkype = (): void => {\n let skype: string = skypeUsername !== \"\" ? skypeUsername : tel;\n\n // Telegram url\n let skypeUrl: string = \"skype:\" + skype;\n\n // open the url\n window.open(skypeUrl, \"_blank\");\n\n // hide the modal\n hideMailgo();\n};\n\nconst openWhatsApp = (): void => {\n // WhatsApp url\n let waUrl: string = \"https://wa.me/\" + tel;\n\n // the details if provided\n if (msg) waUrl + \"?text=\" + msg;\n\n // open the url\n window.open(waUrl, \"_blank\");\n\n // hide the modal\n hideMailgo();\n};\n\nconst callDefault = () => {\n let callUrl: string = \"tel:\" + tel;\n window.open(callUrl);\n hideMailgo();\n};\n\nconst copy = (content: string): void => {\n copyToClipboard(content);\n let activeCopy: HTMLElement;\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\n// function that returns if an element is a mailgo\nexport function isMailgo(\n element: HTMLElement,\n type: string = MAIL_TYPE\n): boolean {\n let href: string = (element as HTMLLinkElement).href;\n\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 }\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 }\n\n return false;\n}\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 */\nexport function mailgoCheckRender(event: Event): boolean {\n // check if the id=mailgo exists in the body\n if (!document.contains(modalMailto) || !document.contains(modalTel))\n return false;\n\n // if a mailgo is already showing do nothing\n if (mailgoIsShowing(MAIL_TYPE) || mailgoIsShowing(TEL_TYPE)) return false;\n\n // the path of the event\n let path =\n (event.composedPath && event.composedPath()) ||\n composedPath(event.target as HTMLElement);\n\n if (path) {\n path.forEach((element: HTMLElement) => {\n if (element instanceof HTMLDocument || element instanceof Window)\n return false;\n\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\n // render mailgo\n mailgoRender(MAIL_TYPE, element as HTMLLinkElement);\n\n return true;\n }\n if (isMailgo(element, TEL_TYPE)) {\n // stop the normal execution of the element click\n event.preventDefault();\n\n // render mailgo\n mailgoRender(TEL_TYPE, element as HTMLLinkElement);\n\n return true;\n }\n });\n }\n\n return false;\n}\n\n/**\n * mailgoKeydown\n * function to manage the keydown event when the modal is showing\n */\nconst mailgoKeydown = (keyboardEvent: KeyboardEvent): void => {\n // if mailgo is showing\n if (mailgoIsShowing(MAIL_TYPE)) {\n switch (keyboardEvent.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 } else if (mailgoIsShowing(TEL_TYPE)) {\n switch (keyboardEvent.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\n// show the modal\nconst showMailgo = (type = MAIL_TYPE): void => {\n // show the correct modal\n setModalDisplay(type, \"flex\");\n};\n\n// hide the modal\nconst hideMailgo = (): void => {\n // hide all the modals\n setModalDisplay(MAIL_TYPE, \"none\");\n setModalDisplay(TEL_TYPE, \"none\");\n\n // remove listener keyDown\n document.removeEventListener(\"keydown\", mailgoKeydown);\n};\n\n// is the mailgo modal hidden?\nconst mailgoIsShowing = (type = MAIL_TYPE): boolean => {\n return getModalDisplay(type) === \"flex\";\n};\n\nconst byElement = (): HTMLLinkElement => {\n // by\n let by: HTMLLinkElement = createElement(aHTMLTag) as HTMLLinkElement;\n by.href = \"https://mailgo.dev?ref=mailgo-modal\";\n by.className = \"m-by\";\n by.target = \"_blank\";\n by.rel = \"noopener noreferrer\";\n by.appendChild(createTextNode(\"mailgo.dev\"));\n\n return by;\n};\n\n// create element\nconst createElement = (element: string = \"div\"): HTMLElement =>\n document.createElement(element);\n\n// create text node\nconst createTextNode = (element: string): Text =>\n document.createTextNode(element);\n\n// decrypt email\nconst mailToEncoded = (encoded: string): string =>\n (window.location.href = MAILTO + atob(encoded));\n\n// encode email\nconst encodeEmail = (email: string): string => btoa(email);\n\n// get the correct HTMLElement from a type\nconst getModalHTMLElement = (type: string = MAIL_TYPE) =>\n type === TEL_TYPE ? modalTel : modalMailto;\n\n// get display value\nconst getModalDisplay = (ref: string = MAIL_TYPE): string =>\n getModalHTMLElement(ref).style.display;\n\n// set display value\nconst setModalDisplay = (ref: string = MAIL_TYPE, value: string): void => {\n let modal = getModalHTMLElement(ref);\n modal.style.display = value;\n\n if (value === \"flex\") {\n // \"save\" the activated link.\n activatedLink = document.activeElement as HTMLElement;\n modal.setAttribute(\"aria-hidden\", \"false\");\n\n // Focus on the modal container.\n modal.setAttribute(\"tabindex\", \"0\");\n modal.focus();\n setFocusLoop(modal);\n } else {\n modal.setAttribute(\"aria-hidden\", \"true\");\n\n // focus back the activated link for getting back to the context.\n modal.setAttribute(\"tabindex\", \"-1\");\n activatedLink.focus();\n }\n};\n\n// set focus loop within modal\nconst setFocusLoop = (ref: HTMLElement): void => {\n let modal = ref;\n modal\n .querySelector(\".m-modal-content a:last-of-type\")\n .addEventListener(\"keydown\", leaveLastLink);\n modal\n .querySelector(\".m-modal-content a:first-of-type\")\n .addEventListener(\"keydown\", leaveFirstLink);\n};\n\nconst leaveLastLink = (e: KeyboardEvent): void => {\n // going back to the first link to force looping\n if (e.code === \"Tab\" && e.shiftKey === false) {\n e.preventDefault();\n\n ((e.target as HTMLElement)\n .closest(\"div\")\n .querySelector(\"a:first-of-type\") as HTMLElement).focus();\n }\n};\n\nconst leaveFirstLink = (e: KeyboardEvent): void => {\n // going back to the first link to force looping\n if (e.code === \"Tab\" && e.shiftKey === true) {\n e.preventDefault();\n ((e.target as HTMLElement)\n .closest(\"div\")\n .querySelector(\"a:last-of-type\") as HTMLElement).focus();\n }\n};\n\n// enable dark mode\nconst enableDarkMode = (type: string = MAIL_TYPE) =>\n getModalHTMLElement(type).classList.add(\"m-dark\");\n\n// disable dark mode\nconst disableDarkMode = (type: string = MAIL_TYPE) =>\n getModalHTMLElement(type).classList.remove(\"m-dark\");\n\n// custom composedPath if path or event.composedPath() are not defined\nconst composedPath = (\n el: HTMLElement\n): (HTMLElement | Document | (Window & typeof globalThis))[] => {\n let path = [];\n\n while (el) {\n path.push(el);\n\n if (el.tagName === \"HTML\") {\n path.push(document);\n path.push(window);\n return path;\n }\n\n el = el.parentElement;\n }\n};\n\n// validate a single email with regex\nconst validateEmail = (email: string): boolean =>\n /^(([^<>()[\\]\\\\.,;:\\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(\n email\n );\n\n// validate an array of emails\nconst validateEmails = (arr: string[]): boolean => arr.every(validateEmail);\n\n// validate a single tel with regex\nconst validateTel = (tel: string): boolean =>\n /^[+]{0,1}[\\s0-9]{0,}[(]{0,1}[0-9]{1,4}[)]{0,1}[-\\s\\./0-9]*$/.test(tel);\n\n// copy of a string\nconst copyToClipboard = (str: string): boolean => {\n let el: HTMLInputElement = createElement(\"textarea\") as HTMLInputElement;\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: Range | boolean =\n 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};\n\nconst mailgoStyle = (): void => {\n // mailgo style\n let mailgoCSSElement: HTMLStyleElement = createElement(\n \"style\"\n ) as HTMLStyleElement;\n mailgoCSSElement.id = \"mailgo-style\";\n mailgoCSSElement.type = \"text/css\";\n mailgoCSSElement.appendChild(createTextNode(mailgoCSS));\n document.head.appendChild(mailgoCSSElement);\n};\n\n// mailgo\nfunction mailgo(mailgoConfig?: MailgoConfig): void {\n // set the global config merging window mailgConfig and mailgoConfig passed as a parameter\n config = { ...mailgoConfig, ...((window as any)?.mailgoConfig || null) };\n\n // if the window is defined...\n if (window && typeof window !== \"undefined\") {\n // add the style for mailgo\n mailgoStyle();\n\n // if is set an initEvent add the listener\n if (config?.initEvent) {\n if (config?.listenerOptions) {\n // listener options specified\n document.addEventListener(\n config.initEvent,\n () => {\n mailgoInit();\n },\n config.listenerOptions\n );\n } else {\n // no listener options\n document.addEventListener(config.initEvent, () => {\n mailgoInit();\n });\n }\n } else {\n mailgoInit();\n }\n }\n}\n\nexport default mailgo;\n","// webpack > dist/mailgo.min.js\n\nimport mailgo from \"../src/mailgo\";\n\n// call init mailgo attached to the event DOMContentLoaded\nconst mailgoConfig = {\n initEvent: \"DOMContentLoaded\",\n dark: true,\n};\n\nmailgo(mailgoConfig);\n"],"sourceRoot":""} \ No newline at end of file diff --git a/dist/mailgo.min.js b/dist/mailgo.min.js index 5a57607..6217dd1 100644 --- a/dist/mailgo.min.js +++ b/dist/mailgo.min.js @@ -1,2 +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","es","de","fr","pt","nl","ru"],"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 ","bcc_":"ccn ","subject_":"oggetto ","body_":"testo ","call":"chiama","open":"apri","_default":" ","_as_default":" ","copy":"copia"},"es":{"open_in_":"abrir con ","bcc_":"cco ","subject_":"asunto ","body_":"cuerpo ","call":"llamar","open":"abrir","_default":" predefinido","_as_default":" por defecto","copy":"copiar"},"de":{"open_in_":"Öffnen in ","subject_":"Betreff ","body_":"Nachricht ","call":"Anrufen","open":"Öffnen","_default":" mit Standard","_as_default":" mit Standard","copy":"kopieren"},"pt":{"open_in_":"abrir com ","bcc_":"cco ","subject_":"assunto ","body_":"corpo ","call":"ligar","open":"abrir","_default":" padrão","_as_default":" por padrão","copy":"copiar"},"fr":{"open_in_":"Ouvrir dans ","bcc_":"cci ","subject_":"sujet ","body_":"contenu ","call":"Appeler","open":"Ouvrir","_default":" par défaut","_as_default":" par défaut","copy":"Copier"},"nl":{"subject_":"onderwerp ","body_":"bericht ","call":"bellen","open":"openen","_default":" standaard","_as_default":" als standaard","copy":"kopiëren"},"ru":{"open_in_":"открыть в ","subject_":"тема ","body_":"тело ","call":"позвонить","open":"открыть","_default":" по умолчанию","_as_default":" по умолчанию","copy":"скопировать"}}}')},function(e,t,a){var o=a(2);e.exports="string"==typeof o?o:o.toString()},function(e,t,a){var o=a(3)(!1);o.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:16.5px;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:#20232a;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.95;border-radius:20px;box-shadow:0 3px 20px rgba(32,35,42,0.5);color:#4a4a4a;display:flex;flex-direction:column;overflow:auto;padding:24px;transition:0.5s box-shadow}.m-modal .m-modal-content:hover,.m-modal .m-modal-content:focus,.m-modal .m-modal-content:active{opacity:1}.m-modal .m-modal-content .m-title{margin-bottom:8px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;line-height:1.2em}.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{cursor:pointer;padding:10px;color:#4a4a4a;border-radius:20px;text-decoration:none}.m-modal .m-modal-content a.m-gmail{color:#c0372a}.m-modal .m-modal-content a.m-gmail:hover,.m-modal .m-modal-content a.m-gmail:focus,.m-modal .m-modal-content a.m-gmail:active{background-color:rgba(212,70,56,0.08);color:#c0372a}.m-modal .m-modal-content a.m-outlook{color:#0967aa}.m-modal .m-modal-content a.m-outlook:hover,.m-modal .m-modal-content a.m-outlook:focus,.m-modal .m-modal-content a.m-outlook:active{background-color:rgba(0,114,198,0.08);color:#0967aa}.m-modal .m-modal-content a.m-tg{color:#086da0}.m-modal .m-modal-content a.m-tg:hover,.m-modal .m-modal-content a.m-tg:focus,.m-modal .m-modal-content a.m-tg:active{background-color:rgba(0,136,204,0.08);color:#086da0}.m-modal .m-modal-content a.m-wa{color:#067466}.m-modal .m-modal-content a.m-wa:hover,.m-modal .m-modal-content a.m-wa:focus,.m-modal .m-modal-content a.m-wa:active{background-color:rgba(0,191,165,0.08);color:#067466}.m-modal .m-modal-content a.m-skype{color:#076d92}.m-modal .m-modal-content a.m-skype:hover,.m-modal .m-modal-content a.m-skype:focus,.m-modal .m-modal-content a.m-skype:active{background-color:rgba(0,175,240,0.08);color:#076d92}.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-default:focus,.m-modal .m-modal-content a.m-default:active,.m-modal .m-modal-content a.m-copy:hover,.m-modal .m-modal-content a.m-copy:focus,.m-modal .m-modal-content a.m-copy:active{background-color:rgba(0,0,0,0.08);color:#4a4a4a}.m-modal .m-modal-content a.m-by{font-size:12px;margin-top:0.8rem;padding:5px;color:#4a4a4a}.m-modal .m-modal-content a.m-by:hover,.m-modal .m-modal-content a.m-by:focus,.m-modal .m-modal-content a.m-by:active{color:#3d3d3d}.m-modal .m-modal-content .w-500{font-weight:500}.m-modal.m-dark .m-modal-content{background-color:#20232a}.m-modal.m-dark .m-modal-content,.m-modal.m-dark .m-modal-content p,.m-modal.m-dark .m-modal-content p span,.m-modal.m-dark .m-modal-content strong{color:#fff}.m-modal.m-dark .m-modal-content a{color:#eaeaea}.m-modal.m-dark .m-modal-content a:not(.m-by):hover,.m-modal.m-dark .m-modal-content a:not(.m-by):focus,.m-modal.m-dark .m-modal-content a:not(.m-by):active{background-color:rgba(134,134,134,0.08);color:#eaeaea}.m-modal.m-dark .m-modal-content a.m-gmail{color:#e07d73}.m-modal.m-dark .m-modal-content a.m-gmail:hover,.m-modal.m-dark .m-modal-content a.m-gmail:focus,.m-modal.m-dark .m-modal-content a.m-gmail:active{background-color:rgba(212,70,56,0.08);color:#e07d73}.m-modal.m-dark .m-modal-content a.m-outlook{color:#4c9cd7}.m-modal.m-dark .m-modal-content a.m-outlook:hover,.m-modal.m-dark .m-modal-content a.m-outlook:focus,.m-modal.m-dark .m-modal-content a.m-outlook:active{background-color:rgba(0,114,198,0.08);color:#4c9cd7}.m-modal.m-dark .m-modal-content a.m-tg{color:#4cabdb}.m-modal.m-dark .m-modal-content a.m-tg:hover,.m-modal.m-dark .m-modal-content a.m-tg:focus,.m-modal.m-dark .m-modal-content a.m-tg:active{background-color:rgba(0,136,204,0.08);color:#4cabdb}.m-modal.m-dark .m-modal-content a.m-wa{color:#4cd2c0}.m-modal.m-dark .m-modal-content a.m-wa:hover,.m-modal.m-dark .m-modal-content a.m-wa:focus,.m-modal.m-dark .m-modal-content a.m-wa:active{background-color:rgba(0,191,165,0.08);color:#4cd2c0}.m-modal.m-dark .m-modal-content a.m-skype{color:#4cc7f4}.m-modal.m-dark .m-modal-content a.m-skype:hover,.m-modal.m-dark .m-modal-content a.m-skype:focus,.m-modal.m-dark .m-modal-content a.m-skype:active{background-color:rgba(0,175,240,0.08);color:#4cc7f4}.m-modal.m-dark .m-modal-content a.m-by:hover,.m-modal.m-dark .m-modal-content a.m-by:focus,.m-modal.m-dark .m-modal-content a.m-by:active{color:#fff}\n',""]),e.exports=o},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=(l=o,i=btoa(unescape(encodeURIComponent(JSON.stringify(l)))),m="sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(i),"/*# ".concat(m," */")),d=o.sources.map((function(e){return"/*# sourceURL=".concat(o.sourceRoot||"").concat(e," */")}));return[a].concat(d).concat([n]).join("\n")}var l,i,m;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 d=0;d0&&void 0!==arguments[0]?arguments[0]:"mail",a=arguments.length>1?arguments[1]:void 0;if("mail"===t){var o,n;if(a.href&&a.href.toLowerCase().startsWith(N)){M=decodeURIComponent(a.href.split("?")[0].split(N)[1].trim());var d=new URL(a.href).searchParams;z=d.get("cc"),D=d.get("bcc"),W=d.get("subject"),H=d.get("body")}else M=a.getAttribute("data-address")+"@"+a.getAttribute("data-domain"),new URL(N+encodeURIComponent(M)),z=a.getAttribute("data-cc-address")+"@"+a.getAttribute("data-cc-domain"),D=a.getAttribute("data-bcc-address")+"@"+a.getAttribute("data-bcc-domain"),W=a.getAttribute("data-subject"),H=a.getAttribute("data-body");if(void 0===(null===(o=l)||void 0===o?void 0:o.validateEmail)||!0===(null===(n=l)||void 0===n?void 0:n.validateEmail)){if(!we(M.split(",")))return;z&&!we(z.split(","))&&(z=""),D&&!we(D.split(","))&&(D="")}c.innerHTML=M.split(",").join("
"),z?(s.style.display="block",b.innerHTML=z.split(",").join("
")):s.style.display="none",D?(p.style.display="block",v.innerHTML=D.split(",").join("
")):p.style.display="none",W?(u.style.display="block",g.textContent=W):u.style.display="none",H?(f.style.display="block",h.textContent=H):f.style.display="none",k.addEventListener("click",Z),_.addEventListener("click",$),T=se(M),w.addEventListener("click",G),A.addEventListener("click",(function(){return ee(M)}))}else if("tel"===t){if(a.href&&a.href.toLowerCase().startsWith(R)?B=decodeURIComponent(a.href.split("?")[0].split(R)[1].trim()):a.href&&a.href.toLowerCase().startsWith(P)?B=decodeURIComponent(a.href.split("?")[0].split(P)[1].trim()):a.hasAttribute("data-tel")&&(B=a.getAttribute("data-tel"),a.getAttribute("data-msg")),!Ce(B))return;F=a.hasAttribute("data-telegram")?a.getAttribute("data-telegram"):null,a.hasAttribute("data-skype")&&(q=a.getAttribute("data-skype")),r.innerHTML=B,L.addEventListener("click",X),F?(document.getElementById("m-tg").style.display="block",C.addEventListener("click",Q)):document.getElementById("m-tg").style.display="none",x.addEventListener("click",V),j.addEventListener("click",Y),E.addEventListener("click",(function(){return ee(B)}))}(null===(e=l)||void 0===e?void 0:e.dark)||(a.classList.contains("dark")?he(t):ye(t)),ne(t),document.addEventListener("keydown",oe)}var Z=function(){var e="https://mail.google.com/mail/u/0/?view=cm&source=mailto&to="+encodeURIComponent(M);z&&(e=e.concat("&cc="+encodeURIComponent(z))),D&&(e=e.concat("&bcc="+encodeURIComponent(D))),W&&(e=e.concat("&subject="+W)),H&&(e=e.concat("&body="+H)),window.open(e,"_blank"),de()},$=function(){var e="https://outlook.live.com/owa/?path=/mail/action/compose&to="+encodeURIComponent(M);W&&(e=e.concat("&subject="+W)),H&&(e=e.concat("&body="+H)),window.open(e,"_blank"),de()},G=function(){re(T),de()},Q=function(){var e="https://t.me/"+F;window.open(e,"_blank"),de()},V=function(){var e="skype:"+(""!==q?q:B);window.open(e,"_blank"),de()},X=function(){var e="https://wa.me/"+B;window.open(e,"_blank"),de()},Y=function(){var e="tel:"+B;window.open(e),de()},ee=function(e){var t;Le(e),(t=le("mail")?A:E).textContent="copied",setTimeout((function(){t.textContent="copy",de()}),999)};function te(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"mail",a=e.href;return"mail"===t?a&&a.toLowerCase().startsWith(N)&&!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(R)||a.toLowerCase().startsWith(P))&&!e.classList.contains("no-mailgo")||e.hasAttribute("data-tel")&&a&&"#mailgo"===e.getAttribute("href").toLowerCase()||e.classList&&e.classList.contains("mailgo"))}function ae(e){if(!document.contains(i)||!document.contains(m))return!1;if(le("mail")||le("tel"))return!1;var t=e.composedPath&&e.composedPath()||ke(e.target);return t&&t.forEach((function(t){return!(t instanceof HTMLDocument||t instanceof Window)&&(te(t,"mail")?(e.preventDefault(),K("mail",t),!0):te(t,"tel")?(e.preventDefault(),K("tel",t),!0):void 0)})),!1}var oe=function(e){if(le("mail"))switch(e.keyCode){case 27:de();break;case 71:Z();break;case 79:$();break;case 32:case 13:G();break;case 67:ee(M);break;default:return}else if(le("tel"))switch(e.keyCode){case 27:de();break;case 84:Q();break;case 87:X();break;case 32:case 13:Y();break;case 67:ee(B);break;default:return}},ne=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"mail";fe(e,"flex")},de=function(){fe("mail","none"),fe("tel","none"),document.removeEventListener("keydown",oe)},le=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"mail";return"flex"===ue(e)},ie=function(){var e=me("a");return e.href="https://mailgo.dev?ref=mailgo-modal",e.className="m-by",e.target="_blank",e.rel="noopener noreferrer",e.appendChild(ce("mailgo.dev")),e},me=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"div";return document.createElement(e)},ce=function(e){return document.createTextNode(e)},re=function(e){return window.location.href=N+atob(e)},se=function(e){return btoa(e)},pe=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"mail";return"tel"===e?m:i},ue=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"mail";return pe(e).style.display},fe=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"mail",t=arguments.length>1?arguments[1]:void 0,a=pe(e);a.style.display=t,"flex"===t?(y=document.activeElement,a.setAttribute("aria-hidden","false"),a.setAttribute("tabindex","0"),a.focus(),be(a)):(a.setAttribute("aria-hidden","true"),a.setAttribute("tabindex","-1"),y.focus())},be=function(e){var t=e;t.querySelector(".m-modal-content a:last-of-type").addEventListener("keydown",ve),t.querySelector(".m-modal-content a:first-of-type").addEventListener("keydown",ge)},ve=function(e){"Tab"===e.code&&!1===e.shiftKey&&(e.preventDefault(),e.target.closest("div").querySelector("a:first-of-type").focus())},ge=function(e){"Tab"===e.code&&!0===e.shiftKey&&(e.preventDefault(),e.target.closest("div").querySelector("a:last-of-type").focus())},he=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"mail";return pe(e).classList.add("m-dark")},ye=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"mail";return pe(e).classList.remove("m-dark")},ke=function(e){for(var t=[];e;){if(t.push(e),"HTML"===e.tagName)return t.push(document),t.push(window),t;e=e.parentElement}},_e=function(e){return/^(([^<>()[\]\\.,;:\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)},we=function(e){return e.every(_e)},Ce=function(e){return/^[+]{0,1}[\s0-9]{0,}[(]{0,1}[0-9]{1,4}[)]{0,1}[-\s\./0-9]*$/.test(e)},Le=function(e){var t=me("textarea");t.value=e,t.setAttribute("readonly",""),t.style.position="absolute",t.style.left="-9999px",document.body.appendChild(t);var 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 xe=function(e){var t,a,o,d;l=n(n({},e),(null===(t=window)||void 0===t?void 0:t.mailgoConfig)||null),window&&"undefined"!=typeof window&&((d=me("style")).id="mailgo-style",d.type="text/css",d.appendChild(ce(S)),document.head.appendChild(d),(null===(a=l)||void 0===a?void 0:a.initEvent)?(null===(o=l)||void 0===o?void 0:o.listenerOptions)?document.addEventListener(l.initEvent,(function(){J()}),l.listenerOptions):document.addEventListener(l.initEvent,(function(){J()})):J())};xe({initEvent:"DOMContentLoaded"})}]); -//# sourceMappingURL=mailgo.min.js.map \ No newline at end of file +window.mailgo=function(t){var e={};function a(o){if(e[o])return e[o].exports;var n=e[o]={i:o,l:!1,exports:{}};return t[o].call(n.exports,n,n.exports,a),n.l=!0,n.exports}return a.m=t,a.c=e,a.d=function(t,e,o){a.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:o})},a.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},a.t=function(t,e){if(1&e&&(t=a(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var o=Object.create(null);if(a.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var n in t)a.d(o,n,function(e){return t[e]}.bind(null,n));return o},a.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return a.d(e,"a",e),e},a.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},a.p="",a(a.s=4)}([function(t){t.exports=JSON.parse('{"languages":["en","de"],"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"},"de":{"open_in_":"Öffnen in ","subject_":"Betreff ","body_":"Nachricht ","call":"Anrufen","open":"Öffnen","_default":" mit Standard","_as_default":" mit Standard","copy":"kopieren"}}}')},function(t,e,a){var o=a(2);t.exports="string"==typeof o?o:o.toString()},function(t,e,a){var o=a(3)(!1);o.push([t.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:16.5px;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:#20232a;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.95;border-radius:20px;box-shadow:0 3px 20px rgba(32,35,42,0.5);color:#4a4a4a;display:flex;flex-direction:column;overflow:auto;padding:24px;transition:0.5s box-shadow}.m-modal .m-modal-content:hover,.m-modal .m-modal-content:focus,.m-modal .m-modal-content:active{opacity:1}.m-modal .m-modal-content .m-title{margin-bottom:8px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;line-height:1.2em}.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{cursor:pointer;padding:10px;color:#4a4a4a;border-radius:20px;text-decoration:none}.m-modal .m-modal-content a.m-gmail{color:#c0372a}.m-modal .m-modal-content a.m-gmail:hover,.m-modal .m-modal-content a.m-gmail:focus,.m-modal .m-modal-content a.m-gmail:active{background-color:rgba(212,70,56,0.08);color:#c0372a}.m-modal .m-modal-content a.m-outlook{color:#0967aa}.m-modal .m-modal-content a.m-outlook:hover,.m-modal .m-modal-content a.m-outlook:focus,.m-modal .m-modal-content a.m-outlook:active{background-color:rgba(0,114,198,0.08);color:#0967aa}.m-modal .m-modal-content a.m-tg{color:#086da0}.m-modal .m-modal-content a.m-tg:hover,.m-modal .m-modal-content a.m-tg:focus,.m-modal .m-modal-content a.m-tg:active{background-color:rgba(0,136,204,0.08);color:#086da0}.m-modal .m-modal-content a.m-wa{color:#067466}.m-modal .m-modal-content a.m-wa:hover,.m-modal .m-modal-content a.m-wa:focus,.m-modal .m-modal-content a.m-wa:active{background-color:rgba(0,191,165,0.08);color:#067466}.m-modal .m-modal-content a.m-skype{color:#076d92}.m-modal .m-modal-content a.m-skype:hover,.m-modal .m-modal-content a.m-skype:focus,.m-modal .m-modal-content a.m-skype:active{background-color:rgba(0,175,240,0.08);color:#076d92}.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-default:focus,.m-modal .m-modal-content a.m-default:active,.m-modal .m-modal-content a.m-copy:hover,.m-modal .m-modal-content a.m-copy:focus,.m-modal .m-modal-content a.m-copy:active{background-color:rgba(0,0,0,0.08);color:#4a4a4a}.m-modal .m-modal-content a.m-by{font-size:12px;margin-top:0.8rem;padding:5px;color:#4a4a4a}.m-modal .m-modal-content a.m-by:hover,.m-modal .m-modal-content a.m-by:focus,.m-modal .m-modal-content a.m-by:active{color:#3d3d3d}.m-modal .m-modal-content .w-500{font-weight:500}.m-modal.m-dark .m-modal-content{background-color:#20232a}.m-modal.m-dark .m-modal-content,.m-modal.m-dark .m-modal-content p,.m-modal.m-dark .m-modal-content p span,.m-modal.m-dark .m-modal-content strong{color:#fff}.m-modal.m-dark .m-modal-content a{color:#eaeaea}.m-modal.m-dark .m-modal-content a:not(.m-by):hover,.m-modal.m-dark .m-modal-content a:not(.m-by):focus,.m-modal.m-dark .m-modal-content a:not(.m-by):active{background-color:rgba(134,134,134,0.08);color:#eaeaea}.m-modal.m-dark .m-modal-content a.m-gmail{color:#e07d73}.m-modal.m-dark .m-modal-content a.m-gmail:hover,.m-modal.m-dark .m-modal-content a.m-gmail:focus,.m-modal.m-dark .m-modal-content a.m-gmail:active{background-color:rgba(212,70,56,0.08);color:#e07d73}.m-modal.m-dark .m-modal-content a.m-outlook{color:#4c9cd7}.m-modal.m-dark .m-modal-content a.m-outlook:hover,.m-modal.m-dark .m-modal-content a.m-outlook:focus,.m-modal.m-dark .m-modal-content a.m-outlook:active{background-color:rgba(0,114,198,0.08);color:#4c9cd7}.m-modal.m-dark .m-modal-content a.m-tg{color:#4cabdb}.m-modal.m-dark .m-modal-content a.m-tg:hover,.m-modal.m-dark .m-modal-content a.m-tg:focus,.m-modal.m-dark .m-modal-content a.m-tg:active{background-color:rgba(0,136,204,0.08);color:#4cabdb}.m-modal.m-dark .m-modal-content a.m-wa{color:#4cd2c0}.m-modal.m-dark .m-modal-content a.m-wa:hover,.m-modal.m-dark .m-modal-content a.m-wa:focus,.m-modal.m-dark .m-modal-content a.m-wa:active{background-color:rgba(0,191,165,0.08);color:#4cd2c0}.m-modal.m-dark .m-modal-content a.m-skype{color:#4cc7f4}.m-modal.m-dark .m-modal-content a.m-skype:hover,.m-modal.m-dark .m-modal-content a.m-skype:focus,.m-modal.m-dark .m-modal-content a.m-skype:active{background-color:rgba(0,175,240,0.08);color:#4cc7f4}.m-modal.m-dark .m-modal-content a.m-by:hover,.m-modal.m-dark .m-modal-content a.m-by:focus,.m-modal.m-dark .m-modal-content a.m-by:active{color:#fff}\n',""]),t.exports=o},function(t,e,a){"use strict";t.exports=function(t){var e=[];return e.toString=function(){return this.map((function(e){var a=function(t,e){var a=t[1]||"",o=t[3];if(!o)return a;if(e&&"function"==typeof btoa){var n=(l=o,m=btoa(unescape(encodeURIComponent(JSON.stringify(l)))),i="sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(m),"/*# ".concat(i," */")),d=o.sources.map((function(t){return"/*# sourceURL=".concat(o.sourceRoot||"").concat(t," */")}));return[a].concat(d).concat([n]).join("\n")}var l,m,i;return[a].join("\n")}(e,t);return e[2]?"@media ".concat(e[2]," {").concat(a,"}"):a})).join("")},e.i=function(t,a,o){"string"==typeof t&&(t=[[null,t,""]]);var n={};if(o)for(var d=0;d0&&void 0!==arguments[0]?arguments[0]:"mail",a=arguments.length>1?arguments[1]:void 0;if("mail"===e){var o,n;if(a.href&&a.href.toLowerCase().startsWith(N)){M=decodeURIComponent(a.href.split("?")[0].split(N)[1].trim());var d=new URL(a.href).searchParams;z=d.get("cc"),D=d.get("bcc"),W=d.get("subject"),H=d.get("body")}else M=a.getAttribute("data-address")+"@"+a.getAttribute("data-domain"),new URL(N+encodeURIComponent(M)),z=a.getAttribute("data-cc-address")+"@"+a.getAttribute("data-cc-domain"),D=a.getAttribute("data-bcc-address")+"@"+a.getAttribute("data-bcc-domain"),W=a.getAttribute("data-subject"),H=a.getAttribute("data-body");if(void 0===(null===(o=l)||void 0===o?void 0:o.validateEmail)||!0===(null===(n=l)||void 0===n?void 0:n.validateEmail)){if(!wt(M.split(",")))return;z&&!wt(z.split(","))&&(z=""),D&&!wt(D.split(","))&&(D="")}c.innerHTML=M.split(",").join("
"),z?(s.style.display="block",b.innerHTML=z.split(",").join("
")):s.style.display="none",D?(p.style.display="block",v.innerHTML=D.split(",").join("
")):p.style.display="none",W?(u.style.display="block",g.textContent=W):u.style.display="none",H?(f.style.display="block",h.textContent=H):f.style.display="none",k.addEventListener("click",$),w.addEventListener("click",F),T=rt(M),C.addEventListener("click",G),A.addEventListener("click",(function(){return tt(M)}))}else if("tel"===e){if(a.href&&a.href.toLowerCase().startsWith(R)?B=decodeURIComponent(a.href.split("?")[0].split(R)[1].trim()):a.href&&a.href.toLowerCase().startsWith(P)?B=decodeURIComponent(a.href.split("?")[0].split(P)[1].trim()):a.hasAttribute("data-tel")&&(B=a.getAttribute("data-tel"),a.getAttribute("data-msg")),!Ct(B))return;q=a.hasAttribute("data-telegram")?a.getAttribute("data-telegram"):null,a.hasAttribute("data-skype")&&(J=a.getAttribute("data-skype")),r.innerHTML=B,x.addEventListener("click",X),q?(document.getElementById("m-tg").style.display="block",L.addEventListener("click",Q)):document.getElementById("m-tg").style.display="none",_.addEventListener("click",V),j.addEventListener("click",Y),E.addEventListener("click",(function(){return tt(B)}))}(null===(t=l)||void 0===t?void 0:t.dark)||(a.classList.contains("dark")?gt(e):ht(e)),nt(e),document.addEventListener("keydown",ot)}var $=function(){var t="https://mail.google.com/mail/u/0/?view=cm&source=mailto&to="+encodeURIComponent(M);z&&(t=t.concat("&cc="+encodeURIComponent(z))),D&&(t=t.concat("&bcc="+encodeURIComponent(D))),W&&(t=t.concat("&subject="+W)),H&&(t=t.concat("&body="+H)),window.open(t,"_blank"),dt()},F=function(){var t="https://outlook.live.com/owa/?path=/mail/action/compose&to="+encodeURIComponent(M);W&&(t=t.concat("&subject="+W)),H&&(t=t.concat("&body="+H)),window.open(t,"_blank"),dt()},G=function(){ct(T),dt()},Q=function(){var t="https://t.me/"+q;window.open(t,"_blank"),dt()},V=function(){var t="skype:"+(""!==J?J:B);window.open(t,"_blank"),dt()},X=function(){var t="https://wa.me/"+B;window.open(t,"_blank"),dt()},Y=function(){var t="tel:"+B;window.open(t),dt()},tt=function(t){var e;Lt(t),(e=lt("mail")?A:E).textContent="copied",setTimeout((function(){e.textContent="copy",dt()}),999)};function et(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"mail",a=t.href;return"mail"===e?a&&a.toLowerCase().startsWith(N)&&!t.classList.contains("no-mailgo")||t.hasAttribute("data-address")&&(a&&"#mailgo"===t.getAttribute("href").toLowerCase()||t.classList&&t.classList.contains("mailgo")):"tel"===e&&(a&&(a.toLowerCase().startsWith(R)||a.toLowerCase().startsWith(P))&&!t.classList.contains("no-mailgo")||t.hasAttribute("data-tel")&&a&&"#mailgo"===t.getAttribute("href").toLowerCase()||t.classList&&t.classList.contains("mailgo"))}function at(t){if(!document.contains(m)||!document.contains(i))return!1;if(lt("mail")||lt("tel"))return!1;var e=t.composedPath&&t.composedPath()||yt(t.target);return e&&e.forEach((function(e){return!(e instanceof HTMLDocument||e instanceof Window)&&(et(e,"mail")?(t.preventDefault(),Z("mail",e),!0):et(e,"tel")?(t.preventDefault(),Z("tel",e),!0):void 0)})),!1}var ot=function(t){if(lt("mail"))switch(t.keyCode){case 27:dt();break;case 71:$();break;case 79:F();break;case 32:case 13:G();break;case 67:tt(M);break;default:return}else if(lt("tel"))switch(t.keyCode){case 27:dt();break;case 84:Q();break;case 87:X();break;case 32:case 13:Y();break;case 67:tt(B);break;default:return}},nt=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"mail";ut(t,"flex")},dt=function(){ut("mail","none"),ut("tel","none"),document.removeEventListener("keydown",ot)},lt=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"mail";return"flex"===pt(t)},mt=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"div";return document.createElement(t)},it=function(t){return document.createTextNode(t)},ct=function(t){return window.location.href=N+atob(t)},rt=function(t){return btoa(t)},st=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"mail";return"tel"===t?i:m},pt=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"mail";return st(t).style.display},ut=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"mail",e=arguments.length>1?arguments[1]:void 0,a=st(t);a.style.display=e,"flex"===e?(y=document.activeElement,a.setAttribute("aria-hidden","false"),a.setAttribute("tabindex","0"),a.focus(),ft(a)):(a.setAttribute("aria-hidden","true"),a.setAttribute("tabindex","-1"),y.focus())},ft=function(t){var e=t;e.querySelector(".m-modal-content a:last-of-type").addEventListener("keydown",bt),e.querySelector(".m-modal-content a:first-of-type").addEventListener("keydown",vt)},bt=function(t){"Tab"===t.code&&!1===t.shiftKey&&(t.preventDefault(),t.target.closest("div").querySelector("a:first-of-type").focus())},vt=function(t){"Tab"===t.code&&!0===t.shiftKey&&(t.preventDefault(),t.target.closest("div").querySelector("a:last-of-type").focus())},gt=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"mail";return st(t).classList.add("m-dark")},ht=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"mail";return st(t).classList.remove("m-dark")},yt=function(t){for(var e=[];t;){if(e.push(t),"HTML"===t.tagName)return e.push(document),e.push(window),e;t=t.parentElement}},kt=function(t){return/^(([^<>()[\]\\.,;:\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(t)},wt=function(t){return t.every(kt)},Ct=function(t){return/^[+]{0,1}[\s0-9]{0,}[(]{0,1}[0-9]{1,4}[)]{0,1}[-\s\./0-9]*$/.test(t)},Lt=function(t){var e=mt("textarea");e.value=t,e.setAttribute("readonly",""),e.style.position="absolute",e.style.left="-9999px",document.body.appendChild(e);var a=document.getSelection().rangeCount>0&&document.getSelection().getRangeAt(0);return e.select(),document.execCommand("copy"),document.body.removeChild(e),!!a&&(document.getSelection().removeAllRanges(),document.getSelection().addRange(a),!0)};var xt=function(t){var e,a,o,d;l=n(n({},t),(null===(e=window)||void 0===e?void 0:e.mailgoConfig)||null),window&&"undefined"!=typeof window&&((d=mt("style")).id="mailgo-style",d.type="text/css",d.appendChild(it(S)),document.head.appendChild(d),(null===(a=l)||void 0===a?void 0:a.initEvent)?(null===(o=l)||void 0===o?void 0:o.listenerOptions)?document.addEventListener(l.initEvent,(function(){K()}),l.listenerOptions):document.addEventListener(l.initEvent,(function(){K()})):K())};xt({initEvent:"DOMContentLoaded"})}]); \ No newline at end of file diff --git a/dist/mailgo.min.js.map b/dist/mailgo.min.js.map deleted file mode 100644 index 6c90300..0000000 --- a/dist/mailgo.min.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack://mailgo/webpack/bootstrap","webpack://mailgo/../src/mailgo.scss?16f9","webpack://mailgo/../src/mailgo.scss","webpack://mailgo/../node_modules/css-loader/dist/runtime/api.js","webpack://mailgo/../src/mailgo.ts","webpack://mailgo/./mailgo.dist.ts"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","result","toString","___CSS_LOADER_EXPORT___","___CSS_LOADER_API_IMPORT___","push","useSourceMap","list","this","map","item","content","cssMapping","btoa","sourceMapping","sourceMap","base64","unescape","encodeURIComponent","JSON","stringify","data","concat","sourceURLs","sources","source","sourceRoot","join","cssWithMappingToString","mediaQuery","dedupe","alreadyImportedModules","length","id","_i","config","modalMailto","modalTel","title","titleTel","detailCc","detailBcc","detailSubject","detailBody","ccValue","bccValue","subjectValue","bodyValue","activatedLink","gmail","outlook","open","telegram","wa","skype","copyMail","copyTel","i18n","require","mailgoCSS","MAILTO","TEL","CALLTO","DEFAULT_BTN_HREF","lang","mail","encEmail","cc","bcc","subject","bodyMail","tel","telegramUsername","skypeUsername","mailgoInit","translations","languages","indexOf","forceLang","htmlLang","document","documentElement","defaultStrings","strings","getElementById","createElement","style","display","classList","add","setAttribute","dark","enableDarkMode","disableDarkMode","modalBackground","className","appendChild","modalContent","details","ccSpan","createTextNode","cc_","bccSpan","bcc_","subjectSpan","subject_","bodySpan","body_","href","open_in_","gmailSpan","outlookSpan","openSpan","_default","copy","showFooter","byElement","body","addEventListener","hideMailgo","telegramSpan","waSpan","whatsapp","skypeSpan","callSpan","_as_default","mailgoCheckRender","mailgoRender","type","mailgoElement","toLowerCase","startsWith","decodeURIComponent","split","trim","urlParams","URL","searchParams","getAttribute","validateEmail","validateEmails","innerHTML","textContent","openGmail","openOutlook","encodeEmail","openDefault","hasAttribute","validateTel","openWhatsApp","openTelegram","openSkype","callDefault","contains","showMailgo","mailgoKeydown","gmailUrl","window","outlookUrl","mailToEncoded","tgUrl","skypeUrl","waUrl","callUrl","activeCopy","copyToClipboard","mailgoIsShowing","setTimeout","isMailgo","element","event","path","composedPath","target","forEach","HTMLDocument","Window","preventDefault","keyboardEvent","keyCode","setModalDisplay","removeEventListener","getModalDisplay","by","rel","encoded","location","atob","email","getModalHTMLElement","ref","modal","activeElement","focus","setFocusLoop","querySelector","leaveLastLink","leaveFirstLink","e","code","shiftKey","closest","remove","el","tagName","parentElement","test","arr","every","str","position","left","selected","getSelection","rangeCount","getRangeAt","select","execCommand","removeChild","removeAllRanges","addRange","mailgo","mailgoConfig","mailgoCSSElement","head","initEvent","listenerOptions"],"mappings":"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","file":"mailgo.min.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 4);\n","\n var result = require(\"!!../node_modules/css-loader/dist/cjs.js??ref--5-1!../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 ","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../node_modules/css-loader/dist/runtime/api.js\");\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(false);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".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:16.5px;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:#20232a;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.95;border-radius:20px;box-shadow:0 3px 20px rgba(32,35,42,0.5);color:#4a4a4a;display:flex;flex-direction:column;overflow:auto;padding:24px;transition:0.5s box-shadow}.m-modal .m-modal-content:hover,.m-modal .m-modal-content:focus,.m-modal .m-modal-content:active{opacity:1}.m-modal .m-modal-content .m-title{margin-bottom:8px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;line-height:1.2em}.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{cursor:pointer;padding:10px;color:#4a4a4a;border-radius:20px;text-decoration:none}.m-modal .m-modal-content a.m-gmail{color:#c0372a}.m-modal .m-modal-content a.m-gmail:hover,.m-modal .m-modal-content a.m-gmail:focus,.m-modal .m-modal-content a.m-gmail:active{background-color:rgba(212,70,56,0.08);color:#c0372a}.m-modal .m-modal-content a.m-outlook{color:#0967aa}.m-modal .m-modal-content a.m-outlook:hover,.m-modal .m-modal-content a.m-outlook:focus,.m-modal .m-modal-content a.m-outlook:active{background-color:rgba(0,114,198,0.08);color:#0967aa}.m-modal .m-modal-content a.m-tg{color:#086da0}.m-modal .m-modal-content a.m-tg:hover,.m-modal .m-modal-content a.m-tg:focus,.m-modal .m-modal-content a.m-tg:active{background-color:rgba(0,136,204,0.08);color:#086da0}.m-modal .m-modal-content a.m-wa{color:#067466}.m-modal .m-modal-content a.m-wa:hover,.m-modal .m-modal-content a.m-wa:focus,.m-modal .m-modal-content a.m-wa:active{background-color:rgba(0,191,165,0.08);color:#067466}.m-modal .m-modal-content a.m-skype{color:#076d92}.m-modal .m-modal-content a.m-skype:hover,.m-modal .m-modal-content a.m-skype:focus,.m-modal .m-modal-content a.m-skype:active{background-color:rgba(0,175,240,0.08);color:#076d92}.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-default:focus,.m-modal .m-modal-content a.m-default:active,.m-modal .m-modal-content a.m-copy:hover,.m-modal .m-modal-content a.m-copy:focus,.m-modal .m-modal-content a.m-copy:active{background-color:rgba(0,0,0,0.08);color:#4a4a4a}.m-modal .m-modal-content a.m-by{font-size:12px;margin-top:0.8rem;padding:5px;color:#4a4a4a}.m-modal .m-modal-content a.m-by:hover,.m-modal .m-modal-content a.m-by:focus,.m-modal .m-modal-content a.m-by:active{color:#3d3d3d}.m-modal .m-modal-content .w-500{font-weight:500}.m-modal.m-dark .m-modal-content{background-color:#20232a}.m-modal.m-dark .m-modal-content,.m-modal.m-dark .m-modal-content p,.m-modal.m-dark .m-modal-content p span,.m-modal.m-dark .m-modal-content strong{color:#fff}.m-modal.m-dark .m-modal-content a{color:#eaeaea}.m-modal.m-dark .m-modal-content a:not(.m-by):hover,.m-modal.m-dark .m-modal-content a:not(.m-by):focus,.m-modal.m-dark .m-modal-content a:not(.m-by):active{background-color:rgba(134,134,134,0.08);color:#eaeaea}.m-modal.m-dark .m-modal-content a.m-gmail{color:#e07d73}.m-modal.m-dark .m-modal-content a.m-gmail:hover,.m-modal.m-dark .m-modal-content a.m-gmail:focus,.m-modal.m-dark .m-modal-content a.m-gmail:active{background-color:rgba(212,70,56,0.08);color:#e07d73}.m-modal.m-dark .m-modal-content a.m-outlook{color:#4c9cd7}.m-modal.m-dark .m-modal-content a.m-outlook:hover,.m-modal.m-dark .m-modal-content a.m-outlook:focus,.m-modal.m-dark .m-modal-content a.m-outlook:active{background-color:rgba(0,114,198,0.08);color:#4c9cd7}.m-modal.m-dark .m-modal-content a.m-tg{color:#4cabdb}.m-modal.m-dark .m-modal-content a.m-tg:hover,.m-modal.m-dark .m-modal-content a.m-tg:focus,.m-modal.m-dark .m-modal-content a.m-tg:active{background-color:rgba(0,136,204,0.08);color:#4cabdb}.m-modal.m-dark .m-modal-content a.m-wa{color:#4cd2c0}.m-modal.m-dark .m-modal-content a.m-wa:hover,.m-modal.m-dark .m-modal-content a.m-wa:focus,.m-modal.m-dark .m-modal-content a.m-wa:active{background-color:rgba(0,191,165,0.08);color:#4cd2c0}.m-modal.m-dark .m-modal-content a.m-skype{color:#4cc7f4}.m-modal.m-dark .m-modal-content a.m-skype:hover,.m-modal.m-dark .m-modal-content a.m-skype:focus,.m-modal.m-dark .m-modal-content a.m-skype:active{background-color:rgba(0,175,240,0.08);color:#4cc7f4}.m-modal.m-dark .m-modal-content a.m-by:hover,.m-modal.m-dark .m-modal-content a.m-by:focus,.m-modal.m-dark .m-modal-content a.m-by:active{color:#fff}\\n\", \"\"]);\n// Exports\nmodule.exports = ___CSS_LOADER_EXPORT___;\n","\"use strict\";\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}","import {\n MailgoConfig,\n MailgoTranslations,\n MailgoTranslation,\n MailgoI18n,\n} from \"mailgo\";\n\n// i18n for mailgo\nconst i18n: MailgoI18n = require(\"../i18n/i18n.json\");\n\n// mailgo scss\nconst mailgoCSS: string = require(\"./mailgo.scss\").toString();\n\n// default lang\nconst DEFAULT_LANG: string = \"en\";\n\n// links\nconst MAILTO: string = \"mailto:\";\nconst TEL: string = \"tel:\";\nconst CALLTO: string = \"callto:\";\n\n// deep linking\nconst outlookDeepLink: string = \"ms-outlook://\";\n\n// mailgo types\nconst MAIL_TYPE: string = \"mail\";\nconst TEL_TYPE: string = \"tel\";\n\n// default href for links\nconst DEFAULT_BTN_HREF: string = \"javascript:void(0);\";\n\n// useful html tags\nconst spanHTMLTag: string = \"span\";\nconst aHTMLTag: string = \"a\";\nconst pHTMLTag: string = \"p\";\n\n// global mailgo config object\nlet config: MailgoConfig;\n\n// default language\nlet lang: string = DEFAULT_LANG;\n\n// modals global object\nlet modalMailto: HTMLElement, modalTel: HTMLElement;\n\n// mailgo variables\nlet url: URL,\n mail: string = \"\",\n encEmail: string = \"\",\n cc: string = \"\",\n bcc: string = \"\",\n subject: string = \"\",\n bodyMail: string = \"\";\n\n// mailgo tel variables\nlet tel: string = \"\",\n msg: string = \"\",\n telegramUsername: string = \"\",\n skypeUsername: string = \"\";\n\n// the DOM elements\nlet title: HTMLElement,\n titleTel: HTMLElement,\n detailCc: HTMLElement,\n detailBcc: HTMLElement,\n detailSubject: HTMLElement,\n detailBody: HTMLElement,\n ccValue: HTMLElement,\n bccValue: HTMLElement,\n subjectValue: HTMLElement,\n bodyValue: HTMLElement,\n activatedLink: HTMLElement;\n\n// mailgo buttons (actions)\nlet gmail: HTMLLinkElement,\n outlook: HTMLLinkElement,\n open: HTMLLinkElement,\n telegram: HTMLLinkElement,\n wa: HTMLLinkElement,\n skype: HTMLLinkElement,\n call: HTMLLinkElement,\n copyMail: HTMLLinkElement,\n copyTel: HTMLLinkElement;\n\n/**\n * mailgoInit\n * the function that creates the mailgo elements in DOM\n */\nconst mailgoInit = (): void => {\n // translations\n let {\n translations,\n }: { translations: MailgoTranslations } = i18n as MailgoI18n;\n\n // if a default language is defined use it\n if (config?.lang && i18n.languages.indexOf(config.lang) !== -1) {\n lang = config.lang;\n }\n\n // if is defined use it!\n if (!config?.forceLang) {\n // keep the lang from html\n let htmlLang: string = document.documentElement.lang;\n\n // if there are translations...\n if (i18n.languages.indexOf(htmlLang) !== -1) {\n lang = document.documentElement.lang;\n }\n }\n\n // strings\n let defaultStrings: MailgoTranslation = translations[DEFAULT_LANG];\n let strings: MailgoTranslation = translations[lang];\n\n // mailgo, if mailgo not already exists\n let mailgoExists = !!document.getElementById(\"mailgo\");\n\n if (!mailgoExists) {\n // modal\n modalMailto = createElement() as HTMLElement;\n modalMailto.style.display = \"none\";\n modalMailto.id = \"mailgo\";\n modalMailto.classList.add(\"m-modal\");\n modalMailto.setAttribute(\"role\", \"dialog\");\n modalMailto.setAttribute(\"tabindex\", \"-1\");\n modalMailto.setAttribute(\"aria-labelledby\", \"m-title\");\n\n // if dark is in config\n if (config?.dark) {\n enableDarkMode(MAIL_TYPE);\n } else {\n disableDarkMode(MAIL_TYPE);\n }\n\n // background\n let modalBackground: HTMLElement = createElement();\n modalBackground.className = \"m-modal-back\";\n modalMailto.appendChild(modalBackground);\n\n // modal content\n let modalContent: HTMLElement = createElement();\n modalContent.className = \"m-modal-content\";\n modalMailto.appendChild(modalContent);\n\n // title (email address)\n title = createElement(\"strong\");\n title.id = \"m-title\";\n title.className = \"m-title\";\n modalContent.appendChild(title);\n\n // details\n let details: HTMLElement = createElement();\n details.id = \"m-details\";\n details.className = \"m-details\";\n\n detailCc = createElement(pHTMLTag);\n detailCc.id = \"m-cc\";\n let ccSpan: HTMLElement = createElement(spanHTMLTag);\n ccSpan.className = \"w-500\";\n ccSpan.appendChild(createTextNode(strings.cc_ || defaultStrings.cc_));\n ccValue = createElement(spanHTMLTag);\n ccValue.id = \"m-cc-value\";\n detailCc.appendChild(ccSpan);\n detailCc.appendChild(ccValue);\n details.appendChild(detailCc);\n\n detailBcc = createElement(pHTMLTag);\n detailBcc.id = \"m-bcc\";\n let bccSpan: HTMLElement = createElement(spanHTMLTag);\n bccSpan.className = \"w-500\";\n bccSpan.appendChild(createTextNode(strings.bcc_ || defaultStrings.bcc_));\n bccValue = createElement(spanHTMLTag);\n bccValue.id = \"m-bcc-value\";\n detailBcc.appendChild(bccSpan);\n detailBcc.appendChild(bccValue);\n details.appendChild(detailBcc);\n\n detailSubject = createElement(pHTMLTag);\n detailSubject.id = \"m-subject\";\n let subjectSpan: HTMLElement = createElement(spanHTMLTag);\n subjectSpan.className = \"w-500\";\n subjectSpan.appendChild(\n createTextNode(strings.subject_ || defaultStrings.subject_)\n );\n subjectValue = createElement(spanHTMLTag);\n subjectValue.id = \"m-subject-value\";\n detailSubject.appendChild(subjectSpan);\n detailSubject.appendChild(subjectValue);\n details.appendChild(detailSubject);\n\n detailBody = createElement(pHTMLTag);\n detailBody.id = \"m-body\";\n let bodySpan: HTMLElement = createElement(spanHTMLTag);\n bodySpan.className = \"w-500\";\n bodySpan.appendChild(createTextNode(strings.body_ || defaultStrings.body_));\n bodyValue = createElement(spanHTMLTag);\n bodyValue.id = \"m-body-value\";\n detailBody.appendChild(bodySpan);\n detailBody.appendChild(bodyValue);\n details.appendChild(detailBody);\n\n modalContent.appendChild(details);\n\n // Gmail\n gmail = createElement(aHTMLTag) as HTMLLinkElement;\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(\n createTextNode(strings.open_in_ || defaultStrings.open_in_)\n );\n let gmailSpan: HTMLElement = createElement(spanHTMLTag);\n gmailSpan.className = \"w-500\";\n gmailSpan.appendChild(\n createTextNode(strings.gmail || defaultStrings.gmail)\n );\n gmail.appendChild(gmailSpan);\n\n modalContent.appendChild(gmail);\n\n // Outlook\n outlook = createElement(aHTMLTag) as HTMLLinkElement;\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(\n createTextNode(strings.open_in_ || defaultStrings.open_in_)\n );\n let outlookSpan: HTMLElement = createElement(spanHTMLTag);\n outlookSpan.className = \"w-500\";\n outlookSpan.appendChild(\n createTextNode(strings.outlook || defaultStrings.outlook)\n );\n outlook.appendChild(outlookSpan);\n\n modalContent.appendChild(outlook);\n\n // open default\n open = createElement(aHTMLTag) as HTMLLinkElement;\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: HTMLElement = createElement(spanHTMLTag);\n openSpan.className = \"w-500\";\n openSpan.appendChild(createTextNode(strings.open || defaultStrings.open));\n open.appendChild(openSpan);\n open.appendChild(\n createTextNode(strings._default || defaultStrings._default)\n );\n\n modalContent.appendChild(open);\n\n // copy\n copyMail = createElement(aHTMLTag) as HTMLLinkElement;\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(strings.copy || defaultStrings.copy));\n\n modalContent.appendChild(copyMail);\n\n // hide mailgo.dev in footer only if showFooter is defined and equal to false\n if (\n typeof config?.showFooter === \"undefined\" ||\n config?.showFooter !== false\n ) {\n modalContent.appendChild(byElement());\n }\n\n // add the modal at the end of the body\n document.body.appendChild(modalMailto);\n\n // every click outside the modal will hide the modal\n modalBackground.addEventListener(\"click\", hideMailgo);\n }\n\n // mailgo tel, if mailgo-tel not already exists\n let mailgoTelExists = !!document.getElementById(\"mailgo-tel\");\n\n if (!mailgoTelExists) {\n // modal\n modalTel = createElement() as HTMLElement;\n modalTel.style.display = \"none\";\n modalTel.id = \"mailgo-tel\";\n modalTel.classList.add(\"m-modal\");\n modalTel.setAttribute(\"role\", \"dialog\");\n modalTel.setAttribute(\"tabindex\", \"-1\");\n modalTel.setAttribute(\"aria-labelledby\", \"m-tel-title\");\n\n // if dark is in config\n if (config?.dark) {\n enableDarkMode(TEL_TYPE);\n } else {\n disableDarkMode(TEL_TYPE);\n }\n\n // background\n let modalBackground: HTMLElement = createElement();\n modalBackground.className = \"m-modal-back\";\n modalTel.appendChild(modalBackground);\n\n // modal content\n let modalContent: HTMLElement = createElement();\n modalContent.className = \"m-modal-content\";\n modalTel.appendChild(modalContent);\n\n // title (telephone number)\n titleTel = createElement(\"strong\");\n titleTel.id = \"m-tel-title\";\n titleTel.className = \"m-title\";\n modalContent.appendChild(titleTel);\n\n // Telegram\n telegram = createElement(aHTMLTag) as HTMLLinkElement;\n telegram.id = \"m-tg\";\n telegram.href = DEFAULT_BTN_HREF;\n telegram.classList.add(\"m-open\");\n telegram.classList.add(\"m-tg\");\n\n // by default not display\n telegram.style.display = \"none\";\n\n telegram.appendChild(\n createTextNode(strings.open_in_ || defaultStrings.open_in_)\n );\n let telegramSpan: HTMLElement = createElement(spanHTMLTag);\n telegramSpan.className = \"w-500\";\n telegramSpan.appendChild(\n createTextNode(strings.telegram || defaultStrings.telegram)\n );\n telegram.appendChild(telegramSpan);\n\n modalContent.appendChild(telegram);\n\n // WhatsApp\n wa = createElement(aHTMLTag) as HTMLLinkElement;\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_ || defaultStrings.open_in_));\n let waSpan: HTMLElement = createElement(spanHTMLTag);\n waSpan.className = \"w-500\";\n waSpan.appendChild(\n createTextNode(strings.whatsapp || defaultStrings.whatsapp)\n );\n wa.appendChild(waSpan);\n\n modalContent.appendChild(wa);\n\n // Skype\n skype = createElement(aHTMLTag) as HTMLLinkElement;\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(\n createTextNode(strings.open_in_ || defaultStrings.open_in_)\n );\n let skypeSpan: HTMLElement = createElement(spanHTMLTag);\n skypeSpan.className = \"w-500\";\n skypeSpan.appendChild(\n createTextNode(strings.skype || defaultStrings.skype)\n );\n skype.appendChild(skypeSpan);\n\n modalContent.appendChild(skype);\n\n // call default\n call = createElement(aHTMLTag) as HTMLLinkElement;\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: HTMLElement = createElement(spanHTMLTag);\n callSpan.className = \"w-500\";\n callSpan.appendChild(createTextNode(strings.call || defaultStrings.call));\n call.appendChild(callSpan);\n call.appendChild(\n createTextNode(strings._as_default || defaultStrings._as_default)\n );\n\n modalContent.appendChild(call);\n\n // copy\n copyTel = createElement(aHTMLTag) as HTMLLinkElement;\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(strings.copy || defaultStrings.copy));\n\n modalContent.appendChild(copyTel);\n\n // hide mailgo.dev in footer only if showFooter is defined and equal to false\n if (\n typeof config?.showFooter === \"undefined\" ||\n config?.showFooter !== false\n ) {\n modalContent.appendChild(byElement());\n }\n\n // add the modal at the end of the body\n document.body.appendChild(modalTel);\n\n // every click outside the modal will hide the modal\n modalBackground.addEventListener(\"click\", hideMailgo);\n }\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/**\n * mailgoRender\n * function to render a mailgo (mail or tel)\n */\nexport function mailgoRender(\n type: string = MAIL_TYPE,\n mailgoElement: HTMLLinkElement\n): void {\n // mailgo mail\n if (type === MAIL_TYPE) {\n // if the element href=^\"mailto:\"\n if (\n mailgoElement.href &&\n mailgoElement.href.toLowerCase().startsWith(MAILTO)\n ) {\n mail = decodeURIComponent(\n mailgoElement.href.split(\"?\")[0].split(MAILTO)[1].trim()\n );\n\n url = new URL(mailgoElement.href);\n let urlParams: URLSearchParams = url.searchParams;\n\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 } else {\n // if the element href=\"#mailgo\" or class=\"mailgo\"\n // mail = data-address + @ + data-domain\n mail =\n mailgoElement.getAttribute(\"data-address\") +\n \"@\" +\n mailgoElement.getAttribute(\"data-domain\");\n\n url = new URL(MAILTO + encodeURIComponent(mail));\n\n // cc = data-cc-address + @ + data-cc-domain\n cc =\n mailgoElement.getAttribute(\"data-cc-address\") +\n \"@\" +\n mailgoElement.getAttribute(\"data-cc-domain\");\n\n // bcc = data-bcc-address + @ + data-bcc-domain\n bcc =\n mailgoElement.getAttribute(\"data-bcc-address\") +\n \"@\" +\n mailgoElement.getAttribute(\"data-bcc-domain\");\n\n // subject = data-subject\n subject = mailgoElement.getAttribute(\"data-subject\");\n\n // body = data-body\n bodyMail = mailgoElement.getAttribute(\"data-body\");\n }\n\n if (\n typeof config?.validateEmail === \"undefined\" ||\n config?.validateEmail === true\n ) {\n // validate the email address\n if (!validateEmails(mail.split(\",\"))) return;\n\n // if cc, bcc are not valid cc, bcc = \"\"\n if (cc && !validateEmails(cc.split(\",\"))) cc = \"\";\n if (bcc && !validateEmails(bcc.split(\",\"))) bcc = \"\";\n }\n\n // the title of the modal (email address)\n title.innerHTML = mail.split(\",\").join(\"
\");\n\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\n bcc\n ? ((detailBcc.style.display = \"block\"),\n (bccValue.innerHTML = bcc.split(\",\").join(\"
\")))\n : (detailBcc.style.display = \"none\");\n\n subject\n ? ((detailSubject.style.display = \"block\"),\n (subjectValue.textContent = subject))\n : (detailSubject.style.display = \"none\");\n\n bodyMail\n ? ((detailBody.style.display = \"block\"),\n (bodyValue.textContent = bodyMail))\n : (detailBody.style.display = \"none\");\n\n // add the actions\n gmail.addEventListener(\"click\", openGmail);\n\n outlook.addEventListener(\"click\", openOutlook);\n\n encEmail = encodeEmail(mail);\n open.addEventListener(\"click\", openDefault);\n\n copyMail.addEventListener(\"click\", () => copy(mail));\n }\n // mailgo tel\n else if (type === TEL_TYPE) {\n if (\n mailgoElement.href &&\n mailgoElement.href.toLowerCase().startsWith(TEL)\n ) {\n tel = decodeURIComponent(\n mailgoElement.href.split(\"?\")[0].split(TEL)[1].trim()\n );\n } else if (\n mailgoElement.href &&\n mailgoElement.href.toLowerCase().startsWith(CALLTO)\n ) {\n tel = decodeURIComponent(\n mailgoElement.href.split(\"?\")[0].split(CALLTO)[1].trim()\n );\n } else if (mailgoElement.hasAttribute(\"data-tel\")) {\n tel = mailgoElement.getAttribute(\"data-tel\");\n msg = mailgoElement.getAttribute(\"data-msg\");\n }\n\n // validate the phone number\n if (!validateTel(tel)) return;\n\n // Telegram username\n if (mailgoElement.hasAttribute(\"data-telegram\")) {\n telegramUsername = mailgoElement.getAttribute(\"data-telegram\");\n } else {\n telegramUsername = null;\n }\n\n // Telegram username\n if (mailgoElement.hasAttribute(\"data-skype\")) {\n skypeUsername = mailgoElement.getAttribute(\"data-skype\");\n }\n\n // the title of the modal (tel)\n titleTel.innerHTML = tel;\n\n // add the actions to buttons\n wa.addEventListener(\"click\", openWhatsApp);\n\n // telegram must be shown only if data-telegram is provided\n if (telegramUsername) {\n document.getElementById(\"m-tg\").style.display = \"block\";\n telegram.addEventListener(\"click\", openTelegram);\n } else {\n document.getElementById(\"m-tg\").style.display = \"none\";\n }\n\n skype.addEventListener(\"click\", openSkype);\n\n call.addEventListener(\"click\", callDefault);\n\n copyTel.addEventListener(\"click\", () => copy(tel));\n }\n\n // if config.dark is set to true then all the modals will be in dark mode\n if (!config?.dark) {\n // if the element contains dark as class enable dark mode\n if (mailgoElement.classList.contains(\"dark\")) {\n enableDarkMode(type);\n } else {\n disableDarkMode(type);\n }\n }\n\n // show the mailgo\n showMailgo(type);\n\n // add listener keyDown\n document.addEventListener(\"keydown\", mailgoKeydown);\n}\n\n// actions\nconst openGmail = (): void => {\n // Gmail url\n let gmailUrl: string =\n \"https://mail.google.com/mail/u/0/?view=cm&source=mailto&to=\" +\n encodeURIComponent(mail);\n\n // the details if provided\n if (cc) gmailUrl = gmailUrl.concat(\"&cc=\" + encodeURIComponent(cc));\n if (bcc) gmailUrl = gmailUrl.concat(\"&bcc=\" + encodeURIComponent(bcc));\n if (subject) gmailUrl = gmailUrl.concat(\"&subject=\" + subject);\n if (bodyMail) gmailUrl = gmailUrl.concat(\"&body=\" + bodyMail);\n\n // open the link\n window.open(gmailUrl, \"_blank\");\n\n // hide the modal\n hideMailgo();\n};\n\nconst openOutlook = (): void => {\n // Outlook url\n let outlookUrl: string =\n \"https://outlook.live.com/owa/?path=/mail/action/compose&to=\" +\n encodeURIComponent(mail);\n\n // the details if provided\n if (subject) outlookUrl = outlookUrl.concat(\"&subject=\" + subject);\n if (bodyMail) outlookUrl = outlookUrl.concat(\"&body=\" + bodyMail);\n\n // open the link\n window.open(outlookUrl, \"_blank\");\n\n // hide the modal\n hideMailgo();\n};\n\nconst openDefault = (): void => {\n mailToEncoded(encEmail);\n hideMailgo();\n};\n\nconst openTelegram = (): void => {\n // Telegram url\n let tgUrl: string = \"https://t.me/\" + telegramUsername;\n\n // open the url\n window.open(tgUrl, \"_blank\");\n\n // hide the modal\n hideMailgo();\n};\n\nconst openSkype = (): void => {\n let skype: string = skypeUsername !== \"\" ? skypeUsername : tel;\n\n // Telegram url\n let skypeUrl: string = \"skype:\" + skype;\n\n // open the url\n window.open(skypeUrl, \"_blank\");\n\n // hide the modal\n hideMailgo();\n};\n\nconst openWhatsApp = (): void => {\n // WhatsApp url\n let waUrl: string = \"https://wa.me/\" + tel;\n\n // the details if provided\n if (msg) waUrl + \"?text=\" + msg;\n\n // open the url\n window.open(waUrl, \"_blank\");\n\n // hide the modal\n hideMailgo();\n};\n\nconst callDefault = () => {\n let callUrl: string = \"tel:\" + tel;\n window.open(callUrl);\n hideMailgo();\n};\n\nconst copy = (content: string): void => {\n copyToClipboard(content);\n let activeCopy: HTMLElement;\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\n// function that returns if an element is a mailgo\nexport function isMailgo(\n element: HTMLElement,\n type: string = MAIL_TYPE\n): boolean {\n let href: string = (element as HTMLLinkElement).href;\n\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 }\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 }\n\n return false;\n}\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 */\nexport function mailgoCheckRender(event: Event): boolean {\n // check if the id=mailgo exists in the body\n if (!document.contains(modalMailto) || !document.contains(modalTel))\n return false;\n\n // if a mailgo is already showing do nothing\n if (mailgoIsShowing(MAIL_TYPE) || mailgoIsShowing(TEL_TYPE)) return false;\n\n // the path of the event\n let path =\n (event.composedPath && event.composedPath()) ||\n composedPath(event.target as HTMLElement);\n\n if (path) {\n path.forEach((element: HTMLElement) => {\n if (element instanceof HTMLDocument || element instanceof Window)\n return false;\n\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\n // render mailgo\n mailgoRender(MAIL_TYPE, element as HTMLLinkElement);\n\n return true;\n }\n if (isMailgo(element, TEL_TYPE)) {\n // stop the normal execution of the element click\n event.preventDefault();\n\n // render mailgo\n mailgoRender(TEL_TYPE, element as HTMLLinkElement);\n\n return true;\n }\n });\n }\n\n return false;\n}\n\n/**\n * mailgoKeydown\n * function to manage the keydown event when the modal is showing\n */\nconst mailgoKeydown = (keyboardEvent: KeyboardEvent): void => {\n // if mailgo is showing\n if (mailgoIsShowing(MAIL_TYPE)) {\n switch (keyboardEvent.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 } else if (mailgoIsShowing(TEL_TYPE)) {\n switch (keyboardEvent.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\n// show the modal\nconst showMailgo = (type = MAIL_TYPE): void => {\n // show the correct modal\n setModalDisplay(type, \"flex\");\n};\n\n// hide the modal\nconst hideMailgo = (): void => {\n // hide all the modals\n setModalDisplay(MAIL_TYPE, \"none\");\n setModalDisplay(TEL_TYPE, \"none\");\n\n // remove listener keyDown\n document.removeEventListener(\"keydown\", mailgoKeydown);\n};\n\n// is the mailgo modal hidden?\nconst mailgoIsShowing = (type = MAIL_TYPE): boolean => {\n return getModalDisplay(type) === \"flex\";\n};\n\nconst byElement = (): HTMLLinkElement => {\n // by\n let by: HTMLLinkElement = createElement(aHTMLTag) as HTMLLinkElement;\n by.href = \"https://mailgo.dev?ref=mailgo-modal\";\n by.className = \"m-by\";\n by.target = \"_blank\";\n by.rel = \"noopener noreferrer\";\n by.appendChild(createTextNode(\"mailgo.dev\"));\n\n return by;\n};\n\n// create element\nconst createElement = (element: string = \"div\"): HTMLElement =>\n document.createElement(element);\n\n// create text node\nconst createTextNode = (element: string): Text =>\n document.createTextNode(element);\n\n// decrypt email\nconst mailToEncoded = (encoded: string): string =>\n (window.location.href = MAILTO + atob(encoded));\n\n// encode email\nconst encodeEmail = (email: string): string => btoa(email);\n\n// get the correct HTMLElement from a type\nconst getModalHTMLElement = (type: string = MAIL_TYPE) =>\n type === TEL_TYPE ? modalTel : modalMailto;\n\n// get display value\nconst getModalDisplay = (ref: string = MAIL_TYPE): string =>\n getModalHTMLElement(ref).style.display;\n\n// set display value\nconst setModalDisplay = (ref: string = MAIL_TYPE, value: string): void => {\n let modal = getModalHTMLElement(ref);\n modal.style.display = value;\n\n if (value === \"flex\") {\n // \"save\" the activated link.\n activatedLink = document.activeElement as HTMLElement;\n modal.setAttribute(\"aria-hidden\", \"false\");\n\n // Focus on the modal container.\n modal.setAttribute(\"tabindex\", \"0\");\n modal.focus();\n setFocusLoop(modal);\n } else {\n modal.setAttribute(\"aria-hidden\", \"true\");\n\n // focus back the activated link for getting back to the context.\n modal.setAttribute(\"tabindex\", \"-1\");\n activatedLink.focus();\n }\n};\n\n// set focus loop within modal\nconst setFocusLoop = (ref: HTMLElement): void => {\n let modal = ref;\n modal\n .querySelector(\".m-modal-content a:last-of-type\")\n .addEventListener(\"keydown\", leaveLastLink);\n modal\n .querySelector(\".m-modal-content a:first-of-type\")\n .addEventListener(\"keydown\", leaveFirstLink);\n};\n\nconst leaveLastLink = (e: KeyboardEvent): void => {\n // going back to the first link to force looping\n if (e.code === \"Tab\" && e.shiftKey === false) {\n e.preventDefault();\n\n ((e.target as HTMLElement)\n .closest(\"div\")\n .querySelector(\"a:first-of-type\") as HTMLElement).focus();\n }\n};\n\nconst leaveFirstLink = (e: KeyboardEvent): void => {\n // going back to the first link to force looping\n if (e.code === \"Tab\" && e.shiftKey === true) {\n e.preventDefault();\n ((e.target as HTMLElement)\n .closest(\"div\")\n .querySelector(\"a:last-of-type\") as HTMLElement).focus();\n }\n};\n\n// enable dark mode\nconst enableDarkMode = (type: string = MAIL_TYPE) =>\n getModalHTMLElement(type).classList.add(\"m-dark\");\n\n// disable dark mode\nconst disableDarkMode = (type: string = MAIL_TYPE) =>\n getModalHTMLElement(type).classList.remove(\"m-dark\");\n\n// custom composedPath if path or event.composedPath() are not defined\nconst composedPath = (\n el: HTMLElement\n): (HTMLElement | Document | (Window & typeof globalThis))[] => {\n let path = [];\n\n while (el) {\n path.push(el);\n\n if (el.tagName === \"HTML\") {\n path.push(document);\n path.push(window);\n return path;\n }\n\n el = el.parentElement;\n }\n};\n\n// validate a single email with regex\nconst validateEmail = (email: string): boolean =>\n /^(([^<>()[\\]\\\\.,;:\\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(\n email\n );\n\n// validate an array of emails\nconst validateEmails = (arr: string[]): boolean => arr.every(validateEmail);\n\n// validate a single tel with regex\nconst validateTel = (tel: string): boolean =>\n /^[+]{0,1}[\\s0-9]{0,}[(]{0,1}[0-9]{1,4}[)]{0,1}[-\\s\\./0-9]*$/.test(tel);\n\n// copy of a string\nconst copyToClipboard = (str: string): boolean => {\n let el: HTMLInputElement = createElement(\"textarea\") as HTMLInputElement;\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: Range | boolean =\n 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};\n\nconst mailgoStyle = (): void => {\n // mailgo style\n let mailgoCSSElement: HTMLStyleElement = createElement(\n \"style\"\n ) as HTMLStyleElement;\n mailgoCSSElement.id = \"mailgo-style\";\n mailgoCSSElement.type = \"text/css\";\n mailgoCSSElement.appendChild(createTextNode(mailgoCSS));\n document.head.appendChild(mailgoCSSElement);\n};\n\n// mailgo\nfunction mailgo(mailgoConfig?: MailgoConfig): void {\n // set the global config merging window mailgConfig and mailgoConfig passed as a parameter\n config = { ...mailgoConfig, ...((window as any)?.mailgoConfig || null) };\n\n // if the window is defined...\n if (window && typeof window !== \"undefined\") {\n // add the style for mailgo\n mailgoStyle();\n\n // if is set an initEvent add the listener\n if (config?.initEvent) {\n if (config?.listenerOptions) {\n // listener options specified\n document.addEventListener(\n config.initEvent,\n () => {\n mailgoInit();\n },\n config.listenerOptions\n );\n } else {\n // no listener options\n document.addEventListener(config.initEvent, () => {\n mailgoInit();\n });\n }\n } else {\n mailgoInit();\n }\n }\n}\n\nexport default mailgo;\n","// webpack > dist/mailgo.min.js\n\nimport mailgo from \"../src/mailgo\";\n\n// call init mailgo attached to the event DOMContentLoaded\nconst mailgoConfig = {\n initEvent: \"DOMContentLoaded\",\n};\n\nmailgo(mailgoConfig);\n"],"sourceRoot":""} \ No newline at end of file diff --git a/examples/README.md b/examples/README.md deleted file mode 100644 index 8c04b69..0000000 --- a/examples/README.md +++ /dev/null @@ -1,19 +0,0 @@ -# 💌 Mailgo examples - -Mailgo example to test functionalities, design... - -## `index.html` - -Simple examples of mailgo - -## `index.[language].html` - -Simple examples of mailgo in different languages - -## `index.dark.html` - -Simple examples of mailgo to test dark mode - -## `index.windowconfig.html` - -Simple examples of mailgo with `window.mailgoConfig` diff --git a/examples/index.dark.html b/examples/index.dark.html deleted file mode 100644 index 78e2a99..0000000 --- a/examples/index.dark.html +++ /dev/null @@ -1,52 +0,0 @@ - - - - - mailgo dark examples - - -

mailto:

- -
matteo@manzinello.dev -
-

matteo@manzinello.dev

-
- matteo@manzinello.dev -
- ciao -
- scrivimi! -
- scrivimi! - - more cc -
- matteo@manzinello.dev - -

tel:

- chiamami -
- skype -
- callto - - - - diff --git a/examples/index.de.html b/examples/index.de.html deleted file mode 100644 index 52a60fa..0000000 --- a/examples/index.de.html +++ /dev/null @@ -1,75 +0,0 @@ - - - - - mailgo examples - - -

mailto:

- - matteo@manzinello.dev -
-

matteo@manzinello.dev

-
- matteo@manzinello.dev -
- ciao -
- scrivimi! -
- scrivimi! - - more cc -
- matteo@manzinello.dev -
-
-

Dark mode

- matteo@manzinello.dev dark mode -
- matteo@manzinello.dev dark mode - -

tel:

- chiamami -
- skype -
- callto - -
-
-

Dark mode

- - callto dark mode - -
- chiamami dark mode - - - - diff --git a/examples/index.es.html b/examples/index.es.html deleted file mode 100644 index f2fde55..0000000 --- a/examples/index.es.html +++ /dev/null @@ -1,75 +0,0 @@ - - - - - mailgo examples - - -

mailto:

- - matteo@manzinello.dev -
-

matteo@manzinello.dev

-
- matteo@manzinello.dev -
- ciao -
- scrivimi! -
- scrivimi! - - more cc -
- matteo@manzinello.dev -
-
-

Dark mode

- matteo@manzinello.dev dark mode -
- matteo@manzinello.dev dark mode - -

tel:

- chiamami -
- skype -
- callto - -
-
-

Dark mode

- - callto dark mode - -
- chiamami dark mode - - - - diff --git a/examples/index.fr.html b/examples/index.fr.html deleted file mode 100644 index 25e28ff..0000000 --- a/examples/index.fr.html +++ /dev/null @@ -1,75 +0,0 @@ - - - - - mailgo examples - - -

mailto:

- - matteo@manzinello.dev -
-

matteo@manzinello.dev

-
- matteo@manzinello.dev -
- ciao -
- scrivimi! -
- scrivimi! - - more cc -
- matteo@manzinello.dev -
-
-

Dark mode

- matteo@manzinello.dev dark mode -
- matteo@manzinello.dev dark mode - -

tel:

- chiamami -
- skype -
- callto - -
-
-

Dark mode

- - callto dark mode - -
- chiamami dark mode - - - - diff --git a/examples/index.html b/examples/index.html deleted file mode 100644 index cf636ed..0000000 --- a/examples/index.html +++ /dev/null @@ -1,75 +0,0 @@ - - - - - mailgo examples - - -

mailto:

- - matteo@manzinello.dev -
-

matteo@manzinello.dev

-
- matteo@manzinello.dev -
- ciao -
- scrivimi! -
- scrivimi! - - more cc -
- matteo@manzinello.dev -
-
-

Dark mode

- matteo@manzinello.dev dark mode -
- matteo@manzinello.dev dark mode - -

tel:

- chiamami -
- skype -
- callto - -
-
-

Dark mode

- - callto dark mode - -
- chiamami dark mode - - - - diff --git a/examples/index.it.html b/examples/index.it.html deleted file mode 100644 index a130831..0000000 --- a/examples/index.it.html +++ /dev/null @@ -1,75 +0,0 @@ - - - - - mailgo examples - - -

mailto:

- - matteo@manzinello.dev -
-

matteo@manzinello.dev

-
- matteo@manzinello.dev -
- ciao -
- scrivimi! -
- scrivimi! - - more cc -
- matteo@manzinello.dev -
-
-

Dark mode

- matteo@manzinello.dev dark mode -
- matteo@manzinello.dev dark mode - -

tel:

- chiamami -
- skype -
- callto - -
-
-

Dark mode

- - callto dark mode - -
- chiamami dark mode - - - - diff --git a/examples/index.nl.html b/examples/index.nl.html deleted file mode 100644 index 44ffab9..0000000 --- a/examples/index.nl.html +++ /dev/null @@ -1,75 +0,0 @@ - - - - - mailgo examples - - -

mailto:

- - matteo@manzinello.dev -
-

matteo@manzinello.dev

-
- matteo@manzinello.dev -
- ciao -
- scrivimi! -
- scrivimi! - - more cc -
- matteo@manzinello.dev -
-
-

Dark mode

- matteo@manzinello.dev dark mode -
- matteo@manzinello.dev dark mode - -

tel:

- chiamami -
- skype -
- callto - -
-
-

Dark mode

- - callto dark mode - -
- chiamami dark mode - - - - diff --git a/examples/index.pt.html b/examples/index.pt.html deleted file mode 100644 index eb15177..0000000 --- a/examples/index.pt.html +++ /dev/null @@ -1,75 +0,0 @@ - - - - - mailgo examples - - -

mailto:

- - matteo@manzinello.dev -
-

matteo@manzinello.dev

-
- matteo@manzinello.dev -
- ciao -
- scrivimi! -
- scrivimi! - - more cc -
- matteo@manzinello.dev -
-
-

Dark mode

- matteo@manzinello.dev dark mode -
- matteo@manzinello.dev dark mode - -

tel:

- chiamami -
- skype -
- callto - -
-
-

Dark mode

- - callto dark mode - -
- chiamami dark mode - - - - diff --git a/examples/index.windowconfig.html b/examples/index.windowconfig.html deleted file mode 100644 index cf9149d..0000000 --- a/examples/index.windowconfig.html +++ /dev/null @@ -1,82 +0,0 @@ - - - - - mailgo examples - - -

mailto:

- - matteo@manzinello.dev -
-

matteo@manzinello.dev

-
- matteo@manzinello.dev -
- ciao -
- scrivimi! -
- scrivimi! - - more cc -
- matteo@manzinello.dev -
-
-

Dark mode

- matteo@manzinello.dev dark mode -
- matteo@manzinello.dev dark mode - -

tel:

- chiamami -
- skype -
- callto - -
-
-

Dark mode

- - callto dark mode - -
- chiamami dark mode - - - - - - diff --git a/extensions/README.md b/extensions/README.md deleted file mode 100644 index 5b49fdb..0000000 --- a/extensions/README.md +++ /dev/null @@ -1,7 +0,0 @@ -# 💌 Mailgo extensions - -Scripts to add in mailgo official extensions for Chrome and Firefox. - -## // TODO - -Remove this folder, add build process also in extensions in order to add `mailgo` from npm. diff --git a/extensions/mailgo.chrome.min.js b/extensions/mailgo.chrome.min.js deleted file mode 100644 index d070a7b..0000000 --- a/extensions/mailgo.chrome.min.js +++ /dev/null @@ -1,2 +0,0 @@ -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","es","de","fr","pt","nl","ru"],"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 ","bcc_":"ccn ","subject_":"oggetto ","body_":"testo ","call":"chiama","open":"apri","_default":" ","_as_default":" ","copy":"copia"},"es":{"open_in_":"abrir con ","bcc_":"cco ","subject_":"asunto ","body_":"cuerpo ","call":"llamar","open":"abrir","_default":" predefinido","_as_default":" por defecto","copy":"copiar"},"de":{"open_in_":"Öffnen in ","subject_":"Betreff ","body_":"Nachricht ","call":"Anrufen","open":"Öffnen","_default":" mit Standard","_as_default":" mit Standard","copy":"kopieren"},"pt":{"open_in_":"abrir com ","bcc_":"cco ","subject_":"assunto ","body_":"corpo ","call":"ligar","open":"abrir","_default":" padrão","_as_default":" por padrão","copy":"copiar"},"fr":{"open_in_":"Ouvrir dans ","bcc_":"cci ","subject_":"sujet ","body_":"contenu ","call":"Appeler","open":"Ouvrir","_default":" par défaut","_as_default":" par défaut","copy":"Copier"},"nl":{"subject_":"onderwerp ","body_":"bericht ","call":"bellen","open":"openen","_default":" standaard","_as_default":" als standaard","copy":"kopiëren"},"ru":{"open_in_":"открыть в ","subject_":"тема ","body_":"тело ","call":"позвонить","open":"открыть","_default":" по умолчанию","_as_default":" по умолчанию","copy":"скопировать"}}}')},function(e,t,a){var o=a(2);e.exports="string"==typeof o?o:o.toString()},function(e,t,a){var o=a(3)(!1);o.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:16.5px;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:#20232a;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.95;border-radius:20px;box-shadow:0 3px 20px rgba(32,35,42,0.5);color:#4a4a4a;display:flex;flex-direction:column;overflow:auto;padding:24px;transition:0.5s box-shadow}.m-modal .m-modal-content:hover,.m-modal .m-modal-content:focus,.m-modal .m-modal-content:active{opacity:1}.m-modal .m-modal-content .m-title{margin-bottom:8px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;line-height:1.2em}.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{cursor:pointer;padding:10px;color:#4a4a4a;border-radius:20px;text-decoration:none}.m-modal .m-modal-content a.m-gmail{color:#c0372a}.m-modal .m-modal-content a.m-gmail:hover,.m-modal .m-modal-content a.m-gmail:focus,.m-modal .m-modal-content a.m-gmail:active{background-color:rgba(212,70,56,0.08);color:#c0372a}.m-modal .m-modal-content a.m-outlook{color:#0967aa}.m-modal .m-modal-content a.m-outlook:hover,.m-modal .m-modal-content a.m-outlook:focus,.m-modal .m-modal-content a.m-outlook:active{background-color:rgba(0,114,198,0.08);color:#0967aa}.m-modal .m-modal-content a.m-tg{color:#086da0}.m-modal .m-modal-content a.m-tg:hover,.m-modal .m-modal-content a.m-tg:focus,.m-modal .m-modal-content a.m-tg:active{background-color:rgba(0,136,204,0.08);color:#086da0}.m-modal .m-modal-content a.m-wa{color:#067466}.m-modal .m-modal-content a.m-wa:hover,.m-modal .m-modal-content a.m-wa:focus,.m-modal .m-modal-content a.m-wa:active{background-color:rgba(0,191,165,0.08);color:#067466}.m-modal .m-modal-content a.m-skype{color:#076d92}.m-modal .m-modal-content a.m-skype:hover,.m-modal .m-modal-content a.m-skype:focus,.m-modal .m-modal-content a.m-skype:active{background-color:rgba(0,175,240,0.08);color:#076d92}.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-default:focus,.m-modal .m-modal-content a.m-default:active,.m-modal .m-modal-content a.m-copy:hover,.m-modal .m-modal-content a.m-copy:focus,.m-modal .m-modal-content a.m-copy:active{background-color:rgba(0,0,0,0.08);color:#4a4a4a}.m-modal .m-modal-content a.m-by{font-size:12px;margin-top:0.8rem;padding:5px;color:#4a4a4a}.m-modal .m-modal-content a.m-by:hover,.m-modal .m-modal-content a.m-by:focus,.m-modal .m-modal-content a.m-by:active{color:#3d3d3d}.m-modal .m-modal-content .w-500{font-weight:500}.m-modal.m-dark .m-modal-content{background-color:#20232a}.m-modal.m-dark .m-modal-content,.m-modal.m-dark .m-modal-content p,.m-modal.m-dark .m-modal-content p span,.m-modal.m-dark .m-modal-content strong{color:#fff}.m-modal.m-dark .m-modal-content a{color:#eaeaea}.m-modal.m-dark .m-modal-content a:not(.m-by):hover,.m-modal.m-dark .m-modal-content a:not(.m-by):focus,.m-modal.m-dark .m-modal-content a:not(.m-by):active{background-color:rgba(134,134,134,0.08);color:#eaeaea}.m-modal.m-dark .m-modal-content a.m-gmail{color:#e07d73}.m-modal.m-dark .m-modal-content a.m-gmail:hover,.m-modal.m-dark .m-modal-content a.m-gmail:focus,.m-modal.m-dark .m-modal-content a.m-gmail:active{background-color:rgba(212,70,56,0.08);color:#e07d73}.m-modal.m-dark .m-modal-content a.m-outlook{color:#4c9cd7}.m-modal.m-dark .m-modal-content a.m-outlook:hover,.m-modal.m-dark .m-modal-content a.m-outlook:focus,.m-modal.m-dark .m-modal-content a.m-outlook:active{background-color:rgba(0,114,198,0.08);color:#4c9cd7}.m-modal.m-dark .m-modal-content a.m-tg{color:#4cabdb}.m-modal.m-dark .m-modal-content a.m-tg:hover,.m-modal.m-dark .m-modal-content a.m-tg:focus,.m-modal.m-dark .m-modal-content a.m-tg:active{background-color:rgba(0,136,204,0.08);color:#4cabdb}.m-modal.m-dark .m-modal-content a.m-wa{color:#4cd2c0}.m-modal.m-dark .m-modal-content a.m-wa:hover,.m-modal.m-dark .m-modal-content a.m-wa:focus,.m-modal.m-dark .m-modal-content a.m-wa:active{background-color:rgba(0,191,165,0.08);color:#4cd2c0}.m-modal.m-dark .m-modal-content a.m-skype{color:#4cc7f4}.m-modal.m-dark .m-modal-content a.m-skype:hover,.m-modal.m-dark .m-modal-content a.m-skype:focus,.m-modal.m-dark .m-modal-content a.m-skype:active{background-color:rgba(0,175,240,0.08);color:#4cc7f4}.m-modal.m-dark .m-modal-content a.m-by:hover,.m-modal.m-dark .m-modal-content a.m-by:focus,.m-modal.m-dark .m-modal-content a.m-by:active{color:#fff}\n',""]),e.exports=o},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=(l=o,i=btoa(unescape(encodeURIComponent(JSON.stringify(l)))),m="sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(i),"/*# ".concat(m," */")),d=o.sources.map((function(e){return"/*# sourceURL=".concat(o.sourceRoot||"").concat(e," */")}));return[a].concat(d).concat([n]).join("\n")}var l,i,m;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 d=0;d0&&void 0!==arguments[0]?arguments[0]:"mail",a=arguments.length>1?arguments[1]:void 0;if("mail"===t){var o,n;if(a.href&&a.href.toLowerCase().startsWith(N)){T=decodeURIComponent(a.href.split("?")[0].split(N)[1].trim());var d=new URL(a.href).searchParams;M=d.get("cc"),D=d.get("bcc"),W=d.get("subject"),B=d.get("body")}else T=a.getAttribute("data-address")+"@"+a.getAttribute("data-domain"),new URL(N+encodeURIComponent(T)),M=a.getAttribute("data-cc-address")+"@"+a.getAttribute("data-cc-domain"),D=a.getAttribute("data-bcc-address")+"@"+a.getAttribute("data-bcc-domain"),W=a.getAttribute("data-subject"),B=a.getAttribute("data-body");if(void 0===(null===(o=l)||void 0===o?void 0:o.validateEmail)||!0===(null===(n=l)||void 0===n?void 0:n.validateEmail)){if(!we(T.split(",")))return;M&&!we(M.split(","))&&(M=""),D&&!we(D.split(","))&&(D="")}c.innerHTML=T.split(",").join("
"),M?(s.style.display="block",b.innerHTML=M.split(",").join("
")):s.style.display="none",D?(p.style.display="block",v.innerHTML=D.split(",").join("
")):p.style.display="none",W?(u.style.display="block",g.textContent=W):u.style.display="none",B?(f.style.display="block",h.textContent=B):f.style.display="none",k.addEventListener("click",Z),_.addEventListener("click",$),z=se(T),w.addEventListener("click",G),A.addEventListener("click",(function(){return ee(T)}))}else if("tel"===t){if(a.href&&a.href.toLowerCase().startsWith(R)?H=decodeURIComponent(a.href.split("?")[0].split(R)[1].trim()):a.href&&a.href.toLowerCase().startsWith(I)?H=decodeURIComponent(a.href.split("?")[0].split(I)[1].trim()):a.hasAttribute("data-tel")&&(H=a.getAttribute("data-tel"),a.getAttribute("data-msg")),!Ce(H))return;F=a.hasAttribute("data-telegram")?a.getAttribute("data-telegram"):null,a.hasAttribute("data-skype")&&(q=a.getAttribute("data-skype")),r.innerHTML=H,L.addEventListener("click",X),F?(document.getElementById("m-tg").style.display="block",C.addEventListener("click",Q)):document.getElementById("m-tg").style.display="none",x.addEventListener("click",V),j.addEventListener("click",Y),E.addEventListener("click",(function(){return ee(H)}))}(null===(e=l)||void 0===e?void 0:e.dark)||(a.classList.contains("dark")?he(t):ye(t)),ne(t),document.addEventListener("keydown",oe)}var Z=function(){var e="https://mail.google.com/mail/u/0/?view=cm&source=mailto&to="+encodeURIComponent(T);M&&(e=e.concat("&cc="+encodeURIComponent(M))),D&&(e=e.concat("&bcc="+encodeURIComponent(D))),W&&(e=e.concat("&subject="+W)),B&&(e=e.concat("&body="+B)),window.open(e,"_blank"),de()},$=function(){var e="https://outlook.live.com/owa/?path=/mail/action/compose&to="+encodeURIComponent(T);W&&(e=e.concat("&subject="+W)),B&&(e=e.concat("&body="+B)),window.open(e,"_blank"),de()},G=function(){re(z),de()},Q=function(){var e="https://t.me/"+F;window.open(e,"_blank"),de()},V=function(){var e="skype:"+(""!==q?q:H);window.open(e,"_blank"),de()},X=function(){var e="https://wa.me/"+H;window.open(e,"_blank"),de()},Y=function(){var e="tel:"+H;window.open(e),de()},ee=function(e){var t;Le(e),(t=le("mail")?A:E).textContent="copied",setTimeout((function(){t.textContent="copy",de()}),999)};function te(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"mail",a=e.href;return"mail"===t?a&&a.toLowerCase().startsWith(N)&&!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(R)||a.toLowerCase().startsWith(I))&&!e.classList.contains("no-mailgo")||e.hasAttribute("data-tel")&&a&&"#mailgo"===e.getAttribute("href").toLowerCase()||e.classList&&e.classList.contains("mailgo"))}function ae(e){if(!document.contains(i)||!document.contains(m))return!1;if(le("mail")||le("tel"))return!1;var t=e.composedPath&&e.composedPath()||ke(e.target);return t&&t.forEach((function(t){return!(t instanceof HTMLDocument||t instanceof Window)&&(te(t,"mail")?(e.preventDefault(),K("mail",t),!0):te(t,"tel")?(e.preventDefault(),K("tel",t),!0):void 0)})),!1}var oe=function(e){if(le("mail"))switch(e.keyCode){case 27:de();break;case 71:Z();break;case 79:$();break;case 32:case 13:G();break;case 67:ee(T);break;default:return}else if(le("tel"))switch(e.keyCode){case 27:de();break;case 84:Q();break;case 87:X();break;case 32:case 13:Y();break;case 67:ee(H);break;default:return}},ne=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"mail";fe(e,"flex")},de=function(){fe("mail","none"),fe("tel","none"),document.removeEventListener("keydown",oe)},le=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"mail";return"flex"===ue(e)},ie=function(){var e=me("a");return e.href="https://mailgo.dev?ref=mailgo-modal",e.className="m-by",e.target="_blank",e.rel="noopener noreferrer",e.appendChild(ce("mailgo.dev")),e},me=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"div";return document.createElement(e)},ce=function(e){return document.createTextNode(e)},re=function(e){return window.location.href=N+atob(e)},se=function(e){return btoa(e)},pe=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"mail";return"tel"===e?m:i},ue=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"mail";return pe(e).style.display},fe=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"mail",t=arguments.length>1?arguments[1]:void 0,a=pe(e);a.style.display=t,"flex"===t?(y=document.activeElement,a.setAttribute("aria-hidden","false"),a.setAttribute("tabindex","0"),a.focus(),be(a)):(a.setAttribute("aria-hidden","true"),a.setAttribute("tabindex","-1"),y.focus())},be=function(e){var t=e;t.querySelector(".m-modal-content a:last-of-type").addEventListener("keydown",ve),t.querySelector(".m-modal-content a:first-of-type").addEventListener("keydown",ge)},ve=function(e){"Tab"===e.code&&!1===e.shiftKey&&(e.preventDefault(),e.target.closest("div").querySelector("a:first-of-type").focus())},ge=function(e){"Tab"===e.code&&!0===e.shiftKey&&(e.preventDefault(),e.target.closest("div").querySelector("a:last-of-type").focus())},he=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"mail";return pe(e).classList.add("m-dark")},ye=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"mail";return pe(e).classList.remove("m-dark")},ke=function(e){for(var t=[];e;){if(t.push(e),"HTML"===e.tagName)return t.push(document),t.push(window),t;e=e.parentElement}},_e=function(e){return/^(([^<>()[\]\\.,;:\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)},we=function(e){return e.every(_e)},Ce=function(e){return/^[+]{0,1}[\s0-9]{0,}[(]{0,1}[0-9]{1,4}[)]{0,1}[-\s\./0-9]*$/.test(e)},Le=function(e){var t=me("textarea");t.value=e,t.setAttribute("readonly",""),t.style.position="absolute",t.style.left="-9999px",document.body.appendChild(t);var 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 xe=function(e){var t,a,o,d;l=n(n({},e),(null===(t=window)||void 0===t?void 0:t.mailgoConfig)||null),window&&"undefined"!=typeof window&&((d=me("style")).id="mailgo-style",d.type="text/css",d.appendChild(ce(S)),document.head.appendChild(d),(null===(a=l)||void 0===a?void 0:a.initEvent)?(null===(o=l)||void 0===o?void 0:o.listenerOptions)?document.addEventListener(l.initEvent,(function(){J()}),l.listenerOptions):document.addEventListener(l.initEvent,(function(){J()})):J())};!!document.getElementById("mailgo")||xe()}]); -//# sourceMappingURL=mailgo.chrome.min.js.map \ No newline at end of file diff --git a/extensions/mailgo.chrome.min.js.map b/extensions/mailgo.chrome.min.js.map deleted file mode 100644 index 7099885..0000000 --- a/extensions/mailgo.chrome.min.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack://mailgo/webpack/bootstrap","webpack://mailgo/../src/mailgo.scss?16f9","webpack://mailgo/../src/mailgo.scss","webpack://mailgo/../node_modules/css-loader/dist/runtime/api.js","webpack://mailgo/../src/mailgo.ts","webpack://mailgo/./mailgo.chrome.ts"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","result","toString","___CSS_LOADER_EXPORT___","___CSS_LOADER_API_IMPORT___","push","useSourceMap","list","this","map","item","content","cssMapping","btoa","sourceMapping","sourceMap","base64","unescape","encodeURIComponent","JSON","stringify","data","concat","sourceURLs","sources","source","sourceRoot","join","cssWithMappingToString","mediaQuery","dedupe","alreadyImportedModules","length","id","_i","config","modalMailto","modalTel","title","titleTel","detailCc","detailBcc","detailSubject","detailBody","ccValue","bccValue","subjectValue","bodyValue","activatedLink","gmail","outlook","open","telegram","wa","skype","copyMail","copyTel","i18n","require","mailgoCSS","MAILTO","TEL","CALLTO","DEFAULT_BTN_HREF","lang","mail","encEmail","cc","bcc","subject","bodyMail","tel","telegramUsername","skypeUsername","mailgoInit","translations","languages","indexOf","forceLang","htmlLang","document","documentElement","defaultStrings","strings","getElementById","createElement","style","display","classList","add","setAttribute","dark","enableDarkMode","disableDarkMode","modalBackground","className","appendChild","modalContent","details","ccSpan","createTextNode","cc_","bccSpan","bcc_","subjectSpan","subject_","bodySpan","body_","href","open_in_","gmailSpan","outlookSpan","openSpan","_default","copy","showFooter","byElement","body","addEventListener","hideMailgo","telegramSpan","waSpan","whatsapp","skypeSpan","callSpan","_as_default","mailgoCheckRender","mailgoRender","type","mailgoElement","toLowerCase","startsWith","decodeURIComponent","split","trim","urlParams","URL","searchParams","getAttribute","validateEmail","validateEmails","innerHTML","textContent","openGmail","openOutlook","encodeEmail","openDefault","hasAttribute","validateTel","openWhatsApp","openTelegram","openSkype","callDefault","contains","showMailgo","mailgoKeydown","gmailUrl","window","outlookUrl","mailToEncoded","tgUrl","skypeUrl","waUrl","callUrl","activeCopy","copyToClipboard","mailgoIsShowing","setTimeout","isMailgo","element","event","path","composedPath","target","forEach","HTMLDocument","Window","preventDefault","keyboardEvent","keyCode","setModalDisplay","removeEventListener","getModalDisplay","by","rel","encoded","location","atob","email","getModalHTMLElement","ref","modal","activeElement","focus","setFocusLoop","querySelector","leaveLastLink","leaveFirstLink","e","code","shiftKey","closest","remove","el","tagName","parentElement","test","arr","every","str","position","left","selected","getSelection","rangeCount","getRangeAt","select","execCommand","removeChild","removeAllRanges","addRange","mailgo","mailgoConfig","mailgoCSSElement","head","initEvent","listenerOptions"],"mappings":"0BACE,IAAIA,EAAmB,GAGvB,SAASC,EAAoBC,GAG5B,GAAGF,EAAiBE,GACnB,OAAOF,EAAiBE,GAAUC,QAGnC,IAAIC,EAASJ,EAAiBE,GAAY,CACzCG,EAAGH,EACHI,GAAG,EACHH,QAAS,IAUV,OANAI,EAAQL,GAAUM,KAAKJ,EAAOD,QAASC,EAAQA,EAAOD,QAASF,GAG/DG,EAAOE,GAAI,EAGJF,EAAOD,QA0Df,OArDAF,EAAoBQ,EAAIF,EAGxBN,EAAoBS,EAAIV,EAGxBC,EAAoBU,EAAI,SAASR,EAASS,EAAMC,GAC3CZ,EAAoBa,EAAEX,EAASS,IAClCG,OAAOC,eAAeb,EAASS,EAAM,CAAEK,YAAY,EAAMC,IAAKL,KAKhEZ,EAAoBkB,EAAI,SAAShB,GACX,oBAAXiB,QAA0BA,OAAOC,aAC1CN,OAAOC,eAAeb,EAASiB,OAAOC,YAAa,CAAEC,MAAO,WAE7DP,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,KAQvDrB,EAAoBsB,EAAI,SAASD,EAAOE,GAEvC,GADU,EAAPA,IAAUF,EAAQrB,EAAoBqB,IAC/B,EAAPE,EAAU,OAAOF,EACpB,GAAW,EAAPE,GAA8B,iBAAVF,GAAsBA,GAASA,EAAMG,WAAY,OAAOH,EAChF,IAAII,EAAKX,OAAOY,OAAO,MAGvB,GAFA1B,EAAoBkB,EAAEO,GACtBX,OAAOC,eAAeU,EAAI,UAAW,CAAET,YAAY,EAAMK,MAAOA,IACtD,EAAPE,GAA4B,iBAATF,EAAmB,IAAI,IAAIM,KAAON,EAAOrB,EAAoBU,EAAEe,EAAIE,EAAK,SAASA,GAAO,OAAON,EAAMM,IAAQC,KAAK,KAAMD,IAC9I,OAAOF,GAIRzB,EAAoB6B,EAAI,SAAS1B,GAChC,IAAIS,EAAST,GAAUA,EAAOqB,WAC7B,WAAwB,OAAOrB,EAAgB,SAC/C,WAA8B,OAAOA,GAEtC,OADAH,EAAoBU,EAAEE,EAAQ,IAAKA,GAC5BA,GAIRZ,EAAoBa,EAAI,SAASiB,EAAQC,GAAY,OAAOjB,OAAOkB,UAAUC,eAAe1B,KAAKuB,EAAQC,IAGzG/B,EAAoBkC,EAAI,GAIjBlC,EAAoBA,EAAoBmC,EAAI,G,wmDCjF7C,IAAIC,EAAS,EAAQ,GAGjBjC,EAAOD,QADW,iBAAXkC,EACUA,EAEAA,EAAOC,Y,gBCLpC,IACIC,EAD8B,EAAQ,EACZC,EAA4B,GAE1DD,EAAwBE,KAAK,CAACrC,EAAOC,EAAI,o+JAA6+J,KAEthKD,EAAOD,QAAUoC,G,6BCEjBnC,EAAOD,QAAU,SAAUuC,GACzB,IAAIC,EAAO,GAuDX,OArDAA,EAAKL,SAAW,WACd,OAAOM,KAAKC,KAAI,SAAUC,GACxB,IAAIC,EAsDV,SAAgCD,EAAMJ,GACpC,IAAIK,EAAUD,EAAK,IAAM,GAErBE,EAAaF,EAAK,GAEtB,IAAKE,EACH,OAAOD,EAGT,GAAIL,GAAgC,mBAATO,KAAqB,CAC9C,IAAIC,GAWWC,EAXeH,EAa5BI,EAASH,KAAKI,SAASC,mBAAmBC,KAAKC,UAAUL,MACzDM,EAAO,+DAA+DC,OAAON,GAC1E,OAAOM,OAAOD,EAAM,QAdrBE,EAAaX,EAAWY,QAAQf,KAAI,SAAUgB,GAChD,MAAO,iBAAiBH,OAAOV,EAAWc,YAAc,IAAIJ,OAAOG,EAAQ,UAE7E,MAAO,CAACd,GAASW,OAAOC,GAAYD,OAAO,CAACR,IAAgBa,KAAK,MAOrE,IAAmBZ,EAEbC,EACAK,EAPJ,MAAO,CAACV,GAASgB,KAAK,MAvEJC,CAAuBlB,EAAMJ,GAE3C,OAAII,EAAK,GACA,UAAUY,OAAOZ,EAAK,GAAI,MAAMY,OAAOX,EAAS,KAGlDA,KACNgB,KAAK,KAKVpB,EAAKtC,EAAI,SAAUE,EAAS0D,EAAYC,GACf,iBAAZ3D,IAETA,EAAU,CAAC,CAAC,KAAMA,EAAS,MAG7B,IAAI4D,EAAyB,GAE7B,GAAID,EACF,IAAK,IAAI7D,EAAI,EAAGA,EAAIuC,KAAKwB,OAAQ/D,IAAK,CAEpC,IAAIgE,EAAKzB,KAAKvC,GAAG,GAEP,MAANgE,IACFF,EAAuBE,IAAM,GAKnC,IAAK,IAAIC,EAAK,EAAGA,EAAK/D,EAAQ6D,OAAQE,IAAM,CAC1C,IAAIxB,EAAO,GAAGY,OAAOnD,EAAQ+D,IAEzBJ,GAAUC,EAAuBrB,EAAK,MAKtCmB,IACGnB,EAAK,GAGRA,EAAK,GAAK,GAAGY,OAAOO,EAAY,SAASP,OAAOZ,EAAK,IAFrDA,EAAK,GAAKmB,GAMdtB,EAAKF,KAAKK,MAIPH,I,2tBCxDT,IA6BI4B,EAMAC,EAA0BC,EAkB1BC,EACFC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EAGEC,EACFC,EACAC,EACAC,EACAC,EACAC,EACAlF,EACAmF,EACAC,EA1EIC,EAAmBC,EAAQ,GAG3BC,EAAoBD,EAAQ,GAAiBxD,WAM7C0D,EAAiB,UACjBC,EAAc,OACdC,EAAiB,UAUjBC,EAA2B,sBAW7BC,EA1ByB,KAiC3BC,EAAe,GACfC,EAAmB,GACnBC,EAAa,GACbC,EAAc,GACdC,EAAkB,GAClBC,EAAmB,GAGjBC,EAAc,GAEhBC,EAA2B,GAC3BC,EAAwB,GA8BpBC,EAAa,WAAY,QAG3BC,EACwClB,EADxCkB,aASF,IALU,QAAN,EAAAxC,SAAA,eAAQ6B,QAAiD,IAAzCP,EAAKmB,UAAUC,QAAQ1C,EAAO6B,QAChDA,EAAO7B,EAAO6B,QAIZ,UAAC7B,SAAD,aAAC,EAAQ2C,WAAW,CAEtB,IAAIC,EAAmBC,SAASC,gBAAgBjB,MAGN,IAAtCP,EAAKmB,UAAUC,QAAQE,KACzBf,EAAOgB,SAASC,gBAAgBjB,MAKpC,IAAIkB,EAAoCP,EAAY,GAChDQ,EAA6BR,EAAaX,GAK9C,MAFqBgB,SAASI,eAAe,UAE1B,YAEjBhD,EAAciD,MACFC,MAAMC,QAAU,OAC5BnD,EAAYH,GAAK,SACjBG,EAAYoD,UAAUC,IAAI,WAC1BrD,EAAYsD,aAAa,OAAQ,UACjCtD,EAAYsD,aAAa,WAAY,MACrCtD,EAAYsD,aAAa,kBAAmB,YAG5C,UAAIvD,SAAJ,aAAI,EAAQwD,MACVC,GAxGoB,QA0GpBC,GA1GoB,QA8GtB,IAAIC,EAA+BT,KACnCS,EAAgBC,UAAY,eAC5B3D,EAAY4D,YAAYF,GAGxB,IAAIG,EAA4BZ,KAChCY,EAAaF,UAAY,kBACzB3D,EAAY4D,YAAYC,IAGxB3D,EAAQ+C,GAAc,WAChBpD,GAAK,UACXK,EAAMyD,UAAY,UAClBE,EAAaD,YAAY1D,GAGzB,IAAI4D,EAAuBb,KAC3Ba,EAAQjE,GAAK,YACbiE,EAAQH,UAAY,aAEpBvD,EAAW6C,GAzHU,MA0HZpD,GAAK,OACd,IAAIkE,EAAsBd,GA7HF,QA8HxBc,EAAOJ,UAAY,QACnBI,EAAOH,YAAYI,GAAejB,EAAQkB,KAAOnB,EAAemB,OAChEzD,EAAUyC,GAhIc,SAiIhBpD,GAAK,aACbO,EAASwD,YAAYG,GACrB3D,EAASwD,YAAYpD,GACrBsD,EAAQF,YAAYxD,IAEpBC,EAAY4C,GApIS,MAqIXpD,GAAK,QACf,IAAIqE,EAAuBjB,GAxIH,QAyIxBiB,EAAQP,UAAY,QACpBO,EAAQN,YAAYI,GAAejB,EAAQoB,MAAQrB,EAAeqB,QAClE1D,EAAWwC,GA3Ia,SA4IfpD,GAAK,cACdQ,EAAUuD,YAAYM,GACtB7D,EAAUuD,YAAYnD,GACtBqD,EAAQF,YAAYvD,IAEpBC,EAAgB2C,GA/IK,MAgJPpD,GAAK,YACnB,IAAIuE,EAA2BnB,GAnJP,QAoJxBmB,EAAYT,UAAY,QACxBS,EAAYR,YACVI,GAAejB,EAAQsB,UAAYvB,EAAeuB,YAEpD3D,EAAeuC,GAxJS,SAyJXpD,GAAK,kBAClBS,EAAcsD,YAAYQ,GAC1B9D,EAAcsD,YAAYlD,GAC1BoD,EAAQF,YAAYtD,IAEpBC,EAAa0C,GA5JQ,MA6JVpD,GAAK,SAChB,IAAIyE,EAAwBrB,GAhKJ,QAiKxBqB,EAASX,UAAY,QACrBW,EAASV,YAAYI,GAAejB,EAAQwB,OAASzB,EAAeyB,SACpE5D,EAAYsC,GAnKY,SAoKdpD,GAAK,eACfU,EAAWqD,YAAYU,GACvB/D,EAAWqD,YAAYjD,GACvBmD,EAAQF,YAAYrD,GAEpBsD,EAAaD,YAAYE,IAGzBjD,EAAQoC,GA3Ka,MA4KfpD,GAAK,UACXgB,EAAM2D,KAAO7C,EACbd,EAAMuC,UAAUC,IAAI,UACpBxC,EAAMuC,UAAUC,IAAI,WACpBxC,EAAM+C,YACJI,GAAejB,EAAQ0B,UAAY3B,EAAe2B,WAEpD,IAAIC,EAAyBzB,GApLL,QAqLxByB,EAAUf,UAAY,QACtBe,EAAUd,YACRI,GAAejB,EAAQlC,OAASiC,EAAejC,QAEjDA,EAAM+C,YAAYc,GAElBb,EAAaD,YAAY/C,IAGzBC,EAAUmC,GA7LW,MA8LbpD,GAAK,YACbiB,EAAQ0D,KAAO7C,EACfb,EAAQsC,UAAUC,IAAI,UACtBvC,EAAQsC,UAAUC,IAAI,aACtBvC,EAAQ8C,YACNI,GAAejB,EAAQ0B,UAAY3B,EAAe2B,WAEpD,IAAIE,EAA2B1B,GAtMP,QAuMxB0B,EAAYhB,UAAY,QACxBgB,EAAYf,YACVI,GAAejB,EAAQjC,SAAWgC,EAAehC,UAEnDA,EAAQ8C,YAAYe,GAEpBd,EAAaD,YAAY9C,IAGzBC,EAAOkC,GA/Mc,MAgNhBpD,GAAK,SACVkB,EAAKyD,KAAO7C,EACZZ,EAAKqC,UAAUC,IAAI,UACnBtC,EAAKqC,UAAUC,IAAI,aACnB,IAAIuB,EAAwB3B,GArNJ,QAsNxB2B,EAASjB,UAAY,QACrBiB,EAAShB,YAAYI,GAAejB,EAAQhC,MAAQ+B,EAAe/B,OACnEA,EAAK6C,YAAYgB,GACjB7D,EAAK6C,YACHI,GAAejB,EAAQ8B,UAAY/B,EAAe+B,WAGpDhB,EAAaD,YAAY7C,IAGzBI,EAAW8B,GA/NU,MAgOZpD,GAAK,SACdsB,EAASqD,KAAO7C,EAChBR,EAASiC,UAAUC,IAAI,UACvBlC,EAASiC,UAAUC,IAAI,SACvBlC,EAASyC,YAAYI,GAAejB,EAAQ+B,MAAQhC,EAAegC,OAEnEjB,EAAaD,YAAYzC,QAIO,KAA9B,UAAOpB,SAAP,aAAO,EAAQgF,cACQ,KAAjB,QAAN,EAAAhF,SAAA,eAAQgF,aAERlB,EAAaD,YAAYoB,MAI3BpC,SAASqC,KAAKrB,YAAY5D,GAG1B0D,EAAgBwB,iBAAiB,QAASC,IAM5C,MAFwBvC,SAASI,eAAe,cAE1B,YAEpB/C,EAAWgD,MACFC,MAAMC,QAAU,OACzBlD,EAASJ,GAAK,aACdI,EAASmD,UAAUC,IAAI,WACvBpD,EAASqD,aAAa,OAAQ,UAC9BrD,EAASqD,aAAa,WAAY,MAClCrD,EAASqD,aAAa,kBAAmB,gBAGzC,UAAIvD,SAAJ,aAAI,EAAQwD,MACVC,GA7QmB,OA+QnBC,GA/QmB,OAmRrB,IAAIC,EAA+BT,KACnCS,EAAgBC,UAAY,eAC5B1D,EAAS2D,YAAYF,GAGrB,IAAIG,EAA4BZ,KAChCY,EAAaF,UAAY,kBACzB1D,EAAS2D,YAAYC,IAGrB1D,EAAW8C,GAAc,WAChBpD,GAAK,cACdM,EAASwD,UAAY,UACrBE,EAAaD,YAAYzD,IAGzBa,EAAWiC,GA5RU,MA6RZpD,GAAK,OACdmB,EAASwD,KAAO7C,EAChBX,EAASoC,UAAUC,IAAI,UACvBrC,EAASoC,UAAUC,IAAI,QAGvBrC,EAASkC,MAAMC,QAAU,OAEzBnC,EAAS4C,YACPI,GAAejB,EAAQ0B,UAAY3B,EAAe2B,WAEpD,IAAIW,EAA4BnC,GAzSR,QA0SxBmC,EAAazB,UAAY,QACzByB,EAAaxB,YACXI,GAAejB,EAAQ/B,UAAY8B,EAAe9B,WAEpDA,EAAS4C,YAAYwB,GAErBvB,EAAaD,YAAY5C,IAGzBC,EAAKgC,GAlTgB,MAmTlBpD,GAAK,OACRoB,EAAGuD,KAAO7C,EACVV,EAAGmC,UAAUC,IAAI,UACjBpC,EAAGmC,UAAUC,IAAI,QACjBpC,EAAG2C,YAAYI,GAAejB,EAAQ0B,UAAY3B,EAAe2B,WACjE,IAAIY,EAAsBpC,GAzTF,QA0TxBoC,EAAO1B,UAAY,QACnB0B,EAAOzB,YACLI,GAAejB,EAAQuC,UAAYxC,EAAewC,WAEpDrE,EAAG2C,YAAYyB,GAEfxB,EAAaD,YAAY3C,IAGzBC,EAAQ+B,GAlUa,MAmUfpD,GAAK,UACXqB,EAAMsD,KAAO7C,EACbT,EAAMkC,UAAUC,IAAI,UACpBnC,EAAMkC,UAAUC,IAAI,WACpBnC,EAAM0C,YACJI,GAAejB,EAAQ0B,UAAY3B,EAAe2B,WAEpD,IAAIc,EAAyBtC,GA3UL,QA4UxBsC,EAAU5B,UAAY,QACtB4B,EAAU3B,YACRI,GAAejB,EAAQ7B,OAAS4B,EAAe5B,QAEjDA,EAAM0C,YAAY2B,GAElB1B,EAAaD,YAAY1C,IAGzBlF,EAAOiH,GApVc,MAqVhBpD,GAAK,SACV7D,EAAKwI,KAAO7C,EACZ3F,EAAKoH,UAAUC,IAAI,UACnBrH,EAAKoH,UAAUC,IAAI,aACnB,IAAImC,EAAwBvC,GA1VJ,QA2VxBuC,EAAS7B,UAAY,QACrB6B,EAAS5B,YAAYI,GAAejB,EAAQ/G,MAAQ8G,EAAe9G,OACnEA,EAAK4H,YAAY4B,GACjBxJ,EAAK4H,YACHI,GAAejB,EAAQ0C,aAAe3C,EAAe2C,cAGvD5B,EAAaD,YAAY5H,IAGzBoF,EAAU6B,GApWW,MAqWbpD,GAAK,aACbuB,EAAQoD,KAAO7C,EACfP,EAAQgC,UAAUC,IAAI,UACtBjC,EAAQgC,UAAUC,IAAI,SACtBjC,EAAQwC,YAAYI,GAAejB,EAAQ+B,MAAQhC,EAAegC,OAElEjB,EAAaD,YAAYxC,QAIO,KAA9B,UAAOrB,SAAP,aAAO,EAAQgF,cACQ,KAAjB,QAAN,EAAAhF,SAAA,eAAQgF,aAERlB,EAAaD,YAAYoB,MAI3BpC,SAASqC,KAAKrB,YAAY3D,GAG1ByD,EAAgBwB,iBAAiB,QAASC,IAI5CvC,SAASsC,iBAAiB,QAASQ,KAO9B,SAASC,IAGR,MAFNC,EAEM,uDA/YkB,OA8YxBC,EACM,uCAEN,GAjZwB,SAiZpBD,EAAoB,SAEtB,GACEC,EAAcrB,MACdqB,EAAcrB,KAAKsB,cAAcC,WAAWvE,GAC5C,CACAK,EAAOmE,mBACLH,EAAcrB,KAAKyB,MAAM,KAAK,GAAGA,MAAMzE,GAAQ,GAAG0E,QAIpD,IAAIC,EADE,IAAIC,IAAIP,EAAcrB,MACS6B,aAGrCtE,EAAKoE,EAAUzJ,IAAI,MACnBsF,EAAMmE,EAAUzJ,IAAI,OACpBuF,EAAUkE,EAAUzJ,IAAI,WACxBwF,EAAWiE,EAAUzJ,IAAI,aAIzBmF,EACEgE,EAAcS,aAAa,gBAC3B,IACAT,EAAcS,aAAa,eAEvB,IAAIF,IAAI5E,EAAS1C,mBAAmB+C,IAG1CE,EACE8D,EAAcS,aAAa,mBAC3B,IACAT,EAAcS,aAAa,kBAG7BtE,EACE6D,EAAcS,aAAa,oBAC3B,IACAT,EAAcS,aAAa,mBAG7BrE,EAAU4D,EAAcS,aAAa,gBAGrCpE,EAAW2D,EAAcS,aAAa,aAGxC,QACmC,KAAjC,UAAOvG,SAAP,aAAO,EAAQwG,iBACW,KAApB,QAAN,EAAAxG,SAAA,eAAQwG,eACR,CAEA,IAAKC,GAAe3E,EAAKoE,MAAM,MAAO,OAGlClE,IAAOyE,GAAezE,EAAGkE,MAAM,QAAOlE,EAAK,IAC3CC,IAAQwE,GAAexE,EAAIiE,MAAM,QAAOjE,EAAM,IAIpD9B,EAAMuG,UAAY5E,EAAKoE,MAAM,KAAK1G,KAAK,SAGvCwC,GACM3B,EAAS8C,MAAMC,QAAU,QAC1B3C,EAAQiG,UAAY1E,EAAGkE,MAAM,KAAK1G,KAAK,UACvCa,EAAS8C,MAAMC,QAAU,OAE9BnB,GACM3B,EAAU6C,MAAMC,QAAU,QAC3B1C,EAASgG,UAAYzE,EAAIiE,MAAM,KAAK1G,KAAK,UACzCc,EAAU6C,MAAMC,QAAU,OAE/BlB,GACM3B,EAAc4C,MAAMC,QAAU,QAC/BzC,EAAagG,YAAczE,GAC3B3B,EAAc4C,MAAMC,QAAU,OAEnCjB,GACM3B,EAAW2C,MAAMC,QAAU,QAC5BxC,EAAU+F,YAAcxE,GACxB3B,EAAW2C,MAAMC,QAAU,OAGhCtC,EAAMqE,iBAAiB,QAASyB,GAEhC7F,EAAQoE,iBAAiB,QAAS0B,GAElC9E,EAAW+E,GAAYhF,GACvBd,EAAKmE,iBAAiB,QAAS4B,GAE/B3F,EAAS+D,iBAAiB,SAAS,kBAAMJ,GAAKjD,WAG3C,GA9ekB,QA8ed+D,EAAmB,CAqB1B,GAnBEC,EAAcrB,MACdqB,EAAcrB,KAAKsB,cAAcC,WAAWtE,GAE5CU,EAAM6D,mBACJH,EAAcrB,KAAKyB,MAAM,KAAK,GAAGA,MAAMxE,GAAK,GAAGyE,QAGjDL,EAAcrB,MACdqB,EAAcrB,KAAKsB,cAAcC,WAAWrE,GAE5CS,EAAM6D,mBACJH,EAAcrB,KAAKyB,MAAM,KAAK,GAAGA,MAAMvE,GAAQ,GAAGwE,QAE3CL,EAAckB,aAAa,cACpC5E,EAAM0D,EAAcS,aAAa,YAC3BT,EAAcS,aAAa,cAI9BU,GAAY7E,GAAM,OAIrBC,EADEyD,EAAckB,aAAa,iBACVlB,EAAcS,aAAa,iBAE3B,KAIjBT,EAAckB,aAAa,gBAC7B1E,EAAgBwD,EAAcS,aAAa,eAI7CnG,EAASsG,UAAYtE,EAGrBlB,EAAGiE,iBAAiB,QAAS+B,GAGzB7E,GACFQ,SAASI,eAAe,QAAQE,MAAMC,QAAU,QAChDnC,EAASkE,iBAAiB,QAASgC,IAEnCtE,SAASI,eAAe,QAAQE,MAAMC,QAAU,OAGlDjC,EAAMgE,iBAAiB,QAASiC,GAEhCnL,EAAKkJ,iBAAiB,QAASkC,GAE/BhG,EAAQ8D,iBAAiB,SAAS,kBAAMJ,GAAK3C,OAI3C,UAACpC,SAAD,aAAC,EAAQwD,QAEPsC,EAAczC,UAAUiE,SAAS,QACnC7D,GAAeoC,GAEfnC,GAAgBmC,IAKpB0B,GAAW1B,GAGXhD,SAASsC,iBAAiB,UAAWqC,IAIvC,IAAMZ,EAAY,WAEhB,IAAIa,EACF,8DACA1I,mBAAmB+C,GAGjBE,IAAIyF,EAAWA,EAAStI,OAAO,OAASJ,mBAAmBiD,KAC3DC,IAAKwF,EAAWA,EAAStI,OAAO,QAAUJ,mBAAmBkD,KAC7DC,IAASuF,EAAWA,EAAStI,OAAO,YAAc+C,IAClDC,IAAUsF,EAAWA,EAAStI,OAAO,SAAWgD,IAGpDuF,OAAO1G,KAAKyG,EAAU,UAGtBrC,MAGIyB,EAAc,WAElB,IAAIc,EACF,8DACA5I,mBAAmB+C,GAGjBI,IAASyF,EAAaA,EAAWxI,OAAO,YAAc+C,IACtDC,IAAUwF,EAAaA,EAAWxI,OAAO,SAAWgD,IAGxDuF,OAAO1G,KAAK2G,EAAY,UAGxBvC,MAGI2B,EAAc,WAClBa,GAAc7F,GACdqD,MAGI+B,EAAe,WAEnB,IAAIU,EAAgB,gBAAkBxF,EAGtCqF,OAAO1G,KAAK6G,EAAO,UAGnBzC,MAGIgC,EAAY,WAChB,IAGIU,EAAmB,UAHe,KAAlBxF,EAAuBA,EAAgBF,GAM3DsF,OAAO1G,KAAK8G,EAAU,UAGtB1C,MAGI8B,EAAe,WAEnB,IAAIa,EAAgB,iBAAmB3F,EAMvCsF,OAAO1G,KAAK+G,EAAO,UAGnB3C,MAGIiC,EAAc,WAClB,IAAIW,EAAkB,OAAS5F,EAC/BsF,OAAO1G,KAAKgH,GACZ5C,MAGIL,GAAO,SAACvG,GAEZ,IAAIyJ,EADJC,GAAgB1J,IAGcyJ,EAA9BE,GAlpBwB,QAkpBmB/G,EAA0BC,GAC1DsF,YAAc,SACzByB,YAAW,WACTH,EAAWtB,YAAc,OAEzBvB,OACC,MAIE,SAASiD,GACdC,GAES,IADTzC,EACS,uDA/pBe,OAgqBpBpB,EAAgB6D,EAA4B7D,KAGhD,MAnqBwB,SAmqBpBoB,EAGCpB,GACCA,EAAKsB,cAAcC,WAAWvE,KAC7B6G,EAAQjF,UAAUiE,SAAS,cAC7BgB,EAAQtB,aAAa,kBAElBvC,GAAuD,YAA/C6D,EAAQ/B,aAAa,QAAQR,eAEpCuC,EAAQjF,WAAaiF,EAAQjF,UAAUiE,SAAS,WA5qBlC,QAirBnBzB,IAGCpB,IACEA,EAAKsB,cAAcC,WAAWtE,IAC7B+C,EAAKsB,cAAcC,WAAWrE,MAC/B2G,EAAQjF,UAAUiE,SAAS,cAC7BgB,EAAQtB,aAAa,aAEpBvC,GAC+C,YAA/C6D,EAAQ/B,aAAa,QAAQR,eAE9BuC,EAAQjF,WAAaiF,EAAQjF,UAAUiE,SAAS,WAuBhD,SAAS3B,GAAkB4C,GAEhC,IAAK1F,SAASyE,SAASrH,KAAiB4C,SAASyE,SAASpH,GACxD,OAAO,EAGT,GAAIiI,GA3tBoB,SA2tBUA,GA1tBX,OA0tBsC,OAAO,EAGpE,IAAIK,EACDD,EAAME,cAAgBF,EAAME,gBAC7BA,GAAaF,EAAMG,QA6BrB,OA3BIF,GACFA,EAAKG,SAAQ,SAACL,GACZ,QAAIA,aAAmBM,cAAgBN,aAAmBO,UAItDR,GAASC,EAxuBO,SA0uBlBC,EAAMO,iBAGNlD,EA7uBkB,OA6uBM0C,IAEjB,GAELD,GAASC,EAhvBM,QAkvBjBC,EAAMO,iBAGNlD,EArvBiB,MAqvBM0C,IAEhB,QAPT,OAYG,EAOT,IAAMd,GAAgB,SAACuB,GAErB,GAAIZ,GAtwBoB,QAuwBtB,OAAQY,EAAcC,SACpB,KAAK,GAEH5D,KACA,MACF,KAAK,GAEHwB,IACA,MACF,KAAK,GAEHC,IACA,MACF,KAAK,GACL,KAAK,GAEHE,IACA,MACF,KAAK,GAEHhC,GAAKjD,GACL,MACF,QACE,YAEC,GAAIqG,GA/xBY,OAgyBrB,OAAQY,EAAcC,SACpB,KAAK,GAEH5D,KACA,MACF,KAAK,GAEH+B,IACA,MACF,KAAK,GAEHD,IACA,MACF,KAAK,GACL,KAAK,GAEHG,IACA,MACF,KAAK,GAEHtC,GAAK3C,GACL,MACF,QACE,SAOFmF,GAAa,WAA4B,IAA3B1B,EAA2B,uDA/zBrB,OAi0BxBoD,GAAgBpD,EAAM,SAIlBT,GAAa,WAEjB6D,GAv0BwB,OAu0BG,QAC3BA,GAv0BuB,MAu0BG,QAG1BpG,SAASqG,oBAAoB,UAAW1B,KAIpCW,GAAkB,WAA+B,IAA9BtC,EAA8B,uDA/0B7B,OAg1BxB,MAAiC,SAA1BsD,GAAgBtD,IAGnBZ,GAAY,WAEhB,IAAImE,EAAsBlG,GA70BH,KAo1BvB,OANAkG,EAAG3E,KAAO,sCACV2E,EAAGxF,UAAY,OACfwF,EAAGV,OAAS,SACZU,EAAGC,IAAM,sBACTD,EAAGvF,YAAYI,GAAe,eAEvBmF,GAIHlG,GAAgB,eAACoF,EAAD,uDAAmB,MAAnB,OACpBzF,SAASK,cAAcoF,IAGnBrE,GAAiB,SAACqE,GAAD,OACrBzF,SAASoB,eAAeqE,IAGpBV,GAAgB,SAAC0B,GAAD,OACnB5B,OAAO6B,SAAS9E,KAAOhD,EAAS+H,KAAKF,IAGlCxC,GAAc,SAAC2C,GAAD,OAA2B/K,KAAK+K,IAG9CC,GAAsB,eAAC7D,EAAD,uDA/2BF,OA+2BE,MA92BH,QA+2BvBA,EAAoB3F,EAAWD,GAG3BkJ,GAAkB,eAACQ,EAAD,uDAn3BE,OAm3BF,OACtBD,GAAoBC,GAAKxG,MAAMC,SAG3B6F,GAAkB,WAAkD,IAAjDU,EAAiD,uDAv3BhD,OAu3BwB5M,EAAwB,uCACpE6M,EAAQF,GAAoBC,GAChCC,EAAMzG,MAAMC,QAAUrG,EAER,SAAVA,GAEF8D,EAAgBgC,SAASgH,cACzBD,EAAMrG,aAAa,cAAe,SAGlCqG,EAAMrG,aAAa,WAAY,KAC/BqG,EAAME,QACNC,GAAaH,KAEbA,EAAMrG,aAAa,cAAe,QAGlCqG,EAAMrG,aAAa,WAAY,MAC/B1C,EAAciJ,UAKZC,GAAe,SAACJ,GACpB,IAAIC,EAAQD,EACZC,EACGI,cAAc,mCACd7E,iBAAiB,UAAW8E,IAC/BL,EACGI,cAAc,oCACd7E,iBAAiB,UAAW+E,KAG3BD,GAAgB,SAACE,GAEN,QAAXA,EAAEC,OAAiC,IAAfD,EAAEE,WACxBF,EAAErB,iBAEAqB,EAAEzB,OACD4B,QAAQ,OACRN,cAAc,mBAAmCF,UAIlDI,GAAiB,SAACC,GAEP,QAAXA,EAAEC,OAAiC,IAAfD,EAAEE,WACxBF,EAAErB,iBACAqB,EAAEzB,OACD4B,QAAQ,OACRN,cAAc,kBAAkCF,UAKjDrG,GAAiB,eAACoC,EAAD,uDA96BG,OA86BH,OACrB6D,GAAoB7D,GAAMxC,UAAUC,IAAI,WAGpCI,GAAkB,eAACmC,EAAD,uDAl7BE,OAk7BF,OACtB6D,GAAoB7D,GAAMxC,UAAUkH,OAAO,WAGvC9B,GAAe,SACnB+B,GAIA,IAFA,IAAIhC,EAAO,GAEJgC,GAAI,CAGT,GAFAhC,EAAKtK,KAAKsM,GAES,SAAfA,EAAGC,QAGL,OAFAjC,EAAKtK,KAAK2E,UACV2F,EAAKtK,KAAKwJ,QACHc,EAGTgC,EAAKA,EAAGE,gBAKNlE,GAAgB,SAACiD,GAAD,MACpB,4JAA4JkB,KAC1JlB,IAIEhD,GAAiB,SAACmE,GAAD,OAA4BA,EAAIC,MAAMrE,KAGvDS,GAAc,SAAC7E,GAAD,MAClB,8DAA8DuI,KAAKvI,IAG/D8F,GAAkB,SAAC4C,GACvB,IAAIN,EAAuBtH,GAAc,YACzCsH,EAAGzN,MAAQ+N,EACXN,EAAGjH,aAAa,WAAY,IAC5BiH,EAAGrH,MAAM4H,SAAW,WACpBP,EAAGrH,MAAM6H,KAAO,UAChBnI,SAASqC,KAAKrB,YAAY2G,GAC1B,IAAIS,EACFpI,SAASqI,eAAeC,WAAa,GACjCtI,SAASqI,eAAeE,WAAW,GAKzC,OAHAZ,EAAGa,SACHxI,SAASyI,YAAY,QACrBzI,SAASqC,KAAKqG,YAAYf,KACtBS,IACFpI,SAASqI,eAAeM,kBACxB3I,SAASqI,eAAeO,SAASR,IAC1B,IAiDIS,OAhCf,SAAgBC,GAAmC,MAKJ,EAKpB,EApBrBC,EAYJ5L,EAAS,EAAH,KAAQ2L,IAAkB,UAACjE,cAAD,eAAiBiE,eAAgB,MAG7DjE,QAA4B,oBAAXA,UAfjBkE,EAAqC1I,GACvC,UAEepD,GAAK,eACtB8L,EAAiB/F,KAAO,WACxB+F,EAAiB/H,YAAYI,GAAezC,IAC5CqB,SAASgJ,KAAKhI,YAAY+H,IAcxB,UAAI5L,SAAJ,aAAI,EAAQ8L,YACV,UAAI9L,SAAJ,aAAI,EAAQ+L,iBAEVlJ,SAASsC,iBACPnF,EAAO8L,WACP,WACEvJ,MAEFvC,EAAO+L,iBAITlJ,SAASsC,iBAAiBnF,EAAO8L,WAAW,WAC1CvJ,OAIJA,QCriCeM,SAASI,eAAe,WAE1B","file":"mailgo.chrome.min.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 4);\n","\n var result = require(\"!!../node_modules/css-loader/dist/cjs.js??ref--5-1!../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 ","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../node_modules/css-loader/dist/runtime/api.js\");\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(false);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".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:16.5px;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:#20232a;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.95;border-radius:20px;box-shadow:0 3px 20px rgba(32,35,42,0.5);color:#4a4a4a;display:flex;flex-direction:column;overflow:auto;padding:24px;transition:0.5s box-shadow}.m-modal .m-modal-content:hover,.m-modal .m-modal-content:focus,.m-modal .m-modal-content:active{opacity:1}.m-modal .m-modal-content .m-title{margin-bottom:8px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;line-height:1.2em}.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{cursor:pointer;padding:10px;color:#4a4a4a;border-radius:20px;text-decoration:none}.m-modal .m-modal-content a.m-gmail{color:#c0372a}.m-modal .m-modal-content a.m-gmail:hover,.m-modal .m-modal-content a.m-gmail:focus,.m-modal .m-modal-content a.m-gmail:active{background-color:rgba(212,70,56,0.08);color:#c0372a}.m-modal .m-modal-content a.m-outlook{color:#0967aa}.m-modal .m-modal-content a.m-outlook:hover,.m-modal .m-modal-content a.m-outlook:focus,.m-modal .m-modal-content a.m-outlook:active{background-color:rgba(0,114,198,0.08);color:#0967aa}.m-modal .m-modal-content a.m-tg{color:#086da0}.m-modal .m-modal-content a.m-tg:hover,.m-modal .m-modal-content a.m-tg:focus,.m-modal .m-modal-content a.m-tg:active{background-color:rgba(0,136,204,0.08);color:#086da0}.m-modal .m-modal-content a.m-wa{color:#067466}.m-modal .m-modal-content a.m-wa:hover,.m-modal .m-modal-content a.m-wa:focus,.m-modal .m-modal-content a.m-wa:active{background-color:rgba(0,191,165,0.08);color:#067466}.m-modal .m-modal-content a.m-skype{color:#076d92}.m-modal .m-modal-content a.m-skype:hover,.m-modal .m-modal-content a.m-skype:focus,.m-modal .m-modal-content a.m-skype:active{background-color:rgba(0,175,240,0.08);color:#076d92}.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-default:focus,.m-modal .m-modal-content a.m-default:active,.m-modal .m-modal-content a.m-copy:hover,.m-modal .m-modal-content a.m-copy:focus,.m-modal .m-modal-content a.m-copy:active{background-color:rgba(0,0,0,0.08);color:#4a4a4a}.m-modal .m-modal-content a.m-by{font-size:12px;margin-top:0.8rem;padding:5px;color:#4a4a4a}.m-modal .m-modal-content a.m-by:hover,.m-modal .m-modal-content a.m-by:focus,.m-modal .m-modal-content a.m-by:active{color:#3d3d3d}.m-modal .m-modal-content .w-500{font-weight:500}.m-modal.m-dark .m-modal-content{background-color:#20232a}.m-modal.m-dark .m-modal-content,.m-modal.m-dark .m-modal-content p,.m-modal.m-dark .m-modal-content p span,.m-modal.m-dark .m-modal-content strong{color:#fff}.m-modal.m-dark .m-modal-content a{color:#eaeaea}.m-modal.m-dark .m-modal-content a:not(.m-by):hover,.m-modal.m-dark .m-modal-content a:not(.m-by):focus,.m-modal.m-dark .m-modal-content a:not(.m-by):active{background-color:rgba(134,134,134,0.08);color:#eaeaea}.m-modal.m-dark .m-modal-content a.m-gmail{color:#e07d73}.m-modal.m-dark .m-modal-content a.m-gmail:hover,.m-modal.m-dark .m-modal-content a.m-gmail:focus,.m-modal.m-dark .m-modal-content a.m-gmail:active{background-color:rgba(212,70,56,0.08);color:#e07d73}.m-modal.m-dark .m-modal-content a.m-outlook{color:#4c9cd7}.m-modal.m-dark .m-modal-content a.m-outlook:hover,.m-modal.m-dark .m-modal-content a.m-outlook:focus,.m-modal.m-dark .m-modal-content a.m-outlook:active{background-color:rgba(0,114,198,0.08);color:#4c9cd7}.m-modal.m-dark .m-modal-content a.m-tg{color:#4cabdb}.m-modal.m-dark .m-modal-content a.m-tg:hover,.m-modal.m-dark .m-modal-content a.m-tg:focus,.m-modal.m-dark .m-modal-content a.m-tg:active{background-color:rgba(0,136,204,0.08);color:#4cabdb}.m-modal.m-dark .m-modal-content a.m-wa{color:#4cd2c0}.m-modal.m-dark .m-modal-content a.m-wa:hover,.m-modal.m-dark .m-modal-content a.m-wa:focus,.m-modal.m-dark .m-modal-content a.m-wa:active{background-color:rgba(0,191,165,0.08);color:#4cd2c0}.m-modal.m-dark .m-modal-content a.m-skype{color:#4cc7f4}.m-modal.m-dark .m-modal-content a.m-skype:hover,.m-modal.m-dark .m-modal-content a.m-skype:focus,.m-modal.m-dark .m-modal-content a.m-skype:active{background-color:rgba(0,175,240,0.08);color:#4cc7f4}.m-modal.m-dark .m-modal-content a.m-by:hover,.m-modal.m-dark .m-modal-content a.m-by:focus,.m-modal.m-dark .m-modal-content a.m-by:active{color:#fff}\\n\", \"\"]);\n// Exports\nmodule.exports = ___CSS_LOADER_EXPORT___;\n","\"use strict\";\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}","import {\n MailgoConfig,\n MailgoTranslations,\n MailgoTranslation,\n MailgoI18n,\n} from \"mailgo\";\n\n// i18n for mailgo\nconst i18n: MailgoI18n = require(\"../i18n/i18n.json\");\n\n// mailgo scss\nconst mailgoCSS: string = require(\"./mailgo.scss\").toString();\n\n// default lang\nconst DEFAULT_LANG: string = \"en\";\n\n// links\nconst MAILTO: string = \"mailto:\";\nconst TEL: string = \"tel:\";\nconst CALLTO: string = \"callto:\";\n\n// deep linking\nconst outlookDeepLink: string = \"ms-outlook://\";\n\n// mailgo types\nconst MAIL_TYPE: string = \"mail\";\nconst TEL_TYPE: string = \"tel\";\n\n// default href for links\nconst DEFAULT_BTN_HREF: string = \"javascript:void(0);\";\n\n// useful html tags\nconst spanHTMLTag: string = \"span\";\nconst aHTMLTag: string = \"a\";\nconst pHTMLTag: string = \"p\";\n\n// global mailgo config object\nlet config: MailgoConfig;\n\n// default language\nlet lang: string = DEFAULT_LANG;\n\n// modals global object\nlet modalMailto: HTMLElement, modalTel: HTMLElement;\n\n// mailgo variables\nlet url: URL,\n mail: string = \"\",\n encEmail: string = \"\",\n cc: string = \"\",\n bcc: string = \"\",\n subject: string = \"\",\n bodyMail: string = \"\";\n\n// mailgo tel variables\nlet tel: string = \"\",\n msg: string = \"\",\n telegramUsername: string = \"\",\n skypeUsername: string = \"\";\n\n// the DOM elements\nlet title: HTMLElement,\n titleTel: HTMLElement,\n detailCc: HTMLElement,\n detailBcc: HTMLElement,\n detailSubject: HTMLElement,\n detailBody: HTMLElement,\n ccValue: HTMLElement,\n bccValue: HTMLElement,\n subjectValue: HTMLElement,\n bodyValue: HTMLElement,\n activatedLink: HTMLElement;\n\n// mailgo buttons (actions)\nlet gmail: HTMLLinkElement,\n outlook: HTMLLinkElement,\n open: HTMLLinkElement,\n telegram: HTMLLinkElement,\n wa: HTMLLinkElement,\n skype: HTMLLinkElement,\n call: HTMLLinkElement,\n copyMail: HTMLLinkElement,\n copyTel: HTMLLinkElement;\n\n/**\n * mailgoInit\n * the function that creates the mailgo elements in DOM\n */\nconst mailgoInit = (): void => {\n // translations\n let {\n translations,\n }: { translations: MailgoTranslations } = i18n as MailgoI18n;\n\n // if a default language is defined use it\n if (config?.lang && i18n.languages.indexOf(config.lang) !== -1) {\n lang = config.lang;\n }\n\n // if is defined use it!\n if (!config?.forceLang) {\n // keep the lang from html\n let htmlLang: string = document.documentElement.lang;\n\n // if there are translations...\n if (i18n.languages.indexOf(htmlLang) !== -1) {\n lang = document.documentElement.lang;\n }\n }\n\n // strings\n let defaultStrings: MailgoTranslation = translations[DEFAULT_LANG];\n let strings: MailgoTranslation = translations[lang];\n\n // mailgo, if mailgo not already exists\n let mailgoExists = !!document.getElementById(\"mailgo\");\n\n if (!mailgoExists) {\n // modal\n modalMailto = createElement() as HTMLElement;\n modalMailto.style.display = \"none\";\n modalMailto.id = \"mailgo\";\n modalMailto.classList.add(\"m-modal\");\n modalMailto.setAttribute(\"role\", \"dialog\");\n modalMailto.setAttribute(\"tabindex\", \"-1\");\n modalMailto.setAttribute(\"aria-labelledby\", \"m-title\");\n\n // if dark is in config\n if (config?.dark) {\n enableDarkMode(MAIL_TYPE);\n } else {\n disableDarkMode(MAIL_TYPE);\n }\n\n // background\n let modalBackground: HTMLElement = createElement();\n modalBackground.className = \"m-modal-back\";\n modalMailto.appendChild(modalBackground);\n\n // modal content\n let modalContent: HTMLElement = createElement();\n modalContent.className = \"m-modal-content\";\n modalMailto.appendChild(modalContent);\n\n // title (email address)\n title = createElement(\"strong\");\n title.id = \"m-title\";\n title.className = \"m-title\";\n modalContent.appendChild(title);\n\n // details\n let details: HTMLElement = createElement();\n details.id = \"m-details\";\n details.className = \"m-details\";\n\n detailCc = createElement(pHTMLTag);\n detailCc.id = \"m-cc\";\n let ccSpan: HTMLElement = createElement(spanHTMLTag);\n ccSpan.className = \"w-500\";\n ccSpan.appendChild(createTextNode(strings.cc_ || defaultStrings.cc_));\n ccValue = createElement(spanHTMLTag);\n ccValue.id = \"m-cc-value\";\n detailCc.appendChild(ccSpan);\n detailCc.appendChild(ccValue);\n details.appendChild(detailCc);\n\n detailBcc = createElement(pHTMLTag);\n detailBcc.id = \"m-bcc\";\n let bccSpan: HTMLElement = createElement(spanHTMLTag);\n bccSpan.className = \"w-500\";\n bccSpan.appendChild(createTextNode(strings.bcc_ || defaultStrings.bcc_));\n bccValue = createElement(spanHTMLTag);\n bccValue.id = \"m-bcc-value\";\n detailBcc.appendChild(bccSpan);\n detailBcc.appendChild(bccValue);\n details.appendChild(detailBcc);\n\n detailSubject = createElement(pHTMLTag);\n detailSubject.id = \"m-subject\";\n let subjectSpan: HTMLElement = createElement(spanHTMLTag);\n subjectSpan.className = \"w-500\";\n subjectSpan.appendChild(\n createTextNode(strings.subject_ || defaultStrings.subject_)\n );\n subjectValue = createElement(spanHTMLTag);\n subjectValue.id = \"m-subject-value\";\n detailSubject.appendChild(subjectSpan);\n detailSubject.appendChild(subjectValue);\n details.appendChild(detailSubject);\n\n detailBody = createElement(pHTMLTag);\n detailBody.id = \"m-body\";\n let bodySpan: HTMLElement = createElement(spanHTMLTag);\n bodySpan.className = \"w-500\";\n bodySpan.appendChild(createTextNode(strings.body_ || defaultStrings.body_));\n bodyValue = createElement(spanHTMLTag);\n bodyValue.id = \"m-body-value\";\n detailBody.appendChild(bodySpan);\n detailBody.appendChild(bodyValue);\n details.appendChild(detailBody);\n\n modalContent.appendChild(details);\n\n // Gmail\n gmail = createElement(aHTMLTag) as HTMLLinkElement;\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(\n createTextNode(strings.open_in_ || defaultStrings.open_in_)\n );\n let gmailSpan: HTMLElement = createElement(spanHTMLTag);\n gmailSpan.className = \"w-500\";\n gmailSpan.appendChild(\n createTextNode(strings.gmail || defaultStrings.gmail)\n );\n gmail.appendChild(gmailSpan);\n\n modalContent.appendChild(gmail);\n\n // Outlook\n outlook = createElement(aHTMLTag) as HTMLLinkElement;\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(\n createTextNode(strings.open_in_ || defaultStrings.open_in_)\n );\n let outlookSpan: HTMLElement = createElement(spanHTMLTag);\n outlookSpan.className = \"w-500\";\n outlookSpan.appendChild(\n createTextNode(strings.outlook || defaultStrings.outlook)\n );\n outlook.appendChild(outlookSpan);\n\n modalContent.appendChild(outlook);\n\n // open default\n open = createElement(aHTMLTag) as HTMLLinkElement;\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: HTMLElement = createElement(spanHTMLTag);\n openSpan.className = \"w-500\";\n openSpan.appendChild(createTextNode(strings.open || defaultStrings.open));\n open.appendChild(openSpan);\n open.appendChild(\n createTextNode(strings._default || defaultStrings._default)\n );\n\n modalContent.appendChild(open);\n\n // copy\n copyMail = createElement(aHTMLTag) as HTMLLinkElement;\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(strings.copy || defaultStrings.copy));\n\n modalContent.appendChild(copyMail);\n\n // hide mailgo.dev in footer only if showFooter is defined and equal to false\n if (\n typeof config?.showFooter === \"undefined\" ||\n config?.showFooter !== false\n ) {\n modalContent.appendChild(byElement());\n }\n\n // add the modal at the end of the body\n document.body.appendChild(modalMailto);\n\n // every click outside the modal will hide the modal\n modalBackground.addEventListener(\"click\", hideMailgo);\n }\n\n // mailgo tel, if mailgo-tel not already exists\n let mailgoTelExists = !!document.getElementById(\"mailgo-tel\");\n\n if (!mailgoTelExists) {\n // modal\n modalTel = createElement() as HTMLElement;\n modalTel.style.display = \"none\";\n modalTel.id = \"mailgo-tel\";\n modalTel.classList.add(\"m-modal\");\n modalTel.setAttribute(\"role\", \"dialog\");\n modalTel.setAttribute(\"tabindex\", \"-1\");\n modalTel.setAttribute(\"aria-labelledby\", \"m-tel-title\");\n\n // if dark is in config\n if (config?.dark) {\n enableDarkMode(TEL_TYPE);\n } else {\n disableDarkMode(TEL_TYPE);\n }\n\n // background\n let modalBackground: HTMLElement = createElement();\n modalBackground.className = \"m-modal-back\";\n modalTel.appendChild(modalBackground);\n\n // modal content\n let modalContent: HTMLElement = createElement();\n modalContent.className = \"m-modal-content\";\n modalTel.appendChild(modalContent);\n\n // title (telephone number)\n titleTel = createElement(\"strong\");\n titleTel.id = \"m-tel-title\";\n titleTel.className = \"m-title\";\n modalContent.appendChild(titleTel);\n\n // Telegram\n telegram = createElement(aHTMLTag) as HTMLLinkElement;\n telegram.id = \"m-tg\";\n telegram.href = DEFAULT_BTN_HREF;\n telegram.classList.add(\"m-open\");\n telegram.classList.add(\"m-tg\");\n\n // by default not display\n telegram.style.display = \"none\";\n\n telegram.appendChild(\n createTextNode(strings.open_in_ || defaultStrings.open_in_)\n );\n let telegramSpan: HTMLElement = createElement(spanHTMLTag);\n telegramSpan.className = \"w-500\";\n telegramSpan.appendChild(\n createTextNode(strings.telegram || defaultStrings.telegram)\n );\n telegram.appendChild(telegramSpan);\n\n modalContent.appendChild(telegram);\n\n // WhatsApp\n wa = createElement(aHTMLTag) as HTMLLinkElement;\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_ || defaultStrings.open_in_));\n let waSpan: HTMLElement = createElement(spanHTMLTag);\n waSpan.className = \"w-500\";\n waSpan.appendChild(\n createTextNode(strings.whatsapp || defaultStrings.whatsapp)\n );\n wa.appendChild(waSpan);\n\n modalContent.appendChild(wa);\n\n // Skype\n skype = createElement(aHTMLTag) as HTMLLinkElement;\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(\n createTextNode(strings.open_in_ || defaultStrings.open_in_)\n );\n let skypeSpan: HTMLElement = createElement(spanHTMLTag);\n skypeSpan.className = \"w-500\";\n skypeSpan.appendChild(\n createTextNode(strings.skype || defaultStrings.skype)\n );\n skype.appendChild(skypeSpan);\n\n modalContent.appendChild(skype);\n\n // call default\n call = createElement(aHTMLTag) as HTMLLinkElement;\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: HTMLElement = createElement(spanHTMLTag);\n callSpan.className = \"w-500\";\n callSpan.appendChild(createTextNode(strings.call || defaultStrings.call));\n call.appendChild(callSpan);\n call.appendChild(\n createTextNode(strings._as_default || defaultStrings._as_default)\n );\n\n modalContent.appendChild(call);\n\n // copy\n copyTel = createElement(aHTMLTag) as HTMLLinkElement;\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(strings.copy || defaultStrings.copy));\n\n modalContent.appendChild(copyTel);\n\n // hide mailgo.dev in footer only if showFooter is defined and equal to false\n if (\n typeof config?.showFooter === \"undefined\" ||\n config?.showFooter !== false\n ) {\n modalContent.appendChild(byElement());\n }\n\n // add the modal at the end of the body\n document.body.appendChild(modalTel);\n\n // every click outside the modal will hide the modal\n modalBackground.addEventListener(\"click\", hideMailgo);\n }\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/**\n * mailgoRender\n * function to render a mailgo (mail or tel)\n */\nexport function mailgoRender(\n type: string = MAIL_TYPE,\n mailgoElement: HTMLLinkElement\n): void {\n // mailgo mail\n if (type === MAIL_TYPE) {\n // if the element href=^\"mailto:\"\n if (\n mailgoElement.href &&\n mailgoElement.href.toLowerCase().startsWith(MAILTO)\n ) {\n mail = decodeURIComponent(\n mailgoElement.href.split(\"?\")[0].split(MAILTO)[1].trim()\n );\n\n url = new URL(mailgoElement.href);\n let urlParams: URLSearchParams = url.searchParams;\n\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 } else {\n // if the element href=\"#mailgo\" or class=\"mailgo\"\n // mail = data-address + @ + data-domain\n mail =\n mailgoElement.getAttribute(\"data-address\") +\n \"@\" +\n mailgoElement.getAttribute(\"data-domain\");\n\n url = new URL(MAILTO + encodeURIComponent(mail));\n\n // cc = data-cc-address + @ + data-cc-domain\n cc =\n mailgoElement.getAttribute(\"data-cc-address\") +\n \"@\" +\n mailgoElement.getAttribute(\"data-cc-domain\");\n\n // bcc = data-bcc-address + @ + data-bcc-domain\n bcc =\n mailgoElement.getAttribute(\"data-bcc-address\") +\n \"@\" +\n mailgoElement.getAttribute(\"data-bcc-domain\");\n\n // subject = data-subject\n subject = mailgoElement.getAttribute(\"data-subject\");\n\n // body = data-body\n bodyMail = mailgoElement.getAttribute(\"data-body\");\n }\n\n if (\n typeof config?.validateEmail === \"undefined\" ||\n config?.validateEmail === true\n ) {\n // validate the email address\n if (!validateEmails(mail.split(\",\"))) return;\n\n // if cc, bcc are not valid cc, bcc = \"\"\n if (cc && !validateEmails(cc.split(\",\"))) cc = \"\";\n if (bcc && !validateEmails(bcc.split(\",\"))) bcc = \"\";\n }\n\n // the title of the modal (email address)\n title.innerHTML = mail.split(\",\").join(\"
\");\n\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\n bcc\n ? ((detailBcc.style.display = \"block\"),\n (bccValue.innerHTML = bcc.split(\",\").join(\"
\")))\n : (detailBcc.style.display = \"none\");\n\n subject\n ? ((detailSubject.style.display = \"block\"),\n (subjectValue.textContent = subject))\n : (detailSubject.style.display = \"none\");\n\n bodyMail\n ? ((detailBody.style.display = \"block\"),\n (bodyValue.textContent = bodyMail))\n : (detailBody.style.display = \"none\");\n\n // add the actions\n gmail.addEventListener(\"click\", openGmail);\n\n outlook.addEventListener(\"click\", openOutlook);\n\n encEmail = encodeEmail(mail);\n open.addEventListener(\"click\", openDefault);\n\n copyMail.addEventListener(\"click\", () => copy(mail));\n }\n // mailgo tel\n else if (type === TEL_TYPE) {\n if (\n mailgoElement.href &&\n mailgoElement.href.toLowerCase().startsWith(TEL)\n ) {\n tel = decodeURIComponent(\n mailgoElement.href.split(\"?\")[0].split(TEL)[1].trim()\n );\n } else if (\n mailgoElement.href &&\n mailgoElement.href.toLowerCase().startsWith(CALLTO)\n ) {\n tel = decodeURIComponent(\n mailgoElement.href.split(\"?\")[0].split(CALLTO)[1].trim()\n );\n } else if (mailgoElement.hasAttribute(\"data-tel\")) {\n tel = mailgoElement.getAttribute(\"data-tel\");\n msg = mailgoElement.getAttribute(\"data-msg\");\n }\n\n // validate the phone number\n if (!validateTel(tel)) return;\n\n // Telegram username\n if (mailgoElement.hasAttribute(\"data-telegram\")) {\n telegramUsername = mailgoElement.getAttribute(\"data-telegram\");\n } else {\n telegramUsername = null;\n }\n\n // Telegram username\n if (mailgoElement.hasAttribute(\"data-skype\")) {\n skypeUsername = mailgoElement.getAttribute(\"data-skype\");\n }\n\n // the title of the modal (tel)\n titleTel.innerHTML = tel;\n\n // add the actions to buttons\n wa.addEventListener(\"click\", openWhatsApp);\n\n // telegram must be shown only if data-telegram is provided\n if (telegramUsername) {\n document.getElementById(\"m-tg\").style.display = \"block\";\n telegram.addEventListener(\"click\", openTelegram);\n } else {\n document.getElementById(\"m-tg\").style.display = \"none\";\n }\n\n skype.addEventListener(\"click\", openSkype);\n\n call.addEventListener(\"click\", callDefault);\n\n copyTel.addEventListener(\"click\", () => copy(tel));\n }\n\n // if config.dark is set to true then all the modals will be in dark mode\n if (!config?.dark) {\n // if the element contains dark as class enable dark mode\n if (mailgoElement.classList.contains(\"dark\")) {\n enableDarkMode(type);\n } else {\n disableDarkMode(type);\n }\n }\n\n // show the mailgo\n showMailgo(type);\n\n // add listener keyDown\n document.addEventListener(\"keydown\", mailgoKeydown);\n}\n\n// actions\nconst openGmail = (): void => {\n // Gmail url\n let gmailUrl: string =\n \"https://mail.google.com/mail/u/0/?view=cm&source=mailto&to=\" +\n encodeURIComponent(mail);\n\n // the details if provided\n if (cc) gmailUrl = gmailUrl.concat(\"&cc=\" + encodeURIComponent(cc));\n if (bcc) gmailUrl = gmailUrl.concat(\"&bcc=\" + encodeURIComponent(bcc));\n if (subject) gmailUrl = gmailUrl.concat(\"&subject=\" + subject);\n if (bodyMail) gmailUrl = gmailUrl.concat(\"&body=\" + bodyMail);\n\n // open the link\n window.open(gmailUrl, \"_blank\");\n\n // hide the modal\n hideMailgo();\n};\n\nconst openOutlook = (): void => {\n // Outlook url\n let outlookUrl: string =\n \"https://outlook.live.com/owa/?path=/mail/action/compose&to=\" +\n encodeURIComponent(mail);\n\n // the details if provided\n if (subject) outlookUrl = outlookUrl.concat(\"&subject=\" + subject);\n if (bodyMail) outlookUrl = outlookUrl.concat(\"&body=\" + bodyMail);\n\n // open the link\n window.open(outlookUrl, \"_blank\");\n\n // hide the modal\n hideMailgo();\n};\n\nconst openDefault = (): void => {\n mailToEncoded(encEmail);\n hideMailgo();\n};\n\nconst openTelegram = (): void => {\n // Telegram url\n let tgUrl: string = \"https://t.me/\" + telegramUsername;\n\n // open the url\n window.open(tgUrl, \"_blank\");\n\n // hide the modal\n hideMailgo();\n};\n\nconst openSkype = (): void => {\n let skype: string = skypeUsername !== \"\" ? skypeUsername : tel;\n\n // Telegram url\n let skypeUrl: string = \"skype:\" + skype;\n\n // open the url\n window.open(skypeUrl, \"_blank\");\n\n // hide the modal\n hideMailgo();\n};\n\nconst openWhatsApp = (): void => {\n // WhatsApp url\n let waUrl: string = \"https://wa.me/\" + tel;\n\n // the details if provided\n if (msg) waUrl + \"?text=\" + msg;\n\n // open the url\n window.open(waUrl, \"_blank\");\n\n // hide the modal\n hideMailgo();\n};\n\nconst callDefault = () => {\n let callUrl: string = \"tel:\" + tel;\n window.open(callUrl);\n hideMailgo();\n};\n\nconst copy = (content: string): void => {\n copyToClipboard(content);\n let activeCopy: HTMLElement;\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\n// function that returns if an element is a mailgo\nexport function isMailgo(\n element: HTMLElement,\n type: string = MAIL_TYPE\n): boolean {\n let href: string = (element as HTMLLinkElement).href;\n\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 }\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 }\n\n return false;\n}\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 */\nexport function mailgoCheckRender(event: Event): boolean {\n // check if the id=mailgo exists in the body\n if (!document.contains(modalMailto) || !document.contains(modalTel))\n return false;\n\n // if a mailgo is already showing do nothing\n if (mailgoIsShowing(MAIL_TYPE) || mailgoIsShowing(TEL_TYPE)) return false;\n\n // the path of the event\n let path =\n (event.composedPath && event.composedPath()) ||\n composedPath(event.target as HTMLElement);\n\n if (path) {\n path.forEach((element: HTMLElement) => {\n if (element instanceof HTMLDocument || element instanceof Window)\n return false;\n\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\n // render mailgo\n mailgoRender(MAIL_TYPE, element as HTMLLinkElement);\n\n return true;\n }\n if (isMailgo(element, TEL_TYPE)) {\n // stop the normal execution of the element click\n event.preventDefault();\n\n // render mailgo\n mailgoRender(TEL_TYPE, element as HTMLLinkElement);\n\n return true;\n }\n });\n }\n\n return false;\n}\n\n/**\n * mailgoKeydown\n * function to manage the keydown event when the modal is showing\n */\nconst mailgoKeydown = (keyboardEvent: KeyboardEvent): void => {\n // if mailgo is showing\n if (mailgoIsShowing(MAIL_TYPE)) {\n switch (keyboardEvent.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 } else if (mailgoIsShowing(TEL_TYPE)) {\n switch (keyboardEvent.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\n// show the modal\nconst showMailgo = (type = MAIL_TYPE): void => {\n // show the correct modal\n setModalDisplay(type, \"flex\");\n};\n\n// hide the modal\nconst hideMailgo = (): void => {\n // hide all the modals\n setModalDisplay(MAIL_TYPE, \"none\");\n setModalDisplay(TEL_TYPE, \"none\");\n\n // remove listener keyDown\n document.removeEventListener(\"keydown\", mailgoKeydown);\n};\n\n// is the mailgo modal hidden?\nconst mailgoIsShowing = (type = MAIL_TYPE): boolean => {\n return getModalDisplay(type) === \"flex\";\n};\n\nconst byElement = (): HTMLLinkElement => {\n // by\n let by: HTMLLinkElement = createElement(aHTMLTag) as HTMLLinkElement;\n by.href = \"https://mailgo.dev?ref=mailgo-modal\";\n by.className = \"m-by\";\n by.target = \"_blank\";\n by.rel = \"noopener noreferrer\";\n by.appendChild(createTextNode(\"mailgo.dev\"));\n\n return by;\n};\n\n// create element\nconst createElement = (element: string = \"div\"): HTMLElement =>\n document.createElement(element);\n\n// create text node\nconst createTextNode = (element: string): Text =>\n document.createTextNode(element);\n\n// decrypt email\nconst mailToEncoded = (encoded: string): string =>\n (window.location.href = MAILTO + atob(encoded));\n\n// encode email\nconst encodeEmail = (email: string): string => btoa(email);\n\n// get the correct HTMLElement from a type\nconst getModalHTMLElement = (type: string = MAIL_TYPE) =>\n type === TEL_TYPE ? modalTel : modalMailto;\n\n// get display value\nconst getModalDisplay = (ref: string = MAIL_TYPE): string =>\n getModalHTMLElement(ref).style.display;\n\n// set display value\nconst setModalDisplay = (ref: string = MAIL_TYPE, value: string): void => {\n let modal = getModalHTMLElement(ref);\n modal.style.display = value;\n\n if (value === \"flex\") {\n // \"save\" the activated link.\n activatedLink = document.activeElement as HTMLElement;\n modal.setAttribute(\"aria-hidden\", \"false\");\n\n // Focus on the modal container.\n modal.setAttribute(\"tabindex\", \"0\");\n modal.focus();\n setFocusLoop(modal);\n } else {\n modal.setAttribute(\"aria-hidden\", \"true\");\n\n // focus back the activated link for getting back to the context.\n modal.setAttribute(\"tabindex\", \"-1\");\n activatedLink.focus();\n }\n};\n\n// set focus loop within modal\nconst setFocusLoop = (ref: HTMLElement): void => {\n let modal = ref;\n modal\n .querySelector(\".m-modal-content a:last-of-type\")\n .addEventListener(\"keydown\", leaveLastLink);\n modal\n .querySelector(\".m-modal-content a:first-of-type\")\n .addEventListener(\"keydown\", leaveFirstLink);\n};\n\nconst leaveLastLink = (e: KeyboardEvent): void => {\n // going back to the first link to force looping\n if (e.code === \"Tab\" && e.shiftKey === false) {\n e.preventDefault();\n\n ((e.target as HTMLElement)\n .closest(\"div\")\n .querySelector(\"a:first-of-type\") as HTMLElement).focus();\n }\n};\n\nconst leaveFirstLink = (e: KeyboardEvent): void => {\n // going back to the first link to force looping\n if (e.code === \"Tab\" && e.shiftKey === true) {\n e.preventDefault();\n ((e.target as HTMLElement)\n .closest(\"div\")\n .querySelector(\"a:last-of-type\") as HTMLElement).focus();\n }\n};\n\n// enable dark mode\nconst enableDarkMode = (type: string = MAIL_TYPE) =>\n getModalHTMLElement(type).classList.add(\"m-dark\");\n\n// disable dark mode\nconst disableDarkMode = (type: string = MAIL_TYPE) =>\n getModalHTMLElement(type).classList.remove(\"m-dark\");\n\n// custom composedPath if path or event.composedPath() are not defined\nconst composedPath = (\n el: HTMLElement\n): (HTMLElement | Document | (Window & typeof globalThis))[] => {\n let path = [];\n\n while (el) {\n path.push(el);\n\n if (el.tagName === \"HTML\") {\n path.push(document);\n path.push(window);\n return path;\n }\n\n el = el.parentElement;\n }\n};\n\n// validate a single email with regex\nconst validateEmail = (email: string): boolean =>\n /^(([^<>()[\\]\\\\.,;:\\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(\n email\n );\n\n// validate an array of emails\nconst validateEmails = (arr: string[]): boolean => arr.every(validateEmail);\n\n// validate a single tel with regex\nconst validateTel = (tel: string): boolean =>\n /^[+]{0,1}[\\s0-9]{0,}[(]{0,1}[0-9]{1,4}[)]{0,1}[-\\s\\./0-9]*$/.test(tel);\n\n// copy of a string\nconst copyToClipboard = (str: string): boolean => {\n let el: HTMLInputElement = createElement(\"textarea\") as HTMLInputElement;\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: Range | boolean =\n 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};\n\nconst mailgoStyle = (): void => {\n // mailgo style\n let mailgoCSSElement: HTMLStyleElement = createElement(\n \"style\"\n ) as HTMLStyleElement;\n mailgoCSSElement.id = \"mailgo-style\";\n mailgoCSSElement.type = \"text/css\";\n mailgoCSSElement.appendChild(createTextNode(mailgoCSS));\n document.head.appendChild(mailgoCSSElement);\n};\n\n// mailgo\nfunction mailgo(mailgoConfig?: MailgoConfig): void {\n // set the global config merging window mailgConfig and mailgoConfig passed as a parameter\n config = { ...mailgoConfig, ...((window as any)?.mailgoConfig || null) };\n\n // if the window is defined...\n if (window && typeof window !== \"undefined\") {\n // add the style for mailgo\n mailgoStyle();\n\n // if is set an initEvent add the listener\n if (config?.initEvent) {\n if (config?.listenerOptions) {\n // listener options specified\n document.addEventListener(\n config.initEvent,\n () => {\n mailgoInit();\n },\n config.listenerOptions\n );\n } else {\n // no listener options\n document.addEventListener(config.initEvent, () => {\n mailgoInit();\n });\n }\n } else {\n mailgoInit();\n }\n }\n}\n\nexport default mailgo;\n","// webpack > extensions/mailgo.chrome.js\n// script to add in Chrome extension\n// https://github.com/manzinello/mailgo-chrome-extension\n\nimport mailgo from \"../src/mailgo\";\n\n// check if mailgo HTML is already present in the page\nlet mailgoExists = !!document.getElementById(\"mailgo\");\n\nif (!mailgoExists) mailgo();\n"],"sourceRoot":""} \ No newline at end of file diff --git a/extensions/mailgo.firefox.min.js b/extensions/mailgo.firefox.min.js deleted file mode 100644 index ffc6e26..0000000 --- a/extensions/mailgo.firefox.min.js +++ /dev/null @@ -1,2 +0,0 @@ -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","es","de","fr","pt","nl","ru"],"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 ","bcc_":"ccn ","subject_":"oggetto ","body_":"testo ","call":"chiama","open":"apri","_default":" ","_as_default":" ","copy":"copia"},"es":{"open_in_":"abrir con ","bcc_":"cco ","subject_":"asunto ","body_":"cuerpo ","call":"llamar","open":"abrir","_default":" predefinido","_as_default":" por defecto","copy":"copiar"},"de":{"open_in_":"Öffnen in ","subject_":"Betreff ","body_":"Nachricht ","call":"Anrufen","open":"Öffnen","_default":" mit Standard","_as_default":" mit Standard","copy":"kopieren"},"pt":{"open_in_":"abrir com ","bcc_":"cco ","subject_":"assunto ","body_":"corpo ","call":"ligar","open":"abrir","_default":" padrão","_as_default":" por padrão","copy":"copiar"},"fr":{"open_in_":"Ouvrir dans ","bcc_":"cci ","subject_":"sujet ","body_":"contenu ","call":"Appeler","open":"Ouvrir","_default":" par défaut","_as_default":" par défaut","copy":"Copier"},"nl":{"subject_":"onderwerp ","body_":"bericht ","call":"bellen","open":"openen","_default":" standaard","_as_default":" als standaard","copy":"kopiëren"},"ru":{"open_in_":"открыть в ","subject_":"тема ","body_":"тело ","call":"позвонить","open":"открыть","_default":" по умолчанию","_as_default":" по умолчанию","copy":"скопировать"}}}')},function(e,t,a){var o=a(2);e.exports="string"==typeof o?o:o.toString()},function(e,t,a){var o=a(3)(!1);o.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:16.5px;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:#20232a;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.95;border-radius:20px;box-shadow:0 3px 20px rgba(32,35,42,0.5);color:#4a4a4a;display:flex;flex-direction:column;overflow:auto;padding:24px;transition:0.5s box-shadow}.m-modal .m-modal-content:hover,.m-modal .m-modal-content:focus,.m-modal .m-modal-content:active{opacity:1}.m-modal .m-modal-content .m-title{margin-bottom:8px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;line-height:1.2em}.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{cursor:pointer;padding:10px;color:#4a4a4a;border-radius:20px;text-decoration:none}.m-modal .m-modal-content a.m-gmail{color:#c0372a}.m-modal .m-modal-content a.m-gmail:hover,.m-modal .m-modal-content a.m-gmail:focus,.m-modal .m-modal-content a.m-gmail:active{background-color:rgba(212,70,56,0.08);color:#c0372a}.m-modal .m-modal-content a.m-outlook{color:#0967aa}.m-modal .m-modal-content a.m-outlook:hover,.m-modal .m-modal-content a.m-outlook:focus,.m-modal .m-modal-content a.m-outlook:active{background-color:rgba(0,114,198,0.08);color:#0967aa}.m-modal .m-modal-content a.m-tg{color:#086da0}.m-modal .m-modal-content a.m-tg:hover,.m-modal .m-modal-content a.m-tg:focus,.m-modal .m-modal-content a.m-tg:active{background-color:rgba(0,136,204,0.08);color:#086da0}.m-modal .m-modal-content a.m-wa{color:#067466}.m-modal .m-modal-content a.m-wa:hover,.m-modal .m-modal-content a.m-wa:focus,.m-modal .m-modal-content a.m-wa:active{background-color:rgba(0,191,165,0.08);color:#067466}.m-modal .m-modal-content a.m-skype{color:#076d92}.m-modal .m-modal-content a.m-skype:hover,.m-modal .m-modal-content a.m-skype:focus,.m-modal .m-modal-content a.m-skype:active{background-color:rgba(0,175,240,0.08);color:#076d92}.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-default:focus,.m-modal .m-modal-content a.m-default:active,.m-modal .m-modal-content a.m-copy:hover,.m-modal .m-modal-content a.m-copy:focus,.m-modal .m-modal-content a.m-copy:active{background-color:rgba(0,0,0,0.08);color:#4a4a4a}.m-modal .m-modal-content a.m-by{font-size:12px;margin-top:0.8rem;padding:5px;color:#4a4a4a}.m-modal .m-modal-content a.m-by:hover,.m-modal .m-modal-content a.m-by:focus,.m-modal .m-modal-content a.m-by:active{color:#3d3d3d}.m-modal .m-modal-content .w-500{font-weight:500}.m-modal.m-dark .m-modal-content{background-color:#20232a}.m-modal.m-dark .m-modal-content,.m-modal.m-dark .m-modal-content p,.m-modal.m-dark .m-modal-content p span,.m-modal.m-dark .m-modal-content strong{color:#fff}.m-modal.m-dark .m-modal-content a{color:#eaeaea}.m-modal.m-dark .m-modal-content a:not(.m-by):hover,.m-modal.m-dark .m-modal-content a:not(.m-by):focus,.m-modal.m-dark .m-modal-content a:not(.m-by):active{background-color:rgba(134,134,134,0.08);color:#eaeaea}.m-modal.m-dark .m-modal-content a.m-gmail{color:#e07d73}.m-modal.m-dark .m-modal-content a.m-gmail:hover,.m-modal.m-dark .m-modal-content a.m-gmail:focus,.m-modal.m-dark .m-modal-content a.m-gmail:active{background-color:rgba(212,70,56,0.08);color:#e07d73}.m-modal.m-dark .m-modal-content a.m-outlook{color:#4c9cd7}.m-modal.m-dark .m-modal-content a.m-outlook:hover,.m-modal.m-dark .m-modal-content a.m-outlook:focus,.m-modal.m-dark .m-modal-content a.m-outlook:active{background-color:rgba(0,114,198,0.08);color:#4c9cd7}.m-modal.m-dark .m-modal-content a.m-tg{color:#4cabdb}.m-modal.m-dark .m-modal-content a.m-tg:hover,.m-modal.m-dark .m-modal-content a.m-tg:focus,.m-modal.m-dark .m-modal-content a.m-tg:active{background-color:rgba(0,136,204,0.08);color:#4cabdb}.m-modal.m-dark .m-modal-content a.m-wa{color:#4cd2c0}.m-modal.m-dark .m-modal-content a.m-wa:hover,.m-modal.m-dark .m-modal-content a.m-wa:focus,.m-modal.m-dark .m-modal-content a.m-wa:active{background-color:rgba(0,191,165,0.08);color:#4cd2c0}.m-modal.m-dark .m-modal-content a.m-skype{color:#4cc7f4}.m-modal.m-dark .m-modal-content a.m-skype:hover,.m-modal.m-dark .m-modal-content a.m-skype:focus,.m-modal.m-dark .m-modal-content a.m-skype:active{background-color:rgba(0,175,240,0.08);color:#4cc7f4}.m-modal.m-dark .m-modal-content a.m-by:hover,.m-modal.m-dark .m-modal-content a.m-by:focus,.m-modal.m-dark .m-modal-content a.m-by:active{color:#fff}\n',""]),e.exports=o},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=(l=o,i=btoa(unescape(encodeURIComponent(JSON.stringify(l)))),m="sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(i),"/*# ".concat(m," */")),d=o.sources.map((function(e){return"/*# sourceURL=".concat(o.sourceRoot||"").concat(e," */")}));return[a].concat(d).concat([n]).join("\n")}var l,i,m;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 d=0;d0&&void 0!==arguments[0]?arguments[0]:"mail",a=arguments.length>1?arguments[1]:void 0;if("mail"===t){var o,n;if(a.href&&a.href.toLowerCase().startsWith(N)){T=decodeURIComponent(a.href.split("?")[0].split(N)[1].trim());var d=new URL(a.href).searchParams;M=d.get("cc"),D=d.get("bcc"),W=d.get("subject"),B=d.get("body")}else T=a.getAttribute("data-address")+"@"+a.getAttribute("data-domain"),new URL(N+encodeURIComponent(T)),M=a.getAttribute("data-cc-address")+"@"+a.getAttribute("data-cc-domain"),D=a.getAttribute("data-bcc-address")+"@"+a.getAttribute("data-bcc-domain"),W=a.getAttribute("data-subject"),B=a.getAttribute("data-body");if(void 0===(null===(o=l)||void 0===o?void 0:o.validateEmail)||!0===(null===(n=l)||void 0===n?void 0:n.validateEmail)){if(!we(T.split(",")))return;M&&!we(M.split(","))&&(M=""),D&&!we(D.split(","))&&(D="")}c.innerHTML=T.split(",").join("
"),M?(s.style.display="block",b.innerHTML=M.split(",").join("
")):s.style.display="none",D?(p.style.display="block",v.innerHTML=D.split(",").join("
")):p.style.display="none",W?(u.style.display="block",g.textContent=W):u.style.display="none",B?(f.style.display="block",h.textContent=B):f.style.display="none",k.addEventListener("click",Z),_.addEventListener("click",$),z=se(T),w.addEventListener("click",G),A.addEventListener("click",(function(){return ee(T)}))}else if("tel"===t){if(a.href&&a.href.toLowerCase().startsWith(R)?H=decodeURIComponent(a.href.split("?")[0].split(R)[1].trim()):a.href&&a.href.toLowerCase().startsWith(I)?H=decodeURIComponent(a.href.split("?")[0].split(I)[1].trim()):a.hasAttribute("data-tel")&&(H=a.getAttribute("data-tel"),a.getAttribute("data-msg")),!Ce(H))return;F=a.hasAttribute("data-telegram")?a.getAttribute("data-telegram"):null,a.hasAttribute("data-skype")&&(q=a.getAttribute("data-skype")),r.innerHTML=H,L.addEventListener("click",X),F?(document.getElementById("m-tg").style.display="block",C.addEventListener("click",Q)):document.getElementById("m-tg").style.display="none",x.addEventListener("click",V),j.addEventListener("click",Y),E.addEventListener("click",(function(){return ee(H)}))}(null===(e=l)||void 0===e?void 0:e.dark)||(a.classList.contains("dark")?he(t):ye(t)),ne(t),document.addEventListener("keydown",oe)}var Z=function(){var e="https://mail.google.com/mail/u/0/?view=cm&source=mailto&to="+encodeURIComponent(T);M&&(e=e.concat("&cc="+encodeURIComponent(M))),D&&(e=e.concat("&bcc="+encodeURIComponent(D))),W&&(e=e.concat("&subject="+W)),B&&(e=e.concat("&body="+B)),window.open(e,"_blank"),de()},$=function(){var e="https://outlook.live.com/owa/?path=/mail/action/compose&to="+encodeURIComponent(T);W&&(e=e.concat("&subject="+W)),B&&(e=e.concat("&body="+B)),window.open(e,"_blank"),de()},G=function(){re(z),de()},Q=function(){var e="https://t.me/"+F;window.open(e,"_blank"),de()},V=function(){var e="skype:"+(""!==q?q:H);window.open(e,"_blank"),de()},X=function(){var e="https://wa.me/"+H;window.open(e,"_blank"),de()},Y=function(){var e="tel:"+H;window.open(e),de()},ee=function(e){var t;Le(e),(t=le("mail")?A:E).textContent="copied",setTimeout((function(){t.textContent="copy",de()}),999)};function te(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"mail",a=e.href;return"mail"===t?a&&a.toLowerCase().startsWith(N)&&!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(R)||a.toLowerCase().startsWith(I))&&!e.classList.contains("no-mailgo")||e.hasAttribute("data-tel")&&a&&"#mailgo"===e.getAttribute("href").toLowerCase()||e.classList&&e.classList.contains("mailgo"))}function ae(e){if(!document.contains(i)||!document.contains(m))return!1;if(le("mail")||le("tel"))return!1;var t=e.composedPath&&e.composedPath()||ke(e.target);return t&&t.forEach((function(t){return!(t instanceof HTMLDocument||t instanceof Window)&&(te(t,"mail")?(e.preventDefault(),K("mail",t),!0):te(t,"tel")?(e.preventDefault(),K("tel",t),!0):void 0)})),!1}var oe=function(e){if(le("mail"))switch(e.keyCode){case 27:de();break;case 71:Z();break;case 79:$();break;case 32:case 13:G();break;case 67:ee(T);break;default:return}else if(le("tel"))switch(e.keyCode){case 27:de();break;case 84:Q();break;case 87:X();break;case 32:case 13:Y();break;case 67:ee(H);break;default:return}},ne=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"mail";fe(e,"flex")},de=function(){fe("mail","none"),fe("tel","none"),document.removeEventListener("keydown",oe)},le=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"mail";return"flex"===ue(e)},ie=function(){var e=me("a");return e.href="https://mailgo.dev?ref=mailgo-modal",e.className="m-by",e.target="_blank",e.rel="noopener noreferrer",e.appendChild(ce("mailgo.dev")),e},me=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"div";return document.createElement(e)},ce=function(e){return document.createTextNode(e)},re=function(e){return window.location.href=N+atob(e)},se=function(e){return btoa(e)},pe=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"mail";return"tel"===e?m:i},ue=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"mail";return pe(e).style.display},fe=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"mail",t=arguments.length>1?arguments[1]:void 0,a=pe(e);a.style.display=t,"flex"===t?(y=document.activeElement,a.setAttribute("aria-hidden","false"),a.setAttribute("tabindex","0"),a.focus(),be(a)):(a.setAttribute("aria-hidden","true"),a.setAttribute("tabindex","-1"),y.focus())},be=function(e){var t=e;t.querySelector(".m-modal-content a:last-of-type").addEventListener("keydown",ve),t.querySelector(".m-modal-content a:first-of-type").addEventListener("keydown",ge)},ve=function(e){"Tab"===e.code&&!1===e.shiftKey&&(e.preventDefault(),e.target.closest("div").querySelector("a:first-of-type").focus())},ge=function(e){"Tab"===e.code&&!0===e.shiftKey&&(e.preventDefault(),e.target.closest("div").querySelector("a:last-of-type").focus())},he=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"mail";return pe(e).classList.add("m-dark")},ye=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"mail";return pe(e).classList.remove("m-dark")},ke=function(e){for(var t=[];e;){if(t.push(e),"HTML"===e.tagName)return t.push(document),t.push(window),t;e=e.parentElement}},_e=function(e){return/^(([^<>()[\]\\.,;:\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)},we=function(e){return e.every(_e)},Ce=function(e){return/^[+]{0,1}[\s0-9]{0,}[(]{0,1}[0-9]{1,4}[)]{0,1}[-\s\./0-9]*$/.test(e)},Le=function(e){var t=me("textarea");t.value=e,t.setAttribute("readonly",""),t.style.position="absolute",t.style.left="-9999px",document.body.appendChild(t);var 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 xe=function(e){var t,a,o,d;l=n(n({},e),(null===(t=window)||void 0===t?void 0:t.mailgoConfig)||null),window&&"undefined"!=typeof window&&((d=me("style")).id="mailgo-style",d.type="text/css",d.appendChild(ce(S)),document.head.appendChild(d),(null===(a=l)||void 0===a?void 0:a.initEvent)?(null===(o=l)||void 0===o?void 0:o.listenerOptions)?document.addEventListener(l.initEvent,(function(){J()}),l.listenerOptions):document.addEventListener(l.initEvent,(function(){J()})):J())};!!document.getElementById("mailgo")||xe()}]); -//# sourceMappingURL=mailgo.firefox.min.js.map \ No newline at end of file diff --git a/extensions/mailgo.firefox.min.js.map b/extensions/mailgo.firefox.min.js.map deleted file mode 100644 index b089fd1..0000000 --- a/extensions/mailgo.firefox.min.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack://mailgo/webpack/bootstrap","webpack://mailgo/../src/mailgo.scss?16f9","webpack://mailgo/../src/mailgo.scss","webpack://mailgo/../node_modules/css-loader/dist/runtime/api.js","webpack://mailgo/../src/mailgo.ts","webpack://mailgo/./mailgo.firefox.ts"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","result","toString","___CSS_LOADER_EXPORT___","___CSS_LOADER_API_IMPORT___","push","useSourceMap","list","this","map","item","content","cssMapping","btoa","sourceMapping","sourceMap","base64","unescape","encodeURIComponent","JSON","stringify","data","concat","sourceURLs","sources","source","sourceRoot","join","cssWithMappingToString","mediaQuery","dedupe","alreadyImportedModules","length","id","_i","config","modalMailto","modalTel","title","titleTel","detailCc","detailBcc","detailSubject","detailBody","ccValue","bccValue","subjectValue","bodyValue","activatedLink","gmail","outlook","open","telegram","wa","skype","copyMail","copyTel","i18n","require","mailgoCSS","MAILTO","TEL","CALLTO","DEFAULT_BTN_HREF","lang","mail","encEmail","cc","bcc","subject","bodyMail","tel","telegramUsername","skypeUsername","mailgoInit","translations","languages","indexOf","forceLang","htmlLang","document","documentElement","defaultStrings","strings","getElementById","createElement","style","display","classList","add","setAttribute","dark","enableDarkMode","disableDarkMode","modalBackground","className","appendChild","modalContent","details","ccSpan","createTextNode","cc_","bccSpan","bcc_","subjectSpan","subject_","bodySpan","body_","href","open_in_","gmailSpan","outlookSpan","openSpan","_default","copy","showFooter","byElement","body","addEventListener","hideMailgo","telegramSpan","waSpan","whatsapp","skypeSpan","callSpan","_as_default","mailgoCheckRender","mailgoRender","type","mailgoElement","toLowerCase","startsWith","decodeURIComponent","split","trim","urlParams","URL","searchParams","getAttribute","validateEmail","validateEmails","innerHTML","textContent","openGmail","openOutlook","encodeEmail","openDefault","hasAttribute","validateTel","openWhatsApp","openTelegram","openSkype","callDefault","contains","showMailgo","mailgoKeydown","gmailUrl","window","outlookUrl","mailToEncoded","tgUrl","skypeUrl","waUrl","callUrl","activeCopy","copyToClipboard","mailgoIsShowing","setTimeout","isMailgo","element","event","path","composedPath","target","forEach","HTMLDocument","Window","preventDefault","keyboardEvent","keyCode","setModalDisplay","removeEventListener","getModalDisplay","by","rel","encoded","location","atob","email","getModalHTMLElement","ref","modal","activeElement","focus","setFocusLoop","querySelector","leaveLastLink","leaveFirstLink","e","code","shiftKey","closest","remove","el","tagName","parentElement","test","arr","every","str","position","left","selected","getSelection","rangeCount","getRangeAt","select","execCommand","removeChild","removeAllRanges","addRange","mailgo","mailgoConfig","mailgoCSSElement","head","initEvent","listenerOptions"],"mappings":"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","file":"mailgo.firefox.min.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 4);\n","\n var result = require(\"!!../node_modules/css-loader/dist/cjs.js??ref--5-1!../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 ","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../node_modules/css-loader/dist/runtime/api.js\");\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(false);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".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:16.5px;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:#20232a;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.95;border-radius:20px;box-shadow:0 3px 20px rgba(32,35,42,0.5);color:#4a4a4a;display:flex;flex-direction:column;overflow:auto;padding:24px;transition:0.5s box-shadow}.m-modal .m-modal-content:hover,.m-modal .m-modal-content:focus,.m-modal .m-modal-content:active{opacity:1}.m-modal .m-modal-content .m-title{margin-bottom:8px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;line-height:1.2em}.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{cursor:pointer;padding:10px;color:#4a4a4a;border-radius:20px;text-decoration:none}.m-modal .m-modal-content a.m-gmail{color:#c0372a}.m-modal .m-modal-content a.m-gmail:hover,.m-modal .m-modal-content a.m-gmail:focus,.m-modal .m-modal-content a.m-gmail:active{background-color:rgba(212,70,56,0.08);color:#c0372a}.m-modal .m-modal-content a.m-outlook{color:#0967aa}.m-modal .m-modal-content a.m-outlook:hover,.m-modal .m-modal-content a.m-outlook:focus,.m-modal .m-modal-content a.m-outlook:active{background-color:rgba(0,114,198,0.08);color:#0967aa}.m-modal .m-modal-content a.m-tg{color:#086da0}.m-modal .m-modal-content a.m-tg:hover,.m-modal .m-modal-content a.m-tg:focus,.m-modal .m-modal-content a.m-tg:active{background-color:rgba(0,136,204,0.08);color:#086da0}.m-modal .m-modal-content a.m-wa{color:#067466}.m-modal .m-modal-content a.m-wa:hover,.m-modal .m-modal-content a.m-wa:focus,.m-modal .m-modal-content a.m-wa:active{background-color:rgba(0,191,165,0.08);color:#067466}.m-modal .m-modal-content a.m-skype{color:#076d92}.m-modal .m-modal-content a.m-skype:hover,.m-modal .m-modal-content a.m-skype:focus,.m-modal .m-modal-content a.m-skype:active{background-color:rgba(0,175,240,0.08);color:#076d92}.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-default:focus,.m-modal .m-modal-content a.m-default:active,.m-modal .m-modal-content a.m-copy:hover,.m-modal .m-modal-content a.m-copy:focus,.m-modal .m-modal-content a.m-copy:active{background-color:rgba(0,0,0,0.08);color:#4a4a4a}.m-modal .m-modal-content a.m-by{font-size:12px;margin-top:0.8rem;padding:5px;color:#4a4a4a}.m-modal .m-modal-content a.m-by:hover,.m-modal .m-modal-content a.m-by:focus,.m-modal .m-modal-content a.m-by:active{color:#3d3d3d}.m-modal .m-modal-content .w-500{font-weight:500}.m-modal.m-dark .m-modal-content{background-color:#20232a}.m-modal.m-dark .m-modal-content,.m-modal.m-dark .m-modal-content p,.m-modal.m-dark .m-modal-content p span,.m-modal.m-dark .m-modal-content strong{color:#fff}.m-modal.m-dark .m-modal-content a{color:#eaeaea}.m-modal.m-dark .m-modal-content a:not(.m-by):hover,.m-modal.m-dark .m-modal-content a:not(.m-by):focus,.m-modal.m-dark .m-modal-content a:not(.m-by):active{background-color:rgba(134,134,134,0.08);color:#eaeaea}.m-modal.m-dark .m-modal-content a.m-gmail{color:#e07d73}.m-modal.m-dark .m-modal-content a.m-gmail:hover,.m-modal.m-dark .m-modal-content a.m-gmail:focus,.m-modal.m-dark .m-modal-content a.m-gmail:active{background-color:rgba(212,70,56,0.08);color:#e07d73}.m-modal.m-dark .m-modal-content a.m-outlook{color:#4c9cd7}.m-modal.m-dark .m-modal-content a.m-outlook:hover,.m-modal.m-dark .m-modal-content a.m-outlook:focus,.m-modal.m-dark .m-modal-content a.m-outlook:active{background-color:rgba(0,114,198,0.08);color:#4c9cd7}.m-modal.m-dark .m-modal-content a.m-tg{color:#4cabdb}.m-modal.m-dark .m-modal-content a.m-tg:hover,.m-modal.m-dark .m-modal-content a.m-tg:focus,.m-modal.m-dark .m-modal-content a.m-tg:active{background-color:rgba(0,136,204,0.08);color:#4cabdb}.m-modal.m-dark .m-modal-content a.m-wa{color:#4cd2c0}.m-modal.m-dark .m-modal-content a.m-wa:hover,.m-modal.m-dark .m-modal-content a.m-wa:focus,.m-modal.m-dark .m-modal-content a.m-wa:active{background-color:rgba(0,191,165,0.08);color:#4cd2c0}.m-modal.m-dark .m-modal-content a.m-skype{color:#4cc7f4}.m-modal.m-dark .m-modal-content a.m-skype:hover,.m-modal.m-dark .m-modal-content a.m-skype:focus,.m-modal.m-dark .m-modal-content a.m-skype:active{background-color:rgba(0,175,240,0.08);color:#4cc7f4}.m-modal.m-dark .m-modal-content a.m-by:hover,.m-modal.m-dark .m-modal-content a.m-by:focus,.m-modal.m-dark .m-modal-content a.m-by:active{color:#fff}\\n\", \"\"]);\n// Exports\nmodule.exports = ___CSS_LOADER_EXPORT___;\n","\"use strict\";\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}","import {\n MailgoConfig,\n MailgoTranslations,\n MailgoTranslation,\n MailgoI18n,\n} from \"mailgo\";\n\n// i18n for mailgo\nconst i18n: MailgoI18n = require(\"../i18n/i18n.json\");\n\n// mailgo scss\nconst mailgoCSS: string = require(\"./mailgo.scss\").toString();\n\n// default lang\nconst DEFAULT_LANG: string = \"en\";\n\n// links\nconst MAILTO: string = \"mailto:\";\nconst TEL: string = \"tel:\";\nconst CALLTO: string = \"callto:\";\n\n// deep linking\nconst outlookDeepLink: string = \"ms-outlook://\";\n\n// mailgo types\nconst MAIL_TYPE: string = \"mail\";\nconst TEL_TYPE: string = \"tel\";\n\n// default href for links\nconst DEFAULT_BTN_HREF: string = \"javascript:void(0);\";\n\n// useful html tags\nconst spanHTMLTag: string = \"span\";\nconst aHTMLTag: string = \"a\";\nconst pHTMLTag: string = \"p\";\n\n// global mailgo config object\nlet config: MailgoConfig;\n\n// default language\nlet lang: string = DEFAULT_LANG;\n\n// modals global object\nlet modalMailto: HTMLElement, modalTel: HTMLElement;\n\n// mailgo variables\nlet url: URL,\n mail: string = \"\",\n encEmail: string = \"\",\n cc: string = \"\",\n bcc: string = \"\",\n subject: string = \"\",\n bodyMail: string = \"\";\n\n// mailgo tel variables\nlet tel: string = \"\",\n msg: string = \"\",\n telegramUsername: string = \"\",\n skypeUsername: string = \"\";\n\n// the DOM elements\nlet title: HTMLElement,\n titleTel: HTMLElement,\n detailCc: HTMLElement,\n detailBcc: HTMLElement,\n detailSubject: HTMLElement,\n detailBody: HTMLElement,\n ccValue: HTMLElement,\n bccValue: HTMLElement,\n subjectValue: HTMLElement,\n bodyValue: HTMLElement,\n activatedLink: HTMLElement;\n\n// mailgo buttons (actions)\nlet gmail: HTMLLinkElement,\n outlook: HTMLLinkElement,\n open: HTMLLinkElement,\n telegram: HTMLLinkElement,\n wa: HTMLLinkElement,\n skype: HTMLLinkElement,\n call: HTMLLinkElement,\n copyMail: HTMLLinkElement,\n copyTel: HTMLLinkElement;\n\n/**\n * mailgoInit\n * the function that creates the mailgo elements in DOM\n */\nconst mailgoInit = (): void => {\n // translations\n let {\n translations,\n }: { translations: MailgoTranslations } = i18n as MailgoI18n;\n\n // if a default language is defined use it\n if (config?.lang && i18n.languages.indexOf(config.lang) !== -1) {\n lang = config.lang;\n }\n\n // if is defined use it!\n if (!config?.forceLang) {\n // keep the lang from html\n let htmlLang: string = document.documentElement.lang;\n\n // if there are translations...\n if (i18n.languages.indexOf(htmlLang) !== -1) {\n lang = document.documentElement.lang;\n }\n }\n\n // strings\n let defaultStrings: MailgoTranslation = translations[DEFAULT_LANG];\n let strings: MailgoTranslation = translations[lang];\n\n // mailgo, if mailgo not already exists\n let mailgoExists = !!document.getElementById(\"mailgo\");\n\n if (!mailgoExists) {\n // modal\n modalMailto = createElement() as HTMLElement;\n modalMailto.style.display = \"none\";\n modalMailto.id = \"mailgo\";\n modalMailto.classList.add(\"m-modal\");\n modalMailto.setAttribute(\"role\", \"dialog\");\n modalMailto.setAttribute(\"tabindex\", \"-1\");\n modalMailto.setAttribute(\"aria-labelledby\", \"m-title\");\n\n // if dark is in config\n if (config?.dark) {\n enableDarkMode(MAIL_TYPE);\n } else {\n disableDarkMode(MAIL_TYPE);\n }\n\n // background\n let modalBackground: HTMLElement = createElement();\n modalBackground.className = \"m-modal-back\";\n modalMailto.appendChild(modalBackground);\n\n // modal content\n let modalContent: HTMLElement = createElement();\n modalContent.className = \"m-modal-content\";\n modalMailto.appendChild(modalContent);\n\n // title (email address)\n title = createElement(\"strong\");\n title.id = \"m-title\";\n title.className = \"m-title\";\n modalContent.appendChild(title);\n\n // details\n let details: HTMLElement = createElement();\n details.id = \"m-details\";\n details.className = \"m-details\";\n\n detailCc = createElement(pHTMLTag);\n detailCc.id = \"m-cc\";\n let ccSpan: HTMLElement = createElement(spanHTMLTag);\n ccSpan.className = \"w-500\";\n ccSpan.appendChild(createTextNode(strings.cc_ || defaultStrings.cc_));\n ccValue = createElement(spanHTMLTag);\n ccValue.id = \"m-cc-value\";\n detailCc.appendChild(ccSpan);\n detailCc.appendChild(ccValue);\n details.appendChild(detailCc);\n\n detailBcc = createElement(pHTMLTag);\n detailBcc.id = \"m-bcc\";\n let bccSpan: HTMLElement = createElement(spanHTMLTag);\n bccSpan.className = \"w-500\";\n bccSpan.appendChild(createTextNode(strings.bcc_ || defaultStrings.bcc_));\n bccValue = createElement(spanHTMLTag);\n bccValue.id = \"m-bcc-value\";\n detailBcc.appendChild(bccSpan);\n detailBcc.appendChild(bccValue);\n details.appendChild(detailBcc);\n\n detailSubject = createElement(pHTMLTag);\n detailSubject.id = \"m-subject\";\n let subjectSpan: HTMLElement = createElement(spanHTMLTag);\n subjectSpan.className = \"w-500\";\n subjectSpan.appendChild(\n createTextNode(strings.subject_ || defaultStrings.subject_)\n );\n subjectValue = createElement(spanHTMLTag);\n subjectValue.id = \"m-subject-value\";\n detailSubject.appendChild(subjectSpan);\n detailSubject.appendChild(subjectValue);\n details.appendChild(detailSubject);\n\n detailBody = createElement(pHTMLTag);\n detailBody.id = \"m-body\";\n let bodySpan: HTMLElement = createElement(spanHTMLTag);\n bodySpan.className = \"w-500\";\n bodySpan.appendChild(createTextNode(strings.body_ || defaultStrings.body_));\n bodyValue = createElement(spanHTMLTag);\n bodyValue.id = \"m-body-value\";\n detailBody.appendChild(bodySpan);\n detailBody.appendChild(bodyValue);\n details.appendChild(detailBody);\n\n modalContent.appendChild(details);\n\n // Gmail\n gmail = createElement(aHTMLTag) as HTMLLinkElement;\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(\n createTextNode(strings.open_in_ || defaultStrings.open_in_)\n );\n let gmailSpan: HTMLElement = createElement(spanHTMLTag);\n gmailSpan.className = \"w-500\";\n gmailSpan.appendChild(\n createTextNode(strings.gmail || defaultStrings.gmail)\n );\n gmail.appendChild(gmailSpan);\n\n modalContent.appendChild(gmail);\n\n // Outlook\n outlook = createElement(aHTMLTag) as HTMLLinkElement;\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(\n createTextNode(strings.open_in_ || defaultStrings.open_in_)\n );\n let outlookSpan: HTMLElement = createElement(spanHTMLTag);\n outlookSpan.className = \"w-500\";\n outlookSpan.appendChild(\n createTextNode(strings.outlook || defaultStrings.outlook)\n );\n outlook.appendChild(outlookSpan);\n\n modalContent.appendChild(outlook);\n\n // open default\n open = createElement(aHTMLTag) as HTMLLinkElement;\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: HTMLElement = createElement(spanHTMLTag);\n openSpan.className = \"w-500\";\n openSpan.appendChild(createTextNode(strings.open || defaultStrings.open));\n open.appendChild(openSpan);\n open.appendChild(\n createTextNode(strings._default || defaultStrings._default)\n );\n\n modalContent.appendChild(open);\n\n // copy\n copyMail = createElement(aHTMLTag) as HTMLLinkElement;\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(strings.copy || defaultStrings.copy));\n\n modalContent.appendChild(copyMail);\n\n // hide mailgo.dev in footer only if showFooter is defined and equal to false\n if (\n typeof config?.showFooter === \"undefined\" ||\n config?.showFooter !== false\n ) {\n modalContent.appendChild(byElement());\n }\n\n // add the modal at the end of the body\n document.body.appendChild(modalMailto);\n\n // every click outside the modal will hide the modal\n modalBackground.addEventListener(\"click\", hideMailgo);\n }\n\n // mailgo tel, if mailgo-tel not already exists\n let mailgoTelExists = !!document.getElementById(\"mailgo-tel\");\n\n if (!mailgoTelExists) {\n // modal\n modalTel = createElement() as HTMLElement;\n modalTel.style.display = \"none\";\n modalTel.id = \"mailgo-tel\";\n modalTel.classList.add(\"m-modal\");\n modalTel.setAttribute(\"role\", \"dialog\");\n modalTel.setAttribute(\"tabindex\", \"-1\");\n modalTel.setAttribute(\"aria-labelledby\", \"m-tel-title\");\n\n // if dark is in config\n if (config?.dark) {\n enableDarkMode(TEL_TYPE);\n } else {\n disableDarkMode(TEL_TYPE);\n }\n\n // background\n let modalBackground: HTMLElement = createElement();\n modalBackground.className = \"m-modal-back\";\n modalTel.appendChild(modalBackground);\n\n // modal content\n let modalContent: HTMLElement = createElement();\n modalContent.className = \"m-modal-content\";\n modalTel.appendChild(modalContent);\n\n // title (telephone number)\n titleTel = createElement(\"strong\");\n titleTel.id = \"m-tel-title\";\n titleTel.className = \"m-title\";\n modalContent.appendChild(titleTel);\n\n // Telegram\n telegram = createElement(aHTMLTag) as HTMLLinkElement;\n telegram.id = \"m-tg\";\n telegram.href = DEFAULT_BTN_HREF;\n telegram.classList.add(\"m-open\");\n telegram.classList.add(\"m-tg\");\n\n // by default not display\n telegram.style.display = \"none\";\n\n telegram.appendChild(\n createTextNode(strings.open_in_ || defaultStrings.open_in_)\n );\n let telegramSpan: HTMLElement = createElement(spanHTMLTag);\n telegramSpan.className = \"w-500\";\n telegramSpan.appendChild(\n createTextNode(strings.telegram || defaultStrings.telegram)\n );\n telegram.appendChild(telegramSpan);\n\n modalContent.appendChild(telegram);\n\n // WhatsApp\n wa = createElement(aHTMLTag) as HTMLLinkElement;\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_ || defaultStrings.open_in_));\n let waSpan: HTMLElement = createElement(spanHTMLTag);\n waSpan.className = \"w-500\";\n waSpan.appendChild(\n createTextNode(strings.whatsapp || defaultStrings.whatsapp)\n );\n wa.appendChild(waSpan);\n\n modalContent.appendChild(wa);\n\n // Skype\n skype = createElement(aHTMLTag) as HTMLLinkElement;\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(\n createTextNode(strings.open_in_ || defaultStrings.open_in_)\n );\n let skypeSpan: HTMLElement = createElement(spanHTMLTag);\n skypeSpan.className = \"w-500\";\n skypeSpan.appendChild(\n createTextNode(strings.skype || defaultStrings.skype)\n );\n skype.appendChild(skypeSpan);\n\n modalContent.appendChild(skype);\n\n // call default\n call = createElement(aHTMLTag) as HTMLLinkElement;\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: HTMLElement = createElement(spanHTMLTag);\n callSpan.className = \"w-500\";\n callSpan.appendChild(createTextNode(strings.call || defaultStrings.call));\n call.appendChild(callSpan);\n call.appendChild(\n createTextNode(strings._as_default || defaultStrings._as_default)\n );\n\n modalContent.appendChild(call);\n\n // copy\n copyTel = createElement(aHTMLTag) as HTMLLinkElement;\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(strings.copy || defaultStrings.copy));\n\n modalContent.appendChild(copyTel);\n\n // hide mailgo.dev in footer only if showFooter is defined and equal to false\n if (\n typeof config?.showFooter === \"undefined\" ||\n config?.showFooter !== false\n ) {\n modalContent.appendChild(byElement());\n }\n\n // add the modal at the end of the body\n document.body.appendChild(modalTel);\n\n // every click outside the modal will hide the modal\n modalBackground.addEventListener(\"click\", hideMailgo);\n }\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/**\n * mailgoRender\n * function to render a mailgo (mail or tel)\n */\nexport function mailgoRender(\n type: string = MAIL_TYPE,\n mailgoElement: HTMLLinkElement\n): void {\n // mailgo mail\n if (type === MAIL_TYPE) {\n // if the element href=^\"mailto:\"\n if (\n mailgoElement.href &&\n mailgoElement.href.toLowerCase().startsWith(MAILTO)\n ) {\n mail = decodeURIComponent(\n mailgoElement.href.split(\"?\")[0].split(MAILTO)[1].trim()\n );\n\n url = new URL(mailgoElement.href);\n let urlParams: URLSearchParams = url.searchParams;\n\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 } else {\n // if the element href=\"#mailgo\" or class=\"mailgo\"\n // mail = data-address + @ + data-domain\n mail =\n mailgoElement.getAttribute(\"data-address\") +\n \"@\" +\n mailgoElement.getAttribute(\"data-domain\");\n\n url = new URL(MAILTO + encodeURIComponent(mail));\n\n // cc = data-cc-address + @ + data-cc-domain\n cc =\n mailgoElement.getAttribute(\"data-cc-address\") +\n \"@\" +\n mailgoElement.getAttribute(\"data-cc-domain\");\n\n // bcc = data-bcc-address + @ + data-bcc-domain\n bcc =\n mailgoElement.getAttribute(\"data-bcc-address\") +\n \"@\" +\n mailgoElement.getAttribute(\"data-bcc-domain\");\n\n // subject = data-subject\n subject = mailgoElement.getAttribute(\"data-subject\");\n\n // body = data-body\n bodyMail = mailgoElement.getAttribute(\"data-body\");\n }\n\n if (\n typeof config?.validateEmail === \"undefined\" ||\n config?.validateEmail === true\n ) {\n // validate the email address\n if (!validateEmails(mail.split(\",\"))) return;\n\n // if cc, bcc are not valid cc, bcc = \"\"\n if (cc && !validateEmails(cc.split(\",\"))) cc = \"\";\n if (bcc && !validateEmails(bcc.split(\",\"))) bcc = \"\";\n }\n\n // the title of the modal (email address)\n title.innerHTML = mail.split(\",\").join(\"
\");\n\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\n bcc\n ? ((detailBcc.style.display = \"block\"),\n (bccValue.innerHTML = bcc.split(\",\").join(\"
\")))\n : (detailBcc.style.display = \"none\");\n\n subject\n ? ((detailSubject.style.display = \"block\"),\n (subjectValue.textContent = subject))\n : (detailSubject.style.display = \"none\");\n\n bodyMail\n ? ((detailBody.style.display = \"block\"),\n (bodyValue.textContent = bodyMail))\n : (detailBody.style.display = \"none\");\n\n // add the actions\n gmail.addEventListener(\"click\", openGmail);\n\n outlook.addEventListener(\"click\", openOutlook);\n\n encEmail = encodeEmail(mail);\n open.addEventListener(\"click\", openDefault);\n\n copyMail.addEventListener(\"click\", () => copy(mail));\n }\n // mailgo tel\n else if (type === TEL_TYPE) {\n if (\n mailgoElement.href &&\n mailgoElement.href.toLowerCase().startsWith(TEL)\n ) {\n tel = decodeURIComponent(\n mailgoElement.href.split(\"?\")[0].split(TEL)[1].trim()\n );\n } else if (\n mailgoElement.href &&\n mailgoElement.href.toLowerCase().startsWith(CALLTO)\n ) {\n tel = decodeURIComponent(\n mailgoElement.href.split(\"?\")[0].split(CALLTO)[1].trim()\n );\n } else if (mailgoElement.hasAttribute(\"data-tel\")) {\n tel = mailgoElement.getAttribute(\"data-tel\");\n msg = mailgoElement.getAttribute(\"data-msg\");\n }\n\n // validate the phone number\n if (!validateTel(tel)) return;\n\n // Telegram username\n if (mailgoElement.hasAttribute(\"data-telegram\")) {\n telegramUsername = mailgoElement.getAttribute(\"data-telegram\");\n } else {\n telegramUsername = null;\n }\n\n // Telegram username\n if (mailgoElement.hasAttribute(\"data-skype\")) {\n skypeUsername = mailgoElement.getAttribute(\"data-skype\");\n }\n\n // the title of the modal (tel)\n titleTel.innerHTML = tel;\n\n // add the actions to buttons\n wa.addEventListener(\"click\", openWhatsApp);\n\n // telegram must be shown only if data-telegram is provided\n if (telegramUsername) {\n document.getElementById(\"m-tg\").style.display = \"block\";\n telegram.addEventListener(\"click\", openTelegram);\n } else {\n document.getElementById(\"m-tg\").style.display = \"none\";\n }\n\n skype.addEventListener(\"click\", openSkype);\n\n call.addEventListener(\"click\", callDefault);\n\n copyTel.addEventListener(\"click\", () => copy(tel));\n }\n\n // if config.dark is set to true then all the modals will be in dark mode\n if (!config?.dark) {\n // if the element contains dark as class enable dark mode\n if (mailgoElement.classList.contains(\"dark\")) {\n enableDarkMode(type);\n } else {\n disableDarkMode(type);\n }\n }\n\n // show the mailgo\n showMailgo(type);\n\n // add listener keyDown\n document.addEventListener(\"keydown\", mailgoKeydown);\n}\n\n// actions\nconst openGmail = (): void => {\n // Gmail url\n let gmailUrl: string =\n \"https://mail.google.com/mail/u/0/?view=cm&source=mailto&to=\" +\n encodeURIComponent(mail);\n\n // the details if provided\n if (cc) gmailUrl = gmailUrl.concat(\"&cc=\" + encodeURIComponent(cc));\n if (bcc) gmailUrl = gmailUrl.concat(\"&bcc=\" + encodeURIComponent(bcc));\n if (subject) gmailUrl = gmailUrl.concat(\"&subject=\" + subject);\n if (bodyMail) gmailUrl = gmailUrl.concat(\"&body=\" + bodyMail);\n\n // open the link\n window.open(gmailUrl, \"_blank\");\n\n // hide the modal\n hideMailgo();\n};\n\nconst openOutlook = (): void => {\n // Outlook url\n let outlookUrl: string =\n \"https://outlook.live.com/owa/?path=/mail/action/compose&to=\" +\n encodeURIComponent(mail);\n\n // the details if provided\n if (subject) outlookUrl = outlookUrl.concat(\"&subject=\" + subject);\n if (bodyMail) outlookUrl = outlookUrl.concat(\"&body=\" + bodyMail);\n\n // open the link\n window.open(outlookUrl, \"_blank\");\n\n // hide the modal\n hideMailgo();\n};\n\nconst openDefault = (): void => {\n mailToEncoded(encEmail);\n hideMailgo();\n};\n\nconst openTelegram = (): void => {\n // Telegram url\n let tgUrl: string = \"https://t.me/\" + telegramUsername;\n\n // open the url\n window.open(tgUrl, \"_blank\");\n\n // hide the modal\n hideMailgo();\n};\n\nconst openSkype = (): void => {\n let skype: string = skypeUsername !== \"\" ? skypeUsername : tel;\n\n // Telegram url\n let skypeUrl: string = \"skype:\" + skype;\n\n // open the url\n window.open(skypeUrl, \"_blank\");\n\n // hide the modal\n hideMailgo();\n};\n\nconst openWhatsApp = (): void => {\n // WhatsApp url\n let waUrl: string = \"https://wa.me/\" + tel;\n\n // the details if provided\n if (msg) waUrl + \"?text=\" + msg;\n\n // open the url\n window.open(waUrl, \"_blank\");\n\n // hide the modal\n hideMailgo();\n};\n\nconst callDefault = () => {\n let callUrl: string = \"tel:\" + tel;\n window.open(callUrl);\n hideMailgo();\n};\n\nconst copy = (content: string): void => {\n copyToClipboard(content);\n let activeCopy: HTMLElement;\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\n// function that returns if an element is a mailgo\nexport function isMailgo(\n element: HTMLElement,\n type: string = MAIL_TYPE\n): boolean {\n let href: string = (element as HTMLLinkElement).href;\n\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 }\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 }\n\n return false;\n}\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 */\nexport function mailgoCheckRender(event: Event): boolean {\n // check if the id=mailgo exists in the body\n if (!document.contains(modalMailto) || !document.contains(modalTel))\n return false;\n\n // if a mailgo is already showing do nothing\n if (mailgoIsShowing(MAIL_TYPE) || mailgoIsShowing(TEL_TYPE)) return false;\n\n // the path of the event\n let path =\n (event.composedPath && event.composedPath()) ||\n composedPath(event.target as HTMLElement);\n\n if (path) {\n path.forEach((element: HTMLElement) => {\n if (element instanceof HTMLDocument || element instanceof Window)\n return false;\n\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\n // render mailgo\n mailgoRender(MAIL_TYPE, element as HTMLLinkElement);\n\n return true;\n }\n if (isMailgo(element, TEL_TYPE)) {\n // stop the normal execution of the element click\n event.preventDefault();\n\n // render mailgo\n mailgoRender(TEL_TYPE, element as HTMLLinkElement);\n\n return true;\n }\n });\n }\n\n return false;\n}\n\n/**\n * mailgoKeydown\n * function to manage the keydown event when the modal is showing\n */\nconst mailgoKeydown = (keyboardEvent: KeyboardEvent): void => {\n // if mailgo is showing\n if (mailgoIsShowing(MAIL_TYPE)) {\n switch (keyboardEvent.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 } else if (mailgoIsShowing(TEL_TYPE)) {\n switch (keyboardEvent.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\n// show the modal\nconst showMailgo = (type = MAIL_TYPE): void => {\n // show the correct modal\n setModalDisplay(type, \"flex\");\n};\n\n// hide the modal\nconst hideMailgo = (): void => {\n // hide all the modals\n setModalDisplay(MAIL_TYPE, \"none\");\n setModalDisplay(TEL_TYPE, \"none\");\n\n // remove listener keyDown\n document.removeEventListener(\"keydown\", mailgoKeydown);\n};\n\n// is the mailgo modal hidden?\nconst mailgoIsShowing = (type = MAIL_TYPE): boolean => {\n return getModalDisplay(type) === \"flex\";\n};\n\nconst byElement = (): HTMLLinkElement => {\n // by\n let by: HTMLLinkElement = createElement(aHTMLTag) as HTMLLinkElement;\n by.href = \"https://mailgo.dev?ref=mailgo-modal\";\n by.className = \"m-by\";\n by.target = \"_blank\";\n by.rel = \"noopener noreferrer\";\n by.appendChild(createTextNode(\"mailgo.dev\"));\n\n return by;\n};\n\n// create element\nconst createElement = (element: string = \"div\"): HTMLElement =>\n document.createElement(element);\n\n// create text node\nconst createTextNode = (element: string): Text =>\n document.createTextNode(element);\n\n// decrypt email\nconst mailToEncoded = (encoded: string): string =>\n (window.location.href = MAILTO + atob(encoded));\n\n// encode email\nconst encodeEmail = (email: string): string => btoa(email);\n\n// get the correct HTMLElement from a type\nconst getModalHTMLElement = (type: string = MAIL_TYPE) =>\n type === TEL_TYPE ? modalTel : modalMailto;\n\n// get display value\nconst getModalDisplay = (ref: string = MAIL_TYPE): string =>\n getModalHTMLElement(ref).style.display;\n\n// set display value\nconst setModalDisplay = (ref: string = MAIL_TYPE, value: string): void => {\n let modal = getModalHTMLElement(ref);\n modal.style.display = value;\n\n if (value === \"flex\") {\n // \"save\" the activated link.\n activatedLink = document.activeElement as HTMLElement;\n modal.setAttribute(\"aria-hidden\", \"false\");\n\n // Focus on the modal container.\n modal.setAttribute(\"tabindex\", \"0\");\n modal.focus();\n setFocusLoop(modal);\n } else {\n modal.setAttribute(\"aria-hidden\", \"true\");\n\n // focus back the activated link for getting back to the context.\n modal.setAttribute(\"tabindex\", \"-1\");\n activatedLink.focus();\n }\n};\n\n// set focus loop within modal\nconst setFocusLoop = (ref: HTMLElement): void => {\n let modal = ref;\n modal\n .querySelector(\".m-modal-content a:last-of-type\")\n .addEventListener(\"keydown\", leaveLastLink);\n modal\n .querySelector(\".m-modal-content a:first-of-type\")\n .addEventListener(\"keydown\", leaveFirstLink);\n};\n\nconst leaveLastLink = (e: KeyboardEvent): void => {\n // going back to the first link to force looping\n if (e.code === \"Tab\" && e.shiftKey === false) {\n e.preventDefault();\n\n ((e.target as HTMLElement)\n .closest(\"div\")\n .querySelector(\"a:first-of-type\") as HTMLElement).focus();\n }\n};\n\nconst leaveFirstLink = (e: KeyboardEvent): void => {\n // going back to the first link to force looping\n if (e.code === \"Tab\" && e.shiftKey === true) {\n e.preventDefault();\n ((e.target as HTMLElement)\n .closest(\"div\")\n .querySelector(\"a:last-of-type\") as HTMLElement).focus();\n }\n};\n\n// enable dark mode\nconst enableDarkMode = (type: string = MAIL_TYPE) =>\n getModalHTMLElement(type).classList.add(\"m-dark\");\n\n// disable dark mode\nconst disableDarkMode = (type: string = MAIL_TYPE) =>\n getModalHTMLElement(type).classList.remove(\"m-dark\");\n\n// custom composedPath if path or event.composedPath() are not defined\nconst composedPath = (\n el: HTMLElement\n): (HTMLElement | Document | (Window & typeof globalThis))[] => {\n let path = [];\n\n while (el) {\n path.push(el);\n\n if (el.tagName === \"HTML\") {\n path.push(document);\n path.push(window);\n return path;\n }\n\n el = el.parentElement;\n }\n};\n\n// validate a single email with regex\nconst validateEmail = (email: string): boolean =>\n /^(([^<>()[\\]\\\\.,;:\\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(\n email\n );\n\n// validate an array of emails\nconst validateEmails = (arr: string[]): boolean => arr.every(validateEmail);\n\n// validate a single tel with regex\nconst validateTel = (tel: string): boolean =>\n /^[+]{0,1}[\\s0-9]{0,}[(]{0,1}[0-9]{1,4}[)]{0,1}[-\\s\\./0-9]*$/.test(tel);\n\n// copy of a string\nconst copyToClipboard = (str: string): boolean => {\n let el: HTMLInputElement = createElement(\"textarea\") as HTMLInputElement;\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: Range | boolean =\n 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};\n\nconst mailgoStyle = (): void => {\n // mailgo style\n let mailgoCSSElement: HTMLStyleElement = createElement(\n \"style\"\n ) as HTMLStyleElement;\n mailgoCSSElement.id = \"mailgo-style\";\n mailgoCSSElement.type = \"text/css\";\n mailgoCSSElement.appendChild(createTextNode(mailgoCSS));\n document.head.appendChild(mailgoCSSElement);\n};\n\n// mailgo\nfunction mailgo(mailgoConfig?: MailgoConfig): void {\n // set the global config merging window mailgConfig and mailgoConfig passed as a parameter\n config = { ...mailgoConfig, ...((window as any)?.mailgoConfig || null) };\n\n // if the window is defined...\n if (window && typeof window !== \"undefined\") {\n // add the style for mailgo\n mailgoStyle();\n\n // if is set an initEvent add the listener\n if (config?.initEvent) {\n if (config?.listenerOptions) {\n // listener options specified\n document.addEventListener(\n config.initEvent,\n () => {\n mailgoInit();\n },\n config.listenerOptions\n );\n } else {\n // no listener options\n document.addEventListener(config.initEvent, () => {\n mailgoInit();\n });\n }\n } else {\n mailgoInit();\n }\n }\n}\n\nexport default mailgo;\n","// webpack > extensions/mailgo.firefox.js\n// script to add in Firefox addon\n// https://github.com/manzinello/mailgo-firefox-addon\n\nimport mailgo from \"../src/mailgo\";\n\n// check if mailgo HTML is already present in the page\nlet mailgoExists = !!document.getElementById(\"mailgo\");\n\nif (!mailgoExists) mailgo();\n"],"sourceRoot":""} \ No newline at end of file diff --git a/i18n/i18n.json b/i18n/i18n.json index a896d77..8e8cc89 100644 --- a/i18n/i18n.json +++ b/i18n/i18n.json @@ -1,95 +1,32 @@ { - "languages": ["en", "it", "es", "de", "fr", "pt", "nl", "ru"], - "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 ", - "bcc_": "ccn ", - "subject_": "oggetto ", - "body_": "testo ", - "call": "chiama", - "open": "apri", - "_default": " ", - "_as_default": " ", - "copy": "copia" - }, - "es": { - "open_in_": "abrir con ", - "bcc_": "cco ", - "subject_": "asunto ", - "body_": "cuerpo ", - "call": "llamar", - "open": "abrir", - "_default": " predefinido", - "_as_default": " por defecto", - "copy": "copiar" - }, - "de": { - "open_in_": "Öffnen in ", - "subject_": "Betreff ", - "body_": "Nachricht ", - "call": "Anrufen", - "open": "Öffnen", - "_default": " mit Standard", - "_as_default": " mit Standard", - "copy": "kopieren" - }, - "pt": { - "open_in_": "abrir com ", - "bcc_": "cco ", - "subject_": "assunto ", - "body_": "corpo ", - "call": "ligar", - "open": "abrir", - "_default": " padrão", - "_as_default": " por padrão", - "copy": "copiar" - }, - "fr": { - "open_in_": "Ouvrir dans ", - "bcc_": "cci ", - "subject_": "sujet ", - "body_": "contenu ", - "call": "Appeler", - "open": "Ouvrir", - "_default": " par défaut", - "_as_default": " par défaut", - "copy": "Copier" - }, - "nl": { - "subject_": "onderwerp ", - "body_": "bericht ", - "call": "bellen", - "open": "openen", - "_default": " standaard", - "_as_default": " als standaard", - "copy": "kopiëren" - }, - "ru": { - "open_in_": "открыть в ", - "subject_": "тема ", - "body_": "тело ", - "call": "позвонить", - "open": "открыть", - "_default": " по умолчанию", - "_as_default": " по умолчанию", - "copy": "скопировать" - } - } + "languages": [ "en", "de" ], + "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" + }, + "de": { + "open_in_": "Öffnen in ", + "subject_": "Betreff ", + "body_": "Nachricht ", + "call": "Anrufen", + "open": "Öffnen", + "_default": " mit Standard", + "_as_default": " mit Standard", + "copy": "kopieren" + } + } } diff --git a/lib/mailgo.js b/lib/mailgo.js index 73a8ee1..09b2fe3 100644 --- a/lib/mailgo.js +++ b/lib/mailgo.js @@ -321,7 +321,7 @@ var mailgoInit = function mailgoInit() { var mailgoExists = !!document.getElementById("mailgo"); if (!mailgoExists) { - var _config3, _config4, _config5; + var _config3; // modal modalMailto = createElement(); @@ -439,12 +439,7 @@ var mailgoInit = function mailgoInit() { copyMail.classList.add("m-copy"); copyMail.classList.add("w-500"); copyMail.appendChild(createTextNode(strings.copy || defaultStrings.copy)); - modalContent.appendChild(copyMail); // hide mailgo.dev in footer only if showFooter is defined and equal to false - - if (typeof ((_config4 = config) === null || _config4 === void 0 ? void 0 : _config4.showFooter) === "undefined" || ((_config5 = config) === null || _config5 === void 0 ? void 0 : _config5.showFooter) !== false) { - modalContent.appendChild(byElement()); - } // add the modal at the end of the body - + modalContent.appendChild(copyMail); // add the modal at the end of the body document.body.appendChild(modalMailto); // every click outside the modal will hide the modal @@ -455,7 +450,7 @@ var mailgoInit = function mailgoInit() { var mailgoTelExists = !!document.getElementById("mailgo-tel"); if (!mailgoTelExists) { - var _config6, _config7, _config8; + var _config4; // modal modalTel = createElement(); @@ -466,7 +461,7 @@ var mailgoInit = function mailgoInit() { modalTel.setAttribute("tabindex", "-1"); modalTel.setAttribute("aria-labelledby", "m-tel-title"); // if dark is in config - if ((_config6 = config) === null || _config6 === void 0 ? void 0 : _config6.dark) { + if ((_config4 = config) === null || _config4 === void 0 ? void 0 : _config4.dark) { enableDarkMode(TEL_TYPE); } else { disableDarkMode(TEL_TYPE); @@ -555,12 +550,7 @@ var mailgoInit = function mailgoInit() { copyTel.classList.add("w-500"); copyTel.appendChild(createTextNode(strings.copy || defaultStrings.copy)); - _modalContent.appendChild(copyTel); // hide mailgo.dev in footer only if showFooter is defined and equal to false - - - if (typeof ((_config7 = config) === null || _config7 === void 0 ? void 0 : _config7.showFooter) === "undefined" || ((_config8 = config) === null || _config8 === void 0 ? void 0 : _config8.showFooter) !== false) { - _modalContent.appendChild(byElement()); - } // add the modal at the end of the body + _modalContent.appendChild(copyTel); // add the modal at the end of the body document.body.appendChild(modalTel); // every click outside the modal will hide the modal @@ -578,14 +568,14 @@ var mailgoInit = function mailgoInit() { function mailgoRender() { - var _config11; + var _config7; var type = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : MAIL_TYPE; var mailgoElement = arguments.length > 1 ? arguments[1] : undefined; // mailgo mail if (type === MAIL_TYPE) { - var _config9, _config10; + var _config5, _config6; // if the element href=^"mailto:" if (mailgoElement.href && mailgoElement.href.toLowerCase().startsWith(MAILTO)) { @@ -612,7 +602,7 @@ function mailgoRender() { bodyMail = mailgoElement.getAttribute("data-body"); } - if (typeof ((_config9 = config) === null || _config9 === void 0 ? void 0 : _config9.validateEmail) === "undefined" || ((_config10 = config) === null || _config10 === void 0 ? void 0 : _config10.validateEmail) === true) { + if (typeof ((_config5 = config) === null || _config5 === void 0 ? void 0 : _config5.validateEmail) === "undefined" || ((_config6 = config) === null || _config6 === void 0 ? void 0 : _config6.validateEmail) === true) { // validate the email address if (!validateEmails(mail.split(","))) return; // if cc, bcc are not valid cc, bcc = "" @@ -680,7 +670,7 @@ function mailgoRender() { } // if config.dark is set to true then all the modals will be in dark mode - if (!((_config11 = config) === null || _config11 === void 0 ? void 0 : _config11.dark)) { + if (!((_config7 = config) === null || _config7 === void 0 ? void 0 : _config7.dark)) { // if the element contains dark as class enable dark mode if (mailgoElement.classList.contains("dark")) { enableDarkMode(type); @@ -942,17 +932,6 @@ var hideMailgo = function hideMailgo() { var mailgoIsShowing = function mailgoIsShowing() { var type = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : MAIL_TYPE; return getModalDisplay(type) === "flex"; -}; - -var byElement = function byElement() { - // by - var by = createElement(aHTMLTag); - by.href = "https://mailgo.dev?ref=mailgo-modal"; - by.className = "m-by"; - by.target = "_blank"; - by.rel = "noopener noreferrer"; - by.appendChild(createTextNode("mailgo.dev")); - return by; }; // create element @@ -1117,15 +1096,15 @@ function mailgo(mailgoConfig) { config = _objectSpread(_objectSpread({}, mailgoConfig), ((_window = window) === null || _window === void 0 ? void 0 : _window.mailgoConfig) || null); // if the window is defined... if (window && typeof window !== "undefined") { - var _config12; + var _config8; // add the style for mailgo mailgoStyle(); // if is set an initEvent add the listener - if ((_config12 = config) === null || _config12 === void 0 ? void 0 : _config12.initEvent) { - var _config13; + if ((_config8 = config) === null || _config8 === void 0 ? void 0 : _config8.initEvent) { + var _config9; - if ((_config13 = config) === null || _config13 === void 0 ? void 0 : _config13.listenerOptions) { + if ((_config9 = config) === null || _config9 === void 0 ? void 0 : _config9.listenerOptions) { // listener options specified document.addEventListener(config.initEvent, function () { mailgoInit(); diff --git a/lib/mailgo.js.map b/lib/mailgo.js.map index 8d66452..8af4d47 100644 --- a/lib/mailgo.js.map +++ b/lib/mailgo.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack://mailgo/webpack/universalModuleDefinition","webpack://mailgo/webpack/bootstrap","webpack://mailgo/../src/mailgo.scss?16f9","webpack://mailgo/../src/mailgo.scss","webpack://mailgo/../node_modules/css-loader/dist/runtime/api.js","webpack://mailgo/../src/mailgo.ts","webpack://mailgo/./mailgo.lib.ts"],"names":["i18n","require","mailgoCSS","toString","DEFAULT_LANG","MAILTO","TEL","CALLTO","outlookDeepLink","MAIL_TYPE","TEL_TYPE","DEFAULT_BTN_HREF","spanHTMLTag","aHTMLTag","pHTMLTag","config","lang","modalMailto","modalTel","url","mail","encEmail","cc","bcc","subject","bodyMail","tel","msg","telegramUsername","skypeUsername","title","titleTel","detailCc","detailBcc","detailSubject","detailBody","ccValue","bccValue","subjectValue","bodyValue","activatedLink","gmail","outlook","open","telegram","wa","skype","call","copyMail","copyTel","mailgoInit","translations","languages","indexOf","forceLang","htmlLang","document","documentElement","defaultStrings","strings","mailgoExists","getElementById","createElement","style","display","id","classList","add","setAttribute","dark","enableDarkMode","disableDarkMode","modalBackground","className","appendChild","modalContent","details","ccSpan","createTextNode","cc_","bccSpan","bcc_","subjectSpan","subject_","bodySpan","body_","href","open_in_","gmailSpan","outlookSpan","openSpan","_default","copy","showFooter","byElement","body","addEventListener","hideMailgo","mailgoTelExists","telegramSpan","waSpan","whatsapp","skypeSpan","callSpan","_as_default","mailgoCheckRender","mailgoRender","type","mailgoElement","toLowerCase","startsWith","decodeURIComponent","split","trim","URL","urlParams","searchParams","get","getAttribute","encodeURIComponent","validateEmail","validateEmails","innerHTML","join","textContent","openGmail","openOutlook","encodeEmail","openDefault","hasAttribute","validateTel","openWhatsApp","openTelegram","openSkype","callDefault","contains","showMailgo","mailgoKeydown","gmailUrl","concat","window","outlookUrl","mailToEncoded","tgUrl","skypeUrl","waUrl","callUrl","content","copyToClipboard","activeCopy","mailgoIsShowing","setTimeout","isMailgo","element","event","path","composedPath","target","forEach","HTMLDocument","Window","preventDefault","keyboardEvent","keyCode","setModalDisplay","removeEventListener","getModalDisplay","by","rel","encoded","location","atob","email","btoa","getModalHTMLElement","ref","value","modal","activeElement","focus","setFocusLoop","querySelector","leaveLastLink","leaveFirstLink","e","code","shiftKey","closest","remove","el","push","tagName","parentElement","test","arr","every","str","position","left","selected","getSelection","rangeCount","getRangeAt","select","execCommand","removeChild","removeAllRanges","addRange","mailgoStyle","mailgoCSSElement","head","mailgo","mailgoConfig","initEvent","listenerOptions"],"mappings":"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","file":"lib/mailgo.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"mailgo\"] = factory();\n\telse\n\t\troot[\"mailgo\"] = factory();\n})(typeof self !== 'undefined' ? self : this, function() {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 4);\n","\n var result = require(\"!!../node_modules/css-loader/dist/cjs.js??ref--5-1!../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 ","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../node_modules/css-loader/dist/runtime/api.js\");\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(false);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".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:16.5px;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:#20232a;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.95;border-radius:20px;box-shadow:0 3px 20px rgba(32,35,42,0.5);color:#4a4a4a;display:flex;flex-direction:column;overflow:auto;padding:24px;transition:0.5s box-shadow}.m-modal .m-modal-content:hover,.m-modal .m-modal-content:focus,.m-modal .m-modal-content:active{opacity:1}.m-modal .m-modal-content .m-title{margin-bottom:8px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;line-height:1.2em}.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{cursor:pointer;padding:10px;color:#4a4a4a;border-radius:20px;text-decoration:none}.m-modal .m-modal-content a.m-gmail{color:#c0372a}.m-modal .m-modal-content a.m-gmail:hover,.m-modal .m-modal-content a.m-gmail:focus,.m-modal .m-modal-content a.m-gmail:active{background-color:rgba(212,70,56,0.08);color:#c0372a}.m-modal .m-modal-content a.m-outlook{color:#0967aa}.m-modal .m-modal-content a.m-outlook:hover,.m-modal .m-modal-content a.m-outlook:focus,.m-modal .m-modal-content a.m-outlook:active{background-color:rgba(0,114,198,0.08);color:#0967aa}.m-modal .m-modal-content a.m-tg{color:#086da0}.m-modal .m-modal-content a.m-tg:hover,.m-modal .m-modal-content a.m-tg:focus,.m-modal .m-modal-content a.m-tg:active{background-color:rgba(0,136,204,0.08);color:#086da0}.m-modal .m-modal-content a.m-wa{color:#067466}.m-modal .m-modal-content a.m-wa:hover,.m-modal .m-modal-content a.m-wa:focus,.m-modal .m-modal-content a.m-wa:active{background-color:rgba(0,191,165,0.08);color:#067466}.m-modal .m-modal-content a.m-skype{color:#076d92}.m-modal .m-modal-content a.m-skype:hover,.m-modal .m-modal-content a.m-skype:focus,.m-modal .m-modal-content a.m-skype:active{background-color:rgba(0,175,240,0.08);color:#076d92}.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-default:focus,.m-modal .m-modal-content a.m-default:active,.m-modal .m-modal-content a.m-copy:hover,.m-modal .m-modal-content a.m-copy:focus,.m-modal .m-modal-content a.m-copy:active{background-color:rgba(0,0,0,0.08);color:#4a4a4a}.m-modal .m-modal-content a.m-by{font-size:12px;margin-top:0.8rem;padding:5px;color:#4a4a4a}.m-modal .m-modal-content a.m-by:hover,.m-modal .m-modal-content a.m-by:focus,.m-modal .m-modal-content a.m-by:active{color:#3d3d3d}.m-modal .m-modal-content .w-500{font-weight:500}.m-modal.m-dark .m-modal-content{background-color:#20232a}.m-modal.m-dark .m-modal-content,.m-modal.m-dark .m-modal-content p,.m-modal.m-dark .m-modal-content p span,.m-modal.m-dark .m-modal-content strong{color:#fff}.m-modal.m-dark .m-modal-content a{color:#eaeaea}.m-modal.m-dark .m-modal-content a:not(.m-by):hover,.m-modal.m-dark .m-modal-content a:not(.m-by):focus,.m-modal.m-dark .m-modal-content a:not(.m-by):active{background-color:rgba(134,134,134,0.08);color:#eaeaea}.m-modal.m-dark .m-modal-content a.m-gmail{color:#e07d73}.m-modal.m-dark .m-modal-content a.m-gmail:hover,.m-modal.m-dark .m-modal-content a.m-gmail:focus,.m-modal.m-dark .m-modal-content a.m-gmail:active{background-color:rgba(212,70,56,0.08);color:#e07d73}.m-modal.m-dark .m-modal-content a.m-outlook{color:#4c9cd7}.m-modal.m-dark .m-modal-content a.m-outlook:hover,.m-modal.m-dark .m-modal-content a.m-outlook:focus,.m-modal.m-dark .m-modal-content a.m-outlook:active{background-color:rgba(0,114,198,0.08);color:#4c9cd7}.m-modal.m-dark .m-modal-content a.m-tg{color:#4cabdb}.m-modal.m-dark .m-modal-content a.m-tg:hover,.m-modal.m-dark .m-modal-content a.m-tg:focus,.m-modal.m-dark .m-modal-content a.m-tg:active{background-color:rgba(0,136,204,0.08);color:#4cabdb}.m-modal.m-dark .m-modal-content a.m-wa{color:#4cd2c0}.m-modal.m-dark .m-modal-content a.m-wa:hover,.m-modal.m-dark .m-modal-content a.m-wa:focus,.m-modal.m-dark .m-modal-content a.m-wa:active{background-color:rgba(0,191,165,0.08);color:#4cd2c0}.m-modal.m-dark .m-modal-content a.m-skype{color:#4cc7f4}.m-modal.m-dark .m-modal-content a.m-skype:hover,.m-modal.m-dark .m-modal-content a.m-skype:focus,.m-modal.m-dark .m-modal-content a.m-skype:active{background-color:rgba(0,175,240,0.08);color:#4cc7f4}.m-modal.m-dark .m-modal-content a.m-by:hover,.m-modal.m-dark .m-modal-content a.m-by:focus,.m-modal.m-dark .m-modal-content a.m-by:active{color:#fff}\\n\", \"\"]);\n// Exports\nmodule.exports = ___CSS_LOADER_EXPORT___;\n","\"use strict\";\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}","import {\n MailgoConfig,\n MailgoTranslations,\n MailgoTranslation,\n MailgoI18n,\n} from \"mailgo\";\n\n// i18n for mailgo\nconst i18n: MailgoI18n = require(\"../i18n/i18n.json\");\n\n// mailgo scss\nconst mailgoCSS: string = require(\"./mailgo.scss\").toString();\n\n// default lang\nconst DEFAULT_LANG: string = \"en\";\n\n// links\nconst MAILTO: string = \"mailto:\";\nconst TEL: string = \"tel:\";\nconst CALLTO: string = \"callto:\";\n\n// deep linking\nconst outlookDeepLink: string = \"ms-outlook://\";\n\n// mailgo types\nconst MAIL_TYPE: string = \"mail\";\nconst TEL_TYPE: string = \"tel\";\n\n// default href for links\nconst DEFAULT_BTN_HREF: string = \"javascript:void(0);\";\n\n// useful html tags\nconst spanHTMLTag: string = \"span\";\nconst aHTMLTag: string = \"a\";\nconst pHTMLTag: string = \"p\";\n\n// global mailgo config object\nlet config: MailgoConfig;\n\n// default language\nlet lang: string = DEFAULT_LANG;\n\n// modals global object\nlet modalMailto: HTMLElement, modalTel: HTMLElement;\n\n// mailgo variables\nlet url: URL,\n mail: string = \"\",\n encEmail: string = \"\",\n cc: string = \"\",\n bcc: string = \"\",\n subject: string = \"\",\n bodyMail: string = \"\";\n\n// mailgo tel variables\nlet tel: string = \"\",\n msg: string = \"\",\n telegramUsername: string = \"\",\n skypeUsername: string = \"\";\n\n// the DOM elements\nlet title: HTMLElement,\n titleTel: HTMLElement,\n detailCc: HTMLElement,\n detailBcc: HTMLElement,\n detailSubject: HTMLElement,\n detailBody: HTMLElement,\n ccValue: HTMLElement,\n bccValue: HTMLElement,\n subjectValue: HTMLElement,\n bodyValue: HTMLElement,\n activatedLink: HTMLElement;\n\n// mailgo buttons (actions)\nlet gmail: HTMLLinkElement,\n outlook: HTMLLinkElement,\n open: HTMLLinkElement,\n telegram: HTMLLinkElement,\n wa: HTMLLinkElement,\n skype: HTMLLinkElement,\n call: HTMLLinkElement,\n copyMail: HTMLLinkElement,\n copyTel: HTMLLinkElement;\n\n/**\n * mailgoInit\n * the function that creates the mailgo elements in DOM\n */\nconst mailgoInit = (): void => {\n // translations\n let {\n translations,\n }: { translations: MailgoTranslations } = i18n as MailgoI18n;\n\n // if a default language is defined use it\n if (config?.lang && i18n.languages.indexOf(config.lang) !== -1) {\n lang = config.lang;\n }\n\n // if is defined use it!\n if (!config?.forceLang) {\n // keep the lang from html\n let htmlLang: string = document.documentElement.lang;\n\n // if there are translations...\n if (i18n.languages.indexOf(htmlLang) !== -1) {\n lang = document.documentElement.lang;\n }\n }\n\n // strings\n let defaultStrings: MailgoTranslation = translations[DEFAULT_LANG];\n let strings: MailgoTranslation = translations[lang];\n\n // mailgo, if mailgo not already exists\n let mailgoExists = !!document.getElementById(\"mailgo\");\n\n if (!mailgoExists) {\n // modal\n modalMailto = createElement() as HTMLElement;\n modalMailto.style.display = \"none\";\n modalMailto.id = \"mailgo\";\n modalMailto.classList.add(\"m-modal\");\n modalMailto.setAttribute(\"role\", \"dialog\");\n modalMailto.setAttribute(\"tabindex\", \"-1\");\n modalMailto.setAttribute(\"aria-labelledby\", \"m-title\");\n\n // if dark is in config\n if (config?.dark) {\n enableDarkMode(MAIL_TYPE);\n } else {\n disableDarkMode(MAIL_TYPE);\n }\n\n // background\n let modalBackground: HTMLElement = createElement();\n modalBackground.className = \"m-modal-back\";\n modalMailto.appendChild(modalBackground);\n\n // modal content\n let modalContent: HTMLElement = createElement();\n modalContent.className = \"m-modal-content\";\n modalMailto.appendChild(modalContent);\n\n // title (email address)\n title = createElement(\"strong\");\n title.id = \"m-title\";\n title.className = \"m-title\";\n modalContent.appendChild(title);\n\n // details\n let details: HTMLElement = createElement();\n details.id = \"m-details\";\n details.className = \"m-details\";\n\n detailCc = createElement(pHTMLTag);\n detailCc.id = \"m-cc\";\n let ccSpan: HTMLElement = createElement(spanHTMLTag);\n ccSpan.className = \"w-500\";\n ccSpan.appendChild(createTextNode(strings.cc_ || defaultStrings.cc_));\n ccValue = createElement(spanHTMLTag);\n ccValue.id = \"m-cc-value\";\n detailCc.appendChild(ccSpan);\n detailCc.appendChild(ccValue);\n details.appendChild(detailCc);\n\n detailBcc = createElement(pHTMLTag);\n detailBcc.id = \"m-bcc\";\n let bccSpan: HTMLElement = createElement(spanHTMLTag);\n bccSpan.className = \"w-500\";\n bccSpan.appendChild(createTextNode(strings.bcc_ || defaultStrings.bcc_));\n bccValue = createElement(spanHTMLTag);\n bccValue.id = \"m-bcc-value\";\n detailBcc.appendChild(bccSpan);\n detailBcc.appendChild(bccValue);\n details.appendChild(detailBcc);\n\n detailSubject = createElement(pHTMLTag);\n detailSubject.id = \"m-subject\";\n let subjectSpan: HTMLElement = createElement(spanHTMLTag);\n subjectSpan.className = \"w-500\";\n subjectSpan.appendChild(\n createTextNode(strings.subject_ || defaultStrings.subject_)\n );\n subjectValue = createElement(spanHTMLTag);\n subjectValue.id = \"m-subject-value\";\n detailSubject.appendChild(subjectSpan);\n detailSubject.appendChild(subjectValue);\n details.appendChild(detailSubject);\n\n detailBody = createElement(pHTMLTag);\n detailBody.id = \"m-body\";\n let bodySpan: HTMLElement = createElement(spanHTMLTag);\n bodySpan.className = \"w-500\";\n bodySpan.appendChild(createTextNode(strings.body_ || defaultStrings.body_));\n bodyValue = createElement(spanHTMLTag);\n bodyValue.id = \"m-body-value\";\n detailBody.appendChild(bodySpan);\n detailBody.appendChild(bodyValue);\n details.appendChild(detailBody);\n\n modalContent.appendChild(details);\n\n // Gmail\n gmail = createElement(aHTMLTag) as HTMLLinkElement;\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(\n createTextNode(strings.open_in_ || defaultStrings.open_in_)\n );\n let gmailSpan: HTMLElement = createElement(spanHTMLTag);\n gmailSpan.className = \"w-500\";\n gmailSpan.appendChild(\n createTextNode(strings.gmail || defaultStrings.gmail)\n );\n gmail.appendChild(gmailSpan);\n\n modalContent.appendChild(gmail);\n\n // Outlook\n outlook = createElement(aHTMLTag) as HTMLLinkElement;\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(\n createTextNode(strings.open_in_ || defaultStrings.open_in_)\n );\n let outlookSpan: HTMLElement = createElement(spanHTMLTag);\n outlookSpan.className = \"w-500\";\n outlookSpan.appendChild(\n createTextNode(strings.outlook || defaultStrings.outlook)\n );\n outlook.appendChild(outlookSpan);\n\n modalContent.appendChild(outlook);\n\n // open default\n open = createElement(aHTMLTag) as HTMLLinkElement;\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: HTMLElement = createElement(spanHTMLTag);\n openSpan.className = \"w-500\";\n openSpan.appendChild(createTextNode(strings.open || defaultStrings.open));\n open.appendChild(openSpan);\n open.appendChild(\n createTextNode(strings._default || defaultStrings._default)\n );\n\n modalContent.appendChild(open);\n\n // copy\n copyMail = createElement(aHTMLTag) as HTMLLinkElement;\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(strings.copy || defaultStrings.copy));\n\n modalContent.appendChild(copyMail);\n\n // hide mailgo.dev in footer only if showFooter is defined and equal to false\n if (\n typeof config?.showFooter === \"undefined\" ||\n config?.showFooter !== false\n ) {\n modalContent.appendChild(byElement());\n }\n\n // add the modal at the end of the body\n document.body.appendChild(modalMailto);\n\n // every click outside the modal will hide the modal\n modalBackground.addEventListener(\"click\", hideMailgo);\n }\n\n // mailgo tel, if mailgo-tel not already exists\n let mailgoTelExists = !!document.getElementById(\"mailgo-tel\");\n\n if (!mailgoTelExists) {\n // modal\n modalTel = createElement() as HTMLElement;\n modalTel.style.display = \"none\";\n modalTel.id = \"mailgo-tel\";\n modalTel.classList.add(\"m-modal\");\n modalTel.setAttribute(\"role\", \"dialog\");\n modalTel.setAttribute(\"tabindex\", \"-1\");\n modalTel.setAttribute(\"aria-labelledby\", \"m-tel-title\");\n\n // if dark is in config\n if (config?.dark) {\n enableDarkMode(TEL_TYPE);\n } else {\n disableDarkMode(TEL_TYPE);\n }\n\n // background\n let modalBackground: HTMLElement = createElement();\n modalBackground.className = \"m-modal-back\";\n modalTel.appendChild(modalBackground);\n\n // modal content\n let modalContent: HTMLElement = createElement();\n modalContent.className = \"m-modal-content\";\n modalTel.appendChild(modalContent);\n\n // title (telephone number)\n titleTel = createElement(\"strong\");\n titleTel.id = \"m-tel-title\";\n titleTel.className = \"m-title\";\n modalContent.appendChild(titleTel);\n\n // Telegram\n telegram = createElement(aHTMLTag) as HTMLLinkElement;\n telegram.id = \"m-tg\";\n telegram.href = DEFAULT_BTN_HREF;\n telegram.classList.add(\"m-open\");\n telegram.classList.add(\"m-tg\");\n\n // by default not display\n telegram.style.display = \"none\";\n\n telegram.appendChild(\n createTextNode(strings.open_in_ || defaultStrings.open_in_)\n );\n let telegramSpan: HTMLElement = createElement(spanHTMLTag);\n telegramSpan.className = \"w-500\";\n telegramSpan.appendChild(\n createTextNode(strings.telegram || defaultStrings.telegram)\n );\n telegram.appendChild(telegramSpan);\n\n modalContent.appendChild(telegram);\n\n // WhatsApp\n wa = createElement(aHTMLTag) as HTMLLinkElement;\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_ || defaultStrings.open_in_));\n let waSpan: HTMLElement = createElement(spanHTMLTag);\n waSpan.className = \"w-500\";\n waSpan.appendChild(\n createTextNode(strings.whatsapp || defaultStrings.whatsapp)\n );\n wa.appendChild(waSpan);\n\n modalContent.appendChild(wa);\n\n // Skype\n skype = createElement(aHTMLTag) as HTMLLinkElement;\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(\n createTextNode(strings.open_in_ || defaultStrings.open_in_)\n );\n let skypeSpan: HTMLElement = createElement(spanHTMLTag);\n skypeSpan.className = \"w-500\";\n skypeSpan.appendChild(\n createTextNode(strings.skype || defaultStrings.skype)\n );\n skype.appendChild(skypeSpan);\n\n modalContent.appendChild(skype);\n\n // call default\n call = createElement(aHTMLTag) as HTMLLinkElement;\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: HTMLElement = createElement(spanHTMLTag);\n callSpan.className = \"w-500\";\n callSpan.appendChild(createTextNode(strings.call || defaultStrings.call));\n call.appendChild(callSpan);\n call.appendChild(\n createTextNode(strings._as_default || defaultStrings._as_default)\n );\n\n modalContent.appendChild(call);\n\n // copy\n copyTel = createElement(aHTMLTag) as HTMLLinkElement;\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(strings.copy || defaultStrings.copy));\n\n modalContent.appendChild(copyTel);\n\n // hide mailgo.dev in footer only if showFooter is defined and equal to false\n if (\n typeof config?.showFooter === \"undefined\" ||\n config?.showFooter !== false\n ) {\n modalContent.appendChild(byElement());\n }\n\n // add the modal at the end of the body\n document.body.appendChild(modalTel);\n\n // every click outside the modal will hide the modal\n modalBackground.addEventListener(\"click\", hideMailgo);\n }\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/**\n * mailgoRender\n * function to render a mailgo (mail or tel)\n */\nexport function mailgoRender(\n type: string = MAIL_TYPE,\n mailgoElement: HTMLLinkElement\n): void {\n // mailgo mail\n if (type === MAIL_TYPE) {\n // if the element href=^\"mailto:\"\n if (\n mailgoElement.href &&\n mailgoElement.href.toLowerCase().startsWith(MAILTO)\n ) {\n mail = decodeURIComponent(\n mailgoElement.href.split(\"?\")[0].split(MAILTO)[1].trim()\n );\n\n url = new URL(mailgoElement.href);\n let urlParams: URLSearchParams = url.searchParams;\n\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 } else {\n // if the element href=\"#mailgo\" or class=\"mailgo\"\n // mail = data-address + @ + data-domain\n mail =\n mailgoElement.getAttribute(\"data-address\") +\n \"@\" +\n mailgoElement.getAttribute(\"data-domain\");\n\n url = new URL(MAILTO + encodeURIComponent(mail));\n\n // cc = data-cc-address + @ + data-cc-domain\n cc =\n mailgoElement.getAttribute(\"data-cc-address\") +\n \"@\" +\n mailgoElement.getAttribute(\"data-cc-domain\");\n\n // bcc = data-bcc-address + @ + data-bcc-domain\n bcc =\n mailgoElement.getAttribute(\"data-bcc-address\") +\n \"@\" +\n mailgoElement.getAttribute(\"data-bcc-domain\");\n\n // subject = data-subject\n subject = mailgoElement.getAttribute(\"data-subject\");\n\n // body = data-body\n bodyMail = mailgoElement.getAttribute(\"data-body\");\n }\n\n if (\n typeof config?.validateEmail === \"undefined\" ||\n config?.validateEmail === true\n ) {\n // validate the email address\n if (!validateEmails(mail.split(\",\"))) return;\n\n // if cc, bcc are not valid cc, bcc = \"\"\n if (cc && !validateEmails(cc.split(\",\"))) cc = \"\";\n if (bcc && !validateEmails(bcc.split(\",\"))) bcc = \"\";\n }\n\n // the title of the modal (email address)\n title.innerHTML = mail.split(\",\").join(\"
\");\n\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\n bcc\n ? ((detailBcc.style.display = \"block\"),\n (bccValue.innerHTML = bcc.split(\",\").join(\"
\")))\n : (detailBcc.style.display = \"none\");\n\n subject\n ? ((detailSubject.style.display = \"block\"),\n (subjectValue.textContent = subject))\n : (detailSubject.style.display = \"none\");\n\n bodyMail\n ? ((detailBody.style.display = \"block\"),\n (bodyValue.textContent = bodyMail))\n : (detailBody.style.display = \"none\");\n\n // add the actions\n gmail.addEventListener(\"click\", openGmail);\n\n outlook.addEventListener(\"click\", openOutlook);\n\n encEmail = encodeEmail(mail);\n open.addEventListener(\"click\", openDefault);\n\n copyMail.addEventListener(\"click\", () => copy(mail));\n }\n // mailgo tel\n else if (type === TEL_TYPE) {\n if (\n mailgoElement.href &&\n mailgoElement.href.toLowerCase().startsWith(TEL)\n ) {\n tel = decodeURIComponent(\n mailgoElement.href.split(\"?\")[0].split(TEL)[1].trim()\n );\n } else if (\n mailgoElement.href &&\n mailgoElement.href.toLowerCase().startsWith(CALLTO)\n ) {\n tel = decodeURIComponent(\n mailgoElement.href.split(\"?\")[0].split(CALLTO)[1].trim()\n );\n } else if (mailgoElement.hasAttribute(\"data-tel\")) {\n tel = mailgoElement.getAttribute(\"data-tel\");\n msg = mailgoElement.getAttribute(\"data-msg\");\n }\n\n // validate the phone number\n if (!validateTel(tel)) return;\n\n // Telegram username\n if (mailgoElement.hasAttribute(\"data-telegram\")) {\n telegramUsername = mailgoElement.getAttribute(\"data-telegram\");\n } else {\n telegramUsername = null;\n }\n\n // Telegram username\n if (mailgoElement.hasAttribute(\"data-skype\")) {\n skypeUsername = mailgoElement.getAttribute(\"data-skype\");\n }\n\n // the title of the modal (tel)\n titleTel.innerHTML = tel;\n\n // add the actions to buttons\n wa.addEventListener(\"click\", openWhatsApp);\n\n // telegram must be shown only if data-telegram is provided\n if (telegramUsername) {\n document.getElementById(\"m-tg\").style.display = \"block\";\n telegram.addEventListener(\"click\", openTelegram);\n } else {\n document.getElementById(\"m-tg\").style.display = \"none\";\n }\n\n skype.addEventListener(\"click\", openSkype);\n\n call.addEventListener(\"click\", callDefault);\n\n copyTel.addEventListener(\"click\", () => copy(tel));\n }\n\n // if config.dark is set to true then all the modals will be in dark mode\n if (!config?.dark) {\n // if the element contains dark as class enable dark mode\n if (mailgoElement.classList.contains(\"dark\")) {\n enableDarkMode(type);\n } else {\n disableDarkMode(type);\n }\n }\n\n // show the mailgo\n showMailgo(type);\n\n // add listener keyDown\n document.addEventListener(\"keydown\", mailgoKeydown);\n}\n\n// actions\nconst openGmail = (): void => {\n // Gmail url\n let gmailUrl: string =\n \"https://mail.google.com/mail/u/0/?view=cm&source=mailto&to=\" +\n encodeURIComponent(mail);\n\n // the details if provided\n if (cc) gmailUrl = gmailUrl.concat(\"&cc=\" + encodeURIComponent(cc));\n if (bcc) gmailUrl = gmailUrl.concat(\"&bcc=\" + encodeURIComponent(bcc));\n if (subject) gmailUrl = gmailUrl.concat(\"&subject=\" + subject);\n if (bodyMail) gmailUrl = gmailUrl.concat(\"&body=\" + bodyMail);\n\n // open the link\n window.open(gmailUrl, \"_blank\");\n\n // hide the modal\n hideMailgo();\n};\n\nconst openOutlook = (): void => {\n // Outlook url\n let outlookUrl: string =\n \"https://outlook.live.com/owa/?path=/mail/action/compose&to=\" +\n encodeURIComponent(mail);\n\n // the details if provided\n if (subject) outlookUrl = outlookUrl.concat(\"&subject=\" + subject);\n if (bodyMail) outlookUrl = outlookUrl.concat(\"&body=\" + bodyMail);\n\n // open the link\n window.open(outlookUrl, \"_blank\");\n\n // hide the modal\n hideMailgo();\n};\n\nconst openDefault = (): void => {\n mailToEncoded(encEmail);\n hideMailgo();\n};\n\nconst openTelegram = (): void => {\n // Telegram url\n let tgUrl: string = \"https://t.me/\" + telegramUsername;\n\n // open the url\n window.open(tgUrl, \"_blank\");\n\n // hide the modal\n hideMailgo();\n};\n\nconst openSkype = (): void => {\n let skype: string = skypeUsername !== \"\" ? skypeUsername : tel;\n\n // Telegram url\n let skypeUrl: string = \"skype:\" + skype;\n\n // open the url\n window.open(skypeUrl, \"_blank\");\n\n // hide the modal\n hideMailgo();\n};\n\nconst openWhatsApp = (): void => {\n // WhatsApp url\n let waUrl: string = \"https://wa.me/\" + tel;\n\n // the details if provided\n if (msg) waUrl + \"?text=\" + msg;\n\n // open the url\n window.open(waUrl, \"_blank\");\n\n // hide the modal\n hideMailgo();\n};\n\nconst callDefault = () => {\n let callUrl: string = \"tel:\" + tel;\n window.open(callUrl);\n hideMailgo();\n};\n\nconst copy = (content: string): void => {\n copyToClipboard(content);\n let activeCopy: HTMLElement;\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\n// function that returns if an element is a mailgo\nexport function isMailgo(\n element: HTMLElement,\n type: string = MAIL_TYPE\n): boolean {\n let href: string = (element as HTMLLinkElement).href;\n\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 }\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 }\n\n return false;\n}\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 */\nexport function mailgoCheckRender(event: Event): boolean {\n // check if the id=mailgo exists in the body\n if (!document.contains(modalMailto) || !document.contains(modalTel))\n return false;\n\n // if a mailgo is already showing do nothing\n if (mailgoIsShowing(MAIL_TYPE) || mailgoIsShowing(TEL_TYPE)) return false;\n\n // the path of the event\n let path =\n (event.composedPath && event.composedPath()) ||\n composedPath(event.target as HTMLElement);\n\n if (path) {\n path.forEach((element: HTMLElement) => {\n if (element instanceof HTMLDocument || element instanceof Window)\n return false;\n\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\n // render mailgo\n mailgoRender(MAIL_TYPE, element as HTMLLinkElement);\n\n return true;\n }\n if (isMailgo(element, TEL_TYPE)) {\n // stop the normal execution of the element click\n event.preventDefault();\n\n // render mailgo\n mailgoRender(TEL_TYPE, element as HTMLLinkElement);\n\n return true;\n }\n });\n }\n\n return false;\n}\n\n/**\n * mailgoKeydown\n * function to manage the keydown event when the modal is showing\n */\nconst mailgoKeydown = (keyboardEvent: KeyboardEvent): void => {\n // if mailgo is showing\n if (mailgoIsShowing(MAIL_TYPE)) {\n switch (keyboardEvent.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 } else if (mailgoIsShowing(TEL_TYPE)) {\n switch (keyboardEvent.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\n// show the modal\nconst showMailgo = (type = MAIL_TYPE): void => {\n // show the correct modal\n setModalDisplay(type, \"flex\");\n};\n\n// hide the modal\nconst hideMailgo = (): void => {\n // hide all the modals\n setModalDisplay(MAIL_TYPE, \"none\");\n setModalDisplay(TEL_TYPE, \"none\");\n\n // remove listener keyDown\n document.removeEventListener(\"keydown\", mailgoKeydown);\n};\n\n// is the mailgo modal hidden?\nconst mailgoIsShowing = (type = MAIL_TYPE): boolean => {\n return getModalDisplay(type) === \"flex\";\n};\n\nconst byElement = (): HTMLLinkElement => {\n // by\n let by: HTMLLinkElement = createElement(aHTMLTag) as HTMLLinkElement;\n by.href = \"https://mailgo.dev?ref=mailgo-modal\";\n by.className = \"m-by\";\n by.target = \"_blank\";\n by.rel = \"noopener noreferrer\";\n by.appendChild(createTextNode(\"mailgo.dev\"));\n\n return by;\n};\n\n// create element\nconst createElement = (element: string = \"div\"): HTMLElement =>\n document.createElement(element);\n\n// create text node\nconst createTextNode = (element: string): Text =>\n document.createTextNode(element);\n\n// decrypt email\nconst mailToEncoded = (encoded: string): string =>\n (window.location.href = MAILTO + atob(encoded));\n\n// encode email\nconst encodeEmail = (email: string): string => btoa(email);\n\n// get the correct HTMLElement from a type\nconst getModalHTMLElement = (type: string = MAIL_TYPE) =>\n type === TEL_TYPE ? modalTel : modalMailto;\n\n// get display value\nconst getModalDisplay = (ref: string = MAIL_TYPE): string =>\n getModalHTMLElement(ref).style.display;\n\n// set display value\nconst setModalDisplay = (ref: string = MAIL_TYPE, value: string): void => {\n let modal = getModalHTMLElement(ref);\n modal.style.display = value;\n\n if (value === \"flex\") {\n // \"save\" the activated link.\n activatedLink = document.activeElement as HTMLElement;\n modal.setAttribute(\"aria-hidden\", \"false\");\n\n // Focus on the modal container.\n modal.setAttribute(\"tabindex\", \"0\");\n modal.focus();\n setFocusLoop(modal);\n } else {\n modal.setAttribute(\"aria-hidden\", \"true\");\n\n // focus back the activated link for getting back to the context.\n modal.setAttribute(\"tabindex\", \"-1\");\n activatedLink.focus();\n }\n};\n\n// set focus loop within modal\nconst setFocusLoop = (ref: HTMLElement): void => {\n let modal = ref;\n modal\n .querySelector(\".m-modal-content a:last-of-type\")\n .addEventListener(\"keydown\", leaveLastLink);\n modal\n .querySelector(\".m-modal-content a:first-of-type\")\n .addEventListener(\"keydown\", leaveFirstLink);\n};\n\nconst leaveLastLink = (e: KeyboardEvent): void => {\n // going back to the first link to force looping\n if (e.code === \"Tab\" && e.shiftKey === false) {\n e.preventDefault();\n\n ((e.target as HTMLElement)\n .closest(\"div\")\n .querySelector(\"a:first-of-type\") as HTMLElement).focus();\n }\n};\n\nconst leaveFirstLink = (e: KeyboardEvent): void => {\n // going back to the first link to force looping\n if (e.code === \"Tab\" && e.shiftKey === true) {\n e.preventDefault();\n ((e.target as HTMLElement)\n .closest(\"div\")\n .querySelector(\"a:last-of-type\") as HTMLElement).focus();\n }\n};\n\n// enable dark mode\nconst enableDarkMode = (type: string = MAIL_TYPE) =>\n getModalHTMLElement(type).classList.add(\"m-dark\");\n\n// disable dark mode\nconst disableDarkMode = (type: string = MAIL_TYPE) =>\n getModalHTMLElement(type).classList.remove(\"m-dark\");\n\n// custom composedPath if path or event.composedPath() are not defined\nconst composedPath = (\n el: HTMLElement\n): (HTMLElement | Document | (Window & typeof globalThis))[] => {\n let path = [];\n\n while (el) {\n path.push(el);\n\n if (el.tagName === \"HTML\") {\n path.push(document);\n path.push(window);\n return path;\n }\n\n el = el.parentElement;\n }\n};\n\n// validate a single email with regex\nconst validateEmail = (email: string): boolean =>\n /^(([^<>()[\\]\\\\.,;:\\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(\n email\n );\n\n// validate an array of emails\nconst validateEmails = (arr: string[]): boolean => arr.every(validateEmail);\n\n// validate a single tel with regex\nconst validateTel = (tel: string): boolean =>\n /^[+]{0,1}[\\s0-9]{0,}[(]{0,1}[0-9]{1,4}[)]{0,1}[-\\s\\./0-9]*$/.test(tel);\n\n// copy of a string\nconst copyToClipboard = (str: string): boolean => {\n let el: HTMLInputElement = createElement(\"textarea\") as HTMLInputElement;\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: Range | boolean =\n 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};\n\nconst mailgoStyle = (): void => {\n // mailgo style\n let mailgoCSSElement: HTMLStyleElement = createElement(\n \"style\"\n ) as HTMLStyleElement;\n mailgoCSSElement.id = \"mailgo-style\";\n mailgoCSSElement.type = \"text/css\";\n mailgoCSSElement.appendChild(createTextNode(mailgoCSS));\n document.head.appendChild(mailgoCSSElement);\n};\n\n// mailgo\nfunction mailgo(mailgoConfig?: MailgoConfig): void {\n // set the global config merging window mailgConfig and mailgoConfig passed as a parameter\n config = { ...mailgoConfig, ...((window as any)?.mailgoConfig || null) };\n\n // if the window is defined...\n if (window && typeof window !== \"undefined\") {\n // add the style for mailgo\n mailgoStyle();\n\n // if is set an initEvent add the listener\n if (config?.initEvent) {\n if (config?.listenerOptions) {\n // listener options specified\n document.addEventListener(\n config.initEvent,\n () => {\n mailgoInit();\n },\n config.listenerOptions\n );\n } else {\n // no listener options\n document.addEventListener(config.initEvent, () => {\n mailgoInit();\n });\n }\n } else {\n mailgoInit();\n }\n }\n}\n\nexport default mailgo;\n","// webpack > lib/mailgo.js\n\nimport mailgo from \"../src/mailgo\";\n\nexport default mailgo;\n"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack://mailgo/webpack/universalModuleDefinition","webpack://mailgo/webpack/bootstrap","webpack://mailgo/../src/mailgo.scss?16f9","webpack://mailgo/../src/mailgo.scss","webpack://mailgo/../node_modules/css-loader/dist/runtime/api.js","webpack://mailgo/../src/mailgo.ts","webpack://mailgo/./mailgo.lib.ts"],"names":["i18n","require","mailgoCSS","toString","DEFAULT_LANG","MAILTO","TEL","CALLTO","outlookDeepLink","MAIL_TYPE","TEL_TYPE","DEFAULT_BTN_HREF","spanHTMLTag","aHTMLTag","pHTMLTag","config","lang","modalMailto","modalTel","url","mail","encEmail","cc","bcc","subject","bodyMail","tel","msg","telegramUsername","skypeUsername","title","titleTel","detailCc","detailBcc","detailSubject","detailBody","ccValue","bccValue","subjectValue","bodyValue","activatedLink","gmail","outlook","open","telegram","wa","skype","call","copyMail","copyTel","mailgoInit","translations","languages","indexOf","forceLang","htmlLang","document","documentElement","defaultStrings","strings","mailgoExists","getElementById","createElement","style","display","id","classList","add","setAttribute","dark","enableDarkMode","disableDarkMode","modalBackground","className","appendChild","modalContent","details","ccSpan","createTextNode","cc_","bccSpan","bcc_","subjectSpan","subject_","bodySpan","body_","href","open_in_","gmailSpan","outlookSpan","openSpan","_default","copy","body","addEventListener","hideMailgo","mailgoTelExists","telegramSpan","waSpan","whatsapp","skypeSpan","callSpan","_as_default","mailgoCheckRender","mailgoRender","type","mailgoElement","toLowerCase","startsWith","decodeURIComponent","split","trim","URL","urlParams","searchParams","get","getAttribute","encodeURIComponent","validateEmail","validateEmails","innerHTML","join","textContent","openGmail","openOutlook","encodeEmail","openDefault","hasAttribute","validateTel","openWhatsApp","openTelegram","openSkype","callDefault","contains","showMailgo","mailgoKeydown","gmailUrl","concat","window","outlookUrl","mailToEncoded","tgUrl","skypeUrl","waUrl","callUrl","content","copyToClipboard","activeCopy","mailgoIsShowing","setTimeout","isMailgo","element","event","path","composedPath","target","forEach","HTMLDocument","Window","preventDefault","keyboardEvent","keyCode","setModalDisplay","removeEventListener","getModalDisplay","encoded","location","atob","email","btoa","getModalHTMLElement","ref","value","modal","activeElement","focus","setFocusLoop","querySelector","leaveLastLink","leaveFirstLink","e","code","shiftKey","closest","remove","el","push","tagName","parentElement","test","arr","every","str","position","left","selected","getSelection","rangeCount","getRangeAt","select","execCommand","removeChild","removeAllRanges","addRange","mailgoStyle","mailgoCSSElement","head","mailgo","mailgoConfig","initEvent","listenerOptions"],"mappings":"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","file":"lib/mailgo.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"mailgo\"] = factory();\n\telse\n\t\troot[\"mailgo\"] = factory();\n})(typeof self !== 'undefined' ? self : this, function() {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 4);\n","\n var result = require(\"!!../node_modules/css-loader/dist/cjs.js??ref--5-1!../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 ","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../node_modules/css-loader/dist/runtime/api.js\");\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(false);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".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:16.5px;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:#20232a;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.95;border-radius:20px;box-shadow:0 3px 20px rgba(32,35,42,0.5);color:#4a4a4a;display:flex;flex-direction:column;overflow:auto;padding:24px;transition:0.5s box-shadow}.m-modal .m-modal-content:hover,.m-modal .m-modal-content:focus,.m-modal .m-modal-content:active{opacity:1}.m-modal .m-modal-content .m-title{margin-bottom:8px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;line-height:1.2em}.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{cursor:pointer;padding:10px;color:#4a4a4a;border-radius:20px;text-decoration:none}.m-modal .m-modal-content a.m-gmail{color:#c0372a}.m-modal .m-modal-content a.m-gmail:hover,.m-modal .m-modal-content a.m-gmail:focus,.m-modal .m-modal-content a.m-gmail:active{background-color:rgba(212,70,56,0.08);color:#c0372a}.m-modal .m-modal-content a.m-outlook{color:#0967aa}.m-modal .m-modal-content a.m-outlook:hover,.m-modal .m-modal-content a.m-outlook:focus,.m-modal .m-modal-content a.m-outlook:active{background-color:rgba(0,114,198,0.08);color:#0967aa}.m-modal .m-modal-content a.m-tg{color:#086da0}.m-modal .m-modal-content a.m-tg:hover,.m-modal .m-modal-content a.m-tg:focus,.m-modal .m-modal-content a.m-tg:active{background-color:rgba(0,136,204,0.08);color:#086da0}.m-modal .m-modal-content a.m-wa{color:#067466}.m-modal .m-modal-content a.m-wa:hover,.m-modal .m-modal-content a.m-wa:focus,.m-modal .m-modal-content a.m-wa:active{background-color:rgba(0,191,165,0.08);color:#067466}.m-modal .m-modal-content a.m-skype{color:#076d92}.m-modal .m-modal-content a.m-skype:hover,.m-modal .m-modal-content a.m-skype:focus,.m-modal .m-modal-content a.m-skype:active{background-color:rgba(0,175,240,0.08);color:#076d92}.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-default:focus,.m-modal .m-modal-content a.m-default:active,.m-modal .m-modal-content a.m-copy:hover,.m-modal .m-modal-content a.m-copy:focus,.m-modal .m-modal-content a.m-copy:active{background-color:rgba(0,0,0,0.08);color:#4a4a4a}.m-modal .m-modal-content a.m-by{font-size:12px;margin-top:0.8rem;padding:5px;color:#4a4a4a}.m-modal .m-modal-content a.m-by:hover,.m-modal .m-modal-content a.m-by:focus,.m-modal .m-modal-content a.m-by:active{color:#3d3d3d}.m-modal .m-modal-content .w-500{font-weight:500}.m-modal.m-dark .m-modal-content{background-color:#20232a}.m-modal.m-dark .m-modal-content,.m-modal.m-dark .m-modal-content p,.m-modal.m-dark .m-modal-content p span,.m-modal.m-dark .m-modal-content strong{color:#fff}.m-modal.m-dark .m-modal-content a{color:#eaeaea}.m-modal.m-dark .m-modal-content a:not(.m-by):hover,.m-modal.m-dark .m-modal-content a:not(.m-by):focus,.m-modal.m-dark .m-modal-content a:not(.m-by):active{background-color:rgba(134,134,134,0.08);color:#eaeaea}.m-modal.m-dark .m-modal-content a.m-gmail{color:#e07d73}.m-modal.m-dark .m-modal-content a.m-gmail:hover,.m-modal.m-dark .m-modal-content a.m-gmail:focus,.m-modal.m-dark .m-modal-content a.m-gmail:active{background-color:rgba(212,70,56,0.08);color:#e07d73}.m-modal.m-dark .m-modal-content a.m-outlook{color:#4c9cd7}.m-modal.m-dark .m-modal-content a.m-outlook:hover,.m-modal.m-dark .m-modal-content a.m-outlook:focus,.m-modal.m-dark .m-modal-content a.m-outlook:active{background-color:rgba(0,114,198,0.08);color:#4c9cd7}.m-modal.m-dark .m-modal-content a.m-tg{color:#4cabdb}.m-modal.m-dark .m-modal-content a.m-tg:hover,.m-modal.m-dark .m-modal-content a.m-tg:focus,.m-modal.m-dark .m-modal-content a.m-tg:active{background-color:rgba(0,136,204,0.08);color:#4cabdb}.m-modal.m-dark .m-modal-content a.m-wa{color:#4cd2c0}.m-modal.m-dark .m-modal-content a.m-wa:hover,.m-modal.m-dark .m-modal-content a.m-wa:focus,.m-modal.m-dark .m-modal-content a.m-wa:active{background-color:rgba(0,191,165,0.08);color:#4cd2c0}.m-modal.m-dark .m-modal-content a.m-skype{color:#4cc7f4}.m-modal.m-dark .m-modal-content a.m-skype:hover,.m-modal.m-dark .m-modal-content a.m-skype:focus,.m-modal.m-dark .m-modal-content a.m-skype:active{background-color:rgba(0,175,240,0.08);color:#4cc7f4}.m-modal.m-dark .m-modal-content a.m-by:hover,.m-modal.m-dark .m-modal-content a.m-by:focus,.m-modal.m-dark .m-modal-content a.m-by:active{color:#fff}\\n\", \"\"]);\n// Exports\nmodule.exports = ___CSS_LOADER_EXPORT___;\n","\"use strict\";\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}","import {\r\n MailgoConfig,\r\n MailgoTranslations,\r\n MailgoTranslation,\r\n MailgoI18n,\r\n} from \"mailgo\";\r\n\r\n// i18n for mailgo\r\nconst i18n: MailgoI18n = require(\"../i18n/i18n.json\");\r\n\r\n// mailgo scss\r\nconst mailgoCSS: string = require(\"./mailgo.scss\").toString();\r\n\r\n// default lang\r\nconst DEFAULT_LANG: string = \"en\";\r\n\r\n// links\r\nconst MAILTO: string = \"mailto:\";\r\nconst TEL: string = \"tel:\";\r\nconst CALLTO: string = \"callto:\";\r\n\r\n// deep linking\r\nconst outlookDeepLink: string = \"ms-outlook://\";\r\n\r\n// mailgo types\r\nconst MAIL_TYPE: string = \"mail\";\r\nconst TEL_TYPE: string = \"tel\";\r\n\r\n// default href for links\r\nconst DEFAULT_BTN_HREF: string = \"javascript:void(0);\";\r\n\r\n// useful html tags\r\nconst spanHTMLTag: string = \"span\";\r\nconst aHTMLTag: string = \"a\";\r\nconst pHTMLTag: string = \"p\";\r\n\r\n// global mailgo config object\r\nlet config: MailgoConfig;\r\n\r\n// default language\r\nlet lang: string = DEFAULT_LANG;\r\n\r\n// modals global object\r\nlet modalMailto: HTMLElement, modalTel: HTMLElement;\r\n\r\n// mailgo variables\r\nlet url: URL,\r\n mail: string = \"\",\r\n encEmail: string = \"\",\r\n cc: string = \"\",\r\n bcc: string = \"\",\r\n subject: string = \"\",\r\n bodyMail: string = \"\";\r\n\r\n// mailgo tel variables\r\nlet tel: string = \"\",\r\n msg: string = \"\",\r\n telegramUsername: string = \"\",\r\n skypeUsername: string = \"\";\r\n\r\n// the DOM elements\r\nlet title: HTMLElement,\r\n titleTel: HTMLElement,\r\n detailCc: HTMLElement,\r\n detailBcc: HTMLElement,\r\n detailSubject: HTMLElement,\r\n detailBody: HTMLElement,\r\n ccValue: HTMLElement,\r\n bccValue: HTMLElement,\r\n subjectValue: HTMLElement,\r\n bodyValue: HTMLElement,\r\n activatedLink: HTMLElement;\r\n\r\n// mailgo buttons (actions)\r\nlet gmail: HTMLLinkElement,\r\n outlook: HTMLLinkElement,\r\n open: HTMLLinkElement,\r\n telegram: HTMLLinkElement,\r\n wa: HTMLLinkElement,\r\n skype: HTMLLinkElement,\r\n call: HTMLLinkElement,\r\n copyMail: HTMLLinkElement,\r\n copyTel: HTMLLinkElement;\r\n\r\n/**\r\n * mailgoInit\r\n * the function that creates the mailgo elements in DOM\r\n */\r\nconst mailgoInit = (): void => {\r\n // translations\r\n let {\r\n translations,\r\n }: { translations: MailgoTranslations } = i18n as MailgoI18n;\r\n\r\n // if a default language is defined use it\r\n if (config?.lang && i18n.languages.indexOf(config.lang) !== -1) {\r\n lang = config.lang;\r\n }\r\n\r\n // if is defined use it!\r\n if (!config?.forceLang) {\r\n // keep the lang from html\r\n let htmlLang: string = document.documentElement.lang;\r\n\r\n // if there are translations...\r\n if (i18n.languages.indexOf(htmlLang) !== -1) {\r\n lang = document.documentElement.lang;\r\n }\r\n }\r\n\r\n // strings\r\n let defaultStrings: MailgoTranslation = translations[DEFAULT_LANG];\r\n let strings: MailgoTranslation = translations[lang];\r\n\r\n // mailgo, if mailgo not already exists\r\n let mailgoExists = !!document.getElementById(\"mailgo\");\r\n\r\n if (!mailgoExists) {\r\n // modal\r\n modalMailto = createElement() as HTMLElement;\r\n modalMailto.style.display = \"none\";\r\n modalMailto.id = \"mailgo\";\r\n modalMailto.classList.add(\"m-modal\");\r\n modalMailto.setAttribute(\"role\", \"dialog\");\r\n modalMailto.setAttribute(\"tabindex\", \"-1\");\r\n modalMailto.setAttribute(\"aria-labelledby\", \"m-title\");\r\n\r\n // if dark is in config\r\n if (config?.dark) {\r\n enableDarkMode(MAIL_TYPE);\r\n } else {\r\n disableDarkMode(MAIL_TYPE);\r\n }\r\n\r\n // background\r\n let modalBackground: HTMLElement = createElement();\r\n modalBackground.className = \"m-modal-back\";\r\n modalMailto.appendChild(modalBackground);\r\n\r\n // modal content\r\n let modalContent: HTMLElement = createElement();\r\n modalContent.className = \"m-modal-content\";\r\n modalMailto.appendChild(modalContent);\r\n\r\n // title (email address)\r\n title = createElement(\"strong\");\r\n title.id = \"m-title\";\r\n title.className = \"m-title\";\r\n modalContent.appendChild(title);\r\n\r\n // details\r\n let details: HTMLElement = createElement();\r\n details.id = \"m-details\";\r\n details.className = \"m-details\";\r\n\r\n detailCc = createElement(pHTMLTag);\r\n detailCc.id = \"m-cc\";\r\n let ccSpan: HTMLElement = createElement(spanHTMLTag);\r\n ccSpan.className = \"w-500\";\r\n ccSpan.appendChild(createTextNode(strings.cc_ || defaultStrings.cc_));\r\n ccValue = createElement(spanHTMLTag);\r\n ccValue.id = \"m-cc-value\";\r\n detailCc.appendChild(ccSpan);\r\n detailCc.appendChild(ccValue);\r\n details.appendChild(detailCc);\r\n\r\n detailBcc = createElement(pHTMLTag);\r\n detailBcc.id = \"m-bcc\";\r\n let bccSpan: HTMLElement = createElement(spanHTMLTag);\r\n bccSpan.className = \"w-500\";\r\n bccSpan.appendChild(createTextNode(strings.bcc_ || defaultStrings.bcc_));\r\n bccValue = createElement(spanHTMLTag);\r\n bccValue.id = \"m-bcc-value\";\r\n detailBcc.appendChild(bccSpan);\r\n detailBcc.appendChild(bccValue);\r\n details.appendChild(detailBcc);\r\n\r\n detailSubject = createElement(pHTMLTag);\r\n detailSubject.id = \"m-subject\";\r\n let subjectSpan: HTMLElement = createElement(spanHTMLTag);\r\n subjectSpan.className = \"w-500\";\r\n subjectSpan.appendChild(\r\n createTextNode(strings.subject_ || defaultStrings.subject_)\r\n );\r\n subjectValue = createElement(spanHTMLTag);\r\n subjectValue.id = \"m-subject-value\";\r\n detailSubject.appendChild(subjectSpan);\r\n detailSubject.appendChild(subjectValue);\r\n details.appendChild(detailSubject);\r\n\r\n detailBody = createElement(pHTMLTag);\r\n detailBody.id = \"m-body\";\r\n let bodySpan: HTMLElement = createElement(spanHTMLTag);\r\n bodySpan.className = \"w-500\";\r\n bodySpan.appendChild(createTextNode(strings.body_ || defaultStrings.body_));\r\n bodyValue = createElement(spanHTMLTag);\r\n bodyValue.id = \"m-body-value\";\r\n detailBody.appendChild(bodySpan);\r\n detailBody.appendChild(bodyValue);\r\n details.appendChild(detailBody);\r\n\r\n modalContent.appendChild(details);\r\n\r\n // Gmail\r\n gmail = createElement(aHTMLTag) as HTMLLinkElement;\r\n gmail.id = \"m-gmail\";\r\n gmail.href = DEFAULT_BTN_HREF;\r\n gmail.classList.add(\"m-open\");\r\n gmail.classList.add(\"m-gmail\");\r\n gmail.appendChild(\r\n createTextNode(strings.open_in_ || defaultStrings.open_in_)\r\n );\r\n let gmailSpan: HTMLElement = createElement(spanHTMLTag);\r\n gmailSpan.className = \"w-500\";\r\n gmailSpan.appendChild(\r\n createTextNode(strings.gmail || defaultStrings.gmail)\r\n );\r\n gmail.appendChild(gmailSpan);\r\n\r\n modalContent.appendChild(gmail);\r\n\r\n // Outlook\r\n outlook = createElement(aHTMLTag) as HTMLLinkElement;\r\n outlook.id = \"m-outlook\";\r\n outlook.href = DEFAULT_BTN_HREF;\r\n outlook.classList.add(\"m-open\");\r\n outlook.classList.add(\"m-outlook\");\r\n outlook.appendChild(\r\n createTextNode(strings.open_in_ || defaultStrings.open_in_)\r\n );\r\n let outlookSpan: HTMLElement = createElement(spanHTMLTag);\r\n outlookSpan.className = \"w-500\";\r\n outlookSpan.appendChild(\r\n createTextNode(strings.outlook || defaultStrings.outlook)\r\n );\r\n outlook.appendChild(outlookSpan);\r\n\r\n modalContent.appendChild(outlook);\r\n\r\n // open default\r\n open = createElement(aHTMLTag) as HTMLLinkElement;\r\n open.id = \"m-open\";\r\n open.href = DEFAULT_BTN_HREF;\r\n open.classList.add(\"m-open\");\r\n open.classList.add(\"m-default\");\r\n let openSpan: HTMLElement = createElement(spanHTMLTag);\r\n openSpan.className = \"w-500\";\r\n openSpan.appendChild(createTextNode(strings.open || defaultStrings.open));\r\n open.appendChild(openSpan);\r\n open.appendChild(\r\n createTextNode(strings._default || defaultStrings._default)\r\n );\r\n\r\n modalContent.appendChild(open);\r\n\r\n // copy\r\n copyMail = createElement(aHTMLTag) as HTMLLinkElement;\r\n copyMail.id = \"m-copy\";\r\n copyMail.href = DEFAULT_BTN_HREF;\r\n copyMail.classList.add(\"m-copy\");\r\n copyMail.classList.add(\"w-500\");\r\n copyMail.appendChild(createTextNode(strings.copy || defaultStrings.copy));\r\n\r\n modalContent.appendChild(copyMail);\r\n\r\n // add the modal at the end of the body\r\n document.body.appendChild(modalMailto);\r\n\r\n // every click outside the modal will hide the modal\r\n modalBackground.addEventListener(\"click\", hideMailgo);\r\n }\r\n\r\n // mailgo tel, if mailgo-tel not already exists\r\n let mailgoTelExists = !!document.getElementById(\"mailgo-tel\");\r\n\r\n if (!mailgoTelExists) {\r\n // modal\r\n modalTel = createElement() as HTMLElement;\r\n modalTel.style.display = \"none\";\r\n modalTel.id = \"mailgo-tel\";\r\n modalTel.classList.add(\"m-modal\");\r\n modalTel.setAttribute(\"role\", \"dialog\");\r\n modalTel.setAttribute(\"tabindex\", \"-1\");\r\n modalTel.setAttribute(\"aria-labelledby\", \"m-tel-title\");\r\n\r\n // if dark is in config\r\n if (config?.dark) {\r\n enableDarkMode(TEL_TYPE);\r\n } else {\r\n disableDarkMode(TEL_TYPE);\r\n }\r\n\r\n // background\r\n let modalBackground: HTMLElement = createElement();\r\n modalBackground.className = \"m-modal-back\";\r\n modalTel.appendChild(modalBackground);\r\n\r\n // modal content\r\n let modalContent: HTMLElement = createElement();\r\n modalContent.className = \"m-modal-content\";\r\n modalTel.appendChild(modalContent);\r\n\r\n // title (telephone number)\r\n titleTel = createElement(\"strong\");\r\n titleTel.id = \"m-tel-title\";\r\n titleTel.className = \"m-title\";\r\n modalContent.appendChild(titleTel);\r\n\r\n // Telegram\r\n telegram = createElement(aHTMLTag) as HTMLLinkElement;\r\n telegram.id = \"m-tg\";\r\n telegram.href = DEFAULT_BTN_HREF;\r\n telegram.classList.add(\"m-open\");\r\n telegram.classList.add(\"m-tg\");\r\n\r\n // by default not display\r\n telegram.style.display = \"none\";\r\n\r\n telegram.appendChild(\r\n createTextNode(strings.open_in_ || defaultStrings.open_in_)\r\n );\r\n let telegramSpan: HTMLElement = createElement(spanHTMLTag);\r\n telegramSpan.className = \"w-500\";\r\n telegramSpan.appendChild(\r\n createTextNode(strings.telegram || defaultStrings.telegram)\r\n );\r\n telegram.appendChild(telegramSpan);\r\n\r\n modalContent.appendChild(telegram);\r\n\r\n // WhatsApp\r\n wa = createElement(aHTMLTag) as HTMLLinkElement;\r\n wa.id = \"m-wa\";\r\n wa.href = DEFAULT_BTN_HREF;\r\n wa.classList.add(\"m-open\");\r\n wa.classList.add(\"m-wa\");\r\n wa.appendChild(createTextNode(strings.open_in_ || defaultStrings.open_in_));\r\n let waSpan: HTMLElement = createElement(spanHTMLTag);\r\n waSpan.className = \"w-500\";\r\n waSpan.appendChild(\r\n createTextNode(strings.whatsapp || defaultStrings.whatsapp)\r\n );\r\n wa.appendChild(waSpan);\r\n\r\n modalContent.appendChild(wa);\r\n\r\n // Skype\r\n skype = createElement(aHTMLTag) as HTMLLinkElement;\r\n skype.id = \"m-skype\";\r\n skype.href = DEFAULT_BTN_HREF;\r\n skype.classList.add(\"m-open\");\r\n skype.classList.add(\"m-skype\");\r\n skype.appendChild(\r\n createTextNode(strings.open_in_ || defaultStrings.open_in_)\r\n );\r\n let skypeSpan: HTMLElement = createElement(spanHTMLTag);\r\n skypeSpan.className = \"w-500\";\r\n skypeSpan.appendChild(\r\n createTextNode(strings.skype || defaultStrings.skype)\r\n );\r\n skype.appendChild(skypeSpan);\r\n\r\n modalContent.appendChild(skype);\r\n\r\n // call default\r\n call = createElement(aHTMLTag) as HTMLLinkElement;\r\n call.id = \"m-call\";\r\n call.href = DEFAULT_BTN_HREF;\r\n call.classList.add(\"m-open\");\r\n call.classList.add(\"m-default\");\r\n let callSpan: HTMLElement = createElement(spanHTMLTag);\r\n callSpan.className = \"w-500\";\r\n callSpan.appendChild(createTextNode(strings.call || defaultStrings.call));\r\n call.appendChild(callSpan);\r\n call.appendChild(\r\n createTextNode(strings._as_default || defaultStrings._as_default)\r\n );\r\n\r\n modalContent.appendChild(call);\r\n\r\n // copy\r\n copyTel = createElement(aHTMLTag) as HTMLLinkElement;\r\n copyTel.id = \"m-tel-copy\";\r\n copyTel.href = DEFAULT_BTN_HREF;\r\n copyTel.classList.add(\"m-copy\");\r\n copyTel.classList.add(\"w-500\");\r\n copyTel.appendChild(createTextNode(strings.copy || defaultStrings.copy));\r\n\r\n modalContent.appendChild(copyTel);\r\n\r\n // add the modal at the end of the body\r\n document.body.appendChild(modalTel);\r\n\r\n // every click outside the modal will hide the modal\r\n modalBackground.addEventListener(\"click\", hideMailgo);\r\n }\r\n\r\n // event listener on body, if the element is mailgo-compatible the mailgo modal will be rendered\r\n document.addEventListener(\"click\", mailgoCheckRender);\r\n};\r\n\r\n/**\r\n * mailgoRender\r\n * function to render a mailgo (mail or tel)\r\n */\r\nexport function mailgoRender(\r\n type: string = MAIL_TYPE,\r\n mailgoElement: HTMLLinkElement\r\n): void {\r\n // mailgo mail\r\n if (type === MAIL_TYPE) {\r\n // if the element href=^\"mailto:\"\r\n if (\r\n mailgoElement.href &&\r\n mailgoElement.href.toLowerCase().startsWith(MAILTO)\r\n ) {\r\n mail = decodeURIComponent(\r\n mailgoElement.href.split(\"?\")[0].split(MAILTO)[1].trim()\r\n );\r\n\r\n url = new URL(mailgoElement.href);\r\n let urlParams: URLSearchParams = url.searchParams;\r\n\r\n // optional parameters for the email\r\n cc = urlParams.get(\"cc\");\r\n bcc = urlParams.get(\"bcc\");\r\n subject = urlParams.get(\"subject\");\r\n bodyMail = urlParams.get(\"body\");\r\n } else {\r\n // if the element href=\"#mailgo\" or class=\"mailgo\"\r\n // mail = data-address + @ + data-domain\r\n mail =\r\n mailgoElement.getAttribute(\"data-address\") +\r\n \"@\" +\r\n mailgoElement.getAttribute(\"data-domain\");\r\n\r\n url = new URL(MAILTO + encodeURIComponent(mail));\r\n\r\n // cc = data-cc-address + @ + data-cc-domain\r\n cc =\r\n mailgoElement.getAttribute(\"data-cc-address\") +\r\n \"@\" +\r\n mailgoElement.getAttribute(\"data-cc-domain\");\r\n\r\n // bcc = data-bcc-address + @ + data-bcc-domain\r\n bcc =\r\n mailgoElement.getAttribute(\"data-bcc-address\") +\r\n \"@\" +\r\n mailgoElement.getAttribute(\"data-bcc-domain\");\r\n\r\n // subject = data-subject\r\n subject = mailgoElement.getAttribute(\"data-subject\");\r\n\r\n // body = data-body\r\n bodyMail = mailgoElement.getAttribute(\"data-body\");\r\n }\r\n\r\n if (\r\n typeof config?.validateEmail === \"undefined\" ||\r\n config?.validateEmail === true\r\n ) {\r\n // validate the email address\r\n if (!validateEmails(mail.split(\",\"))) return;\r\n\r\n // if cc, bcc are not valid cc, bcc = \"\"\r\n if (cc && !validateEmails(cc.split(\",\"))) cc = \"\";\r\n if (bcc && !validateEmails(bcc.split(\",\"))) bcc = \"\";\r\n }\r\n\r\n // the title of the modal (email address)\r\n title.innerHTML = mail.split(\",\").join(\"
\");\r\n\r\n // add the details if provided\r\n cc\r\n ? ((detailCc.style.display = \"block\"),\r\n (ccValue.innerHTML = cc.split(\",\").join(\"
\")))\r\n : (detailCc.style.display = \"none\");\r\n\r\n bcc\r\n ? ((detailBcc.style.display = \"block\"),\r\n (bccValue.innerHTML = bcc.split(\",\").join(\"
\")))\r\n : (detailBcc.style.display = \"none\");\r\n\r\n subject\r\n ? ((detailSubject.style.display = \"block\"),\r\n (subjectValue.textContent = subject))\r\n : (detailSubject.style.display = \"none\");\r\n\r\n bodyMail\r\n ? ((detailBody.style.display = \"block\"),\r\n (bodyValue.textContent = bodyMail))\r\n : (detailBody.style.display = \"none\");\r\n\r\n // add the actions\r\n gmail.addEventListener(\"click\", openGmail);\r\n\r\n outlook.addEventListener(\"click\", openOutlook);\r\n\r\n encEmail = encodeEmail(mail);\r\n open.addEventListener(\"click\", openDefault);\r\n\r\n copyMail.addEventListener(\"click\", () => copy(mail));\r\n }\r\n // mailgo tel\r\n else if (type === TEL_TYPE) {\r\n if (\r\n mailgoElement.href &&\r\n mailgoElement.href.toLowerCase().startsWith(TEL)\r\n ) {\r\n tel = decodeURIComponent(\r\n mailgoElement.href.split(\"?\")[0].split(TEL)[1].trim()\r\n );\r\n } else if (\r\n mailgoElement.href &&\r\n mailgoElement.href.toLowerCase().startsWith(CALLTO)\r\n ) {\r\n tel = decodeURIComponent(\r\n mailgoElement.href.split(\"?\")[0].split(CALLTO)[1].trim()\r\n );\r\n } else if (mailgoElement.hasAttribute(\"data-tel\")) {\r\n tel = mailgoElement.getAttribute(\"data-tel\");\r\n msg = mailgoElement.getAttribute(\"data-msg\");\r\n }\r\n\r\n // validate the phone number\r\n if (!validateTel(tel)) return;\r\n\r\n // Telegram username\r\n if (mailgoElement.hasAttribute(\"data-telegram\")) {\r\n telegramUsername = mailgoElement.getAttribute(\"data-telegram\");\r\n } else {\r\n telegramUsername = null;\r\n }\r\n\r\n // Telegram username\r\n if (mailgoElement.hasAttribute(\"data-skype\")) {\r\n skypeUsername = mailgoElement.getAttribute(\"data-skype\");\r\n }\r\n\r\n // the title of the modal (tel)\r\n titleTel.innerHTML = tel;\r\n\r\n // add the actions to buttons\r\n wa.addEventListener(\"click\", openWhatsApp);\r\n\r\n // telegram must be shown only if data-telegram is provided\r\n if (telegramUsername) {\r\n document.getElementById(\"m-tg\").style.display = \"block\";\r\n telegram.addEventListener(\"click\", openTelegram);\r\n } else {\r\n document.getElementById(\"m-tg\").style.display = \"none\";\r\n }\r\n\r\n skype.addEventListener(\"click\", openSkype);\r\n\r\n call.addEventListener(\"click\", callDefault);\r\n\r\n copyTel.addEventListener(\"click\", () => copy(tel));\r\n }\r\n\r\n // if config.dark is set to true then all the modals will be in dark mode\r\n if (!config?.dark) {\r\n // if the element contains dark as class enable dark mode\r\n if (mailgoElement.classList.contains(\"dark\")) {\r\n enableDarkMode(type);\r\n } else {\r\n disableDarkMode(type);\r\n }\r\n }\r\n\r\n // show the mailgo\r\n showMailgo(type);\r\n\r\n // add listener keyDown\r\n document.addEventListener(\"keydown\", mailgoKeydown);\r\n}\r\n\r\n// actions\r\nconst openGmail = (): void => {\r\n // Gmail url\r\n let gmailUrl: string =\r\n \"https://mail.google.com/mail/u/0/?view=cm&source=mailto&to=\" +\r\n encodeURIComponent(mail);\r\n\r\n // the details if provided\r\n if (cc) gmailUrl = gmailUrl.concat(\"&cc=\" + encodeURIComponent(cc));\r\n if (bcc) gmailUrl = gmailUrl.concat(\"&bcc=\" + encodeURIComponent(bcc));\r\n if (subject) gmailUrl = gmailUrl.concat(\"&subject=\" + subject);\r\n if (bodyMail) gmailUrl = gmailUrl.concat(\"&body=\" + bodyMail);\r\n\r\n // open the link\r\n window.open(gmailUrl, \"_blank\");\r\n\r\n // hide the modal\r\n hideMailgo();\r\n};\r\n\r\nconst openOutlook = (): void => {\r\n // Outlook url\r\n let outlookUrl: string =\r\n \"https://outlook.live.com/owa/?path=/mail/action/compose&to=\" +\r\n encodeURIComponent(mail);\r\n\r\n // the details if provided\r\n if (subject) outlookUrl = outlookUrl.concat(\"&subject=\" + subject);\r\n if (bodyMail) outlookUrl = outlookUrl.concat(\"&body=\" + bodyMail);\r\n\r\n // open the link\r\n window.open(outlookUrl, \"_blank\");\r\n\r\n // hide the modal\r\n hideMailgo();\r\n};\r\n\r\nconst openDefault = (): void => {\r\n mailToEncoded(encEmail);\r\n hideMailgo();\r\n};\r\n\r\nconst openTelegram = (): void => {\r\n // Telegram url\r\n let tgUrl: string = \"https://t.me/\" + telegramUsername;\r\n\r\n // open the url\r\n window.open(tgUrl, \"_blank\");\r\n\r\n // hide the modal\r\n hideMailgo();\r\n};\r\n\r\nconst openSkype = (): void => {\r\n let skype: string = skypeUsername !== \"\" ? skypeUsername : tel;\r\n\r\n // Telegram url\r\n let skypeUrl: string = \"skype:\" + skype;\r\n\r\n // open the url\r\n window.open(skypeUrl, \"_blank\");\r\n\r\n // hide the modal\r\n hideMailgo();\r\n};\r\n\r\nconst openWhatsApp = (): void => {\r\n // WhatsApp url\r\n let waUrl: string = \"https://wa.me/\" + tel;\r\n\r\n // the details if provided\r\n if (msg) waUrl + \"?text=\" + msg;\r\n\r\n // open the url\r\n window.open(waUrl, \"_blank\");\r\n\r\n // hide the modal\r\n hideMailgo();\r\n};\r\n\r\nconst callDefault = () => {\r\n let callUrl: string = \"tel:\" + tel;\r\n window.open(callUrl);\r\n hideMailgo();\r\n};\r\n\r\nconst copy = (content: string): void => {\r\n copyToClipboard(content);\r\n let activeCopy: HTMLElement;\r\n // the correct copyButton (mail or tel)\r\n mailgoIsShowing(MAIL_TYPE) ? (activeCopy = copyMail) : (activeCopy = copyTel);\r\n activeCopy.textContent = \"copied\";\r\n setTimeout(() => {\r\n activeCopy.textContent = \"copy\";\r\n // hide after the timeout\r\n hideMailgo();\r\n }, 999);\r\n};\r\n\r\n// function that returns if an element is a mailgo\r\nexport function isMailgo(\r\n element: HTMLElement,\r\n type: string = MAIL_TYPE\r\n): boolean {\r\n let href: string = (element as HTMLLinkElement).href;\r\n\r\n // mailgo type mail\r\n if (type === MAIL_TYPE) {\r\n return (\r\n // first case: it is an
element with \"mailto:...\" in href and no no-mailgo in classList\r\n (href &&\r\n href.toLowerCase().startsWith(MAILTO) &&\r\n !element.classList.contains(\"no-mailgo\")) ||\r\n (element.hasAttribute(\"data-address\") &&\r\n // second case: the href=#mailgo\r\n ((href && element.getAttribute(\"href\").toLowerCase() === \"#mailgo\") ||\r\n // third case: the classList contains mailgo\r\n (element.classList && element.classList.contains(\"mailgo\"))))\r\n );\r\n }\r\n\r\n // mailgo type tel\r\n if (type === TEL_TYPE) {\r\n return (\r\n // first case: it is an element with \"tel:...\" or \"callto:...\" in href and no no-mailgo in classList\r\n (href &&\r\n (href.toLowerCase().startsWith(TEL) ||\r\n href.toLowerCase().startsWith(CALLTO)) &&\r\n !element.classList.contains(\"no-mailgo\")) ||\r\n (element.hasAttribute(\"data-tel\") &&\r\n // second case: the href=#mailgo\r\n href &&\r\n element.getAttribute(\"href\").toLowerCase() === \"#mailgo\") ||\r\n // third case: the classList contains mailgo\r\n (element.classList && element.classList.contains(\"mailgo\"))\r\n );\r\n }\r\n\r\n return false;\r\n}\r\n\r\n/**\r\n * mailgoCheckRender\r\n * function to check if an element is mailgo-enabled or not referencing to\r\n * mail:\r\n * document.querySelectorAll(\r\n * 'a[href^=\"mailto:\" i]:not(.no-mailgo), a[href=\"#mailgo\"], a.mailgo'\r\n * );\r\n * tel:\r\n * document.querySelectorAll(\r\n * 'a[href^=\"tel:\" i]:not(.no-mailgo), a[href=\"#mailgo\"], a.mailgo'\r\n * );\r\n * or\r\n * document.querySelectorAll(\r\n * 'a[href^=\"callto:\" i]:not(.no-mailgo), a[href=\"#mailgo\"], a.mailgo'\r\n * );\r\n */\r\nexport function mailgoCheckRender(event: Event): boolean {\r\n // check if the id=mailgo exists in the body\r\n if (!document.contains(modalMailto) || !document.contains(modalTel))\r\n return false;\r\n\r\n // if a mailgo is already showing do nothing\r\n if (mailgoIsShowing(MAIL_TYPE) || mailgoIsShowing(TEL_TYPE)) return false;\r\n\r\n // the path of the event\r\n let path =\r\n (event.composedPath && event.composedPath()) ||\r\n composedPath(event.target as HTMLElement);\r\n\r\n if (path) {\r\n path.forEach((element: HTMLElement) => {\r\n if (element instanceof HTMLDocument || element instanceof Window)\r\n return false;\r\n\r\n // go in the event.path to find if the user has clicked on a mailgo element\r\n if (isMailgo(element, MAIL_TYPE)) {\r\n // stop the normal execution of the element click\r\n event.preventDefault();\r\n\r\n // render mailgo\r\n mailgoRender(MAIL_TYPE, element as HTMLLinkElement);\r\n\r\n return true;\r\n }\r\n if (isMailgo(element, TEL_TYPE)) {\r\n // stop the normal execution of the element click\r\n event.preventDefault();\r\n\r\n // render mailgo\r\n mailgoRender(TEL_TYPE, element as HTMLLinkElement);\r\n\r\n return true;\r\n }\r\n });\r\n }\r\n\r\n return false;\r\n}\r\n\r\n/**\r\n * mailgoKeydown\r\n * function to manage the keydown event when the modal is showing\r\n */\r\nconst mailgoKeydown = (keyboardEvent: KeyboardEvent): void => {\r\n // if mailgo is showing\r\n if (mailgoIsShowing(MAIL_TYPE)) {\r\n switch (keyboardEvent.keyCode) {\r\n case 27:\r\n // Escape\r\n hideMailgo();\r\n break;\r\n case 71:\r\n // g -> open GMail\r\n openGmail();\r\n break;\r\n case 79:\r\n // o -> open Outlook\r\n openOutlook();\r\n break;\r\n case 32:\r\n case 13:\r\n // spacebar or enter -> open default\r\n openDefault();\r\n break;\r\n case 67:\r\n // c -> copy\r\n copy(mail);\r\n break;\r\n default:\r\n return;\r\n }\r\n } else if (mailgoIsShowing(TEL_TYPE)) {\r\n switch (keyboardEvent.keyCode) {\r\n case 27:\r\n // Escape\r\n hideMailgo();\r\n break;\r\n case 84:\r\n // t -> open Telegram\r\n openTelegram();\r\n break;\r\n case 87:\r\n // w -> open WhatsApp\r\n openWhatsApp();\r\n break;\r\n case 32:\r\n case 13:\r\n // spacebar or enter -> call default\r\n callDefault();\r\n break;\r\n case 67:\r\n // c -> copy\r\n copy(tel);\r\n break;\r\n default:\r\n return;\r\n }\r\n }\r\n return;\r\n};\r\n\r\n// show the modal\r\nconst showMailgo = (type = MAIL_TYPE): void => {\r\n // show the correct modal\r\n setModalDisplay(type, \"flex\");\r\n};\r\n\r\n// hide the modal\r\nconst hideMailgo = (): void => {\r\n // hide all the modals\r\n setModalDisplay(MAIL_TYPE, \"none\");\r\n setModalDisplay(TEL_TYPE, \"none\");\r\n\r\n // remove listener keyDown\r\n document.removeEventListener(\"keydown\", mailgoKeydown);\r\n};\r\n\r\n// is the mailgo modal hidden?\r\nconst mailgoIsShowing = (type = MAIL_TYPE): boolean => {\r\n return getModalDisplay(type) === \"flex\";\r\n};\r\n\r\n// create element\r\nconst createElement = (element: string = \"div\"): HTMLElement =>\r\n document.createElement(element);\r\n\r\n// create text node\r\nconst createTextNode = (element: string): Text =>\r\n document.createTextNode(element);\r\n\r\n// decrypt email\r\nconst mailToEncoded = (encoded: string): string =>\r\n (window.location.href = MAILTO + atob(encoded));\r\n\r\n// encode email\r\nconst encodeEmail = (email: string): string => btoa(email);\r\n\r\n// get the correct HTMLElement from a type\r\nconst getModalHTMLElement = (type: string = MAIL_TYPE) =>\r\n type === TEL_TYPE ? modalTel : modalMailto;\r\n\r\n// get display value\r\nconst getModalDisplay = (ref: string = MAIL_TYPE): string =>\r\n getModalHTMLElement(ref).style.display;\r\n\r\n// set display value\r\nconst setModalDisplay = (ref: string = MAIL_TYPE, value: string): void => {\r\n let modal = getModalHTMLElement(ref);\r\n modal.style.display = value;\r\n\r\n if (value === \"flex\") {\r\n // \"save\" the activated link.\r\n activatedLink = document.activeElement as HTMLElement;\r\n modal.setAttribute(\"aria-hidden\", \"false\");\r\n\r\n // Focus on the modal container.\r\n modal.setAttribute(\"tabindex\", \"0\");\r\n modal.focus();\r\n setFocusLoop(modal);\r\n } else {\r\n modal.setAttribute(\"aria-hidden\", \"true\");\r\n\r\n // focus back the activated link for getting back to the context.\r\n modal.setAttribute(\"tabindex\", \"-1\");\r\n activatedLink.focus();\r\n }\r\n};\r\n\r\n// set focus loop within modal\r\nconst setFocusLoop = (ref: HTMLElement): void => {\r\n let modal = ref;\r\n modal\r\n .querySelector(\".m-modal-content a:last-of-type\")\r\n .addEventListener(\"keydown\", leaveLastLink);\r\n modal\r\n .querySelector(\".m-modal-content a:first-of-type\")\r\n .addEventListener(\"keydown\", leaveFirstLink);\r\n};\r\n\r\nconst leaveLastLink = (e: KeyboardEvent): void => {\r\n // going back to the first link to force looping\r\n if (e.code === \"Tab\" && e.shiftKey === false) {\r\n e.preventDefault();\r\n\r\n ((e.target as HTMLElement)\r\n .closest(\"div\")\r\n .querySelector(\"a:first-of-type\") as HTMLElement).focus();\r\n }\r\n};\r\n\r\nconst leaveFirstLink = (e: KeyboardEvent): void => {\r\n // going back to the first link to force looping\r\n if (e.code === \"Tab\" && e.shiftKey === true) {\r\n e.preventDefault();\r\n ((e.target as HTMLElement)\r\n .closest(\"div\")\r\n .querySelector(\"a:last-of-type\") as HTMLElement).focus();\r\n }\r\n};\r\n\r\n// enable dark mode\r\nconst enableDarkMode = (type: string = MAIL_TYPE) =>\r\n getModalHTMLElement(type).classList.add(\"m-dark\");\r\n\r\n// disable dark mode\r\nconst disableDarkMode = (type: string = MAIL_TYPE) =>\r\n getModalHTMLElement(type).classList.remove(\"m-dark\");\r\n\r\n// custom composedPath if path or event.composedPath() are not defined\r\nconst composedPath = (\r\n el: HTMLElement\r\n): (HTMLElement | Document | (Window & typeof globalThis))[] => {\r\n let path = [];\r\n\r\n while (el) {\r\n path.push(el);\r\n\r\n if (el.tagName === \"HTML\") {\r\n path.push(document);\r\n path.push(window);\r\n return path;\r\n }\r\n\r\n el = el.parentElement;\r\n }\r\n};\r\n\r\n// validate a single email with regex\r\nconst validateEmail = (email: string): boolean =>\r\n /^(([^<>()[\\]\\\\.,;:\\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(\r\n email\r\n );\r\n\r\n// validate an array of emails\r\nconst validateEmails = (arr: string[]): boolean => arr.every(validateEmail);\r\n\r\n// validate a single tel with regex\r\nconst validateTel = (tel: string): boolean =>\r\n /^[+]{0,1}[\\s0-9]{0,}[(]{0,1}[0-9]{1,4}[)]{0,1}[-\\s\\./0-9]*$/.test(tel);\r\n\r\n// copy of a string\r\nconst copyToClipboard = (str: string): boolean => {\r\n let el: HTMLInputElement = createElement(\"textarea\") as HTMLInputElement;\r\n el.value = str;\r\n el.setAttribute(\"readonly\", \"\");\r\n el.style.position = \"absolute\";\r\n el.style.left = \"-9999px\";\r\n document.body.appendChild(el);\r\n let selected: Range | boolean =\r\n document.getSelection().rangeCount > 0\r\n ? document.getSelection().getRangeAt(0)\r\n : false;\r\n el.select();\r\n document.execCommand(\"copy\");\r\n document.body.removeChild(el);\r\n if (selected) {\r\n document.getSelection().removeAllRanges();\r\n document.getSelection().addRange(selected);\r\n return true;\r\n }\r\n return false;\r\n};\r\n\r\nconst mailgoStyle = (): void => {\r\n // mailgo style\r\n let mailgoCSSElement: HTMLStyleElement = createElement(\r\n \"style\"\r\n ) as HTMLStyleElement;\r\n mailgoCSSElement.id = \"mailgo-style\";\r\n mailgoCSSElement.type = \"text/css\";\r\n mailgoCSSElement.appendChild(createTextNode(mailgoCSS));\r\n document.head.appendChild(mailgoCSSElement);\r\n};\r\n\r\n// mailgo\r\nfunction mailgo(mailgoConfig?: MailgoConfig): void {\r\n // set the global config merging window mailgConfig and mailgoConfig passed as a parameter\r\n config = { ...mailgoConfig, ...((window as any)?.mailgoConfig || null) };\r\n\r\n // if the window is defined...\r\n if (window && typeof window !== \"undefined\") {\r\n // add the style for mailgo\r\n mailgoStyle();\r\n\r\n // if is set an initEvent add the listener\r\n if (config?.initEvent) {\r\n if (config?.listenerOptions) {\r\n // listener options specified\r\n document.addEventListener(\r\n config.initEvent,\r\n () => {\r\n mailgoInit();\r\n },\r\n config.listenerOptions\r\n );\r\n } else {\r\n // no listener options\r\n document.addEventListener(config.initEvent, () => {\r\n mailgoInit();\r\n });\r\n }\r\n } else {\r\n mailgoInit();\r\n }\r\n }\r\n}\r\n\r\nexport default mailgo;\r\n","// webpack > lib/mailgo.js\r\n\r\nimport mailgo from \"../src/mailgo\";\r\n\r\nexport default mailgo;\r\n"],"sourceRoot":""} \ No newline at end of file diff --git a/mailgo.d.ts b/mailgo.d.ts index d7694fa..e29bdb6 100644 --- a/mailgo.d.ts +++ b/mailgo.d.ts @@ -1,60 +1,53 @@ -// Type definitions for mailgo -// Project: mailgo -// Definitions by: Matteo Manzinello +declare module 'mailgo' { + export type MailgoConfig = { + initEvent?: string; + listenerOptions?: ListenerOptions | boolean; + dark?: boolean; + lang?: string; + forceLang?: boolean; + validateEmail?: boolean; + validateTel?: boolean; + showFooter?: boolean; + }; -declare module "mailgo" { - export type MailgoConfig = { - initEvent?: string; - listenerOptions?: ListenerOptions | boolean; - dark?: boolean; - lang?: string; - forceLang?: boolean; - validateEmail?: boolean; - validateTel?: boolean; - showFooter?: boolean; - }; + export type MailgoTranslation = { + open_in_?: string; + cc_?: string; + bcc_?: string; + subject_?: string; + body_?: string; + gmail?: string; + outlook?: string; + telegram?: string; + whatsapp?: string; + skype?: string; + call?: string; + open?: string; + _default?: string; + _as_default?: string; + copy?: string; + }; - export type MailgoTranslation = { - open_in_?: string; - cc_?: string; - bcc_?: string; - subject_?: string; - body_?: string; - gmail?: string; - outlook?: string; - telegram?: string; - whatsapp?: string; - skype?: string; - call?: string; - open?: string; - _default?: string; - _as_default?: string; - copy?: string; - }; + export type MailgoTranslations = { + [language: string]: MailgoTranslation; + }; - export type MailgoTranslations = { - [language: string]: MailgoTranslation; - }; + export type MailgoI18n = { + languages: string[]; + translations: MailgoTranslations; + }; - export type MailgoI18n = { - languages: string[]; - translations: MailgoTranslations; - }; + export type ListenerOptions = { + capture?: boolean; + once?: boolean; + passive?: boolean; + }; - export type ListenerOptions = { - capture?: boolean; - once?: boolean; - passive?: boolean; - }; + export function mailgoRender(type: string, mailgoElement: HTMLLinkElement): void; - export function mailgoRender( - type: string, - mailgoElement: HTMLLinkElement - ): void; + export function isMailgo(element: HTMLElement, type?: string): boolean; - export function isMailgo(element: HTMLElement, type?: string): boolean; + export function mailgoCheckRender(event: Event): boolean; - export function mailgoCheckRender(event: Event): boolean; - - export default function mailgo(mailgoConfig?: MailgoConfig): void; + export default function mailgo(mailgoConfig?: MailgoConfig): void; } diff --git a/package.json b/package.json index 726f03a..8261c6d 100644 --- a/package.json +++ b/package.json @@ -1,61 +1,32 @@ { - "name": "mailgo", - "version": "0.9.14", - "description": "a new concept of mailto and tel links", - "scripts": { - "build": "webpack" - }, - "repository": { - "type": "git", - "url": "git+https://github.com/manzinello/mailgo.git" - }, - "main": "./lib/mailgo.js", - "module": "./lib/mailgo.js", - "types": "./mailgo.d.ts", - "keywords": [ - "mailto", - "mail", - "tel", - "callto", - "gmail", - "outlook", - "telegram", - "whatsapp", - "skype" - ], - "author": { - "name": "Matteo Manzinello", - "email": "matteo@manzinello.dev", - "url": "https://matteomanzinello.com" - }, - "license": "MIT", - "bugs": { - "url": "https://github.com/manzinello/mailgo/issues" - }, - "homepage": "https://mailgo.dev", - "devDependencies": { - "@babel/cli": "^7.10.5", - "@babel/core": "^7.11.1", - "@babel/parser": "^7.11.3", - "@babel/preset-env": "^7.11.0", - "@babel/preset-typescript": "^7.10.4", - "@babel/types": "^7.11.0", - "@types/node": "^14.0.27", - "babel-loader": "^8.1.0", - "css-loader": "^4.2.1", - "node-sass": "^4.14.1", - "sass-loader": "^9.0.3", - "style-loader": "^1.2.1", - "to-string-loader": "^1.1.6", - "ts-loader": "^8.0.2", - "typescript": "^3.9.7", - "webpack": "^4.44.1", - "webpack-cli": "^3.3.12" - }, - "dependencies": {}, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mailgo" - }, - "sideEffects": false + "name": "mailgo", + "version": "0.9.14", + "description": "a new concept of mailto and tel links", + "scripts": { + "build": "webpack" + }, + "main": "./lib/mailgo.js", + "module": "./lib/mailgo.js", + "types": "./mailgo.d.ts", + "devDependencies": { + "@babel/cli": "^7.10.5", + "@babel/core": "^7.11.1", + "@babel/parser": "^7.11.3", + "@babel/preset-env": "^7.11.0", + "@babel/preset-typescript": "^7.10.4", + "@babel/types": "^7.11.0", + "@types/node": "^14.0.27", + "babel-loader": "^8.1.0", + "css-loader": "^4.2.1", + "node-sass": "^4.14.1", + "sass-loader": "^9.0.3", + "style-loader": "^1.2.1", + "to-string-loader": "^1.1.6", + "ts-loader": "^8.0.2", + "typescript": "^3.9.7", + "webpack": "^4.44.1", + "webpack-cli": "^3.3.12" + }, + "dependencies": {}, + "sideEffects": false } diff --git a/sample.html b/sample.html new file mode 100644 index 0000000..a8044de --- /dev/null +++ b/sample.html @@ -0,0 +1,39 @@ + + + + + + mailymaily examples + + + +

mailymaily

+
scrivimi! + morecc
+

Dark mode

+ info@odit.services dark mode +
+ info@odit.services dark + mode + +

tel:

+ chiamami +
+ skype +
+ callto + +
+
+

Dark mode

+ + callto dark mode + +
+ chiamami dark mode + + + + + + \ No newline at end of file diff --git a/src/mailgo.scss b/src/mailgo.scss index ca92f9f..44fd1e3 100644 --- a/src/mailgo.scss +++ b/src/mailgo.scss @@ -1,6 +1,5 @@ -$mailgo-font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, - Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", - "Segoe UI Symbol"; +$mailgo-font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, + "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; // colors $default-color: #4a4a4a; @@ -23,260 +22,260 @@ $skype-dark-color: #4cc7f4; $default-border-radius: 20px; .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: 16.5px; - z-index: 10000; + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + justify-content: center; + align-items: center; + flex-direction: column; + overflow: hidden; + font-size: 16.5px; + z-index: 10000; - p, - span, - strong, - a { - margin: 0; - padding: 0; - font-size: 100%; - line-height: 1; - font-family: $mailgo-font-family; - text-rendering: optimizeLegibility; - } + p, + span, + strong, + a { + margin: 0; + padding: 0; + font-size: 100%; + line-height: 1; + font-family: $mailgo-font-family; + text-rendering: optimizeLegibility; + } - strong { - font-weight: 700; - } + strong { + font-weight: 700; + } - .m-modal-back { - position: absolute; - z-index: 10001; - top: 0; - right: 0; - bottom: 0; - left: 0; - background-color: #20232a; - opacity: 0.8; - } + .m-modal-back { + position: absolute; + z-index: 10001; + top: 0; + right: 0; + bottom: 0; + left: 0; + background-color: #20232a; + opacity: 0.8; + } - .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.95; - border-radius: $default-border-radius; - box-shadow: 0 3px 20px rgba(32, 35, 42, 0.5); - color: $default-color; - display: flex; - flex-direction: column; - overflow: auto; - padding: 24px; - transition: 0.5s box-shadow; + .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.95; + border-radius: $default-border-radius; + box-shadow: 0 3px 20px rgba(32, 35, 42, 0.5); + color: $default-color; + display: flex; + flex-direction: column; + overflow: auto; + padding: 24px; + transition: 0.5s box-shadow; - &:hover, - &:focus, - &:active { - opacity: 1; - } + &:hover, + &:focus, + &:active { + opacity: 1; + } - .m-title { - margin-bottom: 8px; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; - line-height: 1.2em; - } + .m-title { + margin-bottom: 8px; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + line-height: 1.2em; + } - .m-details { - margin-bottom: 10px; - p { - font-size: 12px; - margin-top: 3px; - margin-bottom: 3px; - } - } + .m-details { + margin-bottom: 10px; + p { + font-size: 12px; + margin-top: 3px; + margin-bottom: 3px; + } + } - a { - cursor: pointer; - padding: 10px; - color: $default-color; - border-radius: $default-border-radius; - text-decoration: none; + a { + cursor: pointer; + padding: 10px; + color: $default-color; + border-radius: $default-border-radius; + text-decoration: none; - &.m-gmail { - color: $gmail-color; - &:hover, - &:focus, - &:active { - background-color: rgba(212, 70, 56, 0.08); - color: $gmail-color; - } - } + &.m-gmail { + color: $gmail-color; + &:hover, + &:focus, + &:active { + background-color: rgba(212, 70, 56, 0.08); + color: $gmail-color; + } + } - &.m-outlook { - color: $outlook-color; - &:hover, - &:focus, - &:active { - background-color: rgba(0, 114, 198, 0.08); - color: $outlook-color; - } - } + &.m-outlook { + color: $outlook-color; + &:hover, + &:focus, + &:active { + background-color: rgba(0, 114, 198, 0.08); + color: $outlook-color; + } + } - &.m-tg { - color: $telegram-color; - &:hover, - &:focus, - &:active { - background-color: rgba(0, 136, 204, 0.08); - color: $telegram-color; - } - } + &.m-tg { + color: $telegram-color; + &:hover, + &:focus, + &:active { + background-color: rgba(0, 136, 204, 0.08); + color: $telegram-color; + } + } - &.m-wa { - color: $wa-color; - &:hover, - &:focus, - &:active { - background-color: rgba(0, 191, 165, 0.08); - color: $wa-color; - } - } + &.m-wa { + color: $wa-color; + &:hover, + &:focus, + &:active { + background-color: rgba(0, 191, 165, 0.08); + color: $wa-color; + } + } - &.m-skype { - color: $skype-color; - &:hover, - &:focus, - &:active { - background-color: rgba(0, 175, 240, 0.08); - color: $skype-color; - } - } + &.m-skype { + color: $skype-color; + &:hover, + &:focus, + &:active { + background-color: rgba(0, 175, 240, 0.08); + color: $skype-color; + } + } - &.m-copy { - padding: 16px 10px; - font-size: 16px; - } + &.m-copy { + padding: 16px 10px; + font-size: 16px; + } - &.m-default, - &.m-copy { - &:hover, - &:focus, - &:active { - background-color: rgba(0, 0, 0, 0.08); - color: $default-color; - } - } + &.m-default, + &.m-copy { + &:hover, + &:focus, + &:active { + background-color: rgba(0, 0, 0, 0.08); + color: $default-color; + } + } - &.m-by { - font-size: 12px; - margin-top: 0.8rem; - padding: 5px; - color: $default-color; - &:hover, - &:focus, - &:active { - color: $default-color-hover; - } - } - } + &.m-by { + font-size: 12px; + margin-top: 0.8rem; + padding: 5px; + color: $default-color; + &:hover, + &:focus, + &:active { + color: $default-color-hover; + } + } + } - .w-500 { - font-weight: 500; - } - } + .w-500 { + font-weight: 500; + } + } - &.m-dark { - .m-modal-content { - background-color: #20232a; - &, - & p, - & p span, - & strong { - color: #fff; - } - a { - color: $default-dark-color; + &.m-dark { + .m-modal-content { + background-color: #20232a; + &, + & p, + & p span, + & strong { + color: #fff; + } + a { + color: $default-dark-color; - &:not(.m-by) { - &:hover, - &:focus, - &:active { - background-color: rgba(134, 134, 134, 0.08); - color: $default-dark-color; - } - } + &:not(.m-by) { + &:hover, + &:focus, + &:active { + background-color: rgba(134, 134, 134, 0.08); + color: $default-dark-color; + } + } - &.m-gmail { - color: $gmail-dark-color; + &.m-gmail { + color: $gmail-dark-color; - &:hover, - &:focus, - &:active { - background-color: rgba(212, 70, 56, 0.08); - color: $gmail-dark-color; - } - } + &:hover, + &:focus, + &:active { + background-color: rgba(212, 70, 56, 0.08); + color: $gmail-dark-color; + } + } - &.m-outlook { - color: $outlook-dark-color; + &.m-outlook { + color: $outlook-dark-color; - &:hover, - &:focus, - &:active { - background-color: rgba(0, 114, 198, 0.08); - color: $outlook-dark-color; - } - } + &:hover, + &:focus, + &:active { + background-color: rgba(0, 114, 198, 0.08); + color: $outlook-dark-color; + } + } - &.m-tg { - color: $telegram-dark-color; + &.m-tg { + color: $telegram-dark-color; - &:hover, - &:focus, - &:active { - background-color: rgba(0, 136, 204, 0.08); - color: $telegram-dark-color; - } - } + &:hover, + &:focus, + &:active { + background-color: rgba(0, 136, 204, 0.08); + color: $telegram-dark-color; + } + } - &.m-wa { - color: $wa-dark-color; + &.m-wa { + color: $wa-dark-color; - &:hover, - &:focus, - &:active { - background-color: rgba(0, 191, 165, 0.08); - color: $wa-dark-color; - } - } + &:hover, + &:focus, + &:active { + background-color: rgba(0, 191, 165, 0.08); + color: $wa-dark-color; + } + } - &.m-skype { - color: $skype-dark-color; + &.m-skype { + color: $skype-dark-color; - &:hover, - &:focus, - &:active { - background-color: rgba(0, 175, 240, 0.08); - color: $skype-dark-color; - } - } + &:hover, + &:focus, + &:active { + background-color: rgba(0, 175, 240, 0.08); + color: $skype-dark-color; + } + } - &.m-by { - &:hover, - &:focus, - &:active { - color: #fff; - } - } - } - } - } + &.m-by { + &:hover, + &:focus, + &:active { + color: #fff; + } + } + } + } + } } diff --git a/src/mailgo.ts b/src/mailgo.ts index db1603a..9635c53 100644 --- a/src/mailgo.ts +++ b/src/mailgo.ts @@ -263,14 +263,6 @@ const mailgoInit = (): void => { modalContent.appendChild(copyMail); - // hide mailgo.dev in footer only if showFooter is defined and equal to false - if ( - typeof config?.showFooter === "undefined" || - config?.showFooter !== false - ) { - modalContent.appendChild(byElement()); - } - // add the modal at the end of the body document.body.appendChild(modalMailto); @@ -396,14 +388,6 @@ const mailgoInit = (): void => { modalContent.appendChild(copyTel); - // hide mailgo.dev in footer only if showFooter is defined and equal to false - if ( - typeof config?.showFooter === "undefined" || - config?.showFooter !== false - ) { - modalContent.appendChild(byElement()); - } - // add the modal at the end of the body document.body.appendChild(modalTel); @@ -874,18 +858,6 @@ const mailgoIsShowing = (type = MAIL_TYPE): boolean => { return getModalDisplay(type) === "flex"; }; -const byElement = (): HTMLLinkElement => { - // by - let by: HTMLLinkElement = createElement(aHTMLTag) as HTMLLinkElement; - by.href = "https://mailgo.dev?ref=mailgo-modal"; - by.className = "m-by"; - by.target = "_blank"; - by.rel = "noopener noreferrer"; - by.appendChild(createTextNode("mailgo.dev")); - - return by; -}; - // create element const createElement = (element: string = "div"): HTMLElement => document.createElement(element); diff --git a/webpack.config.js b/webpack.config.js index 886cf2a..5f01c08 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -1,127 +1,63 @@ -const path = require("path"); +const path = require('path'); const mailgoRules = [ - { - test: /\.tsx?$/, - include: path.resolve(__dirname, "./src/"), - use: ["babel-loader"], - exclude: /node_modules/, - }, - { - test: /\.s[ac]ss$/i, - use: [ - "to-string-loader", - { - loader: "css-loader", - options: { - esModule: false, - sourceMap: false, - }, - }, - "sass-loader", - ], - }, + { + test: /\.tsx?$/, + include: path.resolve(__dirname, './src/'), + use: [ 'babel-loader' ], + exclude: /node_modules/ + }, + { + test: /\.scss$/i, + use: [ + 'to-string-loader', + { + loader: 'css-loader', + options: { + esModule: false, + sourceMap: false + } + }, + 'sass-loader' + ] + } ]; module.exports = [ - { - mode: "production", - target: "web", - devtool: "source-map", - entry: "./mailgo.dist.ts", - context: path.join(__dirname, "webpack"), - module: { - rules: mailgoRules, - }, - resolve: { - extensions: [".ts", ".js"], - }, - output: { - filename: "mailgo.min.js", - library: "mailgo", - libraryTarget: "window", - path: path.resolve(__dirname, "dist"), - }, - }, - { - mode: "production", - target: "web", - devtool: "source-map", - entry: "./mailgo.firefox.ts", - context: path.join(__dirname, "webpack"), - module: { - rules: mailgoRules, - }, - resolve: { - extensions: [".ts", ".js"], - }, - output: { - filename: "mailgo.firefox.min.js", - library: "mailgo", - libraryTarget: "window", - path: path.resolve(__dirname, "extensions"), - }, - }, - { - mode: "production", - target: "web", - devtool: "source-map", - entry: "./mailgo.chrome.ts", - context: path.join(__dirname, "webpack"), - module: { - rules: mailgoRules, - }, - resolve: { - extensions: [".ts", ".js"], - }, - output: { - filename: "mailgo.chrome.min.js", - library: "mailgo", - libraryTarget: "window", - path: path.resolve(__dirname, "extensions"), - }, - }, - { - mode: "production", - target: "web", - devtool: "source-map", - entry: "./mailgo.dist.dark.ts", - context: path.join(__dirname, "webpack"), - module: { - rules: mailgoRules, - }, - resolve: { - extensions: [".ts", ".js"], - }, - output: { - filename: "mailgo.dark.min.js", - library: "mailgo", - libraryTarget: "window", - path: path.resolve(__dirname, "dist"), - }, - }, - { - mode: "production", - target: "node", - devtool: "source-map", - entry: "./mailgo.lib.ts", - context: path.join(__dirname, "webpack"), - module: { - rules: mailgoRules, - }, - optimization: { - minimize: false, - }, - resolve: { - extensions: [".ts", ".js"], - }, - output: { - filename: "lib/mailgo.js", - library: "mailgo", - libraryTarget: "umd", - libraryExport: "default", - globalObject: "typeof self !== 'undefined' ? self : this", - path: path.resolve(__dirname), - }, - }, + { + mode: 'production', + target: 'web', + entry: './mailgo.dist.ts', + context: path.join(__dirname, 'webpack'), + module: { + rules: mailgoRules + }, + resolve: { + extensions: [ '.ts', '.js' ] + }, + output: { + filename: 'mailgo.min.js', + library: 'mailgo', + libraryTarget: 'window', + path: path.resolve(__dirname, 'dist') + } + }, + { + mode: 'production', + target: 'web', + entry: './mailgo.dist.dark.ts', + context: path.join(__dirname, 'webpack'), + module: { + rules: mailgoRules + }, + resolve: { + extensions: [ '.ts', '.js' ] + }, + output: { + filename: 'mailgo.dark.min.js', + library: 'mailgo', + libraryTarget: 'window', + path: path.resolve(__dirname, 'dist') + } + } ]; diff --git a/webpack/mailgo.chrome.ts b/webpack/mailgo.chrome.ts deleted file mode 100644 index 04cf50a..0000000 --- a/webpack/mailgo.chrome.ts +++ /dev/null @@ -1,10 +0,0 @@ -// webpack > extensions/mailgo.chrome.js -// script to add in Chrome extension -// https://github.com/manzinello/mailgo-chrome-extension - -import mailgo from "../src/mailgo"; - -// check if mailgo HTML is already present in the page -let mailgoExists = !!document.getElementById("mailgo"); - -if (!mailgoExists) mailgo(); diff --git a/webpack/mailgo.dist.dark.ts b/webpack/mailgo.dist.dark.ts index ba7ea18..937b9ce 100644 --- a/webpack/mailgo.dist.dark.ts +++ b/webpack/mailgo.dist.dark.ts @@ -1,11 +1,9 @@ -// webpack > dist/mailgo.min.js - -import mailgo from "../src/mailgo"; +import mailgo from '../src/mailgo'; // call init mailgo attached to the event DOMContentLoaded const mailgoConfig = { - initEvent: "DOMContentLoaded", - dark: true, + initEvent: 'DOMContentLoaded', + dark: true }; mailgo(mailgoConfig); diff --git a/webpack/mailgo.dist.ts b/webpack/mailgo.dist.ts index 46d6b0d..2a0c1c1 100644 --- a/webpack/mailgo.dist.ts +++ b/webpack/mailgo.dist.ts @@ -1,10 +1,8 @@ -// webpack > dist/mailgo.min.js - -import mailgo from "../src/mailgo"; +import mailgo from '../src/mailgo'; // call init mailgo attached to the event DOMContentLoaded const mailgoConfig = { - initEvent: "DOMContentLoaded", + initEvent: 'DOMContentLoaded' }; mailgo(mailgoConfig); diff --git a/webpack/mailgo.firefox.ts b/webpack/mailgo.firefox.ts deleted file mode 100644 index e227c9c..0000000 --- a/webpack/mailgo.firefox.ts +++ /dev/null @@ -1,10 +0,0 @@ -// webpack > extensions/mailgo.firefox.js -// script to add in Firefox addon -// https://github.com/manzinello/mailgo-firefox-addon - -import mailgo from "../src/mailgo"; - -// check if mailgo HTML is already present in the page -let mailgoExists = !!document.getElementById("mailgo"); - -if (!mailgoExists) mailgo(); diff --git a/webpack/mailgo.lib.ts b/webpack/mailgo.lib.ts index df16304..b3d28f2 100644 --- a/webpack/mailgo.lib.ts +++ b/webpack/mailgo.lib.ts @@ -1,5 +1,2 @@ -// webpack > lib/mailgo.js - -import mailgo from "../src/mailgo"; - +import mailgo from '../src/mailgo'; export default mailgo; diff --git a/yarn.lock b/yarn.lock index 98ffcb3..d54f9db 100644 --- a/yarn.lock +++ b/yarn.lock @@ -25,16 +25,7 @@ dependencies: "@babel/highlight" "^7.10.4" -"@babel/compat-data@^7.10.4": - version "7.10.5" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.10.5.tgz#d38425e67ea96b1480a3f50404d1bf85676301a6" - integrity sha512-mPVoWNzIpYJHbWje0if7Ck36bpbtTvIxOi9+6WSK9wjGEXearAqlwBoTQvVjsAY2VIwgcs8V940geY3okzRCEw== - dependencies: - browserslist "^4.12.0" - invariant "^2.2.4" - semver "^5.5.0" - -"@babel/compat-data@^7.11.0": +"@babel/compat-data@^7.10.4", "@babel/compat-data@^7.11.0": version "7.11.0" resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.11.0.tgz#e9f73efe09af1355b723a7f39b11bad637d7c99c" integrity sha512-TPSvJfv73ng0pfnEOh17bYMPQbI95+nGWc71Ss4vZdRBHTDqmM9Z8ZV4rYz8Ks7sfzc95n30k6ODIq5UGnXcYQ== @@ -44,15 +35,15 @@ semver "^5.5.0" "@babel/core@^7.11.1": - version "7.11.1" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.11.1.tgz#2c55b604e73a40dc21b0e52650b11c65cf276643" - integrity sha512-XqF7F6FWQdKGGWAzGELL+aCO1p+lRY5Tj5/tbT3St1G8NaH70jhhDIKknIZaDans0OQBG5wRAldROLHSt44BgQ== + version "7.11.4" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.11.4.tgz#4301dfdfafa01eeb97f1896c5501a3f0655d4229" + integrity sha512-5deljj5HlqRXN+5oJTY7Zs37iH3z3b++KjiKtIsJy1NrjOOVSEaJHEetLBhyu0aQOSNNZ/0IuEAan9GzRuDXHg== dependencies: "@babel/code-frame" "^7.10.4" - "@babel/generator" "^7.11.0" + "@babel/generator" "^7.11.4" "@babel/helper-module-transforms" "^7.11.0" "@babel/helpers" "^7.10.4" - "@babel/parser" "^7.11.1" + "@babel/parser" "^7.11.4" "@babel/template" "^7.10.4" "@babel/traverse" "^7.11.0" "@babel/types" "^7.11.0" @@ -65,19 +56,10 @@ semver "^5.4.1" source-map "^0.5.0" -"@babel/generator@^7.10.5": - version "7.10.5" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.10.5.tgz#1b903554bc8c583ee8d25f1e8969732e6b829a69" - integrity sha512-3vXxr3FEW7E7lJZiWQ3bM4+v/Vyr9C+hpolQ8BGFr9Y8Ri2tFLWTixmwKBafDujO1WVah4fhZBeU1bieKdghig== - dependencies: - "@babel/types" "^7.10.5" - jsesc "^2.5.1" - source-map "^0.5.0" - -"@babel/generator@^7.11.0": - version "7.11.0" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.11.0.tgz#4b90c78d8c12825024568cbe83ee6c9af193585c" - integrity sha512-fEm3Uzw7Mc9Xi//qU20cBKatTfs2aOtKqmvy/Vm7RkJEGFQ4xc9myCfbXxqK//ZS8MR/ciOHw6meGASJuKmDfQ== +"@babel/generator@^7.11.0", "@babel/generator@^7.11.4": + version "7.11.4" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.11.4.tgz#1ec7eec00defba5d6f83e50e3ee72ae2fee482be" + integrity sha512-Rn26vueFx0eOoz7iifCN2UHT6rGtnkSGWSoDRIy8jZN3B91PzeSULbswfLoOWuTuAcNwpG/mxy+uCTDnZ9Mp1g== dependencies: "@babel/types" "^7.11.0" jsesc "^2.5.1" @@ -140,11 +122,10 @@ lodash "^4.17.19" "@babel/helper-explode-assignable-expression@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.10.4.tgz#40a1cd917bff1288f699a94a75b37a1a2dbd8c7c" - integrity sha512-4K71RyRQNPRrR85sr5QY4X3VwG4wtVoXZB9+L3r1Gp38DhELyHCtovqydRi7c1Ovb17eRGiQ/FD5s8JdU0Uy5A== + version "7.11.4" + resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.11.4.tgz#2d8e3470252cc17aba917ede7803d4a7a276a41b" + integrity sha512-ux9hm3zR4WV1Y3xXxXkdG/0gxF9nvI0YVmKVhvK9AfMoaQkemL3sJpXw+Xbz65azo8qJiEz2XVDUpK3KYhH3ZQ== dependencies: - "@babel/traverse" "^7.10.4" "@babel/types" "^7.10.4" "@babel/helper-function-name@^7.10.4": @@ -171,11 +152,11 @@ "@babel/types" "^7.10.4" "@babel/helper-member-expression-to-functions@^7.10.4", "@babel/helper-member-expression-to-functions@^7.10.5": - version "7.10.5" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.10.5.tgz#172f56e7a63e78112f3a04055f24365af702e7ee" - integrity sha512-HiqJpYD5+WopCXIAbQDG0zye5XYVvcO9w/DHp5GsaGkRUaamLj2bEtu6i8rnGGprAhHM3qidCMgp71HF4endhA== + version "7.11.0" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.11.0.tgz#ae69c83d84ee82f4b42f96e2a09410935a8f26df" + integrity sha512-JbFlKHFntRV5qKw3YC0CvQnDZ4XMwgzzBbld7Ly4Mj4cbFy3KywcR8NtNctRToMWJOVvLINJv525Gd6wwVEx/Q== dependencies: - "@babel/types" "^7.10.5" + "@babel/types" "^7.11.0" "@babel/helper-module-imports@^7.10.4": version "7.10.4" @@ -184,20 +165,7 @@ dependencies: "@babel/types" "^7.10.4" -"@babel/helper-module-transforms@^7.10.4", "@babel/helper-module-transforms@^7.10.5": - version "7.10.5" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.10.5.tgz#120c271c0b3353673fcdfd8c053db3c544a260d6" - integrity sha512-4P+CWMJ6/j1W915ITJaUkadLObmCRRSC234uctJfn/vHrsLNxsR8dwlcXv9ZhJWzl77awf+mWXSZEKt5t0OnlA== - dependencies: - "@babel/helper-module-imports" "^7.10.4" - "@babel/helper-replace-supers" "^7.10.4" - "@babel/helper-simple-access" "^7.10.4" - "@babel/helper-split-export-declaration" "^7.10.4" - "@babel/template" "^7.10.4" - "@babel/types" "^7.10.5" - lodash "^4.17.19" - -"@babel/helper-module-transforms@^7.11.0": +"@babel/helper-module-transforms@^7.10.4", "@babel/helper-module-transforms@^7.10.5", "@babel/helper-module-transforms@^7.11.0": version "7.11.0" resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.11.0.tgz#b16f250229e47211abdd84b34b64737c2ab2d359" integrity sha512-02EVu8COMuTRO1TAzdMtpBPbe6aQ1w/8fePD2YgQmxZU4gpNWaL9gK3Jp7dxlkUlUCJOTaSeA+Hrm1BRQwqIhg== @@ -230,14 +198,13 @@ lodash "^4.17.19" "@babel/helper-remap-async-to-generator@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.10.4.tgz#fce8bea4e9690bbe923056ded21e54b4e8b68ed5" - integrity sha512-86Lsr6NNw3qTNl+TBcF1oRZMaVzJtbWTyTko+CQL/tvNvcGYEFKbLXDPxtW0HKk3McNOk4KzY55itGWCAGK5tg== + version "7.11.4" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.11.4.tgz#4474ea9f7438f18575e30b0cac784045b402a12d" + integrity sha512-tR5vJ/vBa9wFy3m5LLv2faapJLnDFxNWff2SAYkSE4rLUdbp7CdObYFgI7wK4T/Mj4UzpjPwzR8Pzmr5m7MHGA== dependencies: "@babel/helper-annotate-as-pure" "^7.10.4" "@babel/helper-wrap-function" "^7.10.4" "@babel/template" "^7.10.4" - "@babel/traverse" "^7.10.4" "@babel/types" "^7.10.4" "@babel/helper-replace-supers@^7.10.4": @@ -265,14 +232,7 @@ dependencies: "@babel/types" "^7.11.0" -"@babel/helper-split-export-declaration@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.10.4.tgz#2c70576eaa3b5609b24cb99db2888cc3fc4251d1" - integrity sha512-pySBTeoUff56fL5CBU2hWm9TesA4r/rOkI9DyJLvvgz09MB9YtfIYe3iBriVaYNaPe+Alua0vBIOVOLs2buWhg== - dependencies: - "@babel/types" "^7.10.4" - -"@babel/helper-split-export-declaration@^7.11.0": +"@babel/helper-split-export-declaration@^7.10.4", "@babel/helper-split-export-declaration@^7.11.0": version "7.11.0" resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.11.0.tgz#f8a491244acf6a676158ac42072911ba83ad099f" integrity sha512-74Vejvp6mHkGE+m+k5vHY93FX2cAtrw1zXrZXRlG4l410Nm9PxfEiVTn1PjDPV5SnmieiueY4AFg2xqhNFuuZg== @@ -312,20 +272,10 @@ chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@^7.10.4", "@babel/parser@^7.10.5": - version "7.10.5" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.10.5.tgz#e7c6bf5a7deff957cec9f04b551e2762909d826b" - integrity sha512-wfryxy4bE1UivvQKSQDU4/X6dr+i8bctjUjj8Zyt3DQy7NtPizJXT8M52nqpNKL+nq2PW8lxk4ZqLj0fD4B4hQ== - -"@babel/parser@^7.11.0": - version "7.11.0" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.11.0.tgz#a9d7e11aead25d3b422d17b2c6502c8dddef6a5d" - integrity sha512-qvRvi4oI8xii8NllyEc4MDJjuZiNaRzyb7Y7lup1NqJV8TZHF4O27CcP+72WPn/k1zkgJ6WJfnIbk4jTsVAZHw== - -"@babel/parser@^7.11.1", "@babel/parser@^7.11.3": - version "7.11.3" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.11.3.tgz#9e1eae46738bcd08e23e867bab43e7b95299a8f9" - integrity sha512-REo8xv7+sDxkKvoxEywIdsNFiZLybwdI7hcT5uEPyQrSMB4YQ973BfC9OOrD/81MaIjh6UxdulIQXkjmiH3PcA== +"@babel/parser@^7.10.4", "@babel/parser@^7.11.0", "@babel/parser@^7.11.3", "@babel/parser@^7.11.4": + version "7.11.4" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.11.4.tgz#6fa1a118b8b0d80d0267b719213dc947e88cc0ca" + integrity sha512-MggwidiH+E9j5Sh8pbrX5sJvMcsqS5o+7iB42M9/k0CD63MjYbdP4nhSh7uB5wnv2/RVzTZFTxzF/kIa5mrCqA== "@babel/plugin-proposal-async-generator-functions@^7.10.4": version "7.10.5" @@ -549,9 +499,9 @@ "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-transform-block-scoping@^7.10.4": - version "7.10.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.10.5.tgz#b81b8aafefbfe68f0f65f7ef397b9ece68a6037d" - integrity sha512-6Ycw3hjpQti0qssQcA6AMSFDHeNJ++R6dIMnpRqUjFeBBTmTDPa8zgF90OVfTvAo11mXZTlVUViY1g8ffrURLg== + version "7.11.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.11.1.tgz#5b7efe98852bef8d652c0b28144cd93a9e4b5215" + integrity sha512-00dYeDE0EVEHuuM+26+0w/SCL0BH2Qy7LwHuI4Hi4MH5gkC8/AqMN5uWFJIsoXZrAphiMm1iXzBw6L2T+eA0ew== dependencies: "@babel/helper-plugin-utils" "^7.10.4" @@ -762,9 +712,9 @@ "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-transform-typescript@^7.10.4": - version "7.10.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.10.5.tgz#edf353944e979f40d8ff9fe4e9975d0a465037c5" - integrity sha512-YCyYsFrrRMZ3qR7wRwtSSJovPG5vGyG4ZdcSAivGwTfoasMp3VOB/AKhohu3dFtmB4cCDcsndCSxGtrdliCsZQ== + version "7.11.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.11.0.tgz#2b4879676af37342ebb278216dd090ac67f13abb" + integrity sha512-edJsNzTtvb3MaXQwj8403B7mZoGu9ElDJQZOKjGUnvilquxBA3IQoEIOvkX/1O8xfAsnHS/oQhe2w/IXrr+w0w== dependencies: "@babel/helper-create-class-features-plugin" "^7.10.5" "@babel/helper-plugin-utils" "^7.10.4" @@ -879,9 +829,9 @@ "@babel/plugin-transform-typescript" "^7.10.4" "@babel/runtime@^7.8.4": - version "7.10.5" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.10.5.tgz#303d8bd440ecd5a491eae6117fd3367698674c5c" - integrity sha512-otddXKhdNn7d0ptoFRHtMLa8LqDxLYwTjB4nYgM1yy5N6gU/MUf8zqyyLltCH3yAVitBzmwK4us+DD0l/MauAg== + version "7.11.2" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.11.2.tgz#f549c13c754cc40b87644b9fa9f09a6a95fe0736" + integrity sha512-TeWkU52so0mPtDcaCTxNBI/IHiz0pZgr8VEFqXFtZWpYD08ZB6FaSwVAS8MKRQAP3bYKiVjwysOJgMFY28o6Tw== dependencies: regenerator-runtime "^0.13.4" @@ -894,22 +844,7 @@ "@babel/parser" "^7.10.4" "@babel/types" "^7.10.4" -"@babel/traverse@^7.10.4": - version "7.10.5" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.10.5.tgz#77ce464f5b258be265af618d8fddf0536f20b564" - integrity sha512-yc/fyv2gUjPqzTz0WHeRJH2pv7jA9kA7mBX2tXl/x5iOE81uaVPuGPtaYk7wmkx4b67mQ7NqI8rmT2pF47KYKQ== - dependencies: - "@babel/code-frame" "^7.10.4" - "@babel/generator" "^7.10.5" - "@babel/helper-function-name" "^7.10.4" - "@babel/helper-split-export-declaration" "^7.10.4" - "@babel/parser" "^7.10.5" - "@babel/types" "^7.10.5" - debug "^4.1.0" - globals "^11.1.0" - lodash "^4.17.19" - -"@babel/traverse@^7.11.0": +"@babel/traverse@^7.10.4", "@babel/traverse@^7.11.0": version "7.11.0" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.11.0.tgz#9b996ce1b98f53f7c3e4175115605d56ed07dd24" integrity sha512-ZB2V+LskoWKNpMq6E5UUCrjtDUh5IOTAyIl0dTjIEoXum/iKWkoIEKIRDnUucO6f+2FzNkE0oD4RLKoPIufDtg== @@ -924,16 +859,7 @@ globals "^11.1.0" lodash "^4.17.19" -"@babel/types@^7.10.4", "@babel/types@^7.10.5", "@babel/types@^7.4.4": - version "7.10.5" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.10.5.tgz#d88ae7e2fde86bfbfe851d4d81afa70a997b5d15" - integrity sha512-ixV66KWfCI6GKoA/2H9v6bQdbfXEwwpOdQ8cRvb4F+eyvhlaHxWFMQB4+3d9QFJXZsiiiqVrewNV0DFEQpyT4Q== - dependencies: - "@babel/helper-validator-identifier" "^7.10.4" - lodash "^4.17.19" - to-fast-properties "^2.0.0" - -"@babel/types@^7.11.0": +"@babel/types@^7.10.4", "@babel/types@^7.10.5", "@babel/types@^7.11.0", "@babel/types@^7.4.4": version "7.11.0" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.11.0.tgz#2ae6bf1ba9ae8c3c43824e5861269871b206e90d" integrity sha512-O53yME4ZZI0jO1EVGtF1ePGl0LHirG4P1ibcD80XyzZcKhcMFeCXmh4Xb1ifGBIV233Qg12x4rBfQgA+tmOukA== @@ -948,9 +874,9 @@ integrity sha512-7+2BITlgjgDhH0vvwZU/HZJVyk+2XUlvxXe8dFMedNX/aMkaOq++rMAFXc0tM7ij15QaWlbdQASBR9dihi+bDQ== "@types/node@^14.0.27": - version "14.0.27" - resolved "https://registry.yarnpkg.com/@types/node/-/node-14.0.27.tgz#a151873af5a5e851b51b3b065c9e63390a9e0eb1" - integrity sha512-kVrqXhbclHNHGu9ztnAwSncIgJv/FaxmzXJvGXNdcCpV1b8u1/Mi6z6m0vwy0LzKeXFTPLH0NzwmoJ3fNCIq0g== + version "14.6.0" + resolved "https://registry.yarnpkg.com/@types/node/-/node-14.6.0.tgz#7d4411bf5157339337d7cff864d9ff45f177b499" + integrity sha512-mikldZQitV94akrc4sCcSjtJfsTKt4p+e/s0AGscVA6XArQ9kFclP+ZiYUMnq987rc6QlYxXv/EivqlfSLxpKA== "@webassemblyjs/ast@1.9.0": version "1.9.0" @@ -1128,9 +1054,9 @@ ajv-keywords@^3.1.0, ajv-keywords@^3.4.1: integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== ajv@^6.1.0, ajv@^6.10.2, ajv@^6.12.2, ajv@^6.12.3: - version "6.12.3" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.3.tgz#18c5af38a111ddeb4f2697bd78d68abc1cabd706" - integrity sha512-4K0cK3L1hsqk9xIb2z9vs/XU+PGJZ9PNpJRDS9YLzmNdX6jmVPfamLvTJr0aDAusnHyCHO6MjzlkAsgtqp9teA== + version "6.12.4" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.4.tgz#0614facc4522127fa713445c6bfd3ebd376e2234" + integrity sha512-eienB2c9qVQs2KWexhkrdMLVDoIQCz5KSeLxwg9Lzk4DOfBtIK9PQwwufcsn1jjGuf9WZmqPMbGxOzfcuphJCQ== dependencies: fast-deep-equal "^3.1.1" fast-json-stable-stringify "^2.0.0" @@ -1223,14 +1149,15 @@ array-unique@^0.3.2: resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= -asn1.js@^4.0.0: - version "4.10.1" - resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.10.1.tgz#b9c2bf5805f1e64aadeed6df3a2bfafb5a73f5a0" - integrity sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw== +asn1.js@^5.2.0: + version "5.4.1" + resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-5.4.1.tgz#11a980b84ebb91781ce35b0fdc2ee294e3783f07" + integrity sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA== dependencies: bn.js "^4.0.0" inherits "^2.0.1" minimalistic-assert "^1.0.0" + safer-buffer "^2.1.0" asn1@~0.2.3: version "0.2.4" @@ -1283,9 +1210,9 @@ aws-sign2@~0.7.0: integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= aws4@^1.8.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.10.0.tgz#a17b3a8ea811060e74d47d306122400ad4497ae2" - integrity sha512-3YDiu347mtVtjpyV3u5kVqQLP242c06zwDOgpeRnybmXlYYsLbtTrUBUm8i8srONt+FWobl5aibnU1030PeeuA== + version "1.10.1" + resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.10.1.tgz#e1e82e4f3e999e2cfd61b161280d16a111f86428" + integrity sha512-zg7Hz2k5lI8kb7U32998pRRFin7zJlkfezGJjUc2heaD4Pw2wObakCDVzkKztTm/Ln7eiVvYsjqak0Ed4LkMDA== babel-loader@^8.1.0: version "8.1.0" @@ -1375,9 +1302,9 @@ bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.4.0: integrity sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw== bn.js@^5.1.1: - version "5.1.2" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.1.2.tgz#c9686902d3c9a27729f43ab10f9d79c2004da7b0" - integrity sha512-40rZaf3bUNKTVYu9sIeeEGOg7g14Yvnj9kH7b50EiwX0Q7A6umbvfI5tvHaOERH0XigqKkfLkFQxzb4e6CIXnA== + version "5.1.3" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.1.3.tgz#beca005408f642ebebea80b042b4d18d2ac0ee6b" + integrity sha512-GkTiFpjFtUzU9CbMeJ5iazkCzGL3jrhzerzZIuqLABjbwRaFt33I9tUdSNryIptM+RxDet6OKm2WnLXzW51KsQ== brace-expansion@^1.1.7: version "1.1.11" @@ -1455,15 +1382,15 @@ browserify-rsa@^4.0.0, browserify-rsa@^4.0.1: randombytes "^2.0.1" browserify-sign@^4.0.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.2.0.tgz#545d0b1b07e6b2c99211082bf1b12cce7a0b0e11" - integrity sha512-hEZC1KEeYuoHRqhGhTy6gWrpJA3ZDjFWv0DE61643ZnOXAKJb3u7yWcrU0mMc9SwAqK1n7myPGndkp0dFG7NFA== + version "4.2.1" + resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.2.1.tgz#eaf4add46dd54be3bb3b36c0cf15abbeba7956c3" + integrity sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg== dependencies: bn.js "^5.1.1" browserify-rsa "^4.0.1" create-hash "^1.2.0" create-hmac "^1.1.7" - elliptic "^6.5.2" + elliptic "^6.5.3" inherits "^2.0.4" parse-asn1 "^5.1.5" readable-stream "^3.6.0" @@ -1477,14 +1404,14 @@ browserify-zlib@^0.2.0: pako "~1.0.5" browserslist@^4.12.0, browserslist@^4.8.5: - version "4.13.0" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.13.0.tgz#42556cba011e1b0a2775b611cba6a8eca18e940d" - integrity sha512-MINatJ5ZNrLnQ6blGvePd/QOz9Xtu+Ne+x29iQSCHfkU5BugKVJwZKn/iiL8UbpIpa3JhviKjz+XxMo0m2caFQ== + version "4.14.0" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.14.0.tgz#2908951abfe4ec98737b72f34c3bcedc8d43b000" + integrity sha512-pUsXKAF2lVwhmtpeA3LJrZ76jXuusrNyhduuQs7CDFf9foT4Y38aQOserd2lMe5DSSrjf3fx34oHwryuvxAUgQ== dependencies: - caniuse-lite "^1.0.30001093" - electron-to-chromium "^1.3.488" - escalade "^3.0.1" - node-releases "^1.1.58" + caniuse-lite "^1.0.30001111" + electron-to-chromium "^1.3.523" + escalade "^3.0.2" + node-releases "^1.1.60" buffer-from@^1.0.0: version "1.1.1" @@ -1569,10 +1496,10 @@ camelcase@^6.0.0: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.0.0.tgz#5259f7c30e35e278f1bdc2a4d91230b37cad981e" integrity sha512-8KMDF1Vz2gzOq54ONPJS65IvTUaB1cHJ2DMM7MbPmLZljDH1qpzzLsWdiN9pHh6qvkRVDTi/07+eNGch/oLU4w== -caniuse-lite@^1.0.30001093: - version "1.0.30001109" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001109.tgz#a9f3f26a0c3753b063d7acbb48dfb9c0e46f2b19" - integrity sha512-4JIXRodHzdS3HdK8nSgIqXYLExOvG+D2/EenSvcub2Kp3QEADjo2v2oUn5g0n0D+UNwG9BtwKOyGcSq2qvQXvQ== +caniuse-lite@^1.0.30001111: + version "1.0.30001117" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001117.tgz#69a9fae5d480eaa9589f7641a83842ad396d17c4" + integrity sha512-4tY0Fatzdx59kYjQs+bNxUwZB03ZEBgVmJ1UkFPz/Q8OLiUUbjct2EdpnXj0fvFTPej2EkbPIG0w8BWsjAyk1Q== caseless@~0.12.0: version "0.12.0" @@ -1619,9 +1546,9 @@ chokidar@^2.1.8: fsevents "^1.2.7" chokidar@^3.4.1: - version "3.4.1" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.4.1.tgz#e905bdecf10eaa0a0b1db0c664481cc4cbc22ba1" - integrity sha512-TQTJyr2stihpC4Sya9hs2Xh+O2wf+igjL36Y75xx2WdHuiICcn/XJza46Jwt0eT5hVpQOzo3FpY3cj3RVYLX0g== + version "3.4.2" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.4.2.tgz#38dc8e658dec3809741eb3ef7bb0a47fe424232d" + integrity sha512-IZHaDeBeI+sZJRX7lGcXsdzgvZqKv6sECqsbErJA4mHWfpRrD8B97kSFN4cQz6nGBGiuFia1MKR4d6c1o8Cv7A== dependencies: anymatch "~3.1.1" braces "~3.0.2" @@ -1792,12 +1719,12 @@ core-util-is@1.0.2, core-util-is@~1.0.0: integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= create-ecdh@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.3.tgz#c9111b6f33045c4697f144787f9254cdc77c45ff" - integrity sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw== + version "4.0.4" + resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.4.tgz#d6e7f4bffa66736085a0762fd3a632684dabcc4e" + integrity sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A== dependencies: bn.js "^4.1.0" - elliptic "^6.0.0" + elliptic "^6.5.3" create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: version "1.2.0" @@ -2009,12 +1936,12 @@ ecc-jsbn@~0.1.1: jsbn "~0.1.0" safer-buffer "^2.1.0" -electron-to-chromium@^1.3.488: - version "1.3.514" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.514.tgz#107499c28cb3c09fe6a863c19fc2202d5d9e8e41" - integrity sha512-8vb8zKIeGlZigeDzNWWthmGeLzo5CC43Lc+CZshMs7UXFVMPNLtXJGa/txedpu3OJFrXXVheBwp9PqOJJlHQ8w== +electron-to-chromium@^1.3.523: + version "1.3.543" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.543.tgz#71296bce656b21b56be78a5a973ebd82dbb61a03" + integrity sha512-PFbVI7G3e2fXSCFa+tgYAlyWNnUJZo4JtpJHYJ/DuB32opR6lzNJoH2LuR392Zr+nmw9jK5LZd+kvdcJDoj/fA== -elliptic@^6.0.0, elliptic@^6.5.2: +elliptic@^6.5.3: version "6.5.3" resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.3.tgz#cb59eb2efdaf73a0bd78ccd7015a62ad6e0f93d6" integrity sha512-IMqzv5wNQf+E6aHeIqATs0tOLeOTwj1QKbRcS3jBbYkl5oLAserA8yJTT7/VyHUYG91PRmPyeQDObKLPpeS4dw== @@ -2067,7 +1994,7 @@ error-ex@^1.2.0: dependencies: is-arrayish "^0.2.1" -escalade@^3.0.1: +escalade@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.0.2.tgz#6a580d70edb87880f22b4c91d0d56078df6962c4" integrity sha512-gPYAU37hYCUhW5euPeR+Y74F7BL+IBsV93j5cvGriSaD1aG6MGsqsV1yamRdrWrb2j3aiZvb0X+UBOWpx3JWtQ== @@ -2865,9 +2792,9 @@ isstream@~0.1.2: integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= js-base64@^2.1.8: - version "2.6.3" - resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.6.3.tgz#7afdb9b57aa7717e15d370b66e8f36a9cb835dc3" - integrity sha512-fiUvdfCaAXoQTHdKMgTvg6IkecXDcVz6V5rlftUTclF9IKBjMizvSdQaCl/z/6TApDeby5NL+axYou3i0mu1Pg== + version "2.6.4" + resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.6.4.tgz#f4e686c5de1ea1f867dbcad3d46d969428df98c4" + integrity sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ== "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: version "4.0.0" @@ -3017,9 +2944,9 @@ locate-path@^3.0.0: path-exists "^3.0.0" lodash@^4.0.0, lodash@^4.17.15, lodash@^4.17.19, lodash@~4.17.10: - version "4.17.19" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.19.tgz#e48ddedbe30b3321783c5b4301fbd353bc1e4a4b" - integrity sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ== + version "4.17.20" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52" + integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA== loose-envify@^1.0.0: version "1.4.0" @@ -3318,7 +3245,7 @@ node-libs-browser@^2.2.1: util "^0.11.0" vm-browserify "^1.0.1" -node-releases@^1.1.58: +node-releases@^1.1.60: version "1.1.60" resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.60.tgz#6948bdfce8286f0b5d0e5a88e8384e954dfe7084" integrity sha512-gsO4vjEdQaTusZAEebUWp2a5d7dF5DYoIpDG7WySnk7BuZDW+GPpHXoXXuYawRBr/9t5q54tirPz79kFIWg4dA== @@ -3502,13 +3429,12 @@ parallel-transform@^1.1.0: readable-stream "^2.1.5" parse-asn1@^5.0.0, parse-asn1@^5.1.5: - version "5.1.5" - resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.5.tgz#003271343da58dc94cace494faef3d2147ecea0e" - integrity sha512-jkMYn1dcJqF6d5CpU689bq7w/b5ALS9ROVSpQDPrZsqqesUJii9qutvoT5ltGedNXMO2e16YUWIghG9KxaViTQ== + version "5.1.6" + resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.6.tgz#385080a3ec13cb62a62d39409cb3e88844cdaed4" + integrity sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw== dependencies: - asn1.js "^4.0.0" + asn1.js "^5.2.0" browserify-aes "^1.0.0" - create-hash "^1.1.0" evp_bytestokey "^1.0.0" pbkdf2 "^3.0.3" safe-buffer "^5.1.1" @@ -4129,10 +4055,10 @@ semver@~5.3.0: resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f" integrity sha1-myzl094C0XxgEq0yaqa00M9U+U8= -serialize-javascript@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-3.1.0.tgz#8bf3a9170712664ef2561b44b691eafe399214ea" - integrity sha512-JIJT1DGiWmIKhzRsG91aS6Ze4sFUrYbltlkg2onR5OrnNM02Kl/hnY/T4FN2omvyeBbQmMJv+K4cPOpGzOTFBg== +serialize-javascript@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-4.0.0.tgz#b525e1238489a5ecfc42afacc3fe99e666f4b1aa" + integrity sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw== dependencies: randombytes "^2.1.0" @@ -4481,15 +4407,15 @@ tar@^2.0.0: inherits "2" terser-webpack-plugin@^1.4.3: - version "1.4.4" - resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.4.4.tgz#2c63544347324baafa9a56baaddf1634c8abfc2f" - integrity sha512-U4mACBHIegmfoEe5fdongHESNJWqsGU+W0S/9+BmYGVQDw1+c2Ow05TpMhxjPK1sRb7cuYq1BPl1e5YHJMTCqA== + version "1.4.5" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz#a217aefaea330e734ffacb6120ec1fa312d6040b" + integrity sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw== dependencies: cacache "^12.0.2" find-cache-dir "^2.1.0" is-wsl "^1.1.0" schema-utils "^1.0.0" - serialize-javascript "^3.1.0" + serialize-javascript "^4.0.0" source-map "^0.6.1" terser "^4.1.2" webpack-sources "^1.4.0"