I know there are lots of frameworks/libraries out there that do something similar, but
- I couldn't find one that did exactly what I was looking for
... and so, I built my own.
This is the result:
Here is a usage example: