This repository has been archived on 2024-07-22. You can view files and clone it, but cannot push or open issues or pull requests.
Doric/doric-js/lib/src/ui/view.d.ts

173 lines
4.4 KiB
TypeScript
Raw Normal View History

2020-01-03 14:44:51 +08:00
import { Color, GradientColor } from "../util/color";
import { Modeling, Model } from "../util/types";
import { BridgeContext } from "../runtime/global";
import { LayoutConfig } from '../util/layoutconfig';
import { IAnimation } from "./animation";
2020-04-09 20:01:22 +08:00
import { FlexConfig } from "../util/flexbox";
2020-01-03 14:44:51 +08:00
export declare function Property(target: Object, propKey: string): void;
export interface IView {
width?: number;
height?: 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;
padding?: {
left?: number;
right?: number;
top?: number;
bottom?: number;
};
layoutConfig?: LayoutConfig;
onClick?: Function;
identifier?: string;
/**++++++++++transform++++++++++*/
translationX?: number;
translationY?: number;
scaleX?: number;
scaleY?: number;
/**
* float [0,..1]
*/
pivotX?: number;
/**
* float [0,..1]
*/
pivotY?: number;
/**
* rotation*PI
*/
rotation?: number;
2020-04-09 20:01:22 +08:00
/**----------transform----------*/
/**
* Only affected when its superview or itself is FlexLayout.
*/
flexConfig?: FlexConfig;
2020-01-03 14:44:51 +08:00
}
2020-01-03 16:35:04 +08:00
export declare type NativeViewModel = {
id: string;
type: string;
props: {
[index: string]: Model;
};
};
2020-01-03 14:44:51 +08:00
export declare abstract class View implements Modeling, IView {
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;
};
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>;
private callback2Id;
private id2Callback;
constructor();
/** Anchor start*/
2020-01-17 14:55:39 +08:00
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);
2020-01-03 14:44:51 +08:00
/** Anchor end*/
private __dirty_props__;
2020-01-17 14:55:39 +08:00
get dirtyProps(): {
2020-01-03 14:44:51 +08:00
[index: string]: Model;
};
2020-01-03 16:35:04 +08:00
nativeViewModel: NativeViewModel;
2020-01-03 14:44:51 +08:00
onPropertyChanged(propKey: string, oldV: Model, newV: Model): void;
clean(): void;
isDirty(): boolean;
responseCallback(id: string, ...args: any): any;
2020-01-03 16:35:04 +08:00
toModel(): NativeViewModel;
2020-01-03 14:44:51 +08:00
let(block: (it: this) => void): void;
also(block: (it: this) => void): this;
apply(config: IView): this;
in(group: Group): this;
nativeChannel(context: BridgeContext, name: string): (args?: any) => Promise<any>;
2020-01-03 14:44:51 +08:00
getWidth(context: BridgeContext): Promise<number>;
getHeight(context: BridgeContext): Promise<number>;
2020-03-03 14:43:49 +08:00
getX(context: BridgeContext): Promise<number>;
getY(context: BridgeContext): Promise<number>;
2020-01-03 14:44:51 +08:00
getLocationOnScreen(context: BridgeContext): Promise<{
x: number;
y: number;
}>;
/**++++++++++transform++++++++++*/
translationX?: number;
translationY?: number;
scaleX?: number;
scaleY?: number;
pivotX?: number;
pivotY?: number;
rotation?: number;
/**----------transform----------*/
2020-04-09 20:01:22 +08:00
flexConfig?: FlexConfig;
2020-01-03 14:44:51 +08:00
doAnimation(context: BridgeContext, animation: IAnimation): Promise<void>;
}
export declare abstract class Superview extends View {
subviewById(id: string): View | undefined;
abstract allSubviews(): Iterable<View>;
isDirty(): boolean;
clean(): void;
2020-01-03 16:35:04 +08:00
toModel(): NativeViewModel;
2020-01-03 14:44:51 +08:00
}
export declare abstract class Group extends Superview {
readonly children: View[];
allSubviews(): View[];
addChild(view: View): void;
}