import { defineComponent, reactive, ref, Ref, watch, PropType, } from '@vue/composition-api'; import { model, blockProps, } from '@components/TreeElement'; import SbToolbar from '@internal/Toolbar'; import { getDefaultData, ImageData, ImageProps, } from './util'; import './style.scss'; export default defineComponent({ name: 'sb-image-display', model, props: { ...blockProps, data: { type: (null as unknown) as PropType, default: getDefaultData, }, }, setup(props: ImageProps, context) { const localData = reactive({ src: props.data.src, alt: props.data.alt, }); const fileInput: Ref = ref(null); watch(() => props.data, () => { localData.src = props.data.src; localData.alt = props.data.alt; }); const selectImage = () => { if (fileInput.value) { fileInput.value.click(); } }; const onImageSelect = () => { if (fileInput.value && fileInput.value.files && fileInput.value.files.length) { context.emit('update', { src: window.URL.createObjectURL(fileInput.value.files[0]), }); } }; return () => (
Image Edit {localData.src ? {localData.alt} : }
); }, });