react-konva-grid
Version:
Declarative React Canvas Grid primitive for Data table, Pivot table, Excel Worksheets
48 lines (47 loc) • 1.3 kB
TypeScript
import React from "react";
/**
* Spec: https://tools.ietf.org/html/rfc6902
*
* add, { "op": "add", "path": ["data", "1,2"], "value": "hello world" }
* remove { "op": "remove", "path": ["data", "1,2"], "value": "hello world" }
* replace { "op": "replace", "path": ["data", "1,2"], "value": "hello world" }
* move { "op": "move", "from": "/a/b/c", "path": "/a/b/d" }
* copy
*/
export interface UndoProps {
onRedo?: (patches: Patches) => void;
onUndo?: (patches: Patches) => void;
}
export interface UndoResults {
undo: () => void;
redo: () => void;
add: (stack: Stack) => void;
canUndo: boolean;
canRedo: boolean;
onKeyDown: (e: React.KeyboardEvent<HTMLDivElement>) => void;
}
export declare type Path = [string, any];
export interface Patches {
path: Path;
value: any;
op: Operator;
}
export interface Stack {
patches: Patches;
inversePatches: Patches;
}
export declare type Operator = "add" | "remove" | "replace" | "move";
/**
* Create patches
* @param path
* @param value
* @param previousValue
* @param op
*/
export declare function createPatches(path: Path, value: any, previousValue: any, op?: Operator): Stack;
/**
* Undo/Redo hook
* @param
*/
declare const useUndo: (props?: UndoProps) => UndoResults;
export default useUndo;