1343 lines
46 KiB
TypeScript
1343 lines
46 KiB
TypeScript
// Generated by dts-bundle v0.7.3
|
||
|
||
declare module 'doric' {
|
||
export * from 'doric/lib/src/runtime/global';
|
||
export * from 'doric/lib/src/ui/index.ui';
|
||
export * from "doric/lib/src/widget/index.widget";
|
||
export * from 'doric/lib/src/native/index.native';
|
||
export * from "doric/lib/src/util/index.util";
|
||
export * from "doric/lib/src/pattern/index.pattern";
|
||
}
|
||
|
||
declare module 'doric/lib/src/runtime/global' {
|
||
export type BridgeContext = {
|
||
/**
|
||
* The identify of current context
|
||
*/
|
||
id: string;
|
||
/**
|
||
* In this case,It's current panel
|
||
*/
|
||
entity: any;
|
||
/**
|
||
* call native plugin
|
||
* @param namespace
|
||
* @param method
|
||
* @param args
|
||
*/
|
||
callNative(namespace: string, method: string, args?: any): Promise<any>;
|
||
/**
|
||
* Transform function to functionId as string
|
||
* @param func
|
||
*/
|
||
function2Id(func: Function): string;
|
||
/**
|
||
* Remove transformed functions
|
||
* @param funcId
|
||
*/
|
||
removeFuncById(funcId: string): void;
|
||
};
|
||
global {
|
||
const context: BridgeContext;
|
||
const Environment: {
|
||
platform: "Android" | "iOS" | "Qt" | "web";
|
||
platformVersion: string;
|
||
appName: string;
|
||
appVersion: string;
|
||
libVersion: string;
|
||
screenWidth: number;
|
||
screenHeight: number;
|
||
screenScale: number;
|
||
statusBarHeight: number;
|
||
hasNotch: boolean;
|
||
/**
|
||
* ex:Apple or Google
|
||
*/
|
||
deviceBrand: string;
|
||
/**
|
||
* ex: iPhone12,5 or pixel 3
|
||
*/
|
||
deviceModel: string;
|
||
[index: string]: number | string | boolean | object | undefined;
|
||
};
|
||
function Entry(constructor: {
|
||
new (...args: any[]): {};
|
||
}): any;
|
||
}
|
||
export {};
|
||
}
|
||
|
||
declare module 'doric/lib/src/ui/index.ui' {
|
||
export * from 'doric/lib/src/ui/view';
|
||
export * from 'doric/lib/src/ui/panel';
|
||
export * from 'doric/lib/src/ui/animation';
|
||
}
|
||
|
||
declare module 'doric/lib/src/widget/index.widget' {
|
||
export * from 'doric/lib/src/widget/layouts';
|
||
export * from 'doric/lib/src/widget/text';
|
||
export * from 'doric/lib/src/widget/image';
|
||
export * from 'doric/lib/src/widget/list';
|
||
export * from 'doric/lib/src/widget/slider';
|
||
export * from 'doric/lib/src/widget/scroller';
|
||
export * from 'doric/lib/src/widget/refreshable';
|
||
export * from 'doric/lib/src/widget/flowlayout';
|
||
export * from 'doric/lib/src/widget/input';
|
||
export * from 'doric/lib/src/widget/nestedSlider';
|
||
export * from 'doric/lib/src/widget/draggable';
|
||
export * from 'doric/lib/src/widget/switch';
|
||
}
|
||
|
||
declare module 'doric/lib/src/native/index.native' {
|
||
export * from 'doric/lib/src/native/modal';
|
||
export * from 'doric/lib/src/native/navbar';
|
||
export * from 'doric/lib/src/native/navigator';
|
||
export * from 'doric/lib/src/native/network';
|
||
export * from 'doric/lib/src/native/storage';
|
||
export * from 'doric/lib/src/native/popover';
|
||
export * from 'doric/lib/src/native/animate';
|
||
export * from 'doric/lib/src/native/notification';
|
||
export * from 'doric/lib/src/native/statusbar';
|
||
export * from 'doric/lib/src/native/coordinator';
|
||
export * from 'doric/lib/src/native/notch';
|
||
}
|
||
|
||
declare module 'doric/lib/src/util/index.util' {
|
||
export * from 'doric/lib/src/util/color';
|
||
export * from 'doric/lib/src/util/gravity';
|
||
export * from 'doric/lib/src/util/layoutconfig';
|
||
export * from 'doric/lib/src/util/log';
|
||
export * from 'doric/lib/src/util/types';
|
||
export * from 'doric/lib/src/util/uniqueId';
|
||
export * from 'doric/lib/src/util/flexbox';
|
||
}
|
||
|
||
declare module 'doric/lib/src/pattern/index.pattern' {
|
||
export * from 'doric/lib/src/pattern/candies';
|
||
export * from 'doric/lib/src/pattern/provider';
|
||
export * from 'doric/lib/src/pattern/mvvm';
|
||
}
|
||
|
||
declare module 'doric/lib/src/ui/view' {
|
||
import { Color, GradientColor } from "doric/lib/src/util/color";
|
||
import { Modeling, Model } from "doric/lib/src/util/types";
|
||
import { BridgeContext } from "doric/lib/src/runtime/global";
|
||
import { LayoutConfig } from 'doric/lib/src/util/layoutconfig';
|
||
import { IAnimation } from "doric/lib/src/ui/animation";
|
||
import { FlexConfig } from "doric/lib/src/util/flexbox";
|
||
export function Property(target: Object, propKey: string): void;
|
||
export type NativeViewModel = {
|
||
id: string;
|
||
type: string;
|
||
props: {
|
||
[index: string]: Model;
|
||
};
|
||
};
|
||
export abstract class View implements Modeling {
|
||
width: number;
|
||
height: number;
|
||
x: number;
|
||
y: number;
|
||
backgroundColor?: Color | GradientColor;
|
||
corners?: number | {
|
||
leftTop?: number;
|
||
rightTop?: number;
|
||
leftBottom?: number;
|
||
rightBottom?: number;
|
||
};
|
||
border?: {
|
||
width: number;
|
||
color: Color;
|
||
};
|
||
shadow?: {
|
||
color: Color;
|
||
opacity: number;
|
||
radius: number;
|
||
offsetX: number;
|
||
offsetY: number;
|
||
};
|
||
/**
|
||
* float [0,..1]
|
||
*/
|
||
alpha?: number;
|
||
hidden?: boolean;
|
||
viewId: string;
|
||
padding?: {
|
||
left?: number;
|
||
right?: number;
|
||
top?: number;
|
||
bottom?: number;
|
||
};
|
||
layoutConfig?: LayoutConfig;
|
||
onClick?: Function;
|
||
superview?: Superview;
|
||
callbacks: Map<String, Function>;
|
||
constructor();
|
||
/** Anchor start*/
|
||
get left(): number;
|
||
set left(v: number);
|
||
get right(): number;
|
||
set right(v: number);
|
||
get top(): number;
|
||
set top(v: number);
|
||
get bottom(): number;
|
||
set bottom(v: number);
|
||
get centerX(): number;
|
||
get centerY(): number;
|
||
set centerX(v: number);
|
||
set centerY(v: number);
|
||
get dirtyProps(): {
|
||
[index: string]: Model;
|
||
};
|
||
nativeViewModel: NativeViewModel;
|
||
onPropertyChanged(propKey: string, oldV: Model, newV: Model): void;
|
||
clean(): void;
|
||
isDirty(): boolean;
|
||
responseCallback(id: string, ...args: any): any;
|
||
toModel(): NativeViewModel;
|
||
let(block: (it: this) => void): void;
|
||
also(block: (it: this) => void): this;
|
||
apply(config: Partial<this>): this;
|
||
in(group: Group): this;
|
||
nativeChannel(context: BridgeContext, name: string): (args?: any) => Promise<any>;
|
||
getWidth(context: BridgeContext): Promise<number>;
|
||
getHeight(context: BridgeContext): Promise<number>;
|
||
getX(context: BridgeContext): Promise<number>;
|
||
getY(context: BridgeContext): Promise<number>;
|
||
getLocationOnScreen(context: BridgeContext): Promise<{
|
||
x: number;
|
||
y: number;
|
||
}>;
|
||
/**++++++++++transform++++++++++*/
|
||
translationX?: number;
|
||
translationY?: number;
|
||
/**
|
||
* float [0,..1]
|
||
*/
|
||
scaleX?: number;
|
||
scaleY?: number;
|
||
pivotX?: number;
|
||
pivotY?: number;
|
||
/**
|
||
* rotation*PI
|
||
* In Z
|
||
*/
|
||
rotation?: number;
|
||
/**
|
||
* rotation*PI
|
||
* In X
|
||
*/
|
||
rotationX?: number;
|
||
/**
|
||
* rotation*PI
|
||
* In Y
|
||
*/
|
||
rotationY?: number;
|
||
/**
|
||
* Determines the distance between the z=0 plane and the user in order to give a 3D-positioned element some perspective.
|
||
* Default is 200
|
||
*/
|
||
perspective?: number;
|
||
/**
|
||
* Only affected when its superview or itself is FlexLayout.
|
||
*/
|
||
flexConfig?: FlexConfig;
|
||
doAnimation(context: BridgeContext, animation: IAnimation): Promise<void>;
|
||
}
|
||
export abstract class Superview extends View {
|
||
subviewById(id: string): View | undefined;
|
||
abstract allSubviews(): Iterable<View>;
|
||
isDirty(): boolean;
|
||
clean(): void;
|
||
toModel(): NativeViewModel;
|
||
}
|
||
export abstract class Group extends Superview {
|
||
readonly children: View[];
|
||
allSubviews(): View[];
|
||
addChild(view: View): void;
|
||
removeChild(view: View): void;
|
||
removeAllChildren(): void;
|
||
}
|
||
}
|
||
|
||
declare module 'doric/lib/src/ui/panel' {
|
||
import { View, Group } from "doric/lib/src/ui/view";
|
||
import { Root } from 'doric/lib/src/widget/layouts';
|
||
import { BridgeContext } from 'doric/lib/src/runtime/global';
|
||
export function NativeCall(target: Panel, propertyKey: string, descriptor: PropertyDescriptor): PropertyDescriptor;
|
||
export abstract class Panel {
|
||
context: BridgeContext;
|
||
onCreate(): void;
|
||
onDestroy(): void;
|
||
onShow(): void;
|
||
onHidden(): void;
|
||
abstract build(rootView: Group): void;
|
||
addHeadView(type: string, v: View): void;
|
||
allHeadViews(): IterableIterator<Map<string, View>>;
|
||
removeHeadView(type: string, v: View | string): void;
|
||
clearHeadViews(type: string): void;
|
||
getRootView(): Root;
|
||
getInitData(): object | undefined;
|
||
addOnRenderFinishedCallback(cb: () => void): void;
|
||
}
|
||
}
|
||
|
||
declare module 'doric/lib/src/ui/animation' {
|
||
import { Modeling, Model } from "doric/lib/src/util/types";
|
||
export type AnimatedKey = "translationX" | "translationY" | "scaleX" | "scaleY" | "rotation" | "pivotX" | "pivotY" | "rotationX" | "rotationY";
|
||
export enum RepeatMode {
|
||
RESTART = 1,
|
||
REVERSE = 2
|
||
}
|
||
export interface IAnimation extends Modeling {
|
||
duration: number;
|
||
delay?: number;
|
||
}
|
||
export interface Changeable {
|
||
fromValue: number;
|
||
toValue: number;
|
||
key: AnimatedKey;
|
||
repeatCount?: number;
|
||
repeatMode?: RepeatMode;
|
||
}
|
||
export enum FillMode {
|
||
/**
|
||
* The receiver is removed from the presentation when the animation is completed.
|
||
*/
|
||
Removed = 0,
|
||
/**
|
||
* The receiver remains visible in its final state when the animation is completed.
|
||
*/
|
||
Forward = 1,
|
||
/**
|
||
* The receiver clamps values before zero to zero when the animation is completed.
|
||
*/
|
||
Backward = 2,
|
||
/**
|
||
* The receiver clamps values at both ends of the object’s time space
|
||
*/
|
||
Both = 3
|
||
}
|
||
export enum TimingFunction {
|
||
/**
|
||
* The system default timing function. Use this function to ensure that the timing of your animations matches that of most system animations.
|
||
*/
|
||
Default = 0,
|
||
/**
|
||
* Linear pacing, which causes an animation to occur evenly over its duration.
|
||
*/
|
||
Linear = 1,
|
||
/**
|
||
* Ease-in pacing, which causes an animation to begin slowly and then speed up as it progresses.
|
||
*/
|
||
EaseIn = 2,
|
||
/**
|
||
* Ease-out pacing, which causes an animation to begin quickly and then slow as it progresses.
|
||
*/
|
||
EaseOut = 3,
|
||
/**
|
||
* Ease-in-ease-out pacing, which causes an animation to begin slowly, accelerate through the middle of its duration, and then slow again before completing.
|
||
*/
|
||
EaseInEaseOut = 4
|
||
}
|
||
abstract class Animation implements IAnimation {
|
||
changeables: Map<AnimatedKey, Changeable>;
|
||
duration: number;
|
||
repeatCount?: number;
|
||
repeatMode?: RepeatMode;
|
||
delay?: number;
|
||
fillMode: FillMode;
|
||
timingFunction?: TimingFunction;
|
||
toModel(): {
|
||
type: string;
|
||
delay: number | undefined;
|
||
duration: number;
|
||
changeables: {
|
||
key: AnimatedKey;
|
||
fromValue: number;
|
||
toValue: number;
|
||
}[];
|
||
repeatCount: number | undefined;
|
||
repeatMode: RepeatMode | undefined;
|
||
fillMode: FillMode;
|
||
timingFunction: TimingFunction | undefined;
|
||
};
|
||
}
|
||
export class ScaleAnimation extends Animation {
|
||
constructor();
|
||
set fromScaleX(v: number);
|
||
get fromScaleX(): number;
|
||
set toScaleX(v: number);
|
||
get toScaleX(): number;
|
||
set fromScaleY(v: number);
|
||
get fromScaleY(): number;
|
||
set toScaleY(v: number);
|
||
get toScaleY(): number;
|
||
}
|
||
export class TranslationAnimation extends Animation {
|
||
constructor();
|
||
set fromTranslationX(v: number);
|
||
get fromTranslationX(): number;
|
||
set toTranslationX(v: number);
|
||
get toTranslationX(): number;
|
||
set fromTranslationY(v: number);
|
||
get fromTranslationY(): number;
|
||
set toTranslationY(v: number);
|
||
get toTranslationY(): number;
|
||
}
|
||
export class RotationAnimation extends Animation {
|
||
constructor();
|
||
set fromRotation(v: number);
|
||
get fromRotation(): number;
|
||
set toRotation(v: number);
|
||
get toRotation(): number;
|
||
}
|
||
export class RotationXAnimation extends Animation {
|
||
constructor();
|
||
set fromRotation(v: number);
|
||
get fromRotation(): number;
|
||
set toRotation(v: number);
|
||
get toRotation(): number;
|
||
}
|
||
export class RotationYAnimation extends Animation {
|
||
constructor();
|
||
set fromRotation(v: number);
|
||
get fromRotation(): number;
|
||
set toRotation(v: number);
|
||
get toRotation(): number;
|
||
}
|
||
export class AnimationSet implements IAnimation {
|
||
delay?: number;
|
||
addAnimation(anim: IAnimation): void;
|
||
get duration(): number;
|
||
set duration(v: number);
|
||
toModel(): {
|
||
animations: Model;
|
||
delay: number | undefined;
|
||
};
|
||
}
|
||
export {};
|
||
}
|
||
|
||
declare module 'doric/lib/src/widget/layouts' {
|
||
import { Group, View } from "doric/lib/src/ui/view";
|
||
import { Gravity } from "doric/lib/src/util/gravity";
|
||
export class Stack extends Group {
|
||
}
|
||
export class Root extends Stack {
|
||
}
|
||
class LinearLayout extends Group {
|
||
space?: number;
|
||
gravity?: Gravity;
|
||
}
|
||
export class VLayout extends LinearLayout {
|
||
}
|
||
export class HLayout extends LinearLayout {
|
||
}
|
||
export function stack(views: View[], config?: Partial<Stack>): Stack;
|
||
export function hlayout(views: View[], config?: Partial<HLayout>): HLayout;
|
||
export function vlayout(views: View[], config?: Partial<VLayout>): VLayout;
|
||
export class FlexLayout extends Group {
|
||
}
|
||
export function flexlayout(views: View[], config?: Partial<FlexLayout>): FlexLayout;
|
||
export {};
|
||
}
|
||
|
||
declare module 'doric/lib/src/widget/text' {
|
||
import { View } from "doric/lib/src/ui/view";
|
||
import { Color } from "doric/lib/src/util/color";
|
||
import { Gravity } from "doric/lib/src/util/gravity";
|
||
export enum TruncateAt {
|
||
End = 0,
|
||
Middle = 1,
|
||
Start = 2,
|
||
Clip = 3
|
||
}
|
||
export class Text extends View {
|
||
text?: string;
|
||
textColor?: Color;
|
||
textSize?: number;
|
||
maxLines?: number;
|
||
textAlignment?: Gravity;
|
||
fontStyle?: "normal" | "bold" | "italic" | "bold_italic";
|
||
font?: string;
|
||
maxWidth?: number;
|
||
maxHeight?: number;
|
||
lineSpacing?: number;
|
||
strikethrough?: boolean;
|
||
underline?: boolean;
|
||
htmlText?: string;
|
||
truncateAt?: TruncateAt;
|
||
}
|
||
export function text(config: Partial<Text>): Text;
|
||
}
|
||
|
||
declare module 'doric/lib/src/widget/image' {
|
||
import { View } from "doric/lib/src/ui/view";
|
||
import { Color } from "doric/lib/src/util/color";
|
||
export enum ScaleType {
|
||
ScaleToFill = 0,
|
||
ScaleAspectFit = 1,
|
||
ScaleAspectFill = 2
|
||
}
|
||
export class Image extends View {
|
||
imageUrl?: string;
|
||
/**
|
||
* Read image from local path
|
||
* For android,it based on assets dir.
|
||
* For iOS,it based on main bundle dir.
|
||
*/
|
||
imagePath?: string;
|
||
/**
|
||
* Read image from resource
|
||
* For android,it will try to read from drawable.
|
||
* For iOS,it will try to read from Image.Assets.
|
||
*/
|
||
imageRes?: string;
|
||
imageBase64?: string;
|
||
scaleType?: ScaleType;
|
||
isBlur?: boolean;
|
||
/**
|
||
* Display while image is loading
|
||
* Local file name
|
||
*/
|
||
placeHolderImage?: string;
|
||
placeHolderImageBase64?: string;
|
||
/**
|
||
* Display while image is loading
|
||
* Color
|
||
* This priority is lower than placeHolderImage
|
||
*/
|
||
placeHolderColor?: Color;
|
||
/**
|
||
* Display while image is failed to load
|
||
* It can be file name in local path
|
||
*/
|
||
errorImage?: string;
|
||
errorImageBase64?: string;
|
||
/**
|
||
* Display while image is failed to load
|
||
* Color
|
||
* This priority is lower than errorImage
|
||
*/
|
||
errorColor?: Color;
|
||
loadCallback?: (image: {
|
||
width: number;
|
||
height: number;
|
||
} | undefined) => void;
|
||
/**
|
||
* Default is Environment.screenScale.
|
||
*/
|
||
imageScale?: number;
|
||
/**
|
||
* Unit in pixel
|
||
*/
|
||
stretchInset?: {
|
||
left: number;
|
||
top: number;
|
||
right: number;
|
||
bottom: number;
|
||
};
|
||
}
|
||
export function image(config: Partial<Image>): Image;
|
||
}
|
||
|
||
declare module 'doric/lib/src/widget/list' {
|
||
import { View, Superview, NativeViewModel } from "doric/lib/src/ui/view";
|
||
import { Stack } from "doric/lib/src/widget/layouts";
|
||
import { BridgeContext } from "doric/lib/src/runtime/global";
|
||
export class ListItem extends Stack {
|
||
/**
|
||
* Set to reuse native view
|
||
*/
|
||
identifier?: string;
|
||
}
|
||
export class List extends Superview {
|
||
allSubviews(): IterableIterator<ListItem> | ListItem[];
|
||
itemCount: number;
|
||
renderItem: (index: number) => ListItem;
|
||
batchCount: number;
|
||
onLoadMore?: () => void;
|
||
loadMore?: boolean;
|
||
loadMoreView?: ListItem;
|
||
onScroll?: (offset: {
|
||
x: number;
|
||
y: number;
|
||
}) => void;
|
||
onScrollEnd?: (offset: {
|
||
x: number;
|
||
y: number;
|
||
}) => void;
|
||
scrolledPosition?: number;
|
||
scrollToItem(context: BridgeContext, index: number, config?: {
|
||
animated?: boolean;
|
||
}): Promise<any>;
|
||
reset(): void;
|
||
isDirty(): boolean;
|
||
toModel(): NativeViewModel;
|
||
}
|
||
export function list(config: Partial<List>): List;
|
||
export function listItem(item: View | View[], config?: Partial<ListItem>): ListItem;
|
||
}
|
||
|
||
declare module 'doric/lib/src/widget/slider' {
|
||
import { Superview, View } from "doric/lib/src/ui/view";
|
||
import { Stack } from "doric/lib/src/widget/layouts";
|
||
import { BridgeContext } from "doric/lib/src/runtime/global";
|
||
export class SlideItem extends Stack {
|
||
/**
|
||
* Set to reuse native view
|
||
*/
|
||
identifier?: string;
|
||
}
|
||
export class Slider extends Superview {
|
||
allSubviews(): IterableIterator<SlideItem>;
|
||
itemCount: number;
|
||
renderPage: (index: number) => SlideItem;
|
||
batchCount: number;
|
||
onPageSlided?: (index: number) => void;
|
||
loop?: boolean;
|
||
isDirty(): boolean;
|
||
slidePage(context: BridgeContext, page: number, smooth?: boolean): Promise<any>;
|
||
getSlidedPage(context: BridgeContext): Promise<number>;
|
||
}
|
||
export function slider(config: Partial<Slider>): Slider;
|
||
export function slideItem(item: View | View[], config?: Partial<SlideItem>): SlideItem;
|
||
}
|
||
|
||
declare module 'doric/lib/src/widget/scroller' {
|
||
import { Superview, View, NativeViewModel } from 'doric/lib/src/ui/view';
|
||
import { BridgeContext } from 'doric/lib/src/runtime/global';
|
||
export function scroller(content: View, config?: Partial<Scroller>): Scroller;
|
||
export class Scroller extends Superview {
|
||
content: View;
|
||
contentOffset?: {
|
||
x: number;
|
||
y: number;
|
||
};
|
||
onScroll?: (offset: {
|
||
x: number;
|
||
y: number;
|
||
}) => void;
|
||
onScrollEnd?: (offset: {
|
||
x: number;
|
||
y: number;
|
||
}) => void;
|
||
allSubviews(): View[];
|
||
toModel(): NativeViewModel;
|
||
scrollTo(context: BridgeContext, offset: {
|
||
x: number;
|
||
y: number;
|
||
}, animated?: boolean): Promise<any>;
|
||
scrollBy(context: BridgeContext, offset: {
|
||
x: number;
|
||
y: number;
|
||
}, animated?: boolean): Promise<any>;
|
||
}
|
||
}
|
||
|
||
declare module 'doric/lib/src/widget/refreshable' {
|
||
import { View, Superview, NativeViewModel } from "doric/lib/src/ui/view";
|
||
import { BridgeContext } from "doric/lib/src/runtime/global";
|
||
export class Refreshable extends Superview {
|
||
content: View;
|
||
header?: View;
|
||
onRefresh?: () => void;
|
||
allSubviews(): View[];
|
||
setRefreshable(context: BridgeContext, refreshable: boolean): Promise<any>;
|
||
setRefreshing(context: BridgeContext, refreshing: boolean): Promise<any>;
|
||
isRefreshable(context: BridgeContext): Promise<boolean>;
|
||
isRefreshing(context: BridgeContext): Promise<boolean>;
|
||
toModel(): NativeViewModel;
|
||
}
|
||
export function refreshable(config: Partial<Refreshable>): Refreshable;
|
||
export interface IPullable {
|
||
startAnimation(): void;
|
||
stopAnimation(): void;
|
||
setPullingDistance(distance: number): void;
|
||
}
|
||
export function pullable(v: View, config: IPullable): View;
|
||
}
|
||
|
||
declare module 'doric/lib/src/widget/flowlayout' {
|
||
import { Stack } from 'doric/lib/src/widget/layouts';
|
||
import { Superview, View, NativeViewModel } from 'doric/lib/src/ui/view';
|
||
export class FlowLayoutItem extends Stack {
|
||
/**
|
||
* Set to reuse native view
|
||
*/
|
||
identifier?: string;
|
||
}
|
||
export class FlowLayout extends Superview {
|
||
allSubviews(): IterableIterator<FlowLayoutItem> | FlowLayoutItem[];
|
||
columnCount: number;
|
||
columnSpace?: number;
|
||
rowSpace?: number;
|
||
itemCount: number;
|
||
renderItem: (index: number) => FlowLayoutItem;
|
||
batchCount: number;
|
||
onLoadMore?: () => void;
|
||
loadMore?: boolean;
|
||
loadMoreView?: FlowLayoutItem;
|
||
onScroll?: (offset: {
|
||
x: number;
|
||
y: number;
|
||
}) => void;
|
||
onScrollEnd?: (offset: {
|
||
x: number;
|
||
y: number;
|
||
}) => void;
|
||
reset(): void;
|
||
isDirty(): boolean;
|
||
toModel(): NativeViewModel;
|
||
}
|
||
export function flowlayout(config: Partial<FlowLayout>): FlowLayout;
|
||
export function flowItem(item: View | View[], config?: Partial<FlowLayoutItem>): FlowLayoutItem;
|
||
}
|
||
|
||
declare module 'doric/lib/src/widget/input' {
|
||
import { View } from "doric/lib/src/ui/view";
|
||
import { Color } from "doric/lib/src/util/color";
|
||
import { Gravity } from "doric/lib/src/util/gravity";
|
||
import { BridgeContext } from "doric/lib/src/runtime/global";
|
||
export class Input extends View {
|
||
text?: string;
|
||
textColor?: Color;
|
||
textSize?: number;
|
||
hintText?: string;
|
||
hintTextColor?: Color;
|
||
multiline?: boolean;
|
||
textAlignment?: Gravity;
|
||
onTextChange?: (text: string) => void;
|
||
onFocusChange?: (focused: boolean) => void;
|
||
maxLength?: number;
|
||
getText(context: BridgeContext): Promise<string>;
|
||
setSelection(context: BridgeContext, start: number, end?: number): Promise<string>;
|
||
requestFocus(context: BridgeContext): Promise<any>;
|
||
releaseFocus(context: BridgeContext): Promise<any>;
|
||
}
|
||
export function input(config: Partial<Input>): Input;
|
||
}
|
||
|
||
declare module 'doric/lib/src/widget/nestedSlider' {
|
||
import { Group, View } from 'doric/lib/src/ui/view';
|
||
import { BridgeContext } from 'doric/lib/src/runtime/global';
|
||
export class NestedSlider extends Group {
|
||
onPageSlided?: (index: number) => void;
|
||
addSlideItem(view: View): void;
|
||
slidePage(context: BridgeContext, page: number, smooth?: boolean): Promise<any>;
|
||
getSlidedPage(context: BridgeContext): Promise<number>;
|
||
}
|
||
}
|
||
|
||
declare module 'doric/lib/src/widget/draggable' {
|
||
import { View } from "doric/lib/src/ui/view";
|
||
import { Stack } from "doric/lib/src/widget/layouts";
|
||
export class Draggable extends Stack {
|
||
onDrag?: (x: number, y: number) => void;
|
||
}
|
||
export function draggable(views: View | View[], config?: Partial<Draggable>): Draggable;
|
||
}
|
||
|
||
declare module 'doric/lib/src/widget/switch' {
|
||
import { View } from "doric/lib/src/ui/view";
|
||
import { Color } from "doric/lib/src/util/color";
|
||
export class Switch extends View {
|
||
/**
|
||
* True is on ,false is off,defalut is off.
|
||
*/
|
||
state?: boolean;
|
||
/**
|
||
* Switch change callback
|
||
*/
|
||
onSwitch?: (state: boolean) => void;
|
||
offTintColor?: Color;
|
||
onTintColor?: Color;
|
||
thumbTintColor?: Color;
|
||
}
|
||
export function switchView(config: Partial<Switch>): Switch;
|
||
}
|
||
|
||
declare module 'doric/lib/src/native/modal' {
|
||
import { BridgeContext } from "doric/lib/src/runtime/global";
|
||
import { Gravity } from "doric/lib/src/util/gravity";
|
||
export function modal(context: BridgeContext): {
|
||
toast: (msg: string, gravity?: Gravity) => void;
|
||
alert: (arg: string | {
|
||
title: string;
|
||
msg: string;
|
||
okLabel?: string;
|
||
}) => Promise<any>;
|
||
confirm: (arg: string | {
|
||
title: string;
|
||
msg: string;
|
||
okLabel?: string;
|
||
cancelLabel?: string;
|
||
}) => Promise<any>;
|
||
prompt: (arg: {
|
||
title?: string;
|
||
msg?: string;
|
||
okLabel?: string;
|
||
cancelLabel?: string;
|
||
text?: string;
|
||
defaultText?: string;
|
||
}) => Promise<string>;
|
||
};
|
||
}
|
||
|
||
declare module 'doric/lib/src/native/navbar' {
|
||
import { BridgeContext } from "doric/lib/src/runtime/global";
|
||
import { Color } from "doric/lib/src/util/color";
|
||
import { View } from "doric/lib/src/ui/view";
|
||
export function navbar(context: BridgeContext): {
|
||
isHidden: () => Promise<boolean>;
|
||
setHidden: (hidden: boolean) => Promise<any>;
|
||
setTitle: (title: string) => Promise<any>;
|
||
setBgColor: (color: Color) => Promise<any>;
|
||
setLeft: (view: View) => Promise<any>;
|
||
setRight: (view: View) => Promise<any>;
|
||
setCenter: (view: View) => Promise<any>;
|
||
};
|
||
}
|
||
|
||
declare module 'doric/lib/src/native/navigator' {
|
||
import { BridgeContext } from "doric/lib/src/runtime/global";
|
||
export function navigator(context: BridgeContext): {
|
||
push: (source: string, config?: {
|
||
alias?: string | undefined;
|
||
animated?: boolean | undefined;
|
||
extra?: object | undefined;
|
||
} | undefined) => Promise<any>;
|
||
pop: (animated?: boolean) => Promise<any>;
|
||
openUrl: (url: string) => Promise<any>;
|
||
};
|
||
}
|
||
|
||
declare module 'doric/lib/src/native/network' {
|
||
import { BridgeContext } from "doric/lib/src/runtime/global";
|
||
export interface IRequest {
|
||
url?: string;
|
||
method?: "get" | "post" | "put" | "delete";
|
||
headers?: {
|
||
[index: string]: string;
|
||
};
|
||
params?: {
|
||
[index: string]: string;
|
||
};
|
||
data?: object | string;
|
||
timeout?: number;
|
||
}
|
||
export interface IResponse {
|
||
data: string;
|
||
status: number;
|
||
headers?: {
|
||
[index: string]: string;
|
||
};
|
||
}
|
||
export function network(context: BridgeContext): {
|
||
request: (config: IRequest) => Promise<IResponse>;
|
||
get: (url: string, config?: IRequest | undefined) => Promise<IResponse>;
|
||
post: (url: string, data?: string | object | undefined, config?: IRequest | undefined) => Promise<IResponse>;
|
||
put: (url: string, data?: string | object | undefined, config?: IRequest | undefined) => Promise<IResponse>;
|
||
delete: (url: string, data?: string | object | undefined, config?: IRequest | undefined) => Promise<IResponse>;
|
||
};
|
||
}
|
||
|
||
declare module 'doric/lib/src/native/storage' {
|
||
import { BridgeContext } from "doric/lib/src/runtime/global";
|
||
export function storage(context: BridgeContext): {
|
||
setItem: (key: string, value: string, zone?: string | undefined) => Promise<any>;
|
||
getItem: (key: string, zone?: string | undefined) => Promise<string>;
|
||
remove: (key: string, zone?: string | undefined) => Promise<any>;
|
||
clear: (zone: string) => Promise<any>;
|
||
};
|
||
}
|
||
|
||
declare module 'doric/lib/src/native/popover' {
|
||
import { BridgeContext } from "doric/lib/src/runtime/global";
|
||
import { View } from "doric/lib/src/ui/view";
|
||
export function popover(context: BridgeContext): {
|
||
show: (view: View) => Promise<any>;
|
||
dismiss: (view?: View | undefined) => Promise<any>;
|
||
};
|
||
}
|
||
|
||
declare module 'doric/lib/src/native/animate' {
|
||
import { BridgeContext } from "doric/lib/src/runtime/global";
|
||
/**
|
||
* Only supports x,y,width,height,corner(just for four corners),rotation,bgColor,
|
||
* @param panel @see Panel
|
||
*/
|
||
export function animate(context: BridgeContext): (args: {
|
||
animations: () => void;
|
||
duration: number;
|
||
}) => Promise<unknown>;
|
||
}
|
||
|
||
declare module 'doric/lib/src/native/notification' {
|
||
import { BridgeContext } from "doric/lib/src/runtime/global";
|
||
export function notification(context: BridgeContext): {
|
||
publish: (args: {
|
||
biz?: string;
|
||
name: string;
|
||
data?: object;
|
||
androidSystem?: boolean;
|
||
}) => Promise<any>;
|
||
subscribe: (args: {
|
||
biz?: string | undefined;
|
||
name: string;
|
||
callback: (data?: any) => void;
|
||
androidSystem?: boolean | undefined;
|
||
}) => Promise<string>;
|
||
unsubscribe: (subscribeId: string) => Promise<any>;
|
||
};
|
||
}
|
||
|
||
declare module 'doric/lib/src/native/statusbar' {
|
||
import { BridgeContext } from "doric/lib/src/runtime/global";
|
||
import { Color } from "doric/lib/src/util/color";
|
||
export enum StatusBarMode {
|
||
LIGHT = 0,
|
||
DARK = 1
|
||
}
|
||
export function statusbar(context: BridgeContext): {
|
||
setHidden: (hidden: boolean) => Promise<any>;
|
||
setMode: (mode: StatusBarMode) => Promise<any>;
|
||
setColor: (color: Color) => Promise<any>;
|
||
};
|
||
}
|
||
|
||
declare module 'doric/lib/src/native/coordinator' {
|
||
import { BridgeContext } from "doric/lib/src/runtime/global";
|
||
import { Scroller } from "doric/lib/src/widget/scroller";
|
||
import { List } from "doric/lib/src/widget/list";
|
||
import { FlowLayout } from "doric/lib/src/widget/flowlayout";
|
||
import { View } from "doric/lib/src/ui/view";
|
||
import { Color } from "doric/lib/src/util/color";
|
||
export function coordinator(context: BridgeContext): {
|
||
verticalScrolling: (argument: {
|
||
scrollable: Scroller | List | FlowLayout;
|
||
scrollRange: {
|
||
start: number;
|
||
end: number;
|
||
};
|
||
target: View | "NavBar";
|
||
changing: {
|
||
name: "backgroundColor" | "width" | "height" | "x" | "y" | "alpha";
|
||
start: number | Color;
|
||
end: number | Color;
|
||
};
|
||
}) => void;
|
||
};
|
||
}
|
||
|
||
declare module 'doric/lib/src/native/notch' {
|
||
import { BridgeContext } from "doric/lib/src/runtime/global";
|
||
export function notch(context: BridgeContext): {
|
||
inset: () => Promise<{
|
||
top: number;
|
||
left: number;
|
||
bottom: number;
|
||
right: number;
|
||
}>;
|
||
};
|
||
}
|
||
|
||
declare module 'doric/lib/src/util/color' {
|
||
import { Modeling } from "doric/lib/src/util/types";
|
||
/**
|
||
* Store color as format AARRGGBB or RRGGBB
|
||
*/
|
||
export class Color implements Modeling {
|
||
static BLACK: Color;
|
||
static DKGRAY: Color;
|
||
static GRAY: Color;
|
||
static LTGRAY: Color;
|
||
static WHITE: Color;
|
||
static RED: Color;
|
||
static GREEN: Color;
|
||
static BLUE: Color;
|
||
static YELLOW: Color;
|
||
static CYAN: Color;
|
||
static MAGENTA: Color;
|
||
static TRANSPARENT: Color;
|
||
_value: number;
|
||
constructor(v: number);
|
||
static parse(str: string): Color;
|
||
static safeParse(str: string, defVal?: Color): Color;
|
||
alpha(v: number): Color;
|
||
toModel(): number;
|
||
}
|
||
export enum GradientOrientation {
|
||
/** draw the gradient from the top to the bottom */
|
||
TOP_BOTTOM = 0,
|
||
/** draw the gradient from the top-right to the bottom-left */
|
||
TR_BL = 1,
|
||
/** draw the gradient from the right to the left */
|
||
RIGHT_LEFT = 2,
|
||
/** draw the gradient from the bottom-right to the top-left */
|
||
BR_TL = 3,
|
||
/** draw the gradient from the bottom to the top */
|
||
BOTTOM_TOP = 4,
|
||
/** draw the gradient from the bottom-left to the top-right */
|
||
BL_TR = 5,
|
||
/** draw the gradient from the left to the right */
|
||
LEFT_RIGHT = 6,
|
||
/** draw the gradient from the top-left to the bottom-right */
|
||
TL_BR = 7
|
||
}
|
||
export interface GradientColor {
|
||
start?: Color;
|
||
end?: Color;
|
||
colors?: Array<Color>;
|
||
locations?: Array<Number>;
|
||
orientation: GradientOrientation;
|
||
}
|
||
}
|
||
|
||
declare module 'doric/lib/src/util/gravity' {
|
||
import { Modeling } from "doric/lib/src/util/types";
|
||
export const LEFT: number;
|
||
export const RIGHT: number;
|
||
export const TOP: number;
|
||
export const BOTTOM: number;
|
||
export const CENTER_X: number;
|
||
export const CENTER_Y: number;
|
||
export const CENTER: number;
|
||
export class Gravity implements Modeling {
|
||
val: number;
|
||
left(): Gravity;
|
||
right(): Gravity;
|
||
top(): Gravity;
|
||
bottom(): Gravity;
|
||
center(): Gravity;
|
||
centerX(): Gravity;
|
||
centerY(): Gravity;
|
||
toModel(): number;
|
||
static Center: Gravity;
|
||
static CenterX: Gravity;
|
||
static CenterY: Gravity;
|
||
static Left: Gravity;
|
||
static Right: Gravity;
|
||
static Top: Gravity;
|
||
static Bottom: Gravity;
|
||
}
|
||
export function gravity(): Gravity;
|
||
}
|
||
|
||
declare module 'doric/lib/src/util/layoutconfig' {
|
||
import { Gravity } from "doric/lib/src/util/gravity";
|
||
import { Modeling } from "doric/lib/src/util/types";
|
||
export enum LayoutSpec {
|
||
/**
|
||
* Depends on what's been set on width or height.
|
||
*/
|
||
JUST = 0,
|
||
/**
|
||
* Depends on it's content.
|
||
*/
|
||
FIT = 1,
|
||
/**
|
||
* Extend as much as parent let it take.
|
||
*/
|
||
MOST = 2
|
||
}
|
||
export interface LayoutConfig {
|
||
widthSpec?: LayoutSpec;
|
||
heightSpec?: LayoutSpec;
|
||
margin?: {
|
||
left?: number;
|
||
right?: number;
|
||
top?: number;
|
||
bottom?: number;
|
||
};
|
||
alignment?: Gravity;
|
||
weight?: number;
|
||
maxWidth?: number;
|
||
maxHeight?: number;
|
||
minWidth?: number;
|
||
minHeight?: number;
|
||
}
|
||
export class LayoutConfigImpl implements LayoutConfig, Modeling {
|
||
widthSpec?: LayoutSpec;
|
||
heightSpec?: LayoutSpec;
|
||
margin?: {
|
||
left?: number;
|
||
right?: number;
|
||
top?: number;
|
||
bottom?: number;
|
||
};
|
||
alignment?: Gravity;
|
||
weight?: number;
|
||
maxWidth?: number;
|
||
maxHeight?: number;
|
||
minWidth?: number;
|
||
minHeight?: number;
|
||
fit(): this;
|
||
most(): this;
|
||
just(): this;
|
||
configWidth(w: LayoutSpec): this;
|
||
configHeight(h: LayoutSpec): this;
|
||
configMargin(m: {
|
||
left?: number;
|
||
right?: number;
|
||
top?: number;
|
||
bottom?: number;
|
||
}): this;
|
||
configAlignment(a: Gravity): this;
|
||
configWeight(w: number): this;
|
||
configMaxWidth(v: number): this;
|
||
configMaxHeight(v: number): this;
|
||
configMinWidth(v: number): this;
|
||
configMinHeight(v: number): this;
|
||
toModel(): {
|
||
widthSpec: LayoutSpec | undefined;
|
||
heightSpec: LayoutSpec | undefined;
|
||
margin: {
|
||
left?: number | undefined;
|
||
right?: number | undefined;
|
||
top?: number | undefined;
|
||
bottom?: number | undefined;
|
||
} | undefined;
|
||
alignment: number | undefined;
|
||
weight: number | undefined;
|
||
};
|
||
}
|
||
export function layoutConfig(): LayoutConfigImpl;
|
||
}
|
||
|
||
declare module 'doric/lib/src/util/log' {
|
||
export function log(...args: any): void;
|
||
export function loge(...message: any): void;
|
||
export function logw(...message: any): void;
|
||
}
|
||
|
||
declare module 'doric/lib/src/util/types' {
|
||
export interface Modeling {
|
||
toModel(): Model;
|
||
}
|
||
export function obj2Model(obj: Model): Model;
|
||
type _M = string | number | boolean | Modeling | {
|
||
[index: string]: Model;
|
||
} | undefined;
|
||
export type Model = _M | Array<_M>;
|
||
export type Binder<T> = (v: T) => void;
|
||
export class Mutable<T> {
|
||
get: () => T;
|
||
set: (v: T) => void;
|
||
bind(binder: Binder<T>): void;
|
||
static of<E>(v: E): Mutable<E>;
|
||
}
|
||
export {};
|
||
}
|
||
|
||
declare module 'doric/lib/src/util/uniqueId' {
|
||
export function uniqueId(prefix: string): string;
|
||
}
|
||
|
||
declare module 'doric/lib/src/util/flexbox' {
|
||
import { Modeling } from "doric/lib/src/util/types";
|
||
enum ValueType {
|
||
Undefined = 0,
|
||
Point = 1,
|
||
Percent = 2,
|
||
Auto = 3
|
||
}
|
||
export class FlexTypedValue implements Modeling {
|
||
type: ValueType;
|
||
value: number;
|
||
constructor(type: ValueType);
|
||
static Auto: FlexTypedValue;
|
||
static percent(v: number): FlexTypedValue;
|
||
static point(v: number): FlexTypedValue;
|
||
toModel(): {
|
||
type: ValueType;
|
||
value: number;
|
||
};
|
||
}
|
||
export enum FlexDirection {
|
||
COLUMN = 0,
|
||
COLUMN_REVERSE = 1,
|
||
ROW = 2,
|
||
ROW_REVERSE = 3
|
||
}
|
||
export enum Align {
|
||
AUTO = 0,
|
||
FLEX_START = 1,
|
||
CENTER = 2,
|
||
FLEX_END = 3,
|
||
STRETCH = 4,
|
||
BASELINE = 5,
|
||
SPACE_BETWEEN = 6,
|
||
SPACE_AROUND = 7
|
||
}
|
||
export enum Justify {
|
||
FLEX_START = 0,
|
||
CENTER = 1,
|
||
FLEX_END = 2,
|
||
SPACE_BETWEEN = 3,
|
||
SPACE_AROUND = 4,
|
||
SPACE_EVENLY = 5
|
||
}
|
||
export enum Direction {
|
||
INHERIT = 0,
|
||
LTR = 1,
|
||
RTL = 2
|
||
}
|
||
export enum PositionType {
|
||
RELATIVE = 0,
|
||
ABSOLUTE = 1
|
||
}
|
||
export enum Wrap {
|
||
NO_WRAP = 0,
|
||
WRAP = 1,
|
||
WRAP_REVERSE = 2
|
||
}
|
||
export enum OverFlow {
|
||
VISIBLE = 0,
|
||
HIDDEN = 1,
|
||
SCROLL = 2
|
||
}
|
||
export enum Display {
|
||
FLEX = 0,
|
||
NONE = 1
|
||
}
|
||
export type FlexValue = FlexTypedValue | number;
|
||
export interface FlexConfig {
|
||
direction?: Direction;
|
||
flexDirection?: FlexDirection;
|
||
justifyContent?: Justify;
|
||
alignContent?: Align;
|
||
alignItems?: Align;
|
||
alignSelf?: Align;
|
||
positionType?: PositionType;
|
||
flexWrap?: Wrap;
|
||
overFlow?: OverFlow;
|
||
display?: Display;
|
||
flex?: number;
|
||
flexGrow?: number;
|
||
flexShrink?: number;
|
||
flexBasis?: FlexValue;
|
||
marginLeft?: FlexValue;
|
||
marginRight?: FlexValue;
|
||
marginTop?: FlexValue;
|
||
marginBottom?: FlexValue;
|
||
marginStart?: FlexValue;
|
||
marginEnd?: FlexValue;
|
||
marginHorizontal?: FlexValue;
|
||
marginVertical?: FlexValue;
|
||
margin?: FlexValue;
|
||
paddingLeft?: FlexValue;
|
||
paddingRight?: FlexValue;
|
||
paddingTop?: FlexValue;
|
||
paddingBottom?: FlexValue;
|
||
paddingStart?: FlexValue;
|
||
paddingEnd?: FlexValue;
|
||
paddingHorizontal?: FlexValue;
|
||
paddingVertical?: FlexValue;
|
||
padding?: FlexValue;
|
||
borderLeftWidth?: number;
|
||
borderRightWidth?: number;
|
||
borderTopWidth?: number;
|
||
borderBottomWidth?: number;
|
||
borderStartWidth?: number;
|
||
borderEndWidth?: number;
|
||
borderWidth?: number;
|
||
left?: FlexValue;
|
||
right?: FlexValue;
|
||
top?: FlexValue;
|
||
bottom?: FlexValue;
|
||
start?: FlexValue;
|
||
end?: FlexValue;
|
||
width?: FlexValue;
|
||
height?: FlexValue;
|
||
minWidth?: FlexValue;
|
||
minHeight?: FlexValue;
|
||
maxWidth?: FlexValue;
|
||
maxHeight?: FlexValue;
|
||
aspectRatio?: number;
|
||
}
|
||
export {};
|
||
}
|
||
|
||
declare module 'doric/lib/src/pattern/candies' {
|
||
export function take<T>(target: T): (block: (p: T) => void) => void;
|
||
export function takeNonNull<T, R>(target?: T): (block: (p: T) => R) => R | undefined;
|
||
export function takeNull<T, R>(target?: T): (block: () => R) => R | undefined;
|
||
export function takeLet<T, R>(target: T): (block: (p: T) => R | undefined) => R | undefined;
|
||
export function takeAlso<T>(target: T): (block: (p: T) => void) => T;
|
||
export function takeIf<T>(target: T): (predicate: (t: T) => boolean) => T | undefined;
|
||
export function takeUnless<T>(target: T): (predicate: (t: T) => boolean) => T | undefined;
|
||
export function repeat(action: (count: number) => void): (times: number) => void;
|
||
}
|
||
|
||
declare module 'doric/lib/src/pattern/provider' {
|
||
export type Observer<T> = (v: T) => void;
|
||
export type Updater<T> = (v: T) => T;
|
||
export interface IObservable<T> {
|
||
addObserver(observer: Observer<T | undefined>): void;
|
||
removeObserver(observer: Observer<T | undefined>): void;
|
||
update(updater: Updater<T | undefined>): void;
|
||
}
|
||
export class Observable<M> implements IObservable<M> {
|
||
constructor(provider: IProvider, clz: {
|
||
new (...args: any[]): M;
|
||
});
|
||
addObserver(observer: Observer<M | undefined>): void;
|
||
removeObserver(observer: Observer<M | undefined>): void;
|
||
update(updater: Updater<M | undefined>): void;
|
||
}
|
||
export interface IProvider {
|
||
provide(obj: Object): void;
|
||
acquire<T>(clz: {
|
||
new (...args: any[]): T;
|
||
}): T | undefined;
|
||
remove<T>(clz: {
|
||
new (...args: any[]): T;
|
||
}): void;
|
||
clear(): void;
|
||
observe<T>(clz: {
|
||
new (...args: any[]): T;
|
||
}): Observable<T>;
|
||
}
|
||
export class Provider implements IProvider {
|
||
provide(obj: Object): void;
|
||
acquire<T>(clz: {
|
||
new (...args: any[]): T;
|
||
}): T | undefined;
|
||
remove<T>(clz: new (...args: any[]) => T): void;
|
||
clear(): void;
|
||
observe<T>(clz: new (...args: any[]) => T): Observable<T>;
|
||
}
|
||
}
|
||
|
||
declare module 'doric/lib/src/pattern/mvvm' {
|
||
import { Group } from "doric/lib/src/ui/view";
|
||
import { Panel } from "doric/lib/src/ui/panel";
|
||
export abstract class ViewHolder {
|
||
abstract build(root: Group): void;
|
||
}
|
||
export type Setter<M> = (state: M) => void;
|
||
export abstract class ViewModel<M extends Object, V extends ViewHolder> {
|
||
constructor(obj: M, v: V);
|
||
getState(): M;
|
||
getViewHolder(): V;
|
||
updateState(setter: Setter<M>): void;
|
||
attach(view: Group): void;
|
||
abstract onAttached(state: M, vh: V): void;
|
||
abstract onBind(state: M, vh: V): void;
|
||
}
|
||
export type ClassType<T> = new (...args: any) => T;
|
||
export abstract class VMPanel<M extends Object, V extends ViewHolder> extends Panel {
|
||
abstract getViewModelClass(): ClassType<ViewModel<M, V>>;
|
||
abstract getState(): M;
|
||
abstract getViewHolderClass(): ClassType<V>;
|
||
getViewModel(): ViewModel<M, V> | undefined;
|
||
build(root: Group): void;
|
||
}
|
||
}
|
||
|
||
declare module '*.png' {
|
||
const value: any;
|
||
export default value;
|
||
} |