From 3d021754a265437c43f176d93a6110ea2e5ac888 Mon Sep 17 00:00:00 2001 From: "pengfei.zhou" Date: Fri, 3 Jan 2020 15:28:33 +0800 Subject: [PATCH] add dts bundle to package .d.ts --- doric-js/dts-bundle.json | 6 + doric-js/index.d.ts | 1054 ++++++++++++++++++++++++++++++++++++++ doric-js/package.json | 7 +- 3 files changed, 1064 insertions(+), 3 deletions(-) create mode 100644 doric-js/dts-bundle.json create mode 100644 doric-js/index.d.ts diff --git a/doric-js/dts-bundle.json b/doric-js/dts-bundle.json new file mode 100644 index 00000000..5df79699 --- /dev/null +++ b/doric-js/dts-bundle.json @@ -0,0 +1,6 @@ +{ + "name": "doric", + "baseDir": "./", + "main": "lib/index.d.ts", + "out": "./index.d.ts" +} \ No newline at end of file diff --git a/doric-js/index.d.ts b/doric-js/index.d.ts new file mode 100644 index 00000000..6f850071 --- /dev/null +++ b/doric-js/index.d.ts @@ -0,0 +1,1054 @@ +// Generated by dts-bundle v0.7.3 +// Dependencies for this module: +// reflect-metadata + +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 * from 'reflect-metadata'; + export type BridgeContext = { + [index: string]: { + [index: string]: (args?: any) => Promise; + }; + }; + global { + const context: BridgeContext; + const Environment: { + platform: "Android" | "iOS" | "Qt" | "h5"; + platformVersion: string; + appName: string; + appVersion: string; + libVersion: string; + screenWidth: number; + screenHeight: number; + }; + 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'; +} + +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'; +} + +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'; +} + +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"; + export 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; + } + export 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; + 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: { + id: string; + type: string; + props: { + [index: string]: Model; + }; + }; + onPropertyChanged(propKey: string, oldV: Model, newV: Model): void; + clean(): void; + isDirty(): boolean; + responseCallback(id: string, ...args: any): any; + toModel(): { + id: string; + type: string; + props: { + [index: string]: Model; + }; + }; + let(block: (it: this) => void): void; + also(block: (it: this) => void): this; + apply(config: IView): this; + in(group: Group): this; + nativeChannel(context: any, name: string): (args?: any) => Promise; + getWidth(context: BridgeContext): Promise; + getHeight(context: BridgeContext): Promise; + getLocationOnScreen(context: BridgeContext): Promise<{ + x: number; + y: number; + }>; + /**++++++++++transform++++++++++*/ + translationX?: number; + translationY?: number; + scaleX?: number; + scaleY?: number; + pivotX?: number; + pivotY?: number; + rotation?: number; + /**----------transform----------*/ + doAnimation(context: BridgeContext, animation: IAnimation): Promise; + } + export abstract class Superview extends View { + subviewById(id: string): View | undefined; + abstract allSubviews(): Iterable; + isDirty(): boolean; + clean(): void; + toModel(): { + id: string; + type: string; + props: { + [index: string]: Model; + }; + }; + } + export abstract class Group extends Superview { + readonly children: View[]; + allSubviews(): View[]; + addChild(view: View): 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(v: View): void; + allHeadViews(): IterableIterator; + removeHeadView(v: View | string): void; + clearHeadViews(): void; + getRootView(): Root; + getInitData(): object | undefined; + } +} + +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"; + 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; + 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 AnimationSet implements IAnimation { + _duration: number; + 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, IView, View } from "doric/lib/src/ui/view"; + import { Gravity } from "doric/lib/src/util/gravity"; + export interface IStack extends IView { + } + export class Stack extends Group implements IStack { + } + export class Root extends Stack { + } + class LinearLayout extends Group { + space?: number; + gravity?: Gravity; + } + export interface IVLayout extends IView { + space?: number; + gravity?: Gravity; + } + export class VLayout extends LinearLayout implements VLayout { + } + export interface IHLayout extends IView { + space?: number; + gravity?: Gravity; + } + export class HLayout extends LinearLayout implements IHLayout { + } + export function stack(views: View[]): Stack; + export function hlayout(views: View[]): HLayout; + export function vlayout(views: View[]): VLayout; + export {}; +} + +declare module 'doric/lib/src/widget/text' { + import { IView, View } from "doric/lib/src/ui/view"; + import { Color } from "doric/lib/src/util/color"; + import { Gravity } from "doric/lib/src/util/gravity"; + export interface IText extends IView { + text?: string; + textColor?: Color; + textSize?: number; + maxLines?: number; + textAlignment?: Gravity; + } + export class Text extends View implements IText { + text?: string; + textColor?: Color; + textSize?: number; + maxLines?: number; + textAlignment?: Gravity; + } + export function text(config: IText): Text; +} + +declare module 'doric/lib/src/widget/image' { + import { IView, View } from "doric/lib/src/ui/view"; + export enum ScaleType { + ScaleToFill = 0, + ScaleAspectFit = 1, + ScaleAspectFill = 2 + } + export interface IImage extends IView { + imageUrl?: string; + imageBase64?: string; + scaleType?: ScaleType; + isBlur?: boolean; + loadCallback?: (image: { + width: number; + height: number; + } | undefined) => void; + } + export class Image extends View implements IImage { + imageUrl?: string; + imageBase64?: string; + scaleType?: ScaleType; + isBlur?: boolean; + loadCallback?: (image: { + width: number; + height: number; + } | undefined) => void; + } + export function image(config: IImage): Image; +} + +declare module 'doric/lib/src/widget/list' { + import { View, Superview, IView } from "doric/lib/src/ui/view"; + import { Stack } from "doric/lib/src/widget/layouts"; + export class ListItem extends Stack { + /** + * Set to reuse native view + */ + identifier?: string; + } + export interface IList extends IView { + renderItem: (index: number) => ListItem; + itemCount: number; + batchCount?: number; + } + export class List extends Superview implements IList { + allSubviews(): IterableIterator | ListItem[]; + itemCount: number; + renderItem: (index: number) => ListItem; + batchCount: number; + onLoadMore?: () => void; + loadMore?: boolean; + loadMoreView?: ListItem; + reset(): void; + isDirty(): boolean; + toModel(): { + id: string; + type: string; + props: { + [index: string]: import("../..").Model; + }; + }; + } + export function list(config: IList): List; + export function listItem(item: View): ListItem; +} + +declare module 'doric/lib/src/widget/slider' { + import { Superview, View, IView } 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 interface ISlider extends IView { + renderPage: (index: number) => SlideItem; + itemCount: number; + batchCount?: number; + onPageSlided?: (index: number) => void; + } + export class Slider extends Superview implements ISlider { + allSubviews(): IterableIterator; + itemCount: number; + renderPage: (index: number) => SlideItem; + batchCount: number; + onPageSlided?: (index: number) => void; + isDirty(): boolean; + slidePage(context: BridgeContext, page: number, smooth?: boolean): Promise; + getSlidedPage(context: BridgeContext): Promise; + } + export function slideItem(item: View): SlideItem; + export function slider(config: ISlider): Slider; +} + +declare module 'doric/lib/src/widget/scroller' { + import { Superview, View, IView } from 'doric/lib/src/ui/view'; + export function scroller(content: View): Scroller; + export interface IScroller extends IView { + content: View; + } + export class Scroller extends Superview implements IScroller { + content: View; + allSubviews(): View[]; + toModel(): { + id: string; + type: string; + props: { + [index: string]: import("../..").Model; + }; + }; + } +} + +declare module 'doric/lib/src/widget/refreshable' { + import { View, Superview, IView } from "doric/lib/src/ui/view"; + import { List } from "doric/lib/src/widget/list"; + import { Scroller } from "doric/lib/src/widget/scroller"; + import { BridgeContext } from "doric/lib/src/runtime/global"; + export interface IRefreshable extends IView { + content: View; + header?: View; + onRefresh?: () => void; + } + export class Refreshable extends Superview implements IRefreshable { + content: List | Scroller; + header?: View; + onRefresh?: () => void; + allSubviews(): View[]; + setRefreshable(context: BridgeContext, refreshable: boolean): Promise; + setRefreshing(context: BridgeContext, refreshing: boolean): Promise; + isRefreshable(context: BridgeContext): Promise; + isRefreshing(context: BridgeContext): Promise; + toModel(): { + id: string; + type: string; + props: { + [index: string]: import("../..").Model; + }; + }; + } + export function refreshable(config: IRefreshable): 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 { IView, Superview, View } from 'doric/lib/src/ui/view'; + export class FlowLayoutItem extends Stack { + /** + * Set to reuse native view + */ + identifier?: string; + } + export interface IFlowLayout extends IView { + renderItem: (index: number) => FlowLayoutItem; + itemCount: number; + batchCount?: number; + columnCount?: number; + columnSpace?: number; + rowSpace?: number; + } + export class FlowLayout extends Superview implements IFlowLayout { + allSubviews(): IterableIterator | FlowLayoutItem[]; + columnCount: number; + columnSpace?: number; + rowSpace?: number; + itemCount: number; + renderItem: (index: number) => FlowLayoutItem; + batchCount: number; + onLoadMore?: () => void; + loadMore?: boolean; + loadMoreView?: FlowLayoutItem; + reset(): void; + isDirty(): boolean; + toModel(): { + id: string; + type: string; + props: { + [index: string]: import("../util/types").Model; + }; + }; + } + export function flowlayout(config: IFlowLayout): FlowLayout; + export function flowItem(item: View): FlowLayoutItem; +} + +declare module 'doric/lib/src/widget/input' { + import { View, IView } 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 interface IInput extends IView { + text?: string; + textColor?: Color; + textSize?: number; + hintText?: string; + hintTextColor?: Color; + multilines?: boolean; + textAlignment?: Gravity; + onTextChange?: (text: string) => void; + onFocusChange?: (focused: boolean) => void; + } + export class Input extends View implements IInput { + text?: string; + textColor?: Color; + textSize?: number; + hintText?: string; + hintTextColor?: Color; + multiline?: boolean; + textAlignment?: Gravity; + onTextChange?: (text: string) => void; + onFocusChange?: (focused: boolean) => void; + getText(context: BridgeContext): Promise; + setSelection(context: BridgeContext, start: number, end?: number): Promise; + requestFocus(context: BridgeContext): Promise; + releaseFocus(context: BridgeContext): Promise; + } + export function input(config: IInput): 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; + getSlidedPage(context: BridgeContext): Promise; + } +} + +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 | undefined; + }) => Promise; + confirm: (arg: string | { + title: string; + msg: string; + okLabel?: string | undefined; + cancelLabel?: string | undefined; + }) => Promise; + prompt: (arg: { + title?: string | undefined; + msg?: string | undefined; + okLabel?: string | undefined; + cancelLabel?: string | undefined; + text?: string | undefined; + defaultText?: string | undefined; + }) => Promise; + }; +} + +declare module 'doric/lib/src/native/navbar' { + import { BridgeContext } from "doric/lib/src/runtime/global"; + import { Color } from "doric/lib/src/util/color"; + export function navbar(context: BridgeContext): { + isHidden: () => Promise; + setHidden: (hidden: boolean) => Promise; + setTitle: (title: string) => Promise; + setBgColor: (color: Color) => Promise; + }; +} + +declare module 'doric/lib/src/native/navigator' { + import { BridgeContext } from "doric/lib/src/runtime/global"; + export function navigator(context: BridgeContext): { + push: (scheme: string, config?: { + alias?: string | undefined; + animated?: boolean | undefined; + extra?: object | undefined; + } | undefined) => Promise; + pop: (animated?: boolean) => Promise; + }; +} + +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: any; + status: number; + headers?: { + [index: string]: string; + }; + } + export function network(context: BridgeContext): { + request: (config: IRequest) => Promise; + get: (url: string, config?: IRequest | undefined) => Promise; + post: (url: string, data?: string | object | undefined, config?: IRequest | undefined) => Promise; + put: (url: string, data?: string | object | undefined, config?: IRequest | undefined) => Promise; + delete: (url: string, data?: string | object | undefined, config?: IRequest | undefined) => Promise; + }; +} + +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; + getItem: (key: string, zone?: string | undefined) => Promise; + remove: (key: string, zone?: string | undefined) => Promise; + clear: (zone: string) => Promise; + }; +} + +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; + dismiss: (view?: View | undefined) => Promise; + }; +} + +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; +} + +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; + 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 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; + } + export class LayoutConfigImpl implements LayoutConfig, Modeling { + widthSpec?: LayoutSpec; + heightSpec?: LayoutSpec; + margin?: { + left?: number; + right?: number; + top?: number; + bottom?: number; + }; + alignment?: Gravity; + weight?: 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; + 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 = (v: T) => void; + export class Mutable { + get: () => T; + set: (v: T) => void; + bind(binder: Binder): void; + static of(v: E): Mutable; + } + export {}; +} + +declare module 'doric/lib/src/util/uniqueId' { + export function uniqueId(prefix: string): string; +} + +declare module 'doric/lib/src/pattern/candies' { + export function take(target: T): (block: (p: T) => void) => void; + export function takeNonNull(target?: T): (block: (p: T) => R) => R | undefined; + export function takeNull(target?: T): (block: () => R) => R | undefined; + export function takeLet(target: T): (block: (p: T) => R | undefined) => R | undefined; + export function takeAlso(target: T): (block: (p: T) => void) => T; + export function takeIf(target: T): (predicate: (t: T) => boolean) => T | undefined; + export function takeUnless(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 = (v: T) => void; + export type Updater = (v: T) => T; + export interface IObservable { + addObserver(observer: Observer): void; + removeObserver(observer: Observer): void; + update(updater: Updater): void; + } + export class Observable implements IObservable { + constructor(provider: IProvider, clz: { + new (...args: any[]): M; + }); + addObserver(observer: Observer): void; + removeObserver(observer: Observer): void; + update(updater: Updater): void; + } + export interface IProvider { + provide(obj: Object): void; + acquire(clz: { + new (...args: any[]): T; + }): T | undefined; + remove(clz: { + new (...args: any[]): T; + }): void; + clear(): void; + observe(clz: { + new (...args: any[]): T; + }): Observable; + } + export class Provider implements IProvider { + provide(obj: Object): void; + acquire(clz: { + new (...args: any[]): T; + }): T | undefined; + remove(clz: new (...args: any[]) => T): void; + clear(): void; + observe(clz: new (...args: any[]) => T): Observable; + } +} + +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 = (state: M) => void; + export abstract class ViewModel { + constructor(obj: M, v: V); + getState(): M; + updateState(setter: Setter): void; + attach(view: Group): void; + abstract onAttached(state: M, vh: V): void; + abstract onBind(state: M, vh: V): void; + } + export type ViewModelClass = new (m: M, v: V) => ViewModel; + export type ViewHolderClass = new () => V; + export abstract class VMPanel extends Panel { + abstract getViewModelClass(): ViewModelClass; + abstract getState(): M; + abstract getViewHolderClass(): ViewHolderClass; + getViewModel(): ViewModel | undefined; + build(root: Group): void; + } +} + diff --git a/doric-js/package.json b/doric-js/package.json index 1bebea52..a2f62b50 100644 --- a/doric-js/package.json +++ b/doric-js/package.json @@ -1,6 +1,6 @@ { "name": "doric", - "version": "0.2.2-alpha.0", + "version": "0.2.2-alpha.1", "description": "The JS Framework of Doric", "main": "bundle/doric-vm.js", "types": "./lib/index.d.ts", @@ -9,7 +9,7 @@ "build": "tsc -d -p .&& rollup -c", "dev": "tsc -w -p . & rollup -c -w", "clean": "rm -rf build && rm -rf bundle", - "prepublish": "npm run build" + "prepublish": "npm run build && dts-bundle --configJson dts-bundle.json" }, "repository": { "type": "https", @@ -22,10 +22,11 @@ }, "homepage": "https://github.com/doric-pub/doric#readme", "dependencies": { + "@rollup/plugin-node-resolve": "^6.0.0", "@types/ws": "^6.0.4", + "dts-bundle": "^0.7.3", "reflect-metadata": "^0.1.13", "rollup": "^1.27.14", - "@rollup/plugin-node-resolve": "^6.0.0", "tslib": "^1.10.0", "typescript": "^3.7.4", "ws": "^7.2.1"