-
Notifications
You must be signed in to change notification settings - Fork 206
Description
I have been experimenting with the ability to use widgets as components and then allow them to communicate with each other.
Here are some examples
The first example uses shiny, while the second does not.
In the case of Shiny, I am using Shiny.onInputChange
to trigger changes and communicate back to the server from the client on mouseover. In the second example, I am directly manipulating the datamap from the callback code of the chroniton widget.
The more I think about this, I believe that something like a pubsub
design pattern will be helpful here. htmlwidgets
can provide basic pubsub
infrastructure and widget authors can provide callbacks that allow users to broadcast data on certain events. In a similar vein, widget authors can also expose callbacks that allow a widget to listen to certain events and trigger a change.
By following some conventions regarding how these events are named, it would be possible for widgets to talk to each other using pubsub
. Currently, this idea is still very hazy in my mind, but I wanted to put it out here so that it can trigger a broader discussion.
In the shiny case, things are easier, since Shiny.onInputChange
provides a simple pubsub mechanism. I am thinking of a more general mechanism that will work with and without Shiny.
@jcheng5 I would really appreciate any thoughts you have on this, given your experience working with javascript libraries. @jjallaire @timelyportfolio @yihui Any thoughts/comments on this idea would be welcome, as I think it would be a very powerful way forward for htmlwidgets
to create a componentized architecture.