import { Component } from 'vue'; export interface ITreeNode { id: string; name: string; icon?: string; children: ITreeNode[]; } export interface IBlockData { id: string; name: string; data: T; } export interface IBlockProps { blockId: string; data?: T, onUpdate?: (b?: IBlockData) => void; onPrependBlock?: (b?: IBlockData) => void; onAppendBlock?: (b?: IBlockData) => void; onRemoveSelf?: () => void; onActivateNext?: () => void; onActivatePrevious?: () => void; } export interface IBlockDefinition { name: string; icon?: string; getDefaultData: T; edit: Component>; display: Component>; } export interface IBlockLibrary { [name: string]: IBlockDefinition; }