kitchensink
Version:
Dispatch's awesome components and style guide
77 lines (69 loc) • 1.73 kB
JavaScript
/*eslint-env browser*/
var clientOverlay = document.createElement('div');
var styles = {
background: 'rgba(0,0,0,0.85)',
color: '#E8E8E8',
lineHeight: '1.2',
whiteSpace: 'pre',
fontFamily: 'Menlo, Consolas, monospace',
fontSize: '13px',
position: 'fixed',
zIndex: 9999,
padding: '10px',
left: 0,
right: 0,
top: 0,
bottom: 0,
overflow: 'auto'
};
for (var key in styles) {
clientOverlay.style[key] = styles[key];
}
var ansiHTML = require('ansi-html');
var colors = {
reset: ['transparent', 'transparent'],
black: '181818',
red: 'E36049',
green: 'B3CB74',
yellow: 'FFD080',
blue: '7CAFC2',
magenta: '7FACCA',
cyan: 'C3C2EF',
lightgrey: 'EBE7E3',
darkgrey: '6D7891'
};
ansiHTML.setColors(colors);
var Entities = require('html-entities').AllHtmlEntities;
var entities = new Entities();
exports.showProblems =
function showProblems(type, lines) {
clientOverlay.innerHTML = '';
lines.forEach(function(msg) {
msg = ansiHTML(entities.encode(msg));
var div = document.createElement('div');
div.style.marginBottom = '26px';
div.innerHTML = problemType(type) + ' in ' + msg;
clientOverlay.appendChild(div);
});
if (document.body) {
document.body.appendChild(clientOverlay);
}
};
exports.clear =
function clear() {
if (document.body && clientOverlay.parentNode) {
document.body.removeChild(clientOverlay);
}
};
var problemColors = {
errors: colors.red,
warnings: colors.yellow
};
function problemType (type) {
var color = problemColors[type] || colors.red;
return (
'<span style="background-color:#' + color + '; color:#fff; padding:2px 4px; border-radius: 2px">' +
type.slice(0, -1).toUpperCase() +
'</span>'
);
}