import { _OB } from "./ob"; export interface WidgetConstructor { new(config: any): _Widget; (config: any): _Widget; readonly prototype: _Widget; /** * 注册渲染引擎 * @param engine 引擎 */ registerRenderEngine: (engine: RenderEngine) => void; } export interface _Widget extends _OB { /** * 出现loading的锁 */ __asking: boolean; /** * 同步锁 */ __async: boolean; /** * widget类标识符 */ widgetName: string | null; /** * 是否为根节点 */ _isRoot: boolean; /** * 父节点 */ _parent: _Widget | null; // TODO: 完成jquery文件夹后把这块改了 /** * 真实dom的类jQuery对象 */ element: any; /** * 子元素 */ _children: { [key: string]: _Widget; }; /** * 是否已挂载 */ _isMounted: boolean; /** * 手动设置enable */ _manualSetEnable: boolean; /** * 手动设置valid */ _manualSetValid: boolean; /** * 渲染引擎 */ _renderEngine: RenderEngine; _store: () => any; model: any; // 生命周期函数 /** * 初始化前 */ beforeInit: Function | null; /** * 创建前 */ beforeCreate: Function | null; /** * 创建 */ created: Function | null; /** * 渲染 */ render: Function | null; /** * 挂载前 */ beforeMount: Function | null; /** * 挂载 */ mounted: Function | null; /** * 更新前 */ shouldUpdate: Function | null; /** * 更新 */ update: Function; /** * 销毁前 */ beforeDestroy: Function | null; /** * 销毁 */ destroyed: Function | null; /** * 初始化render函数 */ _initRender: () => void; /** * 内部主render函数 */ _render: () => void; /** * 初始化根节点 */ _initRoot: () => void; /** * 初始化元素宽度 */ _initElementWidth: () => void; /** * 初始化元素高度 */ _initElementHeight: () => void; /** * 初始化元素可见 */ _initVisual: () => void; /** * 初始化元素可用不可用 */ _initEffects: () => void; /** * 设置mounted锁 */ _initState: () => void; /** * 生成真实dom */ _initElement: () => void; /** * 设置父节点 */ _setParent: () => void; /** * @param force 是否强制挂载子节点 * @param deep 子节点是否也是按照当前force处理 * @param lifeHook 生命周期钩子触不触发,默认触发 * @param predicate 递归每个widget的回调 */ _mount: (force?: boolean, deep?: boolean, lifeHook?: boolean, predicate?: Function) => boolean; /** * 挂载子节点 */ _mountChildren: Function | null; /** * 是否已挂载 */ isMounted: () => boolean; /** * 设置宽度 */ setWidth: (w: number) => void; /** * 设置高度 */ setHeight: (h: number) => void; /** * 设置可用 */ _setEnable: (enable: boolean) => void; /** * 设置合法 */ _setValid: (valid: boolean) => void; /** * 设置可见 */ _setVisible: (visible: boolean) => void; /** * 设置是否可用 */ setEnable: (enable: boolean) => void; /** * 设置是否可见 */ setVisible: (visible: boolean) => void; /** * 设置是否合法 */ setValid: (valid: boolean) => void; /** * 设置反馈效果 * @param args arguments参数 */ doBehavior: (...args: any[]) => void; /** * 获取宽度 */ getWidth: () => number; /** * 获取高度 */ getHeight: () => number; /** * 是否合法 */ isValid: () => boolean; /** * 新增子元素 */ addWidget: (_name: any, _widget: _Widget) => _Widget; /** * 根据wigetname获取子元素实例 */ getWidgetByName: (_name: string) => _Widget; /** * 移除子元素 * @param nameOrWidget widgetName或widget实例 */ removeWidget: (nameOrWidget: string | _Widget) => void; /** * 是否有某个子元素 */ hasWidget: (name: string) => boolean; /** * 获取widgetName */ getName: () => string; /** * 设置tag * @param tag html tag */ setTag: (tag: string) => void; /** * 获取tag */ getTag: () => string; /** * 设置属性 * @param key 键 * @param value 值 */ attr: (key: string | { [key: string]: any }, value: any) => any; /** * 获取text */ getText: () => string; /** * 设置text */ setText: () => void; /** * 获取值 */ getValue: () => any; /** * 设置值 */ setValue: (...args: any[]) => void; /** * 获取是否enable */ isEnabled: () => boolean; /** * 是否可见 */ isVisible: () => boolean; /** * disable元素 */ disable: ()=> void; /** * enable元素 */ enable: () => void; /** * 是widget合法 */ valid: () => void; /** * 使元素不合法 */ invalid: () => void; /** * 使不可见 */ invisible: () => void; /** * 可见 */ visible: () => void; /** * 清除子元素 */ __d: () => void; /** * 取消挂载 */ _unMount: () => void; /** * hang元素 */ isolate: () => void; /** * 请除元素 */ empty: () => void; /** * 内部destory方法 */ _destroy: () => void; /** * destory元素 */ destroy: () => void; } interface RenderEngine { // TODO: 完成jquery文件夹后把这块改了 /** * 创建元素方法,返回的类jQuery对象 * @param widget widget对象 */ createElement: (widget: any) => any; /** * 创建DocumentFragment对象 */ createFragment: () => DocumentFragment; }