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/index.d.ts

1927 lines
67 KiB
TypeScript
Raw Normal View History

2020-01-03 15:28:33 +08:00
// 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' {
2020-09-04 17:05:51 +08:00
import { Panel } from "doric/lib/src/ui/panel";
2021-05-13 14:50:54 +08:00
import { ClassType } from "doric/lib/src/util/types";
2020-01-03 15:28:33 +08:00
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;
2020-01-03 15:28:33 +08:00
};
global {
const context: BridgeContext;
const Environment: {
platform: "Android" | "iOS" | "Qt" | "web";
platformVersion: string;
appName: string;
appVersion: string;
libVersion: string;
screenWidth: number;
screenHeight: number;
2020-04-23 15:38:37 +08:00
screenScale: number;
statusBarHeight: number;
2020-03-19 11:51:32 +08:00
hasNotch: boolean;
2020-03-14 10:57:04 +08:00
/**
* ex:Apple or Google
*/
deviceBrand: string;
2020-03-14 10:57:04 +08:00
/**
* ex: iPhone12,5 or pixel 3
*/
deviceModel: string;
2021-07-06 17:35:56 +08:00
/**
* The language code for current locale
*/
localeLanguage: string;
/**
* The country/region code for current locale
*/
localeCountry: string;
[index: string]: number | string | boolean | object | undefined;
};
2020-09-04 17:05:51 +08:00
function Entry(constructor: ClassType<Panel>): void;
function Entry(exports: ClassType<Panel>[]): (constructor: ClassType<Panel>) => void;
2020-01-03 15:28:33 +08:00
}
2020-01-10 16:19:53 +08:00
export {};
2020-01-03 15:28:33 +08:00
}
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';
2020-01-03 19:02:41 +08:00
export * from 'doric/lib/src/widget/draggable';
2020-03-13 13:01:21 +08:00
export * from 'doric/lib/src/widget/switch';
2021-09-22 10:28:02 +08:00
export * from 'doric/lib/src/widget/gesture';
2021-11-24 14:37:48 +08:00
export * from 'doric/lib/src/widget/effect';
2020-01-03 15:28:33 +08:00
}
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';
2020-01-14 10:59:42 +08:00
export * from 'doric/lib/src/native/statusbar';
export * from 'doric/lib/src/native/coordinator';
2020-03-19 14:32:42 +08:00
export * from 'doric/lib/src/native/notch';
2021-03-18 18:47:49 +08:00
export * from 'doric/lib/src/native/keyboard';
2021-11-18 16:38:35 +08:00
export * from 'doric/lib/src/native/resourceLoader';
export * from 'doric/lib/src/native/imageDecoder';
2020-01-03 15:28:33 +08:00
}
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';
2021-09-01 10:47:40 +08:00
export * from 'doric/lib/src/util/jsx';
2021-10-22 17:00:00 +08:00
export * from 'doric/lib/src/util/resource';
2020-01-03 15:28:33 +08:00
}
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';
2021-05-13 16:26:48 +08:00
export * from 'doric/lib/src/pattern/modular';
2020-01-03 15:28:33 +08:00
}
2020-09-04 17:05:51 +08:00
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;
2021-07-07 17:30:08 +08:00
onEnvChanged(): void;
/**
* Build view of the current Panel
* This could be called any times at any time when necessary.
* @param rootView root view of this panel
*/
2020-09-04 17:05:51 +08:00
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;
2021-05-13 14:50:54 +08:00
onRenderFinished(): void;
2020-09-04 17:05:51 +08:00
addOnRenderFinishedCallback(cb: () => void): void;
}
}
2021-05-13 14:50:54 +08:00
declare module 'doric/lib/src/util/types' {
export interface Modeling {
toModel(): Model;
2020-09-04 17:05:51 +08:00
}
2021-05-13 14:50:54 +08:00
export function obj2Model(obj: Model, convertor: (v: Function) => string): 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>;
2020-09-04 17:05:51 +08:00
}
export type ClassType<T> = new (...args: any) => T;
2021-05-13 14:50:54 +08:00
export {};
2020-09-04 17:05:51 +08:00
}
2020-01-03 15:28:33 +08:00
declare module 'doric/lib/src/ui/view' {
import { Color, GradientColor } from "doric/lib/src/util/color";
2021-05-14 19:24:07 +08:00
import { Modeling, Model, ClassType } from "doric/lib/src/util/types";
2020-01-03 15:28:33 +08:00
import { BridgeContext } from "doric/lib/src/runtime/global";
import { LayoutConfig } from 'doric/lib/src/util/layoutconfig';
import { IAnimation } from "doric/lib/src/ui/animation";
2020-04-09 20:01:22 +08:00
import { FlexConfig } from "doric/lib/src/util/flexbox";
2020-01-03 15:28:33 +08:00
export function Property(target: Object, propKey: string): void;
export function InconsistProperty(target: Object, propKey: string): void;
2021-05-14 19:24:07 +08:00
export function ViewComponent(constructor: ClassType<any>): void;
2020-01-03 16:35:04 +08:00
export type NativeViewModel = {
2020-01-10 16:19:53 +08:00
id: string;
type: string;
props: {
[index: string]: Model;
};
2020-01-03 16:35:04 +08:00
};
2021-12-03 15:37:42 +08:00
type RefType<T> = T extends Ref<infer R> ? R : never;
2021-09-02 11:39:51 +08:00
export class Ref<T extends View> {
set current(v: T);
get current(): T;
2021-12-03 15:37:42 +08:00
apply(config: Partial<RefType<this>>): void;
2021-09-02 11:39:51 +08:00
}
2021-09-03 16:48:24 +08:00
export function createRef<T extends View>(): Ref<T>;
export abstract class View implements Modeling {
2020-01-03 15:28:33 +08:00
width: number;
2020-01-10 16:19:53 +08:00
height: number;
2020-01-03 15:28:33 +08:00
x: number;
y: number;
2020-01-10 16:19:53 +08:00
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]
*/
2020-01-10 16:19:53 +08:00
alpha?: number;
hidden?: boolean;
viewId: string;
2020-07-04 10:04:40 +08:00
tag?: string;
2020-01-10 16:19:53 +08:00
padding?: {
left?: number;
right?: number;
top?: number;
bottom?: number;
};
layoutConfig?: LayoutConfig;
onClick?: Function;
superview?: Superview;
callbacks: Map<String, Function>;
2021-11-22 11:54:47 +08:00
callback2Id(f: Function): string;
2020-07-04 10:04:40 +08:00
findViewByTag(tag: string): View | undefined;
2020-01-10 16:19:53 +08:00
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;
2021-05-14 19:24:07 +08:00
viewType(): any;
2020-01-10 16:19:53 +08:00
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;
2020-01-10 16:19:53 +08:00
in(group: Group): this;
nativeChannel(context: BridgeContext, name: string): (args?: any) => Promise<any>;
2020-01-10 16:19:53 +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-10 16:19:53 +08:00
getLocationOnScreen(context: BridgeContext): Promise<{
x: number;
y: number;
}>;
/**++++++++++transform++++++++++*/
translationX?: number;
translationY?: number;
/**
* float [0,..1]
*/
2020-01-10 16:19:53 +08:00
scaleX?: number;
scaleY?: number;
pivotX?: number;
pivotY?: number;
/**
* rotation*PI
2020-06-02 20:43:27 +08:00
* In Z
*/
2020-01-10 16:19:53 +08:00
rotation?: number;
2020-06-02 20:43:27 +08:00
/**
* 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.
*/
2020-04-09 20:01:22 +08:00
flexConfig?: FlexConfig;
2021-08-31 12:49:47 +08:00
set props(props: Partial<this>);
2021-09-02 11:39:51 +08:00
set parent(v: Group);
set ref(ref: Ref<this>);
2020-01-10 16:19:53 +08:00
doAnimation(context: BridgeContext, animation: IAnimation): Promise<void>;
clearAnimation(context: BridgeContext, animation: IAnimation): Promise<void>;
cancelAnimation(context: BridgeContext, animation: IAnimation): Promise<void>;
2020-01-03 15:28:33 +08:00
}
export abstract class Superview extends View {
2020-01-10 16:19:53 +08:00
subviewById(id: string): View | undefined;
2020-07-04 10:04:40 +08:00
findViewByTag(tag: string): View | undefined;
2020-01-10 16:19:53 +08:00
abstract allSubviews(): Iterable<View>;
isDirty(): boolean;
clean(): void;
toModel(): NativeViewModel;
2020-01-03 15:28:33 +08:00
}
2021-09-03 13:42:25 +08:00
export type ViewArray = View[];
export type ViewFragment = View | ViewArray;
export abstract class Group extends Superview implements JSX.ElementChildrenAttribute {
2020-01-10 16:19:53 +08:00
readonly children: View[];
allSubviews(): View[];
addChild(view: View): void;
2020-05-15 17:58:25 +08:00
removeChild(view: View): void;
removeAllChildren(): void;
2021-09-03 13:42:25 +08:00
set innerElement(e: View | ViewFragment | ViewFragment[] | undefined | null);
2020-01-03 15:28:33 +08:00
}
2021-12-03 15:37:42 +08:00
export {};
2020-01-03 15:28:33 +08:00
}
declare module 'doric/lib/src/ui/animation' {
import { Color } from "doric/lib/src/util/color";
2020-01-03 15:28:33 +08:00
import { Modeling, Model } from "doric/lib/src/util/types";
export type AnimatedKey = "translationX" | "translationY" | "scaleX" | "scaleY" | "rotation" | "pivotX" | "pivotY" | "rotationX" | "rotationY" | "backgroundColor" | "alpha";
2020-01-03 15:28:33 +08:00
export enum RepeatMode {
2020-01-10 16:19:53 +08:00
RESTART = 1,
REVERSE = 2
2020-01-03 15:28:33 +08:00
}
export interface IAnimation extends Modeling {
2020-01-10 16:19:53 +08:00
duration: number;
delay?: number;
2021-04-21 18:59:29 +08:00
id: string;
2020-01-03 15:28:33 +08:00
}
export interface Changeable {
2020-01-10 16:19:53 +08:00
fromValue: number;
toValue: number;
key: AnimatedKey;
repeatCount?: number;
repeatMode?: RepeatMode;
2021-09-07 20:10:44 +08:00
keyFrames?: {
percent: number;
value: number;
}[];
2020-01-03 15:28:33 +08:00
}
export enum FillMode {
2020-01-10 16:19:53 +08:00
/**
* 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 objects time space
*/
Both = 3
2020-01-03 15:28:33 +08:00
}
export enum TimingFunction {
2020-01-10 16:19:53 +08:00
/**
* 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
2020-01-03 15:28:33 +08:00
}
abstract class Animation implements IAnimation {
2020-01-10 16:19:53 +08:00
changeables: Map<AnimatedKey, Changeable>;
2020-01-03 15:28:33 +08:00
duration: number;
2020-01-10 16:19:53 +08:00
repeatCount?: number;
repeatMode?: RepeatMode;
delay?: number;
2020-01-03 15:28:33 +08:00
fillMode: FillMode;
2020-01-10 16:19:53 +08:00
timingFunction?: TimingFunction;
2021-04-21 18:59:29 +08:00
id: string;
2020-01-10 16:19:53 +08:00
toModel(): {
type: string;
delay: number | undefined;
duration: number;
changeables: {
key: AnimatedKey;
fromValue: number;
toValue: number;
2021-09-07 20:10:44 +08:00
keyFrames: {
percent: number;
value: number;
}[] | undefined;
2020-01-10 16:19:53 +08:00
}[];
repeatCount: number | undefined;
repeatMode: RepeatMode | undefined;
fillMode: FillMode;
timingFunction: TimingFunction | undefined;
2021-04-21 18:59:29 +08:00
id: string;
2020-01-10 16:19:53 +08:00
};
2020-01-03 15:28:33 +08:00
}
export class ScaleAnimation extends Animation {
2020-01-10 16:19:53 +08:00
constructor();
2021-09-07 20:10:44 +08:00
set xKeyFrames(keyFrames: {
percent: number;
value: number;
}[]);
set yKeyFrames(keyFrames: {
percent: number;
value: number;
}[]);
2020-01-10 16:19:53 +08:00
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;
2020-01-03 15:28:33 +08:00
}
export class TranslationAnimation extends Animation {
2020-01-10 16:19:53 +08:00
constructor();
2021-09-07 20:10:44 +08:00
set xKeyFrames(keyFrames: {
percent: number;
value: number;
}[]);
set yKeyFrames(keyFrames: {
percent: number;
value: number;
}[]);
2020-01-10 16:19:53 +08:00
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;
2020-01-03 15:28:33 +08:00
}
/**
* Rotation range is [0..2]
*/
2020-01-03 15:28:33 +08:00
export class RotationAnimation extends Animation {
2020-01-10 16:19:53 +08:00
constructor();
set fromRotation(v: number);
get fromRotation(): number;
set toRotation(v: number);
get toRotation(): number;
2021-09-07 20:10:44 +08:00
set keyFrames(keyFrames: {
percent: number;
value: number;
}[]);
}
/**
* Rotation range is [0..2]
*/
export class RotationXAnimation extends Animation {
constructor();
set fromRotation(v: number);
get fromRotation(): number;
set toRotation(v: number);
get toRotation(): number;
2021-09-07 20:10:44 +08:00
set keyFrames(keyFrames: {
percent: number;
value: number;
}[]);
}
/**
* Rotation range is [0..2]
*/
export class RotationYAnimation extends Animation {
constructor();
2020-01-10 16:19:53 +08:00
set fromRotation(v: number);
get fromRotation(): number;
set toRotation(v: number);
get toRotation(): number;
2021-09-07 20:10:44 +08:00
set keyFrames(keyFrames: {
percent: number;
value: number;
}[]);
2020-01-03 15:28:33 +08:00
}
export class BackgroundColorAnimation extends Animation {
constructor();
set fromColor(color: Color);
get fromColor(): Color;
set toColor(v: Color);
get toColor(): Color;
2021-09-07 20:10:44 +08:00
set keyFrames(keyFrames: {
percent: number;
value: Color;
}[]);
}
/**
* Alpha range is [0..1]
*/
export class AlphaAnimation extends Animation {
constructor();
set from(v: number);
get from(): number;
set to(v: number);
get to(): number;
2021-09-07 20:10:44 +08:00
set keyFrames(keyFrames: {
percent: number;
value: number;
}[]);
}
2020-01-03 15:28:33 +08:00
export class AnimationSet implements IAnimation {
2020-01-10 16:19:53 +08:00
delay?: number;
2021-04-21 18:59:29 +08:00
id: string;
2020-01-10 16:19:53 +08:00
addAnimation(anim: IAnimation): void;
get duration(): number;
set duration(v: number);
toModel(): {
animations: Model;
delay: number | undefined;
2021-04-21 18:59:29 +08:00
id: string;
2020-01-10 16:19:53 +08:00
};
}
export {};
2020-01-03 15:28:33 +08:00
}
declare module 'doric/lib/src/widget/layouts' {
import { Group, View } from "doric/lib/src/ui/view";
2020-01-03 15:28:33 +08:00
import { Gravity } from "doric/lib/src/util/gravity";
export class Stack extends Group {
2020-01-03 15:28:33 +08:00
}
export class Root extends Stack {
}
class LinearLayout extends Group {
space?: number;
gravity?: Gravity;
}
export class VLayout extends LinearLayout {
2020-01-03 15:28:33 +08:00
}
export class HLayout extends LinearLayout {
2020-01-03 15:28:33 +08:00
}
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;
2020-04-09 20:01:22 +08:00
export class FlexLayout extends Group {
}
export function flexlayout(views: View[], config?: Partial<FlexLayout>): FlexLayout;
2020-01-10 16:19:53 +08:00
export {};
2020-01-03 15:28:33 +08:00
}
declare module 'doric/lib/src/widget/text' {
import { View } from "doric/lib/src/ui/view";
2021-07-19 16:29:54 +08:00
import { Color, GradientColor } from "doric/lib/src/util/color";
2020-01-03 15:28:33 +08:00
import { Gravity } from "doric/lib/src/util/gravity";
2020-04-27 18:46:39 +08:00
export enum TruncateAt {
End = 0,
Middle = 1,
Start = 2,
Clip = 3
}
2021-09-03 13:42:25 +08:00
export class Text extends View implements JSX.ElementChildrenAttribute {
2020-01-03 15:28:33 +08:00
text?: string;
2021-07-19 16:29:54 +08:00
textColor?: Color | GradientColor;
2020-01-03 15:28:33 +08:00
textSize?: number;
maxLines?: number;
textAlignment?: Gravity;
2020-01-14 19:50:32 +08:00
fontStyle?: "normal" | "bold" | "italic" | "bold_italic";
2020-03-13 14:22:46 +08:00
font?: string;
maxWidth?: number;
maxHeight?: number;
2020-03-24 11:06:30 +08:00
lineSpacing?: number;
2020-04-13 17:41:17 +08:00
strikethrough?: boolean;
underline?: boolean;
2020-04-14 11:44:22 +08:00
htmlText?: string;
2020-04-27 18:46:39 +08:00
truncateAt?: TruncateAt;
2021-09-03 13:42:25 +08:00
set innerElement(e: string);
2020-01-03 15:28:33 +08:00
}
export function text(config: Partial<Text>): Text;
2020-01-03 15:28:33 +08:00
}
declare module 'doric/lib/src/widget/image' {
2021-11-22 11:54:47 +08:00
import { View, NativeViewModel } from "doric/lib/src/ui/view";
import { Color } from "doric/lib/src/util/color";
import { BridgeContext } from "doric/lib/src/runtime/global";
import { Resource } from "doric/lib/src/util/resource";
2020-01-03 15:28:33 +08:00
export enum ScaleType {
ScaleToFill = 0,
ScaleAspectFit = 1,
ScaleAspectFill = 2
2020-01-03 15:28:33 +08:00
}
export class Image extends View {
/**
* Set pixels for image directly
*/
imagePixels?: {
width: number;
height: number;
pixels: ArrayBuffer;
};
/**
* This could be loaded by customized resource loader
*/
image?: Resource;
imageUrl?: string;
2021-08-05 17:42:45 +08:00
/**
* Read image from local file system.
*/
imageFilePath?: 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;
animated: boolean;
} | undefined) => void;
2020-04-23 16:14:34 +08:00
/**
* Default is Environment.screenScale.
*/
imageScale?: number;
/**
* Unit in pixel
*/
2020-04-16 17:14:56 +08:00
stretchInset?: {
left: number;
top: number;
right: number;
bottom: number;
};
2021-12-17 16:52:20 +08:00
/**
* Called if loaded image is animated and played end.
*/
onAnimationEnd?: () => void;
isAnimating(context: BridgeContext): Promise<boolean>;
startAnimating(context: BridgeContext): Promise<any>;
stopAnimating(context: BridgeContext): Promise<any>;
getImageInfo(context: BridgeContext): Promise<{
width: number;
height: number;
mimeType: string;
}>;
getImagePixels(context: BridgeContext): Promise<ArrayBuffer>;
2021-11-22 11:54:47 +08:00
toModel(): NativeViewModel;
2020-01-03 15:28:33 +08:00
}
export function image(config: Partial<Image>): Image;
2020-01-03 15:28:33 +08:00
}
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";
2020-04-22 11:18:21 +08:00
import { BridgeContext } from "doric/lib/src/runtime/global";
2021-04-23 19:05:33 +08:00
import { Color } from "doric/lib/src/util/color";
export class ListItem extends Stack {
2021-04-30 14:47:34 +08:00
/**
* Set to reuse native view
*/
identifier?: string;
actions?: {
title: string;
backgroundColor?: Color;
callback: () => void;
}[];
2020-01-03 15:28:33 +08:00
}
export class List extends Superview {
2021-10-09 16:50:34 +08:00
allSubviews(): ListItem[];
2021-04-30 14:47:34 +08:00
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;
scrollable?: boolean;
/**
* Take effect only on iOS
*/
bounces?: boolean;
scrollToItem(context: BridgeContext, index: number, config?: {
animated?: boolean;
}): Promise<any>;
/**
* @param context
* @returns Returns array of visible view's index.
*/
findVisibleItems(context: BridgeContext): Promise<number[]>;
/**
* @param context
* @returns Returns array of completely visible view's index.
*/
findCompletelyVisibleItems(context: BridgeContext): Promise<number[]>;
2021-04-30 14:47:34 +08:00
reset(): void;
toModel(): NativeViewModel;
2020-01-03 15:28:33 +08:00
}
export function list(config: Partial<List>): List;
export function listItem(item: View | View[], config?: Partial<ListItem>): ListItem;
2020-01-03 15:28:33 +08:00
}
declare module 'doric/lib/src/widget/slider' {
import { Superview, View } from "doric/lib/src/ui/view";
import { Stack } from "doric/lib/src/widget/layouts";
2020-01-03 15:28:33 +08:00
import { BridgeContext } from "doric/lib/src/runtime/global";
export class SlideItem extends Stack {
2021-04-30 14:47:34 +08:00
/**
* Set to reuse native view
*/
identifier?: string;
2020-01-03 15:28:33 +08:00
}
export class Slider extends Superview {
2021-04-30 14:47:34 +08:00
allSubviews(): IterableIterator<SlideItem>;
itemCount: number;
renderPage: (index: number) => SlideItem;
batchCount: number;
onPageSlided?: (index: number) => void;
loop?: boolean;
scrollable?: boolean;
/**
* Take effect only on iOS
*/
bounces?: boolean;
slidePage(context: BridgeContext, page: number, smooth?: boolean): Promise<any>;
getSlidedPage(context: BridgeContext): Promise<number>;
2020-01-03 15:28:33 +08:00
}
export function slider(config: Partial<Slider>): Slider;
export function slideItem(item: View | View[], config?: Partial<SlideItem>): SlideItem;
2020-01-03 15:28:33 +08:00
}
declare module 'doric/lib/src/widget/scroller' {
import { Superview, View, NativeViewModel } from 'doric/lib/src/ui/view';
2020-03-03 13:10:35 +08:00
import { BridgeContext } from 'doric/lib/src/runtime/global';
export function scroller(content: View, config?: Partial<Scroller>): Scroller;
2021-09-03 13:42:25 +08:00
export class Scroller extends Superview implements JSX.ElementChildrenAttribute {
2020-01-03 15:28:33 +08:00
content: View;
contentOffset?: {
x: number;
y: number;
};
onScroll?: (offset: {
x: number;
y: number;
}) => void;
onScrollEnd?: (offset: {
x: number;
y: number;
}) => void;
2021-04-23 17:57:34 +08:00
scrollable?: boolean;
2021-04-30 14:47:34 +08:00
/**
* Take effect only on iOS
*/
bounces?: boolean;
2020-01-03 15:28:33 +08:00
allSubviews(): View[];
2020-01-03 16:35:04 +08:00
toModel(): NativeViewModel;
2020-03-03 13:10:35 +08:00
scrollTo(context: BridgeContext, offset: {
x: number;
y: number;
}, animated?: boolean): Promise<any>;
2020-03-03 13:54:36 +08:00
scrollBy(context: BridgeContext, offset: {
x: number;
y: number;
}, animated?: boolean): Promise<any>;
2021-09-03 13:42:25 +08:00
set innerElement(e: View);
2020-01-03 15:28:33 +08:00
}
}
declare module 'doric/lib/src/widget/refreshable' {
import { View, Superview, NativeViewModel } from "doric/lib/src/ui/view";
2020-01-03 15:28:33 +08:00
import { BridgeContext } from "doric/lib/src/runtime/global";
2021-09-03 13:42:25 +08:00
export class Refreshable extends Superview implements JSX.ElementChildrenAttribute {
2020-01-03 15:28:33 +08:00
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>;
2020-01-03 16:35:04 +08:00
toModel(): NativeViewModel;
2021-09-03 13:42:25 +08:00
set innerElement(e: View | [View, View]);
2020-01-03 15:28:33 +08:00
}
export function refreshable(config: Partial<Refreshable>): Refreshable;
2020-01-03 15:28:33 +08:00
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';
import { BridgeContext } from "doric/lib/src/runtime/global";
export class FlowLayoutItem extends Stack {
2021-04-30 14:47:34 +08:00
/**
* Set to reuse native view
*/
identifier?: string;
2021-10-11 16:26:56 +08:00
/**
* When set to true, the item will layout using all span area.
* LoadMoreView is default to true.
2021-10-11 16:26:56 +08:00
*/
fullSpan?: boolean;
2020-01-03 15:28:33 +08:00
}
export class FlowLayout extends Superview {
allSubviews(): FlowLayoutItem[];
2021-04-30 14:47:34 +08:00
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;
scrollable?: boolean;
/**
* Take effect only on iOS
*/
bounces?: boolean;
/**
* @param context
* @returns Returns array of visible view's index.
*/
findVisibleItems(context: BridgeContext): Promise<number[]>;
/**
* @param context
* @returns Returns array of completely visible view's index.
*/
findCompletelyVisibleItems(context: BridgeContext): Promise<number[]>;
2021-04-30 14:47:34 +08:00
reset(): void;
toModel(): NativeViewModel;
2020-01-03 15:28:33 +08:00
}
export function flowlayout(config: Partial<FlowLayout>): FlowLayout;
export function flowItem(item: View | View[], config?: Partial<FlowLayoutItem>): FlowLayoutItem;
2020-01-03 15:28:33 +08:00
}
declare module 'doric/lib/src/widget/input' {
import { View } from "doric/lib/src/ui/view";
2020-01-03 15:28:33 +08:00
import { Color } from "doric/lib/src/util/color";
import { Gravity } from "doric/lib/src/util/gravity";
import { BridgeContext } from "doric/lib/src/runtime/global";
2021-06-11 15:17:20 +08:00
export enum ReturnKeyType {
Default = 0,
Done = 1,
Search = 2,
Next = 3,
Go = 4,
Send = 5
}
export class Input extends View {
2020-01-03 15:28:33 +08:00
text?: string;
textColor?: Color;
textSize?: number;
2021-07-20 15:38:25 +08:00
font?: string;
2020-01-03 15:28:33 +08:00
hintText?: string;
2021-07-20 15:38:25 +08:00
hintFont?: string;
2020-06-12 16:33:16 +08:00
inputType?: InputType;
2020-01-03 15:28:33 +08:00
hintTextColor?: Color;
multiline?: boolean;
textAlignment?: Gravity;
onTextChange?: (text: string) => void;
onFocusChange?: (focused: boolean) => void;
2020-04-30 16:36:28 +08:00
maxLength?: number;
2021-02-08 18:18:37 +08:00
password?: boolean;
2021-06-11 15:17:20 +08:00
editable?: boolean;
returnKeyType?: ReturnKeyType;
onSubmitEditing?: (text: string) => void;
enableHorizontalScrollBar?: boolean;
enableVerticalScrollBar?: boolean;
2021-07-23 10:03:19 +08:00
/**
* Called before text is changed
* @param editing: text already in box
* @param replacement: text which will replace part of editing
* @param start: the start index of replacing part
* @param length: the length of replacing part
*
* @returns: true means the replacement will take effect, otherwise does not
*/
2021-06-11 17:47:06 +08:00
beforeTextChange?: (change: {
editing: string;
start: number;
length: number;
replacement: string;
}) => boolean;
2020-01-03 15:28:33 +08:00
getText(context: BridgeContext): Promise<string>;
2021-06-11 17:40:02 +08:00
setSelection(context: BridgeContext, start: number, end?: number): Promise<any>;
getSelection(context: BridgeContext): Promise<{
start: number;
end: number;
}>;
2020-01-03 15:28:33 +08:00
requestFocus(context: BridgeContext): Promise<any>;
releaseFocus(context: BridgeContext): Promise<any>;
}
2020-06-12 16:33:16 +08:00
export enum InputType {
Default = 0,
Number = 1,
2020-06-13 11:58:24 +08:00
Decimal = 2,
2020-06-12 16:33:16 +08:00
Alphabet = 3,
Phone = 4
}
export function input(config: Partial<Input>): Input;
2020-01-03 15:28:33 +08:00
}
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;
2021-04-23 17:57:34 +08:00
scrollable?: boolean;
2021-04-30 14:47:34 +08:00
/**
* Take effect only on iOS
*/
bounces?: boolean;
2020-01-03 15:28:33 +08:00
addSlideItem(view: View): void;
slidePage(context: BridgeContext, page: number, smooth?: boolean): Promise<any>;
getSlidedPage(context: BridgeContext): Promise<number>;
}
}
2020-01-03 19:02:41 +08:00
declare module 'doric/lib/src/widget/draggable' {
import { View } from "doric/lib/src/ui/view";
import { Stack } from "doric/lib/src/widget/layouts";
/**
* @deprecated The class should not be used, please use GestureContainer class instead
*/
export class Draggable extends Stack {
onDrag?: (x: number, y: number) => void;
2020-01-03 19:02:41 +08:00
}
/**
* @deprecated The function should not be used, please use gestureContainer function instead
*/
export function draggable(views: View | View[], config?: Partial<Draggable>): Draggable;
2020-01-03 19:02:41 +08:00
}
2020-03-13 13:01:21 +08:00
declare module 'doric/lib/src/widget/switch' {
import { View } from "doric/lib/src/ui/view";
2020-03-13 13:01:21 +08:00
import { Color } from "doric/lib/src/util/color";
export class Switch extends View {
2020-03-13 13:01:21 +08:00
/**
* 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;
2020-03-13 13:01:21 +08:00
}
2021-09-22 10:28:02 +08:00
declare module 'doric/lib/src/widget/gesture' {
import { View } from "doric/lib/src/ui/view";
import { Stack } from "doric/lib/src/widget/layouts";
export enum SwipeOrientation {
LEFT = 0,
RIGHT = 1,
TOP = 2,
BOTTOM = 3
}
export class GestureContainer extends Stack {
onSingleTap?: () => void;
onDoubleTap?: () => void;
onLongPress?: () => void;
/**
* Called when the fingers in pinching on screen
* @param scale: the numeric value of scale on pinch
*/
onPinch?: (scale: number) => void;
/**
* Called when the fingers are scrolling or paning
* @param dx: the value of the change on the x-axis
* @param dy: the value of the change on the y-axis
*/
onPan?: (dx: number, dy: number) => void;
/**
* Called when the fingers are scrolling or paning
* @param dAngle: the value of the angle change from last rotate in radian
*/
onRotate?: (dAngle: number) => void;
/**
* Called when the fingers has swiped on screen
* @param orientation: the orientation of this swipe
*/
onSwipe?: (orientation: SwipeOrientation) => void;
/**
* Called when the finger touch down on the screen
* @param x: the value of event occurs on the x-axis
* @param y: the value of event occurs on the y-axis
*/
2021-09-23 15:42:06 +08:00
onTouchDown?: (event: {
x: number;
y: number;
}) => void;
/**
* Called when the finger moving on the screen
* @param x: the value of event occurs on the x-axis
* @param y: the value of event occurs on the y-axis
*/
2021-09-23 15:42:06 +08:00
onTouchMove?: (event: {
x: number;
y: number;
}) => void;
/**
* Called when the finger touch up off from the screen
* @param x: the value of event occurs on the x-axis
* @param y: the value of event occurs on the y-axis
*/
2021-09-23 15:42:06 +08:00
onTouchUp?: (event: {
x: number;
y: number;
}) => void;
/**
* Called when the finger leave from screen
* @param x: the value of event occurs on the x-axis
* @param y: the value of event occurs on the y-axis
*/
2021-09-23 15:42:06 +08:00
onTouchCancel?: (event: {
x: number;
y: number;
}) => void;
2021-09-22 10:28:02 +08:00
}
export function gestureContainer(views: View | View[], config?: Partial<GestureContainer>): GestureContainer;
}
2021-11-24 14:37:48 +08:00
declare module 'doric/lib/src/widget/effect' {
import { Stack } from "doric/lib/src/widget/layouts";
import { View } from "doric/lib/src/ui/view";
export class BlurEffect extends Stack {
/**
* Specify the effective rectangle.
* If not set, the default is the entire area.
*/
effectiveRect?: {
x: number;
y: number;
width: number;
height: number;
};
/**
* Specify the radius of blur effect.
2021-11-25 11:44:01 +08:00
* If not set, the default value is 15.
* Suggested value is from 1 to 25.
2021-11-24 14:37:48 +08:00
*/
radius?: number;
}
2021-11-25 12:00:58 +08:00
export class AeroEffect extends Stack {
/**
* Specify the effective rectangle.
* If not set, the default is the entire area.
*/
effectiveRect?: {
x: number;
y: number;
width: number;
height: number;
};
2021-11-25 16:30:29 +08:00
/**
* Specify the area of the view is lighter or darker than the underlying view.
* If not set, the default is light.
*/
style?: "light" | "dark" | "extraLight";
2021-11-25 12:00:58 +08:00
}
2021-11-24 14:37:48 +08:00
export function blurEffect(views: View | View[], config?: Partial<BlurEffect>): BlurEffect;
2021-11-25 12:00:58 +08:00
export function aeroEffect(views: View | View[], config?: Partial<AeroEffect>): AeroEffect;
2021-11-24 14:37:48 +08:00
}
2020-01-03 15:28:33 +08:00
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;
2020-01-03 15:28:33 +08:00
}) => Promise<any>;
confirm: (arg: string | {
title: string;
msg: string;
okLabel?: string;
cancelLabel?: string;
2020-01-03 15:28:33 +08:00
}) => Promise<any>;
prompt: (arg: {
title?: string;
msg?: string;
okLabel?: string;
cancelLabel?: string;
text?: string;
defaultText?: string;
2020-01-03 15:28:33 +08:00
}) => 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";
2020-01-03 15:28:33 +08:00
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>;
2020-04-30 14:53:09 +08:00
setCenter: (view: View) => Promise<any>;
2020-01-03 15:28:33 +08:00
};
}
declare module 'doric/lib/src/native/navigator' {
import { BridgeContext } from "doric/lib/src/runtime/global";
2020-09-04 18:22:45 +08:00
import { Panel } from "doric/lib/src/ui/panel";
2021-05-13 14:50:54 +08:00
import { ClassType } from "doric/lib/src/util/types";
2020-09-04 18:51:08 +08:00
export function internalScheme(context: BridgeContext, panelClass: ClassType<Panel>): string;
2020-01-03 15:28:33 +08:00
export function navigator(context: BridgeContext): {
2020-09-04 18:22:45 +08:00
push: (source: string | ClassType<Panel>, config?: {
2020-01-03 15:28:33 +08:00
alias?: string | undefined;
animated?: boolean | undefined;
extra?: object | undefined;
singlePage?: boolean | undefined;
2020-01-03 15:28:33 +08:00
} | undefined) => Promise<any>;
pop: (animated?: boolean) => Promise<any>;
popSelf: (animated?: boolean) => Promise<any>;
popToRoot: (animated?: boolean) => Promise<any>;
2020-04-01 15:19:37 +08:00
openUrl: (url: string) => Promise<any>;
2020-01-03 15:28:33 +08:00
};
}
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 {
2020-04-28 10:17:14 +08:00
data: string;
2020-01-03 15:28:33 +08:00
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>;
2020-01-03 15:28:33 +08:00
}
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;
2020-12-08 12:30:35 +08:00
permission?: string;
}) => Promise<any>;
subscribe: (args: {
2020-01-09 09:54:08 +08:00
biz?: string | undefined;
name: string;
callback: (data?: any) => void;
androidSystem?: boolean | undefined;
2020-12-08 12:30:35 +08:00
permission?: string | undefined;
}) => Promise<string>;
unsubscribe: (subscribeId: string) => Promise<any>;
};
}
2020-01-14 10:59:42 +08:00
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;
};
}
2020-03-19 14:32:42 +08:00
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;
}>;
};
}
2021-03-18 18:47:49 +08:00
declare module 'doric/lib/src/native/keyboard' {
import { BridgeContext } from "doric/lib/src/runtime/global";
export function keyboard(context: BridgeContext): {
subscribe: (callback: (data: {
oldBottomMargin: number;
oldHeight: number;
bottomMargin: number;
2021-03-18 18:47:49 +08:00
height: number;
}) => void) => Promise<string>;
unsubscribe: (subscribeId: string) => Promise<any>;
};
}
2021-11-18 16:38:35 +08:00
declare module 'doric/lib/src/native/resourceLoader' {
import { Resource } from "doric/lib/src/util/resource";
import { BridgeContext } from "doric/lib/src/runtime/global";
export function resourceLoader(context: BridgeContext): {
load: (resource: Resource) => Promise<ArrayBuffer>;
};
}
declare module 'doric/lib/src/native/imageDecoder' {
import { Resource } from "doric/lib/src/util/resource";
import { BridgeContext } from "doric/lib/src/runtime/global";
export function imageDecoder(context: BridgeContext): {
getImageInfo: (resource: Resource) => Promise<{
width: number;
height: number;
mimeType: string;
}>;
decodeToPixels: (resource: Resource) => Promise<ArrayBuffer>;
};
}
2020-01-03 15:28:33 +08:00
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 {
2020-05-09 10:50:07 +08:00
start?: Color;
end?: Color;
colors?: Array<Color>;
2020-05-09 17:44:04 +08:00
locations?: Array<Number>;
2020-01-03 15:28:33 +08:00
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;
2020-01-14 19:50:32 +08:00
static CenterX: Gravity;
static CenterY: Gravity;
2020-01-03 15:28:33 +08:00
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 {
2020-01-10 16:19:53 +08:00
/**
* 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
2020-01-03 15:28:33 +08:00
}
export interface LayoutConfig {
2020-01-10 16:19:53 +08:00
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;
2020-01-03 15:28:33 +08:00
}
export class LayoutConfigImpl implements LayoutConfig, Modeling {
2020-01-10 16:19:53 +08:00
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;
2020-01-10 16:19:53 +08:00
fit(): this;
2021-05-14 19:32:19 +08:00
fitWidth(): this;
fitHeight(): this;
2020-01-10 16:19:53 +08:00
most(): this;
2021-05-14 19:32:19 +08:00
mostWidth(): this;
mostHeight(): this;
2020-01-10 16:19:53 +08:00
just(): this;
2021-05-14 19:32:19 +08:00
justWidth(): this;
justHeight(): this;
2020-01-10 16:19:53 +08:00
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;
2020-01-10 16:19:53 +08:00
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;
};
2020-01-03 15:28:33 +08:00
}
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/uniqueId' {
export function uniqueId(prefix: string): string;
}
2020-04-09 20:01:22 +08:00
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);
2020-04-09 20:01:22 +08:00
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 {};
}
2021-09-01 10:47:40 +08:00
declare module 'doric/lib/src/util/jsx' {
2021-09-02 12:03:19 +08:00
import { Group, View } from "doric/lib/src/ui/view";
2021-09-01 10:47:40 +08:00
import { ClassType } from "doric/lib/src/util/types";
2021-09-02 12:03:19 +08:00
export namespace jsx {
2021-09-03 13:42:25 +08:00
function createElement<T extends View>(constructor: ClassType<T>, config: Partial<T> | null, ...children: any[]): any[] | T;
2021-09-02 12:03:19 +08:00
class Fragment extends Group {
}
}
2021-09-01 10:47:40 +08:00
global {
namespace JSX {
2021-09-03 13:42:25 +08:00
interface Element extends View {
2021-09-01 10:47:40 +08:00
}
interface ElementClass extends View {
}
interface ElementAttributesProperty {
props: {};
}
interface ElementChildrenAttribute {
2021-09-03 13:42:25 +08:00
innerElement: any;
}
interface IntrinsicElements {
2021-09-01 10:47:40 +08:00
}
}
}
}
2021-10-22 17:00:00 +08:00
declare module 'doric/lib/src/util/resource' {
import { Modeling } from "doric/lib/src/util/types";
export abstract class Resource implements Modeling {
type: string;
identifier: string;
resId: string;
2021-10-22 17:00:00 +08:00
constructor(type: string, identifier: string);
toModel(): {
resId: string;
2021-10-22 17:00:00 +08:00
type: string;
identifier: string;
};
}
2021-10-25 16:01:44 +08:00
export class LocalResource extends Resource {
2021-10-22 17:00:00 +08:00
constructor(path: string);
}
export class RemoteResource extends Resource {
constructor(url: string);
}
export class Base64Resource extends Resource {
2021-10-25 16:01:44 +08:00
constructor(content: string);
2021-10-22 17:00:00 +08:00
}
2021-12-07 18:38:05 +08:00
/**
* Resources belong to assets dir.
*/
2021-12-07 19:13:42 +08:00
export class AssetsResource extends Resource {
2021-12-07 18:38:05 +08:00
constructor(content: string);
}
export class AndroidResource extends Resource {
}
export class iOSResource extends Resource {
}
2021-10-22 17:00:00 +08:00
/**
* This is for android platform
*/
2021-12-07 18:38:05 +08:00
export class DrawableResource extends AndroidResource {
2021-10-25 16:01:44 +08:00
constructor(name: string);
2021-10-22 17:00:00 +08:00
}
2021-12-07 18:38:05 +08:00
export class RawResource extends AndroidResource {
2021-10-25 16:01:44 +08:00
constructor(name: string);
2021-10-22 17:00:00 +08:00
}
2021-12-07 18:38:05 +08:00
export class AndroidAssetsResource extends AndroidResource {
2021-10-22 17:00:00 +08:00
constructor(path: string);
}
/**
* This is for iOS platform
*/
2021-12-07 18:38:05 +08:00
export class MainBundleResource extends iOSResource {
2021-10-25 16:51:45 +08:00
constructor(fileName: string);
}
2021-12-07 18:38:05 +08:00
export class BundleResource extends iOSResource {
2021-10-25 16:51:45 +08:00
constructor(bundleName: string, fileName: string);
2021-10-22 17:00:00 +08:00
}
export class ArrayBufferResource extends Resource {
data: ArrayBuffer;
constructor(data: ArrayBuffer);
toModel(): {
data: ArrayBuffer;
resId: string;
type: string;
identifier: string;
};
}
2021-10-22 17:00:00 +08:00
}
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>;
}
}
2021-05-13 14:50:54 +08:00
declare module 'doric/lib/src/pattern/mvvm' {
import { Group } from "doric/lib/src/ui/view";
import { Panel } from "doric/lib/src/ui/panel";
import { BridgeContext } from "doric/lib/src/runtime/global";
import { ClassType } from "doric/lib/src/util/types";
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> {
context: BridgeContext;
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 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;
}
}
2021-05-13 16:26:48 +08:00
declare module 'doric/lib/src/pattern/modular' {
import { Panel } from "doric/lib/src/ui/panel";
import { Group } from "doric/lib/src/ui/view";
import { ClassType } from "doric/lib/src/util/types";
import { ViewHolder, ViewModel } from "doric/lib/src/pattern/mvvm";
2021-05-14 13:14:54 +08:00
import { Provider } from "doric/lib/src/pattern/provider";
2021-05-13 16:57:21 +08:00
export abstract class Module extends Panel {
superPanel?: ModularPanel;
__provider?: Provider;
get provider(): Provider | undefined;
set provider(provider: Provider | undefined);
mount(): void;
unmount(): void;
get mounted(): boolean;
/**
* Dispatch message to other modules.
* @param message which is sent out
*/
dispatchMessage(message: any): void;
/**
* Dispatched messages can be received by override this method.
* @param message recevied message
*/
onMessage(message: any): void;
/**
* Called when this module is mounted
*/
onMounted(): void;
/**
* Called when this module is unmounted
*/
onUnmounted(): void;
}
export abstract class VMModule<M extends Object, V extends ViewHolder> extends Module {
abstract getViewModelClass(): ClassType<ViewModel<M, V>>;
abstract getState(): M;
abstract getViewHolderClass(): ClassType<V>;
getViewModel(): ViewModel<M, V> | undefined;
build(root: Group): void;
2021-05-13 16:57:21 +08:00
}
export abstract class ModularPanel extends Module {
constructor();
2021-05-18 17:21:09 +08:00
/**
* @returns Class list of current submodules
*/
abstract setupModules(): ClassType<Panel>[];
2021-05-18 17:21:09 +08:00
/**
* @param root Current module's rootview
* @returns provided for submodules as their rootview
*/
abstract setupShelf(root: Group): Group;
dispatchMessage(message: any): void;
get mountedModules(): Panel[];
onMessage(message: any): void;
onStructureChanged(module: Module, mounted: boolean): void;
build(root: Group): void;
onCreate(): void;
onDestroy(): void;
onShow(): void;
onHidden(): void;
onRenderFinished(): void;
2021-05-13 16:26:48 +08:00
}
}
2020-04-20 19:18:44 +08:00
declare module '*.png' {
const value: any;
export default value;
}