Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Nicer looking overlay #9

Closed
glenjamin opened this issue Sep 3, 2015 · 6 comments
Closed

Nicer looking overlay #9

glenjamin opened this issue Sep 3, 2015 · 6 comments

Comments

@glenjamin
Copy link
Collaborator

If anyone wants to me the error overlay neater, or add visual feedback for success similarly to figwheel - please go ahead and submit a PR

@NickColley
Copy link

Related: gaearon/react-transform-boilerplate#18

What do you think about using https://github.com/KeywordBrain/redbox-react ?

@glenjamin
Copy link
Collaborator Author

I'd rather not force a dependency on react - especially as there are many more things that can break with a react rendering.

@gaearon
Copy link

gaearon commented Feb 29, 2016

I hacked up a proof of concept using ansi-to-html:

screen shot 2016-02-29 at 04 39 16

I had to tweak its dependency (entities) because it requires JSON files which Webpack doesn’t resolve by default (fb55/entities#26). Worst case, we can compile ansi-to-html to UMD ourselves and just use that fork since we likely won’t ever need to update this code.

@gaearon
Copy link

gaearon commented Feb 29, 2016

If anybody wants to prepare a real PR here’s what I did:

In client-overlay.js

clientOverlay.style.background = '#111';
clientOverlay.style.color = 'fff';

// ...

function showProblems(lines) {
  clientOverlay.innerHTML = '';
  clientOverlay.style.display = 'block';
  lines.forEach(function(msg) {
    var div = document.createElement('div');
    div.innerHTML = msg; // <-------------------- not innerText
    clientOverlay.appendChild(div);
  });
};

In client:

var strip = require('strip-ansi');
var Ansi = require('ansi-to-html'); // <----------- new stuff (as explained above we might need to create UMD for it)
var ansi = new Ansi();

var overlay;
if (typeof document !== 'undefined' && options.overlay) {
  overlay = require('./client-overlay');
}

function problems(type, obj) {
  if (options.warn) console.warn("[HMR] bundle has " + type + ":");
  var list = [];
  obj[type].forEach(function(msg) {
    if (options.warn) console.warn("[HMR] " + strip(msg));
    list.push(ansi.toHtml(msg)); // <---------------------------- convert here
  });
  if (overlay && type !== 'warnings') overlay.showProblems(list);
}

@glenjamin
Copy link
Collaborator Author

Nice idea, I reckon a pre-built version of ansi to HTML is reasonable.

@glenjamin
Copy link
Collaborator Author

One thing to watch for is that we should enable the escapeXML option, as documented here: https://www.npmjs.com/package/ansi-to-html#options

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants