From cee6e191869b0493f60fd2cdc3073b4fb7415695 Mon Sep 17 00:00:00 2001 From: Matteo Manzinello Date: Wed, 17 Feb 2021 09:07:12 +0100 Subject: [PATCH] =?UTF-8?q?=E2=8F=AB=20updated=20npm=20packages?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dist/mailgo.dark.min.js | 2 +- dist/mailgo.dark.min.js.map | 2 +- dist/mailgo.js | 18 +- dist/mailgo.js.map | 2 +- dist/mailgo.min.js | 2 +- dist/mailgo.min.js.map | 2 +- dist/mailgo.nocss.min.js | 2 +- dist/mailgo.nocss.min.js.map | 2 +- lib/mailgo.js | 17 +- lib/mailgo.js.map | 2 +- package.json | 32 +- yarn.lock | 1531 +++++++++++++++++----------------- 12 files changed, 804 insertions(+), 810 deletions(-) diff --git a/dist/mailgo.dark.min.js b/dist/mailgo.dark.min.js index 976b67c..2877247 100644 --- a/dist/mailgo.dark.min.js +++ b/dist/mailgo.dark.min.js @@ -1,2 +1,2 @@ -window.mailgo=function(){var e={91:function(e,o,t){var a=t(476)((function(e){return e[1]}));a.push([e.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:.8}.m-modal .m-modal-content{position:relative;z-index:10002;box-sizing:content-box;text-align:center;overflow:hidden;min-width:200px;max-width:240px;background-color:#fff;opacity:.95;border-radius:20px;box-shadow:0 3px 20px rgba(32,35,42,.5);border:3px solid #333;color:#4a4a4a;display:flex;flex-direction:column;overflow:auto;padding:24px;transition:.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:pre-line;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{white-space:pre-line;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(192,55,42,.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(9,103,170,.08);color:#0967aa}.m-modal .m-modal-content a.m-yahoo{color:#4a00a0}.m-modal .m-modal-content a.m-yahoo:hover,.m-modal .m-modal-content a.m-yahoo:focus,.m-modal .m-modal-content a.m-yahoo:active{background-color:rgba(74,0,160,.08);color:#4a00a0}.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(8,109,160,.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(6,116,102,.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(7,109,146,.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,.08);color:#4a4a4a}.m-modal .m-modal-content a.m-by{font-size:12px;margin-top:.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,.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(224,125,115,.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(76,156,215,.08);color:#4c9cd7}.m-modal.m-dark .m-modal-content a.m-yahoo{color:#ac88d3}.m-modal.m-dark .m-modal-content a.m-yahoo:hover,.m-modal.m-dark .m-modal-content a.m-yahoo:focus,.m-modal.m-dark .m-modal-content a.m-yahoo:active{background-color:rgba(172,136,211,.08);color:#ac88d3}.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(76,171,219,.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(76,210,192,.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(76,199,244,.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}',""]),e.exports=a},476:function(e){"use strict";e.exports=function(e){var o=[];return o.toString=function(){return this.map((function(o){var t=e(o);return o[2]?"@media ".concat(o[2]," {").concat(t,"}"):t})).join("")},o.i=function(e,t,a){"string"==typeof e&&(e=[[null,e,""]]);var n={};if(a)for(var d=0;d()[\]\\.,;:\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)},h=function(e){return e.every(y)},k=function(e){var o=document.createElement("textarea");o.value=e,o.setAttribute("readonly",""),o.style.position="absolute",o.style.left="-9999px",document.body.appendChild(o);var t=document.getSelection().rangeCount>0&&document.getSelection().getRangeAt(0);return o.select(),document.execCommand("copy"),document.body.removeChild(o),!!t&&(document.getSelection().removeAllRanges(),document.getSelection().addRange(t),!0)},_=function(e){var o=e;o.querySelector(".m-modal-content a:last-of-type").addEventListener("keydown",w),o.querySelector(".m-modal-content a:first-of-type").addEventListener("keydown",C)},w=function(e){"Tab"===e.code&&!1===e.shiftKey&&(e.preventDefault(),e.target.closest("div").querySelector("a:first-of-type").focus())},C=function(e){"Tab"===e.code&&!0===e.shiftKey&&(e.preventDefault(),e.target.closest("div").querySelector("a:last-of-type").focus())},x=JSON.parse('["en","it","es","de","fr","pt","nl","ru","sv","no","dk","is","zh","ja"]'),L=JSON.parse('{"en":{"open_in_":"open in ","cc_":"cc ","bcc_":"bcc ","subject_":"subject ","body_":"body ","gmail":"Gmail","outlook":"Outlook","yahoo":"Yahoo Mail","telegram":"Telegram","whatsapp":"WhatsApp","skype":"Skype","call":"call","open":"open","_default":" default","_as_default":" as default","copy":"copy","copied":"copied"},"it":{"open_in_":"apri con ","bcc_":"ccn ","subject_":"oggetto ","body_":"testo ","call":"chiama","open":"apri","_default":" ","_as_default":" ","copy":"copia","copied":"copiato"},"es":{"open_in_":"abrir con ","bcc_":"cco ","subject_":"asunto ","body_":"cuerpo ","call":"llamar","open":"abrir","_default":" predefinido","_as_default":" por defecto","copy":"copiar","copied":"copiado"},"de":{"open_in_":"Öffnen in ","subject_":"Betreff ","body_":"Nachricht ","call":"Anrufen","open":"Öffnen","_default":" mit Standard","_as_default":" mit Standard","copy":"kopieren","copied":"kopiert"},"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","copied":"copiado"},"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","copied":"copié"},"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":"скопировать"},"sv":{"open_in_":"öppna i ","subject_":"ämne ","body_":"meddelandetext ","call":"ring","open":"öppna","_default":" förval","_as_default":" som förval","copy":"kopiera","copied":"kopierad"},"no":{"open_in_":"åpne i ","subject_":"emne ","call":"ringe","open":"åpne","_as_default":" som standard","copy":"kopiere","copied":"kopiert"},"dk":{"open_in_":"åpne i ","subject_":"emne ","call":"ringe op","open":"åben","_as_default":" som standard","copy":"kopi","copied":"kopieret"},"is":{"open_in_":"opið inn ","subject_":"viðfangsefni ","body_":"líkami ","call":"hringja","open":"opið","_default":" sjálfgefið","_as_default":" sem sjálfgefið","copy":"afrita","copied":"afritað"},"zh":{"open_in_":"開啟 ","cc_":"副本 ","bcc_":"密件副本 ","subject_":"主旨 ","body_":"內文 ","call":"通話","open":"開啟","_default":" 預設","_as_default":" 預設","copy":"複製","copied":"已複製"},"ja":{"open_in_":"開く ","subject_":"主題 ","body_":"本文 ","call":"通話 ","open":"開く ","_default":" 標準のアプリ","_as_default":" 標準のアプリ","copy":"リンクをコピー","copied":"コピーしました"}}');function j(e,o){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);o&&(a=a.filter((function(o){return Object.getOwnPropertyDescriptor(e,o).enumerable}))),t.push.apply(t,a)}return t}function E(e){for(var o=1;o1&&void 0!==arguments[1]?arguments[1]:a,t=new RegExp("^"+o+"((.)+)","gi");return t.test(e)};function Fe(e){var o,t,u,f=e.getAttribute("href");if(null!==(o=e.classList)&&void 0!==o&&o.contains("no-mailgo"))return null;if(f||null!==(t=e.classList)&&void 0!==t&&t.contains("mailgo")){if(Me(f,a)||Me(f,n))return{type:m,installation:s};if(Me(f,d)||Me(f,l))return{type:c,installation:s};if(Me(f,i))return{type:r,installation:s}}if("#mailgo"===f||null!==(u=e.classList)&&void 0!==u&&u.contains("mailgo")){if(e.hasAttribute("data-address")&&e.hasAttribute("data-domain"))return{type:m,installation:p};if(e.hasAttribute("data-tel"))return{type:c,installation:p};if(e.hasAttribute("data-msg"))return{type:r,installation:p}}return null}var qe=function(e){if(Ke()){var o,t=null===(o=O)||void 0===o?void 0:o.type;if(t===m)switch(e.keyCode){case 27:return Je(),!0;case 71:return Ie(),!0;case 79:return Ne(),!0;case 89:return Ue(),!0;case 32:case 13:return Te(),!0;case 67:return Be(),!0;default:return!1}else if(t===c)switch(e.keyCode){case 27:return Je(),!0;case 84:return Pe(),!0;case 87:return ze(),!0;case 83:return De(),!0;case 32:case 13:return Te(),!0;case 67:return Be(),!0;default:return!1}}return!1},He=function(e){Qe(e,"flex")},Je=function(){Qe(m,"none"),Qe(c,"none"),document.removeEventListener("keydown",qe)},Ke=function(){return he&&"flex"===Ye(m)||(ke||_e)&&"flex"===Ye(c)},We=function(){var e=Ze(f);return e.href="https://mailgo.dev?ref=mailgo-modal",e.className="m-by",e.target="_blank",e.rel="noopener noreferrer",e.appendChild($e("mailgo.dev")),e},Ze=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"div";return document.createElement(e)},$e=function(e){return document.createTextNode(e)},Ge=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:m;return e===c?N:I},Ye=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:m;return Ge(e).style.display},Qe=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:m,o=arguments.length>1?arguments[1]:void 0,t=Ge(e);t&&(t.style.display=o,"flex"===o?(ne=document.activeElement,t.setAttribute("aria-hidden","false"),t.setAttribute("tabindex","0"),t.focus(),_(t)):(t.setAttribute("aria-hidden","true"),t.setAttribute("tabindex","-1"),ne.focus()))},Ve=function(){var e,o=null===(e=O)||void 0===e?void 0:e.type;o&&Ge(o).classList.add("m-dark")},Xe=function(){var e,o=null===(e=O)||void 0===e?void 0:e.type;o&&Ge(o).classList.remove("m-dark")},eo=function(e){for(var o=[];e;){if(o.push(e),"HTML"===e.tagName)return o.push(document),o.push(window),o;e=e.parentElement}},oo=function(e,o){if(D=e,o&&o.length>0){var t=o.join("&");D=D.concat("?"+t)}return D},to=function(e,o){if(!S)return!0;if("action"===e){var t,a;if(S&&(null===(t=S)||void 0===t||!t.actions))return!0;if(S&&S.actions&&!1===(null===(a=S)||void 0===a?void 0:a.actions[o]))return!1}else if("detail"===e){var n,d;if(S&&(null===(n=S)||void 0===n||!n.details))return!0;if(S&&S.details&&!1===(null===(d=S)||void 0===d?void 0:d.details[o]))return!1}return!0},ao=function(){var e,o="default lang";if(null!==(e=S)&&void 0!==e&&e.lang&&-1!==x.indexOf(S.lang))ge=S.lang,o="config lang";else{var t=document.documentElement.lang;x.forEach((function(e){new RegExp("^"+e,"gi").test(t)&&(ge=e,o="html lang")}))}return R=L[ge],o};function no(e){try{var o;if(S=E(E({},e),(null===(o=window)||void 0===o?void 0:o.mailgoConfig)||null),"undefined"!=typeof window){var t,a,n,d,l,i;if(void 0!==(null===(t=S)||void 0===t?void 0:t.loadCSS)&&(Ee=S.loadCSS),void 0!==(null===(a=S)||void 0===a?void 0:a.mailto)&&(he=S.mailto),void 0!==(null===(n=S)||void 0===n?void 0:n.tel)&&(ke=S.tel),void 0!==(null===(d=S)||void 0===d?void 0:d.sms)&&(_e=S.sms),Ee&&function(){if(!document.getElementById("mailgo-style")){var e=Ze("style");e.id="mailgo-style",e.type="text/css",e.appendChild($e(ve)),document.head.appendChild(e)}}(),null!==(l=S)&&void 0!==l&&l.initEvent)null!==(i=S)&&void 0!==i&&i.listenerOptions?document.addEventListener(S.initEvent,Ae,S.listenerOptions):document.addEventListener(S.initEvent,Ae);else Ae();return!0}}catch(e){console.log(e)}return!1}"undefined"!=typeof window&&(window.getMailgoTypeByElement=Fe,window.mailgoClickListener=Re,window.mailgoCheckRender=Re,window.mailgoPreRender=Se,window.mailgoDirectRender=function(e){return no(),Me(e,a)||Me(e,n)?(O={type:m,installation:s},Se(e),!0):!!(Me(e,d)||Me(e,l)||Me(e,i))&&(O={type:c,installation:s},Se(e),!0)},window.mailgoRender=Oe,window.mailgo=no);no({initEvent:"DOMContentLoaded",dark:!0})}},o={};function t(a){if(o[a])return o[a].exports;var n=o[a]={id:a,exports:{}};return e[a](n,n.exports,t),n.exports}return t.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},t(907)}(); +!function(){var e={91:function(e,o,t){var a=t(476)((function(e){return e[1]}));a.push([e.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:.8}.m-modal .m-modal-content{position:relative;z-index:10002;box-sizing:content-box;text-align:center;overflow:hidden;min-width:200px;max-width:240px;background-color:#fff;opacity:.95;border-radius:20px;box-shadow:0 3px 20px rgba(32,35,42,.5);border:3px solid #333;color:#4a4a4a;display:flex;flex-direction:column;overflow:auto;padding:24px;transition:.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:pre-line;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{white-space:pre-line;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(192,55,42,.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(9,103,170,.08);color:#0967aa}.m-modal .m-modal-content a.m-yahoo{color:#4a00a0}.m-modal .m-modal-content a.m-yahoo:hover,.m-modal .m-modal-content a.m-yahoo:focus,.m-modal .m-modal-content a.m-yahoo:active{background-color:rgba(74,0,160,.08);color:#4a00a0}.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(8,109,160,.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(6,116,102,.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(7,109,146,.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,.08);color:#4a4a4a}.m-modal .m-modal-content a.m-by{font-size:12px;margin-top:.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,.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(224,125,115,.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(76,156,215,.08);color:#4c9cd7}.m-modal.m-dark .m-modal-content a.m-yahoo{color:#ac88d3}.m-modal.m-dark .m-modal-content a.m-yahoo:hover,.m-modal.m-dark .m-modal-content a.m-yahoo:focus,.m-modal.m-dark .m-modal-content a.m-yahoo:active{background-color:rgba(172,136,211,.08);color:#ac88d3}.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(76,171,219,.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(76,210,192,.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(76,199,244,.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}',""]),e.exports=a},476:function(e){"use strict";e.exports=function(e){var o=[];return o.toString=function(){return this.map((function(o){var t=e(o);return o[2]?"@media ".concat(o[2]," {").concat(t,"}"):t})).join("")},o.i=function(e,t,a){"string"==typeof e&&(e=[[null,e,""]]);var n={};if(a)for(var d=0;d()[\]\\.,;:\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)},h=function(e){return e.every(y)},k=function(e){var o=document.createElement("textarea");o.value=e,o.setAttribute("readonly",""),o.style.position="absolute",o.style.left="-9999px",document.body.appendChild(o);var t=document.getSelection().rangeCount>0&&document.getSelection().getRangeAt(0);return o.select(),document.execCommand("copy"),document.body.removeChild(o),!!t&&(document.getSelection().removeAllRanges(),document.getSelection().addRange(t),!0)},_=function(e){var o=e;o.querySelector(".m-modal-content a:last-of-type").addEventListener("keydown",w),o.querySelector(".m-modal-content a:first-of-type").addEventListener("keydown",C)},w=function(e){"Tab"===e.code&&!1===e.shiftKey&&(e.preventDefault(),e.target.closest("div").querySelector("a:first-of-type").focus())},C=function(e){"Tab"===e.code&&!0===e.shiftKey&&(e.preventDefault(),e.target.closest("div").querySelector("a:last-of-type").focus())},x=JSON.parse('["en","it","es","de","fr","pt","nl","ru","sv","no","dk","is","zh","ja"]'),L=JSON.parse('{"en":{"open_in_":"open in ","cc_":"cc ","bcc_":"bcc ","subject_":"subject ","body_":"body ","gmail":"Gmail","outlook":"Outlook","yahoo":"Yahoo Mail","telegram":"Telegram","whatsapp":"WhatsApp","skype":"Skype","call":"call","open":"open","_default":" default","_as_default":" as default","copy":"copy","copied":"copied"},"it":{"open_in_":"apri con ","bcc_":"ccn ","subject_":"oggetto ","body_":"testo ","call":"chiama","open":"apri","_default":" ","_as_default":" ","copy":"copia","copied":"copiato"},"es":{"open_in_":"abrir con ","bcc_":"cco ","subject_":"asunto ","body_":"cuerpo ","call":"llamar","open":"abrir","_default":" predefinido","_as_default":" por defecto","copy":"copiar","copied":"copiado"},"de":{"open_in_":"Öffnen in ","subject_":"Betreff ","body_":"Nachricht ","call":"Anrufen","open":"Öffnen","_default":" mit Standard","_as_default":" mit Standard","copy":"kopieren","copied":"kopiert"},"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","copied":"copiado"},"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","copied":"copié"},"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":"скопировать"},"sv":{"open_in_":"öppna i ","subject_":"ämne ","body_":"meddelandetext ","call":"ring","open":"öppna","_default":" förval","_as_default":" som förval","copy":"kopiera","copied":"kopierad"},"no":{"open_in_":"åpne i ","subject_":"emne ","call":"ringe","open":"åpne","_as_default":" som standard","copy":"kopiere","copied":"kopiert"},"dk":{"open_in_":"åpne i ","subject_":"emne ","call":"ringe op","open":"åben","_as_default":" som standard","copy":"kopi","copied":"kopieret"},"is":{"open_in_":"opið inn ","subject_":"viðfangsefni ","body_":"líkami ","call":"hringja","open":"opið","_default":" sjálfgefið","_as_default":" sem sjálfgefið","copy":"afrita","copied":"afritað"},"zh":{"open_in_":"開啟 ","cc_":"副本 ","bcc_":"密件副本 ","subject_":"主旨 ","body_":"內文 ","call":"通話","open":"開啟","_default":" 預設","_as_default":" 預設","copy":"複製","copied":"已複製"},"ja":{"open_in_":"開く ","subject_":"主題 ","body_":"本文 ","call":"通話 ","open":"開く ","_default":" 標準のアプリ","_as_default":" 標準のアプリ","copy":"リンクをコピー","copied":"コピーしました"}}');function j(e,o){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);o&&(a=a.filter((function(o){return Object.getOwnPropertyDescriptor(e,o).enumerable}))),t.push.apply(t,a)}return t}function E(e){for(var o=1;o1&&void 0!==arguments[1]?arguments[1]:a,t=new RegExp("^"+o+"((.)+)","gi");return t.test(e)};function Fe(e){var o,t,u,f=e.getAttribute("href");if(null!==(o=e.classList)&&void 0!==o&&o.contains("no-mailgo"))return null;if(f||null!==(t=e.classList)&&void 0!==t&&t.contains("mailgo")){if(Me(f,a)||Me(f,n))return{type:m,installation:s};if(Me(f,d)||Me(f,l))return{type:c,installation:s};if(Me(f,i))return{type:r,installation:s}}if("#mailgo"===f||null!==(u=e.classList)&&void 0!==u&&u.contains("mailgo")){if(e.hasAttribute("data-address")&&e.hasAttribute("data-domain"))return{type:m,installation:p};if(e.hasAttribute("data-tel"))return{type:c,installation:p};if(e.hasAttribute("data-msg"))return{type:r,installation:p}}return null}var qe=function(e){if(Ke()){var o,t=null===(o=O)||void 0===o?void 0:o.type;if(t===m)switch(e.keyCode){case 27:return Je(),!0;case 71:return Ie(),!0;case 79:return Ne(),!0;case 89:return Ue(),!0;case 32:case 13:return Te(),!0;case 67:return Be(),!0;default:return!1}else if(t===c)switch(e.keyCode){case 27:return Je(),!0;case 84:return Pe(),!0;case 87:return ze(),!0;case 83:return De(),!0;case 32:case 13:return Te(),!0;case 67:return Be(),!0;default:return!1}}return!1},He=function(e){Qe(e,"flex")},Je=function(){Qe(m,"none"),Qe(c,"none"),document.removeEventListener("keydown",qe)},Ke=function(){return he&&"flex"===Ye(m)||(ke||_e)&&"flex"===Ye(c)},We=function(){var e=Ze(f);return e.href="https://mailgo.dev?ref=mailgo-modal",e.className="m-by",e.target="_blank",e.rel="noopener noreferrer",e.appendChild($e("mailgo.dev")),e},Ze=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"div";return document.createElement(e)},$e=function(e){return document.createTextNode(e)},Ge=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:m;return e===c?N:I},Ye=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:m;return Ge(e).style.display},Qe=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:m,o=arguments.length>1?arguments[1]:void 0,t=Ge(e);t&&(t.style.display=o,"flex"===o?(ne=document.activeElement,t.setAttribute("aria-hidden","false"),t.setAttribute("tabindex","0"),t.focus(),_(t)):(t.setAttribute("aria-hidden","true"),t.setAttribute("tabindex","-1"),ne.focus()))},Ve=function(){var e,o=null===(e=O)||void 0===e?void 0:e.type;o&&Ge(o).classList.add("m-dark")},Xe=function(){var e,o=null===(e=O)||void 0===e?void 0:e.type;o&&Ge(o).classList.remove("m-dark")},eo=function(e){for(var o=[];e;){if(o.push(e),"HTML"===e.tagName)return o.push(document),o.push(window),o;e=e.parentElement}},oo=function(e,o){if(D=e,o&&o.length>0){var t=o.join("&");D=D.concat("?"+t)}return D},to=function(e,o){if(!S)return!0;if("action"===e){var t,a;if(S&&(null===(t=S)||void 0===t||!t.actions))return!0;if(S&&S.actions&&!1===(null===(a=S)||void 0===a?void 0:a.actions[o]))return!1}else if("detail"===e){var n,d;if(S&&(null===(n=S)||void 0===n||!n.details))return!0;if(S&&S.details&&!1===(null===(d=S)||void 0===d?void 0:d.details[o]))return!1}return!0},ao=function(){var e,o="default lang";if(null!==(e=S)&&void 0!==e&&e.lang&&-1!==x.indexOf(S.lang))ge=S.lang,o="config lang";else{var t=document.documentElement.lang;x.forEach((function(e){new RegExp("^"+e,"gi").test(t)&&(ge=e,o="html lang")}))}return R=L[ge],o};function no(e){try{var o;if(S=E(E({},e),(null===(o=window)||void 0===o?void 0:o.mailgoConfig)||null),"undefined"!=typeof window){var t,a,n,d,l,i;if(void 0!==(null===(t=S)||void 0===t?void 0:t.loadCSS)&&(Ee=S.loadCSS),void 0!==(null===(a=S)||void 0===a?void 0:a.mailto)&&(he=S.mailto),void 0!==(null===(n=S)||void 0===n?void 0:n.tel)&&(ke=S.tel),void 0!==(null===(d=S)||void 0===d?void 0:d.sms)&&(_e=S.sms),Ee&&function(){if(!document.getElementById("mailgo-style")){var e=Ze("style");e.id="mailgo-style",e.type="text/css",e.appendChild($e(ve)),document.head.appendChild(e)}}(),null!==(l=S)&&void 0!==l&&l.initEvent)null!==(i=S)&&void 0!==i&&i.listenerOptions?document.addEventListener(S.initEvent,Ae,S.listenerOptions):document.addEventListener(S.initEvent,Ae);else Ae();return!0}}catch(e){console.log(e)}return!1}"undefined"!=typeof window&&(window.getMailgoTypeByElement=Fe,window.mailgoClickListener=Re,window.mailgoCheckRender=Re,window.mailgoPreRender=Se,window.mailgoDirectRender=function(e){return no(),Me(e,a)||Me(e,n)?(O={type:m,installation:s},Se(e),!0):!!(Me(e,d)||Me(e,l)||Me(e,i))&&(O={type:c,installation:s},Se(e),!0)},window.mailgoRender=Oe,window.mailgo=no);no({initEvent:"DOMContentLoaded",dark:!0})}},o={};function t(a){if(o[a])return o[a].exports;var n=o[a]={id:a,exports:{}};return e[a](n,n.exports,t),n.exports}t.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var a=t(907);window.mailgo=a}(); //# sourceMappingURL=mailgo.dark.min.js.map \ No newline at end of file diff --git a/dist/mailgo.dark.min.js.map b/dist/mailgo.dark.min.js.map index 405af37..ab98d55 100644 --- a/dist/mailgo.dark.min.js.map +++ b/dist/mailgo.dark.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack://mailgo/../src/mailgo.scss","webpack://mailgo/../node_modules/css-loader/dist/runtime/api.js","webpack://mailgo/../src/mailgo.scss?81f2","webpack://mailgo/../src/constants.ts","webpack://mailgo/../src/utils.ts","webpack://mailgo/../src/mailgo.ts","webpack://mailgo/../src/mobile-detect.ts","webpack://mailgo/./mailgo.dist.dark.ts","webpack://mailgo/webpack/bootstrap","webpack://mailgo/webpack/startup","webpack://mailgo/webpack/runtime/make namespace object"],"names":["___CSS_LOADER_EXPORT___","___CSS_LOADER_API_IMPORT___","i","push","module","id","exports","cssWithMappingToString","list","toString","this","map","item","content","concat","join","modules","mediaQuery","dedupe","alreadyImportedModules","length","_i","result","MAILTO","MAILGO","TEL","CALLTO","SMS","MAILGO_MAIL","MAILGO_TEL","MAILGO_SMS","CLASSIC","LESS_SPAM","spanHTMLTag","aHTMLTag","pHTMLTag","notNumber","RegExp","leadingZeros","validateEmail","email","test","validateEmails","arr","every","copyToClipboard","str","el","document","createElement","value","setAttribute","style","position","left","body","appendChild","selected","getSelection","rangeCount","getRangeAt","select","execCommand","removeChild","removeAllRanges","addRange","setFocusLoop","ref","modal","querySelector","addEventListener","leaveLastLink","leaveFirstLink","e","code","shiftKey","preventDefault","target","closest","focus","strings","config","activeMailgoType","modalMailto","modalTel","url","href","lessSpamHref","mail","cc","bcc","subject","bodyMail","tel","msg","telegramUsername","skypeUsername","title","titleTel","detailCc","detailBcc","detailSubject","detailBody","detailMsg","ccValue","bccValue","subjectValue","bodyValue","msgValue","activatedLink","gmail","outlook","yahoo","open","telegram","wa","skype","call","copyMail","copyTel","mailgoCSS","require","lang","defaultStrings","translations","isMobile","mailtoEnabled","telEnabled","smsEnabled","desktopEnabled","mobileEnabled","validateEmailConfig","validateTelConfig","showFooterConfig","loadCSSConfig","mailgoInit","navigator","userAgent","desktop","mobile","mailgoSetLanguage","mailgoExists","getElementById","display","classList","add","dark","enableDarkMode","disableDarkMode","modalBackground","className","modalContent","details","ccSpan","createTextNode","cc_","bccSpan","bcc_","subjectSpan","subject_","bodySpan","body_","open_in_","gmailSpan","mailgoConfigAttributeEnabled","outlookSpan","yahooSpan","openSpan","_default","copy","showFooter","byElement","hideMailgo","mailgoTelExists","detailsTel","msgSpan","telegramSpan","waSpan","whatsapp","skypeSpan","callSpan","_as_default","mailgoClickListener","event","contains","mailgoIsShowing","path","composedPath","forEach","element","HTMLDocument","Window","localMailgoType","getMailgoTypeByElement","activeMailgoModalType","type","mailgoPreRender","mailgoElementOrUrl","mailgoElement","installation","getAttribute","validateUrl","decodeURIComponent","split","trim","urlParams","URL","searchParams","get","error","console","log","encodeURIComponent","parameters","buildLessSpamHref","validateTel","hasAttribute","mailgoRender","textContent","openGmail","openOutlook","openYahooMail","openDefault","openWhatsApp","openTelegram","openSkype","showMailgo","mailgoKeydown","urlString","gmailUrl","window","startingOutlookUrl","office365","outlookUrl","yahooUrl","tgUrl","skypeUrl","whatappTel","replace","waUrl","location","activeCopy","copied","setTimeout","regexValidate","elementHref","keyboardEvent","keyCode","setModalDisplay","removeEventListener","getModalDisplay","by","rel","getModalHTMLElement","activeElement","remove","tagName","parentElement","joinedParams","attribute","actions","languageType","languages","htmlLang","documentElement","language","mailgo","mailgoConfig","loadCSS","mailto","sms","mailgoCSSElement","head","mailgoStyle","initEvent","listenerOptions","mailgoCheckRender","mailgoDirectRender","directUrl","__webpack_module_cache__","__webpack_require__","moduleId","__webpack_modules__","r","Symbol","toStringTag","Object","defineProperty"],"mappings":"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","file":"mailgo.dark.min.js","sourcesContent":["// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../node_modules/css-loader/dist/runtime/api.js\");\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(function(i){return i[1]});\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:.8}.m-modal .m-modal-content{position:relative;z-index:10002;box-sizing:content-box;text-align:center;overflow:hidden;min-width:200px;max-width:240px;background-color:#fff;opacity:.95;border-radius:20px;box-shadow:0 3px 20px rgba(32,35,42,.5);border:3px solid #333;color:#4a4a4a;display:flex;flex-direction:column;overflow:auto;padding:24px;transition:.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:pre-line;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{white-space:pre-line;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(192,55,42,.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(9,103,170,.08);color:#0967aa}.m-modal .m-modal-content a.m-yahoo{color:#4a00a0}.m-modal .m-modal-content a.m-yahoo:hover,.m-modal .m-modal-content a.m-yahoo:focus,.m-modal .m-modal-content a.m-yahoo:active{background-color:rgba(74,0,160,.08);color:#4a00a0}.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(8,109,160,.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(6,116,102,.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(7,109,146,.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,.08);color:#4a4a4a}.m-modal .m-modal-content a.m-by{font-size:12px;margin-top:.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,.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(224,125,115,.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(76,156,215,.08);color:#4c9cd7}.m-modal.m-dark .m-modal-content a.m-yahoo{color:#ac88d3}.m-modal.m-dark .m-modal-content a.m-yahoo:hover,.m-modal.m-dark .m-modal-content a.m-yahoo:focus,.m-modal.m-dark .m-modal-content a.m-yahoo:active{background-color:rgba(172,136,211,.08);color:#ac88d3}.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(76,171,219,.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(76,210,192,.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(76,199,244,.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// 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 (cssWithMappingToString) {\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);\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 var result = require(\"!!../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].use[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 ","import { MailgoModalType, MailgoInstallationType } from \"mailgo\";\n\n// links\nexport const MAILTO: string = \"mailto:\";\nexport const MAILGO: string = \"mailgo:\";\nexport const TEL: string = \"tel:\";\nexport const CALLTO: string = \"callto:\";\nexport const SMS: string = \"sms:\";\n\n// deep linking\nexport const outlookDeepLink: string = \"ms-outlook://\";\n\n// no mailgo class\nexport const NO_MAILGO: string = \"no-mailgo\";\n\n// responsive settings\nexport const DESKTOP: string = \"desktop\";\nexport const MOBILE: string = \"mobile\";\n\n// mailgo modal types\nexport const MAILGO_MAIL: MailgoModalType = \"mailgo\";\nexport const MAILGO_TEL: MailgoModalType = \"mailgo-tel\";\nexport const MAILGO_SMS: MailgoModalType = \"mailgo-sms\";\n\n// mailgo installation types\nexport const CLASSIC: MailgoInstallationType = \"classic\";\nexport const LESS_SPAM: MailgoInstallationType = \"less-spam\";\n\n// useful html tags\nexport const spanHTMLTag: string = \"span\";\nexport const aHTMLTag: string = \"a\";\nexport const pHTMLTag: string = \"p\";\n\n// default lang\nexport const defaultLang: string = \"en\";\n\n// useful regexp\nexport const notNumber: RegExp = new RegExp(\"[^0-9/]\", \"gi\");\nexport const leadingZeros: RegExp = new RegExp(\"^0+\", \"gi\");\n","// validate a single email with regex\nexport const 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\nexport const validateEmails = (arr: string[]): boolean =>\n arr.every(validateEmail);\n\n// validate a single tel with regex\nexport const validateTel = (tel: string): boolean =>\n /^[+]{0,1}[\\s0-9]*[(]{0,1}[0-9]{1,4}[)]{0,1}[-\\s\\./0-9]*[p]{0,1}[\\s0-9]*$/.test(\n tel\n );\n\n// copy of a string\nexport const copyToClipboard = (str: string): boolean => {\n let el: HTMLTextAreaElement = document.createElement(\n \"textarea\"\n ) as HTMLTextAreaElement;\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\n// set focus loop within modal\nexport const 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\nexport const 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\nexport const 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","import {\n MailgoConfig,\n MailgoTranslations,\n MailgoTranslation,\n MailgoAction,\n MailgoLanguages,\n MailgoType,\n MailgoDetail,\n MailgoInstallationType,\n MailgoModalType,\n} from \"mailgo\";\n\n// polyfill\n// import { mailgoPolyfill } from \"./polyfill\";\n\n// constants\nimport {\n MAILTO,\n MAILGO,\n TEL,\n CALLTO,\n SMS,\n MAILGO_MAIL,\n MAILGO_TEL,\n MAILGO_SMS,\n CLASSIC,\n LESS_SPAM,\n NO_MAILGO,\n MOBILE,\n spanHTMLTag,\n aHTMLTag,\n pHTMLTag,\n defaultLang,\n notNumber,\n leadingZeros,\n} from \"./constants\";\n\n// utils\nimport {\n validateEmails,\n validateTel,\n copyToClipboard,\n setFocusLoop,\n} from \"./utils\";\n\n// i18n for mailgo\nimport languages from \"../i18n/languages.json\";\nimport translations from \"../i18n/translations.json\";\n\n// mobile detect\nimport { userAgent } from \"./mobile-detect\";\n\n// mailgo scss, with toString (https://github.com/webpack-contrib/css-loader#tostring)\nconst mailgoCSS: string = require(\"./mailgo.scss\").toString();\n\n// default language\nlet lang: string = defaultLang;\n\n// default strings\nconst defaultStrings: MailgoTranslation = (translations as MailgoTranslations)[\n defaultLang\n];\n\n// translation strings\nlet strings: MailgoTranslation;\n\n// global mailgo config object\nlet config: MailgoConfig;\n\n// config to check if the client is mobile or desktop\nlet isMobile: boolean = false;\n\n// default config attributes\nlet mailtoEnabled: boolean = true;\nlet telEnabled: boolean = true;\nlet smsEnabled: boolean = false;\nlet desktopEnabled: boolean = true;\nlet mobileEnabled: boolean = true;\nlet validateEmailConfig: boolean = true;\nlet validateTelConfig: boolean = true;\nlet showFooterConfig: boolean = true;\nlet loadCSSConfig: boolean = true;\n\n// activeMailgoType\nlet activeMailgoType: MailgoType;\n\n// modals global object\nlet modalMailto: HTMLElement, modalTel: HTMLElement;\n\n// mailgo general variables\nlet url: URL, href: string, lessSpamHref: string;\n\n// mailgo mail variables\nlet mail: string, cc: string, bcc: string, subject: string, bodyMail: string;\n\n// mailgo tel variables\nlet tel: string, msg: string, telegramUsername: string, 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 detailMsg: HTMLElement,\n ccValue: HTMLElement,\n bccValue: HTMLElement,\n subjectValue: HTMLElement,\n bodyValue: HTMLElement,\n msgValue: HTMLElement,\n activatedLink: HTMLElement;\n\n// mailgo buttons (actions)\nlet gmail: HTMLLinkElement,\n outlook: HTMLLinkElement,\n yahoo: 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 // set the boolean for mobile/desktop\n isMobile = userAgent() === MOBILE;\n\n // responsive settings\n {\n if (typeof config?.desktop !== \"undefined\") {\n desktopEnabled = config.desktop;\n // if it is a desktop and desktop is not enabled no init mailgo\n if (!isMobile && !desktopEnabled) {\n return;\n }\n }\n if (typeof config?.mobile !== \"undefined\") {\n mobileEnabled = config.mobile;\n // if it is a mobile and mobile is not enabled no init mailgo\n if (isMobile && !mobileEnabled) {\n return;\n }\n }\n }\n\n // set the mailgo language\n mailgoSetLanguage();\n\n // mailgo, if mailgo not already exists\n let mailgoExists = !!document.getElementById(MAILGO_MAIL);\n\n // if mailgo is enabled for mailto and it not exists in DOM\n if (mailtoEnabled && !mailgoExists) {\n // modal\n modalMailto = createElement() as HTMLElement;\n modalMailto.style.display = \"none\";\n modalMailto.id = MAILGO_MAIL;\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();\n } else {\n disableDarkMode();\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 = \"#mailgo-gmail\";\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 if (mailgoConfigAttributeEnabled(\"action\", \"gmail\")) {\n modalContent.appendChild(gmail);\n }\n\n // Outlook\n outlook = createElement(aHTMLTag) as HTMLLinkElement;\n outlook.id = \"m-outlook\";\n outlook.href = \"#mailgo-outlook\";\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 if (mailgoConfigAttributeEnabled(\"action\", \"outlook\")) {\n modalContent.appendChild(outlook);\n }\n\n // Outlook\n yahoo = createElement(aHTMLTag) as HTMLLinkElement;\n yahoo.id = \"m-yahoo\";\n yahoo.href = \"#mailgo-yahoo\";\n yahoo.classList.add(\"m-open\");\n yahoo.classList.add(\"m-yahoo\");\n yahoo.appendChild(\n createTextNode(strings.open_in_ || defaultStrings.open_in_)\n );\n let yahooSpan: HTMLElement = createElement(spanHTMLTag);\n yahooSpan.className = \"w-500\";\n yahooSpan.appendChild(\n createTextNode(strings.yahoo || defaultStrings.yahoo)\n );\n yahoo.appendChild(yahooSpan);\n\n if (mailgoConfigAttributeEnabled(\"action\", \"yahoo\")) {\n modalContent.appendChild(yahoo);\n }\n\n // open default\n open = createElement(aHTMLTag) as HTMLLinkElement;\n open.id = \"m-open\";\n open.href = \"#mailgo-open\";\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 = \"#mailgo-copy\";\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 (typeof config?.showFooter !== \"undefined\") {\n showFooterConfig = config.showFooter;\n }\n\n if (showFooterConfig) {\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 mailgo is enabled for tel/callto and it not exists in DOM\n if (telEnabled && !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();\n } else {\n disableDarkMode();\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 // details\n let detailsTel: HTMLElement = createElement();\n detailsTel.id = \"m-tel-details\";\n detailsTel.className = \"m-details\";\n\n detailMsg = createElement(pHTMLTag);\n detailMsg.id = \"m-msg\";\n let msgSpan: HTMLElement = createElement(spanHTMLTag);\n msgSpan.className = \"w-500\";\n msgSpan.appendChild(createTextNode(strings.body_ || defaultStrings.body_));\n msgValue = createElement(spanHTMLTag);\n msgValue.id = \"m-msg-value\";\n detailMsg.appendChild(msgSpan);\n detailMsg.appendChild(msgValue);\n detailsTel.appendChild(detailMsg);\n\n modalContent.appendChild(detailsTel);\n\n // Telegram\n telegram = createElement(aHTMLTag) as HTMLLinkElement;\n telegram.id = \"m-tg\";\n telegram.href = \"#mailgo-telegram\";\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 if (mailgoConfigAttributeEnabled(\"action\", \"telegram\")) {\n modalContent.appendChild(telegram);\n }\n\n // WhatsApp\n wa = createElement(aHTMLTag) as HTMLLinkElement;\n wa.id = \"m-wa\";\n wa.href = \"#mailgo-whatsapp\";\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 if (mailgoConfigAttributeEnabled(\"action\", \"whatsapp\")) {\n modalContent.appendChild(wa);\n }\n\n // Skype\n skype = createElement(aHTMLTag) as HTMLLinkElement;\n skype.id = \"m-skype\";\n skype.href = \"#mailgo-skype\";\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 if (mailgoConfigAttributeEnabled(\"action\", \"skype\")) {\n modalContent.appendChild(skype);\n }\n\n // call default\n call = createElement(aHTMLTag) as HTMLLinkElement;\n call.id = \"m-call\";\n call.href = \"#mailgo-open\";\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 = \"#mailgo-copy\";\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 (typeof config?.showFooter !== \"undefined\") {\n showFooterConfig = config.showFooter;\n }\n\n if (showFooterConfig) {\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\", mailgoClickListener);\n};\n\n/**\n * mailgoClickListener\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 * or\n * document.querySelectorAll(\n * 'a[href^=\"sms:\" i]:not(.no-mailgo), a[href=\"#mailgo\"], a.mailgo'\n * );\n */\nfunction mailgoClickListener(event: Event): boolean {\n // check if the mailgo HTML exists in the body\n if (\n !document.body.contains(modalMailto) &&\n !document.body.contains(modalTel)\n ) {\n return false;\n }\n\n // if a mailgo is already showing do nothing\n if (mailgoIsShowing()) {\n return false;\n }\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\n // go here only if one of the mailgo modals are enabled\n if (mailtoEnabled || telEnabled || smsEnabled) {\n let localMailgoType = getMailgoTypeByElement(element);\n\n // go on if the localMailgoType is not null\n if (localMailgoType) {\n // set the active mailgo type\n activeMailgoType = localMailgoType;\n\n let activeMailgoModalType = activeMailgoType?.type;\n\n if (activeMailgoModalType) {\n // check if the setting is enabled and if so go with pre-render\n if (\n (mailtoEnabled && activeMailgoModalType === MAILGO_MAIL) ||\n (telEnabled && activeMailgoModalType === MAILGO_TEL) ||\n (smsEnabled && activeMailgoModalType === MAILGO_SMS)\n ) {\n // stop the normal execution of the element click\n event.preventDefault();\n\n // render mailgo\n mailgoPreRender(element as HTMLLinkElement);\n\n return true;\n }\n }\n }\n }\n });\n }\n\n return false;\n}\n\n/**\n * mailgoPreRender\n * function to pre-render a mailgo, it helps populating elements needed by modal\n */\nfunction mailgoPreRender(\n mailgoElementOrUrl: HTMLLinkElement | string\n): boolean {\n let mailgoElement: HTMLLinkElement;\n\n // get the type and installation from current mailgo type\n let type: MailgoModalType = activeMailgoType?.type;\n let installation: MailgoInstallationType = activeMailgoType?.installation;\n\n // if type is not defined return\n if (!type) return false;\n\n if (typeof mailgoElementOrUrl === \"string\") {\n // if the parameter is a string it is the url\n href = mailgoElementOrUrl as string;\n } else {\n // if the paramenter is an HTMLLinkElement get the href attribute and the element\n href = mailgoElementOrUrl.getAttribute(\"href\") as string;\n mailgoElement = mailgoElementOrUrl as HTMLLinkElement;\n }\n\n // mailgo mail\n if (type === MAILGO_MAIL) {\n // if the installation is classic\n if (installation === CLASSIC) {\n if (validateUrl(href, MAILTO)) {\n mail = decodeURIComponent(href.split(\"?\")[0].split(MAILTO)[1].trim());\n } else if (validateUrl(href, MAILGO)) {\n mail = decodeURIComponent(href.split(\"?\")[0].split(MAILGO)[1].trim());\n }\n\n try {\n url = new URL(href);\n\n let urlParams: URLSearchParams = url.searchParams;\n // optional parameters for the email\n cc = urlParams.get(\"cc\");\n bcc = urlParams.get(\"bcc\");\n subject = urlParams.get(\"subject\");\n bodyMail = urlParams.get(\"body\");\n } catch (error) {\n console.log(error);\n }\n } else if (installation === LESS_SPAM) {\n // if the installation is less-spam\n // mail = data-address + @ + data-domain\n mail =\n mailgoElement.getAttribute(\"data-address\") &&\n mailgoElement.getAttribute(\"data-domain\")\n ? mailgoElement.getAttribute(\"data-address\") +\n \"@\" +\n mailgoElement.getAttribute(\"data-domain\")\n : null;\n\n try {\n url = new URL(MAILTO + encodeURIComponent(mail));\n } catch (error) {\n console.log(error);\n }\n\n let parameters: string[] = [];\n\n // cc = data-cc-address + @ + data-cc-domain\n cc = mailgoElement.getAttribute(\"data-cc-address\")\n ? mailgoElement.getAttribute(\"data-cc-address\") +\n \"@\" +\n mailgoElement.getAttribute(\"data-cc-domain\")\n : null;\n\n // if cc is defined add it to parameters\n if (cc) parameters.push(\"cc=\" + cc);\n\n // bcc = data-bcc-address + @ + data-bcc-domain\n bcc = mailgoElement.getAttribute(\"data-bcc-address\")\n ? mailgoElement.getAttribute(\"data-bcc-address\") +\n \"@\" +\n mailgoElement.getAttribute(\"data-bcc-domain\")\n : null;\n\n // if bcc is defined add it to parameters\n if (bcc) parameters.push(\"bcc=\" + bcc);\n\n // subject = data-subject\n subject = mailgoElement.getAttribute(\"data-subject\");\n\n // if subject is defined add it to parameters\n if (subject) parameters.push(\"subject=\" + subject);\n\n // body = data-body\n bodyMail = mailgoElement.getAttribute(\"data-body\");\n\n // if body is defined add it to parameters\n if (bodyMail) parameters.push(\"body=\" + bodyMail);\n\n // set the lessSpamHref\n lessSpamHref = buildLessSpamHref(\n MAILTO + encodeURIComponent(mail),\n parameters\n );\n }\n\n // if is in config use it\n if (typeof config?.validateEmail !== \"undefined\") {\n validateEmailConfig = config.validateEmail;\n }\n\n if (validateEmailConfig) {\n // validate the email address\n if (!validateEmails(mail.split(\",\"))) {\n return false;\n }\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 // mailgo tel\n else if (type === MAILGO_TEL) {\n if (installation === CLASSIC) {\n if (validateUrl(href, TEL)) {\n tel = decodeURIComponent(href.split(\"?\")[0].split(TEL)[1].trim());\n } else if (validateUrl(href, CALLTO)) {\n tel = decodeURIComponent(href.split(\"?\")[0].split(CALLTO)[1].trim());\n } else if (validateUrl(href, SMS)) {\n tel = decodeURIComponent(href.split(\"?\")[0].split(SMS)[1].trim());\n }\n\n try {\n url = new URL(href);\n let urlParams: URLSearchParams = url.searchParams;\n\n // optional parameters for the phone number\n msg = urlParams.get(\"body\");\n } catch (error) {\n console.log(error);\n }\n } else if (installation == LESS_SPAM) {\n tel = mailgoElement.getAttribute(\"data-tel\");\n msg = mailgoElement.getAttribute(\"data-msg\");\n\n try {\n url = new URL(TEL + encodeURIComponent(tel));\n } catch (error) {\n console.log(error);\n }\n\n let parameters: string[] = [];\n\n // if msg is defined add it to parameters\n if (msg) parameters.push(\"body=\" + msg);\n\n // set the lessSpamHref\n lessSpamHref = buildLessSpamHref(\n TEL + encodeURIComponent(tel),\n parameters\n );\n }\n\n // if is in config use it\n if (typeof config?.validateTel !== \"undefined\") {\n validateTelConfig = config.validateTel;\n }\n\n // validate the phone number\n if (validateTelConfig) {\n if (!validateTel(tel)) return;\n }\n\n // Telegram username\n if (mailgoElement && mailgoElement.hasAttribute(\"data-telegram\")) {\n telegramUsername = mailgoElement.getAttribute(\"data-telegram\");\n } else {\n telegramUsername = null;\n }\n\n // Telegram username\n if (mailgoElement && mailgoElement.hasAttribute(\"data-skype\")) {\n skypeUsername = mailgoElement.getAttribute(\"data-skype\");\n } else {\n skypeUsername = null;\n }\n }\n\n // if dark is in config or contained in the element\n if (config?.dark || mailgoElement.classList.contains(\"dark\")) {\n enableDarkMode();\n } else {\n disableDarkMode();\n }\n\n // render mailgo\n mailgoRender();\n\n return true;\n}\n\n/**\n * mailgoDirectRender\n * function to render a mailgo directly from a URL\n */\nfunction mailgoDirectRender(directUrl: string): boolean {\n // start mailgo\n mailgo();\n\n if (validateUrl(directUrl, MAILTO) || validateUrl(directUrl, MAILGO)) {\n activeMailgoType = {\n type: MAILGO_MAIL,\n installation: CLASSIC,\n };\n mailgoPreRender(directUrl);\n return true;\n } else if (\n validateUrl(directUrl, TEL) ||\n validateUrl(directUrl, CALLTO) ||\n validateUrl(directUrl, SMS)\n ) {\n activeMailgoType = {\n type: MAILGO_TEL,\n installation: CLASSIC,\n };\n mailgoPreRender(directUrl);\n return true;\n }\n return false;\n}\n\n/**\n * mailgoRender\n * function to render a mailgo (mail or tel)\n */\nfunction mailgoRender(): boolean {\n // get the type from current mailgo type\n let type: MailgoModalType = activeMailgoType?.type;\n\n // if type is not defined return\n if (!type) return false;\n\n // mailgo mail\n if (type === MAILGO_MAIL) {\n // the title of the modal (email address)\n title.textContent = mail.split(\",\").join(\"\\n\");\n\n // add the details if provided\n if (mailgoConfigAttributeEnabled(\"detail\", \"cc\") && cc) {\n detailCc.style.display = \"block\";\n ccValue.textContent = cc.split(\",\").join(\"\\n\");\n } else {\n detailCc.style.display = \"none\";\n }\n\n if (mailgoConfigAttributeEnabled(\"detail\", \"bcc\") && bcc) {\n detailBcc.style.display = \"block\";\n bccValue.textContent = bcc.split(\",\").join(\"\\n\");\n } else {\n detailBcc.style.display = \"none\";\n }\n\n if (mailgoConfigAttributeEnabled(\"detail\", \"subject\") && subject) {\n detailSubject.style.display = \"block\";\n subjectValue.textContent = subject;\n } else {\n detailSubject.style.display = \"none\";\n }\n\n if (mailgoConfigAttributeEnabled(\"detail\", \"body\") && bodyMail) {\n detailBody.style.display = \"block\";\n bodyValue.textContent = bodyMail;\n } else {\n detailBody.style.display = \"none\";\n }\n\n // add the actions\n gmail.addEventListener(\"click\", openGmail);\n\n outlook.addEventListener(\"click\", openOutlook);\n\n yahoo.addEventListener(\"click\", openYahooMail);\n\n open.addEventListener(\"click\", openDefault);\n\n copyMail.addEventListener(\"click\", copy);\n }\n // mailgo tel\n else if (type === MAILGO_TEL) {\n // the title of the modal (tel)\n titleTel.textContent = tel;\n\n if (mailgoConfigAttributeEnabled(\"detail\", \"msg\") && msg) {\n detailMsg.style.display = \"block\";\n msgValue.textContent = msg;\n } else {\n detailMsg.style.display = \"none\";\n }\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\", openDefault);\n\n copyTel.addEventListener(\"click\", copy);\n }\n\n // show the mailgo\n showMailgo(type);\n\n // add listener keyDown\n document.addEventListener(\"keydown\", mailgoKeydown);\n\n return true;\n}\n\n// actions\nconst openGmail = (event?: Event): void => {\n event.preventDefault();\n\n let urlString: string;\n let installation: MailgoInstallationType = activeMailgoType?.installation;\n\n if (installation === CLASSIC) {\n try {\n urlString = url.toString();\n } catch (e) {\n urlString = href;\n }\n } else if (installation === LESS_SPAM) {\n urlString = lessSpamHref;\n }\n\n // Gmail url\n let gmailUrl: string =\n \"https://mail.google.com/mail/?extsrc=mailto&url=\" +\n encodeURIComponent(urlString);\n\n // open the link\n window.open(gmailUrl, \"_blank\", \"noopener, noreferrer\");\n\n // hide the modal\n hideMailgo();\n};\n\nconst openOutlook = (event?: Event): void => {\n event.preventDefault();\n\n // Outlook starting url\n let startingOutlookUrl: string =\n \"https://outlook.live.com/owa/?path=/mail/action/compose&to=\";\n\n // let the user to decide to open Office365 Outlook instead of the classic outlook.live.com\n if (config?.office365) {\n startingOutlookUrl =\n \"https://outlook.office365.com/owa/?path=/mail/action/compose&to=\";\n }\n\n // Outlook url\n let outlookUrl: string = startingOutlookUrl + encodeURIComponent(mail);\n\n // the details if provided\n if (subject) {\n outlookUrl = outlookUrl.concat(\"&subject=\" + encodeURIComponent(subject));\n }\n\n if (bodyMail) {\n outlookUrl = outlookUrl.concat(\"&body=\" + encodeURIComponent(bodyMail));\n }\n\n // open the link\n window.open(outlookUrl, \"_blank\", \"noopener, noreferrer\");\n\n // hide the modal\n hideMailgo();\n};\n\nconst openYahooMail = (event?: Event): void => {\n event.preventDefault();\n\n // Yahoo url\n let yahooUrl: string = \"https://compose.mail.yahoo.com/?to=\" + mail;\n\n // the details if provided\n if (subject) {\n yahooUrl = yahooUrl.concat(\"&subject=\" + encodeURIComponent(subject));\n }\n if (bodyMail) {\n yahooUrl = yahooUrl.concat(\"&body=\" + encodeURIComponent(bodyMail));\n }\n\n // open the link\n window.open(yahooUrl, \"_blank\", \"noopener, noreferrer\");\n\n // hide the modal\n hideMailgo();\n};\n\nconst openTelegram = (event?: Event): void => {\n event.preventDefault();\n\n // check if telegramUsername exists\n if (telegramUsername) {\n // Telegram url\n let tgUrl: string = \"https://t.me/\" + encodeURIComponent(telegramUsername);\n\n // open the url\n window.open(tgUrl, \"_blank\", \"noopener, noreferrer\");\n\n // hide the modal\n hideMailgo();\n }\n};\n\nconst openSkype = (event?: Event): void => {\n event.preventDefault();\n\n let skype: string = skypeUsername || tel;\n\n // Telegram url\n let skypeUrl: string = \"skype:\" + encodeURIComponent(skype);\n\n // open the url\n window.open(skypeUrl, \"_blank\", \"noopener, noreferrer\");\n\n // hide the modal\n hideMailgo();\n};\n\nconst openWhatsApp = (event?: Event): void => {\n event.preventDefault();\n\n // WhatsApp API doesn't work with non number digits and leading 0s: https://faq.whatsapp.com/general/chats/how-to-use-click-to-chat/\n let whatappTel = tel.replace(notNumber, \"\").replace(leadingZeros, \"\");\n\n // WhatsApp url\n let waUrl: string = \"https://wa.me/\" + encodeURIComponent(whatappTel);\n\n // the details if provided\n if (msg) {\n waUrl = waUrl.concat(\"?text=\" + encodeURIComponent(msg));\n }\n\n // open the url\n window.open(waUrl, \"_blank\", \"noopener, noreferrer\");\n\n // hide the modal\n hideMailgo();\n};\n\nconst openDefault = (event?: Event): void => {\n event.preventDefault();\n\n let installation: MailgoInstallationType = activeMailgoType?.installation;\n\n // if the installation is classic the browser can follow the default behaviour\n if (installation === CLASSIC) {\n window.location.href = href;\n } else if (installation === LESS_SPAM) {\n // if the installation is less-spam use the built less-spam href\n window.location.href = lessSpamHref;\n }\n\n hideMailgo();\n};\n\nconst copy = (event?: Event): void => {\n event.preventDefault();\n\n // the correct copyButton (mail or tel)\n if (mailgoIsShowing()) {\n let activeCopy: HTMLElement;\n\n let type: MailgoModalType = activeMailgoType?.type;\n\n if (type === MAILGO_MAIL) {\n // in case it is showing mail modal copy email address\n copyToClipboard(mail);\n activeCopy = copyMail;\n } else {\n // in case it is showing tel modal copy phone number\n copyToClipboard(tel);\n activeCopy = copyTel;\n }\n\n activeCopy.textContent = strings.copied || defaultStrings.copied;\n setTimeout(() => {\n activeCopy.textContent = strings.copy || defaultStrings.copy;\n // hide after the timeout\n hideMailgo();\n }, 999);\n }\n};\n\n// function to find if a link is a mailto, tel, callto or sms\nconst validateUrl = (url: string, type: string = MAILTO) => {\n let regexValidate = new RegExp(\"^\" + type + \"((.)+)\", \"gi\");\n return regexValidate.test(url);\n};\n\n// function that returns if an element is a mailgo\nfunction getMailgoTypeByElement(element: HTMLElement): MailgoType | null {\n let elementHref: string = (element as HTMLLinkElement).getAttribute(\"href\");\n\n // return null if there is no-mailgo in class\n if (element.classList?.contains(NO_MAILGO)) {\n return null;\n }\n\n // the case of classic type of mailgo, like a href=mailto:... or a href=tel:... and the class=mailgo with a useful href\n if (elementHref || element.classList?.contains(\"mailgo\")) {\n if (validateUrl(elementHref, MAILTO) || validateUrl(elementHref, MAILGO)) {\n // a mailto: or mailgo:\n return {\n type: MAILGO_MAIL,\n installation: CLASSIC,\n };\n } else if (\n validateUrl(elementHref, TEL) ||\n validateUrl(elementHref, CALLTO)\n ) {\n // a tel: or callto:\n return {\n type: MAILGO_TEL,\n installation: CLASSIC,\n };\n } else if (validateUrl(elementHref, SMS)) {\n // a sms:\n return {\n type: MAILGO_SMS,\n installation: CLASSIC,\n };\n }\n }\n\n if (elementHref === \"#mailgo\" || element.classList?.contains(\"mailgo\")) {\n // less-spam installation of mailgo, check to the attributes\n if (\n element.hasAttribute(\"data-address\") &&\n element.hasAttribute(\"data-domain\")\n ) {\n // less-spam mailto with data-address and data-domain\n return {\n type: MAILGO_MAIL,\n installation: LESS_SPAM,\n };\n } else if (element.hasAttribute(\"data-tel\")) {\n // less-spam tel with data-tel\n return {\n type: MAILGO_TEL,\n installation: LESS_SPAM,\n };\n } else if (element.hasAttribute(\"data-msg\")) {\n // less-spam sms with data-msd\n return {\n type: MAILGO_SMS,\n installation: LESS_SPAM,\n };\n }\n }\n\n return null;\n}\n\n/**\n * mailgoKeydown\n * function to manage the keydown event when the modal is showing, return a boolean that represents if a useful key has been pressed\n */\nconst mailgoKeydown = (keyboardEvent: KeyboardEvent): boolean => {\n // if mailgo is showing\n if (mailgoIsShowing()) {\n let type: MailgoModalType = activeMailgoType?.type;\n\n if (type === MAILGO_MAIL) {\n switch (keyboardEvent.keyCode) {\n case 27:\n // Escape\n hideMailgo();\n return true;\n case 71:\n // g -> open GMail\n openGmail();\n return true;\n case 79:\n // o -> open Outlook\n openOutlook();\n return true;\n case 89:\n // y -> open Yahoo Mail\n openYahooMail();\n return true;\n case 32:\n case 13:\n // spacebar or enter -> open default\n openDefault();\n return true;\n case 67:\n // c -> copy\n copy();\n return true;\n default:\n return false;\n }\n } else if (type === MAILGO_TEL) {\n switch (keyboardEvent.keyCode) {\n case 27:\n // Escape\n hideMailgo();\n return true;\n case 84:\n // t -> open Telegram\n openTelegram();\n return true;\n case 87:\n // w -> open WhatsApp\n openWhatsApp();\n return true;\n case 83:\n // s -> open Skype\n openSkype();\n return true;\n case 32:\n case 13:\n // spacebar or enter -> open default\n openDefault();\n return true;\n case 67:\n // c -> copy\n copy();\n return true;\n default:\n return false;\n }\n }\n }\n return false;\n};\n\n// show the modal\nconst showMailgo = (type: MailgoModalType): 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(MAILGO_MAIL, \"none\");\n setModalDisplay(MAILGO_TEL, \"none\");\n\n // remove listener keyDown\n document.removeEventListener(\"keydown\", mailgoKeydown);\n};\n\n// is the mailgo modal hidden?\nconst mailgoIsShowing = (): boolean => {\n return (\n (mailtoEnabled && getModalDisplay(MAILGO_MAIL) === \"flex\") ||\n ((telEnabled || smsEnabled) && getModalDisplay(MAILGO_TEL) === \"flex\")\n );\n};\n\nconst byElement = (): HTMLLinkElement => {\n // by element in the footer\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// get the correct HTMLElement from a type\nconst getModalHTMLElement = (type: MailgoModalType = MAILGO_MAIL) => {\n if (type === MAILGO_TEL) {\n return modalTel;\n } else {\n return modalMailto;\n }\n};\n\n// get display value\nconst getModalDisplay = (ref: MailgoModalType = MAILGO_MAIL): string =>\n getModalHTMLElement(ref).style.display;\n\n// set display value\nconst setModalDisplay = (\n ref: MailgoModalType = MAILGO_MAIL,\n value: string\n): void => {\n let modal = getModalHTMLElement(ref);\n\n if (modal) {\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\n// enable dark mode\nconst enableDarkMode = () => {\n // get the type from current mailgo type\n let type: MailgoModalType = activeMailgoType?.type;\n if (type) {\n getModalHTMLElement(type).classList.add(\"m-dark\");\n }\n};\n\n// disable dark mode\nconst disableDarkMode = () => {\n // get the type from current mailgo type\n let type: MailgoModalType = activeMailgoType?.type;\n if (type) {\n getModalHTMLElement(type).classList.remove(\"m-dark\");\n }\n};\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// function to recreate a mailto: or tel: href from less-spam\nconst buildLessSpamHref = (type: string, parameters: string[]): string => {\n lessSpamHref = type;\n if (parameters && parameters.length > 0) {\n let joinedParams = parameters.join(\"&\");\n lessSpamHref = lessSpamHref.concat(\"?\" + joinedParams);\n }\n return lessSpamHref;\n};\n\n// function to check an attribute is enabled or not, by default considering it enabled\nconst mailgoConfigAttributeEnabled = (\n type: \"action\" | \"detail\",\n attribute: MailgoAction | MailgoDetail\n): boolean => {\n // by default all the actions and attribute are enabled\n if (!config) {\n return true;\n }\n\n // if the attribute type is action consider the actions config attribute\n if (type === \"action\") {\n if (config && !config?.actions) {\n return true;\n }\n\n if (\n config &&\n config.actions &&\n config?.actions[attribute as MailgoAction] === false\n ) {\n return false;\n }\n } else if (type === \"detail\") {\n // else consider the details attribute\n\n if (config && !config?.details) {\n return true;\n }\n\n if (\n config &&\n config.details &&\n config?.details[attribute as MailgoDetail] === false\n ) {\n return false;\n }\n }\n\n return true;\n};\n\n// manage the language of mailgo\nconst mailgoSetLanguage = (): string => {\n let languageType = \"default lang\";\n\n // if a language is defined in configuration use it\n if (\n config?.lang &&\n (languages as MailgoLanguages).indexOf(config.lang) !== -1\n ) {\n lang = config.lang;\n languageType = \"config lang\";\n } else {\n // else if is defined use it!\n // keep the lang from html\n let htmlLang: string = document.documentElement.lang;\n\n // find the correct language using the lang attribute, not just a === because there a are cases like fr-FR or fr_FR in html lang attribute\n (languages as MailgoLanguages).forEach((language: any) => {\n if (new RegExp(\"^\" + language, \"gi\").test(htmlLang)) {\n lang = language;\n languageType = \"html lang\";\n }\n });\n }\n\n // strings\n strings = (translations as MailgoTranslations)[lang];\n\n return languageType;\n};\n\nconst mailgoStyle = (): void => {\n if (!document.getElementById(\"mailgo-style\")) {\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\n// mailgo\nfunction mailgo(mailgoConfig?: MailgoConfig): boolean {\n try {\n // polyfill mailgo\n // mailgoPolyfill();\n\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 (typeof window !== \"undefined\") {\n // if is set in config use it (load the mailgo CSS)\n if (typeof config?.loadCSS !== \"undefined\") {\n loadCSSConfig = config.loadCSS;\n }\n\n // if is set in config use it (enable mailto)\n if (typeof config?.mailto !== \"undefined\") {\n mailtoEnabled = config.mailto;\n }\n\n // if is set in config use it (enable tel)\n if (typeof config?.tel !== \"undefined\") {\n telEnabled = config.tel;\n }\n\n // if is set in config use it (enable sms)\n if (typeof config?.sms !== \"undefined\") {\n smsEnabled = config.sms;\n }\n\n // if load css enabled load it!\n if (loadCSSConfig) {\n // add the style for mailgo\n mailgoStyle();\n }\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 mailgoInit,\n config.listenerOptions\n );\n } else {\n // no listener options\n document.addEventListener(config.initEvent, mailgoInit);\n }\n } else {\n mailgoInit();\n }\n\n return true;\n }\n } catch (error) {\n console.log(error);\n }\n return false;\n}\n\n// define the methods also for window element\nif (typeof window !== \"undefined\") {\n (window as any).getMailgoTypeByElement = getMailgoTypeByElement;\n (window as any).mailgoClickListener = mailgoClickListener;\n (window as any).mailgoCheckRender = mailgoClickListener; // for compatibility with old version of mailgo\n (window as any).mailgoPreRender = mailgoPreRender;\n (window as any).mailgoDirectRender = mailgoDirectRender;\n (window as any).mailgoRender = mailgoRender;\n (window as any).mailgo = mailgo;\n}\n\nexport {\n getMailgoTypeByElement,\n mailgoClickListener,\n mailgoPreRender,\n mailgoDirectRender,\n mailgoRender,\n};\n\nexport default mailgo;\n","export const userAgent = () => {\n if (\n /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(\n navigator.userAgent\n )\n ) {\n return \"mobile\";\n }\n return \"desktop\";\n};\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","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tif(__webpack_module_cache__[moduleId]) {\n\t\treturn __webpack_module_cache__[moduleId].exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// module exports must be returned from runtime so entry inlining is disabled\n// startup\n// Load entry module and return exports\nreturn __webpack_require__(907);\n","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack://mailgo/../src/mailgo.scss","webpack://mailgo/../node_modules/css-loader/dist/runtime/api.js","webpack://mailgo/../src/mailgo.scss?81f2","webpack://mailgo/../src/constants.ts","webpack://mailgo/../src/utils.ts","webpack://mailgo/../src/mailgo.ts","webpack://mailgo/../src/mobile-detect.ts","webpack://mailgo/./mailgo.dist.dark.ts","webpack://mailgo/webpack/bootstrap","webpack://mailgo/webpack/runtime/make namespace object","webpack://mailgo/webpack/startup"],"names":["___CSS_LOADER_EXPORT___","___CSS_LOADER_API_IMPORT___","i","push","module","id","exports","cssWithMappingToString","list","toString","this","map","item","content","concat","join","modules","mediaQuery","dedupe","alreadyImportedModules","length","_i","result","MAILTO","MAILGO","TEL","CALLTO","SMS","MAILGO_MAIL","MAILGO_TEL","MAILGO_SMS","CLASSIC","LESS_SPAM","spanHTMLTag","aHTMLTag","pHTMLTag","notNumber","RegExp","leadingZeros","validateEmail","email","test","validateEmails","arr","every","copyToClipboard","str","el","document","createElement","value","setAttribute","style","position","left","body","appendChild","selected","getSelection","rangeCount","getRangeAt","select","execCommand","removeChild","removeAllRanges","addRange","setFocusLoop","ref","modal","querySelector","addEventListener","leaveLastLink","leaveFirstLink","e","code","shiftKey","preventDefault","target","closest","focus","strings","config","activeMailgoType","modalMailto","modalTel","url","href","lessSpamHref","mail","cc","bcc","subject","bodyMail","tel","msg","telegramUsername","skypeUsername","title","titleTel","detailCc","detailBcc","detailSubject","detailBody","detailMsg","ccValue","bccValue","subjectValue","bodyValue","msgValue","activatedLink","gmail","outlook","yahoo","open","telegram","wa","skype","call","copyMail","copyTel","mailgoCSS","require","lang","defaultStrings","translations","isMobile","mailtoEnabled","telEnabled","smsEnabled","desktopEnabled","mobileEnabled","validateEmailConfig","validateTelConfig","showFooterConfig","loadCSSConfig","mailgoInit","navigator","userAgent","desktop","mobile","mailgoSetLanguage","mailgoExists","getElementById","display","classList","add","dark","enableDarkMode","disableDarkMode","modalBackground","className","modalContent","details","ccSpan","createTextNode","cc_","bccSpan","bcc_","subjectSpan","subject_","bodySpan","body_","open_in_","gmailSpan","mailgoConfigAttributeEnabled","outlookSpan","yahooSpan","openSpan","_default","copy","showFooter","byElement","hideMailgo","mailgoTelExists","detailsTel","msgSpan","telegramSpan","waSpan","whatsapp","skypeSpan","callSpan","_as_default","mailgoClickListener","event","contains","mailgoIsShowing","path","composedPath","forEach","element","HTMLDocument","Window","localMailgoType","getMailgoTypeByElement","activeMailgoModalType","type","mailgoPreRender","mailgoElementOrUrl","mailgoElement","installation","getAttribute","validateUrl","decodeURIComponent","split","trim","urlParams","URL","searchParams","get","error","console","log","encodeURIComponent","parameters","buildLessSpamHref","validateTel","hasAttribute","mailgoRender","textContent","openGmail","openOutlook","openYahooMail","openDefault","openWhatsApp","openTelegram","openSkype","showMailgo","mailgoKeydown","urlString","gmailUrl","window","startingOutlookUrl","office365","outlookUrl","yahooUrl","tgUrl","skypeUrl","whatappTel","replace","waUrl","location","activeCopy","copied","setTimeout","regexValidate","elementHref","keyboardEvent","keyCode","setModalDisplay","removeEventListener","getModalDisplay","by","rel","getModalHTMLElement","activeElement","remove","tagName","parentElement","joinedParams","attribute","actions","languageType","languages","htmlLang","documentElement","language","mailgo","mailgoConfig","loadCSS","mailto","sms","mailgoCSSElement","head","mailgoStyle","initEvent","listenerOptions","mailgoCheckRender","mailgoDirectRender","directUrl","__webpack_module_cache__","__webpack_require__","moduleId","__webpack_modules__","r","Symbol","toStringTag","Object","defineProperty","__webpack_exports__"],"mappings":"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","file":"mailgo.dark.min.js","sourcesContent":["// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../node_modules/css-loader/dist/runtime/api.js\");\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(function(i){return i[1]});\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:.8}.m-modal .m-modal-content{position:relative;z-index:10002;box-sizing:content-box;text-align:center;overflow:hidden;min-width:200px;max-width:240px;background-color:#fff;opacity:.95;border-radius:20px;box-shadow:0 3px 20px rgba(32,35,42,.5);border:3px solid #333;color:#4a4a4a;display:flex;flex-direction:column;overflow:auto;padding:24px;transition:.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:pre-line;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{white-space:pre-line;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(192,55,42,.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(9,103,170,.08);color:#0967aa}.m-modal .m-modal-content a.m-yahoo{color:#4a00a0}.m-modal .m-modal-content a.m-yahoo:hover,.m-modal .m-modal-content a.m-yahoo:focus,.m-modal .m-modal-content a.m-yahoo:active{background-color:rgba(74,0,160,.08);color:#4a00a0}.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(8,109,160,.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(6,116,102,.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(7,109,146,.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,.08);color:#4a4a4a}.m-modal .m-modal-content a.m-by{font-size:12px;margin-top:.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,.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(224,125,115,.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(76,156,215,.08);color:#4c9cd7}.m-modal.m-dark .m-modal-content a.m-yahoo{color:#ac88d3}.m-modal.m-dark .m-modal-content a.m-yahoo:hover,.m-modal.m-dark .m-modal-content a.m-yahoo:focus,.m-modal.m-dark .m-modal-content a.m-yahoo:active{background-color:rgba(172,136,211,.08);color:#ac88d3}.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(76,171,219,.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(76,210,192,.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(76,199,244,.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// 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 (cssWithMappingToString) {\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);\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 var result = require(\"!!../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].use[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 ","import { MailgoModalType, MailgoInstallationType } from \"mailgo\";\n\n// links\nexport const MAILTO: string = \"mailto:\";\nexport const MAILGO: string = \"mailgo:\";\nexport const TEL: string = \"tel:\";\nexport const CALLTO: string = \"callto:\";\nexport const SMS: string = \"sms:\";\n\n// deep linking\nexport const outlookDeepLink: string = \"ms-outlook://\";\n\n// no mailgo class\nexport const NO_MAILGO: string = \"no-mailgo\";\n\n// responsive settings\nexport const DESKTOP: string = \"desktop\";\nexport const MOBILE: string = \"mobile\";\n\n// mailgo modal types\nexport const MAILGO_MAIL: MailgoModalType = \"mailgo\";\nexport const MAILGO_TEL: MailgoModalType = \"mailgo-tel\";\nexport const MAILGO_SMS: MailgoModalType = \"mailgo-sms\";\n\n// mailgo installation types\nexport const CLASSIC: MailgoInstallationType = \"classic\";\nexport const LESS_SPAM: MailgoInstallationType = \"less-spam\";\n\n// useful html tags\nexport const spanHTMLTag: string = \"span\";\nexport const aHTMLTag: string = \"a\";\nexport const pHTMLTag: string = \"p\";\n\n// default lang\nexport const defaultLang: string = \"en\";\n\n// useful regexp\nexport const notNumber: RegExp = new RegExp(\"[^0-9/]\", \"gi\");\nexport const leadingZeros: RegExp = new RegExp(\"^0+\", \"gi\");\n","// validate a single email with regex\nexport const 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\nexport const validateEmails = (arr: string[]): boolean =>\n arr.every(validateEmail);\n\n// validate a single tel with regex\nexport const validateTel = (tel: string): boolean =>\n /^[+]{0,1}[\\s0-9]*[(]{0,1}[0-9]{1,4}[)]{0,1}[-\\s\\./0-9]*[p]{0,1}[\\s0-9]*$/.test(\n tel\n );\n\n// copy of a string\nexport const copyToClipboard = (str: string): boolean => {\n let el: HTMLTextAreaElement = document.createElement(\n \"textarea\"\n ) as HTMLTextAreaElement;\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\n// set focus loop within modal\nexport const 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\nexport const 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\nexport const 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","import {\n MailgoConfig,\n MailgoTranslations,\n MailgoTranslation,\n MailgoAction,\n MailgoLanguages,\n MailgoType,\n MailgoDetail,\n MailgoInstallationType,\n MailgoModalType,\n} from \"mailgo\";\n\n// polyfill\n// import { mailgoPolyfill } from \"./polyfill\";\n\n// constants\nimport {\n MAILTO,\n MAILGO,\n TEL,\n CALLTO,\n SMS,\n MAILGO_MAIL,\n MAILGO_TEL,\n MAILGO_SMS,\n CLASSIC,\n LESS_SPAM,\n NO_MAILGO,\n MOBILE,\n spanHTMLTag,\n aHTMLTag,\n pHTMLTag,\n defaultLang,\n notNumber,\n leadingZeros,\n} from \"./constants\";\n\n// utils\nimport {\n validateEmails,\n validateTel,\n copyToClipboard,\n setFocusLoop,\n} from \"./utils\";\n\n// i18n for mailgo\nimport languages from \"../i18n/languages.json\";\nimport translations from \"../i18n/translations.json\";\n\n// mobile detect\nimport { userAgent } from \"./mobile-detect\";\n\n// mailgo scss, with toString (https://github.com/webpack-contrib/css-loader#tostring)\nconst mailgoCSS: string = require(\"./mailgo.scss\").toString();\n\n// default language\nlet lang: string = defaultLang;\n\n// default strings\nconst defaultStrings: MailgoTranslation = (translations as MailgoTranslations)[\n defaultLang\n];\n\n// translation strings\nlet strings: MailgoTranslation;\n\n// global mailgo config object\nlet config: MailgoConfig;\n\n// config to check if the client is mobile or desktop\nlet isMobile: boolean = false;\n\n// default config attributes\nlet mailtoEnabled: boolean = true;\nlet telEnabled: boolean = true;\nlet smsEnabled: boolean = false;\nlet desktopEnabled: boolean = true;\nlet mobileEnabled: boolean = true;\nlet validateEmailConfig: boolean = true;\nlet validateTelConfig: boolean = true;\nlet showFooterConfig: boolean = true;\nlet loadCSSConfig: boolean = true;\n\n// activeMailgoType\nlet activeMailgoType: MailgoType;\n\n// modals global object\nlet modalMailto: HTMLElement, modalTel: HTMLElement;\n\n// mailgo general variables\nlet url: URL, href: string, lessSpamHref: string;\n\n// mailgo mail variables\nlet mail: string, cc: string, bcc: string, subject: string, bodyMail: string;\n\n// mailgo tel variables\nlet tel: string, msg: string, telegramUsername: string, 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 detailMsg: HTMLElement,\n ccValue: HTMLElement,\n bccValue: HTMLElement,\n subjectValue: HTMLElement,\n bodyValue: HTMLElement,\n msgValue: HTMLElement,\n activatedLink: HTMLElement;\n\n// mailgo buttons (actions)\nlet gmail: HTMLLinkElement,\n outlook: HTMLLinkElement,\n yahoo: 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 // set the boolean for mobile/desktop\n isMobile = userAgent() === MOBILE;\n\n // responsive settings\n {\n if (typeof config?.desktop !== \"undefined\") {\n desktopEnabled = config.desktop;\n // if it is a desktop and desktop is not enabled no init mailgo\n if (!isMobile && !desktopEnabled) {\n return;\n }\n }\n if (typeof config?.mobile !== \"undefined\") {\n mobileEnabled = config.mobile;\n // if it is a mobile and mobile is not enabled no init mailgo\n if (isMobile && !mobileEnabled) {\n return;\n }\n }\n }\n\n // set the mailgo language\n mailgoSetLanguage();\n\n // mailgo, if mailgo not already exists\n let mailgoExists = !!document.getElementById(MAILGO_MAIL);\n\n // if mailgo is enabled for mailto and it not exists in DOM\n if (mailtoEnabled && !mailgoExists) {\n // modal\n modalMailto = createElement() as HTMLElement;\n modalMailto.style.display = \"none\";\n modalMailto.id = MAILGO_MAIL;\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();\n } else {\n disableDarkMode();\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 = \"#mailgo-gmail\";\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 if (mailgoConfigAttributeEnabled(\"action\", \"gmail\")) {\n modalContent.appendChild(gmail);\n }\n\n // Outlook\n outlook = createElement(aHTMLTag) as HTMLLinkElement;\n outlook.id = \"m-outlook\";\n outlook.href = \"#mailgo-outlook\";\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 if (mailgoConfigAttributeEnabled(\"action\", \"outlook\")) {\n modalContent.appendChild(outlook);\n }\n\n // Outlook\n yahoo = createElement(aHTMLTag) as HTMLLinkElement;\n yahoo.id = \"m-yahoo\";\n yahoo.href = \"#mailgo-yahoo\";\n yahoo.classList.add(\"m-open\");\n yahoo.classList.add(\"m-yahoo\");\n yahoo.appendChild(\n createTextNode(strings.open_in_ || defaultStrings.open_in_)\n );\n let yahooSpan: HTMLElement = createElement(spanHTMLTag);\n yahooSpan.className = \"w-500\";\n yahooSpan.appendChild(\n createTextNode(strings.yahoo || defaultStrings.yahoo)\n );\n yahoo.appendChild(yahooSpan);\n\n if (mailgoConfigAttributeEnabled(\"action\", \"yahoo\")) {\n modalContent.appendChild(yahoo);\n }\n\n // open default\n open = createElement(aHTMLTag) as HTMLLinkElement;\n open.id = \"m-open\";\n open.href = \"#mailgo-open\";\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 = \"#mailgo-copy\";\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 (typeof config?.showFooter !== \"undefined\") {\n showFooterConfig = config.showFooter;\n }\n\n if (showFooterConfig) {\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 mailgo is enabled for tel/callto and it not exists in DOM\n if (telEnabled && !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();\n } else {\n disableDarkMode();\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 // details\n let detailsTel: HTMLElement = createElement();\n detailsTel.id = \"m-tel-details\";\n detailsTel.className = \"m-details\";\n\n detailMsg = createElement(pHTMLTag);\n detailMsg.id = \"m-msg\";\n let msgSpan: HTMLElement = createElement(spanHTMLTag);\n msgSpan.className = \"w-500\";\n msgSpan.appendChild(createTextNode(strings.body_ || defaultStrings.body_));\n msgValue = createElement(spanHTMLTag);\n msgValue.id = \"m-msg-value\";\n detailMsg.appendChild(msgSpan);\n detailMsg.appendChild(msgValue);\n detailsTel.appendChild(detailMsg);\n\n modalContent.appendChild(detailsTel);\n\n // Telegram\n telegram = createElement(aHTMLTag) as HTMLLinkElement;\n telegram.id = \"m-tg\";\n telegram.href = \"#mailgo-telegram\";\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 if (mailgoConfigAttributeEnabled(\"action\", \"telegram\")) {\n modalContent.appendChild(telegram);\n }\n\n // WhatsApp\n wa = createElement(aHTMLTag) as HTMLLinkElement;\n wa.id = \"m-wa\";\n wa.href = \"#mailgo-whatsapp\";\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 if (mailgoConfigAttributeEnabled(\"action\", \"whatsapp\")) {\n modalContent.appendChild(wa);\n }\n\n // Skype\n skype = createElement(aHTMLTag) as HTMLLinkElement;\n skype.id = \"m-skype\";\n skype.href = \"#mailgo-skype\";\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 if (mailgoConfigAttributeEnabled(\"action\", \"skype\")) {\n modalContent.appendChild(skype);\n }\n\n // call default\n call = createElement(aHTMLTag) as HTMLLinkElement;\n call.id = \"m-call\";\n call.href = \"#mailgo-open\";\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 = \"#mailgo-copy\";\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 (typeof config?.showFooter !== \"undefined\") {\n showFooterConfig = config.showFooter;\n }\n\n if (showFooterConfig) {\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\", mailgoClickListener);\n};\n\n/**\n * mailgoClickListener\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 * or\n * document.querySelectorAll(\n * 'a[href^=\"sms:\" i]:not(.no-mailgo), a[href=\"#mailgo\"], a.mailgo'\n * );\n */\nfunction mailgoClickListener(event: Event): boolean {\n // check if the mailgo HTML exists in the body\n if (\n !document.body.contains(modalMailto) &&\n !document.body.contains(modalTel)\n ) {\n return false;\n }\n\n // if a mailgo is already showing do nothing\n if (mailgoIsShowing()) {\n return false;\n }\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\n // go here only if one of the mailgo modals are enabled\n if (mailtoEnabled || telEnabled || smsEnabled) {\n let localMailgoType = getMailgoTypeByElement(element);\n\n // go on if the localMailgoType is not null\n if (localMailgoType) {\n // set the active mailgo type\n activeMailgoType = localMailgoType;\n\n let activeMailgoModalType = activeMailgoType?.type;\n\n if (activeMailgoModalType) {\n // check if the setting is enabled and if so go with pre-render\n if (\n (mailtoEnabled && activeMailgoModalType === MAILGO_MAIL) ||\n (telEnabled && activeMailgoModalType === MAILGO_TEL) ||\n (smsEnabled && activeMailgoModalType === MAILGO_SMS)\n ) {\n // stop the normal execution of the element click\n event.preventDefault();\n\n // render mailgo\n mailgoPreRender(element as HTMLLinkElement);\n\n return true;\n }\n }\n }\n }\n });\n }\n\n return false;\n}\n\n/**\n * mailgoPreRender\n * function to pre-render a mailgo, it helps populating elements needed by modal\n */\nfunction mailgoPreRender(\n mailgoElementOrUrl: HTMLLinkElement | string\n): boolean {\n let mailgoElement: HTMLLinkElement;\n\n // get the type and installation from current mailgo type\n let type: MailgoModalType = activeMailgoType?.type;\n let installation: MailgoInstallationType = activeMailgoType?.installation;\n\n // if type is not defined return\n if (!type) return false;\n\n if (typeof mailgoElementOrUrl === \"string\") {\n // if the parameter is a string it is the url\n href = mailgoElementOrUrl as string;\n } else {\n // if the paramenter is an HTMLLinkElement get the href attribute and the element\n href = mailgoElementOrUrl.getAttribute(\"href\") as string;\n mailgoElement = mailgoElementOrUrl as HTMLLinkElement;\n }\n\n // mailgo mail\n if (type === MAILGO_MAIL) {\n // if the installation is classic\n if (installation === CLASSIC) {\n if (validateUrl(href, MAILTO)) {\n mail = decodeURIComponent(href.split(\"?\")[0].split(MAILTO)[1].trim());\n } else if (validateUrl(href, MAILGO)) {\n mail = decodeURIComponent(href.split(\"?\")[0].split(MAILGO)[1].trim());\n }\n\n try {\n url = new URL(href);\n\n let urlParams: URLSearchParams = url.searchParams;\n // optional parameters for the email\n cc = urlParams.get(\"cc\");\n bcc = urlParams.get(\"bcc\");\n subject = urlParams.get(\"subject\");\n bodyMail = urlParams.get(\"body\");\n } catch (error) {\n console.log(error);\n }\n } else if (installation === LESS_SPAM) {\n // if the installation is less-spam\n // mail = data-address + @ + data-domain\n mail =\n mailgoElement.getAttribute(\"data-address\") &&\n mailgoElement.getAttribute(\"data-domain\")\n ? mailgoElement.getAttribute(\"data-address\") +\n \"@\" +\n mailgoElement.getAttribute(\"data-domain\")\n : null;\n\n try {\n url = new URL(MAILTO + encodeURIComponent(mail));\n } catch (error) {\n console.log(error);\n }\n\n let parameters: string[] = [];\n\n // cc = data-cc-address + @ + data-cc-domain\n cc = mailgoElement.getAttribute(\"data-cc-address\")\n ? mailgoElement.getAttribute(\"data-cc-address\") +\n \"@\" +\n mailgoElement.getAttribute(\"data-cc-domain\")\n : null;\n\n // if cc is defined add it to parameters\n if (cc) parameters.push(\"cc=\" + cc);\n\n // bcc = data-bcc-address + @ + data-bcc-domain\n bcc = mailgoElement.getAttribute(\"data-bcc-address\")\n ? mailgoElement.getAttribute(\"data-bcc-address\") +\n \"@\" +\n mailgoElement.getAttribute(\"data-bcc-domain\")\n : null;\n\n // if bcc is defined add it to parameters\n if (bcc) parameters.push(\"bcc=\" + bcc);\n\n // subject = data-subject\n subject = mailgoElement.getAttribute(\"data-subject\");\n\n // if subject is defined add it to parameters\n if (subject) parameters.push(\"subject=\" + subject);\n\n // body = data-body\n bodyMail = mailgoElement.getAttribute(\"data-body\");\n\n // if body is defined add it to parameters\n if (bodyMail) parameters.push(\"body=\" + bodyMail);\n\n // set the lessSpamHref\n lessSpamHref = buildLessSpamHref(\n MAILTO + encodeURIComponent(mail),\n parameters\n );\n }\n\n // if is in config use it\n if (typeof config?.validateEmail !== \"undefined\") {\n validateEmailConfig = config.validateEmail;\n }\n\n if (validateEmailConfig) {\n // validate the email address\n if (!validateEmails(mail.split(\",\"))) {\n return false;\n }\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 // mailgo tel\n else if (type === MAILGO_TEL) {\n if (installation === CLASSIC) {\n if (validateUrl(href, TEL)) {\n tel = decodeURIComponent(href.split(\"?\")[0].split(TEL)[1].trim());\n } else if (validateUrl(href, CALLTO)) {\n tel = decodeURIComponent(href.split(\"?\")[0].split(CALLTO)[1].trim());\n } else if (validateUrl(href, SMS)) {\n tel = decodeURIComponent(href.split(\"?\")[0].split(SMS)[1].trim());\n }\n\n try {\n url = new URL(href);\n let urlParams: URLSearchParams = url.searchParams;\n\n // optional parameters for the phone number\n msg = urlParams.get(\"body\");\n } catch (error) {\n console.log(error);\n }\n } else if (installation == LESS_SPAM) {\n tel = mailgoElement.getAttribute(\"data-tel\");\n msg = mailgoElement.getAttribute(\"data-msg\");\n\n try {\n url = new URL(TEL + encodeURIComponent(tel));\n } catch (error) {\n console.log(error);\n }\n\n let parameters: string[] = [];\n\n // if msg is defined add it to parameters\n if (msg) parameters.push(\"body=\" + msg);\n\n // set the lessSpamHref\n lessSpamHref = buildLessSpamHref(\n TEL + encodeURIComponent(tel),\n parameters\n );\n }\n\n // if is in config use it\n if (typeof config?.validateTel !== \"undefined\") {\n validateTelConfig = config.validateTel;\n }\n\n // validate the phone number\n if (validateTelConfig) {\n if (!validateTel(tel)) return;\n }\n\n // Telegram username\n if (mailgoElement && mailgoElement.hasAttribute(\"data-telegram\")) {\n telegramUsername = mailgoElement.getAttribute(\"data-telegram\");\n } else {\n telegramUsername = null;\n }\n\n // Telegram username\n if (mailgoElement && mailgoElement.hasAttribute(\"data-skype\")) {\n skypeUsername = mailgoElement.getAttribute(\"data-skype\");\n } else {\n skypeUsername = null;\n }\n }\n\n // if dark is in config or contained in the element\n if (config?.dark || mailgoElement.classList.contains(\"dark\")) {\n enableDarkMode();\n } else {\n disableDarkMode();\n }\n\n // render mailgo\n mailgoRender();\n\n return true;\n}\n\n/**\n * mailgoDirectRender\n * function to render a mailgo directly from a URL\n */\nfunction mailgoDirectRender(directUrl: string): boolean {\n // start mailgo\n mailgo();\n\n if (validateUrl(directUrl, MAILTO) || validateUrl(directUrl, MAILGO)) {\n activeMailgoType = {\n type: MAILGO_MAIL,\n installation: CLASSIC,\n };\n mailgoPreRender(directUrl);\n return true;\n } else if (\n validateUrl(directUrl, TEL) ||\n validateUrl(directUrl, CALLTO) ||\n validateUrl(directUrl, SMS)\n ) {\n activeMailgoType = {\n type: MAILGO_TEL,\n installation: CLASSIC,\n };\n mailgoPreRender(directUrl);\n return true;\n }\n return false;\n}\n\n/**\n * mailgoRender\n * function to render a mailgo (mail or tel)\n */\nfunction mailgoRender(): boolean {\n // get the type from current mailgo type\n let type: MailgoModalType = activeMailgoType?.type;\n\n // if type is not defined return\n if (!type) return false;\n\n // mailgo mail\n if (type === MAILGO_MAIL) {\n // the title of the modal (email address)\n title.textContent = mail.split(\",\").join(\"\\n\");\n\n // add the details if provided\n if (mailgoConfigAttributeEnabled(\"detail\", \"cc\") && cc) {\n detailCc.style.display = \"block\";\n ccValue.textContent = cc.split(\",\").join(\"\\n\");\n } else {\n detailCc.style.display = \"none\";\n }\n\n if (mailgoConfigAttributeEnabled(\"detail\", \"bcc\") && bcc) {\n detailBcc.style.display = \"block\";\n bccValue.textContent = bcc.split(\",\").join(\"\\n\");\n } else {\n detailBcc.style.display = \"none\";\n }\n\n if (mailgoConfigAttributeEnabled(\"detail\", \"subject\") && subject) {\n detailSubject.style.display = \"block\";\n subjectValue.textContent = subject;\n } else {\n detailSubject.style.display = \"none\";\n }\n\n if (mailgoConfigAttributeEnabled(\"detail\", \"body\") && bodyMail) {\n detailBody.style.display = \"block\";\n bodyValue.textContent = bodyMail;\n } else {\n detailBody.style.display = \"none\";\n }\n\n // add the actions\n gmail.addEventListener(\"click\", openGmail);\n\n outlook.addEventListener(\"click\", openOutlook);\n\n yahoo.addEventListener(\"click\", openYahooMail);\n\n open.addEventListener(\"click\", openDefault);\n\n copyMail.addEventListener(\"click\", copy);\n }\n // mailgo tel\n else if (type === MAILGO_TEL) {\n // the title of the modal (tel)\n titleTel.textContent = tel;\n\n if (mailgoConfigAttributeEnabled(\"detail\", \"msg\") && msg) {\n detailMsg.style.display = \"block\";\n msgValue.textContent = msg;\n } else {\n detailMsg.style.display = \"none\";\n }\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\", openDefault);\n\n copyTel.addEventListener(\"click\", copy);\n }\n\n // show the mailgo\n showMailgo(type);\n\n // add listener keyDown\n document.addEventListener(\"keydown\", mailgoKeydown);\n\n return true;\n}\n\n// actions\nconst openGmail = (event?: Event): void => {\n event.preventDefault();\n\n let urlString: string;\n let installation: MailgoInstallationType = activeMailgoType?.installation;\n\n if (installation === CLASSIC) {\n try {\n urlString = url.toString();\n } catch (e) {\n urlString = href;\n }\n } else if (installation === LESS_SPAM) {\n urlString = lessSpamHref;\n }\n\n // Gmail url\n let gmailUrl: string =\n \"https://mail.google.com/mail/?extsrc=mailto&url=\" +\n encodeURIComponent(urlString);\n\n // open the link\n window.open(gmailUrl, \"_blank\", \"noopener, noreferrer\");\n\n // hide the modal\n hideMailgo();\n};\n\nconst openOutlook = (event?: Event): void => {\n event.preventDefault();\n\n // Outlook starting url\n let startingOutlookUrl: string =\n \"https://outlook.live.com/owa/?path=/mail/action/compose&to=\";\n\n // let the user to decide to open Office365 Outlook instead of the classic outlook.live.com\n if (config?.office365) {\n startingOutlookUrl =\n \"https://outlook.office365.com/owa/?path=/mail/action/compose&to=\";\n }\n\n // Outlook url\n let outlookUrl: string = startingOutlookUrl + encodeURIComponent(mail);\n\n // the details if provided\n if (subject) {\n outlookUrl = outlookUrl.concat(\"&subject=\" + encodeURIComponent(subject));\n }\n\n if (bodyMail) {\n outlookUrl = outlookUrl.concat(\"&body=\" + encodeURIComponent(bodyMail));\n }\n\n // open the link\n window.open(outlookUrl, \"_blank\", \"noopener, noreferrer\");\n\n // hide the modal\n hideMailgo();\n};\n\nconst openYahooMail = (event?: Event): void => {\n event.preventDefault();\n\n // Yahoo url\n let yahooUrl: string = \"https://compose.mail.yahoo.com/?to=\" + mail;\n\n // the details if provided\n if (subject) {\n yahooUrl = yahooUrl.concat(\"&subject=\" + encodeURIComponent(subject));\n }\n if (bodyMail) {\n yahooUrl = yahooUrl.concat(\"&body=\" + encodeURIComponent(bodyMail));\n }\n\n // open the link\n window.open(yahooUrl, \"_blank\", \"noopener, noreferrer\");\n\n // hide the modal\n hideMailgo();\n};\n\nconst openTelegram = (event?: Event): void => {\n event.preventDefault();\n\n // check if telegramUsername exists\n if (telegramUsername) {\n // Telegram url\n let tgUrl: string = \"https://t.me/\" + encodeURIComponent(telegramUsername);\n\n // open the url\n window.open(tgUrl, \"_blank\", \"noopener, noreferrer\");\n\n // hide the modal\n hideMailgo();\n }\n};\n\nconst openSkype = (event?: Event): void => {\n event.preventDefault();\n\n let skype: string = skypeUsername || tel;\n\n // Telegram url\n let skypeUrl: string = \"skype:\" + encodeURIComponent(skype);\n\n // open the url\n window.open(skypeUrl, \"_blank\", \"noopener, noreferrer\");\n\n // hide the modal\n hideMailgo();\n};\n\nconst openWhatsApp = (event?: Event): void => {\n event.preventDefault();\n\n // WhatsApp API doesn't work with non number digits and leading 0s: https://faq.whatsapp.com/general/chats/how-to-use-click-to-chat/\n let whatappTel = tel.replace(notNumber, \"\").replace(leadingZeros, \"\");\n\n // WhatsApp url\n let waUrl: string = \"https://wa.me/\" + encodeURIComponent(whatappTel);\n\n // the details if provided\n if (msg) {\n waUrl = waUrl.concat(\"?text=\" + encodeURIComponent(msg));\n }\n\n // open the url\n window.open(waUrl, \"_blank\", \"noopener, noreferrer\");\n\n // hide the modal\n hideMailgo();\n};\n\nconst openDefault = (event?: Event): void => {\n event.preventDefault();\n\n let installation: MailgoInstallationType = activeMailgoType?.installation;\n\n // if the installation is classic the browser can follow the default behaviour\n if (installation === CLASSIC) {\n window.location.href = href;\n } else if (installation === LESS_SPAM) {\n // if the installation is less-spam use the built less-spam href\n window.location.href = lessSpamHref;\n }\n\n hideMailgo();\n};\n\nconst copy = (event?: Event): void => {\n event.preventDefault();\n\n // the correct copyButton (mail or tel)\n if (mailgoIsShowing()) {\n let activeCopy: HTMLElement;\n\n let type: MailgoModalType = activeMailgoType?.type;\n\n if (type === MAILGO_MAIL) {\n // in case it is showing mail modal copy email address\n copyToClipboard(mail);\n activeCopy = copyMail;\n } else {\n // in case it is showing tel modal copy phone number\n copyToClipboard(tel);\n activeCopy = copyTel;\n }\n\n activeCopy.textContent = strings.copied || defaultStrings.copied;\n setTimeout(() => {\n activeCopy.textContent = strings.copy || defaultStrings.copy;\n // hide after the timeout\n hideMailgo();\n }, 999);\n }\n};\n\n// function to find if a link is a mailto, tel, callto or sms\nconst validateUrl = (url: string, type: string = MAILTO) => {\n let regexValidate = new RegExp(\"^\" + type + \"((.)+)\", \"gi\");\n return regexValidate.test(url);\n};\n\n// function that returns if an element is a mailgo\nfunction getMailgoTypeByElement(element: HTMLElement): MailgoType | null {\n let elementHref: string = (element as HTMLLinkElement).getAttribute(\"href\");\n\n // return null if there is no-mailgo in class\n if (element.classList?.contains(NO_MAILGO)) {\n return null;\n }\n\n // the case of classic type of mailgo, like a href=mailto:... or a href=tel:... and the class=mailgo with a useful href\n if (elementHref || element.classList?.contains(\"mailgo\")) {\n if (validateUrl(elementHref, MAILTO) || validateUrl(elementHref, MAILGO)) {\n // a mailto: or mailgo:\n return {\n type: MAILGO_MAIL,\n installation: CLASSIC,\n };\n } else if (\n validateUrl(elementHref, TEL) ||\n validateUrl(elementHref, CALLTO)\n ) {\n // a tel: or callto:\n return {\n type: MAILGO_TEL,\n installation: CLASSIC,\n };\n } else if (validateUrl(elementHref, SMS)) {\n // a sms:\n return {\n type: MAILGO_SMS,\n installation: CLASSIC,\n };\n }\n }\n\n if (elementHref === \"#mailgo\" || element.classList?.contains(\"mailgo\")) {\n // less-spam installation of mailgo, check to the attributes\n if (\n element.hasAttribute(\"data-address\") &&\n element.hasAttribute(\"data-domain\")\n ) {\n // less-spam mailto with data-address and data-domain\n return {\n type: MAILGO_MAIL,\n installation: LESS_SPAM,\n };\n } else if (element.hasAttribute(\"data-tel\")) {\n // less-spam tel with data-tel\n return {\n type: MAILGO_TEL,\n installation: LESS_SPAM,\n };\n } else if (element.hasAttribute(\"data-msg\")) {\n // less-spam sms with data-msd\n return {\n type: MAILGO_SMS,\n installation: LESS_SPAM,\n };\n }\n }\n\n return null;\n}\n\n/**\n * mailgoKeydown\n * function to manage the keydown event when the modal is showing, return a boolean that represents if a useful key has been pressed\n */\nconst mailgoKeydown = (keyboardEvent: KeyboardEvent): boolean => {\n // if mailgo is showing\n if (mailgoIsShowing()) {\n let type: MailgoModalType = activeMailgoType?.type;\n\n if (type === MAILGO_MAIL) {\n switch (keyboardEvent.keyCode) {\n case 27:\n // Escape\n hideMailgo();\n return true;\n case 71:\n // g -> open GMail\n openGmail();\n return true;\n case 79:\n // o -> open Outlook\n openOutlook();\n return true;\n case 89:\n // y -> open Yahoo Mail\n openYahooMail();\n return true;\n case 32:\n case 13:\n // spacebar or enter -> open default\n openDefault();\n return true;\n case 67:\n // c -> copy\n copy();\n return true;\n default:\n return false;\n }\n } else if (type === MAILGO_TEL) {\n switch (keyboardEvent.keyCode) {\n case 27:\n // Escape\n hideMailgo();\n return true;\n case 84:\n // t -> open Telegram\n openTelegram();\n return true;\n case 87:\n // w -> open WhatsApp\n openWhatsApp();\n return true;\n case 83:\n // s -> open Skype\n openSkype();\n return true;\n case 32:\n case 13:\n // spacebar or enter -> open default\n openDefault();\n return true;\n case 67:\n // c -> copy\n copy();\n return true;\n default:\n return false;\n }\n }\n }\n return false;\n};\n\n// show the modal\nconst showMailgo = (type: MailgoModalType): 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(MAILGO_MAIL, \"none\");\n setModalDisplay(MAILGO_TEL, \"none\");\n\n // remove listener keyDown\n document.removeEventListener(\"keydown\", mailgoKeydown);\n};\n\n// is the mailgo modal hidden?\nconst mailgoIsShowing = (): boolean => {\n return (\n (mailtoEnabled && getModalDisplay(MAILGO_MAIL) === \"flex\") ||\n ((telEnabled || smsEnabled) && getModalDisplay(MAILGO_TEL) === \"flex\")\n );\n};\n\nconst byElement = (): HTMLLinkElement => {\n // by element in the footer\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// get the correct HTMLElement from a type\nconst getModalHTMLElement = (type: MailgoModalType = MAILGO_MAIL) => {\n if (type === MAILGO_TEL) {\n return modalTel;\n } else {\n return modalMailto;\n }\n};\n\n// get display value\nconst getModalDisplay = (ref: MailgoModalType = MAILGO_MAIL): string =>\n getModalHTMLElement(ref).style.display;\n\n// set display value\nconst setModalDisplay = (\n ref: MailgoModalType = MAILGO_MAIL,\n value: string\n): void => {\n let modal = getModalHTMLElement(ref);\n\n if (modal) {\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\n// enable dark mode\nconst enableDarkMode = () => {\n // get the type from current mailgo type\n let type: MailgoModalType = activeMailgoType?.type;\n if (type) {\n getModalHTMLElement(type).classList.add(\"m-dark\");\n }\n};\n\n// disable dark mode\nconst disableDarkMode = () => {\n // get the type from current mailgo type\n let type: MailgoModalType = activeMailgoType?.type;\n if (type) {\n getModalHTMLElement(type).classList.remove(\"m-dark\");\n }\n};\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// function to recreate a mailto: or tel: href from less-spam\nconst buildLessSpamHref = (type: string, parameters: string[]): string => {\n lessSpamHref = type;\n if (parameters && parameters.length > 0) {\n let joinedParams = parameters.join(\"&\");\n lessSpamHref = lessSpamHref.concat(\"?\" + joinedParams);\n }\n return lessSpamHref;\n};\n\n// function to check an attribute is enabled or not, by default considering it enabled\nconst mailgoConfigAttributeEnabled = (\n type: \"action\" | \"detail\",\n attribute: MailgoAction | MailgoDetail\n): boolean => {\n // by default all the actions and attribute are enabled\n if (!config) {\n return true;\n }\n\n // if the attribute type is action consider the actions config attribute\n if (type === \"action\") {\n if (config && !config?.actions) {\n return true;\n }\n\n if (\n config &&\n config.actions &&\n config?.actions[attribute as MailgoAction] === false\n ) {\n return false;\n }\n } else if (type === \"detail\") {\n // else consider the details attribute\n\n if (config && !config?.details) {\n return true;\n }\n\n if (\n config &&\n config.details &&\n config?.details[attribute as MailgoDetail] === false\n ) {\n return false;\n }\n }\n\n return true;\n};\n\n// manage the language of mailgo\nconst mailgoSetLanguage = (): string => {\n let languageType = \"default lang\";\n\n // if a language is defined in configuration use it\n if (\n config?.lang &&\n (languages as MailgoLanguages).indexOf(config.lang) !== -1\n ) {\n lang = config.lang;\n languageType = \"config lang\";\n } else {\n // else if is defined use it!\n // keep the lang from html\n let htmlLang: string = document.documentElement.lang;\n\n // find the correct language using the lang attribute, not just a === because there a are cases like fr-FR or fr_FR in html lang attribute\n (languages as MailgoLanguages).forEach((language: any) => {\n if (new RegExp(\"^\" + language, \"gi\").test(htmlLang)) {\n lang = language;\n languageType = \"html lang\";\n }\n });\n }\n\n // strings\n strings = (translations as MailgoTranslations)[lang];\n\n return languageType;\n};\n\nconst mailgoStyle = (): void => {\n if (!document.getElementById(\"mailgo-style\")) {\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\n// mailgo\nfunction mailgo(mailgoConfig?: MailgoConfig): boolean {\n try {\n // polyfill mailgo\n // mailgoPolyfill();\n\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 (typeof window !== \"undefined\") {\n // if is set in config use it (load the mailgo CSS)\n if (typeof config?.loadCSS !== \"undefined\") {\n loadCSSConfig = config.loadCSS;\n }\n\n // if is set in config use it (enable mailto)\n if (typeof config?.mailto !== \"undefined\") {\n mailtoEnabled = config.mailto;\n }\n\n // if is set in config use it (enable tel)\n if (typeof config?.tel !== \"undefined\") {\n telEnabled = config.tel;\n }\n\n // if is set in config use it (enable sms)\n if (typeof config?.sms !== \"undefined\") {\n smsEnabled = config.sms;\n }\n\n // if load css enabled load it!\n if (loadCSSConfig) {\n // add the style for mailgo\n mailgoStyle();\n }\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 mailgoInit,\n config.listenerOptions\n );\n } else {\n // no listener options\n document.addEventListener(config.initEvent, mailgoInit);\n }\n } else {\n mailgoInit();\n }\n\n return true;\n }\n } catch (error) {\n console.log(error);\n }\n return false;\n}\n\n// define the methods also for window element\nif (typeof window !== \"undefined\") {\n (window as any).getMailgoTypeByElement = getMailgoTypeByElement;\n (window as any).mailgoClickListener = mailgoClickListener;\n (window as any).mailgoCheckRender = mailgoClickListener; // for compatibility with old version of mailgo\n (window as any).mailgoPreRender = mailgoPreRender;\n (window as any).mailgoDirectRender = mailgoDirectRender;\n (window as any).mailgoRender = mailgoRender;\n (window as any).mailgo = mailgo;\n}\n\nexport {\n getMailgoTypeByElement,\n mailgoClickListener,\n mailgoPreRender,\n mailgoDirectRender,\n mailgoRender,\n};\n\nexport default mailgo;\n","export const userAgent = () => {\n if (\n /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(\n navigator.userAgent\n )\n ) {\n return \"mobile\";\n }\n return \"desktop\";\n};\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","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tif(__webpack_module_cache__[moduleId]) {\n\t\treturn __webpack_module_cache__[moduleId].exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","// startup\n// Load entry module and return exports\n// This entry module doesn't tell about it's top-level declarations so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(907);\n"],"sourceRoot":""} \ No newline at end of file diff --git a/dist/mailgo.js b/dist/mailgo.js index bad28f1..c7eaff8 100644 --- a/dist/mailgo.js +++ b/dist/mailgo.js @@ -1,4 +1,3 @@ -window.mailgo = /******/ (function() { // webpackBootstrap /******/ var __webpack_modules__ = ({ @@ -40,15 +39,15 @@ module.exports = function (cssWithMappingToString) { } return content; - }).join(''); + }).join(""); }; // import a list of modules into the list // eslint-disable-next-line func-names list.i = function (modules, mediaQuery, dedupe) { - if (typeof modules === 'string') { + if (typeof modules === "string") { // eslint-disable-next-line no-param-reassign - modules = [[null, modules, '']]; + modules = [[null, modules, ""]]; } var alreadyImportedModules = {}; @@ -196,9 +195,9 @@ var leaveFirstLink = function leaveFirstLink(e) { } }; ;// CONCATENATED MODULE: ../i18n/languages.json -var languages_namespaceObject = JSON.parse("[\"en\",\"it\",\"es\",\"de\",\"fr\",\"pt\",\"nl\",\"ru\",\"sv\",\"no\",\"dk\",\"is\",\"zh\",\"ja\"]"); +var languages_namespaceObject = JSON.parse('["en","it","es","de","fr","pt","nl","ru","sv","no","dk","is","zh","ja"]'); ;// CONCATENATED MODULE: ../i18n/translations.json -var translations_namespaceObject = JSON.parse("{\"en\":{\"open_in_\":\"open in \",\"cc_\":\"cc \",\"bcc_\":\"bcc \",\"subject_\":\"subject \",\"body_\":\"body \",\"gmail\":\"Gmail\",\"outlook\":\"Outlook\",\"yahoo\":\"Yahoo Mail\",\"telegram\":\"Telegram\",\"whatsapp\":\"WhatsApp\",\"skype\":\"Skype\",\"call\":\"call\",\"open\":\"open\",\"_default\":\" default\",\"_as_default\":\" as default\",\"copy\":\"copy\",\"copied\":\"copied\"},\"it\":{\"open_in_\":\"apri con \",\"bcc_\":\"ccn \",\"subject_\":\"oggetto \",\"body_\":\"testo \",\"call\":\"chiama\",\"open\":\"apri\",\"_default\":\" \",\"_as_default\":\" \",\"copy\":\"copia\",\"copied\":\"copiato\"},\"es\":{\"open_in_\":\"abrir con \",\"bcc_\":\"cco \",\"subject_\":\"asunto \",\"body_\":\"cuerpo \",\"call\":\"llamar\",\"open\":\"abrir\",\"_default\":\" predefinido\",\"_as_default\":\" por defecto\",\"copy\":\"copiar\",\"copied\":\"copiado\"},\"de\":{\"open_in_\":\"Öffnen in \",\"subject_\":\"Betreff \",\"body_\":\"Nachricht \",\"call\":\"Anrufen\",\"open\":\"Öffnen\",\"_default\":\" mit Standard\",\"_as_default\":\" mit Standard\",\"copy\":\"kopieren\",\"copied\":\"kopiert\"},\"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\",\"copied\":\"copiado\"},\"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\",\"copied\":\"copié\"},\"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\":\"скопировать\"},\"sv\":{\"open_in_\":\"öppna i \",\"subject_\":\"ämne \",\"body_\":\"meddelandetext \",\"call\":\"ring\",\"open\":\"öppna\",\"_default\":\" förval\",\"_as_default\":\" som förval\",\"copy\":\"kopiera\",\"copied\":\"kopierad\"},\"no\":{\"open_in_\":\"åpne i \",\"subject_\":\"emne \",\"call\":\"ringe\",\"open\":\"åpne\",\"_as_default\":\" som standard\",\"copy\":\"kopiere\",\"copied\":\"kopiert\"},\"dk\":{\"open_in_\":\"åpne i \",\"subject_\":\"emne \",\"call\":\"ringe op\",\"open\":\"åben\",\"_as_default\":\" som standard\",\"copy\":\"kopi\",\"copied\":\"kopieret\"},\"is\":{\"open_in_\":\"opið inn \",\"subject_\":\"viðfangsefni \",\"body_\":\"líkami \",\"call\":\"hringja\",\"open\":\"opið\",\"_default\":\" sjálfgefið\",\"_as_default\":\" sem sjálfgefið\",\"copy\":\"afrita\",\"copied\":\"afritað\"},\"zh\":{\"open_in_\":\"開啟 \",\"cc_\":\"副本 \",\"bcc_\":\"密件副本 \",\"subject_\":\"主旨 \",\"body_\":\"內文 \",\"call\":\"通話\",\"open\":\"開啟\",\"_default\":\" 預設\",\"_as_default\":\" 預設\",\"copy\":\"複製\",\"copied\":\"已複製\"},\"ja\":{\"open_in_\":\"開く \",\"subject_\":\"主題 \",\"body_\":\"本文 \",\"call\":\"通話 \",\"open\":\"開く \",\"_default\":\" 標準のアプリ\",\"_as_default\":\" 標準のアプリ\",\"copy\":\"リンクをコピー\",\"copied\":\"コピーしました\"}}"); +var translations_namespaceObject = JSON.parse('{"en":{"open_in_":"open in ","cc_":"cc ","bcc_":"bcc ","subject_":"subject ","body_":"body ","gmail":"Gmail","outlook":"Outlook","yahoo":"Yahoo Mail","telegram":"Telegram","whatsapp":"WhatsApp","skype":"Skype","call":"call","open":"open","_default":" default","_as_default":" as default","copy":"copy","copied":"copied"},"it":{"open_in_":"apri con ","bcc_":"ccn ","subject_":"oggetto ","body_":"testo ","call":"chiama","open":"apri","_default":" ","_as_default":" ","copy":"copia","copied":"copiato"},"es":{"open_in_":"abrir con ","bcc_":"cco ","subject_":"asunto ","body_":"cuerpo ","call":"llamar","open":"abrir","_default":" predefinido","_as_default":" por defecto","copy":"copiar","copied":"copiado"},"de":{"open_in_":"Öffnen in ","subject_":"Betreff ","body_":"Nachricht ","call":"Anrufen","open":"Öffnen","_default":" mit Standard","_as_default":" mit Standard","copy":"kopieren","copied":"kopiert"},"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","copied":"copiado"},"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","copied":"copié"},"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":"скопировать"},"sv":{"open_in_":"öppna i ","subject_":"ämne ","body_":"meddelandetext ","call":"ring","open":"öppna","_default":" förval","_as_default":" som förval","copy":"kopiera","copied":"kopierad"},"no":{"open_in_":"åpne i ","subject_":"emne ","call":"ringe","open":"åpne","_as_default":" som standard","copy":"kopiere","copied":"kopiert"},"dk":{"open_in_":"åpne i ","subject_":"emne ","call":"ringe op","open":"åben","_as_default":" som standard","copy":"kopi","copied":"kopieret"},"is":{"open_in_":"opið inn ","subject_":"viðfangsefni ","body_":"líkami ","call":"hringja","open":"opið","_default":" sjálfgefið","_as_default":" sem sjálfgefið","copy":"afrita","copied":"afritað"},"zh":{"open_in_":"開啟 ","cc_":"副本 ","bcc_":"密件副本 ","subject_":"主旨 ","body_":"內文 ","call":"通話","open":"開啟","_default":" 預設","_as_default":" 預設","copy":"複製","copied":"已複製"},"ja":{"open_in_":"開く ","subject_":"主題 ","body_":"本文 ","call":"通話 ","open":"開く ","_default":" 標準のアプリ","_as_default":" 標準のアプリ","copy":"リンクをコピー","copied":"コピーしました"}}'); ;// CONCATENATED MODULE: ../src/mobile-detect.ts var userAgent = function userAgent() { if (/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)) { @@ -1608,10 +1607,13 @@ src_mailgo(mailgoConfig); /******/ }(); /******/ /************************************************************************/ -/******/ // module exports must be returned from runtime so entry inlining is disabled +/******/ /******/ // startup /******/ // Load entry module and return exports -/******/ return __webpack_require__(474); +/******/ // This entry module doesn't tell about it's top-level declarations so it can't be inlined +/******/ var __webpack_exports__ = __webpack_require__(474); +/******/ window.mailgo = __webpack_exports__; +/******/ /******/ })() ; //# sourceMappingURL=mailgo.js.map \ No newline at end of file diff --git a/dist/mailgo.js.map b/dist/mailgo.js.map index b8da413..a98f131 100644 --- a/dist/mailgo.js.map +++ b/dist/mailgo.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack://mailgo/../src/mailgo.scss","webpack://mailgo/../node_modules/css-loader/dist/runtime/api.js","webpack://mailgo/../src/mailgo.scss?81f2","webpack://mailgo/../src/constants.ts","webpack://mailgo/../src/utils.ts","webpack://mailgo/../src/mobile-detect.ts","webpack://mailgo/../src/mailgo.ts","webpack://mailgo/./mailgo.dist.ts","webpack://mailgo/webpack/bootstrap","webpack://mailgo/webpack/runtime/make namespace object","webpack://mailgo/webpack/startup"],"names":["MAILTO","MAILGO","TEL","CALLTO","SMS","outlookDeepLink","NO_MAILGO","DESKTOP","MOBILE","MAILGO_MAIL","MAILGO_TEL","MAILGO_SMS","CLASSIC","LESS_SPAM","spanHTMLTag","aHTMLTag","pHTMLTag","defaultLang","notNumber","RegExp","leadingZeros","validateEmail","email","test","validateEmails","arr","every","validateTel","tel","copyToClipboard","str","el","document","createElement","value","setAttribute","style","position","left","body","appendChild","selected","getSelection","rangeCount","getRangeAt","select","execCommand","removeChild","removeAllRanges","addRange","setFocusLoop","ref","modal","querySelector","addEventListener","leaveLastLink","leaveFirstLink","e","code","shiftKey","preventDefault","target","closest","focus","userAgent","navigator","mailgoCSS","require","lang","defaultStrings","translations","strings","config","isMobile","mailtoEnabled","telEnabled","smsEnabled","desktopEnabled","mobileEnabled","validateEmailConfig","validateTelConfig","showFooterConfig","loadCSSConfig","activeMailgoType","modalMailto","modalTel","url","href","lessSpamHref","mail","cc","bcc","subject","bodyMail","msg","telegramUsername","skypeUsername","title","titleTel","detailCc","detailBcc","detailSubject","detailBody","detailMsg","ccValue","bccValue","subjectValue","bodyValue","msgValue","activatedLink","gmail","outlook","yahoo","open","telegram","wa","skype","call","copyMail","copyTel","mailgoInit","desktop","mobile","mailgoSetLanguage","mailgoExists","getElementById","display","id","classList","add","dark","enableDarkMode","disableDarkMode","modalBackground","className","modalContent","details","ccSpan","createTextNode","cc_","bccSpan","bcc_","subjectSpan","subject_","bodySpan","body_","open_in_","gmailSpan","mailgoConfigAttributeEnabled","outlookSpan","yahooSpan","openSpan","_default","copy","showFooter","byElement","hideMailgo","mailgoTelExists","detailsTel","msgSpan","telegramSpan","waSpan","whatsapp","skypeSpan","callSpan","_as_default","mailgoClickListener","event","contains","mailgoIsShowing","path","composedPath","forEach","element","HTMLDocument","Window","localMailgoType","getMailgoTypeByElement","activeMailgoModalType","type","mailgoPreRender","mailgoElementOrUrl","mailgoElement","installation","getAttribute","validateUrl","decodeURIComponent","split","trim","URL","urlParams","searchParams","get","error","console","log","encodeURIComponent","parameters","push","buildLessSpamHref","hasAttribute","mailgoRender","mailgoDirectRender","directUrl","mailgo","textContent","join","openGmail","openOutlook","openYahooMail","openDefault","openWhatsApp","openTelegram","openSkype","showMailgo","mailgoKeydown","urlString","toString","gmailUrl","window","startingOutlookUrl","office365","outlookUrl","concat","yahooUrl","tgUrl","skypeUrl","whatappTel","replace","waUrl","location","activeCopy","copied","setTimeout","regexValidate","elementHref","keyboardEvent","keyCode","setModalDisplay","removeEventListener","getModalDisplay","by","rel","getModalHTMLElement","activeElement","remove","tagName","parentElement","length","joinedParams","attribute","actions","languageType","languages","htmlLang","documentElement","language","mailgoStyle","mailgoCSSElement","head","mailgoConfig","loadCSS","mailto","sms","initEvent","listenerOptions","mailgoCheckRender"],"mappings":"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","file":"mailgo.js","sourcesContent":["// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../node_modules/css-loader/dist/runtime/api.js\");\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(function(i){return i[1]});\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:.8}.m-modal .m-modal-content{position:relative;z-index:10002;box-sizing:content-box;text-align:center;overflow:hidden;min-width:200px;max-width:240px;background-color:#fff;opacity:.95;border-radius:20px;box-shadow:0 3px 20px rgba(32,35,42,.5);border:3px solid #333;color:#4a4a4a;display:flex;flex-direction:column;overflow:auto;padding:24px;transition:.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:pre-line;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{white-space:pre-line;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(192,55,42,.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(9,103,170,.08);color:#0967aa}.m-modal .m-modal-content a.m-yahoo{color:#4a00a0}.m-modal .m-modal-content a.m-yahoo:hover,.m-modal .m-modal-content a.m-yahoo:focus,.m-modal .m-modal-content a.m-yahoo:active{background-color:rgba(74,0,160,.08);color:#4a00a0}.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(8,109,160,.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(6,116,102,.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(7,109,146,.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,.08);color:#4a4a4a}.m-modal .m-modal-content a.m-by{font-size:12px;margin-top:.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,.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(224,125,115,.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(76,156,215,.08);color:#4c9cd7}.m-modal.m-dark .m-modal-content a.m-yahoo{color:#ac88d3}.m-modal.m-dark .m-modal-content a.m-yahoo:hover,.m-modal.m-dark .m-modal-content a.m-yahoo:focus,.m-modal.m-dark .m-modal-content a.m-yahoo:active{background-color:rgba(172,136,211,.08);color:#ac88d3}.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(76,171,219,.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(76,210,192,.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(76,199,244,.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// 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 (cssWithMappingToString) {\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);\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 var result = require(\"!!../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].use[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 ","import { MailgoModalType, MailgoInstallationType } from \"mailgo\";\n\n// links\nexport const MAILTO: string = \"mailto:\";\nexport const MAILGO: string = \"mailgo:\";\nexport const TEL: string = \"tel:\";\nexport const CALLTO: string = \"callto:\";\nexport const SMS: string = \"sms:\";\n\n// deep linking\nexport const outlookDeepLink: string = \"ms-outlook://\";\n\n// no mailgo class\nexport const NO_MAILGO: string = \"no-mailgo\";\n\n// responsive settings\nexport const DESKTOP: string = \"desktop\";\nexport const MOBILE: string = \"mobile\";\n\n// mailgo modal types\nexport const MAILGO_MAIL: MailgoModalType = \"mailgo\";\nexport const MAILGO_TEL: MailgoModalType = \"mailgo-tel\";\nexport const MAILGO_SMS: MailgoModalType = \"mailgo-sms\";\n\n// mailgo installation types\nexport const CLASSIC: MailgoInstallationType = \"classic\";\nexport const LESS_SPAM: MailgoInstallationType = \"less-spam\";\n\n// useful html tags\nexport const spanHTMLTag: string = \"span\";\nexport const aHTMLTag: string = \"a\";\nexport const pHTMLTag: string = \"p\";\n\n// default lang\nexport const defaultLang: string = \"en\";\n\n// useful regexp\nexport const notNumber: RegExp = new RegExp(\"[^0-9/]\", \"gi\");\nexport const leadingZeros: RegExp = new RegExp(\"^0+\", \"gi\");\n","// validate a single email with regex\nexport const 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\nexport const validateEmails = (arr: string[]): boolean =>\n arr.every(validateEmail);\n\n// validate a single tel with regex\nexport const validateTel = (tel: string): boolean =>\n /^[+]{0,1}[\\s0-9]*[(]{0,1}[0-9]{1,4}[)]{0,1}[-\\s\\./0-9]*[p]{0,1}[\\s0-9]*$/.test(\n tel\n );\n\n// copy of a string\nexport const copyToClipboard = (str: string): boolean => {\n let el: HTMLTextAreaElement = document.createElement(\n \"textarea\"\n ) as HTMLTextAreaElement;\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\n// set focus loop within modal\nexport const 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\nexport const 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\nexport const 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","export const userAgent = () => {\n if (\n /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(\n navigator.userAgent\n )\n ) {\n return \"mobile\";\n }\n return \"desktop\";\n};\n","import {\n MailgoConfig,\n MailgoTranslations,\n MailgoTranslation,\n MailgoAction,\n MailgoLanguages,\n MailgoType,\n MailgoDetail,\n MailgoInstallationType,\n MailgoModalType,\n} from \"mailgo\";\n\n// polyfill\n// import { mailgoPolyfill } from \"./polyfill\";\n\n// constants\nimport {\n MAILTO,\n MAILGO,\n TEL,\n CALLTO,\n SMS,\n MAILGO_MAIL,\n MAILGO_TEL,\n MAILGO_SMS,\n CLASSIC,\n LESS_SPAM,\n NO_MAILGO,\n MOBILE,\n spanHTMLTag,\n aHTMLTag,\n pHTMLTag,\n defaultLang,\n notNumber,\n leadingZeros,\n} from \"./constants\";\n\n// utils\nimport {\n validateEmails,\n validateTel,\n copyToClipboard,\n setFocusLoop,\n} from \"./utils\";\n\n// i18n for mailgo\nimport languages from \"../i18n/languages.json\";\nimport translations from \"../i18n/translations.json\";\n\n// mobile detect\nimport { userAgent } from \"./mobile-detect\";\n\n// mailgo scss, with toString (https://github.com/webpack-contrib/css-loader#tostring)\nconst mailgoCSS: string = require(\"./mailgo.scss\").toString();\n\n// default language\nlet lang: string = defaultLang;\n\n// default strings\nconst defaultStrings: MailgoTranslation = (translations as MailgoTranslations)[\n defaultLang\n];\n\n// translation strings\nlet strings: MailgoTranslation;\n\n// global mailgo config object\nlet config: MailgoConfig;\n\n// config to check if the client is mobile or desktop\nlet isMobile: boolean = false;\n\n// default config attributes\nlet mailtoEnabled: boolean = true;\nlet telEnabled: boolean = true;\nlet smsEnabled: boolean = false;\nlet desktopEnabled: boolean = true;\nlet mobileEnabled: boolean = true;\nlet validateEmailConfig: boolean = true;\nlet validateTelConfig: boolean = true;\nlet showFooterConfig: boolean = true;\nlet loadCSSConfig: boolean = true;\n\n// activeMailgoType\nlet activeMailgoType: MailgoType;\n\n// modals global object\nlet modalMailto: HTMLElement, modalTel: HTMLElement;\n\n// mailgo general variables\nlet url: URL, href: string, lessSpamHref: string;\n\n// mailgo mail variables\nlet mail: string, cc: string, bcc: string, subject: string, bodyMail: string;\n\n// mailgo tel variables\nlet tel: string, msg: string, telegramUsername: string, 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 detailMsg: HTMLElement,\n ccValue: HTMLElement,\n bccValue: HTMLElement,\n subjectValue: HTMLElement,\n bodyValue: HTMLElement,\n msgValue: HTMLElement,\n activatedLink: HTMLElement;\n\n// mailgo buttons (actions)\nlet gmail: HTMLLinkElement,\n outlook: HTMLLinkElement,\n yahoo: 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 // set the boolean for mobile/desktop\n isMobile = userAgent() === MOBILE;\n\n // responsive settings\n {\n if (typeof config?.desktop !== \"undefined\") {\n desktopEnabled = config.desktop;\n // if it is a desktop and desktop is not enabled no init mailgo\n if (!isMobile && !desktopEnabled) {\n return;\n }\n }\n if (typeof config?.mobile !== \"undefined\") {\n mobileEnabled = config.mobile;\n // if it is a mobile and mobile is not enabled no init mailgo\n if (isMobile && !mobileEnabled) {\n return;\n }\n }\n }\n\n // set the mailgo language\n mailgoSetLanguage();\n\n // mailgo, if mailgo not already exists\n let mailgoExists = !!document.getElementById(MAILGO_MAIL);\n\n // if mailgo is enabled for mailto and it not exists in DOM\n if (mailtoEnabled && !mailgoExists) {\n // modal\n modalMailto = createElement() as HTMLElement;\n modalMailto.style.display = \"none\";\n modalMailto.id = MAILGO_MAIL;\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();\n } else {\n disableDarkMode();\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 = \"#mailgo-gmail\";\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 if (mailgoConfigAttributeEnabled(\"action\", \"gmail\")) {\n modalContent.appendChild(gmail);\n }\n\n // Outlook\n outlook = createElement(aHTMLTag) as HTMLLinkElement;\n outlook.id = \"m-outlook\";\n outlook.href = \"#mailgo-outlook\";\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 if (mailgoConfigAttributeEnabled(\"action\", \"outlook\")) {\n modalContent.appendChild(outlook);\n }\n\n // Outlook\n yahoo = createElement(aHTMLTag) as HTMLLinkElement;\n yahoo.id = \"m-yahoo\";\n yahoo.href = \"#mailgo-yahoo\";\n yahoo.classList.add(\"m-open\");\n yahoo.classList.add(\"m-yahoo\");\n yahoo.appendChild(\n createTextNode(strings.open_in_ || defaultStrings.open_in_)\n );\n let yahooSpan: HTMLElement = createElement(spanHTMLTag);\n yahooSpan.className = \"w-500\";\n yahooSpan.appendChild(\n createTextNode(strings.yahoo || defaultStrings.yahoo)\n );\n yahoo.appendChild(yahooSpan);\n\n if (mailgoConfigAttributeEnabled(\"action\", \"yahoo\")) {\n modalContent.appendChild(yahoo);\n }\n\n // open default\n open = createElement(aHTMLTag) as HTMLLinkElement;\n open.id = \"m-open\";\n open.href = \"#mailgo-open\";\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 = \"#mailgo-copy\";\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 (typeof config?.showFooter !== \"undefined\") {\n showFooterConfig = config.showFooter;\n }\n\n if (showFooterConfig) {\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 mailgo is enabled for tel/callto and it not exists in DOM\n if (telEnabled && !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();\n } else {\n disableDarkMode();\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 // details\n let detailsTel: HTMLElement = createElement();\n detailsTel.id = \"m-tel-details\";\n detailsTel.className = \"m-details\";\n\n detailMsg = createElement(pHTMLTag);\n detailMsg.id = \"m-msg\";\n let msgSpan: HTMLElement = createElement(spanHTMLTag);\n msgSpan.className = \"w-500\";\n msgSpan.appendChild(createTextNode(strings.body_ || defaultStrings.body_));\n msgValue = createElement(spanHTMLTag);\n msgValue.id = \"m-msg-value\";\n detailMsg.appendChild(msgSpan);\n detailMsg.appendChild(msgValue);\n detailsTel.appendChild(detailMsg);\n\n modalContent.appendChild(detailsTel);\n\n // Telegram\n telegram = createElement(aHTMLTag) as HTMLLinkElement;\n telegram.id = \"m-tg\";\n telegram.href = \"#mailgo-telegram\";\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 if (mailgoConfigAttributeEnabled(\"action\", \"telegram\")) {\n modalContent.appendChild(telegram);\n }\n\n // WhatsApp\n wa = createElement(aHTMLTag) as HTMLLinkElement;\n wa.id = \"m-wa\";\n wa.href = \"#mailgo-whatsapp\";\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 if (mailgoConfigAttributeEnabled(\"action\", \"whatsapp\")) {\n modalContent.appendChild(wa);\n }\n\n // Skype\n skype = createElement(aHTMLTag) as HTMLLinkElement;\n skype.id = \"m-skype\";\n skype.href = \"#mailgo-skype\";\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 if (mailgoConfigAttributeEnabled(\"action\", \"skype\")) {\n modalContent.appendChild(skype);\n }\n\n // call default\n call = createElement(aHTMLTag) as HTMLLinkElement;\n call.id = \"m-call\";\n call.href = \"#mailgo-open\";\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 = \"#mailgo-copy\";\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 (typeof config?.showFooter !== \"undefined\") {\n showFooterConfig = config.showFooter;\n }\n\n if (showFooterConfig) {\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\", mailgoClickListener);\n};\n\n/**\n * mailgoClickListener\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 * or\n * document.querySelectorAll(\n * 'a[href^=\"sms:\" i]:not(.no-mailgo), a[href=\"#mailgo\"], a.mailgo'\n * );\n */\nfunction mailgoClickListener(event: Event): boolean {\n // check if the mailgo HTML exists in the body\n if (\n !document.body.contains(modalMailto) &&\n !document.body.contains(modalTel)\n ) {\n return false;\n }\n\n // if a mailgo is already showing do nothing\n if (mailgoIsShowing()) {\n return false;\n }\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\n // go here only if one of the mailgo modals are enabled\n if (mailtoEnabled || telEnabled || smsEnabled) {\n let localMailgoType = getMailgoTypeByElement(element);\n\n // go on if the localMailgoType is not null\n if (localMailgoType) {\n // set the active mailgo type\n activeMailgoType = localMailgoType;\n\n let activeMailgoModalType = activeMailgoType?.type;\n\n if (activeMailgoModalType) {\n // check if the setting is enabled and if so go with pre-render\n if (\n (mailtoEnabled && activeMailgoModalType === MAILGO_MAIL) ||\n (telEnabled && activeMailgoModalType === MAILGO_TEL) ||\n (smsEnabled && activeMailgoModalType === MAILGO_SMS)\n ) {\n // stop the normal execution of the element click\n event.preventDefault();\n\n // render mailgo\n mailgoPreRender(element as HTMLLinkElement);\n\n return true;\n }\n }\n }\n }\n });\n }\n\n return false;\n}\n\n/**\n * mailgoPreRender\n * function to pre-render a mailgo, it helps populating elements needed by modal\n */\nfunction mailgoPreRender(\n mailgoElementOrUrl: HTMLLinkElement | string\n): boolean {\n let mailgoElement: HTMLLinkElement;\n\n // get the type and installation from current mailgo type\n let type: MailgoModalType = activeMailgoType?.type;\n let installation: MailgoInstallationType = activeMailgoType?.installation;\n\n // if type is not defined return\n if (!type) return false;\n\n if (typeof mailgoElementOrUrl === \"string\") {\n // if the parameter is a string it is the url\n href = mailgoElementOrUrl as string;\n } else {\n // if the paramenter is an HTMLLinkElement get the href attribute and the element\n href = mailgoElementOrUrl.getAttribute(\"href\") as string;\n mailgoElement = mailgoElementOrUrl as HTMLLinkElement;\n }\n\n // mailgo mail\n if (type === MAILGO_MAIL) {\n // if the installation is classic\n if (installation === CLASSIC) {\n if (validateUrl(href, MAILTO)) {\n mail = decodeURIComponent(href.split(\"?\")[0].split(MAILTO)[1].trim());\n } else if (validateUrl(href, MAILGO)) {\n mail = decodeURIComponent(href.split(\"?\")[0].split(MAILGO)[1].trim());\n }\n\n try {\n url = new URL(href);\n\n let urlParams: URLSearchParams = url.searchParams;\n // optional parameters for the email\n cc = urlParams.get(\"cc\");\n bcc = urlParams.get(\"bcc\");\n subject = urlParams.get(\"subject\");\n bodyMail = urlParams.get(\"body\");\n } catch (error) {\n console.log(error);\n }\n } else if (installation === LESS_SPAM) {\n // if the installation is less-spam\n // mail = data-address + @ + data-domain\n mail =\n mailgoElement.getAttribute(\"data-address\") &&\n mailgoElement.getAttribute(\"data-domain\")\n ? mailgoElement.getAttribute(\"data-address\") +\n \"@\" +\n mailgoElement.getAttribute(\"data-domain\")\n : null;\n\n try {\n url = new URL(MAILTO + encodeURIComponent(mail));\n } catch (error) {\n console.log(error);\n }\n\n let parameters: string[] = [];\n\n // cc = data-cc-address + @ + data-cc-domain\n cc = mailgoElement.getAttribute(\"data-cc-address\")\n ? mailgoElement.getAttribute(\"data-cc-address\") +\n \"@\" +\n mailgoElement.getAttribute(\"data-cc-domain\")\n : null;\n\n // if cc is defined add it to parameters\n if (cc) parameters.push(\"cc=\" + cc);\n\n // bcc = data-bcc-address + @ + data-bcc-domain\n bcc = mailgoElement.getAttribute(\"data-bcc-address\")\n ? mailgoElement.getAttribute(\"data-bcc-address\") +\n \"@\" +\n mailgoElement.getAttribute(\"data-bcc-domain\")\n : null;\n\n // if bcc is defined add it to parameters\n if (bcc) parameters.push(\"bcc=\" + bcc);\n\n // subject = data-subject\n subject = mailgoElement.getAttribute(\"data-subject\");\n\n // if subject is defined add it to parameters\n if (subject) parameters.push(\"subject=\" + subject);\n\n // body = data-body\n bodyMail = mailgoElement.getAttribute(\"data-body\");\n\n // if body is defined add it to parameters\n if (bodyMail) parameters.push(\"body=\" + bodyMail);\n\n // set the lessSpamHref\n lessSpamHref = buildLessSpamHref(\n MAILTO + encodeURIComponent(mail),\n parameters\n );\n }\n\n // if is in config use it\n if (typeof config?.validateEmail !== \"undefined\") {\n validateEmailConfig = config.validateEmail;\n }\n\n if (validateEmailConfig) {\n // validate the email address\n if (!validateEmails(mail.split(\",\"))) {\n return false;\n }\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 // mailgo tel\n else if (type === MAILGO_TEL) {\n if (installation === CLASSIC) {\n if (validateUrl(href, TEL)) {\n tel = decodeURIComponent(href.split(\"?\")[0].split(TEL)[1].trim());\n } else if (validateUrl(href, CALLTO)) {\n tel = decodeURIComponent(href.split(\"?\")[0].split(CALLTO)[1].trim());\n } else if (validateUrl(href, SMS)) {\n tel = decodeURIComponent(href.split(\"?\")[0].split(SMS)[1].trim());\n }\n\n try {\n url = new URL(href);\n let urlParams: URLSearchParams = url.searchParams;\n\n // optional parameters for the phone number\n msg = urlParams.get(\"body\");\n } catch (error) {\n console.log(error);\n }\n } else if (installation == LESS_SPAM) {\n tel = mailgoElement.getAttribute(\"data-tel\");\n msg = mailgoElement.getAttribute(\"data-msg\");\n\n try {\n url = new URL(TEL + encodeURIComponent(tel));\n } catch (error) {\n console.log(error);\n }\n\n let parameters: string[] = [];\n\n // if msg is defined add it to parameters\n if (msg) parameters.push(\"body=\" + msg);\n\n // set the lessSpamHref\n lessSpamHref = buildLessSpamHref(\n TEL + encodeURIComponent(tel),\n parameters\n );\n }\n\n // if is in config use it\n if (typeof config?.validateTel !== \"undefined\") {\n validateTelConfig = config.validateTel;\n }\n\n // validate the phone number\n if (validateTelConfig) {\n if (!validateTel(tel)) return;\n }\n\n // Telegram username\n if (mailgoElement && mailgoElement.hasAttribute(\"data-telegram\")) {\n telegramUsername = mailgoElement.getAttribute(\"data-telegram\");\n } else {\n telegramUsername = null;\n }\n\n // Telegram username\n if (mailgoElement && mailgoElement.hasAttribute(\"data-skype\")) {\n skypeUsername = mailgoElement.getAttribute(\"data-skype\");\n } else {\n skypeUsername = null;\n }\n }\n\n // if dark is in config or contained in the element\n if (config?.dark || mailgoElement.classList.contains(\"dark\")) {\n enableDarkMode();\n } else {\n disableDarkMode();\n }\n\n // render mailgo\n mailgoRender();\n\n return true;\n}\n\n/**\n * mailgoDirectRender\n * function to render a mailgo directly from a URL\n */\nfunction mailgoDirectRender(directUrl: string): boolean {\n // start mailgo\n mailgo();\n\n if (validateUrl(directUrl, MAILTO) || validateUrl(directUrl, MAILGO)) {\n activeMailgoType = {\n type: MAILGO_MAIL,\n installation: CLASSIC,\n };\n mailgoPreRender(directUrl);\n return true;\n } else if (\n validateUrl(directUrl, TEL) ||\n validateUrl(directUrl, CALLTO) ||\n validateUrl(directUrl, SMS)\n ) {\n activeMailgoType = {\n type: MAILGO_TEL,\n installation: CLASSIC,\n };\n mailgoPreRender(directUrl);\n return true;\n }\n return false;\n}\n\n/**\n * mailgoRender\n * function to render a mailgo (mail or tel)\n */\nfunction mailgoRender(): boolean {\n // get the type from current mailgo type\n let type: MailgoModalType = activeMailgoType?.type;\n\n // if type is not defined return\n if (!type) return false;\n\n // mailgo mail\n if (type === MAILGO_MAIL) {\n // the title of the modal (email address)\n title.textContent = mail.split(\",\").join(\"\\n\");\n\n // add the details if provided\n if (mailgoConfigAttributeEnabled(\"detail\", \"cc\") && cc) {\n detailCc.style.display = \"block\";\n ccValue.textContent = cc.split(\",\").join(\"\\n\");\n } else {\n detailCc.style.display = \"none\";\n }\n\n if (mailgoConfigAttributeEnabled(\"detail\", \"bcc\") && bcc) {\n detailBcc.style.display = \"block\";\n bccValue.textContent = bcc.split(\",\").join(\"\\n\");\n } else {\n detailBcc.style.display = \"none\";\n }\n\n if (mailgoConfigAttributeEnabled(\"detail\", \"subject\") && subject) {\n detailSubject.style.display = \"block\";\n subjectValue.textContent = subject;\n } else {\n detailSubject.style.display = \"none\";\n }\n\n if (mailgoConfigAttributeEnabled(\"detail\", \"body\") && bodyMail) {\n detailBody.style.display = \"block\";\n bodyValue.textContent = bodyMail;\n } else {\n detailBody.style.display = \"none\";\n }\n\n // add the actions\n gmail.addEventListener(\"click\", openGmail);\n\n outlook.addEventListener(\"click\", openOutlook);\n\n yahoo.addEventListener(\"click\", openYahooMail);\n\n open.addEventListener(\"click\", openDefault);\n\n copyMail.addEventListener(\"click\", copy);\n }\n // mailgo tel\n else if (type === MAILGO_TEL) {\n // the title of the modal (tel)\n titleTel.textContent = tel;\n\n if (mailgoConfigAttributeEnabled(\"detail\", \"msg\") && msg) {\n detailMsg.style.display = \"block\";\n msgValue.textContent = msg;\n } else {\n detailMsg.style.display = \"none\";\n }\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\", openDefault);\n\n copyTel.addEventListener(\"click\", copy);\n }\n\n // show the mailgo\n showMailgo(type);\n\n // add listener keyDown\n document.addEventListener(\"keydown\", mailgoKeydown);\n\n return true;\n}\n\n// actions\nconst openGmail = (event?: Event): void => {\n event.preventDefault();\n\n let urlString: string;\n let installation: MailgoInstallationType = activeMailgoType?.installation;\n\n if (installation === CLASSIC) {\n try {\n urlString = url.toString();\n } catch (e) {\n urlString = href;\n }\n } else if (installation === LESS_SPAM) {\n urlString = lessSpamHref;\n }\n\n // Gmail url\n let gmailUrl: string =\n \"https://mail.google.com/mail/?extsrc=mailto&url=\" +\n encodeURIComponent(urlString);\n\n // open the link\n window.open(gmailUrl, \"_blank\", \"noopener, noreferrer\");\n\n // hide the modal\n hideMailgo();\n};\n\nconst openOutlook = (event?: Event): void => {\n event.preventDefault();\n\n // Outlook starting url\n let startingOutlookUrl: string =\n \"https://outlook.live.com/owa/?path=/mail/action/compose&to=\";\n\n // let the user to decide to open Office365 Outlook instead of the classic outlook.live.com\n if (config?.office365) {\n startingOutlookUrl =\n \"https://outlook.office365.com/owa/?path=/mail/action/compose&to=\";\n }\n\n // Outlook url\n let outlookUrl: string = startingOutlookUrl + encodeURIComponent(mail);\n\n // the details if provided\n if (subject) {\n outlookUrl = outlookUrl.concat(\"&subject=\" + encodeURIComponent(subject));\n }\n\n if (bodyMail) {\n outlookUrl = outlookUrl.concat(\"&body=\" + encodeURIComponent(bodyMail));\n }\n\n // open the link\n window.open(outlookUrl, \"_blank\", \"noopener, noreferrer\");\n\n // hide the modal\n hideMailgo();\n};\n\nconst openYahooMail = (event?: Event): void => {\n event.preventDefault();\n\n // Yahoo url\n let yahooUrl: string = \"https://compose.mail.yahoo.com/?to=\" + mail;\n\n // the details if provided\n if (subject) {\n yahooUrl = yahooUrl.concat(\"&subject=\" + encodeURIComponent(subject));\n }\n if (bodyMail) {\n yahooUrl = yahooUrl.concat(\"&body=\" + encodeURIComponent(bodyMail));\n }\n\n // open the link\n window.open(yahooUrl, \"_blank\", \"noopener, noreferrer\");\n\n // hide the modal\n hideMailgo();\n};\n\nconst openTelegram = (event?: Event): void => {\n event.preventDefault();\n\n // check if telegramUsername exists\n if (telegramUsername) {\n // Telegram url\n let tgUrl: string = \"https://t.me/\" + encodeURIComponent(telegramUsername);\n\n // open the url\n window.open(tgUrl, \"_blank\", \"noopener, noreferrer\");\n\n // hide the modal\n hideMailgo();\n }\n};\n\nconst openSkype = (event?: Event): void => {\n event.preventDefault();\n\n let skype: string = skypeUsername || tel;\n\n // Telegram url\n let skypeUrl: string = \"skype:\" + encodeURIComponent(skype);\n\n // open the url\n window.open(skypeUrl, \"_blank\", \"noopener, noreferrer\");\n\n // hide the modal\n hideMailgo();\n};\n\nconst openWhatsApp = (event?: Event): void => {\n event.preventDefault();\n\n // WhatsApp API doesn't work with non number digits and leading 0s: https://faq.whatsapp.com/general/chats/how-to-use-click-to-chat/\n let whatappTel = tel.replace(notNumber, \"\").replace(leadingZeros, \"\");\n\n // WhatsApp url\n let waUrl: string = \"https://wa.me/\" + encodeURIComponent(whatappTel);\n\n // the details if provided\n if (msg) {\n waUrl = waUrl.concat(\"?text=\" + encodeURIComponent(msg));\n }\n\n // open the url\n window.open(waUrl, \"_blank\", \"noopener, noreferrer\");\n\n // hide the modal\n hideMailgo();\n};\n\nconst openDefault = (event?: Event): void => {\n event.preventDefault();\n\n let installation: MailgoInstallationType = activeMailgoType?.installation;\n\n // if the installation is classic the browser can follow the default behaviour\n if (installation === CLASSIC) {\n window.location.href = href;\n } else if (installation === LESS_SPAM) {\n // if the installation is less-spam use the built less-spam href\n window.location.href = lessSpamHref;\n }\n\n hideMailgo();\n};\n\nconst copy = (event?: Event): void => {\n event.preventDefault();\n\n // the correct copyButton (mail or tel)\n if (mailgoIsShowing()) {\n let activeCopy: HTMLElement;\n\n let type: MailgoModalType = activeMailgoType?.type;\n\n if (type === MAILGO_MAIL) {\n // in case it is showing mail modal copy email address\n copyToClipboard(mail);\n activeCopy = copyMail;\n } else {\n // in case it is showing tel modal copy phone number\n copyToClipboard(tel);\n activeCopy = copyTel;\n }\n\n activeCopy.textContent = strings.copied || defaultStrings.copied;\n setTimeout(() => {\n activeCopy.textContent = strings.copy || defaultStrings.copy;\n // hide after the timeout\n hideMailgo();\n }, 999);\n }\n};\n\n// function to find if a link is a mailto, tel, callto or sms\nconst validateUrl = (url: string, type: string = MAILTO) => {\n let regexValidate = new RegExp(\"^\" + type + \"((.)+)\", \"gi\");\n return regexValidate.test(url);\n};\n\n// function that returns if an element is a mailgo\nfunction getMailgoTypeByElement(element: HTMLElement): MailgoType | null {\n let elementHref: string = (element as HTMLLinkElement).getAttribute(\"href\");\n\n // return null if there is no-mailgo in class\n if (element.classList?.contains(NO_MAILGO)) {\n return null;\n }\n\n // the case of classic type of mailgo, like a href=mailto:... or a href=tel:... and the class=mailgo with a useful href\n if (elementHref || element.classList?.contains(\"mailgo\")) {\n if (validateUrl(elementHref, MAILTO) || validateUrl(elementHref, MAILGO)) {\n // a mailto: or mailgo:\n return {\n type: MAILGO_MAIL,\n installation: CLASSIC,\n };\n } else if (\n validateUrl(elementHref, TEL) ||\n validateUrl(elementHref, CALLTO)\n ) {\n // a tel: or callto:\n return {\n type: MAILGO_TEL,\n installation: CLASSIC,\n };\n } else if (validateUrl(elementHref, SMS)) {\n // a sms:\n return {\n type: MAILGO_SMS,\n installation: CLASSIC,\n };\n }\n }\n\n if (elementHref === \"#mailgo\" || element.classList?.contains(\"mailgo\")) {\n // less-spam installation of mailgo, check to the attributes\n if (\n element.hasAttribute(\"data-address\") &&\n element.hasAttribute(\"data-domain\")\n ) {\n // less-spam mailto with data-address and data-domain\n return {\n type: MAILGO_MAIL,\n installation: LESS_SPAM,\n };\n } else if (element.hasAttribute(\"data-tel\")) {\n // less-spam tel with data-tel\n return {\n type: MAILGO_TEL,\n installation: LESS_SPAM,\n };\n } else if (element.hasAttribute(\"data-msg\")) {\n // less-spam sms with data-msd\n return {\n type: MAILGO_SMS,\n installation: LESS_SPAM,\n };\n }\n }\n\n return null;\n}\n\n/**\n * mailgoKeydown\n * function to manage the keydown event when the modal is showing, return a boolean that represents if a useful key has been pressed\n */\nconst mailgoKeydown = (keyboardEvent: KeyboardEvent): boolean => {\n // if mailgo is showing\n if (mailgoIsShowing()) {\n let type: MailgoModalType = activeMailgoType?.type;\n\n if (type === MAILGO_MAIL) {\n switch (keyboardEvent.keyCode) {\n case 27:\n // Escape\n hideMailgo();\n return true;\n case 71:\n // g -> open GMail\n openGmail();\n return true;\n case 79:\n // o -> open Outlook\n openOutlook();\n return true;\n case 89:\n // y -> open Yahoo Mail\n openYahooMail();\n return true;\n case 32:\n case 13:\n // spacebar or enter -> open default\n openDefault();\n return true;\n case 67:\n // c -> copy\n copy();\n return true;\n default:\n return false;\n }\n } else if (type === MAILGO_TEL) {\n switch (keyboardEvent.keyCode) {\n case 27:\n // Escape\n hideMailgo();\n return true;\n case 84:\n // t -> open Telegram\n openTelegram();\n return true;\n case 87:\n // w -> open WhatsApp\n openWhatsApp();\n return true;\n case 83:\n // s -> open Skype\n openSkype();\n return true;\n case 32:\n case 13:\n // spacebar or enter -> open default\n openDefault();\n return true;\n case 67:\n // c -> copy\n copy();\n return true;\n default:\n return false;\n }\n }\n }\n return false;\n};\n\n// show the modal\nconst showMailgo = (type: MailgoModalType): 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(MAILGO_MAIL, \"none\");\n setModalDisplay(MAILGO_TEL, \"none\");\n\n // remove listener keyDown\n document.removeEventListener(\"keydown\", mailgoKeydown);\n};\n\n// is the mailgo modal hidden?\nconst mailgoIsShowing = (): boolean => {\n return (\n (mailtoEnabled && getModalDisplay(MAILGO_MAIL) === \"flex\") ||\n ((telEnabled || smsEnabled) && getModalDisplay(MAILGO_TEL) === \"flex\")\n );\n};\n\nconst byElement = (): HTMLLinkElement => {\n // by element in the footer\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// get the correct HTMLElement from a type\nconst getModalHTMLElement = (type: MailgoModalType = MAILGO_MAIL) => {\n if (type === MAILGO_TEL) {\n return modalTel;\n } else {\n return modalMailto;\n }\n};\n\n// get display value\nconst getModalDisplay = (ref: MailgoModalType = MAILGO_MAIL): string =>\n getModalHTMLElement(ref).style.display;\n\n// set display value\nconst setModalDisplay = (\n ref: MailgoModalType = MAILGO_MAIL,\n value: string\n): void => {\n let modal = getModalHTMLElement(ref);\n\n if (modal) {\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\n// enable dark mode\nconst enableDarkMode = () => {\n // get the type from current mailgo type\n let type: MailgoModalType = activeMailgoType?.type;\n if (type) {\n getModalHTMLElement(type).classList.add(\"m-dark\");\n }\n};\n\n// disable dark mode\nconst disableDarkMode = () => {\n // get the type from current mailgo type\n let type: MailgoModalType = activeMailgoType?.type;\n if (type) {\n getModalHTMLElement(type).classList.remove(\"m-dark\");\n }\n};\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// function to recreate a mailto: or tel: href from less-spam\nconst buildLessSpamHref = (type: string, parameters: string[]): string => {\n lessSpamHref = type;\n if (parameters && parameters.length > 0) {\n let joinedParams = parameters.join(\"&\");\n lessSpamHref = lessSpamHref.concat(\"?\" + joinedParams);\n }\n return lessSpamHref;\n};\n\n// function to check an attribute is enabled or not, by default considering it enabled\nconst mailgoConfigAttributeEnabled = (\n type: \"action\" | \"detail\",\n attribute: MailgoAction | MailgoDetail\n): boolean => {\n // by default all the actions and attribute are enabled\n if (!config) {\n return true;\n }\n\n // if the attribute type is action consider the actions config attribute\n if (type === \"action\") {\n if (config && !config?.actions) {\n return true;\n }\n\n if (\n config &&\n config.actions &&\n config?.actions[attribute as MailgoAction] === false\n ) {\n return false;\n }\n } else if (type === \"detail\") {\n // else consider the details attribute\n\n if (config && !config?.details) {\n return true;\n }\n\n if (\n config &&\n config.details &&\n config?.details[attribute as MailgoDetail] === false\n ) {\n return false;\n }\n }\n\n return true;\n};\n\n// manage the language of mailgo\nconst mailgoSetLanguage = (): string => {\n let languageType = \"default lang\";\n\n // if a language is defined in configuration use it\n if (\n config?.lang &&\n (languages as MailgoLanguages).indexOf(config.lang) !== -1\n ) {\n lang = config.lang;\n languageType = \"config lang\";\n } else {\n // else if is defined use it!\n // keep the lang from html\n let htmlLang: string = document.documentElement.lang;\n\n // find the correct language using the lang attribute, not just a === because there a are cases like fr-FR or fr_FR in html lang attribute\n (languages as MailgoLanguages).forEach((language: any) => {\n if (new RegExp(\"^\" + language, \"gi\").test(htmlLang)) {\n lang = language;\n languageType = \"html lang\";\n }\n });\n }\n\n // strings\n strings = (translations as MailgoTranslations)[lang];\n\n return languageType;\n};\n\nconst mailgoStyle = (): void => {\n if (!document.getElementById(\"mailgo-style\")) {\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\n// mailgo\nfunction mailgo(mailgoConfig?: MailgoConfig): boolean {\n try {\n // polyfill mailgo\n // mailgoPolyfill();\n\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 (typeof window !== \"undefined\") {\n // if is set in config use it (load the mailgo CSS)\n if (typeof config?.loadCSS !== \"undefined\") {\n loadCSSConfig = config.loadCSS;\n }\n\n // if is set in config use it (enable mailto)\n if (typeof config?.mailto !== \"undefined\") {\n mailtoEnabled = config.mailto;\n }\n\n // if is set in config use it (enable tel)\n if (typeof config?.tel !== \"undefined\") {\n telEnabled = config.tel;\n }\n\n // if is set in config use it (enable sms)\n if (typeof config?.sms !== \"undefined\") {\n smsEnabled = config.sms;\n }\n\n // if load css enabled load it!\n if (loadCSSConfig) {\n // add the style for mailgo\n mailgoStyle();\n }\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 mailgoInit,\n config.listenerOptions\n );\n } else {\n // no listener options\n document.addEventListener(config.initEvent, mailgoInit);\n }\n } else {\n mailgoInit();\n }\n\n return true;\n }\n } catch (error) {\n console.log(error);\n }\n return false;\n}\n\n// define the methods also for window element\nif (typeof window !== \"undefined\") {\n (window as any).getMailgoTypeByElement = getMailgoTypeByElement;\n (window as any).mailgoClickListener = mailgoClickListener;\n (window as any).mailgoCheckRender = mailgoClickListener; // for compatibility with old version of mailgo\n (window as any).mailgoPreRender = mailgoPreRender;\n (window as any).mailgoDirectRender = mailgoDirectRender;\n (window as any).mailgoRender = mailgoRender;\n (window as any).mailgo = mailgo;\n}\n\nexport {\n getMailgoTypeByElement,\n mailgoClickListener,\n mailgoPreRender,\n mailgoDirectRender,\n mailgoRender,\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","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tif(__webpack_module_cache__[moduleId]) {\n\t\treturn __webpack_module_cache__[moduleId].exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","// module exports must be returned from runtime so entry inlining is disabled\n// startup\n// Load entry module and return exports\nreturn __webpack_require__(474);\n"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack://mailgo/../src/mailgo.scss","webpack://mailgo/../node_modules/css-loader/dist/runtime/api.js","webpack://mailgo/../src/mailgo.scss?81f2","webpack://mailgo/../src/constants.ts","webpack://mailgo/../src/utils.ts","webpack://mailgo/../src/mobile-detect.ts","webpack://mailgo/../src/mailgo.ts","webpack://mailgo/./mailgo.dist.ts","webpack://mailgo/webpack/bootstrap","webpack://mailgo/webpack/runtime/make namespace object","webpack://mailgo/webpack/startup"],"names":["MAILTO","MAILGO","TEL","CALLTO","SMS","outlookDeepLink","NO_MAILGO","DESKTOP","MOBILE","MAILGO_MAIL","MAILGO_TEL","MAILGO_SMS","CLASSIC","LESS_SPAM","spanHTMLTag","aHTMLTag","pHTMLTag","defaultLang","notNumber","RegExp","leadingZeros","validateEmail","email","test","validateEmails","arr","every","validateTel","tel","copyToClipboard","str","el","document","createElement","value","setAttribute","style","position","left","body","appendChild","selected","getSelection","rangeCount","getRangeAt","select","execCommand","removeChild","removeAllRanges","addRange","setFocusLoop","ref","modal","querySelector","addEventListener","leaveLastLink","leaveFirstLink","e","code","shiftKey","preventDefault","target","closest","focus","userAgent","navigator","mailgoCSS","require","lang","defaultStrings","translations","strings","config","isMobile","mailtoEnabled","telEnabled","smsEnabled","desktopEnabled","mobileEnabled","validateEmailConfig","validateTelConfig","showFooterConfig","loadCSSConfig","activeMailgoType","modalMailto","modalTel","url","href","lessSpamHref","mail","cc","bcc","subject","bodyMail","msg","telegramUsername","skypeUsername","title","titleTel","detailCc","detailBcc","detailSubject","detailBody","detailMsg","ccValue","bccValue","subjectValue","bodyValue","msgValue","activatedLink","gmail","outlook","yahoo","open","telegram","wa","skype","call","copyMail","copyTel","mailgoInit","desktop","mobile","mailgoSetLanguage","mailgoExists","getElementById","display","id","classList","add","dark","enableDarkMode","disableDarkMode","modalBackground","className","modalContent","details","ccSpan","createTextNode","cc_","bccSpan","bcc_","subjectSpan","subject_","bodySpan","body_","open_in_","gmailSpan","mailgoConfigAttributeEnabled","outlookSpan","yahooSpan","openSpan","_default","copy","showFooter","byElement","hideMailgo","mailgoTelExists","detailsTel","msgSpan","telegramSpan","waSpan","whatsapp","skypeSpan","callSpan","_as_default","mailgoClickListener","event","contains","mailgoIsShowing","path","composedPath","forEach","element","HTMLDocument","Window","localMailgoType","getMailgoTypeByElement","activeMailgoModalType","type","mailgoPreRender","mailgoElementOrUrl","mailgoElement","installation","getAttribute","validateUrl","decodeURIComponent","split","trim","URL","urlParams","searchParams","get","error","console","log","encodeURIComponent","parameters","push","buildLessSpamHref","hasAttribute","mailgoRender","mailgoDirectRender","directUrl","mailgo","textContent","join","openGmail","openOutlook","openYahooMail","openDefault","openWhatsApp","openTelegram","openSkype","showMailgo","mailgoKeydown","urlString","toString","gmailUrl","window","startingOutlookUrl","office365","outlookUrl","concat","yahooUrl","tgUrl","skypeUrl","whatappTel","replace","waUrl","location","activeCopy","copied","setTimeout","regexValidate","elementHref","keyboardEvent","keyCode","setModalDisplay","removeEventListener","getModalDisplay","by","rel","getModalHTMLElement","activeElement","remove","tagName","parentElement","length","joinedParams","attribute","actions","languageType","languages","htmlLang","documentElement","language","mailgoStyle","mailgoCSSElement","head","mailgoConfig","loadCSS","mailto","sms","initEvent","listenerOptions","mailgoCheckRender"],"mappings":";;;;;;AAAA;AACA,kCAAkC,mBAAO,CAAC,GAAgD;AAC1F,sEAAsE,YAAY;AAClF;AACA,mDAAmD,eAAe,MAAM,QAAQ,SAAS,OAAO,uBAAuB,mBAAmB,sBAAsB,gBAAgB,iBAAiB,cAAc,oDAAoD,SAAS,UAAU,eAAe,cAAc,yJAAyJ,kCAAkC,gBAAgB,gBAAgB,uBAAuB,kBAAkB,cAAc,MAAM,QAAQ,SAAS,OAAO,yBAAyB,WAAW,0BAA0B,kBAAkB,cAAc,uBAAuB,kBAAkB,gBAAgB,gBAAgB,gBAAgB,sBAAsB,YAAY,mBAAmB,wCAAwC,sBAAsB,cAAc,aAAa,sBAAsB,cAAc,aAAa,0BAA0B,iGAAiG,UAAU,mCAAmC,kBAAkB,gBAAgB,qBAAqB,uBAAuB,kBAAkB,qCAAqC,mBAAmB,uCAAuC,qBAAqB,eAAe,eAAe,kBAAkB,4BAA4B,eAAe,aAAa,cAAc,mBAAmB,qBAAqB,oCAAoC,cAAc,+HAA+H,qCAAqC,cAAc,sCAAsC,cAAc,qIAAqI,qCAAqC,cAAc,oCAAoC,cAAc,+HAA+H,oCAAoC,cAAc,iCAAiC,cAAc,sHAAsH,qCAAqC,cAAc,iCAAiC,cAAc,sHAAsH,qCAAqC,cAAc,oCAAoC,cAAc,+HAA+H,qCAAqC,cAAc,mCAAmC,kBAAkB,eAAe,iQAAiQ,iCAAiC,cAAc,iCAAiC,eAAe,iBAAiB,YAAY,cAAc,sHAAsH,cAAc,iCAAiC,gBAAgB,iCAAiC,yBAAyB,oJAAoJ,WAAW,mCAAmC,cAAc,6JAA6J,uCAAuC,cAAc,2CAA2C,cAAc,oJAAoJ,uCAAuC,cAAc,6CAA6C,cAAc,0JAA0J,sCAAsC,cAAc,2CAA2C,cAAc,oJAAoJ,uCAAuC,cAAc,wCAAwC,cAAc,2IAA2I,sCAAsC,cAAc,wCAAwC,cAAc,2IAA2I,sCAAsC,cAAc,2CAA2C,cAAc,oJAAoJ,sCAAsC,cAAc,2IAA2I,WAAW;AACxiL;AACA;;;;;;;;;ACNa;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;;AAEhB;AACA;AACA;;AAEA;AACA,4CAA4C,qBAAqB;AACjE;;AAEA;AACA,KAAK;AACL,IAAI;AACJ;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,qBAAqB,iBAAiB;AACtC;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,oBAAoB,qBAAqB;AACzC;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,E;;;;;;;;AChEA,qBAAqB,mBAAO,CAAC,EAA4H;;AAEzJ;AACA;AACA,SAAS;AACT;AACA;;;;;;;;;;;;;ACLA;AACO,IAAMA,MAAc,GAAG,SAAvB;AACA,IAAMC,MAAc,GAAG,SAAvB;AACA,IAAMC,GAAW,GAAG,MAApB;AACA,IAAMC,MAAc,GAAG,SAAvB;AACA,IAAMC,GAAW,GAAG,MAApB,C,CAEP;;AACO,IAAMC,eAAuB,GAAG,eAAhC,C,CAEP;;AACO,IAAMC,SAAiB,GAAG,WAA1B,C,CAEP;;AACO,IAAMC,OAAe,GAAG,SAAxB;AACA,IAAMC,MAAc,GAAG,QAAvB,C,CAEP;;AACO,IAAMC,WAA4B,GAAG,QAArC;AACA,IAAMC,UAA2B,GAAG,YAApC;AACA,IAAMC,UAA2B,GAAG,YAApC,C,CAEP;;AACO,IAAMC,OAA+B,GAAG,SAAxC;AACA,IAAMC,SAAiC,GAAG,WAA1C,C,CAEP;;AACO,IAAMC,WAAmB,GAAG,MAA5B;AACA,IAAMC,QAAgB,GAAG,GAAzB;AACA,IAAMC,QAAgB,GAAG,GAAzB,C,CAEP;;AACO,IAAMC,WAAmB,GAAG,IAA5B,C,CAEP;;AACO,IAAMC,SAAiB,GAAG,IAAIC,MAAJ,CAAW,SAAX,EAAsB,IAAtB,CAA1B;AACA,IAAMC,YAAoB,GAAG,IAAID,MAAJ,CAAW,KAAX,EAAkB,IAAlB,CAA7B,C;;ACtCP;AACO,IAAME,aAAa,GAAG,SAAhBA,aAAgB,CAACC,KAAD;AAAA,SAC3B,4JAA4JC,IAA5J,CACED,KADF,CAD2B;AAAA,CAAtB,C,CAKP;;AACO,IAAME,cAAc,GAAG,SAAjBA,cAAiB,CAACC,GAAD;AAAA,SAC5BA,GAAG,CAACC,KAAJ,CAAUL,aAAV,CAD4B;AAAA,CAAvB,C,CAGP;;AACO,IAAMM,WAAW,GAAG,SAAdA,WAAc,CAACC,GAAD;AAAA,SACzB,2EAA2EL,IAA3E,CACEK,GADF,CADyB;AAAA,CAApB,C,CAKP;;AACO,IAAMC,eAAe,GAAG,SAAlBA,eAAkB,CAACC,GAAD,EAA0B;AACvD,MAAIC,EAAuB,GAAGC,QAAQ,CAACC,aAAT,CAC5B,UAD4B,CAA9B;AAGAF,IAAE,CAACG,KAAH,GAAWJ,GAAX;AACAC,IAAE,CAACI,YAAH,CAAgB,UAAhB,EAA4B,EAA5B;AACAJ,IAAE,CAACK,KAAH,CAASC,QAAT,GAAoB,UAApB;AACAN,IAAE,CAACK,KAAH,CAASE,IAAT,GAAgB,SAAhB;AACAN,UAAQ,CAACO,IAAT,CAAcC,WAAd,CAA0BT,EAA1B;AACA,MAAIU,QAAyB,GAC3BT,QAAQ,CAACU,YAAT,GAAwBC,UAAxB,GAAqC,CAArC,GACIX,QAAQ,CAACU,YAAT,GAAwBE,UAAxB,CAAmC,CAAnC,CADJ,GAEI,KAHN;AAIAb,IAAE,CAACc,MAAH;AACAb,UAAQ,CAACc,WAAT,CAAqB,MAArB;AACAd,UAAQ,CAACO,IAAT,CAAcQ,WAAd,CAA0BhB,EAA1B;;AACA,MAAIU,QAAJ,EAAc;AACZT,YAAQ,CAACU,YAAT,GAAwBM,eAAxB;AACAhB,YAAQ,CAACU,YAAT,GAAwBO,QAAxB,CAAiCR,QAAjC;AACA,WAAO,IAAP;AACD;;AACD,SAAO,KAAP;AACD,CAtBM,C,CAwBP;;AACO,IAAMS,YAAY,GAAG,SAAfA,YAAe,CAACC,GAAD,EAA4B;AACtD,MAAIC,KAAK,GAAGD,GAAZ;AACAC,OAAK,CACFC,aADH,CACiB,iCADjB,EAEGC,gBAFH,CAEoB,SAFpB,EAE+BC,aAF/B;AAGAH,OAAK,CACFC,aADH,CACiB,kCADjB,EAEGC,gBAFH,CAEoB,SAFpB,EAE+BE,cAF/B;AAGD,CARM;AAUA,IAAMD,aAAa,GAAG,SAAhBA,aAAgB,CAACE,CAAD,EAA4B;AACvD;AACA,MAAIA,CAAC,CAACC,IAAF,KAAW,KAAX,IAAoBD,CAAC,CAACE,QAAF,KAAe,KAAvC,EAA8C;AAC5CF,KAAC,CAACG,cAAF;AAEEH,KAAC,CAACI,MAAH,CACEC,OADF,CACU,KADV,EAEET,aAFF,CAEgB,iBAFhB,CAAD,CAEoDU,KAFpD;AAGD;AACF,CATM;AAWA,IAAMP,cAAc,GAAG,SAAjBA,cAAiB,CAACC,CAAD,EAA4B;AACxD;AACA,MAAIA,CAAC,CAACC,IAAF,KAAW,KAAX,IAAoBD,CAAC,CAACE,QAAF,KAAe,IAAvC,EAA6C;AAC3CF,KAAC,CAACG,cAAF;AACEH,KAAC,CAACI,MAAH,CACEC,OADF,CACU,KADV,EAEET,aAFF,CAEgB,gBAFhB,CAAD,CAEmDU,KAFnD;AAGD;AACF,CARM,C;;;;;;AC/DA,IAAMC,SAAS,GAAG,SAAZA,SAAY,GAAM;AAC7B,MACE,iEAAiEzC,IAAjE,CACE0C,SAAS,CAACD,SADZ,CADF,EAIE;AACA,WAAO,QAAP;AACD;;AACD,SAAO,SAAP;AACD,CATM,C;;;;;;;;ACYP;AACA;AAEA;CAsBA;;CAQA;;AACA;CAGA;;CAGA;;AACA,IAAME,SAAiB,GAAGC,iCAAA,EAA1B,C,CAEA;;;AACA,IAAIC,IAAY,GAAGnD,WAAnB,C,CAEA;;AACA,IAAMoD,cAAiC,GAAIC,4BAAD,CACxCrD,WADwC,CAA1C,C,CAIA;;AACA,IAAIsD,OAAJ,C,CAEA;;AACA,IAAIC,MAAJ,C,CAEA;;AACA,IAAIC,QAAiB,GAAG,KAAxB,C,CAEA;;AACA,IAAIC,aAAsB,GAAG,IAA7B;AACA,IAAIC,UAAmB,GAAG,IAA1B;AACA,IAAIC,UAAmB,GAAG,KAA1B;AACA,IAAIC,cAAuB,GAAG,IAA9B;AACA,IAAIC,aAAsB,GAAG,IAA7B;AACA,IAAIC,mBAA4B,GAAG,IAAnC;AACA,IAAIC,iBAA0B,GAAG,IAAjC;AACA,IAAIC,gBAAyB,GAAG,IAAhC;AACA,IAAIC,aAAsB,GAAG,IAA7B,C,CAEA;;AACA,IAAIC,gBAAJ,C,CAEA;;AACA,IAAIC,WAAJ,EAA8BC,QAA9B,C,CAEA;;AACA,IAAIC,GAAJ,EAAcC,IAAd,EAA4BC,YAA5B,C,CAEA;;AACA,IAAIC,IAAJ,EAAkBC,EAAlB,EAA8BC,GAA9B,EAA2CC,OAA3C,EAA4DC,QAA5D,C,CAEA;;AACA,IAAIjE,GAAJ,EAAiBkE,GAAjB,EAA8BC,gBAA9B,EAAwDC,aAAxD,C,CAEA;;AACA,IAAIC,KAAJ,EACEC,QADF,EAEEC,QAFF,EAGEC,SAHF,EAIEC,aAJF,EAKEC,UALF,EAMEC,SANF,EAOEC,OAPF,EAQEC,QARF,EASEC,YATF,EAUEC,SAVF,EAWEC,QAXF,EAYEC,aAZF,C,CAcA;;AACA,IAAIC,KAAJ,EACEC,OADF,EAEEC,KAFF,EAGEC,WAHF,EAIEC,QAJF,EAKEC,EALF,EAMEC,KANF,EAOEC,IAPF,EAQEC,QARF,EASEC,OATF;AAWA;AACA;AACA;AACA;;AACA,IAAMC,UAAU,GAAG,SAAbA,UAAa,GAAY;AAC7B;AACA/C,UAAQ,GAAGT,SAAS,OAAOxD,MAA3B,CAF6B,CAI7B;;AACA;AAAA;;AACE,QAAI,mBAAOgE,MAAP,4CAAO,QAAQiD,OAAf,MAA2B,WAA/B,EAA4C;AAC1C5C,oBAAc,GAAGL,MAAM,CAACiD,OAAxB,CAD0C,CAE1C;;AACA,UAAI,CAAChD,QAAD,IAAa,CAACI,cAAlB,EAAkC;AAChC;AACD;AACF;;AACD,QAAI,oBAAOL,MAAP,6CAAO,SAAQkD,MAAf,MAA0B,WAA9B,EAA2C;AACzC5C,mBAAa,GAAGN,MAAM,CAACkD,MAAvB,CADyC,CAEzC;;AACA,UAAIjD,QAAQ,IAAI,CAACK,aAAjB,EAAgC;AAC9B;AACD;AACF;AACF,GApB4B,CAsB7B;;AACA6C,mBAAiB,GAvBY,CAyB7B;;AACA,MAAIC,YAAY,GAAG,CAAC,CAAC5F,QAAQ,CAAC6F,cAAT,CAAwBpH,WAAxB,CAArB,CA1B6B,CA4B7B;;AACA,MAAIiE,aAAa,IAAI,CAACkD,YAAtB,EAAoC;AAAA;;AAClC;AACAxC,eAAW,GAAGnD,aAAa,EAA3B;AACAmD,eAAW,CAAChD,KAAZ,CAAkB0F,OAAlB,GAA4B,MAA5B;AACA1C,eAAW,CAAC2C,EAAZ,GAAiBtH,WAAjB;AACA2E,eAAW,CAAC4C,SAAZ,CAAsBC,GAAtB,CAA0B,SAA1B;AACA7C,eAAW,CAACjD,YAAZ,CAAyB,MAAzB,EAAiC,QAAjC;AACAiD,eAAW,CAACjD,YAAZ,CAAyB,UAAzB,EAAqC,IAArC;AACAiD,eAAW,CAACjD,YAAZ,CAAyB,iBAAzB,EAA4C,SAA5C,EARkC,CAUlC;;AACA,oBAAIqC,MAAJ,qCAAI,SAAQ0D,IAAZ,EAAkB;AAChBC,oBAAc;AACf,KAFD,MAEO;AACLC,qBAAe;AAChB,KAfiC,CAiBlC;;;AACA,QAAIC,eAA4B,GAAGpG,aAAa,EAAhD;AACAoG,mBAAe,CAACC,SAAhB,GAA4B,cAA5B;AACAlD,eAAW,CAAC5C,WAAZ,CAAwB6F,eAAxB,EApBkC,CAsBlC;;AACA,QAAIE,YAAyB,GAAGtG,aAAa,EAA7C;AACAsG,gBAAY,CAACD,SAAb,GAAyB,iBAAzB;AACAlD,eAAW,CAAC5C,WAAZ,CAAwB+F,YAAxB,EAzBkC,CA2BlC;;AACAtC,SAAK,GAAGhE,aAAa,CAAC,QAAD,CAArB;AACAgE,SAAK,CAAC8B,EAAN,GAAW,SAAX;AACA9B,SAAK,CAACqC,SAAN,GAAkB,SAAlB;AACAC,gBAAY,CAAC/F,WAAb,CAAyByD,KAAzB,EA/BkC,CAiClC;;AACA,QAAIuC,OAAoB,GAAGvG,aAAa,EAAxC;AACAuG,WAAO,CAACT,EAAR,GAAa,WAAb;AACAS,WAAO,CAACF,SAAR,GAAoB,WAApB;AAEAnC,YAAQ,GAAGlE,aAAa,CAACjB,QAAD,CAAxB;AACAmF,YAAQ,CAAC4B,EAAT,GAAc,MAAd;AACA,QAAIU,MAAmB,GAAGxG,aAAa,CAACnB,WAAD,CAAvC;AACA2H,UAAM,CAACH,SAAP,GAAmB,OAAnB;AACAG,UAAM,CAACjG,WAAP,CAAmBkG,cAAc,CAACnE,OAAO,CAACoE,GAAR,IAAetE,cAAc,CAACsE,GAA/B,CAAjC;AACAnC,WAAO,GAAGvE,aAAa,CAACnB,WAAD,CAAvB;AACA0F,WAAO,CAACuB,EAAR,GAAa,YAAb;AACA5B,YAAQ,CAAC3D,WAAT,CAAqBiG,MAArB;AACAtC,YAAQ,CAAC3D,WAAT,CAAqBgE,OAArB;AACAgC,WAAO,CAAChG,WAAR,CAAoB2D,QAApB;AAEAC,aAAS,GAAGnE,aAAa,CAACjB,QAAD,CAAzB;AACAoF,aAAS,CAAC2B,EAAV,GAAe,OAAf;AACA,QAAIa,OAAoB,GAAG3G,aAAa,CAACnB,WAAD,CAAxC;AACA8H,WAAO,CAACN,SAAR,GAAoB,OAApB;AACAM,WAAO,CAACpG,WAAR,CAAoBkG,cAAc,CAACnE,OAAO,CAACsE,IAAR,IAAgBxE,cAAc,CAACwE,IAAhC,CAAlC;AACApC,YAAQ,GAAGxE,aAAa,CAACnB,WAAD,CAAxB;AACA2F,YAAQ,CAACsB,EAAT,GAAc,aAAd;AACA3B,aAAS,CAAC5D,WAAV,CAAsBoG,OAAtB;AACAxC,aAAS,CAAC5D,WAAV,CAAsBiE,QAAtB;AACA+B,WAAO,CAAChG,WAAR,CAAoB4D,SAApB;AAEAC,iBAAa,GAAGpE,aAAa,CAACjB,QAAD,CAA7B;AACAqF,iBAAa,CAAC0B,EAAd,GAAmB,WAAnB;AACA,QAAIe,WAAwB,GAAG7G,aAAa,CAACnB,WAAD,CAA5C;AACAgI,eAAW,CAACR,SAAZ,GAAwB,OAAxB;AACAQ,eAAW,CAACtG,WAAZ,CACEkG,cAAc,CAACnE,OAAO,CAACwE,QAAR,IAAoB1E,cAAc,CAAC0E,QAApC,CADhB;AAGArC,gBAAY,GAAGzE,aAAa,CAACnB,WAAD,CAA5B;AACA4F,gBAAY,CAACqB,EAAb,GAAkB,iBAAlB;AACA1B,iBAAa,CAAC7D,WAAd,CAA0BsG,WAA1B;AACAzC,iBAAa,CAAC7D,WAAd,CAA0BkE,YAA1B;AACA8B,WAAO,CAAChG,WAAR,CAAoB6D,aAApB;AAEAC,cAAU,GAAGrE,aAAa,CAACjB,QAAD,CAA1B;AACAsF,cAAU,CAACyB,EAAX,GAAgB,QAAhB;AACA,QAAIiB,QAAqB,GAAG/G,aAAa,CAACnB,WAAD,CAAzC;AACAkI,YAAQ,CAACV,SAAT,GAAqB,OAArB;AACAU,YAAQ,CAACxG,WAAT,CAAqBkG,cAAc,CAACnE,OAAO,CAAC0E,KAAR,IAAiB5E,cAAc,CAAC4E,KAAjC,CAAnC;AACAtC,aAAS,GAAG1E,aAAa,CAACnB,WAAD,CAAzB;AACA6F,aAAS,CAACoB,EAAV,GAAe,cAAf;AACAzB,cAAU,CAAC9D,WAAX,CAAuBwG,QAAvB;AACA1C,cAAU,CAAC9D,WAAX,CAAuBmE,SAAvB;AACA6B,WAAO,CAAChG,WAAR,CAAoB8D,UAApB;AAEAiC,gBAAY,CAAC/F,WAAb,CAAyBgG,OAAzB,EApFkC,CAsFlC;;AACA1B,SAAK,GAAG7E,aAAa,CAAClB,QAAD,CAArB;AACA+F,SAAK,CAACiB,EAAN,GAAW,SAAX;AACAjB,SAAK,CAACvB,IAAN,GAAa,eAAb;AACAuB,SAAK,CAACkB,SAAN,CAAgBC,GAAhB,CAAoB,QAApB;AACAnB,SAAK,CAACkB,SAAN,CAAgBC,GAAhB,CAAoB,SAApB;AACAnB,SAAK,CAACtE,WAAN,CACEkG,cAAc,CAACnE,OAAO,CAAC2E,QAAR,IAAoB7E,cAAc,CAAC6E,QAApC,CADhB;AAGA,QAAIC,SAAsB,GAAGlH,aAAa,CAACnB,WAAD,CAA1C;AACAqI,aAAS,CAACb,SAAV,GAAsB,OAAtB;AACAa,aAAS,CAAC3G,WAAV,CACEkG,cAAc,CAACnE,OAAO,CAACuC,KAAR,IAAiBzC,cAAc,CAACyC,KAAjC,CADhB;AAGAA,SAAK,CAACtE,WAAN,CAAkB2G,SAAlB;;AAEA,QAAIC,4BAA4B,CAAC,QAAD,EAAW,OAAX,CAAhC,EAAqD;AACnDb,kBAAY,CAAC/F,WAAb,CAAyBsE,KAAzB;AACD,KAxGiC,CA0GlC;;;AACAC,WAAO,GAAG9E,aAAa,CAAClB,QAAD,CAAvB;AACAgG,WAAO,CAACgB,EAAR,GAAa,WAAb;AACAhB,WAAO,CAACxB,IAAR,GAAe,iBAAf;AACAwB,WAAO,CAACiB,SAAR,CAAkBC,GAAlB,CAAsB,QAAtB;AACAlB,WAAO,CAACiB,SAAR,CAAkBC,GAAlB,CAAsB,WAAtB;AACAlB,WAAO,CAACvE,WAAR,CACEkG,cAAc,CAACnE,OAAO,CAAC2E,QAAR,IAAoB7E,cAAc,CAAC6E,QAApC,CADhB;AAGA,QAAIG,WAAwB,GAAGpH,aAAa,CAACnB,WAAD,CAA5C;AACAuI,eAAW,CAACf,SAAZ,GAAwB,OAAxB;AACAe,eAAW,CAAC7G,WAAZ,CACEkG,cAAc,CAACnE,OAAO,CAACwC,OAAR,IAAmB1C,cAAc,CAAC0C,OAAnC,CADhB;AAGAA,WAAO,CAACvE,WAAR,CAAoB6G,WAApB;;AAEA,QAAID,4BAA4B,CAAC,QAAD,EAAW,SAAX,CAAhC,EAAuD;AACrDb,kBAAY,CAAC/F,WAAb,CAAyBuE,OAAzB;AACD,KA5HiC,CA8HlC;;;AACAC,SAAK,GAAG/E,aAAa,CAAClB,QAAD,CAArB;AACAiG,SAAK,CAACe,EAAN,GAAW,SAAX;AACAf,SAAK,CAACzB,IAAN,GAAa,eAAb;AACAyB,SAAK,CAACgB,SAAN,CAAgBC,GAAhB,CAAoB,QAApB;AACAjB,SAAK,CAACgB,SAAN,CAAgBC,GAAhB,CAAoB,SAApB;AACAjB,SAAK,CAACxE,WAAN,CACEkG,cAAc,CAACnE,OAAO,CAAC2E,QAAR,IAAoB7E,cAAc,CAAC6E,QAApC,CADhB;AAGA,QAAII,SAAsB,GAAGrH,aAAa,CAACnB,WAAD,CAA1C;AACAwI,aAAS,CAAChB,SAAV,GAAsB,OAAtB;AACAgB,aAAS,CAAC9G,WAAV,CACEkG,cAAc,CAACnE,OAAO,CAACyC,KAAR,IAAiB3C,cAAc,CAAC2C,KAAjC,CADhB;AAGAA,SAAK,CAACxE,WAAN,CAAkB8G,SAAlB;;AAEA,QAAIF,4BAA4B,CAAC,QAAD,EAAW,OAAX,CAAhC,EAAqD;AACnDb,kBAAY,CAAC/F,WAAb,CAAyBwE,KAAzB;AACD,KAhJiC,CAkJlC;;;AACAC,eAAI,GAAGhF,aAAa,CAAClB,QAAD,CAApB;AACAkG,eAAI,CAACc,EAAL,GAAU,QAAV;AACAd,eAAI,CAAC1B,IAAL,GAAY,cAAZ;AACA0B,eAAI,CAACe,SAAL,CAAeC,GAAf,CAAmB,QAAnB;AACAhB,eAAI,CAACe,SAAL,CAAeC,GAAf,CAAmB,WAAnB;AACA,QAAIsB,QAAqB,GAAGtH,aAAa,CAACnB,WAAD,CAAzC;AACAyI,YAAQ,CAACjB,SAAT,GAAqB,OAArB;AACAiB,YAAQ,CAAC/G,WAAT,CAAqBkG,cAAc,CAACnE,OAAO,CAAC0C,IAAR,IAAgB5C,cAAc,CAAC4C,IAAhC,CAAnC;AACAA,eAAI,CAACzE,WAAL,CAAiB+G,QAAjB;AACAtC,eAAI,CAACzE,WAAL,CACEkG,cAAc,CAACnE,OAAO,CAACiF,QAAR,IAAoBnF,cAAc,CAACmF,QAApC,CADhB;AAIAjB,gBAAY,CAAC/F,WAAb,CAAyByE,WAAzB,EAhKkC,CAkKlC;;AACAK,YAAQ,GAAGrF,aAAa,CAAClB,QAAD,CAAxB;AACAuG,YAAQ,CAACS,EAAT,GAAc,QAAd;AACAT,YAAQ,CAAC/B,IAAT,GAAgB,cAAhB;AACA+B,YAAQ,CAACU,SAAT,CAAmBC,GAAnB,CAAuB,QAAvB;AACAX,YAAQ,CAACU,SAAT,CAAmBC,GAAnB,CAAuB,OAAvB;AACAX,YAAQ,CAAC9E,WAAT,CAAqBkG,cAAc,CAACnE,OAAO,CAACkF,IAAR,IAAgBpF,cAAc,CAACoF,IAAhC,CAAnC;AAEAlB,gBAAY,CAAC/F,WAAb,CAAyB8E,QAAzB,EA1KkC,CA4KlC;;AACA,QAAI,oBAAO9C,MAAP,6CAAO,SAAQkF,UAAf,MAA8B,WAAlC,EAA+C;AAC7CzE,sBAAgB,GAAGT,MAAM,CAACkF,UAA1B;AACD;;AAED,QAAIzE,gBAAJ,EAAsB;AACpBsD,kBAAY,CAAC/F,WAAb,CAAyBmH,SAAS,EAAlC;AACD,KAnLiC,CAqLlC;;;AACA3H,YAAQ,CAACO,IAAT,CAAcC,WAAd,CAA0B4C,WAA1B,EAtLkC,CAwLlC;;AACAiD,mBAAe,CAAC/E,gBAAhB,CAAiC,OAAjC,EAA0CsG,UAA1C;AACD,GAvN4B,CAyN7B;;;AACA,MAAIC,eAAe,GAAG,CAAC,CAAC7H,QAAQ,CAAC6F,cAAT,CAAwBnH,UAAxB,CAAxB,CA1N6B,CA4N7B;;AACA,MAAIiE,UAAU,IAAI,CAACkF,eAAnB,EAAoC;AAAA;;AAClC;AACAxE,YAAQ,GAAGpD,aAAa,EAAxB;AACAoD,YAAQ,CAACjD,KAAT,CAAe0F,OAAf,GAAyB,MAAzB;AACAzC,YAAQ,CAAC0C,EAAT,GAAcrH,UAAd;AACA2E,YAAQ,CAAC2C,SAAT,CAAmBC,GAAnB,CAAuB,SAAvB;AACA5C,YAAQ,CAAClD,YAAT,CAAsB,MAAtB,EAA8B,QAA9B;AACAkD,YAAQ,CAAClD,YAAT,CAAsB,UAAtB,EAAkC,IAAlC;AACAkD,YAAQ,CAAClD,YAAT,CAAsB,iBAAtB,EAAyC,aAAzC,EARkC,CAUlC;;AACA,oBAAIqC,MAAJ,qCAAI,SAAQ0D,IAAZ,EAAkB;AAChBC,oBAAc;AACf,KAFD,MAEO;AACLC,qBAAe;AAChB,KAfiC,CAiBlC;;;AACA,QAAIC,gBAA4B,GAAGpG,aAAa,EAAhD;;AACAoG,oBAAe,CAACC,SAAhB,GAA4B,cAA5B;AACAjD,YAAQ,CAAC7C,WAAT,CAAqB6F,gBAArB,EApBkC,CAsBlC;;AACA,QAAIE,aAAyB,GAAGtG,aAAa,EAA7C;;AACAsG,iBAAY,CAACD,SAAb,GAAyB,iBAAzB;AACAjD,YAAQ,CAAC7C,WAAT,CAAqB+F,aAArB,EAzBkC,CA2BlC;;AACArC,YAAQ,GAAGjE,aAAa,CAAC,QAAD,CAAxB;AACAiE,YAAQ,CAAC6B,EAAT,GAAc,aAAd;AACA7B,YAAQ,CAACoC,SAAT,GAAqB,SAArB;;AACAC,iBAAY,CAAC/F,WAAb,CAAyB0D,QAAzB,EA/BkC,CAiClC;;;AACA,QAAI4D,UAAuB,GAAG7H,aAAa,EAA3C;AACA6H,cAAU,CAAC/B,EAAX,GAAgB,eAAhB;AACA+B,cAAU,CAACxB,SAAX,GAAuB,WAAvB;AAEA/B,aAAS,GAAGtE,aAAa,CAACjB,QAAD,CAAzB;AACAuF,aAAS,CAACwB,EAAV,GAAe,OAAf;AACA,QAAIgC,OAAoB,GAAG9H,aAAa,CAACnB,WAAD,CAAxC;AACAiJ,WAAO,CAACzB,SAAR,GAAoB,OAApB;AACAyB,WAAO,CAACvH,WAAR,CAAoBkG,cAAc,CAACnE,OAAO,CAAC0E,KAAR,IAAiB5E,cAAc,CAAC4E,KAAjC,CAAlC;AACArC,YAAQ,GAAG3E,aAAa,CAACnB,WAAD,CAAxB;AACA8F,YAAQ,CAACmB,EAAT,GAAc,aAAd;AACAxB,aAAS,CAAC/D,WAAV,CAAsBuH,OAAtB;AACAxD,aAAS,CAAC/D,WAAV,CAAsBoE,QAAtB;AACAkD,cAAU,CAACtH,WAAX,CAAuB+D,SAAvB;;AAEAgC,iBAAY,CAAC/F,WAAb,CAAyBsH,UAAzB,EAjDkC,CAmDlC;;;AACA5C,YAAQ,GAAGjF,aAAa,CAAClB,QAAD,CAAxB;AACAmG,YAAQ,CAACa,EAAT,GAAc,MAAd;AACAb,YAAQ,CAAC3B,IAAT,GAAgB,kBAAhB;AACA2B,YAAQ,CAACc,SAAT,CAAmBC,GAAnB,CAAuB,QAAvB;AACAf,YAAQ,CAACc,SAAT,CAAmBC,GAAnB,CAAuB,MAAvB,EAxDkC,CA0DlC;;AACAf,YAAQ,CAAC9E,KAAT,CAAe0F,OAAf,GAAyB,MAAzB;AAEAZ,YAAQ,CAAC1E,WAAT,CACEkG,cAAc,CAACnE,OAAO,CAAC2E,QAAR,IAAoB7E,cAAc,CAAC6E,QAApC,CADhB;AAGA,QAAIc,YAAyB,GAAG/H,aAAa,CAACnB,WAAD,CAA7C;AACAkJ,gBAAY,CAAC1B,SAAb,GAAyB,OAAzB;AACA0B,gBAAY,CAACxH,WAAb,CACEkG,cAAc,CAACnE,OAAO,CAAC2C,QAAR,IAAoB7C,cAAc,CAAC6C,QAApC,CADhB;AAGAA,YAAQ,CAAC1E,WAAT,CAAqBwH,YAArB;;AAEA,QAAIZ,4BAA4B,CAAC,QAAD,EAAW,UAAX,CAAhC,EAAwD;AACtDb,mBAAY,CAAC/F,WAAb,CAAyB0E,QAAzB;AACD,KAzEiC,CA2ElC;;;AACAC,MAAE,GAAGlF,aAAa,CAAClB,QAAD,CAAlB;AACAoG,MAAE,CAACY,EAAH,GAAQ,MAAR;AACAZ,MAAE,CAAC5B,IAAH,GAAU,kBAAV;AACA4B,MAAE,CAACa,SAAH,CAAaC,GAAb,CAAiB,QAAjB;AACAd,MAAE,CAACa,SAAH,CAAaC,GAAb,CAAiB,MAAjB;AACAd,MAAE,CAAC3E,WAAH,CAAekG,cAAc,CAACnE,OAAO,CAAC2E,QAAR,IAAoB7E,cAAc,CAAC6E,QAApC,CAA7B;AACA,QAAIe,MAAmB,GAAGhI,aAAa,CAACnB,WAAD,CAAvC;AACAmJ,UAAM,CAAC3B,SAAP,GAAmB,OAAnB;AACA2B,UAAM,CAACzH,WAAP,CACEkG,cAAc,CAACnE,OAAO,CAAC2F,QAAR,IAAoB7F,cAAc,CAAC6F,QAApC,CADhB;AAGA/C,MAAE,CAAC3E,WAAH,CAAeyH,MAAf;;AAEA,QAAIb,4BAA4B,CAAC,QAAD,EAAW,UAAX,CAAhC,EAAwD;AACtDb,mBAAY,CAAC/F,WAAb,CAAyB2E,EAAzB;AACD,KA3FiC,CA6FlC;;;AACAC,SAAK,GAAGnF,aAAa,CAAClB,QAAD,CAArB;AACAqG,SAAK,CAACW,EAAN,GAAW,SAAX;AACAX,SAAK,CAAC7B,IAAN,GAAa,eAAb;AACA6B,SAAK,CAACY,SAAN,CAAgBC,GAAhB,CAAoB,QAApB;AACAb,SAAK,CAACY,SAAN,CAAgBC,GAAhB,CAAoB,SAApB;AACAb,SAAK,CAAC5E,WAAN,CACEkG,cAAc,CAACnE,OAAO,CAAC2E,QAAR,IAAoB7E,cAAc,CAAC6E,QAApC,CADhB;AAGA,QAAIiB,SAAsB,GAAGlI,aAAa,CAACnB,WAAD,CAA1C;AACAqJ,aAAS,CAAC7B,SAAV,GAAsB,OAAtB;AACA6B,aAAS,CAAC3H,WAAV,CACEkG,cAAc,CAACnE,OAAO,CAAC6C,KAAR,IAAiB/C,cAAc,CAAC+C,KAAjC,CADhB;AAGAA,SAAK,CAAC5E,WAAN,CAAkB2H,SAAlB;;AAEA,QAAIf,4BAA4B,CAAC,QAAD,EAAW,OAAX,CAAhC,EAAqD;AACnDb,mBAAY,CAAC/F,WAAb,CAAyB4E,KAAzB;AACD,KA/GiC,CAiHlC;;;AACAC,QAAI,GAAGpF,aAAa,CAAClB,QAAD,CAApB;AACAsG,QAAI,CAACU,EAAL,GAAU,QAAV;AACAV,QAAI,CAAC9B,IAAL,GAAY,cAAZ;AACA8B,QAAI,CAACW,SAAL,CAAeC,GAAf,CAAmB,QAAnB;AACAZ,QAAI,CAACW,SAAL,CAAeC,GAAf,CAAmB,WAAnB;AACA,QAAImC,QAAqB,GAAGnI,aAAa,CAACnB,WAAD,CAAzC;AACAsJ,YAAQ,CAAC9B,SAAT,GAAqB,OAArB;AACA8B,YAAQ,CAAC5H,WAAT,CAAqBkG,cAAc,CAACnE,OAAO,CAAC8C,IAAR,IAAgBhD,cAAc,CAACgD,IAAhC,CAAnC;AACAA,QAAI,CAAC7E,WAAL,CAAiB4H,QAAjB;AACA/C,QAAI,CAAC7E,WAAL,CACEkG,cAAc,CAACnE,OAAO,CAAC8F,WAAR,IAAuBhG,cAAc,CAACgG,WAAvC,CADhB;;AAIA9B,iBAAY,CAAC/F,WAAb,CAAyB6E,IAAzB,EA/HkC,CAiIlC;;;AACAE,WAAO,GAAGtF,aAAa,CAAClB,QAAD,CAAvB;AACAwG,WAAO,CAACQ,EAAR,GAAa,YAAb;AACAR,WAAO,CAAChC,IAAR,GAAe,cAAf;AACAgC,WAAO,CAACS,SAAR,CAAkBC,GAAlB,CAAsB,QAAtB;AACAV,WAAO,CAACS,SAAR,CAAkBC,GAAlB,CAAsB,OAAtB;AACAV,WAAO,CAAC/E,WAAR,CAAoBkG,cAAc,CAACnE,OAAO,CAACkF,IAAR,IAAgBpF,cAAc,CAACoF,IAAhC,CAAlC;;AAEAlB,iBAAY,CAAC/F,WAAb,CAAyB+E,OAAzB,EAzIkC,CA2IlC;;;AACA,QAAI,oBAAO/C,MAAP,6CAAO,SAAQkF,UAAf,MAA8B,WAAlC,EAA+C;AAC7CzE,sBAAgB,GAAGT,MAAM,CAACkF,UAA1B;AACD;;AAED,QAAIzE,gBAAJ,EAAsB;AACpBsD,mBAAY,CAAC/F,WAAb,CAAyBmH,SAAS,EAAlC;AACD,KAlJiC,CAoJlC;;;AACA3H,YAAQ,CAACO,IAAT,CAAcC,WAAd,CAA0B6C,QAA1B,EArJkC,CAuJlC;;AACAgD,oBAAe,CAAC/E,gBAAhB,CAAiC,OAAjC,EAA0CsG,UAA1C;AACD,GAtX4B,CAwX7B;;;AACA5H,UAAQ,CAACsB,gBAAT,CAA0B,OAA1B,EAAmCgH,mBAAnC;AACD,CA1XD;AA4XA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASA,mBAAT,CAA6BC,KAA7B,EAAoD;AAClD;AACA,MACE,CAACvI,QAAQ,CAACO,IAAT,CAAciI,QAAd,CAAuBpF,WAAvB,CAAD,IACA,CAACpD,QAAQ,CAACO,IAAT,CAAciI,QAAd,CAAuBnF,QAAvB,CAFH,EAGE;AACA,WAAO,KAAP;AACD,GAPiD,CASlD;;;AACA,MAAIoF,eAAe,EAAnB,EAAuB;AACrB,WAAO,KAAP;AACD,GAZiD,CAclD;;;AACA,MAAIC,IAAI,GACLH,KAAK,CAACI,YAAN,IAAsBJ,KAAK,CAACI,YAAN,EAAvB,IACAA,YAAY,CAACJ,KAAK,CAAC1G,MAAP,CAFd;;AAIA,MAAI6G,IAAJ,EAAU;AACRA,QAAI,CAACE,OAAL,CAAa,UAACC,OAAD,EAA0B;AACrC,UAAIA,OAAO,YAAYC,YAAnB,IAAmCD,OAAO,YAAYE,MAA1D,EAAkE;AAChE,eAAO,KAAP;AACD,OAHoC,CAKrC;;;AACA,UAAIrG,aAAa,IAAIC,UAAjB,IAA+BC,UAAnC,EAA+C;AAC7C,YAAIoG,eAAe,GAAGC,sBAAsB,CAACJ,OAAD,CAA5C,CAD6C,CAG7C;;AACA,YAAIG,eAAJ,EAAqB;AAAA;;AACnB;AACA7F,0BAAgB,GAAG6F,eAAnB;AAEA,cAAIE,qBAAqB,wBAAG/F,gBAAH,sDAAG,kBAAkBgG,IAA9C;;AAEA,cAAID,qBAAJ,EAA2B;AACzB;AACA,gBACGxG,aAAa,IAAIwG,qBAAqB,KAAKzK,WAA5C,IACCkE,UAAU,IAAIuG,qBAAqB,KAAKxK,UADzC,IAECkE,UAAU,IAAIsG,qBAAqB,KAAKvK,UAH3C,EAIE;AACA;AACA4J,mBAAK,CAAC3G,cAAN,GAFA,CAIA;;AACAwH,6BAAe,CAACP,OAAD,CAAf;AAEA,qBAAO,IAAP;AACD;AACF;AACF;AACF;AACF,KAlCD;AAmCD;;AAED,SAAO,KAAP;AACD;AAED;AACA;AACA;AACA;;;AACA,SAASO,eAAT,CACEC,kBADF,EAEW;AAAA;;AACT,MAAIC,aAAJ,CADS,CAGT;;AACA,MAAIH,IAAqB,yBAAGhG,gBAAH,uDAAG,mBAAkBgG,IAA9C;AACA,MAAII,YAAoC,yBAAGpG,gBAAH,uDAAG,mBAAkBoG,YAA7D,CALS,CAOT;;AACA,MAAI,CAACJ,IAAL,EAAW,OAAO,KAAP;;AAEX,MAAI,OAAOE,kBAAP,KAA8B,QAAlC,EAA4C;AAC1C;AACA9F,QAAI,GAAG8F,kBAAP;AACD,GAHD,MAGO;AACL;AACA9F,QAAI,GAAG8F,kBAAkB,CAACG,YAAnB,CAAgC,MAAhC,CAAP;AACAF,iBAAa,GAAGD,kBAAhB;AACD,GAjBQ,CAmBT;;;AACA,MAAIF,IAAI,KAAK1K,WAAb,EAA0B;AAAA;;AACxB;AACA,QAAI8K,YAAY,KAAK3K,OAArB,EAA8B;AAC5B,UAAI6K,WAAW,CAAClG,IAAD,EAAOvF,MAAP,CAAf,EAA+B;AAC7ByF,YAAI,GAAGiG,kBAAkB,CAACnG,IAAI,CAACoG,KAAL,CAAW,GAAX,EAAgB,CAAhB,EAAmBA,KAAnB,CAAyB3L,MAAzB,EAAiC,CAAjC,EAAoC4L,IAApC,EAAD,CAAzB;AACD,OAFD,MAEO,IAAIH,WAAW,CAAClG,IAAD,EAAOtF,MAAP,CAAf,EAA+B;AACpCwF,YAAI,GAAGiG,kBAAkB,CAACnG,IAAI,CAACoG,KAAL,CAAW,GAAX,EAAgB,CAAhB,EAAmBA,KAAnB,CAAyB1L,MAAzB,EAAiC,CAAjC,EAAoC2L,IAApC,EAAD,CAAzB;AACD;;AAED,UAAI;AACFtG,WAAG,GAAG,IAAIuG,GAAJ,CAAQtG,IAAR,CAAN;AAEA,YAAIuG,SAA0B,GAAGxG,GAAG,CAACyG,YAArC,CAHE,CAIF;;AACArG,UAAE,GAAGoG,SAAS,CAACE,GAAV,CAAc,IAAd,CAAL;AACArG,WAAG,GAAGmG,SAAS,CAACE,GAAV,CAAc,KAAd,CAAN;AACApG,eAAO,GAAGkG,SAAS,CAACE,GAAV,CAAc,SAAd,CAAV;AACAnG,gBAAQ,GAAGiG,SAAS,CAACE,GAAV,CAAc,MAAd,CAAX;AACD,OATD,CASE,OAAOC,KAAP,EAAc;AACdC,eAAO,CAACC,GAAR,CAAYF,KAAZ;AACD;AACF,KAnBD,MAmBO,IAAIV,YAAY,KAAK1K,SAArB,EAAgC;AACrC;AACA;AACA4E,UAAI,GACF6F,aAAa,CAACE,YAAd,CAA2B,cAA3B,KACAF,aAAa,CAACE,YAAd,CAA2B,aAA3B,CADA,GAEIF,aAAa,CAACE,YAAd,CAA2B,cAA3B,IACA,GADA,GAEAF,aAAa,CAACE,YAAd,CAA2B,aAA3B,CAJJ,GAKI,IANN;;AAQA,UAAI;AACFlG,WAAG,GAAG,IAAIuG,GAAJ,CAAQ7L,MAAM,GAAGoM,kBAAkB,CAAC3G,IAAD,CAAnC,CAAN;AACD,OAFD,CAEE,OAAOwG,KAAP,EAAc;AACdC,eAAO,CAACC,GAAR,CAAYF,KAAZ;AACD;;AAED,UAAII,UAAoB,GAAG,EAA3B,CAjBqC,CAmBrC;;AACA3G,QAAE,GAAG4F,aAAa,CAACE,YAAd,CAA2B,iBAA3B,IACDF,aAAa,CAACE,YAAd,CAA2B,iBAA3B,IACA,GADA,GAEAF,aAAa,CAACE,YAAd,CAA2B,gBAA3B,CAHC,GAID,IAJJ,CApBqC,CA0BrC;;AACA,UAAI9F,EAAJ,EAAQ2G,UAAU,CAACC,IAAX,CAAgB,QAAQ5G,EAAxB,EA3B6B,CA6BrC;;AACAC,SAAG,GAAG2F,aAAa,CAACE,YAAd,CAA2B,kBAA3B,IACFF,aAAa,CAACE,YAAd,CAA2B,kBAA3B,IACA,GADA,GAEAF,aAAa,CAACE,YAAd,CAA2B,iBAA3B,CAHE,GAIF,IAJJ,CA9BqC,CAoCrC;;AACA,UAAI7F,GAAJ,EAAS0G,UAAU,CAACC,IAAX,CAAgB,SAAS3G,GAAzB,EArC4B,CAuCrC;;AACAC,aAAO,GAAG0F,aAAa,CAACE,YAAd,CAA2B,cAA3B,CAAV,CAxCqC,CA0CrC;;AACA,UAAI5F,OAAJ,EAAayG,UAAU,CAACC,IAAX,CAAgB,aAAa1G,OAA7B,EA3CwB,CA6CrC;;AACAC,cAAQ,GAAGyF,aAAa,CAACE,YAAd,CAA2B,WAA3B,CAAX,CA9CqC,CAgDrC;;AACA,UAAI3F,QAAJ,EAAcwG,UAAU,CAACC,IAAX,CAAgB,UAAUzG,QAA1B,EAjDuB,CAmDrC;;AACAL,kBAAY,GAAG+G,iBAAiB,CAC9BvM,MAAM,GAAGoM,kBAAkB,CAAC3G,IAAD,CADG,EAE9B4G,UAF8B,CAAhC;AAID,KA7EuB,CA+ExB;;;AACA,QAAI,oBAAO7H,MAAP,6CAAO,SAAQnD,aAAf,MAAiC,WAArC,EAAkD;AAChD0D,yBAAmB,GAAGP,MAAM,CAACnD,aAA7B;AACD;;AAED,QAAI0D,mBAAJ,EAAyB;AACvB;AACA,UAAI,CAACvD,cAAc,CAACiE,IAAI,CAACkG,KAAL,CAAW,GAAX,CAAD,CAAnB,EAAsC;AACpC,eAAO,KAAP;AACD,OAJsB,CAMvB;;;AACA,UAAIjG,EAAE,IAAI,CAAClE,cAAc,CAACkE,EAAE,CAACiG,KAAH,CAAS,GAAT,CAAD,CAAzB,EAA0CjG,EAAE,GAAG,EAAL;AAC1C,UAAIC,GAAG,IAAI,CAACnE,cAAc,CAACmE,GAAG,CAACgG,KAAJ,CAAU,GAAV,CAAD,CAA1B,EAA4ChG,GAAG,GAAG,EAAN;AAC7C;AACF,GA9FD,CA+FA;AA/FA,OAgGK,IAAIwF,IAAI,KAAKzK,UAAb,EAAyB;AAAA;;AAC5B,UAAI6K,YAAY,KAAK3K,OAArB,EAA8B;AAC5B,YAAI6K,WAAW,CAAClG,IAAD,EAAOrF,GAAP,CAAf,EAA4B;AAC1B0B,aAAG,GAAG8J,kBAAkB,CAACnG,IAAI,CAACoG,KAAL,CAAW,GAAX,EAAgB,CAAhB,EAAmBA,KAAnB,CAAyBzL,GAAzB,EAA8B,CAA9B,EAAiC0L,IAAjC,EAAD,CAAxB;AACD,SAFD,MAEO,IAAIH,WAAW,CAAClG,IAAD,EAAOpF,MAAP,CAAf,EAA+B;AACpCyB,aAAG,GAAG8J,kBAAkB,CAACnG,IAAI,CAACoG,KAAL,CAAW,GAAX,EAAgB,CAAhB,EAAmBA,KAAnB,CAAyBxL,MAAzB,EAAiC,CAAjC,EAAoCyL,IAApC,EAAD,CAAxB;AACD,SAFM,MAEA,IAAIH,WAAW,CAAClG,IAAD,EAAOnF,GAAP,CAAf,EAA4B;AACjCwB,aAAG,GAAG8J,kBAAkB,CAACnG,IAAI,CAACoG,KAAL,CAAW,GAAX,EAAgB,CAAhB,EAAmBA,KAAnB,CAAyBvL,GAAzB,EAA8B,CAA9B,EAAiCwL,IAAjC,EAAD,CAAxB;AACD;;AAED,YAAI;AACFtG,aAAG,GAAG,IAAIuG,GAAJ,CAAQtG,IAAR,CAAN;AACA,cAAIuG,UAA0B,GAAGxG,GAAG,CAACyG,YAArC,CAFE,CAIF;;AACAjG,aAAG,GAAGgG,UAAS,CAACE,GAAV,CAAc,MAAd,CAAN;AACD,SAND,CAME,OAAOC,KAAP,EAAc;AACdC,iBAAO,CAACC,GAAR,CAAYF,KAAZ;AACD;AACF,OAlBD,MAkBO,IAAIV,YAAY,IAAI1K,SAApB,EAA+B;AACpCe,WAAG,GAAG0J,aAAa,CAACE,YAAd,CAA2B,UAA3B,CAAN;AACA1F,WAAG,GAAGwF,aAAa,CAACE,YAAd,CAA2B,UAA3B,CAAN;;AAEA,YAAI;AACFlG,aAAG,GAAG,IAAIuG,GAAJ,CAAQ3L,GAAG,GAAGkM,kBAAkB,CAACxK,GAAD,CAAhC,CAAN;AACD,SAFD,CAEE,OAAOqK,KAAP,EAAc;AACdC,iBAAO,CAACC,GAAR,CAAYF,KAAZ;AACD;;AAED,YAAII,WAAoB,GAAG,EAA3B,CAVoC,CAYpC;;AACA,YAAIvG,GAAJ,EAASuG,WAAU,CAACC,IAAX,CAAgB,UAAUxG,GAA1B,EAb2B,CAepC;;AACAN,oBAAY,GAAG+G,iBAAiB,CAC9BrM,GAAG,GAAGkM,kBAAkB,CAACxK,GAAD,CADM,EAE9ByK,WAF8B,CAAhC;AAID,OAvC2B,CAyC5B;;;AACA,UAAI,oBAAO7H,MAAP,6CAAO,SAAQ7C,WAAf,MAA+B,WAAnC,EAAgD;AAC9CqD,yBAAiB,GAAGR,MAAM,CAAC7C,WAA3B;AACD,OA5C2B,CA8C5B;;;AACA,UAAIqD,iBAAJ,EAAuB;AACrB,YAAI,CAACrD,WAAW,CAACC,GAAD,CAAhB,EAAuB;AACxB,OAjD2B,CAmD5B;;;AACA,UAAI0J,aAAa,IAAIA,aAAa,CAACkB,YAAd,CAA2B,eAA3B,CAArB,EAAkE;AAChEzG,wBAAgB,GAAGuF,aAAa,CAACE,YAAd,CAA2B,eAA3B,CAAnB;AACD,OAFD,MAEO;AACLzF,wBAAgB,GAAG,IAAnB;AACD,OAxD2B,CA0D5B;;;AACA,UAAIuF,aAAa,IAAIA,aAAa,CAACkB,YAAd,CAA2B,YAA3B,CAArB,EAA+D;AAC7DxG,qBAAa,GAAGsF,aAAa,CAACE,YAAd,CAA2B,YAA3B,CAAhB;AACD,OAFD,MAEO;AACLxF,qBAAa,GAAG,IAAhB;AACD;AACF,KApLQ,CAsLT;;;AACA,MAAI,YAAAxB,MAAM,UAAN,oCAAQ0D,IAAR,IAAgBoD,aAAa,CAACtD,SAAd,CAAwBwC,QAAxB,CAAiC,MAAjC,CAApB,EAA8D;AAC5DrC,kBAAc;AACf,GAFD,MAEO;AACLC,mBAAe;AAChB,GA3LQ,CA6LT;;;AACAqE,cAAY;AAEZ,SAAO,IAAP;AACD;AAED;AACA;AACA;AACA;;;AACA,SAASC,kBAAT,CAA4BC,SAA5B,EAAwD;AACtD;AACAC,QAAM;;AAEN,MAAInB,WAAW,CAACkB,SAAD,EAAY3M,MAAZ,CAAX,IAAkCyL,WAAW,CAACkB,SAAD,EAAY1M,MAAZ,CAAjD,EAAsE;AACpEkF,oBAAgB,GAAG;AACjBgG,UAAI,EAAE1K,WADW;AAEjB8K,kBAAY,EAAE3K,OAAOA;AAFJ,KAAnB;AAIAwK,mBAAe,CAACuB,SAAD,CAAf;AACA,WAAO,IAAP;AACD,GAPD,MAOO,IACLlB,WAAW,CAACkB,SAAD,EAAYzM,GAAZ,CAAX,IACAuL,WAAW,CAACkB,SAAD,EAAYxM,MAAZ,CADX,IAEAsL,WAAW,CAACkB,SAAD,EAAYvM,GAAZ,CAHN,EAIL;AACA+E,oBAAgB,GAAG;AACjBgG,UAAI,EAAEzK,UADW;AAEjB6K,kBAAY,EAAE3K,OAAOA;AAFJ,KAAnB;AAIAwK,mBAAe,CAACuB,SAAD,CAAf;AACA,WAAO,IAAP;AACD;;AACD,SAAO,KAAP;AACD;AAED;AACA;AACA;AACA;;;AACA,SAASF,YAAT,GAAiC;AAAA;;AAC/B;AACA,MAAItB,IAAqB,yBAAGhG,gBAAH,uDAAG,mBAAkBgG,IAA9C,CAF+B,CAI/B;;AACA,MAAI,CAACA,IAAL,EAAW,OAAO,KAAP,CALoB,CAO/B;;AACA,MAAIA,IAAI,KAAK1K,WAAb,EAA0B;AACxB;AACAwF,SAAK,CAAC4G,WAAN,GAAoBpH,IAAI,CAACkG,KAAL,CAAW,GAAX,EAAgBmB,IAAhB,CAAqB,IAArB,CAApB,CAFwB,CAIxB;;AACA,QAAI1D,4BAA4B,CAAC,QAAD,EAAW,IAAX,CAA5B,IAAgD1D,EAApD,EAAwD;AACtDS,cAAQ,CAAC/D,KAAT,CAAe0F,OAAf,GAAyB,OAAzB;AACAtB,aAAO,CAACqG,WAAR,GAAsBnH,EAAE,CAACiG,KAAH,CAAS,GAAT,EAAcmB,IAAd,CAAmB,IAAnB,CAAtB;AACD,KAHD,MAGO;AACL3G,cAAQ,CAAC/D,KAAT,CAAe0F,OAAf,GAAyB,MAAzB;AACD;;AAED,QAAIsB,4BAA4B,CAAC,QAAD,EAAW,KAAX,CAA5B,IAAiDzD,GAArD,EAA0D;AACxDS,eAAS,CAAChE,KAAV,CAAgB0F,OAAhB,GAA0B,OAA1B;AACArB,cAAQ,CAACoG,WAAT,GAAuBlH,GAAG,CAACgG,KAAJ,CAAU,GAAV,EAAemB,IAAf,CAAoB,IAApB,CAAvB;AACD,KAHD,MAGO;AACL1G,eAAS,CAAChE,KAAV,CAAgB0F,OAAhB,GAA0B,MAA1B;AACD;;AAED,QAAIsB,4BAA4B,CAAC,QAAD,EAAW,SAAX,CAA5B,IAAqDxD,OAAzD,EAAkE;AAChES,mBAAa,CAACjE,KAAd,CAAoB0F,OAApB,GAA8B,OAA9B;AACApB,kBAAY,CAACmG,WAAb,GAA2BjH,OAA3B;AACD,KAHD,MAGO;AACLS,mBAAa,CAACjE,KAAd,CAAoB0F,OAApB,GAA8B,MAA9B;AACD;;AAED,QAAIsB,4BAA4B,CAAC,QAAD,EAAW,MAAX,CAA5B,IAAkDvD,QAAtD,EAAgE;AAC9DS,gBAAU,CAAClE,KAAX,CAAiB0F,OAAjB,GAA2B,OAA3B;AACAnB,eAAS,CAACkG,WAAV,GAAwBhH,QAAxB;AACD,KAHD,MAGO;AACLS,gBAAU,CAAClE,KAAX,CAAiB0F,OAAjB,GAA2B,MAA3B;AACD,KA/BuB,CAiCxB;;;AACAhB,SAAK,CAACxD,gBAAN,CAAuB,OAAvB,EAAgCyJ,SAAhC;AAEAhG,WAAO,CAACzD,gBAAR,CAAyB,OAAzB,EAAkC0J,WAAlC;AAEAhG,SAAK,CAAC1D,gBAAN,CAAuB,OAAvB,EAAgC2J,aAAhC;AAEAhG,eAAI,CAAC3D,gBAAL,CAAsB,OAAtB,EAA+B4J,WAA/B;AAEA5F,YAAQ,CAAChE,gBAAT,CAA0B,OAA1B,EAAmCmG,IAAnC;AACD,GA3CD,CA4CA;AA5CA,OA6CK,IAAI0B,IAAI,KAAKzK,UAAb,EAAyB;AAC5B;AACAwF,cAAQ,CAAC2G,WAAT,GAAuBjL,GAAvB;;AAEA,UAAIwH,4BAA4B,CAAC,QAAD,EAAW,KAAX,CAA5B,IAAiDtD,GAArD,EAA0D;AACxDS,iBAAS,CAACnE,KAAV,CAAgB0F,OAAhB,GAA0B,OAA1B;AACAlB,gBAAQ,CAACiG,WAAT,GAAuB/G,GAAvB;AACD,OAHD,MAGO;AACLS,iBAAS,CAACnE,KAAV,CAAgB0F,OAAhB,GAA0B,MAA1B;AACD,OAT2B,CAW5B;;;AACAX,QAAE,CAAC7D,gBAAH,CAAoB,OAApB,EAA6B6J,YAA7B,EAZ4B,CAc5B;;AACA,UAAIpH,gBAAJ,EAAsB;AACpB/D,gBAAQ,CAAC6F,cAAT,CAAwB,MAAxB,EAAgCzF,KAAhC,CAAsC0F,OAAtC,GAAgD,OAAhD;AACAZ,gBAAQ,CAAC5D,gBAAT,CAA0B,OAA1B,EAAmC8J,YAAnC;AACD,OAHD,MAGO;AACLpL,gBAAQ,CAAC6F,cAAT,CAAwB,MAAxB,EAAgCzF,KAAhC,CAAsC0F,OAAtC,GAAgD,MAAhD;AACD;;AAEDV,WAAK,CAAC9D,gBAAN,CAAuB,OAAvB,EAAgC+J,SAAhC;AAEAhG,UAAI,CAAC/D,gBAAL,CAAsB,OAAtB,EAA+B4J,WAA/B;AAEA3F,aAAO,CAACjE,gBAAR,CAAyB,OAAzB,EAAkCmG,IAAlC;AACD,KAhF8B,CAkF/B;;;AACA6D,YAAU,CAACnC,IAAD,CAAV,CAnF+B,CAqF/B;;AACAnJ,UAAQ,CAACsB,gBAAT,CAA0B,SAA1B,EAAqCiK,aAArC;AAEA,SAAO,IAAP;AACD,C,CAED;;;AACA,IAAMR,SAAS,GAAG,SAAZA,SAAY,CAACxC,KAAD,EAAyB;AAAA;;AACzCA,OAAK,CAAC3G,cAAN;AAEA,MAAI4J,SAAJ;AACA,MAAIjC,YAAoC,yBAAGpG,gBAAH,uDAAG,mBAAkBoG,YAA7D;;AAEA,MAAIA,YAAY,KAAK3K,OAArB,EAA8B;AAC5B,QAAI;AACF4M,eAAS,GAAGlI,GAAG,CAACmI,QAAJ,EAAZ;AACD,KAFD,CAEE,OAAOhK,CAAP,EAAU;AACV+J,eAAS,GAAGjI,IAAZ;AACD;AACF,GAND,MAMO,IAAIgG,YAAY,KAAK1K,SAArB,EAAgC;AACrC2M,aAAS,GAAGhI,YAAZ;AACD,GAdwC,CAgBzC;;;AACA,MAAIkI,QAAgB,GAClB,qDACAtB,kBAAkB,CAACoB,SAAD,CAFpB,CAjByC,CAqBzC;;AACAG,QAAM,CAAC1G,IAAP,CAAYyG,QAAZ,EAAsB,QAAtB,EAAgC,sBAAhC,EAtByC,CAwBzC;;AACA9D,YAAU;AACX,CA1BD;;AA4BA,IAAMoD,WAAW,GAAG,SAAdA,WAAc,CAACzC,KAAD,EAAyB;AAAA;;AAC3CA,OAAK,CAAC3G,cAAN,GAD2C,CAG3C;;AACA,MAAIgK,kBAA0B,GAC5B,6DADF,CAJ2C,CAO3C;;AACA,mBAAIpJ,MAAJ,sCAAI,UAAQqJ,SAAZ,EAAuB;AACrBD,sBAAkB,GAChB,kEADF;AAED,GAX0C,CAa3C;;;AACA,MAAIE,UAAkB,GAAGF,kBAAkB,GAAGxB,kBAAkB,CAAC3G,IAAD,CAAhE,CAd2C,CAgB3C;;AACA,MAAIG,OAAJ,EAAa;AACXkI,cAAU,GAAGA,UAAU,CAACC,MAAX,CAAkB,cAAc3B,kBAAkB,CAACxG,OAAD,CAAlD,CAAb;AACD;;AAED,MAAIC,QAAJ,EAAc;AACZiI,cAAU,GAAGA,UAAU,CAACC,MAAX,CAAkB,WAAW3B,kBAAkB,CAACvG,QAAD,CAA/C,CAAb;AACD,GAvB0C,CAyB3C;;;AACA8H,QAAM,CAAC1G,IAAP,CAAY6G,UAAZ,EAAwB,QAAxB,EAAkC,sBAAlC,EA1B2C,CA4B3C;;AACAlE,YAAU;AACX,CA9BD;;AAgCA,IAAMqD,aAAa,GAAG,SAAhBA,aAAgB,CAAC1C,KAAD,EAAyB;AAC7CA,OAAK,CAAC3G,cAAN,GAD6C,CAG7C;;AACA,MAAIoK,QAAgB,GAAG,wCAAwCvI,IAA/D,CAJ6C,CAM7C;;AACA,MAAIG,OAAJ,EAAa;AACXoI,YAAQ,GAAGA,QAAQ,CAACD,MAAT,CAAgB,cAAc3B,kBAAkB,CAACxG,OAAD,CAAhD,CAAX;AACD;;AACD,MAAIC,QAAJ,EAAc;AACZmI,YAAQ,GAAGA,QAAQ,CAACD,MAAT,CAAgB,WAAW3B,kBAAkB,CAACvG,QAAD,CAA7C,CAAX;AACD,GAZ4C,CAc7C;;;AACA8H,QAAM,CAAC1G,IAAP,CAAY+G,QAAZ,EAAsB,QAAtB,EAAgC,sBAAhC,EAf6C,CAiB7C;;AACApE,YAAU;AACX,CAnBD;;AAqBA,IAAMwD,YAAY,GAAG,SAAfA,YAAe,CAAC7C,KAAD,EAAyB;AAC5CA,OAAK,CAAC3G,cAAN,GAD4C,CAG5C;;AACA,MAAImC,gBAAJ,EAAsB;AACpB;AACA,QAAIkI,KAAa,GAAG,kBAAkB7B,kBAAkB,CAACrG,gBAAD,CAAxD,CAFoB,CAIpB;;AACA4H,UAAM,CAAC1G,IAAP,CAAYgH,KAAZ,EAAmB,QAAnB,EAA6B,sBAA7B,EALoB,CAOpB;;AACArE,cAAU;AACX;AACF,CAdD;;AAgBA,IAAMyD,SAAS,GAAG,SAAZA,SAAY,CAAC9C,KAAD,EAAyB;AACzCA,OAAK,CAAC3G,cAAN;AAEA,MAAIwD,KAAa,GAAGpB,aAAa,IAAIpE,GAArC,CAHyC,CAKzC;;AACA,MAAIsM,QAAgB,GAAG,WAAW9B,kBAAkB,CAAChF,KAAD,CAApD,CANyC,CAQzC;;AACAuG,QAAM,CAAC1G,IAAP,CAAYiH,QAAZ,EAAsB,QAAtB,EAAgC,sBAAhC,EATyC,CAWzC;;AACAtE,YAAU;AACX,CAbD;;AAeA,IAAMuD,YAAY,GAAG,SAAfA,YAAe,CAAC5C,KAAD,EAAyB;AAC5CA,OAAK,CAAC3G,cAAN,GAD4C,CAG5C;;AACA,MAAIuK,UAAU,GAAGvM,GAAG,CAACwM,OAAJ,CAAYlN,SAAZ,EAAuB,EAAvB,EAA2BkN,OAA3B,CAAmChN,YAAnC,EAAiD,EAAjD,CAAjB,CAJ4C,CAM5C;;AACA,MAAIiN,KAAa,GAAG,mBAAmBjC,kBAAkB,CAAC+B,UAAD,CAAzD,CAP4C,CAS5C;;AACA,MAAIrI,GAAJ,EAAS;AACPuI,SAAK,GAAGA,KAAK,CAACN,MAAN,CAAa,WAAW3B,kBAAkB,CAACtG,GAAD,CAA1C,CAAR;AACD,GAZ2C,CAc5C;;;AACA6H,QAAM,CAAC1G,IAAP,CAAYoH,KAAZ,EAAmB,QAAnB,EAA6B,sBAA7B,EAf4C,CAiB5C;;AACAzE,YAAU;AACX,CAnBD;;AAqBA,IAAMsD,WAAW,GAAG,SAAdA,WAAc,CAAC3C,KAAD,EAAyB;AAAA;;AAC3CA,OAAK,CAAC3G,cAAN;AAEA,MAAI2H,YAAoC,yBAAGpG,gBAAH,uDAAG,mBAAkBoG,YAA7D,CAH2C,CAK3C;;AACA,MAAIA,YAAY,KAAK3K,OAArB,EAA8B;AAC5B+M,UAAM,CAACW,QAAP,CAAgB/I,IAAhB,GAAuBA,IAAvB;AACD,GAFD,MAEO,IAAIgG,YAAY,KAAK1K,SAArB,EAAgC;AACrC;AACA8M,UAAM,CAACW,QAAP,CAAgB/I,IAAhB,GAAuBC,YAAvB;AACD;;AAEDoE,YAAU;AACX,CAdD;;AAgBA,IAAMH,IAAI,GAAG,SAAPA,IAAO,CAACc,KAAD,EAAyB;AACpCA,OAAK,CAAC3G,cAAN,GADoC,CAGpC;;AACA,MAAI6G,eAAe,EAAnB,EAAuB;AAAA;;AACrB,QAAI8D,UAAJ;AAEA,QAAIpD,IAAqB,yBAAGhG,gBAAH,uDAAG,mBAAkBgG,IAA9C;;AAEA,QAAIA,IAAI,KAAK1K,WAAb,EAA0B;AACxB;AACAoB,qBAAe,CAAC4D,IAAD,CAAf;AACA8I,gBAAU,GAAGjH,QAAb;AACD,KAJD,MAIO;AACL;AACAzF,qBAAe,CAACD,GAAD,CAAf;AACA2M,gBAAU,GAAGhH,OAAb;AACD;;AAEDgH,cAAU,CAAC1B,WAAX,GAAyBtI,OAAO,CAACiK,MAAR,IAAkBnK,cAAc,CAACmK,MAA1D;AACAC,cAAU,CAAC,YAAM;AACfF,gBAAU,CAAC1B,WAAX,GAAyBtI,OAAO,CAACkF,IAAR,IAAgBpF,cAAc,CAACoF,IAAxD,CADe,CAEf;;AACAG,gBAAU;AACX,KAJS,EAIP,GAJO,CAAV;AAKD;AACF,CA1BD,C,CA4BA;;;AACA,IAAM6B,WAAW,GAAG,SAAdA,WAAc,CAACnG,GAAD,EAAwC;AAAA,MAA1B6F,IAA0B,uEAAXnL,MAAW;AAC1D,MAAI0O,aAAa,GAAG,IAAIvN,MAAJ,CAAW,MAAMgK,IAAN,GAAa,QAAxB,EAAkC,IAAlC,CAApB;AACA,SAAOuD,aAAa,CAACnN,IAAd,CAAmB+D,GAAnB,CAAP;AACD,CAHD,C,CAKA;;;AACA,SAAS2F,sBAAT,CAAgCJ,OAAhC,EAAyE;AAAA;;AACvE,MAAI8D,WAAmB,GAAI9D,OAAD,CAA6BW,YAA7B,CAA0C,MAA1C,CAA1B,CADuE,CAGvE;;AACA,4BAAIX,OAAO,CAAC7C,SAAZ,+CAAI,mBAAmBwC,QAAnB,CAA4BlK,SAA5B,CAAJ,EAA4C;AAC1C,WAAO,IAAP;AACD,GANsE,CAQvE;;;AACA,MAAIqO,WAAW,2BAAI9D,OAAO,CAAC7C,SAAZ,gDAAI,oBAAmBwC,QAAnB,CAA4B,QAA5B,CAAnB,EAA0D;AACxD,QAAIiB,WAAW,CAACkD,WAAD,EAAc3O,MAAd,CAAX,IAAoCyL,WAAW,CAACkD,WAAD,EAAc1O,MAAd,CAAnD,EAA0E;AACxE;AACA,aAAO;AACLkL,YAAI,EAAE1K,WADD;AAEL8K,oBAAY,EAAE3K,OAAOA;AAFhB,OAAP;AAID,KAND,MAMO,IACL6K,WAAW,CAACkD,WAAD,EAAczO,GAAd,CAAX,IACAuL,WAAW,CAACkD,WAAD,EAAcxO,MAAd,CAFN,EAGL;AACA;AACA,aAAO;AACLgL,YAAI,EAAEzK,UADD;AAEL6K,oBAAY,EAAE3K,OAAOA;AAFhB,OAAP;AAID,KATM,MASA,IAAI6K,WAAW,CAACkD,WAAD,EAAcvO,GAAd,CAAf,EAAmC;AACxC;AACA,aAAO;AACL+K,YAAI,EAAExK,UADD;AAEL4K,oBAAY,EAAE3K,OAAOA;AAFhB,OAAP;AAID;AACF;;AAED,MAAI+N,WAAW,KAAK,SAAhB,2BAA6B9D,OAAO,CAAC7C,SAArC,gDAA6B,oBAAmBwC,QAAnB,CAA4B,QAA5B,CAAjC,EAAwE;AACtE;AACA,QACEK,OAAO,CAAC2B,YAAR,CAAqB,cAArB,KACA3B,OAAO,CAAC2B,YAAR,CAAqB,aAArB,CAFF,EAGE;AACA;AACA,aAAO;AACLrB,YAAI,EAAE1K,WADD;AAEL8K,oBAAY,EAAE1K,SAASA;AAFlB,OAAP;AAID,KATD,MASO,IAAIgK,OAAO,CAAC2B,YAAR,CAAqB,UAArB,CAAJ,EAAsC;AAC3C;AACA,aAAO;AACLrB,YAAI,EAAEzK,UADD;AAEL6K,oBAAY,EAAE1K,SAASA;AAFlB,OAAP;AAID,KANM,MAMA,IAAIgK,OAAO,CAAC2B,YAAR,CAAqB,UAArB,CAAJ,EAAsC;AAC3C;AACA,aAAO;AACLrB,YAAI,EAAExK,UADD;AAEL4K,oBAAY,EAAE1K,SAASA;AAFlB,OAAP;AAID;AACF;;AAED,SAAO,IAAP;AACD;AAED;AACA;AACA;AACA;;;AACA,IAAM0M,aAAa,GAAG,SAAhBA,aAAgB,CAACqB,aAAD,EAA2C;AAC/D;AACA,MAAInE,eAAe,EAAnB,EAAuB;AAAA;;AACrB,QAAIU,IAAqB,yBAAGhG,gBAAH,uDAAG,mBAAkBgG,IAA9C;;AAEA,QAAIA,IAAI,KAAK1K,WAAb,EAA0B;AACxB,cAAQmO,aAAa,CAACC,OAAtB;AACE,aAAK,EAAL;AACE;AACAjF,oBAAU;AACV,iBAAO,IAAP;;AACF,aAAK,EAAL;AACE;AACAmD,mBAAS;AACT,iBAAO,IAAP;;AACF,aAAK,EAAL;AACE;AACAC,qBAAW;AACX,iBAAO,IAAP;;AACF,aAAK,EAAL;AACE;AACAC,uBAAa;AACb,iBAAO,IAAP;;AACF,aAAK,EAAL;AACA,aAAK,EAAL;AACE;AACAC,qBAAW;AACX,iBAAO,IAAP;;AACF,aAAK,EAAL;AACE;AACAzD,cAAI;AACJ,iBAAO,IAAP;;AACF;AACE,iBAAO,KAAP;AA3BJ;AA6BD,KA9BD,MA8BO,IAAI0B,IAAI,KAAKzK,UAAb,EAAyB;AAC9B,cAAQkO,aAAa,CAACC,OAAtB;AACE,aAAK,EAAL;AACE;AACAjF,oBAAU;AACV,iBAAO,IAAP;;AACF,aAAK,EAAL;AACE;AACAwD,sBAAY;AACZ,iBAAO,IAAP;;AACF,aAAK,EAAL;AACE;AACAD,sBAAY;AACZ,iBAAO,IAAP;;AACF,aAAK,EAAL;AACE;AACAE,mBAAS;AACT,iBAAO,IAAP;;AACF,aAAK,EAAL;AACA,aAAK,EAAL;AACE;AACAH,qBAAW;AACX,iBAAO,IAAP;;AACF,aAAK,EAAL;AACE;AACAzD,cAAI;AACJ,iBAAO,IAAP;;AACF;AACE,iBAAO,KAAP;AA3BJ;AA6BD;AACF;;AACD,SAAO,KAAP;AACD,CApED,C,CAsEA;;;AACA,IAAM6D,UAAU,GAAG,SAAbA,UAAa,CAACnC,IAAD,EAAiC;AAClD;AACA2D,iBAAe,CAAC3D,IAAD,EAAO,MAAP,CAAf;AACD,CAHD,C,CAKA;;;AACA,IAAMvB,UAAU,GAAG,SAAbA,UAAa,GAAY;AAC7B;AACAkF,iBAAe,CAACrO,WAAD,EAAc,MAAd,CAAf;AACAqO,iBAAe,CAACpO,UAAD,EAAa,MAAb,CAAf,CAH6B,CAK7B;;AACAsB,UAAQ,CAAC+M,mBAAT,CAA6B,SAA7B,EAAwCxB,aAAxC;AACD,CAPD,C,CASA;;;AACA,IAAM9C,eAAe,GAAG,SAAlBA,eAAkB,GAAe;AACrC,SACG/F,aAAa,IAAIsK,eAAe,CAACvO,WAAD,CAAf,KAAiC,MAAnD,IACC,CAACkE,UAAU,IAAIC,UAAf,KAA8BoK,eAAe,CAACtO,UAAD,CAAf,KAAgC,MAFjE;AAID,CALD;;AAOA,IAAMiJ,SAAS,GAAG,SAAZA,SAAY,GAAuB;AACvC;AACA,MAAIsF,EAAmB,GAAGhN,aAAa,CAAClB,QAAD,CAAvC;AACAkO,IAAE,CAAC1J,IAAH,GAAU,qCAAV;AACA0J,IAAE,CAAC3G,SAAH,GAAe,MAAf;AACA2G,IAAE,CAACpL,MAAH,GAAY,QAAZ;AACAoL,IAAE,CAACC,GAAH,GAAS,qBAAT;AACAD,IAAE,CAACzM,WAAH,CAAekG,cAAc,CAAC,YAAD,CAA7B;AAEA,SAAOuG,EAAP;AACD,CAVD,C,CAYA;;;AACA,IAAMhN,aAAa,GAAG,SAAhBA,aAAgB;AAAA,MAAC4I,OAAD,uEAAmB,KAAnB;AAAA,SACpB7I,QAAQ,CAACC,aAAT,CAAuB4I,OAAvB,CADoB;AAAA,CAAtB,C,CAGA;;;AACA,IAAMnC,cAAc,GAAG,SAAjBA,cAAiB,CAACmC,OAAD;AAAA,SACrB7I,QAAQ,CAAC0G,cAAT,CAAwBmC,OAAxB,CADqB;AAAA,CAAvB,C,CAGA;;;AACA,IAAMsE,mBAAmB,GAAG,SAAtBA,mBAAsB,GAAyC;AAAA,MAAxChE,IAAwC,uEAAhB1K,WAAgB;;AACnE,MAAI0K,IAAI,KAAKzK,UAAb,EAAyB;AACvB,WAAO2E,QAAP;AACD,GAFD,MAEO;AACL,WAAOD,WAAP;AACD;AACF,CAND,C,CAQA;;;AACA,IAAM4J,eAAe,GAAG,SAAlBA,eAAkB;AAAA,MAAC7L,GAAD,uEAAwB1C,WAAxB;AAAA,SACtB0O,mBAAmB,CAAChM,GAAD,CAAnB,CAAyBf,KAAzB,CAA+B0F,OADT;AAAA,CAAxB,C,CAGA;;;AACA,IAAMgH,eAAe,GAAG,SAAlBA,eAAkB,GAGb;AAAA,MAFT3L,GAES,uEAFc1C,WAEd;AAAA,MADTyB,KACS;AACT,MAAIkB,KAAK,GAAG+L,mBAAmB,CAAChM,GAAD,CAA/B;;AAEA,MAAIC,KAAJ,EAAW;AACTA,SAAK,CAAChB,KAAN,CAAY0F,OAAZ,GAAsB5F,KAAtB;;AAEA,QAAIA,KAAK,KAAK,MAAd,EAAsB;AACpB;AACA2E,mBAAa,GAAG7E,QAAQ,CAACoN,aAAzB;AACAhM,WAAK,CAACjB,YAAN,CAAmB,aAAnB,EAAkC,OAAlC,EAHoB,CAKpB;;AACAiB,WAAK,CAACjB,YAAN,CAAmB,UAAnB,EAA+B,GAA/B;AACAiB,WAAK,CAACW,KAAN;AACAb,kBAAY,CAACE,KAAD,CAAZ;AACD,KATD,MASO;AACLA,WAAK,CAACjB,YAAN,CAAmB,aAAnB,EAAkC,MAAlC,EADK,CAGL;;AACAiB,WAAK,CAACjB,YAAN,CAAmB,UAAnB,EAA+B,IAA/B;AACA0E,mBAAa,CAAC9C,KAAd;AACD;AACF;AACF,CA1BD,C,CA4BA;;;AACA,IAAMoE,cAAc,GAAG,SAAjBA,cAAiB,GAAM;AAAA;;AAC3B;AACA,MAAIgD,IAAqB,yBAAGhG,gBAAH,uDAAG,mBAAkBgG,IAA9C;;AACA,MAAIA,IAAJ,EAAU;AACRgE,uBAAmB,CAAChE,IAAD,CAAnB,CAA0BnD,SAA1B,CAAoCC,GAApC,CAAwC,QAAxC;AACD;AACF,CAND,C,CAQA;;;AACA,IAAMG,eAAe,GAAG,SAAlBA,eAAkB,GAAM;AAAA;;AAC5B;AACA,MAAI+C,IAAqB,0BAAGhG,gBAAH,wDAAG,oBAAkBgG,IAA9C;;AACA,MAAIA,IAAJ,EAAU;AACRgE,uBAAmB,CAAChE,IAAD,CAAnB,CAA0BnD,SAA1B,CAAoCqH,MAApC,CAA2C,QAA3C;AACD;AACF,CAND,C,CAQA;;;AACA,IAAM1E,YAAY,GAAG,SAAfA,YAAe,CACnB5I,EADmB,EAE2C;AAC9D,MAAI2I,IAAI,GAAG,EAAX;;AAEA,SAAO3I,EAAP,EAAW;AACT2I,QAAI,CAAC4B,IAAL,CAAUvK,EAAV;;AAEA,QAAIA,EAAE,CAACuN,OAAH,KAAe,MAAnB,EAA2B;AACzB5E,UAAI,CAAC4B,IAAL,CAAUtK,QAAV;AACA0I,UAAI,CAAC4B,IAAL,CAAUqB,MAAV;AACA,aAAOjD,IAAP;AACD;;AAED3I,MAAE,GAAGA,EAAE,CAACwN,aAAR;AACD;AACF,CAhBD,C,CAkBA;;;AACA,IAAMhD,iBAAiB,GAAG,SAApBA,iBAAoB,CAACpB,IAAD,EAAekB,UAAf,EAAgD;AACxE7G,cAAY,GAAG2F,IAAf;;AACA,MAAIkB,UAAU,IAAIA,UAAU,CAACmD,MAAX,GAAoB,CAAtC,EAAyC;AACvC,QAAIC,YAAY,GAAGpD,UAAU,CAACS,IAAX,CAAgB,GAAhB,CAAnB;AACAtH,gBAAY,GAAGA,YAAY,CAACuI,MAAb,CAAoB,MAAM0B,YAA1B,CAAf;AACD;;AACD,SAAOjK,YAAP;AACD,CAPD,C,CASA;;;AACA,IAAM4D,4BAA4B,GAAG,SAA/BA,4BAA+B,CACnC+B,IADmC,EAEnCuE,SAFmC,EAGvB;AACZ;AACA,MAAI,CAAClL,MAAL,EAAa;AACX,WAAO,IAAP;AACD,GAJW,CAMZ;;;AACA,MAAI2G,IAAI,KAAK,QAAb,EAAuB;AAAA;;AACrB,QAAI3G,MAAM,IAAI,eAACA,MAAD,sCAAC,UAAQmL,OAAT,CAAd,EAAgC;AAC9B,aAAO,IAAP;AACD;;AAED,QACEnL,MAAM,IACNA,MAAM,CAACmL,OADP,IAEA,cAAAnL,MAAM,UAAN,8CAAQmL,OAAR,CAAgBD,SAAhB,OAA+C,KAHjD,EAIE;AACA,aAAO,KAAP;AACD;AACF,GAZD,MAYO,IAAIvE,IAAI,KAAK,QAAb,EAAuB;AAAA;;AAC5B;AAEA,QAAI3G,MAAM,IAAI,eAACA,MAAD,sCAAC,UAAQgE,OAAT,CAAd,EAAgC;AAC9B,aAAO,IAAP;AACD;;AAED,QACEhE,MAAM,IACNA,MAAM,CAACgE,OADP,IAEA,cAAAhE,MAAM,UAAN,8CAAQgE,OAAR,CAAgBkH,SAAhB,OAA+C,KAHjD,EAIE;AACA,aAAO,KAAP;AACD;AACF;;AAED,SAAO,IAAP;AACD,CAvCD,C,CAyCA;;;AACA,IAAM/H,iBAAiB,GAAG,SAApBA,iBAAoB,GAAc;AAAA;;AACtC,MAAIiI,YAAY,GAAG,cAAnB,CADsC,CAGtC;;AACA,MACE,aAAApL,MAAM,UAAN,sCAAQJ,IAAR,IACCyL,iCAAD,CAAuCrL,MAAM,CAACJ,IAA9C,MAAwD,CAAC,CAF3D,EAGE;AACAA,QAAI,GAAGI,MAAM,CAACJ,IAAd;AACAwL,gBAAY,GAAG,aAAf;AACD,GAND,MAMO;AACL;AACA;AACA,QAAIE,QAAgB,GAAG9N,QAAQ,CAAC+N,eAAT,CAAyB3L,IAAhD,CAHK,CAKL;;AACCyL,qCAAD,CAAuC,UAACG,QAAD,EAAmB;AACxD,UAAI,IAAI7O,MAAJ,CAAW,MAAM6O,QAAjB,EAA2B,IAA3B,EAAiCzO,IAAjC,CAAsCuO,QAAtC,CAAJ,EAAqD;AACnD1L,YAAI,GAAG4L,QAAP;AACAJ,oBAAY,GAAG,WAAf;AACD;AACF,KALD;AAMD,GAtBqC,CAwBtC;;;AACArL,SAAO,GAAID,4BAAD,CAAqCF,IAArC,CAAV;AAEA,SAAOwL,YAAP;AACD,CA5BD;;AA8BA,IAAMK,WAAW,GAAG,SAAdA,WAAc,GAAY;AAC9B,MAAI,CAACjO,QAAQ,CAAC6F,cAAT,CAAwB,cAAxB,CAAL,EAA8C;AAC5C;AACA,QAAIqI,gBAAkC,GAAGjO,aAAa,CACpD,OADoD,CAAtD;AAGAiO,oBAAgB,CAACnI,EAAjB,GAAsB,cAAtB;AACAmI,oBAAgB,CAAC/E,IAAjB,GAAwB,UAAxB;AACA+E,oBAAgB,CAAC1N,WAAjB,CAA6BkG,cAAc,CAACxE,SAAD,CAA3C;AACAlC,YAAQ,CAACmO,IAAT,CAAc3N,WAAd,CAA0B0N,gBAA1B;AACD;AACF,CAXD,C,CAaA;;;AACA,SAAStD,MAAT,CAAgBwD,YAAhB,EAAsD;AACpD,MAAI;AAAA;;AACF;AACA;AAEA;AACA5L,UAAM,mCAAQ4L,YAAR,GAA0B,YAACzC,MAAD,oDAAiByC,YAAjB,KAAiC,IAA3D,CAAN,CALE,CAOF;;AACA,QAAI,OAAOzC,MAAP,KAAkB,WAAtB,EAAmC;AAAA;;AACjC;AACA,UAAI,qBAAOnJ,MAAP,8CAAO,UAAQ6L,OAAf,MAA2B,WAA/B,EAA4C;AAC1CnL,qBAAa,GAAGV,MAAM,CAAC6L,OAAvB;AACD,OAJgC,CAMjC;;;AACA,UAAI,qBAAO7L,MAAP,8CAAO,UAAQ8L,MAAf,MAA0B,WAA9B,EAA2C;AACzC5L,qBAAa,GAAGF,MAAM,CAAC8L,MAAvB;AACD,OATgC,CAWjC;;;AACA,UAAI,qBAAO9L,MAAP,8CAAO,UAAQ5C,GAAf,MAAuB,WAA3B,EAAwC;AACtC+C,kBAAU,GAAGH,MAAM,CAAC5C,GAApB;AACD,OAdgC,CAgBjC;;;AACA,UAAI,qBAAO4C,MAAP,8CAAO,UAAQ+L,GAAf,MAAuB,WAA3B,EAAwC;AACtC3L,kBAAU,GAAGJ,MAAM,CAAC+L,GAApB;AACD,OAnBgC,CAqBjC;;;AACA,UAAIrL,aAAJ,EAAmB;AACjB;AACA+K,mBAAW;AACZ,OAzBgC,CA2BjC;;;AACA,uBAAIzL,MAAJ,sCAAI,UAAQgM,SAAZ,EAAuB;AAAA;;AACrB,yBAAIhM,MAAJ,sCAAI,UAAQiM,eAAZ,EAA6B;AAC3B;AACAzO,kBAAQ,CAACsB,gBAAT,CACEkB,MAAM,CAACgM,SADT,EAEEhJ,UAFF,EAGEhD,MAAM,CAACiM,eAHT;AAKD,SAPD,MAOO;AACL;AACAzO,kBAAQ,CAACsB,gBAAT,CAA0BkB,MAAM,CAACgM,SAAjC,EAA4ChJ,UAA5C;AACD;AACF,OAZD,MAYO;AACLA,kBAAU;AACX;;AAED,aAAO,IAAP;AACD;AACF,GAtDD,CAsDE,OAAOyE,KAAP,EAAc;AACdC,WAAO,CAACC,GAAR,CAAYF,KAAZ;AACD;;AACD,SAAO,KAAP;AACD,C,CAED;;;AACA,IAAI,OAAO0B,MAAP,KAAkB,WAAtB,EAAmC;AAChCA,QAAD,CAAgB1C,sBAAhB,GAAyCA,sBAAzC;AACC0C,QAAD,CAAgBrD,mBAAhB,GAAsCA,mBAAtC;AACCqD,QAAD,CAAgB+C,iBAAhB,GAAoCpG,mBAApC,CAHiC,CAGwB;;AACxDqD,QAAD,CAAgBvC,eAAhB,GAAkCA,eAAlC;AACCuC,QAAD,CAAgBjB,kBAAhB,GAAqCA,kBAArC;AACCiB,QAAD,CAAgBlB,YAAhB,GAA+BA,YAA/B;AACCkB,QAAD,CAAgBf,MAAhB,GAAyBA,MAAzB;AACD;;AAED;AAQA,+CAAeA,MAAf,E;;ACjgDA;;AAEmC;;AAEnC;AACA;AACA;AACA;;AAEA,UAAM;;;;;;;UCTN;UACA;;UAEA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;;UAEA;UACA;;UAEA;UACA;UACA;;;;;WCrBA;WACA;WACA;WACA,sDAAsD,kBAAkB;WACxE;WACA,+CAA+C,cAAc;WAC7D,E;;;;;UCNA;UACA;UACA;UACA","file":"mailgo.js","sourcesContent":["// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../node_modules/css-loader/dist/runtime/api.js\");\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(function(i){return i[1]});\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:.8}.m-modal .m-modal-content{position:relative;z-index:10002;box-sizing:content-box;text-align:center;overflow:hidden;min-width:200px;max-width:240px;background-color:#fff;opacity:.95;border-radius:20px;box-shadow:0 3px 20px rgba(32,35,42,.5);border:3px solid #333;color:#4a4a4a;display:flex;flex-direction:column;overflow:auto;padding:24px;transition:.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:pre-line;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{white-space:pre-line;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(192,55,42,.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(9,103,170,.08);color:#0967aa}.m-modal .m-modal-content a.m-yahoo{color:#4a00a0}.m-modal .m-modal-content a.m-yahoo:hover,.m-modal .m-modal-content a.m-yahoo:focus,.m-modal .m-modal-content a.m-yahoo:active{background-color:rgba(74,0,160,.08);color:#4a00a0}.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(8,109,160,.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(6,116,102,.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(7,109,146,.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,.08);color:#4a4a4a}.m-modal .m-modal-content a.m-by{font-size:12px;margin-top:.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,.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(224,125,115,.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(76,156,215,.08);color:#4c9cd7}.m-modal.m-dark .m-modal-content a.m-yahoo{color:#ac88d3}.m-modal.m-dark .m-modal-content a.m-yahoo:hover,.m-modal.m-dark .m-modal-content a.m-yahoo:focus,.m-modal.m-dark .m-modal-content a.m-yahoo:active{background-color:rgba(172,136,211,.08);color:#ac88d3}.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(76,171,219,.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(76,210,192,.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(76,199,244,.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// 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 (cssWithMappingToString) {\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);\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 var result = require(\"!!../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].use[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 ","import { MailgoModalType, MailgoInstallationType } from \"mailgo\";\n\n// links\nexport const MAILTO: string = \"mailto:\";\nexport const MAILGO: string = \"mailgo:\";\nexport const TEL: string = \"tel:\";\nexport const CALLTO: string = \"callto:\";\nexport const SMS: string = \"sms:\";\n\n// deep linking\nexport const outlookDeepLink: string = \"ms-outlook://\";\n\n// no mailgo class\nexport const NO_MAILGO: string = \"no-mailgo\";\n\n// responsive settings\nexport const DESKTOP: string = \"desktop\";\nexport const MOBILE: string = \"mobile\";\n\n// mailgo modal types\nexport const MAILGO_MAIL: MailgoModalType = \"mailgo\";\nexport const MAILGO_TEL: MailgoModalType = \"mailgo-tel\";\nexport const MAILGO_SMS: MailgoModalType = \"mailgo-sms\";\n\n// mailgo installation types\nexport const CLASSIC: MailgoInstallationType = \"classic\";\nexport const LESS_SPAM: MailgoInstallationType = \"less-spam\";\n\n// useful html tags\nexport const spanHTMLTag: string = \"span\";\nexport const aHTMLTag: string = \"a\";\nexport const pHTMLTag: string = \"p\";\n\n// default lang\nexport const defaultLang: string = \"en\";\n\n// useful regexp\nexport const notNumber: RegExp = new RegExp(\"[^0-9/]\", \"gi\");\nexport const leadingZeros: RegExp = new RegExp(\"^0+\", \"gi\");\n","// validate a single email with regex\nexport const 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\nexport const validateEmails = (arr: string[]): boolean =>\n arr.every(validateEmail);\n\n// validate a single tel with regex\nexport const validateTel = (tel: string): boolean =>\n /^[+]{0,1}[\\s0-9]*[(]{0,1}[0-9]{1,4}[)]{0,1}[-\\s\\./0-9]*[p]{0,1}[\\s0-9]*$/.test(\n tel\n );\n\n// copy of a string\nexport const copyToClipboard = (str: string): boolean => {\n let el: HTMLTextAreaElement = document.createElement(\n \"textarea\"\n ) as HTMLTextAreaElement;\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\n// set focus loop within modal\nexport const 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\nexport const 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\nexport const 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","export const userAgent = () => {\n if (\n /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(\n navigator.userAgent\n )\n ) {\n return \"mobile\";\n }\n return \"desktop\";\n};\n","import {\n MailgoConfig,\n MailgoTranslations,\n MailgoTranslation,\n MailgoAction,\n MailgoLanguages,\n MailgoType,\n MailgoDetail,\n MailgoInstallationType,\n MailgoModalType,\n} from \"mailgo\";\n\n// polyfill\n// import { mailgoPolyfill } from \"./polyfill\";\n\n// constants\nimport {\n MAILTO,\n MAILGO,\n TEL,\n CALLTO,\n SMS,\n MAILGO_MAIL,\n MAILGO_TEL,\n MAILGO_SMS,\n CLASSIC,\n LESS_SPAM,\n NO_MAILGO,\n MOBILE,\n spanHTMLTag,\n aHTMLTag,\n pHTMLTag,\n defaultLang,\n notNumber,\n leadingZeros,\n} from \"./constants\";\n\n// utils\nimport {\n validateEmails,\n validateTel,\n copyToClipboard,\n setFocusLoop,\n} from \"./utils\";\n\n// i18n for mailgo\nimport languages from \"../i18n/languages.json\";\nimport translations from \"../i18n/translations.json\";\n\n// mobile detect\nimport { userAgent } from \"./mobile-detect\";\n\n// mailgo scss, with toString (https://github.com/webpack-contrib/css-loader#tostring)\nconst mailgoCSS: string = require(\"./mailgo.scss\").toString();\n\n// default language\nlet lang: string = defaultLang;\n\n// default strings\nconst defaultStrings: MailgoTranslation = (translations as MailgoTranslations)[\n defaultLang\n];\n\n// translation strings\nlet strings: MailgoTranslation;\n\n// global mailgo config object\nlet config: MailgoConfig;\n\n// config to check if the client is mobile or desktop\nlet isMobile: boolean = false;\n\n// default config attributes\nlet mailtoEnabled: boolean = true;\nlet telEnabled: boolean = true;\nlet smsEnabled: boolean = false;\nlet desktopEnabled: boolean = true;\nlet mobileEnabled: boolean = true;\nlet validateEmailConfig: boolean = true;\nlet validateTelConfig: boolean = true;\nlet showFooterConfig: boolean = true;\nlet loadCSSConfig: boolean = true;\n\n// activeMailgoType\nlet activeMailgoType: MailgoType;\n\n// modals global object\nlet modalMailto: HTMLElement, modalTel: HTMLElement;\n\n// mailgo general variables\nlet url: URL, href: string, lessSpamHref: string;\n\n// mailgo mail variables\nlet mail: string, cc: string, bcc: string, subject: string, bodyMail: string;\n\n// mailgo tel variables\nlet tel: string, msg: string, telegramUsername: string, 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 detailMsg: HTMLElement,\n ccValue: HTMLElement,\n bccValue: HTMLElement,\n subjectValue: HTMLElement,\n bodyValue: HTMLElement,\n msgValue: HTMLElement,\n activatedLink: HTMLElement;\n\n// mailgo buttons (actions)\nlet gmail: HTMLLinkElement,\n outlook: HTMLLinkElement,\n yahoo: 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 // set the boolean for mobile/desktop\n isMobile = userAgent() === MOBILE;\n\n // responsive settings\n {\n if (typeof config?.desktop !== \"undefined\") {\n desktopEnabled = config.desktop;\n // if it is a desktop and desktop is not enabled no init mailgo\n if (!isMobile && !desktopEnabled) {\n return;\n }\n }\n if (typeof config?.mobile !== \"undefined\") {\n mobileEnabled = config.mobile;\n // if it is a mobile and mobile is not enabled no init mailgo\n if (isMobile && !mobileEnabled) {\n return;\n }\n }\n }\n\n // set the mailgo language\n mailgoSetLanguage();\n\n // mailgo, if mailgo not already exists\n let mailgoExists = !!document.getElementById(MAILGO_MAIL);\n\n // if mailgo is enabled for mailto and it not exists in DOM\n if (mailtoEnabled && !mailgoExists) {\n // modal\n modalMailto = createElement() as HTMLElement;\n modalMailto.style.display = \"none\";\n modalMailto.id = MAILGO_MAIL;\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();\n } else {\n disableDarkMode();\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 = \"#mailgo-gmail\";\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 if (mailgoConfigAttributeEnabled(\"action\", \"gmail\")) {\n modalContent.appendChild(gmail);\n }\n\n // Outlook\n outlook = createElement(aHTMLTag) as HTMLLinkElement;\n outlook.id = \"m-outlook\";\n outlook.href = \"#mailgo-outlook\";\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 if (mailgoConfigAttributeEnabled(\"action\", \"outlook\")) {\n modalContent.appendChild(outlook);\n }\n\n // Outlook\n yahoo = createElement(aHTMLTag) as HTMLLinkElement;\n yahoo.id = \"m-yahoo\";\n yahoo.href = \"#mailgo-yahoo\";\n yahoo.classList.add(\"m-open\");\n yahoo.classList.add(\"m-yahoo\");\n yahoo.appendChild(\n createTextNode(strings.open_in_ || defaultStrings.open_in_)\n );\n let yahooSpan: HTMLElement = createElement(spanHTMLTag);\n yahooSpan.className = \"w-500\";\n yahooSpan.appendChild(\n createTextNode(strings.yahoo || defaultStrings.yahoo)\n );\n yahoo.appendChild(yahooSpan);\n\n if (mailgoConfigAttributeEnabled(\"action\", \"yahoo\")) {\n modalContent.appendChild(yahoo);\n }\n\n // open default\n open = createElement(aHTMLTag) as HTMLLinkElement;\n open.id = \"m-open\";\n open.href = \"#mailgo-open\";\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 = \"#mailgo-copy\";\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 (typeof config?.showFooter !== \"undefined\") {\n showFooterConfig = config.showFooter;\n }\n\n if (showFooterConfig) {\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 mailgo is enabled for tel/callto and it not exists in DOM\n if (telEnabled && !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();\n } else {\n disableDarkMode();\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 // details\n let detailsTel: HTMLElement = createElement();\n detailsTel.id = \"m-tel-details\";\n detailsTel.className = \"m-details\";\n\n detailMsg = createElement(pHTMLTag);\n detailMsg.id = \"m-msg\";\n let msgSpan: HTMLElement = createElement(spanHTMLTag);\n msgSpan.className = \"w-500\";\n msgSpan.appendChild(createTextNode(strings.body_ || defaultStrings.body_));\n msgValue = createElement(spanHTMLTag);\n msgValue.id = \"m-msg-value\";\n detailMsg.appendChild(msgSpan);\n detailMsg.appendChild(msgValue);\n detailsTel.appendChild(detailMsg);\n\n modalContent.appendChild(detailsTel);\n\n // Telegram\n telegram = createElement(aHTMLTag) as HTMLLinkElement;\n telegram.id = \"m-tg\";\n telegram.href = \"#mailgo-telegram\";\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 if (mailgoConfigAttributeEnabled(\"action\", \"telegram\")) {\n modalContent.appendChild(telegram);\n }\n\n // WhatsApp\n wa = createElement(aHTMLTag) as HTMLLinkElement;\n wa.id = \"m-wa\";\n wa.href = \"#mailgo-whatsapp\";\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 if (mailgoConfigAttributeEnabled(\"action\", \"whatsapp\")) {\n modalContent.appendChild(wa);\n }\n\n // Skype\n skype = createElement(aHTMLTag) as HTMLLinkElement;\n skype.id = \"m-skype\";\n skype.href = \"#mailgo-skype\";\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 if (mailgoConfigAttributeEnabled(\"action\", \"skype\")) {\n modalContent.appendChild(skype);\n }\n\n // call default\n call = createElement(aHTMLTag) as HTMLLinkElement;\n call.id = \"m-call\";\n call.href = \"#mailgo-open\";\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 = \"#mailgo-copy\";\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 (typeof config?.showFooter !== \"undefined\") {\n showFooterConfig = config.showFooter;\n }\n\n if (showFooterConfig) {\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\", mailgoClickListener);\n};\n\n/**\n * mailgoClickListener\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 * or\n * document.querySelectorAll(\n * 'a[href^=\"sms:\" i]:not(.no-mailgo), a[href=\"#mailgo\"], a.mailgo'\n * );\n */\nfunction mailgoClickListener(event: Event): boolean {\n // check if the mailgo HTML exists in the body\n if (\n !document.body.contains(modalMailto) &&\n !document.body.contains(modalTel)\n ) {\n return false;\n }\n\n // if a mailgo is already showing do nothing\n if (mailgoIsShowing()) {\n return false;\n }\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\n // go here only if one of the mailgo modals are enabled\n if (mailtoEnabled || telEnabled || smsEnabled) {\n let localMailgoType = getMailgoTypeByElement(element);\n\n // go on if the localMailgoType is not null\n if (localMailgoType) {\n // set the active mailgo type\n activeMailgoType = localMailgoType;\n\n let activeMailgoModalType = activeMailgoType?.type;\n\n if (activeMailgoModalType) {\n // check if the setting is enabled and if so go with pre-render\n if (\n (mailtoEnabled && activeMailgoModalType === MAILGO_MAIL) ||\n (telEnabled && activeMailgoModalType === MAILGO_TEL) ||\n (smsEnabled && activeMailgoModalType === MAILGO_SMS)\n ) {\n // stop the normal execution of the element click\n event.preventDefault();\n\n // render mailgo\n mailgoPreRender(element as HTMLLinkElement);\n\n return true;\n }\n }\n }\n }\n });\n }\n\n return false;\n}\n\n/**\n * mailgoPreRender\n * function to pre-render a mailgo, it helps populating elements needed by modal\n */\nfunction mailgoPreRender(\n mailgoElementOrUrl: HTMLLinkElement | string\n): boolean {\n let mailgoElement: HTMLLinkElement;\n\n // get the type and installation from current mailgo type\n let type: MailgoModalType = activeMailgoType?.type;\n let installation: MailgoInstallationType = activeMailgoType?.installation;\n\n // if type is not defined return\n if (!type) return false;\n\n if (typeof mailgoElementOrUrl === \"string\") {\n // if the parameter is a string it is the url\n href = mailgoElementOrUrl as string;\n } else {\n // if the paramenter is an HTMLLinkElement get the href attribute and the element\n href = mailgoElementOrUrl.getAttribute(\"href\") as string;\n mailgoElement = mailgoElementOrUrl as HTMLLinkElement;\n }\n\n // mailgo mail\n if (type === MAILGO_MAIL) {\n // if the installation is classic\n if (installation === CLASSIC) {\n if (validateUrl(href, MAILTO)) {\n mail = decodeURIComponent(href.split(\"?\")[0].split(MAILTO)[1].trim());\n } else if (validateUrl(href, MAILGO)) {\n mail = decodeURIComponent(href.split(\"?\")[0].split(MAILGO)[1].trim());\n }\n\n try {\n url = new URL(href);\n\n let urlParams: URLSearchParams = url.searchParams;\n // optional parameters for the email\n cc = urlParams.get(\"cc\");\n bcc = urlParams.get(\"bcc\");\n subject = urlParams.get(\"subject\");\n bodyMail = urlParams.get(\"body\");\n } catch (error) {\n console.log(error);\n }\n } else if (installation === LESS_SPAM) {\n // if the installation is less-spam\n // mail = data-address + @ + data-domain\n mail =\n mailgoElement.getAttribute(\"data-address\") &&\n mailgoElement.getAttribute(\"data-domain\")\n ? mailgoElement.getAttribute(\"data-address\") +\n \"@\" +\n mailgoElement.getAttribute(\"data-domain\")\n : null;\n\n try {\n url = new URL(MAILTO + encodeURIComponent(mail));\n } catch (error) {\n console.log(error);\n }\n\n let parameters: string[] = [];\n\n // cc = data-cc-address + @ + data-cc-domain\n cc = mailgoElement.getAttribute(\"data-cc-address\")\n ? mailgoElement.getAttribute(\"data-cc-address\") +\n \"@\" +\n mailgoElement.getAttribute(\"data-cc-domain\")\n : null;\n\n // if cc is defined add it to parameters\n if (cc) parameters.push(\"cc=\" + cc);\n\n // bcc = data-bcc-address + @ + data-bcc-domain\n bcc = mailgoElement.getAttribute(\"data-bcc-address\")\n ? mailgoElement.getAttribute(\"data-bcc-address\") +\n \"@\" +\n mailgoElement.getAttribute(\"data-bcc-domain\")\n : null;\n\n // if bcc is defined add it to parameters\n if (bcc) parameters.push(\"bcc=\" + bcc);\n\n // subject = data-subject\n subject = mailgoElement.getAttribute(\"data-subject\");\n\n // if subject is defined add it to parameters\n if (subject) parameters.push(\"subject=\" + subject);\n\n // body = data-body\n bodyMail = mailgoElement.getAttribute(\"data-body\");\n\n // if body is defined add it to parameters\n if (bodyMail) parameters.push(\"body=\" + bodyMail);\n\n // set the lessSpamHref\n lessSpamHref = buildLessSpamHref(\n MAILTO + encodeURIComponent(mail),\n parameters\n );\n }\n\n // if is in config use it\n if (typeof config?.validateEmail !== \"undefined\") {\n validateEmailConfig = config.validateEmail;\n }\n\n if (validateEmailConfig) {\n // validate the email address\n if (!validateEmails(mail.split(\",\"))) {\n return false;\n }\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 // mailgo tel\n else if (type === MAILGO_TEL) {\n if (installation === CLASSIC) {\n if (validateUrl(href, TEL)) {\n tel = decodeURIComponent(href.split(\"?\")[0].split(TEL)[1].trim());\n } else if (validateUrl(href, CALLTO)) {\n tel = decodeURIComponent(href.split(\"?\")[0].split(CALLTO)[1].trim());\n } else if (validateUrl(href, SMS)) {\n tel = decodeURIComponent(href.split(\"?\")[0].split(SMS)[1].trim());\n }\n\n try {\n url = new URL(href);\n let urlParams: URLSearchParams = url.searchParams;\n\n // optional parameters for the phone number\n msg = urlParams.get(\"body\");\n } catch (error) {\n console.log(error);\n }\n } else if (installation == LESS_SPAM) {\n tel = mailgoElement.getAttribute(\"data-tel\");\n msg = mailgoElement.getAttribute(\"data-msg\");\n\n try {\n url = new URL(TEL + encodeURIComponent(tel));\n } catch (error) {\n console.log(error);\n }\n\n let parameters: string[] = [];\n\n // if msg is defined add it to parameters\n if (msg) parameters.push(\"body=\" + msg);\n\n // set the lessSpamHref\n lessSpamHref = buildLessSpamHref(\n TEL + encodeURIComponent(tel),\n parameters\n );\n }\n\n // if is in config use it\n if (typeof config?.validateTel !== \"undefined\") {\n validateTelConfig = config.validateTel;\n }\n\n // validate the phone number\n if (validateTelConfig) {\n if (!validateTel(tel)) return;\n }\n\n // Telegram username\n if (mailgoElement && mailgoElement.hasAttribute(\"data-telegram\")) {\n telegramUsername = mailgoElement.getAttribute(\"data-telegram\");\n } else {\n telegramUsername = null;\n }\n\n // Telegram username\n if (mailgoElement && mailgoElement.hasAttribute(\"data-skype\")) {\n skypeUsername = mailgoElement.getAttribute(\"data-skype\");\n } else {\n skypeUsername = null;\n }\n }\n\n // if dark is in config or contained in the element\n if (config?.dark || mailgoElement.classList.contains(\"dark\")) {\n enableDarkMode();\n } else {\n disableDarkMode();\n }\n\n // render mailgo\n mailgoRender();\n\n return true;\n}\n\n/**\n * mailgoDirectRender\n * function to render a mailgo directly from a URL\n */\nfunction mailgoDirectRender(directUrl: string): boolean {\n // start mailgo\n mailgo();\n\n if (validateUrl(directUrl, MAILTO) || validateUrl(directUrl, MAILGO)) {\n activeMailgoType = {\n type: MAILGO_MAIL,\n installation: CLASSIC,\n };\n mailgoPreRender(directUrl);\n return true;\n } else if (\n validateUrl(directUrl, TEL) ||\n validateUrl(directUrl, CALLTO) ||\n validateUrl(directUrl, SMS)\n ) {\n activeMailgoType = {\n type: MAILGO_TEL,\n installation: CLASSIC,\n };\n mailgoPreRender(directUrl);\n return true;\n }\n return false;\n}\n\n/**\n * mailgoRender\n * function to render a mailgo (mail or tel)\n */\nfunction mailgoRender(): boolean {\n // get the type from current mailgo type\n let type: MailgoModalType = activeMailgoType?.type;\n\n // if type is not defined return\n if (!type) return false;\n\n // mailgo mail\n if (type === MAILGO_MAIL) {\n // the title of the modal (email address)\n title.textContent = mail.split(\",\").join(\"\\n\");\n\n // add the details if provided\n if (mailgoConfigAttributeEnabled(\"detail\", \"cc\") && cc) {\n detailCc.style.display = \"block\";\n ccValue.textContent = cc.split(\",\").join(\"\\n\");\n } else {\n detailCc.style.display = \"none\";\n }\n\n if (mailgoConfigAttributeEnabled(\"detail\", \"bcc\") && bcc) {\n detailBcc.style.display = \"block\";\n bccValue.textContent = bcc.split(\",\").join(\"\\n\");\n } else {\n detailBcc.style.display = \"none\";\n }\n\n if (mailgoConfigAttributeEnabled(\"detail\", \"subject\") && subject) {\n detailSubject.style.display = \"block\";\n subjectValue.textContent = subject;\n } else {\n detailSubject.style.display = \"none\";\n }\n\n if (mailgoConfigAttributeEnabled(\"detail\", \"body\") && bodyMail) {\n detailBody.style.display = \"block\";\n bodyValue.textContent = bodyMail;\n } else {\n detailBody.style.display = \"none\";\n }\n\n // add the actions\n gmail.addEventListener(\"click\", openGmail);\n\n outlook.addEventListener(\"click\", openOutlook);\n\n yahoo.addEventListener(\"click\", openYahooMail);\n\n open.addEventListener(\"click\", openDefault);\n\n copyMail.addEventListener(\"click\", copy);\n }\n // mailgo tel\n else if (type === MAILGO_TEL) {\n // the title of the modal (tel)\n titleTel.textContent = tel;\n\n if (mailgoConfigAttributeEnabled(\"detail\", \"msg\") && msg) {\n detailMsg.style.display = \"block\";\n msgValue.textContent = msg;\n } else {\n detailMsg.style.display = \"none\";\n }\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\", openDefault);\n\n copyTel.addEventListener(\"click\", copy);\n }\n\n // show the mailgo\n showMailgo(type);\n\n // add listener keyDown\n document.addEventListener(\"keydown\", mailgoKeydown);\n\n return true;\n}\n\n// actions\nconst openGmail = (event?: Event): void => {\n event.preventDefault();\n\n let urlString: string;\n let installation: MailgoInstallationType = activeMailgoType?.installation;\n\n if (installation === CLASSIC) {\n try {\n urlString = url.toString();\n } catch (e) {\n urlString = href;\n }\n } else if (installation === LESS_SPAM) {\n urlString = lessSpamHref;\n }\n\n // Gmail url\n let gmailUrl: string =\n \"https://mail.google.com/mail/?extsrc=mailto&url=\" +\n encodeURIComponent(urlString);\n\n // open the link\n window.open(gmailUrl, \"_blank\", \"noopener, noreferrer\");\n\n // hide the modal\n hideMailgo();\n};\n\nconst openOutlook = (event?: Event): void => {\n event.preventDefault();\n\n // Outlook starting url\n let startingOutlookUrl: string =\n \"https://outlook.live.com/owa/?path=/mail/action/compose&to=\";\n\n // let the user to decide to open Office365 Outlook instead of the classic outlook.live.com\n if (config?.office365) {\n startingOutlookUrl =\n \"https://outlook.office365.com/owa/?path=/mail/action/compose&to=\";\n }\n\n // Outlook url\n let outlookUrl: string = startingOutlookUrl + encodeURIComponent(mail);\n\n // the details if provided\n if (subject) {\n outlookUrl = outlookUrl.concat(\"&subject=\" + encodeURIComponent(subject));\n }\n\n if (bodyMail) {\n outlookUrl = outlookUrl.concat(\"&body=\" + encodeURIComponent(bodyMail));\n }\n\n // open the link\n window.open(outlookUrl, \"_blank\", \"noopener, noreferrer\");\n\n // hide the modal\n hideMailgo();\n};\n\nconst openYahooMail = (event?: Event): void => {\n event.preventDefault();\n\n // Yahoo url\n let yahooUrl: string = \"https://compose.mail.yahoo.com/?to=\" + mail;\n\n // the details if provided\n if (subject) {\n yahooUrl = yahooUrl.concat(\"&subject=\" + encodeURIComponent(subject));\n }\n if (bodyMail) {\n yahooUrl = yahooUrl.concat(\"&body=\" + encodeURIComponent(bodyMail));\n }\n\n // open the link\n window.open(yahooUrl, \"_blank\", \"noopener, noreferrer\");\n\n // hide the modal\n hideMailgo();\n};\n\nconst openTelegram = (event?: Event): void => {\n event.preventDefault();\n\n // check if telegramUsername exists\n if (telegramUsername) {\n // Telegram url\n let tgUrl: string = \"https://t.me/\" + encodeURIComponent(telegramUsername);\n\n // open the url\n window.open(tgUrl, \"_blank\", \"noopener, noreferrer\");\n\n // hide the modal\n hideMailgo();\n }\n};\n\nconst openSkype = (event?: Event): void => {\n event.preventDefault();\n\n let skype: string = skypeUsername || tel;\n\n // Telegram url\n let skypeUrl: string = \"skype:\" + encodeURIComponent(skype);\n\n // open the url\n window.open(skypeUrl, \"_blank\", \"noopener, noreferrer\");\n\n // hide the modal\n hideMailgo();\n};\n\nconst openWhatsApp = (event?: Event): void => {\n event.preventDefault();\n\n // WhatsApp API doesn't work with non number digits and leading 0s: https://faq.whatsapp.com/general/chats/how-to-use-click-to-chat/\n let whatappTel = tel.replace(notNumber, \"\").replace(leadingZeros, \"\");\n\n // WhatsApp url\n let waUrl: string = \"https://wa.me/\" + encodeURIComponent(whatappTel);\n\n // the details if provided\n if (msg) {\n waUrl = waUrl.concat(\"?text=\" + encodeURIComponent(msg));\n }\n\n // open the url\n window.open(waUrl, \"_blank\", \"noopener, noreferrer\");\n\n // hide the modal\n hideMailgo();\n};\n\nconst openDefault = (event?: Event): void => {\n event.preventDefault();\n\n let installation: MailgoInstallationType = activeMailgoType?.installation;\n\n // if the installation is classic the browser can follow the default behaviour\n if (installation === CLASSIC) {\n window.location.href = href;\n } else if (installation === LESS_SPAM) {\n // if the installation is less-spam use the built less-spam href\n window.location.href = lessSpamHref;\n }\n\n hideMailgo();\n};\n\nconst copy = (event?: Event): void => {\n event.preventDefault();\n\n // the correct copyButton (mail or tel)\n if (mailgoIsShowing()) {\n let activeCopy: HTMLElement;\n\n let type: MailgoModalType = activeMailgoType?.type;\n\n if (type === MAILGO_MAIL) {\n // in case it is showing mail modal copy email address\n copyToClipboard(mail);\n activeCopy = copyMail;\n } else {\n // in case it is showing tel modal copy phone number\n copyToClipboard(tel);\n activeCopy = copyTel;\n }\n\n activeCopy.textContent = strings.copied || defaultStrings.copied;\n setTimeout(() => {\n activeCopy.textContent = strings.copy || defaultStrings.copy;\n // hide after the timeout\n hideMailgo();\n }, 999);\n }\n};\n\n// function to find if a link is a mailto, tel, callto or sms\nconst validateUrl = (url: string, type: string = MAILTO) => {\n let regexValidate = new RegExp(\"^\" + type + \"((.)+)\", \"gi\");\n return regexValidate.test(url);\n};\n\n// function that returns if an element is a mailgo\nfunction getMailgoTypeByElement(element: HTMLElement): MailgoType | null {\n let elementHref: string = (element as HTMLLinkElement).getAttribute(\"href\");\n\n // return null if there is no-mailgo in class\n if (element.classList?.contains(NO_MAILGO)) {\n return null;\n }\n\n // the case of classic type of mailgo, like a href=mailto:... or a href=tel:... and the class=mailgo with a useful href\n if (elementHref || element.classList?.contains(\"mailgo\")) {\n if (validateUrl(elementHref, MAILTO) || validateUrl(elementHref, MAILGO)) {\n // a mailto: or mailgo:\n return {\n type: MAILGO_MAIL,\n installation: CLASSIC,\n };\n } else if (\n validateUrl(elementHref, TEL) ||\n validateUrl(elementHref, CALLTO)\n ) {\n // a tel: or callto:\n return {\n type: MAILGO_TEL,\n installation: CLASSIC,\n };\n } else if (validateUrl(elementHref, SMS)) {\n // a sms:\n return {\n type: MAILGO_SMS,\n installation: CLASSIC,\n };\n }\n }\n\n if (elementHref === \"#mailgo\" || element.classList?.contains(\"mailgo\")) {\n // less-spam installation of mailgo, check to the attributes\n if (\n element.hasAttribute(\"data-address\") &&\n element.hasAttribute(\"data-domain\")\n ) {\n // less-spam mailto with data-address and data-domain\n return {\n type: MAILGO_MAIL,\n installation: LESS_SPAM,\n };\n } else if (element.hasAttribute(\"data-tel\")) {\n // less-spam tel with data-tel\n return {\n type: MAILGO_TEL,\n installation: LESS_SPAM,\n };\n } else if (element.hasAttribute(\"data-msg\")) {\n // less-spam sms with data-msd\n return {\n type: MAILGO_SMS,\n installation: LESS_SPAM,\n };\n }\n }\n\n return null;\n}\n\n/**\n * mailgoKeydown\n * function to manage the keydown event when the modal is showing, return a boolean that represents if a useful key has been pressed\n */\nconst mailgoKeydown = (keyboardEvent: KeyboardEvent): boolean => {\n // if mailgo is showing\n if (mailgoIsShowing()) {\n let type: MailgoModalType = activeMailgoType?.type;\n\n if (type === MAILGO_MAIL) {\n switch (keyboardEvent.keyCode) {\n case 27:\n // Escape\n hideMailgo();\n return true;\n case 71:\n // g -> open GMail\n openGmail();\n return true;\n case 79:\n // o -> open Outlook\n openOutlook();\n return true;\n case 89:\n // y -> open Yahoo Mail\n openYahooMail();\n return true;\n case 32:\n case 13:\n // spacebar or enter -> open default\n openDefault();\n return true;\n case 67:\n // c -> copy\n copy();\n return true;\n default:\n return false;\n }\n } else if (type === MAILGO_TEL) {\n switch (keyboardEvent.keyCode) {\n case 27:\n // Escape\n hideMailgo();\n return true;\n case 84:\n // t -> open Telegram\n openTelegram();\n return true;\n case 87:\n // w -> open WhatsApp\n openWhatsApp();\n return true;\n case 83:\n // s -> open Skype\n openSkype();\n return true;\n case 32:\n case 13:\n // spacebar or enter -> open default\n openDefault();\n return true;\n case 67:\n // c -> copy\n copy();\n return true;\n default:\n return false;\n }\n }\n }\n return false;\n};\n\n// show the modal\nconst showMailgo = (type: MailgoModalType): 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(MAILGO_MAIL, \"none\");\n setModalDisplay(MAILGO_TEL, \"none\");\n\n // remove listener keyDown\n document.removeEventListener(\"keydown\", mailgoKeydown);\n};\n\n// is the mailgo modal hidden?\nconst mailgoIsShowing = (): boolean => {\n return (\n (mailtoEnabled && getModalDisplay(MAILGO_MAIL) === \"flex\") ||\n ((telEnabled || smsEnabled) && getModalDisplay(MAILGO_TEL) === \"flex\")\n );\n};\n\nconst byElement = (): HTMLLinkElement => {\n // by element in the footer\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// get the correct HTMLElement from a type\nconst getModalHTMLElement = (type: MailgoModalType = MAILGO_MAIL) => {\n if (type === MAILGO_TEL) {\n return modalTel;\n } else {\n return modalMailto;\n }\n};\n\n// get display value\nconst getModalDisplay = (ref: MailgoModalType = MAILGO_MAIL): string =>\n getModalHTMLElement(ref).style.display;\n\n// set display value\nconst setModalDisplay = (\n ref: MailgoModalType = MAILGO_MAIL,\n value: string\n): void => {\n let modal = getModalHTMLElement(ref);\n\n if (modal) {\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\n// enable dark mode\nconst enableDarkMode = () => {\n // get the type from current mailgo type\n let type: MailgoModalType = activeMailgoType?.type;\n if (type) {\n getModalHTMLElement(type).classList.add(\"m-dark\");\n }\n};\n\n// disable dark mode\nconst disableDarkMode = () => {\n // get the type from current mailgo type\n let type: MailgoModalType = activeMailgoType?.type;\n if (type) {\n getModalHTMLElement(type).classList.remove(\"m-dark\");\n }\n};\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// function to recreate a mailto: or tel: href from less-spam\nconst buildLessSpamHref = (type: string, parameters: string[]): string => {\n lessSpamHref = type;\n if (parameters && parameters.length > 0) {\n let joinedParams = parameters.join(\"&\");\n lessSpamHref = lessSpamHref.concat(\"?\" + joinedParams);\n }\n return lessSpamHref;\n};\n\n// function to check an attribute is enabled or not, by default considering it enabled\nconst mailgoConfigAttributeEnabled = (\n type: \"action\" | \"detail\",\n attribute: MailgoAction | MailgoDetail\n): boolean => {\n // by default all the actions and attribute are enabled\n if (!config) {\n return true;\n }\n\n // if the attribute type is action consider the actions config attribute\n if (type === \"action\") {\n if (config && !config?.actions) {\n return true;\n }\n\n if (\n config &&\n config.actions &&\n config?.actions[attribute as MailgoAction] === false\n ) {\n return false;\n }\n } else if (type === \"detail\") {\n // else consider the details attribute\n\n if (config && !config?.details) {\n return true;\n }\n\n if (\n config &&\n config.details &&\n config?.details[attribute as MailgoDetail] === false\n ) {\n return false;\n }\n }\n\n return true;\n};\n\n// manage the language of mailgo\nconst mailgoSetLanguage = (): string => {\n let languageType = \"default lang\";\n\n // if a language is defined in configuration use it\n if (\n config?.lang &&\n (languages as MailgoLanguages).indexOf(config.lang) !== -1\n ) {\n lang = config.lang;\n languageType = \"config lang\";\n } else {\n // else if is defined use it!\n // keep the lang from html\n let htmlLang: string = document.documentElement.lang;\n\n // find the correct language using the lang attribute, not just a === because there a are cases like fr-FR or fr_FR in html lang attribute\n (languages as MailgoLanguages).forEach((language: any) => {\n if (new RegExp(\"^\" + language, \"gi\").test(htmlLang)) {\n lang = language;\n languageType = \"html lang\";\n }\n });\n }\n\n // strings\n strings = (translations as MailgoTranslations)[lang];\n\n return languageType;\n};\n\nconst mailgoStyle = (): void => {\n if (!document.getElementById(\"mailgo-style\")) {\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\n// mailgo\nfunction mailgo(mailgoConfig?: MailgoConfig): boolean {\n try {\n // polyfill mailgo\n // mailgoPolyfill();\n\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 (typeof window !== \"undefined\") {\n // if is set in config use it (load the mailgo CSS)\n if (typeof config?.loadCSS !== \"undefined\") {\n loadCSSConfig = config.loadCSS;\n }\n\n // if is set in config use it (enable mailto)\n if (typeof config?.mailto !== \"undefined\") {\n mailtoEnabled = config.mailto;\n }\n\n // if is set in config use it (enable tel)\n if (typeof config?.tel !== \"undefined\") {\n telEnabled = config.tel;\n }\n\n // if is set in config use it (enable sms)\n if (typeof config?.sms !== \"undefined\") {\n smsEnabled = config.sms;\n }\n\n // if load css enabled load it!\n if (loadCSSConfig) {\n // add the style for mailgo\n mailgoStyle();\n }\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 mailgoInit,\n config.listenerOptions\n );\n } else {\n // no listener options\n document.addEventListener(config.initEvent, mailgoInit);\n }\n } else {\n mailgoInit();\n }\n\n return true;\n }\n } catch (error) {\n console.log(error);\n }\n return false;\n}\n\n// define the methods also for window element\nif (typeof window !== \"undefined\") {\n (window as any).getMailgoTypeByElement = getMailgoTypeByElement;\n (window as any).mailgoClickListener = mailgoClickListener;\n (window as any).mailgoCheckRender = mailgoClickListener; // for compatibility with old version of mailgo\n (window as any).mailgoPreRender = mailgoPreRender;\n (window as any).mailgoDirectRender = mailgoDirectRender;\n (window as any).mailgoRender = mailgoRender;\n (window as any).mailgo = mailgo;\n}\n\nexport {\n getMailgoTypeByElement,\n mailgoClickListener,\n mailgoPreRender,\n mailgoDirectRender,\n mailgoRender,\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","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tif(__webpack_module_cache__[moduleId]) {\n\t\treturn __webpack_module_cache__[moduleId].exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","// startup\n// Load entry module and return exports\n// This entry module doesn't tell about it's top-level declarations so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(474);\n"],"sourceRoot":""} \ No newline at end of file diff --git a/dist/mailgo.min.js b/dist/mailgo.min.js index 41d6849..f16d69a 100644 --- a/dist/mailgo.min.js +++ b/dist/mailgo.min.js @@ -1,2 +1,2 @@ -window.mailgo=function(){var e={91:function(e,o,t){var a=t(476)((function(e){return e[1]}));a.push([e.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:.8}.m-modal .m-modal-content{position:relative;z-index:10002;box-sizing:content-box;text-align:center;overflow:hidden;min-width:200px;max-width:240px;background-color:#fff;opacity:.95;border-radius:20px;box-shadow:0 3px 20px rgba(32,35,42,.5);border:3px solid #333;color:#4a4a4a;display:flex;flex-direction:column;overflow:auto;padding:24px;transition:.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:pre-line;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{white-space:pre-line;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(192,55,42,.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(9,103,170,.08);color:#0967aa}.m-modal .m-modal-content a.m-yahoo{color:#4a00a0}.m-modal .m-modal-content a.m-yahoo:hover,.m-modal .m-modal-content a.m-yahoo:focus,.m-modal .m-modal-content a.m-yahoo:active{background-color:rgba(74,0,160,.08);color:#4a00a0}.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(8,109,160,.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(6,116,102,.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(7,109,146,.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,.08);color:#4a4a4a}.m-modal .m-modal-content a.m-by{font-size:12px;margin-top:.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,.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(224,125,115,.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(76,156,215,.08);color:#4c9cd7}.m-modal.m-dark .m-modal-content a.m-yahoo{color:#ac88d3}.m-modal.m-dark .m-modal-content a.m-yahoo:hover,.m-modal.m-dark .m-modal-content a.m-yahoo:focus,.m-modal.m-dark .m-modal-content a.m-yahoo:active{background-color:rgba(172,136,211,.08);color:#ac88d3}.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(76,171,219,.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(76,210,192,.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(76,199,244,.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}',""]),e.exports=a},476:function(e){"use strict";e.exports=function(e){var o=[];return o.toString=function(){return this.map((function(o){var t=e(o);return o[2]?"@media ".concat(o[2]," {").concat(t,"}"):t})).join("")},o.i=function(e,t,a){"string"==typeof e&&(e=[[null,e,""]]);var n={};if(a)for(var d=0;d()[\]\\.,;:\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)},h=function(e){return e.every(y)},k=function(e){var o=document.createElement("textarea");o.value=e,o.setAttribute("readonly",""),o.style.position="absolute",o.style.left="-9999px",document.body.appendChild(o);var t=document.getSelection().rangeCount>0&&document.getSelection().getRangeAt(0);return o.select(),document.execCommand("copy"),document.body.removeChild(o),!!t&&(document.getSelection().removeAllRanges(),document.getSelection().addRange(t),!0)},_=function(e){var o=e;o.querySelector(".m-modal-content a:last-of-type").addEventListener("keydown",w),o.querySelector(".m-modal-content a:first-of-type").addEventListener("keydown",C)},w=function(e){"Tab"===e.code&&!1===e.shiftKey&&(e.preventDefault(),e.target.closest("div").querySelector("a:first-of-type").focus())},C=function(e){"Tab"===e.code&&!0===e.shiftKey&&(e.preventDefault(),e.target.closest("div").querySelector("a:last-of-type").focus())},x=JSON.parse('["en","it","es","de","fr","pt","nl","ru","sv","no","dk","is","zh","ja"]'),L=JSON.parse('{"en":{"open_in_":"open in ","cc_":"cc ","bcc_":"bcc ","subject_":"subject ","body_":"body ","gmail":"Gmail","outlook":"Outlook","yahoo":"Yahoo Mail","telegram":"Telegram","whatsapp":"WhatsApp","skype":"Skype","call":"call","open":"open","_default":" default","_as_default":" as default","copy":"copy","copied":"copied"},"it":{"open_in_":"apri con ","bcc_":"ccn ","subject_":"oggetto ","body_":"testo ","call":"chiama","open":"apri","_default":" ","_as_default":" ","copy":"copia","copied":"copiato"},"es":{"open_in_":"abrir con ","bcc_":"cco ","subject_":"asunto ","body_":"cuerpo ","call":"llamar","open":"abrir","_default":" predefinido","_as_default":" por defecto","copy":"copiar","copied":"copiado"},"de":{"open_in_":"Öffnen in ","subject_":"Betreff ","body_":"Nachricht ","call":"Anrufen","open":"Öffnen","_default":" mit Standard","_as_default":" mit Standard","copy":"kopieren","copied":"kopiert"},"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","copied":"copiado"},"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","copied":"copié"},"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":"скопировать"},"sv":{"open_in_":"öppna i ","subject_":"ämne ","body_":"meddelandetext ","call":"ring","open":"öppna","_default":" förval","_as_default":" som förval","copy":"kopiera","copied":"kopierad"},"no":{"open_in_":"åpne i ","subject_":"emne ","call":"ringe","open":"åpne","_as_default":" som standard","copy":"kopiere","copied":"kopiert"},"dk":{"open_in_":"åpne i ","subject_":"emne ","call":"ringe op","open":"åben","_as_default":" som standard","copy":"kopi","copied":"kopieret"},"is":{"open_in_":"opið inn ","subject_":"viðfangsefni ","body_":"líkami ","call":"hringja","open":"opið","_default":" sjálfgefið","_as_default":" sem sjálfgefið","copy":"afrita","copied":"afritað"},"zh":{"open_in_":"開啟 ","cc_":"副本 ","bcc_":"密件副本 ","subject_":"主旨 ","body_":"內文 ","call":"通話","open":"開啟","_default":" 預設","_as_default":" 預設","copy":"複製","copied":"已複製"},"ja":{"open_in_":"開く ","subject_":"主題 ","body_":"本文 ","call":"通話 ","open":"開く ","_default":" 標準のアプリ","_as_default":" 標準のアプリ","copy":"リンクをコピー","copied":"コピーしました"}}');function j(e,o){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);o&&(a=a.filter((function(o){return Object.getOwnPropertyDescriptor(e,o).enumerable}))),t.push.apply(t,a)}return t}function E(e){for(var o=1;o1&&void 0!==arguments[1]?arguments[1]:a,t=new RegExp("^"+o+"((.)+)","gi");return t.test(e)};function Fe(e){var o,t,u,f=e.getAttribute("href");if(null!==(o=e.classList)&&void 0!==o&&o.contains("no-mailgo"))return null;if(f||null!==(t=e.classList)&&void 0!==t&&t.contains("mailgo")){if(Me(f,a)||Me(f,n))return{type:m,installation:s};if(Me(f,d)||Me(f,l))return{type:c,installation:s};if(Me(f,i))return{type:r,installation:s}}if("#mailgo"===f||null!==(u=e.classList)&&void 0!==u&&u.contains("mailgo")){if(e.hasAttribute("data-address")&&e.hasAttribute("data-domain"))return{type:m,installation:p};if(e.hasAttribute("data-tel"))return{type:c,installation:p};if(e.hasAttribute("data-msg"))return{type:r,installation:p}}return null}var qe=function(e){if(Ke()){var o,t=null===(o=O)||void 0===o?void 0:o.type;if(t===m)switch(e.keyCode){case 27:return Je(),!0;case 71:return Ie(),!0;case 79:return Ne(),!0;case 89:return Ue(),!0;case 32:case 13:return Te(),!0;case 67:return Be(),!0;default:return!1}else if(t===c)switch(e.keyCode){case 27:return Je(),!0;case 84:return Pe(),!0;case 87:return ze(),!0;case 83:return De(),!0;case 32:case 13:return Te(),!0;case 67:return Be(),!0;default:return!1}}return!1},He=function(e){Qe(e,"flex")},Je=function(){Qe(m,"none"),Qe(c,"none"),document.removeEventListener("keydown",qe)},Ke=function(){return he&&"flex"===Ye(m)||(ke||_e)&&"flex"===Ye(c)},We=function(){var e=Ze(f);return e.href="https://mailgo.dev?ref=mailgo-modal",e.className="m-by",e.target="_blank",e.rel="noopener noreferrer",e.appendChild($e("mailgo.dev")),e},Ze=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"div";return document.createElement(e)},$e=function(e){return document.createTextNode(e)},Ge=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:m;return e===c?N:I},Ye=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:m;return Ge(e).style.display},Qe=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:m,o=arguments.length>1?arguments[1]:void 0,t=Ge(e);t&&(t.style.display=o,"flex"===o?(ne=document.activeElement,t.setAttribute("aria-hidden","false"),t.setAttribute("tabindex","0"),t.focus(),_(t)):(t.setAttribute("aria-hidden","true"),t.setAttribute("tabindex","-1"),ne.focus()))},Ve=function(){var e,o=null===(e=O)||void 0===e?void 0:e.type;o&&Ge(o).classList.add("m-dark")},Xe=function(){var e,o=null===(e=O)||void 0===e?void 0:e.type;o&&Ge(o).classList.remove("m-dark")},eo=function(e){for(var o=[];e;){if(o.push(e),"HTML"===e.tagName)return o.push(document),o.push(window),o;e=e.parentElement}},oo=function(e,o){if(D=e,o&&o.length>0){var t=o.join("&");D=D.concat("?"+t)}return D},to=function(e,o){if(!S)return!0;if("action"===e){var t,a;if(S&&(null===(t=S)||void 0===t||!t.actions))return!0;if(S&&S.actions&&!1===(null===(a=S)||void 0===a?void 0:a.actions[o]))return!1}else if("detail"===e){var n,d;if(S&&(null===(n=S)||void 0===n||!n.details))return!0;if(S&&S.details&&!1===(null===(d=S)||void 0===d?void 0:d.details[o]))return!1}return!0},ao=function(){var e,o="default lang";if(null!==(e=S)&&void 0!==e&&e.lang&&-1!==x.indexOf(S.lang))ge=S.lang,o="config lang";else{var t=document.documentElement.lang;x.forEach((function(e){new RegExp("^"+e,"gi").test(t)&&(ge=e,o="html lang")}))}return R=L[ge],o};function no(e){try{var o;if(S=E(E({},e),(null===(o=window)||void 0===o?void 0:o.mailgoConfig)||null),"undefined"!=typeof window){var t,a,n,d,l,i;if(void 0!==(null===(t=S)||void 0===t?void 0:t.loadCSS)&&(Ee=S.loadCSS),void 0!==(null===(a=S)||void 0===a?void 0:a.mailto)&&(he=S.mailto),void 0!==(null===(n=S)||void 0===n?void 0:n.tel)&&(ke=S.tel),void 0!==(null===(d=S)||void 0===d?void 0:d.sms)&&(_e=S.sms),Ee&&function(){if(!document.getElementById("mailgo-style")){var e=Ze("style");e.id="mailgo-style",e.type="text/css",e.appendChild($e(ve)),document.head.appendChild(e)}}(),null!==(l=S)&&void 0!==l&&l.initEvent)null!==(i=S)&&void 0!==i&&i.listenerOptions?document.addEventListener(S.initEvent,Ae,S.listenerOptions):document.addEventListener(S.initEvent,Ae);else Ae();return!0}}catch(e){console.log(e)}return!1}"undefined"!=typeof window&&(window.getMailgoTypeByElement=Fe,window.mailgoClickListener=Re,window.mailgoCheckRender=Re,window.mailgoPreRender=Se,window.mailgoDirectRender=function(e){return no(),Me(e,a)||Me(e,n)?(O={type:m,installation:s},Se(e),!0):!!(Me(e,d)||Me(e,l)||Me(e,i))&&(O={type:c,installation:s},Se(e),!0)},window.mailgoRender=Oe,window.mailgo=no);no({initEvent:"DOMContentLoaded"})}},o={};function t(a){if(o[a])return o[a].exports;var n=o[a]={id:a,exports:{}};return e[a](n,n.exports,t),n.exports}return t.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},t(474)}(); +!function(){var e={91:function(e,o,t){var a=t(476)((function(e){return e[1]}));a.push([e.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:.8}.m-modal .m-modal-content{position:relative;z-index:10002;box-sizing:content-box;text-align:center;overflow:hidden;min-width:200px;max-width:240px;background-color:#fff;opacity:.95;border-radius:20px;box-shadow:0 3px 20px rgba(32,35,42,.5);border:3px solid #333;color:#4a4a4a;display:flex;flex-direction:column;overflow:auto;padding:24px;transition:.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:pre-line;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{white-space:pre-line;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(192,55,42,.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(9,103,170,.08);color:#0967aa}.m-modal .m-modal-content a.m-yahoo{color:#4a00a0}.m-modal .m-modal-content a.m-yahoo:hover,.m-modal .m-modal-content a.m-yahoo:focus,.m-modal .m-modal-content a.m-yahoo:active{background-color:rgba(74,0,160,.08);color:#4a00a0}.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(8,109,160,.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(6,116,102,.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(7,109,146,.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,.08);color:#4a4a4a}.m-modal .m-modal-content a.m-by{font-size:12px;margin-top:.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,.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(224,125,115,.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(76,156,215,.08);color:#4c9cd7}.m-modal.m-dark .m-modal-content a.m-yahoo{color:#ac88d3}.m-modal.m-dark .m-modal-content a.m-yahoo:hover,.m-modal.m-dark .m-modal-content a.m-yahoo:focus,.m-modal.m-dark .m-modal-content a.m-yahoo:active{background-color:rgba(172,136,211,.08);color:#ac88d3}.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(76,171,219,.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(76,210,192,.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(76,199,244,.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}',""]),e.exports=a},476:function(e){"use strict";e.exports=function(e){var o=[];return o.toString=function(){return this.map((function(o){var t=e(o);return o[2]?"@media ".concat(o[2]," {").concat(t,"}"):t})).join("")},o.i=function(e,t,a){"string"==typeof e&&(e=[[null,e,""]]);var n={};if(a)for(var d=0;d()[\]\\.,;:\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)},h=function(e){return e.every(y)},k=function(e){var o=document.createElement("textarea");o.value=e,o.setAttribute("readonly",""),o.style.position="absolute",o.style.left="-9999px",document.body.appendChild(o);var t=document.getSelection().rangeCount>0&&document.getSelection().getRangeAt(0);return o.select(),document.execCommand("copy"),document.body.removeChild(o),!!t&&(document.getSelection().removeAllRanges(),document.getSelection().addRange(t),!0)},_=function(e){var o=e;o.querySelector(".m-modal-content a:last-of-type").addEventListener("keydown",w),o.querySelector(".m-modal-content a:first-of-type").addEventListener("keydown",C)},w=function(e){"Tab"===e.code&&!1===e.shiftKey&&(e.preventDefault(),e.target.closest("div").querySelector("a:first-of-type").focus())},C=function(e){"Tab"===e.code&&!0===e.shiftKey&&(e.preventDefault(),e.target.closest("div").querySelector("a:last-of-type").focus())},x=JSON.parse('["en","it","es","de","fr","pt","nl","ru","sv","no","dk","is","zh","ja"]'),L=JSON.parse('{"en":{"open_in_":"open in ","cc_":"cc ","bcc_":"bcc ","subject_":"subject ","body_":"body ","gmail":"Gmail","outlook":"Outlook","yahoo":"Yahoo Mail","telegram":"Telegram","whatsapp":"WhatsApp","skype":"Skype","call":"call","open":"open","_default":" default","_as_default":" as default","copy":"copy","copied":"copied"},"it":{"open_in_":"apri con ","bcc_":"ccn ","subject_":"oggetto ","body_":"testo ","call":"chiama","open":"apri","_default":" ","_as_default":" ","copy":"copia","copied":"copiato"},"es":{"open_in_":"abrir con ","bcc_":"cco ","subject_":"asunto ","body_":"cuerpo ","call":"llamar","open":"abrir","_default":" predefinido","_as_default":" por defecto","copy":"copiar","copied":"copiado"},"de":{"open_in_":"Öffnen in ","subject_":"Betreff ","body_":"Nachricht ","call":"Anrufen","open":"Öffnen","_default":" mit Standard","_as_default":" mit Standard","copy":"kopieren","copied":"kopiert"},"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","copied":"copiado"},"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","copied":"copié"},"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":"скопировать"},"sv":{"open_in_":"öppna i ","subject_":"ämne ","body_":"meddelandetext ","call":"ring","open":"öppna","_default":" förval","_as_default":" som förval","copy":"kopiera","copied":"kopierad"},"no":{"open_in_":"åpne i ","subject_":"emne ","call":"ringe","open":"åpne","_as_default":" som standard","copy":"kopiere","copied":"kopiert"},"dk":{"open_in_":"åpne i ","subject_":"emne ","call":"ringe op","open":"åben","_as_default":" som standard","copy":"kopi","copied":"kopieret"},"is":{"open_in_":"opið inn ","subject_":"viðfangsefni ","body_":"líkami ","call":"hringja","open":"opið","_default":" sjálfgefið","_as_default":" sem sjálfgefið","copy":"afrita","copied":"afritað"},"zh":{"open_in_":"開啟 ","cc_":"副本 ","bcc_":"密件副本 ","subject_":"主旨 ","body_":"內文 ","call":"通話","open":"開啟","_default":" 預設","_as_default":" 預設","copy":"複製","copied":"已複製"},"ja":{"open_in_":"開く ","subject_":"主題 ","body_":"本文 ","call":"通話 ","open":"開く ","_default":" 標準のアプリ","_as_default":" 標準のアプリ","copy":"リンクをコピー","copied":"コピーしました"}}');function j(e,o){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);o&&(a=a.filter((function(o){return Object.getOwnPropertyDescriptor(e,o).enumerable}))),t.push.apply(t,a)}return t}function E(e){for(var o=1;o1&&void 0!==arguments[1]?arguments[1]:a,t=new RegExp("^"+o+"((.)+)","gi");return t.test(e)};function Fe(e){var o,t,u,f=e.getAttribute("href");if(null!==(o=e.classList)&&void 0!==o&&o.contains("no-mailgo"))return null;if(f||null!==(t=e.classList)&&void 0!==t&&t.contains("mailgo")){if(Me(f,a)||Me(f,n))return{type:m,installation:s};if(Me(f,d)||Me(f,l))return{type:c,installation:s};if(Me(f,i))return{type:r,installation:s}}if("#mailgo"===f||null!==(u=e.classList)&&void 0!==u&&u.contains("mailgo")){if(e.hasAttribute("data-address")&&e.hasAttribute("data-domain"))return{type:m,installation:p};if(e.hasAttribute("data-tel"))return{type:c,installation:p};if(e.hasAttribute("data-msg"))return{type:r,installation:p}}return null}var qe=function(e){if(Ke()){var o,t=null===(o=O)||void 0===o?void 0:o.type;if(t===m)switch(e.keyCode){case 27:return Je(),!0;case 71:return Ie(),!0;case 79:return Ne(),!0;case 89:return Ue(),!0;case 32:case 13:return Te(),!0;case 67:return Be(),!0;default:return!1}else if(t===c)switch(e.keyCode){case 27:return Je(),!0;case 84:return Pe(),!0;case 87:return ze(),!0;case 83:return De(),!0;case 32:case 13:return Te(),!0;case 67:return Be(),!0;default:return!1}}return!1},He=function(e){Qe(e,"flex")},Je=function(){Qe(m,"none"),Qe(c,"none"),document.removeEventListener("keydown",qe)},Ke=function(){return he&&"flex"===Ye(m)||(ke||_e)&&"flex"===Ye(c)},We=function(){var e=Ze(f);return e.href="https://mailgo.dev?ref=mailgo-modal",e.className="m-by",e.target="_blank",e.rel="noopener noreferrer",e.appendChild($e("mailgo.dev")),e},Ze=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"div";return document.createElement(e)},$e=function(e){return document.createTextNode(e)},Ge=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:m;return e===c?N:I},Ye=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:m;return Ge(e).style.display},Qe=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:m,o=arguments.length>1?arguments[1]:void 0,t=Ge(e);t&&(t.style.display=o,"flex"===o?(ne=document.activeElement,t.setAttribute("aria-hidden","false"),t.setAttribute("tabindex","0"),t.focus(),_(t)):(t.setAttribute("aria-hidden","true"),t.setAttribute("tabindex","-1"),ne.focus()))},Ve=function(){var e,o=null===(e=O)||void 0===e?void 0:e.type;o&&Ge(o).classList.add("m-dark")},Xe=function(){var e,o=null===(e=O)||void 0===e?void 0:e.type;o&&Ge(o).classList.remove("m-dark")},eo=function(e){for(var o=[];e;){if(o.push(e),"HTML"===e.tagName)return o.push(document),o.push(window),o;e=e.parentElement}},oo=function(e,o){if(D=e,o&&o.length>0){var t=o.join("&");D=D.concat("?"+t)}return D},to=function(e,o){if(!S)return!0;if("action"===e){var t,a;if(S&&(null===(t=S)||void 0===t||!t.actions))return!0;if(S&&S.actions&&!1===(null===(a=S)||void 0===a?void 0:a.actions[o]))return!1}else if("detail"===e){var n,d;if(S&&(null===(n=S)||void 0===n||!n.details))return!0;if(S&&S.details&&!1===(null===(d=S)||void 0===d?void 0:d.details[o]))return!1}return!0},ao=function(){var e,o="default lang";if(null!==(e=S)&&void 0!==e&&e.lang&&-1!==x.indexOf(S.lang))ge=S.lang,o="config lang";else{var t=document.documentElement.lang;x.forEach((function(e){new RegExp("^"+e,"gi").test(t)&&(ge=e,o="html lang")}))}return R=L[ge],o};function no(e){try{var o;if(S=E(E({},e),(null===(o=window)||void 0===o?void 0:o.mailgoConfig)||null),"undefined"!=typeof window){var t,a,n,d,l,i;if(void 0!==(null===(t=S)||void 0===t?void 0:t.loadCSS)&&(Ee=S.loadCSS),void 0!==(null===(a=S)||void 0===a?void 0:a.mailto)&&(he=S.mailto),void 0!==(null===(n=S)||void 0===n?void 0:n.tel)&&(ke=S.tel),void 0!==(null===(d=S)||void 0===d?void 0:d.sms)&&(_e=S.sms),Ee&&function(){if(!document.getElementById("mailgo-style")){var e=Ze("style");e.id="mailgo-style",e.type="text/css",e.appendChild($e(ve)),document.head.appendChild(e)}}(),null!==(l=S)&&void 0!==l&&l.initEvent)null!==(i=S)&&void 0!==i&&i.listenerOptions?document.addEventListener(S.initEvent,Ae,S.listenerOptions):document.addEventListener(S.initEvent,Ae);else Ae();return!0}}catch(e){console.log(e)}return!1}"undefined"!=typeof window&&(window.getMailgoTypeByElement=Fe,window.mailgoClickListener=Re,window.mailgoCheckRender=Re,window.mailgoPreRender=Se,window.mailgoDirectRender=function(e){return no(),Me(e,a)||Me(e,n)?(O={type:m,installation:s},Se(e),!0):!!(Me(e,d)||Me(e,l)||Me(e,i))&&(O={type:c,installation:s},Se(e),!0)},window.mailgoRender=Oe,window.mailgo=no);no({initEvent:"DOMContentLoaded"})}},o={};function t(a){if(o[a])return o[a].exports;var n=o[a]={id:a,exports:{}};return e[a](n,n.exports,t),n.exports}t.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var a=t(474);window.mailgo=a}(); //# sourceMappingURL=mailgo.min.js.map \ No newline at end of file diff --git a/dist/mailgo.min.js.map b/dist/mailgo.min.js.map index 29db364..e6d91e8 100644 --- a/dist/mailgo.min.js.map +++ b/dist/mailgo.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack://mailgo/../src/mailgo.scss","webpack://mailgo/../node_modules/css-loader/dist/runtime/api.js","webpack://mailgo/../src/mailgo.scss?81f2","webpack://mailgo/../src/constants.ts","webpack://mailgo/../src/utils.ts","webpack://mailgo/../src/mailgo.ts","webpack://mailgo/../src/mobile-detect.ts","webpack://mailgo/./mailgo.dist.ts","webpack://mailgo/webpack/bootstrap","webpack://mailgo/webpack/startup","webpack://mailgo/webpack/runtime/make namespace object"],"names":["___CSS_LOADER_EXPORT___","___CSS_LOADER_API_IMPORT___","i","push","module","id","exports","cssWithMappingToString","list","toString","this","map","item","content","concat","join","modules","mediaQuery","dedupe","alreadyImportedModules","length","_i","result","MAILTO","MAILGO","TEL","CALLTO","SMS","MAILGO_MAIL","MAILGO_TEL","MAILGO_SMS","CLASSIC","LESS_SPAM","spanHTMLTag","aHTMLTag","pHTMLTag","notNumber","RegExp","leadingZeros","validateEmail","email","test","validateEmails","arr","every","copyToClipboard","str","el","document","createElement","value","setAttribute","style","position","left","body","appendChild","selected","getSelection","rangeCount","getRangeAt","select","execCommand","removeChild","removeAllRanges","addRange","setFocusLoop","ref","modal","querySelector","addEventListener","leaveLastLink","leaveFirstLink","e","code","shiftKey","preventDefault","target","closest","focus","strings","config","activeMailgoType","modalMailto","modalTel","url","href","lessSpamHref","mail","cc","bcc","subject","bodyMail","tel","msg","telegramUsername","skypeUsername","title","titleTel","detailCc","detailBcc","detailSubject","detailBody","detailMsg","ccValue","bccValue","subjectValue","bodyValue","msgValue","activatedLink","gmail","outlook","yahoo","open","telegram","wa","skype","call","copyMail","copyTel","mailgoCSS","require","lang","defaultStrings","translations","isMobile","mailtoEnabled","telEnabled","smsEnabled","desktopEnabled","mobileEnabled","validateEmailConfig","validateTelConfig","showFooterConfig","loadCSSConfig","mailgoInit","navigator","userAgent","desktop","mobile","mailgoSetLanguage","mailgoExists","getElementById","display","classList","add","dark","enableDarkMode","disableDarkMode","modalBackground","className","modalContent","details","ccSpan","createTextNode","cc_","bccSpan","bcc_","subjectSpan","subject_","bodySpan","body_","open_in_","gmailSpan","mailgoConfigAttributeEnabled","outlookSpan","yahooSpan","openSpan","_default","copy","showFooter","byElement","hideMailgo","mailgoTelExists","detailsTel","msgSpan","telegramSpan","waSpan","whatsapp","skypeSpan","callSpan","_as_default","mailgoClickListener","event","contains","mailgoIsShowing","path","composedPath","forEach","element","HTMLDocument","Window","localMailgoType","getMailgoTypeByElement","activeMailgoModalType","type","mailgoPreRender","mailgoElementOrUrl","mailgoElement","installation","getAttribute","validateUrl","decodeURIComponent","split","trim","urlParams","URL","searchParams","get","error","console","log","encodeURIComponent","parameters","buildLessSpamHref","validateTel","hasAttribute","mailgoRender","textContent","openGmail","openOutlook","openYahooMail","openDefault","openWhatsApp","openTelegram","openSkype","showMailgo","mailgoKeydown","urlString","gmailUrl","window","startingOutlookUrl","office365","outlookUrl","yahooUrl","tgUrl","skypeUrl","whatappTel","replace","waUrl","location","activeCopy","copied","setTimeout","regexValidate","elementHref","keyboardEvent","keyCode","setModalDisplay","removeEventListener","getModalDisplay","by","rel","getModalHTMLElement","activeElement","remove","tagName","parentElement","joinedParams","attribute","actions","languageType","languages","htmlLang","documentElement","language","mailgo","mailgoConfig","loadCSS","mailto","sms","mailgoCSSElement","head","mailgoStyle","initEvent","listenerOptions","mailgoCheckRender","mailgoDirectRender","directUrl","__webpack_module_cache__","__webpack_require__","moduleId","__webpack_modules__","r","Symbol","toStringTag","Object","defineProperty"],"mappings":"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","file":"mailgo.min.js","sourcesContent":["// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../node_modules/css-loader/dist/runtime/api.js\");\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(function(i){return i[1]});\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:.8}.m-modal .m-modal-content{position:relative;z-index:10002;box-sizing:content-box;text-align:center;overflow:hidden;min-width:200px;max-width:240px;background-color:#fff;opacity:.95;border-radius:20px;box-shadow:0 3px 20px rgba(32,35,42,.5);border:3px solid #333;color:#4a4a4a;display:flex;flex-direction:column;overflow:auto;padding:24px;transition:.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:pre-line;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{white-space:pre-line;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(192,55,42,.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(9,103,170,.08);color:#0967aa}.m-modal .m-modal-content a.m-yahoo{color:#4a00a0}.m-modal .m-modal-content a.m-yahoo:hover,.m-modal .m-modal-content a.m-yahoo:focus,.m-modal .m-modal-content a.m-yahoo:active{background-color:rgba(74,0,160,.08);color:#4a00a0}.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(8,109,160,.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(6,116,102,.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(7,109,146,.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,.08);color:#4a4a4a}.m-modal .m-modal-content a.m-by{font-size:12px;margin-top:.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,.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(224,125,115,.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(76,156,215,.08);color:#4c9cd7}.m-modal.m-dark .m-modal-content a.m-yahoo{color:#ac88d3}.m-modal.m-dark .m-modal-content a.m-yahoo:hover,.m-modal.m-dark .m-modal-content a.m-yahoo:focus,.m-modal.m-dark .m-modal-content a.m-yahoo:active{background-color:rgba(172,136,211,.08);color:#ac88d3}.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(76,171,219,.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(76,210,192,.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(76,199,244,.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// 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 (cssWithMappingToString) {\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);\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 var result = require(\"!!../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].use[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 ","import { MailgoModalType, MailgoInstallationType } from \"mailgo\";\n\n// links\nexport const MAILTO: string = \"mailto:\";\nexport const MAILGO: string = \"mailgo:\";\nexport const TEL: string = \"tel:\";\nexport const CALLTO: string = \"callto:\";\nexport const SMS: string = \"sms:\";\n\n// deep linking\nexport const outlookDeepLink: string = \"ms-outlook://\";\n\n// no mailgo class\nexport const NO_MAILGO: string = \"no-mailgo\";\n\n// responsive settings\nexport const DESKTOP: string = \"desktop\";\nexport const MOBILE: string = \"mobile\";\n\n// mailgo modal types\nexport const MAILGO_MAIL: MailgoModalType = \"mailgo\";\nexport const MAILGO_TEL: MailgoModalType = \"mailgo-tel\";\nexport const MAILGO_SMS: MailgoModalType = \"mailgo-sms\";\n\n// mailgo installation types\nexport const CLASSIC: MailgoInstallationType = \"classic\";\nexport const LESS_SPAM: MailgoInstallationType = \"less-spam\";\n\n// useful html tags\nexport const spanHTMLTag: string = \"span\";\nexport const aHTMLTag: string = \"a\";\nexport const pHTMLTag: string = \"p\";\n\n// default lang\nexport const defaultLang: string = \"en\";\n\n// useful regexp\nexport const notNumber: RegExp = new RegExp(\"[^0-9/]\", \"gi\");\nexport const leadingZeros: RegExp = new RegExp(\"^0+\", \"gi\");\n","// validate a single email with regex\nexport const 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\nexport const validateEmails = (arr: string[]): boolean =>\n arr.every(validateEmail);\n\n// validate a single tel with regex\nexport const validateTel = (tel: string): boolean =>\n /^[+]{0,1}[\\s0-9]*[(]{0,1}[0-9]{1,4}[)]{0,1}[-\\s\\./0-9]*[p]{0,1}[\\s0-9]*$/.test(\n tel\n );\n\n// copy of a string\nexport const copyToClipboard = (str: string): boolean => {\n let el: HTMLTextAreaElement = document.createElement(\n \"textarea\"\n ) as HTMLTextAreaElement;\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\n// set focus loop within modal\nexport const 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\nexport const 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\nexport const 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","import {\n MailgoConfig,\n MailgoTranslations,\n MailgoTranslation,\n MailgoAction,\n MailgoLanguages,\n MailgoType,\n MailgoDetail,\n MailgoInstallationType,\n MailgoModalType,\n} from \"mailgo\";\n\n// polyfill\n// import { mailgoPolyfill } from \"./polyfill\";\n\n// constants\nimport {\n MAILTO,\n MAILGO,\n TEL,\n CALLTO,\n SMS,\n MAILGO_MAIL,\n MAILGO_TEL,\n MAILGO_SMS,\n CLASSIC,\n LESS_SPAM,\n NO_MAILGO,\n MOBILE,\n spanHTMLTag,\n aHTMLTag,\n pHTMLTag,\n defaultLang,\n notNumber,\n leadingZeros,\n} from \"./constants\";\n\n// utils\nimport {\n validateEmails,\n validateTel,\n copyToClipboard,\n setFocusLoop,\n} from \"./utils\";\n\n// i18n for mailgo\nimport languages from \"../i18n/languages.json\";\nimport translations from \"../i18n/translations.json\";\n\n// mobile detect\nimport { userAgent } from \"./mobile-detect\";\n\n// mailgo scss, with toString (https://github.com/webpack-contrib/css-loader#tostring)\nconst mailgoCSS: string = require(\"./mailgo.scss\").toString();\n\n// default language\nlet lang: string = defaultLang;\n\n// default strings\nconst defaultStrings: MailgoTranslation = (translations as MailgoTranslations)[\n defaultLang\n];\n\n// translation strings\nlet strings: MailgoTranslation;\n\n// global mailgo config object\nlet config: MailgoConfig;\n\n// config to check if the client is mobile or desktop\nlet isMobile: boolean = false;\n\n// default config attributes\nlet mailtoEnabled: boolean = true;\nlet telEnabled: boolean = true;\nlet smsEnabled: boolean = false;\nlet desktopEnabled: boolean = true;\nlet mobileEnabled: boolean = true;\nlet validateEmailConfig: boolean = true;\nlet validateTelConfig: boolean = true;\nlet showFooterConfig: boolean = true;\nlet loadCSSConfig: boolean = true;\n\n// activeMailgoType\nlet activeMailgoType: MailgoType;\n\n// modals global object\nlet modalMailto: HTMLElement, modalTel: HTMLElement;\n\n// mailgo general variables\nlet url: URL, href: string, lessSpamHref: string;\n\n// mailgo mail variables\nlet mail: string, cc: string, bcc: string, subject: string, bodyMail: string;\n\n// mailgo tel variables\nlet tel: string, msg: string, telegramUsername: string, 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 detailMsg: HTMLElement,\n ccValue: HTMLElement,\n bccValue: HTMLElement,\n subjectValue: HTMLElement,\n bodyValue: HTMLElement,\n msgValue: HTMLElement,\n activatedLink: HTMLElement;\n\n// mailgo buttons (actions)\nlet gmail: HTMLLinkElement,\n outlook: HTMLLinkElement,\n yahoo: 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 // set the boolean for mobile/desktop\n isMobile = userAgent() === MOBILE;\n\n // responsive settings\n {\n if (typeof config?.desktop !== \"undefined\") {\n desktopEnabled = config.desktop;\n // if it is a desktop and desktop is not enabled no init mailgo\n if (!isMobile && !desktopEnabled) {\n return;\n }\n }\n if (typeof config?.mobile !== \"undefined\") {\n mobileEnabled = config.mobile;\n // if it is a mobile and mobile is not enabled no init mailgo\n if (isMobile && !mobileEnabled) {\n return;\n }\n }\n }\n\n // set the mailgo language\n mailgoSetLanguage();\n\n // mailgo, if mailgo not already exists\n let mailgoExists = !!document.getElementById(MAILGO_MAIL);\n\n // if mailgo is enabled for mailto and it not exists in DOM\n if (mailtoEnabled && !mailgoExists) {\n // modal\n modalMailto = createElement() as HTMLElement;\n modalMailto.style.display = \"none\";\n modalMailto.id = MAILGO_MAIL;\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();\n } else {\n disableDarkMode();\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 = \"#mailgo-gmail\";\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 if (mailgoConfigAttributeEnabled(\"action\", \"gmail\")) {\n modalContent.appendChild(gmail);\n }\n\n // Outlook\n outlook = createElement(aHTMLTag) as HTMLLinkElement;\n outlook.id = \"m-outlook\";\n outlook.href = \"#mailgo-outlook\";\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 if (mailgoConfigAttributeEnabled(\"action\", \"outlook\")) {\n modalContent.appendChild(outlook);\n }\n\n // Outlook\n yahoo = createElement(aHTMLTag) as HTMLLinkElement;\n yahoo.id = \"m-yahoo\";\n yahoo.href = \"#mailgo-yahoo\";\n yahoo.classList.add(\"m-open\");\n yahoo.classList.add(\"m-yahoo\");\n yahoo.appendChild(\n createTextNode(strings.open_in_ || defaultStrings.open_in_)\n );\n let yahooSpan: HTMLElement = createElement(spanHTMLTag);\n yahooSpan.className = \"w-500\";\n yahooSpan.appendChild(\n createTextNode(strings.yahoo || defaultStrings.yahoo)\n );\n yahoo.appendChild(yahooSpan);\n\n if (mailgoConfigAttributeEnabled(\"action\", \"yahoo\")) {\n modalContent.appendChild(yahoo);\n }\n\n // open default\n open = createElement(aHTMLTag) as HTMLLinkElement;\n open.id = \"m-open\";\n open.href = \"#mailgo-open\";\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 = \"#mailgo-copy\";\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 (typeof config?.showFooter !== \"undefined\") {\n showFooterConfig = config.showFooter;\n }\n\n if (showFooterConfig) {\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 mailgo is enabled for tel/callto and it not exists in DOM\n if (telEnabled && !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();\n } else {\n disableDarkMode();\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 // details\n let detailsTel: HTMLElement = createElement();\n detailsTel.id = \"m-tel-details\";\n detailsTel.className = \"m-details\";\n\n detailMsg = createElement(pHTMLTag);\n detailMsg.id = \"m-msg\";\n let msgSpan: HTMLElement = createElement(spanHTMLTag);\n msgSpan.className = \"w-500\";\n msgSpan.appendChild(createTextNode(strings.body_ || defaultStrings.body_));\n msgValue = createElement(spanHTMLTag);\n msgValue.id = \"m-msg-value\";\n detailMsg.appendChild(msgSpan);\n detailMsg.appendChild(msgValue);\n detailsTel.appendChild(detailMsg);\n\n modalContent.appendChild(detailsTel);\n\n // Telegram\n telegram = createElement(aHTMLTag) as HTMLLinkElement;\n telegram.id = \"m-tg\";\n telegram.href = \"#mailgo-telegram\";\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 if (mailgoConfigAttributeEnabled(\"action\", \"telegram\")) {\n modalContent.appendChild(telegram);\n }\n\n // WhatsApp\n wa = createElement(aHTMLTag) as HTMLLinkElement;\n wa.id = \"m-wa\";\n wa.href = \"#mailgo-whatsapp\";\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 if (mailgoConfigAttributeEnabled(\"action\", \"whatsapp\")) {\n modalContent.appendChild(wa);\n }\n\n // Skype\n skype = createElement(aHTMLTag) as HTMLLinkElement;\n skype.id = \"m-skype\";\n skype.href = \"#mailgo-skype\";\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 if (mailgoConfigAttributeEnabled(\"action\", \"skype\")) {\n modalContent.appendChild(skype);\n }\n\n // call default\n call = createElement(aHTMLTag) as HTMLLinkElement;\n call.id = \"m-call\";\n call.href = \"#mailgo-open\";\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 = \"#mailgo-copy\";\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 (typeof config?.showFooter !== \"undefined\") {\n showFooterConfig = config.showFooter;\n }\n\n if (showFooterConfig) {\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\", mailgoClickListener);\n};\n\n/**\n * mailgoClickListener\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 * or\n * document.querySelectorAll(\n * 'a[href^=\"sms:\" i]:not(.no-mailgo), a[href=\"#mailgo\"], a.mailgo'\n * );\n */\nfunction mailgoClickListener(event: Event): boolean {\n // check if the mailgo HTML exists in the body\n if (\n !document.body.contains(modalMailto) &&\n !document.body.contains(modalTel)\n ) {\n return false;\n }\n\n // if a mailgo is already showing do nothing\n if (mailgoIsShowing()) {\n return false;\n }\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\n // go here only if one of the mailgo modals are enabled\n if (mailtoEnabled || telEnabled || smsEnabled) {\n let localMailgoType = getMailgoTypeByElement(element);\n\n // go on if the localMailgoType is not null\n if (localMailgoType) {\n // set the active mailgo type\n activeMailgoType = localMailgoType;\n\n let activeMailgoModalType = activeMailgoType?.type;\n\n if (activeMailgoModalType) {\n // check if the setting is enabled and if so go with pre-render\n if (\n (mailtoEnabled && activeMailgoModalType === MAILGO_MAIL) ||\n (telEnabled && activeMailgoModalType === MAILGO_TEL) ||\n (smsEnabled && activeMailgoModalType === MAILGO_SMS)\n ) {\n // stop the normal execution of the element click\n event.preventDefault();\n\n // render mailgo\n mailgoPreRender(element as HTMLLinkElement);\n\n return true;\n }\n }\n }\n }\n });\n }\n\n return false;\n}\n\n/**\n * mailgoPreRender\n * function to pre-render a mailgo, it helps populating elements needed by modal\n */\nfunction mailgoPreRender(\n mailgoElementOrUrl: HTMLLinkElement | string\n): boolean {\n let mailgoElement: HTMLLinkElement;\n\n // get the type and installation from current mailgo type\n let type: MailgoModalType = activeMailgoType?.type;\n let installation: MailgoInstallationType = activeMailgoType?.installation;\n\n // if type is not defined return\n if (!type) return false;\n\n if (typeof mailgoElementOrUrl === \"string\") {\n // if the parameter is a string it is the url\n href = mailgoElementOrUrl as string;\n } else {\n // if the paramenter is an HTMLLinkElement get the href attribute and the element\n href = mailgoElementOrUrl.getAttribute(\"href\") as string;\n mailgoElement = mailgoElementOrUrl as HTMLLinkElement;\n }\n\n // mailgo mail\n if (type === MAILGO_MAIL) {\n // if the installation is classic\n if (installation === CLASSIC) {\n if (validateUrl(href, MAILTO)) {\n mail = decodeURIComponent(href.split(\"?\")[0].split(MAILTO)[1].trim());\n } else if (validateUrl(href, MAILGO)) {\n mail = decodeURIComponent(href.split(\"?\")[0].split(MAILGO)[1].trim());\n }\n\n try {\n url = new URL(href);\n\n let urlParams: URLSearchParams = url.searchParams;\n // optional parameters for the email\n cc = urlParams.get(\"cc\");\n bcc = urlParams.get(\"bcc\");\n subject = urlParams.get(\"subject\");\n bodyMail = urlParams.get(\"body\");\n } catch (error) {\n console.log(error);\n }\n } else if (installation === LESS_SPAM) {\n // if the installation is less-spam\n // mail = data-address + @ + data-domain\n mail =\n mailgoElement.getAttribute(\"data-address\") &&\n mailgoElement.getAttribute(\"data-domain\")\n ? mailgoElement.getAttribute(\"data-address\") +\n \"@\" +\n mailgoElement.getAttribute(\"data-domain\")\n : null;\n\n try {\n url = new URL(MAILTO + encodeURIComponent(mail));\n } catch (error) {\n console.log(error);\n }\n\n let parameters: string[] = [];\n\n // cc = data-cc-address + @ + data-cc-domain\n cc = mailgoElement.getAttribute(\"data-cc-address\")\n ? mailgoElement.getAttribute(\"data-cc-address\") +\n \"@\" +\n mailgoElement.getAttribute(\"data-cc-domain\")\n : null;\n\n // if cc is defined add it to parameters\n if (cc) parameters.push(\"cc=\" + cc);\n\n // bcc = data-bcc-address + @ + data-bcc-domain\n bcc = mailgoElement.getAttribute(\"data-bcc-address\")\n ? mailgoElement.getAttribute(\"data-bcc-address\") +\n \"@\" +\n mailgoElement.getAttribute(\"data-bcc-domain\")\n : null;\n\n // if bcc is defined add it to parameters\n if (bcc) parameters.push(\"bcc=\" + bcc);\n\n // subject = data-subject\n subject = mailgoElement.getAttribute(\"data-subject\");\n\n // if subject is defined add it to parameters\n if (subject) parameters.push(\"subject=\" + subject);\n\n // body = data-body\n bodyMail = mailgoElement.getAttribute(\"data-body\");\n\n // if body is defined add it to parameters\n if (bodyMail) parameters.push(\"body=\" + bodyMail);\n\n // set the lessSpamHref\n lessSpamHref = buildLessSpamHref(\n MAILTO + encodeURIComponent(mail),\n parameters\n );\n }\n\n // if is in config use it\n if (typeof config?.validateEmail !== \"undefined\") {\n validateEmailConfig = config.validateEmail;\n }\n\n if (validateEmailConfig) {\n // validate the email address\n if (!validateEmails(mail.split(\",\"))) {\n return false;\n }\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 // mailgo tel\n else if (type === MAILGO_TEL) {\n if (installation === CLASSIC) {\n if (validateUrl(href, TEL)) {\n tel = decodeURIComponent(href.split(\"?\")[0].split(TEL)[1].trim());\n } else if (validateUrl(href, CALLTO)) {\n tel = decodeURIComponent(href.split(\"?\")[0].split(CALLTO)[1].trim());\n } else if (validateUrl(href, SMS)) {\n tel = decodeURIComponent(href.split(\"?\")[0].split(SMS)[1].trim());\n }\n\n try {\n url = new URL(href);\n let urlParams: URLSearchParams = url.searchParams;\n\n // optional parameters for the phone number\n msg = urlParams.get(\"body\");\n } catch (error) {\n console.log(error);\n }\n } else if (installation == LESS_SPAM) {\n tel = mailgoElement.getAttribute(\"data-tel\");\n msg = mailgoElement.getAttribute(\"data-msg\");\n\n try {\n url = new URL(TEL + encodeURIComponent(tel));\n } catch (error) {\n console.log(error);\n }\n\n let parameters: string[] = [];\n\n // if msg is defined add it to parameters\n if (msg) parameters.push(\"body=\" + msg);\n\n // set the lessSpamHref\n lessSpamHref = buildLessSpamHref(\n TEL + encodeURIComponent(tel),\n parameters\n );\n }\n\n // if is in config use it\n if (typeof config?.validateTel !== \"undefined\") {\n validateTelConfig = config.validateTel;\n }\n\n // validate the phone number\n if (validateTelConfig) {\n if (!validateTel(tel)) return;\n }\n\n // Telegram username\n if (mailgoElement && mailgoElement.hasAttribute(\"data-telegram\")) {\n telegramUsername = mailgoElement.getAttribute(\"data-telegram\");\n } else {\n telegramUsername = null;\n }\n\n // Telegram username\n if (mailgoElement && mailgoElement.hasAttribute(\"data-skype\")) {\n skypeUsername = mailgoElement.getAttribute(\"data-skype\");\n } else {\n skypeUsername = null;\n }\n }\n\n // if dark is in config or contained in the element\n if (config?.dark || mailgoElement.classList.contains(\"dark\")) {\n enableDarkMode();\n } else {\n disableDarkMode();\n }\n\n // render mailgo\n mailgoRender();\n\n return true;\n}\n\n/**\n * mailgoDirectRender\n * function to render a mailgo directly from a URL\n */\nfunction mailgoDirectRender(directUrl: string): boolean {\n // start mailgo\n mailgo();\n\n if (validateUrl(directUrl, MAILTO) || validateUrl(directUrl, MAILGO)) {\n activeMailgoType = {\n type: MAILGO_MAIL,\n installation: CLASSIC,\n };\n mailgoPreRender(directUrl);\n return true;\n } else if (\n validateUrl(directUrl, TEL) ||\n validateUrl(directUrl, CALLTO) ||\n validateUrl(directUrl, SMS)\n ) {\n activeMailgoType = {\n type: MAILGO_TEL,\n installation: CLASSIC,\n };\n mailgoPreRender(directUrl);\n return true;\n }\n return false;\n}\n\n/**\n * mailgoRender\n * function to render a mailgo (mail or tel)\n */\nfunction mailgoRender(): boolean {\n // get the type from current mailgo type\n let type: MailgoModalType = activeMailgoType?.type;\n\n // if type is not defined return\n if (!type) return false;\n\n // mailgo mail\n if (type === MAILGO_MAIL) {\n // the title of the modal (email address)\n title.textContent = mail.split(\",\").join(\"\\n\");\n\n // add the details if provided\n if (mailgoConfigAttributeEnabled(\"detail\", \"cc\") && cc) {\n detailCc.style.display = \"block\";\n ccValue.textContent = cc.split(\",\").join(\"\\n\");\n } else {\n detailCc.style.display = \"none\";\n }\n\n if (mailgoConfigAttributeEnabled(\"detail\", \"bcc\") && bcc) {\n detailBcc.style.display = \"block\";\n bccValue.textContent = bcc.split(\",\").join(\"\\n\");\n } else {\n detailBcc.style.display = \"none\";\n }\n\n if (mailgoConfigAttributeEnabled(\"detail\", \"subject\") && subject) {\n detailSubject.style.display = \"block\";\n subjectValue.textContent = subject;\n } else {\n detailSubject.style.display = \"none\";\n }\n\n if (mailgoConfigAttributeEnabled(\"detail\", \"body\") && bodyMail) {\n detailBody.style.display = \"block\";\n bodyValue.textContent = bodyMail;\n } else {\n detailBody.style.display = \"none\";\n }\n\n // add the actions\n gmail.addEventListener(\"click\", openGmail);\n\n outlook.addEventListener(\"click\", openOutlook);\n\n yahoo.addEventListener(\"click\", openYahooMail);\n\n open.addEventListener(\"click\", openDefault);\n\n copyMail.addEventListener(\"click\", copy);\n }\n // mailgo tel\n else if (type === MAILGO_TEL) {\n // the title of the modal (tel)\n titleTel.textContent = tel;\n\n if (mailgoConfigAttributeEnabled(\"detail\", \"msg\") && msg) {\n detailMsg.style.display = \"block\";\n msgValue.textContent = msg;\n } else {\n detailMsg.style.display = \"none\";\n }\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\", openDefault);\n\n copyTel.addEventListener(\"click\", copy);\n }\n\n // show the mailgo\n showMailgo(type);\n\n // add listener keyDown\n document.addEventListener(\"keydown\", mailgoKeydown);\n\n return true;\n}\n\n// actions\nconst openGmail = (event?: Event): void => {\n event.preventDefault();\n\n let urlString: string;\n let installation: MailgoInstallationType = activeMailgoType?.installation;\n\n if (installation === CLASSIC) {\n try {\n urlString = url.toString();\n } catch (e) {\n urlString = href;\n }\n } else if (installation === LESS_SPAM) {\n urlString = lessSpamHref;\n }\n\n // Gmail url\n let gmailUrl: string =\n \"https://mail.google.com/mail/?extsrc=mailto&url=\" +\n encodeURIComponent(urlString);\n\n // open the link\n window.open(gmailUrl, \"_blank\", \"noopener, noreferrer\");\n\n // hide the modal\n hideMailgo();\n};\n\nconst openOutlook = (event?: Event): void => {\n event.preventDefault();\n\n // Outlook starting url\n let startingOutlookUrl: string =\n \"https://outlook.live.com/owa/?path=/mail/action/compose&to=\";\n\n // let the user to decide to open Office365 Outlook instead of the classic outlook.live.com\n if (config?.office365) {\n startingOutlookUrl =\n \"https://outlook.office365.com/owa/?path=/mail/action/compose&to=\";\n }\n\n // Outlook url\n let outlookUrl: string = startingOutlookUrl + encodeURIComponent(mail);\n\n // the details if provided\n if (subject) {\n outlookUrl = outlookUrl.concat(\"&subject=\" + encodeURIComponent(subject));\n }\n\n if (bodyMail) {\n outlookUrl = outlookUrl.concat(\"&body=\" + encodeURIComponent(bodyMail));\n }\n\n // open the link\n window.open(outlookUrl, \"_blank\", \"noopener, noreferrer\");\n\n // hide the modal\n hideMailgo();\n};\n\nconst openYahooMail = (event?: Event): void => {\n event.preventDefault();\n\n // Yahoo url\n let yahooUrl: string = \"https://compose.mail.yahoo.com/?to=\" + mail;\n\n // the details if provided\n if (subject) {\n yahooUrl = yahooUrl.concat(\"&subject=\" + encodeURIComponent(subject));\n }\n if (bodyMail) {\n yahooUrl = yahooUrl.concat(\"&body=\" + encodeURIComponent(bodyMail));\n }\n\n // open the link\n window.open(yahooUrl, \"_blank\", \"noopener, noreferrer\");\n\n // hide the modal\n hideMailgo();\n};\n\nconst openTelegram = (event?: Event): void => {\n event.preventDefault();\n\n // check if telegramUsername exists\n if (telegramUsername) {\n // Telegram url\n let tgUrl: string = \"https://t.me/\" + encodeURIComponent(telegramUsername);\n\n // open the url\n window.open(tgUrl, \"_blank\", \"noopener, noreferrer\");\n\n // hide the modal\n hideMailgo();\n }\n};\n\nconst openSkype = (event?: Event): void => {\n event.preventDefault();\n\n let skype: string = skypeUsername || tel;\n\n // Telegram url\n let skypeUrl: string = \"skype:\" + encodeURIComponent(skype);\n\n // open the url\n window.open(skypeUrl, \"_blank\", \"noopener, noreferrer\");\n\n // hide the modal\n hideMailgo();\n};\n\nconst openWhatsApp = (event?: Event): void => {\n event.preventDefault();\n\n // WhatsApp API doesn't work with non number digits and leading 0s: https://faq.whatsapp.com/general/chats/how-to-use-click-to-chat/\n let whatappTel = tel.replace(notNumber, \"\").replace(leadingZeros, \"\");\n\n // WhatsApp url\n let waUrl: string = \"https://wa.me/\" + encodeURIComponent(whatappTel);\n\n // the details if provided\n if (msg) {\n waUrl = waUrl.concat(\"?text=\" + encodeURIComponent(msg));\n }\n\n // open the url\n window.open(waUrl, \"_blank\", \"noopener, noreferrer\");\n\n // hide the modal\n hideMailgo();\n};\n\nconst openDefault = (event?: Event): void => {\n event.preventDefault();\n\n let installation: MailgoInstallationType = activeMailgoType?.installation;\n\n // if the installation is classic the browser can follow the default behaviour\n if (installation === CLASSIC) {\n window.location.href = href;\n } else if (installation === LESS_SPAM) {\n // if the installation is less-spam use the built less-spam href\n window.location.href = lessSpamHref;\n }\n\n hideMailgo();\n};\n\nconst copy = (event?: Event): void => {\n event.preventDefault();\n\n // the correct copyButton (mail or tel)\n if (mailgoIsShowing()) {\n let activeCopy: HTMLElement;\n\n let type: MailgoModalType = activeMailgoType?.type;\n\n if (type === MAILGO_MAIL) {\n // in case it is showing mail modal copy email address\n copyToClipboard(mail);\n activeCopy = copyMail;\n } else {\n // in case it is showing tel modal copy phone number\n copyToClipboard(tel);\n activeCopy = copyTel;\n }\n\n activeCopy.textContent = strings.copied || defaultStrings.copied;\n setTimeout(() => {\n activeCopy.textContent = strings.copy || defaultStrings.copy;\n // hide after the timeout\n hideMailgo();\n }, 999);\n }\n};\n\n// function to find if a link is a mailto, tel, callto or sms\nconst validateUrl = (url: string, type: string = MAILTO) => {\n let regexValidate = new RegExp(\"^\" + type + \"((.)+)\", \"gi\");\n return regexValidate.test(url);\n};\n\n// function that returns if an element is a mailgo\nfunction getMailgoTypeByElement(element: HTMLElement): MailgoType | null {\n let elementHref: string = (element as HTMLLinkElement).getAttribute(\"href\");\n\n // return null if there is no-mailgo in class\n if (element.classList?.contains(NO_MAILGO)) {\n return null;\n }\n\n // the case of classic type of mailgo, like a href=mailto:... or a href=tel:... and the class=mailgo with a useful href\n if (elementHref || element.classList?.contains(\"mailgo\")) {\n if (validateUrl(elementHref, MAILTO) || validateUrl(elementHref, MAILGO)) {\n // a mailto: or mailgo:\n return {\n type: MAILGO_MAIL,\n installation: CLASSIC,\n };\n } else if (\n validateUrl(elementHref, TEL) ||\n validateUrl(elementHref, CALLTO)\n ) {\n // a tel: or callto:\n return {\n type: MAILGO_TEL,\n installation: CLASSIC,\n };\n } else if (validateUrl(elementHref, SMS)) {\n // a sms:\n return {\n type: MAILGO_SMS,\n installation: CLASSIC,\n };\n }\n }\n\n if (elementHref === \"#mailgo\" || element.classList?.contains(\"mailgo\")) {\n // less-spam installation of mailgo, check to the attributes\n if (\n element.hasAttribute(\"data-address\") &&\n element.hasAttribute(\"data-domain\")\n ) {\n // less-spam mailto with data-address and data-domain\n return {\n type: MAILGO_MAIL,\n installation: LESS_SPAM,\n };\n } else if (element.hasAttribute(\"data-tel\")) {\n // less-spam tel with data-tel\n return {\n type: MAILGO_TEL,\n installation: LESS_SPAM,\n };\n } else if (element.hasAttribute(\"data-msg\")) {\n // less-spam sms with data-msd\n return {\n type: MAILGO_SMS,\n installation: LESS_SPAM,\n };\n }\n }\n\n return null;\n}\n\n/**\n * mailgoKeydown\n * function to manage the keydown event when the modal is showing, return a boolean that represents if a useful key has been pressed\n */\nconst mailgoKeydown = (keyboardEvent: KeyboardEvent): boolean => {\n // if mailgo is showing\n if (mailgoIsShowing()) {\n let type: MailgoModalType = activeMailgoType?.type;\n\n if (type === MAILGO_MAIL) {\n switch (keyboardEvent.keyCode) {\n case 27:\n // Escape\n hideMailgo();\n return true;\n case 71:\n // g -> open GMail\n openGmail();\n return true;\n case 79:\n // o -> open Outlook\n openOutlook();\n return true;\n case 89:\n // y -> open Yahoo Mail\n openYahooMail();\n return true;\n case 32:\n case 13:\n // spacebar or enter -> open default\n openDefault();\n return true;\n case 67:\n // c -> copy\n copy();\n return true;\n default:\n return false;\n }\n } else if (type === MAILGO_TEL) {\n switch (keyboardEvent.keyCode) {\n case 27:\n // Escape\n hideMailgo();\n return true;\n case 84:\n // t -> open Telegram\n openTelegram();\n return true;\n case 87:\n // w -> open WhatsApp\n openWhatsApp();\n return true;\n case 83:\n // s -> open Skype\n openSkype();\n return true;\n case 32:\n case 13:\n // spacebar or enter -> open default\n openDefault();\n return true;\n case 67:\n // c -> copy\n copy();\n return true;\n default:\n return false;\n }\n }\n }\n return false;\n};\n\n// show the modal\nconst showMailgo = (type: MailgoModalType): 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(MAILGO_MAIL, \"none\");\n setModalDisplay(MAILGO_TEL, \"none\");\n\n // remove listener keyDown\n document.removeEventListener(\"keydown\", mailgoKeydown);\n};\n\n// is the mailgo modal hidden?\nconst mailgoIsShowing = (): boolean => {\n return (\n (mailtoEnabled && getModalDisplay(MAILGO_MAIL) === \"flex\") ||\n ((telEnabled || smsEnabled) && getModalDisplay(MAILGO_TEL) === \"flex\")\n );\n};\n\nconst byElement = (): HTMLLinkElement => {\n // by element in the footer\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// get the correct HTMLElement from a type\nconst getModalHTMLElement = (type: MailgoModalType = MAILGO_MAIL) => {\n if (type === MAILGO_TEL) {\n return modalTel;\n } else {\n return modalMailto;\n }\n};\n\n// get display value\nconst getModalDisplay = (ref: MailgoModalType = MAILGO_MAIL): string =>\n getModalHTMLElement(ref).style.display;\n\n// set display value\nconst setModalDisplay = (\n ref: MailgoModalType = MAILGO_MAIL,\n value: string\n): void => {\n let modal = getModalHTMLElement(ref);\n\n if (modal) {\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\n// enable dark mode\nconst enableDarkMode = () => {\n // get the type from current mailgo type\n let type: MailgoModalType = activeMailgoType?.type;\n if (type) {\n getModalHTMLElement(type).classList.add(\"m-dark\");\n }\n};\n\n// disable dark mode\nconst disableDarkMode = () => {\n // get the type from current mailgo type\n let type: MailgoModalType = activeMailgoType?.type;\n if (type) {\n getModalHTMLElement(type).classList.remove(\"m-dark\");\n }\n};\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// function to recreate a mailto: or tel: href from less-spam\nconst buildLessSpamHref = (type: string, parameters: string[]): string => {\n lessSpamHref = type;\n if (parameters && parameters.length > 0) {\n let joinedParams = parameters.join(\"&\");\n lessSpamHref = lessSpamHref.concat(\"?\" + joinedParams);\n }\n return lessSpamHref;\n};\n\n// function to check an attribute is enabled or not, by default considering it enabled\nconst mailgoConfigAttributeEnabled = (\n type: \"action\" | \"detail\",\n attribute: MailgoAction | MailgoDetail\n): boolean => {\n // by default all the actions and attribute are enabled\n if (!config) {\n return true;\n }\n\n // if the attribute type is action consider the actions config attribute\n if (type === \"action\") {\n if (config && !config?.actions) {\n return true;\n }\n\n if (\n config &&\n config.actions &&\n config?.actions[attribute as MailgoAction] === false\n ) {\n return false;\n }\n } else if (type === \"detail\") {\n // else consider the details attribute\n\n if (config && !config?.details) {\n return true;\n }\n\n if (\n config &&\n config.details &&\n config?.details[attribute as MailgoDetail] === false\n ) {\n return false;\n }\n }\n\n return true;\n};\n\n// manage the language of mailgo\nconst mailgoSetLanguage = (): string => {\n let languageType = \"default lang\";\n\n // if a language is defined in configuration use it\n if (\n config?.lang &&\n (languages as MailgoLanguages).indexOf(config.lang) !== -1\n ) {\n lang = config.lang;\n languageType = \"config lang\";\n } else {\n // else if is defined use it!\n // keep the lang from html\n let htmlLang: string = document.documentElement.lang;\n\n // find the correct language using the lang attribute, not just a === because there a are cases like fr-FR or fr_FR in html lang attribute\n (languages as MailgoLanguages).forEach((language: any) => {\n if (new RegExp(\"^\" + language, \"gi\").test(htmlLang)) {\n lang = language;\n languageType = \"html lang\";\n }\n });\n }\n\n // strings\n strings = (translations as MailgoTranslations)[lang];\n\n return languageType;\n};\n\nconst mailgoStyle = (): void => {\n if (!document.getElementById(\"mailgo-style\")) {\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\n// mailgo\nfunction mailgo(mailgoConfig?: MailgoConfig): boolean {\n try {\n // polyfill mailgo\n // mailgoPolyfill();\n\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 (typeof window !== \"undefined\") {\n // if is set in config use it (load the mailgo CSS)\n if (typeof config?.loadCSS !== \"undefined\") {\n loadCSSConfig = config.loadCSS;\n }\n\n // if is set in config use it (enable mailto)\n if (typeof config?.mailto !== \"undefined\") {\n mailtoEnabled = config.mailto;\n }\n\n // if is set in config use it (enable tel)\n if (typeof config?.tel !== \"undefined\") {\n telEnabled = config.tel;\n }\n\n // if is set in config use it (enable sms)\n if (typeof config?.sms !== \"undefined\") {\n smsEnabled = config.sms;\n }\n\n // if load css enabled load it!\n if (loadCSSConfig) {\n // add the style for mailgo\n mailgoStyle();\n }\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 mailgoInit,\n config.listenerOptions\n );\n } else {\n // no listener options\n document.addEventListener(config.initEvent, mailgoInit);\n }\n } else {\n mailgoInit();\n }\n\n return true;\n }\n } catch (error) {\n console.log(error);\n }\n return false;\n}\n\n// define the methods also for window element\nif (typeof window !== \"undefined\") {\n (window as any).getMailgoTypeByElement = getMailgoTypeByElement;\n (window as any).mailgoClickListener = mailgoClickListener;\n (window as any).mailgoCheckRender = mailgoClickListener; // for compatibility with old version of mailgo\n (window as any).mailgoPreRender = mailgoPreRender;\n (window as any).mailgoDirectRender = mailgoDirectRender;\n (window as any).mailgoRender = mailgoRender;\n (window as any).mailgo = mailgo;\n}\n\nexport {\n getMailgoTypeByElement,\n mailgoClickListener,\n mailgoPreRender,\n mailgoDirectRender,\n mailgoRender,\n};\n\nexport default mailgo;\n","export const userAgent = () => {\n if (\n /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(\n navigator.userAgent\n )\n ) {\n return \"mobile\";\n }\n return \"desktop\";\n};\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","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tif(__webpack_module_cache__[moduleId]) {\n\t\treturn __webpack_module_cache__[moduleId].exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// module exports must be returned from runtime so entry inlining is disabled\n// startup\n// Load entry module and return exports\nreturn __webpack_require__(474);\n","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack://mailgo/../src/mailgo.scss","webpack://mailgo/../node_modules/css-loader/dist/runtime/api.js","webpack://mailgo/../src/mailgo.scss?81f2","webpack://mailgo/../src/constants.ts","webpack://mailgo/../src/utils.ts","webpack://mailgo/../src/mailgo.ts","webpack://mailgo/../src/mobile-detect.ts","webpack://mailgo/./mailgo.dist.ts","webpack://mailgo/webpack/bootstrap","webpack://mailgo/webpack/runtime/make namespace object","webpack://mailgo/webpack/startup"],"names":["___CSS_LOADER_EXPORT___","___CSS_LOADER_API_IMPORT___","i","push","module","id","exports","cssWithMappingToString","list","toString","this","map","item","content","concat","join","modules","mediaQuery","dedupe","alreadyImportedModules","length","_i","result","MAILTO","MAILGO","TEL","CALLTO","SMS","MAILGO_MAIL","MAILGO_TEL","MAILGO_SMS","CLASSIC","LESS_SPAM","spanHTMLTag","aHTMLTag","pHTMLTag","notNumber","RegExp","leadingZeros","validateEmail","email","test","validateEmails","arr","every","copyToClipboard","str","el","document","createElement","value","setAttribute","style","position","left","body","appendChild","selected","getSelection","rangeCount","getRangeAt","select","execCommand","removeChild","removeAllRanges","addRange","setFocusLoop","ref","modal","querySelector","addEventListener","leaveLastLink","leaveFirstLink","e","code","shiftKey","preventDefault","target","closest","focus","strings","config","activeMailgoType","modalMailto","modalTel","url","href","lessSpamHref","mail","cc","bcc","subject","bodyMail","tel","msg","telegramUsername","skypeUsername","title","titleTel","detailCc","detailBcc","detailSubject","detailBody","detailMsg","ccValue","bccValue","subjectValue","bodyValue","msgValue","activatedLink","gmail","outlook","yahoo","open","telegram","wa","skype","call","copyMail","copyTel","mailgoCSS","require","lang","defaultStrings","translations","isMobile","mailtoEnabled","telEnabled","smsEnabled","desktopEnabled","mobileEnabled","validateEmailConfig","validateTelConfig","showFooterConfig","loadCSSConfig","mailgoInit","navigator","userAgent","desktop","mobile","mailgoSetLanguage","mailgoExists","getElementById","display","classList","add","dark","enableDarkMode","disableDarkMode","modalBackground","className","modalContent","details","ccSpan","createTextNode","cc_","bccSpan","bcc_","subjectSpan","subject_","bodySpan","body_","open_in_","gmailSpan","mailgoConfigAttributeEnabled","outlookSpan","yahooSpan","openSpan","_default","copy","showFooter","byElement","hideMailgo","mailgoTelExists","detailsTel","msgSpan","telegramSpan","waSpan","whatsapp","skypeSpan","callSpan","_as_default","mailgoClickListener","event","contains","mailgoIsShowing","path","composedPath","forEach","element","HTMLDocument","Window","localMailgoType","getMailgoTypeByElement","activeMailgoModalType","type","mailgoPreRender","mailgoElementOrUrl","mailgoElement","installation","getAttribute","validateUrl","decodeURIComponent","split","trim","urlParams","URL","searchParams","get","error","console","log","encodeURIComponent","parameters","buildLessSpamHref","validateTel","hasAttribute","mailgoRender","textContent","openGmail","openOutlook","openYahooMail","openDefault","openWhatsApp","openTelegram","openSkype","showMailgo","mailgoKeydown","urlString","gmailUrl","window","startingOutlookUrl","office365","outlookUrl","yahooUrl","tgUrl","skypeUrl","whatappTel","replace","waUrl","location","activeCopy","copied","setTimeout","regexValidate","elementHref","keyboardEvent","keyCode","setModalDisplay","removeEventListener","getModalDisplay","by","rel","getModalHTMLElement","activeElement","remove","tagName","parentElement","joinedParams","attribute","actions","languageType","languages","htmlLang","documentElement","language","mailgo","mailgoConfig","loadCSS","mailto","sms","mailgoCSSElement","head","mailgoStyle","initEvent","listenerOptions","mailgoCheckRender","mailgoDirectRender","directUrl","__webpack_module_cache__","__webpack_require__","moduleId","__webpack_modules__","r","Symbol","toStringTag","Object","defineProperty","__webpack_exports__"],"mappings":"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","file":"mailgo.min.js","sourcesContent":["// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../node_modules/css-loader/dist/runtime/api.js\");\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(function(i){return i[1]});\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:.8}.m-modal .m-modal-content{position:relative;z-index:10002;box-sizing:content-box;text-align:center;overflow:hidden;min-width:200px;max-width:240px;background-color:#fff;opacity:.95;border-radius:20px;box-shadow:0 3px 20px rgba(32,35,42,.5);border:3px solid #333;color:#4a4a4a;display:flex;flex-direction:column;overflow:auto;padding:24px;transition:.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:pre-line;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{white-space:pre-line;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(192,55,42,.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(9,103,170,.08);color:#0967aa}.m-modal .m-modal-content a.m-yahoo{color:#4a00a0}.m-modal .m-modal-content a.m-yahoo:hover,.m-modal .m-modal-content a.m-yahoo:focus,.m-modal .m-modal-content a.m-yahoo:active{background-color:rgba(74,0,160,.08);color:#4a00a0}.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(8,109,160,.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(6,116,102,.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(7,109,146,.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,.08);color:#4a4a4a}.m-modal .m-modal-content a.m-by{font-size:12px;margin-top:.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,.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(224,125,115,.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(76,156,215,.08);color:#4c9cd7}.m-modal.m-dark .m-modal-content a.m-yahoo{color:#ac88d3}.m-modal.m-dark .m-modal-content a.m-yahoo:hover,.m-modal.m-dark .m-modal-content a.m-yahoo:focus,.m-modal.m-dark .m-modal-content a.m-yahoo:active{background-color:rgba(172,136,211,.08);color:#ac88d3}.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(76,171,219,.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(76,210,192,.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(76,199,244,.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// 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 (cssWithMappingToString) {\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);\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 var result = require(\"!!../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].use[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 ","import { MailgoModalType, MailgoInstallationType } from \"mailgo\";\n\n// links\nexport const MAILTO: string = \"mailto:\";\nexport const MAILGO: string = \"mailgo:\";\nexport const TEL: string = \"tel:\";\nexport const CALLTO: string = \"callto:\";\nexport const SMS: string = \"sms:\";\n\n// deep linking\nexport const outlookDeepLink: string = \"ms-outlook://\";\n\n// no mailgo class\nexport const NO_MAILGO: string = \"no-mailgo\";\n\n// responsive settings\nexport const DESKTOP: string = \"desktop\";\nexport const MOBILE: string = \"mobile\";\n\n// mailgo modal types\nexport const MAILGO_MAIL: MailgoModalType = \"mailgo\";\nexport const MAILGO_TEL: MailgoModalType = \"mailgo-tel\";\nexport const MAILGO_SMS: MailgoModalType = \"mailgo-sms\";\n\n// mailgo installation types\nexport const CLASSIC: MailgoInstallationType = \"classic\";\nexport const LESS_SPAM: MailgoInstallationType = \"less-spam\";\n\n// useful html tags\nexport const spanHTMLTag: string = \"span\";\nexport const aHTMLTag: string = \"a\";\nexport const pHTMLTag: string = \"p\";\n\n// default lang\nexport const defaultLang: string = \"en\";\n\n// useful regexp\nexport const notNumber: RegExp = new RegExp(\"[^0-9/]\", \"gi\");\nexport const leadingZeros: RegExp = new RegExp(\"^0+\", \"gi\");\n","// validate a single email with regex\nexport const 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\nexport const validateEmails = (arr: string[]): boolean =>\n arr.every(validateEmail);\n\n// validate a single tel with regex\nexport const validateTel = (tel: string): boolean =>\n /^[+]{0,1}[\\s0-9]*[(]{0,1}[0-9]{1,4}[)]{0,1}[-\\s\\./0-9]*[p]{0,1}[\\s0-9]*$/.test(\n tel\n );\n\n// copy of a string\nexport const copyToClipboard = (str: string): boolean => {\n let el: HTMLTextAreaElement = document.createElement(\n \"textarea\"\n ) as HTMLTextAreaElement;\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\n// set focus loop within modal\nexport const 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\nexport const 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\nexport const 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","import {\n MailgoConfig,\n MailgoTranslations,\n MailgoTranslation,\n MailgoAction,\n MailgoLanguages,\n MailgoType,\n MailgoDetail,\n MailgoInstallationType,\n MailgoModalType,\n} from \"mailgo\";\n\n// polyfill\n// import { mailgoPolyfill } from \"./polyfill\";\n\n// constants\nimport {\n MAILTO,\n MAILGO,\n TEL,\n CALLTO,\n SMS,\n MAILGO_MAIL,\n MAILGO_TEL,\n MAILGO_SMS,\n CLASSIC,\n LESS_SPAM,\n NO_MAILGO,\n MOBILE,\n spanHTMLTag,\n aHTMLTag,\n pHTMLTag,\n defaultLang,\n notNumber,\n leadingZeros,\n} from \"./constants\";\n\n// utils\nimport {\n validateEmails,\n validateTel,\n copyToClipboard,\n setFocusLoop,\n} from \"./utils\";\n\n// i18n for mailgo\nimport languages from \"../i18n/languages.json\";\nimport translations from \"../i18n/translations.json\";\n\n// mobile detect\nimport { userAgent } from \"./mobile-detect\";\n\n// mailgo scss, with toString (https://github.com/webpack-contrib/css-loader#tostring)\nconst mailgoCSS: string = require(\"./mailgo.scss\").toString();\n\n// default language\nlet lang: string = defaultLang;\n\n// default strings\nconst defaultStrings: MailgoTranslation = (translations as MailgoTranslations)[\n defaultLang\n];\n\n// translation strings\nlet strings: MailgoTranslation;\n\n// global mailgo config object\nlet config: MailgoConfig;\n\n// config to check if the client is mobile or desktop\nlet isMobile: boolean = false;\n\n// default config attributes\nlet mailtoEnabled: boolean = true;\nlet telEnabled: boolean = true;\nlet smsEnabled: boolean = false;\nlet desktopEnabled: boolean = true;\nlet mobileEnabled: boolean = true;\nlet validateEmailConfig: boolean = true;\nlet validateTelConfig: boolean = true;\nlet showFooterConfig: boolean = true;\nlet loadCSSConfig: boolean = true;\n\n// activeMailgoType\nlet activeMailgoType: MailgoType;\n\n// modals global object\nlet modalMailto: HTMLElement, modalTel: HTMLElement;\n\n// mailgo general variables\nlet url: URL, href: string, lessSpamHref: string;\n\n// mailgo mail variables\nlet mail: string, cc: string, bcc: string, subject: string, bodyMail: string;\n\n// mailgo tel variables\nlet tel: string, msg: string, telegramUsername: string, 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 detailMsg: HTMLElement,\n ccValue: HTMLElement,\n bccValue: HTMLElement,\n subjectValue: HTMLElement,\n bodyValue: HTMLElement,\n msgValue: HTMLElement,\n activatedLink: HTMLElement;\n\n// mailgo buttons (actions)\nlet gmail: HTMLLinkElement,\n outlook: HTMLLinkElement,\n yahoo: 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 // set the boolean for mobile/desktop\n isMobile = userAgent() === MOBILE;\n\n // responsive settings\n {\n if (typeof config?.desktop !== \"undefined\") {\n desktopEnabled = config.desktop;\n // if it is a desktop and desktop is not enabled no init mailgo\n if (!isMobile && !desktopEnabled) {\n return;\n }\n }\n if (typeof config?.mobile !== \"undefined\") {\n mobileEnabled = config.mobile;\n // if it is a mobile and mobile is not enabled no init mailgo\n if (isMobile && !mobileEnabled) {\n return;\n }\n }\n }\n\n // set the mailgo language\n mailgoSetLanguage();\n\n // mailgo, if mailgo not already exists\n let mailgoExists = !!document.getElementById(MAILGO_MAIL);\n\n // if mailgo is enabled for mailto and it not exists in DOM\n if (mailtoEnabled && !mailgoExists) {\n // modal\n modalMailto = createElement() as HTMLElement;\n modalMailto.style.display = \"none\";\n modalMailto.id = MAILGO_MAIL;\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();\n } else {\n disableDarkMode();\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 = \"#mailgo-gmail\";\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 if (mailgoConfigAttributeEnabled(\"action\", \"gmail\")) {\n modalContent.appendChild(gmail);\n }\n\n // Outlook\n outlook = createElement(aHTMLTag) as HTMLLinkElement;\n outlook.id = \"m-outlook\";\n outlook.href = \"#mailgo-outlook\";\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 if (mailgoConfigAttributeEnabled(\"action\", \"outlook\")) {\n modalContent.appendChild(outlook);\n }\n\n // Outlook\n yahoo = createElement(aHTMLTag) as HTMLLinkElement;\n yahoo.id = \"m-yahoo\";\n yahoo.href = \"#mailgo-yahoo\";\n yahoo.classList.add(\"m-open\");\n yahoo.classList.add(\"m-yahoo\");\n yahoo.appendChild(\n createTextNode(strings.open_in_ || defaultStrings.open_in_)\n );\n let yahooSpan: HTMLElement = createElement(spanHTMLTag);\n yahooSpan.className = \"w-500\";\n yahooSpan.appendChild(\n createTextNode(strings.yahoo || defaultStrings.yahoo)\n );\n yahoo.appendChild(yahooSpan);\n\n if (mailgoConfigAttributeEnabled(\"action\", \"yahoo\")) {\n modalContent.appendChild(yahoo);\n }\n\n // open default\n open = createElement(aHTMLTag) as HTMLLinkElement;\n open.id = \"m-open\";\n open.href = \"#mailgo-open\";\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 = \"#mailgo-copy\";\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 (typeof config?.showFooter !== \"undefined\") {\n showFooterConfig = config.showFooter;\n }\n\n if (showFooterConfig) {\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 mailgo is enabled for tel/callto and it not exists in DOM\n if (telEnabled && !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();\n } else {\n disableDarkMode();\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 // details\n let detailsTel: HTMLElement = createElement();\n detailsTel.id = \"m-tel-details\";\n detailsTel.className = \"m-details\";\n\n detailMsg = createElement(pHTMLTag);\n detailMsg.id = \"m-msg\";\n let msgSpan: HTMLElement = createElement(spanHTMLTag);\n msgSpan.className = \"w-500\";\n msgSpan.appendChild(createTextNode(strings.body_ || defaultStrings.body_));\n msgValue = createElement(spanHTMLTag);\n msgValue.id = \"m-msg-value\";\n detailMsg.appendChild(msgSpan);\n detailMsg.appendChild(msgValue);\n detailsTel.appendChild(detailMsg);\n\n modalContent.appendChild(detailsTel);\n\n // Telegram\n telegram = createElement(aHTMLTag) as HTMLLinkElement;\n telegram.id = \"m-tg\";\n telegram.href = \"#mailgo-telegram\";\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 if (mailgoConfigAttributeEnabled(\"action\", \"telegram\")) {\n modalContent.appendChild(telegram);\n }\n\n // WhatsApp\n wa = createElement(aHTMLTag) as HTMLLinkElement;\n wa.id = \"m-wa\";\n wa.href = \"#mailgo-whatsapp\";\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 if (mailgoConfigAttributeEnabled(\"action\", \"whatsapp\")) {\n modalContent.appendChild(wa);\n }\n\n // Skype\n skype = createElement(aHTMLTag) as HTMLLinkElement;\n skype.id = \"m-skype\";\n skype.href = \"#mailgo-skype\";\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 if (mailgoConfigAttributeEnabled(\"action\", \"skype\")) {\n modalContent.appendChild(skype);\n }\n\n // call default\n call = createElement(aHTMLTag) as HTMLLinkElement;\n call.id = \"m-call\";\n call.href = \"#mailgo-open\";\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 = \"#mailgo-copy\";\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 (typeof config?.showFooter !== \"undefined\") {\n showFooterConfig = config.showFooter;\n }\n\n if (showFooterConfig) {\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\", mailgoClickListener);\n};\n\n/**\n * mailgoClickListener\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 * or\n * document.querySelectorAll(\n * 'a[href^=\"sms:\" i]:not(.no-mailgo), a[href=\"#mailgo\"], a.mailgo'\n * );\n */\nfunction mailgoClickListener(event: Event): boolean {\n // check if the mailgo HTML exists in the body\n if (\n !document.body.contains(modalMailto) &&\n !document.body.contains(modalTel)\n ) {\n return false;\n }\n\n // if a mailgo is already showing do nothing\n if (mailgoIsShowing()) {\n return false;\n }\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\n // go here only if one of the mailgo modals are enabled\n if (mailtoEnabled || telEnabled || smsEnabled) {\n let localMailgoType = getMailgoTypeByElement(element);\n\n // go on if the localMailgoType is not null\n if (localMailgoType) {\n // set the active mailgo type\n activeMailgoType = localMailgoType;\n\n let activeMailgoModalType = activeMailgoType?.type;\n\n if (activeMailgoModalType) {\n // check if the setting is enabled and if so go with pre-render\n if (\n (mailtoEnabled && activeMailgoModalType === MAILGO_MAIL) ||\n (telEnabled && activeMailgoModalType === MAILGO_TEL) ||\n (smsEnabled && activeMailgoModalType === MAILGO_SMS)\n ) {\n // stop the normal execution of the element click\n event.preventDefault();\n\n // render mailgo\n mailgoPreRender(element as HTMLLinkElement);\n\n return true;\n }\n }\n }\n }\n });\n }\n\n return false;\n}\n\n/**\n * mailgoPreRender\n * function to pre-render a mailgo, it helps populating elements needed by modal\n */\nfunction mailgoPreRender(\n mailgoElementOrUrl: HTMLLinkElement | string\n): boolean {\n let mailgoElement: HTMLLinkElement;\n\n // get the type and installation from current mailgo type\n let type: MailgoModalType = activeMailgoType?.type;\n let installation: MailgoInstallationType = activeMailgoType?.installation;\n\n // if type is not defined return\n if (!type) return false;\n\n if (typeof mailgoElementOrUrl === \"string\") {\n // if the parameter is a string it is the url\n href = mailgoElementOrUrl as string;\n } else {\n // if the paramenter is an HTMLLinkElement get the href attribute and the element\n href = mailgoElementOrUrl.getAttribute(\"href\") as string;\n mailgoElement = mailgoElementOrUrl as HTMLLinkElement;\n }\n\n // mailgo mail\n if (type === MAILGO_MAIL) {\n // if the installation is classic\n if (installation === CLASSIC) {\n if (validateUrl(href, MAILTO)) {\n mail = decodeURIComponent(href.split(\"?\")[0].split(MAILTO)[1].trim());\n } else if (validateUrl(href, MAILGO)) {\n mail = decodeURIComponent(href.split(\"?\")[0].split(MAILGO)[1].trim());\n }\n\n try {\n url = new URL(href);\n\n let urlParams: URLSearchParams = url.searchParams;\n // optional parameters for the email\n cc = urlParams.get(\"cc\");\n bcc = urlParams.get(\"bcc\");\n subject = urlParams.get(\"subject\");\n bodyMail = urlParams.get(\"body\");\n } catch (error) {\n console.log(error);\n }\n } else if (installation === LESS_SPAM) {\n // if the installation is less-spam\n // mail = data-address + @ + data-domain\n mail =\n mailgoElement.getAttribute(\"data-address\") &&\n mailgoElement.getAttribute(\"data-domain\")\n ? mailgoElement.getAttribute(\"data-address\") +\n \"@\" +\n mailgoElement.getAttribute(\"data-domain\")\n : null;\n\n try {\n url = new URL(MAILTO + encodeURIComponent(mail));\n } catch (error) {\n console.log(error);\n }\n\n let parameters: string[] = [];\n\n // cc = data-cc-address + @ + data-cc-domain\n cc = mailgoElement.getAttribute(\"data-cc-address\")\n ? mailgoElement.getAttribute(\"data-cc-address\") +\n \"@\" +\n mailgoElement.getAttribute(\"data-cc-domain\")\n : null;\n\n // if cc is defined add it to parameters\n if (cc) parameters.push(\"cc=\" + cc);\n\n // bcc = data-bcc-address + @ + data-bcc-domain\n bcc = mailgoElement.getAttribute(\"data-bcc-address\")\n ? mailgoElement.getAttribute(\"data-bcc-address\") +\n \"@\" +\n mailgoElement.getAttribute(\"data-bcc-domain\")\n : null;\n\n // if bcc is defined add it to parameters\n if (bcc) parameters.push(\"bcc=\" + bcc);\n\n // subject = data-subject\n subject = mailgoElement.getAttribute(\"data-subject\");\n\n // if subject is defined add it to parameters\n if (subject) parameters.push(\"subject=\" + subject);\n\n // body = data-body\n bodyMail = mailgoElement.getAttribute(\"data-body\");\n\n // if body is defined add it to parameters\n if (bodyMail) parameters.push(\"body=\" + bodyMail);\n\n // set the lessSpamHref\n lessSpamHref = buildLessSpamHref(\n MAILTO + encodeURIComponent(mail),\n parameters\n );\n }\n\n // if is in config use it\n if (typeof config?.validateEmail !== \"undefined\") {\n validateEmailConfig = config.validateEmail;\n }\n\n if (validateEmailConfig) {\n // validate the email address\n if (!validateEmails(mail.split(\",\"))) {\n return false;\n }\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 // mailgo tel\n else if (type === MAILGO_TEL) {\n if (installation === CLASSIC) {\n if (validateUrl(href, TEL)) {\n tel = decodeURIComponent(href.split(\"?\")[0].split(TEL)[1].trim());\n } else if (validateUrl(href, CALLTO)) {\n tel = decodeURIComponent(href.split(\"?\")[0].split(CALLTO)[1].trim());\n } else if (validateUrl(href, SMS)) {\n tel = decodeURIComponent(href.split(\"?\")[0].split(SMS)[1].trim());\n }\n\n try {\n url = new URL(href);\n let urlParams: URLSearchParams = url.searchParams;\n\n // optional parameters for the phone number\n msg = urlParams.get(\"body\");\n } catch (error) {\n console.log(error);\n }\n } else if (installation == LESS_SPAM) {\n tel = mailgoElement.getAttribute(\"data-tel\");\n msg = mailgoElement.getAttribute(\"data-msg\");\n\n try {\n url = new URL(TEL + encodeURIComponent(tel));\n } catch (error) {\n console.log(error);\n }\n\n let parameters: string[] = [];\n\n // if msg is defined add it to parameters\n if (msg) parameters.push(\"body=\" + msg);\n\n // set the lessSpamHref\n lessSpamHref = buildLessSpamHref(\n TEL + encodeURIComponent(tel),\n parameters\n );\n }\n\n // if is in config use it\n if (typeof config?.validateTel !== \"undefined\") {\n validateTelConfig = config.validateTel;\n }\n\n // validate the phone number\n if (validateTelConfig) {\n if (!validateTel(tel)) return;\n }\n\n // Telegram username\n if (mailgoElement && mailgoElement.hasAttribute(\"data-telegram\")) {\n telegramUsername = mailgoElement.getAttribute(\"data-telegram\");\n } else {\n telegramUsername = null;\n }\n\n // Telegram username\n if (mailgoElement && mailgoElement.hasAttribute(\"data-skype\")) {\n skypeUsername = mailgoElement.getAttribute(\"data-skype\");\n } else {\n skypeUsername = null;\n }\n }\n\n // if dark is in config or contained in the element\n if (config?.dark || mailgoElement.classList.contains(\"dark\")) {\n enableDarkMode();\n } else {\n disableDarkMode();\n }\n\n // render mailgo\n mailgoRender();\n\n return true;\n}\n\n/**\n * mailgoDirectRender\n * function to render a mailgo directly from a URL\n */\nfunction mailgoDirectRender(directUrl: string): boolean {\n // start mailgo\n mailgo();\n\n if (validateUrl(directUrl, MAILTO) || validateUrl(directUrl, MAILGO)) {\n activeMailgoType = {\n type: MAILGO_MAIL,\n installation: CLASSIC,\n };\n mailgoPreRender(directUrl);\n return true;\n } else if (\n validateUrl(directUrl, TEL) ||\n validateUrl(directUrl, CALLTO) ||\n validateUrl(directUrl, SMS)\n ) {\n activeMailgoType = {\n type: MAILGO_TEL,\n installation: CLASSIC,\n };\n mailgoPreRender(directUrl);\n return true;\n }\n return false;\n}\n\n/**\n * mailgoRender\n * function to render a mailgo (mail or tel)\n */\nfunction mailgoRender(): boolean {\n // get the type from current mailgo type\n let type: MailgoModalType = activeMailgoType?.type;\n\n // if type is not defined return\n if (!type) return false;\n\n // mailgo mail\n if (type === MAILGO_MAIL) {\n // the title of the modal (email address)\n title.textContent = mail.split(\",\").join(\"\\n\");\n\n // add the details if provided\n if (mailgoConfigAttributeEnabled(\"detail\", \"cc\") && cc) {\n detailCc.style.display = \"block\";\n ccValue.textContent = cc.split(\",\").join(\"\\n\");\n } else {\n detailCc.style.display = \"none\";\n }\n\n if (mailgoConfigAttributeEnabled(\"detail\", \"bcc\") && bcc) {\n detailBcc.style.display = \"block\";\n bccValue.textContent = bcc.split(\",\").join(\"\\n\");\n } else {\n detailBcc.style.display = \"none\";\n }\n\n if (mailgoConfigAttributeEnabled(\"detail\", \"subject\") && subject) {\n detailSubject.style.display = \"block\";\n subjectValue.textContent = subject;\n } else {\n detailSubject.style.display = \"none\";\n }\n\n if (mailgoConfigAttributeEnabled(\"detail\", \"body\") && bodyMail) {\n detailBody.style.display = \"block\";\n bodyValue.textContent = bodyMail;\n } else {\n detailBody.style.display = \"none\";\n }\n\n // add the actions\n gmail.addEventListener(\"click\", openGmail);\n\n outlook.addEventListener(\"click\", openOutlook);\n\n yahoo.addEventListener(\"click\", openYahooMail);\n\n open.addEventListener(\"click\", openDefault);\n\n copyMail.addEventListener(\"click\", copy);\n }\n // mailgo tel\n else if (type === MAILGO_TEL) {\n // the title of the modal (tel)\n titleTel.textContent = tel;\n\n if (mailgoConfigAttributeEnabled(\"detail\", \"msg\") && msg) {\n detailMsg.style.display = \"block\";\n msgValue.textContent = msg;\n } else {\n detailMsg.style.display = \"none\";\n }\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\", openDefault);\n\n copyTel.addEventListener(\"click\", copy);\n }\n\n // show the mailgo\n showMailgo(type);\n\n // add listener keyDown\n document.addEventListener(\"keydown\", mailgoKeydown);\n\n return true;\n}\n\n// actions\nconst openGmail = (event?: Event): void => {\n event.preventDefault();\n\n let urlString: string;\n let installation: MailgoInstallationType = activeMailgoType?.installation;\n\n if (installation === CLASSIC) {\n try {\n urlString = url.toString();\n } catch (e) {\n urlString = href;\n }\n } else if (installation === LESS_SPAM) {\n urlString = lessSpamHref;\n }\n\n // Gmail url\n let gmailUrl: string =\n \"https://mail.google.com/mail/?extsrc=mailto&url=\" +\n encodeURIComponent(urlString);\n\n // open the link\n window.open(gmailUrl, \"_blank\", \"noopener, noreferrer\");\n\n // hide the modal\n hideMailgo();\n};\n\nconst openOutlook = (event?: Event): void => {\n event.preventDefault();\n\n // Outlook starting url\n let startingOutlookUrl: string =\n \"https://outlook.live.com/owa/?path=/mail/action/compose&to=\";\n\n // let the user to decide to open Office365 Outlook instead of the classic outlook.live.com\n if (config?.office365) {\n startingOutlookUrl =\n \"https://outlook.office365.com/owa/?path=/mail/action/compose&to=\";\n }\n\n // Outlook url\n let outlookUrl: string = startingOutlookUrl + encodeURIComponent(mail);\n\n // the details if provided\n if (subject) {\n outlookUrl = outlookUrl.concat(\"&subject=\" + encodeURIComponent(subject));\n }\n\n if (bodyMail) {\n outlookUrl = outlookUrl.concat(\"&body=\" + encodeURIComponent(bodyMail));\n }\n\n // open the link\n window.open(outlookUrl, \"_blank\", \"noopener, noreferrer\");\n\n // hide the modal\n hideMailgo();\n};\n\nconst openYahooMail = (event?: Event): void => {\n event.preventDefault();\n\n // Yahoo url\n let yahooUrl: string = \"https://compose.mail.yahoo.com/?to=\" + mail;\n\n // the details if provided\n if (subject) {\n yahooUrl = yahooUrl.concat(\"&subject=\" + encodeURIComponent(subject));\n }\n if (bodyMail) {\n yahooUrl = yahooUrl.concat(\"&body=\" + encodeURIComponent(bodyMail));\n }\n\n // open the link\n window.open(yahooUrl, \"_blank\", \"noopener, noreferrer\");\n\n // hide the modal\n hideMailgo();\n};\n\nconst openTelegram = (event?: Event): void => {\n event.preventDefault();\n\n // check if telegramUsername exists\n if (telegramUsername) {\n // Telegram url\n let tgUrl: string = \"https://t.me/\" + encodeURIComponent(telegramUsername);\n\n // open the url\n window.open(tgUrl, \"_blank\", \"noopener, noreferrer\");\n\n // hide the modal\n hideMailgo();\n }\n};\n\nconst openSkype = (event?: Event): void => {\n event.preventDefault();\n\n let skype: string = skypeUsername || tel;\n\n // Telegram url\n let skypeUrl: string = \"skype:\" + encodeURIComponent(skype);\n\n // open the url\n window.open(skypeUrl, \"_blank\", \"noopener, noreferrer\");\n\n // hide the modal\n hideMailgo();\n};\n\nconst openWhatsApp = (event?: Event): void => {\n event.preventDefault();\n\n // WhatsApp API doesn't work with non number digits and leading 0s: https://faq.whatsapp.com/general/chats/how-to-use-click-to-chat/\n let whatappTel = tel.replace(notNumber, \"\").replace(leadingZeros, \"\");\n\n // WhatsApp url\n let waUrl: string = \"https://wa.me/\" + encodeURIComponent(whatappTel);\n\n // the details if provided\n if (msg) {\n waUrl = waUrl.concat(\"?text=\" + encodeURIComponent(msg));\n }\n\n // open the url\n window.open(waUrl, \"_blank\", \"noopener, noreferrer\");\n\n // hide the modal\n hideMailgo();\n};\n\nconst openDefault = (event?: Event): void => {\n event.preventDefault();\n\n let installation: MailgoInstallationType = activeMailgoType?.installation;\n\n // if the installation is classic the browser can follow the default behaviour\n if (installation === CLASSIC) {\n window.location.href = href;\n } else if (installation === LESS_SPAM) {\n // if the installation is less-spam use the built less-spam href\n window.location.href = lessSpamHref;\n }\n\n hideMailgo();\n};\n\nconst copy = (event?: Event): void => {\n event.preventDefault();\n\n // the correct copyButton (mail or tel)\n if (mailgoIsShowing()) {\n let activeCopy: HTMLElement;\n\n let type: MailgoModalType = activeMailgoType?.type;\n\n if (type === MAILGO_MAIL) {\n // in case it is showing mail modal copy email address\n copyToClipboard(mail);\n activeCopy = copyMail;\n } else {\n // in case it is showing tel modal copy phone number\n copyToClipboard(tel);\n activeCopy = copyTel;\n }\n\n activeCopy.textContent = strings.copied || defaultStrings.copied;\n setTimeout(() => {\n activeCopy.textContent = strings.copy || defaultStrings.copy;\n // hide after the timeout\n hideMailgo();\n }, 999);\n }\n};\n\n// function to find if a link is a mailto, tel, callto or sms\nconst validateUrl = (url: string, type: string = MAILTO) => {\n let regexValidate = new RegExp(\"^\" + type + \"((.)+)\", \"gi\");\n return regexValidate.test(url);\n};\n\n// function that returns if an element is a mailgo\nfunction getMailgoTypeByElement(element: HTMLElement): MailgoType | null {\n let elementHref: string = (element as HTMLLinkElement).getAttribute(\"href\");\n\n // return null if there is no-mailgo in class\n if (element.classList?.contains(NO_MAILGO)) {\n return null;\n }\n\n // the case of classic type of mailgo, like a href=mailto:... or a href=tel:... and the class=mailgo with a useful href\n if (elementHref || element.classList?.contains(\"mailgo\")) {\n if (validateUrl(elementHref, MAILTO) || validateUrl(elementHref, MAILGO)) {\n // a mailto: or mailgo:\n return {\n type: MAILGO_MAIL,\n installation: CLASSIC,\n };\n } else if (\n validateUrl(elementHref, TEL) ||\n validateUrl(elementHref, CALLTO)\n ) {\n // a tel: or callto:\n return {\n type: MAILGO_TEL,\n installation: CLASSIC,\n };\n } else if (validateUrl(elementHref, SMS)) {\n // a sms:\n return {\n type: MAILGO_SMS,\n installation: CLASSIC,\n };\n }\n }\n\n if (elementHref === \"#mailgo\" || element.classList?.contains(\"mailgo\")) {\n // less-spam installation of mailgo, check to the attributes\n if (\n element.hasAttribute(\"data-address\") &&\n element.hasAttribute(\"data-domain\")\n ) {\n // less-spam mailto with data-address and data-domain\n return {\n type: MAILGO_MAIL,\n installation: LESS_SPAM,\n };\n } else if (element.hasAttribute(\"data-tel\")) {\n // less-spam tel with data-tel\n return {\n type: MAILGO_TEL,\n installation: LESS_SPAM,\n };\n } else if (element.hasAttribute(\"data-msg\")) {\n // less-spam sms with data-msd\n return {\n type: MAILGO_SMS,\n installation: LESS_SPAM,\n };\n }\n }\n\n return null;\n}\n\n/**\n * mailgoKeydown\n * function to manage the keydown event when the modal is showing, return a boolean that represents if a useful key has been pressed\n */\nconst mailgoKeydown = (keyboardEvent: KeyboardEvent): boolean => {\n // if mailgo is showing\n if (mailgoIsShowing()) {\n let type: MailgoModalType = activeMailgoType?.type;\n\n if (type === MAILGO_MAIL) {\n switch (keyboardEvent.keyCode) {\n case 27:\n // Escape\n hideMailgo();\n return true;\n case 71:\n // g -> open GMail\n openGmail();\n return true;\n case 79:\n // o -> open Outlook\n openOutlook();\n return true;\n case 89:\n // y -> open Yahoo Mail\n openYahooMail();\n return true;\n case 32:\n case 13:\n // spacebar or enter -> open default\n openDefault();\n return true;\n case 67:\n // c -> copy\n copy();\n return true;\n default:\n return false;\n }\n } else if (type === MAILGO_TEL) {\n switch (keyboardEvent.keyCode) {\n case 27:\n // Escape\n hideMailgo();\n return true;\n case 84:\n // t -> open Telegram\n openTelegram();\n return true;\n case 87:\n // w -> open WhatsApp\n openWhatsApp();\n return true;\n case 83:\n // s -> open Skype\n openSkype();\n return true;\n case 32:\n case 13:\n // spacebar or enter -> open default\n openDefault();\n return true;\n case 67:\n // c -> copy\n copy();\n return true;\n default:\n return false;\n }\n }\n }\n return false;\n};\n\n// show the modal\nconst showMailgo = (type: MailgoModalType): 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(MAILGO_MAIL, \"none\");\n setModalDisplay(MAILGO_TEL, \"none\");\n\n // remove listener keyDown\n document.removeEventListener(\"keydown\", mailgoKeydown);\n};\n\n// is the mailgo modal hidden?\nconst mailgoIsShowing = (): boolean => {\n return (\n (mailtoEnabled && getModalDisplay(MAILGO_MAIL) === \"flex\") ||\n ((telEnabled || smsEnabled) && getModalDisplay(MAILGO_TEL) === \"flex\")\n );\n};\n\nconst byElement = (): HTMLLinkElement => {\n // by element in the footer\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// get the correct HTMLElement from a type\nconst getModalHTMLElement = (type: MailgoModalType = MAILGO_MAIL) => {\n if (type === MAILGO_TEL) {\n return modalTel;\n } else {\n return modalMailto;\n }\n};\n\n// get display value\nconst getModalDisplay = (ref: MailgoModalType = MAILGO_MAIL): string =>\n getModalHTMLElement(ref).style.display;\n\n// set display value\nconst setModalDisplay = (\n ref: MailgoModalType = MAILGO_MAIL,\n value: string\n): void => {\n let modal = getModalHTMLElement(ref);\n\n if (modal) {\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\n// enable dark mode\nconst enableDarkMode = () => {\n // get the type from current mailgo type\n let type: MailgoModalType = activeMailgoType?.type;\n if (type) {\n getModalHTMLElement(type).classList.add(\"m-dark\");\n }\n};\n\n// disable dark mode\nconst disableDarkMode = () => {\n // get the type from current mailgo type\n let type: MailgoModalType = activeMailgoType?.type;\n if (type) {\n getModalHTMLElement(type).classList.remove(\"m-dark\");\n }\n};\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// function to recreate a mailto: or tel: href from less-spam\nconst buildLessSpamHref = (type: string, parameters: string[]): string => {\n lessSpamHref = type;\n if (parameters && parameters.length > 0) {\n let joinedParams = parameters.join(\"&\");\n lessSpamHref = lessSpamHref.concat(\"?\" + joinedParams);\n }\n return lessSpamHref;\n};\n\n// function to check an attribute is enabled or not, by default considering it enabled\nconst mailgoConfigAttributeEnabled = (\n type: \"action\" | \"detail\",\n attribute: MailgoAction | MailgoDetail\n): boolean => {\n // by default all the actions and attribute are enabled\n if (!config) {\n return true;\n }\n\n // if the attribute type is action consider the actions config attribute\n if (type === \"action\") {\n if (config && !config?.actions) {\n return true;\n }\n\n if (\n config &&\n config.actions &&\n config?.actions[attribute as MailgoAction] === false\n ) {\n return false;\n }\n } else if (type === \"detail\") {\n // else consider the details attribute\n\n if (config && !config?.details) {\n return true;\n }\n\n if (\n config &&\n config.details &&\n config?.details[attribute as MailgoDetail] === false\n ) {\n return false;\n }\n }\n\n return true;\n};\n\n// manage the language of mailgo\nconst mailgoSetLanguage = (): string => {\n let languageType = \"default lang\";\n\n // if a language is defined in configuration use it\n if (\n config?.lang &&\n (languages as MailgoLanguages).indexOf(config.lang) !== -1\n ) {\n lang = config.lang;\n languageType = \"config lang\";\n } else {\n // else if is defined use it!\n // keep the lang from html\n let htmlLang: string = document.documentElement.lang;\n\n // find the correct language using the lang attribute, not just a === because there a are cases like fr-FR or fr_FR in html lang attribute\n (languages as MailgoLanguages).forEach((language: any) => {\n if (new RegExp(\"^\" + language, \"gi\").test(htmlLang)) {\n lang = language;\n languageType = \"html lang\";\n }\n });\n }\n\n // strings\n strings = (translations as MailgoTranslations)[lang];\n\n return languageType;\n};\n\nconst mailgoStyle = (): void => {\n if (!document.getElementById(\"mailgo-style\")) {\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\n// mailgo\nfunction mailgo(mailgoConfig?: MailgoConfig): boolean {\n try {\n // polyfill mailgo\n // mailgoPolyfill();\n\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 (typeof window !== \"undefined\") {\n // if is set in config use it (load the mailgo CSS)\n if (typeof config?.loadCSS !== \"undefined\") {\n loadCSSConfig = config.loadCSS;\n }\n\n // if is set in config use it (enable mailto)\n if (typeof config?.mailto !== \"undefined\") {\n mailtoEnabled = config.mailto;\n }\n\n // if is set in config use it (enable tel)\n if (typeof config?.tel !== \"undefined\") {\n telEnabled = config.tel;\n }\n\n // if is set in config use it (enable sms)\n if (typeof config?.sms !== \"undefined\") {\n smsEnabled = config.sms;\n }\n\n // if load css enabled load it!\n if (loadCSSConfig) {\n // add the style for mailgo\n mailgoStyle();\n }\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 mailgoInit,\n config.listenerOptions\n );\n } else {\n // no listener options\n document.addEventListener(config.initEvent, mailgoInit);\n }\n } else {\n mailgoInit();\n }\n\n return true;\n }\n } catch (error) {\n console.log(error);\n }\n return false;\n}\n\n// define the methods also for window element\nif (typeof window !== \"undefined\") {\n (window as any).getMailgoTypeByElement = getMailgoTypeByElement;\n (window as any).mailgoClickListener = mailgoClickListener;\n (window as any).mailgoCheckRender = mailgoClickListener; // for compatibility with old version of mailgo\n (window as any).mailgoPreRender = mailgoPreRender;\n (window as any).mailgoDirectRender = mailgoDirectRender;\n (window as any).mailgoRender = mailgoRender;\n (window as any).mailgo = mailgo;\n}\n\nexport {\n getMailgoTypeByElement,\n mailgoClickListener,\n mailgoPreRender,\n mailgoDirectRender,\n mailgoRender,\n};\n\nexport default mailgo;\n","export const userAgent = () => {\n if (\n /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(\n navigator.userAgent\n )\n ) {\n return \"mobile\";\n }\n return \"desktop\";\n};\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","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tif(__webpack_module_cache__[moduleId]) {\n\t\treturn __webpack_module_cache__[moduleId].exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","// startup\n// Load entry module and return exports\n// This entry module doesn't tell about it's top-level declarations so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(474);\n"],"sourceRoot":""} \ No newline at end of file diff --git a/dist/mailgo.nocss.min.js b/dist/mailgo.nocss.min.js index f49e90d..b68b90f 100644 --- a/dist/mailgo.nocss.min.js +++ b/dist/mailgo.nocss.min.js @@ -1,2 +1,2 @@ -window.mailgo=function(){var e={91:function(e,o,t){var a=t(476)((function(e){return e[1]}));a.push([e.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:.8}.m-modal .m-modal-content{position:relative;z-index:10002;box-sizing:content-box;text-align:center;overflow:hidden;min-width:200px;max-width:240px;background-color:#fff;opacity:.95;border-radius:20px;box-shadow:0 3px 20px rgba(32,35,42,.5);border:3px solid #333;color:#4a4a4a;display:flex;flex-direction:column;overflow:auto;padding:24px;transition:.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:pre-line;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{white-space:pre-line;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(192,55,42,.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(9,103,170,.08);color:#0967aa}.m-modal .m-modal-content a.m-yahoo{color:#4a00a0}.m-modal .m-modal-content a.m-yahoo:hover,.m-modal .m-modal-content a.m-yahoo:focus,.m-modal .m-modal-content a.m-yahoo:active{background-color:rgba(74,0,160,.08);color:#4a00a0}.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(8,109,160,.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(6,116,102,.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(7,109,146,.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,.08);color:#4a4a4a}.m-modal .m-modal-content a.m-by{font-size:12px;margin-top:.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,.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(224,125,115,.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(76,156,215,.08);color:#4c9cd7}.m-modal.m-dark .m-modal-content a.m-yahoo{color:#ac88d3}.m-modal.m-dark .m-modal-content a.m-yahoo:hover,.m-modal.m-dark .m-modal-content a.m-yahoo:focus,.m-modal.m-dark .m-modal-content a.m-yahoo:active{background-color:rgba(172,136,211,.08);color:#ac88d3}.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(76,171,219,.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(76,210,192,.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(76,199,244,.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}',""]),e.exports=a},476:function(e){"use strict";e.exports=function(e){var o=[];return o.toString=function(){return this.map((function(o){var t=e(o);return o[2]?"@media ".concat(o[2]," {").concat(t,"}"):t})).join("")},o.i=function(e,t,a){"string"==typeof e&&(e=[[null,e,""]]);var n={};if(a)for(var d=0;d()[\]\\.,;:\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)},h=function(e){return e.every(y)},k=function(e){var o=document.createElement("textarea");o.value=e,o.setAttribute("readonly",""),o.style.position="absolute",o.style.left="-9999px",document.body.appendChild(o);var t=document.getSelection().rangeCount>0&&document.getSelection().getRangeAt(0);return o.select(),document.execCommand("copy"),document.body.removeChild(o),!!t&&(document.getSelection().removeAllRanges(),document.getSelection().addRange(t),!0)},_=function(e){var o=e;o.querySelector(".m-modal-content a:last-of-type").addEventListener("keydown",w),o.querySelector(".m-modal-content a:first-of-type").addEventListener("keydown",C)},w=function(e){"Tab"===e.code&&!1===e.shiftKey&&(e.preventDefault(),e.target.closest("div").querySelector("a:first-of-type").focus())},C=function(e){"Tab"===e.code&&!0===e.shiftKey&&(e.preventDefault(),e.target.closest("div").querySelector("a:last-of-type").focus())},x=JSON.parse('["en","it","es","de","fr","pt","nl","ru","sv","no","dk","is","zh","ja"]'),L=JSON.parse('{"en":{"open_in_":"open in ","cc_":"cc ","bcc_":"bcc ","subject_":"subject ","body_":"body ","gmail":"Gmail","outlook":"Outlook","yahoo":"Yahoo Mail","telegram":"Telegram","whatsapp":"WhatsApp","skype":"Skype","call":"call","open":"open","_default":" default","_as_default":" as default","copy":"copy","copied":"copied"},"it":{"open_in_":"apri con ","bcc_":"ccn ","subject_":"oggetto ","body_":"testo ","call":"chiama","open":"apri","_default":" ","_as_default":" ","copy":"copia","copied":"copiato"},"es":{"open_in_":"abrir con ","bcc_":"cco ","subject_":"asunto ","body_":"cuerpo ","call":"llamar","open":"abrir","_default":" predefinido","_as_default":" por defecto","copy":"copiar","copied":"copiado"},"de":{"open_in_":"Öffnen in ","subject_":"Betreff ","body_":"Nachricht ","call":"Anrufen","open":"Öffnen","_default":" mit Standard","_as_default":" mit Standard","copy":"kopieren","copied":"kopiert"},"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","copied":"copiado"},"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","copied":"copié"},"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":"скопировать"},"sv":{"open_in_":"öppna i ","subject_":"ämne ","body_":"meddelandetext ","call":"ring","open":"öppna","_default":" förval","_as_default":" som förval","copy":"kopiera","copied":"kopierad"},"no":{"open_in_":"åpne i ","subject_":"emne ","call":"ringe","open":"åpne","_as_default":" som standard","copy":"kopiere","copied":"kopiert"},"dk":{"open_in_":"åpne i ","subject_":"emne ","call":"ringe op","open":"åben","_as_default":" som standard","copy":"kopi","copied":"kopieret"},"is":{"open_in_":"opið inn ","subject_":"viðfangsefni ","body_":"líkami ","call":"hringja","open":"opið","_default":" sjálfgefið","_as_default":" sem sjálfgefið","copy":"afrita","copied":"afritað"},"zh":{"open_in_":"開啟 ","cc_":"副本 ","bcc_":"密件副本 ","subject_":"主旨 ","body_":"內文 ","call":"通話","open":"開啟","_default":" 預設","_as_default":" 預設","copy":"複製","copied":"已複製"},"ja":{"open_in_":"開く ","subject_":"主題 ","body_":"本文 ","call":"通話 ","open":"開く ","_default":" 標準のアプリ","_as_default":" 標準のアプリ","copy":"リンクをコピー","copied":"コピーしました"}}');function j(e,o){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);o&&(a=a.filter((function(o){return Object.getOwnPropertyDescriptor(e,o).enumerable}))),t.push.apply(t,a)}return t}function E(e){for(var o=1;o1&&void 0!==arguments[1]?arguments[1]:a,t=new RegExp("^"+o+"((.)+)","gi");return t.test(e)};function Fe(e){var o,t,u,f=e.getAttribute("href");if(null!==(o=e.classList)&&void 0!==o&&o.contains("no-mailgo"))return null;if(f||null!==(t=e.classList)&&void 0!==t&&t.contains("mailgo")){if(Me(f,a)||Me(f,n))return{type:m,installation:s};if(Me(f,d)||Me(f,l))return{type:c,installation:s};if(Me(f,i))return{type:r,installation:s}}if("#mailgo"===f||null!==(u=e.classList)&&void 0!==u&&u.contains("mailgo")){if(e.hasAttribute("data-address")&&e.hasAttribute("data-domain"))return{type:m,installation:p};if(e.hasAttribute("data-tel"))return{type:c,installation:p};if(e.hasAttribute("data-msg"))return{type:r,installation:p}}return null}var qe=function(e){if(Ke()){var o,t=null===(o=O)||void 0===o?void 0:o.type;if(t===m)switch(e.keyCode){case 27:return Je(),!0;case 71:return Ie(),!0;case 79:return Ne(),!0;case 89:return Ue(),!0;case 32:case 13:return Te(),!0;case 67:return Be(),!0;default:return!1}else if(t===c)switch(e.keyCode){case 27:return Je(),!0;case 84:return Pe(),!0;case 87:return ze(),!0;case 83:return De(),!0;case 32:case 13:return Te(),!0;case 67:return Be(),!0;default:return!1}}return!1},He=function(e){Qe(e,"flex")},Je=function(){Qe(m,"none"),Qe(c,"none"),document.removeEventListener("keydown",qe)},Ke=function(){return he&&"flex"===Ye(m)||(ke||_e)&&"flex"===Ye(c)},We=function(){var e=Ze(f);return e.href="https://mailgo.dev?ref=mailgo-modal",e.className="m-by",e.target="_blank",e.rel="noopener noreferrer",e.appendChild($e("mailgo.dev")),e},Ze=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"div";return document.createElement(e)},$e=function(e){return document.createTextNode(e)},Ge=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:m;return e===c?N:I},Ye=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:m;return Ge(e).style.display},Qe=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:m,o=arguments.length>1?arguments[1]:void 0,t=Ge(e);t&&(t.style.display=o,"flex"===o?(ne=document.activeElement,t.setAttribute("aria-hidden","false"),t.setAttribute("tabindex","0"),t.focus(),_(t)):(t.setAttribute("aria-hidden","true"),t.setAttribute("tabindex","-1"),ne.focus()))},Ve=function(){var e,o=null===(e=O)||void 0===e?void 0:e.type;o&&Ge(o).classList.add("m-dark")},Xe=function(){var e,o=null===(e=O)||void 0===e?void 0:e.type;o&&Ge(o).classList.remove("m-dark")},eo=function(e){for(var o=[];e;){if(o.push(e),"HTML"===e.tagName)return o.push(document),o.push(window),o;e=e.parentElement}},oo=function(e,o){if(D=e,o&&o.length>0){var t=o.join("&");D=D.concat("?"+t)}return D},to=function(e,o){if(!R)return!0;if("action"===e){var t,a;if(R&&(null===(t=R)||void 0===t||!t.actions))return!0;if(R&&R.actions&&!1===(null===(a=R)||void 0===a?void 0:a.actions[o]))return!1}else if("detail"===e){var n,d;if(R&&(null===(n=R)||void 0===n||!n.details))return!0;if(R&&R.details&&!1===(null===(d=R)||void 0===d?void 0:d.details[o]))return!1}return!0},ao=function(){var e,o="default lang";if(null!==(e=R)&&void 0!==e&&e.lang&&-1!==x.indexOf(R.lang))ge=R.lang,o="config lang";else{var t=document.documentElement.lang;x.forEach((function(e){new RegExp("^"+e,"gi").test(t)&&(ge=e,o="html lang")}))}return S=L[ge],o};function no(e){try{var o;if(R=E(E({},e),(null===(o=window)||void 0===o?void 0:o.mailgoConfig)||null),"undefined"!=typeof window){var t,a,n,d,l,i;if(void 0!==(null===(t=R)||void 0===t?void 0:t.loadCSS)&&(Ee=R.loadCSS),void 0!==(null===(a=R)||void 0===a?void 0:a.mailto)&&(he=R.mailto),void 0!==(null===(n=R)||void 0===n?void 0:n.tel)&&(ke=R.tel),void 0!==(null===(d=R)||void 0===d?void 0:d.sms)&&(_e=R.sms),Ee&&function(){if(!document.getElementById("mailgo-style")){var e=Ze("style");e.id="mailgo-style",e.type="text/css",e.appendChild($e(ve)),document.head.appendChild(e)}}(),null!==(l=R)&&void 0!==l&&l.initEvent)null!==(i=R)&&void 0!==i&&i.listenerOptions?document.addEventListener(R.initEvent,Ae,R.listenerOptions):document.addEventListener(R.initEvent,Ae);else Ae();return!0}}catch(e){console.log(e)}return!1}"undefined"!=typeof window&&(window.getMailgoTypeByElement=Fe,window.mailgoClickListener=Se,window.mailgoCheckRender=Se,window.mailgoPreRender=Re,window.mailgoDirectRender=function(e){return no(),Me(e,a)||Me(e,n)?(O={type:m,installation:s},Re(e),!0):!!(Me(e,d)||Me(e,l)||Me(e,i))&&(O={type:c,installation:s},Re(e),!0)},window.mailgoRender=Oe,window.mailgo=no);no({initEvent:"DOMContentLoaded",loadCSS:!1})}},o={};function t(a){if(o[a])return o[a].exports;var n=o[a]={id:a,exports:{}};return e[a](n,n.exports,t),n.exports}return t.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},t(331)}(); +!function(){var e={91:function(e,o,t){var a=t(476)((function(e){return e[1]}));a.push([e.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:.8}.m-modal .m-modal-content{position:relative;z-index:10002;box-sizing:content-box;text-align:center;overflow:hidden;min-width:200px;max-width:240px;background-color:#fff;opacity:.95;border-radius:20px;box-shadow:0 3px 20px rgba(32,35,42,.5);border:3px solid #333;color:#4a4a4a;display:flex;flex-direction:column;overflow:auto;padding:24px;transition:.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:pre-line;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{white-space:pre-line;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(192,55,42,.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(9,103,170,.08);color:#0967aa}.m-modal .m-modal-content a.m-yahoo{color:#4a00a0}.m-modal .m-modal-content a.m-yahoo:hover,.m-modal .m-modal-content a.m-yahoo:focus,.m-modal .m-modal-content a.m-yahoo:active{background-color:rgba(74,0,160,.08);color:#4a00a0}.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(8,109,160,.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(6,116,102,.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(7,109,146,.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,.08);color:#4a4a4a}.m-modal .m-modal-content a.m-by{font-size:12px;margin-top:.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,.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(224,125,115,.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(76,156,215,.08);color:#4c9cd7}.m-modal.m-dark .m-modal-content a.m-yahoo{color:#ac88d3}.m-modal.m-dark .m-modal-content a.m-yahoo:hover,.m-modal.m-dark .m-modal-content a.m-yahoo:focus,.m-modal.m-dark .m-modal-content a.m-yahoo:active{background-color:rgba(172,136,211,.08);color:#ac88d3}.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(76,171,219,.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(76,210,192,.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(76,199,244,.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}',""]),e.exports=a},476:function(e){"use strict";e.exports=function(e){var o=[];return o.toString=function(){return this.map((function(o){var t=e(o);return o[2]?"@media ".concat(o[2]," {").concat(t,"}"):t})).join("")},o.i=function(e,t,a){"string"==typeof e&&(e=[[null,e,""]]);var n={};if(a)for(var d=0;d()[\]\\.,;:\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)},h=function(e){return e.every(y)},k=function(e){var o=document.createElement("textarea");o.value=e,o.setAttribute("readonly",""),o.style.position="absolute",o.style.left="-9999px",document.body.appendChild(o);var t=document.getSelection().rangeCount>0&&document.getSelection().getRangeAt(0);return o.select(),document.execCommand("copy"),document.body.removeChild(o),!!t&&(document.getSelection().removeAllRanges(),document.getSelection().addRange(t),!0)},_=function(e){var o=e;o.querySelector(".m-modal-content a:last-of-type").addEventListener("keydown",w),o.querySelector(".m-modal-content a:first-of-type").addEventListener("keydown",C)},w=function(e){"Tab"===e.code&&!1===e.shiftKey&&(e.preventDefault(),e.target.closest("div").querySelector("a:first-of-type").focus())},C=function(e){"Tab"===e.code&&!0===e.shiftKey&&(e.preventDefault(),e.target.closest("div").querySelector("a:last-of-type").focus())},x=JSON.parse('["en","it","es","de","fr","pt","nl","ru","sv","no","dk","is","zh","ja"]'),L=JSON.parse('{"en":{"open_in_":"open in ","cc_":"cc ","bcc_":"bcc ","subject_":"subject ","body_":"body ","gmail":"Gmail","outlook":"Outlook","yahoo":"Yahoo Mail","telegram":"Telegram","whatsapp":"WhatsApp","skype":"Skype","call":"call","open":"open","_default":" default","_as_default":" as default","copy":"copy","copied":"copied"},"it":{"open_in_":"apri con ","bcc_":"ccn ","subject_":"oggetto ","body_":"testo ","call":"chiama","open":"apri","_default":" ","_as_default":" ","copy":"copia","copied":"copiato"},"es":{"open_in_":"abrir con ","bcc_":"cco ","subject_":"asunto ","body_":"cuerpo ","call":"llamar","open":"abrir","_default":" predefinido","_as_default":" por defecto","copy":"copiar","copied":"copiado"},"de":{"open_in_":"Öffnen in ","subject_":"Betreff ","body_":"Nachricht ","call":"Anrufen","open":"Öffnen","_default":" mit Standard","_as_default":" mit Standard","copy":"kopieren","copied":"kopiert"},"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","copied":"copiado"},"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","copied":"copié"},"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":"скопировать"},"sv":{"open_in_":"öppna i ","subject_":"ämne ","body_":"meddelandetext ","call":"ring","open":"öppna","_default":" förval","_as_default":" som förval","copy":"kopiera","copied":"kopierad"},"no":{"open_in_":"åpne i ","subject_":"emne ","call":"ringe","open":"åpne","_as_default":" som standard","copy":"kopiere","copied":"kopiert"},"dk":{"open_in_":"åpne i ","subject_":"emne ","call":"ringe op","open":"åben","_as_default":" som standard","copy":"kopi","copied":"kopieret"},"is":{"open_in_":"opið inn ","subject_":"viðfangsefni ","body_":"líkami ","call":"hringja","open":"opið","_default":" sjálfgefið","_as_default":" sem sjálfgefið","copy":"afrita","copied":"afritað"},"zh":{"open_in_":"開啟 ","cc_":"副本 ","bcc_":"密件副本 ","subject_":"主旨 ","body_":"內文 ","call":"通話","open":"開啟","_default":" 預設","_as_default":" 預設","copy":"複製","copied":"已複製"},"ja":{"open_in_":"開く ","subject_":"主題 ","body_":"本文 ","call":"通話 ","open":"開く ","_default":" 標準のアプリ","_as_default":" 標準のアプリ","copy":"リンクをコピー","copied":"コピーしました"}}');function j(e,o){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);o&&(a=a.filter((function(o){return Object.getOwnPropertyDescriptor(e,o).enumerable}))),t.push.apply(t,a)}return t}function E(e){for(var o=1;o1&&void 0!==arguments[1]?arguments[1]:a,t=new RegExp("^"+o+"((.)+)","gi");return t.test(e)};function Fe(e){var o,t,u,f=e.getAttribute("href");if(null!==(o=e.classList)&&void 0!==o&&o.contains("no-mailgo"))return null;if(f||null!==(t=e.classList)&&void 0!==t&&t.contains("mailgo")){if(Me(f,a)||Me(f,n))return{type:m,installation:s};if(Me(f,d)||Me(f,l))return{type:c,installation:s};if(Me(f,i))return{type:r,installation:s}}if("#mailgo"===f||null!==(u=e.classList)&&void 0!==u&&u.contains("mailgo")){if(e.hasAttribute("data-address")&&e.hasAttribute("data-domain"))return{type:m,installation:p};if(e.hasAttribute("data-tel"))return{type:c,installation:p};if(e.hasAttribute("data-msg"))return{type:r,installation:p}}return null}var qe=function(e){if(Ke()){var o,t=null===(o=O)||void 0===o?void 0:o.type;if(t===m)switch(e.keyCode){case 27:return Je(),!0;case 71:return Ie(),!0;case 79:return Ne(),!0;case 89:return Ue(),!0;case 32:case 13:return Te(),!0;case 67:return Be(),!0;default:return!1}else if(t===c)switch(e.keyCode){case 27:return Je(),!0;case 84:return Pe(),!0;case 87:return ze(),!0;case 83:return De(),!0;case 32:case 13:return Te(),!0;case 67:return Be(),!0;default:return!1}}return!1},He=function(e){Qe(e,"flex")},Je=function(){Qe(m,"none"),Qe(c,"none"),document.removeEventListener("keydown",qe)},Ke=function(){return he&&"flex"===Ye(m)||(ke||_e)&&"flex"===Ye(c)},We=function(){var e=Ze(f);return e.href="https://mailgo.dev?ref=mailgo-modal",e.className="m-by",e.target="_blank",e.rel="noopener noreferrer",e.appendChild($e("mailgo.dev")),e},Ze=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"div";return document.createElement(e)},$e=function(e){return document.createTextNode(e)},Ge=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:m;return e===c?N:I},Ye=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:m;return Ge(e).style.display},Qe=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:m,o=arguments.length>1?arguments[1]:void 0,t=Ge(e);t&&(t.style.display=o,"flex"===o?(ne=document.activeElement,t.setAttribute("aria-hidden","false"),t.setAttribute("tabindex","0"),t.focus(),_(t)):(t.setAttribute("aria-hidden","true"),t.setAttribute("tabindex","-1"),ne.focus()))},Ve=function(){var e,o=null===(e=O)||void 0===e?void 0:e.type;o&&Ge(o).classList.add("m-dark")},Xe=function(){var e,o=null===(e=O)||void 0===e?void 0:e.type;o&&Ge(o).classList.remove("m-dark")},eo=function(e){for(var o=[];e;){if(o.push(e),"HTML"===e.tagName)return o.push(document),o.push(window),o;e=e.parentElement}},oo=function(e,o){if(D=e,o&&o.length>0){var t=o.join("&");D=D.concat("?"+t)}return D},to=function(e,o){if(!R)return!0;if("action"===e){var t,a;if(R&&(null===(t=R)||void 0===t||!t.actions))return!0;if(R&&R.actions&&!1===(null===(a=R)||void 0===a?void 0:a.actions[o]))return!1}else if("detail"===e){var n,d;if(R&&(null===(n=R)||void 0===n||!n.details))return!0;if(R&&R.details&&!1===(null===(d=R)||void 0===d?void 0:d.details[o]))return!1}return!0},ao=function(){var e,o="default lang";if(null!==(e=R)&&void 0!==e&&e.lang&&-1!==x.indexOf(R.lang))ge=R.lang,o="config lang";else{var t=document.documentElement.lang;x.forEach((function(e){new RegExp("^"+e,"gi").test(t)&&(ge=e,o="html lang")}))}return S=L[ge],o};function no(e){try{var o;if(R=E(E({},e),(null===(o=window)||void 0===o?void 0:o.mailgoConfig)||null),"undefined"!=typeof window){var t,a,n,d,l,i;if(void 0!==(null===(t=R)||void 0===t?void 0:t.loadCSS)&&(Ee=R.loadCSS),void 0!==(null===(a=R)||void 0===a?void 0:a.mailto)&&(he=R.mailto),void 0!==(null===(n=R)||void 0===n?void 0:n.tel)&&(ke=R.tel),void 0!==(null===(d=R)||void 0===d?void 0:d.sms)&&(_e=R.sms),Ee&&function(){if(!document.getElementById("mailgo-style")){var e=Ze("style");e.id="mailgo-style",e.type="text/css",e.appendChild($e(ve)),document.head.appendChild(e)}}(),null!==(l=R)&&void 0!==l&&l.initEvent)null!==(i=R)&&void 0!==i&&i.listenerOptions?document.addEventListener(R.initEvent,Ae,R.listenerOptions):document.addEventListener(R.initEvent,Ae);else Ae();return!0}}catch(e){console.log(e)}return!1}"undefined"!=typeof window&&(window.getMailgoTypeByElement=Fe,window.mailgoClickListener=Se,window.mailgoCheckRender=Se,window.mailgoPreRender=Re,window.mailgoDirectRender=function(e){return no(),Me(e,a)||Me(e,n)?(O={type:m,installation:s},Re(e),!0):!!(Me(e,d)||Me(e,l)||Me(e,i))&&(O={type:c,installation:s},Re(e),!0)},window.mailgoRender=Oe,window.mailgo=no);no({initEvent:"DOMContentLoaded",loadCSS:!1})}},o={};function t(a){if(o[a])return o[a].exports;var n=o[a]={id:a,exports:{}};return e[a](n,n.exports,t),n.exports}t.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var a=t(331);window.mailgo=a}(); //# sourceMappingURL=mailgo.nocss.min.js.map \ No newline at end of file diff --git a/dist/mailgo.nocss.min.js.map b/dist/mailgo.nocss.min.js.map index e46bff2..421114f 100644 --- a/dist/mailgo.nocss.min.js.map +++ b/dist/mailgo.nocss.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack://mailgo/../src/mailgo.scss","webpack://mailgo/../node_modules/css-loader/dist/runtime/api.js","webpack://mailgo/../src/mailgo.scss?81f2","webpack://mailgo/../src/constants.ts","webpack://mailgo/../src/utils.ts","webpack://mailgo/../src/mailgo.ts","webpack://mailgo/../src/mobile-detect.ts","webpack://mailgo/./mailgo.dist.nocss.ts","webpack://mailgo/webpack/bootstrap","webpack://mailgo/webpack/startup","webpack://mailgo/webpack/runtime/make namespace object"],"names":["___CSS_LOADER_EXPORT___","___CSS_LOADER_API_IMPORT___","i","push","module","id","exports","cssWithMappingToString","list","toString","this","map","item","content","concat","join","modules","mediaQuery","dedupe","alreadyImportedModules","length","_i","result","MAILTO","MAILGO","TEL","CALLTO","SMS","MAILGO_MAIL","MAILGO_TEL","MAILGO_SMS","CLASSIC","LESS_SPAM","spanHTMLTag","aHTMLTag","pHTMLTag","notNumber","RegExp","leadingZeros","validateEmail","email","test","validateEmails","arr","every","copyToClipboard","str","el","document","createElement","value","setAttribute","style","position","left","body","appendChild","selected","getSelection","rangeCount","getRangeAt","select","execCommand","removeChild","removeAllRanges","addRange","setFocusLoop","ref","modal","querySelector","addEventListener","leaveLastLink","leaveFirstLink","e","code","shiftKey","preventDefault","target","closest","focus","strings","config","activeMailgoType","modalMailto","modalTel","url","href","lessSpamHref","mail","cc","bcc","subject","bodyMail","tel","msg","telegramUsername","skypeUsername","title","titleTel","detailCc","detailBcc","detailSubject","detailBody","detailMsg","ccValue","bccValue","subjectValue","bodyValue","msgValue","activatedLink","gmail","outlook","yahoo","open","telegram","wa","skype","call","copyMail","copyTel","mailgoCSS","require","lang","defaultStrings","translations","isMobile","mailtoEnabled","telEnabled","smsEnabled","desktopEnabled","mobileEnabled","validateEmailConfig","validateTelConfig","showFooterConfig","loadCSSConfig","mailgoInit","navigator","userAgent","desktop","mobile","mailgoSetLanguage","mailgoExists","getElementById","display","classList","add","dark","enableDarkMode","disableDarkMode","modalBackground","className","modalContent","details","ccSpan","createTextNode","cc_","bccSpan","bcc_","subjectSpan","subject_","bodySpan","body_","open_in_","gmailSpan","mailgoConfigAttributeEnabled","outlookSpan","yahooSpan","openSpan","_default","copy","showFooter","byElement","hideMailgo","mailgoTelExists","detailsTel","msgSpan","telegramSpan","waSpan","whatsapp","skypeSpan","callSpan","_as_default","mailgoClickListener","event","contains","mailgoIsShowing","path","composedPath","forEach","element","HTMLDocument","Window","localMailgoType","getMailgoTypeByElement","activeMailgoModalType","type","mailgoPreRender","mailgoElementOrUrl","mailgoElement","installation","getAttribute","validateUrl","decodeURIComponent","split","trim","urlParams","URL","searchParams","get","error","console","log","encodeURIComponent","parameters","buildLessSpamHref","validateTel","hasAttribute","mailgoRender","textContent","openGmail","openOutlook","openYahooMail","openDefault","openWhatsApp","openTelegram","openSkype","showMailgo","mailgoKeydown","urlString","gmailUrl","window","startingOutlookUrl","office365","outlookUrl","yahooUrl","tgUrl","skypeUrl","whatappTel","replace","waUrl","location","activeCopy","copied","setTimeout","regexValidate","elementHref","keyboardEvent","keyCode","setModalDisplay","removeEventListener","getModalDisplay","by","rel","getModalHTMLElement","activeElement","remove","tagName","parentElement","joinedParams","attribute","actions","languageType","languages","htmlLang","documentElement","language","mailgo","mailgoConfig","loadCSS","mailto","sms","mailgoCSSElement","head","mailgoStyle","initEvent","listenerOptions","mailgoCheckRender","mailgoDirectRender","directUrl","__webpack_module_cache__","__webpack_require__","moduleId","__webpack_modules__","r","Symbol","toStringTag","Object","defineProperty"],"mappings":"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","file":"mailgo.nocss.min.js","sourcesContent":["// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../node_modules/css-loader/dist/runtime/api.js\");\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(function(i){return i[1]});\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:.8}.m-modal .m-modal-content{position:relative;z-index:10002;box-sizing:content-box;text-align:center;overflow:hidden;min-width:200px;max-width:240px;background-color:#fff;opacity:.95;border-radius:20px;box-shadow:0 3px 20px rgba(32,35,42,.5);border:3px solid #333;color:#4a4a4a;display:flex;flex-direction:column;overflow:auto;padding:24px;transition:.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:pre-line;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{white-space:pre-line;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(192,55,42,.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(9,103,170,.08);color:#0967aa}.m-modal .m-modal-content a.m-yahoo{color:#4a00a0}.m-modal .m-modal-content a.m-yahoo:hover,.m-modal .m-modal-content a.m-yahoo:focus,.m-modal .m-modal-content a.m-yahoo:active{background-color:rgba(74,0,160,.08);color:#4a00a0}.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(8,109,160,.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(6,116,102,.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(7,109,146,.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,.08);color:#4a4a4a}.m-modal .m-modal-content a.m-by{font-size:12px;margin-top:.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,.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(224,125,115,.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(76,156,215,.08);color:#4c9cd7}.m-modal.m-dark .m-modal-content a.m-yahoo{color:#ac88d3}.m-modal.m-dark .m-modal-content a.m-yahoo:hover,.m-modal.m-dark .m-modal-content a.m-yahoo:focus,.m-modal.m-dark .m-modal-content a.m-yahoo:active{background-color:rgba(172,136,211,.08);color:#ac88d3}.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(76,171,219,.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(76,210,192,.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(76,199,244,.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// 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 (cssWithMappingToString) {\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);\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 var result = require(\"!!../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].use[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 ","import { MailgoModalType, MailgoInstallationType } from \"mailgo\";\n\n// links\nexport const MAILTO: string = \"mailto:\";\nexport const MAILGO: string = \"mailgo:\";\nexport const TEL: string = \"tel:\";\nexport const CALLTO: string = \"callto:\";\nexport const SMS: string = \"sms:\";\n\n// deep linking\nexport const outlookDeepLink: string = \"ms-outlook://\";\n\n// no mailgo class\nexport const NO_MAILGO: string = \"no-mailgo\";\n\n// responsive settings\nexport const DESKTOP: string = \"desktop\";\nexport const MOBILE: string = \"mobile\";\n\n// mailgo modal types\nexport const MAILGO_MAIL: MailgoModalType = \"mailgo\";\nexport const MAILGO_TEL: MailgoModalType = \"mailgo-tel\";\nexport const MAILGO_SMS: MailgoModalType = \"mailgo-sms\";\n\n// mailgo installation types\nexport const CLASSIC: MailgoInstallationType = \"classic\";\nexport const LESS_SPAM: MailgoInstallationType = \"less-spam\";\n\n// useful html tags\nexport const spanHTMLTag: string = \"span\";\nexport const aHTMLTag: string = \"a\";\nexport const pHTMLTag: string = \"p\";\n\n// default lang\nexport const defaultLang: string = \"en\";\n\n// useful regexp\nexport const notNumber: RegExp = new RegExp(\"[^0-9/]\", \"gi\");\nexport const leadingZeros: RegExp = new RegExp(\"^0+\", \"gi\");\n","// validate a single email with regex\nexport const 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\nexport const validateEmails = (arr: string[]): boolean =>\n arr.every(validateEmail);\n\n// validate a single tel with regex\nexport const validateTel = (tel: string): boolean =>\n /^[+]{0,1}[\\s0-9]*[(]{0,1}[0-9]{1,4}[)]{0,1}[-\\s\\./0-9]*[p]{0,1}[\\s0-9]*$/.test(\n tel\n );\n\n// copy of a string\nexport const copyToClipboard = (str: string): boolean => {\n let el: HTMLTextAreaElement = document.createElement(\n \"textarea\"\n ) as HTMLTextAreaElement;\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\n// set focus loop within modal\nexport const 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\nexport const 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\nexport const 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","import {\n MailgoConfig,\n MailgoTranslations,\n MailgoTranslation,\n MailgoAction,\n MailgoLanguages,\n MailgoType,\n MailgoDetail,\n MailgoInstallationType,\n MailgoModalType,\n} from \"mailgo\";\n\n// polyfill\n// import { mailgoPolyfill } from \"./polyfill\";\n\n// constants\nimport {\n MAILTO,\n MAILGO,\n TEL,\n CALLTO,\n SMS,\n MAILGO_MAIL,\n MAILGO_TEL,\n MAILGO_SMS,\n CLASSIC,\n LESS_SPAM,\n NO_MAILGO,\n MOBILE,\n spanHTMLTag,\n aHTMLTag,\n pHTMLTag,\n defaultLang,\n notNumber,\n leadingZeros,\n} from \"./constants\";\n\n// utils\nimport {\n validateEmails,\n validateTel,\n copyToClipboard,\n setFocusLoop,\n} from \"./utils\";\n\n// i18n for mailgo\nimport languages from \"../i18n/languages.json\";\nimport translations from \"../i18n/translations.json\";\n\n// mobile detect\nimport { userAgent } from \"./mobile-detect\";\n\n// mailgo scss, with toString (https://github.com/webpack-contrib/css-loader#tostring)\nconst mailgoCSS: string = require(\"./mailgo.scss\").toString();\n\n// default language\nlet lang: string = defaultLang;\n\n// default strings\nconst defaultStrings: MailgoTranslation = (translations as MailgoTranslations)[\n defaultLang\n];\n\n// translation strings\nlet strings: MailgoTranslation;\n\n// global mailgo config object\nlet config: MailgoConfig;\n\n// config to check if the client is mobile or desktop\nlet isMobile: boolean = false;\n\n// default config attributes\nlet mailtoEnabled: boolean = true;\nlet telEnabled: boolean = true;\nlet smsEnabled: boolean = false;\nlet desktopEnabled: boolean = true;\nlet mobileEnabled: boolean = true;\nlet validateEmailConfig: boolean = true;\nlet validateTelConfig: boolean = true;\nlet showFooterConfig: boolean = true;\nlet loadCSSConfig: boolean = true;\n\n// activeMailgoType\nlet activeMailgoType: MailgoType;\n\n// modals global object\nlet modalMailto: HTMLElement, modalTel: HTMLElement;\n\n// mailgo general variables\nlet url: URL, href: string, lessSpamHref: string;\n\n// mailgo mail variables\nlet mail: string, cc: string, bcc: string, subject: string, bodyMail: string;\n\n// mailgo tel variables\nlet tel: string, msg: string, telegramUsername: string, 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 detailMsg: HTMLElement,\n ccValue: HTMLElement,\n bccValue: HTMLElement,\n subjectValue: HTMLElement,\n bodyValue: HTMLElement,\n msgValue: HTMLElement,\n activatedLink: HTMLElement;\n\n// mailgo buttons (actions)\nlet gmail: HTMLLinkElement,\n outlook: HTMLLinkElement,\n yahoo: 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 // set the boolean for mobile/desktop\n isMobile = userAgent() === MOBILE;\n\n // responsive settings\n {\n if (typeof config?.desktop !== \"undefined\") {\n desktopEnabled = config.desktop;\n // if it is a desktop and desktop is not enabled no init mailgo\n if (!isMobile && !desktopEnabled) {\n return;\n }\n }\n if (typeof config?.mobile !== \"undefined\") {\n mobileEnabled = config.mobile;\n // if it is a mobile and mobile is not enabled no init mailgo\n if (isMobile && !mobileEnabled) {\n return;\n }\n }\n }\n\n // set the mailgo language\n mailgoSetLanguage();\n\n // mailgo, if mailgo not already exists\n let mailgoExists = !!document.getElementById(MAILGO_MAIL);\n\n // if mailgo is enabled for mailto and it not exists in DOM\n if (mailtoEnabled && !mailgoExists) {\n // modal\n modalMailto = createElement() as HTMLElement;\n modalMailto.style.display = \"none\";\n modalMailto.id = MAILGO_MAIL;\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();\n } else {\n disableDarkMode();\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 = \"#mailgo-gmail\";\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 if (mailgoConfigAttributeEnabled(\"action\", \"gmail\")) {\n modalContent.appendChild(gmail);\n }\n\n // Outlook\n outlook = createElement(aHTMLTag) as HTMLLinkElement;\n outlook.id = \"m-outlook\";\n outlook.href = \"#mailgo-outlook\";\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 if (mailgoConfigAttributeEnabled(\"action\", \"outlook\")) {\n modalContent.appendChild(outlook);\n }\n\n // Outlook\n yahoo = createElement(aHTMLTag) as HTMLLinkElement;\n yahoo.id = \"m-yahoo\";\n yahoo.href = \"#mailgo-yahoo\";\n yahoo.classList.add(\"m-open\");\n yahoo.classList.add(\"m-yahoo\");\n yahoo.appendChild(\n createTextNode(strings.open_in_ || defaultStrings.open_in_)\n );\n let yahooSpan: HTMLElement = createElement(spanHTMLTag);\n yahooSpan.className = \"w-500\";\n yahooSpan.appendChild(\n createTextNode(strings.yahoo || defaultStrings.yahoo)\n );\n yahoo.appendChild(yahooSpan);\n\n if (mailgoConfigAttributeEnabled(\"action\", \"yahoo\")) {\n modalContent.appendChild(yahoo);\n }\n\n // open default\n open = createElement(aHTMLTag) as HTMLLinkElement;\n open.id = \"m-open\";\n open.href = \"#mailgo-open\";\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 = \"#mailgo-copy\";\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 (typeof config?.showFooter !== \"undefined\") {\n showFooterConfig = config.showFooter;\n }\n\n if (showFooterConfig) {\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 mailgo is enabled for tel/callto and it not exists in DOM\n if (telEnabled && !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();\n } else {\n disableDarkMode();\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 // details\n let detailsTel: HTMLElement = createElement();\n detailsTel.id = \"m-tel-details\";\n detailsTel.className = \"m-details\";\n\n detailMsg = createElement(pHTMLTag);\n detailMsg.id = \"m-msg\";\n let msgSpan: HTMLElement = createElement(spanHTMLTag);\n msgSpan.className = \"w-500\";\n msgSpan.appendChild(createTextNode(strings.body_ || defaultStrings.body_));\n msgValue = createElement(spanHTMLTag);\n msgValue.id = \"m-msg-value\";\n detailMsg.appendChild(msgSpan);\n detailMsg.appendChild(msgValue);\n detailsTel.appendChild(detailMsg);\n\n modalContent.appendChild(detailsTel);\n\n // Telegram\n telegram = createElement(aHTMLTag) as HTMLLinkElement;\n telegram.id = \"m-tg\";\n telegram.href = \"#mailgo-telegram\";\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 if (mailgoConfigAttributeEnabled(\"action\", \"telegram\")) {\n modalContent.appendChild(telegram);\n }\n\n // WhatsApp\n wa = createElement(aHTMLTag) as HTMLLinkElement;\n wa.id = \"m-wa\";\n wa.href = \"#mailgo-whatsapp\";\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 if (mailgoConfigAttributeEnabled(\"action\", \"whatsapp\")) {\n modalContent.appendChild(wa);\n }\n\n // Skype\n skype = createElement(aHTMLTag) as HTMLLinkElement;\n skype.id = \"m-skype\";\n skype.href = \"#mailgo-skype\";\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 if (mailgoConfigAttributeEnabled(\"action\", \"skype\")) {\n modalContent.appendChild(skype);\n }\n\n // call default\n call = createElement(aHTMLTag) as HTMLLinkElement;\n call.id = \"m-call\";\n call.href = \"#mailgo-open\";\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 = \"#mailgo-copy\";\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 (typeof config?.showFooter !== \"undefined\") {\n showFooterConfig = config.showFooter;\n }\n\n if (showFooterConfig) {\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\", mailgoClickListener);\n};\n\n/**\n * mailgoClickListener\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 * or\n * document.querySelectorAll(\n * 'a[href^=\"sms:\" i]:not(.no-mailgo), a[href=\"#mailgo\"], a.mailgo'\n * );\n */\nfunction mailgoClickListener(event: Event): boolean {\n // check if the mailgo HTML exists in the body\n if (\n !document.body.contains(modalMailto) &&\n !document.body.contains(modalTel)\n ) {\n return false;\n }\n\n // if a mailgo is already showing do nothing\n if (mailgoIsShowing()) {\n return false;\n }\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\n // go here only if one of the mailgo modals are enabled\n if (mailtoEnabled || telEnabled || smsEnabled) {\n let localMailgoType = getMailgoTypeByElement(element);\n\n // go on if the localMailgoType is not null\n if (localMailgoType) {\n // set the active mailgo type\n activeMailgoType = localMailgoType;\n\n let activeMailgoModalType = activeMailgoType?.type;\n\n if (activeMailgoModalType) {\n // check if the setting is enabled and if so go with pre-render\n if (\n (mailtoEnabled && activeMailgoModalType === MAILGO_MAIL) ||\n (telEnabled && activeMailgoModalType === MAILGO_TEL) ||\n (smsEnabled && activeMailgoModalType === MAILGO_SMS)\n ) {\n // stop the normal execution of the element click\n event.preventDefault();\n\n // render mailgo\n mailgoPreRender(element as HTMLLinkElement);\n\n return true;\n }\n }\n }\n }\n });\n }\n\n return false;\n}\n\n/**\n * mailgoPreRender\n * function to pre-render a mailgo, it helps populating elements needed by modal\n */\nfunction mailgoPreRender(\n mailgoElementOrUrl: HTMLLinkElement | string\n): boolean {\n let mailgoElement: HTMLLinkElement;\n\n // get the type and installation from current mailgo type\n let type: MailgoModalType = activeMailgoType?.type;\n let installation: MailgoInstallationType = activeMailgoType?.installation;\n\n // if type is not defined return\n if (!type) return false;\n\n if (typeof mailgoElementOrUrl === \"string\") {\n // if the parameter is a string it is the url\n href = mailgoElementOrUrl as string;\n } else {\n // if the paramenter is an HTMLLinkElement get the href attribute and the element\n href = mailgoElementOrUrl.getAttribute(\"href\") as string;\n mailgoElement = mailgoElementOrUrl as HTMLLinkElement;\n }\n\n // mailgo mail\n if (type === MAILGO_MAIL) {\n // if the installation is classic\n if (installation === CLASSIC) {\n if (validateUrl(href, MAILTO)) {\n mail = decodeURIComponent(href.split(\"?\")[0].split(MAILTO)[1].trim());\n } else if (validateUrl(href, MAILGO)) {\n mail = decodeURIComponent(href.split(\"?\")[0].split(MAILGO)[1].trim());\n }\n\n try {\n url = new URL(href);\n\n let urlParams: URLSearchParams = url.searchParams;\n // optional parameters for the email\n cc = urlParams.get(\"cc\");\n bcc = urlParams.get(\"bcc\");\n subject = urlParams.get(\"subject\");\n bodyMail = urlParams.get(\"body\");\n } catch (error) {\n console.log(error);\n }\n } else if (installation === LESS_SPAM) {\n // if the installation is less-spam\n // mail = data-address + @ + data-domain\n mail =\n mailgoElement.getAttribute(\"data-address\") &&\n mailgoElement.getAttribute(\"data-domain\")\n ? mailgoElement.getAttribute(\"data-address\") +\n \"@\" +\n mailgoElement.getAttribute(\"data-domain\")\n : null;\n\n try {\n url = new URL(MAILTO + encodeURIComponent(mail));\n } catch (error) {\n console.log(error);\n }\n\n let parameters: string[] = [];\n\n // cc = data-cc-address + @ + data-cc-domain\n cc = mailgoElement.getAttribute(\"data-cc-address\")\n ? mailgoElement.getAttribute(\"data-cc-address\") +\n \"@\" +\n mailgoElement.getAttribute(\"data-cc-domain\")\n : null;\n\n // if cc is defined add it to parameters\n if (cc) parameters.push(\"cc=\" + cc);\n\n // bcc = data-bcc-address + @ + data-bcc-domain\n bcc = mailgoElement.getAttribute(\"data-bcc-address\")\n ? mailgoElement.getAttribute(\"data-bcc-address\") +\n \"@\" +\n mailgoElement.getAttribute(\"data-bcc-domain\")\n : null;\n\n // if bcc is defined add it to parameters\n if (bcc) parameters.push(\"bcc=\" + bcc);\n\n // subject = data-subject\n subject = mailgoElement.getAttribute(\"data-subject\");\n\n // if subject is defined add it to parameters\n if (subject) parameters.push(\"subject=\" + subject);\n\n // body = data-body\n bodyMail = mailgoElement.getAttribute(\"data-body\");\n\n // if body is defined add it to parameters\n if (bodyMail) parameters.push(\"body=\" + bodyMail);\n\n // set the lessSpamHref\n lessSpamHref = buildLessSpamHref(\n MAILTO + encodeURIComponent(mail),\n parameters\n );\n }\n\n // if is in config use it\n if (typeof config?.validateEmail !== \"undefined\") {\n validateEmailConfig = config.validateEmail;\n }\n\n if (validateEmailConfig) {\n // validate the email address\n if (!validateEmails(mail.split(\",\"))) {\n return false;\n }\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 // mailgo tel\n else if (type === MAILGO_TEL) {\n if (installation === CLASSIC) {\n if (validateUrl(href, TEL)) {\n tel = decodeURIComponent(href.split(\"?\")[0].split(TEL)[1].trim());\n } else if (validateUrl(href, CALLTO)) {\n tel = decodeURIComponent(href.split(\"?\")[0].split(CALLTO)[1].trim());\n } else if (validateUrl(href, SMS)) {\n tel = decodeURIComponent(href.split(\"?\")[0].split(SMS)[1].trim());\n }\n\n try {\n url = new URL(href);\n let urlParams: URLSearchParams = url.searchParams;\n\n // optional parameters for the phone number\n msg = urlParams.get(\"body\");\n } catch (error) {\n console.log(error);\n }\n } else if (installation == LESS_SPAM) {\n tel = mailgoElement.getAttribute(\"data-tel\");\n msg = mailgoElement.getAttribute(\"data-msg\");\n\n try {\n url = new URL(TEL + encodeURIComponent(tel));\n } catch (error) {\n console.log(error);\n }\n\n let parameters: string[] = [];\n\n // if msg is defined add it to parameters\n if (msg) parameters.push(\"body=\" + msg);\n\n // set the lessSpamHref\n lessSpamHref = buildLessSpamHref(\n TEL + encodeURIComponent(tel),\n parameters\n );\n }\n\n // if is in config use it\n if (typeof config?.validateTel !== \"undefined\") {\n validateTelConfig = config.validateTel;\n }\n\n // validate the phone number\n if (validateTelConfig) {\n if (!validateTel(tel)) return;\n }\n\n // Telegram username\n if (mailgoElement && mailgoElement.hasAttribute(\"data-telegram\")) {\n telegramUsername = mailgoElement.getAttribute(\"data-telegram\");\n } else {\n telegramUsername = null;\n }\n\n // Telegram username\n if (mailgoElement && mailgoElement.hasAttribute(\"data-skype\")) {\n skypeUsername = mailgoElement.getAttribute(\"data-skype\");\n } else {\n skypeUsername = null;\n }\n }\n\n // if dark is in config or contained in the element\n if (config?.dark || mailgoElement.classList.contains(\"dark\")) {\n enableDarkMode();\n } else {\n disableDarkMode();\n }\n\n // render mailgo\n mailgoRender();\n\n return true;\n}\n\n/**\n * mailgoDirectRender\n * function to render a mailgo directly from a URL\n */\nfunction mailgoDirectRender(directUrl: string): boolean {\n // start mailgo\n mailgo();\n\n if (validateUrl(directUrl, MAILTO) || validateUrl(directUrl, MAILGO)) {\n activeMailgoType = {\n type: MAILGO_MAIL,\n installation: CLASSIC,\n };\n mailgoPreRender(directUrl);\n return true;\n } else if (\n validateUrl(directUrl, TEL) ||\n validateUrl(directUrl, CALLTO) ||\n validateUrl(directUrl, SMS)\n ) {\n activeMailgoType = {\n type: MAILGO_TEL,\n installation: CLASSIC,\n };\n mailgoPreRender(directUrl);\n return true;\n }\n return false;\n}\n\n/**\n * mailgoRender\n * function to render a mailgo (mail or tel)\n */\nfunction mailgoRender(): boolean {\n // get the type from current mailgo type\n let type: MailgoModalType = activeMailgoType?.type;\n\n // if type is not defined return\n if (!type) return false;\n\n // mailgo mail\n if (type === MAILGO_MAIL) {\n // the title of the modal (email address)\n title.textContent = mail.split(\",\").join(\"\\n\");\n\n // add the details if provided\n if (mailgoConfigAttributeEnabled(\"detail\", \"cc\") && cc) {\n detailCc.style.display = \"block\";\n ccValue.textContent = cc.split(\",\").join(\"\\n\");\n } else {\n detailCc.style.display = \"none\";\n }\n\n if (mailgoConfigAttributeEnabled(\"detail\", \"bcc\") && bcc) {\n detailBcc.style.display = \"block\";\n bccValue.textContent = bcc.split(\",\").join(\"\\n\");\n } else {\n detailBcc.style.display = \"none\";\n }\n\n if (mailgoConfigAttributeEnabled(\"detail\", \"subject\") && subject) {\n detailSubject.style.display = \"block\";\n subjectValue.textContent = subject;\n } else {\n detailSubject.style.display = \"none\";\n }\n\n if (mailgoConfigAttributeEnabled(\"detail\", \"body\") && bodyMail) {\n detailBody.style.display = \"block\";\n bodyValue.textContent = bodyMail;\n } else {\n detailBody.style.display = \"none\";\n }\n\n // add the actions\n gmail.addEventListener(\"click\", openGmail);\n\n outlook.addEventListener(\"click\", openOutlook);\n\n yahoo.addEventListener(\"click\", openYahooMail);\n\n open.addEventListener(\"click\", openDefault);\n\n copyMail.addEventListener(\"click\", copy);\n }\n // mailgo tel\n else if (type === MAILGO_TEL) {\n // the title of the modal (tel)\n titleTel.textContent = tel;\n\n if (mailgoConfigAttributeEnabled(\"detail\", \"msg\") && msg) {\n detailMsg.style.display = \"block\";\n msgValue.textContent = msg;\n } else {\n detailMsg.style.display = \"none\";\n }\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\", openDefault);\n\n copyTel.addEventListener(\"click\", copy);\n }\n\n // show the mailgo\n showMailgo(type);\n\n // add listener keyDown\n document.addEventListener(\"keydown\", mailgoKeydown);\n\n return true;\n}\n\n// actions\nconst openGmail = (event?: Event): void => {\n event.preventDefault();\n\n let urlString: string;\n let installation: MailgoInstallationType = activeMailgoType?.installation;\n\n if (installation === CLASSIC) {\n try {\n urlString = url.toString();\n } catch (e) {\n urlString = href;\n }\n } else if (installation === LESS_SPAM) {\n urlString = lessSpamHref;\n }\n\n // Gmail url\n let gmailUrl: string =\n \"https://mail.google.com/mail/?extsrc=mailto&url=\" +\n encodeURIComponent(urlString);\n\n // open the link\n window.open(gmailUrl, \"_blank\", \"noopener, noreferrer\");\n\n // hide the modal\n hideMailgo();\n};\n\nconst openOutlook = (event?: Event): void => {\n event.preventDefault();\n\n // Outlook starting url\n let startingOutlookUrl: string =\n \"https://outlook.live.com/owa/?path=/mail/action/compose&to=\";\n\n // let the user to decide to open Office365 Outlook instead of the classic outlook.live.com\n if (config?.office365) {\n startingOutlookUrl =\n \"https://outlook.office365.com/owa/?path=/mail/action/compose&to=\";\n }\n\n // Outlook url\n let outlookUrl: string = startingOutlookUrl + encodeURIComponent(mail);\n\n // the details if provided\n if (subject) {\n outlookUrl = outlookUrl.concat(\"&subject=\" + encodeURIComponent(subject));\n }\n\n if (bodyMail) {\n outlookUrl = outlookUrl.concat(\"&body=\" + encodeURIComponent(bodyMail));\n }\n\n // open the link\n window.open(outlookUrl, \"_blank\", \"noopener, noreferrer\");\n\n // hide the modal\n hideMailgo();\n};\n\nconst openYahooMail = (event?: Event): void => {\n event.preventDefault();\n\n // Yahoo url\n let yahooUrl: string = \"https://compose.mail.yahoo.com/?to=\" + mail;\n\n // the details if provided\n if (subject) {\n yahooUrl = yahooUrl.concat(\"&subject=\" + encodeURIComponent(subject));\n }\n if (bodyMail) {\n yahooUrl = yahooUrl.concat(\"&body=\" + encodeURIComponent(bodyMail));\n }\n\n // open the link\n window.open(yahooUrl, \"_blank\", \"noopener, noreferrer\");\n\n // hide the modal\n hideMailgo();\n};\n\nconst openTelegram = (event?: Event): void => {\n event.preventDefault();\n\n // check if telegramUsername exists\n if (telegramUsername) {\n // Telegram url\n let tgUrl: string = \"https://t.me/\" + encodeURIComponent(telegramUsername);\n\n // open the url\n window.open(tgUrl, \"_blank\", \"noopener, noreferrer\");\n\n // hide the modal\n hideMailgo();\n }\n};\n\nconst openSkype = (event?: Event): void => {\n event.preventDefault();\n\n let skype: string = skypeUsername || tel;\n\n // Telegram url\n let skypeUrl: string = \"skype:\" + encodeURIComponent(skype);\n\n // open the url\n window.open(skypeUrl, \"_blank\", \"noopener, noreferrer\");\n\n // hide the modal\n hideMailgo();\n};\n\nconst openWhatsApp = (event?: Event): void => {\n event.preventDefault();\n\n // WhatsApp API doesn't work with non number digits and leading 0s: https://faq.whatsapp.com/general/chats/how-to-use-click-to-chat/\n let whatappTel = tel.replace(notNumber, \"\").replace(leadingZeros, \"\");\n\n // WhatsApp url\n let waUrl: string = \"https://wa.me/\" + encodeURIComponent(whatappTel);\n\n // the details if provided\n if (msg) {\n waUrl = waUrl.concat(\"?text=\" + encodeURIComponent(msg));\n }\n\n // open the url\n window.open(waUrl, \"_blank\", \"noopener, noreferrer\");\n\n // hide the modal\n hideMailgo();\n};\n\nconst openDefault = (event?: Event): void => {\n event.preventDefault();\n\n let installation: MailgoInstallationType = activeMailgoType?.installation;\n\n // if the installation is classic the browser can follow the default behaviour\n if (installation === CLASSIC) {\n window.location.href = href;\n } else if (installation === LESS_SPAM) {\n // if the installation is less-spam use the built less-spam href\n window.location.href = lessSpamHref;\n }\n\n hideMailgo();\n};\n\nconst copy = (event?: Event): void => {\n event.preventDefault();\n\n // the correct copyButton (mail or tel)\n if (mailgoIsShowing()) {\n let activeCopy: HTMLElement;\n\n let type: MailgoModalType = activeMailgoType?.type;\n\n if (type === MAILGO_MAIL) {\n // in case it is showing mail modal copy email address\n copyToClipboard(mail);\n activeCopy = copyMail;\n } else {\n // in case it is showing tel modal copy phone number\n copyToClipboard(tel);\n activeCopy = copyTel;\n }\n\n activeCopy.textContent = strings.copied || defaultStrings.copied;\n setTimeout(() => {\n activeCopy.textContent = strings.copy || defaultStrings.copy;\n // hide after the timeout\n hideMailgo();\n }, 999);\n }\n};\n\n// function to find if a link is a mailto, tel, callto or sms\nconst validateUrl = (url: string, type: string = MAILTO) => {\n let regexValidate = new RegExp(\"^\" + type + \"((.)+)\", \"gi\");\n return regexValidate.test(url);\n};\n\n// function that returns if an element is a mailgo\nfunction getMailgoTypeByElement(element: HTMLElement): MailgoType | null {\n let elementHref: string = (element as HTMLLinkElement).getAttribute(\"href\");\n\n // return null if there is no-mailgo in class\n if (element.classList?.contains(NO_MAILGO)) {\n return null;\n }\n\n // the case of classic type of mailgo, like a href=mailto:... or a href=tel:... and the class=mailgo with a useful href\n if (elementHref || element.classList?.contains(\"mailgo\")) {\n if (validateUrl(elementHref, MAILTO) || validateUrl(elementHref, MAILGO)) {\n // a mailto: or mailgo:\n return {\n type: MAILGO_MAIL,\n installation: CLASSIC,\n };\n } else if (\n validateUrl(elementHref, TEL) ||\n validateUrl(elementHref, CALLTO)\n ) {\n // a tel: or callto:\n return {\n type: MAILGO_TEL,\n installation: CLASSIC,\n };\n } else if (validateUrl(elementHref, SMS)) {\n // a sms:\n return {\n type: MAILGO_SMS,\n installation: CLASSIC,\n };\n }\n }\n\n if (elementHref === \"#mailgo\" || element.classList?.contains(\"mailgo\")) {\n // less-spam installation of mailgo, check to the attributes\n if (\n element.hasAttribute(\"data-address\") &&\n element.hasAttribute(\"data-domain\")\n ) {\n // less-spam mailto with data-address and data-domain\n return {\n type: MAILGO_MAIL,\n installation: LESS_SPAM,\n };\n } else if (element.hasAttribute(\"data-tel\")) {\n // less-spam tel with data-tel\n return {\n type: MAILGO_TEL,\n installation: LESS_SPAM,\n };\n } else if (element.hasAttribute(\"data-msg\")) {\n // less-spam sms with data-msd\n return {\n type: MAILGO_SMS,\n installation: LESS_SPAM,\n };\n }\n }\n\n return null;\n}\n\n/**\n * mailgoKeydown\n * function to manage the keydown event when the modal is showing, return a boolean that represents if a useful key has been pressed\n */\nconst mailgoKeydown = (keyboardEvent: KeyboardEvent): boolean => {\n // if mailgo is showing\n if (mailgoIsShowing()) {\n let type: MailgoModalType = activeMailgoType?.type;\n\n if (type === MAILGO_MAIL) {\n switch (keyboardEvent.keyCode) {\n case 27:\n // Escape\n hideMailgo();\n return true;\n case 71:\n // g -> open GMail\n openGmail();\n return true;\n case 79:\n // o -> open Outlook\n openOutlook();\n return true;\n case 89:\n // y -> open Yahoo Mail\n openYahooMail();\n return true;\n case 32:\n case 13:\n // spacebar or enter -> open default\n openDefault();\n return true;\n case 67:\n // c -> copy\n copy();\n return true;\n default:\n return false;\n }\n } else if (type === MAILGO_TEL) {\n switch (keyboardEvent.keyCode) {\n case 27:\n // Escape\n hideMailgo();\n return true;\n case 84:\n // t -> open Telegram\n openTelegram();\n return true;\n case 87:\n // w -> open WhatsApp\n openWhatsApp();\n return true;\n case 83:\n // s -> open Skype\n openSkype();\n return true;\n case 32:\n case 13:\n // spacebar or enter -> open default\n openDefault();\n return true;\n case 67:\n // c -> copy\n copy();\n return true;\n default:\n return false;\n }\n }\n }\n return false;\n};\n\n// show the modal\nconst showMailgo = (type: MailgoModalType): 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(MAILGO_MAIL, \"none\");\n setModalDisplay(MAILGO_TEL, \"none\");\n\n // remove listener keyDown\n document.removeEventListener(\"keydown\", mailgoKeydown);\n};\n\n// is the mailgo modal hidden?\nconst mailgoIsShowing = (): boolean => {\n return (\n (mailtoEnabled && getModalDisplay(MAILGO_MAIL) === \"flex\") ||\n ((telEnabled || smsEnabled) && getModalDisplay(MAILGO_TEL) === \"flex\")\n );\n};\n\nconst byElement = (): HTMLLinkElement => {\n // by element in the footer\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// get the correct HTMLElement from a type\nconst getModalHTMLElement = (type: MailgoModalType = MAILGO_MAIL) => {\n if (type === MAILGO_TEL) {\n return modalTel;\n } else {\n return modalMailto;\n }\n};\n\n// get display value\nconst getModalDisplay = (ref: MailgoModalType = MAILGO_MAIL): string =>\n getModalHTMLElement(ref).style.display;\n\n// set display value\nconst setModalDisplay = (\n ref: MailgoModalType = MAILGO_MAIL,\n value: string\n): void => {\n let modal = getModalHTMLElement(ref);\n\n if (modal) {\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\n// enable dark mode\nconst enableDarkMode = () => {\n // get the type from current mailgo type\n let type: MailgoModalType = activeMailgoType?.type;\n if (type) {\n getModalHTMLElement(type).classList.add(\"m-dark\");\n }\n};\n\n// disable dark mode\nconst disableDarkMode = () => {\n // get the type from current mailgo type\n let type: MailgoModalType = activeMailgoType?.type;\n if (type) {\n getModalHTMLElement(type).classList.remove(\"m-dark\");\n }\n};\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// function to recreate a mailto: or tel: href from less-spam\nconst buildLessSpamHref = (type: string, parameters: string[]): string => {\n lessSpamHref = type;\n if (parameters && parameters.length > 0) {\n let joinedParams = parameters.join(\"&\");\n lessSpamHref = lessSpamHref.concat(\"?\" + joinedParams);\n }\n return lessSpamHref;\n};\n\n// function to check an attribute is enabled or not, by default considering it enabled\nconst mailgoConfigAttributeEnabled = (\n type: \"action\" | \"detail\",\n attribute: MailgoAction | MailgoDetail\n): boolean => {\n // by default all the actions and attribute are enabled\n if (!config) {\n return true;\n }\n\n // if the attribute type is action consider the actions config attribute\n if (type === \"action\") {\n if (config && !config?.actions) {\n return true;\n }\n\n if (\n config &&\n config.actions &&\n config?.actions[attribute as MailgoAction] === false\n ) {\n return false;\n }\n } else if (type === \"detail\") {\n // else consider the details attribute\n\n if (config && !config?.details) {\n return true;\n }\n\n if (\n config &&\n config.details &&\n config?.details[attribute as MailgoDetail] === false\n ) {\n return false;\n }\n }\n\n return true;\n};\n\n// manage the language of mailgo\nconst mailgoSetLanguage = (): string => {\n let languageType = \"default lang\";\n\n // if a language is defined in configuration use it\n if (\n config?.lang &&\n (languages as MailgoLanguages).indexOf(config.lang) !== -1\n ) {\n lang = config.lang;\n languageType = \"config lang\";\n } else {\n // else if is defined use it!\n // keep the lang from html\n let htmlLang: string = document.documentElement.lang;\n\n // find the correct language using the lang attribute, not just a === because there a are cases like fr-FR or fr_FR in html lang attribute\n (languages as MailgoLanguages).forEach((language: any) => {\n if (new RegExp(\"^\" + language, \"gi\").test(htmlLang)) {\n lang = language;\n languageType = \"html lang\";\n }\n });\n }\n\n // strings\n strings = (translations as MailgoTranslations)[lang];\n\n return languageType;\n};\n\nconst mailgoStyle = (): void => {\n if (!document.getElementById(\"mailgo-style\")) {\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\n// mailgo\nfunction mailgo(mailgoConfig?: MailgoConfig): boolean {\n try {\n // polyfill mailgo\n // mailgoPolyfill();\n\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 (typeof window !== \"undefined\") {\n // if is set in config use it (load the mailgo CSS)\n if (typeof config?.loadCSS !== \"undefined\") {\n loadCSSConfig = config.loadCSS;\n }\n\n // if is set in config use it (enable mailto)\n if (typeof config?.mailto !== \"undefined\") {\n mailtoEnabled = config.mailto;\n }\n\n // if is set in config use it (enable tel)\n if (typeof config?.tel !== \"undefined\") {\n telEnabled = config.tel;\n }\n\n // if is set in config use it (enable sms)\n if (typeof config?.sms !== \"undefined\") {\n smsEnabled = config.sms;\n }\n\n // if load css enabled load it!\n if (loadCSSConfig) {\n // add the style for mailgo\n mailgoStyle();\n }\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 mailgoInit,\n config.listenerOptions\n );\n } else {\n // no listener options\n document.addEventListener(config.initEvent, mailgoInit);\n }\n } else {\n mailgoInit();\n }\n\n return true;\n }\n } catch (error) {\n console.log(error);\n }\n return false;\n}\n\n// define the methods also for window element\nif (typeof window !== \"undefined\") {\n (window as any).getMailgoTypeByElement = getMailgoTypeByElement;\n (window as any).mailgoClickListener = mailgoClickListener;\n (window as any).mailgoCheckRender = mailgoClickListener; // for compatibility with old version of mailgo\n (window as any).mailgoPreRender = mailgoPreRender;\n (window as any).mailgoDirectRender = mailgoDirectRender;\n (window as any).mailgoRender = mailgoRender;\n (window as any).mailgo = mailgo;\n}\n\nexport {\n getMailgoTypeByElement,\n mailgoClickListener,\n mailgoPreRender,\n mailgoDirectRender,\n mailgoRender,\n};\n\nexport default mailgo;\n","export const userAgent = () => {\n if (\n /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(\n navigator.userAgent\n )\n ) {\n return \"mobile\";\n }\n return \"desktop\";\n};\n","// webpack > dist/mailgo.nocss.min.js\n\nimport mailgo from \"../src/mailgo\";\n\n// call init mailgo attached to the event DOMContentLoaded\nconst mailgoConfig = {\n initEvent: \"DOMContentLoaded\",\n loadCSS: false,\n};\n\nmailgo(mailgoConfig);\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tif(__webpack_module_cache__[moduleId]) {\n\t\treturn __webpack_module_cache__[moduleId].exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// module exports must be returned from runtime so entry inlining is disabled\n// startup\n// Load entry module and return exports\nreturn __webpack_require__(331);\n","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack://mailgo/../src/mailgo.scss","webpack://mailgo/../node_modules/css-loader/dist/runtime/api.js","webpack://mailgo/../src/mailgo.scss?81f2","webpack://mailgo/../src/constants.ts","webpack://mailgo/../src/utils.ts","webpack://mailgo/../src/mailgo.ts","webpack://mailgo/../src/mobile-detect.ts","webpack://mailgo/./mailgo.dist.nocss.ts","webpack://mailgo/webpack/bootstrap","webpack://mailgo/webpack/runtime/make namespace object","webpack://mailgo/webpack/startup"],"names":["___CSS_LOADER_EXPORT___","___CSS_LOADER_API_IMPORT___","i","push","module","id","exports","cssWithMappingToString","list","toString","this","map","item","content","concat","join","modules","mediaQuery","dedupe","alreadyImportedModules","length","_i","result","MAILTO","MAILGO","TEL","CALLTO","SMS","MAILGO_MAIL","MAILGO_TEL","MAILGO_SMS","CLASSIC","LESS_SPAM","spanHTMLTag","aHTMLTag","pHTMLTag","notNumber","RegExp","leadingZeros","validateEmail","email","test","validateEmails","arr","every","copyToClipboard","str","el","document","createElement","value","setAttribute","style","position","left","body","appendChild","selected","getSelection","rangeCount","getRangeAt","select","execCommand","removeChild","removeAllRanges","addRange","setFocusLoop","ref","modal","querySelector","addEventListener","leaveLastLink","leaveFirstLink","e","code","shiftKey","preventDefault","target","closest","focus","strings","config","activeMailgoType","modalMailto","modalTel","url","href","lessSpamHref","mail","cc","bcc","subject","bodyMail","tel","msg","telegramUsername","skypeUsername","title","titleTel","detailCc","detailBcc","detailSubject","detailBody","detailMsg","ccValue","bccValue","subjectValue","bodyValue","msgValue","activatedLink","gmail","outlook","yahoo","open","telegram","wa","skype","call","copyMail","copyTel","mailgoCSS","require","lang","defaultStrings","translations","isMobile","mailtoEnabled","telEnabled","smsEnabled","desktopEnabled","mobileEnabled","validateEmailConfig","validateTelConfig","showFooterConfig","loadCSSConfig","mailgoInit","navigator","userAgent","desktop","mobile","mailgoSetLanguage","mailgoExists","getElementById","display","classList","add","dark","enableDarkMode","disableDarkMode","modalBackground","className","modalContent","details","ccSpan","createTextNode","cc_","bccSpan","bcc_","subjectSpan","subject_","bodySpan","body_","open_in_","gmailSpan","mailgoConfigAttributeEnabled","outlookSpan","yahooSpan","openSpan","_default","copy","showFooter","byElement","hideMailgo","mailgoTelExists","detailsTel","msgSpan","telegramSpan","waSpan","whatsapp","skypeSpan","callSpan","_as_default","mailgoClickListener","event","contains","mailgoIsShowing","path","composedPath","forEach","element","HTMLDocument","Window","localMailgoType","getMailgoTypeByElement","activeMailgoModalType","type","mailgoPreRender","mailgoElementOrUrl","mailgoElement","installation","getAttribute","validateUrl","decodeURIComponent","split","trim","urlParams","URL","searchParams","get","error","console","log","encodeURIComponent","parameters","buildLessSpamHref","validateTel","hasAttribute","mailgoRender","textContent","openGmail","openOutlook","openYahooMail","openDefault","openWhatsApp","openTelegram","openSkype","showMailgo","mailgoKeydown","urlString","gmailUrl","window","startingOutlookUrl","office365","outlookUrl","yahooUrl","tgUrl","skypeUrl","whatappTel","replace","waUrl","location","activeCopy","copied","setTimeout","regexValidate","elementHref","keyboardEvent","keyCode","setModalDisplay","removeEventListener","getModalDisplay","by","rel","getModalHTMLElement","activeElement","remove","tagName","parentElement","joinedParams","attribute","actions","languageType","languages","htmlLang","documentElement","language","mailgo","mailgoConfig","loadCSS","mailto","sms","mailgoCSSElement","head","mailgoStyle","initEvent","listenerOptions","mailgoCheckRender","mailgoDirectRender","directUrl","__webpack_module_cache__","__webpack_require__","moduleId","__webpack_modules__","r","Symbol","toStringTag","Object","defineProperty","__webpack_exports__"],"mappings":"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","file":"mailgo.nocss.min.js","sourcesContent":["// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../node_modules/css-loader/dist/runtime/api.js\");\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(function(i){return i[1]});\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:.8}.m-modal .m-modal-content{position:relative;z-index:10002;box-sizing:content-box;text-align:center;overflow:hidden;min-width:200px;max-width:240px;background-color:#fff;opacity:.95;border-radius:20px;box-shadow:0 3px 20px rgba(32,35,42,.5);border:3px solid #333;color:#4a4a4a;display:flex;flex-direction:column;overflow:auto;padding:24px;transition:.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:pre-line;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{white-space:pre-line;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(192,55,42,.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(9,103,170,.08);color:#0967aa}.m-modal .m-modal-content a.m-yahoo{color:#4a00a0}.m-modal .m-modal-content a.m-yahoo:hover,.m-modal .m-modal-content a.m-yahoo:focus,.m-modal .m-modal-content a.m-yahoo:active{background-color:rgba(74,0,160,.08);color:#4a00a0}.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(8,109,160,.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(6,116,102,.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(7,109,146,.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,.08);color:#4a4a4a}.m-modal .m-modal-content a.m-by{font-size:12px;margin-top:.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,.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(224,125,115,.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(76,156,215,.08);color:#4c9cd7}.m-modal.m-dark .m-modal-content a.m-yahoo{color:#ac88d3}.m-modal.m-dark .m-modal-content a.m-yahoo:hover,.m-modal.m-dark .m-modal-content a.m-yahoo:focus,.m-modal.m-dark .m-modal-content a.m-yahoo:active{background-color:rgba(172,136,211,.08);color:#ac88d3}.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(76,171,219,.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(76,210,192,.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(76,199,244,.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// 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 (cssWithMappingToString) {\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);\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 var result = require(\"!!../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].use[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 ","import { MailgoModalType, MailgoInstallationType } from \"mailgo\";\n\n// links\nexport const MAILTO: string = \"mailto:\";\nexport const MAILGO: string = \"mailgo:\";\nexport const TEL: string = \"tel:\";\nexport const CALLTO: string = \"callto:\";\nexport const SMS: string = \"sms:\";\n\n// deep linking\nexport const outlookDeepLink: string = \"ms-outlook://\";\n\n// no mailgo class\nexport const NO_MAILGO: string = \"no-mailgo\";\n\n// responsive settings\nexport const DESKTOP: string = \"desktop\";\nexport const MOBILE: string = \"mobile\";\n\n// mailgo modal types\nexport const MAILGO_MAIL: MailgoModalType = \"mailgo\";\nexport const MAILGO_TEL: MailgoModalType = \"mailgo-tel\";\nexport const MAILGO_SMS: MailgoModalType = \"mailgo-sms\";\n\n// mailgo installation types\nexport const CLASSIC: MailgoInstallationType = \"classic\";\nexport const LESS_SPAM: MailgoInstallationType = \"less-spam\";\n\n// useful html tags\nexport const spanHTMLTag: string = \"span\";\nexport const aHTMLTag: string = \"a\";\nexport const pHTMLTag: string = \"p\";\n\n// default lang\nexport const defaultLang: string = \"en\";\n\n// useful regexp\nexport const notNumber: RegExp = new RegExp(\"[^0-9/]\", \"gi\");\nexport const leadingZeros: RegExp = new RegExp(\"^0+\", \"gi\");\n","// validate a single email with regex\nexport const 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\nexport const validateEmails = (arr: string[]): boolean =>\n arr.every(validateEmail);\n\n// validate a single tel with regex\nexport const validateTel = (tel: string): boolean =>\n /^[+]{0,1}[\\s0-9]*[(]{0,1}[0-9]{1,4}[)]{0,1}[-\\s\\./0-9]*[p]{0,1}[\\s0-9]*$/.test(\n tel\n );\n\n// copy of a string\nexport const copyToClipboard = (str: string): boolean => {\n let el: HTMLTextAreaElement = document.createElement(\n \"textarea\"\n ) as HTMLTextAreaElement;\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\n// set focus loop within modal\nexport const 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\nexport const 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\nexport const 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","import {\n MailgoConfig,\n MailgoTranslations,\n MailgoTranslation,\n MailgoAction,\n MailgoLanguages,\n MailgoType,\n MailgoDetail,\n MailgoInstallationType,\n MailgoModalType,\n} from \"mailgo\";\n\n// polyfill\n// import { mailgoPolyfill } from \"./polyfill\";\n\n// constants\nimport {\n MAILTO,\n MAILGO,\n TEL,\n CALLTO,\n SMS,\n MAILGO_MAIL,\n MAILGO_TEL,\n MAILGO_SMS,\n CLASSIC,\n LESS_SPAM,\n NO_MAILGO,\n MOBILE,\n spanHTMLTag,\n aHTMLTag,\n pHTMLTag,\n defaultLang,\n notNumber,\n leadingZeros,\n} from \"./constants\";\n\n// utils\nimport {\n validateEmails,\n validateTel,\n copyToClipboard,\n setFocusLoop,\n} from \"./utils\";\n\n// i18n for mailgo\nimport languages from \"../i18n/languages.json\";\nimport translations from \"../i18n/translations.json\";\n\n// mobile detect\nimport { userAgent } from \"./mobile-detect\";\n\n// mailgo scss, with toString (https://github.com/webpack-contrib/css-loader#tostring)\nconst mailgoCSS: string = require(\"./mailgo.scss\").toString();\n\n// default language\nlet lang: string = defaultLang;\n\n// default strings\nconst defaultStrings: MailgoTranslation = (translations as MailgoTranslations)[\n defaultLang\n];\n\n// translation strings\nlet strings: MailgoTranslation;\n\n// global mailgo config object\nlet config: MailgoConfig;\n\n// config to check if the client is mobile or desktop\nlet isMobile: boolean = false;\n\n// default config attributes\nlet mailtoEnabled: boolean = true;\nlet telEnabled: boolean = true;\nlet smsEnabled: boolean = false;\nlet desktopEnabled: boolean = true;\nlet mobileEnabled: boolean = true;\nlet validateEmailConfig: boolean = true;\nlet validateTelConfig: boolean = true;\nlet showFooterConfig: boolean = true;\nlet loadCSSConfig: boolean = true;\n\n// activeMailgoType\nlet activeMailgoType: MailgoType;\n\n// modals global object\nlet modalMailto: HTMLElement, modalTel: HTMLElement;\n\n// mailgo general variables\nlet url: URL, href: string, lessSpamHref: string;\n\n// mailgo mail variables\nlet mail: string, cc: string, bcc: string, subject: string, bodyMail: string;\n\n// mailgo tel variables\nlet tel: string, msg: string, telegramUsername: string, 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 detailMsg: HTMLElement,\n ccValue: HTMLElement,\n bccValue: HTMLElement,\n subjectValue: HTMLElement,\n bodyValue: HTMLElement,\n msgValue: HTMLElement,\n activatedLink: HTMLElement;\n\n// mailgo buttons (actions)\nlet gmail: HTMLLinkElement,\n outlook: HTMLLinkElement,\n yahoo: 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 // set the boolean for mobile/desktop\n isMobile = userAgent() === MOBILE;\n\n // responsive settings\n {\n if (typeof config?.desktop !== \"undefined\") {\n desktopEnabled = config.desktop;\n // if it is a desktop and desktop is not enabled no init mailgo\n if (!isMobile && !desktopEnabled) {\n return;\n }\n }\n if (typeof config?.mobile !== \"undefined\") {\n mobileEnabled = config.mobile;\n // if it is a mobile and mobile is not enabled no init mailgo\n if (isMobile && !mobileEnabled) {\n return;\n }\n }\n }\n\n // set the mailgo language\n mailgoSetLanguage();\n\n // mailgo, if mailgo not already exists\n let mailgoExists = !!document.getElementById(MAILGO_MAIL);\n\n // if mailgo is enabled for mailto and it not exists in DOM\n if (mailtoEnabled && !mailgoExists) {\n // modal\n modalMailto = createElement() as HTMLElement;\n modalMailto.style.display = \"none\";\n modalMailto.id = MAILGO_MAIL;\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();\n } else {\n disableDarkMode();\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 = \"#mailgo-gmail\";\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 if (mailgoConfigAttributeEnabled(\"action\", \"gmail\")) {\n modalContent.appendChild(gmail);\n }\n\n // Outlook\n outlook = createElement(aHTMLTag) as HTMLLinkElement;\n outlook.id = \"m-outlook\";\n outlook.href = \"#mailgo-outlook\";\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 if (mailgoConfigAttributeEnabled(\"action\", \"outlook\")) {\n modalContent.appendChild(outlook);\n }\n\n // Outlook\n yahoo = createElement(aHTMLTag) as HTMLLinkElement;\n yahoo.id = \"m-yahoo\";\n yahoo.href = \"#mailgo-yahoo\";\n yahoo.classList.add(\"m-open\");\n yahoo.classList.add(\"m-yahoo\");\n yahoo.appendChild(\n createTextNode(strings.open_in_ || defaultStrings.open_in_)\n );\n let yahooSpan: HTMLElement = createElement(spanHTMLTag);\n yahooSpan.className = \"w-500\";\n yahooSpan.appendChild(\n createTextNode(strings.yahoo || defaultStrings.yahoo)\n );\n yahoo.appendChild(yahooSpan);\n\n if (mailgoConfigAttributeEnabled(\"action\", \"yahoo\")) {\n modalContent.appendChild(yahoo);\n }\n\n // open default\n open = createElement(aHTMLTag) as HTMLLinkElement;\n open.id = \"m-open\";\n open.href = \"#mailgo-open\";\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 = \"#mailgo-copy\";\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 (typeof config?.showFooter !== \"undefined\") {\n showFooterConfig = config.showFooter;\n }\n\n if (showFooterConfig) {\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 mailgo is enabled for tel/callto and it not exists in DOM\n if (telEnabled && !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();\n } else {\n disableDarkMode();\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 // details\n let detailsTel: HTMLElement = createElement();\n detailsTel.id = \"m-tel-details\";\n detailsTel.className = \"m-details\";\n\n detailMsg = createElement(pHTMLTag);\n detailMsg.id = \"m-msg\";\n let msgSpan: HTMLElement = createElement(spanHTMLTag);\n msgSpan.className = \"w-500\";\n msgSpan.appendChild(createTextNode(strings.body_ || defaultStrings.body_));\n msgValue = createElement(spanHTMLTag);\n msgValue.id = \"m-msg-value\";\n detailMsg.appendChild(msgSpan);\n detailMsg.appendChild(msgValue);\n detailsTel.appendChild(detailMsg);\n\n modalContent.appendChild(detailsTel);\n\n // Telegram\n telegram = createElement(aHTMLTag) as HTMLLinkElement;\n telegram.id = \"m-tg\";\n telegram.href = \"#mailgo-telegram\";\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 if (mailgoConfigAttributeEnabled(\"action\", \"telegram\")) {\n modalContent.appendChild(telegram);\n }\n\n // WhatsApp\n wa = createElement(aHTMLTag) as HTMLLinkElement;\n wa.id = \"m-wa\";\n wa.href = \"#mailgo-whatsapp\";\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 if (mailgoConfigAttributeEnabled(\"action\", \"whatsapp\")) {\n modalContent.appendChild(wa);\n }\n\n // Skype\n skype = createElement(aHTMLTag) as HTMLLinkElement;\n skype.id = \"m-skype\";\n skype.href = \"#mailgo-skype\";\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 if (mailgoConfigAttributeEnabled(\"action\", \"skype\")) {\n modalContent.appendChild(skype);\n }\n\n // call default\n call = createElement(aHTMLTag) as HTMLLinkElement;\n call.id = \"m-call\";\n call.href = \"#mailgo-open\";\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 = \"#mailgo-copy\";\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 (typeof config?.showFooter !== \"undefined\") {\n showFooterConfig = config.showFooter;\n }\n\n if (showFooterConfig) {\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\", mailgoClickListener);\n};\n\n/**\n * mailgoClickListener\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 * or\n * document.querySelectorAll(\n * 'a[href^=\"sms:\" i]:not(.no-mailgo), a[href=\"#mailgo\"], a.mailgo'\n * );\n */\nfunction mailgoClickListener(event: Event): boolean {\n // check if the mailgo HTML exists in the body\n if (\n !document.body.contains(modalMailto) &&\n !document.body.contains(modalTel)\n ) {\n return false;\n }\n\n // if a mailgo is already showing do nothing\n if (mailgoIsShowing()) {\n return false;\n }\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\n // go here only if one of the mailgo modals are enabled\n if (mailtoEnabled || telEnabled || smsEnabled) {\n let localMailgoType = getMailgoTypeByElement(element);\n\n // go on if the localMailgoType is not null\n if (localMailgoType) {\n // set the active mailgo type\n activeMailgoType = localMailgoType;\n\n let activeMailgoModalType = activeMailgoType?.type;\n\n if (activeMailgoModalType) {\n // check if the setting is enabled and if so go with pre-render\n if (\n (mailtoEnabled && activeMailgoModalType === MAILGO_MAIL) ||\n (telEnabled && activeMailgoModalType === MAILGO_TEL) ||\n (smsEnabled && activeMailgoModalType === MAILGO_SMS)\n ) {\n // stop the normal execution of the element click\n event.preventDefault();\n\n // render mailgo\n mailgoPreRender(element as HTMLLinkElement);\n\n return true;\n }\n }\n }\n }\n });\n }\n\n return false;\n}\n\n/**\n * mailgoPreRender\n * function to pre-render a mailgo, it helps populating elements needed by modal\n */\nfunction mailgoPreRender(\n mailgoElementOrUrl: HTMLLinkElement | string\n): boolean {\n let mailgoElement: HTMLLinkElement;\n\n // get the type and installation from current mailgo type\n let type: MailgoModalType = activeMailgoType?.type;\n let installation: MailgoInstallationType = activeMailgoType?.installation;\n\n // if type is not defined return\n if (!type) return false;\n\n if (typeof mailgoElementOrUrl === \"string\") {\n // if the parameter is a string it is the url\n href = mailgoElementOrUrl as string;\n } else {\n // if the paramenter is an HTMLLinkElement get the href attribute and the element\n href = mailgoElementOrUrl.getAttribute(\"href\") as string;\n mailgoElement = mailgoElementOrUrl as HTMLLinkElement;\n }\n\n // mailgo mail\n if (type === MAILGO_MAIL) {\n // if the installation is classic\n if (installation === CLASSIC) {\n if (validateUrl(href, MAILTO)) {\n mail = decodeURIComponent(href.split(\"?\")[0].split(MAILTO)[1].trim());\n } else if (validateUrl(href, MAILGO)) {\n mail = decodeURIComponent(href.split(\"?\")[0].split(MAILGO)[1].trim());\n }\n\n try {\n url = new URL(href);\n\n let urlParams: URLSearchParams = url.searchParams;\n // optional parameters for the email\n cc = urlParams.get(\"cc\");\n bcc = urlParams.get(\"bcc\");\n subject = urlParams.get(\"subject\");\n bodyMail = urlParams.get(\"body\");\n } catch (error) {\n console.log(error);\n }\n } else if (installation === LESS_SPAM) {\n // if the installation is less-spam\n // mail = data-address + @ + data-domain\n mail =\n mailgoElement.getAttribute(\"data-address\") &&\n mailgoElement.getAttribute(\"data-domain\")\n ? mailgoElement.getAttribute(\"data-address\") +\n \"@\" +\n mailgoElement.getAttribute(\"data-domain\")\n : null;\n\n try {\n url = new URL(MAILTO + encodeURIComponent(mail));\n } catch (error) {\n console.log(error);\n }\n\n let parameters: string[] = [];\n\n // cc = data-cc-address + @ + data-cc-domain\n cc = mailgoElement.getAttribute(\"data-cc-address\")\n ? mailgoElement.getAttribute(\"data-cc-address\") +\n \"@\" +\n mailgoElement.getAttribute(\"data-cc-domain\")\n : null;\n\n // if cc is defined add it to parameters\n if (cc) parameters.push(\"cc=\" + cc);\n\n // bcc = data-bcc-address + @ + data-bcc-domain\n bcc = mailgoElement.getAttribute(\"data-bcc-address\")\n ? mailgoElement.getAttribute(\"data-bcc-address\") +\n \"@\" +\n mailgoElement.getAttribute(\"data-bcc-domain\")\n : null;\n\n // if bcc is defined add it to parameters\n if (bcc) parameters.push(\"bcc=\" + bcc);\n\n // subject = data-subject\n subject = mailgoElement.getAttribute(\"data-subject\");\n\n // if subject is defined add it to parameters\n if (subject) parameters.push(\"subject=\" + subject);\n\n // body = data-body\n bodyMail = mailgoElement.getAttribute(\"data-body\");\n\n // if body is defined add it to parameters\n if (bodyMail) parameters.push(\"body=\" + bodyMail);\n\n // set the lessSpamHref\n lessSpamHref = buildLessSpamHref(\n MAILTO + encodeURIComponent(mail),\n parameters\n );\n }\n\n // if is in config use it\n if (typeof config?.validateEmail !== \"undefined\") {\n validateEmailConfig = config.validateEmail;\n }\n\n if (validateEmailConfig) {\n // validate the email address\n if (!validateEmails(mail.split(\",\"))) {\n return false;\n }\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 // mailgo tel\n else if (type === MAILGO_TEL) {\n if (installation === CLASSIC) {\n if (validateUrl(href, TEL)) {\n tel = decodeURIComponent(href.split(\"?\")[0].split(TEL)[1].trim());\n } else if (validateUrl(href, CALLTO)) {\n tel = decodeURIComponent(href.split(\"?\")[0].split(CALLTO)[1].trim());\n } else if (validateUrl(href, SMS)) {\n tel = decodeURIComponent(href.split(\"?\")[0].split(SMS)[1].trim());\n }\n\n try {\n url = new URL(href);\n let urlParams: URLSearchParams = url.searchParams;\n\n // optional parameters for the phone number\n msg = urlParams.get(\"body\");\n } catch (error) {\n console.log(error);\n }\n } else if (installation == LESS_SPAM) {\n tel = mailgoElement.getAttribute(\"data-tel\");\n msg = mailgoElement.getAttribute(\"data-msg\");\n\n try {\n url = new URL(TEL + encodeURIComponent(tel));\n } catch (error) {\n console.log(error);\n }\n\n let parameters: string[] = [];\n\n // if msg is defined add it to parameters\n if (msg) parameters.push(\"body=\" + msg);\n\n // set the lessSpamHref\n lessSpamHref = buildLessSpamHref(\n TEL + encodeURIComponent(tel),\n parameters\n );\n }\n\n // if is in config use it\n if (typeof config?.validateTel !== \"undefined\") {\n validateTelConfig = config.validateTel;\n }\n\n // validate the phone number\n if (validateTelConfig) {\n if (!validateTel(tel)) return;\n }\n\n // Telegram username\n if (mailgoElement && mailgoElement.hasAttribute(\"data-telegram\")) {\n telegramUsername = mailgoElement.getAttribute(\"data-telegram\");\n } else {\n telegramUsername = null;\n }\n\n // Telegram username\n if (mailgoElement && mailgoElement.hasAttribute(\"data-skype\")) {\n skypeUsername = mailgoElement.getAttribute(\"data-skype\");\n } else {\n skypeUsername = null;\n }\n }\n\n // if dark is in config or contained in the element\n if (config?.dark || mailgoElement.classList.contains(\"dark\")) {\n enableDarkMode();\n } else {\n disableDarkMode();\n }\n\n // render mailgo\n mailgoRender();\n\n return true;\n}\n\n/**\n * mailgoDirectRender\n * function to render a mailgo directly from a URL\n */\nfunction mailgoDirectRender(directUrl: string): boolean {\n // start mailgo\n mailgo();\n\n if (validateUrl(directUrl, MAILTO) || validateUrl(directUrl, MAILGO)) {\n activeMailgoType = {\n type: MAILGO_MAIL,\n installation: CLASSIC,\n };\n mailgoPreRender(directUrl);\n return true;\n } else if (\n validateUrl(directUrl, TEL) ||\n validateUrl(directUrl, CALLTO) ||\n validateUrl(directUrl, SMS)\n ) {\n activeMailgoType = {\n type: MAILGO_TEL,\n installation: CLASSIC,\n };\n mailgoPreRender(directUrl);\n return true;\n }\n return false;\n}\n\n/**\n * mailgoRender\n * function to render a mailgo (mail or tel)\n */\nfunction mailgoRender(): boolean {\n // get the type from current mailgo type\n let type: MailgoModalType = activeMailgoType?.type;\n\n // if type is not defined return\n if (!type) return false;\n\n // mailgo mail\n if (type === MAILGO_MAIL) {\n // the title of the modal (email address)\n title.textContent = mail.split(\",\").join(\"\\n\");\n\n // add the details if provided\n if (mailgoConfigAttributeEnabled(\"detail\", \"cc\") && cc) {\n detailCc.style.display = \"block\";\n ccValue.textContent = cc.split(\",\").join(\"\\n\");\n } else {\n detailCc.style.display = \"none\";\n }\n\n if (mailgoConfigAttributeEnabled(\"detail\", \"bcc\") && bcc) {\n detailBcc.style.display = \"block\";\n bccValue.textContent = bcc.split(\",\").join(\"\\n\");\n } else {\n detailBcc.style.display = \"none\";\n }\n\n if (mailgoConfigAttributeEnabled(\"detail\", \"subject\") && subject) {\n detailSubject.style.display = \"block\";\n subjectValue.textContent = subject;\n } else {\n detailSubject.style.display = \"none\";\n }\n\n if (mailgoConfigAttributeEnabled(\"detail\", \"body\") && bodyMail) {\n detailBody.style.display = \"block\";\n bodyValue.textContent = bodyMail;\n } else {\n detailBody.style.display = \"none\";\n }\n\n // add the actions\n gmail.addEventListener(\"click\", openGmail);\n\n outlook.addEventListener(\"click\", openOutlook);\n\n yahoo.addEventListener(\"click\", openYahooMail);\n\n open.addEventListener(\"click\", openDefault);\n\n copyMail.addEventListener(\"click\", copy);\n }\n // mailgo tel\n else if (type === MAILGO_TEL) {\n // the title of the modal (tel)\n titleTel.textContent = tel;\n\n if (mailgoConfigAttributeEnabled(\"detail\", \"msg\") && msg) {\n detailMsg.style.display = \"block\";\n msgValue.textContent = msg;\n } else {\n detailMsg.style.display = \"none\";\n }\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\", openDefault);\n\n copyTel.addEventListener(\"click\", copy);\n }\n\n // show the mailgo\n showMailgo(type);\n\n // add listener keyDown\n document.addEventListener(\"keydown\", mailgoKeydown);\n\n return true;\n}\n\n// actions\nconst openGmail = (event?: Event): void => {\n event.preventDefault();\n\n let urlString: string;\n let installation: MailgoInstallationType = activeMailgoType?.installation;\n\n if (installation === CLASSIC) {\n try {\n urlString = url.toString();\n } catch (e) {\n urlString = href;\n }\n } else if (installation === LESS_SPAM) {\n urlString = lessSpamHref;\n }\n\n // Gmail url\n let gmailUrl: string =\n \"https://mail.google.com/mail/?extsrc=mailto&url=\" +\n encodeURIComponent(urlString);\n\n // open the link\n window.open(gmailUrl, \"_blank\", \"noopener, noreferrer\");\n\n // hide the modal\n hideMailgo();\n};\n\nconst openOutlook = (event?: Event): void => {\n event.preventDefault();\n\n // Outlook starting url\n let startingOutlookUrl: string =\n \"https://outlook.live.com/owa/?path=/mail/action/compose&to=\";\n\n // let the user to decide to open Office365 Outlook instead of the classic outlook.live.com\n if (config?.office365) {\n startingOutlookUrl =\n \"https://outlook.office365.com/owa/?path=/mail/action/compose&to=\";\n }\n\n // Outlook url\n let outlookUrl: string = startingOutlookUrl + encodeURIComponent(mail);\n\n // the details if provided\n if (subject) {\n outlookUrl = outlookUrl.concat(\"&subject=\" + encodeURIComponent(subject));\n }\n\n if (bodyMail) {\n outlookUrl = outlookUrl.concat(\"&body=\" + encodeURIComponent(bodyMail));\n }\n\n // open the link\n window.open(outlookUrl, \"_blank\", \"noopener, noreferrer\");\n\n // hide the modal\n hideMailgo();\n};\n\nconst openYahooMail = (event?: Event): void => {\n event.preventDefault();\n\n // Yahoo url\n let yahooUrl: string = \"https://compose.mail.yahoo.com/?to=\" + mail;\n\n // the details if provided\n if (subject) {\n yahooUrl = yahooUrl.concat(\"&subject=\" + encodeURIComponent(subject));\n }\n if (bodyMail) {\n yahooUrl = yahooUrl.concat(\"&body=\" + encodeURIComponent(bodyMail));\n }\n\n // open the link\n window.open(yahooUrl, \"_blank\", \"noopener, noreferrer\");\n\n // hide the modal\n hideMailgo();\n};\n\nconst openTelegram = (event?: Event): void => {\n event.preventDefault();\n\n // check if telegramUsername exists\n if (telegramUsername) {\n // Telegram url\n let tgUrl: string = \"https://t.me/\" + encodeURIComponent(telegramUsername);\n\n // open the url\n window.open(tgUrl, \"_blank\", \"noopener, noreferrer\");\n\n // hide the modal\n hideMailgo();\n }\n};\n\nconst openSkype = (event?: Event): void => {\n event.preventDefault();\n\n let skype: string = skypeUsername || tel;\n\n // Telegram url\n let skypeUrl: string = \"skype:\" + encodeURIComponent(skype);\n\n // open the url\n window.open(skypeUrl, \"_blank\", \"noopener, noreferrer\");\n\n // hide the modal\n hideMailgo();\n};\n\nconst openWhatsApp = (event?: Event): void => {\n event.preventDefault();\n\n // WhatsApp API doesn't work with non number digits and leading 0s: https://faq.whatsapp.com/general/chats/how-to-use-click-to-chat/\n let whatappTel = tel.replace(notNumber, \"\").replace(leadingZeros, \"\");\n\n // WhatsApp url\n let waUrl: string = \"https://wa.me/\" + encodeURIComponent(whatappTel);\n\n // the details if provided\n if (msg) {\n waUrl = waUrl.concat(\"?text=\" + encodeURIComponent(msg));\n }\n\n // open the url\n window.open(waUrl, \"_blank\", \"noopener, noreferrer\");\n\n // hide the modal\n hideMailgo();\n};\n\nconst openDefault = (event?: Event): void => {\n event.preventDefault();\n\n let installation: MailgoInstallationType = activeMailgoType?.installation;\n\n // if the installation is classic the browser can follow the default behaviour\n if (installation === CLASSIC) {\n window.location.href = href;\n } else if (installation === LESS_SPAM) {\n // if the installation is less-spam use the built less-spam href\n window.location.href = lessSpamHref;\n }\n\n hideMailgo();\n};\n\nconst copy = (event?: Event): void => {\n event.preventDefault();\n\n // the correct copyButton (mail or tel)\n if (mailgoIsShowing()) {\n let activeCopy: HTMLElement;\n\n let type: MailgoModalType = activeMailgoType?.type;\n\n if (type === MAILGO_MAIL) {\n // in case it is showing mail modal copy email address\n copyToClipboard(mail);\n activeCopy = copyMail;\n } else {\n // in case it is showing tel modal copy phone number\n copyToClipboard(tel);\n activeCopy = copyTel;\n }\n\n activeCopy.textContent = strings.copied || defaultStrings.copied;\n setTimeout(() => {\n activeCopy.textContent = strings.copy || defaultStrings.copy;\n // hide after the timeout\n hideMailgo();\n }, 999);\n }\n};\n\n// function to find if a link is a mailto, tel, callto or sms\nconst validateUrl = (url: string, type: string = MAILTO) => {\n let regexValidate = new RegExp(\"^\" + type + \"((.)+)\", \"gi\");\n return regexValidate.test(url);\n};\n\n// function that returns if an element is a mailgo\nfunction getMailgoTypeByElement(element: HTMLElement): MailgoType | null {\n let elementHref: string = (element as HTMLLinkElement).getAttribute(\"href\");\n\n // return null if there is no-mailgo in class\n if (element.classList?.contains(NO_MAILGO)) {\n return null;\n }\n\n // the case of classic type of mailgo, like a href=mailto:... or a href=tel:... and the class=mailgo with a useful href\n if (elementHref || element.classList?.contains(\"mailgo\")) {\n if (validateUrl(elementHref, MAILTO) || validateUrl(elementHref, MAILGO)) {\n // a mailto: or mailgo:\n return {\n type: MAILGO_MAIL,\n installation: CLASSIC,\n };\n } else if (\n validateUrl(elementHref, TEL) ||\n validateUrl(elementHref, CALLTO)\n ) {\n // a tel: or callto:\n return {\n type: MAILGO_TEL,\n installation: CLASSIC,\n };\n } else if (validateUrl(elementHref, SMS)) {\n // a sms:\n return {\n type: MAILGO_SMS,\n installation: CLASSIC,\n };\n }\n }\n\n if (elementHref === \"#mailgo\" || element.classList?.contains(\"mailgo\")) {\n // less-spam installation of mailgo, check to the attributes\n if (\n element.hasAttribute(\"data-address\") &&\n element.hasAttribute(\"data-domain\")\n ) {\n // less-spam mailto with data-address and data-domain\n return {\n type: MAILGO_MAIL,\n installation: LESS_SPAM,\n };\n } else if (element.hasAttribute(\"data-tel\")) {\n // less-spam tel with data-tel\n return {\n type: MAILGO_TEL,\n installation: LESS_SPAM,\n };\n } else if (element.hasAttribute(\"data-msg\")) {\n // less-spam sms with data-msd\n return {\n type: MAILGO_SMS,\n installation: LESS_SPAM,\n };\n }\n }\n\n return null;\n}\n\n/**\n * mailgoKeydown\n * function to manage the keydown event when the modal is showing, return a boolean that represents if a useful key has been pressed\n */\nconst mailgoKeydown = (keyboardEvent: KeyboardEvent): boolean => {\n // if mailgo is showing\n if (mailgoIsShowing()) {\n let type: MailgoModalType = activeMailgoType?.type;\n\n if (type === MAILGO_MAIL) {\n switch (keyboardEvent.keyCode) {\n case 27:\n // Escape\n hideMailgo();\n return true;\n case 71:\n // g -> open GMail\n openGmail();\n return true;\n case 79:\n // o -> open Outlook\n openOutlook();\n return true;\n case 89:\n // y -> open Yahoo Mail\n openYahooMail();\n return true;\n case 32:\n case 13:\n // spacebar or enter -> open default\n openDefault();\n return true;\n case 67:\n // c -> copy\n copy();\n return true;\n default:\n return false;\n }\n } else if (type === MAILGO_TEL) {\n switch (keyboardEvent.keyCode) {\n case 27:\n // Escape\n hideMailgo();\n return true;\n case 84:\n // t -> open Telegram\n openTelegram();\n return true;\n case 87:\n // w -> open WhatsApp\n openWhatsApp();\n return true;\n case 83:\n // s -> open Skype\n openSkype();\n return true;\n case 32:\n case 13:\n // spacebar or enter -> open default\n openDefault();\n return true;\n case 67:\n // c -> copy\n copy();\n return true;\n default:\n return false;\n }\n }\n }\n return false;\n};\n\n// show the modal\nconst showMailgo = (type: MailgoModalType): 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(MAILGO_MAIL, \"none\");\n setModalDisplay(MAILGO_TEL, \"none\");\n\n // remove listener keyDown\n document.removeEventListener(\"keydown\", mailgoKeydown);\n};\n\n// is the mailgo modal hidden?\nconst mailgoIsShowing = (): boolean => {\n return (\n (mailtoEnabled && getModalDisplay(MAILGO_MAIL) === \"flex\") ||\n ((telEnabled || smsEnabled) && getModalDisplay(MAILGO_TEL) === \"flex\")\n );\n};\n\nconst byElement = (): HTMLLinkElement => {\n // by element in the footer\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// get the correct HTMLElement from a type\nconst getModalHTMLElement = (type: MailgoModalType = MAILGO_MAIL) => {\n if (type === MAILGO_TEL) {\n return modalTel;\n } else {\n return modalMailto;\n }\n};\n\n// get display value\nconst getModalDisplay = (ref: MailgoModalType = MAILGO_MAIL): string =>\n getModalHTMLElement(ref).style.display;\n\n// set display value\nconst setModalDisplay = (\n ref: MailgoModalType = MAILGO_MAIL,\n value: string\n): void => {\n let modal = getModalHTMLElement(ref);\n\n if (modal) {\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\n// enable dark mode\nconst enableDarkMode = () => {\n // get the type from current mailgo type\n let type: MailgoModalType = activeMailgoType?.type;\n if (type) {\n getModalHTMLElement(type).classList.add(\"m-dark\");\n }\n};\n\n// disable dark mode\nconst disableDarkMode = () => {\n // get the type from current mailgo type\n let type: MailgoModalType = activeMailgoType?.type;\n if (type) {\n getModalHTMLElement(type).classList.remove(\"m-dark\");\n }\n};\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// function to recreate a mailto: or tel: href from less-spam\nconst buildLessSpamHref = (type: string, parameters: string[]): string => {\n lessSpamHref = type;\n if (parameters && parameters.length > 0) {\n let joinedParams = parameters.join(\"&\");\n lessSpamHref = lessSpamHref.concat(\"?\" + joinedParams);\n }\n return lessSpamHref;\n};\n\n// function to check an attribute is enabled or not, by default considering it enabled\nconst mailgoConfigAttributeEnabled = (\n type: \"action\" | \"detail\",\n attribute: MailgoAction | MailgoDetail\n): boolean => {\n // by default all the actions and attribute are enabled\n if (!config) {\n return true;\n }\n\n // if the attribute type is action consider the actions config attribute\n if (type === \"action\") {\n if (config && !config?.actions) {\n return true;\n }\n\n if (\n config &&\n config.actions &&\n config?.actions[attribute as MailgoAction] === false\n ) {\n return false;\n }\n } else if (type === \"detail\") {\n // else consider the details attribute\n\n if (config && !config?.details) {\n return true;\n }\n\n if (\n config &&\n config.details &&\n config?.details[attribute as MailgoDetail] === false\n ) {\n return false;\n }\n }\n\n return true;\n};\n\n// manage the language of mailgo\nconst mailgoSetLanguage = (): string => {\n let languageType = \"default lang\";\n\n // if a language is defined in configuration use it\n if (\n config?.lang &&\n (languages as MailgoLanguages).indexOf(config.lang) !== -1\n ) {\n lang = config.lang;\n languageType = \"config lang\";\n } else {\n // else if is defined use it!\n // keep the lang from html\n let htmlLang: string = document.documentElement.lang;\n\n // find the correct language using the lang attribute, not just a === because there a are cases like fr-FR or fr_FR in html lang attribute\n (languages as MailgoLanguages).forEach((language: any) => {\n if (new RegExp(\"^\" + language, \"gi\").test(htmlLang)) {\n lang = language;\n languageType = \"html lang\";\n }\n });\n }\n\n // strings\n strings = (translations as MailgoTranslations)[lang];\n\n return languageType;\n};\n\nconst mailgoStyle = (): void => {\n if (!document.getElementById(\"mailgo-style\")) {\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\n// mailgo\nfunction mailgo(mailgoConfig?: MailgoConfig): boolean {\n try {\n // polyfill mailgo\n // mailgoPolyfill();\n\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 (typeof window !== \"undefined\") {\n // if is set in config use it (load the mailgo CSS)\n if (typeof config?.loadCSS !== \"undefined\") {\n loadCSSConfig = config.loadCSS;\n }\n\n // if is set in config use it (enable mailto)\n if (typeof config?.mailto !== \"undefined\") {\n mailtoEnabled = config.mailto;\n }\n\n // if is set in config use it (enable tel)\n if (typeof config?.tel !== \"undefined\") {\n telEnabled = config.tel;\n }\n\n // if is set in config use it (enable sms)\n if (typeof config?.sms !== \"undefined\") {\n smsEnabled = config.sms;\n }\n\n // if load css enabled load it!\n if (loadCSSConfig) {\n // add the style for mailgo\n mailgoStyle();\n }\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 mailgoInit,\n config.listenerOptions\n );\n } else {\n // no listener options\n document.addEventListener(config.initEvent, mailgoInit);\n }\n } else {\n mailgoInit();\n }\n\n return true;\n }\n } catch (error) {\n console.log(error);\n }\n return false;\n}\n\n// define the methods also for window element\nif (typeof window !== \"undefined\") {\n (window as any).getMailgoTypeByElement = getMailgoTypeByElement;\n (window as any).mailgoClickListener = mailgoClickListener;\n (window as any).mailgoCheckRender = mailgoClickListener; // for compatibility with old version of mailgo\n (window as any).mailgoPreRender = mailgoPreRender;\n (window as any).mailgoDirectRender = mailgoDirectRender;\n (window as any).mailgoRender = mailgoRender;\n (window as any).mailgo = mailgo;\n}\n\nexport {\n getMailgoTypeByElement,\n mailgoClickListener,\n mailgoPreRender,\n mailgoDirectRender,\n mailgoRender,\n};\n\nexport default mailgo;\n","export const userAgent = () => {\n if (\n /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(\n navigator.userAgent\n )\n ) {\n return \"mobile\";\n }\n return \"desktop\";\n};\n","// webpack > dist/mailgo.nocss.min.js\n\nimport mailgo from \"../src/mailgo\";\n\n// call init mailgo attached to the event DOMContentLoaded\nconst mailgoConfig = {\n initEvent: \"DOMContentLoaded\",\n loadCSS: false,\n};\n\nmailgo(mailgoConfig);\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tif(__webpack_module_cache__[moduleId]) {\n\t\treturn __webpack_module_cache__[moduleId].exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","// startup\n// Load entry module and return exports\n// This entry module doesn't tell about it's top-level declarations so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(331);\n"],"sourceRoot":""} \ No newline at end of file diff --git a/lib/mailgo.js b/lib/mailgo.js index 5db8332..d347834 100644 --- a/lib/mailgo.js +++ b/lib/mailgo.js @@ -49,15 +49,15 @@ module.exports = function (cssWithMappingToString) { } return content; - }).join(''); + }).join(""); }; // import a list of modules into the list // eslint-disable-next-line func-names list.i = function (modules, mediaQuery, dedupe) { - if (typeof modules === 'string') { + if (typeof modules === "string") { // eslint-disable-next-line no-param-reassign - modules = [[null, modules, '']]; + modules = [[null, modules, ""]]; } var alreadyImportedModules = {}; @@ -218,9 +218,9 @@ var leaveFirstLink = function leaveFirstLink(e) { } }; ;// CONCATENATED MODULE: ../i18n/languages.json -var languages_namespaceObject = JSON.parse("[\"en\",\"it\",\"es\",\"de\",\"fr\",\"pt\",\"nl\",\"ru\",\"sv\",\"no\",\"dk\",\"is\",\"zh\",\"ja\"]"); +var languages_namespaceObject = JSON.parse('["en","it","es","de","fr","pt","nl","ru","sv","no","dk","is","zh","ja"]'); ;// CONCATENATED MODULE: ../i18n/translations.json -var translations_namespaceObject = JSON.parse("{\"en\":{\"open_in_\":\"open in \",\"cc_\":\"cc \",\"bcc_\":\"bcc \",\"subject_\":\"subject \",\"body_\":\"body \",\"gmail\":\"Gmail\",\"outlook\":\"Outlook\",\"yahoo\":\"Yahoo Mail\",\"telegram\":\"Telegram\",\"whatsapp\":\"WhatsApp\",\"skype\":\"Skype\",\"call\":\"call\",\"open\":\"open\",\"_default\":\" default\",\"_as_default\":\" as default\",\"copy\":\"copy\",\"copied\":\"copied\"},\"it\":{\"open_in_\":\"apri con \",\"bcc_\":\"ccn \",\"subject_\":\"oggetto \",\"body_\":\"testo \",\"call\":\"chiama\",\"open\":\"apri\",\"_default\":\" \",\"_as_default\":\" \",\"copy\":\"copia\",\"copied\":\"copiato\"},\"es\":{\"open_in_\":\"abrir con \",\"bcc_\":\"cco \",\"subject_\":\"asunto \",\"body_\":\"cuerpo \",\"call\":\"llamar\",\"open\":\"abrir\",\"_default\":\" predefinido\",\"_as_default\":\" por defecto\",\"copy\":\"copiar\",\"copied\":\"copiado\"},\"de\":{\"open_in_\":\"Öffnen in \",\"subject_\":\"Betreff \",\"body_\":\"Nachricht \",\"call\":\"Anrufen\",\"open\":\"Öffnen\",\"_default\":\" mit Standard\",\"_as_default\":\" mit Standard\",\"copy\":\"kopieren\",\"copied\":\"kopiert\"},\"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\",\"copied\":\"copiado\"},\"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\",\"copied\":\"copié\"},\"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\":\"скопировать\"},\"sv\":{\"open_in_\":\"öppna i \",\"subject_\":\"ämne \",\"body_\":\"meddelandetext \",\"call\":\"ring\",\"open\":\"öppna\",\"_default\":\" förval\",\"_as_default\":\" som förval\",\"copy\":\"kopiera\",\"copied\":\"kopierad\"},\"no\":{\"open_in_\":\"åpne i \",\"subject_\":\"emne \",\"call\":\"ringe\",\"open\":\"åpne\",\"_as_default\":\" som standard\",\"copy\":\"kopiere\",\"copied\":\"kopiert\"},\"dk\":{\"open_in_\":\"åpne i \",\"subject_\":\"emne \",\"call\":\"ringe op\",\"open\":\"åben\",\"_as_default\":\" som standard\",\"copy\":\"kopi\",\"copied\":\"kopieret\"},\"is\":{\"open_in_\":\"opið inn \",\"subject_\":\"viðfangsefni \",\"body_\":\"líkami \",\"call\":\"hringja\",\"open\":\"opið\",\"_default\":\" sjálfgefið\",\"_as_default\":\" sem sjálfgefið\",\"copy\":\"afrita\",\"copied\":\"afritað\"},\"zh\":{\"open_in_\":\"開啟 \",\"cc_\":\"副本 \",\"bcc_\":\"密件副本 \",\"subject_\":\"主旨 \",\"body_\":\"內文 \",\"call\":\"通話\",\"open\":\"開啟\",\"_default\":\" 預設\",\"_as_default\":\" 預設\",\"copy\":\"複製\",\"copied\":\"已複製\"},\"ja\":{\"open_in_\":\"開く \",\"subject_\":\"主題 \",\"body_\":\"本文 \",\"call\":\"通話 \",\"open\":\"開く \",\"_default\":\" 標準のアプリ\",\"_as_default\":\" 標準のアプリ\",\"copy\":\"リンクをコピー\",\"copied\":\"コピーしました\"}}"); +var translations_namespaceObject = JSON.parse('{"en":{"open_in_":"open in ","cc_":"cc ","bcc_":"bcc ","subject_":"subject ","body_":"body ","gmail":"Gmail","outlook":"Outlook","yahoo":"Yahoo Mail","telegram":"Telegram","whatsapp":"WhatsApp","skype":"Skype","call":"call","open":"open","_default":" default","_as_default":" as default","copy":"copy","copied":"copied"},"it":{"open_in_":"apri con ","bcc_":"ccn ","subject_":"oggetto ","body_":"testo ","call":"chiama","open":"apri","_default":" ","_as_default":" ","copy":"copia","copied":"copiato"},"es":{"open_in_":"abrir con ","bcc_":"cco ","subject_":"asunto ","body_":"cuerpo ","call":"llamar","open":"abrir","_default":" predefinido","_as_default":" por defecto","copy":"copiar","copied":"copiado"},"de":{"open_in_":"Öffnen in ","subject_":"Betreff ","body_":"Nachricht ","call":"Anrufen","open":"Öffnen","_default":" mit Standard","_as_default":" mit Standard","copy":"kopieren","copied":"kopiert"},"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","copied":"copiado"},"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","copied":"copié"},"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":"скопировать"},"sv":{"open_in_":"öppna i ","subject_":"ämne ","body_":"meddelandetext ","call":"ring","open":"öppna","_default":" förval","_as_default":" som förval","copy":"kopiera","copied":"kopierad"},"no":{"open_in_":"åpne i ","subject_":"emne ","call":"ringe","open":"åpne","_as_default":" som standard","copy":"kopiere","copied":"kopiert"},"dk":{"open_in_":"åpne i ","subject_":"emne ","call":"ringe op","open":"åben","_as_default":" som standard","copy":"kopi","copied":"kopieret"},"is":{"open_in_":"opið inn ","subject_":"viðfangsefni ","body_":"líkami ","call":"hringja","open":"opið","_default":" sjálfgefið","_as_default":" sem sjálfgefið","copy":"afrita","copied":"afritað"},"zh":{"open_in_":"開啟 ","cc_":"副本 ","bcc_":"密件副本 ","subject_":"主旨 ","body_":"內文 ","call":"通話","open":"開啟","_default":" 預設","_as_default":" 預設","copy":"複製","copied":"已複製"},"ja":{"open_in_":"開く ","subject_":"主題 ","body_":"本文 ","call":"通話 ","open":"開く ","_default":" 標準のアプリ","_as_default":" 標準のアプリ","copy":"リンクをコピー","copied":"コピーしました"}}'); ;// CONCATENATED MODULE: ../src/mobile-detect.ts var userAgent = function userAgent() { if (/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)) { @@ -1650,10 +1650,13 @@ const mailgoCheckRender = mailgoClickListener; /******/ }(); /******/ /************************************************************************/ -/******/ // module exports must be returned from runtime so entry inlining is disabled +/******/ /******/ // startup /******/ // Load entry module and return exports -/******/ return __webpack_require__(507); +/******/ // This entry module doesn't tell about it's top-level declarations so it can't be inlined +/******/ var __webpack_exports__ = __webpack_require__(507); +/******/ +/******/ return __webpack_exports__; /******/ })() ; }); diff --git a/lib/mailgo.js.map b/lib/mailgo.js.map index 46a63f5..88878fd 100644 --- a/lib/mailgo.js.map +++ b/lib/mailgo.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack://mailgo/webpack/universalModuleDefinition","webpack://mailgo/../src/mailgo.scss","webpack://mailgo/../node_modules/css-loader/dist/runtime/api.js","webpack://mailgo/../src/mailgo.scss?81f2","webpack://mailgo/../src/constants.ts","webpack://mailgo/../src/utils.ts","webpack://mailgo/../src/mobile-detect.ts","webpack://mailgo/../src/mailgo.ts","webpack://mailgo/./mailgo.lib.ts","webpack://mailgo/webpack/bootstrap","webpack://mailgo/webpack/runtime/define property getters","webpack://mailgo/webpack/runtime/hasOwnProperty shorthand","webpack://mailgo/webpack/runtime/make namespace object","webpack://mailgo/webpack/startup"],"names":["MAILTO","MAILGO","TEL","CALLTO","SMS","outlookDeepLink","NO_MAILGO","DESKTOP","MOBILE","MAILGO_MAIL","MAILGO_TEL","MAILGO_SMS","CLASSIC","LESS_SPAM","spanHTMLTag","aHTMLTag","pHTMLTag","defaultLang","notNumber","RegExp","leadingZeros","validateEmail","email","test","validateEmails","arr","every","validateTel","tel","copyToClipboard","str","el","document","createElement","value","setAttribute","style","position","left","body","appendChild","selected","getSelection","rangeCount","getRangeAt","select","execCommand","removeChild","removeAllRanges","addRange","setFocusLoop","ref","modal","querySelector","addEventListener","leaveLastLink","leaveFirstLink","e","code","shiftKey","preventDefault","target","closest","focus","userAgent","navigator","mailgoCSS","require","lang","defaultStrings","translations","strings","config","isMobile","mailtoEnabled","telEnabled","smsEnabled","desktopEnabled","mobileEnabled","validateEmailConfig","validateTelConfig","showFooterConfig","loadCSSConfig","activeMailgoType","modalMailto","modalTel","url","href","lessSpamHref","mail","cc","bcc","subject","bodyMail","msg","telegramUsername","skypeUsername","title","titleTel","detailCc","detailBcc","detailSubject","detailBody","detailMsg","ccValue","bccValue","subjectValue","bodyValue","msgValue","activatedLink","gmail","outlook","yahoo","open","telegram","wa","skype","call","copyMail","copyTel","mailgoInit","desktop","mobile","mailgoSetLanguage","mailgoExists","getElementById","display","id","classList","add","dark","enableDarkMode","disableDarkMode","modalBackground","className","modalContent","details","ccSpan","createTextNode","cc_","bccSpan","bcc_","subjectSpan","subject_","bodySpan","body_","open_in_","gmailSpan","mailgoConfigAttributeEnabled","outlookSpan","yahooSpan","openSpan","_default","copy","showFooter","byElement","hideMailgo","mailgoTelExists","detailsTel","msgSpan","telegramSpan","waSpan","whatsapp","skypeSpan","callSpan","_as_default","mailgoClickListener","event","contains","mailgoIsShowing","path","composedPath","forEach","element","HTMLDocument","Window","localMailgoType","getMailgoTypeByElement","activeMailgoModalType","type","mailgoPreRender","mailgoElementOrUrl","mailgoElement","installation","getAttribute","validateUrl","decodeURIComponent","split","trim","URL","urlParams","searchParams","get","error","console","log","encodeURIComponent","parameters","push","buildLessSpamHref","hasAttribute","mailgoRender","mailgoDirectRender","directUrl","mailgo","textContent","join","openGmail","openOutlook","openYahooMail","openDefault","openWhatsApp","openTelegram","openSkype","showMailgo","mailgoKeydown","urlString","toString","gmailUrl","window","startingOutlookUrl","office365","outlookUrl","concat","yahooUrl","tgUrl","skypeUrl","whatappTel","replace","waUrl","location","activeCopy","copied","setTimeout","regexValidate","elementHref","keyboardEvent","keyCode","setModalDisplay","removeEventListener","getModalDisplay","by","rel","getModalHTMLElement","activeElement","remove","tagName","parentElement","length","joinedParams","attribute","actions","languageType","languages","htmlLang","documentElement","language","mailgoStyle","mailgoCSSElement","head","mailgoConfig","loadCSS","mailto","sms","initEvent","listenerOptions","mailgoCheckRender"],"mappings":"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","file":"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 ","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../node_modules/css-loader/dist/runtime/api.js\");\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(function(i){return i[1]});\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:.8}.m-modal .m-modal-content{position:relative;z-index:10002;box-sizing:content-box;text-align:center;overflow:hidden;min-width:200px;max-width:240px;background-color:#fff;opacity:.95;border-radius:20px;box-shadow:0 3px 20px rgba(32,35,42,.5);border:3px solid #333;color:#4a4a4a;display:flex;flex-direction:column;overflow:auto;padding:24px;transition:.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:pre-line;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{white-space:pre-line;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(192,55,42,.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(9,103,170,.08);color:#0967aa}.m-modal .m-modal-content a.m-yahoo{color:#4a00a0}.m-modal .m-modal-content a.m-yahoo:hover,.m-modal .m-modal-content a.m-yahoo:focus,.m-modal .m-modal-content a.m-yahoo:active{background-color:rgba(74,0,160,.08);color:#4a00a0}.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(8,109,160,.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(6,116,102,.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(7,109,146,.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,.08);color:#4a4a4a}.m-modal .m-modal-content a.m-by{font-size:12px;margin-top:.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,.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(224,125,115,.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(76,156,215,.08);color:#4c9cd7}.m-modal.m-dark .m-modal-content a.m-yahoo{color:#ac88d3}.m-modal.m-dark .m-modal-content a.m-yahoo:hover,.m-modal.m-dark .m-modal-content a.m-yahoo:focus,.m-modal.m-dark .m-modal-content a.m-yahoo:active{background-color:rgba(172,136,211,.08);color:#ac88d3}.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(76,171,219,.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(76,210,192,.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(76,199,244,.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// 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 (cssWithMappingToString) {\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);\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 var result = require(\"!!../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].use[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 ","import { MailgoModalType, MailgoInstallationType } from \"mailgo\";\n\n// links\nexport const MAILTO: string = \"mailto:\";\nexport const MAILGO: string = \"mailgo:\";\nexport const TEL: string = \"tel:\";\nexport const CALLTO: string = \"callto:\";\nexport const SMS: string = \"sms:\";\n\n// deep linking\nexport const outlookDeepLink: string = \"ms-outlook://\";\n\n// no mailgo class\nexport const NO_MAILGO: string = \"no-mailgo\";\n\n// responsive settings\nexport const DESKTOP: string = \"desktop\";\nexport const MOBILE: string = \"mobile\";\n\n// mailgo modal types\nexport const MAILGO_MAIL: MailgoModalType = \"mailgo\";\nexport const MAILGO_TEL: MailgoModalType = \"mailgo-tel\";\nexport const MAILGO_SMS: MailgoModalType = \"mailgo-sms\";\n\n// mailgo installation types\nexport const CLASSIC: MailgoInstallationType = \"classic\";\nexport const LESS_SPAM: MailgoInstallationType = \"less-spam\";\n\n// useful html tags\nexport const spanHTMLTag: string = \"span\";\nexport const aHTMLTag: string = \"a\";\nexport const pHTMLTag: string = \"p\";\n\n// default lang\nexport const defaultLang: string = \"en\";\n\n// useful regexp\nexport const notNumber: RegExp = new RegExp(\"[^0-9/]\", \"gi\");\nexport const leadingZeros: RegExp = new RegExp(\"^0+\", \"gi\");\n","// validate a single email with regex\nexport const 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\nexport const validateEmails = (arr: string[]): boolean =>\n arr.every(validateEmail);\n\n// validate a single tel with regex\nexport const validateTel = (tel: string): boolean =>\n /^[+]{0,1}[\\s0-9]*[(]{0,1}[0-9]{1,4}[)]{0,1}[-\\s\\./0-9]*[p]{0,1}[\\s0-9]*$/.test(\n tel\n );\n\n// copy of a string\nexport const copyToClipboard = (str: string): boolean => {\n let el: HTMLTextAreaElement = document.createElement(\n \"textarea\"\n ) as HTMLTextAreaElement;\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\n// set focus loop within modal\nexport const 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\nexport const 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\nexport const 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","export const userAgent = () => {\n if (\n /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(\n navigator.userAgent\n )\n ) {\n return \"mobile\";\n }\n return \"desktop\";\n};\n","import {\n MailgoConfig,\n MailgoTranslations,\n MailgoTranslation,\n MailgoAction,\n MailgoLanguages,\n MailgoType,\n MailgoDetail,\n MailgoInstallationType,\n MailgoModalType,\n} from \"mailgo\";\n\n// polyfill\n// import { mailgoPolyfill } from \"./polyfill\";\n\n// constants\nimport {\n MAILTO,\n MAILGO,\n TEL,\n CALLTO,\n SMS,\n MAILGO_MAIL,\n MAILGO_TEL,\n MAILGO_SMS,\n CLASSIC,\n LESS_SPAM,\n NO_MAILGO,\n MOBILE,\n spanHTMLTag,\n aHTMLTag,\n pHTMLTag,\n defaultLang,\n notNumber,\n leadingZeros,\n} from \"./constants\";\n\n// utils\nimport {\n validateEmails,\n validateTel,\n copyToClipboard,\n setFocusLoop,\n} from \"./utils\";\n\n// i18n for mailgo\nimport languages from \"../i18n/languages.json\";\nimport translations from \"../i18n/translations.json\";\n\n// mobile detect\nimport { userAgent } from \"./mobile-detect\";\n\n// mailgo scss, with toString (https://github.com/webpack-contrib/css-loader#tostring)\nconst mailgoCSS: string = require(\"./mailgo.scss\").toString();\n\n// default language\nlet lang: string = defaultLang;\n\n// default strings\nconst defaultStrings: MailgoTranslation = (translations as MailgoTranslations)[\n defaultLang\n];\n\n// translation strings\nlet strings: MailgoTranslation;\n\n// global mailgo config object\nlet config: MailgoConfig;\n\n// config to check if the client is mobile or desktop\nlet isMobile: boolean = false;\n\n// default config attributes\nlet mailtoEnabled: boolean = true;\nlet telEnabled: boolean = true;\nlet smsEnabled: boolean = false;\nlet desktopEnabled: boolean = true;\nlet mobileEnabled: boolean = true;\nlet validateEmailConfig: boolean = true;\nlet validateTelConfig: boolean = true;\nlet showFooterConfig: boolean = true;\nlet loadCSSConfig: boolean = true;\n\n// activeMailgoType\nlet activeMailgoType: MailgoType;\n\n// modals global object\nlet modalMailto: HTMLElement, modalTel: HTMLElement;\n\n// mailgo general variables\nlet url: URL, href: string, lessSpamHref: string;\n\n// mailgo mail variables\nlet mail: string, cc: string, bcc: string, subject: string, bodyMail: string;\n\n// mailgo tel variables\nlet tel: string, msg: string, telegramUsername: string, 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 detailMsg: HTMLElement,\n ccValue: HTMLElement,\n bccValue: HTMLElement,\n subjectValue: HTMLElement,\n bodyValue: HTMLElement,\n msgValue: HTMLElement,\n activatedLink: HTMLElement;\n\n// mailgo buttons (actions)\nlet gmail: HTMLLinkElement,\n outlook: HTMLLinkElement,\n yahoo: 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 // set the boolean for mobile/desktop\n isMobile = userAgent() === MOBILE;\n\n // responsive settings\n {\n if (typeof config?.desktop !== \"undefined\") {\n desktopEnabled = config.desktop;\n // if it is a desktop and desktop is not enabled no init mailgo\n if (!isMobile && !desktopEnabled) {\n return;\n }\n }\n if (typeof config?.mobile !== \"undefined\") {\n mobileEnabled = config.mobile;\n // if it is a mobile and mobile is not enabled no init mailgo\n if (isMobile && !mobileEnabled) {\n return;\n }\n }\n }\n\n // set the mailgo language\n mailgoSetLanguage();\n\n // mailgo, if mailgo not already exists\n let mailgoExists = !!document.getElementById(MAILGO_MAIL);\n\n // if mailgo is enabled for mailto and it not exists in DOM\n if (mailtoEnabled && !mailgoExists) {\n // modal\n modalMailto = createElement() as HTMLElement;\n modalMailto.style.display = \"none\";\n modalMailto.id = MAILGO_MAIL;\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();\n } else {\n disableDarkMode();\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 = \"#mailgo-gmail\";\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 if (mailgoConfigAttributeEnabled(\"action\", \"gmail\")) {\n modalContent.appendChild(gmail);\n }\n\n // Outlook\n outlook = createElement(aHTMLTag) as HTMLLinkElement;\n outlook.id = \"m-outlook\";\n outlook.href = \"#mailgo-outlook\";\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 if (mailgoConfigAttributeEnabled(\"action\", \"outlook\")) {\n modalContent.appendChild(outlook);\n }\n\n // Outlook\n yahoo = createElement(aHTMLTag) as HTMLLinkElement;\n yahoo.id = \"m-yahoo\";\n yahoo.href = \"#mailgo-yahoo\";\n yahoo.classList.add(\"m-open\");\n yahoo.classList.add(\"m-yahoo\");\n yahoo.appendChild(\n createTextNode(strings.open_in_ || defaultStrings.open_in_)\n );\n let yahooSpan: HTMLElement = createElement(spanHTMLTag);\n yahooSpan.className = \"w-500\";\n yahooSpan.appendChild(\n createTextNode(strings.yahoo || defaultStrings.yahoo)\n );\n yahoo.appendChild(yahooSpan);\n\n if (mailgoConfigAttributeEnabled(\"action\", \"yahoo\")) {\n modalContent.appendChild(yahoo);\n }\n\n // open default\n open = createElement(aHTMLTag) as HTMLLinkElement;\n open.id = \"m-open\";\n open.href = \"#mailgo-open\";\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 = \"#mailgo-copy\";\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 (typeof config?.showFooter !== \"undefined\") {\n showFooterConfig = config.showFooter;\n }\n\n if (showFooterConfig) {\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 mailgo is enabled for tel/callto and it not exists in DOM\n if (telEnabled && !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();\n } else {\n disableDarkMode();\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 // details\n let detailsTel: HTMLElement = createElement();\n detailsTel.id = \"m-tel-details\";\n detailsTel.className = \"m-details\";\n\n detailMsg = createElement(pHTMLTag);\n detailMsg.id = \"m-msg\";\n let msgSpan: HTMLElement = createElement(spanHTMLTag);\n msgSpan.className = \"w-500\";\n msgSpan.appendChild(createTextNode(strings.body_ || defaultStrings.body_));\n msgValue = createElement(spanHTMLTag);\n msgValue.id = \"m-msg-value\";\n detailMsg.appendChild(msgSpan);\n detailMsg.appendChild(msgValue);\n detailsTel.appendChild(detailMsg);\n\n modalContent.appendChild(detailsTel);\n\n // Telegram\n telegram = createElement(aHTMLTag) as HTMLLinkElement;\n telegram.id = \"m-tg\";\n telegram.href = \"#mailgo-telegram\";\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 if (mailgoConfigAttributeEnabled(\"action\", \"telegram\")) {\n modalContent.appendChild(telegram);\n }\n\n // WhatsApp\n wa = createElement(aHTMLTag) as HTMLLinkElement;\n wa.id = \"m-wa\";\n wa.href = \"#mailgo-whatsapp\";\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 if (mailgoConfigAttributeEnabled(\"action\", \"whatsapp\")) {\n modalContent.appendChild(wa);\n }\n\n // Skype\n skype = createElement(aHTMLTag) as HTMLLinkElement;\n skype.id = \"m-skype\";\n skype.href = \"#mailgo-skype\";\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 if (mailgoConfigAttributeEnabled(\"action\", \"skype\")) {\n modalContent.appendChild(skype);\n }\n\n // call default\n call = createElement(aHTMLTag) as HTMLLinkElement;\n call.id = \"m-call\";\n call.href = \"#mailgo-open\";\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 = \"#mailgo-copy\";\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 (typeof config?.showFooter !== \"undefined\") {\n showFooterConfig = config.showFooter;\n }\n\n if (showFooterConfig) {\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\", mailgoClickListener);\n};\n\n/**\n * mailgoClickListener\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 * or\n * document.querySelectorAll(\n * 'a[href^=\"sms:\" i]:not(.no-mailgo), a[href=\"#mailgo\"], a.mailgo'\n * );\n */\nfunction mailgoClickListener(event: Event): boolean {\n // check if the mailgo HTML exists in the body\n if (\n !document.body.contains(modalMailto) &&\n !document.body.contains(modalTel)\n ) {\n return false;\n }\n\n // if a mailgo is already showing do nothing\n if (mailgoIsShowing()) {\n return false;\n }\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\n // go here only if one of the mailgo modals are enabled\n if (mailtoEnabled || telEnabled || smsEnabled) {\n let localMailgoType = getMailgoTypeByElement(element);\n\n // go on if the localMailgoType is not null\n if (localMailgoType) {\n // set the active mailgo type\n activeMailgoType = localMailgoType;\n\n let activeMailgoModalType = activeMailgoType?.type;\n\n if (activeMailgoModalType) {\n // check if the setting is enabled and if so go with pre-render\n if (\n (mailtoEnabled && activeMailgoModalType === MAILGO_MAIL) ||\n (telEnabled && activeMailgoModalType === MAILGO_TEL) ||\n (smsEnabled && activeMailgoModalType === MAILGO_SMS)\n ) {\n // stop the normal execution of the element click\n event.preventDefault();\n\n // render mailgo\n mailgoPreRender(element as HTMLLinkElement);\n\n return true;\n }\n }\n }\n }\n });\n }\n\n return false;\n}\n\n/**\n * mailgoPreRender\n * function to pre-render a mailgo, it helps populating elements needed by modal\n */\nfunction mailgoPreRender(\n mailgoElementOrUrl: HTMLLinkElement | string\n): boolean {\n let mailgoElement: HTMLLinkElement;\n\n // get the type and installation from current mailgo type\n let type: MailgoModalType = activeMailgoType?.type;\n let installation: MailgoInstallationType = activeMailgoType?.installation;\n\n // if type is not defined return\n if (!type) return false;\n\n if (typeof mailgoElementOrUrl === \"string\") {\n // if the parameter is a string it is the url\n href = mailgoElementOrUrl as string;\n } else {\n // if the paramenter is an HTMLLinkElement get the href attribute and the element\n href = mailgoElementOrUrl.getAttribute(\"href\") as string;\n mailgoElement = mailgoElementOrUrl as HTMLLinkElement;\n }\n\n // mailgo mail\n if (type === MAILGO_MAIL) {\n // if the installation is classic\n if (installation === CLASSIC) {\n if (validateUrl(href, MAILTO)) {\n mail = decodeURIComponent(href.split(\"?\")[0].split(MAILTO)[1].trim());\n } else if (validateUrl(href, MAILGO)) {\n mail = decodeURIComponent(href.split(\"?\")[0].split(MAILGO)[1].trim());\n }\n\n try {\n url = new URL(href);\n\n let urlParams: URLSearchParams = url.searchParams;\n // optional parameters for the email\n cc = urlParams.get(\"cc\");\n bcc = urlParams.get(\"bcc\");\n subject = urlParams.get(\"subject\");\n bodyMail = urlParams.get(\"body\");\n } catch (error) {\n console.log(error);\n }\n } else if (installation === LESS_SPAM) {\n // if the installation is less-spam\n // mail = data-address + @ + data-domain\n mail =\n mailgoElement.getAttribute(\"data-address\") &&\n mailgoElement.getAttribute(\"data-domain\")\n ? mailgoElement.getAttribute(\"data-address\") +\n \"@\" +\n mailgoElement.getAttribute(\"data-domain\")\n : null;\n\n try {\n url = new URL(MAILTO + encodeURIComponent(mail));\n } catch (error) {\n console.log(error);\n }\n\n let parameters: string[] = [];\n\n // cc = data-cc-address + @ + data-cc-domain\n cc = mailgoElement.getAttribute(\"data-cc-address\")\n ? mailgoElement.getAttribute(\"data-cc-address\") +\n \"@\" +\n mailgoElement.getAttribute(\"data-cc-domain\")\n : null;\n\n // if cc is defined add it to parameters\n if (cc) parameters.push(\"cc=\" + cc);\n\n // bcc = data-bcc-address + @ + data-bcc-domain\n bcc = mailgoElement.getAttribute(\"data-bcc-address\")\n ? mailgoElement.getAttribute(\"data-bcc-address\") +\n \"@\" +\n mailgoElement.getAttribute(\"data-bcc-domain\")\n : null;\n\n // if bcc is defined add it to parameters\n if (bcc) parameters.push(\"bcc=\" + bcc);\n\n // subject = data-subject\n subject = mailgoElement.getAttribute(\"data-subject\");\n\n // if subject is defined add it to parameters\n if (subject) parameters.push(\"subject=\" + subject);\n\n // body = data-body\n bodyMail = mailgoElement.getAttribute(\"data-body\");\n\n // if body is defined add it to parameters\n if (bodyMail) parameters.push(\"body=\" + bodyMail);\n\n // set the lessSpamHref\n lessSpamHref = buildLessSpamHref(\n MAILTO + encodeURIComponent(mail),\n parameters\n );\n }\n\n // if is in config use it\n if (typeof config?.validateEmail !== \"undefined\") {\n validateEmailConfig = config.validateEmail;\n }\n\n if (validateEmailConfig) {\n // validate the email address\n if (!validateEmails(mail.split(\",\"))) {\n return false;\n }\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 // mailgo tel\n else if (type === MAILGO_TEL) {\n if (installation === CLASSIC) {\n if (validateUrl(href, TEL)) {\n tel = decodeURIComponent(href.split(\"?\")[0].split(TEL)[1].trim());\n } else if (validateUrl(href, CALLTO)) {\n tel = decodeURIComponent(href.split(\"?\")[0].split(CALLTO)[1].trim());\n } else if (validateUrl(href, SMS)) {\n tel = decodeURIComponent(href.split(\"?\")[0].split(SMS)[1].trim());\n }\n\n try {\n url = new URL(href);\n let urlParams: URLSearchParams = url.searchParams;\n\n // optional parameters for the phone number\n msg = urlParams.get(\"body\");\n } catch (error) {\n console.log(error);\n }\n } else if (installation == LESS_SPAM) {\n tel = mailgoElement.getAttribute(\"data-tel\");\n msg = mailgoElement.getAttribute(\"data-msg\");\n\n try {\n url = new URL(TEL + encodeURIComponent(tel));\n } catch (error) {\n console.log(error);\n }\n\n let parameters: string[] = [];\n\n // if msg is defined add it to parameters\n if (msg) parameters.push(\"body=\" + msg);\n\n // set the lessSpamHref\n lessSpamHref = buildLessSpamHref(\n TEL + encodeURIComponent(tel),\n parameters\n );\n }\n\n // if is in config use it\n if (typeof config?.validateTel !== \"undefined\") {\n validateTelConfig = config.validateTel;\n }\n\n // validate the phone number\n if (validateTelConfig) {\n if (!validateTel(tel)) return;\n }\n\n // Telegram username\n if (mailgoElement && mailgoElement.hasAttribute(\"data-telegram\")) {\n telegramUsername = mailgoElement.getAttribute(\"data-telegram\");\n } else {\n telegramUsername = null;\n }\n\n // Telegram username\n if (mailgoElement && mailgoElement.hasAttribute(\"data-skype\")) {\n skypeUsername = mailgoElement.getAttribute(\"data-skype\");\n } else {\n skypeUsername = null;\n }\n }\n\n // if dark is in config or contained in the element\n if (config?.dark || mailgoElement.classList.contains(\"dark\")) {\n enableDarkMode();\n } else {\n disableDarkMode();\n }\n\n // render mailgo\n mailgoRender();\n\n return true;\n}\n\n/**\n * mailgoDirectRender\n * function to render a mailgo directly from a URL\n */\nfunction mailgoDirectRender(directUrl: string): boolean {\n // start mailgo\n mailgo();\n\n if (validateUrl(directUrl, MAILTO) || validateUrl(directUrl, MAILGO)) {\n activeMailgoType = {\n type: MAILGO_MAIL,\n installation: CLASSIC,\n };\n mailgoPreRender(directUrl);\n return true;\n } else if (\n validateUrl(directUrl, TEL) ||\n validateUrl(directUrl, CALLTO) ||\n validateUrl(directUrl, SMS)\n ) {\n activeMailgoType = {\n type: MAILGO_TEL,\n installation: CLASSIC,\n };\n mailgoPreRender(directUrl);\n return true;\n }\n return false;\n}\n\n/**\n * mailgoRender\n * function to render a mailgo (mail or tel)\n */\nfunction mailgoRender(): boolean {\n // get the type from current mailgo type\n let type: MailgoModalType = activeMailgoType?.type;\n\n // if type is not defined return\n if (!type) return false;\n\n // mailgo mail\n if (type === MAILGO_MAIL) {\n // the title of the modal (email address)\n title.textContent = mail.split(\",\").join(\"\\n\");\n\n // add the details if provided\n if (mailgoConfigAttributeEnabled(\"detail\", \"cc\") && cc) {\n detailCc.style.display = \"block\";\n ccValue.textContent = cc.split(\",\").join(\"\\n\");\n } else {\n detailCc.style.display = \"none\";\n }\n\n if (mailgoConfigAttributeEnabled(\"detail\", \"bcc\") && bcc) {\n detailBcc.style.display = \"block\";\n bccValue.textContent = bcc.split(\",\").join(\"\\n\");\n } else {\n detailBcc.style.display = \"none\";\n }\n\n if (mailgoConfigAttributeEnabled(\"detail\", \"subject\") && subject) {\n detailSubject.style.display = \"block\";\n subjectValue.textContent = subject;\n } else {\n detailSubject.style.display = \"none\";\n }\n\n if (mailgoConfigAttributeEnabled(\"detail\", \"body\") && bodyMail) {\n detailBody.style.display = \"block\";\n bodyValue.textContent = bodyMail;\n } else {\n detailBody.style.display = \"none\";\n }\n\n // add the actions\n gmail.addEventListener(\"click\", openGmail);\n\n outlook.addEventListener(\"click\", openOutlook);\n\n yahoo.addEventListener(\"click\", openYahooMail);\n\n open.addEventListener(\"click\", openDefault);\n\n copyMail.addEventListener(\"click\", copy);\n }\n // mailgo tel\n else if (type === MAILGO_TEL) {\n // the title of the modal (tel)\n titleTel.textContent = tel;\n\n if (mailgoConfigAttributeEnabled(\"detail\", \"msg\") && msg) {\n detailMsg.style.display = \"block\";\n msgValue.textContent = msg;\n } else {\n detailMsg.style.display = \"none\";\n }\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\", openDefault);\n\n copyTel.addEventListener(\"click\", copy);\n }\n\n // show the mailgo\n showMailgo(type);\n\n // add listener keyDown\n document.addEventListener(\"keydown\", mailgoKeydown);\n\n return true;\n}\n\n// actions\nconst openGmail = (event?: Event): void => {\n event.preventDefault();\n\n let urlString: string;\n let installation: MailgoInstallationType = activeMailgoType?.installation;\n\n if (installation === CLASSIC) {\n try {\n urlString = url.toString();\n } catch (e) {\n urlString = href;\n }\n } else if (installation === LESS_SPAM) {\n urlString = lessSpamHref;\n }\n\n // Gmail url\n let gmailUrl: string =\n \"https://mail.google.com/mail/?extsrc=mailto&url=\" +\n encodeURIComponent(urlString);\n\n // open the link\n window.open(gmailUrl, \"_blank\", \"noopener, noreferrer\");\n\n // hide the modal\n hideMailgo();\n};\n\nconst openOutlook = (event?: Event): void => {\n event.preventDefault();\n\n // Outlook starting url\n let startingOutlookUrl: string =\n \"https://outlook.live.com/owa/?path=/mail/action/compose&to=\";\n\n // let the user to decide to open Office365 Outlook instead of the classic outlook.live.com\n if (config?.office365) {\n startingOutlookUrl =\n \"https://outlook.office365.com/owa/?path=/mail/action/compose&to=\";\n }\n\n // Outlook url\n let outlookUrl: string = startingOutlookUrl + encodeURIComponent(mail);\n\n // the details if provided\n if (subject) {\n outlookUrl = outlookUrl.concat(\"&subject=\" + encodeURIComponent(subject));\n }\n\n if (bodyMail) {\n outlookUrl = outlookUrl.concat(\"&body=\" + encodeURIComponent(bodyMail));\n }\n\n // open the link\n window.open(outlookUrl, \"_blank\", \"noopener, noreferrer\");\n\n // hide the modal\n hideMailgo();\n};\n\nconst openYahooMail = (event?: Event): void => {\n event.preventDefault();\n\n // Yahoo url\n let yahooUrl: string = \"https://compose.mail.yahoo.com/?to=\" + mail;\n\n // the details if provided\n if (subject) {\n yahooUrl = yahooUrl.concat(\"&subject=\" + encodeURIComponent(subject));\n }\n if (bodyMail) {\n yahooUrl = yahooUrl.concat(\"&body=\" + encodeURIComponent(bodyMail));\n }\n\n // open the link\n window.open(yahooUrl, \"_blank\", \"noopener, noreferrer\");\n\n // hide the modal\n hideMailgo();\n};\n\nconst openTelegram = (event?: Event): void => {\n event.preventDefault();\n\n // check if telegramUsername exists\n if (telegramUsername) {\n // Telegram url\n let tgUrl: string = \"https://t.me/\" + encodeURIComponent(telegramUsername);\n\n // open the url\n window.open(tgUrl, \"_blank\", \"noopener, noreferrer\");\n\n // hide the modal\n hideMailgo();\n }\n};\n\nconst openSkype = (event?: Event): void => {\n event.preventDefault();\n\n let skype: string = skypeUsername || tel;\n\n // Telegram url\n let skypeUrl: string = \"skype:\" + encodeURIComponent(skype);\n\n // open the url\n window.open(skypeUrl, \"_blank\", \"noopener, noreferrer\");\n\n // hide the modal\n hideMailgo();\n};\n\nconst openWhatsApp = (event?: Event): void => {\n event.preventDefault();\n\n // WhatsApp API doesn't work with non number digits and leading 0s: https://faq.whatsapp.com/general/chats/how-to-use-click-to-chat/\n let whatappTel = tel.replace(notNumber, \"\").replace(leadingZeros, \"\");\n\n // WhatsApp url\n let waUrl: string = \"https://wa.me/\" + encodeURIComponent(whatappTel);\n\n // the details if provided\n if (msg) {\n waUrl = waUrl.concat(\"?text=\" + encodeURIComponent(msg));\n }\n\n // open the url\n window.open(waUrl, \"_blank\", \"noopener, noreferrer\");\n\n // hide the modal\n hideMailgo();\n};\n\nconst openDefault = (event?: Event): void => {\n event.preventDefault();\n\n let installation: MailgoInstallationType = activeMailgoType?.installation;\n\n // if the installation is classic the browser can follow the default behaviour\n if (installation === CLASSIC) {\n window.location.href = href;\n } else if (installation === LESS_SPAM) {\n // if the installation is less-spam use the built less-spam href\n window.location.href = lessSpamHref;\n }\n\n hideMailgo();\n};\n\nconst copy = (event?: Event): void => {\n event.preventDefault();\n\n // the correct copyButton (mail or tel)\n if (mailgoIsShowing()) {\n let activeCopy: HTMLElement;\n\n let type: MailgoModalType = activeMailgoType?.type;\n\n if (type === MAILGO_MAIL) {\n // in case it is showing mail modal copy email address\n copyToClipboard(mail);\n activeCopy = copyMail;\n } else {\n // in case it is showing tel modal copy phone number\n copyToClipboard(tel);\n activeCopy = copyTel;\n }\n\n activeCopy.textContent = strings.copied || defaultStrings.copied;\n setTimeout(() => {\n activeCopy.textContent = strings.copy || defaultStrings.copy;\n // hide after the timeout\n hideMailgo();\n }, 999);\n }\n};\n\n// function to find if a link is a mailto, tel, callto or sms\nconst validateUrl = (url: string, type: string = MAILTO) => {\n let regexValidate = new RegExp(\"^\" + type + \"((.)+)\", \"gi\");\n return regexValidate.test(url);\n};\n\n// function that returns if an element is a mailgo\nfunction getMailgoTypeByElement(element: HTMLElement): MailgoType | null {\n let elementHref: string = (element as HTMLLinkElement).getAttribute(\"href\");\n\n // return null if there is no-mailgo in class\n if (element.classList?.contains(NO_MAILGO)) {\n return null;\n }\n\n // the case of classic type of mailgo, like a href=mailto:... or a href=tel:... and the class=mailgo with a useful href\n if (elementHref || element.classList?.contains(\"mailgo\")) {\n if (validateUrl(elementHref, MAILTO) || validateUrl(elementHref, MAILGO)) {\n // a mailto: or mailgo:\n return {\n type: MAILGO_MAIL,\n installation: CLASSIC,\n };\n } else if (\n validateUrl(elementHref, TEL) ||\n validateUrl(elementHref, CALLTO)\n ) {\n // a tel: or callto:\n return {\n type: MAILGO_TEL,\n installation: CLASSIC,\n };\n } else if (validateUrl(elementHref, SMS)) {\n // a sms:\n return {\n type: MAILGO_SMS,\n installation: CLASSIC,\n };\n }\n }\n\n if (elementHref === \"#mailgo\" || element.classList?.contains(\"mailgo\")) {\n // less-spam installation of mailgo, check to the attributes\n if (\n element.hasAttribute(\"data-address\") &&\n element.hasAttribute(\"data-domain\")\n ) {\n // less-spam mailto with data-address and data-domain\n return {\n type: MAILGO_MAIL,\n installation: LESS_SPAM,\n };\n } else if (element.hasAttribute(\"data-tel\")) {\n // less-spam tel with data-tel\n return {\n type: MAILGO_TEL,\n installation: LESS_SPAM,\n };\n } else if (element.hasAttribute(\"data-msg\")) {\n // less-spam sms with data-msd\n return {\n type: MAILGO_SMS,\n installation: LESS_SPAM,\n };\n }\n }\n\n return null;\n}\n\n/**\n * mailgoKeydown\n * function to manage the keydown event when the modal is showing, return a boolean that represents if a useful key has been pressed\n */\nconst mailgoKeydown = (keyboardEvent: KeyboardEvent): boolean => {\n // if mailgo is showing\n if (mailgoIsShowing()) {\n let type: MailgoModalType = activeMailgoType?.type;\n\n if (type === MAILGO_MAIL) {\n switch (keyboardEvent.keyCode) {\n case 27:\n // Escape\n hideMailgo();\n return true;\n case 71:\n // g -> open GMail\n openGmail();\n return true;\n case 79:\n // o -> open Outlook\n openOutlook();\n return true;\n case 89:\n // y -> open Yahoo Mail\n openYahooMail();\n return true;\n case 32:\n case 13:\n // spacebar or enter -> open default\n openDefault();\n return true;\n case 67:\n // c -> copy\n copy();\n return true;\n default:\n return false;\n }\n } else if (type === MAILGO_TEL) {\n switch (keyboardEvent.keyCode) {\n case 27:\n // Escape\n hideMailgo();\n return true;\n case 84:\n // t -> open Telegram\n openTelegram();\n return true;\n case 87:\n // w -> open WhatsApp\n openWhatsApp();\n return true;\n case 83:\n // s -> open Skype\n openSkype();\n return true;\n case 32:\n case 13:\n // spacebar or enter -> open default\n openDefault();\n return true;\n case 67:\n // c -> copy\n copy();\n return true;\n default:\n return false;\n }\n }\n }\n return false;\n};\n\n// show the modal\nconst showMailgo = (type: MailgoModalType): 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(MAILGO_MAIL, \"none\");\n setModalDisplay(MAILGO_TEL, \"none\");\n\n // remove listener keyDown\n document.removeEventListener(\"keydown\", mailgoKeydown);\n};\n\n// is the mailgo modal hidden?\nconst mailgoIsShowing = (): boolean => {\n return (\n (mailtoEnabled && getModalDisplay(MAILGO_MAIL) === \"flex\") ||\n ((telEnabled || smsEnabled) && getModalDisplay(MAILGO_TEL) === \"flex\")\n );\n};\n\nconst byElement = (): HTMLLinkElement => {\n // by element in the footer\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// get the correct HTMLElement from a type\nconst getModalHTMLElement = (type: MailgoModalType = MAILGO_MAIL) => {\n if (type === MAILGO_TEL) {\n return modalTel;\n } else {\n return modalMailto;\n }\n};\n\n// get display value\nconst getModalDisplay = (ref: MailgoModalType = MAILGO_MAIL): string =>\n getModalHTMLElement(ref).style.display;\n\n// set display value\nconst setModalDisplay = (\n ref: MailgoModalType = MAILGO_MAIL,\n value: string\n): void => {\n let modal = getModalHTMLElement(ref);\n\n if (modal) {\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\n// enable dark mode\nconst enableDarkMode = () => {\n // get the type from current mailgo type\n let type: MailgoModalType = activeMailgoType?.type;\n if (type) {\n getModalHTMLElement(type).classList.add(\"m-dark\");\n }\n};\n\n// disable dark mode\nconst disableDarkMode = () => {\n // get the type from current mailgo type\n let type: MailgoModalType = activeMailgoType?.type;\n if (type) {\n getModalHTMLElement(type).classList.remove(\"m-dark\");\n }\n};\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// function to recreate a mailto: or tel: href from less-spam\nconst buildLessSpamHref = (type: string, parameters: string[]): string => {\n lessSpamHref = type;\n if (parameters && parameters.length > 0) {\n let joinedParams = parameters.join(\"&\");\n lessSpamHref = lessSpamHref.concat(\"?\" + joinedParams);\n }\n return lessSpamHref;\n};\n\n// function to check an attribute is enabled or not, by default considering it enabled\nconst mailgoConfigAttributeEnabled = (\n type: \"action\" | \"detail\",\n attribute: MailgoAction | MailgoDetail\n): boolean => {\n // by default all the actions and attribute are enabled\n if (!config) {\n return true;\n }\n\n // if the attribute type is action consider the actions config attribute\n if (type === \"action\") {\n if (config && !config?.actions) {\n return true;\n }\n\n if (\n config &&\n config.actions &&\n config?.actions[attribute as MailgoAction] === false\n ) {\n return false;\n }\n } else if (type === \"detail\") {\n // else consider the details attribute\n\n if (config && !config?.details) {\n return true;\n }\n\n if (\n config &&\n config.details &&\n config?.details[attribute as MailgoDetail] === false\n ) {\n return false;\n }\n }\n\n return true;\n};\n\n// manage the language of mailgo\nconst mailgoSetLanguage = (): string => {\n let languageType = \"default lang\";\n\n // if a language is defined in configuration use it\n if (\n config?.lang &&\n (languages as MailgoLanguages).indexOf(config.lang) !== -1\n ) {\n lang = config.lang;\n languageType = \"config lang\";\n } else {\n // else if is defined use it!\n // keep the lang from html\n let htmlLang: string = document.documentElement.lang;\n\n // find the correct language using the lang attribute, not just a === because there a are cases like fr-FR or fr_FR in html lang attribute\n (languages as MailgoLanguages).forEach((language: any) => {\n if (new RegExp(\"^\" + language, \"gi\").test(htmlLang)) {\n lang = language;\n languageType = \"html lang\";\n }\n });\n }\n\n // strings\n strings = (translations as MailgoTranslations)[lang];\n\n return languageType;\n};\n\nconst mailgoStyle = (): void => {\n if (!document.getElementById(\"mailgo-style\")) {\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\n// mailgo\nfunction mailgo(mailgoConfig?: MailgoConfig): boolean {\n try {\n // polyfill mailgo\n // mailgoPolyfill();\n\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 (typeof window !== \"undefined\") {\n // if is set in config use it (load the mailgo CSS)\n if (typeof config?.loadCSS !== \"undefined\") {\n loadCSSConfig = config.loadCSS;\n }\n\n // if is set in config use it (enable mailto)\n if (typeof config?.mailto !== \"undefined\") {\n mailtoEnabled = config.mailto;\n }\n\n // if is set in config use it (enable tel)\n if (typeof config?.tel !== \"undefined\") {\n telEnabled = config.tel;\n }\n\n // if is set in config use it (enable sms)\n if (typeof config?.sms !== \"undefined\") {\n smsEnabled = config.sms;\n }\n\n // if load css enabled load it!\n if (loadCSSConfig) {\n // add the style for mailgo\n mailgoStyle();\n }\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 mailgoInit,\n config.listenerOptions\n );\n } else {\n // no listener options\n document.addEventListener(config.initEvent, mailgoInit);\n }\n } else {\n mailgoInit();\n }\n\n return true;\n }\n } catch (error) {\n console.log(error);\n }\n return false;\n}\n\n// define the methods also for window element\nif (typeof window !== \"undefined\") {\n (window as any).getMailgoTypeByElement = getMailgoTypeByElement;\n (window as any).mailgoClickListener = mailgoClickListener;\n (window as any).mailgoCheckRender = mailgoClickListener; // for compatibility with old version of mailgo\n (window as any).mailgoPreRender = mailgoPreRender;\n (window as any).mailgoDirectRender = mailgoDirectRender;\n (window as any).mailgoRender = mailgoRender;\n (window as any).mailgo = mailgo;\n}\n\nexport {\n getMailgoTypeByElement,\n mailgoClickListener,\n mailgoPreRender,\n mailgoDirectRender,\n mailgoRender,\n};\n\nexport default mailgo;\n","// webpack > lib/mailgo.js\n\nimport mailgo, {\n getMailgoTypeByElement,\n mailgoClickListener,\n mailgoPreRender,\n mailgoDirectRender,\n mailgoRender,\n} from \"../src/mailgo\";\n\n// start function\nconst start = mailgo;\n\n// compatibility with old version of mailgo\nconst mailgoCheckRender = mailgoClickListener;\n\nexport {\n getMailgoTypeByElement,\n mailgoClickListener,\n mailgoCheckRender,\n mailgoPreRender,\n mailgoDirectRender,\n mailgoRender,\n mailgo,\n start,\n};\n\nexport default mailgo;\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tif(__webpack_module_cache__[moduleId]) {\n\t\treturn __webpack_module_cache__[moduleId].exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","// module exports must be returned from runtime so entry inlining is disabled\n// startup\n// Load entry module and return exports\nreturn __webpack_require__(507);\n"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack://mailgo/webpack/universalModuleDefinition","webpack://mailgo/../src/mailgo.scss","webpack://mailgo/../node_modules/css-loader/dist/runtime/api.js","webpack://mailgo/../src/mailgo.scss?81f2","webpack://mailgo/../src/constants.ts","webpack://mailgo/../src/utils.ts","webpack://mailgo/../src/mobile-detect.ts","webpack://mailgo/../src/mailgo.ts","webpack://mailgo/./mailgo.lib.ts","webpack://mailgo/webpack/bootstrap","webpack://mailgo/webpack/runtime/define property getters","webpack://mailgo/webpack/runtime/hasOwnProperty shorthand","webpack://mailgo/webpack/runtime/make namespace object","webpack://mailgo/webpack/startup"],"names":["MAILTO","MAILGO","TEL","CALLTO","SMS","outlookDeepLink","NO_MAILGO","DESKTOP","MOBILE","MAILGO_MAIL","MAILGO_TEL","MAILGO_SMS","CLASSIC","LESS_SPAM","spanHTMLTag","aHTMLTag","pHTMLTag","defaultLang","notNumber","RegExp","leadingZeros","validateEmail","email","test","validateEmails","arr","every","validateTel","tel","copyToClipboard","str","el","document","createElement","value","setAttribute","style","position","left","body","appendChild","selected","getSelection","rangeCount","getRangeAt","select","execCommand","removeChild","removeAllRanges","addRange","setFocusLoop","ref","modal","querySelector","addEventListener","leaveLastLink","leaveFirstLink","e","code","shiftKey","preventDefault","target","closest","focus","userAgent","navigator","mailgoCSS","require","lang","defaultStrings","translations","strings","config","isMobile","mailtoEnabled","telEnabled","smsEnabled","desktopEnabled","mobileEnabled","validateEmailConfig","validateTelConfig","showFooterConfig","loadCSSConfig","activeMailgoType","modalMailto","modalTel","url","href","lessSpamHref","mail","cc","bcc","subject","bodyMail","msg","telegramUsername","skypeUsername","title","titleTel","detailCc","detailBcc","detailSubject","detailBody","detailMsg","ccValue","bccValue","subjectValue","bodyValue","msgValue","activatedLink","gmail","outlook","yahoo","open","telegram","wa","skype","call","copyMail","copyTel","mailgoInit","desktop","mobile","mailgoSetLanguage","mailgoExists","getElementById","display","id","classList","add","dark","enableDarkMode","disableDarkMode","modalBackground","className","modalContent","details","ccSpan","createTextNode","cc_","bccSpan","bcc_","subjectSpan","subject_","bodySpan","body_","open_in_","gmailSpan","mailgoConfigAttributeEnabled","outlookSpan","yahooSpan","openSpan","_default","copy","showFooter","byElement","hideMailgo","mailgoTelExists","detailsTel","msgSpan","telegramSpan","waSpan","whatsapp","skypeSpan","callSpan","_as_default","mailgoClickListener","event","contains","mailgoIsShowing","path","composedPath","forEach","element","HTMLDocument","Window","localMailgoType","getMailgoTypeByElement","activeMailgoModalType","type","mailgoPreRender","mailgoElementOrUrl","mailgoElement","installation","getAttribute","validateUrl","decodeURIComponent","split","trim","URL","urlParams","searchParams","get","error","console","log","encodeURIComponent","parameters","push","buildLessSpamHref","hasAttribute","mailgoRender","mailgoDirectRender","directUrl","mailgo","textContent","join","openGmail","openOutlook","openYahooMail","openDefault","openWhatsApp","openTelegram","openSkype","showMailgo","mailgoKeydown","urlString","toString","gmailUrl","window","startingOutlookUrl","office365","outlookUrl","concat","yahooUrl","tgUrl","skypeUrl","whatappTel","replace","waUrl","location","activeCopy","copied","setTimeout","regexValidate","elementHref","keyboardEvent","keyCode","setModalDisplay","removeEventListener","getModalDisplay","by","rel","getModalHTMLElement","activeElement","remove","tagName","parentElement","length","joinedParams","attribute","actions","languageType","languages","htmlLang","documentElement","language","mailgoStyle","mailgoCSSElement","head","mailgoConfig","loadCSS","mailto","sms","initEvent","listenerOptions","mailgoCheckRender"],"mappings":"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","file":"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 ","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../node_modules/css-loader/dist/runtime/api.js\");\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(function(i){return i[1]});\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:.8}.m-modal .m-modal-content{position:relative;z-index:10002;box-sizing:content-box;text-align:center;overflow:hidden;min-width:200px;max-width:240px;background-color:#fff;opacity:.95;border-radius:20px;box-shadow:0 3px 20px rgba(32,35,42,.5);border:3px solid #333;color:#4a4a4a;display:flex;flex-direction:column;overflow:auto;padding:24px;transition:.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:pre-line;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{white-space:pre-line;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(192,55,42,.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(9,103,170,.08);color:#0967aa}.m-modal .m-modal-content a.m-yahoo{color:#4a00a0}.m-modal .m-modal-content a.m-yahoo:hover,.m-modal .m-modal-content a.m-yahoo:focus,.m-modal .m-modal-content a.m-yahoo:active{background-color:rgba(74,0,160,.08);color:#4a00a0}.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(8,109,160,.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(6,116,102,.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(7,109,146,.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,.08);color:#4a4a4a}.m-modal .m-modal-content a.m-by{font-size:12px;margin-top:.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,.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(224,125,115,.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(76,156,215,.08);color:#4c9cd7}.m-modal.m-dark .m-modal-content a.m-yahoo{color:#ac88d3}.m-modal.m-dark .m-modal-content a.m-yahoo:hover,.m-modal.m-dark .m-modal-content a.m-yahoo:focus,.m-modal.m-dark .m-modal-content a.m-yahoo:active{background-color:rgba(172,136,211,.08);color:#ac88d3}.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(76,171,219,.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(76,210,192,.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(76,199,244,.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// 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 (cssWithMappingToString) {\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);\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 var result = require(\"!!../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].use[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 ","import { MailgoModalType, MailgoInstallationType } from \"mailgo\";\n\n// links\nexport const MAILTO: string = \"mailto:\";\nexport const MAILGO: string = \"mailgo:\";\nexport const TEL: string = \"tel:\";\nexport const CALLTO: string = \"callto:\";\nexport const SMS: string = \"sms:\";\n\n// deep linking\nexport const outlookDeepLink: string = \"ms-outlook://\";\n\n// no mailgo class\nexport const NO_MAILGO: string = \"no-mailgo\";\n\n// responsive settings\nexport const DESKTOP: string = \"desktop\";\nexport const MOBILE: string = \"mobile\";\n\n// mailgo modal types\nexport const MAILGO_MAIL: MailgoModalType = \"mailgo\";\nexport const MAILGO_TEL: MailgoModalType = \"mailgo-tel\";\nexport const MAILGO_SMS: MailgoModalType = \"mailgo-sms\";\n\n// mailgo installation types\nexport const CLASSIC: MailgoInstallationType = \"classic\";\nexport const LESS_SPAM: MailgoInstallationType = \"less-spam\";\n\n// useful html tags\nexport const spanHTMLTag: string = \"span\";\nexport const aHTMLTag: string = \"a\";\nexport const pHTMLTag: string = \"p\";\n\n// default lang\nexport const defaultLang: string = \"en\";\n\n// useful regexp\nexport const notNumber: RegExp = new RegExp(\"[^0-9/]\", \"gi\");\nexport const leadingZeros: RegExp = new RegExp(\"^0+\", \"gi\");\n","// validate a single email with regex\nexport const 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\nexport const validateEmails = (arr: string[]): boolean =>\n arr.every(validateEmail);\n\n// validate a single tel with regex\nexport const validateTel = (tel: string): boolean =>\n /^[+]{0,1}[\\s0-9]*[(]{0,1}[0-9]{1,4}[)]{0,1}[-\\s\\./0-9]*[p]{0,1}[\\s0-9]*$/.test(\n tel\n );\n\n// copy of a string\nexport const copyToClipboard = (str: string): boolean => {\n let el: HTMLTextAreaElement = document.createElement(\n \"textarea\"\n ) as HTMLTextAreaElement;\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\n// set focus loop within modal\nexport const 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\nexport const 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\nexport const 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","export const userAgent = () => {\n if (\n /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(\n navigator.userAgent\n )\n ) {\n return \"mobile\";\n }\n return \"desktop\";\n};\n","import {\n MailgoConfig,\n MailgoTranslations,\n MailgoTranslation,\n MailgoAction,\n MailgoLanguages,\n MailgoType,\n MailgoDetail,\n MailgoInstallationType,\n MailgoModalType,\n} from \"mailgo\";\n\n// polyfill\n// import { mailgoPolyfill } from \"./polyfill\";\n\n// constants\nimport {\n MAILTO,\n MAILGO,\n TEL,\n CALLTO,\n SMS,\n MAILGO_MAIL,\n MAILGO_TEL,\n MAILGO_SMS,\n CLASSIC,\n LESS_SPAM,\n NO_MAILGO,\n MOBILE,\n spanHTMLTag,\n aHTMLTag,\n pHTMLTag,\n defaultLang,\n notNumber,\n leadingZeros,\n} from \"./constants\";\n\n// utils\nimport {\n validateEmails,\n validateTel,\n copyToClipboard,\n setFocusLoop,\n} from \"./utils\";\n\n// i18n for mailgo\nimport languages from \"../i18n/languages.json\";\nimport translations from \"../i18n/translations.json\";\n\n// mobile detect\nimport { userAgent } from \"./mobile-detect\";\n\n// mailgo scss, with toString (https://github.com/webpack-contrib/css-loader#tostring)\nconst mailgoCSS: string = require(\"./mailgo.scss\").toString();\n\n// default language\nlet lang: string = defaultLang;\n\n// default strings\nconst defaultStrings: MailgoTranslation = (translations as MailgoTranslations)[\n defaultLang\n];\n\n// translation strings\nlet strings: MailgoTranslation;\n\n// global mailgo config object\nlet config: MailgoConfig;\n\n// config to check if the client is mobile or desktop\nlet isMobile: boolean = false;\n\n// default config attributes\nlet mailtoEnabled: boolean = true;\nlet telEnabled: boolean = true;\nlet smsEnabled: boolean = false;\nlet desktopEnabled: boolean = true;\nlet mobileEnabled: boolean = true;\nlet validateEmailConfig: boolean = true;\nlet validateTelConfig: boolean = true;\nlet showFooterConfig: boolean = true;\nlet loadCSSConfig: boolean = true;\n\n// activeMailgoType\nlet activeMailgoType: MailgoType;\n\n// modals global object\nlet modalMailto: HTMLElement, modalTel: HTMLElement;\n\n// mailgo general variables\nlet url: URL, href: string, lessSpamHref: string;\n\n// mailgo mail variables\nlet mail: string, cc: string, bcc: string, subject: string, bodyMail: string;\n\n// mailgo tel variables\nlet tel: string, msg: string, telegramUsername: string, 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 detailMsg: HTMLElement,\n ccValue: HTMLElement,\n bccValue: HTMLElement,\n subjectValue: HTMLElement,\n bodyValue: HTMLElement,\n msgValue: HTMLElement,\n activatedLink: HTMLElement;\n\n// mailgo buttons (actions)\nlet gmail: HTMLLinkElement,\n outlook: HTMLLinkElement,\n yahoo: 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 // set the boolean for mobile/desktop\n isMobile = userAgent() === MOBILE;\n\n // responsive settings\n {\n if (typeof config?.desktop !== \"undefined\") {\n desktopEnabled = config.desktop;\n // if it is a desktop and desktop is not enabled no init mailgo\n if (!isMobile && !desktopEnabled) {\n return;\n }\n }\n if (typeof config?.mobile !== \"undefined\") {\n mobileEnabled = config.mobile;\n // if it is a mobile and mobile is not enabled no init mailgo\n if (isMobile && !mobileEnabled) {\n return;\n }\n }\n }\n\n // set the mailgo language\n mailgoSetLanguage();\n\n // mailgo, if mailgo not already exists\n let mailgoExists = !!document.getElementById(MAILGO_MAIL);\n\n // if mailgo is enabled for mailto and it not exists in DOM\n if (mailtoEnabled && !mailgoExists) {\n // modal\n modalMailto = createElement() as HTMLElement;\n modalMailto.style.display = \"none\";\n modalMailto.id = MAILGO_MAIL;\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();\n } else {\n disableDarkMode();\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 = \"#mailgo-gmail\";\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 if (mailgoConfigAttributeEnabled(\"action\", \"gmail\")) {\n modalContent.appendChild(gmail);\n }\n\n // Outlook\n outlook = createElement(aHTMLTag) as HTMLLinkElement;\n outlook.id = \"m-outlook\";\n outlook.href = \"#mailgo-outlook\";\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 if (mailgoConfigAttributeEnabled(\"action\", \"outlook\")) {\n modalContent.appendChild(outlook);\n }\n\n // Outlook\n yahoo = createElement(aHTMLTag) as HTMLLinkElement;\n yahoo.id = \"m-yahoo\";\n yahoo.href = \"#mailgo-yahoo\";\n yahoo.classList.add(\"m-open\");\n yahoo.classList.add(\"m-yahoo\");\n yahoo.appendChild(\n createTextNode(strings.open_in_ || defaultStrings.open_in_)\n );\n let yahooSpan: HTMLElement = createElement(spanHTMLTag);\n yahooSpan.className = \"w-500\";\n yahooSpan.appendChild(\n createTextNode(strings.yahoo || defaultStrings.yahoo)\n );\n yahoo.appendChild(yahooSpan);\n\n if (mailgoConfigAttributeEnabled(\"action\", \"yahoo\")) {\n modalContent.appendChild(yahoo);\n }\n\n // open default\n open = createElement(aHTMLTag) as HTMLLinkElement;\n open.id = \"m-open\";\n open.href = \"#mailgo-open\";\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 = \"#mailgo-copy\";\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 (typeof config?.showFooter !== \"undefined\") {\n showFooterConfig = config.showFooter;\n }\n\n if (showFooterConfig) {\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 mailgo is enabled for tel/callto and it not exists in DOM\n if (telEnabled && !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();\n } else {\n disableDarkMode();\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 // details\n let detailsTel: HTMLElement = createElement();\n detailsTel.id = \"m-tel-details\";\n detailsTel.className = \"m-details\";\n\n detailMsg = createElement(pHTMLTag);\n detailMsg.id = \"m-msg\";\n let msgSpan: HTMLElement = createElement(spanHTMLTag);\n msgSpan.className = \"w-500\";\n msgSpan.appendChild(createTextNode(strings.body_ || defaultStrings.body_));\n msgValue = createElement(spanHTMLTag);\n msgValue.id = \"m-msg-value\";\n detailMsg.appendChild(msgSpan);\n detailMsg.appendChild(msgValue);\n detailsTel.appendChild(detailMsg);\n\n modalContent.appendChild(detailsTel);\n\n // Telegram\n telegram = createElement(aHTMLTag) as HTMLLinkElement;\n telegram.id = \"m-tg\";\n telegram.href = \"#mailgo-telegram\";\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 if (mailgoConfigAttributeEnabled(\"action\", \"telegram\")) {\n modalContent.appendChild(telegram);\n }\n\n // WhatsApp\n wa = createElement(aHTMLTag) as HTMLLinkElement;\n wa.id = \"m-wa\";\n wa.href = \"#mailgo-whatsapp\";\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 if (mailgoConfigAttributeEnabled(\"action\", \"whatsapp\")) {\n modalContent.appendChild(wa);\n }\n\n // Skype\n skype = createElement(aHTMLTag) as HTMLLinkElement;\n skype.id = \"m-skype\";\n skype.href = \"#mailgo-skype\";\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 if (mailgoConfigAttributeEnabled(\"action\", \"skype\")) {\n modalContent.appendChild(skype);\n }\n\n // call default\n call = createElement(aHTMLTag) as HTMLLinkElement;\n call.id = \"m-call\";\n call.href = \"#mailgo-open\";\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 = \"#mailgo-copy\";\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 (typeof config?.showFooter !== \"undefined\") {\n showFooterConfig = config.showFooter;\n }\n\n if (showFooterConfig) {\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\", mailgoClickListener);\n};\n\n/**\n * mailgoClickListener\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 * or\n * document.querySelectorAll(\n * 'a[href^=\"sms:\" i]:not(.no-mailgo), a[href=\"#mailgo\"], a.mailgo'\n * );\n */\nfunction mailgoClickListener(event: Event): boolean {\n // check if the mailgo HTML exists in the body\n if (\n !document.body.contains(modalMailto) &&\n !document.body.contains(modalTel)\n ) {\n return false;\n }\n\n // if a mailgo is already showing do nothing\n if (mailgoIsShowing()) {\n return false;\n }\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\n // go here only if one of the mailgo modals are enabled\n if (mailtoEnabled || telEnabled || smsEnabled) {\n let localMailgoType = getMailgoTypeByElement(element);\n\n // go on if the localMailgoType is not null\n if (localMailgoType) {\n // set the active mailgo type\n activeMailgoType = localMailgoType;\n\n let activeMailgoModalType = activeMailgoType?.type;\n\n if (activeMailgoModalType) {\n // check if the setting is enabled and if so go with pre-render\n if (\n (mailtoEnabled && activeMailgoModalType === MAILGO_MAIL) ||\n (telEnabled && activeMailgoModalType === MAILGO_TEL) ||\n (smsEnabled && activeMailgoModalType === MAILGO_SMS)\n ) {\n // stop the normal execution of the element click\n event.preventDefault();\n\n // render mailgo\n mailgoPreRender(element as HTMLLinkElement);\n\n return true;\n }\n }\n }\n }\n });\n }\n\n return false;\n}\n\n/**\n * mailgoPreRender\n * function to pre-render a mailgo, it helps populating elements needed by modal\n */\nfunction mailgoPreRender(\n mailgoElementOrUrl: HTMLLinkElement | string\n): boolean {\n let mailgoElement: HTMLLinkElement;\n\n // get the type and installation from current mailgo type\n let type: MailgoModalType = activeMailgoType?.type;\n let installation: MailgoInstallationType = activeMailgoType?.installation;\n\n // if type is not defined return\n if (!type) return false;\n\n if (typeof mailgoElementOrUrl === \"string\") {\n // if the parameter is a string it is the url\n href = mailgoElementOrUrl as string;\n } else {\n // if the paramenter is an HTMLLinkElement get the href attribute and the element\n href = mailgoElementOrUrl.getAttribute(\"href\") as string;\n mailgoElement = mailgoElementOrUrl as HTMLLinkElement;\n }\n\n // mailgo mail\n if (type === MAILGO_MAIL) {\n // if the installation is classic\n if (installation === CLASSIC) {\n if (validateUrl(href, MAILTO)) {\n mail = decodeURIComponent(href.split(\"?\")[0].split(MAILTO)[1].trim());\n } else if (validateUrl(href, MAILGO)) {\n mail = decodeURIComponent(href.split(\"?\")[0].split(MAILGO)[1].trim());\n }\n\n try {\n url = new URL(href);\n\n let urlParams: URLSearchParams = url.searchParams;\n // optional parameters for the email\n cc = urlParams.get(\"cc\");\n bcc = urlParams.get(\"bcc\");\n subject = urlParams.get(\"subject\");\n bodyMail = urlParams.get(\"body\");\n } catch (error) {\n console.log(error);\n }\n } else if (installation === LESS_SPAM) {\n // if the installation is less-spam\n // mail = data-address + @ + data-domain\n mail =\n mailgoElement.getAttribute(\"data-address\") &&\n mailgoElement.getAttribute(\"data-domain\")\n ? mailgoElement.getAttribute(\"data-address\") +\n \"@\" +\n mailgoElement.getAttribute(\"data-domain\")\n : null;\n\n try {\n url = new URL(MAILTO + encodeURIComponent(mail));\n } catch (error) {\n console.log(error);\n }\n\n let parameters: string[] = [];\n\n // cc = data-cc-address + @ + data-cc-domain\n cc = mailgoElement.getAttribute(\"data-cc-address\")\n ? mailgoElement.getAttribute(\"data-cc-address\") +\n \"@\" +\n mailgoElement.getAttribute(\"data-cc-domain\")\n : null;\n\n // if cc is defined add it to parameters\n if (cc) parameters.push(\"cc=\" + cc);\n\n // bcc = data-bcc-address + @ + data-bcc-domain\n bcc = mailgoElement.getAttribute(\"data-bcc-address\")\n ? mailgoElement.getAttribute(\"data-bcc-address\") +\n \"@\" +\n mailgoElement.getAttribute(\"data-bcc-domain\")\n : null;\n\n // if bcc is defined add it to parameters\n if (bcc) parameters.push(\"bcc=\" + bcc);\n\n // subject = data-subject\n subject = mailgoElement.getAttribute(\"data-subject\");\n\n // if subject is defined add it to parameters\n if (subject) parameters.push(\"subject=\" + subject);\n\n // body = data-body\n bodyMail = mailgoElement.getAttribute(\"data-body\");\n\n // if body is defined add it to parameters\n if (bodyMail) parameters.push(\"body=\" + bodyMail);\n\n // set the lessSpamHref\n lessSpamHref = buildLessSpamHref(\n MAILTO + encodeURIComponent(mail),\n parameters\n );\n }\n\n // if is in config use it\n if (typeof config?.validateEmail !== \"undefined\") {\n validateEmailConfig = config.validateEmail;\n }\n\n if (validateEmailConfig) {\n // validate the email address\n if (!validateEmails(mail.split(\",\"))) {\n return false;\n }\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 // mailgo tel\n else if (type === MAILGO_TEL) {\n if (installation === CLASSIC) {\n if (validateUrl(href, TEL)) {\n tel = decodeURIComponent(href.split(\"?\")[0].split(TEL)[1].trim());\n } else if (validateUrl(href, CALLTO)) {\n tel = decodeURIComponent(href.split(\"?\")[0].split(CALLTO)[1].trim());\n } else if (validateUrl(href, SMS)) {\n tel = decodeURIComponent(href.split(\"?\")[0].split(SMS)[1].trim());\n }\n\n try {\n url = new URL(href);\n let urlParams: URLSearchParams = url.searchParams;\n\n // optional parameters for the phone number\n msg = urlParams.get(\"body\");\n } catch (error) {\n console.log(error);\n }\n } else if (installation == LESS_SPAM) {\n tel = mailgoElement.getAttribute(\"data-tel\");\n msg = mailgoElement.getAttribute(\"data-msg\");\n\n try {\n url = new URL(TEL + encodeURIComponent(tel));\n } catch (error) {\n console.log(error);\n }\n\n let parameters: string[] = [];\n\n // if msg is defined add it to parameters\n if (msg) parameters.push(\"body=\" + msg);\n\n // set the lessSpamHref\n lessSpamHref = buildLessSpamHref(\n TEL + encodeURIComponent(tel),\n parameters\n );\n }\n\n // if is in config use it\n if (typeof config?.validateTel !== \"undefined\") {\n validateTelConfig = config.validateTel;\n }\n\n // validate the phone number\n if (validateTelConfig) {\n if (!validateTel(tel)) return;\n }\n\n // Telegram username\n if (mailgoElement && mailgoElement.hasAttribute(\"data-telegram\")) {\n telegramUsername = mailgoElement.getAttribute(\"data-telegram\");\n } else {\n telegramUsername = null;\n }\n\n // Telegram username\n if (mailgoElement && mailgoElement.hasAttribute(\"data-skype\")) {\n skypeUsername = mailgoElement.getAttribute(\"data-skype\");\n } else {\n skypeUsername = null;\n }\n }\n\n // if dark is in config or contained in the element\n if (config?.dark || mailgoElement.classList.contains(\"dark\")) {\n enableDarkMode();\n } else {\n disableDarkMode();\n }\n\n // render mailgo\n mailgoRender();\n\n return true;\n}\n\n/**\n * mailgoDirectRender\n * function to render a mailgo directly from a URL\n */\nfunction mailgoDirectRender(directUrl: string): boolean {\n // start mailgo\n mailgo();\n\n if (validateUrl(directUrl, MAILTO) || validateUrl(directUrl, MAILGO)) {\n activeMailgoType = {\n type: MAILGO_MAIL,\n installation: CLASSIC,\n };\n mailgoPreRender(directUrl);\n return true;\n } else if (\n validateUrl(directUrl, TEL) ||\n validateUrl(directUrl, CALLTO) ||\n validateUrl(directUrl, SMS)\n ) {\n activeMailgoType = {\n type: MAILGO_TEL,\n installation: CLASSIC,\n };\n mailgoPreRender(directUrl);\n return true;\n }\n return false;\n}\n\n/**\n * mailgoRender\n * function to render a mailgo (mail or tel)\n */\nfunction mailgoRender(): boolean {\n // get the type from current mailgo type\n let type: MailgoModalType = activeMailgoType?.type;\n\n // if type is not defined return\n if (!type) return false;\n\n // mailgo mail\n if (type === MAILGO_MAIL) {\n // the title of the modal (email address)\n title.textContent = mail.split(\",\").join(\"\\n\");\n\n // add the details if provided\n if (mailgoConfigAttributeEnabled(\"detail\", \"cc\") && cc) {\n detailCc.style.display = \"block\";\n ccValue.textContent = cc.split(\",\").join(\"\\n\");\n } else {\n detailCc.style.display = \"none\";\n }\n\n if (mailgoConfigAttributeEnabled(\"detail\", \"bcc\") && bcc) {\n detailBcc.style.display = \"block\";\n bccValue.textContent = bcc.split(\",\").join(\"\\n\");\n } else {\n detailBcc.style.display = \"none\";\n }\n\n if (mailgoConfigAttributeEnabled(\"detail\", \"subject\") && subject) {\n detailSubject.style.display = \"block\";\n subjectValue.textContent = subject;\n } else {\n detailSubject.style.display = \"none\";\n }\n\n if (mailgoConfigAttributeEnabled(\"detail\", \"body\") && bodyMail) {\n detailBody.style.display = \"block\";\n bodyValue.textContent = bodyMail;\n } else {\n detailBody.style.display = \"none\";\n }\n\n // add the actions\n gmail.addEventListener(\"click\", openGmail);\n\n outlook.addEventListener(\"click\", openOutlook);\n\n yahoo.addEventListener(\"click\", openYahooMail);\n\n open.addEventListener(\"click\", openDefault);\n\n copyMail.addEventListener(\"click\", copy);\n }\n // mailgo tel\n else if (type === MAILGO_TEL) {\n // the title of the modal (tel)\n titleTel.textContent = tel;\n\n if (mailgoConfigAttributeEnabled(\"detail\", \"msg\") && msg) {\n detailMsg.style.display = \"block\";\n msgValue.textContent = msg;\n } else {\n detailMsg.style.display = \"none\";\n }\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\", openDefault);\n\n copyTel.addEventListener(\"click\", copy);\n }\n\n // show the mailgo\n showMailgo(type);\n\n // add listener keyDown\n document.addEventListener(\"keydown\", mailgoKeydown);\n\n return true;\n}\n\n// actions\nconst openGmail = (event?: Event): void => {\n event.preventDefault();\n\n let urlString: string;\n let installation: MailgoInstallationType = activeMailgoType?.installation;\n\n if (installation === CLASSIC) {\n try {\n urlString = url.toString();\n } catch (e) {\n urlString = href;\n }\n } else if (installation === LESS_SPAM) {\n urlString = lessSpamHref;\n }\n\n // Gmail url\n let gmailUrl: string =\n \"https://mail.google.com/mail/?extsrc=mailto&url=\" +\n encodeURIComponent(urlString);\n\n // open the link\n window.open(gmailUrl, \"_blank\", \"noopener, noreferrer\");\n\n // hide the modal\n hideMailgo();\n};\n\nconst openOutlook = (event?: Event): void => {\n event.preventDefault();\n\n // Outlook starting url\n let startingOutlookUrl: string =\n \"https://outlook.live.com/owa/?path=/mail/action/compose&to=\";\n\n // let the user to decide to open Office365 Outlook instead of the classic outlook.live.com\n if (config?.office365) {\n startingOutlookUrl =\n \"https://outlook.office365.com/owa/?path=/mail/action/compose&to=\";\n }\n\n // Outlook url\n let outlookUrl: string = startingOutlookUrl + encodeURIComponent(mail);\n\n // the details if provided\n if (subject) {\n outlookUrl = outlookUrl.concat(\"&subject=\" + encodeURIComponent(subject));\n }\n\n if (bodyMail) {\n outlookUrl = outlookUrl.concat(\"&body=\" + encodeURIComponent(bodyMail));\n }\n\n // open the link\n window.open(outlookUrl, \"_blank\", \"noopener, noreferrer\");\n\n // hide the modal\n hideMailgo();\n};\n\nconst openYahooMail = (event?: Event): void => {\n event.preventDefault();\n\n // Yahoo url\n let yahooUrl: string = \"https://compose.mail.yahoo.com/?to=\" + mail;\n\n // the details if provided\n if (subject) {\n yahooUrl = yahooUrl.concat(\"&subject=\" + encodeURIComponent(subject));\n }\n if (bodyMail) {\n yahooUrl = yahooUrl.concat(\"&body=\" + encodeURIComponent(bodyMail));\n }\n\n // open the link\n window.open(yahooUrl, \"_blank\", \"noopener, noreferrer\");\n\n // hide the modal\n hideMailgo();\n};\n\nconst openTelegram = (event?: Event): void => {\n event.preventDefault();\n\n // check if telegramUsername exists\n if (telegramUsername) {\n // Telegram url\n let tgUrl: string = \"https://t.me/\" + encodeURIComponent(telegramUsername);\n\n // open the url\n window.open(tgUrl, \"_blank\", \"noopener, noreferrer\");\n\n // hide the modal\n hideMailgo();\n }\n};\n\nconst openSkype = (event?: Event): void => {\n event.preventDefault();\n\n let skype: string = skypeUsername || tel;\n\n // Telegram url\n let skypeUrl: string = \"skype:\" + encodeURIComponent(skype);\n\n // open the url\n window.open(skypeUrl, \"_blank\", \"noopener, noreferrer\");\n\n // hide the modal\n hideMailgo();\n};\n\nconst openWhatsApp = (event?: Event): void => {\n event.preventDefault();\n\n // WhatsApp API doesn't work with non number digits and leading 0s: https://faq.whatsapp.com/general/chats/how-to-use-click-to-chat/\n let whatappTel = tel.replace(notNumber, \"\").replace(leadingZeros, \"\");\n\n // WhatsApp url\n let waUrl: string = \"https://wa.me/\" + encodeURIComponent(whatappTel);\n\n // the details if provided\n if (msg) {\n waUrl = waUrl.concat(\"?text=\" + encodeURIComponent(msg));\n }\n\n // open the url\n window.open(waUrl, \"_blank\", \"noopener, noreferrer\");\n\n // hide the modal\n hideMailgo();\n};\n\nconst openDefault = (event?: Event): void => {\n event.preventDefault();\n\n let installation: MailgoInstallationType = activeMailgoType?.installation;\n\n // if the installation is classic the browser can follow the default behaviour\n if (installation === CLASSIC) {\n window.location.href = href;\n } else if (installation === LESS_SPAM) {\n // if the installation is less-spam use the built less-spam href\n window.location.href = lessSpamHref;\n }\n\n hideMailgo();\n};\n\nconst copy = (event?: Event): void => {\n event.preventDefault();\n\n // the correct copyButton (mail or tel)\n if (mailgoIsShowing()) {\n let activeCopy: HTMLElement;\n\n let type: MailgoModalType = activeMailgoType?.type;\n\n if (type === MAILGO_MAIL) {\n // in case it is showing mail modal copy email address\n copyToClipboard(mail);\n activeCopy = copyMail;\n } else {\n // in case it is showing tel modal copy phone number\n copyToClipboard(tel);\n activeCopy = copyTel;\n }\n\n activeCopy.textContent = strings.copied || defaultStrings.copied;\n setTimeout(() => {\n activeCopy.textContent = strings.copy || defaultStrings.copy;\n // hide after the timeout\n hideMailgo();\n }, 999);\n }\n};\n\n// function to find if a link is a mailto, tel, callto or sms\nconst validateUrl = (url: string, type: string = MAILTO) => {\n let regexValidate = new RegExp(\"^\" + type + \"((.)+)\", \"gi\");\n return regexValidate.test(url);\n};\n\n// function that returns if an element is a mailgo\nfunction getMailgoTypeByElement(element: HTMLElement): MailgoType | null {\n let elementHref: string = (element as HTMLLinkElement).getAttribute(\"href\");\n\n // return null if there is no-mailgo in class\n if (element.classList?.contains(NO_MAILGO)) {\n return null;\n }\n\n // the case of classic type of mailgo, like a href=mailto:... or a href=tel:... and the class=mailgo with a useful href\n if (elementHref || element.classList?.contains(\"mailgo\")) {\n if (validateUrl(elementHref, MAILTO) || validateUrl(elementHref, MAILGO)) {\n // a mailto: or mailgo:\n return {\n type: MAILGO_MAIL,\n installation: CLASSIC,\n };\n } else if (\n validateUrl(elementHref, TEL) ||\n validateUrl(elementHref, CALLTO)\n ) {\n // a tel: or callto:\n return {\n type: MAILGO_TEL,\n installation: CLASSIC,\n };\n } else if (validateUrl(elementHref, SMS)) {\n // a sms:\n return {\n type: MAILGO_SMS,\n installation: CLASSIC,\n };\n }\n }\n\n if (elementHref === \"#mailgo\" || element.classList?.contains(\"mailgo\")) {\n // less-spam installation of mailgo, check to the attributes\n if (\n element.hasAttribute(\"data-address\") &&\n element.hasAttribute(\"data-domain\")\n ) {\n // less-spam mailto with data-address and data-domain\n return {\n type: MAILGO_MAIL,\n installation: LESS_SPAM,\n };\n } else if (element.hasAttribute(\"data-tel\")) {\n // less-spam tel with data-tel\n return {\n type: MAILGO_TEL,\n installation: LESS_SPAM,\n };\n } else if (element.hasAttribute(\"data-msg\")) {\n // less-spam sms with data-msd\n return {\n type: MAILGO_SMS,\n installation: LESS_SPAM,\n };\n }\n }\n\n return null;\n}\n\n/**\n * mailgoKeydown\n * function to manage the keydown event when the modal is showing, return a boolean that represents if a useful key has been pressed\n */\nconst mailgoKeydown = (keyboardEvent: KeyboardEvent): boolean => {\n // if mailgo is showing\n if (mailgoIsShowing()) {\n let type: MailgoModalType = activeMailgoType?.type;\n\n if (type === MAILGO_MAIL) {\n switch (keyboardEvent.keyCode) {\n case 27:\n // Escape\n hideMailgo();\n return true;\n case 71:\n // g -> open GMail\n openGmail();\n return true;\n case 79:\n // o -> open Outlook\n openOutlook();\n return true;\n case 89:\n // y -> open Yahoo Mail\n openYahooMail();\n return true;\n case 32:\n case 13:\n // spacebar or enter -> open default\n openDefault();\n return true;\n case 67:\n // c -> copy\n copy();\n return true;\n default:\n return false;\n }\n } else if (type === MAILGO_TEL) {\n switch (keyboardEvent.keyCode) {\n case 27:\n // Escape\n hideMailgo();\n return true;\n case 84:\n // t -> open Telegram\n openTelegram();\n return true;\n case 87:\n // w -> open WhatsApp\n openWhatsApp();\n return true;\n case 83:\n // s -> open Skype\n openSkype();\n return true;\n case 32:\n case 13:\n // spacebar or enter -> open default\n openDefault();\n return true;\n case 67:\n // c -> copy\n copy();\n return true;\n default:\n return false;\n }\n }\n }\n return false;\n};\n\n// show the modal\nconst showMailgo = (type: MailgoModalType): 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(MAILGO_MAIL, \"none\");\n setModalDisplay(MAILGO_TEL, \"none\");\n\n // remove listener keyDown\n document.removeEventListener(\"keydown\", mailgoKeydown);\n};\n\n// is the mailgo modal hidden?\nconst mailgoIsShowing = (): boolean => {\n return (\n (mailtoEnabled && getModalDisplay(MAILGO_MAIL) === \"flex\") ||\n ((telEnabled || smsEnabled) && getModalDisplay(MAILGO_TEL) === \"flex\")\n );\n};\n\nconst byElement = (): HTMLLinkElement => {\n // by element in the footer\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// get the correct HTMLElement from a type\nconst getModalHTMLElement = (type: MailgoModalType = MAILGO_MAIL) => {\n if (type === MAILGO_TEL) {\n return modalTel;\n } else {\n return modalMailto;\n }\n};\n\n// get display value\nconst getModalDisplay = (ref: MailgoModalType = MAILGO_MAIL): string =>\n getModalHTMLElement(ref).style.display;\n\n// set display value\nconst setModalDisplay = (\n ref: MailgoModalType = MAILGO_MAIL,\n value: string\n): void => {\n let modal = getModalHTMLElement(ref);\n\n if (modal) {\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\n// enable dark mode\nconst enableDarkMode = () => {\n // get the type from current mailgo type\n let type: MailgoModalType = activeMailgoType?.type;\n if (type) {\n getModalHTMLElement(type).classList.add(\"m-dark\");\n }\n};\n\n// disable dark mode\nconst disableDarkMode = () => {\n // get the type from current mailgo type\n let type: MailgoModalType = activeMailgoType?.type;\n if (type) {\n getModalHTMLElement(type).classList.remove(\"m-dark\");\n }\n};\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// function to recreate a mailto: or tel: href from less-spam\nconst buildLessSpamHref = (type: string, parameters: string[]): string => {\n lessSpamHref = type;\n if (parameters && parameters.length > 0) {\n let joinedParams = parameters.join(\"&\");\n lessSpamHref = lessSpamHref.concat(\"?\" + joinedParams);\n }\n return lessSpamHref;\n};\n\n// function to check an attribute is enabled or not, by default considering it enabled\nconst mailgoConfigAttributeEnabled = (\n type: \"action\" | \"detail\",\n attribute: MailgoAction | MailgoDetail\n): boolean => {\n // by default all the actions and attribute are enabled\n if (!config) {\n return true;\n }\n\n // if the attribute type is action consider the actions config attribute\n if (type === \"action\") {\n if (config && !config?.actions) {\n return true;\n }\n\n if (\n config &&\n config.actions &&\n config?.actions[attribute as MailgoAction] === false\n ) {\n return false;\n }\n } else if (type === \"detail\") {\n // else consider the details attribute\n\n if (config && !config?.details) {\n return true;\n }\n\n if (\n config &&\n config.details &&\n config?.details[attribute as MailgoDetail] === false\n ) {\n return false;\n }\n }\n\n return true;\n};\n\n// manage the language of mailgo\nconst mailgoSetLanguage = (): string => {\n let languageType = \"default lang\";\n\n // if a language is defined in configuration use it\n if (\n config?.lang &&\n (languages as MailgoLanguages).indexOf(config.lang) !== -1\n ) {\n lang = config.lang;\n languageType = \"config lang\";\n } else {\n // else if is defined use it!\n // keep the lang from html\n let htmlLang: string = document.documentElement.lang;\n\n // find the correct language using the lang attribute, not just a === because there a are cases like fr-FR or fr_FR in html lang attribute\n (languages as MailgoLanguages).forEach((language: any) => {\n if (new RegExp(\"^\" + language, \"gi\").test(htmlLang)) {\n lang = language;\n languageType = \"html lang\";\n }\n });\n }\n\n // strings\n strings = (translations as MailgoTranslations)[lang];\n\n return languageType;\n};\n\nconst mailgoStyle = (): void => {\n if (!document.getElementById(\"mailgo-style\")) {\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\n// mailgo\nfunction mailgo(mailgoConfig?: MailgoConfig): boolean {\n try {\n // polyfill mailgo\n // mailgoPolyfill();\n\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 (typeof window !== \"undefined\") {\n // if is set in config use it (load the mailgo CSS)\n if (typeof config?.loadCSS !== \"undefined\") {\n loadCSSConfig = config.loadCSS;\n }\n\n // if is set in config use it (enable mailto)\n if (typeof config?.mailto !== \"undefined\") {\n mailtoEnabled = config.mailto;\n }\n\n // if is set in config use it (enable tel)\n if (typeof config?.tel !== \"undefined\") {\n telEnabled = config.tel;\n }\n\n // if is set in config use it (enable sms)\n if (typeof config?.sms !== \"undefined\") {\n smsEnabled = config.sms;\n }\n\n // if load css enabled load it!\n if (loadCSSConfig) {\n // add the style for mailgo\n mailgoStyle();\n }\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 mailgoInit,\n config.listenerOptions\n );\n } else {\n // no listener options\n document.addEventListener(config.initEvent, mailgoInit);\n }\n } else {\n mailgoInit();\n }\n\n return true;\n }\n } catch (error) {\n console.log(error);\n }\n return false;\n}\n\n// define the methods also for window element\nif (typeof window !== \"undefined\") {\n (window as any).getMailgoTypeByElement = getMailgoTypeByElement;\n (window as any).mailgoClickListener = mailgoClickListener;\n (window as any).mailgoCheckRender = mailgoClickListener; // for compatibility with old version of mailgo\n (window as any).mailgoPreRender = mailgoPreRender;\n (window as any).mailgoDirectRender = mailgoDirectRender;\n (window as any).mailgoRender = mailgoRender;\n (window as any).mailgo = mailgo;\n}\n\nexport {\n getMailgoTypeByElement,\n mailgoClickListener,\n mailgoPreRender,\n mailgoDirectRender,\n mailgoRender,\n};\n\nexport default mailgo;\n","// webpack > lib/mailgo.js\n\nimport mailgo, {\n getMailgoTypeByElement,\n mailgoClickListener,\n mailgoPreRender,\n mailgoDirectRender,\n mailgoRender,\n} from \"../src/mailgo\";\n\n// start function\nconst start = mailgo;\n\n// compatibility with old version of mailgo\nconst mailgoCheckRender = mailgoClickListener;\n\nexport {\n getMailgoTypeByElement,\n mailgoClickListener,\n mailgoCheckRender,\n mailgoPreRender,\n mailgoDirectRender,\n mailgoRender,\n mailgo,\n start,\n};\n\nexport default mailgo;\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tif(__webpack_module_cache__[moduleId]) {\n\t\treturn __webpack_module_cache__[moduleId].exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","// startup\n// Load entry module and return exports\n// This entry module doesn't tell about it's top-level declarations so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(507);\n"],"sourceRoot":""} \ No newline at end of file diff --git a/package.json b/package.json index 96b0a08..5defeb5 100644 --- a/package.json +++ b/package.json @@ -49,16 +49,16 @@ }, "homepage": "https://mailgo.dev", "devDependencies": { - "@babel/cli": "^7.12.10", - "@babel/core": "^7.12.10", - "@babel/parser": "^7.12.11", - "@babel/preset-env": "^7.12.11", - "@babel/preset-typescript": "^7.12.7", - "@babel/types": "^7.12.12", - "@types/node": "^14.14.20", - "autoprefixer": "^10.2.1", + "@babel/cli": "^7.12.16", + "@babel/core": "^7.12.16", + "@babel/parser": "^7.12.16", + "@babel/preset-env": "^7.12.16", + "@babel/preset-typescript": "^7.12.16", + "@babel/types": "^7.12.13", + "@types/node": "^14.14.28", + "autoprefixer": "^10.2.4", "babel-loader": "^8.2.2", - "css-loader": "^5.0.1", + "css-loader": "^5.0.2", "css-minimizer-webpack-plugin": "^1.2.0", "gulp": "^4.0.2", "gulp-clean-css": "^4.3.0", @@ -67,16 +67,16 @@ "gulp-rename": "^2.0.0", "gulp-sass": "^4.1.0", "gulp-sourcemaps": "^3.0.0", - "postcss": "^8.2.4", - "sass": "^1.32.4", - "sass-loader": "^10.1.1", + "postcss": "^8.2.6", + "sass": "^1.32.7", + "sass-loader": "^11.0.1", "style-loader": "^2.0.0", "terser-webpack-plugin": "^5.1.1", "to-string-loader": "^1.1.6", - "ts-loader": "^8.0.14", - "typescript": "^4.1.3", - "webpack": "^5.14.0", - "webpack-cli": "^4.3.1", + "ts-loader": "^8.0.17", + "typescript": "^4.1.5", + "webpack": "^5.22.0", + "webpack-cli": "^4.5.0", "webpack-dev-server": "^3.11.2" }, "peerDependencies": { diff --git a/yarn.lock b/yarn.lock index 1d4d851..aeaf0ba 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,10 +2,10 @@ # yarn lockfile v1 -"@babel/cli@^7.12.10": - version "7.12.10" - resolved "https://registry.yarnpkg.com/@babel/cli/-/cli-7.12.10.tgz#67a1015b1cd505bde1696196febf910c4c339a48" - integrity sha512-+y4ZnePpvWs1fc/LhZRTHkTesbXkyBYuOB+5CyodZqrEuETXi3zOVfpAQIdgC3lXbHLTDG9dQosxR9BhvLKDLQ== +"@babel/cli@^7.12.16": + version "7.12.16" + resolved "https://registry.yarnpkg.com/@babel/cli/-/cli-7.12.16.tgz#bde5bc5118d90e539603abcd37938c5f0fd6c87a" + integrity sha512-cKWkNCxbpjSuYLbdeJs4kOnyW1E2D65pu7SodXDOkzahIN/wSgT8geIqf6+pJTgCo47zrOMGcJTmjSFe5WKYwQ== dependencies: commander "^4.0.1" convert-source-map "^1.1.0" @@ -19,31 +19,31 @@ "@nicolo-ribaudo/chokidar-2" "2.1.8-no-fsevents" chokidar "^3.4.0" -"@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.11": - version "7.12.11" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f" - integrity sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw== - dependencies: - "@babel/highlight" "^7.10.4" - -"@babel/compat-data@^7.12.5", "@babel/compat-data@^7.12.7": - version "7.12.7" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.12.7.tgz#9329b4782a7d6bbd7eef57e11addf91ee3ef1e41" - integrity sha512-YaxPMGs/XIWtYqrdEOZOCPsVWfEoriXopnsz3/i7apYPXQ3698UFhS6dVT1KN5qOsWmVgw/FOrmQgpRaZayGsw== - -"@babel/core@^7.12.10": - version "7.12.10" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.12.10.tgz#b79a2e1b9f70ed3d84bbfb6d8c4ef825f606bccd" - integrity sha512-eTAlQKq65zHfkHZV0sIVODCPGVgoo1HdBlbSLi9CqOzuZanMv2ihzY+4paiKr1mH+XmYESMAmJ/dpZ68eN6d8w== - dependencies: - "@babel/code-frame" "^7.10.4" - "@babel/generator" "^7.12.10" - "@babel/helper-module-transforms" "^7.12.1" - "@babel/helpers" "^7.12.5" - "@babel/parser" "^7.12.10" - "@babel/template" "^7.12.7" - "@babel/traverse" "^7.12.10" - "@babel/types" "^7.12.10" +"@babel/code-frame@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.13.tgz#dcfc826beef65e75c50e21d3837d7d95798dd658" + integrity sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g== + dependencies: + "@babel/highlight" "^7.12.13" + +"@babel/compat-data@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.12.13.tgz#27e19e0ed3726ccf54067ced4109501765e7e2e8" + integrity sha512-U/hshG5R+SIoW7HVWIdmy1cB7s3ki+r3FpyEZiCgpi4tFgPnX/vynY80ZGSASOIrUM6O7VxOgCZgdt7h97bUGg== + +"@babel/core@^7.12.16": + version "7.12.16" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.12.16.tgz#8c6ba456b23b680a6493ddcfcd9d3c3ad51cab7c" + integrity sha512-t/hHIB504wWceOeaOoONOhu+gX+hpjfeN6YRBT209X/4sibZQfSF1I0HFRRlBe97UZZosGx5XwUg1ZgNbelmNw== + dependencies: + "@babel/code-frame" "^7.12.13" + "@babel/generator" "^7.12.15" + "@babel/helper-module-transforms" "^7.12.13" + "@babel/helpers" "^7.12.13" + "@babel/parser" "^7.12.16" + "@babel/template" "^7.12.13" + "@babel/traverse" "^7.12.13" + "@babel/types" "^7.12.13" convert-source-map "^1.7.0" debug "^4.1.0" gensync "^1.0.0-beta.1" @@ -52,164 +52,155 @@ semver "^5.4.1" source-map "^0.5.0" -"@babel/generator@^7.12.10", "@babel/generator@^7.12.11": - version "7.12.11" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.12.11.tgz#98a7df7b8c358c9a37ab07a24056853016aba3af" - integrity sha512-Ggg6WPOJtSi8yYQvLVjG8F/TlpWDlKx0OpS4Kt+xMQPs5OaGYWy+v1A+1TvxI6sAMGZpKWWoAQ1DaeQbImlItA== +"@babel/generator@^7.12.13", "@babel/generator@^7.12.15": + version "7.12.15" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.12.15.tgz#4617b5d0b25cc572474cc1aafee1edeaf9b5368f" + integrity sha512-6F2xHxBiFXWNSGb7vyCUTBF8RCLY66rS0zEPcP8t/nQyXjha5EuK4z7H5o7fWG8B4M7y6mqVWq1J+1PuwRhecQ== dependencies: - "@babel/types" "^7.12.11" + "@babel/types" "^7.12.13" jsesc "^2.5.1" source-map "^0.5.0" -"@babel/helper-annotate-as-pure@^7.10.4": - version "7.12.10" - resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.12.10.tgz#54ab9b000e60a93644ce17b3f37d313aaf1d115d" - integrity sha512-XplmVbC1n+KY6jL8/fgLVXXUauDIB+lD5+GsQEh6F6GBF1dq1qy4DP4yXWzDKcoqXB3X58t61e85Fitoww4JVQ== +"@babel/helper-annotate-as-pure@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.12.13.tgz#0f58e86dfc4bb3b1fcd7db806570e177d439b6ab" + integrity sha512-7YXfX5wQ5aYM/BOlbSccHDbuXXFPxeoUmfWtz8le2yTkTZc+BxsiEnENFoi2SlmA8ewDkG2LgIMIVzzn2h8kfw== dependencies: - "@babel/types" "^7.12.10" + "@babel/types" "^7.12.13" -"@babel/helper-builder-binary-assignment-operator-visitor@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.10.4.tgz#bb0b75f31bf98cbf9ff143c1ae578b87274ae1a3" - integrity sha512-L0zGlFrGWZK4PbT8AszSfLTM5sDU1+Az/En9VrdT8/LmEiJt4zXt+Jve9DCAnQcbqDhCI+29y/L93mrDzddCcg== +"@babel/helper-builder-binary-assignment-operator-visitor@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.12.13.tgz#6bc20361c88b0a74d05137a65cac8d3cbf6f61fc" + integrity sha512-CZOv9tGphhDRlVjVkAgm8Nhklm9RzSmWpX2my+t7Ua/KT616pEzXsQCjinzvkRvHWJ9itO4f296efroX23XCMA== dependencies: - "@babel/helper-explode-assignable-expression" "^7.10.4" - "@babel/types" "^7.10.4" + "@babel/helper-explode-assignable-expression" "^7.12.13" + "@babel/types" "^7.12.13" -"@babel/helper-compilation-targets@^7.12.5": - version "7.12.5" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.12.5.tgz#cb470c76198db6a24e9dbc8987275631e5d29831" - integrity sha512-+qH6NrscMolUlzOYngSBMIOQpKUGPPsc61Bu5W10mg84LxZ7cmvnBHzARKbDoFxVvqqAbj6Tg6N7bSrWSPXMyw== +"@babel/helper-compilation-targets@^7.12.16": + version "7.12.16" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.12.16.tgz#6905238b4a5e02ba2d032c1a49dd1820fe8ce61b" + integrity sha512-dBHNEEaZx7F3KoUYqagIhRIeqyyuI65xMndMZ3WwGwEBI609I4TleYQHcrS627vbKyNTXqShoN+fvYD9HuQxAg== dependencies: - "@babel/compat-data" "^7.12.5" - "@babel/helper-validator-option" "^7.12.1" + "@babel/compat-data" "^7.12.13" + "@babel/helper-validator-option" "^7.12.16" browserslist "^4.14.5" semver "^5.5.0" -"@babel/helper-create-class-features-plugin@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.12.1.tgz#3c45998f431edd4a9214c5f1d3ad1448a6137f6e" - integrity sha512-hkL++rWeta/OVOBTRJc9a5Azh5mt5WgZUGAKMD8JM141YsE08K//bp1unBBieO6rUKkIPyUE0USQ30jAy3Sk1w== +"@babel/helper-create-class-features-plugin@^7.12.13", "@babel/helper-create-class-features-plugin@^7.12.16": + version "7.12.16" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.12.16.tgz#955d5099fd093e5afb05542190f8022105082c61" + integrity sha512-KbSEj8l9zYkMVHpQqM3wJNxS1d9h3U9vm/uE5tpjMbaj3lTp+0noe3KPsV5dSD9jxKnf9jO9Ip9FX5PKNZCKow== dependencies: - "@babel/helper-function-name" "^7.10.4" - "@babel/helper-member-expression-to-functions" "^7.12.1" - "@babel/helper-optimise-call-expression" "^7.10.4" - "@babel/helper-replace-supers" "^7.12.1" - "@babel/helper-split-export-declaration" "^7.10.4" + "@babel/helper-function-name" "^7.12.13" + "@babel/helper-member-expression-to-functions" "^7.12.16" + "@babel/helper-optimise-call-expression" "^7.12.13" + "@babel/helper-replace-supers" "^7.12.13" + "@babel/helper-split-export-declaration" "^7.12.13" -"@babel/helper-create-regexp-features-plugin@^7.12.1": - version "7.12.7" - resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.7.tgz#2084172e95443fa0a09214ba1bb328f9aea1278f" - integrity sha512-idnutvQPdpbduutvi3JVfEgcVIHooQnhvhx0Nk9isOINOIGYkZea1Pk2JlJRiUnMefrlvr0vkByATBY/mB4vjQ== +"@babel/helper-create-regexp-features-plugin@^7.12.13": + version "7.12.16" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.16.tgz#3b31d13f39f930fad975e151163b7df7d4ffe9d3" + integrity sha512-jAcQ1biDYZBdaAxB4yg46/XirgX7jBDiMHDbwYQOgtViLBXGxJpZQ24jutmBqAIB/q+AwB6j+NbBXjKxEY8vqg== dependencies: - "@babel/helper-annotate-as-pure" "^7.10.4" + "@babel/helper-annotate-as-pure" "^7.12.13" regexpu-core "^4.7.1" -"@babel/helper-define-map@^7.10.4": - version "7.10.5" - resolved "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.10.5.tgz#b53c10db78a640800152692b13393147acb9bb30" - integrity sha512-fMw4kgFB720aQFXSVaXr79pjjcW5puTCM16+rECJ/plGS+zByelE8l9nCpV1GibxTnFVmUuYG9U8wYfQHdzOEQ== +"@babel/helper-explode-assignable-expression@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.12.13.tgz#0e46990da9e271502f77507efa4c9918d3d8634a" + integrity sha512-5loeRNvMo9mx1dA/d6yNi+YiKziJZFylZnCo1nmFF4qPU4yJ14abhWESuSMQSlQxWdxdOFzxXjk/PpfudTtYyw== dependencies: - "@babel/helper-function-name" "^7.10.4" - "@babel/types" "^7.10.5" - lodash "^4.17.19" + "@babel/types" "^7.12.13" -"@babel/helper-explode-assignable-expression@^7.10.4": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.12.1.tgz#8006a466695c4ad86a2a5f2fb15b5f2c31ad5633" - integrity sha512-dmUwH8XmlrUpVqgtZ737tK88v07l840z9j3OEhCLwKTkjlvKpfqXVIZ0wpK3aeOxspwGrf/5AP5qLx4rO3w5rA== +"@babel/helper-function-name@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.12.13.tgz#93ad656db3c3c2232559fd7b2c3dbdcbe0eb377a" + integrity sha512-TZvmPn0UOqmvi5G4vvw0qZTpVptGkB1GL61R6lKvrSdIxGm5Pky7Q3fpKiIkQCAtRCBUwB0PaThlx9vebCDSwA== dependencies: - "@babel/types" "^7.12.1" + "@babel/helper-get-function-arity" "^7.12.13" + "@babel/template" "^7.12.13" + "@babel/types" "^7.12.13" -"@babel/helper-function-name@^7.10.4", "@babel/helper-function-name@^7.12.11": - version "7.12.11" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.12.11.tgz#1fd7738aee5dcf53c3ecff24f1da9c511ec47b42" - integrity sha512-AtQKjtYNolKNi6nNNVLQ27CP6D9oFR6bq/HPYSizlzbp7uC1M59XJe8L+0uXjbIaZaUJF99ruHqVGiKXU/7ybA== +"@babel/helper-get-function-arity@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.13.tgz#bc63451d403a3b3082b97e1d8b3fe5bd4091e583" + integrity sha512-DjEVzQNz5LICkzN0REdpD5prGoidvbdYk1BVgRUOINaWJP2t6avB27X1guXK1kXNrX0WMfsrm1A/ZBthYuIMQg== dependencies: - "@babel/helper-get-function-arity" "^7.12.10" - "@babel/template" "^7.12.7" - "@babel/types" "^7.12.11" + "@babel/types" "^7.12.13" -"@babel/helper-get-function-arity@^7.12.10": - version "7.12.10" - resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.10.tgz#b158817a3165b5faa2047825dfa61970ddcc16cf" - integrity sha512-mm0n5BPjR06wh9mPQaDdXWDoll/j5UpCAPl1x8fS71GHm7HA6Ua2V4ylG1Ju8lvcTOietbPNNPaSilKj+pj+Ag== +"@babel/helper-hoist-variables@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.12.13.tgz#13aba58b7480b502362316ea02f52cca0e9796cd" + integrity sha512-KSC5XSj5HreRhYQtZ3cnSnQwDzgnbdUDEFsxkN0m6Q3WrCRt72xrnZ8+h+pX7YxM7hr87zIO3a/v5p/H3TrnVw== dependencies: - "@babel/types" "^7.12.10" + "@babel/types" "^7.12.13" -"@babel/helper-hoist-variables@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.10.4.tgz#d49b001d1d5a68ca5e6604dda01a6297f7c9381e" - integrity sha512-wljroF5PgCk2juF69kanHVs6vrLwIPNp6DLD+Lrl3hoQ3PpPPikaDRNFA+0t81NOoMt2DL6WW/mdU8k4k6ZzuA== +"@babel/helper-member-expression-to-functions@^7.12.13", "@babel/helper-member-expression-to-functions@^7.12.16": + version "7.12.16" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.12.16.tgz#41e0916b99f8d5f43da4f05d85f4930fa3d62b22" + integrity sha512-zYoZC1uvebBFmj1wFAlXwt35JLEgecefATtKp20xalwEK8vHAixLBXTGxNrVGEmTT+gzOThUgr8UEdgtalc1BQ== dependencies: - "@babel/types" "^7.10.4" + "@babel/types" "^7.12.13" -"@babel/helper-member-expression-to-functions@^7.12.1", "@babel/helper-member-expression-to-functions@^7.12.7": - version "7.12.7" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.12.7.tgz#aa77bd0396ec8114e5e30787efa78599d874a855" - integrity sha512-DCsuPyeWxeHgh1Dus7APn7iza42i/qXqiFPWyBDdOFtvS581JQePsc1F/nD+fHrcswhLlRc2UpYS1NwERxZhHw== +"@babel/helper-module-imports@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.12.13.tgz#ec67e4404f41750463e455cc3203f6a32e93fcb0" + integrity sha512-NGmfvRp9Rqxy0uHSSVP+SRIW1q31a7Ji10cLBcqSDUngGentY4FRiHOFZFE1CLU5eiL0oE8reH7Tg1y99TDM/g== dependencies: - "@babel/types" "^7.12.7" + "@babel/types" "^7.12.13" -"@babel/helper-module-imports@^7.12.1", "@babel/helper-module-imports@^7.12.5": - version "7.12.5" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.12.5.tgz#1bfc0229f794988f76ed0a4d4e90860850b54dfb" - integrity sha512-SR713Ogqg6++uexFRORf/+nPXMmWIn80TALu0uaFb+iQIUoR7bOC7zBWyzBs5b3tBBJXuyD0cRu1F15GyzjOWA== +"@babel/helper-module-transforms@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.12.13.tgz#01afb052dcad2044289b7b20beb3fa8bd0265bea" + integrity sha512-acKF7EjqOR67ASIlDTupwkKM1eUisNAjaSduo5Cz+793ikfnpe7p4Q7B7EWU2PCoSTPWsQkR7hRUWEIZPiVLGA== dependencies: - "@babel/types" "^7.12.5" - -"@babel/helper-module-transforms@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.12.1.tgz#7954fec71f5b32c48e4b303b437c34453fd7247c" - integrity sha512-QQzehgFAZ2bbISiCpmVGfiGux8YVFXQ0abBic2Envhej22DVXV9nCFaS5hIQbkyo1AdGb+gNME2TSh3hYJVV/w== - dependencies: - "@babel/helper-module-imports" "^7.12.1" - "@babel/helper-replace-supers" "^7.12.1" - "@babel/helper-simple-access" "^7.12.1" - "@babel/helper-split-export-declaration" "^7.11.0" - "@babel/helper-validator-identifier" "^7.10.4" - "@babel/template" "^7.10.4" - "@babel/traverse" "^7.12.1" - "@babel/types" "^7.12.1" + "@babel/helper-module-imports" "^7.12.13" + "@babel/helper-replace-supers" "^7.12.13" + "@babel/helper-simple-access" "^7.12.13" + "@babel/helper-split-export-declaration" "^7.12.13" + "@babel/helper-validator-identifier" "^7.12.11" + "@babel/template" "^7.12.13" + "@babel/traverse" "^7.12.13" + "@babel/types" "^7.12.13" lodash "^4.17.19" -"@babel/helper-optimise-call-expression@^7.10.4", "@babel/helper-optimise-call-expression@^7.12.10": - version "7.12.10" - resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.10.tgz#94ca4e306ee11a7dd6e9f42823e2ac6b49881e2d" - integrity sha512-4tpbU0SrSTjjt65UMWSrUOPZTsgvPgGG4S8QSTNHacKzpS51IVWGDj0yCwyeZND/i+LSN2g/O63jEXEWm49sYQ== +"@babel/helper-optimise-call-expression@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.13.tgz#5c02d171b4c8615b1e7163f888c1c81c30a2aaea" + integrity sha512-BdWQhoVJkp6nVjB7nkFWcn43dkprYauqtk++Py2eaf/GRDFm5BxRqEIZCiHlZUGAVmtwKcsVL1dC68WmzeFmiA== dependencies: - "@babel/types" "^7.12.10" + "@babel/types" "^7.12.13" -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz#2f75a831269d4f677de49986dff59927533cf375" - integrity sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg== +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.12.13.tgz#174254d0f2424d8aefb4dd48057511247b0a9eeb" + integrity sha512-C+10MXCXJLiR6IeG9+Wiejt9jmtFpxUc3MQqCmPY8hfCjyUGl9kT+B2okzEZrtykiwrc4dbCPdDoz0A/HQbDaA== -"@babel/helper-remap-async-to-generator@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.12.1.tgz#8c4dbbf916314f6047dc05e6a2217074238347fd" - integrity sha512-9d0KQCRM8clMPcDwo8SevNs+/9a8yWVVmaE80FGJcEP8N1qToREmWEGnBn8BUlJhYRFz6fqxeRL1sl5Ogsed7A== +"@babel/helper-remap-async-to-generator@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.12.13.tgz#170365f4140e2d20e5c88f8ba23c24468c296878" + integrity sha512-Qa6PU9vNcj1NZacZZI1Mvwt+gXDH6CTfgAkSjeRMLE8HxtDK76+YDId6NQR+z7Rgd5arhD2cIbS74r0SxD6PDA== dependencies: - "@babel/helper-annotate-as-pure" "^7.10.4" - "@babel/helper-wrap-function" "^7.10.4" - "@babel/types" "^7.12.1" + "@babel/helper-annotate-as-pure" "^7.12.13" + "@babel/helper-wrap-function" "^7.12.13" + "@babel/types" "^7.12.13" -"@babel/helper-replace-supers@^7.12.1": - version "7.12.11" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.12.11.tgz#ea511658fc66c7908f923106dd88e08d1997d60d" - integrity sha512-q+w1cqmhL7R0FNzth/PLLp2N+scXEK/L2AHbXUyydxp828F4FEa5WcVoqui9vFRiHDQErj9Zof8azP32uGVTRA== +"@babel/helper-replace-supers@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.12.13.tgz#00ec4fb6862546bd3d0aff9aac56074277173121" + integrity sha512-pctAOIAMVStI2TMLhozPKbf5yTEXc0OJa0eENheb4w09SrgOWEs+P4nTOZYJQCqs8JlErGLDPDJTiGIp3ygbLg== dependencies: - "@babel/helper-member-expression-to-functions" "^7.12.7" - "@babel/helper-optimise-call-expression" "^7.12.10" - "@babel/traverse" "^7.12.10" - "@babel/types" "^7.12.11" + "@babel/helper-member-expression-to-functions" "^7.12.13" + "@babel/helper-optimise-call-expression" "^7.12.13" + "@babel/traverse" "^7.12.13" + "@babel/types" "^7.12.13" -"@babel/helper-simple-access@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.12.1.tgz#32427e5aa61547d38eb1e6eaf5fd1426fdad9136" - integrity sha512-OxBp7pMrjVewSSC8fXDFrHrBcJATOOFssZwv16F3/6Xtc138GHybBfPbm9kfiqQHKhYQrlamWILwlDCeyMFEaA== +"@babel/helper-simple-access@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.12.13.tgz#8478bcc5cacf6aa1672b251c1d2dde5ccd61a6c4" + integrity sha512-0ski5dyYIHEfwpWGx5GPWhH35j342JaflmCeQmsPWcrOQDtCN6C1zKAVRFVbK53lPW2c9TsuLLSUDf0tIGJ5hA== dependencies: - "@babel/types" "^7.12.1" + "@babel/types" "^7.12.13" "@babel/helper-skip-transparent-expression-wrappers@^7.12.1": version "7.12.1" @@ -218,162 +209,162 @@ dependencies: "@babel/types" "^7.12.1" -"@babel/helper-split-export-declaration@^7.10.4", "@babel/helper-split-export-declaration@^7.11.0", "@babel/helper-split-export-declaration@^7.12.11": - version "7.12.11" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.11.tgz#1b4cc424458643c47d37022223da33d76ea4603a" - integrity sha512-LsIVN8j48gHgwzfocYUSkO/hjYAOJqlpJEc7tGXcIm4cubjVUf8LGW6eWRyxEu7gA25q02p0rQUWoCI33HNS5g== +"@babel/helper-split-export-declaration@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.13.tgz#e9430be00baf3e88b0e13e6f9d4eaf2136372b05" + integrity sha512-tCJDltF83htUtXx5NLcaDqRmknv652ZWCHyoTETf1CXYJdPC7nohZohjUgieXhv0hTJdRf2FjDueFehdNucpzg== dependencies: - "@babel/types" "^7.12.11" + "@babel/types" "^7.12.13" -"@babel/helper-validator-identifier@^7.10.4", "@babel/helper-validator-identifier@^7.12.11": +"@babel/helper-validator-identifier@^7.12.11": version "7.12.11" resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz#c9a1f021917dcb5ccf0d4e453e399022981fc9ed" integrity sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw== -"@babel/helper-validator-option@^7.12.1", "@babel/helper-validator-option@^7.12.11": - version "7.12.11" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.12.11.tgz#d66cb8b7a3e7fe4c6962b32020a131ecf0847f4f" - integrity sha512-TBFCyj939mFSdeX7U7DDj32WtzYY7fDcalgq8v3fBZMNOJQNn7nOYzMaUCiPxPYfCup69mtIpqlKgMZLvQ8Xhw== +"@babel/helper-validator-option@^7.12.16": + version "7.12.16" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.12.16.tgz#f73cbd3bbba51915216c5dea908e9b206bb10051" + integrity sha512-uCgsDBPUQDvzr11ePPo4TVEocxj8RXjUVSC/Y8N1YpVAI/XDdUwGJu78xmlGhTxj2ntaWM7n9LQdRtyhOzT2YQ== -"@babel/helper-wrap-function@^7.10.4": - version "7.12.3" - resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.12.3.tgz#3332339fc4d1fbbf1c27d7958c27d34708e990d9" - integrity sha512-Cvb8IuJDln3rs6tzjW3Y8UeelAOdnpB8xtQ4sme2MSZ9wOxrbThporC0y/EtE16VAtoyEfLM404Xr1e0OOp+ow== +"@babel/helper-wrap-function@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.12.13.tgz#e3ea8cb3ee0a16911f9c1b50d9e99fe8fe30f9ff" + integrity sha512-t0aZFEmBJ1LojdtJnhOaQEVejnzYhyjWHSsNSNo8vOYRbAJNh6r6GQF7pd36SqG7OKGbn+AewVQ/0IfYfIuGdw== dependencies: - "@babel/helper-function-name" "^7.10.4" - "@babel/template" "^7.10.4" - "@babel/traverse" "^7.10.4" - "@babel/types" "^7.10.4" + "@babel/helper-function-name" "^7.12.13" + "@babel/template" "^7.12.13" + "@babel/traverse" "^7.12.13" + "@babel/types" "^7.12.13" -"@babel/helpers@^7.12.5": - version "7.12.5" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.12.5.tgz#1a1ba4a768d9b58310eda516c449913fe647116e" - integrity sha512-lgKGMQlKqA8meJqKsW6rUnc4MdUk35Ln0ATDqdM1a/UpARODdI4j5Y5lVfUScnSNkJcdCRAaWkspykNoFg9sJA== +"@babel/helpers@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.12.13.tgz#3c75e993632e4dadc0274eae219c73eb7645ba47" + integrity sha512-oohVzLRZ3GQEk4Cjhfs9YkJA4TdIDTObdBEZGrd6F/T0GPSnuV6l22eMcxlvcvzVIPH3VTtxbseudM1zIE+rPQ== dependencies: - "@babel/template" "^7.10.4" - "@babel/traverse" "^7.12.5" - "@babel/types" "^7.12.5" + "@babel/template" "^7.12.13" + "@babel/traverse" "^7.12.13" + "@babel/types" "^7.12.13" -"@babel/highlight@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.10.4.tgz#7d1bdfd65753538fabe6c38596cdb76d9ac60143" - integrity sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA== +"@babel/highlight@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.12.13.tgz#8ab538393e00370b26271b01fa08f7f27f2e795c" + integrity sha512-kocDQvIbgMKlWxXe9fof3TQ+gkIPOUSEYhJjqUjvKMez3krV7vbzYCDq39Oj11UAVK7JqPVGQPlgE85dPNlQww== dependencies: - "@babel/helper-validator-identifier" "^7.10.4" + "@babel/helper-validator-identifier" "^7.12.11" chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@^7.12.10", "@babel/parser@^7.12.11", "@babel/parser@^7.12.7": - version "7.12.11" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.12.11.tgz#9ce3595bcd74bc5c466905e86c535b8b25011e79" - integrity sha512-N3UxG+uuF4CMYoNj8AhnbAcJF0PiuJ9KHuy1lQmkYsxTer/MAH9UBNHsBoAX/4s6NvlDD047No8mYVGGzLL4hg== +"@babel/parser@^7.12.13", "@babel/parser@^7.12.16": + version "7.12.16" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.12.16.tgz#cc31257419d2c3189d394081635703f549fc1ed4" + integrity sha512-c/+u9cqV6F0+4Hpq01jnJO+GLp2DdT63ppz9Xa+6cHaajM9VFzK/iDXiKK65YtpeVwu+ctfS6iqlMqRgQRzeCw== -"@babel/plugin-proposal-async-generator-functions@^7.12.1": - version "7.12.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.12.12.tgz#04b8f24fd4532008ab4e79f788468fd5a8476566" - integrity sha512-nrz9y0a4xmUrRq51bYkWJIO5SBZyG2ys2qinHsN0zHDHVsUaModrkpyWWWXfGqYQmOL3x9sQIcTNN/pBGpo09A== +"@babel/plugin-proposal-async-generator-functions@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.12.13.tgz#d1c6d841802ffb88c64a2413e311f7345b9e66b5" + integrity sha512-1KH46Hx4WqP77f978+5Ye/VUbuwQld2hph70yaw2hXS2v7ER2f3nlpNMu909HO2rbvP0NKLlMVDPh9KXklVMhA== dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/helper-remap-async-to-generator" "^7.12.1" + "@babel/helper-plugin-utils" "^7.12.13" + "@babel/helper-remap-async-to-generator" "^7.12.13" "@babel/plugin-syntax-async-generators" "^7.8.0" -"@babel/plugin-proposal-class-properties@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.12.1.tgz#a082ff541f2a29a4821065b8add9346c0c16e5de" - integrity sha512-cKp3dlQsFsEs5CWKnN7BnSHOd0EOW8EKpEjkoz1pO2E5KzIDNV9Ros1b0CnmbVgAGXJubOYVBOGCT1OmJwOI7w== +"@babel/plugin-proposal-class-properties@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.12.13.tgz#3d2ce350367058033c93c098e348161d6dc0d8c8" + integrity sha512-8SCJ0Ddrpwv4T7Gwb33EmW1V9PY5lggTO+A8WjyIwxrSHDUyBw4MtF96ifn1n8H806YlxbVCoKXbbmzD6RD+cA== dependencies: - "@babel/helper-create-class-features-plugin" "^7.12.1" - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-create-class-features-plugin" "^7.12.13" + "@babel/helper-plugin-utils" "^7.12.13" -"@babel/plugin-proposal-dynamic-import@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.12.1.tgz#43eb5c2a3487ecd98c5c8ea8b5fdb69a2749b2dc" - integrity sha512-a4rhUSZFuq5W8/OO8H7BL5zspjnc1FLd9hlOxIK/f7qG4a0qsqk8uvF/ywgBA8/OmjsapjpvaEOYItfGG1qIvQ== +"@babel/plugin-proposal-dynamic-import@^7.12.16": + version "7.12.16" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.12.16.tgz#b9f33b252e3406d492a15a799c9d45a9a9613473" + integrity sha512-yiDkYFapVxNOCcBfLnsb/qdsliroM+vc3LHiZwS4gh7pFjo5Xq3BDhYBNn3H3ao+hWPvqeeTdU+s+FIvokov+w== dependencies: - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-plugin-utils" "^7.12.13" "@babel/plugin-syntax-dynamic-import" "^7.8.0" -"@babel/plugin-proposal-export-namespace-from@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.12.1.tgz#8b9b8f376b2d88f5dd774e4d24a5cc2e3679b6d4" - integrity sha512-6CThGf0irEkzujYS5LQcjBx8j/4aQGiVv7J9+2f7pGfxqyKh3WnmVJYW3hdrQjyksErMGBPQrCnHfOtna+WLbw== +"@babel/plugin-proposal-export-namespace-from@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.12.13.tgz#393be47a4acd03fa2af6e3cde9b06e33de1b446d" + integrity sha512-INAgtFo4OnLN3Y/j0VwAgw3HDXcDtX+C/erMvWzuV9v71r7urb6iyMXu7eM9IgLr1ElLlOkaHjJ0SbCmdOQ3Iw== dependencies: - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-plugin-utils" "^7.12.13" "@babel/plugin-syntax-export-namespace-from" "^7.8.3" -"@babel/plugin-proposal-json-strings@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.12.1.tgz#d45423b517714eedd5621a9dfdc03fa9f4eb241c" - integrity sha512-GoLDUi6U9ZLzlSda2Df++VSqDJg3CG+dR0+iWsv6XRw1rEq+zwt4DirM9yrxW6XWaTpmai1cWJLMfM8qQJf+yw== +"@babel/plugin-proposal-json-strings@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.12.13.tgz#ced7888a2db92a3d520a2e35eb421fdb7fcc9b5d" + integrity sha512-v9eEi4GiORDg8x+Dmi5r8ibOe0VXoKDeNPYcTTxdGN4eOWikrJfDJCJrr1l5gKGvsNyGJbrfMftC2dTL6oz7pg== dependencies: - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-plugin-utils" "^7.12.13" "@babel/plugin-syntax-json-strings" "^7.8.0" -"@babel/plugin-proposal-logical-assignment-operators@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.12.1.tgz#f2c490d36e1b3c9659241034a5d2cd50263a2751" - integrity sha512-k8ZmVv0JU+4gcUGeCDZOGd0lCIamU/sMtIiX3UWnUc5yzgq6YUGyEolNYD+MLYKfSzgECPcqetVcJP9Afe/aCA== +"@babel/plugin-proposal-logical-assignment-operators@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.12.13.tgz#575b5d9a08d8299eeb4db6430da6e16e5cf14350" + integrity sha512-fqmiD3Lz7jVdK6kabeSr1PZlWSUVqSitmHEe3Z00dtGTKieWnX9beafvavc32kjORa5Bai4QNHgFDwWJP+WtSQ== dependencies: - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-plugin-utils" "^7.12.13" "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" -"@babel/plugin-proposal-nullish-coalescing-operator@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.12.1.tgz#3ed4fff31c015e7f3f1467f190dbe545cd7b046c" - integrity sha512-nZY0ESiaQDI1y96+jk6VxMOaL4LPo/QDHBqL+SF3/vl6dHkTwHlOI8L4ZwuRBHgakRBw5zsVylel7QPbbGuYgg== +"@babel/plugin-proposal-nullish-coalescing-operator@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.12.13.tgz#24867307285cee4e1031170efd8a7ac807deefde" + integrity sha512-Qoxpy+OxhDBI5kRqliJFAl4uWXk3Bn24WeFstPH0iLymFehSAUR8MHpqU7njyXv/qbo7oN6yTy5bfCmXdKpo1Q== dependencies: - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-plugin-utils" "^7.12.13" "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" -"@babel/plugin-proposal-numeric-separator@^7.12.7": - version "7.12.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.12.7.tgz#8bf253de8139099fea193b297d23a9d406ef056b" - integrity sha512-8c+uy0qmnRTeukiGsjLGy6uVs/TFjJchGXUeBqlG4VWYOdJWkhhVPdQ3uHwbmalfJwv2JsV0qffXP4asRfL2SQ== +"@babel/plugin-proposal-numeric-separator@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.12.13.tgz#bd9da3188e787b5120b4f9d465a8261ce67ed1db" + integrity sha512-O1jFia9R8BUCl3ZGB7eitaAPu62TXJRHn7rh+ojNERCFyqRwJMTmhz+tJ+k0CwI6CLjX/ee4qW74FSqlq9I35w== dependencies: - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-plugin-utils" "^7.12.13" "@babel/plugin-syntax-numeric-separator" "^7.10.4" -"@babel/plugin-proposal-object-rest-spread@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.12.1.tgz#def9bd03cea0f9b72283dac0ec22d289c7691069" - integrity sha512-s6SowJIjzlhx8o7lsFx5zmY4At6CTtDvgNQDdPzkBQucle58A6b/TTeEBYtyDgmcXjUTM+vE8YOGHZzzbc/ioA== +"@babel/plugin-proposal-object-rest-spread@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.12.13.tgz#f93f3116381ff94bc676fdcb29d71045cd1ec011" + integrity sha512-WvA1okB/0OS/N3Ldb3sziSrXg6sRphsBgqiccfcQq7woEn5wQLNX82Oc4PlaFcdwcWHuQXAtb8ftbS8Fbsg/sg== dependencies: - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-plugin-utils" "^7.12.13" "@babel/plugin-syntax-object-rest-spread" "^7.8.0" - "@babel/plugin-transform-parameters" "^7.12.1" + "@babel/plugin-transform-parameters" "^7.12.13" -"@babel/plugin-proposal-optional-catch-binding@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.12.1.tgz#ccc2421af64d3aae50b558a71cede929a5ab2942" - integrity sha512-hFvIjgprh9mMw5v42sJWLI1lzU5L2sznP805zeT6rySVRA0Y18StRhDqhSxlap0oVgItRsB6WSROp4YnJTJz0g== +"@babel/plugin-proposal-optional-catch-binding@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.12.13.tgz#4640520afe57728af14b4d1574ba844f263bcae5" + integrity sha512-9+MIm6msl9sHWg58NvqpNpLtuFbmpFYk37x8kgnGzAHvX35E1FyAwSUt5hIkSoWJFSAH+iwU8bJ4fcD1zKXOzg== dependencies: - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-plugin-utils" "^7.12.13" "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" -"@babel/plugin-proposal-optional-chaining@^7.12.7": - version "7.12.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.12.7.tgz#e02f0ea1b5dc59d401ec16fb824679f683d3303c" - integrity sha512-4ovylXZ0PWmwoOvhU2vhnzVNnm88/Sm9nx7V8BPgMvAzn5zDou3/Awy0EjglyubVHasJj+XCEkr/r1X3P5elCA== +"@babel/plugin-proposal-optional-chaining@^7.12.16": + version "7.12.16" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.12.16.tgz#600c7531f754186b0f2096e495a92da7d88aa139" + integrity sha512-O3ohPwOhkwji5Mckb7F/PJpJVJY3DpPsrt/F0Bk40+QMk9QpAIqeGusHWqu/mYqsM8oBa6TziL/2mbERWsUZjg== dependencies: - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-plugin-utils" "^7.12.13" "@babel/helper-skip-transparent-expression-wrappers" "^7.12.1" "@babel/plugin-syntax-optional-chaining" "^7.8.0" -"@babel/plugin-proposal-private-methods@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.12.1.tgz#86814f6e7a21374c980c10d38b4493e703f4a389" - integrity sha512-mwZ1phvH7/NHK6Kf8LP7MYDogGV+DKB1mryFOEwx5EBNQrosvIczzZFTUmWaeujd5xT6G1ELYWUz3CutMhjE1w== +"@babel/plugin-proposal-private-methods@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.12.13.tgz#ea78a12554d784ecf7fc55950b752d469d9c4a71" + integrity sha512-sV0V57uUwpauixvR7s2o75LmwJI6JECwm5oPUY5beZB1nBl2i37hc7CJGqB5G+58fur5Y6ugvl3LRONk5x34rg== dependencies: - "@babel/helper-create-class-features-plugin" "^7.12.1" - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-create-class-features-plugin" "^7.12.13" + "@babel/helper-plugin-utils" "^7.12.13" -"@babel/plugin-proposal-unicode-property-regex@^7.12.1", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.1.tgz#2a183958d417765b9eae334f47758e5d6a82e072" - integrity sha512-MYq+l+PvHuw/rKUz1at/vb6nCnQ2gmJBNaM62z0OgH7B2W1D9pvkpYtlti9bGtizNIU1K3zm4bZF9F91efVY0w== +"@babel/plugin-proposal-unicode-property-regex@^7.12.13", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.13.tgz#bebde51339be829c17aaaaced18641deb62b39ba" + integrity sha512-XyJmZidNfofEkqFV5VC/bLabGmO5QzenPO/YOfGuEbgU+2sSwMmio3YLb4WtBgcmmdwZHyVyv8on77IUjQ5Gvg== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.12.1" - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-create-regexp-features-plugin" "^7.12.13" + "@babel/helper-plugin-utils" "^7.12.13" "@babel/plugin-syntax-async-generators@^7.8.0": version "7.8.4" @@ -382,12 +373,12 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-class-properties@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.1.tgz#bcb297c5366e79bebadef509549cd93b04f19978" - integrity sha512-U40A76x5gTwmESz+qiqssqmeEsKvcSyvtgktrm0uzcARAmM9I1jR221f6Oq+GmHrcD+LvZDag1UTOTe2fL3TeA== +"@babel/plugin-syntax-class-properties@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10" + integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== dependencies: - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-plugin-utils" "^7.12.13" "@babel/plugin-syntax-dynamic-import@^7.8.0": version "7.8.3" @@ -452,303 +443,302 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-top-level-await@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.1.tgz#dd6c0b357ac1bb142d98537450a319625d13d2a0" - integrity sha512-i7ooMZFS+a/Om0crxZodrTzNEPJHZrlMVGMTEpFAj6rYY/bKCddB0Dk/YxfPuYXOopuhKk/e1jV6h+WUU9XN3A== +"@babel/plugin-syntax-top-level-await@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.13.tgz#c5f0fa6e249f5b739727f923540cf7a806130178" + integrity sha512-A81F9pDwyS7yM//KwbCSDqy3Uj4NMIurtplxphWxoYtNPov7cJsDkAFNNyVlIZ3jwGycVsurZ+LtOA8gZ376iQ== dependencies: - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-plugin-utils" "^7.12.13" -"@babel/plugin-syntax-typescript@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.12.1.tgz#460ba9d77077653803c3dd2e673f76d66b4029e5" - integrity sha512-UZNEcCY+4Dp9yYRCAHrHDU+9ZXLYaY9MgBXSRLkB9WjYFRR6quJBumfVrEkUxrePPBwFcpWfNKXqVRQQtm7mMA== +"@babel/plugin-syntax-typescript@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.12.13.tgz#9dff111ca64154cef0f4dc52cf843d9f12ce4474" + integrity sha512-cHP3u1JiUiG2LFDKbXnwVad81GvfyIOmCD6HIEId6ojrY0Drfy2q1jw7BwN7dE84+kTnBjLkXoL3IEy/3JPu2w== dependencies: - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-plugin-utils" "^7.12.13" -"@babel/plugin-transform-arrow-functions@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.12.1.tgz#8083ffc86ac8e777fbe24b5967c4b2521f3cb2b3" - integrity sha512-5QB50qyN44fzzz4/qxDPQMBCTHgxg3n0xRBLJUmBlLoU/sFvxVWGZF/ZUfMVDQuJUKXaBhbupxIzIfZ6Fwk/0A== +"@babel/plugin-transform-arrow-functions@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.12.13.tgz#eda5670b282952100c229f8a3bd49e0f6a72e9fe" + integrity sha512-tBtuN6qtCTd+iHzVZVOMNp+L04iIJBpqkdY42tWbmjIT5wvR2kx7gxMBsyhQtFzHwBbyGi9h8J8r9HgnOpQHxg== dependencies: - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-plugin-utils" "^7.12.13" -"@babel/plugin-transform-async-to-generator@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.12.1.tgz#3849a49cc2a22e9743cbd6b52926d30337229af1" - integrity sha512-SDtqoEcarK1DFlRJ1hHRY5HvJUj5kX4qmtpMAm2QnhOlyuMC4TMdCRgW6WXpv93rZeYNeLP22y8Aq2dbcDRM1A== +"@babel/plugin-transform-async-to-generator@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.12.13.tgz#fed8c69eebf187a535bfa4ee97a614009b24f7ae" + integrity sha512-psM9QHcHaDr+HZpRuJcE1PXESuGWSCcbiGFFhhwfzdbTxaGDVzuVtdNYliAwcRo3GFg0Bc8MmI+AvIGYIJG04A== dependencies: - "@babel/helper-module-imports" "^7.12.1" - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/helper-remap-async-to-generator" "^7.12.1" + "@babel/helper-module-imports" "^7.12.13" + "@babel/helper-plugin-utils" "^7.12.13" + "@babel/helper-remap-async-to-generator" "^7.12.13" -"@babel/plugin-transform-block-scoped-functions@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.1.tgz#f2a1a365bde2b7112e0a6ded9067fdd7c07905d9" - integrity sha512-5OpxfuYnSgPalRpo8EWGPzIYf0lHBWORCkj5M0oLBwHdlux9Ri36QqGW3/LR13RSVOAoUUMzoPI/jpE4ABcHoA== +"@babel/plugin-transform-block-scoped-functions@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.13.tgz#a9bf1836f2a39b4eb6cf09967739de29ea4bf4c4" + integrity sha512-zNyFqbc3kI/fVpqwfqkg6RvBgFpC4J18aKKMmv7KdQ/1GgREapSJAykLMVNwfRGO3BtHj3YQZl8kxCXPcVMVeg== dependencies: - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-plugin-utils" "^7.12.13" -"@babel/plugin-transform-block-scoping@^7.12.11": - version "7.12.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.12.tgz#d93a567a152c22aea3b1929bb118d1d0a175cdca" - integrity sha512-VOEPQ/ExOVqbukuP7BYJtI5ZxxsmegTwzZ04j1aF0dkSypGo9XpDHuOrABsJu+ie+penpSJheDJ11x1BEZNiyQ== +"@babel/plugin-transform-block-scoping@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.13.tgz#f36e55076d06f41dfd78557ea039c1b581642e61" + integrity sha512-Pxwe0iqWJX4fOOM2kEZeUuAxHMWb9nK+9oh5d11bsLoB0xMg+mkDpt0eYuDZB7ETrY9bbcVlKUGTOGWy7BHsMQ== dependencies: - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-plugin-utils" "^7.12.13" -"@babel/plugin-transform-classes@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.12.1.tgz#65e650fcaddd3d88ddce67c0f834a3d436a32db6" - integrity sha512-/74xkA7bVdzQTBeSUhLLJgYIcxw/dpEpCdRDiHgPJ3Mv6uC11UhjpOhl72CgqbBCmt1qtssCyB2xnJm1+PFjog== +"@babel/plugin-transform-classes@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.12.13.tgz#9728edc1838b5d62fc93ad830bd523b1fcb0e1f6" + integrity sha512-cqZlMlhCC1rVnxE5ZGMtIb896ijL90xppMiuWXcwcOAuFczynpd3KYemb91XFFPi3wJSe/OcrX9lXoowatkkxA== dependencies: - "@babel/helper-annotate-as-pure" "^7.10.4" - "@babel/helper-define-map" "^7.10.4" - "@babel/helper-function-name" "^7.10.4" - "@babel/helper-optimise-call-expression" "^7.10.4" - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/helper-replace-supers" "^7.12.1" - "@babel/helper-split-export-declaration" "^7.10.4" + "@babel/helper-annotate-as-pure" "^7.12.13" + "@babel/helper-function-name" "^7.12.13" + "@babel/helper-optimise-call-expression" "^7.12.13" + "@babel/helper-plugin-utils" "^7.12.13" + "@babel/helper-replace-supers" "^7.12.13" + "@babel/helper-split-export-declaration" "^7.12.13" globals "^11.1.0" -"@babel/plugin-transform-computed-properties@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.12.1.tgz#d68cf6c9b7f838a8a4144badbe97541ea0904852" - integrity sha512-vVUOYpPWB7BkgUWPo4C44mUQHpTZXakEqFjbv8rQMg7TC6S6ZhGZ3otQcRH6u7+adSlE5i0sp63eMC/XGffrzg== +"@babel/plugin-transform-computed-properties@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.12.13.tgz#6a210647a3d67f21f699cfd2a01333803b27339d" + integrity sha512-dDfuROUPGK1mTtLKyDPUavmj2b6kFu82SmgpztBFEO974KMjJT+Ytj3/oWsTUMBmgPcp9J5Pc1SlcAYRpJ2hRA== dependencies: - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-plugin-utils" "^7.12.13" -"@babel/plugin-transform-destructuring@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.12.1.tgz#b9a570fe0d0a8d460116413cb4f97e8e08b2f847" - integrity sha512-fRMYFKuzi/rSiYb2uRLiUENJOKq4Gnl+6qOv5f8z0TZXg3llUwUhsNNwrwaT/6dUhJTzNpBr+CUvEWBtfNY1cw== +"@babel/plugin-transform-destructuring@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.12.13.tgz#fc56c5176940c5b41735c677124d1d20cecc9aeb" + integrity sha512-Dn83KykIFzjhA3FDPA1z4N+yfF3btDGhjnJwxIj0T43tP0flCujnU8fKgEkf0C1biIpSv9NZegPBQ1J6jYkwvQ== dependencies: - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-plugin-utils" "^7.12.13" -"@babel/plugin-transform-dotall-regex@^7.12.1", "@babel/plugin-transform-dotall-regex@^7.4.4": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.12.1.tgz#a1d16c14862817b6409c0a678d6f9373ca9cd975" - integrity sha512-B2pXeRKoLszfEW7J4Hg9LoFaWEbr/kzo3teWHmtFCszjRNa/b40f9mfeqZsIDLLt/FjwQ6pz/Gdlwy85xNckBA== +"@babel/plugin-transform-dotall-regex@^7.12.13", "@babel/plugin-transform-dotall-regex@^7.4.4": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.12.13.tgz#3f1601cc29905bfcb67f53910f197aeafebb25ad" + integrity sha512-foDrozE65ZFdUC2OfgeOCrEPTxdB3yjqxpXh8CH+ipd9CHd4s/iq81kcUpyH8ACGNEPdFqbtzfgzbT/ZGlbDeQ== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.12.1" - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-create-regexp-features-plugin" "^7.12.13" + "@babel/helper-plugin-utils" "^7.12.13" -"@babel/plugin-transform-duplicate-keys@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.12.1.tgz#745661baba295ac06e686822797a69fbaa2ca228" - integrity sha512-iRght0T0HztAb/CazveUpUQrZY+aGKKaWXMJ4uf9YJtqxSUe09j3wteztCUDRHs+SRAL7yMuFqUsLoAKKzgXjw== +"@babel/plugin-transform-duplicate-keys@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.12.13.tgz#6f06b87a8b803fd928e54b81c258f0a0033904de" + integrity sha512-NfADJiiHdhLBW3pulJlJI2NB0t4cci4WTZ8FtdIuNc2+8pslXdPtRRAEWqUY+m9kNOk2eRYbTAOipAxlrOcwwQ== dependencies: - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-plugin-utils" "^7.12.13" -"@babel/plugin-transform-exponentiation-operator@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.1.tgz#b0f2ed356ba1be1428ecaf128ff8a24f02830ae0" - integrity sha512-7tqwy2bv48q+c1EHbXK0Zx3KXd2RVQp6OC7PbwFNt/dPTAV3Lu5sWtWuAj8owr5wqtWnqHfl2/mJlUmqkChKug== +"@babel/plugin-transform-exponentiation-operator@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.13.tgz#4d52390b9a273e651e4aba6aee49ef40e80cd0a1" + integrity sha512-fbUelkM1apvqez/yYx1/oICVnGo2KM5s63mhGylrmXUxK/IAXSIf87QIxVfZldWf4QsOafY6vV3bX8aMHSvNrA== dependencies: - "@babel/helper-builder-binary-assignment-operator-visitor" "^7.10.4" - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.12.13" + "@babel/helper-plugin-utils" "^7.12.13" -"@babel/plugin-transform-for-of@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.12.1.tgz#07640f28867ed16f9511c99c888291f560921cfa" - integrity sha512-Zaeq10naAsuHo7heQvyV0ptj4dlZJwZgNAtBYBnu5nNKJoW62m0zKcIEyVECrUKErkUkg6ajMy4ZfnVZciSBhg== +"@babel/plugin-transform-for-of@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.12.13.tgz#561ff6d74d9e1c8879cb12dbaf4a14cd29d15cf6" + integrity sha512-xCbdgSzXYmHGyVX3+BsQjcd4hv4vA/FDy7Kc8eOpzKmBBPEOTurt0w5fCRQaGl+GSBORKgJdstQ1rHl4jbNseQ== dependencies: - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-plugin-utils" "^7.12.13" -"@babel/plugin-transform-function-name@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.1.tgz#2ec76258c70fe08c6d7da154003a480620eba667" - integrity sha512-JF3UgJUILoFrFMEnOJLJkRHSk6LUSXLmEFsA23aR2O5CSLUxbeUX1IZ1YQ7Sn0aXb601Ncwjx73a+FVqgcljVw== +"@babel/plugin-transform-function-name@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.13.tgz#bb024452f9aaed861d374c8e7a24252ce3a50051" + integrity sha512-6K7gZycG0cmIwwF7uMK/ZqeCikCGVBdyP2J5SKNCXO5EOHcqi+z7Jwf8AmyDNcBgxET8DrEtCt/mPKPyAzXyqQ== dependencies: - "@babel/helper-function-name" "^7.10.4" - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-function-name" "^7.12.13" + "@babel/helper-plugin-utils" "^7.12.13" -"@babel/plugin-transform-literals@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.1.tgz#d73b803a26b37017ddf9d3bb8f4dc58bfb806f57" - integrity sha512-+PxVGA+2Ag6uGgL0A5f+9rklOnnMccwEBzwYFL3EUaKuiyVnUipyXncFcfjSkbimLrODoqki1U9XxZzTvfN7IQ== +"@babel/plugin-transform-literals@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.13.tgz#2ca45bafe4a820197cf315794a4d26560fe4bdb9" + integrity sha512-FW+WPjSR7hiUxMcKqyNjP05tQ2kmBCdpEpZHY1ARm96tGQCCBvXKnpjILtDplUnJ/eHZ0lALLM+d2lMFSpYJrQ== dependencies: - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-plugin-utils" "^7.12.13" -"@babel/plugin-transform-member-expression-literals@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.1.tgz#496038602daf1514a64d43d8e17cbb2755e0c3ad" - integrity sha512-1sxePl6z9ad0gFMB9KqmYofk34flq62aqMt9NqliS/7hPEpURUCMbyHXrMPlo282iY7nAvUB1aQd5mg79UD9Jg== +"@babel/plugin-transform-member-expression-literals@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.13.tgz#5ffa66cd59b9e191314c9f1f803b938e8c081e40" + integrity sha512-kxLkOsg8yir4YeEPHLuO2tXP9R/gTjpuTOjshqSpELUN3ZAg2jfDnKUvzzJxObun38sw3wm4Uu69sX/zA7iRvg== dependencies: - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-plugin-utils" "^7.12.13" -"@babel/plugin-transform-modules-amd@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.12.1.tgz#3154300b026185666eebb0c0ed7f8415fefcf6f9" - integrity sha512-tDW8hMkzad5oDtzsB70HIQQRBiTKrhfgwC/KkJeGsaNFTdWhKNt/BiE8c5yj19XiGyrxpbkOfH87qkNg1YGlOQ== +"@babel/plugin-transform-modules-amd@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.12.13.tgz#43db16249b274ee2e551e2422090aa1c47692d56" + integrity sha512-JHLOU0o81m5UqG0Ulz/fPC68/v+UTuGTWaZBUwpEk1fYQ1D9LfKV6MPn4ttJKqRo5Lm460fkzjLTL4EHvCprvA== dependencies: - "@babel/helper-module-transforms" "^7.12.1" - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-module-transforms" "^7.12.13" + "@babel/helper-plugin-utils" "^7.12.13" babel-plugin-dynamic-import-node "^2.3.3" -"@babel/plugin-transform-modules-commonjs@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.12.1.tgz#fa403124542636c786cf9b460a0ffbb48a86e648" - integrity sha512-dY789wq6l0uLY8py9c1B48V8mVL5gZh/+PQ5ZPrylPYsnAvnEMjqsUXkuoDVPeVK+0VyGar+D08107LzDQ6pag== +"@babel/plugin-transform-modules-commonjs@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.12.13.tgz#5043b870a784a8421fa1fd9136a24f294da13e50" + integrity sha512-OGQoeVXVi1259HjuoDnsQMlMkT9UkZT9TpXAsqWplS/M0N1g3TJAn/ByOCeQu7mfjc5WpSsRU+jV1Hd89ts0kQ== dependencies: - "@babel/helper-module-transforms" "^7.12.1" - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/helper-simple-access" "^7.12.1" + "@babel/helper-module-transforms" "^7.12.13" + "@babel/helper-plugin-utils" "^7.12.13" + "@babel/helper-simple-access" "^7.12.13" babel-plugin-dynamic-import-node "^2.3.3" -"@babel/plugin-transform-modules-systemjs@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.12.1.tgz#663fea620d593c93f214a464cd399bf6dc683086" - integrity sha512-Hn7cVvOavVh8yvW6fLwveFqSnd7rbQN3zJvoPNyNaQSvgfKmDBO9U1YL9+PCXGRlZD9tNdWTy5ACKqMuzyn32Q== +"@babel/plugin-transform-modules-systemjs@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.12.13.tgz#351937f392c7f07493fc79b2118201d50404a3c5" + integrity sha512-aHfVjhZ8QekaNF/5aNdStCGzwTbU7SI5hUybBKlMzqIMC7w7Ho8hx5a4R/DkTHfRfLwHGGxSpFt9BfxKCoXKoA== dependencies: - "@babel/helper-hoist-variables" "^7.10.4" - "@babel/helper-module-transforms" "^7.12.1" - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/helper-validator-identifier" "^7.10.4" + "@babel/helper-hoist-variables" "^7.12.13" + "@babel/helper-module-transforms" "^7.12.13" + "@babel/helper-plugin-utils" "^7.12.13" + "@babel/helper-validator-identifier" "^7.12.11" babel-plugin-dynamic-import-node "^2.3.3" -"@babel/plugin-transform-modules-umd@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.12.1.tgz#eb5a218d6b1c68f3d6217b8fa2cc82fec6547902" - integrity sha512-aEIubCS0KHKM0zUos5fIoQm+AZUMt1ZvMpqz0/H5qAQ7vWylr9+PLYurT+Ic7ID/bKLd4q8hDovaG3Zch2uz5Q== +"@babel/plugin-transform-modules-umd@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.12.13.tgz#26c66f161d3456674e344b4b1255de4d530cfb37" + integrity sha512-BgZndyABRML4z6ibpi7Z98m4EVLFI9tVsZDADC14AElFaNHHBcJIovflJ6wtCqFxwy2YJ1tJhGRsr0yLPKoN+w== dependencies: - "@babel/helper-module-transforms" "^7.12.1" - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-module-transforms" "^7.12.13" + "@babel/helper-plugin-utils" "^7.12.13" -"@babel/plugin-transform-named-capturing-groups-regex@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.12.1.tgz#b407f5c96be0d9f5f88467497fa82b30ac3e8753" - integrity sha512-tB43uQ62RHcoDp9v2Nsf+dSM8sbNodbEicbQNA53zHz8pWUhsgHSJCGpt7daXxRydjb0KnfmB+ChXOv3oADp1Q== +"@babel/plugin-transform-named-capturing-groups-regex@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.12.13.tgz#2213725a5f5bbbe364b50c3ba5998c9599c5c9d9" + integrity sha512-Xsm8P2hr5hAxyYblrfACXpQKdQbx4m2df9/ZZSQ8MAhsadw06+jW7s9zsSw6he+mJZXRlVMyEnVktJo4zjk1WA== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.12.1" + "@babel/helper-create-regexp-features-plugin" "^7.12.13" -"@babel/plugin-transform-new-target@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.12.1.tgz#80073f02ee1bb2d365c3416490e085c95759dec0" - integrity sha512-+eW/VLcUL5L9IvJH7rT1sT0CzkdUTvPrXC2PXTn/7z7tXLBuKvezYbGdxD5WMRoyvyaujOq2fWoKl869heKjhw== +"@babel/plugin-transform-new-target@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.12.13.tgz#e22d8c3af24b150dd528cbd6e685e799bf1c351c" + integrity sha512-/KY2hbLxrG5GTQ9zzZSc3xWiOy379pIETEhbtzwZcw9rvuaVV4Fqy7BYGYOWZnaoXIQYbbJ0ziXLa/sKcGCYEQ== dependencies: - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-plugin-utils" "^7.12.13" -"@babel/plugin-transform-object-super@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.1.tgz#4ea08696b8d2e65841d0c7706482b048bed1066e" - integrity sha512-AvypiGJH9hsquNUn+RXVcBdeE3KHPZexWRdimhuV59cSoOt5kFBmqlByorAeUlGG2CJWd0U+4ZtNKga/TB0cAw== +"@babel/plugin-transform-object-super@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.13.tgz#b4416a2d63b8f7be314f3d349bd55a9c1b5171f7" + integrity sha512-JzYIcj3XtYspZDV8j9ulnoMPZZnF/Cj0LUxPOjR89BdBVx+zYJI9MdMIlUZjbXDX+6YVeS6I3e8op+qQ3BYBoQ== dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/helper-replace-supers" "^7.12.1" + "@babel/helper-plugin-utils" "^7.12.13" + "@babel/helper-replace-supers" "^7.12.13" -"@babel/plugin-transform-parameters@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.12.1.tgz#d2e963b038771650c922eff593799c96d853255d" - integrity sha512-xq9C5EQhdPK23ZeCdMxl8bbRnAgHFrw5EOC3KJUsSylZqdkCaFEXxGSBuTSObOpiiHHNyb82es8M1QYgfQGfNg== +"@babel/plugin-transform-parameters@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.12.13.tgz#461e76dfb63c2dfd327b8a008a9e802818ce9853" + integrity sha512-e7QqwZalNiBRHCpJg/P8s/VJeSRYgmtWySs1JwvfwPqhBbiWfOcHDKdeAi6oAyIimoKWBlwc8oTgbZHdhCoVZA== dependencies: - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-plugin-utils" "^7.12.13" -"@babel/plugin-transform-property-literals@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.1.tgz#41bc81200d730abb4456ab8b3fbd5537b59adecd" - integrity sha512-6MTCR/mZ1MQS+AwZLplX4cEySjCpnIF26ToWo942nqn8hXSm7McaHQNeGx/pt7suI1TWOWMfa/NgBhiqSnX0cQ== +"@babel/plugin-transform-property-literals@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.13.tgz#4e6a9e37864d8f1b3bc0e2dce7bf8857db8b1a81" + integrity sha512-nqVigwVan+lR+g8Fj8Exl0UQX2kymtjcWfMOYM1vTYEKujeyv2SkMgazf2qNcK7l4SDiKyTA/nHCPqL4e2zo1A== dependencies: - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-plugin-utils" "^7.12.13" -"@babel/plugin-transform-regenerator@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.12.1.tgz#5f0a28d842f6462281f06a964e88ba8d7ab49753" - integrity sha512-gYrHqs5itw6i4PflFX3OdBPMQdPbF4bj2REIUxlMRUFk0/ZOAIpDFuViuxPjUL7YC8UPnf+XG7/utJvqXdPKng== +"@babel/plugin-transform-regenerator@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.12.13.tgz#b628bcc9c85260ac1aeb05b45bde25210194a2f5" + integrity sha512-lxb2ZAvSLyJ2PEe47hoGWPmW22v7CtSl9jW8mingV4H2sEX/JOcrAj2nPuGWi56ERUm2bUpjKzONAuT6HCn2EA== dependencies: regenerator-transform "^0.14.2" -"@babel/plugin-transform-reserved-words@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.12.1.tgz#6fdfc8cc7edcc42b36a7c12188c6787c873adcd8" - integrity sha512-pOnUfhyPKvZpVyBHhSBoX8vfA09b7r00Pmm1sH+29ae2hMTKVmSp4Ztsr8KBKjLjx17H0eJqaRC3bR2iThM54A== +"@babel/plugin-transform-reserved-words@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.12.13.tgz#7d9988d4f06e0fe697ea1d9803188aa18b472695" + integrity sha512-xhUPzDXxZN1QfiOy/I5tyye+TRz6lA7z6xaT4CLOjPRMVg1ldRf0LHw0TDBpYL4vG78556WuHdyO9oi5UmzZBg== dependencies: - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-plugin-utils" "^7.12.13" -"@babel/plugin-transform-shorthand-properties@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.1.tgz#0bf9cac5550fce0cfdf043420f661d645fdc75e3" - integrity sha512-GFZS3c/MhX1OusqB1MZ1ct2xRzX5ppQh2JU1h2Pnfk88HtFTM+TWQqJNfwkmxtPQtb/s1tk87oENfXJlx7rSDw== +"@babel/plugin-transform-shorthand-properties@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.13.tgz#db755732b70c539d504c6390d9ce90fe64aff7ad" + integrity sha512-xpL49pqPnLtf0tVluuqvzWIgLEhuPpZzvs2yabUHSKRNlN7ScYU7aMlmavOeyXJZKgZKQRBlh8rHbKiJDraTSw== dependencies: - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-plugin-utils" "^7.12.13" -"@babel/plugin-transform-spread@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.12.1.tgz#527f9f311be4ec7fdc2b79bb89f7bf884b3e1e1e" - integrity sha512-vuLp8CP0BE18zVYjsEBZ5xoCecMK6LBMMxYzJnh01rxQRvhNhH1csMMmBfNo5tGpGO+NhdSNW2mzIvBu3K1fng== +"@babel/plugin-transform-spread@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.12.13.tgz#ca0d5645abbd560719c354451b849f14df4a7949" + integrity sha512-dUCrqPIowjqk5pXsx1zPftSq4sT0aCeZVAxhdgs3AMgyaDmoUT0G+5h3Dzja27t76aUEIJWlFgPJqJ/d4dbTtg== dependencies: - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-plugin-utils" "^7.12.13" "@babel/helper-skip-transparent-expression-wrappers" "^7.12.1" -"@babel/plugin-transform-sticky-regex@^7.12.7": - version "7.12.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.7.tgz#560224613ab23987453948ed21d0b0b193fa7fad" - integrity sha512-VEiqZL5N/QvDbdjfYQBhruN0HYjSPjC4XkeqW4ny/jNtH9gcbgaqBIXYEZCNnESMAGs0/K/R7oFGMhOyu/eIxg== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-transform-template-literals@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.12.1.tgz#b43ece6ed9a79c0c71119f576d299ef09d942843" - integrity sha512-b4Zx3KHi+taXB1dVRBhVJtEPi9h1THCeKmae2qP0YdUHIFhVjtpqqNfxeVAa1xeHVhAy4SbHxEwx5cltAu5apw== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-transform-typeof-symbol@^7.12.10": - version "7.12.10" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.10.tgz#de01c4c8f96580bd00f183072b0d0ecdcf0dec4b" - integrity sha512-JQ6H8Rnsogh//ijxspCjc21YPd3VLVoYtAwv3zQmqAt8YGYUtdo5usNhdl4b9/Vir2kPFZl6n1h0PfUz4hJhaA== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-transform-typescript@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.12.1.tgz#d92cc0af504d510e26a754a7dbc2e5c8cd9c7ab4" - integrity sha512-VrsBByqAIntM+EYMqSm59SiMEf7qkmI9dqMt6RbD/wlwueWmYcI0FFK5Fj47pP6DRZm+3teXjosKlwcZJ5lIMw== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.12.1" - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-syntax-typescript" "^7.12.1" - -"@babel/plugin-transform-unicode-escapes@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.12.1.tgz#5232b9f81ccb07070b7c3c36c67a1b78f1845709" - integrity sha512-I8gNHJLIc7GdApm7wkVnStWssPNbSRMPtgHdmH3sRM1zopz09UWPS4x5V4n1yz/MIWTVnJ9sp6IkuXdWM4w+2Q== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-transform-unicode-regex@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.1.tgz#cc9661f61390db5c65e3febaccefd5c6ac3faecb" - integrity sha512-SqH4ClNngh/zGwHZOOQMTD+e8FGWexILV+ePMyiDJttAWRh5dhDL8rcl5lSgU3Huiq6Zn6pWTMvdPAb21Dwdyg== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.12.1" - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/preset-env@^7.12.11": - version "7.12.11" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.12.11.tgz#55d5f7981487365c93dbbc84507b1c7215e857f9" - integrity sha512-j8Tb+KKIXKYlDBQyIOy4BLxzv1NUOwlHfZ74rvW+Z0Gp4/cI2IMDPBWAgWceGcE7aep9oL/0K9mlzlMGxA8yNw== - dependencies: - "@babel/compat-data" "^7.12.7" - "@babel/helper-compilation-targets" "^7.12.5" - "@babel/helper-module-imports" "^7.12.5" - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/helper-validator-option" "^7.12.11" - "@babel/plugin-proposal-async-generator-functions" "^7.12.1" - "@babel/plugin-proposal-class-properties" "^7.12.1" - "@babel/plugin-proposal-dynamic-import" "^7.12.1" - "@babel/plugin-proposal-export-namespace-from" "^7.12.1" - "@babel/plugin-proposal-json-strings" "^7.12.1" - "@babel/plugin-proposal-logical-assignment-operators" "^7.12.1" - "@babel/plugin-proposal-nullish-coalescing-operator" "^7.12.1" - "@babel/plugin-proposal-numeric-separator" "^7.12.7" - "@babel/plugin-proposal-object-rest-spread" "^7.12.1" - "@babel/plugin-proposal-optional-catch-binding" "^7.12.1" - "@babel/plugin-proposal-optional-chaining" "^7.12.7" - "@babel/plugin-proposal-private-methods" "^7.12.1" - "@babel/plugin-proposal-unicode-property-regex" "^7.12.1" +"@babel/plugin-transform-sticky-regex@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.13.tgz#760ffd936face73f860ae646fb86ee82f3d06d1f" + integrity sha512-Jc3JSaaWT8+fr7GRvQP02fKDsYk4K/lYwWq38r/UGfaxo89ajud321NH28KRQ7xy1Ybc0VUE5Pz8psjNNDUglg== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-transform-template-literals@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.12.13.tgz#655037b07ebbddaf3b7752f55d15c2fd6f5aa865" + integrity sha512-arIKlWYUgmNsF28EyfmiQHJLJFlAJNYkuQO10jL46ggjBpeb2re1P9K9YGxNJB45BqTbaslVysXDYm/g3sN/Qg== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-transform-typeof-symbol@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.13.tgz#785dd67a1f2ea579d9c2be722de8c84cb85f5a7f" + integrity sha512-eKv/LmUJpMnu4npgfvs3LiHhJua5fo/CysENxa45YCQXZwKnGCQKAg87bvoqSW1fFT+HA32l03Qxsm8ouTY3ZQ== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-transform-typescript@^7.12.16": + version "7.12.16" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.12.16.tgz#3f30b829bdd15683f71c32fa31330c2af8c1b732" + integrity sha512-88hep+B6dtDOiEqtRzwHp2TYO+CN8nbAV3eh5OpBGPsedug9J6y1JwLKzXRIGGQZDC8NlpxpQMIIxcfIW96Wgw== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.12.16" + "@babel/helper-plugin-utils" "^7.12.13" + "@babel/plugin-syntax-typescript" "^7.12.13" + +"@babel/plugin-transform-unicode-escapes@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.12.13.tgz#840ced3b816d3b5127dd1d12dcedc5dead1a5e74" + integrity sha512-0bHEkdwJ/sN/ikBHfSmOXPypN/beiGqjo+o4/5K+vxEFNPRPdImhviPakMKG4x96l85emoa0Z6cDflsdBusZbw== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-transform-unicode-regex@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.13.tgz#b52521685804e155b1202e83fc188d34bb70f5ac" + integrity sha512-mDRzSNY7/zopwisPZ5kM9XKCfhchqIYwAKRERtEnhYscZB79VRekuRSoYbN0+KVe3y8+q1h6A4svXtP7N+UoCA== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.12.13" + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/preset-env@^7.12.16": + version "7.12.16" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.12.16.tgz#16710e3490e37764b2f41886de0a33bc4ae91082" + integrity sha512-BXCAXy8RE/TzX416pD2hsVdkWo0G+tYd16pwnRV4Sc0fRwTLRS/Ssv8G5RLXUGQv7g4FG7TXkdDJxCjQ5I+Zjg== + dependencies: + "@babel/compat-data" "^7.12.13" + "@babel/helper-compilation-targets" "^7.12.16" + "@babel/helper-module-imports" "^7.12.13" + "@babel/helper-plugin-utils" "^7.12.13" + "@babel/helper-validator-option" "^7.12.16" + "@babel/plugin-proposal-async-generator-functions" "^7.12.13" + "@babel/plugin-proposal-class-properties" "^7.12.13" + "@babel/plugin-proposal-dynamic-import" "^7.12.16" + "@babel/plugin-proposal-export-namespace-from" "^7.12.13" + "@babel/plugin-proposal-json-strings" "^7.12.13" + "@babel/plugin-proposal-logical-assignment-operators" "^7.12.13" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.12.13" + "@babel/plugin-proposal-numeric-separator" "^7.12.13" + "@babel/plugin-proposal-object-rest-spread" "^7.12.13" + "@babel/plugin-proposal-optional-catch-binding" "^7.12.13" + "@babel/plugin-proposal-optional-chaining" "^7.12.16" + "@babel/plugin-proposal-private-methods" "^7.12.13" + "@babel/plugin-proposal-unicode-property-regex" "^7.12.13" "@babel/plugin-syntax-async-generators" "^7.8.0" - "@babel/plugin-syntax-class-properties" "^7.12.1" + "@babel/plugin-syntax-class-properties" "^7.12.13" "@babel/plugin-syntax-dynamic-import" "^7.8.0" "@babel/plugin-syntax-export-namespace-from" "^7.8.3" "@babel/plugin-syntax-json-strings" "^7.8.0" @@ -758,41 +748,41 @@ "@babel/plugin-syntax-object-rest-spread" "^7.8.0" "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" "@babel/plugin-syntax-optional-chaining" "^7.8.0" - "@babel/plugin-syntax-top-level-await" "^7.12.1" - "@babel/plugin-transform-arrow-functions" "^7.12.1" - "@babel/plugin-transform-async-to-generator" "^7.12.1" - "@babel/plugin-transform-block-scoped-functions" "^7.12.1" - "@babel/plugin-transform-block-scoping" "^7.12.11" - "@babel/plugin-transform-classes" "^7.12.1" - "@babel/plugin-transform-computed-properties" "^7.12.1" - "@babel/plugin-transform-destructuring" "^7.12.1" - "@babel/plugin-transform-dotall-regex" "^7.12.1" - "@babel/plugin-transform-duplicate-keys" "^7.12.1" - "@babel/plugin-transform-exponentiation-operator" "^7.12.1" - "@babel/plugin-transform-for-of" "^7.12.1" - "@babel/plugin-transform-function-name" "^7.12.1" - "@babel/plugin-transform-literals" "^7.12.1" - "@babel/plugin-transform-member-expression-literals" "^7.12.1" - "@babel/plugin-transform-modules-amd" "^7.12.1" - "@babel/plugin-transform-modules-commonjs" "^7.12.1" - "@babel/plugin-transform-modules-systemjs" "^7.12.1" - "@babel/plugin-transform-modules-umd" "^7.12.1" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.12.1" - "@babel/plugin-transform-new-target" "^7.12.1" - "@babel/plugin-transform-object-super" "^7.12.1" - "@babel/plugin-transform-parameters" "^7.12.1" - "@babel/plugin-transform-property-literals" "^7.12.1" - "@babel/plugin-transform-regenerator" "^7.12.1" - "@babel/plugin-transform-reserved-words" "^7.12.1" - "@babel/plugin-transform-shorthand-properties" "^7.12.1" - "@babel/plugin-transform-spread" "^7.12.1" - "@babel/plugin-transform-sticky-regex" "^7.12.7" - "@babel/plugin-transform-template-literals" "^7.12.1" - "@babel/plugin-transform-typeof-symbol" "^7.12.10" - "@babel/plugin-transform-unicode-escapes" "^7.12.1" - "@babel/plugin-transform-unicode-regex" "^7.12.1" + "@babel/plugin-syntax-top-level-await" "^7.12.13" + "@babel/plugin-transform-arrow-functions" "^7.12.13" + "@babel/plugin-transform-async-to-generator" "^7.12.13" + "@babel/plugin-transform-block-scoped-functions" "^7.12.13" + "@babel/plugin-transform-block-scoping" "^7.12.13" + "@babel/plugin-transform-classes" "^7.12.13" + "@babel/plugin-transform-computed-properties" "^7.12.13" + "@babel/plugin-transform-destructuring" "^7.12.13" + "@babel/plugin-transform-dotall-regex" "^7.12.13" + "@babel/plugin-transform-duplicate-keys" "^7.12.13" + "@babel/plugin-transform-exponentiation-operator" "^7.12.13" + "@babel/plugin-transform-for-of" "^7.12.13" + "@babel/plugin-transform-function-name" "^7.12.13" + "@babel/plugin-transform-literals" "^7.12.13" + "@babel/plugin-transform-member-expression-literals" "^7.12.13" + "@babel/plugin-transform-modules-amd" "^7.12.13" + "@babel/plugin-transform-modules-commonjs" "^7.12.13" + "@babel/plugin-transform-modules-systemjs" "^7.12.13" + "@babel/plugin-transform-modules-umd" "^7.12.13" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.12.13" + "@babel/plugin-transform-new-target" "^7.12.13" + "@babel/plugin-transform-object-super" "^7.12.13" + "@babel/plugin-transform-parameters" "^7.12.13" + "@babel/plugin-transform-property-literals" "^7.12.13" + "@babel/plugin-transform-regenerator" "^7.12.13" + "@babel/plugin-transform-reserved-words" "^7.12.13" + "@babel/plugin-transform-shorthand-properties" "^7.12.13" + "@babel/plugin-transform-spread" "^7.12.13" + "@babel/plugin-transform-sticky-regex" "^7.12.13" + "@babel/plugin-transform-template-literals" "^7.12.13" + "@babel/plugin-transform-typeof-symbol" "^7.12.13" + "@babel/plugin-transform-unicode-escapes" "^7.12.13" + "@babel/plugin-transform-unicode-regex" "^7.12.13" "@babel/preset-modules" "^0.1.3" - "@babel/types" "^7.12.11" + "@babel/types" "^7.12.13" core-js-compat "^3.8.0" semver "^5.5.0" @@ -807,50 +797,50 @@ "@babel/types" "^7.4.4" esutils "^2.0.2" -"@babel/preset-typescript@^7.12.7": - version "7.12.7" - resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.12.7.tgz#fc7df8199d6aae747896f1e6c61fc872056632a3" - integrity sha512-nOoIqIqBmHBSEgBXWR4Dv/XBehtIFcw9PqZw6rFYuKrzsZmOQm3PR5siLBnKZFEsDb03IegG8nSjU/iXXXYRmw== +"@babel/preset-typescript@^7.12.16": + version "7.12.16" + resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.12.16.tgz#b2080ce20b7095c049db2a0410f1e39bc892f7ca" + integrity sha512-IrYNrpDSuQfNHeqh7gsJsO35xTGyAyGkI1VxOpBEADFtxCqZ77a1RHbJqM3YJhroj7qMkNMkNtcw0lqeZUrzow== dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/helper-validator-option" "^7.12.1" - "@babel/plugin-transform-typescript" "^7.12.1" + "@babel/helper-plugin-utils" "^7.12.13" + "@babel/helper-validator-option" "^7.12.16" + "@babel/plugin-transform-typescript" "^7.12.16" "@babel/runtime@^7.8.4": - version "7.12.5" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.12.5.tgz#410e7e487441e1b360c29be715d870d9b985882e" - integrity sha512-plcc+hbExy3McchJCEQG3knOsuh3HH+Prx1P6cLIkET/0dLuQDEnrT+s27Axgc9bqfsmNUNHfscgMUdBpC9xfg== + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.12.13.tgz#0a21452352b02542db0ffb928ac2d3ca7cb6d66d" + integrity sha512-8+3UMPBrjFa/6TtKi/7sehPKqfAm4g6K+YQjyyFOLUTxzOngcRZTlAVY8sc2CORJYqdHQY8gRPHmn+qo15rCBw== dependencies: regenerator-runtime "^0.13.4" -"@babel/template@^7.10.4", "@babel/template@^7.12.7": - version "7.12.7" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.12.7.tgz#c817233696018e39fbb6c491d2fb684e05ed43bc" - integrity sha512-GkDzmHS6GV7ZeXfJZ0tLRBhZcMcY0/Lnb+eEbXDBfCAcZCjrZKe6p3J4we/D24O9Y8enxWAg1cWwof59yLh2ow== - dependencies: - "@babel/code-frame" "^7.10.4" - "@babel/parser" "^7.12.7" - "@babel/types" "^7.12.7" - -"@babel/traverse@^7.10.4", "@babel/traverse@^7.12.1", "@babel/traverse@^7.12.10", "@babel/traverse@^7.12.5": - version "7.12.12" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.12.12.tgz#d0cd87892704edd8da002d674bc811ce64743376" - integrity sha512-s88i0X0lPy45RrLM8b9mz8RPH5FqO9G9p7ti59cToE44xFm1Q+Pjh5Gq4SXBbtb88X7Uy7pexeqRIQDDMNkL0w== - dependencies: - "@babel/code-frame" "^7.12.11" - "@babel/generator" "^7.12.11" - "@babel/helper-function-name" "^7.12.11" - "@babel/helper-split-export-declaration" "^7.12.11" - "@babel/parser" "^7.12.11" - "@babel/types" "^7.12.12" +"@babel/template@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.12.13.tgz#530265be8a2589dbb37523844c5bcb55947fb327" + integrity sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA== + dependencies: + "@babel/code-frame" "^7.12.13" + "@babel/parser" "^7.12.13" + "@babel/types" "^7.12.13" + +"@babel/traverse@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.12.13.tgz#689f0e4b4c08587ad26622832632735fb8c4e0c0" + integrity sha512-3Zb4w7eE/OslI0fTp8c7b286/cQps3+vdLW3UcwC8VSJC6GbKn55aeVVu2QJNuCDoeKyptLOFrPq8WqZZBodyA== + dependencies: + "@babel/code-frame" "^7.12.13" + "@babel/generator" "^7.12.13" + "@babel/helper-function-name" "^7.12.13" + "@babel/helper-split-export-declaration" "^7.12.13" + "@babel/parser" "^7.12.13" + "@babel/types" "^7.12.13" debug "^4.1.0" globals "^11.1.0" lodash "^4.17.19" -"@babel/types@^7.10.4", "@babel/types@^7.10.5", "@babel/types@^7.12.1", "@babel/types@^7.12.10", "@babel/types@^7.12.11", "@babel/types@^7.12.12", "@babel/types@^7.12.5", "@babel/types@^7.12.7", "@babel/types@^7.4.4": - version "7.12.12" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.12.12.tgz#4608a6ec313abbd87afa55004d373ad04a96c299" - integrity sha512-lnIX7piTxOH22xE7fDXDbSHg9MM1/6ORnafpJmov5rs0kX5g4BZxeXNJLXsMRiO0U5Rb8/FvMS6xlTnTHvxonQ== +"@babel/types@^7.12.1", "@babel/types@^7.12.13", "@babel/types@^7.4.4": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.12.13.tgz#8be1aa8f2c876da11a9cf650c0ecf656913ad611" + integrity sha512-oKrdZTld2im1z8bDwTOQvUbxKwE+854zc16qWZQlcTqMN00pWxHQ4ZeOq0yDMnisOpRykH2/5Qqcrk/OlbAjiQ== dependencies: "@babel/helper-validator-identifier" "^7.12.11" lodash "^4.17.19" @@ -898,11 +888,12 @@ upath "^1.1.1" "@npmcli/move-file@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@npmcli/move-file/-/move-file-1.0.1.tgz#de103070dac0f48ce49cf6693c23af59c0f70464" - integrity sha512-Uv6h1sT+0DrblvIrolFtbvM1FgWm+/sy4B3pvLp67Zys+thcukzS5ekn7HsZFGpWP4Q3fYJCljbWQE/XivMRLw== + version "1.1.2" + resolved "https://registry.yarnpkg.com/@npmcli/move-file/-/move-file-1.1.2.tgz#1a82c3e372f7cae9253eb66d72543d6b8685c674" + integrity sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg== dependencies: mkdirp "^1.0.4" + rimraf "^3.0.2" "@types/eslint-scope@^3.7.0": version "3.7.0" @@ -920,16 +911,11 @@ "@types/estree" "*" "@types/json-schema" "*" -"@types/estree@*": +"@types/estree@*", "@types/estree@^0.0.46": version "0.0.46" resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.46.tgz#0fb6bfbbeabd7a30880504993369c4bf1deab1fe" integrity sha512-laIjwTQaD+5DukBZaygQ79K1Z0jb1bPEMRrkXSLjtCcZm+abyp5YbrqpSLzD42FwWW6gK/aS4NYpJ804nG2brg== -"@types/estree@^0.0.45": - version "0.0.45" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.45.tgz#e9387572998e5ecdac221950dab3e8c3b16af884" - integrity sha512-jnqIUKDUqJbDIUxm0Uj7bnlMnRm1T/eZ9N+AVMqhPgzrba2GhGG5o/jCTwmdPK709nEZsGoMzXEDUjcXHa3W0g== - "@types/glob@^7.1.1": version "7.1.3" resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.3.tgz#e6ba80f36b7daad2c685acd9266382e68985c183" @@ -939,19 +925,19 @@ "@types/node" "*" "@types/json-schema@*", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.6": - version "7.0.6" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.6.tgz#f4c7ec43e81b319a9815115031709f26987891f0" - integrity sha512-3c+yGKvVP5Y9TYBEibGNR+kLtijnj7mYrXRg+WpFb2X9xm04g/DXYkfg4hmzJQosc9snFNUPkbYIhu+KAm6jJw== + version "7.0.7" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.7.tgz#98a993516c859eb0d5c4c8f098317a9ea68db9ad" + integrity sha512-cxWFQVseBm6O9Gbw1IWb8r6OS4OhSt3hPZLkFApLjM8TEXROBuQGLAH2i2gZpcXdLBIrpXuTDhH7Vbm1iXmNGA== "@types/minimatch@*": version "3.0.3" resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d" integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA== -"@types/node@*", "@types/node@^14.14.20": - version "14.14.20" - resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.20.tgz#f7974863edd21d1f8a494a73e8e2b3658615c340" - integrity sha512-Y93R97Ouif9JEOWPIUyU+eyIdyRqQR0I8Ez1dzku4hDx34NWh4HbtIc3WNzwB1Y9ULvNGeu5B8h8bVL5cAk4/A== +"@types/node@*", "@types/node@^14.14.28": + version "14.14.28" + resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.28.tgz#cade4b64f8438f588951a6b35843ce536853f25b" + integrity sha512-lg55ArB+ZiHHbBBttLpzD07akz0QPrZgUODNakeC09i62dnrywr9mFErHuaPlB6I7z+sEbK+IYmplahvplCj2g== "@types/q@^1.5.1": version "1.5.4" @@ -1079,17 +1065,22 @@ "@webassemblyjs/ast" "1.11.0" "@xtuc/long" "4.2.2" -"@webpack-cli/info@^1.2.1": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@webpack-cli/info/-/info-1.2.1.tgz#af98311f983d0b9fce7284cfcf1acaf1e9f4879c" - integrity sha512-fLnDML5HZ5AEKzHul8xLAksoKN2cibu6MgonkUj8R9V7bbeVRkd1XbGEGWrAUNYHbX1jcqCsDEpBviE5StPMzQ== +"@webpack-cli/configtest@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@webpack-cli/configtest/-/configtest-1.0.1.tgz#241aecfbdc715eee96bed447ed402e12ec171935" + integrity sha512-B+4uBUYhpzDXmwuo3V9yBH6cISwxEI4J+NO5ggDaGEEHb0osY/R7MzeKc0bHURXQuZjMM4qD+bSJCKIuI3eNBQ== + +"@webpack-cli/info@^1.2.2": + version "1.2.2" + resolved "https://registry.yarnpkg.com/@webpack-cli/info/-/info-1.2.2.tgz#ef3c0cd947a1fa083e174a59cb74e0b6195c236c" + integrity sha512-5U9kUJHnwU+FhKH4PWGZuBC1hTEPYyxGSL5jjoBI96Gx8qcYJGOikpiIpFoTq8mmgX3im2zAo2wanv/alD74KQ== dependencies: envinfo "^7.7.3" -"@webpack-cli/serve@^1.2.1": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@webpack-cli/serve/-/serve-1.2.1.tgz#7513d7a769e3f97958de799b5b49874425ae3396" - integrity sha512-Zj1z6AyS+vqV6Hfi7ngCjFGdHV5EwZNIHo6QfFTNe9PyW+zBU1zJ9BiOW1pmUEq950RC4+Dym6flyA/61/vhyw== +"@webpack-cli/serve@^1.3.0": + version "1.3.0" + resolved "https://registry.yarnpkg.com/@webpack-cli/serve/-/serve-1.3.0.tgz#2730c770f5f1f132767c63dcaaa4ec28f8c56a6c" + integrity sha512-k2p2VrONcYVX1wRRrf0f3X2VGltLWcv+JzXRBDmvCxGlCeESx4OXw91TsWeKOkp784uNoVQo313vxJFHXPPwfw== "@xtuc/ieee754@^1.2.0": version "1.2.0" @@ -1120,9 +1111,9 @@ acorn@^6.4.1: integrity sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ== acorn@^8.0.4: - version "8.0.4" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.0.4.tgz#7a3ae4191466a6984eee0fe3407a4f3aa9db8354" - integrity sha512-XNP0PqF1XD19ZlLKvB7cMmnZswW4C/03pRHgirB30uSJTaS3A3V1/P4sS3HPvFmjoriPCJQs+JDSbm4bL1TxGQ== + version "8.0.5" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.0.5.tgz#a3bfb872a74a6a7f661bc81b9849d9cac12601b7" + integrity sha512-v+DieK/HJkJOpFBETDJioequtc3PfxsWMaxIdIwujtF7FEV/MAyDQLlm6/zPvr7Mix07mLh6ccVwIsloceodlg== aggregate-error@^3.0.0: version "3.1.0" @@ -1439,13 +1430,13 @@ atob@^2.1.2: resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== -autoprefixer@^10.2.1: - version "10.2.1" - resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.2.1.tgz#ce96870df6ddd9ba4c9bbba56c54b9ef4b00a962" - integrity sha512-dwP0UjyYvROUvtU+boBx8ff5pPWami1NGTrJs9YUsS/oZVbRAcdNHOOuXSA1fc46tgKqe072cVaKD69rvCc3QQ== +autoprefixer@^10.2.4: + version "10.2.4" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.2.4.tgz#c0e7cf24fcc6a1ae5d6250c623f0cb8beef2f7e1" + integrity sha512-DCCdUQiMD+P/as8m3XkeTUkUKuuRqLGcwD0nll7wevhqoJfMRpJlkFd1+MQh1pvupjiQuip42lc/VFvfUTMSKw== dependencies: browserslist "^4.16.1" - caniuse-lite "^1.0.30001173" + caniuse-lite "^1.0.30001181" colorette "^1.2.1" fraction.js "^4.0.13" normalize-range "^0.1.2" @@ -1616,16 +1607,16 @@ braces@^3.0.1, braces@~3.0.2: dependencies: fill-range "^7.0.1" -browserslist@^4.0.0, browserslist@^4.14.5, browserslist@^4.16.0, browserslist@^4.16.1: - version "4.16.1" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.16.1.tgz#bf757a2da376b3447b800a16f0f1c96358138766" - integrity sha512-UXhDrwqsNcpTYJBTZsbGATDxZbiVDsx6UjpmRUmtnP10pr8wAYr5LgFoEFw9ixriQH2mv/NX2SfGzE/o8GndLA== +browserslist@^4.0.0, browserslist@^4.14.5, browserslist@^4.16.1: + version "4.16.3" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.16.3.tgz#340aa46940d7db878748567c5dea24a48ddf3717" + integrity sha512-vIyhWmIkULaq04Gt93txdh+j02yX/JzlyhLYbV3YQCn/zvES3JnY7TifHHvvr1w5hTDluNKMkV05cs4vy8Q7sw== dependencies: - caniuse-lite "^1.0.30001173" + caniuse-lite "^1.0.30001181" colorette "^1.2.1" - electron-to-chromium "^1.3.634" + electron-to-chromium "^1.3.649" escalade "^3.1.1" - node-releases "^1.1.69" + node-releases "^1.1.70" buffer-equal@^1.0.0: version "1.0.0" @@ -1690,7 +1681,7 @@ cache-base@^1.0.1: union-value "^1.0.0" unset-value "^1.0.0" -call-bind@^1.0.0: +call-bind@^1.0.0, call-bind@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== @@ -1755,10 +1746,10 @@ caniuse-api@^3.0.0: lodash.memoize "^4.1.2" lodash.uniq "^4.5.0" -caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001173: - version "1.0.30001177" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001177.tgz#2c3b384933aafda03e29ccca7bb3d8c3389e1ece" - integrity sha512-6Ld7t3ifCL02jTj3MxPMM5wAYjbo4h/TAQGFTgv1inihP1tWnWp8mxxT4ut4JBEHLbpFXEXJJQ119JCJTBkYDw== +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001181: + version "1.0.30001187" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001187.tgz#5706942631f83baa5a0218b7dfa6ced29f845438" + integrity sha512-w7/EP1JRZ9552CyrThUnay2RkZ1DXxKe/Q2swTC4+LElLh9RRYrL1Z+27LlakB8kzY0fSmHw9mc7XYDUKAKWMA== caseless@~0.12.0: version "0.12.0" @@ -1794,9 +1785,9 @@ chalk@^4.1.0: supports-color "^7.1.0" "chokidar@>=2.0.0 <4.0.0", chokidar@^3.4.0: - version "3.5.0" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.0.tgz#458a4816a415e9d3b3caa4faec2b96a6935a9e65" - integrity sha512-JgQM9JS92ZbFR4P90EvmzNpSGhpPBGBSj10PILeDyYFwp4h2/D9OM03wsJ4zW1fEp4ka2DGrnUeD7FuvQ2aZ2Q== + version "3.5.1" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.1.tgz#ee9ce7bbebd2b79f49f304799d5468e31e14e68a" + integrity sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw== dependencies: anymatch "~3.1.1" braces "~3.0.2" @@ -1884,6 +1875,15 @@ clone-buffer@^1.0.0: resolved "https://registry.yarnpkg.com/clone-buffer/-/clone-buffer-1.0.0.tgz#e3e25b207ac4e701af721e2cb5a16792cac3dc58" integrity sha1-4+JbIHrE5wGvch4staFnksrD3Fg= +clone-deep@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387" + integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ== + dependencies: + is-plain-object "^2.0.4" + kind-of "^6.0.2" + shallow-clone "^3.0.0" + clone-stats@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/clone-stats/-/clone-stats-1.0.0.tgz#b3782dff8bb5474e18b9b6bf0fdfe782f8777680" @@ -2001,10 +2001,10 @@ commander@^4.0.1: resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== -commander@^6.2.0: - version "6.2.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-6.2.1.tgz#0792eb682dfbc325999bb2b84fddddba110ac73c" - integrity sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA== +commander@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-7.1.0.tgz#f2eaecf131f10e36e07d894698226e36ae0eb5ff" + integrity sha512-pRxBna3MJe6HKnBGsDyMv8ETbptw3axEdYHoqNh7gu5oDcew8fs0xnivZGm06Ogk8zGAJ9VX+OPEr2GXEQK4dg== commondir@^1.0.1: version "1.0.1" @@ -2104,11 +2104,11 @@ copy-props@^2.0.1: is-plain-object "^2.0.1" core-js-compat@^3.8.0: - version "3.8.2" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.8.2.tgz#3717f51f6c3d2ebba8cbf27619b57160029d1d4c" - integrity sha512-LO8uL9lOIyRRrQmZxHZFl1RV+ZbcsAkFWTktn5SmH40WgLtSNYN4m4W2v9ONT147PxBY/XrRhrWq8TlvObyUjQ== + version "3.8.3" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.8.3.tgz#9123fb6b9cad30f0651332dc77deba48ef9b0b3f" + integrity sha512-1sCb0wBXnBIL16pfFG1Gkvei6UzvKyTNYpiC41yrdjEv0UoJoq9E/abTMzyYJ6JpTkAj15dLjbqifIzEBDVvog== dependencies: - browserslist "^4.16.0" + browserslist "^4.16.1" semver "7.0.0" core-util-is@1.0.2, core-util-is@~1.0.0: @@ -2167,23 +2167,23 @@ css-declaration-sorter@^4.0.1: postcss "^7.0.1" timsort "^0.3.0" -css-loader@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-5.0.1.tgz#9e4de0d6636a6266a585bd0900b422c85539d25f" - integrity sha512-cXc2ti9V234cq7rJzFKhirb2L2iPy8ZjALeVJAozXYz9te3r4eqLSixNAbMDJSgJEQywqXzs8gonxaboeKqwiw== +css-loader@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-5.0.2.tgz#24f758dae349bad0a440c50d7e2067742e0899cb" + integrity sha512-gbkBigdcHbmNvZ1Cg6aV6qh6k9N6XOr8YWzISLQGrwk2mgOH8LLrizhkxbDhQtaLtktyKHD4970S0xwz5btfTA== dependencies: camelcase "^6.2.0" cssesc "^3.0.0" - icss-utils "^5.0.0" + icss-utils "^5.1.0" loader-utils "^2.0.0" - postcss "^8.1.4" + postcss "^8.2.4" postcss-modules-extract-imports "^3.0.0" postcss-modules-local-by-default "^4.0.0" postcss-modules-scope "^3.0.0" postcss-modules-values "^4.0.0" postcss-value-parser "^4.1.0" schema-utils "^3.0.0" - semver "^7.3.2" + semver "^7.3.4" css-minimizer-webpack-plugin@^1.2.0: version "1.2.0" @@ -2580,10 +2580,10 @@ ee-first@1.1.1: resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= -electron-to-chromium@^1.3.634: - version "1.3.639" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.639.tgz#0a27e3018ae3acf438a14a1dd4e41db4b8ab764e" - integrity sha512-bwl6/U6xb3d3CNufQU9QeO1L32ueouFwW4bWANSwdXR7LVqyLzWjNbynoKNfuC38QFB5Qn7O0l2KLqBkcXnC3Q== +electron-to-chromium@^1.3.649: + version "1.3.666" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.666.tgz#59f3ce1e45b860a0ebe439b72664354efbb8bc62" + integrity sha512-/mP4HFQ0fKIX4sXltG6kfcoGrfNDZwCIyWbH2SIcVaa9u7Rm0HKjambiHNg5OEruicTl9s1EwbERLwxZwk19aw== emoji-regex@^7.0.1: version "7.0.3" @@ -2632,14 +2632,14 @@ enquirer@^2.3.6: ansi-colors "^4.1.1" entities@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/entities/-/entities-2.1.0.tgz#992d3129cf7df6870b96c57858c249a120f8b8b5" - integrity sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w== + version "2.2.0" + resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" + integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== envinfo@^7.7.3: - version "7.7.3" - resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.7.3.tgz#4b2d8622e3e7366afb8091b23ed95569ea0208cc" - integrity sha512-46+j5QxbPWza0PB1i15nZx0xQ4I/EfQxg9J8Had3b408SV63nEtor2e+oiY63amTo9KTuh2a3XLObNwduxYwwA== + version "7.7.4" + resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.7.4.tgz#c6311cdd38a0e86808c1c9343f667e4267c4a320" + integrity sha512-TQXTYFVVwwluWSFis6K2XKxgrD22jEv0FTuLCQI+OjH7rn93+iY0fSSFM5lrSxFY+H1+B0/cvvlamr3UsBivdQ== errno@^0.1.3: version "0.1.8" @@ -2655,7 +2655,7 @@ error-ex@^1.2.0, error-ex@^1.3.1: dependencies: is-arrayish "^0.2.1" -es-abstract@^1.17.0-next.1, es-abstract@^1.17.2: +es-abstract@^1.17.2: version "1.17.7" resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.7.tgz#a4de61b2f66989fc7421676c1cb9787573ace54c" integrity sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g== @@ -2673,22 +2673,24 @@ es-abstract@^1.17.0-next.1, es-abstract@^1.17.2: string.prototype.trimstart "^1.0.1" es-abstract@^1.18.0-next.1: - version "1.18.0-next.1" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.18.0-next.1.tgz#6e3a0a4bda717e5023ab3b8e90bec36108d22c68" - integrity sha512-I4UGspA0wpZXWENrdA0uHbnhte683t3qT/1VFH9aX2dA5PPSf6QW5HHXf5HImaqPmjXaVeVk4RGWnaylmV7uAA== + version "1.18.0-next.2" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.18.0-next.2.tgz#088101a55f0541f595e7e057199e27ddc8f3a5c2" + integrity sha512-Ih4ZMFHEtZupnUh6497zEL4y2+w8+1ljnCyaTa+adcoafI1GOvMwFlDjBLfWR7y9VLfrjRJe9ocuHY1PSR9jjw== dependencies: + call-bind "^1.0.2" es-to-primitive "^1.2.1" function-bind "^1.1.1" + get-intrinsic "^1.0.2" has "^1.0.3" has-symbols "^1.0.1" is-callable "^1.2.2" - is-negative-zero "^2.0.0" + is-negative-zero "^2.0.1" is-regex "^1.1.1" - object-inspect "^1.8.0" + object-inspect "^1.9.0" object-keys "^1.1.1" - object.assign "^4.1.1" - string.prototype.trimend "^1.0.1" - string.prototype.trimstart "^1.0.1" + object.assign "^4.1.2" + string.prototype.trimend "^1.0.3" + string.prototype.trimstart "^1.0.3" es-module-lexer@^0.3.26: version "0.3.26" @@ -3059,14 +3061,6 @@ find-up@^4.0.0: locate-path "^5.0.0" path-exists "^4.0.0" -find-up@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" - integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== - dependencies: - locate-path "^6.0.0" - path-exists "^4.0.0" - findup-sync@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-2.0.0.tgz#9326b1488c22d1a6088650a86901b2d9a90a2cbc" @@ -3112,9 +3106,9 @@ flush-write-stream@^1.0.2: readable-stream "^2.3.6" follow-redirects@^1.0.0: - version "1.13.1" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.13.1.tgz#5f69b813376cee4fd0474a3aba835df04ab763b7" - integrity sha512-SSG5xmZh1mkPGyKzjZP8zLjltIfpW32Y5QpdNJyjcfGxK3qo3NDDkZOZSFiGn1A6SclQxY9GzEwAHQ3dmYRWpg== + version "1.13.2" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.13.2.tgz#dd73c8effc12728ba5cf4259d760ea5fb83e3147" + integrity sha512-6mPTgLxYm3r6Bkkg0vNM0HTjfGrOEtsfbhagQvbxDEsEkpNhw582upBaoRZylzen6krEmxXJgt9Ju6HiI4O7BA== for-in@^1.0.1, for-in@^1.0.2: version "1.0.2" @@ -3198,9 +3192,9 @@ fsevents@^1.2.7: nan "^2.12.1" fsevents@~2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.1.tgz#b209ab14c61012636c8863507edf7fb68cc54e9f" - integrity sha512-YR47Eg4hChJGAB1O3yEAOkGO+rlzutoICGqGo9EZ4lKWokzZRSyIW1QmTzqjtw8MJdj9srP869CuWw/hyzSiBw== + version "2.3.2" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" + integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== fstream@^1.0.0, fstream@^1.0.12: version "1.0.12" @@ -3254,9 +3248,9 @@ get-caller-file@^2.0.1: integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== get-intrinsic@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.0.2.tgz#6820da226e50b24894e08859469dc68361545d49" - integrity sha512-aeX0vrFm21ILl3+JpFFRNe9aUvp6VFZb2/CTbgLb8j75kOhvoNYjt9d8KA/tJG4gSo8nzEDedRl0h7vDmBYRVg== + version "1.1.1" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6" + integrity sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q== dependencies: function-bind "^1.1.1" has "^1.0.3" @@ -3405,9 +3399,9 @@ glogg@^1.0.0: sparkles "^1.0.0" graceful-fs@^4.0.0, graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.4: - version "4.2.4" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb" - integrity sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw== + version "4.2.6" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.6.tgz#ff040b2b0853b23c3d31027523706f1885d76bee" + integrity sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ== gulp-clean-css@^4.3.0: version "4.3.0" @@ -3727,7 +3721,7 @@ iconv-lite@0.4.24: dependencies: safer-buffer ">= 2.1.2 < 3" -icss-utils@^5.0.0: +icss-utils@^5.0.0, icss-utils@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-5.1.0.tgz#c6be6858abd013d768e98366ae47e25d5887b1ae" integrity sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA== @@ -3932,9 +3926,9 @@ is-buffer@^1.1.5: integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== is-callable@^1.1.4, is-callable@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.2.tgz#c7c6715cd22d4ddb48d3e19970223aceabb080d9" - integrity sha512-dnMqspv5nU3LoewK2N/y7KLtxtakvTuaCsU9FU50/QDmdbHNy/4/JuRtMHqRU22o3q+W89YQndQEeCVwK+3qrA== + version "1.2.3" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.3.tgz#8b1e0500b73a1d76c70487636f368e519de8db8e" + integrity sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ== is-color-stop@^1.0.0: version "1.1.0" @@ -3948,7 +3942,7 @@ is-color-stop@^1.0.0: rgb-regex "^1.0.1" rgba-regex "^1.0.0" -is-core-module@^2.1.0: +is-core-module@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.2.0.tgz#97037ef3d52224d85163f5597b2b63d9afed981a" integrity sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ== @@ -4050,7 +4044,7 @@ is-negated-glob@^1.0.0: resolved "https://registry.yarnpkg.com/is-negated-glob/-/is-negated-glob-1.0.0.tgz#6910bca5da8c95e784b5751b976cf5a10fee36d2" integrity sha1-aRC8pdqMleeEtXUbl2z1oQ/uNtI= -is-negative-zero@^2.0.0: +is-negative-zero@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.1.tgz#3de746c18dda2319241a53675908d8f766f11c24" integrity sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w== @@ -4109,10 +4103,11 @@ is-promise@^2.2.2: integrity sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ== is-regex@^1.0.4, is-regex@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.1.tgz#c6f98aacc546f6cec5468a07b7b153ab564a57b9" - integrity sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg== + version "1.1.2" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.2.tgz#81c8ebde4db142f2cf1c53fc86d6a45788266251" + integrity sha512-axvdhb5pdhEVThqJzYXwMlVuZwC+FF2DpcOhTS+y/8jVq4trxyPgfcwIxIKiyeuLlSQYKkmUaPQJ8ZE4yNKXDg== dependencies: + call-bind "^1.0.2" has-symbols "^1.0.1" is-relative@^1.0.0: @@ -4290,9 +4285,9 @@ json5@^1.0.1: minimist "^1.2.0" json5@^2.1.2: - version "2.1.3" - resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.3.tgz#c9b0f7fa9233bfe5807fe66fcf3a5617ed597d43" - integrity sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA== + version "2.2.0" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.0.tgz#2dfefe720c6ba525d9ebd909950f0515316c89a3" + integrity sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA== dependencies: minimist "^1.2.5" @@ -4437,13 +4432,6 @@ locate-path@^5.0.0: dependencies: p-locate "^4.1.0" -locate-path@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" - integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== - dependencies: - p-locate "^5.0.0" - lodash.memoize@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" @@ -4646,11 +4634,16 @@ micromatch@^4.0.0: braces "^3.0.1" picomatch "^2.0.5" -mime-db@1.45.0, "mime-db@>= 1.43.0 < 2": +mime-db@1.45.0: version "1.45.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.45.0.tgz#cceeda21ccd7c3a745eba2decd55d4b73e7879ea" integrity sha512-CkqLUxUk15hofLoLyljJSrukZi8mAtgd+yE5uO4tqRZsdsAJKv0O+rFMhVDRJgozy+yG6md5KwuXhD4ocIoP+w== +"mime-db@>= 1.43.0 < 2": + version "1.46.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.46.0.tgz#6267748a7f799594de3cbc8cde91def349661cee" + integrity sha512-svXaP8UQRZ5K7or+ZmfNhg2xX3yKDMUzqadsSqi4NCH/KomcH75MAMYAGVlvXn4+b/xOPhS3I2uHKRUzvjY7BQ== + mime-types@^2.1.12, mime-types@^2.1.27, mime-types@~2.1.17, mime-types@~2.1.19, mime-types@~2.1.24: version "2.1.28" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.28.tgz#1160c4757eab2c5363888e005273ecf79d2a0ecd" @@ -4664,9 +4657,9 @@ mime@1.6.0: integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== mime@^2.4.4: - version "2.4.7" - resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.7.tgz#962aed9be0ed19c91fd7dc2ece5d7f4e89a90d74" - integrity sha512-dhNd1uA2u397uQk3Nv5LM4lm93WYDUXFn3Fu291FJerns4jyTudqhIWe4W04YLy7Uk1tm1Ore04NpjRvQp/NPA== + version "2.5.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-2.5.0.tgz#2b4af934401779806ee98026bb42e8c1ae1876b1" + integrity sha512-ft3WayFSFUVBuJj7BMLKAQcSlItKtfjsKDDsii3rqFDAZ7t11zRe8ASw/GlmivGwVUYtwkQrxiGGpL6gFvB0ag== mimic-fn@^2.1.0: version "2.1.0" @@ -4859,10 +4852,10 @@ node-gyp@^3.8.0: tar "^2.0.0" which "1" -node-releases@^1.1.69: - version "1.1.69" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.69.tgz#3149dbde53b781610cd8b486d62d86e26c3725f6" - integrity sha512-DGIjo79VDEyAnRlfSqYTsy+yoHd2IOjJiKUozD2MV2D85Vso6Bug56mb9tT/fY5Urt0iqk01H7x+llAruDR2zA== +node-releases@^1.1.70: + version "1.1.70" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.70.tgz#66e0ed0273aa65666d7fe78febe7634875426a08" + integrity sha512-Slf2s69+2/uAD79pVVQo8uSiC34+g8GWY8UH2Qtqv34ZfhYrxpYpfzs9Js9d6O0mbDmALuxaTlplnBTnSELcrw== node-sass@^4.8.3: version "4.14.1" @@ -4988,7 +4981,7 @@ object-copy@^0.1.0: define-property "^0.2.5" kind-of "^3.0.3" -object-inspect@^1.8.0: +object-inspect@^1.8.0, object-inspect@^1.9.0: version "1.9.0" resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.9.0.tgz#c90521d74e1127b67266ded3394ad6116986533a" integrity sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw== @@ -5013,7 +5006,7 @@ object-visit@^1.0.0: dependencies: isobject "^3.0.0" -object.assign@^4.0.4, object.assign@^4.1.0, object.assign@^4.1.1: +object.assign@^4.0.4, object.assign@^4.1.0, object.assign@^4.1.1, object.assign@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940" integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ== @@ -5185,13 +5178,6 @@ p-locate@^4.1.0: dependencies: p-limit "^2.2.0" -p-locate@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" - integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== - dependencies: - p-limit "^3.0.2" - p-map@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/p-map/-/p-map-2.1.0.tgz#310928feef9c9ecc65b68b17693018a665cea175" @@ -5379,13 +5365,6 @@ pkg-dir@^4.1.0, pkg-dir@^4.2.0: dependencies: find-up "^4.0.0" -pkg-dir@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-5.0.0.tgz#a02d6aebe6ba133a928f74aec20bafdfe6b8e760" - integrity sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA== - dependencies: - find-up "^5.0.0" - plugin-error@1.0.1, plugin-error@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/plugin-error/-/plugin-error-1.0.1.tgz#77016bd8919d0ac377fdcdd0322328953ca5781c" @@ -5731,10 +5710,10 @@ postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.16, postcss@^7.0.27: source-map "^0.6.1" supports-color "^6.1.0" -postcss@^8.1.4, postcss@^8.2.4: - version "8.2.4" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.2.4.tgz#20a98a39cf303d15129c2865a9ec37eda0031d04" - integrity sha512-kRFftRoExRVXZlwUuay9iC824qmXPcQQVzAjbCCgjpXnkdMCJYBu2gTwAaFBzv8ewND6O8xFb3aELmEkh9zTzg== +postcss@^8.2.4, postcss@^8.2.6: + version "8.2.6" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.2.6.tgz#5d69a974543b45f87e464bc4c3e392a97d6be9fe" + integrity sha512-xpB8qYxgPuly166AGlpRjUdEYtmOWx2iCwGmrv4vqZL9YPVviDVPZPRXxnXr6xPZOdxQ9lp3ZBFCRgWJ7LE3Sg== dependencies: colorette "^1.2.1" nanoid "^3.1.20" @@ -5975,12 +5954,12 @@ regex-not@^1.0.0, regex-not@^1.0.2: safe-regex "^1.1.0" regexp.prototype.flags@^1.2.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz#7aba89b3c13a64509dabcf3ca8d9fbb9bdf5cb75" - integrity sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ== + version "1.3.1" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz#7ef352ae8d159e758c0eadca6f8fcb4eef07be26" + integrity sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA== dependencies: + call-bind "^1.0.2" define-properties "^1.1.3" - es-abstract "^1.17.0-next.1" regexpu-core@^4.7.1: version "4.7.1" @@ -6000,9 +5979,9 @@ regjsgen@^0.5.1: integrity sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A== regjsparser@^0.6.4: - version "0.6.6" - resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.6.6.tgz#6d8c939d1a654f78859b08ddcc4aa777f3fa800a" - integrity sha512-jjyuCp+IEMIm3N1H1LLTJW1EISEJV9+5oHdEyrt43Pg9cDSb6rrLZei2cVWpl0xTjmmlpec/lEQGYgM7xfpGCQ== + version "0.6.7" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.6.7.tgz#c00164e1e6713c2e3ee641f1701c4b7aa0a7f86c" + integrity sha512-ib77G0uxsA2ovgiYbCVGx4Pv3PSttAx2vIwidqQzbL2U5S4Q+j00HdSAneSBuyVcMvEnTXMjiGgB+DlXozVhpQ== dependencies: jsesc "~0.5.0" @@ -6150,11 +6129,11 @@ resolve-url@^0.2.1: integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= resolve@^1.1.6, resolve@^1.1.7, resolve@^1.10.0, resolve@^1.4.0, resolve@^1.9.0: - version "1.19.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.19.0.tgz#1af5bf630409734a067cae29318aac7fa29a267c" - integrity sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg== + version "1.20.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975" + integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A== dependencies: - is-core-module "^2.1.0" + is-core-module "^2.2.0" path-parse "^1.0.6" ret@~0.1.10: @@ -6223,21 +6202,18 @@ sass-graph@2.2.5: scss-tokenizer "^0.2.3" yargs "^13.3.2" -sass-loader@^10.1.1: - version "10.1.1" - resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-10.1.1.tgz#4ddd5a3d7638e7949065dd6e9c7c04037f7e663d" - integrity sha512-W6gVDXAd5hR/WHsPicvZdjAWHBcEJ44UahgxcIE196fW2ong0ZHMPO1kZuI5q0VlvMQZh32gpv69PLWQm70qrw== +sass-loader@^11.0.1: + version "11.0.1" + resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-11.0.1.tgz#8672f896593466573b904f47693e0695368e38c9" + integrity sha512-Vp1LcP4slTsTNLEiDkTcm8zGN/XYYrZz2BZybQbliWA8eXveqA/AxsEjllQTpJbg2MzCsx/qNO48sHdZtOaxTw== dependencies: klona "^2.0.4" - loader-utils "^2.0.0" neo-async "^2.6.2" - schema-utils "^3.0.0" - semver "^7.3.2" -sass@^1.32.4: - version "1.32.4" - resolved "https://registry.yarnpkg.com/sass/-/sass-1.32.4.tgz#308bf29dd7f53d44ae4f06580e9a910ad9aa411e" - integrity sha512-N0BT0PI/t3+gD8jKa83zJJUb7ssfQnRRfqN+GIErokW6U4guBpfYl8qYB+OFLEho+QvnV5ZH1R9qhUC/Z2Ch9w== +sass@^1.32.7: + version "1.32.7" + resolved "https://registry.yarnpkg.com/sass/-/sass-1.32.7.tgz#632a9df2b85dc4b346977fcaf2d5e6f2b7039fd8" + integrity sha512-C8Z4bjqGWnsYa11o8hpKAuoyFdRhrSHcYjCr+XAWVPSIQqC8mp2f5Dx4em0dKYehPzg5XSekmCjqJnEZbIls9A== dependencies: chokidar ">=2.0.0 <4.0.0" @@ -6315,7 +6291,7 @@ semver@^6.0.0, semver@^6.3.0: resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== -semver@^7.3.2, semver@^7.3.4: +semver@^7.3.4: version "7.3.4" resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.4.tgz#27aaa7d2e4ca76452f98d3add093a72c943edc97" integrity sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw== @@ -6401,6 +6377,13 @@ setprototypeof@1.1.1: resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683" integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw== +shallow-clone@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3" + integrity sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA== + dependencies: + kind-of "^6.0.2" + shebang-command@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" @@ -6526,9 +6509,9 @@ source-map-support@~0.5.19: source-map "^0.6.0" source-map-url@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" - integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM= + version "0.4.1" + resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.1.tgz#0af66605a745a5a2f91cf1bbf8a7afbc283dec56" + integrity sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw== source-map@^0.4.2: version "0.4.4" @@ -6634,9 +6617,9 @@ sshpk@^1.7.0: tweetnacl "~0.14.0" ssri@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/ssri/-/ssri-8.0.0.tgz#79ca74e21f8ceaeddfcb4b90143c458b8d988808" - integrity sha512-aq/pz989nxVYwn16Tsbj1TqFpD5LLrQxHf5zaHuieFV+R0Bbr4y8qUsOA45hXT/N4/9UNXTarBjnjVmjSOVaAA== + version "8.0.1" + resolved "https://registry.yarnpkg.com/ssri/-/ssri-8.0.1.tgz#638e4e439e2ffbd2cd289776d5ca457c4f51a2af" + integrity sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ== dependencies: minipass "^3.1.1" @@ -6706,7 +6689,7 @@ string-width@^3.0.0, string-width@^3.1.0: is-fullwidth-code-point "^2.0.0" strip-ansi "^5.1.0" -string.prototype.trimend@^1.0.1: +string.prototype.trimend@^1.0.1, string.prototype.trimend@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.3.tgz#a22bd53cca5c7cf44d7c9d5c732118873d6cd18b" integrity sha512-ayH0pB+uf0U28CtjlLvL7NaohvR1amUvVZk+y3DYb0Ey2PUV5zPkkKy9+U1ndVEIXO8hNg18eIv9Jntbii+dKw== @@ -6714,7 +6697,7 @@ string.prototype.trimend@^1.0.1: call-bind "^1.0.0" define-properties "^1.1.3" -string.prototype.trimstart@^1.0.1: +string.prototype.trimstart@^1.0.1, string.prototype.trimstart@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.3.tgz#9b4cb590e123bb36564401d59824298de50fd5aa" integrity sha512-oBIBUy5lea5tt0ovtOFiEQaBkoBBkyJhZXzJYrSmDo5IUUqbOPvVezuRs/agBIdZ2p2Eo1FD6bD9USyBLfl3xg== @@ -6900,9 +6883,9 @@ terser-webpack-plugin@^5.1.1: terser "^5.5.1" terser@^5.5.1: - version "5.5.1" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.5.1.tgz#540caa25139d6f496fdea056e414284886fb2289" - integrity sha512-6VGWZNVP2KTUcltUQJ25TtNjx/XgdDsBDKGt8nN0MpydU36LmbPPcMBd2kmtZNNGVVDLg44k7GKeHHj+4zPIBQ== + version "5.6.0" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.6.0.tgz#138cdf21c5e3100b1b3ddfddf720962f88badcd2" + integrity sha512-vyqLMoqadC1uR0vywqOZzriDYzgEkNJFK4q9GeyOBHIbiECHiWLKcWfbQWAUaPfxkjDhapSlZB9f7fkMrvkVjA== dependencies: commander "^2.20.0" source-map "~0.7.2" @@ -7046,10 +7029,10 @@ trim-newlines@^1.0.0: dependencies: glob "^7.1.2" -ts-loader@^8.0.14: - version "8.0.14" - resolved "https://registry.yarnpkg.com/ts-loader/-/ts-loader-8.0.14.tgz#e46ac1f8dcb88808d0b1335d2eae65b74bd78fe8" - integrity sha512-Jt/hHlUnApOZjnSjTmZ+AbD5BGlQFx3f1D0nYuNKwz0JJnuDGHJas6az+FlWKwwRTu+26GXpv249A8UAnYUpqA== +ts-loader@^8.0.17: + version "8.0.17" + resolved "https://registry.yarnpkg.com/ts-loader/-/ts-loader-8.0.17.tgz#98f2ccff9130074f4079fd89b946b4c637b1f2fc" + integrity sha512-OeVfSshx6ot/TCxRwpBHQ/4lRzfgyTkvi7ghDVrLXOHzTbSK413ROgu/xNqM72i3AFeAIJgQy78FwSMKmOW68w== dependencies: chalk "^4.1.0" enhanced-resolve "^4.0.0" @@ -7088,19 +7071,19 @@ type@^1.0.1: integrity sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg== type@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/type/-/type-2.1.0.tgz#9bdc22c648cf8cf86dd23d32336a41cfb6475e3f" - integrity sha512-G9absDWvhAWCV2gmF1zKud3OyC61nZDwWvBL2DApaVFogI07CprggiQAOOjvp2NRjYWFzPyu7vwtDrQFq8jeSA== + version "2.3.0" + resolved "https://registry.yarnpkg.com/type/-/type-2.3.0.tgz#ada7c045f07ead08abf9e2edd29be1a0c0661132" + integrity sha512-rgPIqOdfK/4J9FhiVrZ3cveAjRRo5rsQBAIhnylX874y1DX/kEKSVdLsnuHB6l1KTjHyU01VjiMBHgU2adejyg== typedarray@^0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= -typescript@^4.1.3: - version "4.1.3" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.1.3.tgz#519d582bd94cba0cf8934c7d8e8467e473f53bb7" - integrity sha512-B3ZIOf1IKeH2ixgHhj6la6xdwR9QrLC5d1VKeCSY4tvkqhF2eqd9O7txNlS0PO3GrBAFIdr3L1ndNwteUbZLYg== +typescript@^4.1.5: + version "4.1.5" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.1.5.tgz#123a3b214aaff3be32926f0d8f1f6e704eb89a72" + integrity sha512-6OSu9PTIzmn9TCDiovULTnET6BgXtDYL4Gg4szY+cGsc3JP1dQL8qvE8kShTRx1NIw4Q9IBHlwODjkjWEtMUyA== unc-path-regex@^0.1.2: version "0.1.2" @@ -7374,9 +7357,9 @@ vinyl@^2.0.0: replace-ext "^1.0.0" watchpack@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.1.0.tgz#e63194736bf3aa22026f7b191cd57907b0f9f696" - integrity sha512-UjgD1mqjkG99+3lgG36at4wPnUXNvis2v1utwTgQ43C22c4LD71LsYMExdWXh4HZ+RmW+B0t1Vrg2GpXAkTOQw== + version "2.1.1" + resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.1.1.tgz#e99630550fca07df9f90a06056987baa40a689c7" + integrity sha512-Oo7LXCmc1eE1AjyuSBmtC3+Wy4HcV8PxWh2kP6fOl8yTlNS7r0K9l1ao2lrrUza7V39Y3D/BbJgY8VeSlc5JKw== dependencies: glob-to-regexp "^0.4.1" graceful-fs "^4.1.2" @@ -7388,16 +7371,17 @@ wbuf@^1.1.0, wbuf@^1.7.3: dependencies: minimalistic-assert "^1.0.0" -webpack-cli@^4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-4.3.1.tgz#87a7873bc9c6a4708aa657759274b691e72a04a8" - integrity sha512-/F4+9QNZM/qKzzL9/06Am8NXIkGV+/NqQ62Dx7DSqudxxpAgBqYn6V7+zp+0Y7JuWksKUbczRY3wMTd+7Uj6OA== +webpack-cli@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-4.5.0.tgz#b5213b84adf6e1f5de6391334c9fa53a48850466" + integrity sha512-wXg/ef6Ibstl2f50mnkcHblRPN/P9J4Nlod5Hg9HGFgSeF8rsqDGHJeVe4aR26q9l62TUJi6vmvC2Qz96YJw1Q== dependencies: "@discoveryjs/json-ext" "^0.5.0" - "@webpack-cli/info" "^1.2.1" - "@webpack-cli/serve" "^1.2.1" + "@webpack-cli/configtest" "^1.0.1" + "@webpack-cli/info" "^1.2.2" + "@webpack-cli/serve" "^1.3.0" colorette "^1.2.1" - commander "^6.2.0" + commander "^7.0.0" enquirer "^2.3.6" execa "^5.0.0" fastest-levenshtein "^1.0.12" @@ -7405,7 +7389,7 @@ webpack-cli@^4.3.1: interpret "^2.2.0" rechoir "^0.7.0" v8-compile-cache "^2.2.0" - webpack-merge "^4.2.2" + webpack-merge "^5.7.3" webpack-dev-middleware@^3.7.2: version "3.7.3" @@ -7465,12 +7449,13 @@ webpack-log@^2.0.0: ansi-colors "^3.0.0" uuid "^3.3.2" -webpack-merge@^4.2.2: - version "4.2.2" - resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-4.2.2.tgz#a27c52ea783d1398afd2087f547d7b9d2f43634d" - integrity sha512-TUE1UGoTX2Cd42j3krGYqObZbOD+xF7u28WB7tfUordytSjbWTIjK/8V0amkBfTYN4/pB/GIDlJZZ657BGG19g== +webpack-merge@^5.7.3: + version "5.7.3" + resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-5.7.3.tgz#2a0754e1877a25a8bbab3d2475ca70a052708213" + integrity sha512-6/JUQv0ELQ1igjGDzHkXbVDRxkfA57Zw7PfiupdLFJYrgFqY5ZP8xxbpp2lU3EPwYx89ht5Z/aDkD40hFCm5AA== dependencies: - lodash "^4.17.15" + clone-deep "^4.0.1" + wildcard "^2.0.0" webpack-sources@^1.4.3: version "1.4.3" @@ -7488,13 +7473,13 @@ webpack-sources@^2.1.1: source-list-map "^2.0.1" source-map "^0.6.1" -webpack@^5.14.0: - version "5.14.0" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.14.0.tgz#cdfe9286d14ddc2bb348afabc1d910d166f3c47f" - integrity sha512-PFtfqXIKT6EG+k4L7d9whUPacN2XvxlUMc8NAQvN+sF9G8xPQqrCDGDiXbAdyGNz+/OP6ioxnUKybBBZ1kp/2A== +webpack@^5.22.0: + version "5.22.0" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.22.0.tgz#8505158bc52dcbbdb01ac94796a8aed61badf11a" + integrity sha512-xqlb6r9RUXda/d9iA6P7YRTP1ChWeP50TEESKMMNIg0u8/Rb66zN9YJJO7oYgJTRyFyYi43NVC5feG45FSO1vQ== dependencies: "@types/eslint-scope" "^3.7.0" - "@types/estree" "^0.0.45" + "@types/estree" "^0.0.46" "@webassemblyjs/ast" "1.11.0" "@webassemblyjs/wasm-edit" "1.11.0" "@webassemblyjs/wasm-parser" "1.11.0" @@ -7511,7 +7496,6 @@ webpack@^5.14.0: loader-runner "^4.2.0" mime-types "^2.1.27" neo-async "^2.6.2" - pkg-dir "^5.0.0" schema-utils "^3.0.0" tapable "^2.1.1" terser-webpack-plugin "^5.1.1" @@ -7563,6 +7547,11 @@ wide-align@^1.1.0: dependencies: string-width "^1.0.2 || 2" +wildcard@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/wildcard/-/wildcard-2.0.0.tgz#a77d20e5200c6faaac979e4b3aadc7b3dd7f8fec" + integrity sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw== + wrap-ansi@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85"