@bearjam/tom

yarn add @bearjam/tom

Usage no npm install needed!

<script type="module">
  import bearjamTom from 'https://cdn.skypack.dev/@bearjam/tom';
</script>

README

Usage

yarn add @bearjam/tom

import { withUndoableReducer } from "@bearjam/tom"

const initialState: State = {
  // ...
}

const reducer = (state: State, action: Action): State => {
  // ...
}

export const useCanvasStore = create(withUndoableReducer(reducer, initialState))

Then you can call this hook in your React app:

const [state, dispatch, undo, redo, canUndo, canRedo] = useCanvasStore(
  store => [
    store.state,
    store.dispatch,
    store.undo,
    store.redo,
    store.canUndo,
    store.canRedo,
  ],
  shallow
)