import { _i18n } from "./core/i18n"; import { _OB } from "./core/ob"; import { _func } from "./core/func"; import { _Widget, _WidgetStatic } from "./core/widget"; import { _Single } from "./base/single/single"; import { _base } from "./core/base"; import { _BasicButton } from "./base/single/button/button.basic"; import { _Trigger } from "./base/single/trigger/trigger"; import { _Action, _ActionFactory } from "./core/action/action"; import { _ShowAction } from "./core/action/action.show"; import { _Behavior, _BehaviorFactory } from "./core/behavior/behavior"; import { _HighlightBehavior } from "./core/behavior/behavior.highlight"; import { _RedMarkBehavior } from "./core/behavior/behavior.redmark"; type ClassConstructor = T & { new(config: any): T; (config: any): T; readonly prototype: T; } export interface _BI extends _func, _i18n, _base { OB: ClassConstructor<_OB>; Widget: ClassConstructor<_Widget> & _WidgetStatic; Single: ClassConstructor<_Single>; BasicButton: ClassConstructor<_BasicButton>; Trigger: ClassConstructor<_Trigger>; Action: ClassConstructor<_Action>; ActionFactory: ClassConstructor<_ActionFactory>; ShowAction: ClassConstructor<_ShowAction>; Behavior: ClassConstructor<_Behavior>; BehaviorFactory: ClassConstructor<_BehaviorFactory>; HighlightBehavior: ClassConstructor<_HighlightBehavior>; RedMarkBehavior: ClassConstructor<_RedMarkBehavior>; } interface Obj { [key: string]: any; } declare let BI: Obj & _BI; declare const Fix: Obj; export type Constructor = new(...args: any[]) => T; /** * 注册widget */ export function shortcut () { return function decorator (Target: Constructor & {xtype: string}): void { BI.shortcut(Target.xtype, Target); }; } /** * 注册model */ export function model () { return function decorator}>(Target: U): void { BI.model(Target.xtype, class extends Target { context = Target.context; }); }; } /** * 类注册_store属性 * @param Model model类 * @param opts 额外条件 */ export function store (Model?: Constructor & {xtype: string}, opts: { props?(this: unknown): { [key: string]: unknown } } = {}) { return function classDecorator(constructor:U) { return class extends constructor { _store () { const props = opts.props ? opts.props.apply(this) : undefined; return BI.Models.getModel(Model.xtype, props); } }; }; } /** * Model基类 */ export class Model} = {}> extends Fix.Model { model: Pick<{[key in keyof U["types"]]: U["types"][key]}, U["context"][number]> & {[key in keyof ReturnType]: ReturnType[key]} & {[key in keyof this["computed"]]: ReturnType} & {[key: string]: unknown}; store: this["actions"]; state (): {[key: string]: any} { return {}; } context: U["context"]; actions:{[key: string]: (...args: any[]) => any}; childContext: ReadonlyArray)>; TYPE: Pick<{[key in keyof this["computed"]]: ReturnType} & {[key in keyof ReturnType]: ReturnType[key]}, this["childContext"][number]>; computed: {[key: string]: () => any}; }