import { defineComponent, ref, Ref, PropType, } from 'vue' import { IBlockDefinition, IBlockData, SbMain, SbMode, OnUpdateBlockCb, ISbMainProps, } from '@schlechtenburg/core'; /** * */ export default function getWrapper() { const refBlock: Ref|null> = ref(null); const refMode = ref(SbMode.View); const SchlechtenburgWrapper = defineComponent({ name: 'SchlechtenburgWrapper', props: { availableBlocks: { type: Array as PropType[]>, default: () => [], }, block: { type: Object as PropType>, required: true, }, /** * Called when the block should be updated. */ onUpdate: { type: (null as unknown) as PropType, default: () => {}, }, mode: { type: String as PropType, validator(value: any) { return Object.values(SbMode).includes(value); }, default: SbMode.Edit, }, }, setup(props: ISbMainProps) { refBlock.value = { ...(props.block) }; refMode.value = props.mode; if (!refBlock.value) { return () =>
An Error occurred
; } return () => } availableBlocks={props.availableBlocks} mode={refMode.value} onUpdate={(newBlock: IBlockData) => { refBlock.value = { ...newBlock }; }} /> } }); return { SchlechtenburgWrapper, getBlock() { return refBlock.value; }, setBlock(block: IBlockData) { refBlock.value = { ...block }; }, getMode() { return refMode.value; }, setMode(mode: SbMode) { refMode.value = mode; }, }; }