A client for IDOM implemented using Jupyter widgets
Check out some live examples by clicking the badge below:
To install use pip
:
pip install idom_jupyter
Then, before anything else, do one of the following:
-
At the top of your notebook run
import idom_jupyter
-
Register
idom_jupyter
as a permanant IPython extension in your config file:c.InteractiveShellApp.extensions = [ 'idom_jupyter' ]
Once you're done getting started, you can author and display IDOM layouts natively in your Jupyter Notebook:
import idom @idom.component def ClickCount(): count, set_count = idom.hooks.use_state(0) return idom.html.button( {"onClick": lambda event: set_count(count + 1)}, [f"Click count: {count}"], ) ClickCount()
You can also turn an idom
element constructor into one that returns an ipywidget
with the idom_juptyer.widgetize
function. This is useful if you wish to use IDOM in combination with other Jupyter Widgets as in the following example:
ClickCountWidget = idom_jupyter.widgetize(ClickCount) ipywidgets.Box( [ ClickCountWidget(), ClickCountWidget(), ] )
Alternatively just wrap an idom
element instance in an idom_jupyter.LayoutWidget
:
ipywidgets.Box( [ idom_jupyter.LayoutWidget(ClickCount()), idom_jupyter.LayoutWidget(ClickCount()), ] )
For a more detailed introduction check out this live demo here:
For a development installation (requires Node.js and Yarn version 1),
$ git clone https://github.com/idom-team/idom-jupyter.git $ cd idom-jupyter $ pip install -e . $ jupyter nbextension install --py --symlink --overwrite --sys-prefix idom_jupyter $ jupyter nbextension enable --py --sys-prefix idom_jupyter
When actively developing your extension for JupyterLab, run the command:
$ jupyter labextension develop --overwrite idom_jupyter
Then you need to rebuild the JS when you make a code change:
$ cd js $ yarn run build
You then need to refresh the JupyterLab page when your javascript changes.