// ==UserScript==
// @name HTML for Gmail
// @namespace https://github.com/DeathHackz/HTML-for-Gmail
// @version 1.0.0
// @description Send HTML Formatted Emails With Gmail
// @match https://mail.google.com/*
// @author DeathHackz
// @copyright 2019 DeathHackz
// @license MIT
// @homepageURL https://deathhackz.github.io/HTML-for-Gmail
// @supportURL https://github.com/DeathHackz/HTML-for-Gmail/issues
// @icon https://raw.githubusercontent.com/DeathHackz/HTML-for-Gmail/master/iocn.png
// @updateURL https://raw.githubusercontent.com/DeathHackz/HTML-for-Gmail/master/src/HTML-for-Gmail.meta.js
// @downloadURL https://raw.githubusercontent.com/DeathHackz/HTML-for-Gmail/master/src/HTML-for-Gmail.user.js
// @run-at document-body
// ==/UserScript==
document.addEventListener(
'click',
event => {
if (document.querySelectorAll('td.a8X.gU')) {
const buttonHtml = `
`;
document.querySelectorAll('td.a8X.gU').forEach(element => {
if (element.childNodes[0].id != 'convertText') {
element.childNodes[0].insertAdjacentHTML('beforebegin', buttonHtml);
element.childNodes[0].addEventListener(
'click',
event => {
let editor;
try {
editor = element.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.childNodes[0].childNodes[0].childNodes[0].childNodes[0].childNodes[1].childNodes[0].childNodes[0].childNodes[1].childNodes[0].childNodes[0].childNodes[1].childNodes[1].childNodes[0];
} catch (error) {
editor = element.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.childNodes[0].childNodes[0].childNodes[0].childNodes[1].childNodes[0].childNodes[0].childNodes[1].childNodes[0].childNodes[0].childNodes[1].childNodes[1].childNodes[0];
}
const classListLength = editor.classList.length;
if (editor.classList[classListLength - 1] != 'HTML') {
editor.classList.add('HTML');
element.childNodes[0].dataset.tooltip = 'Convert to Text';
element.childNodes[0].setAttribute('aria-label', 'Convert to Text');
element.childNodes[0].childNodes[1].childNodes[1].childNodes[1].style.backgroundImage = 'url("https://www.gstatic.com/images/icons/material/system/1x/title_black_20dp.png")';
const rawText = editor.innerText;
editor.innerHTML = rawText;
} else {
editor.classList.remove('HTML');
element.childNodes[0].dataset.tooltip = 'Convert to HTML';
element.childNodes[0].setAttribute('aria-label', 'Convert to HTML');
element.childNodes[0].childNodes[1].childNodes[1].childNodes[1].style.backgroundImage = 'url("https://www.gstatic.com/images/icons/material/system/1x/code_black_20dp.png")';
const htmlText = editor.innerHTML;
editor.innerText = htmlText;
}
},
false
);
}
});
}
},
false
);