Skip to content

Latest commit

 

History

History
106 lines (77 loc) · 2.52 KB

README.md

File metadata and controls

106 lines (77 loc) · 2.52 KB

idom-jupyter

A client for IDOM implemented using Jupyter widgets

Try It Now!

Check out a live example by clicking the badge below:

Binder

Getting Started

To install use pip:

pip install idom_jupyter

Then, before anything else, do one of the following:

  1. At the top of your notebook run

    import idom_jupyter
  2. Register idom_jupyter as a permanant IPython extension in your config file:

    c.InteractiveShellApp.extensions = [
        'idom_jupyter'
    ]

Usage

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()),
    ]
)

Development Installation

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 . -r requirements.txt
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.