Timeline based on this codepen
This was almost trivial to implement as a web component.
I was going to use this as the basis for the web component, but it was too much work to modernize it sufficiently to turn into a web component.
NB I The performance of this web component should improve dramatically with the finalization of constructible stylesheets and/or HTML Modules.
NB II In the demo you will see a flash of unformatted content. This can be corrected by using styling to either hide the light children, or display it in a more elegant way.
$ npm install
$ npm run serve