41 lines
825 B
TypeScript
41 lines
825 B
TypeScript
|
import { IBlockData, SbMode } from "@schlechtenburg/core";
|
||
|
|
||
|
export const useEditor = () => {
|
||
|
const mode = useState<SbMode>('mode', () => SbMode.View);
|
||
|
const revision = useState<number>('revision', () => 0);
|
||
|
const draft = useState<IBlockData<any>|null>('draft', () => null);
|
||
|
|
||
|
const setMode = (newMode: SbMode) => {
|
||
|
mode.value = newMode;
|
||
|
};
|
||
|
|
||
|
const updateDraft = (newDraft: IBlockData<any>) => {
|
||
|
draft.value = newDraft;
|
||
|
}
|
||
|
|
||
|
const edit = (block: IBlockData<any>) => {
|
||
|
draft.value = block;
|
||
|
mode.value = SbMode.Edit;
|
||
|
};
|
||
|
const save = () => {
|
||
|
revision.value = revision.value + 1;
|
||
|
mode.value = SbMode.View;
|
||
|
};
|
||
|
const cancel = () => {
|
||
|
mode.value = SbMode.View;
|
||
|
};
|
||
|
|
||
|
return {
|
||
|
mode,
|
||
|
setMode,
|
||
|
|
||
|
edit,
|
||
|
cancel,
|
||
|
save,
|
||
|
revision,
|
||
|
|
||
|
draft,
|
||
|
updateDraft,
|
||
|
};
|
||
|
};
|