diff --git a/doric-android/doric/src/main/java/pub/doric/shader/LinearNode.java b/doric-android/doric/src/main/java/pub/doric/shader/LinearNode.java index 00f8a987..924b1db9 100644 --- a/doric-android/doric/src/main/java/pub/doric/shader/LinearNode.java +++ b/doric-android/doric/src/main/java/pub/doric/shader/LinearNode.java @@ -20,12 +20,12 @@ import android.graphics.drawable.ShapeDrawable; import android.view.ViewGroup; import android.widget.LinearLayout; -import pub.doric.DoricContext; -import pub.doric.utils.DoricUtils; - import com.github.pengfeizhou.jscore.JSObject; import com.github.pengfeizhou.jscore.JSValue; +import pub.doric.DoricContext; +import pub.doric.utils.DoricUtils; + /** * @Description: com.github.penfeizhou.doric.shader * @Author: pengfei.zhou @@ -94,7 +94,9 @@ public class LinearNode extends GroupNode { @Override protected LinearLayout build() { - return new MaximumLinearLayout(getContext()); + LinearLayout linearLayout= new MaximumLinearLayout(getContext()); + linearLayout.setBaselineAligned(false); + return linearLayout; } @Override diff --git a/doric-demo/src/TextDemo.ts b/doric-demo/src/TextDemo.ts index dcd5a5e6..a094ba8b 100644 --- a/doric-demo/src/TextDemo.ts +++ b/doric-demo/src/TextDemo.ts @@ -1,4 +1,4 @@ -import { Panel, Group, scroller, vlayout, layoutConfig, LayoutSpec, Input, Gravity, log, input, text, Color, Text, InputType } from "doric"; +import { Panel, Group, scroller, vlayout, layoutConfig, LayoutSpec, Input, Gravity, log, input, text, Color, Text, InputType, hlayout } from "doric"; import { title } from "./utils"; @Entry class TextDemo extends Panel { @@ -8,41 +8,40 @@ class TextDemo extends Panel { [ title("Text Demo"), input({ - width : 100, - height:100, + width: 100, + height: 100, inputType: InputType.Number, - hintText: "number" + hintText: "number" + }), + hlayout([ + text({ + text: "size 10", + textSize: 10, + backgroundColor: Color.GREEN + }), + text({ + text: "size 25", + textSize: 25, + backgroundColor: Color.BLUE + }), + text({ + text: "size 18", + textSize: 18, + backgroundColor: Color.LTGRAY, + }) + ], { + backgroundColor: Color.RED, + height: 50, + gravity: Gravity.CenterX, + layoutConfig: layoutConfig().configWidth(LayoutSpec.MOST).configHeight(LayoutSpec.JUST), }), - - // input({ - // width : 100, - // height:100, - // inputType: InputType.NumberSigned, - // hintText: "NumberSigned" - // }), - - // input({ - // width : 100, - // height:100, - // inputType: InputType.Alphabet, - // hintText: "Alphabet" - // }), - - // input({ - // width : 100, - // height:100, - // inputType: InputType.Phone, - // hintText: "Phone" - - // }), - text({ text: "This is normal text", }), text({ text: "This is normal text with shadow ", textSize: 20, - shadow: { + shadow: { color: Color.parse("#1DD6DE"), offsetX: 0, offsetY: 1, diff --git a/doric-js/bundle/doric-lib.js b/doric-js/bundle/doric-lib.js index 93ca4785..34fa5d96 100644 --- a/doric-js/bundle/doric-lib.js +++ b/doric-js/bundle/doric-lib.js @@ -128,278 +128,275 @@ var __metadata = (undefined && undefined.__metadata) || function (k, v) { function Property(target, propKey) { Reflect.defineMetadata(propKey, true, target); } -let View = /** @class */ (() => { - class View { - constructor() { - this.width = 0; - this.height = 0; - this.x = 0; - this.y = 0; - this.viewId = uniqueId('ViewId'); - this.callbacks = new Map; - /** Anchor end*/ - this.__dirty_props__ = {}; - this.nativeViewModel = { - id: this.viewId, - type: this.constructor.name, - props: this.__dirty_props__, - }; - return new Proxy(this, { - get: (target, p, receiver) => { - return Reflect.get(target, p, receiver); - }, - set: (target, p, v, receiver) => { - const oldV = Reflect.get(target, p, receiver); - const ret = Reflect.set(target, p, v, receiver); - if (Reflect.getMetadata(p, target) && oldV !== v) { - receiver.onPropertyChanged(p.toString(), oldV, v); - } - return ret; +class View { + constructor() { + this.width = 0; + this.height = 0; + this.x = 0; + this.y = 0; + this.viewId = uniqueId('ViewId'); + this.callbacks = new Map; + /** Anchor end*/ + this.__dirty_props__ = {}; + this.nativeViewModel = { + id: this.viewId, + type: this.constructor.name, + props: this.__dirty_props__, + }; + return new Proxy(this, { + get: (target, p, receiver) => { + return Reflect.get(target, p, receiver); + }, + set: (target, p, v, receiver) => { + const oldV = Reflect.get(target, p, receiver); + const ret = Reflect.set(target, p, v, receiver); + if (Reflect.getMetadata(p, target) && oldV !== v) { + receiver.onPropertyChanged(p.toString(), oldV, v); } - }); - } - callback2Id(f) { - const id = uniqueId('Function'); - this.callbacks.set(id, f); - return id; - } - id2Callback(id) { - let f = this.callbacks.get(id); - if (f === undefined) { - f = Reflect.get(this, id); + return ret; } - return f; + }); + } + callback2Id(f) { + const id = uniqueId('Function'); + this.callbacks.set(id, f); + return id; + } + id2Callback(id) { + let f = this.callbacks.get(id); + if (f === undefined) { + f = Reflect.get(this, id); } - /** Anchor start*/ - get left() { - return this.x; + return f; + } + /** Anchor start*/ + get left() { + return this.x; + } + set left(v) { + this.x = v; + } + get right() { + return this.x + this.width; + } + set right(v) { + this.x = v - this.width; + } + get top() { + return this.y; + } + set top(v) { + this.y = v; + } + get bottom() { + return this.y + this.height; + } + set bottom(v) { + this.y = v - this.height; + } + get centerX() { + return this.x + this.width / 2; + } + get centerY() { + return this.y + this.height / 2; + } + set centerX(v) { + this.x = v - this.width / 2; + } + set centerY(v) { + this.y = v - this.height / 2; + } + get dirtyProps() { + return this.__dirty_props__; + } + onPropertyChanged(propKey, oldV, newV) { + if (newV instanceof Function) { + newV = this.callback2Id(newV); } - set left(v) { - this.x = v; + else { + newV = obj2Model(newV); } - get right() { - return this.x + this.width; - } - set right(v) { - this.x = v - this.width; - } - get top() { - return this.y; - } - set top(v) { - this.y = v; - } - get bottom() { - return this.y + this.height; - } - set bottom(v) { - this.y = v - this.height; - } - get centerX() { - return this.x + this.width / 2; - } - get centerY() { - return this.y + this.height / 2; - } - set centerX(v) { - this.x = v - this.width / 2; - } - set centerY(v) { - this.y = v - this.height / 2; - } - get dirtyProps() { - return this.__dirty_props__; - } - onPropertyChanged(propKey, oldV, newV) { - if (newV instanceof Function) { - newV = this.callback2Id(newV); + this.__dirty_props__[propKey] = newV; + } + clean() { + for (const key in this.__dirty_props__) { + if (Reflect.has(this.__dirty_props__, key)) { + Reflect.deleteProperty(this.__dirty_props__, key); } - else { - newV = obj2Model(newV); - } - this.__dirty_props__[propKey] = newV; - } - clean() { - for (const key in this.__dirty_props__) { - if (Reflect.has(this.__dirty_props__, key)) { - Reflect.deleteProperty(this.__dirty_props__, key); - } - } - } - isDirty() { - return Reflect.ownKeys(this.__dirty_props__).length !== 0; - } - responseCallback(id, ...args) { - const f = this.id2Callback(id); - if (f instanceof Function) { - const argumentsList = []; - for (let i = 1; i < arguments.length; i++) { - argumentsList.push(arguments[i]); - } - return Reflect.apply(f, this, argumentsList); - } - else { - loge(`Cannot find callback:${id} for ${JSON.stringify(this.toModel())}`); - } - } - toModel() { - return this.nativeViewModel; - } - let(block) { - block(this); - } - also(block) { - block(this); - return this; - } - apply(config) { - for (let key in config) { - Reflect.set(this, key, Reflect.get(config, key, config), this); - } - return this; - } - in(group) { - group.addChild(this); - return this; - } - nativeChannel(context, name) { - let thisView = this; - return function (args = undefined) { - const viewIds = []; - while (thisView != undefined) { - viewIds.push(thisView.viewId); - thisView = thisView.superview; - } - const params = { - viewIds: viewIds.reverse(), - name, - args, - }; - return context.callNative('shader', 'command', params); - }; - } - getWidth(context) { - return this.nativeChannel(context, 'getWidth')(); - } - getHeight(context) { - return this.nativeChannel(context, 'getHeight')(); - } - getX(context) { - return this.nativeChannel(context, 'getX')(); - } - getY(context) { - return this.nativeChannel(context, 'getY')(); - } - getLocationOnScreen(context) { - return this.nativeChannel(context, "getLocationOnScreen")(); - } - doAnimation(context, animation) { - return this.nativeChannel(context, "doAnimation")(animation.toModel()).then((args) => { - for (let key in args) { - Reflect.set(this, key, Reflect.get(args, key, args), this); - Reflect.deleteProperty(this.__dirty_props__, key); - } - }); } } - __decorate([ - Property, - __metadata("design:type", Number) - ], View.prototype, "width", void 0); - __decorate([ - Property, - __metadata("design:type", Number) - ], View.prototype, "height", void 0); - __decorate([ - Property, - __metadata("design:type", Number) - ], View.prototype, "x", void 0); - __decorate([ - Property, - __metadata("design:type", Number) - ], View.prototype, "y", void 0); - __decorate([ - Property, - __metadata("design:type", Object) - ], View.prototype, "backgroundColor", void 0); - __decorate([ - Property, - __metadata("design:type", Object) - ], View.prototype, "corners", void 0); - __decorate([ - Property, - __metadata("design:type", Object) - ], View.prototype, "border", void 0); - __decorate([ - Property, - __metadata("design:type", Object) - ], View.prototype, "shadow", void 0); - __decorate([ - Property, - __metadata("design:type", Number) - ], View.prototype, "alpha", void 0); - __decorate([ - Property, - __metadata("design:type", Boolean) - ], View.prototype, "hidden", void 0); - __decorate([ - Property, - __metadata("design:type", Object) - ], View.prototype, "padding", void 0); - __decorate([ - Property, - __metadata("design:type", Object) - ], View.prototype, "layoutConfig", void 0); - __decorate([ - Property, - __metadata("design:type", Function) - ], View.prototype, "onClick", void 0); - __decorate([ - Property, - __metadata("design:type", Number) - ], View.prototype, "translationX", void 0); - __decorate([ - Property, - __metadata("design:type", Number) - ], View.prototype, "translationY", void 0); - __decorate([ - Property, - __metadata("design:type", Number) - ], View.prototype, "scaleX", void 0); - __decorate([ - Property, - __metadata("design:type", Number) - ], View.prototype, "scaleY", void 0); - __decorate([ - Property, - __metadata("design:type", Number) - ], View.prototype, "pivotX", void 0); - __decorate([ - Property, - __metadata("design:type", Number) - ], View.prototype, "pivotY", void 0); - __decorate([ - Property, - __metadata("design:type", Number) - ], View.prototype, "rotation", void 0); - __decorate([ - Property, - __metadata("design:type", Number) - ], View.prototype, "rotationX", void 0); - __decorate([ - Property, - __metadata("design:type", Number) - ], View.prototype, "rotationY", void 0); - __decorate([ - Property, - __metadata("design:type", Number) - ], View.prototype, "perspective", void 0); - __decorate([ - Property, - __metadata("design:type", Object) - ], View.prototype, "flexConfig", void 0); - return View; -})(); + isDirty() { + return Reflect.ownKeys(this.__dirty_props__).length !== 0; + } + responseCallback(id, ...args) { + const f = this.id2Callback(id); + if (f instanceof Function) { + const argumentsList = []; + for (let i = 1; i < arguments.length; i++) { + argumentsList.push(arguments[i]); + } + return Reflect.apply(f, this, argumentsList); + } + else { + loge(`Cannot find callback:${id} for ${JSON.stringify(this.toModel())}`); + } + } + toModel() { + return this.nativeViewModel; + } + let(block) { + block(this); + } + also(block) { + block(this); + return this; + } + apply(config) { + for (let key in config) { + Reflect.set(this, key, Reflect.get(config, key, config), this); + } + return this; + } + in(group) { + group.addChild(this); + return this; + } + nativeChannel(context, name) { + let thisView = this; + return function (args = undefined) { + const viewIds = []; + while (thisView != undefined) { + viewIds.push(thisView.viewId); + thisView = thisView.superview; + } + const params = { + viewIds: viewIds.reverse(), + name, + args, + }; + return context.callNative('shader', 'command', params); + }; + } + getWidth(context) { + return this.nativeChannel(context, 'getWidth')(); + } + getHeight(context) { + return this.nativeChannel(context, 'getHeight')(); + } + getX(context) { + return this.nativeChannel(context, 'getX')(); + } + getY(context) { + return this.nativeChannel(context, 'getY')(); + } + getLocationOnScreen(context) { + return this.nativeChannel(context, "getLocationOnScreen")(); + } + doAnimation(context, animation) { + return this.nativeChannel(context, "doAnimation")(animation.toModel()).then((args) => { + for (let key in args) { + Reflect.set(this, key, Reflect.get(args, key, args), this); + Reflect.deleteProperty(this.__dirty_props__, key); + } + }); + } +} +__decorate([ + Property, + __metadata("design:type", Number) +], View.prototype, "width", void 0); +__decorate([ + Property, + __metadata("design:type", Number) +], View.prototype, "height", void 0); +__decorate([ + Property, + __metadata("design:type", Number) +], View.prototype, "x", void 0); +__decorate([ + Property, + __metadata("design:type", Number) +], View.prototype, "y", void 0); +__decorate([ + Property, + __metadata("design:type", Object) +], View.prototype, "backgroundColor", void 0); +__decorate([ + Property, + __metadata("design:type", Object) +], View.prototype, "corners", void 0); +__decorate([ + Property, + __metadata("design:type", Object) +], View.prototype, "border", void 0); +__decorate([ + Property, + __metadata("design:type", Object) +], View.prototype, "shadow", void 0); +__decorate([ + Property, + __metadata("design:type", Number) +], View.prototype, "alpha", void 0); +__decorate([ + Property, + __metadata("design:type", Boolean) +], View.prototype, "hidden", void 0); +__decorate([ + Property, + __metadata("design:type", Object) +], View.prototype, "padding", void 0); +__decorate([ + Property, + __metadata("design:type", Object) +], View.prototype, "layoutConfig", void 0); +__decorate([ + Property, + __metadata("design:type", Function) +], View.prototype, "onClick", void 0); +__decorate([ + Property, + __metadata("design:type", Number) +], View.prototype, "translationX", void 0); +__decorate([ + Property, + __metadata("design:type", Number) +], View.prototype, "translationY", void 0); +__decorate([ + Property, + __metadata("design:type", Number) +], View.prototype, "scaleX", void 0); +__decorate([ + Property, + __metadata("design:type", Number) +], View.prototype, "scaleY", void 0); +__decorate([ + Property, + __metadata("design:type", Number) +], View.prototype, "pivotX", void 0); +__decorate([ + Property, + __metadata("design:type", Number) +], View.prototype, "pivotY", void 0); +__decorate([ + Property, + __metadata("design:type", Number) +], View.prototype, "rotation", void 0); +__decorate([ + Property, + __metadata("design:type", Number) +], View.prototype, "rotationX", void 0); +__decorate([ + Property, + __metadata("design:type", Number) +], View.prototype, "rotationY", void 0); +__decorate([ + Property, + __metadata("design:type", Number) +], View.prototype, "perspective", void 0); +__decorate([ + Property, + __metadata("design:type", Object) +], View.prototype, "flexConfig", void 0); class Superview extends View { subviewById(id) { for (let v of this.allSubviews()) { @@ -481,67 +478,64 @@ const BOTTOM = (END | SPECIFIED) << SHIFT_Y; const CENTER_X = SPECIFIED << SHIFT_X; const CENTER_Y = SPECIFIED << SHIFT_Y; const CENTER = CENTER_X | CENTER_Y; -let Gravity = /** @class */ (() => { - class Gravity { - constructor() { - this.val = 0; - } - left() { - const val = this.val | LEFT; - const ret = new Gravity; - ret.val = val; - return ret; - } - right() { - const val = this.val | RIGHT; - const ret = new Gravity; - ret.val = val; - return ret; - } - top() { - const val = this.val | TOP; - const ret = new Gravity; - ret.val = val; - return ret; - } - bottom() { - const val = this.val | BOTTOM; - const ret = new Gravity; - ret.val = val; - return ret; - } - center() { - const val = this.val | CENTER; - const ret = new Gravity; - ret.val = val; - return ret; - } - centerX() { - const val = this.val | CENTER_X; - const ret = new Gravity; - ret.val = val; - return ret; - } - centerY() { - const val = this.val | CENTER_Y; - const ret = new Gravity; - ret.val = val; - return ret; - } - toModel() { - return this.val; - } +class Gravity { + constructor() { + this.val = 0; } - Gravity.origin = new Gravity; - Gravity.Center = Gravity.origin.center(); - Gravity.CenterX = Gravity.origin.centerX(); - Gravity.CenterY = Gravity.origin.centerY(); - Gravity.Left = Gravity.origin.left(); - Gravity.Right = Gravity.origin.right(); - Gravity.Top = Gravity.origin.top(); - Gravity.Bottom = Gravity.origin.bottom(); - return Gravity; -})(); + left() { + const val = this.val | LEFT; + const ret = new Gravity; + ret.val = val; + return ret; + } + right() { + const val = this.val | RIGHT; + const ret = new Gravity; + ret.val = val; + return ret; + } + top() { + const val = this.val | TOP; + const ret = new Gravity; + ret.val = val; + return ret; + } + bottom() { + const val = this.val | BOTTOM; + const ret = new Gravity; + ret.val = val; + return ret; + } + center() { + const val = this.val | CENTER; + const ret = new Gravity; + ret.val = val; + return ret; + } + centerX() { + const val = this.val | CENTER_X; + const ret = new Gravity; + ret.val = val; + return ret; + } + centerY() { + const val = this.val | CENTER_Y; + const ret = new Gravity; + ret.val = val; + return ret; + } + toModel() { + return this.val; + } +} +Gravity.origin = new Gravity; +Gravity.Center = Gravity.origin.center(); +Gravity.CenterX = Gravity.origin.centerX(); +Gravity.CenterY = Gravity.origin.centerY(); +Gravity.Left = Gravity.origin.left(); +Gravity.Right = Gravity.origin.right(); +Gravity.Top = Gravity.origin.top(); +Gravity.Bottom = Gravity.origin.bottom(); function gravity() { return new Gravity; } @@ -639,19 +633,16 @@ class Stack extends Group { } class Root extends Stack { } -let LinearLayout = /** @class */ (() => { - class LinearLayout extends Group { - } - __decorate$1([ - Property, - __metadata$1("design:type", Number) - ], LinearLayout.prototype, "space", void 0); - __decorate$1([ - Property, - __metadata$1("design:type", Gravity) - ], LinearLayout.prototype, "gravity", void 0); - return LinearLayout; -})(); +class LinearLayout extends Group { +} +__decorate$1([ + Property, + __metadata$1("design:type", Number) +], LinearLayout.prototype, "space", void 0); +__decorate$1([ + Property, + __metadata$1("design:type", Gravity) +], LinearLayout.prototype, "gravity", void 0); class VLayout extends LinearLayout { } class HLayout extends LinearLayout { @@ -728,234 +719,231 @@ function NativeCall(target, propertyKey, descriptor) { }; return descriptor; } -let Panel = /** @class */ (() => { - class Panel { - constructor() { - this.destroyed = false; - this.__root__ = new Root; - this.headviews = new Map; - this.onRenderFinishedCallback = []; - this.__rendering__ = false; +class Panel { + constructor() { + this.destroyed = false; + this.__root__ = new Root; + this.headviews = new Map; + this.onRenderFinishedCallback = []; + this.__rendering__ = false; + } + onCreate() { } + onDestroy() { } + onShow() { } + onHidden() { } + addHeadView(type, v) { + let map = this.headviews.get(type); + if (map) { + map.set(v.viewId, v); } - onCreate() { } - onDestroy() { } - onShow() { } - onHidden() { } - addHeadView(type, v) { + else { + map = new Map; + map.set(v.viewId, v); + this.headviews.set(type, map); + } + } + allHeadViews() { + return this.headviews.values(); + } + removeHeadView(type, v) { + if (this.headviews.has(type)) { let map = this.headviews.get(type); if (map) { - map.set(v.viewId, v); - } - else { - map = new Map; - map.set(v.viewId, v); - this.headviews.set(type, map); - } - } - allHeadViews() { - return this.headviews.values(); - } - removeHeadView(type, v) { - if (this.headviews.has(type)) { - let map = this.headviews.get(type); - if (map) { - if (v instanceof View) { - map.delete(v.viewId); - } - else { - map.delete(v); - } - } - } - } - clearHeadViews(type) { - if (this.headviews.has(type)) { - this.headviews.delete(type); - } - } - getRootView() { - return this.__root__; - } - getInitData() { - return this.__data__; - } - __init__(data) { - if (data) { - this.__data__ = JSON.parse(data); - } - } - __onCreate__() { - this.onCreate(); - } - __onDestroy__() { - this.destroyed = true; - this.onDestroy(); - } - __onShow__() { - this.onShow(); - } - __onHidden__() { - this.onHidden(); - } - __build__(frame) { - this.__root__.width = frame.width; - this.__root__.height = frame.height; - this.__root__.children.length = 0; - this.build(this.__root__); - } - __response__(viewIds, callbackId) { - const v = this.retrospectView(viewIds); - if (v === undefined) { - loge(`Cannot find view for ${viewIds}`); - } - else { - const argumentsList = [callbackId]; - for (let i = 2; i < arguments.length; i++) { - argumentsList.push(arguments[i]); - } - return Reflect.apply(v.responseCallback, v, argumentsList); - } - } - retrospectView(ids) { - return ids.reduce((acc, cur) => { - if (acc === undefined) { - if (cur === this.__root__.viewId) { - return this.__root__; - } - for (let map of this.headviews.values()) { - if (map.has(cur)) { - return map.get(cur); - } - } - return undefined; + if (v instanceof View) { + map.delete(v.viewId); } else { - if (Reflect.has(acc, "subviewById")) { - return Reflect.apply(Reflect.get(acc, "subviewById"), acc, [cur]); - } - return acc; + map.delete(v); } - }, undefined); + } } - nativeRender(model) { - return this.context.callNative("shader", "render", model); + } + clearHeadViews(type) { + if (this.headviews.has(type)) { + this.headviews.delete(type); } - hookBeforeNativeCall() { - if (Environment.platform !== 'web') { - this.__root__.clean(); + } + getRootView() { + return this.__root__; + } + getInitData() { + return this.__data__; + } + __init__(data) { + if (data) { + this.__data__ = JSON.parse(data); + } + } + __onCreate__() { + this.onCreate(); + } + __onDestroy__() { + this.destroyed = true; + this.onDestroy(); + } + __onShow__() { + this.onShow(); + } + __onHidden__() { + this.onHidden(); + } + __build__(frame) { + this.__root__.width = frame.width; + this.__root__.height = frame.height; + this.__root__.children.length = 0; + this.build(this.__root__); + } + __response__(viewIds, callbackId) { + const v = this.retrospectView(viewIds); + if (v === undefined) { + loge(`Cannot find view for ${viewIds}`); + } + else { + const argumentsList = [callbackId]; + for (let i = 2; i < arguments.length; i++) { + argumentsList.push(arguments[i]); + } + return Reflect.apply(v.responseCallback, v, argumentsList); + } + } + retrospectView(ids) { + return ids.reduce((acc, cur) => { + if (acc === undefined) { + if (cur === this.__root__.viewId) { + return this.__root__; + } for (let map of this.headviews.values()) { - for (let v of map.values()) { - v.clean(); + if (map.has(cur)) { + return map.get(cur); + } + } + return undefined; + } + else { + if (Reflect.has(acc, "subviewById")) { + return Reflect.apply(Reflect.get(acc, "subviewById"), acc, [cur]); + } + return acc; + } + }, undefined); + } + nativeRender(model) { + return this.context.callNative("shader", "render", model); + } + hookBeforeNativeCall() { + if (Environment.platform !== 'web') { + this.__root__.clean(); + for (let map of this.headviews.values()) { + for (let v of map.values()) { + v.clean(); + } + } + } + } + hookAfterNativeCall() { + if (this.destroyed) { + return; + } + const promises = []; + if (Environment.platform !== 'web') { + //Here insert a native call to ensure the promise is resolved done. + nativeEmpty(); + if (this.__root__.isDirty()) { + const model = this.__root__.toModel(); + promises.push(this.nativeRender(model)); + } + for (let map of this.headviews.values()) { + for (let v of map.values()) { + if (v.isDirty()) { + const model = v.toModel(); + promises.push(this.nativeRender(model)); } } } } - hookAfterNativeCall() { - if (this.destroyed) { - return; - } - const promises = []; - if (Environment.platform !== 'web') { - //Here insert a native call to ensure the promise is resolved done. - nativeEmpty(); + else { + Promise.resolve().then(() => { if (this.__root__.isDirty()) { const model = this.__root__.toModel(); promises.push(this.nativeRender(model)); + this.__root__.clean(); } for (let map of this.headviews.values()) { for (let v of map.values()) { if (v.isDirty()) { const model = v.toModel(); promises.push(this.nativeRender(model)); + v.clean(); } } } - } - else { - Promise.resolve().then(() => { - if (this.__root__.isDirty()) { - const model = this.__root__.toModel(); - promises.push(this.nativeRender(model)); - this.__root__.clean(); - } - for (let map of this.headviews.values()) { - for (let v of map.values()) { - if (v.isDirty()) { - const model = v.toModel(); - promises.push(this.nativeRender(model)); - v.clean(); - } - } - } - }); - } - if (this.__rendering__) { - //skip - Promise.all(promises).then(_ => { - }); - } - else { - this.__rendering__ = true; - Promise.all(promises).then(_ => { - this.__rendering__ = false; - this.onRenderFinished(); - }); - } - } - onRenderFinished() { - this.onRenderFinishedCallback.forEach(e => { - e(); }); - this.onRenderFinishedCallback.length = 0; } - addOnRenderFinishedCallback(cb) { - this.onRenderFinishedCallback.push(cb); + if (this.__rendering__) { + //skip + Promise.all(promises).then(_ => { + }); + } + else { + this.__rendering__ = true; + Promise.all(promises).then(_ => { + this.__rendering__ = false; + this.onRenderFinished(); + }); } } - __decorate$2([ - NativeCall, - __metadata$2("design:type", Function), - __metadata$2("design:paramtypes", [String]), - __metadata$2("design:returntype", void 0) - ], Panel.prototype, "__init__", null); - __decorate$2([ - NativeCall, - __metadata$2("design:type", Function), - __metadata$2("design:paramtypes", []), - __metadata$2("design:returntype", void 0) - ], Panel.prototype, "__onCreate__", null); - __decorate$2([ - NativeCall, - __metadata$2("design:type", Function), - __metadata$2("design:paramtypes", []), - __metadata$2("design:returntype", void 0) - ], Panel.prototype, "__onDestroy__", null); - __decorate$2([ - NativeCall, - __metadata$2("design:type", Function), - __metadata$2("design:paramtypes", []), - __metadata$2("design:returntype", void 0) - ], Panel.prototype, "__onShow__", null); - __decorate$2([ - NativeCall, - __metadata$2("design:type", Function), - __metadata$2("design:paramtypes", []), - __metadata$2("design:returntype", void 0) - ], Panel.prototype, "__onHidden__", null); - __decorate$2([ - NativeCall, - __metadata$2("design:type", Function), - __metadata$2("design:paramtypes", [Object]), - __metadata$2("design:returntype", void 0) - ], Panel.prototype, "__build__", null); - __decorate$2([ - NativeCall, - __metadata$2("design:type", Function), - __metadata$2("design:paramtypes", [Array, String]), - __metadata$2("design:returntype", void 0) - ], Panel.prototype, "__response__", null); - return Panel; -})(); + onRenderFinished() { + this.onRenderFinishedCallback.forEach(e => { + e(); + }); + this.onRenderFinishedCallback.length = 0; + } + addOnRenderFinishedCallback(cb) { + this.onRenderFinishedCallback.push(cb); + } +} +__decorate$2([ + NativeCall, + __metadata$2("design:type", Function), + __metadata$2("design:paramtypes", [String]), + __metadata$2("design:returntype", void 0) +], Panel.prototype, "__init__", null); +__decorate$2([ + NativeCall, + __metadata$2("design:type", Function), + __metadata$2("design:paramtypes", []), + __metadata$2("design:returntype", void 0) +], Panel.prototype, "__onCreate__", null); +__decorate$2([ + NativeCall, + __metadata$2("design:type", Function), + __metadata$2("design:paramtypes", []), + __metadata$2("design:returntype", void 0) +], Panel.prototype, "__onDestroy__", null); +__decorate$2([ + NativeCall, + __metadata$2("design:type", Function), + __metadata$2("design:paramtypes", []), + __metadata$2("design:returntype", void 0) +], Panel.prototype, "__onShow__", null); +__decorate$2([ + NativeCall, + __metadata$2("design:type", Function), + __metadata$2("design:paramtypes", []), + __metadata$2("design:returntype", void 0) +], Panel.prototype, "__onHidden__", null); +__decorate$2([ + NativeCall, + __metadata$2("design:type", Function), + __metadata$2("design:paramtypes", [Object]), + __metadata$2("design:returntype", void 0) +], Panel.prototype, "__build__", null); +__decorate$2([ + NativeCall, + __metadata$2("design:type", Function), + __metadata$2("design:paramtypes", [Array, String]), + __metadata$2("design:returntype", void 0) +], Panel.prototype, "__response__", null); /* * Copyright [2019] [Doric.Pub] @@ -1222,60 +1210,57 @@ class AnimationSet { /** * Store color as format AARRGGBB or RRGGBB */ -let Color = /** @class */ (() => { - class Color { - constructor(v) { - this._value = 0; - this._value = v | 0x0; +class Color { + constructor(v) { + this._value = 0; + this._value = v | 0x0; + } + static parse(str) { + if (!str.startsWith("#")) { + throw new Error(`Parse color error with ${str}`); } - static parse(str) { - if (!str.startsWith("#")) { - throw new Error(`Parse color error with ${str}`); - } - const val = parseInt(str.substr(1), 16); - if (str.length === 7) { - return new Color(val | 0xff000000); - } - else if (str.length === 9) { - return new Color(val); - } - else { - throw new Error(`Parse color error with ${str}`); - } + const val = parseInt(str.substr(1), 16); + if (str.length === 7) { + return new Color(val | 0xff000000); } - static safeParse(str, defVal = Color.TRANSPARENT) { - let color = defVal; - try { - color = Color.parse(str); - } - catch (e) { - } - finally { - return color; - } + else if (str.length === 9) { + return new Color(val); } - alpha(v) { - v = v * 255; - return new Color((this._value & 0xffffff) | ((v & 0xff) << 24)); - } - toModel() { - return this._value; + else { + throw new Error(`Parse color error with ${str}`); } } - Color.BLACK = new Color(0xFF000000); - Color.DKGRAY = new Color(0xFF444444); - Color.GRAY = new Color(0xFF888888); - Color.LTGRAY = new Color(0xFFCCCCCC); - Color.WHITE = new Color(0xFFFFFFFF); - Color.RED = new Color(0xFFFF0000); - Color.GREEN = new Color(0xFF00FF00); - Color.BLUE = new Color(0xFF0000FF); - Color.YELLOW = new Color(0xFFFFFF00); - Color.CYAN = new Color(0xFF00FFFF); - Color.MAGENTA = new Color(0xFFFF00FF); - Color.TRANSPARENT = new Color(0); - return Color; -})(); + static safeParse(str, defVal = Color.TRANSPARENT) { + let color = defVal; + try { + color = Color.parse(str); + } + catch (e) { + } + finally { + return color; + } + } + alpha(v) { + v = v * 255; + return new Color((this._value & 0xffffff) | ((v & 0xff) << 24)); + } + toModel() { + return this._value; + } +} +Color.BLACK = new Color(0xFF000000); +Color.DKGRAY = new Color(0xFF444444); +Color.GRAY = new Color(0xFF888888); +Color.LTGRAY = new Color(0xFFCCCCCC); +Color.WHITE = new Color(0xFFFFFFFF); +Color.RED = new Color(0xFFFF0000); +Color.GREEN = new Color(0xFF00FF00); +Color.BLUE = new Color(0xFF0000FF); +Color.YELLOW = new Color(0xFFFFFF00); +Color.CYAN = new Color(0xFF00FFFF); +Color.MAGENTA = new Color(0xFFFF00FF); +Color.TRANSPARENT = new Color(0); (function (GradientOrientation) { /** draw the gradient from the top to the bottom */ GradientOrientation[GradientOrientation["TOP_BOTTOM"] = 0] = "TOP_BOTTOM"; @@ -1310,67 +1295,64 @@ var __metadata$3 = (undefined && undefined.__metadata) || function (k, v) { TruncateAt[TruncateAt["Start"] = 2] = "Start"; TruncateAt[TruncateAt["Clip"] = 3] = "Clip"; })(exports.TruncateAt || (exports.TruncateAt = {})); -let Text = /** @class */ (() => { - class Text extends View { - } - __decorate$3([ - Property, - __metadata$3("design:type", String) - ], Text.prototype, "text", void 0); - __decorate$3([ - Property, - __metadata$3("design:type", Color) - ], Text.prototype, "textColor", void 0); - __decorate$3([ - Property, - __metadata$3("design:type", Number) - ], Text.prototype, "textSize", void 0); - __decorate$3([ - Property, - __metadata$3("design:type", Number) - ], Text.prototype, "maxLines", void 0); - __decorate$3([ - Property, - __metadata$3("design:type", Gravity) - ], Text.prototype, "textAlignment", void 0); - __decorate$3([ - Property, - __metadata$3("design:type", String) - ], Text.prototype, "fontStyle", void 0); - __decorate$3([ - Property, - __metadata$3("design:type", String) - ], Text.prototype, "font", void 0); - __decorate$3([ - Property, - __metadata$3("design:type", Number) - ], Text.prototype, "maxWidth", void 0); - __decorate$3([ - Property, - __metadata$3("design:type", Number) - ], Text.prototype, "maxHeight", void 0); - __decorate$3([ - Property, - __metadata$3("design:type", Number) - ], Text.prototype, "lineSpacing", void 0); - __decorate$3([ - Property, - __metadata$3("design:type", Boolean) - ], Text.prototype, "strikethrough", void 0); - __decorate$3([ - Property, - __metadata$3("design:type", Boolean) - ], Text.prototype, "underline", void 0); - __decorate$3([ - Property, - __metadata$3("design:type", String) - ], Text.prototype, "htmlText", void 0); - __decorate$3([ - Property, - __metadata$3("design:type", Number) - ], Text.prototype, "truncateAt", void 0); - return Text; -})(); +class Text extends View { +} +__decorate$3([ + Property, + __metadata$3("design:type", String) +], Text.prototype, "text", void 0); +__decorate$3([ + Property, + __metadata$3("design:type", Color) +], Text.prototype, "textColor", void 0); +__decorate$3([ + Property, + __metadata$3("design:type", Number) +], Text.prototype, "textSize", void 0); +__decorate$3([ + Property, + __metadata$3("design:type", Number) +], Text.prototype, "maxLines", void 0); +__decorate$3([ + Property, + __metadata$3("design:type", Gravity) +], Text.prototype, "textAlignment", void 0); +__decorate$3([ + Property, + __metadata$3("design:type", String) +], Text.prototype, "fontStyle", void 0); +__decorate$3([ + Property, + __metadata$3("design:type", String) +], Text.prototype, "font", void 0); +__decorate$3([ + Property, + __metadata$3("design:type", Number) +], Text.prototype, "maxWidth", void 0); +__decorate$3([ + Property, + __metadata$3("design:type", Number) +], Text.prototype, "maxHeight", void 0); +__decorate$3([ + Property, + __metadata$3("design:type", Number) +], Text.prototype, "lineSpacing", void 0); +__decorate$3([ + Property, + __metadata$3("design:type", Boolean) +], Text.prototype, "strikethrough", void 0); +__decorate$3([ + Property, + __metadata$3("design:type", Boolean) +], Text.prototype, "underline", void 0); +__decorate$3([ + Property, + __metadata$3("design:type", String) +], Text.prototype, "htmlText", void 0); +__decorate$3([ + Property, + __metadata$3("design:type", Number) +], Text.prototype, "truncateAt", void 0); function text(config) { const ret = new Text; ret.layoutConfig = layoutConfig().fit(); @@ -1394,76 +1376,73 @@ var __metadata$4 = (undefined && undefined.__metadata) || function (k, v) { ScaleType[ScaleType["ScaleAspectFit"] = 1] = "ScaleAspectFit"; ScaleType[ScaleType["ScaleAspectFill"] = 2] = "ScaleAspectFill"; })(exports.ScaleType || (exports.ScaleType = {})); -let Image = /** @class */ (() => { - class Image extends View { - } - __decorate$4([ - Property, - __metadata$4("design:type", String) - ], Image.prototype, "imageUrl", void 0); - __decorate$4([ - Property, - __metadata$4("design:type", String) - ], Image.prototype, "imagePath", void 0); - __decorate$4([ - Property, - __metadata$4("design:type", String) - ], Image.prototype, "imageRes", void 0); - __decorate$4([ - Property, - __metadata$4("design:type", String) - ], Image.prototype, "imageBase64", void 0); - __decorate$4([ - Property, - __metadata$4("design:type", Number) - ], Image.prototype, "scaleType", void 0); - __decorate$4([ - Property, - __metadata$4("design:type", Boolean) - ], Image.prototype, "isBlur", void 0); - __decorate$4([ - Property, - __metadata$4("design:type", String) - ], Image.prototype, "placeHolderImage", void 0); - __decorate$4([ - Property, - __metadata$4("design:type", String) - ], Image.prototype, "placeHolderImageBase64", void 0); - __decorate$4([ - Property, - __metadata$4("design:type", Color - /** - * Display while image is failed to load - * It can be file name in local path - */ - ) - ], Image.prototype, "placeHolderColor", void 0); - __decorate$4([ - Property, - __metadata$4("design:type", String) - ], Image.prototype, "errorImage", void 0); - __decorate$4([ - Property, - __metadata$4("design:type", String) - ], Image.prototype, "errorImageBase64", void 0); - __decorate$4([ - Property, - __metadata$4("design:type", Color) - ], Image.prototype, "errorColor", void 0); - __decorate$4([ - Property, - __metadata$4("design:type", Function) - ], Image.prototype, "loadCallback", void 0); - __decorate$4([ - Property, - __metadata$4("design:type", Number) - ], Image.prototype, "imageScale", void 0); - __decorate$4([ - Property, - __metadata$4("design:type", Object) - ], Image.prototype, "stretchInset", void 0); - return Image; -})(); +class Image extends View { +} +__decorate$4([ + Property, + __metadata$4("design:type", String) +], Image.prototype, "imageUrl", void 0); +__decorate$4([ + Property, + __metadata$4("design:type", String) +], Image.prototype, "imagePath", void 0); +__decorate$4([ + Property, + __metadata$4("design:type", String) +], Image.prototype, "imageRes", void 0); +__decorate$4([ + Property, + __metadata$4("design:type", String) +], Image.prototype, "imageBase64", void 0); +__decorate$4([ + Property, + __metadata$4("design:type", Number) +], Image.prototype, "scaleType", void 0); +__decorate$4([ + Property, + __metadata$4("design:type", Boolean) +], Image.prototype, "isBlur", void 0); +__decorate$4([ + Property, + __metadata$4("design:type", String) +], Image.prototype, "placeHolderImage", void 0); +__decorate$4([ + Property, + __metadata$4("design:type", String) +], Image.prototype, "placeHolderImageBase64", void 0); +__decorate$4([ + Property, + __metadata$4("design:type", Color + /** + * Display while image is failed to load + * It can be file name in local path + */ + ) +], Image.prototype, "placeHolderColor", void 0); +__decorate$4([ + Property, + __metadata$4("design:type", String) +], Image.prototype, "errorImage", void 0); +__decorate$4([ + Property, + __metadata$4("design:type", String) +], Image.prototype, "errorImageBase64", void 0); +__decorate$4([ + Property, + __metadata$4("design:type", Color) +], Image.prototype, "errorColor", void 0); +__decorate$4([ + Property, + __metadata$4("design:type", Function) +], Image.prototype, "loadCallback", void 0); +__decorate$4([ + Property, + __metadata$4("design:type", Number) +], Image.prototype, "imageScale", void 0); +__decorate$4([ + Property, + __metadata$4("design:type", Object) +], Image.prototype, "stretchInset", void 0); function image(config) { const ret = new Image; ret.layoutConfig = layoutConfig().fit(); @@ -1497,106 +1476,100 @@ var __decorate$5 = (undefined && undefined.__decorate) || function (decorators, var __metadata$5 = (undefined && undefined.__metadata) || function (k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; -let ListItem = /** @class */ (() => { - class ListItem extends Stack { +class ListItem extends Stack { +} +__decorate$5([ + Property, + __metadata$5("design:type", String) +], ListItem.prototype, "identifier", void 0); +class List extends Superview { + constructor() { + super(...arguments); + this.cachedViews = new Map; + this.ignoreDirtyCallOnce = false; + this.itemCount = 0; + this.batchCount = 15; } - __decorate$5([ - Property, - __metadata$5("design:type", String) - ], ListItem.prototype, "identifier", void 0); - return ListItem; -})(); -let List = /** @class */ (() => { - class List extends Superview { - constructor() { - super(...arguments); - this.cachedViews = new Map; + allSubviews() { + if (this.loadMoreView) { + return [...this.cachedViews.values(), this.loadMoreView]; + } + else { + return this.cachedViews.values(); + } + } + scrollToItem(context, index, config) { + const animated = config === null || config === void 0 ? void 0 : config.animated; + return this.nativeChannel(context, 'scrollToItem')({ index, animated, }); + } + reset() { + this.cachedViews.clear(); + this.itemCount = 0; + } + getItem(itemIdx) { + let view = this.renderItem(itemIdx); + view.superview = this; + this.cachedViews.set(`${itemIdx}`, view); + return view; + } + isDirty() { + if (this.ignoreDirtyCallOnce) { this.ignoreDirtyCallOnce = false; - this.itemCount = 0; - this.batchCount = 15; - } - allSubviews() { - if (this.loadMoreView) { - return [...this.cachedViews.values(), this.loadMoreView]; - } - else { - return this.cachedViews.values(); - } - } - scrollToItem(context, index, config) { - const animated = config === null || config === void 0 ? void 0 : config.animated; - return this.nativeChannel(context, 'scrollToItem')({ index, animated, }); - } - reset() { - this.cachedViews.clear(); - this.itemCount = 0; - } - getItem(itemIdx) { - let view = this.renderItem(itemIdx); - view.superview = this; - this.cachedViews.set(`${itemIdx}`, view); - return view; - } - isDirty() { - if (this.ignoreDirtyCallOnce) { - this.ignoreDirtyCallOnce = false; - //Ignore the dirty call once. - return false; - } - return super.isDirty(); - } - renderBunchedItems(start, length) { - this.ignoreDirtyCallOnce = true; - return new Array(Math.max(0, Math.min(length, this.itemCount - start))).fill(0).map((_, idx) => { - const listItem = this.getItem(start + idx); - return listItem.toModel(); - }); - } - toModel() { - if (this.loadMoreView) { - this.dirtyProps['loadMoreView'] = this.loadMoreView.viewId; - } - return super.toModel(); + //Ignore the dirty call once. + return false; } + return super.isDirty(); } - __decorate$5([ - Property, - __metadata$5("design:type", Object) - ], List.prototype, "itemCount", void 0); - __decorate$5([ - Property, - __metadata$5("design:type", Function) - ], List.prototype, "renderItem", void 0); - __decorate$5([ - Property, - __metadata$5("design:type", Object) - ], List.prototype, "batchCount", void 0); - __decorate$5([ - Property, - __metadata$5("design:type", Function) - ], List.prototype, "onLoadMore", void 0); - __decorate$5([ - Property, - __metadata$5("design:type", Boolean) - ], List.prototype, "loadMore", void 0); - __decorate$5([ - Property, - __metadata$5("design:type", ListItem) - ], List.prototype, "loadMoreView", void 0); - __decorate$5([ - Property, - __metadata$5("design:type", Function) - ], List.prototype, "onScroll", void 0); - __decorate$5([ - Property, - __metadata$5("design:type", Function) - ], List.prototype, "onScrollEnd", void 0); - __decorate$5([ - Property, - __metadata$5("design:type", Number) - ], List.prototype, "scrolledPosition", void 0); - return List; -})(); + renderBunchedItems(start, length) { + this.ignoreDirtyCallOnce = true; + return new Array(Math.max(0, Math.min(length, this.itemCount - start))).fill(0).map((_, idx) => { + const listItem = this.getItem(start + idx); + return listItem.toModel(); + }); + } + toModel() { + if (this.loadMoreView) { + this.dirtyProps['loadMoreView'] = this.loadMoreView.viewId; + } + return super.toModel(); + } +} +__decorate$5([ + Property, + __metadata$5("design:type", Object) +], List.prototype, "itemCount", void 0); +__decorate$5([ + Property, + __metadata$5("design:type", Function) +], List.prototype, "renderItem", void 0); +__decorate$5([ + Property, + __metadata$5("design:type", Object) +], List.prototype, "batchCount", void 0); +__decorate$5([ + Property, + __metadata$5("design:type", Function) +], List.prototype, "onLoadMore", void 0); +__decorate$5([ + Property, + __metadata$5("design:type", Boolean) +], List.prototype, "loadMore", void 0); +__decorate$5([ + Property, + __metadata$5("design:type", ListItem) +], List.prototype, "loadMoreView", void 0); +__decorate$5([ + Property, + __metadata$5("design:type", Function) +], List.prototype, "onScroll", void 0); +__decorate$5([ + Property, + __metadata$5("design:type", Function) +], List.prototype, "onScrollEnd", void 0); +__decorate$5([ + Property, + __metadata$5("design:type", Number) +], List.prototype, "scrolledPosition", void 0); function list(config) { const ret = new List; for (let key in config) { @@ -1632,77 +1605,71 @@ var __decorate$6 = (undefined && undefined.__decorate) || function (decorators, var __metadata$6 = (undefined && undefined.__metadata) || function (k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; -let SlideItem = /** @class */ (() => { - class SlideItem extends Stack { +class SlideItem extends Stack { +} +__decorate$6([ + Property, + __metadata$6("design:type", String) +], SlideItem.prototype, "identifier", void 0); +class Slider extends Superview { + constructor() { + super(...arguments); + this.cachedViews = new Map; + this.ignoreDirtyCallOnce = false; + this.itemCount = 0; + this.batchCount = 3; } - __decorate$6([ - Property, - __metadata$6("design:type", String) - ], SlideItem.prototype, "identifier", void 0); - return SlideItem; -})(); -let Slider = /** @class */ (() => { - class Slider extends Superview { - constructor() { - super(...arguments); - this.cachedViews = new Map; + allSubviews() { + return this.cachedViews.values(); + } + getItem(itemIdx) { + let view = this.renderPage(itemIdx); + view.superview = this; + this.cachedViews.set(`${itemIdx}`, view); + return view; + } + isDirty() { + if (this.ignoreDirtyCallOnce) { this.ignoreDirtyCallOnce = false; - this.itemCount = 0; - this.batchCount = 3; - } - allSubviews() { - return this.cachedViews.values(); - } - getItem(itemIdx) { - let view = this.renderPage(itemIdx); - view.superview = this; - this.cachedViews.set(`${itemIdx}`, view); - return view; - } - isDirty() { - if (this.ignoreDirtyCallOnce) { - this.ignoreDirtyCallOnce = false; - //Ignore the dirty call once. - return false; - } - return super.isDirty(); - } - renderBunchedItems(start, length) { - this.ignoreDirtyCallOnce = true; - return new Array(Math.min(length, this.itemCount - start)).fill(0).map((_, idx) => { - const slideItem = this.getItem(start + idx); - return slideItem.toModel(); - }); - } - slidePage(context, page, smooth = false) { - return this.nativeChannel(context, "slidePage")({ page, smooth }); - } - getSlidedPage(context) { - return this.nativeChannel(context, "getSlidedPage")(); + //Ignore the dirty call once. + return false; } + return super.isDirty(); } - __decorate$6([ - Property, - __metadata$6("design:type", Object) - ], Slider.prototype, "itemCount", void 0); - __decorate$6([ - Property, - __metadata$6("design:type", Function) - ], Slider.prototype, "renderPage", void 0); - __decorate$6([ - Property, - __metadata$6("design:type", Object) - ], Slider.prototype, "batchCount", void 0); - __decorate$6([ - Property, - __metadata$6("design:type", Function) - ], Slider.prototype, "onPageSlided", void 0); - __decorate$6([ - Property, - __metadata$6("design:type", Boolean) - ], Slider.prototype, "loop", void 0); - return Slider; -})(); + renderBunchedItems(start, length) { + this.ignoreDirtyCallOnce = true; + return new Array(Math.min(length, this.itemCount - start)).fill(0).map((_, idx) => { + const slideItem = this.getItem(start + idx); + return slideItem.toModel(); + }); + } + slidePage(context, page, smooth = false) { + return this.nativeChannel(context, "slidePage")({ page, smooth }); + } + getSlidedPage(context) { + return this.nativeChannel(context, "getSlidedPage")(); + } +} +__decorate$6([ + Property, + __metadata$6("design:type", Object) +], Slider.prototype, "itemCount", void 0); +__decorate$6([ + Property, + __metadata$6("design:type", Function) +], Slider.prototype, "renderPage", void 0); +__decorate$6([ + Property, + __metadata$6("design:type", Object) +], Slider.prototype, "batchCount", void 0); +__decorate$6([ + Property, + __metadata$6("design:type", Function) +], Slider.prototype, "onPageSlided", void 0); +__decorate$6([ + Property, + __metadata$6("design:type", Boolean) +], Slider.prototype, "loop", void 0); function slider(config) { const ret = new Slider; for (let key in config) { @@ -1749,36 +1716,33 @@ function scroller(content, config) { v.content = content; }); } -let Scroller = /** @class */ (() => { - class Scroller extends Superview { - allSubviews() { - return [this.content]; - } - toModel() { - this.dirtyProps.content = this.content.viewId; - return super.toModel(); - } - scrollTo(context, offset, animated) { - return this.nativeChannel(context, "scrollTo")({ offset, animated }); - } - scrollBy(context, offset, animated) { - return this.nativeChannel(context, "scrollBy")({ offset, animated }); - } +class Scroller extends Superview { + allSubviews() { + return [this.content]; } - __decorate$7([ - Property, - __metadata$7("design:type", Object) - ], Scroller.prototype, "contentOffset", void 0); - __decorate$7([ - Property, - __metadata$7("design:type", Function) - ], Scroller.prototype, "onScroll", void 0); - __decorate$7([ - Property, - __metadata$7("design:type", Function) - ], Scroller.prototype, "onScrollEnd", void 0); - return Scroller; -})(); + toModel() { + this.dirtyProps.content = this.content.viewId; + return super.toModel(); + } + scrollTo(context, offset, animated) { + return this.nativeChannel(context, "scrollTo")({ offset, animated }); + } + scrollBy(context, offset, animated) { + return this.nativeChannel(context, "scrollBy")({ offset, animated }); + } +} +__decorate$7([ + Property, + __metadata$7("design:type", Object) +], Scroller.prototype, "contentOffset", void 0); +__decorate$7([ + Property, + __metadata$7("design:type", Function) +], Scroller.prototype, "onScroll", void 0); +__decorate$7([ + Property, + __metadata$7("design:type", Function) +], Scroller.prototype, "onScrollEnd", void 0); var __decorate$8 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; @@ -1789,39 +1753,36 @@ var __decorate$8 = (undefined && undefined.__decorate) || function (decorators, var __metadata$8 = (undefined && undefined.__metadata) || function (k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; -let Refreshable = /** @class */ (() => { - class Refreshable extends Superview { - allSubviews() { - const ret = [this.content]; - if (this.header) { - ret.push(this.header); - } - return ret; - } - setRefreshable(context, refreshable) { - return this.nativeChannel(context, 'setRefreshable')(refreshable); - } - setRefreshing(context, refreshing) { - return this.nativeChannel(context, 'setRefreshing')(refreshing); - } - isRefreshable(context) { - return this.nativeChannel(context, 'isRefreshable')(); - } - isRefreshing(context) { - return this.nativeChannel(context, 'isRefreshing')(); - } - toModel() { - this.dirtyProps.content = this.content.viewId; - this.dirtyProps.header = (this.header || {}).viewId; - return super.toModel(); +class Refreshable extends Superview { + allSubviews() { + const ret = [this.content]; + if (this.header) { + ret.push(this.header); } + return ret; } - __decorate$8([ - Property, - __metadata$8("design:type", Function) - ], Refreshable.prototype, "onRefresh", void 0); - return Refreshable; -})(); + setRefreshable(context, refreshable) { + return this.nativeChannel(context, 'setRefreshable')(refreshable); + } + setRefreshing(context, refreshing) { + return this.nativeChannel(context, 'setRefreshing')(refreshing); + } + isRefreshable(context) { + return this.nativeChannel(context, 'isRefreshable')(); + } + isRefreshing(context) { + return this.nativeChannel(context, 'isRefreshing')(); + } + toModel() { + this.dirtyProps.content = this.content.viewId; + this.dirtyProps.header = (this.header || {}).viewId; + return super.toModel(); + } +} +__decorate$8([ + Property, + __metadata$8("design:type", Function) +], Refreshable.prototype, "onRefresh", void 0); function refreshable(config) { const ret = new Refreshable; ret.layoutConfig = layoutConfig().fit(); @@ -1844,32 +1805,29 @@ var ValueType; ValueType[ValueType["Percent"] = 2] = "Percent"; ValueType[ValueType["Auto"] = 3] = "Auto"; })(ValueType || (ValueType = {})); -let FlexTypedValue = /** @class */ (() => { - class FlexTypedValue { - constructor(type) { - this.value = 0; - this.type = type; - } - static percent(v) { - const ret = new FlexTypedValue(ValueType.Percent); - ret.value = v; - return ret; - } - static point(v) { - const ret = new FlexTypedValue(ValueType.Point); - ret.value = v; - return ret; - } - toModel() { - return { - type: this.type, - value: this.value, - }; - } +class FlexTypedValue { + constructor(type) { + this.value = 0; + this.type = type; } - FlexTypedValue.Auto = new FlexTypedValue(ValueType.Auto); - return FlexTypedValue; -})(); + static percent(v) { + const ret = new FlexTypedValue(ValueType.Percent); + ret.value = v; + return ret; + } + static point(v) { + const ret = new FlexTypedValue(ValueType.Point); + ret.value = v; + return ret; + } + toModel() { + return { + type: this.type, + value: this.value, + }; + } +} +FlexTypedValue.Auto = new FlexTypedValue(ValueType.Auto); (function (FlexDirection) { FlexDirection[FlexDirection["COLUMN"] = 0] = "COLUMN"; FlexDirection[FlexDirection["COLUMN_REVERSE"] = 1] = "COLUMN_REVERSE"; @@ -1927,111 +1885,105 @@ var __decorate$9 = (undefined && undefined.__decorate) || function (decorators, var __metadata$9 = (undefined && undefined.__metadata) || function (k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; -let FlowLayoutItem = /** @class */ (() => { - class FlowLayoutItem extends Stack { +class FlowLayoutItem extends Stack { +} +__decorate$9([ + Property, + __metadata$9("design:type", String) +], FlowLayoutItem.prototype, "identifier", void 0); +class FlowLayout extends Superview { + constructor() { + super(...arguments); + this.cachedViews = new Map; + this.ignoreDirtyCallOnce = false; + this.columnCount = 2; + this.itemCount = 0; + this.batchCount = 15; } - __decorate$9([ - Property, - __metadata$9("design:type", String) - ], FlowLayoutItem.prototype, "identifier", void 0); - return FlowLayoutItem; -})(); -let FlowLayout = /** @class */ (() => { - class FlowLayout extends Superview { - constructor() { - super(...arguments); - this.cachedViews = new Map; + allSubviews() { + if (this.loadMoreView) { + return [...this.cachedViews.values(), this.loadMoreView]; + } + else { + return this.cachedViews.values(); + } + } + reset() { + this.cachedViews.clear(); + this.itemCount = 0; + } + getItem(itemIdx) { + let view = this.renderItem(itemIdx); + view.superview = this; + this.cachedViews.set(`${itemIdx}`, view); + return view; + } + isDirty() { + if (this.ignoreDirtyCallOnce) { this.ignoreDirtyCallOnce = false; - this.columnCount = 2; - this.itemCount = 0; - this.batchCount = 15; - } - allSubviews() { - if (this.loadMoreView) { - return [...this.cachedViews.values(), this.loadMoreView]; - } - else { - return this.cachedViews.values(); - } - } - reset() { - this.cachedViews.clear(); - this.itemCount = 0; - } - getItem(itemIdx) { - let view = this.renderItem(itemIdx); - view.superview = this; - this.cachedViews.set(`${itemIdx}`, view); - return view; - } - isDirty() { - if (this.ignoreDirtyCallOnce) { - this.ignoreDirtyCallOnce = false; - //Ignore the dirty call once. - return false; - } - return super.isDirty(); - } - renderBunchedItems(start, length) { - this.ignoreDirtyCallOnce = true; - return new Array(Math.min(length, this.itemCount - start)).fill(0).map((_, idx) => { - const listItem = this.getItem(start + idx); - return listItem.toModel(); - }); - } - toModel() { - if (this.loadMoreView) { - this.dirtyProps['loadMoreView'] = this.loadMoreView.viewId; - } - return super.toModel(); + //Ignore the dirty call once. + return false; } + return super.isDirty(); } - __decorate$9([ - Property, - __metadata$9("design:type", Object) - ], FlowLayout.prototype, "columnCount", void 0); - __decorate$9([ - Property, - __metadata$9("design:type", Number) - ], FlowLayout.prototype, "columnSpace", void 0); - __decorate$9([ - Property, - __metadata$9("design:type", Number) - ], FlowLayout.prototype, "rowSpace", void 0); - __decorate$9([ - Property, - __metadata$9("design:type", Object) - ], FlowLayout.prototype, "itemCount", void 0); - __decorate$9([ - Property, - __metadata$9("design:type", Function) - ], FlowLayout.prototype, "renderItem", void 0); - __decorate$9([ - Property, - __metadata$9("design:type", Object) - ], FlowLayout.prototype, "batchCount", void 0); - __decorate$9([ - Property, - __metadata$9("design:type", Function) - ], FlowLayout.prototype, "onLoadMore", void 0); - __decorate$9([ - Property, - __metadata$9("design:type", Boolean) - ], FlowLayout.prototype, "loadMore", void 0); - __decorate$9([ - Property, - __metadata$9("design:type", FlowLayoutItem) - ], FlowLayout.prototype, "loadMoreView", void 0); - __decorate$9([ - Property, - __metadata$9("design:type", Function) - ], FlowLayout.prototype, "onScroll", void 0); - __decorate$9([ - Property, - __metadata$9("design:type", Function) - ], FlowLayout.prototype, "onScrollEnd", void 0); - return FlowLayout; -})(); + renderBunchedItems(start, length) { + this.ignoreDirtyCallOnce = true; + return new Array(Math.min(length, this.itemCount - start)).fill(0).map((_, idx) => { + const listItem = this.getItem(start + idx); + return listItem.toModel(); + }); + } + toModel() { + if (this.loadMoreView) { + this.dirtyProps['loadMoreView'] = this.loadMoreView.viewId; + } + return super.toModel(); + } +} +__decorate$9([ + Property, + __metadata$9("design:type", Object) +], FlowLayout.prototype, "columnCount", void 0); +__decorate$9([ + Property, + __metadata$9("design:type", Number) +], FlowLayout.prototype, "columnSpace", void 0); +__decorate$9([ + Property, + __metadata$9("design:type", Number) +], FlowLayout.prototype, "rowSpace", void 0); +__decorate$9([ + Property, + __metadata$9("design:type", Object) +], FlowLayout.prototype, "itemCount", void 0); +__decorate$9([ + Property, + __metadata$9("design:type", Function) +], FlowLayout.prototype, "renderItem", void 0); +__decorate$9([ + Property, + __metadata$9("design:type", Object) +], FlowLayout.prototype, "batchCount", void 0); +__decorate$9([ + Property, + __metadata$9("design:type", Function) +], FlowLayout.prototype, "onLoadMore", void 0); +__decorate$9([ + Property, + __metadata$9("design:type", Boolean) +], FlowLayout.prototype, "loadMore", void 0); +__decorate$9([ + Property, + __metadata$9("design:type", FlowLayoutItem) +], FlowLayout.prototype, "loadMoreView", void 0); +__decorate$9([ + Property, + __metadata$9("design:type", Function) +], FlowLayout.prototype, "onScroll", void 0); +__decorate$9([ + Property, + __metadata$9("design:type", Function) +], FlowLayout.prototype, "onScrollEnd", void 0); function flowlayout(config) { const ret = new FlowLayout; for (let key in config) { @@ -2067,70 +2019,67 @@ var __decorate$a = (undefined && undefined.__decorate) || function (decorators, var __metadata$a = (undefined && undefined.__metadata) || function (k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; -let Input = /** @class */ (() => { - class Input extends View { - getText(context) { - return this.nativeChannel(context, 'getText')(); - } - setSelection(context, start, end = start) { - return this.nativeChannel(context, 'setSelection')({ - start, - end, - }); - } - requestFocus(context) { - return this.nativeChannel(context, 'requestFocus')(); - } - releaseFocus(context) { - return this.nativeChannel(context, 'releaseFocus')(); - } +class Input extends View { + getText(context) { + return this.nativeChannel(context, 'getText')(); } - __decorate$a([ - Property, - __metadata$a("design:type", String) - ], Input.prototype, "text", void 0); - __decorate$a([ - Property, - __metadata$a("design:type", Color) - ], Input.prototype, "textColor", void 0); - __decorate$a([ - Property, - __metadata$a("design:type", Number) - ], Input.prototype, "textSize", void 0); - __decorate$a([ - Property, - __metadata$a("design:type", String) - ], Input.prototype, "hintText", void 0); - __decorate$a([ - Property, - __metadata$a("design:type", Number) - ], Input.prototype, "inputType", void 0); - __decorate$a([ - Property, - __metadata$a("design:type", Color) - ], Input.prototype, "hintTextColor", void 0); - __decorate$a([ - Property, - __metadata$a("design:type", Boolean) - ], Input.prototype, "multiline", void 0); - __decorate$a([ - Property, - __metadata$a("design:type", Gravity) - ], Input.prototype, "textAlignment", void 0); - __decorate$a([ - Property, - __metadata$a("design:type", Function) - ], Input.prototype, "onTextChange", void 0); - __decorate$a([ - Property, - __metadata$a("design:type", Function) - ], Input.prototype, "onFocusChange", void 0); - __decorate$a([ - Property, - __metadata$a("design:type", Number) - ], Input.prototype, "maxLength", void 0); - return Input; -})(); + setSelection(context, start, end = start) { + return this.nativeChannel(context, 'setSelection')({ + start, + end, + }); + } + requestFocus(context) { + return this.nativeChannel(context, 'requestFocus')(); + } + releaseFocus(context) { + return this.nativeChannel(context, 'releaseFocus')(); + } +} +__decorate$a([ + Property, + __metadata$a("design:type", String) +], Input.prototype, "text", void 0); +__decorate$a([ + Property, + __metadata$a("design:type", Color) +], Input.prototype, "textColor", void 0); +__decorate$a([ + Property, + __metadata$a("design:type", Number) +], Input.prototype, "textSize", void 0); +__decorate$a([ + Property, + __metadata$a("design:type", String) +], Input.prototype, "hintText", void 0); +__decorate$a([ + Property, + __metadata$a("design:type", Number) +], Input.prototype, "inputType", void 0); +__decorate$a([ + Property, + __metadata$a("design:type", Color) +], Input.prototype, "hintTextColor", void 0); +__decorate$a([ + Property, + __metadata$a("design:type", Boolean) +], Input.prototype, "multiline", void 0); +__decorate$a([ + Property, + __metadata$a("design:type", Gravity) +], Input.prototype, "textAlignment", void 0); +__decorate$a([ + Property, + __metadata$a("design:type", Function) +], Input.prototype, "onTextChange", void 0); +__decorate$a([ + Property, + __metadata$a("design:type", Function) +], Input.prototype, "onFocusChange", void 0); +__decorate$a([ + Property, + __metadata$a("design:type", Number) +], Input.prototype, "maxLength", void 0); (function (InputType) { InputType[InputType["Default"] = 0] = "Default"; InputType[InputType["Number"] = 1] = "Number"; @@ -2156,24 +2105,21 @@ var __decorate$b = (undefined && undefined.__decorate) || function (decorators, var __metadata$b = (undefined && undefined.__metadata) || function (k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; -let NestedSlider = /** @class */ (() => { - class NestedSlider extends Group { - addSlideItem(view) { - this.addChild(view); - } - slidePage(context, page, smooth = false) { - return this.nativeChannel(context, "slidePage")({ page, smooth }); - } - getSlidedPage(context) { - return this.nativeChannel(context, "getSlidedPage")(); - } +class NestedSlider extends Group { + addSlideItem(view) { + this.addChild(view); } - __decorate$b([ - Property, - __metadata$b("design:type", Function) - ], NestedSlider.prototype, "onPageSlided", void 0); - return NestedSlider; -})(); + slidePage(context, page, smooth = false) { + return this.nativeChannel(context, "slidePage")({ page, smooth }); + } + getSlidedPage(context) { + return this.nativeChannel(context, "getSlidedPage")(); + } +} +__decorate$b([ + Property, + __metadata$b("design:type", Function) +], NestedSlider.prototype, "onPageSlided", void 0); var __decorate$c = (undefined && undefined.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; @@ -2184,15 +2130,12 @@ var __decorate$c = (undefined && undefined.__decorate) || function (decorators, var __metadata$c = (undefined && undefined.__metadata) || function (k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; -let Draggable = /** @class */ (() => { - class Draggable extends Stack { - } - __decorate$c([ - Property, - __metadata$c("design:type", Function) - ], Draggable.prototype, "onDrag", void 0); - return Draggable; -})(); +class Draggable extends Stack { +} +__decorate$c([ + Property, + __metadata$c("design:type", Function) +], Draggable.prototype, "onDrag", void 0); function draggable(views, config) { const ret = new Draggable; ret.layoutConfig = layoutConfig().fit(); @@ -2221,31 +2164,28 @@ var __decorate$d = (undefined && undefined.__decorate) || function (decorators, var __metadata$d = (undefined && undefined.__metadata) || function (k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; -let Switch = /** @class */ (() => { - class Switch extends View { - } - __decorate$d([ - Property, - __metadata$d("design:type", Boolean) - ], Switch.prototype, "state", void 0); - __decorate$d([ - Property, - __metadata$d("design:type", Function) - ], Switch.prototype, "onSwitch", void 0); - __decorate$d([ - Property, - __metadata$d("design:type", Color) - ], Switch.prototype, "offTintColor", void 0); - __decorate$d([ - Property, - __metadata$d("design:type", Color) - ], Switch.prototype, "onTintColor", void 0); - __decorate$d([ - Property, - __metadata$d("design:type", Color) - ], Switch.prototype, "thumbTintColor", void 0); - return Switch; -})(); +class Switch extends View { +} +__decorate$d([ + Property, + __metadata$d("design:type", Boolean) +], Switch.prototype, "state", void 0); +__decorate$d([ + Property, + __metadata$d("design:type", Function) +], Switch.prototype, "onSwitch", void 0); +__decorate$d([ + Property, + __metadata$d("design:type", Color) +], Switch.prototype, "offTintColor", void 0); +__decorate$d([ + Property, + __metadata$d("design:type", Color) +], Switch.prototype, "onTintColor", void 0); +__decorate$d([ + Property, + __metadata$d("design:type", Color) +], Switch.prototype, "thumbTintColor", void 0); function switchView(config) { const ret = new Switch; ret.layoutConfig = layoutConfig().just(); diff --git a/doric-js/bundle/doric-vm.js b/doric-js/bundle/doric-vm.js index ef8a1861..abc54808 100644 --- a/doric-js/bundle/doric-vm.js +++ b/doric-js/bundle/doric-vm.js @@ -1587,278 +1587,275 @@ var __metadata = (undefined && undefined.__metadata) || function (k, v) { function Property(target, propKey) { Reflect.defineMetadata(propKey, true, target); } -let View = /** @class */ (() => { - class View { - constructor() { - this.width = 0; - this.height = 0; - this.x = 0; - this.y = 0; - this.viewId = uniqueId('ViewId'); - this.callbacks = new Map; - /** Anchor end*/ - this.__dirty_props__ = {}; - this.nativeViewModel = { - id: this.viewId, - type: this.constructor.name, - props: this.__dirty_props__, - }; - return new Proxy(this, { - get: (target, p, receiver) => { - return Reflect.get(target, p, receiver); - }, - set: (target, p, v, receiver) => { - const oldV = Reflect.get(target, p, receiver); - const ret = Reflect.set(target, p, v, receiver); - if (Reflect.getMetadata(p, target) && oldV !== v) { - receiver.onPropertyChanged(p.toString(), oldV, v); - } - return ret; +class View { + constructor() { + this.width = 0; + this.height = 0; + this.x = 0; + this.y = 0; + this.viewId = uniqueId('ViewId'); + this.callbacks = new Map; + /** Anchor end*/ + this.__dirty_props__ = {}; + this.nativeViewModel = { + id: this.viewId, + type: this.constructor.name, + props: this.__dirty_props__, + }; + return new Proxy(this, { + get: (target, p, receiver) => { + return Reflect.get(target, p, receiver); + }, + set: (target, p, v, receiver) => { + const oldV = Reflect.get(target, p, receiver); + const ret = Reflect.set(target, p, v, receiver); + if (Reflect.getMetadata(p, target) && oldV !== v) { + receiver.onPropertyChanged(p.toString(), oldV, v); } - }); - } - callback2Id(f) { - const id = uniqueId('Function'); - this.callbacks.set(id, f); - return id; - } - id2Callback(id) { - let f = this.callbacks.get(id); - if (f === undefined) { - f = Reflect.get(this, id); + return ret; } - return f; + }); + } + callback2Id(f) { + const id = uniqueId('Function'); + this.callbacks.set(id, f); + return id; + } + id2Callback(id) { + let f = this.callbacks.get(id); + if (f === undefined) { + f = Reflect.get(this, id); } - /** Anchor start*/ - get left() { - return this.x; + return f; + } + /** Anchor start*/ + get left() { + return this.x; + } + set left(v) { + this.x = v; + } + get right() { + return this.x + this.width; + } + set right(v) { + this.x = v - this.width; + } + get top() { + return this.y; + } + set top(v) { + this.y = v; + } + get bottom() { + return this.y + this.height; + } + set bottom(v) { + this.y = v - this.height; + } + get centerX() { + return this.x + this.width / 2; + } + get centerY() { + return this.y + this.height / 2; + } + set centerX(v) { + this.x = v - this.width / 2; + } + set centerY(v) { + this.y = v - this.height / 2; + } + get dirtyProps() { + return this.__dirty_props__; + } + onPropertyChanged(propKey, oldV, newV) { + if (newV instanceof Function) { + newV = this.callback2Id(newV); } - set left(v) { - this.x = v; + else { + newV = obj2Model(newV); } - get right() { - return this.x + this.width; - } - set right(v) { - this.x = v - this.width; - } - get top() { - return this.y; - } - set top(v) { - this.y = v; - } - get bottom() { - return this.y + this.height; - } - set bottom(v) { - this.y = v - this.height; - } - get centerX() { - return this.x + this.width / 2; - } - get centerY() { - return this.y + this.height / 2; - } - set centerX(v) { - this.x = v - this.width / 2; - } - set centerY(v) { - this.y = v - this.height / 2; - } - get dirtyProps() { - return this.__dirty_props__; - } - onPropertyChanged(propKey, oldV, newV) { - if (newV instanceof Function) { - newV = this.callback2Id(newV); + this.__dirty_props__[propKey] = newV; + } + clean() { + for (const key in this.__dirty_props__) { + if (Reflect.has(this.__dirty_props__, key)) { + Reflect.deleteProperty(this.__dirty_props__, key); } - else { - newV = obj2Model(newV); - } - this.__dirty_props__[propKey] = newV; - } - clean() { - for (const key in this.__dirty_props__) { - if (Reflect.has(this.__dirty_props__, key)) { - Reflect.deleteProperty(this.__dirty_props__, key); - } - } - } - isDirty() { - return Reflect.ownKeys(this.__dirty_props__).length !== 0; - } - responseCallback(id, ...args) { - const f = this.id2Callback(id); - if (f instanceof Function) { - const argumentsList = []; - for (let i = 1; i < arguments.length; i++) { - argumentsList.push(arguments[i]); - } - return Reflect.apply(f, this, argumentsList); - } - else { - loge(`Cannot find callback:${id} for ${JSON.stringify(this.toModel())}`); - } - } - toModel() { - return this.nativeViewModel; - } - let(block) { - block(this); - } - also(block) { - block(this); - return this; - } - apply(config) { - for (let key in config) { - Reflect.set(this, key, Reflect.get(config, key, config), this); - } - return this; - } - in(group) { - group.addChild(this); - return this; - } - nativeChannel(context, name) { - let thisView = this; - return function (args = undefined) { - const viewIds = []; - while (thisView != undefined) { - viewIds.push(thisView.viewId); - thisView = thisView.superview; - } - const params = { - viewIds: viewIds.reverse(), - name, - args, - }; - return context.callNative('shader', 'command', params); - }; - } - getWidth(context) { - return this.nativeChannel(context, 'getWidth')(); - } - getHeight(context) { - return this.nativeChannel(context, 'getHeight')(); - } - getX(context) { - return this.nativeChannel(context, 'getX')(); - } - getY(context) { - return this.nativeChannel(context, 'getY')(); - } - getLocationOnScreen(context) { - return this.nativeChannel(context, "getLocationOnScreen")(); - } - doAnimation(context, animation) { - return this.nativeChannel(context, "doAnimation")(animation.toModel()).then((args) => { - for (let key in args) { - Reflect.set(this, key, Reflect.get(args, key, args), this); - Reflect.deleteProperty(this.__dirty_props__, key); - } - }); } } - __decorate([ - Property, - __metadata("design:type", Number) - ], View.prototype, "width", void 0); - __decorate([ - Property, - __metadata("design:type", Number) - ], View.prototype, "height", void 0); - __decorate([ - Property, - __metadata("design:type", Number) - ], View.prototype, "x", void 0); - __decorate([ - Property, - __metadata("design:type", Number) - ], View.prototype, "y", void 0); - __decorate([ - Property, - __metadata("design:type", Object) - ], View.prototype, "backgroundColor", void 0); - __decorate([ - Property, - __metadata("design:type", Object) - ], View.prototype, "corners", void 0); - __decorate([ - Property, - __metadata("design:type", Object) - ], View.prototype, "border", void 0); - __decorate([ - Property, - __metadata("design:type", Object) - ], View.prototype, "shadow", void 0); - __decorate([ - Property, - __metadata("design:type", Number) - ], View.prototype, "alpha", void 0); - __decorate([ - Property, - __metadata("design:type", Boolean) - ], View.prototype, "hidden", void 0); - __decorate([ - Property, - __metadata("design:type", Object) - ], View.prototype, "padding", void 0); - __decorate([ - Property, - __metadata("design:type", Object) - ], View.prototype, "layoutConfig", void 0); - __decorate([ - Property, - __metadata("design:type", Function) - ], View.prototype, "onClick", void 0); - __decorate([ - Property, - __metadata("design:type", Number) - ], View.prototype, "translationX", void 0); - __decorate([ - Property, - __metadata("design:type", Number) - ], View.prototype, "translationY", void 0); - __decorate([ - Property, - __metadata("design:type", Number) - ], View.prototype, "scaleX", void 0); - __decorate([ - Property, - __metadata("design:type", Number) - ], View.prototype, "scaleY", void 0); - __decorate([ - Property, - __metadata("design:type", Number) - ], View.prototype, "pivotX", void 0); - __decorate([ - Property, - __metadata("design:type", Number) - ], View.prototype, "pivotY", void 0); - __decorate([ - Property, - __metadata("design:type", Number) - ], View.prototype, "rotation", void 0); - __decorate([ - Property, - __metadata("design:type", Number) - ], View.prototype, "rotationX", void 0); - __decorate([ - Property, - __metadata("design:type", Number) - ], View.prototype, "rotationY", void 0); - __decorate([ - Property, - __metadata("design:type", Number) - ], View.prototype, "perspective", void 0); - __decorate([ - Property, - __metadata("design:type", Object) - ], View.prototype, "flexConfig", void 0); - return View; -})(); + isDirty() { + return Reflect.ownKeys(this.__dirty_props__).length !== 0; + } + responseCallback(id, ...args) { + const f = this.id2Callback(id); + if (f instanceof Function) { + const argumentsList = []; + for (let i = 1; i < arguments.length; i++) { + argumentsList.push(arguments[i]); + } + return Reflect.apply(f, this, argumentsList); + } + else { + loge(`Cannot find callback:${id} for ${JSON.stringify(this.toModel())}`); + } + } + toModel() { + return this.nativeViewModel; + } + let(block) { + block(this); + } + also(block) { + block(this); + return this; + } + apply(config) { + for (let key in config) { + Reflect.set(this, key, Reflect.get(config, key, config), this); + } + return this; + } + in(group) { + group.addChild(this); + return this; + } + nativeChannel(context, name) { + let thisView = this; + return function (args = undefined) { + const viewIds = []; + while (thisView != undefined) { + viewIds.push(thisView.viewId); + thisView = thisView.superview; + } + const params = { + viewIds: viewIds.reverse(), + name, + args, + }; + return context.callNative('shader', 'command', params); + }; + } + getWidth(context) { + return this.nativeChannel(context, 'getWidth')(); + } + getHeight(context) { + return this.nativeChannel(context, 'getHeight')(); + } + getX(context) { + return this.nativeChannel(context, 'getX')(); + } + getY(context) { + return this.nativeChannel(context, 'getY')(); + } + getLocationOnScreen(context) { + return this.nativeChannel(context, "getLocationOnScreen")(); + } + doAnimation(context, animation) { + return this.nativeChannel(context, "doAnimation")(animation.toModel()).then((args) => { + for (let key in args) { + Reflect.set(this, key, Reflect.get(args, key, args), this); + Reflect.deleteProperty(this.__dirty_props__, key); + } + }); + } +} +__decorate([ + Property, + __metadata("design:type", Number) +], View.prototype, "width", void 0); +__decorate([ + Property, + __metadata("design:type", Number) +], View.prototype, "height", void 0); +__decorate([ + Property, + __metadata("design:type", Number) +], View.prototype, "x", void 0); +__decorate([ + Property, + __metadata("design:type", Number) +], View.prototype, "y", void 0); +__decorate([ + Property, + __metadata("design:type", Object) +], View.prototype, "backgroundColor", void 0); +__decorate([ + Property, + __metadata("design:type", Object) +], View.prototype, "corners", void 0); +__decorate([ + Property, + __metadata("design:type", Object) +], View.prototype, "border", void 0); +__decorate([ + Property, + __metadata("design:type", Object) +], View.prototype, "shadow", void 0); +__decorate([ + Property, + __metadata("design:type", Number) +], View.prototype, "alpha", void 0); +__decorate([ + Property, + __metadata("design:type", Boolean) +], View.prototype, "hidden", void 0); +__decorate([ + Property, + __metadata("design:type", Object) +], View.prototype, "padding", void 0); +__decorate([ + Property, + __metadata("design:type", Object) +], View.prototype, "layoutConfig", void 0); +__decorate([ + Property, + __metadata("design:type", Function) +], View.prototype, "onClick", void 0); +__decorate([ + Property, + __metadata("design:type", Number) +], View.prototype, "translationX", void 0); +__decorate([ + Property, + __metadata("design:type", Number) +], View.prototype, "translationY", void 0); +__decorate([ + Property, + __metadata("design:type", Number) +], View.prototype, "scaleX", void 0); +__decorate([ + Property, + __metadata("design:type", Number) +], View.prototype, "scaleY", void 0); +__decorate([ + Property, + __metadata("design:type", Number) +], View.prototype, "pivotX", void 0); +__decorate([ + Property, + __metadata("design:type", Number) +], View.prototype, "pivotY", void 0); +__decorate([ + Property, + __metadata("design:type", Number) +], View.prototype, "rotation", void 0); +__decorate([ + Property, + __metadata("design:type", Number) +], View.prototype, "rotationX", void 0); +__decorate([ + Property, + __metadata("design:type", Number) +], View.prototype, "rotationY", void 0); +__decorate([ + Property, + __metadata("design:type", Number) +], View.prototype, "perspective", void 0); +__decorate([ + Property, + __metadata("design:type", Object) +], View.prototype, "flexConfig", void 0); class Superview extends View { subviewById(id) { for (let v of this.allSubviews()) { @@ -1940,67 +1937,64 @@ const BOTTOM = (END | SPECIFIED) << SHIFT_Y; const CENTER_X = SPECIFIED << SHIFT_X; const CENTER_Y = SPECIFIED << SHIFT_Y; const CENTER = CENTER_X | CENTER_Y; -let Gravity = /** @class */ (() => { - class Gravity { - constructor() { - this.val = 0; - } - left() { - const val = this.val | LEFT; - const ret = new Gravity; - ret.val = val; - return ret; - } - right() { - const val = this.val | RIGHT; - const ret = new Gravity; - ret.val = val; - return ret; - } - top() { - const val = this.val | TOP; - const ret = new Gravity; - ret.val = val; - return ret; - } - bottom() { - const val = this.val | BOTTOM; - const ret = new Gravity; - ret.val = val; - return ret; - } - center() { - const val = this.val | CENTER; - const ret = new Gravity; - ret.val = val; - return ret; - } - centerX() { - const val = this.val | CENTER_X; - const ret = new Gravity; - ret.val = val; - return ret; - } - centerY() { - const val = this.val | CENTER_Y; - const ret = new Gravity; - ret.val = val; - return ret; - } - toModel() { - return this.val; - } +class Gravity { + constructor() { + this.val = 0; } - Gravity.origin = new Gravity; - Gravity.Center = Gravity.origin.center(); - Gravity.CenterX = Gravity.origin.centerX(); - Gravity.CenterY = Gravity.origin.centerY(); - Gravity.Left = Gravity.origin.left(); - Gravity.Right = Gravity.origin.right(); - Gravity.Top = Gravity.origin.top(); - Gravity.Bottom = Gravity.origin.bottom(); - return Gravity; -})(); + left() { + const val = this.val | LEFT; + const ret = new Gravity; + ret.val = val; + return ret; + } + right() { + const val = this.val | RIGHT; + const ret = new Gravity; + ret.val = val; + return ret; + } + top() { + const val = this.val | TOP; + const ret = new Gravity; + ret.val = val; + return ret; + } + bottom() { + const val = this.val | BOTTOM; + const ret = new Gravity; + ret.val = val; + return ret; + } + center() { + const val = this.val | CENTER; + const ret = new Gravity; + ret.val = val; + return ret; + } + centerX() { + const val = this.val | CENTER_X; + const ret = new Gravity; + ret.val = val; + return ret; + } + centerY() { + const val = this.val | CENTER_Y; + const ret = new Gravity; + ret.val = val; + return ret; + } + toModel() { + return this.val; + } +} +Gravity.origin = new Gravity; +Gravity.Center = Gravity.origin.center(); +Gravity.CenterX = Gravity.origin.centerX(); +Gravity.CenterY = Gravity.origin.centerY(); +Gravity.Left = Gravity.origin.left(); +Gravity.Right = Gravity.origin.right(); +Gravity.Top = Gravity.origin.top(); +Gravity.Bottom = Gravity.origin.bottom(); function gravity() { return new Gravity; } @@ -2098,19 +2092,16 @@ class Stack extends Group { } class Root extends Stack { } -let LinearLayout = /** @class */ (() => { - class LinearLayout extends Group { - } - __decorate$1([ - Property, - __metadata$1("design:type", Number) - ], LinearLayout.prototype, "space", void 0); - __decorate$1([ - Property, - __metadata$1("design:type", Gravity) - ], LinearLayout.prototype, "gravity", void 0); - return LinearLayout; -})(); +class LinearLayout extends Group { +} +__decorate$1([ + Property, + __metadata$1("design:type", Number) +], LinearLayout.prototype, "space", void 0); +__decorate$1([ + Property, + __metadata$1("design:type", Gravity) +], LinearLayout.prototype, "gravity", void 0); class VLayout extends LinearLayout { } class HLayout extends LinearLayout { @@ -2187,234 +2178,231 @@ function NativeCall(target, propertyKey, descriptor) { }; return descriptor; } -let Panel = /** @class */ (() => { - class Panel { - constructor() { - this.destroyed = false; - this.__root__ = new Root; - this.headviews = new Map; - this.onRenderFinishedCallback = []; - this.__rendering__ = false; +class Panel { + constructor() { + this.destroyed = false; + this.__root__ = new Root; + this.headviews = new Map; + this.onRenderFinishedCallback = []; + this.__rendering__ = false; + } + onCreate() { } + onDestroy() { } + onShow() { } + onHidden() { } + addHeadView(type, v) { + let map = this.headviews.get(type); + if (map) { + map.set(v.viewId, v); } - onCreate() { } - onDestroy() { } - onShow() { } - onHidden() { } - addHeadView(type, v) { + else { + map = new Map; + map.set(v.viewId, v); + this.headviews.set(type, map); + } + } + allHeadViews() { + return this.headviews.values(); + } + removeHeadView(type, v) { + if (this.headviews.has(type)) { let map = this.headviews.get(type); if (map) { - map.set(v.viewId, v); - } - else { - map = new Map; - map.set(v.viewId, v); - this.headviews.set(type, map); - } - } - allHeadViews() { - return this.headviews.values(); - } - removeHeadView(type, v) { - if (this.headviews.has(type)) { - let map = this.headviews.get(type); - if (map) { - if (v instanceof View) { - map.delete(v.viewId); - } - else { - map.delete(v); - } - } - } - } - clearHeadViews(type) { - if (this.headviews.has(type)) { - this.headviews.delete(type); - } - } - getRootView() { - return this.__root__; - } - getInitData() { - return this.__data__; - } - __init__(data) { - if (data) { - this.__data__ = JSON.parse(data); - } - } - __onCreate__() { - this.onCreate(); - } - __onDestroy__() { - this.destroyed = true; - this.onDestroy(); - } - __onShow__() { - this.onShow(); - } - __onHidden__() { - this.onHidden(); - } - __build__(frame) { - this.__root__.width = frame.width; - this.__root__.height = frame.height; - this.__root__.children.length = 0; - this.build(this.__root__); - } - __response__(viewIds, callbackId) { - const v = this.retrospectView(viewIds); - if (v === undefined) { - loge(`Cannot find view for ${viewIds}`); - } - else { - const argumentsList = [callbackId]; - for (let i = 2; i < arguments.length; i++) { - argumentsList.push(arguments[i]); - } - return Reflect.apply(v.responseCallback, v, argumentsList); - } - } - retrospectView(ids) { - return ids.reduce((acc, cur) => { - if (acc === undefined) { - if (cur === this.__root__.viewId) { - return this.__root__; - } - for (let map of this.headviews.values()) { - if (map.has(cur)) { - return map.get(cur); - } - } - return undefined; + if (v instanceof View) { + map.delete(v.viewId); } else { - if (Reflect.has(acc, "subviewById")) { - return Reflect.apply(Reflect.get(acc, "subviewById"), acc, [cur]); - } - return acc; + map.delete(v); } - }, undefined); + } } - nativeRender(model) { - return this.context.callNative("shader", "render", model); + } + clearHeadViews(type) { + if (this.headviews.has(type)) { + this.headviews.delete(type); } - hookBeforeNativeCall() { - if (Environment.platform !== 'web') { - this.__root__.clean(); + } + getRootView() { + return this.__root__; + } + getInitData() { + return this.__data__; + } + __init__(data) { + if (data) { + this.__data__ = JSON.parse(data); + } + } + __onCreate__() { + this.onCreate(); + } + __onDestroy__() { + this.destroyed = true; + this.onDestroy(); + } + __onShow__() { + this.onShow(); + } + __onHidden__() { + this.onHidden(); + } + __build__(frame) { + this.__root__.width = frame.width; + this.__root__.height = frame.height; + this.__root__.children.length = 0; + this.build(this.__root__); + } + __response__(viewIds, callbackId) { + const v = this.retrospectView(viewIds); + if (v === undefined) { + loge(`Cannot find view for ${viewIds}`); + } + else { + const argumentsList = [callbackId]; + for (let i = 2; i < arguments.length; i++) { + argumentsList.push(arguments[i]); + } + return Reflect.apply(v.responseCallback, v, argumentsList); + } + } + retrospectView(ids) { + return ids.reduce((acc, cur) => { + if (acc === undefined) { + if (cur === this.__root__.viewId) { + return this.__root__; + } for (let map of this.headviews.values()) { - for (let v of map.values()) { - v.clean(); + if (map.has(cur)) { + return map.get(cur); + } + } + return undefined; + } + else { + if (Reflect.has(acc, "subviewById")) { + return Reflect.apply(Reflect.get(acc, "subviewById"), acc, [cur]); + } + return acc; + } + }, undefined); + } + nativeRender(model) { + return this.context.callNative("shader", "render", model); + } + hookBeforeNativeCall() { + if (Environment.platform !== 'web') { + this.__root__.clean(); + for (let map of this.headviews.values()) { + for (let v of map.values()) { + v.clean(); + } + } + } + } + hookAfterNativeCall() { + if (this.destroyed) { + return; + } + const promises = []; + if (Environment.platform !== 'web') { + //Here insert a native call to ensure the promise is resolved done. + nativeEmpty(); + if (this.__root__.isDirty()) { + const model = this.__root__.toModel(); + promises.push(this.nativeRender(model)); + } + for (let map of this.headviews.values()) { + for (let v of map.values()) { + if (v.isDirty()) { + const model = v.toModel(); + promises.push(this.nativeRender(model)); } } } } - hookAfterNativeCall() { - if (this.destroyed) { - return; - } - const promises = []; - if (Environment.platform !== 'web') { - //Here insert a native call to ensure the promise is resolved done. - nativeEmpty(); + else { + Promise.resolve().then(() => { if (this.__root__.isDirty()) { const model = this.__root__.toModel(); promises.push(this.nativeRender(model)); + this.__root__.clean(); } for (let map of this.headviews.values()) { for (let v of map.values()) { if (v.isDirty()) { const model = v.toModel(); promises.push(this.nativeRender(model)); + v.clean(); } } } - } - else { - Promise.resolve().then(() => { - if (this.__root__.isDirty()) { - const model = this.__root__.toModel(); - promises.push(this.nativeRender(model)); - this.__root__.clean(); - } - for (let map of this.headviews.values()) { - for (let v of map.values()) { - if (v.isDirty()) { - const model = v.toModel(); - promises.push(this.nativeRender(model)); - v.clean(); - } - } - } - }); - } - if (this.__rendering__) { - //skip - Promise.all(promises).then(_ => { - }); - } - else { - this.__rendering__ = true; - Promise.all(promises).then(_ => { - this.__rendering__ = false; - this.onRenderFinished(); - }); - } - } - onRenderFinished() { - this.onRenderFinishedCallback.forEach(e => { - e(); }); - this.onRenderFinishedCallback.length = 0; } - addOnRenderFinishedCallback(cb) { - this.onRenderFinishedCallback.push(cb); + if (this.__rendering__) { + //skip + Promise.all(promises).then(_ => { + }); + } + else { + this.__rendering__ = true; + Promise.all(promises).then(_ => { + this.__rendering__ = false; + this.onRenderFinished(); + }); } } - __decorate$2([ - NativeCall, - __metadata$2("design:type", Function), - __metadata$2("design:paramtypes", [String]), - __metadata$2("design:returntype", void 0) - ], Panel.prototype, "__init__", null); - __decorate$2([ - NativeCall, - __metadata$2("design:type", Function), - __metadata$2("design:paramtypes", []), - __metadata$2("design:returntype", void 0) - ], Panel.prototype, "__onCreate__", null); - __decorate$2([ - NativeCall, - __metadata$2("design:type", Function), - __metadata$2("design:paramtypes", []), - __metadata$2("design:returntype", void 0) - ], Panel.prototype, "__onDestroy__", null); - __decorate$2([ - NativeCall, - __metadata$2("design:type", Function), - __metadata$2("design:paramtypes", []), - __metadata$2("design:returntype", void 0) - ], Panel.prototype, "__onShow__", null); - __decorate$2([ - NativeCall, - __metadata$2("design:type", Function), - __metadata$2("design:paramtypes", []), - __metadata$2("design:returntype", void 0) - ], Panel.prototype, "__onHidden__", null); - __decorate$2([ - NativeCall, - __metadata$2("design:type", Function), - __metadata$2("design:paramtypes", [Object]), - __metadata$2("design:returntype", void 0) - ], Panel.prototype, "__build__", null); - __decorate$2([ - NativeCall, - __metadata$2("design:type", Function), - __metadata$2("design:paramtypes", [Array, String]), - __metadata$2("design:returntype", void 0) - ], Panel.prototype, "__response__", null); - return Panel; -})(); + onRenderFinished() { + this.onRenderFinishedCallback.forEach(e => { + e(); + }); + this.onRenderFinishedCallback.length = 0; + } + addOnRenderFinishedCallback(cb) { + this.onRenderFinishedCallback.push(cb); + } +} +__decorate$2([ + NativeCall, + __metadata$2("design:type", Function), + __metadata$2("design:paramtypes", [String]), + __metadata$2("design:returntype", void 0) +], Panel.prototype, "__init__", null); +__decorate$2([ + NativeCall, + __metadata$2("design:type", Function), + __metadata$2("design:paramtypes", []), + __metadata$2("design:returntype", void 0) +], Panel.prototype, "__onCreate__", null); +__decorate$2([ + NativeCall, + __metadata$2("design:type", Function), + __metadata$2("design:paramtypes", []), + __metadata$2("design:returntype", void 0) +], Panel.prototype, "__onDestroy__", null); +__decorate$2([ + NativeCall, + __metadata$2("design:type", Function), + __metadata$2("design:paramtypes", []), + __metadata$2("design:returntype", void 0) +], Panel.prototype, "__onShow__", null); +__decorate$2([ + NativeCall, + __metadata$2("design:type", Function), + __metadata$2("design:paramtypes", []), + __metadata$2("design:returntype", void 0) +], Panel.prototype, "__onHidden__", null); +__decorate$2([ + NativeCall, + __metadata$2("design:type", Function), + __metadata$2("design:paramtypes", [Object]), + __metadata$2("design:returntype", void 0) +], Panel.prototype, "__build__", null); +__decorate$2([ + NativeCall, + __metadata$2("design:type", Function), + __metadata$2("design:paramtypes", [Array, String]), + __metadata$2("design:returntype", void 0) +], Panel.prototype, "__response__", null); /* * Copyright [2019] [Doric.Pub] @@ -2681,60 +2669,57 @@ class AnimationSet { /** * Store color as format AARRGGBB or RRGGBB */ -let Color = /** @class */ (() => { - class Color { - constructor(v) { - this._value = 0; - this._value = v | 0x0; +class Color { + constructor(v) { + this._value = 0; + this._value = v | 0x0; + } + static parse(str) { + if (!str.startsWith("#")) { + throw new Error(`Parse color error with ${str}`); } - static parse(str) { - if (!str.startsWith("#")) { - throw new Error(`Parse color error with ${str}`); - } - const val = parseInt(str.substr(1), 16); - if (str.length === 7) { - return new Color(val | 0xff000000); - } - else if (str.length === 9) { - return new Color(val); - } - else { - throw new Error(`Parse color error with ${str}`); - } + const val = parseInt(str.substr(1), 16); + if (str.length === 7) { + return new Color(val | 0xff000000); } - static safeParse(str, defVal = Color.TRANSPARENT) { - let color = defVal; - try { - color = Color.parse(str); - } - catch (e) { - } - finally { - return color; - } + else if (str.length === 9) { + return new Color(val); } - alpha(v) { - v = v * 255; - return new Color((this._value & 0xffffff) | ((v & 0xff) << 24)); - } - toModel() { - return this._value; + else { + throw new Error(`Parse color error with ${str}`); } } - Color.BLACK = new Color(0xFF000000); - Color.DKGRAY = new Color(0xFF444444); - Color.GRAY = new Color(0xFF888888); - Color.LTGRAY = new Color(0xFFCCCCCC); - Color.WHITE = new Color(0xFFFFFFFF); - Color.RED = new Color(0xFFFF0000); - Color.GREEN = new Color(0xFF00FF00); - Color.BLUE = new Color(0xFF0000FF); - Color.YELLOW = new Color(0xFFFFFF00); - Color.CYAN = new Color(0xFF00FFFF); - Color.MAGENTA = new Color(0xFFFF00FF); - Color.TRANSPARENT = new Color(0); - return Color; -})(); + static safeParse(str, defVal = Color.TRANSPARENT) { + let color = defVal; + try { + color = Color.parse(str); + } + catch (e) { + } + finally { + return color; + } + } + alpha(v) { + v = v * 255; + return new Color((this._value & 0xffffff) | ((v & 0xff) << 24)); + } + toModel() { + return this._value; + } +} +Color.BLACK = new Color(0xFF000000); +Color.DKGRAY = new Color(0xFF444444); +Color.GRAY = new Color(0xFF888888); +Color.LTGRAY = new Color(0xFFCCCCCC); +Color.WHITE = new Color(0xFFFFFFFF); +Color.RED = new Color(0xFFFF0000); +Color.GREEN = new Color(0xFF00FF00); +Color.BLUE = new Color(0xFF0000FF); +Color.YELLOW = new Color(0xFFFFFF00); +Color.CYAN = new Color(0xFF00FFFF); +Color.MAGENTA = new Color(0xFFFF00FF); +Color.TRANSPARENT = new Color(0); (function (GradientOrientation) { /** draw the gradient from the top to the bottom */ GradientOrientation[GradientOrientation["TOP_BOTTOM"] = 0] = "TOP_BOTTOM"; @@ -2769,67 +2754,64 @@ var __metadata$3 = (undefined && undefined.__metadata) || function (k, v) { TruncateAt[TruncateAt["Start"] = 2] = "Start"; TruncateAt[TruncateAt["Clip"] = 3] = "Clip"; })(exports.TruncateAt || (exports.TruncateAt = {})); -let Text = /** @class */ (() => { - class Text extends View { - } - __decorate$3([ - Property, - __metadata$3("design:type", String) - ], Text.prototype, "text", void 0); - __decorate$3([ - Property, - __metadata$3("design:type", Color) - ], Text.prototype, "textColor", void 0); - __decorate$3([ - Property, - __metadata$3("design:type", Number) - ], Text.prototype, "textSize", void 0); - __decorate$3([ - Property, - __metadata$3("design:type", Number) - ], Text.prototype, "maxLines", void 0); - __decorate$3([ - Property, - __metadata$3("design:type", Gravity) - ], Text.prototype, "textAlignment", void 0); - __decorate$3([ - Property, - __metadata$3("design:type", String) - ], Text.prototype, "fontStyle", void 0); - __decorate$3([ - Property, - __metadata$3("design:type", String) - ], Text.prototype, "font", void 0); - __decorate$3([ - Property, - __metadata$3("design:type", Number) - ], Text.prototype, "maxWidth", void 0); - __decorate$3([ - Property, - __metadata$3("design:type", Number) - ], Text.prototype, "maxHeight", void 0); - __decorate$3([ - Property, - __metadata$3("design:type", Number) - ], Text.prototype, "lineSpacing", void 0); - __decorate$3([ - Property, - __metadata$3("design:type", Boolean) - ], Text.prototype, "strikethrough", void 0); - __decorate$3([ - Property, - __metadata$3("design:type", Boolean) - ], Text.prototype, "underline", void 0); - __decorate$3([ - Property, - __metadata$3("design:type", String) - ], Text.prototype, "htmlText", void 0); - __decorate$3([ - Property, - __metadata$3("design:type", Number) - ], Text.prototype, "truncateAt", void 0); - return Text; -})(); +class Text extends View { +} +__decorate$3([ + Property, + __metadata$3("design:type", String) +], Text.prototype, "text", void 0); +__decorate$3([ + Property, + __metadata$3("design:type", Color) +], Text.prototype, "textColor", void 0); +__decorate$3([ + Property, + __metadata$3("design:type", Number) +], Text.prototype, "textSize", void 0); +__decorate$3([ + Property, + __metadata$3("design:type", Number) +], Text.prototype, "maxLines", void 0); +__decorate$3([ + Property, + __metadata$3("design:type", Gravity) +], Text.prototype, "textAlignment", void 0); +__decorate$3([ + Property, + __metadata$3("design:type", String) +], Text.prototype, "fontStyle", void 0); +__decorate$3([ + Property, + __metadata$3("design:type", String) +], Text.prototype, "font", void 0); +__decorate$3([ + Property, + __metadata$3("design:type", Number) +], Text.prototype, "maxWidth", void 0); +__decorate$3([ + Property, + __metadata$3("design:type", Number) +], Text.prototype, "maxHeight", void 0); +__decorate$3([ + Property, + __metadata$3("design:type", Number) +], Text.prototype, "lineSpacing", void 0); +__decorate$3([ + Property, + __metadata$3("design:type", Boolean) +], Text.prototype, "strikethrough", void 0); +__decorate$3([ + Property, + __metadata$3("design:type", Boolean) +], Text.prototype, "underline", void 0); +__decorate$3([ + Property, + __metadata$3("design:type", String) +], Text.prototype, "htmlText", void 0); +__decorate$3([ + Property, + __metadata$3("design:type", Number) +], Text.prototype, "truncateAt", void 0); function text(config) { const ret = new Text; ret.layoutConfig = layoutConfig().fit(); @@ -2853,76 +2835,73 @@ var __metadata$4 = (undefined && undefined.__metadata) || function (k, v) { ScaleType[ScaleType["ScaleAspectFit"] = 1] = "ScaleAspectFit"; ScaleType[ScaleType["ScaleAspectFill"] = 2] = "ScaleAspectFill"; })(exports.ScaleType || (exports.ScaleType = {})); -let Image = /** @class */ (() => { - class Image extends View { - } - __decorate$4([ - Property, - __metadata$4("design:type", String) - ], Image.prototype, "imageUrl", void 0); - __decorate$4([ - Property, - __metadata$4("design:type", String) - ], Image.prototype, "imagePath", void 0); - __decorate$4([ - Property, - __metadata$4("design:type", String) - ], Image.prototype, "imageRes", void 0); - __decorate$4([ - Property, - __metadata$4("design:type", String) - ], Image.prototype, "imageBase64", void 0); - __decorate$4([ - Property, - __metadata$4("design:type", Number) - ], Image.prototype, "scaleType", void 0); - __decorate$4([ - Property, - __metadata$4("design:type", Boolean) - ], Image.prototype, "isBlur", void 0); - __decorate$4([ - Property, - __metadata$4("design:type", String) - ], Image.prototype, "placeHolderImage", void 0); - __decorate$4([ - Property, - __metadata$4("design:type", String) - ], Image.prototype, "placeHolderImageBase64", void 0); - __decorate$4([ - Property, - __metadata$4("design:type", Color - /** - * Display while image is failed to load - * It can be file name in local path - */ - ) - ], Image.prototype, "placeHolderColor", void 0); - __decorate$4([ - Property, - __metadata$4("design:type", String) - ], Image.prototype, "errorImage", void 0); - __decorate$4([ - Property, - __metadata$4("design:type", String) - ], Image.prototype, "errorImageBase64", void 0); - __decorate$4([ - Property, - __metadata$4("design:type", Color) - ], Image.prototype, "errorColor", void 0); - __decorate$4([ - Property, - __metadata$4("design:type", Function) - ], Image.prototype, "loadCallback", void 0); - __decorate$4([ - Property, - __metadata$4("design:type", Number) - ], Image.prototype, "imageScale", void 0); - __decorate$4([ - Property, - __metadata$4("design:type", Object) - ], Image.prototype, "stretchInset", void 0); - return Image; -})(); +class Image extends View { +} +__decorate$4([ + Property, + __metadata$4("design:type", String) +], Image.prototype, "imageUrl", void 0); +__decorate$4([ + Property, + __metadata$4("design:type", String) +], Image.prototype, "imagePath", void 0); +__decorate$4([ + Property, + __metadata$4("design:type", String) +], Image.prototype, "imageRes", void 0); +__decorate$4([ + Property, + __metadata$4("design:type", String) +], Image.prototype, "imageBase64", void 0); +__decorate$4([ + Property, + __metadata$4("design:type", Number) +], Image.prototype, "scaleType", void 0); +__decorate$4([ + Property, + __metadata$4("design:type", Boolean) +], Image.prototype, "isBlur", void 0); +__decorate$4([ + Property, + __metadata$4("design:type", String) +], Image.prototype, "placeHolderImage", void 0); +__decorate$4([ + Property, + __metadata$4("design:type", String) +], Image.prototype, "placeHolderImageBase64", void 0); +__decorate$4([ + Property, + __metadata$4("design:type", Color + /** + * Display while image is failed to load + * It can be file name in local path + */ + ) +], Image.prototype, "placeHolderColor", void 0); +__decorate$4([ + Property, + __metadata$4("design:type", String) +], Image.prototype, "errorImage", void 0); +__decorate$4([ + Property, + __metadata$4("design:type", String) +], Image.prototype, "errorImageBase64", void 0); +__decorate$4([ + Property, + __metadata$4("design:type", Color) +], Image.prototype, "errorColor", void 0); +__decorate$4([ + Property, + __metadata$4("design:type", Function) +], Image.prototype, "loadCallback", void 0); +__decorate$4([ + Property, + __metadata$4("design:type", Number) +], Image.prototype, "imageScale", void 0); +__decorate$4([ + Property, + __metadata$4("design:type", Object) +], Image.prototype, "stretchInset", void 0); function image(config) { const ret = new Image; ret.layoutConfig = layoutConfig().fit(); @@ -2956,106 +2935,100 @@ var __decorate$5 = (undefined && undefined.__decorate) || function (decorators, var __metadata$5 = (undefined && undefined.__metadata) || function (k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; -let ListItem = /** @class */ (() => { - class ListItem extends Stack { +class ListItem extends Stack { +} +__decorate$5([ + Property, + __metadata$5("design:type", String) +], ListItem.prototype, "identifier", void 0); +class List extends Superview { + constructor() { + super(...arguments); + this.cachedViews = new Map; + this.ignoreDirtyCallOnce = false; + this.itemCount = 0; + this.batchCount = 15; } - __decorate$5([ - Property, - __metadata$5("design:type", String) - ], ListItem.prototype, "identifier", void 0); - return ListItem; -})(); -let List = /** @class */ (() => { - class List extends Superview { - constructor() { - super(...arguments); - this.cachedViews = new Map; + allSubviews() { + if (this.loadMoreView) { + return [...this.cachedViews.values(), this.loadMoreView]; + } + else { + return this.cachedViews.values(); + } + } + scrollToItem(context, index, config) { + const animated = config === null || config === void 0 ? void 0 : config.animated; + return this.nativeChannel(context, 'scrollToItem')({ index, animated, }); + } + reset() { + this.cachedViews.clear(); + this.itemCount = 0; + } + getItem(itemIdx) { + let view = this.renderItem(itemIdx); + view.superview = this; + this.cachedViews.set(`${itemIdx}`, view); + return view; + } + isDirty() { + if (this.ignoreDirtyCallOnce) { this.ignoreDirtyCallOnce = false; - this.itemCount = 0; - this.batchCount = 15; - } - allSubviews() { - if (this.loadMoreView) { - return [...this.cachedViews.values(), this.loadMoreView]; - } - else { - return this.cachedViews.values(); - } - } - scrollToItem(context, index, config) { - const animated = config === null || config === void 0 ? void 0 : config.animated; - return this.nativeChannel(context, 'scrollToItem')({ index, animated, }); - } - reset() { - this.cachedViews.clear(); - this.itemCount = 0; - } - getItem(itemIdx) { - let view = this.renderItem(itemIdx); - view.superview = this; - this.cachedViews.set(`${itemIdx}`, view); - return view; - } - isDirty() { - if (this.ignoreDirtyCallOnce) { - this.ignoreDirtyCallOnce = false; - //Ignore the dirty call once. - return false; - } - return super.isDirty(); - } - renderBunchedItems(start, length) { - this.ignoreDirtyCallOnce = true; - return new Array(Math.max(0, Math.min(length, this.itemCount - start))).fill(0).map((_, idx) => { - const listItem = this.getItem(start + idx); - return listItem.toModel(); - }); - } - toModel() { - if (this.loadMoreView) { - this.dirtyProps['loadMoreView'] = this.loadMoreView.viewId; - } - return super.toModel(); + //Ignore the dirty call once. + return false; } + return super.isDirty(); } - __decorate$5([ - Property, - __metadata$5("design:type", Object) - ], List.prototype, "itemCount", void 0); - __decorate$5([ - Property, - __metadata$5("design:type", Function) - ], List.prototype, "renderItem", void 0); - __decorate$5([ - Property, - __metadata$5("design:type", Object) - ], List.prototype, "batchCount", void 0); - __decorate$5([ - Property, - __metadata$5("design:type", Function) - ], List.prototype, "onLoadMore", void 0); - __decorate$5([ - Property, - __metadata$5("design:type", Boolean) - ], List.prototype, "loadMore", void 0); - __decorate$5([ - Property, - __metadata$5("design:type", ListItem) - ], List.prototype, "loadMoreView", void 0); - __decorate$5([ - Property, - __metadata$5("design:type", Function) - ], List.prototype, "onScroll", void 0); - __decorate$5([ - Property, - __metadata$5("design:type", Function) - ], List.prototype, "onScrollEnd", void 0); - __decorate$5([ - Property, - __metadata$5("design:type", Number) - ], List.prototype, "scrolledPosition", void 0); - return List; -})(); + renderBunchedItems(start, length) { + this.ignoreDirtyCallOnce = true; + return new Array(Math.max(0, Math.min(length, this.itemCount - start))).fill(0).map((_, idx) => { + const listItem = this.getItem(start + idx); + return listItem.toModel(); + }); + } + toModel() { + if (this.loadMoreView) { + this.dirtyProps['loadMoreView'] = this.loadMoreView.viewId; + } + return super.toModel(); + } +} +__decorate$5([ + Property, + __metadata$5("design:type", Object) +], List.prototype, "itemCount", void 0); +__decorate$5([ + Property, + __metadata$5("design:type", Function) +], List.prototype, "renderItem", void 0); +__decorate$5([ + Property, + __metadata$5("design:type", Object) +], List.prototype, "batchCount", void 0); +__decorate$5([ + Property, + __metadata$5("design:type", Function) +], List.prototype, "onLoadMore", void 0); +__decorate$5([ + Property, + __metadata$5("design:type", Boolean) +], List.prototype, "loadMore", void 0); +__decorate$5([ + Property, + __metadata$5("design:type", ListItem) +], List.prototype, "loadMoreView", void 0); +__decorate$5([ + Property, + __metadata$5("design:type", Function) +], List.prototype, "onScroll", void 0); +__decorate$5([ + Property, + __metadata$5("design:type", Function) +], List.prototype, "onScrollEnd", void 0); +__decorate$5([ + Property, + __metadata$5("design:type", Number) +], List.prototype, "scrolledPosition", void 0); function list(config) { const ret = new List; for (let key in config) { @@ -3091,77 +3064,71 @@ var __decorate$6 = (undefined && undefined.__decorate) || function (decorators, var __metadata$6 = (undefined && undefined.__metadata) || function (k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; -let SlideItem = /** @class */ (() => { - class SlideItem extends Stack { +class SlideItem extends Stack { +} +__decorate$6([ + Property, + __metadata$6("design:type", String) +], SlideItem.prototype, "identifier", void 0); +class Slider extends Superview { + constructor() { + super(...arguments); + this.cachedViews = new Map; + this.ignoreDirtyCallOnce = false; + this.itemCount = 0; + this.batchCount = 3; } - __decorate$6([ - Property, - __metadata$6("design:type", String) - ], SlideItem.prototype, "identifier", void 0); - return SlideItem; -})(); -let Slider = /** @class */ (() => { - class Slider extends Superview { - constructor() { - super(...arguments); - this.cachedViews = new Map; + allSubviews() { + return this.cachedViews.values(); + } + getItem(itemIdx) { + let view = this.renderPage(itemIdx); + view.superview = this; + this.cachedViews.set(`${itemIdx}`, view); + return view; + } + isDirty() { + if (this.ignoreDirtyCallOnce) { this.ignoreDirtyCallOnce = false; - this.itemCount = 0; - this.batchCount = 3; - } - allSubviews() { - return this.cachedViews.values(); - } - getItem(itemIdx) { - let view = this.renderPage(itemIdx); - view.superview = this; - this.cachedViews.set(`${itemIdx}`, view); - return view; - } - isDirty() { - if (this.ignoreDirtyCallOnce) { - this.ignoreDirtyCallOnce = false; - //Ignore the dirty call once. - return false; - } - return super.isDirty(); - } - renderBunchedItems(start, length) { - this.ignoreDirtyCallOnce = true; - return new Array(Math.min(length, this.itemCount - start)).fill(0).map((_, idx) => { - const slideItem = this.getItem(start + idx); - return slideItem.toModel(); - }); - } - slidePage(context, page, smooth = false) { - return this.nativeChannel(context, "slidePage")({ page, smooth }); - } - getSlidedPage(context) { - return this.nativeChannel(context, "getSlidedPage")(); + //Ignore the dirty call once. + return false; } + return super.isDirty(); } - __decorate$6([ - Property, - __metadata$6("design:type", Object) - ], Slider.prototype, "itemCount", void 0); - __decorate$6([ - Property, - __metadata$6("design:type", Function) - ], Slider.prototype, "renderPage", void 0); - __decorate$6([ - Property, - __metadata$6("design:type", Object) - ], Slider.prototype, "batchCount", void 0); - __decorate$6([ - Property, - __metadata$6("design:type", Function) - ], Slider.prototype, "onPageSlided", void 0); - __decorate$6([ - Property, - __metadata$6("design:type", Boolean) - ], Slider.prototype, "loop", void 0); - return Slider; -})(); + renderBunchedItems(start, length) { + this.ignoreDirtyCallOnce = true; + return new Array(Math.min(length, this.itemCount - start)).fill(0).map((_, idx) => { + const slideItem = this.getItem(start + idx); + return slideItem.toModel(); + }); + } + slidePage(context, page, smooth = false) { + return this.nativeChannel(context, "slidePage")({ page, smooth }); + } + getSlidedPage(context) { + return this.nativeChannel(context, "getSlidedPage")(); + } +} +__decorate$6([ + Property, + __metadata$6("design:type", Object) +], Slider.prototype, "itemCount", void 0); +__decorate$6([ + Property, + __metadata$6("design:type", Function) +], Slider.prototype, "renderPage", void 0); +__decorate$6([ + Property, + __metadata$6("design:type", Object) +], Slider.prototype, "batchCount", void 0); +__decorate$6([ + Property, + __metadata$6("design:type", Function) +], Slider.prototype, "onPageSlided", void 0); +__decorate$6([ + Property, + __metadata$6("design:type", Boolean) +], Slider.prototype, "loop", void 0); function slider(config) { const ret = new Slider; for (let key in config) { @@ -3208,36 +3175,33 @@ function scroller(content, config) { v.content = content; }); } -let Scroller = /** @class */ (() => { - class Scroller extends Superview { - allSubviews() { - return [this.content]; - } - toModel() { - this.dirtyProps.content = this.content.viewId; - return super.toModel(); - } - scrollTo(context, offset, animated) { - return this.nativeChannel(context, "scrollTo")({ offset, animated }); - } - scrollBy(context, offset, animated) { - return this.nativeChannel(context, "scrollBy")({ offset, animated }); - } +class Scroller extends Superview { + allSubviews() { + return [this.content]; } - __decorate$7([ - Property, - __metadata$7("design:type", Object) - ], Scroller.prototype, "contentOffset", void 0); - __decorate$7([ - Property, - __metadata$7("design:type", Function) - ], Scroller.prototype, "onScroll", void 0); - __decorate$7([ - Property, - __metadata$7("design:type", Function) - ], Scroller.prototype, "onScrollEnd", void 0); - return Scroller; -})(); + toModel() { + this.dirtyProps.content = this.content.viewId; + return super.toModel(); + } + scrollTo(context, offset, animated) { + return this.nativeChannel(context, "scrollTo")({ offset, animated }); + } + scrollBy(context, offset, animated) { + return this.nativeChannel(context, "scrollBy")({ offset, animated }); + } +} +__decorate$7([ + Property, + __metadata$7("design:type", Object) +], Scroller.prototype, "contentOffset", void 0); +__decorate$7([ + Property, + __metadata$7("design:type", Function) +], Scroller.prototype, "onScroll", void 0); +__decorate$7([ + Property, + __metadata$7("design:type", Function) +], Scroller.prototype, "onScrollEnd", void 0); var __decorate$8 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; @@ -3248,39 +3212,36 @@ var __decorate$8 = (undefined && undefined.__decorate) || function (decorators, var __metadata$8 = (undefined && undefined.__metadata) || function (k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; -let Refreshable = /** @class */ (() => { - class Refreshable extends Superview { - allSubviews() { - const ret = [this.content]; - if (this.header) { - ret.push(this.header); - } - return ret; - } - setRefreshable(context, refreshable) { - return this.nativeChannel(context, 'setRefreshable')(refreshable); - } - setRefreshing(context, refreshing) { - return this.nativeChannel(context, 'setRefreshing')(refreshing); - } - isRefreshable(context) { - return this.nativeChannel(context, 'isRefreshable')(); - } - isRefreshing(context) { - return this.nativeChannel(context, 'isRefreshing')(); - } - toModel() { - this.dirtyProps.content = this.content.viewId; - this.dirtyProps.header = (this.header || {}).viewId; - return super.toModel(); +class Refreshable extends Superview { + allSubviews() { + const ret = [this.content]; + if (this.header) { + ret.push(this.header); } + return ret; } - __decorate$8([ - Property, - __metadata$8("design:type", Function) - ], Refreshable.prototype, "onRefresh", void 0); - return Refreshable; -})(); + setRefreshable(context, refreshable) { + return this.nativeChannel(context, 'setRefreshable')(refreshable); + } + setRefreshing(context, refreshing) { + return this.nativeChannel(context, 'setRefreshing')(refreshing); + } + isRefreshable(context) { + return this.nativeChannel(context, 'isRefreshable')(); + } + isRefreshing(context) { + return this.nativeChannel(context, 'isRefreshing')(); + } + toModel() { + this.dirtyProps.content = this.content.viewId; + this.dirtyProps.header = (this.header || {}).viewId; + return super.toModel(); + } +} +__decorate$8([ + Property, + __metadata$8("design:type", Function) +], Refreshable.prototype, "onRefresh", void 0); function refreshable(config) { const ret = new Refreshable; ret.layoutConfig = layoutConfig().fit(); @@ -3303,32 +3264,29 @@ var ValueType; ValueType[ValueType["Percent"] = 2] = "Percent"; ValueType[ValueType["Auto"] = 3] = "Auto"; })(ValueType || (ValueType = {})); -let FlexTypedValue = /** @class */ (() => { - class FlexTypedValue { - constructor(type) { - this.value = 0; - this.type = type; - } - static percent(v) { - const ret = new FlexTypedValue(ValueType.Percent); - ret.value = v; - return ret; - } - static point(v) { - const ret = new FlexTypedValue(ValueType.Point); - ret.value = v; - return ret; - } - toModel() { - return { - type: this.type, - value: this.value, - }; - } +class FlexTypedValue { + constructor(type) { + this.value = 0; + this.type = type; } - FlexTypedValue.Auto = new FlexTypedValue(ValueType.Auto); - return FlexTypedValue; -})(); + static percent(v) { + const ret = new FlexTypedValue(ValueType.Percent); + ret.value = v; + return ret; + } + static point(v) { + const ret = new FlexTypedValue(ValueType.Point); + ret.value = v; + return ret; + } + toModel() { + return { + type: this.type, + value: this.value, + }; + } +} +FlexTypedValue.Auto = new FlexTypedValue(ValueType.Auto); (function (FlexDirection) { FlexDirection[FlexDirection["COLUMN"] = 0] = "COLUMN"; FlexDirection[FlexDirection["COLUMN_REVERSE"] = 1] = "COLUMN_REVERSE"; @@ -3386,111 +3344,105 @@ var __decorate$9 = (undefined && undefined.__decorate) || function (decorators, var __metadata$9 = (undefined && undefined.__metadata) || function (k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; -let FlowLayoutItem = /** @class */ (() => { - class FlowLayoutItem extends Stack { +class FlowLayoutItem extends Stack { +} +__decorate$9([ + Property, + __metadata$9("design:type", String) +], FlowLayoutItem.prototype, "identifier", void 0); +class FlowLayout extends Superview { + constructor() { + super(...arguments); + this.cachedViews = new Map; + this.ignoreDirtyCallOnce = false; + this.columnCount = 2; + this.itemCount = 0; + this.batchCount = 15; } - __decorate$9([ - Property, - __metadata$9("design:type", String) - ], FlowLayoutItem.prototype, "identifier", void 0); - return FlowLayoutItem; -})(); -let FlowLayout = /** @class */ (() => { - class FlowLayout extends Superview { - constructor() { - super(...arguments); - this.cachedViews = new Map; + allSubviews() { + if (this.loadMoreView) { + return [...this.cachedViews.values(), this.loadMoreView]; + } + else { + return this.cachedViews.values(); + } + } + reset() { + this.cachedViews.clear(); + this.itemCount = 0; + } + getItem(itemIdx) { + let view = this.renderItem(itemIdx); + view.superview = this; + this.cachedViews.set(`${itemIdx}`, view); + return view; + } + isDirty() { + if (this.ignoreDirtyCallOnce) { this.ignoreDirtyCallOnce = false; - this.columnCount = 2; - this.itemCount = 0; - this.batchCount = 15; - } - allSubviews() { - if (this.loadMoreView) { - return [...this.cachedViews.values(), this.loadMoreView]; - } - else { - return this.cachedViews.values(); - } - } - reset() { - this.cachedViews.clear(); - this.itemCount = 0; - } - getItem(itemIdx) { - let view = this.renderItem(itemIdx); - view.superview = this; - this.cachedViews.set(`${itemIdx}`, view); - return view; - } - isDirty() { - if (this.ignoreDirtyCallOnce) { - this.ignoreDirtyCallOnce = false; - //Ignore the dirty call once. - return false; - } - return super.isDirty(); - } - renderBunchedItems(start, length) { - this.ignoreDirtyCallOnce = true; - return new Array(Math.min(length, this.itemCount - start)).fill(0).map((_, idx) => { - const listItem = this.getItem(start + idx); - return listItem.toModel(); - }); - } - toModel() { - if (this.loadMoreView) { - this.dirtyProps['loadMoreView'] = this.loadMoreView.viewId; - } - return super.toModel(); + //Ignore the dirty call once. + return false; } + return super.isDirty(); } - __decorate$9([ - Property, - __metadata$9("design:type", Object) - ], FlowLayout.prototype, "columnCount", void 0); - __decorate$9([ - Property, - __metadata$9("design:type", Number) - ], FlowLayout.prototype, "columnSpace", void 0); - __decorate$9([ - Property, - __metadata$9("design:type", Number) - ], FlowLayout.prototype, "rowSpace", void 0); - __decorate$9([ - Property, - __metadata$9("design:type", Object) - ], FlowLayout.prototype, "itemCount", void 0); - __decorate$9([ - Property, - __metadata$9("design:type", Function) - ], FlowLayout.prototype, "renderItem", void 0); - __decorate$9([ - Property, - __metadata$9("design:type", Object) - ], FlowLayout.prototype, "batchCount", void 0); - __decorate$9([ - Property, - __metadata$9("design:type", Function) - ], FlowLayout.prototype, "onLoadMore", void 0); - __decorate$9([ - Property, - __metadata$9("design:type", Boolean) - ], FlowLayout.prototype, "loadMore", void 0); - __decorate$9([ - Property, - __metadata$9("design:type", FlowLayoutItem) - ], FlowLayout.prototype, "loadMoreView", void 0); - __decorate$9([ - Property, - __metadata$9("design:type", Function) - ], FlowLayout.prototype, "onScroll", void 0); - __decorate$9([ - Property, - __metadata$9("design:type", Function) - ], FlowLayout.prototype, "onScrollEnd", void 0); - return FlowLayout; -})(); + renderBunchedItems(start, length) { + this.ignoreDirtyCallOnce = true; + return new Array(Math.min(length, this.itemCount - start)).fill(0).map((_, idx) => { + const listItem = this.getItem(start + idx); + return listItem.toModel(); + }); + } + toModel() { + if (this.loadMoreView) { + this.dirtyProps['loadMoreView'] = this.loadMoreView.viewId; + } + return super.toModel(); + } +} +__decorate$9([ + Property, + __metadata$9("design:type", Object) +], FlowLayout.prototype, "columnCount", void 0); +__decorate$9([ + Property, + __metadata$9("design:type", Number) +], FlowLayout.prototype, "columnSpace", void 0); +__decorate$9([ + Property, + __metadata$9("design:type", Number) +], FlowLayout.prototype, "rowSpace", void 0); +__decorate$9([ + Property, + __metadata$9("design:type", Object) +], FlowLayout.prototype, "itemCount", void 0); +__decorate$9([ + Property, + __metadata$9("design:type", Function) +], FlowLayout.prototype, "renderItem", void 0); +__decorate$9([ + Property, + __metadata$9("design:type", Object) +], FlowLayout.prototype, "batchCount", void 0); +__decorate$9([ + Property, + __metadata$9("design:type", Function) +], FlowLayout.prototype, "onLoadMore", void 0); +__decorate$9([ + Property, + __metadata$9("design:type", Boolean) +], FlowLayout.prototype, "loadMore", void 0); +__decorate$9([ + Property, + __metadata$9("design:type", FlowLayoutItem) +], FlowLayout.prototype, "loadMoreView", void 0); +__decorate$9([ + Property, + __metadata$9("design:type", Function) +], FlowLayout.prototype, "onScroll", void 0); +__decorate$9([ + Property, + __metadata$9("design:type", Function) +], FlowLayout.prototype, "onScrollEnd", void 0); function flowlayout(config) { const ret = new FlowLayout; for (let key in config) { @@ -3526,70 +3478,67 @@ var __decorate$a = (undefined && undefined.__decorate) || function (decorators, var __metadata$a = (undefined && undefined.__metadata) || function (k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; -let Input = /** @class */ (() => { - class Input extends View { - getText(context) { - return this.nativeChannel(context, 'getText')(); - } - setSelection(context, start, end = start) { - return this.nativeChannel(context, 'setSelection')({ - start, - end, - }); - } - requestFocus(context) { - return this.nativeChannel(context, 'requestFocus')(); - } - releaseFocus(context) { - return this.nativeChannel(context, 'releaseFocus')(); - } +class Input extends View { + getText(context) { + return this.nativeChannel(context, 'getText')(); } - __decorate$a([ - Property, - __metadata$a("design:type", String) - ], Input.prototype, "text", void 0); - __decorate$a([ - Property, - __metadata$a("design:type", Color) - ], Input.prototype, "textColor", void 0); - __decorate$a([ - Property, - __metadata$a("design:type", Number) - ], Input.prototype, "textSize", void 0); - __decorate$a([ - Property, - __metadata$a("design:type", String) - ], Input.prototype, "hintText", void 0); - __decorate$a([ - Property, - __metadata$a("design:type", Number) - ], Input.prototype, "inputType", void 0); - __decorate$a([ - Property, - __metadata$a("design:type", Color) - ], Input.prototype, "hintTextColor", void 0); - __decorate$a([ - Property, - __metadata$a("design:type", Boolean) - ], Input.prototype, "multiline", void 0); - __decorate$a([ - Property, - __metadata$a("design:type", Gravity) - ], Input.prototype, "textAlignment", void 0); - __decorate$a([ - Property, - __metadata$a("design:type", Function) - ], Input.prototype, "onTextChange", void 0); - __decorate$a([ - Property, - __metadata$a("design:type", Function) - ], Input.prototype, "onFocusChange", void 0); - __decorate$a([ - Property, - __metadata$a("design:type", Number) - ], Input.prototype, "maxLength", void 0); - return Input; -})(); + setSelection(context, start, end = start) { + return this.nativeChannel(context, 'setSelection')({ + start, + end, + }); + } + requestFocus(context) { + return this.nativeChannel(context, 'requestFocus')(); + } + releaseFocus(context) { + return this.nativeChannel(context, 'releaseFocus')(); + } +} +__decorate$a([ + Property, + __metadata$a("design:type", String) +], Input.prototype, "text", void 0); +__decorate$a([ + Property, + __metadata$a("design:type", Color) +], Input.prototype, "textColor", void 0); +__decorate$a([ + Property, + __metadata$a("design:type", Number) +], Input.prototype, "textSize", void 0); +__decorate$a([ + Property, + __metadata$a("design:type", String) +], Input.prototype, "hintText", void 0); +__decorate$a([ + Property, + __metadata$a("design:type", Number) +], Input.prototype, "inputType", void 0); +__decorate$a([ + Property, + __metadata$a("design:type", Color) +], Input.prototype, "hintTextColor", void 0); +__decorate$a([ + Property, + __metadata$a("design:type", Boolean) +], Input.prototype, "multiline", void 0); +__decorate$a([ + Property, + __metadata$a("design:type", Gravity) +], Input.prototype, "textAlignment", void 0); +__decorate$a([ + Property, + __metadata$a("design:type", Function) +], Input.prototype, "onTextChange", void 0); +__decorate$a([ + Property, + __metadata$a("design:type", Function) +], Input.prototype, "onFocusChange", void 0); +__decorate$a([ + Property, + __metadata$a("design:type", Number) +], Input.prototype, "maxLength", void 0); (function (InputType) { InputType[InputType["Default"] = 0] = "Default"; InputType[InputType["Number"] = 1] = "Number"; @@ -3615,24 +3564,21 @@ var __decorate$b = (undefined && undefined.__decorate) || function (decorators, var __metadata$b = (undefined && undefined.__metadata) || function (k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; -let NestedSlider = /** @class */ (() => { - class NestedSlider extends Group { - addSlideItem(view) { - this.addChild(view); - } - slidePage(context, page, smooth = false) { - return this.nativeChannel(context, "slidePage")({ page, smooth }); - } - getSlidedPage(context) { - return this.nativeChannel(context, "getSlidedPage")(); - } +class NestedSlider extends Group { + addSlideItem(view) { + this.addChild(view); } - __decorate$b([ - Property, - __metadata$b("design:type", Function) - ], NestedSlider.prototype, "onPageSlided", void 0); - return NestedSlider; -})(); + slidePage(context, page, smooth = false) { + return this.nativeChannel(context, "slidePage")({ page, smooth }); + } + getSlidedPage(context) { + return this.nativeChannel(context, "getSlidedPage")(); + } +} +__decorate$b([ + Property, + __metadata$b("design:type", Function) +], NestedSlider.prototype, "onPageSlided", void 0); var __decorate$c = (undefined && undefined.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; @@ -3643,15 +3589,12 @@ var __decorate$c = (undefined && undefined.__decorate) || function (decorators, var __metadata$c = (undefined && undefined.__metadata) || function (k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; -let Draggable = /** @class */ (() => { - class Draggable extends Stack { - } - __decorate$c([ - Property, - __metadata$c("design:type", Function) - ], Draggable.prototype, "onDrag", void 0); - return Draggable; -})(); +class Draggable extends Stack { +} +__decorate$c([ + Property, + __metadata$c("design:type", Function) +], Draggable.prototype, "onDrag", void 0); function draggable(views, config) { const ret = new Draggable; ret.layoutConfig = layoutConfig().fit(); @@ -3680,31 +3623,28 @@ var __decorate$d = (undefined && undefined.__decorate) || function (decorators, var __metadata$d = (undefined && undefined.__metadata) || function (k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; -let Switch = /** @class */ (() => { - class Switch extends View { - } - __decorate$d([ - Property, - __metadata$d("design:type", Boolean) - ], Switch.prototype, "state", void 0); - __decorate$d([ - Property, - __metadata$d("design:type", Function) - ], Switch.prototype, "onSwitch", void 0); - __decorate$d([ - Property, - __metadata$d("design:type", Color) - ], Switch.prototype, "offTintColor", void 0); - __decorate$d([ - Property, - __metadata$d("design:type", Color) - ], Switch.prototype, "onTintColor", void 0); - __decorate$d([ - Property, - __metadata$d("design:type", Color) - ], Switch.prototype, "thumbTintColor", void 0); - return Switch; -})(); +class Switch extends View { +} +__decorate$d([ + Property, + __metadata$d("design:type", Boolean) +], Switch.prototype, "state", void 0); +__decorate$d([ + Property, + __metadata$d("design:type", Function) +], Switch.prototype, "onSwitch", void 0); +__decorate$d([ + Property, + __metadata$d("design:type", Color) +], Switch.prototype, "offTintColor", void 0); +__decorate$d([ + Property, + __metadata$d("design:type", Color) +], Switch.prototype, "onTintColor", void 0); +__decorate$d([ + Property, + __metadata$d("design:type", Color) +], Switch.prototype, "thumbTintColor", void 0); function switchView(config) { const ret = new Switch; ret.layoutConfig = layoutConfig().just(); diff --git a/doric-js/lib/src/ui/panel.js b/doric-js/lib/src/ui/panel.js index 87a85c63..84f5afe9 100644 --- a/doric-js/lib/src/ui/panel.js +++ b/doric-js/lib/src/ui/panel.js @@ -33,232 +33,228 @@ export function NativeCall(target, propertyKey, descriptor) { }; return descriptor; } -let Panel = /** @class */ (() => { - class Panel { - constructor() { - this.destroyed = false; - this.__root__ = new Root; - this.headviews = new Map; - this.onRenderFinishedCallback = []; - this.__rendering__ = false; +export class Panel { + constructor() { + this.destroyed = false; + this.__root__ = new Root; + this.headviews = new Map; + this.onRenderFinishedCallback = []; + this.__rendering__ = false; + } + onCreate() { } + onDestroy() { } + onShow() { } + onHidden() { } + addHeadView(type, v) { + let map = this.headviews.get(type); + if (map) { + map.set(v.viewId, v); } - onCreate() { } - onDestroy() { } - onShow() { } - onHidden() { } - addHeadView(type, v) { + else { + map = new Map; + map.set(v.viewId, v); + this.headviews.set(type, map); + } + } + allHeadViews() { + return this.headviews.values(); + } + removeHeadView(type, v) { + if (this.headviews.has(type)) { let map = this.headviews.get(type); if (map) { - map.set(v.viewId, v); - } - else { - map = new Map; - map.set(v.viewId, v); - this.headviews.set(type, map); - } - } - allHeadViews() { - return this.headviews.values(); - } - removeHeadView(type, v) { - if (this.headviews.has(type)) { - let map = this.headviews.get(type); - if (map) { - if (v instanceof View) { - map.delete(v.viewId); - } - else { - map.delete(v); - } - } - } - } - clearHeadViews(type) { - if (this.headviews.has(type)) { - this.headviews.delete(type); - } - } - getRootView() { - return this.__root__; - } - getInitData() { - return this.__data__; - } - __init__(data) { - if (data) { - this.__data__ = JSON.parse(data); - } - } - __onCreate__() { - this.onCreate(); - } - __onDestroy__() { - this.destroyed = true; - this.onDestroy(); - } - __onShow__() { - this.onShow(); - } - __onHidden__() { - this.onHidden(); - } - __build__(frame) { - this.__root__.width = frame.width; - this.__root__.height = frame.height; - this.__root__.children.length = 0; - this.build(this.__root__); - } - __response__(viewIds, callbackId) { - const v = this.retrospectView(viewIds); - if (v === undefined) { - loge(`Cannot find view for ${viewIds}`); - } - else { - const argumentsList = [callbackId]; - for (let i = 2; i < arguments.length; i++) { - argumentsList.push(arguments[i]); - } - return Reflect.apply(v.responseCallback, v, argumentsList); - } - } - retrospectView(ids) { - return ids.reduce((acc, cur) => { - if (acc === undefined) { - if (cur === this.__root__.viewId) { - return this.__root__; - } - for (let map of this.headviews.values()) { - if (map.has(cur)) { - return map.get(cur); - } - } - return undefined; + if (v instanceof View) { + map.delete(v.viewId); } else { - if (Reflect.has(acc, "subviewById")) { - return Reflect.apply(Reflect.get(acc, "subviewById"), acc, [cur]); - } - return acc; + map.delete(v); } - }, undefined); + } } - nativeRender(model) { - return this.context.callNative("shader", "render", model); + } + clearHeadViews(type) { + if (this.headviews.has(type)) { + this.headviews.delete(type); } - hookBeforeNativeCall() { - if (Environment.platform !== 'web') { - this.__root__.clean(); + } + getRootView() { + return this.__root__; + } + getInitData() { + return this.__data__; + } + __init__(data) { + if (data) { + this.__data__ = JSON.parse(data); + } + } + __onCreate__() { + this.onCreate(); + } + __onDestroy__() { + this.destroyed = true; + this.onDestroy(); + } + __onShow__() { + this.onShow(); + } + __onHidden__() { + this.onHidden(); + } + __build__(frame) { + this.__root__.width = frame.width; + this.__root__.height = frame.height; + this.__root__.children.length = 0; + this.build(this.__root__); + } + __response__(viewIds, callbackId) { + const v = this.retrospectView(viewIds); + if (v === undefined) { + loge(`Cannot find view for ${viewIds}`); + } + else { + const argumentsList = [callbackId]; + for (let i = 2; i < arguments.length; i++) { + argumentsList.push(arguments[i]); + } + return Reflect.apply(v.responseCallback, v, argumentsList); + } + } + retrospectView(ids) { + return ids.reduce((acc, cur) => { + if (acc === undefined) { + if (cur === this.__root__.viewId) { + return this.__root__; + } for (let map of this.headviews.values()) { - for (let v of map.values()) { - v.clean(); + if (map.has(cur)) { + return map.get(cur); + } + } + return undefined; + } + else { + if (Reflect.has(acc, "subviewById")) { + return Reflect.apply(Reflect.get(acc, "subviewById"), acc, [cur]); + } + return acc; + } + }, undefined); + } + nativeRender(model) { + return this.context.callNative("shader", "render", model); + } + hookBeforeNativeCall() { + if (Environment.platform !== 'web') { + this.__root__.clean(); + for (let map of this.headviews.values()) { + for (let v of map.values()) { + v.clean(); + } + } + } + } + hookAfterNativeCall() { + if (this.destroyed) { + return; + } + const promises = []; + if (Environment.platform !== 'web') { + //Here insert a native call to ensure the promise is resolved done. + nativeEmpty(); + if (this.__root__.isDirty()) { + const model = this.__root__.toModel(); + promises.push(this.nativeRender(model)); + } + for (let map of this.headviews.values()) { + for (let v of map.values()) { + if (v.isDirty()) { + const model = v.toModel(); + promises.push(this.nativeRender(model)); } } } } - hookAfterNativeCall() { - if (this.destroyed) { - return; - } - const promises = []; - if (Environment.platform !== 'web') { - //Here insert a native call to ensure the promise is resolved done. - nativeEmpty(); + else { + Promise.resolve().then(() => { if (this.__root__.isDirty()) { const model = this.__root__.toModel(); promises.push(this.nativeRender(model)); + this.__root__.clean(); } for (let map of this.headviews.values()) { for (let v of map.values()) { if (v.isDirty()) { const model = v.toModel(); promises.push(this.nativeRender(model)); + v.clean(); } } } - } - else { - Promise.resolve().then(() => { - if (this.__root__.isDirty()) { - const model = this.__root__.toModel(); - promises.push(this.nativeRender(model)); - this.__root__.clean(); - } - for (let map of this.headviews.values()) { - for (let v of map.values()) { - if (v.isDirty()) { - const model = v.toModel(); - promises.push(this.nativeRender(model)); - v.clean(); - } - } - } - }); - } - if (this.__rendering__) { - //skip - Promise.all(promises).then(_ => { - }); - } - else { - this.__rendering__ = true; - Promise.all(promises).then(_ => { - this.__rendering__ = false; - this.onRenderFinished(); - }); - } - } - onRenderFinished() { - this.onRenderFinishedCallback.forEach(e => { - e(); }); - this.onRenderFinishedCallback.length = 0; } - addOnRenderFinishedCallback(cb) { - this.onRenderFinishedCallback.push(cb); + if (this.__rendering__) { + //skip + Promise.all(promises).then(_ => { + }); + } + else { + this.__rendering__ = true; + Promise.all(promises).then(_ => { + this.__rendering__ = false; + this.onRenderFinished(); + }); } } - __decorate([ - NativeCall, - __metadata("design:type", Function), - __metadata("design:paramtypes", [String]), - __metadata("design:returntype", void 0) - ], Panel.prototype, "__init__", null); - __decorate([ - NativeCall, - __metadata("design:type", Function), - __metadata("design:paramtypes", []), - __metadata("design:returntype", void 0) - ], Panel.prototype, "__onCreate__", null); - __decorate([ - NativeCall, - __metadata("design:type", Function), - __metadata("design:paramtypes", []), - __metadata("design:returntype", void 0) - ], Panel.prototype, "__onDestroy__", null); - __decorate([ - NativeCall, - __metadata("design:type", Function), - __metadata("design:paramtypes", []), - __metadata("design:returntype", void 0) - ], Panel.prototype, "__onShow__", null); - __decorate([ - NativeCall, - __metadata("design:type", Function), - __metadata("design:paramtypes", []), - __metadata("design:returntype", void 0) - ], Panel.prototype, "__onHidden__", null); - __decorate([ - NativeCall, - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object]), - __metadata("design:returntype", void 0) - ], Panel.prototype, "__build__", null); - __decorate([ - NativeCall, - __metadata("design:type", Function), - __metadata("design:paramtypes", [Array, String]), - __metadata("design:returntype", void 0) - ], Panel.prototype, "__response__", null); - return Panel; -})(); -export { Panel }; + onRenderFinished() { + this.onRenderFinishedCallback.forEach(e => { + e(); + }); + this.onRenderFinishedCallback.length = 0; + } + addOnRenderFinishedCallback(cb) { + this.onRenderFinishedCallback.push(cb); + } +} +__decorate([ + NativeCall, + __metadata("design:type", Function), + __metadata("design:paramtypes", [String]), + __metadata("design:returntype", void 0) +], Panel.prototype, "__init__", null); +__decorate([ + NativeCall, + __metadata("design:type", Function), + __metadata("design:paramtypes", []), + __metadata("design:returntype", void 0) +], Panel.prototype, "__onCreate__", null); +__decorate([ + NativeCall, + __metadata("design:type", Function), + __metadata("design:paramtypes", []), + __metadata("design:returntype", void 0) +], Panel.prototype, "__onDestroy__", null); +__decorate([ + NativeCall, + __metadata("design:type", Function), + __metadata("design:paramtypes", []), + __metadata("design:returntype", void 0) +], Panel.prototype, "__onShow__", null); +__decorate([ + NativeCall, + __metadata("design:type", Function), + __metadata("design:paramtypes", []), + __metadata("design:returntype", void 0) +], Panel.prototype, "__onHidden__", null); +__decorate([ + NativeCall, + __metadata("design:type", Function), + __metadata("design:paramtypes", [Object]), + __metadata("design:returntype", void 0) +], Panel.prototype, "__build__", null); +__decorate([ + NativeCall, + __metadata("design:type", Function), + __metadata("design:paramtypes", [Array, String]), + __metadata("design:returntype", void 0) +], Panel.prototype, "__response__", null); diff --git a/doric-js/lib/src/ui/view.js b/doric-js/lib/src/ui/view.js index 42a83fe6..7feb7fe4 100644 --- a/doric-js/lib/src/ui/view.js +++ b/doric-js/lib/src/ui/view.js @@ -13,279 +13,275 @@ import { loge } from "../util/log"; export function Property(target, propKey) { Reflect.defineMetadata(propKey, true, target); } -let View = /** @class */ (() => { - class View { - constructor() { - this.width = 0; - this.height = 0; - this.x = 0; - this.y = 0; - this.viewId = uniqueId('ViewId'); - this.callbacks = new Map; - /** Anchor end*/ - this.__dirty_props__ = {}; - this.nativeViewModel = { - id: this.viewId, - type: this.constructor.name, - props: this.__dirty_props__, - }; - return new Proxy(this, { - get: (target, p, receiver) => { - return Reflect.get(target, p, receiver); - }, - set: (target, p, v, receiver) => { - const oldV = Reflect.get(target, p, receiver); - const ret = Reflect.set(target, p, v, receiver); - if (Reflect.getMetadata(p, target) && oldV !== v) { - receiver.onPropertyChanged(p.toString(), oldV, v); - } - return ret; +export class View { + constructor() { + this.width = 0; + this.height = 0; + this.x = 0; + this.y = 0; + this.viewId = uniqueId('ViewId'); + this.callbacks = new Map; + /** Anchor end*/ + this.__dirty_props__ = {}; + this.nativeViewModel = { + id: this.viewId, + type: this.constructor.name, + props: this.__dirty_props__, + }; + return new Proxy(this, { + get: (target, p, receiver) => { + return Reflect.get(target, p, receiver); + }, + set: (target, p, v, receiver) => { + const oldV = Reflect.get(target, p, receiver); + const ret = Reflect.set(target, p, v, receiver); + if (Reflect.getMetadata(p, target) && oldV !== v) { + receiver.onPropertyChanged(p.toString(), oldV, v); } - }); - } - callback2Id(f) { - const id = uniqueId('Function'); - this.callbacks.set(id, f); - return id; - } - id2Callback(id) { - let f = this.callbacks.get(id); - if (f === undefined) { - f = Reflect.get(this, id); + return ret; } - return f; + }); + } + callback2Id(f) { + const id = uniqueId('Function'); + this.callbacks.set(id, f); + return id; + } + id2Callback(id) { + let f = this.callbacks.get(id); + if (f === undefined) { + f = Reflect.get(this, id); } - /** Anchor start*/ - get left() { - return this.x; + return f; + } + /** Anchor start*/ + get left() { + return this.x; + } + set left(v) { + this.x = v; + } + get right() { + return this.x + this.width; + } + set right(v) { + this.x = v - this.width; + } + get top() { + return this.y; + } + set top(v) { + this.y = v; + } + get bottom() { + return this.y + this.height; + } + set bottom(v) { + this.y = v - this.height; + } + get centerX() { + return this.x + this.width / 2; + } + get centerY() { + return this.y + this.height / 2; + } + set centerX(v) { + this.x = v - this.width / 2; + } + set centerY(v) { + this.y = v - this.height / 2; + } + get dirtyProps() { + return this.__dirty_props__; + } + onPropertyChanged(propKey, oldV, newV) { + if (newV instanceof Function) { + newV = this.callback2Id(newV); } - set left(v) { - this.x = v; + else { + newV = obj2Model(newV); } - get right() { - return this.x + this.width; - } - set right(v) { - this.x = v - this.width; - } - get top() { - return this.y; - } - set top(v) { - this.y = v; - } - get bottom() { - return this.y + this.height; - } - set bottom(v) { - this.y = v - this.height; - } - get centerX() { - return this.x + this.width / 2; - } - get centerY() { - return this.y + this.height / 2; - } - set centerX(v) { - this.x = v - this.width / 2; - } - set centerY(v) { - this.y = v - this.height / 2; - } - get dirtyProps() { - return this.__dirty_props__; - } - onPropertyChanged(propKey, oldV, newV) { - if (newV instanceof Function) { - newV = this.callback2Id(newV); + this.__dirty_props__[propKey] = newV; + } + clean() { + for (const key in this.__dirty_props__) { + if (Reflect.has(this.__dirty_props__, key)) { + Reflect.deleteProperty(this.__dirty_props__, key); } - else { - newV = obj2Model(newV); - } - this.__dirty_props__[propKey] = newV; - } - clean() { - for (const key in this.__dirty_props__) { - if (Reflect.has(this.__dirty_props__, key)) { - Reflect.deleteProperty(this.__dirty_props__, key); - } - } - } - isDirty() { - return Reflect.ownKeys(this.__dirty_props__).length !== 0; - } - responseCallback(id, ...args) { - const f = this.id2Callback(id); - if (f instanceof Function) { - const argumentsList = []; - for (let i = 1; i < arguments.length; i++) { - argumentsList.push(arguments[i]); - } - return Reflect.apply(f, this, argumentsList); - } - else { - loge(`Cannot find callback:${id} for ${JSON.stringify(this.toModel())}`); - } - } - toModel() { - return this.nativeViewModel; - } - let(block) { - block(this); - } - also(block) { - block(this); - return this; - } - apply(config) { - for (let key in config) { - Reflect.set(this, key, Reflect.get(config, key, config), this); - } - return this; - } - in(group) { - group.addChild(this); - return this; - } - nativeChannel(context, name) { - let thisView = this; - return function (args = undefined) { - const viewIds = []; - while (thisView != undefined) { - viewIds.push(thisView.viewId); - thisView = thisView.superview; - } - const params = { - viewIds: viewIds.reverse(), - name, - args, - }; - return context.callNative('shader', 'command', params); - }; - } - getWidth(context) { - return this.nativeChannel(context, 'getWidth')(); - } - getHeight(context) { - return this.nativeChannel(context, 'getHeight')(); - } - getX(context) { - return this.nativeChannel(context, 'getX')(); - } - getY(context) { - return this.nativeChannel(context, 'getY')(); - } - getLocationOnScreen(context) { - return this.nativeChannel(context, "getLocationOnScreen")(); - } - doAnimation(context, animation) { - return this.nativeChannel(context, "doAnimation")(animation.toModel()).then((args) => { - for (let key in args) { - Reflect.set(this, key, Reflect.get(args, key, args), this); - Reflect.deleteProperty(this.__dirty_props__, key); - } - }); } } - __decorate([ - Property, - __metadata("design:type", Number) - ], View.prototype, "width", void 0); - __decorate([ - Property, - __metadata("design:type", Number) - ], View.prototype, "height", void 0); - __decorate([ - Property, - __metadata("design:type", Number) - ], View.prototype, "x", void 0); - __decorate([ - Property, - __metadata("design:type", Number) - ], View.prototype, "y", void 0); - __decorate([ - Property, - __metadata("design:type", Object) - ], View.prototype, "backgroundColor", void 0); - __decorate([ - Property, - __metadata("design:type", Object) - ], View.prototype, "corners", void 0); - __decorate([ - Property, - __metadata("design:type", Object) - ], View.prototype, "border", void 0); - __decorate([ - Property, - __metadata("design:type", Object) - ], View.prototype, "shadow", void 0); - __decorate([ - Property, - __metadata("design:type", Number) - ], View.prototype, "alpha", void 0); - __decorate([ - Property, - __metadata("design:type", Boolean) - ], View.prototype, "hidden", void 0); - __decorate([ - Property, - __metadata("design:type", Object) - ], View.prototype, "padding", void 0); - __decorate([ - Property, - __metadata("design:type", Object) - ], View.prototype, "layoutConfig", void 0); - __decorate([ - Property, - __metadata("design:type", Function) - ], View.prototype, "onClick", void 0); - __decorate([ - Property, - __metadata("design:type", Number) - ], View.prototype, "translationX", void 0); - __decorate([ - Property, - __metadata("design:type", Number) - ], View.prototype, "translationY", void 0); - __decorate([ - Property, - __metadata("design:type", Number) - ], View.prototype, "scaleX", void 0); - __decorate([ - Property, - __metadata("design:type", Number) - ], View.prototype, "scaleY", void 0); - __decorate([ - Property, - __metadata("design:type", Number) - ], View.prototype, "pivotX", void 0); - __decorate([ - Property, - __metadata("design:type", Number) - ], View.prototype, "pivotY", void 0); - __decorate([ - Property, - __metadata("design:type", Number) - ], View.prototype, "rotation", void 0); - __decorate([ - Property, - __metadata("design:type", Number) - ], View.prototype, "rotationX", void 0); - __decorate([ - Property, - __metadata("design:type", Number) - ], View.prototype, "rotationY", void 0); - __decorate([ - Property, - __metadata("design:type", Number) - ], View.prototype, "perspective", void 0); - __decorate([ - Property, - __metadata("design:type", Object) - ], View.prototype, "flexConfig", void 0); - return View; -})(); -export { View }; + isDirty() { + return Reflect.ownKeys(this.__dirty_props__).length !== 0; + } + responseCallback(id, ...args) { + const f = this.id2Callback(id); + if (f instanceof Function) { + const argumentsList = []; + for (let i = 1; i < arguments.length; i++) { + argumentsList.push(arguments[i]); + } + return Reflect.apply(f, this, argumentsList); + } + else { + loge(`Cannot find callback:${id} for ${JSON.stringify(this.toModel())}`); + } + } + toModel() { + return this.nativeViewModel; + } + let(block) { + block(this); + } + also(block) { + block(this); + return this; + } + apply(config) { + for (let key in config) { + Reflect.set(this, key, Reflect.get(config, key, config), this); + } + return this; + } + in(group) { + group.addChild(this); + return this; + } + nativeChannel(context, name) { + let thisView = this; + return function (args = undefined) { + const viewIds = []; + while (thisView != undefined) { + viewIds.push(thisView.viewId); + thisView = thisView.superview; + } + const params = { + viewIds: viewIds.reverse(), + name, + args, + }; + return context.callNative('shader', 'command', params); + }; + } + getWidth(context) { + return this.nativeChannel(context, 'getWidth')(); + } + getHeight(context) { + return this.nativeChannel(context, 'getHeight')(); + } + getX(context) { + return this.nativeChannel(context, 'getX')(); + } + getY(context) { + return this.nativeChannel(context, 'getY')(); + } + getLocationOnScreen(context) { + return this.nativeChannel(context, "getLocationOnScreen")(); + } + doAnimation(context, animation) { + return this.nativeChannel(context, "doAnimation")(animation.toModel()).then((args) => { + for (let key in args) { + Reflect.set(this, key, Reflect.get(args, key, args), this); + Reflect.deleteProperty(this.__dirty_props__, key); + } + }); + } +} +__decorate([ + Property, + __metadata("design:type", Number) +], View.prototype, "width", void 0); +__decorate([ + Property, + __metadata("design:type", Number) +], View.prototype, "height", void 0); +__decorate([ + Property, + __metadata("design:type", Number) +], View.prototype, "x", void 0); +__decorate([ + Property, + __metadata("design:type", Number) +], View.prototype, "y", void 0); +__decorate([ + Property, + __metadata("design:type", Object) +], View.prototype, "backgroundColor", void 0); +__decorate([ + Property, + __metadata("design:type", Object) +], View.prototype, "corners", void 0); +__decorate([ + Property, + __metadata("design:type", Object) +], View.prototype, "border", void 0); +__decorate([ + Property, + __metadata("design:type", Object) +], View.prototype, "shadow", void 0); +__decorate([ + Property, + __metadata("design:type", Number) +], View.prototype, "alpha", void 0); +__decorate([ + Property, + __metadata("design:type", Boolean) +], View.prototype, "hidden", void 0); +__decorate([ + Property, + __metadata("design:type", Object) +], View.prototype, "padding", void 0); +__decorate([ + Property, + __metadata("design:type", Object) +], View.prototype, "layoutConfig", void 0); +__decorate([ + Property, + __metadata("design:type", Function) +], View.prototype, "onClick", void 0); +__decorate([ + Property, + __metadata("design:type", Number) +], View.prototype, "translationX", void 0); +__decorate([ + Property, + __metadata("design:type", Number) +], View.prototype, "translationY", void 0); +__decorate([ + Property, + __metadata("design:type", Number) +], View.prototype, "scaleX", void 0); +__decorate([ + Property, + __metadata("design:type", Number) +], View.prototype, "scaleY", void 0); +__decorate([ + Property, + __metadata("design:type", Number) +], View.prototype, "pivotX", void 0); +__decorate([ + Property, + __metadata("design:type", Number) +], View.prototype, "pivotY", void 0); +__decorate([ + Property, + __metadata("design:type", Number) +], View.prototype, "rotation", void 0); +__decorate([ + Property, + __metadata("design:type", Number) +], View.prototype, "rotationX", void 0); +__decorate([ + Property, + __metadata("design:type", Number) +], View.prototype, "rotationY", void 0); +__decorate([ + Property, + __metadata("design:type", Number) +], View.prototype, "perspective", void 0); +__decorate([ + Property, + __metadata("design:type", Object) +], View.prototype, "flexConfig", void 0); export class Superview extends View { subviewById(id) { for (let v of this.allSubviews()) { diff --git a/doric-js/lib/src/util/color.js b/doric-js/lib/src/util/color.js index 6e0b47c2..be1820cc 100644 --- a/doric-js/lib/src/util/color.js +++ b/doric-js/lib/src/util/color.js @@ -1,61 +1,57 @@ /** * Store color as format AARRGGBB or RRGGBB */ -let Color = /** @class */ (() => { - class Color { - constructor(v) { - this._value = 0; - this._value = v | 0x0; +export class Color { + constructor(v) { + this._value = 0; + this._value = v | 0x0; + } + static parse(str) { + if (!str.startsWith("#")) { + throw new Error(`Parse color error with ${str}`); } - static parse(str) { - if (!str.startsWith("#")) { - throw new Error(`Parse color error with ${str}`); - } - const val = parseInt(str.substr(1), 16); - if (str.length === 7) { - return new Color(val | 0xff000000); - } - else if (str.length === 9) { - return new Color(val); - } - else { - throw new Error(`Parse color error with ${str}`); - } + const val = parseInt(str.substr(1), 16); + if (str.length === 7) { + return new Color(val | 0xff000000); } - static safeParse(str, defVal = Color.TRANSPARENT) { - let color = defVal; - try { - color = Color.parse(str); - } - catch (e) { - } - finally { - return color; - } + else if (str.length === 9) { + return new Color(val); } - alpha(v) { - v = v * 255; - return new Color((this._value & 0xffffff) | ((v & 0xff) << 24)); - } - toModel() { - return this._value; + else { + throw new Error(`Parse color error with ${str}`); } } - Color.BLACK = new Color(0xFF000000); - Color.DKGRAY = new Color(0xFF444444); - Color.GRAY = new Color(0xFF888888); - Color.LTGRAY = new Color(0xFFCCCCCC); - Color.WHITE = new Color(0xFFFFFFFF); - Color.RED = new Color(0xFFFF0000); - Color.GREEN = new Color(0xFF00FF00); - Color.BLUE = new Color(0xFF0000FF); - Color.YELLOW = new Color(0xFFFFFF00); - Color.CYAN = new Color(0xFF00FFFF); - Color.MAGENTA = new Color(0xFFFF00FF); - Color.TRANSPARENT = new Color(0); - return Color; -})(); -export { Color }; + static safeParse(str, defVal = Color.TRANSPARENT) { + let color = defVal; + try { + color = Color.parse(str); + } + catch (e) { + } + finally { + return color; + } + } + alpha(v) { + v = v * 255; + return new Color((this._value & 0xffffff) | ((v & 0xff) << 24)); + } + toModel() { + return this._value; + } +} +Color.BLACK = new Color(0xFF000000); +Color.DKGRAY = new Color(0xFF444444); +Color.GRAY = new Color(0xFF888888); +Color.LTGRAY = new Color(0xFFCCCCCC); +Color.WHITE = new Color(0xFFFFFFFF); +Color.RED = new Color(0xFFFF0000); +Color.GREEN = new Color(0xFF00FF00); +Color.BLUE = new Color(0xFF0000FF); +Color.YELLOW = new Color(0xFFFFFF00); +Color.CYAN = new Color(0xFF00FFFF); +Color.MAGENTA = new Color(0xFFFF00FF); +Color.TRANSPARENT = new Color(0); export var GradientOrientation; (function (GradientOrientation) { /** draw the gradient from the top to the bottom */ diff --git a/doric-js/lib/src/util/flexbox.js b/doric-js/lib/src/util/flexbox.js index b2f634d9..cff12a70 100644 --- a/doric-js/lib/src/util/flexbox.js +++ b/doric-js/lib/src/util/flexbox.js @@ -5,33 +5,29 @@ var ValueType; ValueType[ValueType["Percent"] = 2] = "Percent"; ValueType[ValueType["Auto"] = 3] = "Auto"; })(ValueType || (ValueType = {})); -let FlexTypedValue = /** @class */ (() => { - class FlexTypedValue { - constructor(type) { - this.value = 0; - this.type = type; - } - static percent(v) { - const ret = new FlexTypedValue(ValueType.Percent); - ret.value = v; - return ret; - } - static point(v) { - const ret = new FlexTypedValue(ValueType.Point); - ret.value = v; - return ret; - } - toModel() { - return { - type: this.type, - value: this.value, - }; - } +export class FlexTypedValue { + constructor(type) { + this.value = 0; + this.type = type; } - FlexTypedValue.Auto = new FlexTypedValue(ValueType.Auto); - return FlexTypedValue; -})(); -export { FlexTypedValue }; + static percent(v) { + const ret = new FlexTypedValue(ValueType.Percent); + ret.value = v; + return ret; + } + static point(v) { + const ret = new FlexTypedValue(ValueType.Point); + ret.value = v; + return ret; + } + toModel() { + return { + type: this.type, + value: this.value, + }; + } +} +FlexTypedValue.Auto = new FlexTypedValue(ValueType.Auto); export var FlexDirection; (function (FlexDirection) { FlexDirection[FlexDirection["COLUMN"] = 0] = "COLUMN"; diff --git a/doric-js/lib/src/util/gravity.js b/doric-js/lib/src/util/gravity.js index 514c200f..8c4c9486 100644 --- a/doric-js/lib/src/util/gravity.js +++ b/doric-js/lib/src/util/gravity.js @@ -10,68 +10,64 @@ export const BOTTOM = (END | SPECIFIED) << SHIFT_Y; export const CENTER_X = SPECIFIED << SHIFT_X; export const CENTER_Y = SPECIFIED << SHIFT_Y; export const CENTER = CENTER_X | CENTER_Y; -let Gravity = /** @class */ (() => { - class Gravity { - constructor() { - this.val = 0; - } - left() { - const val = this.val | LEFT; - const ret = new Gravity; - ret.val = val; - return ret; - } - right() { - const val = this.val | RIGHT; - const ret = new Gravity; - ret.val = val; - return ret; - } - top() { - const val = this.val | TOP; - const ret = new Gravity; - ret.val = val; - return ret; - } - bottom() { - const val = this.val | BOTTOM; - const ret = new Gravity; - ret.val = val; - return ret; - } - center() { - const val = this.val | CENTER; - const ret = new Gravity; - ret.val = val; - return ret; - } - centerX() { - const val = this.val | CENTER_X; - const ret = new Gravity; - ret.val = val; - return ret; - } - centerY() { - const val = this.val | CENTER_Y; - const ret = new Gravity; - ret.val = val; - return ret; - } - toModel() { - return this.val; - } +export class Gravity { + constructor() { + this.val = 0; } - Gravity.origin = new Gravity; - Gravity.Center = Gravity.origin.center(); - Gravity.CenterX = Gravity.origin.centerX(); - Gravity.CenterY = Gravity.origin.centerY(); - Gravity.Left = Gravity.origin.left(); - Gravity.Right = Gravity.origin.right(); - Gravity.Top = Gravity.origin.top(); - Gravity.Bottom = Gravity.origin.bottom(); - return Gravity; -})(); -export { Gravity }; + left() { + const val = this.val | LEFT; + const ret = new Gravity; + ret.val = val; + return ret; + } + right() { + const val = this.val | RIGHT; + const ret = new Gravity; + ret.val = val; + return ret; + } + top() { + const val = this.val | TOP; + const ret = new Gravity; + ret.val = val; + return ret; + } + bottom() { + const val = this.val | BOTTOM; + const ret = new Gravity; + ret.val = val; + return ret; + } + center() { + const val = this.val | CENTER; + const ret = new Gravity; + ret.val = val; + return ret; + } + centerX() { + const val = this.val | CENTER_X; + const ret = new Gravity; + ret.val = val; + return ret; + } + centerY() { + const val = this.val | CENTER_Y; + const ret = new Gravity; + ret.val = val; + return ret; + } + toModel() { + return this.val; + } +} +Gravity.origin = new Gravity; +Gravity.Center = Gravity.origin.center(); +Gravity.CenterX = Gravity.origin.centerX(); +Gravity.CenterY = Gravity.origin.centerY(); +Gravity.Left = Gravity.origin.left(); +Gravity.Right = Gravity.origin.right(); +Gravity.Top = Gravity.origin.top(); +Gravity.Bottom = Gravity.origin.bottom(); export function gravity() { return new Gravity; } diff --git a/doric-js/lib/src/widget/draggable.js b/doric-js/lib/src/widget/draggable.js index 867d76b9..c83c7436 100644 --- a/doric-js/lib/src/widget/draggable.js +++ b/doric-js/lib/src/widget/draggable.js @@ -25,16 +25,12 @@ var __metadata = (this && this.__metadata) || function (k, v) { import { Property, View } from "../ui/view"; import { Stack } from "../widget/layouts"; import { layoutConfig } from "../util/layoutconfig"; -let Draggable = /** @class */ (() => { - class Draggable extends Stack { - } - __decorate([ - Property, - __metadata("design:type", Function) - ], Draggable.prototype, "onDrag", void 0); - return Draggable; -})(); -export { Draggable }; +export class Draggable extends Stack { +} +__decorate([ + Property, + __metadata("design:type", Function) +], Draggable.prototype, "onDrag", void 0); export function draggable(views, config) { const ret = new Draggable; ret.layoutConfig = layoutConfig().fit(); diff --git a/doric-js/lib/src/widget/flowlayout.js b/doric-js/lib/src/widget/flowlayout.js index f76a9dc6..32b84bac 100644 --- a/doric-js/lib/src/widget/flowlayout.js +++ b/doric-js/lib/src/widget/flowlayout.js @@ -25,113 +25,105 @@ var __metadata = (this && this.__metadata) || function (k, v) { import { Stack } from './layouts'; import { Property, Superview, View } from '../ui/view'; import { layoutConfig } from '../util/index.util'; -let FlowLayoutItem = /** @class */ (() => { - class FlowLayoutItem extends Stack { +export class FlowLayoutItem extends Stack { +} +__decorate([ + Property, + __metadata("design:type", String) +], FlowLayoutItem.prototype, "identifier", void 0); +export class FlowLayout extends Superview { + constructor() { + super(...arguments); + this.cachedViews = new Map; + this.ignoreDirtyCallOnce = false; + this.columnCount = 2; + this.itemCount = 0; + this.batchCount = 15; } - __decorate([ - Property, - __metadata("design:type", String) - ], FlowLayoutItem.prototype, "identifier", void 0); - return FlowLayoutItem; -})(); -export { FlowLayoutItem }; -let FlowLayout = /** @class */ (() => { - class FlowLayout extends Superview { - constructor() { - super(...arguments); - this.cachedViews = new Map; + allSubviews() { + if (this.loadMoreView) { + return [...this.cachedViews.values(), this.loadMoreView]; + } + else { + return this.cachedViews.values(); + } + } + reset() { + this.cachedViews.clear(); + this.itemCount = 0; + } + getItem(itemIdx) { + let view = this.renderItem(itemIdx); + view.superview = this; + this.cachedViews.set(`${itemIdx}`, view); + return view; + } + isDirty() { + if (this.ignoreDirtyCallOnce) { this.ignoreDirtyCallOnce = false; - this.columnCount = 2; - this.itemCount = 0; - this.batchCount = 15; - } - allSubviews() { - if (this.loadMoreView) { - return [...this.cachedViews.values(), this.loadMoreView]; - } - else { - return this.cachedViews.values(); - } - } - reset() { - this.cachedViews.clear(); - this.itemCount = 0; - } - getItem(itemIdx) { - let view = this.renderItem(itemIdx); - view.superview = this; - this.cachedViews.set(`${itemIdx}`, view); - return view; - } - isDirty() { - if (this.ignoreDirtyCallOnce) { - this.ignoreDirtyCallOnce = false; - //Ignore the dirty call once. - return false; - } - return super.isDirty(); - } - renderBunchedItems(start, length) { - this.ignoreDirtyCallOnce = true; - return new Array(Math.min(length, this.itemCount - start)).fill(0).map((_, idx) => { - const listItem = this.getItem(start + idx); - return listItem.toModel(); - }); - } - toModel() { - if (this.loadMoreView) { - this.dirtyProps['loadMoreView'] = this.loadMoreView.viewId; - } - return super.toModel(); + //Ignore the dirty call once. + return false; } + return super.isDirty(); } - __decorate([ - Property, - __metadata("design:type", Object) - ], FlowLayout.prototype, "columnCount", void 0); - __decorate([ - Property, - __metadata("design:type", Number) - ], FlowLayout.prototype, "columnSpace", void 0); - __decorate([ - Property, - __metadata("design:type", Number) - ], FlowLayout.prototype, "rowSpace", void 0); - __decorate([ - Property, - __metadata("design:type", Object) - ], FlowLayout.prototype, "itemCount", void 0); - __decorate([ - Property, - __metadata("design:type", Function) - ], FlowLayout.prototype, "renderItem", void 0); - __decorate([ - Property, - __metadata("design:type", Object) - ], FlowLayout.prototype, "batchCount", void 0); - __decorate([ - Property, - __metadata("design:type", Function) - ], FlowLayout.prototype, "onLoadMore", void 0); - __decorate([ - Property, - __metadata("design:type", Boolean) - ], FlowLayout.prototype, "loadMore", void 0); - __decorate([ - Property, - __metadata("design:type", FlowLayoutItem) - ], FlowLayout.prototype, "loadMoreView", void 0); - __decorate([ - Property, - __metadata("design:type", Function) - ], FlowLayout.prototype, "onScroll", void 0); - __decorate([ - Property, - __metadata("design:type", Function) - ], FlowLayout.prototype, "onScrollEnd", void 0); - return FlowLayout; -})(); -export { FlowLayout }; + renderBunchedItems(start, length) { + this.ignoreDirtyCallOnce = true; + return new Array(Math.min(length, this.itemCount - start)).fill(0).map((_, idx) => { + const listItem = this.getItem(start + idx); + return listItem.toModel(); + }); + } + toModel() { + if (this.loadMoreView) { + this.dirtyProps['loadMoreView'] = this.loadMoreView.viewId; + } + return super.toModel(); + } +} +__decorate([ + Property, + __metadata("design:type", Object) +], FlowLayout.prototype, "columnCount", void 0); +__decorate([ + Property, + __metadata("design:type", Number) +], FlowLayout.prototype, "columnSpace", void 0); +__decorate([ + Property, + __metadata("design:type", Number) +], FlowLayout.prototype, "rowSpace", void 0); +__decorate([ + Property, + __metadata("design:type", Object) +], FlowLayout.prototype, "itemCount", void 0); +__decorate([ + Property, + __metadata("design:type", Function) +], FlowLayout.prototype, "renderItem", void 0); +__decorate([ + Property, + __metadata("design:type", Object) +], FlowLayout.prototype, "batchCount", void 0); +__decorate([ + Property, + __metadata("design:type", Function) +], FlowLayout.prototype, "onLoadMore", void 0); +__decorate([ + Property, + __metadata("design:type", Boolean) +], FlowLayout.prototype, "loadMore", void 0); +__decorate([ + Property, + __metadata("design:type", FlowLayoutItem) +], FlowLayout.prototype, "loadMoreView", void 0); +__decorate([ + Property, + __metadata("design:type", Function) +], FlowLayout.prototype, "onScroll", void 0); +__decorate([ + Property, + __metadata("design:type", Function) +], FlowLayout.prototype, "onScrollEnd", void 0); export function flowlayout(config) { const ret = new FlowLayout; for (let key in config) { diff --git a/doric-js/lib/src/widget/image.js b/doric-js/lib/src/widget/image.js index bccb5314..ea0c7cfd 100644 --- a/doric-js/lib/src/widget/image.js +++ b/doric-js/lib/src/widget/image.js @@ -31,77 +31,73 @@ export var ScaleType; ScaleType[ScaleType["ScaleAspectFit"] = 1] = "ScaleAspectFit"; ScaleType[ScaleType["ScaleAspectFill"] = 2] = "ScaleAspectFill"; })(ScaleType || (ScaleType = {})); -let Image = /** @class */ (() => { - class Image extends View { - } - __decorate([ - Property, - __metadata("design:type", String) - ], Image.prototype, "imageUrl", void 0); - __decorate([ - Property, - __metadata("design:type", String) - ], Image.prototype, "imagePath", void 0); - __decorate([ - Property, - __metadata("design:type", String) - ], Image.prototype, "imageRes", void 0); - __decorate([ - Property, - __metadata("design:type", String) - ], Image.prototype, "imageBase64", void 0); - __decorate([ - Property, - __metadata("design:type", Number) - ], Image.prototype, "scaleType", void 0); - __decorate([ - Property, - __metadata("design:type", Boolean) - ], Image.prototype, "isBlur", void 0); - __decorate([ - Property, - __metadata("design:type", String) - ], Image.prototype, "placeHolderImage", void 0); - __decorate([ - Property, - __metadata("design:type", String) - ], Image.prototype, "placeHolderImageBase64", void 0); - __decorate([ - Property, - __metadata("design:type", Color - /** - * Display while image is failed to load - * It can be file name in local path - */ - ) - ], Image.prototype, "placeHolderColor", void 0); - __decorate([ - Property, - __metadata("design:type", String) - ], Image.prototype, "errorImage", void 0); - __decorate([ - Property, - __metadata("design:type", String) - ], Image.prototype, "errorImageBase64", void 0); - __decorate([ - Property, - __metadata("design:type", Color) - ], Image.prototype, "errorColor", void 0); - __decorate([ - Property, - __metadata("design:type", Function) - ], Image.prototype, "loadCallback", void 0); - __decorate([ - Property, - __metadata("design:type", Number) - ], Image.prototype, "imageScale", void 0); - __decorate([ - Property, - __metadata("design:type", Object) - ], Image.prototype, "stretchInset", void 0); - return Image; -})(); -export { Image }; +export class Image extends View { +} +__decorate([ + Property, + __metadata("design:type", String) +], Image.prototype, "imageUrl", void 0); +__decorate([ + Property, + __metadata("design:type", String) +], Image.prototype, "imagePath", void 0); +__decorate([ + Property, + __metadata("design:type", String) +], Image.prototype, "imageRes", void 0); +__decorate([ + Property, + __metadata("design:type", String) +], Image.prototype, "imageBase64", void 0); +__decorate([ + Property, + __metadata("design:type", Number) +], Image.prototype, "scaleType", void 0); +__decorate([ + Property, + __metadata("design:type", Boolean) +], Image.prototype, "isBlur", void 0); +__decorate([ + Property, + __metadata("design:type", String) +], Image.prototype, "placeHolderImage", void 0); +__decorate([ + Property, + __metadata("design:type", String) +], Image.prototype, "placeHolderImageBase64", void 0); +__decorate([ + Property, + __metadata("design:type", Color + /** + * Display while image is failed to load + * It can be file name in local path + */ + ) +], Image.prototype, "placeHolderColor", void 0); +__decorate([ + Property, + __metadata("design:type", String) +], Image.prototype, "errorImage", void 0); +__decorate([ + Property, + __metadata("design:type", String) +], Image.prototype, "errorImageBase64", void 0); +__decorate([ + Property, + __metadata("design:type", Color) +], Image.prototype, "errorColor", void 0); +__decorate([ + Property, + __metadata("design:type", Function) +], Image.prototype, "loadCallback", void 0); +__decorate([ + Property, + __metadata("design:type", Number) +], Image.prototype, "imageScale", void 0); +__decorate([ + Property, + __metadata("design:type", Object) +], Image.prototype, "stretchInset", void 0); export function image(config) { const ret = new Image; ret.layoutConfig = layoutConfig().fit(); diff --git a/doric-js/lib/src/widget/input.js b/doric-js/lib/src/widget/input.js index a1384337..b84526ea 100644 --- a/doric-js/lib/src/widget/input.js +++ b/doric-js/lib/src/widget/input.js @@ -26,71 +26,67 @@ import { View, Property } from "../ui/view"; import { Color } from "../util/color"; import { Gravity } from "../util/gravity"; import { layoutConfig } from "../util/index.util"; -let Input = /** @class */ (() => { - class Input extends View { - getText(context) { - return this.nativeChannel(context, 'getText')(); - } - setSelection(context, start, end = start) { - return this.nativeChannel(context, 'setSelection')({ - start, - end, - }); - } - requestFocus(context) { - return this.nativeChannel(context, 'requestFocus')(); - } - releaseFocus(context) { - return this.nativeChannel(context, 'releaseFocus')(); - } +export class Input extends View { + getText(context) { + return this.nativeChannel(context, 'getText')(); } - __decorate([ - Property, - __metadata("design:type", String) - ], Input.prototype, "text", void 0); - __decorate([ - Property, - __metadata("design:type", Color) - ], Input.prototype, "textColor", void 0); - __decorate([ - Property, - __metadata("design:type", Number) - ], Input.prototype, "textSize", void 0); - __decorate([ - Property, - __metadata("design:type", String) - ], Input.prototype, "hintText", void 0); - __decorate([ - Property, - __metadata("design:type", Number) - ], Input.prototype, "inputType", void 0); - __decorate([ - Property, - __metadata("design:type", Color) - ], Input.prototype, "hintTextColor", void 0); - __decorate([ - Property, - __metadata("design:type", Boolean) - ], Input.prototype, "multiline", void 0); - __decorate([ - Property, - __metadata("design:type", Gravity) - ], Input.prototype, "textAlignment", void 0); - __decorate([ - Property, - __metadata("design:type", Function) - ], Input.prototype, "onTextChange", void 0); - __decorate([ - Property, - __metadata("design:type", Function) - ], Input.prototype, "onFocusChange", void 0); - __decorate([ - Property, - __metadata("design:type", Number) - ], Input.prototype, "maxLength", void 0); - return Input; -})(); -export { Input }; + setSelection(context, start, end = start) { + return this.nativeChannel(context, 'setSelection')({ + start, + end, + }); + } + requestFocus(context) { + return this.nativeChannel(context, 'requestFocus')(); + } + releaseFocus(context) { + return this.nativeChannel(context, 'releaseFocus')(); + } +} +__decorate([ + Property, + __metadata("design:type", String) +], Input.prototype, "text", void 0); +__decorate([ + Property, + __metadata("design:type", Color) +], Input.prototype, "textColor", void 0); +__decorate([ + Property, + __metadata("design:type", Number) +], Input.prototype, "textSize", void 0); +__decorate([ + Property, + __metadata("design:type", String) +], Input.prototype, "hintText", void 0); +__decorate([ + Property, + __metadata("design:type", Number) +], Input.prototype, "inputType", void 0); +__decorate([ + Property, + __metadata("design:type", Color) +], Input.prototype, "hintTextColor", void 0); +__decorate([ + Property, + __metadata("design:type", Boolean) +], Input.prototype, "multiline", void 0); +__decorate([ + Property, + __metadata("design:type", Gravity) +], Input.prototype, "textAlignment", void 0); +__decorate([ + Property, + __metadata("design:type", Function) +], Input.prototype, "onTextChange", void 0); +__decorate([ + Property, + __metadata("design:type", Function) +], Input.prototype, "onFocusChange", void 0); +__decorate([ + Property, + __metadata("design:type", Number) +], Input.prototype, "maxLength", void 0); export var InputType; (function (InputType) { InputType[InputType["Default"] = 0] = "Default"; diff --git a/doric-js/lib/src/widget/layouts.js b/doric-js/lib/src/widget/layouts.js index a872e6d6..52fb5820 100644 --- a/doric-js/lib/src/widget/layouts.js +++ b/doric-js/lib/src/widget/layouts.js @@ -29,19 +29,16 @@ export class Stack extends Group { } export class Root extends Stack { } -let LinearLayout = /** @class */ (() => { - class LinearLayout extends Group { - } - __decorate([ - Property, - __metadata("design:type", Number) - ], LinearLayout.prototype, "space", void 0); - __decorate([ - Property, - __metadata("design:type", Gravity) - ], LinearLayout.prototype, "gravity", void 0); - return LinearLayout; -})(); +class LinearLayout extends Group { +} +__decorate([ + Property, + __metadata("design:type", Number) +], LinearLayout.prototype, "space", void 0); +__decorate([ + Property, + __metadata("design:type", Gravity) +], LinearLayout.prototype, "gravity", void 0); export class VLayout extends LinearLayout { } export class HLayout extends LinearLayout { diff --git a/doric-js/lib/src/widget/list.js b/doric-js/lib/src/widget/list.js index e95d94f0..3865a2ad 100644 --- a/doric-js/lib/src/widget/list.js +++ b/doric-js/lib/src/widget/list.js @@ -25,108 +25,100 @@ var __metadata = (this && this.__metadata) || function (k, v) { import { View, Property, Superview } from "../ui/view"; import { Stack } from "./layouts"; import { layoutConfig } from "../util/layoutconfig"; -let ListItem = /** @class */ (() => { - class ListItem extends Stack { +export class ListItem extends Stack { +} +__decorate([ + Property, + __metadata("design:type", String) +], ListItem.prototype, "identifier", void 0); +export class List extends Superview { + constructor() { + super(...arguments); + this.cachedViews = new Map; + this.ignoreDirtyCallOnce = false; + this.itemCount = 0; + this.batchCount = 15; } - __decorate([ - Property, - __metadata("design:type", String) - ], ListItem.prototype, "identifier", void 0); - return ListItem; -})(); -export { ListItem }; -let List = /** @class */ (() => { - class List extends Superview { - constructor() { - super(...arguments); - this.cachedViews = new Map; + allSubviews() { + if (this.loadMoreView) { + return [...this.cachedViews.values(), this.loadMoreView]; + } + else { + return this.cachedViews.values(); + } + } + scrollToItem(context, index, config) { + const animated = config === null || config === void 0 ? void 0 : config.animated; + return this.nativeChannel(context, 'scrollToItem')({ index, animated, }); + } + reset() { + this.cachedViews.clear(); + this.itemCount = 0; + } + getItem(itemIdx) { + let view = this.renderItem(itemIdx); + view.superview = this; + this.cachedViews.set(`${itemIdx}`, view); + return view; + } + isDirty() { + if (this.ignoreDirtyCallOnce) { this.ignoreDirtyCallOnce = false; - this.itemCount = 0; - this.batchCount = 15; - } - allSubviews() { - if (this.loadMoreView) { - return [...this.cachedViews.values(), this.loadMoreView]; - } - else { - return this.cachedViews.values(); - } - } - scrollToItem(context, index, config) { - const animated = config === null || config === void 0 ? void 0 : config.animated; - return this.nativeChannel(context, 'scrollToItem')({ index, animated, }); - } - reset() { - this.cachedViews.clear(); - this.itemCount = 0; - } - getItem(itemIdx) { - let view = this.renderItem(itemIdx); - view.superview = this; - this.cachedViews.set(`${itemIdx}`, view); - return view; - } - isDirty() { - if (this.ignoreDirtyCallOnce) { - this.ignoreDirtyCallOnce = false; - //Ignore the dirty call once. - return false; - } - return super.isDirty(); - } - renderBunchedItems(start, length) { - this.ignoreDirtyCallOnce = true; - return new Array(Math.max(0, Math.min(length, this.itemCount - start))).fill(0).map((_, idx) => { - const listItem = this.getItem(start + idx); - return listItem.toModel(); - }); - } - toModel() { - if (this.loadMoreView) { - this.dirtyProps['loadMoreView'] = this.loadMoreView.viewId; - } - return super.toModel(); + //Ignore the dirty call once. + return false; } + return super.isDirty(); } - __decorate([ - Property, - __metadata("design:type", Object) - ], List.prototype, "itemCount", void 0); - __decorate([ - Property, - __metadata("design:type", Function) - ], List.prototype, "renderItem", void 0); - __decorate([ - Property, - __metadata("design:type", Object) - ], List.prototype, "batchCount", void 0); - __decorate([ - Property, - __metadata("design:type", Function) - ], List.prototype, "onLoadMore", void 0); - __decorate([ - Property, - __metadata("design:type", Boolean) - ], List.prototype, "loadMore", void 0); - __decorate([ - Property, - __metadata("design:type", ListItem) - ], List.prototype, "loadMoreView", void 0); - __decorate([ - Property, - __metadata("design:type", Function) - ], List.prototype, "onScroll", void 0); - __decorate([ - Property, - __metadata("design:type", Function) - ], List.prototype, "onScrollEnd", void 0); - __decorate([ - Property, - __metadata("design:type", Number) - ], List.prototype, "scrolledPosition", void 0); - return List; -})(); -export { List }; + renderBunchedItems(start, length) { + this.ignoreDirtyCallOnce = true; + return new Array(Math.max(0, Math.min(length, this.itemCount - start))).fill(0).map((_, idx) => { + const listItem = this.getItem(start + idx); + return listItem.toModel(); + }); + } + toModel() { + if (this.loadMoreView) { + this.dirtyProps['loadMoreView'] = this.loadMoreView.viewId; + } + return super.toModel(); + } +} +__decorate([ + Property, + __metadata("design:type", Object) +], List.prototype, "itemCount", void 0); +__decorate([ + Property, + __metadata("design:type", Function) +], List.prototype, "renderItem", void 0); +__decorate([ + Property, + __metadata("design:type", Object) +], List.prototype, "batchCount", void 0); +__decorate([ + Property, + __metadata("design:type", Function) +], List.prototype, "onLoadMore", void 0); +__decorate([ + Property, + __metadata("design:type", Boolean) +], List.prototype, "loadMore", void 0); +__decorate([ + Property, + __metadata("design:type", ListItem) +], List.prototype, "loadMoreView", void 0); +__decorate([ + Property, + __metadata("design:type", Function) +], List.prototype, "onScroll", void 0); +__decorate([ + Property, + __metadata("design:type", Function) +], List.prototype, "onScrollEnd", void 0); +__decorate([ + Property, + __metadata("design:type", Number) +], List.prototype, "scrolledPosition", void 0); export function list(config) { const ret = new List; for (let key in config) { diff --git a/doric-js/lib/src/widget/nestedSlider.js b/doric-js/lib/src/widget/nestedSlider.js index 0ce80a60..8c52facc 100644 --- a/doric-js/lib/src/widget/nestedSlider.js +++ b/doric-js/lib/src/widget/nestedSlider.js @@ -23,22 +23,18 @@ var __metadata = (this && this.__metadata) || function (k, v) { * limitations under the License. */ import { Group, Property } from '../ui/view'; -let NestedSlider = /** @class */ (() => { - class NestedSlider extends Group { - addSlideItem(view) { - this.addChild(view); - } - slidePage(context, page, smooth = false) { - return this.nativeChannel(context, "slidePage")({ page, smooth }); - } - getSlidedPage(context) { - return this.nativeChannel(context, "getSlidedPage")(); - } +export class NestedSlider extends Group { + addSlideItem(view) { + this.addChild(view); } - __decorate([ - Property, - __metadata("design:type", Function) - ], NestedSlider.prototype, "onPageSlided", void 0); - return NestedSlider; -})(); -export { NestedSlider }; + slidePage(context, page, smooth = false) { + return this.nativeChannel(context, "slidePage")({ page, smooth }); + } + getSlidedPage(context) { + return this.nativeChannel(context, "getSlidedPage")(); + } +} +__decorate([ + Property, + __metadata("design:type", Function) +], NestedSlider.prototype, "onPageSlided", void 0); diff --git a/doric-js/lib/src/widget/refreshable.js b/doric-js/lib/src/widget/refreshable.js index 7240f321..2d502d6d 100644 --- a/doric-js/lib/src/widget/refreshable.js +++ b/doric-js/lib/src/widget/refreshable.js @@ -9,40 +9,36 @@ var __metadata = (this && this.__metadata) || function (k, v) { }; import { Property, Superview } from "../ui/view"; import { layoutConfig } from "../util/layoutconfig"; -let Refreshable = /** @class */ (() => { - class Refreshable extends Superview { - allSubviews() { - const ret = [this.content]; - if (this.header) { - ret.push(this.header); - } - return ret; - } - setRefreshable(context, refreshable) { - return this.nativeChannel(context, 'setRefreshable')(refreshable); - } - setRefreshing(context, refreshing) { - return this.nativeChannel(context, 'setRefreshing')(refreshing); - } - isRefreshable(context) { - return this.nativeChannel(context, 'isRefreshable')(); - } - isRefreshing(context) { - return this.nativeChannel(context, 'isRefreshing')(); - } - toModel() { - this.dirtyProps.content = this.content.viewId; - this.dirtyProps.header = (this.header || {}).viewId; - return super.toModel(); +export class Refreshable extends Superview { + allSubviews() { + const ret = [this.content]; + if (this.header) { + ret.push(this.header); } + return ret; } - __decorate([ - Property, - __metadata("design:type", Function) - ], Refreshable.prototype, "onRefresh", void 0); - return Refreshable; -})(); -export { Refreshable }; + setRefreshable(context, refreshable) { + return this.nativeChannel(context, 'setRefreshable')(refreshable); + } + setRefreshing(context, refreshing) { + return this.nativeChannel(context, 'setRefreshing')(refreshing); + } + isRefreshable(context) { + return this.nativeChannel(context, 'isRefreshable')(); + } + isRefreshing(context) { + return this.nativeChannel(context, 'isRefreshing')(); + } + toModel() { + this.dirtyProps.content = this.content.viewId; + this.dirtyProps.header = (this.header || {}).viewId; + return super.toModel(); + } +} +__decorate([ + Property, + __metadata("design:type", Function) +], Refreshable.prototype, "onRefresh", void 0); export function refreshable(config) { const ret = new Refreshable; ret.layoutConfig = layoutConfig().fit(); diff --git a/doric-js/lib/src/widget/scroller.js b/doric-js/lib/src/widget/scroller.js index ef68d7d9..07c9c1af 100644 --- a/doric-js/lib/src/widget/scroller.js +++ b/doric-js/lib/src/widget/scroller.js @@ -35,34 +35,30 @@ export function scroller(content, config) { v.content = content; }); } -let Scroller = /** @class */ (() => { - class Scroller extends Superview { - allSubviews() { - return [this.content]; - } - toModel() { - this.dirtyProps.content = this.content.viewId; - return super.toModel(); - } - scrollTo(context, offset, animated) { - return this.nativeChannel(context, "scrollTo")({ offset, animated }); - } - scrollBy(context, offset, animated) { - return this.nativeChannel(context, "scrollBy")({ offset, animated }); - } +export class Scroller extends Superview { + allSubviews() { + return [this.content]; } - __decorate([ - Property, - __metadata("design:type", Object) - ], Scroller.prototype, "contentOffset", void 0); - __decorate([ - Property, - __metadata("design:type", Function) - ], Scroller.prototype, "onScroll", void 0); - __decorate([ - Property, - __metadata("design:type", Function) - ], Scroller.prototype, "onScrollEnd", void 0); - return Scroller; -})(); -export { Scroller }; + toModel() { + this.dirtyProps.content = this.content.viewId; + return super.toModel(); + } + scrollTo(context, offset, animated) { + return this.nativeChannel(context, "scrollTo")({ offset, animated }); + } + scrollBy(context, offset, animated) { + return this.nativeChannel(context, "scrollBy")({ offset, animated }); + } +} +__decorate([ + Property, + __metadata("design:type", Object) +], Scroller.prototype, "contentOffset", void 0); +__decorate([ + Property, + __metadata("design:type", Function) +], Scroller.prototype, "onScroll", void 0); +__decorate([ + Property, + __metadata("design:type", Function) +], Scroller.prototype, "onScrollEnd", void 0); diff --git a/doric-js/lib/src/widget/slider.js b/doric-js/lib/src/widget/slider.js index 1647fb91..0b9ff28e 100644 --- a/doric-js/lib/src/widget/slider.js +++ b/doric-js/lib/src/widget/slider.js @@ -25,79 +25,71 @@ var __metadata = (this && this.__metadata) || function (k, v) { import { Superview, View, Property } from "../ui/view"; import { Stack } from "./layouts"; import { layoutConfig } from "../util/layoutconfig"; -let SlideItem = /** @class */ (() => { - class SlideItem extends Stack { +export class SlideItem extends Stack { +} +__decorate([ + Property, + __metadata("design:type", String) +], SlideItem.prototype, "identifier", void 0); +export class Slider extends Superview { + constructor() { + super(...arguments); + this.cachedViews = new Map; + this.ignoreDirtyCallOnce = false; + this.itemCount = 0; + this.batchCount = 3; } - __decorate([ - Property, - __metadata("design:type", String) - ], SlideItem.prototype, "identifier", void 0); - return SlideItem; -})(); -export { SlideItem }; -let Slider = /** @class */ (() => { - class Slider extends Superview { - constructor() { - super(...arguments); - this.cachedViews = new Map; + allSubviews() { + return this.cachedViews.values(); + } + getItem(itemIdx) { + let view = this.renderPage(itemIdx); + view.superview = this; + this.cachedViews.set(`${itemIdx}`, view); + return view; + } + isDirty() { + if (this.ignoreDirtyCallOnce) { this.ignoreDirtyCallOnce = false; - this.itemCount = 0; - this.batchCount = 3; - } - allSubviews() { - return this.cachedViews.values(); - } - getItem(itemIdx) { - let view = this.renderPage(itemIdx); - view.superview = this; - this.cachedViews.set(`${itemIdx}`, view); - return view; - } - isDirty() { - if (this.ignoreDirtyCallOnce) { - this.ignoreDirtyCallOnce = false; - //Ignore the dirty call once. - return false; - } - return super.isDirty(); - } - renderBunchedItems(start, length) { - this.ignoreDirtyCallOnce = true; - return new Array(Math.min(length, this.itemCount - start)).fill(0).map((_, idx) => { - const slideItem = this.getItem(start + idx); - return slideItem.toModel(); - }); - } - slidePage(context, page, smooth = false) { - return this.nativeChannel(context, "slidePage")({ page, smooth }); - } - getSlidedPage(context) { - return this.nativeChannel(context, "getSlidedPage")(); + //Ignore the dirty call once. + return false; } + return super.isDirty(); } - __decorate([ - Property, - __metadata("design:type", Object) - ], Slider.prototype, "itemCount", void 0); - __decorate([ - Property, - __metadata("design:type", Function) - ], Slider.prototype, "renderPage", void 0); - __decorate([ - Property, - __metadata("design:type", Object) - ], Slider.prototype, "batchCount", void 0); - __decorate([ - Property, - __metadata("design:type", Function) - ], Slider.prototype, "onPageSlided", void 0); - __decorate([ - Property, - __metadata("design:type", Boolean) - ], Slider.prototype, "loop", void 0); - return Slider; -})(); -export { Slider }; + renderBunchedItems(start, length) { + this.ignoreDirtyCallOnce = true; + return new Array(Math.min(length, this.itemCount - start)).fill(0).map((_, idx) => { + const slideItem = this.getItem(start + idx); + return slideItem.toModel(); + }); + } + slidePage(context, page, smooth = false) { + return this.nativeChannel(context, "slidePage")({ page, smooth }); + } + getSlidedPage(context) { + return this.nativeChannel(context, "getSlidedPage")(); + } +} +__decorate([ + Property, + __metadata("design:type", Object) +], Slider.prototype, "itemCount", void 0); +__decorate([ + Property, + __metadata("design:type", Function) +], Slider.prototype, "renderPage", void 0); +__decorate([ + Property, + __metadata("design:type", Object) +], Slider.prototype, "batchCount", void 0); +__decorate([ + Property, + __metadata("design:type", Function) +], Slider.prototype, "onPageSlided", void 0); +__decorate([ + Property, + __metadata("design:type", Boolean) +], Slider.prototype, "loop", void 0); export function slider(config) { const ret = new Slider; for (let key in config) { diff --git a/doric-js/lib/src/widget/switch.js b/doric-js/lib/src/widget/switch.js index 05881f0a..9d34c4b8 100644 --- a/doric-js/lib/src/widget/switch.js +++ b/doric-js/lib/src/widget/switch.js @@ -25,32 +25,28 @@ var __metadata = (this && this.__metadata) || function (k, v) { import { View, Property } from "../ui/view"; import { Color } from "../util/color"; import { layoutConfig } from "../util/index.util"; -let Switch = /** @class */ (() => { - class Switch extends View { - } - __decorate([ - Property, - __metadata("design:type", Boolean) - ], Switch.prototype, "state", void 0); - __decorate([ - Property, - __metadata("design:type", Function) - ], Switch.prototype, "onSwitch", void 0); - __decorate([ - Property, - __metadata("design:type", Color) - ], Switch.prototype, "offTintColor", void 0); - __decorate([ - Property, - __metadata("design:type", Color) - ], Switch.prototype, "onTintColor", void 0); - __decorate([ - Property, - __metadata("design:type", Color) - ], Switch.prototype, "thumbTintColor", void 0); - return Switch; -})(); -export { Switch }; +export class Switch extends View { +} +__decorate([ + Property, + __metadata("design:type", Boolean) +], Switch.prototype, "state", void 0); +__decorate([ + Property, + __metadata("design:type", Function) +], Switch.prototype, "onSwitch", void 0); +__decorate([ + Property, + __metadata("design:type", Color) +], Switch.prototype, "offTintColor", void 0); +__decorate([ + Property, + __metadata("design:type", Color) +], Switch.prototype, "onTintColor", void 0); +__decorate([ + Property, + __metadata("design:type", Color) +], Switch.prototype, "thumbTintColor", void 0); export function switchView(config) { const ret = new Switch; ret.layoutConfig = layoutConfig().just(); diff --git a/doric-js/lib/src/widget/text.js b/doric-js/lib/src/widget/text.js index 3f7c82f1..6bfb51f7 100644 --- a/doric-js/lib/src/widget/text.js +++ b/doric-js/lib/src/widget/text.js @@ -33,68 +33,64 @@ export var TruncateAt; TruncateAt[TruncateAt["Start"] = 2] = "Start"; TruncateAt[TruncateAt["Clip"] = 3] = "Clip"; })(TruncateAt || (TruncateAt = {})); -let Text = /** @class */ (() => { - class Text extends View { - } - __decorate([ - Property, - __metadata("design:type", String) - ], Text.prototype, "text", void 0); - __decorate([ - Property, - __metadata("design:type", Color) - ], Text.prototype, "textColor", void 0); - __decorate([ - Property, - __metadata("design:type", Number) - ], Text.prototype, "textSize", void 0); - __decorate([ - Property, - __metadata("design:type", Number) - ], Text.prototype, "maxLines", void 0); - __decorate([ - Property, - __metadata("design:type", Gravity) - ], Text.prototype, "textAlignment", void 0); - __decorate([ - Property, - __metadata("design:type", String) - ], Text.prototype, "fontStyle", void 0); - __decorate([ - Property, - __metadata("design:type", String) - ], Text.prototype, "font", void 0); - __decorate([ - Property, - __metadata("design:type", Number) - ], Text.prototype, "maxWidth", void 0); - __decorate([ - Property, - __metadata("design:type", Number) - ], Text.prototype, "maxHeight", void 0); - __decorate([ - Property, - __metadata("design:type", Number) - ], Text.prototype, "lineSpacing", void 0); - __decorate([ - Property, - __metadata("design:type", Boolean) - ], Text.prototype, "strikethrough", void 0); - __decorate([ - Property, - __metadata("design:type", Boolean) - ], Text.prototype, "underline", void 0); - __decorate([ - Property, - __metadata("design:type", String) - ], Text.prototype, "htmlText", void 0); - __decorate([ - Property, - __metadata("design:type", Number) - ], Text.prototype, "truncateAt", void 0); - return Text; -})(); -export { Text }; +export class Text extends View { +} +__decorate([ + Property, + __metadata("design:type", String) +], Text.prototype, "text", void 0); +__decorate([ + Property, + __metadata("design:type", Color) +], Text.prototype, "textColor", void 0); +__decorate([ + Property, + __metadata("design:type", Number) +], Text.prototype, "textSize", void 0); +__decorate([ + Property, + __metadata("design:type", Number) +], Text.prototype, "maxLines", void 0); +__decorate([ + Property, + __metadata("design:type", Gravity) +], Text.prototype, "textAlignment", void 0); +__decorate([ + Property, + __metadata("design:type", String) +], Text.prototype, "fontStyle", void 0); +__decorate([ + Property, + __metadata("design:type", String) +], Text.prototype, "font", void 0); +__decorate([ + Property, + __metadata("design:type", Number) +], Text.prototype, "maxWidth", void 0); +__decorate([ + Property, + __metadata("design:type", Number) +], Text.prototype, "maxHeight", void 0); +__decorate([ + Property, + __metadata("design:type", Number) +], Text.prototype, "lineSpacing", void 0); +__decorate([ + Property, + __metadata("design:type", Boolean) +], Text.prototype, "strikethrough", void 0); +__decorate([ + Property, + __metadata("design:type", Boolean) +], Text.prototype, "underline", void 0); +__decorate([ + Property, + __metadata("design:type", String) +], Text.prototype, "htmlText", void 0); +__decorate([ + Property, + __metadata("design:type", Number) +], Text.prototype, "truncateAt", void 0); export function text(config) { const ret = new Text; ret.layoutConfig = layoutConfig().fit(); diff --git a/doric-js/src/pattern/mvvm.ts b/doric-js/src/pattern/mvvm.ts index 8e49ac9a..d616fd13 100644 --- a/doric-js/src/pattern/mvvm.ts +++ b/doric-js/src/pattern/mvvm.ts @@ -38,7 +38,6 @@ export abstract class ViewModel { getViewHolder() { return this.viewHolder; } - updateState(setter: Setter) { setter(this.state) this.onBind(this.state, this.viewHolder) diff --git a/doric-web/dist/index.js b/doric-web/dist/index.js index 752469b4..7892897e 100644 --- a/doric-web/dist/index.js +++ b/doric-web/dist/index.js @@ -1645,278 +1645,275 @@ var __metadata = (undefined && undefined.__metadata) || function (k, v) { function Property(target, propKey) { Reflect.defineMetadata(propKey, true, target); } -let View = /** @class */ (() => { - class View { - constructor() { - this.width = 0; - this.height = 0; - this.x = 0; - this.y = 0; - this.viewId = uniqueId('ViewId'); - this.callbacks = new Map; - /** Anchor end*/ - this.__dirty_props__ = {}; - this.nativeViewModel = { - id: this.viewId, - type: this.constructor.name, - props: this.__dirty_props__, - }; - return new Proxy(this, { - get: (target, p, receiver) => { - return Reflect.get(target, p, receiver); - }, - set: (target, p, v, receiver) => { - const oldV = Reflect.get(target, p, receiver); - const ret = Reflect.set(target, p, v, receiver); - if (Reflect.getMetadata(p, target) && oldV !== v) { - receiver.onPropertyChanged(p.toString(), oldV, v); - } - return ret; +class View { + constructor() { + this.width = 0; + this.height = 0; + this.x = 0; + this.y = 0; + this.viewId = uniqueId('ViewId'); + this.callbacks = new Map; + /** Anchor end*/ + this.__dirty_props__ = {}; + this.nativeViewModel = { + id: this.viewId, + type: this.constructor.name, + props: this.__dirty_props__, + }; + return new Proxy(this, { + get: (target, p, receiver) => { + return Reflect.get(target, p, receiver); + }, + set: (target, p, v, receiver) => { + const oldV = Reflect.get(target, p, receiver); + const ret = Reflect.set(target, p, v, receiver); + if (Reflect.getMetadata(p, target) && oldV !== v) { + receiver.onPropertyChanged(p.toString(), oldV, v); } - }); - } - callback2Id(f) { - const id = uniqueId('Function'); - this.callbacks.set(id, f); - return id; - } - id2Callback(id) { - let f = this.callbacks.get(id); - if (f === undefined) { - f = Reflect.get(this, id); + return ret; } - return f; + }); + } + callback2Id(f) { + const id = uniqueId('Function'); + this.callbacks.set(id, f); + return id; + } + id2Callback(id) { + let f = this.callbacks.get(id); + if (f === undefined) { + f = Reflect.get(this, id); } - /** Anchor start*/ - get left() { - return this.x; + return f; + } + /** Anchor start*/ + get left() { + return this.x; + } + set left(v) { + this.x = v; + } + get right() { + return this.x + this.width; + } + set right(v) { + this.x = v - this.width; + } + get top() { + return this.y; + } + set top(v) { + this.y = v; + } + get bottom() { + return this.y + this.height; + } + set bottom(v) { + this.y = v - this.height; + } + get centerX() { + return this.x + this.width / 2; + } + get centerY() { + return this.y + this.height / 2; + } + set centerX(v) { + this.x = v - this.width / 2; + } + set centerY(v) { + this.y = v - this.height / 2; + } + get dirtyProps() { + return this.__dirty_props__; + } + onPropertyChanged(propKey, oldV, newV) { + if (newV instanceof Function) { + newV = this.callback2Id(newV); } - set left(v) { - this.x = v; + else { + newV = obj2Model(newV); } - get right() { - return this.x + this.width; - } - set right(v) { - this.x = v - this.width; - } - get top() { - return this.y; - } - set top(v) { - this.y = v; - } - get bottom() { - return this.y + this.height; - } - set bottom(v) { - this.y = v - this.height; - } - get centerX() { - return this.x + this.width / 2; - } - get centerY() { - return this.y + this.height / 2; - } - set centerX(v) { - this.x = v - this.width / 2; - } - set centerY(v) { - this.y = v - this.height / 2; - } - get dirtyProps() { - return this.__dirty_props__; - } - onPropertyChanged(propKey, oldV, newV) { - if (newV instanceof Function) { - newV = this.callback2Id(newV); + this.__dirty_props__[propKey] = newV; + } + clean() { + for (const key in this.__dirty_props__) { + if (Reflect.has(this.__dirty_props__, key)) { + Reflect.deleteProperty(this.__dirty_props__, key); } - else { - newV = obj2Model(newV); - } - this.__dirty_props__[propKey] = newV; - } - clean() { - for (const key in this.__dirty_props__) { - if (Reflect.has(this.__dirty_props__, key)) { - Reflect.deleteProperty(this.__dirty_props__, key); - } - } - } - isDirty() { - return Reflect.ownKeys(this.__dirty_props__).length !== 0; - } - responseCallback(id, ...args) { - const f = this.id2Callback(id); - if (f instanceof Function) { - const argumentsList = []; - for (let i = 1; i < arguments.length; i++) { - argumentsList.push(arguments[i]); - } - return Reflect.apply(f, this, argumentsList); - } - else { - loge(`Cannot find callback:${id} for ${JSON.stringify(this.toModel())}`); - } - } - toModel() { - return this.nativeViewModel; - } - let(block) { - block(this); - } - also(block) { - block(this); - return this; - } - apply(config) { - for (let key in config) { - Reflect.set(this, key, Reflect.get(config, key, config), this); - } - return this; - } - in(group) { - group.addChild(this); - return this; - } - nativeChannel(context, name) { - let thisView = this; - return function (args = undefined) { - const viewIds = []; - while (thisView != undefined) { - viewIds.push(thisView.viewId); - thisView = thisView.superview; - } - const params = { - viewIds: viewIds.reverse(), - name, - args, - }; - return context.callNative('shader', 'command', params); - }; - } - getWidth(context) { - return this.nativeChannel(context, 'getWidth')(); - } - getHeight(context) { - return this.nativeChannel(context, 'getHeight')(); - } - getX(context) { - return this.nativeChannel(context, 'getX')(); - } - getY(context) { - return this.nativeChannel(context, 'getY')(); - } - getLocationOnScreen(context) { - return this.nativeChannel(context, "getLocationOnScreen")(); - } - doAnimation(context, animation) { - return this.nativeChannel(context, "doAnimation")(animation.toModel()).then((args) => { - for (let key in args) { - Reflect.set(this, key, Reflect.get(args, key, args), this); - Reflect.deleteProperty(this.__dirty_props__, key); - } - }); } } - __decorate([ - Property, - __metadata("design:type", Number) - ], View.prototype, "width", void 0); - __decorate([ - Property, - __metadata("design:type", Number) - ], View.prototype, "height", void 0); - __decorate([ - Property, - __metadata("design:type", Number) - ], View.prototype, "x", void 0); - __decorate([ - Property, - __metadata("design:type", Number) - ], View.prototype, "y", void 0); - __decorate([ - Property, - __metadata("design:type", Object) - ], View.prototype, "backgroundColor", void 0); - __decorate([ - Property, - __metadata("design:type", Object) - ], View.prototype, "corners", void 0); - __decorate([ - Property, - __metadata("design:type", Object) - ], View.prototype, "border", void 0); - __decorate([ - Property, - __metadata("design:type", Object) - ], View.prototype, "shadow", void 0); - __decorate([ - Property, - __metadata("design:type", Number) - ], View.prototype, "alpha", void 0); - __decorate([ - Property, - __metadata("design:type", Boolean) - ], View.prototype, "hidden", void 0); - __decorate([ - Property, - __metadata("design:type", Object) - ], View.prototype, "padding", void 0); - __decorate([ - Property, - __metadata("design:type", Object) - ], View.prototype, "layoutConfig", void 0); - __decorate([ - Property, - __metadata("design:type", Function) - ], View.prototype, "onClick", void 0); - __decorate([ - Property, - __metadata("design:type", Number) - ], View.prototype, "translationX", void 0); - __decorate([ - Property, - __metadata("design:type", Number) - ], View.prototype, "translationY", void 0); - __decorate([ - Property, - __metadata("design:type", Number) - ], View.prototype, "scaleX", void 0); - __decorate([ - Property, - __metadata("design:type", Number) - ], View.prototype, "scaleY", void 0); - __decorate([ - Property, - __metadata("design:type", Number) - ], View.prototype, "pivotX", void 0); - __decorate([ - Property, - __metadata("design:type", Number) - ], View.prototype, "pivotY", void 0); - __decorate([ - Property, - __metadata("design:type", Number) - ], View.prototype, "rotation", void 0); - __decorate([ - Property, - __metadata("design:type", Number) - ], View.prototype, "rotationX", void 0); - __decorate([ - Property, - __metadata("design:type", Number) - ], View.prototype, "rotationY", void 0); - __decorate([ - Property, - __metadata("design:type", Number) - ], View.prototype, "perspective", void 0); - __decorate([ - Property, - __metadata("design:type", Object) - ], View.prototype, "flexConfig", void 0); - return View; -})(); + isDirty() { + return Reflect.ownKeys(this.__dirty_props__).length !== 0; + } + responseCallback(id, ...args) { + const f = this.id2Callback(id); + if (f instanceof Function) { + const argumentsList = []; + for (let i = 1; i < arguments.length; i++) { + argumentsList.push(arguments[i]); + } + return Reflect.apply(f, this, argumentsList); + } + else { + loge(`Cannot find callback:${id} for ${JSON.stringify(this.toModel())}`); + } + } + toModel() { + return this.nativeViewModel; + } + let(block) { + block(this); + } + also(block) { + block(this); + return this; + } + apply(config) { + for (let key in config) { + Reflect.set(this, key, Reflect.get(config, key, config), this); + } + return this; + } + in(group) { + group.addChild(this); + return this; + } + nativeChannel(context, name) { + let thisView = this; + return function (args = undefined) { + const viewIds = []; + while (thisView != undefined) { + viewIds.push(thisView.viewId); + thisView = thisView.superview; + } + const params = { + viewIds: viewIds.reverse(), + name, + args, + }; + return context.callNative('shader', 'command', params); + }; + } + getWidth(context) { + return this.nativeChannel(context, 'getWidth')(); + } + getHeight(context) { + return this.nativeChannel(context, 'getHeight')(); + } + getX(context) { + return this.nativeChannel(context, 'getX')(); + } + getY(context) { + return this.nativeChannel(context, 'getY')(); + } + getLocationOnScreen(context) { + return this.nativeChannel(context, "getLocationOnScreen")(); + } + doAnimation(context, animation) { + return this.nativeChannel(context, "doAnimation")(animation.toModel()).then((args) => { + for (let key in args) { + Reflect.set(this, key, Reflect.get(args, key, args), this); + Reflect.deleteProperty(this.__dirty_props__, key); + } + }); + } +} +__decorate([ + Property, + __metadata("design:type", Number) +], View.prototype, "width", void 0); +__decorate([ + Property, + __metadata("design:type", Number) +], View.prototype, "height", void 0); +__decorate([ + Property, + __metadata("design:type", Number) +], View.prototype, "x", void 0); +__decorate([ + Property, + __metadata("design:type", Number) +], View.prototype, "y", void 0); +__decorate([ + Property, + __metadata("design:type", Object) +], View.prototype, "backgroundColor", void 0); +__decorate([ + Property, + __metadata("design:type", Object) +], View.prototype, "corners", void 0); +__decorate([ + Property, + __metadata("design:type", Object) +], View.prototype, "border", void 0); +__decorate([ + Property, + __metadata("design:type", Object) +], View.prototype, "shadow", void 0); +__decorate([ + Property, + __metadata("design:type", Number) +], View.prototype, "alpha", void 0); +__decorate([ + Property, + __metadata("design:type", Boolean) +], View.prototype, "hidden", void 0); +__decorate([ + Property, + __metadata("design:type", Object) +], View.prototype, "padding", void 0); +__decorate([ + Property, + __metadata("design:type", Object) +], View.prototype, "layoutConfig", void 0); +__decorate([ + Property, + __metadata("design:type", Function) +], View.prototype, "onClick", void 0); +__decorate([ + Property, + __metadata("design:type", Number) +], View.prototype, "translationX", void 0); +__decorate([ + Property, + __metadata("design:type", Number) +], View.prototype, "translationY", void 0); +__decorate([ + Property, + __metadata("design:type", Number) +], View.prototype, "scaleX", void 0); +__decorate([ + Property, + __metadata("design:type", Number) +], View.prototype, "scaleY", void 0); +__decorate([ + Property, + __metadata("design:type", Number) +], View.prototype, "pivotX", void 0); +__decorate([ + Property, + __metadata("design:type", Number) +], View.prototype, "pivotY", void 0); +__decorate([ + Property, + __metadata("design:type", Number) +], View.prototype, "rotation", void 0); +__decorate([ + Property, + __metadata("design:type", Number) +], View.prototype, "rotationX", void 0); +__decorate([ + Property, + __metadata("design:type", Number) +], View.prototype, "rotationY", void 0); +__decorate([ + Property, + __metadata("design:type", Number) +], View.prototype, "perspective", void 0); +__decorate([ + Property, + __metadata("design:type", Object) +], View.prototype, "flexConfig", void 0); class Superview extends View { subviewById(id) { for (let v of this.allSubviews()) { @@ -1998,67 +1995,64 @@ const BOTTOM = (END | SPECIFIED) << SHIFT_Y; const CENTER_X = SPECIFIED << SHIFT_X; const CENTER_Y = SPECIFIED << SHIFT_Y; const CENTER = CENTER_X | CENTER_Y; -let Gravity = /** @class */ (() => { - class Gravity { - constructor() { - this.val = 0; - } - left() { - const val = this.val | LEFT; - const ret = new Gravity; - ret.val = val; - return ret; - } - right() { - const val = this.val | RIGHT; - const ret = new Gravity; - ret.val = val; - return ret; - } - top() { - const val = this.val | TOP; - const ret = new Gravity; - ret.val = val; - return ret; - } - bottom() { - const val = this.val | BOTTOM; - const ret = new Gravity; - ret.val = val; - return ret; - } - center() { - const val = this.val | CENTER; - const ret = new Gravity; - ret.val = val; - return ret; - } - centerX() { - const val = this.val | CENTER_X; - const ret = new Gravity; - ret.val = val; - return ret; - } - centerY() { - const val = this.val | CENTER_Y; - const ret = new Gravity; - ret.val = val; - return ret; - } - toModel() { - return this.val; - } +class Gravity { + constructor() { + this.val = 0; } - Gravity.origin = new Gravity; - Gravity.Center = Gravity.origin.center(); - Gravity.CenterX = Gravity.origin.centerX(); - Gravity.CenterY = Gravity.origin.centerY(); - Gravity.Left = Gravity.origin.left(); - Gravity.Right = Gravity.origin.right(); - Gravity.Top = Gravity.origin.top(); - Gravity.Bottom = Gravity.origin.bottom(); - return Gravity; -})(); + left() { + const val = this.val | LEFT; + const ret = new Gravity; + ret.val = val; + return ret; + } + right() { + const val = this.val | RIGHT; + const ret = new Gravity; + ret.val = val; + return ret; + } + top() { + const val = this.val | TOP; + const ret = new Gravity; + ret.val = val; + return ret; + } + bottom() { + const val = this.val | BOTTOM; + const ret = new Gravity; + ret.val = val; + return ret; + } + center() { + const val = this.val | CENTER; + const ret = new Gravity; + ret.val = val; + return ret; + } + centerX() { + const val = this.val | CENTER_X; + const ret = new Gravity; + ret.val = val; + return ret; + } + centerY() { + const val = this.val | CENTER_Y; + const ret = new Gravity; + ret.val = val; + return ret; + } + toModel() { + return this.val; + } +} +Gravity.origin = new Gravity; +Gravity.Center = Gravity.origin.center(); +Gravity.CenterX = Gravity.origin.centerX(); +Gravity.CenterY = Gravity.origin.centerY(); +Gravity.Left = Gravity.origin.left(); +Gravity.Right = Gravity.origin.right(); +Gravity.Top = Gravity.origin.top(); +Gravity.Bottom = Gravity.origin.bottom(); function gravity() { return new Gravity; } @@ -2156,19 +2150,16 @@ class Stack extends Group { } class Root extends Stack { } -let LinearLayout = /** @class */ (() => { - class LinearLayout extends Group { - } - __decorate$1([ - Property, - __metadata$1("design:type", Number) - ], LinearLayout.prototype, "space", void 0); - __decorate$1([ - Property, - __metadata$1("design:type", Gravity) - ], LinearLayout.prototype, "gravity", void 0); - return LinearLayout; -})(); +class LinearLayout extends Group { +} +__decorate$1([ + Property, + __metadata$1("design:type", Number) +], LinearLayout.prototype, "space", void 0); +__decorate$1([ + Property, + __metadata$1("design:type", Gravity) +], LinearLayout.prototype, "gravity", void 0); class VLayout extends LinearLayout { } class HLayout extends LinearLayout { @@ -2245,234 +2236,231 @@ function NativeCall(target, propertyKey, descriptor) { }; return descriptor; } -let Panel = /** @class */ (() => { - class Panel { - constructor() { - this.destroyed = false; - this.__root__ = new Root; - this.headviews = new Map; - this.onRenderFinishedCallback = []; - this.__rendering__ = false; +class Panel { + constructor() { + this.destroyed = false; + this.__root__ = new Root; + this.headviews = new Map; + this.onRenderFinishedCallback = []; + this.__rendering__ = false; + } + onCreate() { } + onDestroy() { } + onShow() { } + onHidden() { } + addHeadView(type, v) { + let map = this.headviews.get(type); + if (map) { + map.set(v.viewId, v); } - onCreate() { } - onDestroy() { } - onShow() { } - onHidden() { } - addHeadView(type, v) { + else { + map = new Map; + map.set(v.viewId, v); + this.headviews.set(type, map); + } + } + allHeadViews() { + return this.headviews.values(); + } + removeHeadView(type, v) { + if (this.headviews.has(type)) { let map = this.headviews.get(type); if (map) { - map.set(v.viewId, v); - } - else { - map = new Map; - map.set(v.viewId, v); - this.headviews.set(type, map); - } - } - allHeadViews() { - return this.headviews.values(); - } - removeHeadView(type, v) { - if (this.headviews.has(type)) { - let map = this.headviews.get(type); - if (map) { - if (v instanceof View) { - map.delete(v.viewId); - } - else { - map.delete(v); - } - } - } - } - clearHeadViews(type) { - if (this.headviews.has(type)) { - this.headviews.delete(type); - } - } - getRootView() { - return this.__root__; - } - getInitData() { - return this.__data__; - } - __init__(data) { - if (data) { - this.__data__ = JSON.parse(data); - } - } - __onCreate__() { - this.onCreate(); - } - __onDestroy__() { - this.destroyed = true; - this.onDestroy(); - } - __onShow__() { - this.onShow(); - } - __onHidden__() { - this.onHidden(); - } - __build__(frame) { - this.__root__.width = frame.width; - this.__root__.height = frame.height; - this.__root__.children.length = 0; - this.build(this.__root__); - } - __response__(viewIds, callbackId) { - const v = this.retrospectView(viewIds); - if (v === undefined) { - loge(`Cannot find view for ${viewIds}`); - } - else { - const argumentsList = [callbackId]; - for (let i = 2; i < arguments.length; i++) { - argumentsList.push(arguments[i]); - } - return Reflect.apply(v.responseCallback, v, argumentsList); - } - } - retrospectView(ids) { - return ids.reduce((acc, cur) => { - if (acc === undefined) { - if (cur === this.__root__.viewId) { - return this.__root__; - } - for (let map of this.headviews.values()) { - if (map.has(cur)) { - return map.get(cur); - } - } - return undefined; + if (v instanceof View) { + map.delete(v.viewId); } else { - if (Reflect.has(acc, "subviewById")) { - return Reflect.apply(Reflect.get(acc, "subviewById"), acc, [cur]); - } - return acc; + map.delete(v); } - }, undefined); + } } - nativeRender(model) { - return this.context.callNative("shader", "render", model); + } + clearHeadViews(type) { + if (this.headviews.has(type)) { + this.headviews.delete(type); } - hookBeforeNativeCall() { - if (Environment.platform !== 'web') { - this.__root__.clean(); + } + getRootView() { + return this.__root__; + } + getInitData() { + return this.__data__; + } + __init__(data) { + if (data) { + this.__data__ = JSON.parse(data); + } + } + __onCreate__() { + this.onCreate(); + } + __onDestroy__() { + this.destroyed = true; + this.onDestroy(); + } + __onShow__() { + this.onShow(); + } + __onHidden__() { + this.onHidden(); + } + __build__(frame) { + this.__root__.width = frame.width; + this.__root__.height = frame.height; + this.__root__.children.length = 0; + this.build(this.__root__); + } + __response__(viewIds, callbackId) { + const v = this.retrospectView(viewIds); + if (v === undefined) { + loge(`Cannot find view for ${viewIds}`); + } + else { + const argumentsList = [callbackId]; + for (let i = 2; i < arguments.length; i++) { + argumentsList.push(arguments[i]); + } + return Reflect.apply(v.responseCallback, v, argumentsList); + } + } + retrospectView(ids) { + return ids.reduce((acc, cur) => { + if (acc === undefined) { + if (cur === this.__root__.viewId) { + return this.__root__; + } for (let map of this.headviews.values()) { - for (let v of map.values()) { - v.clean(); + if (map.has(cur)) { + return map.get(cur); + } + } + return undefined; + } + else { + if (Reflect.has(acc, "subviewById")) { + return Reflect.apply(Reflect.get(acc, "subviewById"), acc, [cur]); + } + return acc; + } + }, undefined); + } + nativeRender(model) { + return this.context.callNative("shader", "render", model); + } + hookBeforeNativeCall() { + if (Environment.platform !== 'web') { + this.__root__.clean(); + for (let map of this.headviews.values()) { + for (let v of map.values()) { + v.clean(); + } + } + } + } + hookAfterNativeCall() { + if (this.destroyed) { + return; + } + const promises = []; + if (Environment.platform !== 'web') { + //Here insert a native call to ensure the promise is resolved done. + nativeEmpty(); + if (this.__root__.isDirty()) { + const model = this.__root__.toModel(); + promises.push(this.nativeRender(model)); + } + for (let map of this.headviews.values()) { + for (let v of map.values()) { + if (v.isDirty()) { + const model = v.toModel(); + promises.push(this.nativeRender(model)); } } } } - hookAfterNativeCall() { - if (this.destroyed) { - return; - } - const promises = []; - if (Environment.platform !== 'web') { - //Here insert a native call to ensure the promise is resolved done. - nativeEmpty(); + else { + Promise.resolve().then(() => { if (this.__root__.isDirty()) { const model = this.__root__.toModel(); promises.push(this.nativeRender(model)); + this.__root__.clean(); } for (let map of this.headviews.values()) { for (let v of map.values()) { if (v.isDirty()) { const model = v.toModel(); promises.push(this.nativeRender(model)); + v.clean(); } } } - } - else { - Promise.resolve().then(() => { - if (this.__root__.isDirty()) { - const model = this.__root__.toModel(); - promises.push(this.nativeRender(model)); - this.__root__.clean(); - } - for (let map of this.headviews.values()) { - for (let v of map.values()) { - if (v.isDirty()) { - const model = v.toModel(); - promises.push(this.nativeRender(model)); - v.clean(); - } - } - } - }); - } - if (this.__rendering__) { - //skip - Promise.all(promises).then(_ => { - }); - } - else { - this.__rendering__ = true; - Promise.all(promises).then(_ => { - this.__rendering__ = false; - this.onRenderFinished(); - }); - } - } - onRenderFinished() { - this.onRenderFinishedCallback.forEach(e => { - e(); }); - this.onRenderFinishedCallback.length = 0; } - addOnRenderFinishedCallback(cb) { - this.onRenderFinishedCallback.push(cb); + if (this.__rendering__) { + //skip + Promise.all(promises).then(_ => { + }); + } + else { + this.__rendering__ = true; + Promise.all(promises).then(_ => { + this.__rendering__ = false; + this.onRenderFinished(); + }); } } - __decorate$2([ - NativeCall, - __metadata$2("design:type", Function), - __metadata$2("design:paramtypes", [String]), - __metadata$2("design:returntype", void 0) - ], Panel.prototype, "__init__", null); - __decorate$2([ - NativeCall, - __metadata$2("design:type", Function), - __metadata$2("design:paramtypes", []), - __metadata$2("design:returntype", void 0) - ], Panel.prototype, "__onCreate__", null); - __decorate$2([ - NativeCall, - __metadata$2("design:type", Function), - __metadata$2("design:paramtypes", []), - __metadata$2("design:returntype", void 0) - ], Panel.prototype, "__onDestroy__", null); - __decorate$2([ - NativeCall, - __metadata$2("design:type", Function), - __metadata$2("design:paramtypes", []), - __metadata$2("design:returntype", void 0) - ], Panel.prototype, "__onShow__", null); - __decorate$2([ - NativeCall, - __metadata$2("design:type", Function), - __metadata$2("design:paramtypes", []), - __metadata$2("design:returntype", void 0) - ], Panel.prototype, "__onHidden__", null); - __decorate$2([ - NativeCall, - __metadata$2("design:type", Function), - __metadata$2("design:paramtypes", [Object]), - __metadata$2("design:returntype", void 0) - ], Panel.prototype, "__build__", null); - __decorate$2([ - NativeCall, - __metadata$2("design:type", Function), - __metadata$2("design:paramtypes", [Array, String]), - __metadata$2("design:returntype", void 0) - ], Panel.prototype, "__response__", null); - return Panel; -})(); + onRenderFinished() { + this.onRenderFinishedCallback.forEach(e => { + e(); + }); + this.onRenderFinishedCallback.length = 0; + } + addOnRenderFinishedCallback(cb) { + this.onRenderFinishedCallback.push(cb); + } +} +__decorate$2([ + NativeCall, + __metadata$2("design:type", Function), + __metadata$2("design:paramtypes", [String]), + __metadata$2("design:returntype", void 0) +], Panel.prototype, "__init__", null); +__decorate$2([ + NativeCall, + __metadata$2("design:type", Function), + __metadata$2("design:paramtypes", []), + __metadata$2("design:returntype", void 0) +], Panel.prototype, "__onCreate__", null); +__decorate$2([ + NativeCall, + __metadata$2("design:type", Function), + __metadata$2("design:paramtypes", []), + __metadata$2("design:returntype", void 0) +], Panel.prototype, "__onDestroy__", null); +__decorate$2([ + NativeCall, + __metadata$2("design:type", Function), + __metadata$2("design:paramtypes", []), + __metadata$2("design:returntype", void 0) +], Panel.prototype, "__onShow__", null); +__decorate$2([ + NativeCall, + __metadata$2("design:type", Function), + __metadata$2("design:paramtypes", []), + __metadata$2("design:returntype", void 0) +], Panel.prototype, "__onHidden__", null); +__decorate$2([ + NativeCall, + __metadata$2("design:type", Function), + __metadata$2("design:paramtypes", [Object]), + __metadata$2("design:returntype", void 0) +], Panel.prototype, "__build__", null); +__decorate$2([ + NativeCall, + __metadata$2("design:type", Function), + __metadata$2("design:paramtypes", [Array, String]), + __metadata$2("design:returntype", void 0) +], Panel.prototype, "__response__", null); /* * Copyright [2019] [Doric.Pub] @@ -2739,60 +2727,57 @@ class AnimationSet { /** * Store color as format AARRGGBB or RRGGBB */ -let Color = /** @class */ (() => { - class Color { - constructor(v) { - this._value = 0; - this._value = v | 0x0; +class Color { + constructor(v) { + this._value = 0; + this._value = v | 0x0; + } + static parse(str) { + if (!str.startsWith("#")) { + throw new Error(`Parse color error with ${str}`); } - static parse(str) { - if (!str.startsWith("#")) { - throw new Error(`Parse color error with ${str}`); - } - const val = parseInt(str.substr(1), 16); - if (str.length === 7) { - return new Color(val | 0xff000000); - } - else if (str.length === 9) { - return new Color(val); - } - else { - throw new Error(`Parse color error with ${str}`); - } + const val = parseInt(str.substr(1), 16); + if (str.length === 7) { + return new Color(val | 0xff000000); } - static safeParse(str, defVal = Color.TRANSPARENT) { - let color = defVal; - try { - color = Color.parse(str); - } - catch (e) { - } - finally { - return color; - } + else if (str.length === 9) { + return new Color(val); } - alpha(v) { - v = v * 255; - return new Color((this._value & 0xffffff) | ((v & 0xff) << 24)); - } - toModel() { - return this._value; + else { + throw new Error(`Parse color error with ${str}`); } } - Color.BLACK = new Color(0xFF000000); - Color.DKGRAY = new Color(0xFF444444); - Color.GRAY = new Color(0xFF888888); - Color.LTGRAY = new Color(0xFFCCCCCC); - Color.WHITE = new Color(0xFFFFFFFF); - Color.RED = new Color(0xFFFF0000); - Color.GREEN = new Color(0xFF00FF00); - Color.BLUE = new Color(0xFF0000FF); - Color.YELLOW = new Color(0xFFFFFF00); - Color.CYAN = new Color(0xFF00FFFF); - Color.MAGENTA = new Color(0xFFFF00FF); - Color.TRANSPARENT = new Color(0); - return Color; -})(); + static safeParse(str, defVal = Color.TRANSPARENT) { + let color = defVal; + try { + color = Color.parse(str); + } + catch (e) { + } + finally { + return color; + } + } + alpha(v) { + v = v * 255; + return new Color((this._value & 0xffffff) | ((v & 0xff) << 24)); + } + toModel() { + return this._value; + } +} +Color.BLACK = new Color(0xFF000000); +Color.DKGRAY = new Color(0xFF444444); +Color.GRAY = new Color(0xFF888888); +Color.LTGRAY = new Color(0xFFCCCCCC); +Color.WHITE = new Color(0xFFFFFFFF); +Color.RED = new Color(0xFFFF0000); +Color.GREEN = new Color(0xFF00FF00); +Color.BLUE = new Color(0xFF0000FF); +Color.YELLOW = new Color(0xFFFFFF00); +Color.CYAN = new Color(0xFF00FFFF); +Color.MAGENTA = new Color(0xFFFF00FF); +Color.TRANSPARENT = new Color(0); (function (GradientOrientation) { /** draw the gradient from the top to the bottom */ GradientOrientation[GradientOrientation["TOP_BOTTOM"] = 0] = "TOP_BOTTOM"; @@ -2827,67 +2812,64 @@ var __metadata$3 = (undefined && undefined.__metadata) || function (k, v) { TruncateAt[TruncateAt["Start"] = 2] = "Start"; TruncateAt[TruncateAt["Clip"] = 3] = "Clip"; })(exports.TruncateAt || (exports.TruncateAt = {})); -let Text = /** @class */ (() => { - class Text extends View { - } - __decorate$3([ - Property, - __metadata$3("design:type", String) - ], Text.prototype, "text", void 0); - __decorate$3([ - Property, - __metadata$3("design:type", Color) - ], Text.prototype, "textColor", void 0); - __decorate$3([ - Property, - __metadata$3("design:type", Number) - ], Text.prototype, "textSize", void 0); - __decorate$3([ - Property, - __metadata$3("design:type", Number) - ], Text.prototype, "maxLines", void 0); - __decorate$3([ - Property, - __metadata$3("design:type", Gravity) - ], Text.prototype, "textAlignment", void 0); - __decorate$3([ - Property, - __metadata$3("design:type", String) - ], Text.prototype, "fontStyle", void 0); - __decorate$3([ - Property, - __metadata$3("design:type", String) - ], Text.prototype, "font", void 0); - __decorate$3([ - Property, - __metadata$3("design:type", Number) - ], Text.prototype, "maxWidth", void 0); - __decorate$3([ - Property, - __metadata$3("design:type", Number) - ], Text.prototype, "maxHeight", void 0); - __decorate$3([ - Property, - __metadata$3("design:type", Number) - ], Text.prototype, "lineSpacing", void 0); - __decorate$3([ - Property, - __metadata$3("design:type", Boolean) - ], Text.prototype, "strikethrough", void 0); - __decorate$3([ - Property, - __metadata$3("design:type", Boolean) - ], Text.prototype, "underline", void 0); - __decorate$3([ - Property, - __metadata$3("design:type", String) - ], Text.prototype, "htmlText", void 0); - __decorate$3([ - Property, - __metadata$3("design:type", Number) - ], Text.prototype, "truncateAt", void 0); - return Text; -})(); +class Text extends View { +} +__decorate$3([ + Property, + __metadata$3("design:type", String) +], Text.prototype, "text", void 0); +__decorate$3([ + Property, + __metadata$3("design:type", Color) +], Text.prototype, "textColor", void 0); +__decorate$3([ + Property, + __metadata$3("design:type", Number) +], Text.prototype, "textSize", void 0); +__decorate$3([ + Property, + __metadata$3("design:type", Number) +], Text.prototype, "maxLines", void 0); +__decorate$3([ + Property, + __metadata$3("design:type", Gravity) +], Text.prototype, "textAlignment", void 0); +__decorate$3([ + Property, + __metadata$3("design:type", String) +], Text.prototype, "fontStyle", void 0); +__decorate$3([ + Property, + __metadata$3("design:type", String) +], Text.prototype, "font", void 0); +__decorate$3([ + Property, + __metadata$3("design:type", Number) +], Text.prototype, "maxWidth", void 0); +__decorate$3([ + Property, + __metadata$3("design:type", Number) +], Text.prototype, "maxHeight", void 0); +__decorate$3([ + Property, + __metadata$3("design:type", Number) +], Text.prototype, "lineSpacing", void 0); +__decorate$3([ + Property, + __metadata$3("design:type", Boolean) +], Text.prototype, "strikethrough", void 0); +__decorate$3([ + Property, + __metadata$3("design:type", Boolean) +], Text.prototype, "underline", void 0); +__decorate$3([ + Property, + __metadata$3("design:type", String) +], Text.prototype, "htmlText", void 0); +__decorate$3([ + Property, + __metadata$3("design:type", Number) +], Text.prototype, "truncateAt", void 0); function text(config) { const ret = new Text; ret.layoutConfig = layoutConfig().fit(); @@ -2911,76 +2893,73 @@ var __metadata$4 = (undefined && undefined.__metadata) || function (k, v) { ScaleType[ScaleType["ScaleAspectFit"] = 1] = "ScaleAspectFit"; ScaleType[ScaleType["ScaleAspectFill"] = 2] = "ScaleAspectFill"; })(exports.ScaleType || (exports.ScaleType = {})); -let Image = /** @class */ (() => { - class Image extends View { - } - __decorate$4([ - Property, - __metadata$4("design:type", String) - ], Image.prototype, "imageUrl", void 0); - __decorate$4([ - Property, - __metadata$4("design:type", String) - ], Image.prototype, "imagePath", void 0); - __decorate$4([ - Property, - __metadata$4("design:type", String) - ], Image.prototype, "imageRes", void 0); - __decorate$4([ - Property, - __metadata$4("design:type", String) - ], Image.prototype, "imageBase64", void 0); - __decorate$4([ - Property, - __metadata$4("design:type", Number) - ], Image.prototype, "scaleType", void 0); - __decorate$4([ - Property, - __metadata$4("design:type", Boolean) - ], Image.prototype, "isBlur", void 0); - __decorate$4([ - Property, - __metadata$4("design:type", String) - ], Image.prototype, "placeHolderImage", void 0); - __decorate$4([ - Property, - __metadata$4("design:type", String) - ], Image.prototype, "placeHolderImageBase64", void 0); - __decorate$4([ - Property, - __metadata$4("design:type", Color - /** - * Display while image is failed to load - * It can be file name in local path - */ - ) - ], Image.prototype, "placeHolderColor", void 0); - __decorate$4([ - Property, - __metadata$4("design:type", String) - ], Image.prototype, "errorImage", void 0); - __decorate$4([ - Property, - __metadata$4("design:type", String) - ], Image.prototype, "errorImageBase64", void 0); - __decorate$4([ - Property, - __metadata$4("design:type", Color) - ], Image.prototype, "errorColor", void 0); - __decorate$4([ - Property, - __metadata$4("design:type", Function) - ], Image.prototype, "loadCallback", void 0); - __decorate$4([ - Property, - __metadata$4("design:type", Number) - ], Image.prototype, "imageScale", void 0); - __decorate$4([ - Property, - __metadata$4("design:type", Object) - ], Image.prototype, "stretchInset", void 0); - return Image; -})(); +class Image extends View { +} +__decorate$4([ + Property, + __metadata$4("design:type", String) +], Image.prototype, "imageUrl", void 0); +__decorate$4([ + Property, + __metadata$4("design:type", String) +], Image.prototype, "imagePath", void 0); +__decorate$4([ + Property, + __metadata$4("design:type", String) +], Image.prototype, "imageRes", void 0); +__decorate$4([ + Property, + __metadata$4("design:type", String) +], Image.prototype, "imageBase64", void 0); +__decorate$4([ + Property, + __metadata$4("design:type", Number) +], Image.prototype, "scaleType", void 0); +__decorate$4([ + Property, + __metadata$4("design:type", Boolean) +], Image.prototype, "isBlur", void 0); +__decorate$4([ + Property, + __metadata$4("design:type", String) +], Image.prototype, "placeHolderImage", void 0); +__decorate$4([ + Property, + __metadata$4("design:type", String) +], Image.prototype, "placeHolderImageBase64", void 0); +__decorate$4([ + Property, + __metadata$4("design:type", Color + /** + * Display while image is failed to load + * It can be file name in local path + */ + ) +], Image.prototype, "placeHolderColor", void 0); +__decorate$4([ + Property, + __metadata$4("design:type", String) +], Image.prototype, "errorImage", void 0); +__decorate$4([ + Property, + __metadata$4("design:type", String) +], Image.prototype, "errorImageBase64", void 0); +__decorate$4([ + Property, + __metadata$4("design:type", Color) +], Image.prototype, "errorColor", void 0); +__decorate$4([ + Property, + __metadata$4("design:type", Function) +], Image.prototype, "loadCallback", void 0); +__decorate$4([ + Property, + __metadata$4("design:type", Number) +], Image.prototype, "imageScale", void 0); +__decorate$4([ + Property, + __metadata$4("design:type", Object) +], Image.prototype, "stretchInset", void 0); function image(config) { const ret = new Image; ret.layoutConfig = layoutConfig().fit(); @@ -3014,106 +2993,100 @@ var __decorate$5 = (undefined && undefined.__decorate) || function (decorators, var __metadata$5 = (undefined && undefined.__metadata) || function (k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; -let ListItem = /** @class */ (() => { - class ListItem extends Stack { +class ListItem extends Stack { +} +__decorate$5([ + Property, + __metadata$5("design:type", String) +], ListItem.prototype, "identifier", void 0); +class List extends Superview { + constructor() { + super(...arguments); + this.cachedViews = new Map; + this.ignoreDirtyCallOnce = false; + this.itemCount = 0; + this.batchCount = 15; } - __decorate$5([ - Property, - __metadata$5("design:type", String) - ], ListItem.prototype, "identifier", void 0); - return ListItem; -})(); -let List = /** @class */ (() => { - class List extends Superview { - constructor() { - super(...arguments); - this.cachedViews = new Map; + allSubviews() { + if (this.loadMoreView) { + return [...this.cachedViews.values(), this.loadMoreView]; + } + else { + return this.cachedViews.values(); + } + } + scrollToItem(context, index, config) { + const animated = config === null || config === void 0 ? void 0 : config.animated; + return this.nativeChannel(context, 'scrollToItem')({ index, animated, }); + } + reset() { + this.cachedViews.clear(); + this.itemCount = 0; + } + getItem(itemIdx) { + let view = this.renderItem(itemIdx); + view.superview = this; + this.cachedViews.set(`${itemIdx}`, view); + return view; + } + isDirty() { + if (this.ignoreDirtyCallOnce) { this.ignoreDirtyCallOnce = false; - this.itemCount = 0; - this.batchCount = 15; - } - allSubviews() { - if (this.loadMoreView) { - return [...this.cachedViews.values(), this.loadMoreView]; - } - else { - return this.cachedViews.values(); - } - } - scrollToItem(context, index, config) { - const animated = config === null || config === void 0 ? void 0 : config.animated; - return this.nativeChannel(context, 'scrollToItem')({ index, animated, }); - } - reset() { - this.cachedViews.clear(); - this.itemCount = 0; - } - getItem(itemIdx) { - let view = this.renderItem(itemIdx); - view.superview = this; - this.cachedViews.set(`${itemIdx}`, view); - return view; - } - isDirty() { - if (this.ignoreDirtyCallOnce) { - this.ignoreDirtyCallOnce = false; - //Ignore the dirty call once. - return false; - } - return super.isDirty(); - } - renderBunchedItems(start, length) { - this.ignoreDirtyCallOnce = true; - return new Array(Math.max(0, Math.min(length, this.itemCount - start))).fill(0).map((_, idx) => { - const listItem = this.getItem(start + idx); - return listItem.toModel(); - }); - } - toModel() { - if (this.loadMoreView) { - this.dirtyProps['loadMoreView'] = this.loadMoreView.viewId; - } - return super.toModel(); + //Ignore the dirty call once. + return false; } + return super.isDirty(); } - __decorate$5([ - Property, - __metadata$5("design:type", Object) - ], List.prototype, "itemCount", void 0); - __decorate$5([ - Property, - __metadata$5("design:type", Function) - ], List.prototype, "renderItem", void 0); - __decorate$5([ - Property, - __metadata$5("design:type", Object) - ], List.prototype, "batchCount", void 0); - __decorate$5([ - Property, - __metadata$5("design:type", Function) - ], List.prototype, "onLoadMore", void 0); - __decorate$5([ - Property, - __metadata$5("design:type", Boolean) - ], List.prototype, "loadMore", void 0); - __decorate$5([ - Property, - __metadata$5("design:type", ListItem) - ], List.prototype, "loadMoreView", void 0); - __decorate$5([ - Property, - __metadata$5("design:type", Function) - ], List.prototype, "onScroll", void 0); - __decorate$5([ - Property, - __metadata$5("design:type", Function) - ], List.prototype, "onScrollEnd", void 0); - __decorate$5([ - Property, - __metadata$5("design:type", Number) - ], List.prototype, "scrolledPosition", void 0); - return List; -})(); + renderBunchedItems(start, length) { + this.ignoreDirtyCallOnce = true; + return new Array(Math.max(0, Math.min(length, this.itemCount - start))).fill(0).map((_, idx) => { + const listItem = this.getItem(start + idx); + return listItem.toModel(); + }); + } + toModel() { + if (this.loadMoreView) { + this.dirtyProps['loadMoreView'] = this.loadMoreView.viewId; + } + return super.toModel(); + } +} +__decorate$5([ + Property, + __metadata$5("design:type", Object) +], List.prototype, "itemCount", void 0); +__decorate$5([ + Property, + __metadata$5("design:type", Function) +], List.prototype, "renderItem", void 0); +__decorate$5([ + Property, + __metadata$5("design:type", Object) +], List.prototype, "batchCount", void 0); +__decorate$5([ + Property, + __metadata$5("design:type", Function) +], List.prototype, "onLoadMore", void 0); +__decorate$5([ + Property, + __metadata$5("design:type", Boolean) +], List.prototype, "loadMore", void 0); +__decorate$5([ + Property, + __metadata$5("design:type", ListItem) +], List.prototype, "loadMoreView", void 0); +__decorate$5([ + Property, + __metadata$5("design:type", Function) +], List.prototype, "onScroll", void 0); +__decorate$5([ + Property, + __metadata$5("design:type", Function) +], List.prototype, "onScrollEnd", void 0); +__decorate$5([ + Property, + __metadata$5("design:type", Number) +], List.prototype, "scrolledPosition", void 0); function list(config) { const ret = new List; for (let key in config) { @@ -3149,77 +3122,71 @@ var __decorate$6 = (undefined && undefined.__decorate) || function (decorators, var __metadata$6 = (undefined && undefined.__metadata) || function (k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; -let SlideItem = /** @class */ (() => { - class SlideItem extends Stack { +class SlideItem extends Stack { +} +__decorate$6([ + Property, + __metadata$6("design:type", String) +], SlideItem.prototype, "identifier", void 0); +class Slider extends Superview { + constructor() { + super(...arguments); + this.cachedViews = new Map; + this.ignoreDirtyCallOnce = false; + this.itemCount = 0; + this.batchCount = 3; } - __decorate$6([ - Property, - __metadata$6("design:type", String) - ], SlideItem.prototype, "identifier", void 0); - return SlideItem; -})(); -let Slider = /** @class */ (() => { - class Slider extends Superview { - constructor() { - super(...arguments); - this.cachedViews = new Map; + allSubviews() { + return this.cachedViews.values(); + } + getItem(itemIdx) { + let view = this.renderPage(itemIdx); + view.superview = this; + this.cachedViews.set(`${itemIdx}`, view); + return view; + } + isDirty() { + if (this.ignoreDirtyCallOnce) { this.ignoreDirtyCallOnce = false; - this.itemCount = 0; - this.batchCount = 3; - } - allSubviews() { - return this.cachedViews.values(); - } - getItem(itemIdx) { - let view = this.renderPage(itemIdx); - view.superview = this; - this.cachedViews.set(`${itemIdx}`, view); - return view; - } - isDirty() { - if (this.ignoreDirtyCallOnce) { - this.ignoreDirtyCallOnce = false; - //Ignore the dirty call once. - return false; - } - return super.isDirty(); - } - renderBunchedItems(start, length) { - this.ignoreDirtyCallOnce = true; - return new Array(Math.min(length, this.itemCount - start)).fill(0).map((_, idx) => { - const slideItem = this.getItem(start + idx); - return slideItem.toModel(); - }); - } - slidePage(context, page, smooth = false) { - return this.nativeChannel(context, "slidePage")({ page, smooth }); - } - getSlidedPage(context) { - return this.nativeChannel(context, "getSlidedPage")(); + //Ignore the dirty call once. + return false; } + return super.isDirty(); } - __decorate$6([ - Property, - __metadata$6("design:type", Object) - ], Slider.prototype, "itemCount", void 0); - __decorate$6([ - Property, - __metadata$6("design:type", Function) - ], Slider.prototype, "renderPage", void 0); - __decorate$6([ - Property, - __metadata$6("design:type", Object) - ], Slider.prototype, "batchCount", void 0); - __decorate$6([ - Property, - __metadata$6("design:type", Function) - ], Slider.prototype, "onPageSlided", void 0); - __decorate$6([ - Property, - __metadata$6("design:type", Boolean) - ], Slider.prototype, "loop", void 0); - return Slider; -})(); + renderBunchedItems(start, length) { + this.ignoreDirtyCallOnce = true; + return new Array(Math.min(length, this.itemCount - start)).fill(0).map((_, idx) => { + const slideItem = this.getItem(start + idx); + return slideItem.toModel(); + }); + } + slidePage(context, page, smooth = false) { + return this.nativeChannel(context, "slidePage")({ page, smooth }); + } + getSlidedPage(context) { + return this.nativeChannel(context, "getSlidedPage")(); + } +} +__decorate$6([ + Property, + __metadata$6("design:type", Object) +], Slider.prototype, "itemCount", void 0); +__decorate$6([ + Property, + __metadata$6("design:type", Function) +], Slider.prototype, "renderPage", void 0); +__decorate$6([ + Property, + __metadata$6("design:type", Object) +], Slider.prototype, "batchCount", void 0); +__decorate$6([ + Property, + __metadata$6("design:type", Function) +], Slider.prototype, "onPageSlided", void 0); +__decorate$6([ + Property, + __metadata$6("design:type", Boolean) +], Slider.prototype, "loop", void 0); function slider(config) { const ret = new Slider; for (let key in config) { @@ -3266,36 +3233,33 @@ function scroller(content, config) { v.content = content; }); } -let Scroller = /** @class */ (() => { - class Scroller extends Superview { - allSubviews() { - return [this.content]; - } - toModel() { - this.dirtyProps.content = this.content.viewId; - return super.toModel(); - } - scrollTo(context, offset, animated) { - return this.nativeChannel(context, "scrollTo")({ offset, animated }); - } - scrollBy(context, offset, animated) { - return this.nativeChannel(context, "scrollBy")({ offset, animated }); - } +class Scroller extends Superview { + allSubviews() { + return [this.content]; } - __decorate$7([ - Property, - __metadata$7("design:type", Object) - ], Scroller.prototype, "contentOffset", void 0); - __decorate$7([ - Property, - __metadata$7("design:type", Function) - ], Scroller.prototype, "onScroll", void 0); - __decorate$7([ - Property, - __metadata$7("design:type", Function) - ], Scroller.prototype, "onScrollEnd", void 0); - return Scroller; -})(); + toModel() { + this.dirtyProps.content = this.content.viewId; + return super.toModel(); + } + scrollTo(context, offset, animated) { + return this.nativeChannel(context, "scrollTo")({ offset, animated }); + } + scrollBy(context, offset, animated) { + return this.nativeChannel(context, "scrollBy")({ offset, animated }); + } +} +__decorate$7([ + Property, + __metadata$7("design:type", Object) +], Scroller.prototype, "contentOffset", void 0); +__decorate$7([ + Property, + __metadata$7("design:type", Function) +], Scroller.prototype, "onScroll", void 0); +__decorate$7([ + Property, + __metadata$7("design:type", Function) +], Scroller.prototype, "onScrollEnd", void 0); var __decorate$8 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; @@ -3306,39 +3270,36 @@ var __decorate$8 = (undefined && undefined.__decorate) || function (decorators, var __metadata$8 = (undefined && undefined.__metadata) || function (k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; -let Refreshable = /** @class */ (() => { - class Refreshable extends Superview { - allSubviews() { - const ret = [this.content]; - if (this.header) { - ret.push(this.header); - } - return ret; - } - setRefreshable(context, refreshable) { - return this.nativeChannel(context, 'setRefreshable')(refreshable); - } - setRefreshing(context, refreshing) { - return this.nativeChannel(context, 'setRefreshing')(refreshing); - } - isRefreshable(context) { - return this.nativeChannel(context, 'isRefreshable')(); - } - isRefreshing(context) { - return this.nativeChannel(context, 'isRefreshing')(); - } - toModel() { - this.dirtyProps.content = this.content.viewId; - this.dirtyProps.header = (this.header || {}).viewId; - return super.toModel(); +class Refreshable extends Superview { + allSubviews() { + const ret = [this.content]; + if (this.header) { + ret.push(this.header); } + return ret; } - __decorate$8([ - Property, - __metadata$8("design:type", Function) - ], Refreshable.prototype, "onRefresh", void 0); - return Refreshable; -})(); + setRefreshable(context, refreshable) { + return this.nativeChannel(context, 'setRefreshable')(refreshable); + } + setRefreshing(context, refreshing) { + return this.nativeChannel(context, 'setRefreshing')(refreshing); + } + isRefreshable(context) { + return this.nativeChannel(context, 'isRefreshable')(); + } + isRefreshing(context) { + return this.nativeChannel(context, 'isRefreshing')(); + } + toModel() { + this.dirtyProps.content = this.content.viewId; + this.dirtyProps.header = (this.header || {}).viewId; + return super.toModel(); + } +} +__decorate$8([ + Property, + __metadata$8("design:type", Function) +], Refreshable.prototype, "onRefresh", void 0); function refreshable(config) { const ret = new Refreshable; ret.layoutConfig = layoutConfig().fit(); @@ -3361,32 +3322,29 @@ var ValueType; ValueType[ValueType["Percent"] = 2] = "Percent"; ValueType[ValueType["Auto"] = 3] = "Auto"; })(ValueType || (ValueType = {})); -let FlexTypedValue = /** @class */ (() => { - class FlexTypedValue { - constructor(type) { - this.value = 0; - this.type = type; - } - static percent(v) { - const ret = new FlexTypedValue(ValueType.Percent); - ret.value = v; - return ret; - } - static point(v) { - const ret = new FlexTypedValue(ValueType.Point); - ret.value = v; - return ret; - } - toModel() { - return { - type: this.type, - value: this.value, - }; - } +class FlexTypedValue { + constructor(type) { + this.value = 0; + this.type = type; } - FlexTypedValue.Auto = new FlexTypedValue(ValueType.Auto); - return FlexTypedValue; -})(); + static percent(v) { + const ret = new FlexTypedValue(ValueType.Percent); + ret.value = v; + return ret; + } + static point(v) { + const ret = new FlexTypedValue(ValueType.Point); + ret.value = v; + return ret; + } + toModel() { + return { + type: this.type, + value: this.value, + }; + } +} +FlexTypedValue.Auto = new FlexTypedValue(ValueType.Auto); (function (FlexDirection) { FlexDirection[FlexDirection["COLUMN"] = 0] = "COLUMN"; FlexDirection[FlexDirection["COLUMN_REVERSE"] = 1] = "COLUMN_REVERSE"; @@ -3444,111 +3402,105 @@ var __decorate$9 = (undefined && undefined.__decorate) || function (decorators, var __metadata$9 = (undefined && undefined.__metadata) || function (k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; -let FlowLayoutItem = /** @class */ (() => { - class FlowLayoutItem extends Stack { +class FlowLayoutItem extends Stack { +} +__decorate$9([ + Property, + __metadata$9("design:type", String) +], FlowLayoutItem.prototype, "identifier", void 0); +class FlowLayout extends Superview { + constructor() { + super(...arguments); + this.cachedViews = new Map; + this.ignoreDirtyCallOnce = false; + this.columnCount = 2; + this.itemCount = 0; + this.batchCount = 15; } - __decorate$9([ - Property, - __metadata$9("design:type", String) - ], FlowLayoutItem.prototype, "identifier", void 0); - return FlowLayoutItem; -})(); -let FlowLayout = /** @class */ (() => { - class FlowLayout extends Superview { - constructor() { - super(...arguments); - this.cachedViews = new Map; + allSubviews() { + if (this.loadMoreView) { + return [...this.cachedViews.values(), this.loadMoreView]; + } + else { + return this.cachedViews.values(); + } + } + reset() { + this.cachedViews.clear(); + this.itemCount = 0; + } + getItem(itemIdx) { + let view = this.renderItem(itemIdx); + view.superview = this; + this.cachedViews.set(`${itemIdx}`, view); + return view; + } + isDirty() { + if (this.ignoreDirtyCallOnce) { this.ignoreDirtyCallOnce = false; - this.columnCount = 2; - this.itemCount = 0; - this.batchCount = 15; - } - allSubviews() { - if (this.loadMoreView) { - return [...this.cachedViews.values(), this.loadMoreView]; - } - else { - return this.cachedViews.values(); - } - } - reset() { - this.cachedViews.clear(); - this.itemCount = 0; - } - getItem(itemIdx) { - let view = this.renderItem(itemIdx); - view.superview = this; - this.cachedViews.set(`${itemIdx}`, view); - return view; - } - isDirty() { - if (this.ignoreDirtyCallOnce) { - this.ignoreDirtyCallOnce = false; - //Ignore the dirty call once. - return false; - } - return super.isDirty(); - } - renderBunchedItems(start, length) { - this.ignoreDirtyCallOnce = true; - return new Array(Math.min(length, this.itemCount - start)).fill(0).map((_, idx) => { - const listItem = this.getItem(start + idx); - return listItem.toModel(); - }); - } - toModel() { - if (this.loadMoreView) { - this.dirtyProps['loadMoreView'] = this.loadMoreView.viewId; - } - return super.toModel(); + //Ignore the dirty call once. + return false; } + return super.isDirty(); } - __decorate$9([ - Property, - __metadata$9("design:type", Object) - ], FlowLayout.prototype, "columnCount", void 0); - __decorate$9([ - Property, - __metadata$9("design:type", Number) - ], FlowLayout.prototype, "columnSpace", void 0); - __decorate$9([ - Property, - __metadata$9("design:type", Number) - ], FlowLayout.prototype, "rowSpace", void 0); - __decorate$9([ - Property, - __metadata$9("design:type", Object) - ], FlowLayout.prototype, "itemCount", void 0); - __decorate$9([ - Property, - __metadata$9("design:type", Function) - ], FlowLayout.prototype, "renderItem", void 0); - __decorate$9([ - Property, - __metadata$9("design:type", Object) - ], FlowLayout.prototype, "batchCount", void 0); - __decorate$9([ - Property, - __metadata$9("design:type", Function) - ], FlowLayout.prototype, "onLoadMore", void 0); - __decorate$9([ - Property, - __metadata$9("design:type", Boolean) - ], FlowLayout.prototype, "loadMore", void 0); - __decorate$9([ - Property, - __metadata$9("design:type", FlowLayoutItem) - ], FlowLayout.prototype, "loadMoreView", void 0); - __decorate$9([ - Property, - __metadata$9("design:type", Function) - ], FlowLayout.prototype, "onScroll", void 0); - __decorate$9([ - Property, - __metadata$9("design:type", Function) - ], FlowLayout.prototype, "onScrollEnd", void 0); - return FlowLayout; -})(); + renderBunchedItems(start, length) { + this.ignoreDirtyCallOnce = true; + return new Array(Math.min(length, this.itemCount - start)).fill(0).map((_, idx) => { + const listItem = this.getItem(start + idx); + return listItem.toModel(); + }); + } + toModel() { + if (this.loadMoreView) { + this.dirtyProps['loadMoreView'] = this.loadMoreView.viewId; + } + return super.toModel(); + } +} +__decorate$9([ + Property, + __metadata$9("design:type", Object) +], FlowLayout.prototype, "columnCount", void 0); +__decorate$9([ + Property, + __metadata$9("design:type", Number) +], FlowLayout.prototype, "columnSpace", void 0); +__decorate$9([ + Property, + __metadata$9("design:type", Number) +], FlowLayout.prototype, "rowSpace", void 0); +__decorate$9([ + Property, + __metadata$9("design:type", Object) +], FlowLayout.prototype, "itemCount", void 0); +__decorate$9([ + Property, + __metadata$9("design:type", Function) +], FlowLayout.prototype, "renderItem", void 0); +__decorate$9([ + Property, + __metadata$9("design:type", Object) +], FlowLayout.prototype, "batchCount", void 0); +__decorate$9([ + Property, + __metadata$9("design:type", Function) +], FlowLayout.prototype, "onLoadMore", void 0); +__decorate$9([ + Property, + __metadata$9("design:type", Boolean) +], FlowLayout.prototype, "loadMore", void 0); +__decorate$9([ + Property, + __metadata$9("design:type", FlowLayoutItem) +], FlowLayout.prototype, "loadMoreView", void 0); +__decorate$9([ + Property, + __metadata$9("design:type", Function) +], FlowLayout.prototype, "onScroll", void 0); +__decorate$9([ + Property, + __metadata$9("design:type", Function) +], FlowLayout.prototype, "onScrollEnd", void 0); function flowlayout(config) { const ret = new FlowLayout; for (let key in config) { @@ -3584,70 +3536,67 @@ var __decorate$a = (undefined && undefined.__decorate) || function (decorators, var __metadata$a = (undefined && undefined.__metadata) || function (k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; -let Input = /** @class */ (() => { - class Input extends View { - getText(context) { - return this.nativeChannel(context, 'getText')(); - } - setSelection(context, start, end = start) { - return this.nativeChannel(context, 'setSelection')({ - start, - end, - }); - } - requestFocus(context) { - return this.nativeChannel(context, 'requestFocus')(); - } - releaseFocus(context) { - return this.nativeChannel(context, 'releaseFocus')(); - } +class Input extends View { + getText(context) { + return this.nativeChannel(context, 'getText')(); } - __decorate$a([ - Property, - __metadata$a("design:type", String) - ], Input.prototype, "text", void 0); - __decorate$a([ - Property, - __metadata$a("design:type", Color) - ], Input.prototype, "textColor", void 0); - __decorate$a([ - Property, - __metadata$a("design:type", Number) - ], Input.prototype, "textSize", void 0); - __decorate$a([ - Property, - __metadata$a("design:type", String) - ], Input.prototype, "hintText", void 0); - __decorate$a([ - Property, - __metadata$a("design:type", Number) - ], Input.prototype, "inputType", void 0); - __decorate$a([ - Property, - __metadata$a("design:type", Color) - ], Input.prototype, "hintTextColor", void 0); - __decorate$a([ - Property, - __metadata$a("design:type", Boolean) - ], Input.prototype, "multiline", void 0); - __decorate$a([ - Property, - __metadata$a("design:type", Gravity) - ], Input.prototype, "textAlignment", void 0); - __decorate$a([ - Property, - __metadata$a("design:type", Function) - ], Input.prototype, "onTextChange", void 0); - __decorate$a([ - Property, - __metadata$a("design:type", Function) - ], Input.prototype, "onFocusChange", void 0); - __decorate$a([ - Property, - __metadata$a("design:type", Number) - ], Input.prototype, "maxLength", void 0); - return Input; -})(); + setSelection(context, start, end = start) { + return this.nativeChannel(context, 'setSelection')({ + start, + end, + }); + } + requestFocus(context) { + return this.nativeChannel(context, 'requestFocus')(); + } + releaseFocus(context) { + return this.nativeChannel(context, 'releaseFocus')(); + } +} +__decorate$a([ + Property, + __metadata$a("design:type", String) +], Input.prototype, "text", void 0); +__decorate$a([ + Property, + __metadata$a("design:type", Color) +], Input.prototype, "textColor", void 0); +__decorate$a([ + Property, + __metadata$a("design:type", Number) +], Input.prototype, "textSize", void 0); +__decorate$a([ + Property, + __metadata$a("design:type", String) +], Input.prototype, "hintText", void 0); +__decorate$a([ + Property, + __metadata$a("design:type", Number) +], Input.prototype, "inputType", void 0); +__decorate$a([ + Property, + __metadata$a("design:type", Color) +], Input.prototype, "hintTextColor", void 0); +__decorate$a([ + Property, + __metadata$a("design:type", Boolean) +], Input.prototype, "multiline", void 0); +__decorate$a([ + Property, + __metadata$a("design:type", Gravity) +], Input.prototype, "textAlignment", void 0); +__decorate$a([ + Property, + __metadata$a("design:type", Function) +], Input.prototype, "onTextChange", void 0); +__decorate$a([ + Property, + __metadata$a("design:type", Function) +], Input.prototype, "onFocusChange", void 0); +__decorate$a([ + Property, + __metadata$a("design:type", Number) +], Input.prototype, "maxLength", void 0); (function (InputType) { InputType[InputType["Default"] = 0] = "Default"; InputType[InputType["Number"] = 1] = "Number"; @@ -3673,24 +3622,21 @@ var __decorate$b = (undefined && undefined.__decorate) || function (decorators, var __metadata$b = (undefined && undefined.__metadata) || function (k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; -let NestedSlider = /** @class */ (() => { - class NestedSlider extends Group { - addSlideItem(view) { - this.addChild(view); - } - slidePage(context, page, smooth = false) { - return this.nativeChannel(context, "slidePage")({ page, smooth }); - } - getSlidedPage(context) { - return this.nativeChannel(context, "getSlidedPage")(); - } +class NestedSlider extends Group { + addSlideItem(view) { + this.addChild(view); } - __decorate$b([ - Property, - __metadata$b("design:type", Function) - ], NestedSlider.prototype, "onPageSlided", void 0); - return NestedSlider; -})(); + slidePage(context, page, smooth = false) { + return this.nativeChannel(context, "slidePage")({ page, smooth }); + } + getSlidedPage(context) { + return this.nativeChannel(context, "getSlidedPage")(); + } +} +__decorate$b([ + Property, + __metadata$b("design:type", Function) +], NestedSlider.prototype, "onPageSlided", void 0); var __decorate$c = (undefined && undefined.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; @@ -3701,15 +3647,12 @@ var __decorate$c = (undefined && undefined.__decorate) || function (decorators, var __metadata$c = (undefined && undefined.__metadata) || function (k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; -let Draggable = /** @class */ (() => { - class Draggable extends Stack { - } - __decorate$c([ - Property, - __metadata$c("design:type", Function) - ], Draggable.prototype, "onDrag", void 0); - return Draggable; -})(); +class Draggable extends Stack { +} +__decorate$c([ + Property, + __metadata$c("design:type", Function) +], Draggable.prototype, "onDrag", void 0); function draggable(views, config) { const ret = new Draggable; ret.layoutConfig = layoutConfig().fit(); @@ -3738,31 +3681,28 @@ var __decorate$d = (undefined && undefined.__decorate) || function (decorators, var __metadata$d = (undefined && undefined.__metadata) || function (k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; -let Switch = /** @class */ (() => { - class Switch extends View { - } - __decorate$d([ - Property, - __metadata$d("design:type", Boolean) - ], Switch.prototype, "state", void 0); - __decorate$d([ - Property, - __metadata$d("design:type", Function) - ], Switch.prototype, "onSwitch", void 0); - __decorate$d([ - Property, - __metadata$d("design:type", Color) - ], Switch.prototype, "offTintColor", void 0); - __decorate$d([ - Property, - __metadata$d("design:type", Color) - ], Switch.prototype, "onTintColor", void 0); - __decorate$d([ - Property, - __metadata$d("design:type", Color) - ], Switch.prototype, "thumbTintColor", void 0); - return Switch; -})(); +class Switch extends View { +} +__decorate$d([ + Property, + __metadata$d("design:type", Boolean) +], Switch.prototype, "state", void 0); +__decorate$d([ + Property, + __metadata$d("design:type", Function) +], Switch.prototype, "onSwitch", void 0); +__decorate$d([ + Property, + __metadata$d("design:type", Color) +], Switch.prototype, "offTintColor", void 0); +__decorate$d([ + Property, + __metadata$d("design:type", Color) +], Switch.prototype, "onTintColor", void 0); +__decorate$d([ + Property, + __metadata$d("design:type", Color) +], Switch.prototype, "thumbTintColor", void 0); function switchView(config) { const ret = new Switch; ret.layoutConfig = layoutConfig().just(); diff --git a/doric-web/dist/index.js.map b/doric-web/dist/index.js.map index 9e094160..facb0349 100644 --- a/doric-web/dist/index.js.map +++ b/doric-web/dist/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","sources":["../build/src/DoricPlugin.js","../build/src/plugins/ShaderPlugin.js","../build/src/shader/DoricViewNode.js","../build/src/shader/DoricStackNode.js","../build/src/shader/DoricVLayoutNode.js","../build/src/shader/DoricHLayoutNode.js","../build/src/shader/DoricTextNode.js","../build/src/shader/DoricImageNode.js","../build/src/shader/DoricScrollerNode.js","../build/src/plugins/ModalPlugin.js","../build/src/plugins/StoragePlugin.js","../build/src/navigate/NavigatorPlugin.js","../build/src/plugins/PopoverPlugin.js","../build/src/shader/DoricListItemNode.js","../build/src/shader/DoricListNode.js","../build/src/shader/DoricDraggableNode.js","../build/src/DoricRegistry.js","../build/src/DoricDriver.js","../build/src/DoricContext.js","../build/src/DoricElement.js","../build/src/navigate/NavigationElement.js","../build/index.js"],"sourcesContent":["export class DoricPlugin {\n constructor(context) {\n this.context = context;\n }\n onTearDown() {\n }\n}\n","import { DoricPlugin } from \"../DoricPlugin\";\nexport class ShaderPlugin extends DoricPlugin {\n render(ret) {\n var _a;\n if (((_a = this.context.rootNode.viewId) === null || _a === void 0 ? void 0 : _a.length) > 0) {\n if (this.context.rootNode.viewId === ret.id) {\n this.context.rootNode.blend(ret.props);\n }\n else {\n for (let map of this.context.headNodes.values()) {\n const viewNode = map.get(ret.id);\n if (viewNode) {\n viewNode.blend(ret.props);\n }\n }\n }\n }\n else {\n this.context.rootNode.viewId = ret.id;\n this.context.rootNode.blend(ret.props);\n }\n }\n}\n","import { acquireViewNode } from \"../DoricRegistry\";\nexport var LayoutSpec;\n(function (LayoutSpec) {\n LayoutSpec[LayoutSpec[\"EXACTLY\"] = 0] = \"EXACTLY\";\n LayoutSpec[LayoutSpec[\"WRAP_CONTENT\"] = 1] = \"WRAP_CONTENT\";\n LayoutSpec[LayoutSpec[\"AT_MOST\"] = 2] = \"AT_MOST\";\n})(LayoutSpec || (LayoutSpec = {}));\nconst SPECIFIED = 1;\nconst START = 1 << 1;\nconst END = 1 << 2;\nconst SHIFT_X = 0;\nconst SHIFT_Y = 4;\nexport const LEFT = (START | SPECIFIED) << SHIFT_X;\nexport const RIGHT = (END | SPECIFIED) << SHIFT_X;\nexport const TOP = (START | SPECIFIED) << SHIFT_Y;\nexport const BOTTOM = (END | SPECIFIED) << SHIFT_Y;\nexport const CENTER_X = SPECIFIED << SHIFT_X;\nexport const CENTER_Y = SPECIFIED << SHIFT_Y;\nexport const CENTER = CENTER_X | CENTER_Y;\nexport function toPixelString(v) {\n return `${v}px`;\n}\nexport function toRGBAString(color) {\n let strs = [];\n for (let i = 0; i < 32; i += 8) {\n strs.push(((color >> i) & 0xff).toString(16));\n }\n strs = strs.map(e => {\n if (e.length === 1) {\n return '0' + e;\n }\n return e;\n }).reverse();\n /// RGBA\n return `#${strs[1]}${strs[2]}${strs[3]}${strs[0]}`;\n}\nexport class DoricViewNode {\n constructor(context) {\n this.viewId = \"\";\n this.viewType = \"View\";\n this.layoutConfig = {\n widthSpec: LayoutSpec.EXACTLY,\n heightSpec: LayoutSpec.EXACTLY,\n alignment: 0,\n weight: 0,\n margin: {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n }\n };\n this.padding = {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0,\n };\n this.frameWidth = 0;\n this.frameHeight = 0;\n this.offsetX = 0;\n this.offsetY = 0;\n this.context = context;\n }\n init(superNode) {\n if (superNode) {\n this.superNode = superNode;\n if (this instanceof DoricSuperNode) {\n this.reusable = superNode.reusable;\n }\n }\n this.view = this.build();\n }\n get paddingLeft() {\n return this.padding.left || 0;\n }\n get paddingRight() {\n return this.padding.right || 0;\n }\n get paddingTop() {\n return this.padding.top || 0;\n }\n get paddingBottom() {\n return this.padding.bottom || 0;\n }\n get borderWidth() {\n var _a;\n return ((_a = this.border) === null || _a === void 0 ? void 0 : _a.width) || 0;\n }\n blend(props) {\n this.view.id = `${this.viewId}`;\n for (let key in props) {\n this.blendProps(this.view, key, props[key]);\n }\n this.onBlended();\n this.layout();\n }\n onBlended() {\n }\n configBorder() {\n if (this.border) {\n this.view.style.borderStyle = \"solid\";\n this.view.style.borderWidth = toPixelString(this.border.width);\n this.view.style.borderColor = toRGBAString(this.border.color);\n }\n }\n configWidth() {\n switch (this.layoutConfig.widthSpec) {\n case LayoutSpec.WRAP_CONTENT:\n this.view.style.width = \"max-content\";\n break;\n case LayoutSpec.AT_MOST:\n this.view.style.width = \"100%\";\n break;\n case LayoutSpec.EXACTLY:\n default:\n this.view.style.width = toPixelString(this.frameWidth\n - this.paddingLeft - this.paddingRight\n - this.borderWidth * 2);\n break;\n }\n }\n configHeight() {\n switch (this.layoutConfig.heightSpec) {\n case LayoutSpec.WRAP_CONTENT:\n this.view.style.height = \"max-content\";\n break;\n case LayoutSpec.AT_MOST:\n this.view.style.height = \"100%\";\n break;\n case LayoutSpec.EXACTLY:\n default:\n this.view.style.height = toPixelString(this.frameHeight\n - this.paddingTop - this.paddingBottom\n - this.borderWidth * 2);\n break;\n }\n }\n configMargin() {\n if (this.layoutConfig.margin) {\n this.view.style.marginLeft = toPixelString(this.layoutConfig.margin.left || 0);\n this.view.style.marginRight = toPixelString(this.layoutConfig.margin.right || 0);\n this.view.style.marginTop = toPixelString(this.layoutConfig.margin.top || 0);\n this.view.style.marginBottom = toPixelString(this.layoutConfig.margin.bottom || 0);\n }\n }\n configPadding() {\n if (this.padding) {\n this.view.style.paddingLeft = toPixelString(this.paddingLeft);\n this.view.style.paddingRight = toPixelString(this.paddingRight);\n this.view.style.paddingTop = toPixelString(this.paddingTop);\n this.view.style.paddingBottom = toPixelString(this.paddingBottom);\n }\n }\n layout() {\n this.configMargin();\n this.configBorder();\n this.configPadding();\n this.configWidth();\n this.configHeight();\n }\n blendProps(v, propName, prop) {\n switch (propName) {\n case \"border\":\n this.border = prop;\n break;\n case \"padding\":\n this.padding = prop;\n break;\n case 'width':\n this.frameWidth = prop;\n break;\n case 'height':\n this.frameHeight = prop;\n break;\n case 'backgroundColor':\n this.backgroundColor = prop;\n break;\n case 'layoutConfig':\n const layoutConfig = prop;\n for (let key in layoutConfig) {\n Reflect.set(this.layoutConfig, key, Reflect.get(layoutConfig, key, layoutConfig));\n }\n break;\n case 'x':\n this.offsetX = prop;\n break;\n case 'y':\n this.offsetY = prop;\n break;\n case 'onClick':\n this.view.onclick = (event) => {\n this.callJSResponse(prop);\n event.stopPropagation();\n };\n break;\n case 'corners':\n if (typeof prop === 'object') {\n this.view.style.borderTopLeftRadius = toPixelString(prop.leftTop);\n this.view.style.borderTopRightRadius = toPixelString(prop.rightTop);\n this.view.style.borderBottomRightRadius = toPixelString(prop.rightBottom);\n this.view.style.borderBottomLeftRadius = toPixelString(prop.leftBottom);\n }\n else {\n this.view.style.borderRadius = toPixelString(prop);\n }\n break;\n case 'shadow':\n const opacity = prop.opacity || 0;\n if (opacity > 0) {\n const offsetX = prop.offsetX || 0;\n const offsetY = prop.offsetY || 0;\n const shadowColor = prop.color || 0xff000000;\n const shadowRadius = prop.radius;\n const alpha = opacity * 255;\n this.view.style.boxShadow = `${toPixelString(offsetX)} ${toPixelString(offsetY)} ${toPixelString(shadowRadius)} ${toRGBAString((shadowColor & 0xffffff) | ((alpha & 0xff) << 24))} `;\n }\n else {\n this.view.style.boxShadow = \"\";\n }\n break;\n }\n }\n set backgroundColor(v) {\n this.view.style.backgroundColor = toRGBAString(v);\n }\n static create(context, type) {\n const viewNodeClass = acquireViewNode(type);\n if (viewNodeClass === undefined) {\n console.error(`Cannot find ViewNode for ${type}`);\n return undefined;\n }\n const ret = new viewNodeClass(context);\n ret.viewType = type;\n return ret;\n }\n getIdList() {\n const ids = [];\n let viewNode = this;\n do {\n ids.push(viewNode.viewId);\n viewNode = viewNode.superNode;\n } while (viewNode);\n return ids.reverse();\n }\n callJSResponse(funcId, ...args) {\n const argumentsList = ['__response__', this.getIdList(), funcId];\n for (let i = 1; i < arguments.length; i++) {\n argumentsList.push(arguments[i]);\n }\n return Reflect.apply(this.context.invokeEntityMethod, this.context, argumentsList);\n }\n}\nexport class DoricSuperNode extends DoricViewNode {\n constructor() {\n super(...arguments);\n this.reusable = false;\n this.subModels = new Map;\n }\n blendProps(v, propName, prop) {\n if (propName === 'subviews') {\n if (prop instanceof Array) {\n prop.forEach((e) => {\n this.mixinSubModel(e);\n this.blendSubNode(e);\n });\n }\n }\n else {\n super.blendProps(v, propName, prop);\n }\n }\n mixinSubModel(subNode) {\n const oldValue = this.getSubModel(subNode.id);\n if (oldValue) {\n this.mixin(subNode, oldValue);\n }\n else {\n this.subModels.set(subNode.id, subNode);\n }\n }\n getSubModel(id) {\n return this.subModels.get(id);\n }\n mixin(src, target) {\n for (let key in src.props) {\n if (key === \"subviews\") {\n continue;\n }\n Reflect.set(target.props, key, Reflect.get(src.props, key));\n }\n }\n clearSubModels() {\n this.subModels.clear();\n }\n removeSubModel(id) {\n this.subModels.delete(id);\n }\n}\nexport class DoricGroupViewNode extends DoricSuperNode {\n constructor() {\n super(...arguments);\n this.childNodes = [];\n this.childViewIds = [];\n }\n init(superNode) {\n super.init(superNode);\n this.view.style.overflow = \"hidden\";\n }\n blendProps(v, propName, prop) {\n if (propName === 'children') {\n if (prop instanceof Array) {\n this.childViewIds = prop;\n }\n }\n else {\n super.blendProps(v, propName, prop);\n }\n }\n blend(props) {\n super.blend(props);\n }\n onBlended() {\n super.onBlended();\n this.configChildNode();\n }\n configChildNode() {\n this.childViewIds.forEach((childViewId, index) => {\n const model = this.getSubModel(childViewId);\n if (model === undefined) {\n return;\n }\n if (index < this.childNodes.length) {\n const oldNode = this.childNodes[index];\n if (oldNode.viewId === childViewId) {\n //The same,skip\n }\n else {\n if (this.reusable) {\n if (oldNode.viewType === model.type) {\n //Same type,can be reused\n oldNode.viewId = childViewId;\n oldNode.blend(model.props);\n }\n else {\n //Replace this view\n this.view.removeChild(oldNode.view);\n const newNode = DoricViewNode.create(this.context, model.type);\n if (newNode === undefined) {\n return;\n }\n newNode.viewId = childViewId;\n newNode.init(this);\n newNode.blend(model.props);\n this.childNodes[index] = newNode;\n this.view.replaceChild(newNode.view, oldNode.view);\n }\n }\n else {\n //Find in remain nodes\n let position = -1;\n for (let start = index + 1; start < this.childNodes.length; start++) {\n if (childViewId === this.childNodes[start].viewId) {\n //Found\n position = start;\n break;\n }\n }\n if (position >= 0) {\n //Found swap idx,position\n const reused = this.childNodes[position];\n const abandoned = this.childNodes[index];\n this.childNodes[index] = reused;\n this.childNodes[position] = abandoned;\n this.view.removeChild(reused.view);\n this.view.insertBefore(reused.view, abandoned.view);\n this.view.removeChild(abandoned.view);\n if (position === this.view.childElementCount - 1) {\n this.view.appendChild(abandoned.view);\n }\n else {\n this.view.insertBefore(abandoned.view, this.view.children[position]);\n }\n }\n else {\n //Not found,insert\n const newNode = DoricViewNode.create(this.context, model.type);\n if (newNode === undefined) {\n return;\n }\n newNode.viewId = childViewId;\n newNode.init(this);\n newNode.blend(model.props);\n this.childNodes[index] = newNode;\n this.view.insertBefore(newNode.view, this.view.children[index]);\n }\n }\n }\n }\n else {\n //Insert\n const newNode = DoricViewNode.create(this.context, model.type);\n if (newNode === undefined) {\n return;\n }\n newNode.viewId = childViewId;\n newNode.init(this);\n newNode.blend(model.props);\n this.childNodes.push(newNode);\n this.view.appendChild(newNode.view);\n }\n });\n let size = this.childNodes.length;\n for (let idx = this.childViewIds.length; idx < size; idx++) {\n this.view.removeChild(this.childNodes[idx].view);\n }\n this.childNodes = this.childNodes.slice(0, this.childViewIds.length);\n }\n blendSubNode(model) {\n var _a;\n (_a = this.getSubNodeById(model.id)) === null || _a === void 0 ? void 0 : _a.blend(model.props);\n }\n getSubNodeById(viewId) {\n return this.childNodes.filter(e => e.viewId === viewId)[0];\n }\n}\n","import { DoricGroupViewNode, LayoutSpec, LEFT, RIGHT, CENTER_X, CENTER_Y, TOP, BOTTOM, toPixelString } from \"./DoricViewNode\";\nexport class DoricStackNode extends DoricGroupViewNode {\n build() {\n const ret = document.createElement('div');\n ret.style.position = \"relative\";\n return ret;\n }\n layout() {\n super.layout();\n Promise.resolve().then(_ => {\n this.configSize();\n this.configOffset();\n });\n }\n configSize() {\n if (this.layoutConfig.widthSpec === LayoutSpec.WRAP_CONTENT) {\n const width = this.childNodes.reduce((prev, current) => {\n return Math.max(prev, current.view.offsetWidth);\n }, 0);\n this.view.style.width = toPixelString(width);\n }\n if (this.layoutConfig.heightSpec === LayoutSpec.WRAP_CONTENT) {\n const height = this.childNodes.reduce((prev, current) => {\n return Math.max(prev, current.view.offsetHeight);\n }, 0);\n this.view.style.height = toPixelString(height);\n }\n }\n configOffset() {\n this.childNodes.forEach(e => {\n e.view.style.position = \"absolute\";\n e.view.style.left = toPixelString(e.offsetX + this.paddingLeft);\n e.view.style.top = toPixelString(e.offsetY + this.paddingTop);\n const gravity = e.layoutConfig.alignment;\n if ((gravity & LEFT) === LEFT) {\n e.view.style.left = toPixelString(0);\n }\n else if ((gravity & RIGHT) === RIGHT) {\n e.view.style.left = toPixelString(this.view.offsetWidth - e.view.offsetWidth);\n }\n else if ((gravity & CENTER_X) === CENTER_X) {\n e.view.style.left = toPixelString(this.view.offsetWidth / 2 - e.view.offsetWidth / 2);\n }\n if ((gravity & TOP) === TOP) {\n e.view.style.top = toPixelString(0);\n }\n else if ((gravity & BOTTOM) === BOTTOM) {\n e.view.style.top = toPixelString(this.view.offsetHeight - e.view.offsetHeight);\n }\n else if ((gravity & CENTER_Y) === CENTER_Y) {\n e.view.style.top = toPixelString(this.view.offsetHeight / 2 - e.view.offsetHeight / 2);\n }\n });\n }\n}\n","import { DoricGroupViewNode, LEFT, RIGHT, CENTER_X, CENTER_Y, TOP, BOTTOM, toPixelString } from \"./DoricViewNode\";\nexport class DoricVLayoutNode extends DoricGroupViewNode {\n constructor() {\n super(...arguments);\n this.space = 0;\n this.gravity = 0;\n }\n build() {\n const ret = document.createElement('div');\n ret.style.display = \"flex\";\n ret.style.flexDirection = \"column\";\n ret.style.flexWrap = \"nowrap\";\n return ret;\n }\n blendProps(v, propName, prop) {\n if (propName === 'space') {\n this.space = prop;\n }\n else if (propName === 'gravity') {\n this.gravity = prop;\n if ((this.gravity & LEFT) === LEFT) {\n this.view.style.alignItems = \"flex-start\";\n }\n else if ((this.gravity & RIGHT) === RIGHT) {\n this.view.style.alignItems = \"flex-end\";\n }\n else if ((this.gravity & CENTER_X) === CENTER_X) {\n this.view.style.alignItems = \"center\";\n }\n if ((this.gravity & TOP) === TOP) {\n this.view.style.justifyContent = \"flex-start\";\n }\n else if ((this.gravity & BOTTOM) === BOTTOM) {\n this.view.style.justifyContent = \"flex-end\";\n }\n else if ((this.gravity & CENTER_Y) === CENTER_Y) {\n this.view.style.justifyContent = \"center\";\n }\n }\n else {\n super.blendProps(v, propName, prop);\n }\n }\n layout() {\n super.layout();\n this.childNodes.forEach((e, idx) => {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;\n e.view.style.flexShrink = \"0\";\n if ((_a = e.layoutConfig) === null || _a === void 0 ? void 0 : _a.weight) {\n e.view.style.flex = `${(_b = e.layoutConfig) === null || _b === void 0 ? void 0 : _b.weight}`;\n }\n e.view.style.marginTop = toPixelString(((_d = (_c = e.layoutConfig) === null || _c === void 0 ? void 0 : _c.margin) === null || _d === void 0 ? void 0 : _d.top) || 0);\n e.view.style.marginBottom = toPixelString((idx === this.childNodes.length - 1) ? 0 : this.space\n + (((_f = (_e = e.layoutConfig) === null || _e === void 0 ? void 0 : _e.margin) === null || _f === void 0 ? void 0 : _f.bottom) || 0));\n e.view.style.marginLeft = toPixelString(((_h = (_g = e.layoutConfig) === null || _g === void 0 ? void 0 : _g.margin) === null || _h === void 0 ? void 0 : _h.left) || 0);\n e.view.style.marginRight = toPixelString(((_k = (_j = e.layoutConfig) === null || _j === void 0 ? void 0 : _j.margin) === null || _k === void 0 ? void 0 : _k.right) || 0);\n if ((e.layoutConfig.alignment & LEFT) === LEFT) {\n e.view.style.alignSelf = \"flex-start\";\n }\n else if ((e.layoutConfig.alignment & RIGHT) === RIGHT) {\n e.view.style.alignSelf = \"flex-end\";\n }\n else if ((e.layoutConfig.alignment & CENTER_X) === CENTER_X) {\n e.view.style.alignSelf = \"center\";\n }\n });\n }\n}\n","import { DoricGroupViewNode, LEFT, RIGHT, CENTER_X, CENTER_Y, TOP, BOTTOM, toPixelString } from \"./DoricViewNode\";\nexport class DoricHLayoutNode extends DoricGroupViewNode {\n constructor() {\n super(...arguments);\n this.space = 0;\n this.gravity = 0;\n }\n build() {\n const ret = document.createElement('div');\n ret.style.display = \"flex\";\n ret.style.flexDirection = \"row\";\n ret.style.flexWrap = \"nowrap\";\n return ret;\n }\n blendProps(v, propName, prop) {\n if (propName === 'space') {\n this.space = prop;\n }\n else if (propName === 'gravity') {\n this.gravity = prop;\n this.gravity = prop;\n if ((this.gravity & LEFT) === LEFT) {\n this.view.style.justifyContent = \"flex-start\";\n }\n else if ((this.gravity & RIGHT) === RIGHT) {\n this.view.style.justifyContent = \"flex-end\";\n }\n else if ((this.gravity & CENTER_X) === CENTER_X) {\n this.view.style.justifyContent = \"center\";\n }\n if ((this.gravity & TOP) === TOP) {\n this.view.style.alignItems = \"flex-start\";\n }\n else if ((this.gravity & BOTTOM) === BOTTOM) {\n this.view.style.alignItems = \"flex-end\";\n }\n else if ((this.gravity & CENTER_Y) === CENTER_Y) {\n this.view.style.alignItems = \"center\";\n }\n }\n else {\n super.blendProps(v, propName, prop);\n }\n }\n layout() {\n super.layout();\n this.childNodes.forEach((e, idx) => {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;\n e.view.style.flexShrink = \"0\";\n if ((_a = e.layoutConfig) === null || _a === void 0 ? void 0 : _a.weight) {\n e.view.style.flex = `${(_b = e.layoutConfig) === null || _b === void 0 ? void 0 : _b.weight}`;\n }\n e.view.style.marginLeft = toPixelString(((_d = (_c = e.layoutConfig) === null || _c === void 0 ? void 0 : _c.margin) === null || _d === void 0 ? void 0 : _d.left) || 0);\n e.view.style.marginRight = toPixelString((idx === this.childNodes.length - 1) ? 0 : this.space\n + (((_f = (_e = e.layoutConfig) === null || _e === void 0 ? void 0 : _e.margin) === null || _f === void 0 ? void 0 : _f.right) || 0));\n e.view.style.marginTop = toPixelString(((_h = (_g = e.layoutConfig) === null || _g === void 0 ? void 0 : _g.margin) === null || _h === void 0 ? void 0 : _h.top) || 0);\n e.view.style.marginBottom = toPixelString(((_k = (_j = e.layoutConfig) === null || _j === void 0 ? void 0 : _j.margin) === null || _k === void 0 ? void 0 : _k.bottom) || 0);\n if ((e.layoutConfig.alignment & TOP) === TOP) {\n e.view.style.alignSelf = \"flex-start\";\n }\n else if ((e.layoutConfig.alignment & BOTTOM) === BOTTOM) {\n e.view.style.alignSelf = \"flex-end\";\n }\n else if ((e.layoutConfig.alignment & CENTER_Y) === CENTER_Y) {\n e.view.style.alignSelf = \"center\";\n }\n });\n }\n}\n","import { DoricViewNode, LEFT, RIGHT, CENTER_X, CENTER_Y, TOP, BOTTOM, toPixelString, toRGBAString } from \"./DoricViewNode\";\nexport class DoricTextNode extends DoricViewNode {\n build() {\n const div = document.createElement('div');\n div.style.display = \"flex\";\n this.textElement = document.createElement('span');\n div.appendChild(this.textElement);\n div.style.justifyContent = \"center\";\n div.style.alignItems = \"center\";\n return div;\n }\n blendProps(v, propName, prop) {\n switch (propName) {\n case 'text':\n this.textElement.innerText = prop;\n break;\n case 'textSize':\n v.style.fontSize = toPixelString(prop);\n break;\n case 'textColor':\n v.style.color = toRGBAString(prop);\n break;\n case 'textAlignment':\n const gravity = prop;\n if ((gravity & LEFT) === LEFT) {\n v.style.justifyContent = \"flex-start\";\n }\n else if ((gravity & RIGHT) === RIGHT) {\n v.style.justifyContent = \"flex-end\";\n }\n else if ((gravity & CENTER_X) === CENTER_X) {\n v.style.justifyContent = \"center\";\n }\n if ((gravity & TOP) === TOP) {\n v.style.alignItems = \"flex-start\";\n }\n else if ((gravity & BOTTOM) === BOTTOM) {\n v.style.alignItems = \"flex-end\";\n }\n else if ((gravity & CENTER_Y) === CENTER_Y) {\n v.style.alignItems = \"center\";\n }\n break;\n case \"fontStyle\":\n switch (prop) {\n case \"bold\":\n v.style.fontWeight = \"bold\";\n v.style.fontStyle = \"normal\";\n break;\n case \"italic\":\n v.style.fontWeight = \"normal\";\n v.style.fontStyle = \"italic\";\n break;\n case \"bold_italic\":\n v.style.fontWeight = \"bold\";\n v.style.fontStyle = \"italic\";\n break;\n default:\n v.style.fontWeight = \"normal\";\n v.style.fontStyle = \"normal\";\n break;\n }\n break;\n default:\n super.blendProps(v, propName, prop);\n break;\n }\n }\n}\n","import { DoricViewNode } from \"./DoricViewNode\";\nvar ScaleType;\n(function (ScaleType) {\n ScaleType[ScaleType[\"ScaleToFill\"] = 0] = \"ScaleToFill\";\n ScaleType[ScaleType[\"ScaleAspectFit\"] = 1] = \"ScaleAspectFit\";\n ScaleType[ScaleType[\"ScaleAspectFill\"] = 2] = \"ScaleAspectFill\";\n})(ScaleType || (ScaleType = {}));\nexport class DoricImageNode extends DoricViewNode {\n build() {\n const ret = document.createElement('img');\n ret.style.objectFit = \"fill\";\n return ret;\n }\n blendProps(v, propName, prop) {\n switch (propName) {\n case 'imageUrl':\n v.setAttribute('src', prop);\n break;\n case 'imageBase64':\n v.setAttribute('src', prop);\n break;\n case 'loadCallback':\n v.onload = () => {\n this.callJSResponse(prop, {\n width: v.width,\n height: v.height\n });\n };\n break;\n case 'scaleType':\n switch (prop) {\n case ScaleType.ScaleToFill:\n v.style.objectFit = \"fill\";\n break;\n case ScaleType.ScaleAspectFit:\n v.style.objectFit = \"contain\";\n break;\n case ScaleType.ScaleAspectFill:\n v.style.objectFit = \"cover\";\n break;\n }\n break;\n case 'isBlur':\n if (prop) {\n v.style.filter = 'blur(8px)';\n }\n else {\n v.style.filter = '';\n }\n break;\n default:\n super.blendProps(v, propName, prop);\n break;\n }\n }\n}\n","import { DoricSuperNode, DoricViewNode } from \"./DoricViewNode\";\nexport class DoricScrollerNode extends DoricSuperNode {\n constructor() {\n super(...arguments);\n this.childViewId = \"\";\n }\n build() {\n const ret = document.createElement('div');\n ret.style.overflow = \"scroll\";\n return ret;\n }\n blendProps(v, propName, prop) {\n if (propName === 'content') {\n this.childViewId = prop;\n }\n else {\n super.blendProps(v, propName, prop);\n }\n }\n blendSubNode(model) {\n var _a;\n (_a = this.childNode) === null || _a === void 0 ? void 0 : _a.blend(model.props);\n }\n getSubNodeById(viewId) {\n return viewId === this.childViewId ? this.childNode : undefined;\n }\n onBlended() {\n super.onBlended();\n const model = this.getSubModel(this.childViewId);\n if (model === undefined) {\n return;\n }\n if (this.childNode) {\n if (this.childNode.viewId === this.childViewId) {\n ///skip\n }\n else {\n if (this.reusable && this.childNode.viewType === model.type) {\n this.childNode.viewId = model.id;\n this.childNode.blend(model.props);\n }\n else {\n this.view.removeChild(this.childNode.view);\n const childNode = DoricViewNode.create(this.context, model.type);\n if (childNode === undefined) {\n return;\n }\n childNode.viewId = model.id;\n childNode.init(this);\n childNode.blend(model.props);\n this.view.appendChild(childNode.view);\n this.childNode = childNode;\n }\n }\n }\n else {\n const childNode = DoricViewNode.create(this.context, model.type);\n if (childNode === undefined) {\n return;\n }\n childNode.viewId = model.id;\n childNode.init(this);\n childNode.blend(model.props);\n this.view.appendChild(childNode.view);\n this.childNode = childNode;\n }\n }\n layout() {\n super.layout();\n }\n}\n","import { DoricPlugin } from '../DoricPlugin';\nimport { TOP, CENTER_Y, BOTTOM, toPixelString } from '../shader/DoricViewNode';\nexport class ModalPlugin extends DoricPlugin {\n toast(args) {\n const toastElement = document.createElement('div');\n toastElement.style.position = \"absolute\";\n toastElement.style.textAlign = \"center\";\n toastElement.style.width = \"100%\";\n const textElement = document.createElement('span');\n textElement.innerText = args.msg || \"\";\n textElement.style.backgroundColor = \"#777777\";\n textElement.style.color = \"white\";\n textElement.style.paddingLeft = '20px';\n textElement.style.paddingRight = '20px';\n textElement.style.paddingTop = '10px';\n textElement.style.paddingBottom = '10px';\n toastElement.appendChild(textElement);\n document.body.appendChild(toastElement);\n const gravity = args.gravity || BOTTOM;\n if ((gravity & TOP) == TOP) {\n toastElement.style.top = toPixelString(30);\n }\n else if ((gravity & BOTTOM) == BOTTOM) {\n toastElement.style.bottom = toPixelString(30);\n }\n else if ((gravity & CENTER_Y) == CENTER_Y) {\n toastElement.style.top = toPixelString(document.body.offsetHeight / 2 - toastElement.offsetHeight / 2);\n }\n setTimeout(() => {\n document.body.removeChild(toastElement);\n }, 2000);\n return Promise.resolve();\n }\n alert(args) {\n window.alert(args.msg || \"\");\n return Promise.resolve();\n }\n confirm(args) {\n if (window.confirm(args.msg || \"\")) {\n return Promise.resolve();\n }\n else {\n return Promise.reject();\n }\n }\n prompt(args) {\n const result = window.prompt(args.msg || \"\", args.defaultText);\n if (result) {\n return Promise.resolve(result);\n }\n else {\n return Promise.reject(result);\n }\n }\n}\n","import { DoricPlugin } from \"../DoricPlugin\";\nexport class StoragePlugin extends DoricPlugin {\n setItem(args) {\n localStorage.setItem(`${args.zone}_${args.key}`, args.value);\n return Promise.resolve();\n }\n getItem(args) {\n return Promise.resolve(localStorage.getItem(`${args.zone}_${args.key}`));\n }\n remove(args) {\n localStorage.removeItem(`${args.zone}_${args.key}`);\n return Promise.resolve();\n }\n clear(args) {\n let removingKeys = [];\n for (let i = 0; i < localStorage.length; i++) {\n const key = localStorage.key(i);\n if (key && key.startsWith(`${args.zone}_`)) {\n removingKeys.push(key);\n }\n }\n removingKeys.forEach(e => {\n localStorage.removeItem(e);\n });\n return Promise.resolve();\n }\n}\n","import { DoricPlugin } from \"../DoricPlugin\";\nimport { DoricElement } from \"../DoricElement\";\nexport class NavigatorPlugin extends DoricPlugin {\n constructor() {\n super(...arguments);\n this.navigation = document.getElementsByTagName('doric-navigation')[0];\n }\n push(args) {\n var _a;\n if (this.navigation) {\n const div = new DoricElement;\n div.src = args.source;\n div.alias = ((_a = args.config) === null || _a === void 0 ? void 0 : _a.alias) || args.source;\n this.navigation.push(div);\n return Promise.resolve();\n }\n else {\n return Promise.reject('Not implemented');\n }\n }\n pop() {\n if (this.navigation) {\n this.navigation.pop();\n return Promise.resolve();\n }\n else {\n return Promise.reject('Not implemented');\n }\n }\n}\n","import { DoricPlugin } from '../DoricPlugin';\nimport { DoricViewNode } from '../shader/DoricViewNode';\nexport class PopoverPlugin extends DoricPlugin {\n constructor(context) {\n super(context);\n this.fullScreen = document.createElement('div');\n this.fullScreen.id = `PopOver__${context.contextId}`;\n this.fullScreen.style.position = 'fixed';\n this.fullScreen.style.top = '0px';\n this.fullScreen.style.width = \"100%\";\n this.fullScreen.style.height = \"100%\";\n }\n show(model) {\n const viewNode = DoricViewNode.create(this.context, model.type);\n if (viewNode === undefined) {\n return Promise.reject(`Cannot create ViewNode for ${model.type}`);\n }\n viewNode.viewId = model.id;\n viewNode.init();\n viewNode.blend(model.props);\n this.fullScreen.appendChild(viewNode.view);\n let map = this.context.headNodes.get(PopoverPlugin.TYPE);\n if (map) {\n map.set(model.id, viewNode);\n }\n else {\n map = new Map;\n map.set(model.id, viewNode);\n this.context.headNodes.set(PopoverPlugin.TYPE, map);\n }\n if (!document.body.contains(this.fullScreen)) {\n document.body.appendChild(this.fullScreen);\n }\n return Promise.resolve();\n }\n dismiss(args) {\n if (args) {\n let map = this.context.headNodes.get(PopoverPlugin.TYPE);\n if (map) {\n const viewNode = map.get(args.id);\n if (viewNode) {\n this.fullScreen.removeChild(viewNode.view);\n }\n if (map.size === 0) {\n document.body.removeChild(this.fullScreen);\n }\n }\n }\n else {\n this.dismissAll();\n }\n return Promise.resolve();\n }\n dismissAll() {\n let map = this.context.headNodes.get(PopoverPlugin.TYPE);\n if (map) {\n for (let node of map.values()) {\n map.delete(node.viewId);\n this.fullScreen.removeChild(node.view);\n }\n }\n if (document.body.contains(this.fullScreen)) {\n document.body.removeChild(this.fullScreen);\n }\n }\n onTearDown() {\n super.onTearDown();\n this.dismissAll();\n }\n}\nPopoverPlugin.TYPE = \"popover\";\n","import { DoricStackNode } from \"./DoricStackNode\";\nexport class DoricListItemNode extends DoricStackNode {\n}\n","import { DoricSuperNode, DoricViewNode } from \"./DoricViewNode\";\nexport class DoricListNode extends DoricSuperNode {\n constructor() {\n super(...arguments);\n this.itemCount = 0;\n this.batchCount = 15;\n this.loadMore = false;\n this.childNodes = [];\n }\n blendProps(v, propName, prop) {\n switch (propName) {\n case \"itemCount\":\n this.itemCount = prop;\n break;\n case \"renderItem\":\n this.reset();\n this.renderItemFuncId = prop;\n break;\n case \"onLoadMore\":\n this.onLoadMoreFuncId = prop;\n break;\n case \"loadMoreView\":\n this.loadMoreViewId = prop;\n break;\n case \"batchCount\":\n this.batchCount = prop;\n break;\n case \"loadMore\":\n this.loadMore = prop;\n break;\n default:\n super.blendProps(v, propName, prop);\n break;\n }\n }\n reset() {\n while (this.view.lastElementChild) {\n this.view.removeChild(this.view.lastElementChild);\n }\n }\n onBlended() {\n super.onBlended();\n if (this.childNodes.length !== this.itemCount) {\n const ret = this.callJSResponse(\"renderBunchedItems\", this.childNodes.length, this.itemCount);\n this.childNodes = this.childNodes.concat(ret.map(e => {\n const viewNode = DoricViewNode.create(this.context, e.type);\n viewNode.viewId = e.id;\n viewNode.init(this);\n viewNode.blend(e.props);\n this.view.appendChild(viewNode.view);\n return viewNode;\n }));\n }\n if (this.loadMoreViewNode && this.view.contains(this.loadMoreViewNode.view)) {\n this.view.removeChild(this.loadMoreViewNode.view);\n }\n if (this.loadMore) {\n if (!this.loadMoreViewNode) {\n const loadMoreViewModel = this.getSubModel(this.loadMoreViewId || \"\");\n if (loadMoreViewModel) {\n this.loadMoreViewNode = DoricViewNode.create(this.context, loadMoreViewModel.type);\n this.loadMoreViewNode.viewId = loadMoreViewModel.id;\n this.loadMoreViewNode.init(this);\n this.loadMoreViewNode.blend(loadMoreViewModel.props);\n }\n }\n if (this.loadMoreViewNode) {\n this.view.appendChild(this.loadMoreViewNode.view);\n }\n }\n }\n blendSubNode(model) {\n const viewNode = this.getSubNodeById(model.id);\n if (viewNode) {\n viewNode.blend(model.props);\n }\n }\n getSubNodeById(viewId) {\n if (viewId === this.loadMoreViewId) {\n return this.loadMoreViewNode;\n }\n return this.childNodes.filter(e => e.viewId === viewId)[0];\n }\n onScrollToEnd() {\n if (this.loadMore && this.onLoadMoreFuncId) {\n this.callJSResponse(this.onLoadMoreFuncId);\n }\n }\n build() {\n const ret = document.createElement('div');\n ret.style.overflow = \"scroll\";\n ret.addEventListener(\"scroll\", () => {\n if (this.loadMore) {\n if (ret.scrollTop + ret.offsetHeight === ret.scrollHeight) {\n this.onScrollToEnd();\n }\n }\n });\n return ret;\n }\n}\n","import { DoricStackNode } from \"./DoricStackNode\";\nexport class DoricDraggableNode extends DoricStackNode {\n constructor() {\n super(...arguments);\n this.onDrag = \"\";\n this.dragging = false;\n this.lastX = 0;\n this.lastY = 0;\n }\n build() {\n const ret = document.createElement('div');\n ret.ontouchstart = (event) => {\n this.dragging = true;\n this.lastX = event.targetTouches[0].clientX;\n this.lastY = event.targetTouches[0].clientY;\n };\n ret.ontouchend = (event) => {\n this.dragging = false;\n };\n ret.ontouchcancel = (event) => {\n this.dragging = false;\n };\n ret.ontouchmove = (event) => {\n if (this.dragging) {\n this.offsetX += (event.targetTouches[0].clientX - this.lastX);\n this.offsetY += (event.targetTouches[0].clientY - this.lastY);\n this.callJSResponse(this.onDrag, this.offsetX, this.offsetY);\n this.lastX = event.targetTouches[0].clientX;\n this.lastY = event.targetTouches[0].clientY;\n }\n };\n ret.onmousedown = (event) => {\n this.dragging = true;\n this.lastX = event.x;\n this.lastY = event.y;\n };\n ret.onmousemove = (event) => {\n if (this.dragging) {\n this.offsetX += (event.x - this.lastX);\n this.offsetY += (event.y - this.lastY);\n this.callJSResponse(this.onDrag, this.offsetX, this.offsetY);\n this.lastX = event.x;\n this.lastY = event.y;\n }\n };\n ret.onmouseup = (event) => {\n this.dragging = false;\n };\n ret.onmouseout = (event) => {\n this.dragging = false;\n };\n ret.style.position = \"relative\";\n return ret;\n }\n blendProps(v, propName, prop) {\n switch (propName) {\n case 'onDrag':\n this.onDrag = prop;\n break;\n default:\n super.blendProps(v, propName, prop);\n break;\n }\n }\n}\n","import { ShaderPlugin } from \"./plugins/ShaderPlugin\";\nimport { DoricStackNode } from \"./shader/DoricStackNode\";\nimport { DoricVLayoutNode } from './shader/DoricVLayoutNode';\nimport { DoricHLayoutNode } from './shader/DoricHLayoutNode';\nimport { DoricTextNode } from \"./shader/DoricTextNode\";\nimport { DoricImageNode } from \"./shader/DoricImageNode\";\nimport { DoricScrollerNode } from \"./shader/DoricScrollerNode\";\nimport { ModalPlugin } from './plugins/ModalPlugin';\nimport { StoragePlugin } from \"./plugins/StoragePlugin\";\nimport { NavigatorPlugin } from \"./navigate/NavigatorPlugin\";\nimport { PopoverPlugin } from './plugins/PopoverPlugin';\nimport { DoricListItemNode } from \"./shader/DoricListItemNode\";\nimport { DoricListNode } from \"./shader/DoricListNode\";\nimport { DoricDraggableNode } from \"./shader/DoricDraggableNode\";\nconst bundles = new Map;\nconst plugins = new Map;\nconst nodes = new Map;\nexport function acquireJSBundle(name) {\n return bundles.get(name);\n}\nexport function registerJSBundle(name, bundle) {\n bundles.set(name, bundle);\n}\nexport function registerPlugin(name, plugin) {\n plugins.set(name, plugin);\n}\nexport function acquirePlugin(name) {\n return plugins.get(name);\n}\nexport function registerViewNode(name, node) {\n nodes.set(name, node);\n}\nexport function acquireViewNode(name) {\n return nodes.get(name);\n}\nregisterPlugin('shader', ShaderPlugin);\nregisterPlugin('modal', ModalPlugin);\nregisterPlugin('storage', StoragePlugin);\nregisterPlugin('navigator', NavigatorPlugin);\nregisterPlugin('popover', PopoverPlugin);\nregisterViewNode('Stack', DoricStackNode);\nregisterViewNode('VLayout', DoricVLayoutNode);\nregisterViewNode('HLayout', DoricHLayoutNode);\nregisterViewNode('Text', DoricTextNode);\nregisterViewNode('Image', DoricImageNode);\nregisterViewNode('Scroller', DoricScrollerNode);\nregisterViewNode('ListItem', DoricListItemNode);\nregisterViewNode('List', DoricListNode);\nregisterViewNode('Draggable', DoricDraggableNode);\n","import { jsCallResolve, jsCallReject, jsCallbackTimer, jsReleaseContext } from 'doric/src/runtime/sandbox';\nimport { acquireJSBundle, acquirePlugin } from './DoricRegistry';\nimport { getDoricContext } from './DoricContext';\nfunction getScriptId(contextId) {\n return `__doric_script_${contextId}`;\n}\nconst originSetTimeout = window.setTimeout;\nconst originClearTimeout = window.clearTimeout;\nconst originSetInterval = window.setInterval;\nconst originClearInterval = window.clearInterval;\nconst timers = new Map;\nexport function injectGlobalObject(name, value) {\n Reflect.set(window, name, value, window);\n}\nexport function loadJS(contextId, script) {\n const scriptElement = document.createElement('script');\n scriptElement.text = script;\n scriptElement.id = getScriptId(contextId);\n document.body.appendChild(scriptElement);\n}\nfunction packageModuleScript(name, content) {\n return `Reflect.apply(doric.jsRegisterModule,this,[${name},Reflect.apply(function(__module){(function(module,exports,require,setTimeout,setInterval,clearTimeout,clearInterval){\n${content}\n})(__module,__module.exports,doric.__require__,doricSetTimeout,doricSetInterval,doricClearTimeout,doricClearInterval);\nreturn __module.exports;},this,[{exports:{}}])])`;\n}\nfunction packageCreateContext(contextId, content) {\n return `//@ sourceURL=contextId_${contextId}.js\nReflect.apply(function(doric,context,Entry,require,exports,setTimeout,setInterval,clearTimeout,clearInterval){\n${content}\n},undefined,[undefined,doric.jsObtainContext(\"${contextId}\"),doric.jsObtainEntry(\"${contextId}\"),doric.__require__,{},doricSetTimeout,doricSetInterval,doricClearTimeout,doricClearInterval])`;\n}\nfunction initDoric() {\n injectGlobalObject(\"Environment\", {\n platform: \"h5\"\n });\n injectGlobalObject(\"nativeEmpty\", () => undefined);\n injectGlobalObject('nativeLog', (type, message) => {\n switch (type) {\n case 'd':\n console.log(message);\n break;\n case 'w':\n console.warn(message);\n break;\n case 'e':\n console.error(message);\n break;\n }\n });\n injectGlobalObject('nativeRequire', (moduleName) => {\n const bundle = acquireJSBundle(moduleName);\n if (bundle === undefined || bundle.length === 0) {\n console.log(`Cannot require JS Bundle :${moduleName}`);\n return false;\n }\n else {\n loadJS(moduleName, packageModuleScript(moduleName, packageModuleScript(name, bundle)));\n return true;\n }\n });\n injectGlobalObject('nativeBridge', (contextId, namespace, method, callbackId, args) => {\n const pluginClass = acquirePlugin(namespace);\n const doricContext = getDoricContext(contextId);\n if (pluginClass === undefined) {\n console.error(`Cannot find Plugin:${namespace}`);\n return false;\n }\n if (doricContext === undefined) {\n console.error(`Cannot find Doric Context:${contextId}`);\n return false;\n }\n let plugin = doricContext.pluginInstances.get(namespace);\n if (plugin === undefined) {\n plugin = new pluginClass(doricContext);\n doricContext.pluginInstances.set(namespace, plugin);\n }\n if (!Reflect.has(plugin, method)) {\n console.error(`Cannot find Method:${method} in plugin ${namespace}`);\n return false;\n }\n const pluginMethod = Reflect.get(plugin, method, plugin);\n if (typeof pluginMethod !== 'function') {\n console.error(`Plugin ${namespace}'s property ${method}'s type is ${typeof pluginMethod} not function,`);\n }\n const ret = Reflect.apply(pluginMethod, plugin, [args]);\n if (ret instanceof Promise) {\n ret.then(e => {\n jsCallResolve(contextId, callbackId, e);\n }, e => {\n jsCallReject(contextId, callbackId, e);\n });\n }\n else if (ret !== undefined) {\n jsCallResolve(contextId, callbackId, ret);\n }\n return true;\n });\n injectGlobalObject('nativeSetTimer', (timerId, time, repeat) => {\n if (repeat) {\n const handleId = originSetInterval(() => {\n jsCallbackTimer(timerId);\n }, time);\n timers.set(timerId, { handleId, repeat });\n }\n else {\n const handleId = originSetTimeout(() => {\n jsCallbackTimer(timerId);\n }, time);\n timers.set(timerId, { handleId, repeat });\n }\n });\n injectGlobalObject('nativeClearTimer', (timerId) => {\n const timerInfo = timers.get(timerId);\n if (timerInfo) {\n if (timerInfo.repeat) {\n originClearInterval(timerInfo.handleId);\n }\n else {\n originClearTimeout(timerInfo.handleId);\n }\n }\n });\n}\nexport function createContext(contextId, content) {\n loadJS(contextId, packageCreateContext(contextId, content));\n}\nexport function destroyContext(contextId) {\n jsReleaseContext(contextId);\n const scriptElement = document.getElementById(getScriptId(contextId));\n if (scriptElement) {\n document.body.removeChild(scriptElement);\n }\n}\ninitDoric();\n","import { jsObtainContext, jsCallEntityMethod } from 'doric/src/runtime/sandbox';\nimport { createContext, destroyContext } from \"./DoricDriver\";\nimport { DoricStackNode } from './shader/DoricStackNode';\nconst doricContexts = new Map;\nlet __contextId__ = 0;\nfunction getContextId() {\n return `context_${__contextId__++}`;\n}\nexport function getDoricContext(contextId) {\n return doricContexts.get(contextId);\n}\nexport class DoricContext {\n constructor(content) {\n this.contextId = getContextId();\n this.pluginInstances = new Map;\n this.headNodes = new Map;\n createContext(this.contextId, content);\n doricContexts.set(this.contextId, this);\n this.rootNode = new DoricStackNode(this);\n }\n get panel() {\n var _a;\n return (_a = jsObtainContext(this.contextId)) === null || _a === void 0 ? void 0 : _a.entity;\n }\n invokeEntityMethod(method, ...otherArgs) {\n const argumentsList = [this.contextId];\n for (let i = 0; i < arguments.length; i++) {\n argumentsList.push(arguments[i]);\n }\n return Reflect.apply(jsCallEntityMethod, this.panel, argumentsList);\n }\n init(extra) {\n this.invokeEntityMethod(\"__init__\", extra ? JSON.stringify(extra) : undefined);\n }\n build(frame) {\n this.invokeEntityMethod(\"__build__\", frame);\n }\n teardown() {\n for (let plugin of this.pluginInstances.values()) {\n plugin.onTearDown();\n }\n destroyContext(this.contextId);\n }\n}\n","import axios from 'axios';\nimport { DoricContext } from './DoricContext';\nexport class DoricElement extends HTMLElement {\n constructor() {\n super();\n }\n get src() {\n return this.getAttribute('src');\n }\n get alias() {\n return this.getAttribute('alias');\n }\n set src(v) {\n this.setAttribute('src', v);\n }\n set alias(v) {\n this.setAttribute('alias', v);\n }\n connectedCallback() {\n if (this.src && this.context === undefined) {\n axios.get(this.src).then(result => {\n this.load(result.data);\n });\n }\n }\n disconnectedCallback() {\n }\n adoptedCallback() {\n }\n attributeChangedCallback() {\n }\n onDestroy() {\n var _a;\n (_a = this.context) === null || _a === void 0 ? void 0 : _a.teardown();\n }\n load(content) {\n this.context = new DoricContext(content);\n const divElement = document.createElement('div');\n divElement.style.position = 'relative';\n divElement.style.height = '100%';\n this.append(divElement);\n this.context.rootNode.view = divElement;\n this.context.build({\n width: divElement.offsetWidth,\n height: divElement.offsetHeight,\n });\n }\n}\n","import { DoricElement } from \"../DoricElement\";\nexport class NavigationElement extends HTMLElement {\n constructor() {\n super(...arguments);\n this.elementStack = [];\n }\n get currentNode() {\n for (let i = 0; i < this.childNodes.length; i++) {\n if (this.childNodes[i] instanceof DoricElement) {\n return this.childNodes[i];\n }\n }\n return undefined;\n }\n push(element) {\n const currentNode = this.currentNode;\n if (currentNode) {\n this.elementStack.push(currentNode);\n this.replaceChild(element, currentNode);\n }\n else {\n this.appendChild(element);\n }\n }\n pop() {\n const lastElement = this.elementStack.pop();\n const currentNode = this.currentNode;\n if (lastElement && currentNode) {\n this.replaceChild(lastElement, currentNode);\n currentNode.onDestroy();\n }\n else {\n window.history.back();\n }\n }\n}\n","import { DoricElement } from './src/DoricElement';\nimport { NavigationElement } from './src/navigate/NavigationElement';\nwindow.customElements.define('doric-div', DoricElement);\nwindow.customElements.define('doric-navigation', NavigationElement);\nexport * from './src/DoricElement';\nexport * from './src/navigate/NavigationElement';\nexport * from './src/DoricPlugin';\nexport * from './src/DoricRegistry';\nexport * from './src/DoricDriver';\nexport * from './src/shader/DoricViewNode';\n"],"names":["LayoutSpec","jsCallResolve","jsCallReject","jsCallbackTimer","jsReleaseContext","jsObtainContext","jsCallEntityMethod"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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"} \ No newline at end of file +{"version":3,"file":"index.js","sources":["../build/src/DoricPlugin.js","../build/src/plugins/ShaderPlugin.js","../build/src/shader/DoricViewNode.js","../build/src/shader/DoricStackNode.js","../build/src/shader/DoricVLayoutNode.js","../build/src/shader/DoricHLayoutNode.js","../build/src/shader/DoricTextNode.js","../build/src/shader/DoricImageNode.js","../build/src/shader/DoricScrollerNode.js","../build/src/plugins/ModalPlugin.js","../build/src/plugins/StoragePlugin.js","../build/src/navigate/NavigatorPlugin.js","../build/src/plugins/PopoverPlugin.js","../build/src/shader/DoricListItemNode.js","../build/src/shader/DoricListNode.js","../build/src/shader/DoricDraggableNode.js","../build/src/DoricRegistry.js","../build/src/DoricDriver.js","../build/src/DoricContext.js","../build/src/DoricElement.js","../build/src/navigate/NavigationElement.js","../build/index.js"],"sourcesContent":["export class DoricPlugin {\n constructor(context) {\n this.context = context;\n }\n onTearDown() {\n }\n}\n","import { DoricPlugin } from \"../DoricPlugin\";\nexport class ShaderPlugin extends DoricPlugin {\n render(ret) {\n var _a;\n if (((_a = this.context.rootNode.viewId) === null || _a === void 0 ? void 0 : _a.length) > 0) {\n if (this.context.rootNode.viewId === ret.id) {\n this.context.rootNode.blend(ret.props);\n }\n else {\n for (let map of this.context.headNodes.values()) {\n const viewNode = map.get(ret.id);\n if (viewNode) {\n viewNode.blend(ret.props);\n }\n }\n }\n }\n else {\n this.context.rootNode.viewId = ret.id;\n this.context.rootNode.blend(ret.props);\n }\n }\n}\n","import { acquireViewNode } from \"../DoricRegistry\";\nexport var LayoutSpec;\n(function (LayoutSpec) {\n LayoutSpec[LayoutSpec[\"EXACTLY\"] = 0] = \"EXACTLY\";\n LayoutSpec[LayoutSpec[\"WRAP_CONTENT\"] = 1] = \"WRAP_CONTENT\";\n LayoutSpec[LayoutSpec[\"AT_MOST\"] = 2] = \"AT_MOST\";\n})(LayoutSpec || (LayoutSpec = {}));\nconst SPECIFIED = 1;\nconst START = 1 << 1;\nconst END = 1 << 2;\nconst SHIFT_X = 0;\nconst SHIFT_Y = 4;\nexport const LEFT = (START | SPECIFIED) << SHIFT_X;\nexport const RIGHT = (END | SPECIFIED) << SHIFT_X;\nexport const TOP = (START | SPECIFIED) << SHIFT_Y;\nexport const BOTTOM = (END | SPECIFIED) << SHIFT_Y;\nexport const CENTER_X = SPECIFIED << SHIFT_X;\nexport const CENTER_Y = SPECIFIED << SHIFT_Y;\nexport const CENTER = CENTER_X | CENTER_Y;\nexport function toPixelString(v) {\n return `${v}px`;\n}\nexport function toRGBAString(color) {\n let strs = [];\n for (let i = 0; i < 32; i += 8) {\n strs.push(((color >> i) & 0xff).toString(16));\n }\n strs = strs.map(e => {\n if (e.length === 1) {\n return '0' + e;\n }\n return e;\n }).reverse();\n /// RGBA\n return `#${strs[1]}${strs[2]}${strs[3]}${strs[0]}`;\n}\nexport class DoricViewNode {\n constructor(context) {\n this.viewId = \"\";\n this.viewType = \"View\";\n this.layoutConfig = {\n widthSpec: LayoutSpec.EXACTLY,\n heightSpec: LayoutSpec.EXACTLY,\n alignment: 0,\n weight: 0,\n margin: {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n }\n };\n this.padding = {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0,\n };\n this.frameWidth = 0;\n this.frameHeight = 0;\n this.offsetX = 0;\n this.offsetY = 0;\n this.context = context;\n }\n init(superNode) {\n if (superNode) {\n this.superNode = superNode;\n if (this instanceof DoricSuperNode) {\n this.reusable = superNode.reusable;\n }\n }\n this.view = this.build();\n }\n get paddingLeft() {\n return this.padding.left || 0;\n }\n get paddingRight() {\n return this.padding.right || 0;\n }\n get paddingTop() {\n return this.padding.top || 0;\n }\n get paddingBottom() {\n return this.padding.bottom || 0;\n }\n get borderWidth() {\n var _a;\n return ((_a = this.border) === null || _a === void 0 ? void 0 : _a.width) || 0;\n }\n blend(props) {\n this.view.id = `${this.viewId}`;\n for (let key in props) {\n this.blendProps(this.view, key, props[key]);\n }\n this.onBlended();\n this.layout();\n }\n onBlended() {\n }\n configBorder() {\n if (this.border) {\n this.view.style.borderStyle = \"solid\";\n this.view.style.borderWidth = toPixelString(this.border.width);\n this.view.style.borderColor = toRGBAString(this.border.color);\n }\n }\n configWidth() {\n switch (this.layoutConfig.widthSpec) {\n case LayoutSpec.WRAP_CONTENT:\n this.view.style.width = \"max-content\";\n break;\n case LayoutSpec.AT_MOST:\n this.view.style.width = \"100%\";\n break;\n case LayoutSpec.EXACTLY:\n default:\n this.view.style.width = toPixelString(this.frameWidth\n - this.paddingLeft - this.paddingRight\n - this.borderWidth * 2);\n break;\n }\n }\n configHeight() {\n switch (this.layoutConfig.heightSpec) {\n case LayoutSpec.WRAP_CONTENT:\n this.view.style.height = \"max-content\";\n break;\n case LayoutSpec.AT_MOST:\n this.view.style.height = \"100%\";\n break;\n case LayoutSpec.EXACTLY:\n default:\n this.view.style.height = toPixelString(this.frameHeight\n - this.paddingTop - this.paddingBottom\n - this.borderWidth * 2);\n break;\n }\n }\n configMargin() {\n if (this.layoutConfig.margin) {\n this.view.style.marginLeft = toPixelString(this.layoutConfig.margin.left || 0);\n this.view.style.marginRight = toPixelString(this.layoutConfig.margin.right || 0);\n this.view.style.marginTop = toPixelString(this.layoutConfig.margin.top || 0);\n this.view.style.marginBottom = toPixelString(this.layoutConfig.margin.bottom || 0);\n }\n }\n configPadding() {\n if (this.padding) {\n this.view.style.paddingLeft = toPixelString(this.paddingLeft);\n this.view.style.paddingRight = toPixelString(this.paddingRight);\n this.view.style.paddingTop = toPixelString(this.paddingTop);\n this.view.style.paddingBottom = toPixelString(this.paddingBottom);\n }\n }\n layout() {\n this.configMargin();\n this.configBorder();\n this.configPadding();\n this.configWidth();\n this.configHeight();\n }\n blendProps(v, propName, prop) {\n switch (propName) {\n case \"border\":\n this.border = prop;\n break;\n case \"padding\":\n this.padding = prop;\n break;\n case 'width':\n this.frameWidth = prop;\n break;\n case 'height':\n this.frameHeight = prop;\n break;\n case 'backgroundColor':\n this.backgroundColor = prop;\n break;\n case 'layoutConfig':\n const layoutConfig = prop;\n for (let key in layoutConfig) {\n Reflect.set(this.layoutConfig, key, Reflect.get(layoutConfig, key, layoutConfig));\n }\n break;\n case 'x':\n this.offsetX = prop;\n break;\n case 'y':\n this.offsetY = prop;\n break;\n case 'onClick':\n this.view.onclick = (event) => {\n this.callJSResponse(prop);\n event.stopPropagation();\n };\n break;\n case 'corners':\n if (typeof prop === 'object') {\n this.view.style.borderTopLeftRadius = toPixelString(prop.leftTop);\n this.view.style.borderTopRightRadius = toPixelString(prop.rightTop);\n this.view.style.borderBottomRightRadius = toPixelString(prop.rightBottom);\n this.view.style.borderBottomLeftRadius = toPixelString(prop.leftBottom);\n }\n else {\n this.view.style.borderRadius = toPixelString(prop);\n }\n break;\n case 'shadow':\n const opacity = prop.opacity || 0;\n if (opacity > 0) {\n const offsetX = prop.offsetX || 0;\n const offsetY = prop.offsetY || 0;\n const shadowColor = prop.color || 0xff000000;\n const shadowRadius = prop.radius;\n const alpha = opacity * 255;\n this.view.style.boxShadow = `${toPixelString(offsetX)} ${toPixelString(offsetY)} ${toPixelString(shadowRadius)} ${toRGBAString((shadowColor & 0xffffff) | ((alpha & 0xff) << 24))} `;\n }\n else {\n this.view.style.boxShadow = \"\";\n }\n break;\n }\n }\n set backgroundColor(v) {\n this.view.style.backgroundColor = toRGBAString(v);\n }\n static create(context, type) {\n const viewNodeClass = acquireViewNode(type);\n if (viewNodeClass === undefined) {\n console.error(`Cannot find ViewNode for ${type}`);\n return undefined;\n }\n const ret = new viewNodeClass(context);\n ret.viewType = type;\n return ret;\n }\n getIdList() {\n const ids = [];\n let viewNode = this;\n do {\n ids.push(viewNode.viewId);\n viewNode = viewNode.superNode;\n } while (viewNode);\n return ids.reverse();\n }\n callJSResponse(funcId, ...args) {\n const argumentsList = ['__response__', this.getIdList(), funcId];\n for (let i = 1; i < arguments.length; i++) {\n argumentsList.push(arguments[i]);\n }\n return Reflect.apply(this.context.invokeEntityMethod, this.context, argumentsList);\n }\n}\nexport class DoricSuperNode extends DoricViewNode {\n constructor() {\n super(...arguments);\n this.reusable = false;\n this.subModels = new Map;\n }\n blendProps(v, propName, prop) {\n if (propName === 'subviews') {\n if (prop instanceof Array) {\n prop.forEach((e) => {\n this.mixinSubModel(e);\n this.blendSubNode(e);\n });\n }\n }\n else {\n super.blendProps(v, propName, prop);\n }\n }\n mixinSubModel(subNode) {\n const oldValue = this.getSubModel(subNode.id);\n if (oldValue) {\n this.mixin(subNode, oldValue);\n }\n else {\n this.subModels.set(subNode.id, subNode);\n }\n }\n getSubModel(id) {\n return this.subModels.get(id);\n }\n mixin(src, target) {\n for (let key in src.props) {\n if (key === \"subviews\") {\n continue;\n }\n Reflect.set(target.props, key, Reflect.get(src.props, key));\n }\n }\n clearSubModels() {\n this.subModels.clear();\n }\n removeSubModel(id) {\n this.subModels.delete(id);\n }\n}\nexport class DoricGroupViewNode extends DoricSuperNode {\n constructor() {\n super(...arguments);\n this.childNodes = [];\n this.childViewIds = [];\n }\n init(superNode) {\n super.init(superNode);\n this.view.style.overflow = \"hidden\";\n }\n blendProps(v, propName, prop) {\n if (propName === 'children') {\n if (prop instanceof Array) {\n this.childViewIds = prop;\n }\n }\n else {\n super.blendProps(v, propName, prop);\n }\n }\n blend(props) {\n super.blend(props);\n }\n onBlended() {\n super.onBlended();\n this.configChildNode();\n }\n configChildNode() {\n this.childViewIds.forEach((childViewId, index) => {\n const model = this.getSubModel(childViewId);\n if (model === undefined) {\n return;\n }\n if (index < this.childNodes.length) {\n const oldNode = this.childNodes[index];\n if (oldNode.viewId === childViewId) {\n //The same,skip\n }\n else {\n if (this.reusable) {\n if (oldNode.viewType === model.type) {\n //Same type,can be reused\n oldNode.viewId = childViewId;\n oldNode.blend(model.props);\n }\n else {\n //Replace this view\n this.view.removeChild(oldNode.view);\n const newNode = DoricViewNode.create(this.context, model.type);\n if (newNode === undefined) {\n return;\n }\n newNode.viewId = childViewId;\n newNode.init(this);\n newNode.blend(model.props);\n this.childNodes[index] = newNode;\n this.view.replaceChild(newNode.view, oldNode.view);\n }\n }\n else {\n //Find in remain nodes\n let position = -1;\n for (let start = index + 1; start < this.childNodes.length; start++) {\n if (childViewId === this.childNodes[start].viewId) {\n //Found\n position = start;\n break;\n }\n }\n if (position >= 0) {\n //Found swap idx,position\n const reused = this.childNodes[position];\n const abandoned = this.childNodes[index];\n this.childNodes[index] = reused;\n this.childNodes[position] = abandoned;\n this.view.removeChild(reused.view);\n this.view.insertBefore(reused.view, abandoned.view);\n this.view.removeChild(abandoned.view);\n if (position === this.view.childElementCount - 1) {\n this.view.appendChild(abandoned.view);\n }\n else {\n this.view.insertBefore(abandoned.view, this.view.children[position]);\n }\n }\n else {\n //Not found,insert\n const newNode = DoricViewNode.create(this.context, model.type);\n if (newNode === undefined) {\n return;\n }\n newNode.viewId = childViewId;\n newNode.init(this);\n newNode.blend(model.props);\n this.childNodes[index] = newNode;\n this.view.insertBefore(newNode.view, this.view.children[index]);\n }\n }\n }\n }\n else {\n //Insert\n const newNode = DoricViewNode.create(this.context, model.type);\n if (newNode === undefined) {\n return;\n }\n newNode.viewId = childViewId;\n newNode.init(this);\n newNode.blend(model.props);\n this.childNodes.push(newNode);\n this.view.appendChild(newNode.view);\n }\n });\n let size = this.childNodes.length;\n for (let idx = this.childViewIds.length; idx < size; idx++) {\n this.view.removeChild(this.childNodes[idx].view);\n }\n this.childNodes = this.childNodes.slice(0, this.childViewIds.length);\n }\n blendSubNode(model) {\n var _a;\n (_a = this.getSubNodeById(model.id)) === null || _a === void 0 ? void 0 : _a.blend(model.props);\n }\n getSubNodeById(viewId) {\n return this.childNodes.filter(e => e.viewId === viewId)[0];\n }\n}\n","import { DoricGroupViewNode, LayoutSpec, LEFT, RIGHT, CENTER_X, CENTER_Y, TOP, BOTTOM, toPixelString } from \"./DoricViewNode\";\nexport class DoricStackNode extends DoricGroupViewNode {\n build() {\n const ret = document.createElement('div');\n ret.style.position = \"relative\";\n return ret;\n }\n layout() {\n super.layout();\n Promise.resolve().then(_ => {\n this.configSize();\n this.configOffset();\n });\n }\n configSize() {\n if (this.layoutConfig.widthSpec === LayoutSpec.WRAP_CONTENT) {\n const width = this.childNodes.reduce((prev, current) => {\n return Math.max(prev, current.view.offsetWidth);\n }, 0);\n this.view.style.width = toPixelString(width);\n }\n if (this.layoutConfig.heightSpec === LayoutSpec.WRAP_CONTENT) {\n const height = this.childNodes.reduce((prev, current) => {\n return Math.max(prev, current.view.offsetHeight);\n }, 0);\n this.view.style.height = toPixelString(height);\n }\n }\n configOffset() {\n this.childNodes.forEach(e => {\n e.view.style.position = \"absolute\";\n e.view.style.left = toPixelString(e.offsetX + this.paddingLeft);\n e.view.style.top = toPixelString(e.offsetY + this.paddingTop);\n const gravity = e.layoutConfig.alignment;\n if ((gravity & LEFT) === LEFT) {\n e.view.style.left = toPixelString(0);\n }\n else if ((gravity & RIGHT) === RIGHT) {\n e.view.style.left = toPixelString(this.view.offsetWidth - e.view.offsetWidth);\n }\n else if ((gravity & CENTER_X) === CENTER_X) {\n e.view.style.left = toPixelString(this.view.offsetWidth / 2 - e.view.offsetWidth / 2);\n }\n if ((gravity & TOP) === TOP) {\n e.view.style.top = toPixelString(0);\n }\n else if ((gravity & BOTTOM) === BOTTOM) {\n e.view.style.top = toPixelString(this.view.offsetHeight - e.view.offsetHeight);\n }\n else if ((gravity & CENTER_Y) === CENTER_Y) {\n e.view.style.top = toPixelString(this.view.offsetHeight / 2 - e.view.offsetHeight / 2);\n }\n });\n }\n}\n","import { DoricGroupViewNode, LEFT, RIGHT, CENTER_X, CENTER_Y, TOP, BOTTOM, toPixelString } from \"./DoricViewNode\";\nexport class DoricVLayoutNode extends DoricGroupViewNode {\n constructor() {\n super(...arguments);\n this.space = 0;\n this.gravity = 0;\n }\n build() {\n const ret = document.createElement('div');\n ret.style.display = \"flex\";\n ret.style.flexDirection = \"column\";\n ret.style.flexWrap = \"nowrap\";\n return ret;\n }\n blendProps(v, propName, prop) {\n if (propName === 'space') {\n this.space = prop;\n }\n else if (propName === 'gravity') {\n this.gravity = prop;\n if ((this.gravity & LEFT) === LEFT) {\n this.view.style.alignItems = \"flex-start\";\n }\n else if ((this.gravity & RIGHT) === RIGHT) {\n this.view.style.alignItems = \"flex-end\";\n }\n else if ((this.gravity & CENTER_X) === CENTER_X) {\n this.view.style.alignItems = \"center\";\n }\n if ((this.gravity & TOP) === TOP) {\n this.view.style.justifyContent = \"flex-start\";\n }\n else if ((this.gravity & BOTTOM) === BOTTOM) {\n this.view.style.justifyContent = \"flex-end\";\n }\n else if ((this.gravity & CENTER_Y) === CENTER_Y) {\n this.view.style.justifyContent = \"center\";\n }\n }\n else {\n super.blendProps(v, propName, prop);\n }\n }\n layout() {\n super.layout();\n this.childNodes.forEach((e, idx) => {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;\n e.view.style.flexShrink = \"0\";\n if ((_a = e.layoutConfig) === null || _a === void 0 ? void 0 : _a.weight) {\n e.view.style.flex = `${(_b = e.layoutConfig) === null || _b === void 0 ? void 0 : _b.weight}`;\n }\n e.view.style.marginTop = toPixelString(((_d = (_c = e.layoutConfig) === null || _c === void 0 ? void 0 : _c.margin) === null || _d === void 0 ? void 0 : _d.top) || 0);\n e.view.style.marginBottom = toPixelString((idx === this.childNodes.length - 1) ? 0 : this.space\n + (((_f = (_e = e.layoutConfig) === null || _e === void 0 ? void 0 : _e.margin) === null || _f === void 0 ? void 0 : _f.bottom) || 0));\n e.view.style.marginLeft = toPixelString(((_h = (_g = e.layoutConfig) === null || _g === void 0 ? void 0 : _g.margin) === null || _h === void 0 ? void 0 : _h.left) || 0);\n e.view.style.marginRight = toPixelString(((_k = (_j = e.layoutConfig) === null || _j === void 0 ? void 0 : _j.margin) === null || _k === void 0 ? void 0 : _k.right) || 0);\n if ((e.layoutConfig.alignment & LEFT) === LEFT) {\n e.view.style.alignSelf = \"flex-start\";\n }\n else if ((e.layoutConfig.alignment & RIGHT) === RIGHT) {\n e.view.style.alignSelf = \"flex-end\";\n }\n else if ((e.layoutConfig.alignment & CENTER_X) === CENTER_X) {\n e.view.style.alignSelf = \"center\";\n }\n });\n }\n}\n","import { DoricGroupViewNode, LEFT, RIGHT, CENTER_X, CENTER_Y, TOP, BOTTOM, toPixelString } from \"./DoricViewNode\";\nexport class DoricHLayoutNode extends DoricGroupViewNode {\n constructor() {\n super(...arguments);\n this.space = 0;\n this.gravity = 0;\n }\n build() {\n const ret = document.createElement('div');\n ret.style.display = \"flex\";\n ret.style.flexDirection = \"row\";\n ret.style.flexWrap = \"nowrap\";\n return ret;\n }\n blendProps(v, propName, prop) {\n if (propName === 'space') {\n this.space = prop;\n }\n else if (propName === 'gravity') {\n this.gravity = prop;\n this.gravity = prop;\n if ((this.gravity & LEFT) === LEFT) {\n this.view.style.justifyContent = \"flex-start\";\n }\n else if ((this.gravity & RIGHT) === RIGHT) {\n this.view.style.justifyContent = \"flex-end\";\n }\n else if ((this.gravity & CENTER_X) === CENTER_X) {\n this.view.style.justifyContent = \"center\";\n }\n if ((this.gravity & TOP) === TOP) {\n this.view.style.alignItems = \"flex-start\";\n }\n else if ((this.gravity & BOTTOM) === BOTTOM) {\n this.view.style.alignItems = \"flex-end\";\n }\n else if ((this.gravity & CENTER_Y) === CENTER_Y) {\n this.view.style.alignItems = \"center\";\n }\n }\n else {\n super.blendProps(v, propName, prop);\n }\n }\n layout() {\n super.layout();\n this.childNodes.forEach((e, idx) => {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;\n e.view.style.flexShrink = \"0\";\n if ((_a = e.layoutConfig) === null || _a === void 0 ? void 0 : _a.weight) {\n e.view.style.flex = `${(_b = e.layoutConfig) === null || _b === void 0 ? void 0 : _b.weight}`;\n }\n e.view.style.marginLeft = toPixelString(((_d = (_c = e.layoutConfig) === null || _c === void 0 ? void 0 : _c.margin) === null || _d === void 0 ? void 0 : _d.left) || 0);\n e.view.style.marginRight = toPixelString((idx === this.childNodes.length - 1) ? 0 : this.space\n + (((_f = (_e = e.layoutConfig) === null || _e === void 0 ? void 0 : _e.margin) === null || _f === void 0 ? void 0 : _f.right) || 0));\n e.view.style.marginTop = toPixelString(((_h = (_g = e.layoutConfig) === null || _g === void 0 ? void 0 : _g.margin) === null || _h === void 0 ? void 0 : _h.top) || 0);\n e.view.style.marginBottom = toPixelString(((_k = (_j = e.layoutConfig) === null || _j === void 0 ? void 0 : _j.margin) === null || _k === void 0 ? void 0 : _k.bottom) || 0);\n if ((e.layoutConfig.alignment & TOP) === TOP) {\n e.view.style.alignSelf = \"flex-start\";\n }\n else if ((e.layoutConfig.alignment & BOTTOM) === BOTTOM) {\n e.view.style.alignSelf = \"flex-end\";\n }\n else if ((e.layoutConfig.alignment & CENTER_Y) === CENTER_Y) {\n e.view.style.alignSelf = \"center\";\n }\n });\n }\n}\n","import { DoricViewNode, LEFT, RIGHT, CENTER_X, CENTER_Y, TOP, BOTTOM, toPixelString, toRGBAString } from \"./DoricViewNode\";\nexport class DoricTextNode extends DoricViewNode {\n build() {\n const div = document.createElement('div');\n div.style.display = \"flex\";\n this.textElement = document.createElement('span');\n div.appendChild(this.textElement);\n div.style.justifyContent = \"center\";\n div.style.alignItems = \"center\";\n return div;\n }\n blendProps(v, propName, prop) {\n switch (propName) {\n case 'text':\n this.textElement.innerText = prop;\n break;\n case 'textSize':\n v.style.fontSize = toPixelString(prop);\n break;\n case 'textColor':\n v.style.color = toRGBAString(prop);\n break;\n case 'textAlignment':\n const gravity = prop;\n if ((gravity & LEFT) === LEFT) {\n v.style.justifyContent = \"flex-start\";\n }\n else if ((gravity & RIGHT) === RIGHT) {\n v.style.justifyContent = \"flex-end\";\n }\n else if ((gravity & CENTER_X) === CENTER_X) {\n v.style.justifyContent = \"center\";\n }\n if ((gravity & TOP) === TOP) {\n v.style.alignItems = \"flex-start\";\n }\n else if ((gravity & BOTTOM) === BOTTOM) {\n v.style.alignItems = \"flex-end\";\n }\n else if ((gravity & CENTER_Y) === CENTER_Y) {\n v.style.alignItems = \"center\";\n }\n break;\n case \"fontStyle\":\n switch (prop) {\n case \"bold\":\n v.style.fontWeight = \"bold\";\n v.style.fontStyle = \"normal\";\n break;\n case \"italic\":\n v.style.fontWeight = \"normal\";\n v.style.fontStyle = \"italic\";\n break;\n case \"bold_italic\":\n v.style.fontWeight = \"bold\";\n v.style.fontStyle = \"italic\";\n break;\n default:\n v.style.fontWeight = \"normal\";\n v.style.fontStyle = \"normal\";\n break;\n }\n break;\n default:\n super.blendProps(v, propName, prop);\n break;\n }\n }\n}\n","import { DoricViewNode } from \"./DoricViewNode\";\nvar ScaleType;\n(function (ScaleType) {\n ScaleType[ScaleType[\"ScaleToFill\"] = 0] = \"ScaleToFill\";\n ScaleType[ScaleType[\"ScaleAspectFit\"] = 1] = \"ScaleAspectFit\";\n ScaleType[ScaleType[\"ScaleAspectFill\"] = 2] = \"ScaleAspectFill\";\n})(ScaleType || (ScaleType = {}));\nexport class DoricImageNode extends DoricViewNode {\n build() {\n const ret = document.createElement('img');\n ret.style.objectFit = \"fill\";\n return ret;\n }\n blendProps(v, propName, prop) {\n switch (propName) {\n case 'imageUrl':\n v.setAttribute('src', prop);\n break;\n case 'imageBase64':\n v.setAttribute('src', prop);\n break;\n case 'loadCallback':\n v.onload = () => {\n this.callJSResponse(prop, {\n width: v.width,\n height: v.height\n });\n };\n break;\n case 'scaleType':\n switch (prop) {\n case ScaleType.ScaleToFill:\n v.style.objectFit = \"fill\";\n break;\n case ScaleType.ScaleAspectFit:\n v.style.objectFit = \"contain\";\n break;\n case ScaleType.ScaleAspectFill:\n v.style.objectFit = \"cover\";\n break;\n }\n break;\n case 'isBlur':\n if (prop) {\n v.style.filter = 'blur(8px)';\n }\n else {\n v.style.filter = '';\n }\n break;\n default:\n super.blendProps(v, propName, prop);\n break;\n }\n }\n}\n","import { DoricSuperNode, DoricViewNode } from \"./DoricViewNode\";\nexport class DoricScrollerNode extends DoricSuperNode {\n constructor() {\n super(...arguments);\n this.childViewId = \"\";\n }\n build() {\n const ret = document.createElement('div');\n ret.style.overflow = \"scroll\";\n return ret;\n }\n blendProps(v, propName, prop) {\n if (propName === 'content') {\n this.childViewId = prop;\n }\n else {\n super.blendProps(v, propName, prop);\n }\n }\n blendSubNode(model) {\n var _a;\n (_a = this.childNode) === null || _a === void 0 ? void 0 : _a.blend(model.props);\n }\n getSubNodeById(viewId) {\n return viewId === this.childViewId ? this.childNode : undefined;\n }\n onBlended() {\n super.onBlended();\n const model = this.getSubModel(this.childViewId);\n if (model === undefined) {\n return;\n }\n if (this.childNode) {\n if (this.childNode.viewId === this.childViewId) {\n ///skip\n }\n else {\n if (this.reusable && this.childNode.viewType === model.type) {\n this.childNode.viewId = model.id;\n this.childNode.blend(model.props);\n }\n else {\n this.view.removeChild(this.childNode.view);\n const childNode = DoricViewNode.create(this.context, model.type);\n if (childNode === undefined) {\n return;\n }\n childNode.viewId = model.id;\n childNode.init(this);\n childNode.blend(model.props);\n this.view.appendChild(childNode.view);\n this.childNode = childNode;\n }\n }\n }\n else {\n const childNode = DoricViewNode.create(this.context, model.type);\n if (childNode === undefined) {\n return;\n }\n childNode.viewId = model.id;\n childNode.init(this);\n childNode.blend(model.props);\n this.view.appendChild(childNode.view);\n this.childNode = childNode;\n }\n }\n layout() {\n super.layout();\n }\n}\n","import { DoricPlugin } from '../DoricPlugin';\nimport { TOP, CENTER_Y, BOTTOM, toPixelString } from '../shader/DoricViewNode';\nexport class ModalPlugin extends DoricPlugin {\n toast(args) {\n const toastElement = document.createElement('div');\n toastElement.style.position = \"absolute\";\n toastElement.style.textAlign = \"center\";\n toastElement.style.width = \"100%\";\n const textElement = document.createElement('span');\n textElement.innerText = args.msg || \"\";\n textElement.style.backgroundColor = \"#777777\";\n textElement.style.color = \"white\";\n textElement.style.paddingLeft = '20px';\n textElement.style.paddingRight = '20px';\n textElement.style.paddingTop = '10px';\n textElement.style.paddingBottom = '10px';\n toastElement.appendChild(textElement);\n document.body.appendChild(toastElement);\n const gravity = args.gravity || BOTTOM;\n if ((gravity & TOP) == TOP) {\n toastElement.style.top = toPixelString(30);\n }\n else if ((gravity & BOTTOM) == BOTTOM) {\n toastElement.style.bottom = toPixelString(30);\n }\n else if ((gravity & CENTER_Y) == CENTER_Y) {\n toastElement.style.top = toPixelString(document.body.offsetHeight / 2 - toastElement.offsetHeight / 2);\n }\n setTimeout(() => {\n document.body.removeChild(toastElement);\n }, 2000);\n return Promise.resolve();\n }\n alert(args) {\n window.alert(args.msg || \"\");\n return Promise.resolve();\n }\n confirm(args) {\n if (window.confirm(args.msg || \"\")) {\n return Promise.resolve();\n }\n else {\n return Promise.reject();\n }\n }\n prompt(args) {\n const result = window.prompt(args.msg || \"\", args.defaultText);\n if (result) {\n return Promise.resolve(result);\n }\n else {\n return Promise.reject(result);\n }\n }\n}\n","import { DoricPlugin } from \"../DoricPlugin\";\nexport class StoragePlugin extends DoricPlugin {\n setItem(args) {\n localStorage.setItem(`${args.zone}_${args.key}`, args.value);\n return Promise.resolve();\n }\n getItem(args) {\n return Promise.resolve(localStorage.getItem(`${args.zone}_${args.key}`));\n }\n remove(args) {\n localStorage.removeItem(`${args.zone}_${args.key}`);\n return Promise.resolve();\n }\n clear(args) {\n let removingKeys = [];\n for (let i = 0; i < localStorage.length; i++) {\n const key = localStorage.key(i);\n if (key && key.startsWith(`${args.zone}_`)) {\n removingKeys.push(key);\n }\n }\n removingKeys.forEach(e => {\n localStorage.removeItem(e);\n });\n return Promise.resolve();\n }\n}\n","import { DoricPlugin } from \"../DoricPlugin\";\nimport { DoricElement } from \"../DoricElement\";\nexport class NavigatorPlugin extends DoricPlugin {\n constructor() {\n super(...arguments);\n this.navigation = document.getElementsByTagName('doric-navigation')[0];\n }\n push(args) {\n var _a;\n if (this.navigation) {\n const div = new DoricElement;\n div.src = args.source;\n div.alias = ((_a = args.config) === null || _a === void 0 ? void 0 : _a.alias) || args.source;\n this.navigation.push(div);\n return Promise.resolve();\n }\n else {\n return Promise.reject('Not implemented');\n }\n }\n pop() {\n if (this.navigation) {\n this.navigation.pop();\n return Promise.resolve();\n }\n else {\n return Promise.reject('Not implemented');\n }\n }\n}\n","import { DoricPlugin } from '../DoricPlugin';\nimport { DoricViewNode } from '../shader/DoricViewNode';\nexport class PopoverPlugin extends DoricPlugin {\n constructor(context) {\n super(context);\n this.fullScreen = document.createElement('div');\n this.fullScreen.id = `PopOver__${context.contextId}`;\n this.fullScreen.style.position = 'fixed';\n this.fullScreen.style.top = '0px';\n this.fullScreen.style.width = \"100%\";\n this.fullScreen.style.height = \"100%\";\n }\n show(model) {\n const viewNode = DoricViewNode.create(this.context, model.type);\n if (viewNode === undefined) {\n return Promise.reject(`Cannot create ViewNode for ${model.type}`);\n }\n viewNode.viewId = model.id;\n viewNode.init();\n viewNode.blend(model.props);\n this.fullScreen.appendChild(viewNode.view);\n let map = this.context.headNodes.get(PopoverPlugin.TYPE);\n if (map) {\n map.set(model.id, viewNode);\n }\n else {\n map = new Map;\n map.set(model.id, viewNode);\n this.context.headNodes.set(PopoverPlugin.TYPE, map);\n }\n if (!document.body.contains(this.fullScreen)) {\n document.body.appendChild(this.fullScreen);\n }\n return Promise.resolve();\n }\n dismiss(args) {\n if (args) {\n let map = this.context.headNodes.get(PopoverPlugin.TYPE);\n if (map) {\n const viewNode = map.get(args.id);\n if (viewNode) {\n this.fullScreen.removeChild(viewNode.view);\n }\n if (map.size === 0) {\n document.body.removeChild(this.fullScreen);\n }\n }\n }\n else {\n this.dismissAll();\n }\n return Promise.resolve();\n }\n dismissAll() {\n let map = this.context.headNodes.get(PopoverPlugin.TYPE);\n if (map) {\n for (let node of map.values()) {\n map.delete(node.viewId);\n this.fullScreen.removeChild(node.view);\n }\n }\n if (document.body.contains(this.fullScreen)) {\n document.body.removeChild(this.fullScreen);\n }\n }\n onTearDown() {\n super.onTearDown();\n this.dismissAll();\n }\n}\nPopoverPlugin.TYPE = \"popover\";\n","import { DoricStackNode } from \"./DoricStackNode\";\nexport class DoricListItemNode extends DoricStackNode {\n}\n","import { DoricSuperNode, DoricViewNode } from \"./DoricViewNode\";\nexport class DoricListNode extends DoricSuperNode {\n constructor() {\n super(...arguments);\n this.itemCount = 0;\n this.batchCount = 15;\n this.loadMore = false;\n this.childNodes = [];\n }\n blendProps(v, propName, prop) {\n switch (propName) {\n case \"itemCount\":\n this.itemCount = prop;\n break;\n case \"renderItem\":\n this.reset();\n this.renderItemFuncId = prop;\n break;\n case \"onLoadMore\":\n this.onLoadMoreFuncId = prop;\n break;\n case \"loadMoreView\":\n this.loadMoreViewId = prop;\n break;\n case \"batchCount\":\n this.batchCount = prop;\n break;\n case \"loadMore\":\n this.loadMore = prop;\n break;\n default:\n super.blendProps(v, propName, prop);\n break;\n }\n }\n reset() {\n while (this.view.lastElementChild) {\n this.view.removeChild(this.view.lastElementChild);\n }\n }\n onBlended() {\n super.onBlended();\n if (this.childNodes.length !== this.itemCount) {\n const ret = this.callJSResponse(\"renderBunchedItems\", this.childNodes.length, this.itemCount);\n this.childNodes = this.childNodes.concat(ret.map(e => {\n const viewNode = DoricViewNode.create(this.context, e.type);\n viewNode.viewId = e.id;\n viewNode.init(this);\n viewNode.blend(e.props);\n this.view.appendChild(viewNode.view);\n return viewNode;\n }));\n }\n if (this.loadMoreViewNode && this.view.contains(this.loadMoreViewNode.view)) {\n this.view.removeChild(this.loadMoreViewNode.view);\n }\n if (this.loadMore) {\n if (!this.loadMoreViewNode) {\n const loadMoreViewModel = this.getSubModel(this.loadMoreViewId || \"\");\n if (loadMoreViewModel) {\n this.loadMoreViewNode = DoricViewNode.create(this.context, loadMoreViewModel.type);\n this.loadMoreViewNode.viewId = loadMoreViewModel.id;\n this.loadMoreViewNode.init(this);\n this.loadMoreViewNode.blend(loadMoreViewModel.props);\n }\n }\n if (this.loadMoreViewNode) {\n this.view.appendChild(this.loadMoreViewNode.view);\n }\n }\n }\n blendSubNode(model) {\n const viewNode = this.getSubNodeById(model.id);\n if (viewNode) {\n viewNode.blend(model.props);\n }\n }\n getSubNodeById(viewId) {\n if (viewId === this.loadMoreViewId) {\n return this.loadMoreViewNode;\n }\n return this.childNodes.filter(e => e.viewId === viewId)[0];\n }\n onScrollToEnd() {\n if (this.loadMore && this.onLoadMoreFuncId) {\n this.callJSResponse(this.onLoadMoreFuncId);\n }\n }\n build() {\n const ret = document.createElement('div');\n ret.style.overflow = \"scroll\";\n ret.addEventListener(\"scroll\", () => {\n if (this.loadMore) {\n if (ret.scrollTop + ret.offsetHeight === ret.scrollHeight) {\n this.onScrollToEnd();\n }\n }\n });\n return ret;\n }\n}\n","import { DoricStackNode } from \"./DoricStackNode\";\nexport class DoricDraggableNode extends DoricStackNode {\n constructor() {\n super(...arguments);\n this.onDrag = \"\";\n this.dragging = false;\n this.lastX = 0;\n this.lastY = 0;\n }\n build() {\n const ret = document.createElement('div');\n ret.ontouchstart = (event) => {\n this.dragging = true;\n this.lastX = event.targetTouches[0].clientX;\n this.lastY = event.targetTouches[0].clientY;\n };\n ret.ontouchend = (event) => {\n this.dragging = false;\n };\n ret.ontouchcancel = (event) => {\n this.dragging = false;\n };\n ret.ontouchmove = (event) => {\n if (this.dragging) {\n this.offsetX += (event.targetTouches[0].clientX - this.lastX);\n this.offsetY += (event.targetTouches[0].clientY - this.lastY);\n this.callJSResponse(this.onDrag, this.offsetX, this.offsetY);\n this.lastX = event.targetTouches[0].clientX;\n this.lastY = event.targetTouches[0].clientY;\n }\n };\n ret.onmousedown = (event) => {\n this.dragging = true;\n this.lastX = event.x;\n this.lastY = event.y;\n };\n ret.onmousemove = (event) => {\n if (this.dragging) {\n this.offsetX += (event.x - this.lastX);\n this.offsetY += (event.y - this.lastY);\n this.callJSResponse(this.onDrag, this.offsetX, this.offsetY);\n this.lastX = event.x;\n this.lastY = event.y;\n }\n };\n ret.onmouseup = (event) => {\n this.dragging = false;\n };\n ret.onmouseout = (event) => {\n this.dragging = false;\n };\n ret.style.position = \"relative\";\n return ret;\n }\n blendProps(v, propName, prop) {\n switch (propName) {\n case 'onDrag':\n this.onDrag = prop;\n break;\n default:\n super.blendProps(v, propName, prop);\n break;\n }\n }\n}\n","import { ShaderPlugin } from \"./plugins/ShaderPlugin\";\nimport { DoricStackNode } from \"./shader/DoricStackNode\";\nimport { DoricVLayoutNode } from './shader/DoricVLayoutNode';\nimport { DoricHLayoutNode } from './shader/DoricHLayoutNode';\nimport { DoricTextNode } from \"./shader/DoricTextNode\";\nimport { DoricImageNode } from \"./shader/DoricImageNode\";\nimport { DoricScrollerNode } from \"./shader/DoricScrollerNode\";\nimport { ModalPlugin } from './plugins/ModalPlugin';\nimport { StoragePlugin } from \"./plugins/StoragePlugin\";\nimport { NavigatorPlugin } from \"./navigate/NavigatorPlugin\";\nimport { PopoverPlugin } from './plugins/PopoverPlugin';\nimport { DoricListItemNode } from \"./shader/DoricListItemNode\";\nimport { DoricListNode } from \"./shader/DoricListNode\";\nimport { DoricDraggableNode } from \"./shader/DoricDraggableNode\";\nconst bundles = new Map;\nconst plugins = new Map;\nconst nodes = new Map;\nexport function acquireJSBundle(name) {\n return bundles.get(name);\n}\nexport function registerJSBundle(name, bundle) {\n bundles.set(name, bundle);\n}\nexport function registerPlugin(name, plugin) {\n plugins.set(name, plugin);\n}\nexport function acquirePlugin(name) {\n return plugins.get(name);\n}\nexport function registerViewNode(name, node) {\n nodes.set(name, node);\n}\nexport function acquireViewNode(name) {\n return nodes.get(name);\n}\nregisterPlugin('shader', ShaderPlugin);\nregisterPlugin('modal', ModalPlugin);\nregisterPlugin('storage', StoragePlugin);\nregisterPlugin('navigator', NavigatorPlugin);\nregisterPlugin('popover', PopoverPlugin);\nregisterViewNode('Stack', DoricStackNode);\nregisterViewNode('VLayout', DoricVLayoutNode);\nregisterViewNode('HLayout', DoricHLayoutNode);\nregisterViewNode('Text', DoricTextNode);\nregisterViewNode('Image', DoricImageNode);\nregisterViewNode('Scroller', DoricScrollerNode);\nregisterViewNode('ListItem', DoricListItemNode);\nregisterViewNode('List', DoricListNode);\nregisterViewNode('Draggable', DoricDraggableNode);\n","import { jsCallResolve, jsCallReject, jsCallbackTimer, jsReleaseContext } from 'doric/src/runtime/sandbox';\nimport { acquireJSBundle, acquirePlugin } from './DoricRegistry';\nimport { getDoricContext } from './DoricContext';\nfunction getScriptId(contextId) {\n return `__doric_script_${contextId}`;\n}\nconst originSetTimeout = window.setTimeout;\nconst originClearTimeout = window.clearTimeout;\nconst originSetInterval = window.setInterval;\nconst originClearInterval = window.clearInterval;\nconst timers = new Map;\nexport function injectGlobalObject(name, value) {\n Reflect.set(window, name, value, window);\n}\nexport function loadJS(contextId, script) {\n const scriptElement = document.createElement('script');\n scriptElement.text = script;\n scriptElement.id = getScriptId(contextId);\n document.body.appendChild(scriptElement);\n}\nfunction packageModuleScript(name, content) {\n return `Reflect.apply(doric.jsRegisterModule,this,[${name},Reflect.apply(function(__module){(function(module,exports,require,setTimeout,setInterval,clearTimeout,clearInterval){\n${content}\n})(__module,__module.exports,doric.__require__,doricSetTimeout,doricSetInterval,doricClearTimeout,doricClearInterval);\nreturn __module.exports;},this,[{exports:{}}])])`;\n}\nfunction packageCreateContext(contextId, content) {\n return `//@ sourceURL=contextId_${contextId}.js\nReflect.apply(function(doric,context,Entry,require,exports,setTimeout,setInterval,clearTimeout,clearInterval){\n${content}\n},undefined,[undefined,doric.jsObtainContext(\"${contextId}\"),doric.jsObtainEntry(\"${contextId}\"),doric.__require__,{},doricSetTimeout,doricSetInterval,doricClearTimeout,doricClearInterval])`;\n}\nfunction initDoric() {\n injectGlobalObject(\"Environment\", {\n platform: \"h5\"\n });\n injectGlobalObject(\"nativeEmpty\", () => undefined);\n injectGlobalObject('nativeLog', (type, message) => {\n switch (type) {\n case 'd':\n console.log(message);\n break;\n case 'w':\n console.warn(message);\n break;\n case 'e':\n console.error(message);\n break;\n }\n });\n injectGlobalObject('nativeRequire', (moduleName) => {\n const bundle = acquireJSBundle(moduleName);\n if (bundle === undefined || bundle.length === 0) {\n console.log(`Cannot require JS Bundle :${moduleName}`);\n return false;\n }\n else {\n loadJS(moduleName, packageModuleScript(moduleName, packageModuleScript(name, bundle)));\n return true;\n }\n });\n injectGlobalObject('nativeBridge', (contextId, namespace, method, callbackId, args) => {\n const pluginClass = acquirePlugin(namespace);\n const doricContext = getDoricContext(contextId);\n if (pluginClass === undefined) {\n console.error(`Cannot find Plugin:${namespace}`);\n return false;\n }\n if (doricContext === undefined) {\n console.error(`Cannot find Doric Context:${contextId}`);\n return false;\n }\n let plugin = doricContext.pluginInstances.get(namespace);\n if (plugin === undefined) {\n plugin = new pluginClass(doricContext);\n doricContext.pluginInstances.set(namespace, plugin);\n }\n if (!Reflect.has(plugin, method)) {\n console.error(`Cannot find Method:${method} in plugin ${namespace}`);\n return false;\n }\n const pluginMethod = Reflect.get(plugin, method, plugin);\n if (typeof pluginMethod !== 'function') {\n console.error(`Plugin ${namespace}'s property ${method}'s type is ${typeof pluginMethod} not function,`);\n }\n const ret = Reflect.apply(pluginMethod, plugin, [args]);\n if (ret instanceof Promise) {\n ret.then(e => {\n jsCallResolve(contextId, callbackId, e);\n }, e => {\n jsCallReject(contextId, callbackId, e);\n });\n }\n else if (ret !== undefined) {\n jsCallResolve(contextId, callbackId, ret);\n }\n return true;\n });\n injectGlobalObject('nativeSetTimer', (timerId, time, repeat) => {\n if (repeat) {\n const handleId = originSetInterval(() => {\n jsCallbackTimer(timerId);\n }, time);\n timers.set(timerId, { handleId, repeat });\n }\n else {\n const handleId = originSetTimeout(() => {\n jsCallbackTimer(timerId);\n }, time);\n timers.set(timerId, { handleId, repeat });\n }\n });\n injectGlobalObject('nativeClearTimer', (timerId) => {\n const timerInfo = timers.get(timerId);\n if (timerInfo) {\n if (timerInfo.repeat) {\n originClearInterval(timerInfo.handleId);\n }\n else {\n originClearTimeout(timerInfo.handleId);\n }\n }\n });\n}\nexport function createContext(contextId, content) {\n loadJS(contextId, packageCreateContext(contextId, content));\n}\nexport function destroyContext(contextId) {\n jsReleaseContext(contextId);\n const scriptElement = document.getElementById(getScriptId(contextId));\n if (scriptElement) {\n document.body.removeChild(scriptElement);\n }\n}\ninitDoric();\n","import { jsObtainContext, jsCallEntityMethod } from 'doric/src/runtime/sandbox';\nimport { createContext, destroyContext } from \"./DoricDriver\";\nimport { DoricStackNode } from './shader/DoricStackNode';\nconst doricContexts = new Map;\nlet __contextId__ = 0;\nfunction getContextId() {\n return `context_${__contextId__++}`;\n}\nexport function getDoricContext(contextId) {\n return doricContexts.get(contextId);\n}\nexport class DoricContext {\n constructor(content) {\n this.contextId = getContextId();\n this.pluginInstances = new Map;\n this.headNodes = new Map;\n createContext(this.contextId, content);\n doricContexts.set(this.contextId, this);\n this.rootNode = new DoricStackNode(this);\n }\n get panel() {\n var _a;\n return (_a = jsObtainContext(this.contextId)) === null || _a === void 0 ? void 0 : _a.entity;\n }\n invokeEntityMethod(method, ...otherArgs) {\n const argumentsList = [this.contextId];\n for (let i = 0; i < arguments.length; i++) {\n argumentsList.push(arguments[i]);\n }\n return Reflect.apply(jsCallEntityMethod, this.panel, argumentsList);\n }\n init(extra) {\n this.invokeEntityMethod(\"__init__\", extra ? JSON.stringify(extra) : undefined);\n }\n build(frame) {\n this.invokeEntityMethod(\"__build__\", frame);\n }\n teardown() {\n for (let plugin of this.pluginInstances.values()) {\n plugin.onTearDown();\n }\n destroyContext(this.contextId);\n }\n}\n","import axios from 'axios';\nimport { DoricContext } from './DoricContext';\nexport class DoricElement extends HTMLElement {\n constructor() {\n super();\n }\n get src() {\n return this.getAttribute('src');\n }\n get alias() {\n return this.getAttribute('alias');\n }\n set src(v) {\n this.setAttribute('src', v);\n }\n set alias(v) {\n this.setAttribute('alias', v);\n }\n connectedCallback() {\n if (this.src && this.context === undefined) {\n axios.get(this.src).then(result => {\n this.load(result.data);\n });\n }\n }\n disconnectedCallback() {\n }\n adoptedCallback() {\n }\n attributeChangedCallback() {\n }\n onDestroy() {\n var _a;\n (_a = this.context) === null || _a === void 0 ? void 0 : _a.teardown();\n }\n load(content) {\n this.context = new DoricContext(content);\n const divElement = document.createElement('div');\n divElement.style.position = 'relative';\n divElement.style.height = '100%';\n this.append(divElement);\n this.context.rootNode.view = divElement;\n this.context.build({\n width: divElement.offsetWidth,\n height: divElement.offsetHeight,\n });\n }\n}\n","import { DoricElement } from \"../DoricElement\";\nexport class NavigationElement extends HTMLElement {\n constructor() {\n super(...arguments);\n this.elementStack = [];\n }\n get currentNode() {\n for (let i = 0; i < this.childNodes.length; i++) {\n if (this.childNodes[i] instanceof DoricElement) {\n return this.childNodes[i];\n }\n }\n return undefined;\n }\n push(element) {\n const currentNode = this.currentNode;\n if (currentNode) {\n this.elementStack.push(currentNode);\n this.replaceChild(element, currentNode);\n }\n else {\n this.appendChild(element);\n }\n }\n pop() {\n const lastElement = this.elementStack.pop();\n const currentNode = this.currentNode;\n if (lastElement && currentNode) {\n this.replaceChild(lastElement, currentNode);\n currentNode.onDestroy();\n }\n else {\n window.history.back();\n }\n }\n}\n","import { DoricElement } from './src/DoricElement';\nimport { NavigationElement } from './src/navigate/NavigationElement';\nwindow.customElements.define('doric-div', DoricElement);\nwindow.customElements.define('doric-navigation', NavigationElement);\nexport * from './src/DoricElement';\nexport * from './src/navigate/NavigationElement';\nexport * from './src/DoricPlugin';\nexport * from './src/DoricRegistry';\nexport * from './src/DoricDriver';\nexport * from './src/shader/DoricViewNode';\n"],"names":["LayoutSpec","jsCallResolve","jsCallReject","jsCallbackTimer","jsReleaseContext","jsObtainContext","jsCallEntityMethod"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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"} \ No newline at end of file