schlechtenburg/packages/example-site/composables/editor.ts

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,
};
};