var escapeHtml = require('html-util').escapeHtml
, errors = {};
exports.errorHtml = errorHtml;
exports.autoRefresh = autoRefresh;
function errorHtml(errors) {
var text = ''
, type, err;
for (type in errors) {
err = errors[type];
text += '
' + escapeHtml(type) + ' Error
' + escapeHtml(err) + '
';
}
if (!text) return;
return '';
}
function autoRefresh(view, model) {
var socket = model.socket;
socket.on('refreshCss', function(err, css) {
var el = document.getElementById('$_css');
if (el) el.innerHTML = css;
updateError('CSS', err);
});
socket.on('refreshHtml', function(err, templates, instances, libraryData) {
view._makeAll(templates, instances);
view._makeComponents(libraryData);
try {
view.app.dom._preventUpdates = true;
view.app.history.refresh();
} catch (_err) {
err || (err = _err.stack);
}
updateError('Template', err);
});
}
function updateError(type, err) {
if (err) {
errors[type] = err;
} else {
delete errors[type];
}
var el = document.getElementById('$_derbyError')
, html = errorHtml(errors)
, fragment, range;
if (html) {
if (el) {
el.outerHTML = html;
} else {
range = document.createRange();
range.selectNode(document.body);
fragment = range.createContextualFragment(html);
document.body.appendChild(fragment);
}
} else {
if (el) el.parentNode.removeChild(el);
}
}