UNPKG

@tdb/web

Version:

Common condiguration for serving a web-site and testing web-based UI components.

98 lines (86 loc) 2.21 kB
/*eslint-env browser*/ var clientOverlay = document.createElement('div'); clientOverlay.id = 'webpack-hot-middleware-clientOverlay'; 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', dir: 'ltr', textAlign: 'left' }; 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' }; var Entities = require('html-entities').AllHtmlEntities; var entities = new Entities(); 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); } } function clear() { if (document.body && clientOverlay.parentNode) { document.body.removeChild(clientOverlay); } } function problemType (type) { var problemColors = { errors: colors.red, warnings: colors.yellow }; 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>' ); } module.exports = function(options) { for (var color in options.overlayColors) { if (color in colors) { colors[color] = options.overlayColors[color]; } ansiHTML.setColors(colors); } for (var style in options.overlayStyles) { styles[style] = options.overlayStyles[style]; } for (var key in styles) { clientOverlay.style[key] = styles[key]; } return { showProblems: showProblems, clear: clear } }; module.exports.clear = clear; module.exports.showProblems = showProblems;