editor.js/types/store/store.ts
Ilya Moroz e6db8d5140
[Feature] Add state manager (#2018)
* add state manager with demo file

* remove initial state

* move Store type to Store.ts

* add new actions

* change store schema

* add docs

* type -> interface, add deepCopy function

* move types to the /types/ folder

* rename types files, change state type (add blocks: key)

* fix createStore.ts func

* add documentation for reducer

* use BlockMutationType instead of ActionType

* add doc

* deep copy of initial state

* add doc for createStore

* Apply suggestions from code review

Co-authored-by: Peter Savchenko <specc.dev@gmail.com>

* rename `reducer` to `blocksReducer`

* add a listener type, pass changed state to the listener

Co-authored-by: Peter Savchenko <specc.dev@gmail.com>
2022-05-05 14:26:04 +03:00

30 lines
667 B
TypeScript

import { Action } from './action';
import { EditorState } from './editorState';
import { Listener } from './listener';
/**
* Store type contains functions for use it
*/
export interface Store {
/**
* Function for subscribing on state changes
*
* @param listener - function, that will execute every state change
*
* @returns {() => void} unsubscribe function
*/
subscribe: (listener: Listener) => (() => void);
/**
* Dispatch action on the current state
*
* @param action - action that will be dispatched
*/
dispatch: (action: Action) => void;
/**
* Function returns current state
*/
getState: () => EditorState;
}