Livebook + Kino - How to implement a new output?

I’m looking to implement a new output in Kino to render dynamic cell output via a JavaScript API.

I’m trying to wrap my head around the correct extension points in Kino and Livebook.

So far (as I understand) it I need to:

  • add a new type and mapping in Kino.Output
  • add a defimpl in Kino.Render (to_livebook)
  • implement a server in Kino
  • introduce a livecomponent in livebook for rendering the output
  • create a hook for the client side JS part of it
  • add a type in Livebook.Notebook.Cell.Elixir

What else?

Does anyone have experience in adding new visualisations? Is there other extensionpoints that should be used?


btw, it is a mapping component I’m trying to add.