It uses cursors, so the outer immutable structure swapped when a component's data is changed. This might sound like it would perform badly, but it only re-renders component trees that reference changed data.
The module is used by wrapping components with the omniscient function. The author's examples call this "component". These components only deal with their own piece of data, so they're nicely encapsulated and potentially easier to reuse.
The project has lots of examples and documentation, so it's worth reading through the readme first to get a feel for it.
Andrea Ferretti wrote in to say Paths.js has been updated to include tree charts, waterfall diagrams, Sankey diagrams and a preliminary version of force-directed graphs.
This is what the tree chart looks like:
tree = new Ractive
leaf: (point) ->
tree.on 'toggle', (event) ->
node = event.context.item
node.collapsed = not node.collapsed
The author is also working on performance improvements and lots of other cool stuff, so it's worth keeping an eye on this library.