Echo JS 0.11.0

<~>

tracker1 comments

tracker1 2149 days ago. link 1 point
That link seems to work correctly.  And yes, Windows 10 (2004, Build 19041.172 update), Chrome (80.0.3987.149)
tracker1 2150 days ago. link 1 point
Example using puppeteer (chrome/chromium) to generate images from content.
tracker1 2150 days ago. link 1 point
Windows + Chrome...  Not sure what input I could offer... it's like the entire application is rendered three times... scrollbar on the right... I didn't interact much, so unsure if it's from the start or each interaction.  It is a bit of an odd behavior... the models for all three seem to be the same as changes in one change the others.
tracker1 2151 days ago. link 1 point
The entire application seems to be rendering three times...
tracker1 2151 days ago. link 1 point
Coll... didn't dig in as I don't have time.  Advice below.

These *should* be SVG based with minimal JS and not using any heavy libraries... none of this should add more than a couple kb to your payload.  So evaluate what you're using.

I've seen a lot of poor practice in terms of using shared UI libraries, many include far more than they ever should.
tracker1 2151 days ago. link 1 point
Niggle... ES2020 is done... there's no potential features... ESnext will be ES2021.
tracker1 2152 days ago. link 1 point
Should add a note that for..of over strings will give you surrogate pairs and is the most reliable means of doing so for Unicode sets.

    // will only print one line for the pair.
    for (const c of '\uD83D\uDE00') {
      console.log('-', c); 
    }
tracker1 2152 days ago. link 1 point
Really digging what I've seen of GraphQL so far.
tracker1 2152 days ago. link 1 point
This is a pretty good demonstration of the pattern.  I will say that in practice, I would prefer to simply use bare object  syntax over the use of new with constructor functions.  When I do use constructors, I'd now prefer the class syntax.

    class Employee {
      constructor(type, name) {
        this.type = type;
        this.name = name;
      }
    }

    class Developer extends Employee {
      constructor(name) {
        base("Developer", name);
      }
    }

    class Tester extends Employee {
      constructor(name) {
        base("Developer", name);
      }
    }

    class EmployeeFactory {
      static types = [
        Developer,
        Tester,
      }

      create(type, name, ...options) {
        const TypedEmployee = EmployeeFactory.types[type];
        return TypedEmployee && new TypedEmployee(name, ...options);
      }
    }

I did put type before name above, as imho it should be first as this will work better with a spread operator.
[more]