@nteract/commutable
v7.5.1
Published
library for immutable notebook operations
Downloads
100,421
Readme
@nteract/commutable
Commutable is a package to represent a Jupyter notebook document, as well as operations on the notebook, as a series of immutable notebooks, each one with its own state at a point in time.
This package follows the principles below, based on Tom MacWright's outline for practical undo.
- A notebook document is immutable. The notebook document's representation is never mutated in-place.
- Changes to a notebook document are encapsulated into operations that take a previous version and return a new version of the notebook without modifying the old version.
- History is represented as a list of states, with the past on one end, the present on the other, and an index that can back up into 'undo states'.
- Modifying a notebook document causes any future states to be thrown away.
Installation
$ yarn add @nteract/commutable
$ npm install --save @nteract/commutable
Usage
The example below shows how we can create an empty Markdown cell in our
nteract notebook application. We use the emptyMarkdownCell
immutable object
exported from this package to represent a new empty Markdown cell in a
notebook document.
import { emptyMarkdownCell } from "@nteract/commutable";
export default () => (
<MarkdownPreview
id="a-random-cell-id"
cell={emptyMarkdownCell}
editorFocused={false}
/>
);
Documentation
You can view the reference documentation for @nteract/commutable
in the
package docs.
Support
If you experience an issue while using this package or have a feature request,
please file an issue on the issue board
and, if possible, add the pkg:commutable
label.