flatsurf / ipymuvue

Vue 3 widgets for Jupyter
GNU General Public License v3.0
3 stars 1 forks source link
jupyter sagemath vue widget

ipyμvue

Reactive Vue 3 widgets for the Jupyter notebook in Python.

Installation

pip install ipymuvue

Getting Started

There is no proper documentation for this project yet, but there are some examples/.

To verify that your installation works correctly, open a Jupyter notebook and execute the following example:

from ipymuvue.widgets import VueWidget
from traitlets import Unicode

class Widget(VueWidget):
    def __init__(self):
        super().__init__(template=r"""
            <div>
                <h1 @click="audience += '!'" @click.right.prevent.stop="rclick()" style="border: solid 1px blue; text-align: center; padding: 20px; user-select: none">
                    Hello {{ audience }}!
                </h1>
            </div>
        """)

    audience = Unicode("World").tag(sync=True)

    @VueWidget.callback
    def rclick(self):
        self.audience = '¡' + self.audience

widget = Widget()
widget

If you see a Hello World message, then things have been setup correctly.

Note that the classic Jupyter notebook (i.e., version <7) is not supported by this extension. If in doubt, use jupyter lab to launch your notebooks.

Development

Get a local copy of this package:

git clone https://github.com/flatsurf/ipymuvue.git
cd ipymuvue

Install development dependencies:

cd ts
yarn
yarn link
cd ../js
yarn link ipymuvueimplementation
yarn
cd ..

Start the rollup/typescript build:

cd ts
yarn dev

In another console, start the webpack bundling:

cd js
yarn dev

If you had not done so before, install a development version of ipymuvue:

pip uninstall ipymuvue  # if you had a regular ipymuvue installed
pip install -e .

Enable the extension in JupyterLab and the notebook (version 7 required):

(cd js && yarn build)
jupyter labextension develop --overwrite ipymuvue

Now, start a jupyter notebook or jupyter lab and verify that the notebooks in examples/ work correctly.

Any changes you make to the Python code should be picked up automatically. Changes to ipymuvue.pyodide become effective by re-creating a widget (all the modules are reloaded in pyodide when a change to these files happens.) Other changes require a kernel restart as usual.

Any changes to the TypeScript/Javascript code become effective after you rebuild the prebuilt extension and refresh the browser:

(cd js && yarn build)

Related Projects