Metadata-Version: 2.4
Name: jupyterlab_myst_revealjs
Version: 1.2.0
Summary: Live reveal.js slideshow for MyST Markdown notebooks in JupyterLab.
Project-URL: Homepage, https://github.com/CojiroSasaki/jupyterlab-myst-revealjs
Project-URL: Bug Tracker, https://github.com/CojiroSasaki/jupyterlab-myst-revealjs/issues
Project-URL: Repository, https://github.com/CojiroSasaki/jupyterlab-myst-revealjs.git
Author-email: Cojiro Sasaki <266859638+CojiroSasaki@users.noreply.github.com>
License: MIT License
        
        Copyright (c) 2026 Cojiro Sasaki
        
        Permission is hereby granted, free of charge, to any person obtaining a copy
        of this software and associated documentation files (the "Software"), to deal
        in the Software without restriction, including without limitation the rights
        to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
        copies of the Software, and to permit persons to whom the Software is
        furnished to do so, subject to the following conditions:
        
        The above copyright notice and this permission notice shall be included in all
        copies or substantial portions of the Software.
        
        THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
        IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
        FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
        AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
        LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
        OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
        SOFTWARE.
License-File: LICENSE
Keywords: jupyter,jupyterlab,jupyterlab-extension
Classifier: Framework :: Jupyter
Classifier: Framework :: Jupyter :: JupyterLab
Classifier: Framework :: Jupyter :: JupyterLab :: 4
Classifier: Framework :: Jupyter :: JupyterLab :: Extensions
Classifier: Framework :: Jupyter :: JupyterLab :: Extensions :: Prebuilt
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Requires-Python: >=3.10
Requires-Dist: jupyterlab-myst
Requires-Dist: jupyterlab<5,>=4.0.0
Description-Content-Type: text/markdown

# jupyterlab-myst-revealjs

[![Github Actions Status](https://github.com/CojiroSasaki/jupyterlab-myst-revealjs/workflows/Build/badge.svg)](https://github.com/CojiroSasaki/jupyterlab-myst-revealjs/actions/workflows/build.yml)

Live [reveal.js](https://revealjs.com/) slideshow for [MyST Markdown](https://mystmd.org/) notebooks in JupyterLab.

![Screenshot](https://raw.githubusercontent.com/CojiroSasaki/jupyterlab-myst-revealjs/main/docs/images/screenshot.png)

Open any notebook as a slideshow panel beside the notebook editor. Markdown cells are rendered via [jupyterlab-myst](https://github.com/jupyter-book/jupyterlab-myst), code cells use JupyterLab's native CodeCell widget — execute code and see results on slides in real time.

## Features

- **reveal.js slideshow** — present notebooks as reveal.js slides directly in JupyterLab
- **Slide structure** — `slide`, `subslide`, `fragment`, `skip` via cell metadata
- **MyST Markdown** — admonitions, math, cross-references, and all MyST directives
- **Live code execution** — Shift+Enter runs code cells on slides (shared kernel with notebook)
- **Cell tags**
  - Jupyter Book compatible — `hide-input`, `hide-output`, `hide-cell`, `remove-input`, `remove-output`, `remove-cell`
  - Grid layout — `gridwidth-*` tags for multi-column layouts
- **Customization**
  - Slide backgrounds — per-slide background color/image via cell metadata
  - Themes — 6 bundled reveal.js themes (black, white, dracula, serif, and more)
  - Custom CSS — drop a `myst-revealjs.css` next to your notebook for custom styling
  - Header / Footer — CSS-based overlays customizable via `myst-revealjs.css`
- **Keyboard controls**
  - Code visibility toggle — `i` / `o` keys to toggle input/output on focused code cells during the slideshow
  - Fullscreen / Overview — `f` for fullscreen, `o` for slide overview

## Requirements

- JupyterLab >= 4.0.0
- [jupyterlab-myst](https://github.com/jupyter-book/jupyterlab-myst)
- [jupyterlab-gridwidth](https://github.com/timkpaine/jupyterlab_gridwidth) (optional — for `gridwidth-*` tag preview in notebook view)

## Install

```bash
pip install jupyterlab-myst-revealjs
```

No Node.js required — this is a prebuilt extension.

## Uninstall

```bash
pip uninstall jupyterlab-myst-revealjs
```

## Quick Start

1. Open a notebook in JupyterLab.
2. Click the **slideshow button** in the toolbar, or run `slideshow:open` from the Command Palette.
3. Set slide types via the Property Inspector (right sidebar).
4. Press **Shift+Enter** on code cells to execute them on slides.

## Configuration

Add a `myst-revealjs` key to your notebook metadata to configure reveal.js options:

```json
{
  "myst-revealjs": {
    "theme": "white",
    "transition": "fade",
    "slideNumber": true
  }
}
```

See the [documentation](https://github.com/CojiroSasaki/jupyterlab-myst-revealjs/tree/main/docs) for full configuration options, cell metadata reference, and migration guide from RISE.

## Development

### Building

```bash
uv venv && uv pip install -e ".[dev]"
jlpm install && jlpm build
jupyter labextension develop . --overwrite
```

Run `jlpm watch` in one terminal and `jupyter lab` in another for live development.

### Testing

```bash
jlpm test                    # Unit tests (Jest)
cd ui-tests && jlpm test     # E2E tests (Playwright + Galata)
```

See [CONTRIBUTING](https://github.com/CojiroSasaki/jupyterlab-myst-revealjs/blob/main/docs/developer-guide/contributing.md) for details.

## License

MIT
